<?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>158369</bug_id>
          
          <creation_ts>2016-06-03 16:35:20 -0700</creation_ts>
          <short_desc>Remove RefPtr::release() and change calls sites to use WTFMove()</short_desc>
          <delta_ts>2016-06-20 13:53:02 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Keith Rollin">krollin</reporter>
          <assigned_to name="Keith Rollin">krollin</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1199111</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-06-03 16:35:20 -0700</bug_when>
    <thetext>After Bug 157596 is closed, RefPtr::release() will just be releasing it&apos;s own reference to the managed object and using it to create a new RefPtr to manage it. This is a waste. Instead of release, call sites should use WTFMove().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202739</commentid>
    <comment_count>1</comment_count>
      <attachid>281401</attachid>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-06-15 16:04:32 -0700</bug_when>
    <thetext>Created attachment 281401
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202741</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-15 16:06:50 -0700</bug_when>
    <thetext>Attachment 281401 did not pass style-queue:


ERROR: Source/WebCore/svg/SVGFEDiffuseLightingElement.cpp:193:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/svg/SVGFESpecularLightingElement.cpp:204:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 208 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202752</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-15 16:36:05 -0700</bug_when>
    <thetext>Does not build on GTK:
../../Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1840:20: error: request for member &apos;leakRef&apos; in &apos;newPage&apos;, which is of pointer type &apos;WebKit::WebPageProxy*&apos; (maybe you meant to use &apos;-&gt;&apos; ?)
../../Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1841:1: warning: control reaches end of non-void function [-Wreturn-type]
ICECC[19432] 22:55:27: Compiled on 192.168.10.38
ninja: build stopped: subcommand failed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202954</commentid>
    <comment_count>4</comment_count>
      <attachid>281401</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-16 10:24:16 -0700</bug_when>
    <thetext>Comment on attachment 281401
Patch

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

&gt; Source/WTF/ChangeLog:8
&gt; +        Add a new RefPtr constructor that takes a Ref&amp;. This eases some

Why doesn&apos;t this patch drop release() from RefPtr.h ?

&gt; Source/WTF/wtf/PassRefPtr.h:58
&gt; +        template&lt;typename U&gt; PassRefPtr(const Ref&lt;U&gt;&amp;);

I don&apos;t think we need this, we should really WTFMove() at call sites to avoid ref-counting churn.

&gt; Source/WebCore/Modules/webdatabase/Database.cpp:249
&gt; +        PassRefPtr&lt;ScriptExecutionContext&gt; passedContext = WTFMove(m_scriptExecutionContext);

RefPtr&lt;&gt;. I would write this like so:
Auto&amp; context = *m_scriptExecutionContext;
context.postTask({ScriptExecutionContext::Task::CleanupTask, [contextToRelease = WTFMove(m_scriptExecutionContext)] (ScriptExecutionContext&amp; context) {
    ASSERT_UNUSED(context, &amp;context == contextToRelease);
}

&gt; Source/WebCore/editing/ReplaceSelectionCommand.cpp:681
&gt; +        removeNode(ancestor);

WTFMove(ancestor)

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:634
&gt;      RefPtr&lt;Inspector::Protocol::CSS::CSSStyle&gt; attributes = buildObjectForAttributesStyle(element);

Could if inside the if() condition:
If (auto attributes = buildObjectForAttributesStyle(element))
  ...

&gt; Source/WebKit2/Shared/API/c/mac/WKWebArchive.cpp:64
&gt; +    auto mainResource = toImpl(webArchiveRef)-&gt;mainResource();

Looks like a behavior change. We used to return a ref&apos;d mainResource but not anymore :(

&gt; Source/WebKit2/Shared/API/c/mac/WKWebArchive.cpp:70
&gt; +    auto subresources = toImpl(webArchiveRef)-&gt;subresources();

Looks like a behavior change. We used to return a ref&apos;d subresources but not anymore :(

&gt; Source/WebKit2/Shared/API/c/mac/WKWebArchive.cpp:76
&gt; +    auto subframeArchives = toImpl(webArchiveRef)-&gt;subframeArchives();

Looks like a behavior change. We used to return a ref&apos;d subframeArchives but not anymore :(

&gt; Source/WebKit2/UIProcess/WebPreferences.cpp:79
&gt;  PassRefPtr&lt;WebPreferences&gt; WebPreferences::copy() const

We should really return a Ref&lt;&gt;, it looks really ugly otherwise.

&gt; Source/WebKit2/WebProcess/Plugins/PDF/DeprecatedPDFPlugin.mm:670
&gt; +    return widget;

WTFMove(widget) ?

&gt; Source/WebKit2/WebProcess/WebPage/WebFrame.cpp:119
&gt; +    return frame;

WTFMove()

&gt; Source/WebKit2/WebProcess/WebPage/WebFrame.cpp:135
&gt; +    return frame;

WTFMove()

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1880
&gt; +        return snapshot;

WTFMove()

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1912
&gt; +    return snapshot;

WTFMove()

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1965
&gt; +    return snapshot;

WTFMove()

&gt; Tools/DumpRenderTree/mac/PixelDumpSupportMac.mm:197
&gt; +    return bitmapContext;

WTFMove()

&gt; Tools/DumpRenderTree/mac/PixelDumpSupportMac.mm:215
&gt; +    return bitmapContext;

WTFMove()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202999</commentid>
    <comment_count>5</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-06-16 14:28:06 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 281401 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=281401&amp;action=review
&gt; 
&gt; &gt; Source/WTF/ChangeLog:8
&gt; &gt; +        Add a new RefPtr constructor that takes a Ref&amp;. This eases some
&gt; 
&gt; Why doesn&apos;t this patch drop release() from RefPtr.h ?

The changes in this patch were determined by my removing release() and then fixing all the build failures. I&apos;m not configured to build for other platforms, so can&apos;t safely update their platform-specific code. Until that work can be achieved, release() needs to go back into RefPtr.h.

&gt; &gt; Source/WTF/wtf/PassRefPtr.h:58
&gt; &gt; +        template&lt;typename U&gt; PassRefPtr(const Ref&lt;U&gt;&amp;);
&gt; 
&gt; I don&apos;t think we need this, we should really WTFMove() at call sites to
&gt; avoid ref-counting churn.

I added that c&apos;tor to satisfy some need. But I&apos;ve now removed it and it no longer seems needed.

&gt; &gt; Source/WebCore/Modules/webdatabase/Database.cpp:249
&gt; &gt; +        PassRefPtr&lt;ScriptExecutionContext&gt; passedContext = WTFMove(m_scriptExecutionContext);
&gt; 
&gt; RefPtr&lt;&gt;. I would write this like so:
&gt; Auto&amp; context = *m_scriptExecutionContext;
&gt; context.postTask({ScriptExecutionContext::Task::CleanupTask,
&gt; [contextToRelease = WTFMove(m_scriptExecutionContext)]
&gt; (ScriptExecutionContext&amp; context) {
&gt;     ASSERT_UNUSED(context, &amp;context == contextToRelease);
&gt; }

I agree that this code needs cleaning up. But it&apos;s tricky enough that I think it should be part of another patch. That way it can be rolled out by itself if the change causes problems.

&gt; 
&gt; &gt; Source/WebCore/editing/ReplaceSelectionCommand.cpp:681
&gt; &gt; +        removeNode(ancestor);
&gt; 
&gt; WTFMove(ancestor)

OK

&gt; &gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:634
&gt; &gt;      RefPtr&lt;Inspector::Protocol::CSS::CSSStyle&gt; attributes = buildObjectForAttributesStyle(element);
&gt; 
&gt; Could if inside the if() condition:
&gt; If (auto attributes = buildObjectForAttributesStyle(element))
&gt;   ...

OK

&gt; &gt; Source/WebKit2/Shared/API/c/mac/WKWebArchive.cpp:64
&gt; &gt; +    auto mainResource = toImpl(webArchiveRef)-&gt;mainResource();
&gt; 
&gt; Looks like a behavior change. We used to return a ref&apos;d mainResource but not
&gt; anymore :(
&gt; 
&gt; &gt; Source/WebKit2/Shared/API/c/mac/WKWebArchive.cpp:70
&gt; &gt; +    auto subresources = toImpl(webArchiveRef)-&gt;subresources();
&gt; 
&gt; Looks like a behavior change. We used to return a ref&apos;d subresources but not
&gt; anymore :(
&gt; 
&gt; &gt; Source/WebKit2/Shared/API/c/mac/WKWebArchive.cpp:76
&gt; &gt; +    auto subframeArchives = toImpl(webArchiveRef)-&gt;subframeArchives();
&gt; 
&gt; Looks like a behavior change. We used to return a ref&apos;d subframeArchives but
&gt; not anymore :(

OK.

&gt; &gt; Source/WebKit2/UIProcess/WebPreferences.cpp:79
&gt; &gt;  PassRefPtr&lt;WebPreferences&gt; WebPreferences::copy() const
&gt; 
&gt; We should really return a Ref&lt;&gt;, it looks really ugly otherwise.

I limited my changes to just what was needed to build after removing calls to release(). I figured that more extensive changes to call sites, such as changing them to return Ref/RefPtr instead of PassRefPtr, could wait for a separate effort to remove PassRefPtr from those modules.

&gt; &gt; Source/WebKit2/WebProcess/Plugins/PDF/DeprecatedPDFPlugin.mm:670
&gt; &gt; +    return widget;
&gt; 
&gt; WTFMove(widget) ?

widget is a PassRefPtr, and the function returns a PassRefPtr, so WTFMove should not be needed.

&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebFrame.cpp:119
&gt; &gt; +    return frame;
&gt; 
&gt; WTFMove()

Ditto.

&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebFrame.cpp:135
&gt; &gt; +    return frame;
&gt; 
&gt; WTFMove()

Ditto.

&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1880
&gt; &gt; +        return snapshot;
&gt; 
&gt; WTFMove()

Ditto.

&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1912
&gt; &gt; +    return snapshot;
&gt; 
&gt; WTFMove()

Ditto.

&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1965
&gt; &gt; +    return snapshot;
&gt; 
&gt; WTFMove()

Ditto.

&gt; &gt; Tools/DumpRenderTree/mac/PixelDumpSupportMac.mm:197
&gt; &gt; +    return bitmapContext;
&gt; 
&gt; WTFMove()

Ditto.

&gt; &gt; Tools/DumpRenderTree/mac/PixelDumpSupportMac.mm:215
&gt; &gt; +    return bitmapContext;
&gt; 
&gt; WTFMove()

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203130</commentid>
    <comment_count>6</comment_count>
      <attachid>281513</attachid>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-06-16 17:31:56 -0700</bug_when>
    <thetext>Created attachment 281513
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203132</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-16 17:35:32 -0700</bug_when>
    <thetext>Attachment 281513 did not pass style-queue:


ERROR: Source/WebCore/svg/SVGFEDiffuseLightingElement.cpp:193:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/svg/SVGFESpecularLightingElement.cpp:204:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 206 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203375</commentid>
    <comment_count>8</comment_count>
      <attachid>281574</attachid>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-06-17 12:20:16 -0700</bug_when>
    <thetext>Created attachment 281574
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203378</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-17 12:23:53 -0700</bug_when>
    <thetext>Attachment 281574 did not pass style-queue:


ERROR: Source/WebCore/svg/SVGFEDiffuseLightingElement.cpp:193:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/svg/SVGFESpecularLightingElement.cpp:204:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 206 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203391</commentid>
    <comment_count>10</comment_count>
      <attachid>281579</attachid>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-06-17 13:08:00 -0700</bug_when>
    <thetext>Created attachment 281579
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203392</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-17 13:11:35 -0700</bug_when>
    <thetext>Attachment 281579 did not pass style-queue:


ERROR: Source/WebCore/svg/SVGFEDiffuseLightingElement.cpp:193:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/svg/SVGFESpecularLightingElement.cpp:204:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 206 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203405</commentid>
    <comment_count>12</comment_count>
      <attachid>281584</attachid>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-06-17 13:43:14 -0700</bug_when>
    <thetext>Created attachment 281584
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203406</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-17 13:46:05 -0700</bug_when>
    <thetext>Attachment 281584 did not pass style-queue:


ERROR: Source/WebCore/svg/SVGFEDiffuseLightingElement.cpp:193:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/svg/SVGFESpecularLightingElement.cpp:204:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 206 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203455</commentid>
    <comment_count>14</comment_count>
      <attachid>281584</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-17 15:48:28 -0700</bug_when>
    <thetext>Comment on attachment 281584
Patch

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

R=me with a fix.

&gt; Source/WebCore/Modules/webdatabase/Database.cpp:249
&gt; +        PassRefPtr&lt;ScriptExecutionContext&gt; passedContext = WTFMove(m_scriptExecutionContext);

This does not include my previous review feedback, please fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203456</commentid>
    <comment_count>15</comment_count>
      <attachid>281584</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-17 15:50:52 -0700</bug_when>
    <thetext>Comment on attachment 281584
Patch

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

&gt;&gt; Source/WebCore/Modules/webdatabase/Database.cpp:249
&gt;&gt; +        PassRefPtr&lt;ScriptExecutionContext&gt; passedContext = WTFMove(m_scriptExecutionContext);
&gt; 
&gt; This does not include my previous review feedback, please fix.

I see now that you thought my proposal was to big a change for this patch. However, at the very least, you need to get rid of this PassRefPtr&lt;&gt; local variable and use RefPtr&lt;&gt; instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203458</commentid>
    <comment_count>16</comment_count>
      <attachid>281584</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-17 15:51:55 -0700</bug_when>
    <thetext>Comment on attachment 281584
Patch

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

&gt;&gt;&gt; Source/WebCore/Modules/webdatabase/Database.cpp:249
&gt;&gt;&gt; +        PassRefPtr&lt;ScriptExecutionContext&gt; passedContext = WTFMove(m_scriptExecutionContext);
&gt;&gt; 
&gt;&gt; This does not include my previous review feedback, please fix.
&gt; 
&gt; I see now that you thought my proposal was to big a change for this patch. However, at the very least, you need to get rid of this PassRefPtr&lt;&gt; local variable and use RefPtr&lt;&gt; instead.

Even better, use auto:
auto context = WTFMove(m_scriptExecutionContext);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203505</commentid>
    <comment_count>17</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-06-17 18:13:45 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Comment on attachment 281584 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=281584&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/Modules/webdatabase/Database.cpp:249
&gt; &gt;&gt;&gt; +        PassRefPtr&lt;ScriptExecutionContext&gt; passedContext = WTFMove(m_scriptExecutionContext);
&gt; &gt;&gt; 
&gt; &gt;&gt; This does not include my previous review feedback, please fix.
&gt; &gt; 
&gt; &gt; I see now that you thought my proposal was to big a change for this patch. However, at the very least, you need to get rid of this PassRefPtr&lt;&gt; local variable and use RefPtr&lt;&gt; instead.
&gt; 
&gt; Even better, use auto:
&gt; auto context = WTFMove(m_scriptExecutionContext);

Making this change will change the behavior of the code. Here&apos;s the block:

&lt;foo&gt; passedContext = WTFMove(m_scriptExecutionContext);
passedContext-&gt;postTask({ScriptExecutionContext::Task::CleanupTask, [passedContext] (ScriptExecutionContext&amp; context) {
    ASSERT_UNUSED(context, &amp;context == passedContext);
    RefPtr&lt;ScriptExecutionContext&gt; scriptExecutionContext(passedContext);
}});

If &lt;foo&gt; is a PassRefPtr, then the WTFMove will leak the object from m_scriptExecutionContext to passedContext. m_scriptExecutionContext ends up with nullptr, passedContext owns the object, and no refcounts are changed. The passedContext is then used to create the lambda. I&apos;m assuming a copy of passedContext is created here, such that the copy now has the object and passedContext has nullptr and no refcounts were changed[1]. Finally, scriptExecutionContext is created. The managed object is transferred to scriptExecutionContext, the passedContext copy has nullptr, and no refcounts were changed. Finally, scriptExecutionContext is destructed, dereffing the managed object, possibly deleting it.

If &lt;foo&gt; is a RefPtr, then the WTFMove will transfer the managed object as before: m_scriptExecutionContext ends up with nullptr, passedContext owns the object, and no refcounts are changed. But then the lambda is created. The passedContext is copied, incrementing the refcount. Then scriptExecutionContext is created, incrementing the refcount again. It&apos;s now at least three: one for passedContext, one for the passedContext copy, and one for scriptExecution. If the lambda is executed asynchronously, that first one will actually have been dropped when the Database destructor exited. And the one for scriptExecutionContext will get dropped when the lambda exits. This means that there will still be a reference to the managed object if &lt;foo&gt; is a RefPtr, whereas it could be zero if &lt;foo&gt; is a PassRefPtr.

At the very least, this change in behavior means that the ScriptExecutionContext will get deleted at a different point in the flow. But -- without checking postTask and associated code -- I could possibly see that objects won&apos;t get deleted at all.

Using RefPtr also means additional reffing and dereffing, leading to an insignificant performance regression.

------

[1] I&apos;m actually unsure about what&apos;s actually going on here. &apos;passedContext&apos; is captured by value, which would seem to mean that a copy is created. According to cppreference.com, specifying just a variable name in the capture list is a &quot;simple by-copy capture&quot;. However, if that were to happen and the original passedContext had its internal pointer set to nullptr, then I don&apos;t know how passedContext-&gt;postTask() could work.

Here&apos;s a little test to see what&apos;s going on:

#include &lt;stdio.h&gt;
#include &lt;utility&gt;

class Fred
{
    public:
        Fred() : m_member(-1) {
            printf(&quot;Default constructor\n&quot;);
            m_member = 10;
        }
        Fred(const Fred&amp; other) : m_member(-2) {
            printf(&quot;Copy constructor\n&quot;);
            m_member = other.m_member;
            const_cast&lt;Fred&amp;&gt;(other).m_member = -12;
        }
        Fred(Fred&amp;&amp; other) : m_member(-3) {
            printf(&quot;Move constructor\n&quot;);
            m_member = std::exchange(other.m_member, 0);
            const_cast&lt;Fred&amp;&gt;(other).m_member = -13;
        }

        int m_member;
};

int main()
{
    Fred aFred;

    printf(&quot;main: aFred.m_member = %d\n&quot;, aFred.m_member);

    auto closure = [aFred] () {
        printf(&quot;closure: aFred.m_member = %d\n&quot;, aFred.m_member);
    };

    printf(&quot;main: aFred.m_member = %d\n&quot;, aFred.m_member);
    closure();
    printf(&quot;main: aFred.m_member = %d\n&quot;, aFred.m_member);

    return 0;
}

$ clang -std=c++14 -O2 main.cpp 
$ ./a.out 
Default constructor
main: aFred.m_member = 10
Copy constructor
main: aFred.m_member = -12
closure: aFred.m_member = 10
main: aFred.m_member = -12

So this shows that the captured object&apos;s copy constructor is called. Which should mean that passedContext&apos;s managed pointer should be nullptr after the copy is created for the lambda. So I don&apos;t know how passedContext-&gt;postTask(...) is not crashing. I must be missing something stupid.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203508</commentid>
    <comment_count>18</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-17 18:40:13 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; Comment on attachment 281584 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=281584&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt;&gt; Source/WebCore/Modules/webdatabase/Database.cpp:249
&gt; &gt; &gt;&gt;&gt; +        PassRefPtr&lt;ScriptExecutionContext&gt; passedContext = WTFMove(m_scriptExecutionContext);
&gt; &gt; &gt;&gt; 
&gt; &gt; &gt;&gt; This does not include my previous review feedback, please fix.
&gt; &gt; &gt; 
&gt; &gt; &gt; I see now that you thought my proposal was to big a change for this patch. However, at the very least, you need to get rid of this PassRefPtr&lt;&gt; local variable and use RefPtr&lt;&gt; instead.
&gt; &gt; 
&gt; &gt; Even better, use auto:
&gt; &gt; auto context = WTFMove(m_scriptExecutionContext);
&gt; 
&gt; Making this change will change the behavior of the code. Here&apos;s the block:
&gt; 
&gt; &lt;foo&gt; passedContext = WTFMove(m_scriptExecutionContext);
&gt; passedContext-&gt;postTask({ScriptExecutionContext::Task::CleanupTask,
&gt; [passedContext] (ScriptExecutionContext&amp; context) {
&gt;     ASSERT_UNUSED(context, &amp;context == passedContext);
&gt;     RefPtr&lt;ScriptExecutionContext&gt; scriptExecutionContext(passedContext);
&gt; }});
&gt; 
&gt; If &lt;foo&gt; is a PassRefPtr, then the WTFMove will leak the object from
&gt; m_scriptExecutionContext to passedContext. m_scriptExecutionContext ends up
&gt; with nullptr, passedContext owns the object, and no refcounts are changed.
&gt; The passedContext is then used to create the lambda. I&apos;m assuming a copy of
&gt; passedContext is created here, such that the copy now has the object and
&gt; passedContext has nullptr and no refcounts were changed[1]. Finally,
&gt; scriptExecutionContext is created. The managed object is transferred to
&gt; scriptExecutionContext, the passedContext copy has nullptr, and no refcounts
&gt; were changed. Finally, scriptExecutionContext is destructed, dereffing the
&gt; managed object, possibly deleting it.
&gt; 
&gt; If &lt;foo&gt; is a RefPtr, then the WTFMove will transfer the managed object as
&gt; before: m_scriptExecutionContext ends up with nullptr, passedContext owns
&gt; the object, and no refcounts are changed. But then the lambda is created.
&gt; The passedContext is copied, incrementing the refcount. Then
&gt; scriptExecutionContext is created, incrementing the refcount again. It&apos;s now
&gt; at least three: one for passedContext, one for the passedContext copy, and
&gt; one for scriptExecution. If the lambda is executed asynchronously, that
&gt; first one will actually have been dropped when the Database destructor
&gt; exited. And the one for scriptExecutionContext will get dropped when the
&gt; lambda exits. This means that there will still be a reference to the managed
&gt; object if &lt;foo&gt; is a RefPtr, whereas it could be zero if &lt;foo&gt; is a
&gt; PassRefPtr.

This does not seem totally accurate to me. RefCount should definitely be 0 by the time the Lambda object is destroyed. When the lambda is destroyed, the refcount should be decreased by 2, once when scriptExecutionContext is destroyed and a second time when passedContext is destroyed.

You are right that what I suggested does a bit more refcount churn but:
1. We should drop the scriptExecutionContext variable that is in the lambda. The captured passedContext will already be a RefPtr.
2. It seems safer. As you said, when passedContext is captured, the one outside the lambda becomes null. It looks like it works since this code isn&apos;t crashing but I am not 100% sure this is defined behavior since we are calling a function on passedContext on the same line.
3. My original proposal did not cause any additional ref counting churn I believe and seemed safe.

&gt; 
&gt; At the very least, this change in behavior means that the
&gt; ScriptExecutionContext will get deleted at a different point in the flow.
&gt; But -- without checking postTask and associated code -- I could possibly see
&gt; that objects won&apos;t get deleted at all.
&gt; 
&gt; Using RefPtr also means additional reffing and dereffing, leading to an
&gt; insignificant performance regression.
&gt; 
&gt; ------
&gt; 
&gt; [1] I&apos;m actually unsure about what&apos;s actually going on here. &apos;passedContext&apos;
&gt; is captured by value, which would seem to mean that a copy is created.
&gt; According to cppreference.com, specifying just a variable name in the
&gt; capture list is a &quot;simple by-copy capture&quot;. However, if that were to happen
&gt; and the original passedContext had its internal pointer set to nullptr, then
&gt; I don&apos;t know how passedContext-&gt;postTask() could work.
&gt; 
&gt; Here&apos;s a little test to see what&apos;s going on:
&gt; 
&gt; #include &lt;stdio.h&gt;
&gt; #include &lt;utility&gt;
&gt; 
&gt; class Fred
&gt; {
&gt;     public:
&gt;         Fred() : m_member(-1) {
&gt;             printf(&quot;Default constructor\n&quot;);
&gt;             m_member = 10;
&gt;         }
&gt;         Fred(const Fred&amp; other) : m_member(-2) {
&gt;             printf(&quot;Copy constructor\n&quot;);
&gt;             m_member = other.m_member;
&gt;             const_cast&lt;Fred&amp;&gt;(other).m_member = -12;
&gt;         }
&gt;         Fred(Fred&amp;&amp; other) : m_member(-3) {
&gt;             printf(&quot;Move constructor\n&quot;);
&gt;             m_member = std::exchange(other.m_member, 0);
&gt;             const_cast&lt;Fred&amp;&gt;(other).m_member = -13;
&gt;         }
&gt; 
&gt;         int m_member;
&gt; };
&gt; 
&gt; int main()
&gt; {
&gt;     Fred aFred;
&gt; 
&gt;     printf(&quot;main: aFred.m_member = %d\n&quot;, aFred.m_member);
&gt; 
&gt;     auto closure = [aFred] () {
&gt;         printf(&quot;closure: aFred.m_member = %d\n&quot;, aFred.m_member);
&gt;     };
&gt; 
&gt;     printf(&quot;main: aFred.m_member = %d\n&quot;, aFred.m_member);
&gt;     closure();
&gt;     printf(&quot;main: aFred.m_member = %d\n&quot;, aFred.m_member);
&gt; 
&gt;     return 0;
&gt; }
&gt; 
&gt; $ clang -std=c++14 -O2 main.cpp 
&gt; $ ./a.out 
&gt; Default constructor
&gt; main: aFred.m_member = 10
&gt; Copy constructor
&gt; main: aFred.m_member = -12
&gt; closure: aFred.m_member = 10
&gt; main: aFred.m_member = -12
&gt; 
&gt; So this shows that the captured object&apos;s copy constructor is called. Which
&gt; should mean that passedContext&apos;s managed pointer should be nullptr after the
&gt; copy is created for the lambda. So I don&apos;t know how
&gt; passedContext-&gt;postTask(...) is not crashing. I must be missing something
&gt; stupid.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203509</commentid>
    <comment_count>19</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-17 18:52:15 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #17)
&gt; &gt; (In reply to comment #16)
&gt; &gt; &gt; Comment on attachment 281584 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=281584&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt;&gt;&gt; Source/WebCore/Modules/webdatabase/Database.cpp:249
&gt; &gt; &gt; &gt;&gt;&gt; +        PassRefPtr&lt;ScriptExecutionContext&gt; passedContext = WTFMove(m_scriptExecutionContext);
&gt; &gt; &gt; &gt;&gt; 
&gt; &gt; &gt; &gt;&gt; This does not include my previous review feedback, please fix.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; I see now that you thought my proposal was to big a change for this patch. However, at the very least, you need to get rid of this PassRefPtr&lt;&gt; local variable and use RefPtr&lt;&gt; instead.
&gt; &gt; &gt; 
&gt; &gt; &gt; Even better, use auto:
&gt; &gt; &gt; auto context = WTFMove(m_scriptExecutionContext);
&gt; &gt; 
&gt; &gt; Making this change will change the behavior of the code. Here&apos;s the block:
&gt; &gt; 
&gt; &gt; &lt;foo&gt; passedContext = WTFMove(m_scriptExecutionContext);
&gt; &gt; passedContext-&gt;postTask({ScriptExecutionContext::Task::CleanupTask,
&gt; &gt; [passedContext] (ScriptExecutionContext&amp; context) {
&gt; &gt;     ASSERT_UNUSED(context, &amp;context == passedContext);
&gt; &gt;     RefPtr&lt;ScriptExecutionContext&gt; scriptExecutionContext(passedContext);
&gt; &gt; }});
&gt; &gt; 
&gt; &gt; If &lt;foo&gt; is a PassRefPtr, then the WTFMove will leak the object from
&gt; &gt; m_scriptExecutionContext to passedContext. m_scriptExecutionContext ends up
&gt; &gt; with nullptr, passedContext owns the object, and no refcounts are changed.
&gt; &gt; The passedContext is then used to create the lambda. I&apos;m assuming a copy of
&gt; &gt; passedContext is created here, such that the copy now has the object and
&gt; &gt; passedContext has nullptr and no refcounts were changed[1]. Finally,
&gt; &gt; scriptExecutionContext is created. The managed object is transferred to
&gt; &gt; scriptExecutionContext, the passedContext copy has nullptr, and no refcounts
&gt; &gt; were changed. Finally, scriptExecutionContext is destructed, dereffing the
&gt; &gt; managed object, possibly deleting it.
&gt; &gt; 
&gt; &gt; If &lt;foo&gt; is a RefPtr, then the WTFMove will transfer the managed object as
&gt; &gt; before: m_scriptExecutionContext ends up with nullptr, passedContext owns
&gt; &gt; the object, and no refcounts are changed. But then the lambda is created.
&gt; &gt; The passedContext is copied, incrementing the refcount. Then
&gt; &gt; scriptExecutionContext is created, incrementing the refcount again. It&apos;s now
&gt; &gt; at least three: one for passedContext, one for the passedContext copy, and
&gt; &gt; one for scriptExecution. If the lambda is executed asynchronously, that
&gt; &gt; first one will actually have been dropped when the Database destructor
&gt; &gt; exited. And the one for scriptExecutionContext will get dropped when the
&gt; &gt; lambda exits. This means that there will still be a reference to the managed
&gt; &gt; object if &lt;foo&gt; is a RefPtr, whereas it could be zero if &lt;foo&gt; is a
&gt; &gt; PassRefPtr.
&gt; 
&gt; This does not seem totally accurate to me. RefCount should definitely be 0
&gt; by the time the Lambda object is destroyed. When the lambda is destroyed,
&gt; the refcount should be decreased by 2, once when scriptExecutionContext is
&gt; destroyed and a second time when passedContext is destroyed.
&gt; 
&gt; You are right that what I suggested does a bit more refcount churn but:
&gt; 1. We should drop the scriptExecutionContext variable that is in the lambda.
&gt; The captured passedContext will already be a RefPtr.
&gt; 2. It seems safer. As you said, when passedContext is captured, the one
&gt; outside the lambda becomes null. It looks like it works since this code
&gt; isn&apos;t crashing but I am not 100% sure this is defined behavior since we are
&gt; calling a function on passedContext on the same line.
&gt; 3. My original proposal did not cause any additional ref counting churn I
&gt; believe and seemed safe.
&gt; 
&gt; &gt; 
&gt; &gt; At the very least, this change in behavior means that the
&gt; &gt; ScriptExecutionContext will get deleted at a different point in the flow.
&gt; &gt; But -- without checking postTask and associated code -- I could possibly see
&gt; &gt; that objects won&apos;t get deleted at all.
&gt; &gt; 
&gt; &gt; Using RefPtr also means additional reffing and dereffing, leading to an
&gt; &gt; insignificant performance regression.
&gt; &gt; 
&gt; &gt; ------
&gt; &gt; 
&gt; &gt; [1] I&apos;m actually unsure about what&apos;s actually going on here. &apos;passedContext&apos;
&gt; &gt; is captured by value, which would seem to mean that a copy is created.
&gt; &gt; According to cppreference.com, specifying just a variable name in the
&gt; &gt; capture list is a &quot;simple by-copy capture&quot;. However, if that were to happen
&gt; &gt; and the original passedContext had its internal pointer set to nullptr, then
&gt; &gt; I don&apos;t know how passedContext-&gt;postTask() could work.
&gt; &gt; 
&gt; &gt; Here&apos;s a little test to see what&apos;s going on:
&gt; &gt; 
&gt; &gt; #include &lt;stdio.h&gt;
&gt; &gt; #include &lt;utility&gt;
&gt; &gt; 
&gt; &gt; class Fred
&gt; &gt; {
&gt; &gt;     public:
&gt; &gt;         Fred() : m_member(-1) {
&gt; &gt;             printf(&quot;Default constructor\n&quot;);
&gt; &gt;             m_member = 10;
&gt; &gt;         }
&gt; &gt;         Fred(const Fred&amp; other) : m_member(-2) {
&gt; &gt;             printf(&quot;Copy constructor\n&quot;);
&gt; &gt;             m_member = other.m_member;
&gt; &gt;             const_cast&lt;Fred&amp;&gt;(other).m_member = -12;
&gt; &gt;         }
&gt; &gt;         Fred(Fred&amp;&amp; other) : m_member(-3) {
&gt; &gt;             printf(&quot;Move constructor\n&quot;);
&gt; &gt;             m_member = std::exchange(other.m_member, 0);
&gt; &gt;             const_cast&lt;Fred&amp;&gt;(other).m_member = -13;
&gt; &gt;         }
&gt; &gt; 
&gt; &gt;         int m_member;
&gt; &gt; };
&gt; &gt; 
&gt; &gt; int main()
&gt; &gt; {
&gt; &gt;     Fred aFred;
&gt; &gt; 
&gt; &gt;     printf(&quot;main: aFred.m_member = %d\n&quot;, aFred.m_member);
&gt; &gt; 
&gt; &gt;     auto closure = [aFred] () {
&gt; &gt;         printf(&quot;closure: aFred.m_member = %d\n&quot;, aFred.m_member);
&gt; &gt;     };
&gt; &gt; 
&gt; &gt;     printf(&quot;main: aFred.m_member = %d\n&quot;, aFred.m_member);
&gt; &gt;     closure();
&gt; &gt;     printf(&quot;main: aFred.m_member = %d\n&quot;, aFred.m_member);
&gt; &gt; 
&gt; &gt;     return 0;
&gt; &gt; }
&gt; &gt; 
&gt; &gt; $ clang -std=c++14 -O2 main.cpp 
&gt; &gt; $ ./a.out 
&gt; &gt; Default constructor
&gt; &gt; main: aFred.m_member = 10
&gt; &gt; Copy constructor
&gt; &gt; main: aFred.m_member = -12
&gt; &gt; closure: aFred.m_member = 10
&gt; &gt; main: aFred.m_member = -12
&gt; &gt; 
&gt; &gt; So this shows that the captured object&apos;s copy constructor is called. Which
&gt; &gt; should mean that passedContext&apos;s managed pointer should be nullptr after the
&gt; &gt; copy is created for the lambda. So I don&apos;t know how
&gt; &gt; passedContext-&gt;postTask(...) is not crashing. I must be missing something
&gt; &gt; stupid.

Seems to be what I discussed in the point 2 above. I agree with you that the existing code looks risky. Even though it seems to be working, I suspect this is undefined behavior. Both of my proposals (the better original one or the less efficient / simpler recent one) would be safer AFAICT thought.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203828</commentid>
    <comment_count>20</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-06-20 12:16:14 -0700</bug_when>
    <thetext>After chatting with Chris, we&apos;ve agreed to clean up Database::~Database in a second patch, and leave that destructor completely unchanged in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203833</commentid>
    <comment_count>21</comment_count>
      <attachid>281662</attachid>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-06-20 12:26:52 -0700</bug_when>
    <thetext>Created attachment 281662
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203836</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-20 12:28:53 -0700</bug_when>
    <thetext>Attachment 281662 did not pass style-queue:


ERROR: Source/WebCore/svg/SVGFEDiffuseLightingElement.cpp:193:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/svg/SVGFESpecularLightingElement.cpp:204:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 205 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203861</commentid>
    <comment_count>23</comment_count>
      <attachid>281662</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-20 13:17:52 -0700</bug_when>
    <thetext>Comment on attachment 281662
Patch

Rejecting attachment 281662 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 281662, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in Source/WebKit/mac/ChangeLog contains OOPS!.

Full output: http://webkit-queues.webkit.org/results/1538034</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203863</commentid>
    <comment_count>24</comment_count>
      <attachid>281671</attachid>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-06-20 13:22:10 -0700</bug_when>
    <thetext>Created attachment 281671
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203882</commentid>
    <comment_count>25</comment_count>
      <attachid>281671</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-20 13:52:57 -0700</bug_when>
    <thetext>Comment on attachment 281671
Patch

Clearing flags on attachment: 281671

Committed r202242: &lt;http://trac.webkit.org/changeset/202242&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203883</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-20 13:53:02 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281401</attachid>
            <date>2016-06-15 16:04:32 -0700</date>
            <delta_ts>2016-06-16 17:31:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158369-20160615160431.patch</filename>
            <type>text/plain</type>
            <size>298629</size>
            <attacher name="Keith Rollin">krollin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyMTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
NmUxNjA2Njg1ZTJiZWI1NDljMzA2YjAxN2U2NTBjYWY1ODczZThlLi5mMDhlZjA3YWY3M2Y1ZDFh
NmM0NmY5ZTc1MzVlOTllZTlhYTIxYmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NSBAQAorMjAxNi0wNi0xNSAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVtb3ZlIFJlZlB0cjo6cmVsZWFzZSgpIGFuZCBjaGFuZ2UgY2FsbHMgc2l0
ZXMgdG8gdXNlIFdURk1vdmUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU4MzY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmVmUHRyOjpyZWxlYXNlKCkgcmVsZWFzZXMgaXRzIG1hbmFnZWQgcG9pbnRl
ciBhd2t3YXJkbHkuIEl0J3MgbW9yZQorICAgICAgICBkaXJlY3QgYW5kIGNsZWFyZXIgdG8gdXNl
IFdURk1vdmUgdG8gdHJhbnNmZXIgb3duZXJzaGlwIG9mIHRoZSBtYW5hZ2VkCisgICAgICAgIHBv
aW50ZXIuCisKKyAgICAgICAgQXMgcGFydCBvZiB0aGlzIGNsZWFudXAsIGFsc28gY2hhbmdlIGEg
bG90IG9mIGV4cGxpY2l0IGRhdGEgdHlwZXMgdG8KKyAgICAgICAgJ2F1dG8nLgorCisgICAgICAg
ICogQVBJL0pTT2JqZWN0UmVmLmNwcDoKKyAgICAgICAgKEpTQ2xhc3NDcmVhdGUpOgorICAgICAg
ICAqIEFQSS9KU1NjcmlwdFJlZi5jcHA6CisgICAgICAgICogQVBJL0pTVmFsdWVSZWYuY3BwOgor
ICAgICAgICAoSlNWYWx1ZVRvU3RyaW5nQ29weSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL1N0
YXRpY1Byb3BlcnR5QW5hbHl6ZXIuaDoKKyAgICAgICAgKEpTQzo6U3RhdGljUHJvcGVydHlBbmFs
eXplcjo6bmV3T2JqZWN0KToKKyAgICAgICAgKEpTQzo6U3RhdGljUHJvcGVydHlBbmFseXplcjo6
bW92KToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHA6CisgICAgICAg
IChKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lOjppbnZhbGlkYXRlKToKKyAgICAgICAgKiBkZmcvREZH
SklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxl
KToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcDoKKyAgICAgICAgKEluc3BlY3Rv
cjo6SW5zcGVjdG9yVmFsdWU6OnBhcnNlSlNPTik6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50
OjphY3RpdmF0ZUV4dHJhRG9tYWluKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdl
bnQ6OmFjdGl2YXRlRXh0cmFEb21haW5zKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uUHJvYmUpOgorICAgICAgICAqIGluc3BlY3Rv
ci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3I6OnJlY2VpdmVkU2V0dXBNZXNzYWdlKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5j
cHA6CisgICAgICAgIChKU0M6OmxpbmtQb2x5bW9ycGhpY0NhbGwpOgorICAgICAgICAqIHJ1bnRp
bWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgICog
cnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25z
dHJ1Y3RBcnJheUJ1ZmZlcik6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5o
OgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU5hbWVBcnJheTo6cmVsZWFzZURhdGEpOgorICAgICAg
ICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b1N0
cnVjdHVyZVNoYXBlKToKKyAgICAgICAgKiBydW50aW1lL1R5cGVTZXQuY3BwOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmVTaGFwZTo6bWVyZ2UpOgorICAgICAgICAqIHRvb2xzL0Z1bmN0aW9uT3Zl
cnJpZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6ZU92ZXJyaWRlSW5mbyk6CisKIDIw
MTYtMDYtMTUgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgZml4IHR5cG8gaW4gdGVzdCBhbmQgbW92ZSB0ZXN0cyB0byB0aGUgY29y
cmVjdCBmaWxlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKaW5kZXggYjQ2YjI4NzE0MjdlZjUyZTFiNGNiNGQwMTY1NGYyNzBlYjk0ZmYy
OS4uMGM2YzZmOTM4MTAyYmYwNTIwYWY4MTdjNDc5NzdhY2MwMWM0YTdhMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOCBAQAorMjAxNi0wNi0xNSAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3ZlIFJlZlB0cjo6cmVsZWFzZSgpIGFuZCBjaGFuZ2UgY2FsbHMgc2l0ZXMg
dG8gdXNlIFdURk1vdmUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTU4MzY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIGEgbmV3IFJlZlB0ciBjb25zdHJ1Y3RvciB0aGF0IHRha2VzIGEgUmVmJi4g
VGhpcyBlYXNlcyBzb21lCisgICAgICAgIGNvbnZlcnNpb25zIGluIGNvZGUgdGhhdCByZWNlaXZl
cyBhIG1hbmFnZWQgb2JqZWN0IGluIG9uZSB0eXBlIG9mCisgICAgICAgIHdyYXBwZXIgYnV0IHRo
ZW4gbmVlZHMgdG8gcGFzcyBpdCBvZmYgZWxzZXdoZXJlIGluIHRoZSBvdGhlciB0eXBlIG9mCisg
ICAgICAgIHdyYXBwZXIuCisKKyAgICAgICAgKiB3dGYvUGFzc1JlZlB0ci5oOgorICAgICAgICAo
V1RGOjpQYXNzUmVmUHRyPFQ+OjpQYXNzUmVmUHRyKToKKwogMjAxNi0wNi0xNSAgU2FtIFdlaW5p
ZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIEltcHJvdmUgSGFzaE1hcCBhbmQgSGFzaFNl
dCBzdXBwb3J0IGZvciBSZWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0YzRjNjUzZDliODJlMzYyNzBjMmY0N2Q3
YmNjNTJmMjg3YzRhMjljLi45NTQ4Y2M0YTRlNTk4ZmYwMmZmYTczMGVlNGEwYzZmMjI4N2NlZDdh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIwIEBACisyMDE2LTA2LTE1ICBLZWl0aCBSb2xsaW4g
IDxrcm9sbGluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgUmVmUHRyOjpyZWxlYXNlKCkg
YW5kIGNoYW5nZSBjYWxscyBzaXRlcyB0byB1c2UgV1RGTW92ZSgpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgzNjkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZQdHI6OnJlbGVhc2UoKSByZWxlYXNl
cyBpdHMgbWFuYWdlZCBwb2ludGVyIGF3a3dhcmRseS4gSXQncyBtb3JlCisgICAgICAgIGRpcmVj
dCBhbmQgY2xlYXJlciB0byB1c2UgV1RGTW92ZSB0byB0cmFuc2ZlciBvd25lcnNoaXAgb2YgdGhl
IG1hbmFnZWQKKyAgICAgICAgcG9pbnRlci4KKworICAgICAgICBBcyBwYXJ0IG9mIHRoaXMgY2xl
YW51cCwgYWxzbyBjaGFuZ2UgYSBsb3Qgb2YgZXhwbGljaXQgZGF0YSB0eXBlcyB0bworICAgICAg
ICAnYXV0bycuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzOiB0aGVyZSdzIG5vIG5ldyBmdW5jdGlv
bmFsaXR5LCBqdXN0IGEgcmVmYWN0b3Jpbmcgb2YKKyAgICAgICAgZXhpc3RpbmcgY29kZS4KKwor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnJlbW92ZVNhbXBsZXNGcm9tVHJhY2tCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyOjpwcm92aWRlTWVkaWFEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1l
ZGlhUmVxdWVzdDo6c3RhcnQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6On5EYXRhYmFzZSk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxDYWxsYmFja1dyYXBwZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNRTENhbGxiYWNrV3JhcHBlcjo6Y2xlYXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZVBvc3RNZXNz
YWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNIaXN0b3J5OjpwdXNoU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNI
aXN0b3J5OjpyZXBsYWNlU3RhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWVzc2FnZVBv
cnRDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZVBvc3RNZXNzYWdlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZFRlcm1pbmFsKToKKyAgICAgICAgKiBjc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1
dGVkU3R5bGVFeHRyYWN0b3I6OmNvcHlQcm9wZXJ0aWVzSW5TZXQpOgorICAgICAgICAqIGNzcy9T
VkdDU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVNWR1Zh
bHVlKToKKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTaGFwZVZhbHVlKToKKyAgICAg
ICAgKiBjc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJv
cGVydGllczo6Y29weVByb3BlcnRpZXNJblNldCk6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6bG9hZFBlbmRpbmdJbWFn
ZXMpOgorICAgICAgICAqIGRvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5saW5lU3R5bGVTaGVldE93bmVyOjpjbGVhclNoZWV0KToKKyAgICAgICAgKiBl
ZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5
bGVDb21tYW5kOjphcHBseUlubGluZVN0eWxlVG9Ob2RlUmFuZ2UpOgorICAgICAgICAqIGVkaXRp
bmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRl
RWRpdENvbW1hbmQ6OnJlbW92ZUNoaWxkcmVuSW5SYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpD
b21wb3NpdGVFZGl0Q29tbWFuZDo6cmVtb3ZlTm9kZUFuZFBydW5lQW5jZXN0b3JzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjpwcnVuZSk6CisgICAgICAgIChXZWJD
b3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVwbGFjZVNlbGVjdGVkVGV4dEluTm9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmViYWxhbmNlV2hpdGVzcGFj
ZU9uVGV4dFN1YnN0cmluZyk6CisgICAgICAgICogZWRpdGluZy9DcmVhdGVMaW5rQ29tbWFuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDcmVhdGVMaW5rQ29tbWFuZDo6ZG9BcHBseSk6CisgICAg
ICAgICogZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGlu
Z1N0eWxlOjptZXJnZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6bWVy
Z2VTdHlsZUZyb21SdWxlc0ZvclNlcmlhbGl6YXRpb24pOgorICAgICAgICAqIGVkaXRpbmcvRWRp
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsZWFyVGV4dENvbW1hbmQ6OkNyZWF0ZUFuZEFw
cGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJh
ZEdyYW1tYXJJblJhbmdlcyk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVJbnNlcnROb2RlKToKKyAgICAgICAgKiBlZGl0aW5n
L0luc2VydFRleHRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydFRleHRDb21t
YW5kOjpwZXJmb3JtT3ZlcndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydFRleHRDb21t
YW5kOjppbnNlcnRUYWIpOgorICAgICAgICAqIGVkaXRpbmcvUmVtb3ZlTm9kZVByZXNlcnZpbmdD
aGlsZHJlbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3ZlTm9kZVByZXNlcnZp
bmdDaGlsZHJlbkNvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNl
bGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZW1lbnRGcmFnbWVu
dDo6cmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpSZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZDo6bW92ZU5vZGVPdXRPZkFuY2VzdG9yKToKKyAgICAgICAgKiBo
dG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZUUERpcmVj
dG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSk6CisgICAgICAgICogaHRt
bC9IVE1MRm9udEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvbnRFbGVtZW50
Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwv
SFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6
cHJlcGFyZUZvclN1Ym1pc3Npb24pOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpsZWFrQm9yZGVyU3R5bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6bGVha0dyb3VwQm9yZGVyU3R5bGUpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1
bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnJ1
blNjcmlwdHNGb3JQYXVzZWRUcmVlQnVpbGRlcik6CisgICAgICAgICogaHRtbC90cmFjay9JbmJh
bmREYXRhVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZERhdGFUZXh0VHJh
Y2s6OmFkZERhdGFDdWUpOgorICAgICAgICAqIGh0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRU
cmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpuZXdD
dWVzUGFyc2VkKToKKyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRXZWJWVFRUZXh0VHJhY2s6Om5ld0N1ZXNQYXJz
ZWQpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlTGlzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0VHJhY2tDdWVMaXN0OjphZGQpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2Vu
dDo6Z2V0SW5saW5lU3R5bGVzRm9yTm9kZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpwdXNo
Q2hpbGROb2Rlc1RvRnJvbnRlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbmRl
eGVkREJBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmxvYWRSZXNv
dXJjZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTZWxlY3Rv
ckxpc3QpOgorICAgICAgICAqIGxvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb3JtU3VibWlzc2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRVUkxJbnRvQ2hp
bGRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFVSTCk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KToKKyAgICAgICAgKiBs
b2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyZXNzVHJh
Y2tlcjo6ZmluYWxQcm9ncmVzc0NvbXBsZXRlKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
Q2FjaGVHcm91cDo6ZGlzYXNzb2NpYXRlRG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2hlY2tJZkxvYWRJc0NvbXBsZXRlKToKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZUdyb3VwKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjYWNoZUdyb3VwRm9y
VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpmYWxsYmFj
a0NhY2hlR3JvdXBGb3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U6OmxvYWRDYWNoZSk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291
cmNlQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcmNoaXZlUmVzb3VyY2VDb2xs
ZWN0aW9uOjpwb3BTdWJmcmFtZUFyY2hpdmUpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2Nm
L0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2
ZTo6ZXh0cmFjdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlv
bik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZEltYWdlOjpjcmVhdGVJbWFnZSk6CisgICAgICAgICogbG9hZGVyL2ljb24v
SWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6c2V0SWNv
bkRhdGFGb3JJY29uVVJMKToKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6Z2V0T3JD
cmVhdGVJY29uUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6cmVhZEZy
b21EYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OmdldEltYWdlRGF0
YUZvckljb25VUkxGcm9tU1FMRGF0YWJhc2UpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6c2Vzc2lvblN0b3JhZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NV2luZG93Ojpsb2NhbFN0b3JhZ2UpOgorICAgICAgICAqIHBhZ2UvRXZl
bnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6dXBkYXRlRHJh
Z0FuZERyb3ApOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVBbmltYXRpb246OnVwZGF0ZVRyYW5zaXRp
b25zKToKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRWaW9sYXRpb24pOgor
ICAgICAgICAqIHBhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW06CisgICAgICAg
IChXZWJDb3JlOjpTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpjcmVhdGVPdmVybGF5SWZOZWVk
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6ZGV0ZXJt
aW5lQWN0aXZlSGlnaGxpZ2h0KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9s
bGluZ0Nvb3JkaW5hdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yOjpyZWxlYXNlU2Nyb2xsaW5nVHJlZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nU3RhdGVOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRl
Tm9kZTo6Y2xvbmVBbmRSZXNldCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
U3RhdGVUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlVHJlZTo6YXR0
YWNoTm9kZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpnZXRDb25jYXRlbmF0ZWRJbXB1bHNlUmVzcG9uc2VzRm9yU3ViamVj
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFu
YWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2Vy
OjpjcmVhdGVNb25pdG9yRm9yQ2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZUZvbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlRm9udHM6
OmdseXBoRGF0YUZvclN5c3RlbUZhbGxiYWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQXR0cmlidXRlZFN0cmlu
Z3MpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNlbGVj
dGlvbkdyb3VwQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2VsZWN0aW9uR3Jv
dXBBVkZPYmpDOjp1cGRhdGVPcHRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpwcm9jZXNzQ29kZWRGcmFtZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpjcmVhdGVDb21wYXRpYmxlTGF5ZXJPclRha2VG
cm9tUG9vbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRh
Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEYXRhOjpnZXREYXRhKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmFzVW5tdWx0aXBsaWVkSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojphc1ByZW11bHRpcGxpZWRJbWFnZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUZvckN1cnJlbnRHTENvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
SW1hZ2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlck1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyTWFjOjpjcmVhdGVNZWRpYVN0cmVhbSk6CisgICAgICAgICogcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6dmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWlu
dHMpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmNy
ZWF0ZU1lZGlhU3RyZWFtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3Ry
eUltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJC
bG9iVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVyQmxv
YlVSTEZvclNsaWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpjcmVhdGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpmb3JtQ3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0JpZGlDb250
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpZGlDb250ZXh0Ojpjb3B5U3RhY2tSZW1vdmlu
Z1VuaWNvZGVFbWJlZGRpbmdDb250ZXh0cyk6CisgICAgICAgICogcmVuZGVyaW5nL0ZpbHRlckVm
ZmVjdFJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdFJlbmRlcmVy
OjpidWlsZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyOjpjcmVhdGVTY3JvbGxiYXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6
OmNyZWF0ZVNjcm9sbGJhcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNw
cDoKKyAgICAgICAgKFJlbmRlck1lbnVMaXN0OjpjcmVhdGVTY3JvbGxiYXIpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTZWFyY2hGaWVsZDo6Y3JlYXRlU2Nyb2xsYmFyKToKKyAgICAgICAgKiByZXBsYXkvUmVwbGF5
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYXlDb250cm9sbGVyOjp1bmxv
YWRTZWdtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6YnVpbGQp
OgorICAgICAgICAqIHN2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAg
ICAgKiBzdmcvcHJvcGVydGllcy9TVkdMaXN0UHJvcGVydHkuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0xpc3RQcm9wZXJ0eTo6Z2V0SXRlbVZhbHVlc0FuZFdyYXBwZXJzKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0xpc3RQcm9wZXJ0eTo6aW5zZXJ0SXRlbUJlZm9yZVZhbHVlc0FuZFdyYXBwZXJz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3RQcm9wZXJ0eTo6cmVtb3ZlSXRlbVZhbHVlc0Fu
ZFdyYXBwZXJzKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclRocmVhZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OndvcmtlclRocmVhZCk6CisgICAgICAgICogeG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjppbnRl
cm5hbEFib3J0KToKKyAgICAgICAgKiB4bWwvWFBhdGhTdGVwLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlhQYXRoOjpTdGVwOjpub2Rlc0luQXhpcyk6CisKIDIwMTYtMDYtMTUgIFJ5YW4gSGFkZGFk
ICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVzZXQgYmluZGluZ3MgdGVzdCBy
ZXN1bHRzIGFmdGVyIHIyMDIxMDUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNjI4MmFjMDA2MTFjMDg0ZjExMjQyOGMz
MDY1ZWM2ZWQzMDhlMmQzMS4uMjE2YjcwZGNjNDNlNmY0YmI2NmMxMDdhOGIzZmY4ZTNlZjk3NzU0
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxNi0wNi0xNSAgS2VpdGggUm9sbGluICA8
a3JvbGxpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFJlZlB0cjo6cmVsZWFzZSgpIGFu
ZCBjaGFuZ2UgY2FsbHMgc2l0ZXMgdG8gdXNlIFdURk1vdmUoKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MzY5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmUHRyOjpyZWxlYXNlKCkgcmVsZWFzZXMg
aXRzIG1hbmFnZWQgcG9pbnRlciBhd2t3YXJkbHkuIEl0J3MgbW9yZQorICAgICAgICBkaXJlY3Qg
YW5kIGNsZWFyZXIgdG8gdXNlIFdURk1vdmUgdG8gdHJhbnNmZXIgb3duZXJzaGlwIG9mIHRoZSBt
YW5hZ2VkCisgICAgICAgIHBvaW50ZXIuCisKKyAgICAgICAgQXMgcGFydCBvZiB0aGlzIGNsZWFu
dXAsIGFsc28gY2hhbmdlIGEgbG90IG9mIGV4cGxpY2l0IGRhdGEgdHlwZXMgdG8KKyAgICAgICAg
J2F1dG8nLgorCisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U3RvcmFnZUFyZWFJbXBsOjpzZXRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0b3JhZ2VBcmVhSW1wbDo6cmVtb3ZlSXRlbSk6CisKIDIwMTYtMDYtMTMgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgV2ViU29ja2V0
UHJvdmlkZXIgc3R1YgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDgxM2E0YzE5YzIyNGZjNTlmMTQ1ODU4
NTM1YjRlYmVlMWJiZjFlMzcuLjhkNDExMTkwNGI1MmE0NzJlYmQzZGE0NmZjZWI3OTcxYTA4NzFk
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxNi0wNi0xNSAgS2VpdGgg
Um9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFJlZlB0cjo6cmVs
ZWFzZSgpIGFuZCBjaGFuZ2UgY2FsbHMgc2l0ZXMgdG8gdXNlIFdURk1vdmUoKQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MzY5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmUHRyOjpyZWxlYXNlKCkg
cmVsZWFzZXMgaXRzIG1hbmFnZWQgcG9pbnRlciBhd2t3YXJkbHkuIEl0J3MgbW9yZQorICAgICAg
ICBkaXJlY3QgYW5kIGNsZWFyZXIgdG8gdXNlIFdURk1vdmUgdG8gdHJhbnNmZXIgb3duZXJzaGlw
IG9mIHRoZSBtYW5hZ2VkCisgICAgICAgIHBvaW50ZXIuCisKKyAgICAgICAgQXMgcGFydCBvZiB0
aGlzIGNsZWFudXAsIGFsc28gY2hhbmdlIGEgbG90IG9mIGV4cGxpY2l0IGRhdGEgdHlwZXMgdG8K
KyAgICAgICAgJ2F1dG8nLgorCisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVn
aW5Ib3N0TWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Ib3N0TWFu
YWdlcjo6aW5zdGFudGlhdGVQbHVnaW4pOgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVn
aW5JbnN0YW5jZVByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHk6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQ
bHVnaW5JbnN0YW5jZVByb3h5OjpkZW1hcnNoYWxWYWx1ZUZyb21BcnJheSk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgICgtW1dlYkZy
YW1lUG9saWN5TGlzdGVuZXIgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbjpdKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbToKKyAgICAgICAgKC1bV2ViU2VjdXJp
dHlPcmlnaW4gaW5pdFdpdGhVUkw6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJBcmNoaXZlLm1t
OgorICAgICAgICAoLVtXZWJBcmNoaXZlIGluaXRXaXRoTWFpblJlc291cmNlOnN1YnJlc291cmNl
czpzdWJmcmFtZUFyY2hpdmVzOl0pOgorICAgICAgICAoLVtXZWJBcmNoaXZlIGluaXRXaXRoRGF0
YTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAgICgtW1dl
YkRhdGFTb3VyY2UgbWFpblJlc291cmNlXSk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5t
bToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2RvY3VtZW50RnJhZ21lbnRXaXRoTm9kZXNBc1BhcmFn
cmFwaHM6XSk6CisKIDIwMTYtMDYtMTUgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgog
CiAgICAgICAgIFJUTCA8c2VsZWN0PiBmb3JtcyBhcmUgbWlzcGxhY2VkCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
ZDU1ZTc1NWE0NmUwNWQ0MzJhYzQzNzYzZTkzYmE4NzJhM2JiNjk1Mi4uYzMxMWUwZTQ2OTlmODc2
MDI1ZTFhYTM0N2Y2NWQwZDgyMzk3ZWI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1MSBAQAor
MjAxNi0wNi0xNSAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVtb3ZlIFJlZlB0cjo6cmVsZWFzZSgpIGFuZCBjaGFuZ2UgY2FsbHMgc2l0ZXMgdG8gdXNlIFdU
Rk1vdmUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU4MzY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UmVmUHRyOjpyZWxlYXNlKCkgcmVsZWFzZXMgaXRzIG1hbmFnZWQgcG9pbnRlciBhd2t3YXJkbHku
IEl0J3MgbW9yZQorICAgICAgICBkaXJlY3QgYW5kIGNsZWFyZXIgdG8gdXNlIFdURk1vdmUgdG8g
dHJhbnNmZXIgb3duZXJzaGlwIG9mIHRoZSBtYW5hZ2VkCisgICAgICAgIHBvaW50ZXIuCisKKyAg
ICAgICAgQXMgcGFydCBvZiB0aGlzIGNsZWFudXAsIGFsc28gY2hhbmdlIGEgbG90IG9mIGV4cGxp
Y2l0IGRhdGEgdHlwZXMgdG8KKyAgICAgICAgJ2F1dG8nLgorCisgICAgICAgICogRGF0YWJhc2VQ
cm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJv
Y2Vzczo6Y3JlYXRlRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6OmluaXRpYWxpemVTaGFyZWFibGVSZXNv
dXJjZUhhbmRsZUZyb21TdG9yYWdlUmVjb3JkKToKKyAgICAgICAgKiBQbGF0Zm9ybS9tYWMvU2hh
cmVkTWVtb3J5TWFjLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5OjphbGxvY2F0
ZSk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YktpdDo6U2hhcmVkTWVtb3J5OjptYXApOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2lu
UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3M6OmNyZWF0ZVdlYlBy
b2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2Jq
ZWN0Q29kZXIubW06CisgICAgICAgIChlbmNvZGVUb09iamVjdFN0cmVhbSk6CisgICAgICAgICog
U2hhcmVkL0FQSS9jL1dLSW1hZ2UuY3BwOgorICAgICAgICAoV0tJbWFnZUNyZWF0ZSk6CisgICAg
ICAgICogU2hhcmVkL0FQSS9jL1dLTnVtYmVyLmNwcDoKKyAgICAgICAgKFdLQm9vbGVhbkNyZWF0
ZSk6CisgICAgICAgIChXS0RvdWJsZUNyZWF0ZSk6CisgICAgICAgIChXS1VJbnQ2NENyZWF0ZSk6
CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLU2VjdXJpdHlPcmlnaW5SZWYuY3BwOgorICAgICAg
ICAoV0tTZWN1cml0eU9yaWdpbkNyZWF0ZSk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdLU2VyaWFsaXplZFNjcmlwdFZhbHVl
Q3JlYXRlKToKKyAgICAgICAgKFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlQ3JlYXRlV2l0aEludGVy
bmFsUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9jYWlyby9XS0ltYWdl
Q2Fpcm8uY3BwOgorICAgICAgICAoV0tJbWFnZUNyZWF0ZUZyb21DYWlyb1N1cmZhY2UpOgorICAg
ICAgICAqIFNoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwOgorICAgICAgICAoV0tJbWFnZUNy
ZWF0ZUZyb21DR0ltYWdlKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvbWFjL1dLQ2VydGlmaWNh
dGVJbmZvTWFjLm1tOgorICAgICAgICAoV0tDZXJ0aWZpY2F0ZUluZm9DcmVhdGVXaXRoQ2VydGZp
Y2F0ZUNoYWluKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvbWFjL1dLT2JqQ1R5cGVXcmFwcGVy
UmVmLm1tOgorICAgICAgICAoV0tPYmpDVHlwZVdyYXBwZXJDcmVhdGUpOgorICAgICAgICAqIFNo
YXJlZC9BUEkvYy9tYWMvV0tXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdLV2ViQXJjaGl2ZUNy
ZWF0ZSk6CisgICAgICAgIChXS1dlYkFyY2hpdmVDcmVhdGVXaXRoRGF0YSk6CisgICAgICAgIChX
S1dlYkFyY2hpdmVDcmVhdGVGcm9tUmFuZ2UpOgorICAgICAgICAoV0tXZWJBcmNoaXZlQ29weU1h
aW5SZXNvdXJjZSk6CisgICAgICAgIChXS1dlYkFyY2hpdmVDb3B5U3VicmVzb3VyY2VzKToKKyAg
ICAgICAgKFdLV2ViQXJjaGl2ZUNvcHlTdWJmcmFtZUFyY2hpdmVzKToKKyAgICAgICAgKiBTaGFy
ZWQvQVBJL2MvbWFjL1dLV2ViQXJjaGl2ZVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdLV2ViQXJj
aGl2ZVJlc291cmNlQ3JlYXRlKToKKyAgICAgICAgKiBTaGFyZWQvQVBJV2ViQXJjaGl2ZS5tbToK
KyAgICAgICAgKEFQSTo6V2ViQXJjaGl2ZTo6V2ViQXJjaGl2ZSk6CisgICAgICAgICogU2hhcmVk
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAqIFNoYXJl
ZC9TaGFyZWFibGVCaXRtYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZSk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6Om1hcCk6CisgICAgICAgICogU2hhcmVkL2d0
ay9Bcmd1bWVudENvZGVyc0d0ay5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RHJh
Z0RhdGE+OjpkZWNvZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9Db29yZGluYXRlZEdy
YXBoaWNzL1dLVmlldy5jcHA6CisgICAgICAgIChXS1ZpZXdDcmVhdGUpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS0JhdHRlcnlTdGF0dXMuY3BwOgorICAgICAgICAoV0tCYXR0ZXJ5U3Rh
dHVzQ3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvblBvc2l0
aW9uLmNwcDoKKyAgICAgICAgKFdLR2VvbG9jYXRpb25Qb3NpdGlvbkNyZWF0ZV9iKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tHcmFtbWFyRGV0YWlsLmNwcDoKKyAgICAgICAgKFdLR3Jh
bW1hckRldGFpbENyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6
CisgICAgICAgIChXS1BhZ2VDb3B5U2Vzc2lvblN0YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlR3JvdXAuY3BwOgorICAgICAgICAoV0tQYWdlR3JvdXBDcmVhdGVXaXRoSWRl
bnRpZmllcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwOgor
ICAgICAgICAoV0tQcmVmZXJlbmNlc0NyZWF0ZSk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzQ3Jl
YXRlV2l0aElkZW50aWZpZXIpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc0NyZWF0ZUNvcHkpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1Nlc3Npb25SZWYuY3BwOgorICAgICAgICAoV0tT
ZXNzaW9uQ3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tTZXNzaW9uU3RhdGVS
ZWYuY3BwOgorICAgICAgICAoV0tTZXNzaW9uU3RhdGVDb3B5RGF0YSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLm1tOgorICAgICAgICAoV0tDb250
ZXh0Q29weVBsdWdJbkluZm9Gb3JCdW5kbGVJZGVudGlmaWVyKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGxvYWRSZXF1
ZXN0Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgbG9hZEZpbGVVUkw6YWxsb3dpbmdSZWFkQWNj
ZXNzVG9VUkw6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBsb2FkRGF0YTpNSU1FVHlwZTpjaGFy
YWN0ZXJFbmNvZGluZ05hbWU6YmFzZVVSTDpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGdvVG9C
YWNrRm9yd2FyZExpc3RJdGVtOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgZ29CYWNrXSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBnb0ZvcndhcmRdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHJl
bG9hZF0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgcmVsb2FkRnJvbU9yaWdpbl0pOgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX2xvYWREYXRhOk1JTUVUeXBlOmNoYXJhY3RlckVuY29kaW5nTmFtZTpi
YXNlVVJMOnVzZXJEYXRhOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3JlbG9hZFdpdGhvdXRD
b250ZW50QmxvY2tlcnNdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXNzaW9uU3RhdGVEYXRh
XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVzdG9yZVNlc3Npb25TdGF0ZTphbmROYXZpZ2F0
ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfZGF0YWJhc2VfbWFuYWdlci5j
cHA6CisgICAgICAgIChFd2tEYXRhYmFzZU1hbmFnZXI6OmNyZWF0ZU9yaWdpbkxpc3QpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19zdG9yYWdlX21hbmFnZXIuY3BwOgorICAgICAg
ICAoRXdrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZU9yaWdpbkxpc3QpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAod2Via2l0V2ViVmlld0Ny
ZWF0ZU5ld1BhZ2UpOgorICAgICAgICAod2Via2l0V2ViVmlld1ByaW50RnJhbWUpOgorICAgICAg
ICAoZ2V0Q29udGVudHNBc01IVE1MRGF0YUNhbGxiYWNrKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29jb2EvU2Vzc2lvblN0YXRlQ29kaW5nLm1tOgorICAgICAgICAoV2ViS2l0OjplbmNvZGVTZXNz
aW9uU3RhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2suaDoKKyAgICAg
ICAgKFdlYktpdDo6Q2FsbGJhY2tNYXA6OnRha2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9HZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Y3JlYXRlUmVxdWVz
dCk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICogVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Y3JlYXRlUmVx
dWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6Z2V0T3JDcmVhdGVQ
bHVnaW5Qcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6c2V0
SXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6cmVt
b3ZlSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVMb2NhbFN0
b3JhZ2VNYXApOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6OmFkZEl0ZW0pOgorICAgICAgICAo
V2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6OmNsZWFyKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViQ29va2llTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFu
YWdlclByb3h5OjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6aW5zdGFsbFZpZXdTdGF0ZUNoYW5nZUNvbXBsZXRpb25IYW5kbGVyKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmVm
ZXJlbmNlczo6Y3JlYXRlV2l0aExlZ2FjeURlZmF1bHRzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJlZmVyZW5jZXM6OmNvcHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp+V2ViUHJvY2Vzc1Bvb2wpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90U3RvcmUubW06CisgICAgICAgIChX
ZWJLaXQ6OlZpZXdTbmFwc2hvdFN0b3JlOjpyZWNvcmRTbmFwc2hvdCk6CisgICAgICAgICogVUlQ
cm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dL
SW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciBfd2ViSGl0VGVzdFJlc3VsdF0pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcubW06CisgICAgICAgICgtW1dLUHJpbnRpbmdW
aWV3IF9hc2tQYWdlVG9Db21wdXRlUGFnZVJlY3RzXSk6CisgICAgICAgICogVUlQcm9jZXNzL21h
Yy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0
RHJhZ0ltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2Nv
YS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5tbToKKyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1
Z0luRnJhbWUgaGl0VGVzdDpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0Lm1tOgorICAgICAgICAo
LVtXS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0IG5vZGVIYW5kbGVdKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5O
b2RlSGFuZGxlLm1tOgorICAgICAgICAoK1tXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlIG5v
ZGVIYW5kbGVXaXRoSlNWYWx1ZTppbkNvbnRleHQ6XSk6CisgICAgICAgICgtW1dLV2ViUHJvY2Vz
c1BsdWdJbk5vZGVIYW5kbGUgaHRtbElGcmFtZUVsZW1lbnRDb250ZW50RnJhbWVdKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVn
SW5TY3JpcHRXb3JsZC5tbToKKyAgICAgICAgKCtbV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29y
bGQgd29ybGRdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZURPTVdpbmRv
d0V4dGVuc2lvbi5jcHA6CisgICAgICAgIChXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbkNyZWF0
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUhp
dFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV0tCdW5kbGVIaXRUZXN0UmVzdWx0Q29weU5vZGVI
YW5kbGUpOgorICAgICAgICAoV0tCdW5kbGVIaXRUZXN0UmVzdWx0Q29weVVSTEVsZW1lbnRIYW5k
bGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVO
YXZpZ2F0aW9uQWN0aW9uLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbkNv
cHlIaXRUZXN0UmVzdWx0KToKKyAgICAgICAgKFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbkNvcHlG
b3JtRWxlbWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZU5vZGVIYW5kbGUuY3BwOgorICAgICAgICAoV0tCdW5kbGVOb2RlSGFuZGxlQ3JlYXRl
KToKKyAgICAgICAgKFdLQnVuZGxlTm9kZUhhbmRsZUNvcHlEb2N1bWVudCk6CisgICAgICAgIChX
S0J1bmRsZU5vZGVIYW5kbGVDb3B5U25hcHNob3RXaXRoT3B0aW9ucyk6CisgICAgICAgIChXS0J1
bmRsZU5vZGVIYW5kbGVDb3B5VmlzaWJsZVJhbmdlKToKKyAgICAgICAgKFdLQnVuZGxlTm9kZUhh
bmRsZUNvcHlIVE1MVGFibGVDZWxsRWxlbWVudENlbGxBYm92ZSk6CisgICAgICAgIChXS0J1bmRs
ZU5vZGVIYW5kbGVDb3B5RG9jdW1lbnRGcmFtZSk6CisgICAgICAgIChXS0J1bmRsZU5vZGVIYW5k
bGVDb3B5SFRNTEZyYW1lRWxlbWVudENvbnRlbnRGcmFtZSk6CisgICAgICAgIChXS0J1bmRsZU5v
ZGVIYW5kbGVDb3B5SFRNTElGcmFtZUVsZW1lbnRDb250ZW50RnJhbWUpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAg
KFdLQnVuZGxlUGFnZUNyZWF0ZVNuYXBzaG90V2l0aE9wdGlvbnMpOgorICAgICAgICAoV0tCdW5k
bGVQYWdlQ3JlYXRlU25hcHNob3RJblZpZXdDb29yZGluYXRlcyk6CisgICAgICAgIChXS0J1bmRs
ZVBhZ2VDcmVhdGVTbmFwc2hvdEluRG9jdW1lbnRDb29yZGluYXRlcyk6CisgICAgICAgIChXS0J1
bmRsZVBhZ2VDcmVhdGVTY2FsZWRTbmFwc2hvdEluRG9jdW1lbnRDb29yZGluYXRlcyk6CisgICAg
ICAgIChXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNzYWdlRm9yVGVzdGluZyk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVJhbmdlSGFuZGxl
LmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUmFuZ2VIYW5kbGVDcmVhdGUpOgorICAgICAgICAoV0tC
dW5kbGVSYW5nZUhhbmRsZUNvcHlTbmFwc2hvdFdpdGhPcHRpb25zKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlU2NyaXB0V29ybGQuY3BwOgorICAg
ICAgICAoV0tCdW5kbGVTY3JpcHRXb3JsZENyZWF0ZVdvcmxkKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Ob2RlLm1tOgorICAgICAgICAoLVtXS0RP
TU5vZGUgX2NvcHlCdW5kbGVOb2RlSGFuZGxlUmVmXSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW06CisgICAgICAgICgtW1dLRE9NUmFu
Z2UgX2NvcHlCdW5kbGVSYW5nZUhhbmRsZVJlZl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhh
bmRsZTo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
RE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmltYWdl
Rm9yUmVjdCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6cmVu
ZGVyZWRJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5q
ZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVu
ZGxlUmFuZ2VIYW5kbGU6OmdldE9yQ3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRC
dW5kbGU6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OmxvYWRV
UkwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBERlBsdWdp
bi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpjcmVhdGVTY3JvbGxiYXIpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjphcHBseUNoYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6dG9Gb3JtRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVy
Q2xpZW50OjpjcmVhdGVQbHVnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNs
aWVudDo6cmVjcmVhdGVQbHVnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNs
aWVudDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
TG9hZGVyQ2xpZW50OjpjcmVhdGVOZXR3b3JraW5nQ29udGV4dCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JDbGllbnQ6OmhpZ2hsaWdodCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktp
dDo6Y29udmVydEltYWdlVG9CaXRtYXApOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9G
aW5kQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZpbmRDb250cm9sbGVyOjp1cGRh
dGVGaW5kVUlBZnRlclBhZ2VTY3JvbGwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9W
aXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlZpc2l0ZWRM
aW5rVGFibGVDb250cm9sbGVyOjpnZXRPckNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlZpc2l0
ZWRMaW5rVGFibGVDb250cm9sbGVyOjpzZXRWaXNpdGVkTGlua1RhYmxlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFt
ZTo6Y3JlYXRlV2l0aENvcmVNYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6
Y3JlYXRlU3ViZnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNyZWF0ZVNlbGVjdGlvblNuYXBzaG90KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmNyZWF0ZVBsdWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNuYXBzaG90
QXRTaXplKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c25hcHNob3ROb2RlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6d2lsbFBlcmZvcm1Mb2FkRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6U2FuZGJveEV4dGVuc2lvblRyYWNrZXI6OmRp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6U2FuZGJv
eEV4dGVuc2lvblRyYWNrZXI6OmRpZENvbW1pdFByb3Zpc2lvbmFsTG9hZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUdy
b3VwUHJveHk6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0
Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBQW5p
bWF0aW9uUmVtb3RlOjpQcm9wZXJ0aWVzOjpkZWNvZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGU6OmNsb25lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZv
cm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGVDdXN0b206OmNsb25lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6Y3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKToK
KwogMjAxNi0wNi0xNSAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAg
UlRMIDxzZWxlY3Q+IGZvcm1zIGFyZSBtaXNwbGFjZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU09iamVjdFJlZi5jcHAKaW5kZXggMzdjZDY1NzMyMzcwMDg1MWIyNTc5ZDY0MzZiNDEzNTMz
NTNlOGQyZS4uYzFkZGMzMjcxZjc4NTI0ZDc3MWE2NGQxYjVjZDZmZDE4OWM4OTFjMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKQEAgLTY2LDExICs2NiwxMSBA
QCB1c2luZyBuYW1lc3BhY2UgSlNDOwogSlNDbGFzc1JlZiBKU0NsYXNzQ3JlYXRlKGNvbnN0IEpT
Q2xhc3NEZWZpbml0aW9uKiBkZWZpbml0aW9uKQogewogICAgIGluaXRpYWxpemVUaHJlYWRpbmco
KTsKLSAgICBSZWZQdHI8T3BhcXVlSlNDbGFzcz4ganNDbGFzcyA9IChkZWZpbml0aW9uLT5hdHRy
aWJ1dGVzICYga0pTQ2xhc3NBdHRyaWJ1dGVOb0F1dG9tYXRpY1Byb3RvdHlwZSkKKyAgICBhdXRv
IGpzQ2xhc3MgPSAoZGVmaW5pdGlvbi0+YXR0cmlidXRlcyAmIGtKU0NsYXNzQXR0cmlidXRlTm9B
dXRvbWF0aWNQcm90b3R5cGUpCiAgICAgICAgID8gT3BhcXVlSlNDbGFzczo6Y3JlYXRlTm9BdXRv
bWF0aWNQcm90b3R5cGUoZGVmaW5pdGlvbikKICAgICAgICAgOiBPcGFxdWVKU0NsYXNzOjpjcmVh
dGUoZGVmaW5pdGlvbik7CiAgICAgCi0gICAgcmV0dXJuIGpzQ2xhc3MucmVsZWFzZSgpLmxlYWtS
ZWYoKTsKKyAgICByZXR1cm4gJmpzQ2xhc3MubGVha1JlZigpOwogfQogCiBKU0NsYXNzUmVmIEpT
Q2xhc3NSZXRhaW4oSlNDbGFzc1JlZiBqc0NsYXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTU2NyaXB0UmVmLmNwcAppbmRleCA2MGJkZTYwNGUzNTg1MTZmMWVmNmNhYTIzZDgxMjQ4OTJj
Y2ZhOTU1Li44M2QxZmU2MmYxMGEyZDA5MjkzMTBiZjM4YWVmMjYyZGJiZTJjM2ZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcApAQCAtOTMsNyArOTMsNyBAQCBK
U1NjcmlwdFJlZiBKU1NjcmlwdENyZWF0ZVJlZmVyZW5jaW5nSW1tb3J0YWxBU0NJSVRleHQoSlND
b250ZXh0R3JvdXBSZWYgY29udGV4dAogCiAgICAgc3RhcnRpbmdMaW5lTnVtYmVyID0gc3RkOjpt
YXgoMSwgc3RhcnRpbmdMaW5lTnVtYmVyKTsKIAotICAgIFJlZlB0cjxPcGFxdWVKU1NjcmlwdD4g
cmVzdWx0ID0gT3BhcXVlSlNTY3JpcHQ6OmNyZWF0ZSh2bSwgdXJsID8gdXJsLT5zdHJpbmcoKSA6
IFN0cmluZygpLCBzdGFydGluZ0xpbmVOdW1iZXIsIFN0cmluZyhTdHJpbmdJbXBsOjpjcmVhdGVG
cm9tTGl0ZXJhbChzb3VyY2UsIGxlbmd0aCkpKTsKKyAgICBhdXRvIHJlc3VsdCA9IE9wYXF1ZUpT
U2NyaXB0OjpjcmVhdGUodm0sIHVybCA/IHVybC0+c3RyaW5nKCkgOiBTdHJpbmcoKSwgc3RhcnRp
bmdMaW5lTnVtYmVyLCBTdHJpbmcoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoc291cmNl
LCBsZW5ndGgpKSk7CiAKICAgICBQYXJzZXJFcnJvciBlcnJvcjsKICAgICBpZiAoIXBhcnNlU2Ny
aXB0KHZtLCBTb3VyY2VDb2RlKHJlc3VsdCksIGVycm9yKSkgewpAQCAtMTA0LDcgKzEwNCw3IEBA
IEpTU2NyaXB0UmVmIEpTU2NyaXB0Q3JlYXRlUmVmZXJlbmNpbmdJbW1vcnRhbEFTQ0lJVGV4dChK
U0NvbnRleHRHcm91cFJlZiBjb250ZXh0CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
IAotICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gcmVz
dWx0LmxlYWtSZWYoKTsKIH0KIAogSlNTY3JpcHRSZWYgSlNTY3JpcHRDcmVhdGVGcm9tU3RyaW5n
KEpTQ29udGV4dEdyb3VwUmVmIGNvbnRleHRHcm91cCwgSlNTdHJpbmdSZWYgdXJsLCBpbnQgc3Rh
cnRpbmdMaW5lTnVtYmVyLCBKU1N0cmluZ1JlZiBzb3VyY2UsIEpTU3RyaW5nUmVmKiBlcnJvck1l
c3NhZ2UsIGludCogZXJyb3JMaW5lKQpAQCAtMTE0LDcgKzExNCw3IEBAIEpTU2NyaXB0UmVmIEpT
U2NyaXB0Q3JlYXRlRnJvbVN0cmluZyhKU0NvbnRleHRHcm91cFJlZiBjb250ZXh0R3JvdXAsIEpT
U3RyaW5nUmVmCiAKICAgICBzdGFydGluZ0xpbmVOdW1iZXIgPSBzdGQ6Om1heCgxLCBzdGFydGlu
Z0xpbmVOdW1iZXIpOwogCi0gICAgUmVmUHRyPE9wYXF1ZUpTU2NyaXB0PiByZXN1bHQgPSBPcGFx
dWVKU1NjcmlwdDo6Y3JlYXRlKHZtLCB1cmwgPyB1cmwtPnN0cmluZygpIDogU3RyaW5nKCksIHN0
YXJ0aW5nTGluZU51bWJlciwgc291cmNlLT5zdHJpbmcoKSk7CisgICAgYXV0byByZXN1bHQgPSBP
cGFxdWVKU1NjcmlwdDo6Y3JlYXRlKHZtLCB1cmwgPyB1cmwtPnN0cmluZygpIDogU3RyaW5nKCks
IHN0YXJ0aW5nTGluZU51bWJlciwgc291cmNlLT5zdHJpbmcoKSk7CiAKICAgICBQYXJzZXJFcnJv
ciBlcnJvcjsKICAgICBpZiAoIXBhcnNlU2NyaXB0KHZtLCBTb3VyY2VDb2RlKHJlc3VsdCksIGVy
cm9yKSkgewpAQCAtMTI1LDcgKzEyNSw3IEBAIEpTU2NyaXB0UmVmIEpTU2NyaXB0Q3JlYXRlRnJv
bVN0cmluZyhKU0NvbnRleHRHcm91cFJlZiBjb250ZXh0R3JvdXAsIEpTU3RyaW5nUmVmCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgp
LmxlYWtSZWYoKTsKKyAgICByZXR1cm4gcmVzdWx0LmxlYWtSZWYoKTsKIH0KIAogdm9pZCBKU1Nj
cmlwdFJldGFpbihKU1NjcmlwdFJlZiBzY3JpcHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U1ZhbHVlUmVmLmNwcAppbmRleCAwZDNiZWYwMjE5ZGJjZjFjMDc1NjViYTY0Y2YzZmUwYzYxNmE3
YjViLi40Mjg0MzUwZmE3MTVjNjVjMjI3MDcyY2ZiZTg2OWMzNzdiM2MzOWFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAKQEAgLTQwMSwxMCArNDAxLDEwIEBAIEpT
U3RyaW5nUmVmIEpTVmFsdWVUb1N0cmluZ0NvcHkoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJl
ZiB2YWx1ZSwgSlNWYWx1ZVJlZioKIAogICAgIEpTVmFsdWUganNWYWx1ZSA9IHRvSlMoZXhlYywg
dmFsdWUpOwogICAgIAotICAgIFJlZlB0cjxPcGFxdWVKU1N0cmluZz4gc3RyaW5nUmVmKE9wYXF1
ZUpTU3RyaW5nOjpjcmVhdGUoanNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsK
KyAgICBhdXRvIHN0cmluZ1JlZihPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKGpzVmFsdWUudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CiAgICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVk
KGV4ZWMsIGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKICAgICAgICAg
c3RyaW5nUmVmID0gbnVsbHB0cjsKLSAgICByZXR1cm4gc3RyaW5nUmVmLnJlbGVhc2UoKS5sZWFr
UmVmKCk7CisgICAgcmV0dXJuIHN0cmluZ1JlZi5sZWFrUmVmKCk7CiB9CiAKIEpTT2JqZWN0UmVm
IEpTVmFsdWVUb09iamVjdChKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1Zh
bHVlUmVmKiBleGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL1N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvU3RhdGljUHJvcGVydHlBbmFseXplci5oCmluZGV4IGU2M2ZlZjg2YTEw
N2M4ZTQ4MDhmYmIwMDAwZmQzZWQ1N2E4MzhhOGUuLjFlYzEyOWU4OTg1YzdhNjBlOWFhYmNlOGM3
NTFjYWFhNTViN2Y2MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvU3RhdGljUHJvcGVydHlBbmFseXplci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvU3RhdGljUHJvcGVydHlBbmFseXplci5oCkBAIC03Miw3ICs3Miw3IEBA
IGlubGluZSB2b2lkIFN0YXRpY1Byb3BlcnR5QW5hbHl6ZXI6Om5ld09iamVjdChpbnQgZHN0LCB1
bnNpZ25lZCBvZmZzZXRPZklubGluZUNhCiAgICAgQW5hbHlzaXNNYXA6OkFkZFJlc3VsdCBhZGRS
ZXN1bHQgPSBtX2FuYWx5c2VzLmFkZChkc3QsIGFuYWx5c2lzKTsKICAgICBpZiAoIWFkZFJlc3Vs
dC5pc05ld0VudHJ5KSB7CiAgICAgICAgIGtpbGwoYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5n
ZXQoKSk7Ci0gICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBhbmFseXNpcy5yZWxl
YXNlKCk7CisgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBXVEZNb3ZlKGFuYWx5
c2lzKTsKICAgICB9CiB9CiAKQEAgLTk1LDcgKzk1LDcgQEAgaW5saW5lIHZvaWQgU3RhdGljUHJv
cGVydHlBbmFseXplcjo6bW92KGludCBkc3QsIGludCBzcmMpCiAgICAgQW5hbHlzaXNNYXA6OkFk
ZFJlc3VsdCBhZGRSZXN1bHQgPSBtX2FuYWx5c2VzLmFkZChkc3QsIGFuYWx5c2lzKTsKICAgICBp
ZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgIGtpbGwoYWRkUmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZS5nZXQoKSk7Ci0gICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBh
bmFseXNpcy5yZWxlYXNlKCk7CisgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBX
VEZNb3ZlKGFuYWx5c2lzKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCmluZGV4IGE4YzU1N2M3NDczMWYy
YjZhMzMzMTc1MTYwY2EzMzQ4ZDIxNTIyYmIuLmZiODYzNjhhMzk0OGI2ZjhlMzVhMWVkNDZiNTM4
MzFhYzNiMWVkZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlckNhbGxGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2Vy
L0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcApAQCAtMjc4LDcgKzI3OCw3IEBAIHZvaWQgRGVidWdnZXJD
YWxsRnJhbWU6OmludmFsaWRhdGUoKQogICAgICAgICAgICAgZnJhbWUtPm1fc2NvcGUtPmludmFs
aWRhdGVDaGFpbigpOwogICAgICAgICAgICAgZnJhbWUtPm1fc2NvcGUuY2xlYXIoKTsKICAgICAg
ICAgfQotICAgICAgICBmcmFtZSA9IGZyYW1lLT5tX2NhbGxlci5yZWxlYXNlKCk7CisgICAgICAg
IGZyYW1lID0gV1RGTW92ZShmcmFtZS0+bV9jYWxsZXIpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAppbmRleCAxN2M2YTBiODUyYTIy
MWVlYTY4ODMxZTYwZDMzM2U5MTZiOTg5YjI0Li45MDA2MzA4YTQzMTY3ZTIxNjAzMjkyZmYxOGY1
NDk1ODcxMDllOGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBp
bGVyLmNwcApAQCAtMzgxLDcgKzM4MSw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQog
ICAgIGRpc2Fzc2VtYmxlKCpsaW5rQnVmZmVyKTsKICAgICAKICAgICBtX2dyYXBoLm1fcGxhbi5m
aW5hbGl6ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEpJVEZpbmFsaXplcj4oCi0gICAgICAgIG1fZ3Jh
cGgubV9wbGFuLCBtX2ppdENvZGUucmVsZWFzZSgpLCBXVEZNb3ZlKGxpbmtCdWZmZXIpKTsKKyAg
ICAgICAgbV9ncmFwaC5tX3BsYW4sIFdURk1vdmUobV9qaXRDb2RlKSwgV1RGTW92ZShsaW5rQnVm
ZmVyKSk7CiB9CiAKIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCkBAIC00Nzgs
NyArNDc4LDcgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKICAgICBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIgd2l0aEFyaXR5Q2hlY2sgPSBsaW5rQnVmZmVyLT5sb2NhdGlvbk9m
KG1fYXJpdHlDaGVjayk7CiAKICAgICBtX2dyYXBoLm1fcGxhbi5maW5hbGl6ZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEpJVEZpbmFsaXplcj4oCi0gICAgICAgIG1fZ3JhcGgubV9wbGFuLCBtX2ppdENv
ZGUucmVsZWFzZSgpLCBXVEZNb3ZlKGxpbmtCdWZmZXIpLCB3aXRoQXJpdHlDaGVjayk7CisgICAg
ICAgIG1fZ3JhcGgubV9wbGFuLCBXVEZNb3ZlKG1faml0Q29kZSksIFdURk1vdmUobGlua0J1ZmZl
ciksIHdpdGhBcml0eUNoZWNrKTsKIH0KIAogdm9pZCBKSVRDb21waWxlcjo6ZGlzYXNzZW1ibGUo
TGlua0J1ZmZlciYgbGlua0J1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcAppbmRleCBjNWMxMTYzNGJmNjI4MTUyNDUzNzNm
MzBjNjE0NWYyZmEzOTFjMjI1Li41Njk0OGZhMzEzZjJlNmM4ZTA5ZmFlNGQ3NWNmOTkyOTQ2OGY4
MTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clZhbHVlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JWYWx1ZXMuY3BwCkBAIC00NTksNyArNDU5LDcgQEAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBi
dWlsZFZhbHVlKGNvbnN0IFVDaGFyKiBzdGFydCwgY29uc3QgVUNoYXIqIGVuZCwgY29uc3QgVUMK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgICp2YWx1ZVRva2VuRW5kID0gdG9r
ZW5FbmQ7Ci0gICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAogaW5saW5lIGJvb2wgZXNjYXBlQ2hhcihVQ2hhciBjLCBTdHJpbmdCdWlsZGVyJiBkc3Qp
CkBAIC01NTEsMTEgKzU1MSwxMSBAQCBib29sIEluc3BlY3RvclZhbHVlOjpwYXJzZUpTT04oY29u
c3QgU3RyaW5nJiBqc29uSW5wdXQsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4mCiAgICAgY29uc3Qg
VUNoYXIqIHN0YXJ0ID0gY2hhcmFjdGVyczsKICAgICBjb25zdCBVQ2hhciogZW5kID0gc3RhcnQg
KyBqc29uSW5wdXQubGVuZ3RoKCk7CiAgICAgY29uc3QgVUNoYXIqIHRva2VuRW5kOwotICAgIFJl
ZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcmVzdWx0ID0gYnVpbGRWYWx1ZShzdGFydCwgZW5kLCAmdG9r
ZW5FbmQsIDApOworICAgIGF1dG8gcmVzdWx0ID0gYnVpbGRWYWx1ZShzdGFydCwgZW5kLCAmdG9r
ZW5FbmQsIDApOwogICAgIGlmICghcmVzdWx0IHx8IHRva2VuRW5kICE9IGVuZCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgb3V0cHV0ID0gcmVzdWx0LnJlbGVhc2UoKTsKKyAgICBvdXRw
dXQgPSBXVEZNb3ZlKHJlc3VsdCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50
LmNwcAppbmRleCAzMTJlNWQ5YjRiMWNmODllNzc0MGZhZDY2NTI3MjEzZDBiZTNlNDFmLi5mNjRi
YWYzZDMwNzc3YmY3OTZmMzU3NGFmYjRkODg4MWFiYWUwNTFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuY3Bw
CkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBJbnNwZWN0b3JBZ2VudDo6YWN0aXZhdGVFeHRyYURv
bWFpbihjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gZG9tYWluTmFtZXMg
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICBhdXRv
IGRvbWFpbk5hbWVzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRl
KCk7CiAgICAgZG9tYWluTmFtZXMtPmFkZEl0ZW0oZG9tYWluTmFtZSk7CiAgICAgbV9mcm9udGVu
ZERpc3BhdGNoZXItPmFjdGl2YXRlRXh0cmFEb21haW5zKFdURk1vdmUoZG9tYWluTmFtZXMpKTsK
IH0KQEAgLTEzMSwxNCArMTMxLDE0IEBAIHZvaWQgSW5zcGVjdG9yQWdlbnQ6OmFjdGl2YXRlRXh0
cmFEb21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBleHRyYURvbWFpbnMpCiAgICAgaWYgKGV4
dHJhRG9tYWlucy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiBkb21haW5OYW1lcyA9IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOworICAgIGF1dG8gZG9tYWluTmFtZXMg
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKICAgICBmb3Ig
KGF1dG8gZG9tYWluTmFtZSA6IGV4dHJhRG9tYWlucykKICAgICAgICAgZG9tYWluTmFtZXMtPmFk
ZEl0ZW0oZG9tYWluTmFtZSk7CiAKICAgICBpZiAoIW1fZW5hYmxlZCkKLSAgICAgICAgbV9wZW5k
aW5nRXh0cmFEb21haW5zRGF0YSA9IGRvbWFpbk5hbWVzLnJlbGVhc2UoKTsKKyAgICAgICAgbV9w
ZW5kaW5nRXh0cmFEb21haW5zRGF0YSA9IFdURk1vdmUoZG9tYWluTmFtZXMpOwogICAgIGVsc2UK
LSAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmFjdGl2YXRlRXh0cmFEb21haW5zKGRvbWFp
bk5hbWVzLnJlbGVhc2UoKSk7CisgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5hY3RpdmF0
ZUV4dHJhRG9tYWlucyhXVEZNb3ZlKGRvbWFpbk5hbWVzKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCA3M2NmYjZmMzczYjJmNWQ4ZWQxYTNiMDM2
NGFmMGE2OGM1NTYxZDc3Li4xMzRlMjI0Zjc0MGE2NTAyYmYxNzIwZTQ5NjhmNTEzZjg5YjUwOWE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtNzUwLDcgKzc1MCw3IEBA
IHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvblByb2JlKEpTQzo6
RXhlY1N0YXRlJiBzY3JpcHRTdGF0ZSwKICAgICAgICAgLnNldEJhdGNoSWQoYmF0Y2hJZCkKICAg
ICAgICAgLnNldFNhbXBsZUlkKHNhbXBsZUlkKQogICAgICAgICAuc2V0VGltZXN0YW1wKG1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLmluc3BlY3RvckVudmlyb25tZW50KCkuZXhlY3V0aW9uU3RvcHdh
dGNoKCktPmVsYXBzZWRUaW1lKCkpCi0gICAgICAgIC5zZXRQYXlsb2FkKHBheWxvYWQucmVsZWFz
ZSgpKQorICAgICAgICAuc2V0UGF5bG9hZChXVEZNb3ZlKHBheWxvYWQpKQogICAgICAgICAucmVs
ZWFzZSgpOwogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5kaWRTYW1wbGVQcm9iZShXVEZNb3Zl
KHJlc3VsdCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tCmluZGV4IDcyYmZjNmU4NzgwZjc5OTAwOGY4
MzJiZWE3Y2EzZWQ3OWVhZWEyYWUuLmYzYWVlMWM5NzQxMTE0YWJjZjhhYjBkNjZkODdhY2JmOWVh
MWNjNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L1JlbW90ZUluc3BlY3Rvci5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IubW0KQEAgLTYyOSw3ICs2MjksNyBAQCB2b2lkIFJlbW90
ZUluc3BlY3Rvcjo6cmVjZWl2ZWRTZXR1cE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykK
IAogICAgIC8vIEF0dGVtcHQgdG8gY3JlYXRlIGEgY29ubmVjdGlvbi4gVGhpcyBtYXkgZmFpbCBp
ZiB0aGUgcGFnZSBhbHJlYWR5IGhhcyBhbiBpbnNwZWN0b3Igb3IgaWYgaXQgZGlzYWxsb3dzIGlu
c3BlY3Rpb24uCiAgICAgUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0KiB0YXJnZXQgPSBmaW5kUmVz
dWx0LT52YWx1ZTsKLSAgICBSZWZQdHI8UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0PiBjb25uZWN0
aW9uVG9UYXJnZXQgPSBhZG9wdFJlZihuZXcgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0KHRhcmdl
dCwgY29ubmVjdGlvbklkZW50aWZpZXIsIHNlbmRlcikpOworICAgIGF1dG8gY29ubmVjdGlvblRv
VGFyZ2V0ID0gYWRvcHRSZWYoKm5ldyBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQodGFyZ2V0LCBj
b25uZWN0aW9uSWRlbnRpZmllciwgc2VuZGVyKSk7CiAKICAgICBpZiAoaXM8UmVtb3RlSW5zcGVj
dGlvblRhcmdldD4odGFyZ2V0KSkgewogICAgICAgICBib29sIGlzQXV0b21hdGljSW5zcGVjdGlv
biA9IG1fYXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZVRhcmdldElkZW50aWZpZXIgPT0gdGFy
Z2V0LT50YXJnZXRJZGVudGlmaWVyKCk7CkBAIC02MzksMTQgKzYzOSwxNCBAQCB2b2lkIFJlbW90
ZUluc3BlY3Rvcjo6cmVjZWl2ZWRTZXR1cE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykK
ICAgICAgICAgICAgIGNvbm5lY3Rpb25Ub1RhcmdldC0+Y2xvc2UoKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQotICAgICAgICBtX3RhcmdldENvbm5lY3Rpb25NYXAuc2V0KHRhcmdl
dElkZW50aWZpZXIsIGNvbm5lY3Rpb25Ub1RhcmdldC5yZWxlYXNlKCkpOworICAgICAgICBtX3Rh
cmdldENvbm5lY3Rpb25NYXAuc2V0KHRhcmdldElkZW50aWZpZXIsIFdURk1vdmUoY29ubmVjdGlv
blRvVGFyZ2V0KSk7CiAgICAgICAgIHVwZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbigpOwogICAg
IH0gZWxzZSBpZiAoaXM8UmVtb3RlQXV0b21hdGlvblRhcmdldD4odGFyZ2V0KSkgewogICAgICAg
ICBpZiAoIWNvbm5lY3Rpb25Ub1RhcmdldC0+c2V0dXAoKSkgewogICAgICAgICAgICAgY29ubmVj
dGlvblRvVGFyZ2V0LT5jbG9zZSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0g
ICAgICAgIG1fdGFyZ2V0Q29ubmVjdGlvbk1hcC5zZXQodGFyZ2V0SWRlbnRpZmllciwgY29ubmVj
dGlvblRvVGFyZ2V0LnJlbGVhc2UoKSk7CisgICAgICAgIG1fdGFyZ2V0Q29ubmVjdGlvbk1hcC5z
ZXQodGFyZ2V0SWRlbnRpZmllciwgV1RGTW92ZShjb25uZWN0aW9uVG9UYXJnZXQpKTsKICAgICAg
ICAgdXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7CiAgICAgfSBlbHNlCiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5k
ZXggODI5ODQ1MzNhNjZiNzVmN2E3YWIzZjk1OWFiMDAyNTcxNGNhMzI2NS4uMDA4OGM0ZjJiMmRk
YmY2MGI4MWFkNzA4YjIyMTgzNjc2Y2I0YzkwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Jl
cGF0Y2guY3BwCkBAIC05NDMsNyArOTQzLDcgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKAog
ICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKGRvbmUsIGNhbGxMaW5rSW5mby5ob3RQYXRoT3RoZXIo
KS5sYWJlbEF0T2Zmc2V0KDApKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKHNsb3csIENvZGVMb2Nh
dGlvbkxhYmVsKHZtLT5nZXRDVElTdHViKGxpbmtQb2x5bW9ycGhpY0NhbGxUaHVua0dlbmVyYXRv
cikuY29kZSgpKSk7CiAgICAgCi0gICAgUmVmUHRyPFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5l
PiBzdHViUm91dGluZSA9IGFkb3B0UmVmKG5ldyBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSgK
KyAgICBhdXRvIHN0dWJSb3V0aW5lID0gYWRvcHRSZWYoKm5ldyBQb2x5bW9ycGhpY0NhbGxTdHVi
Um91dGluZSgKICAgICAgICAgRklOQUxJWkVfQ09ERV9GT1IoCiAgICAgICAgICAgICBjYWxsZXJD
b2RlQmxvY2ssIHBhdGNoQnVmZmVyLAogICAgICAgICAgICAgKCJQb2x5bW9ycGhpYyBjYWxsIHN0
dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAsIHRhcmdldHMgJXMiLApAQCAtOTYyLDcgKzk2Miw3
IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAKICAgICAvLyBJZiB0aGVyZSBoYWQg
YmVlbiBhIHByZXZpb3VzIHN0dWIgcm91dGluZSwgdGhhdCBvbmUgd2lsbCBkaWUgYXMgc29vbiBh
cyB0aGUgR0MgcnVucyBhbmQgc2VlcwogICAgIC8vIHRoYXQgaXQncyBubyBsb25nZXIgb24gc3Rh
Y2suCi0gICAgY2FsbExpbmtJbmZvLnNldFN0dWIoc3R1YlJvdXRpbmUucmVsZWFzZSgpKTsKKyAg
ICBjYWxsTGlua0luZm8uc2V0U3R1YihXVEZNb3ZlKHN0dWJSb3V0aW5lKSk7CiAgICAgCiAgICAg
Ly8gVGhlIGNhbGwgbGluayBpbmZvIG5vIGxvbmdlciBoYXMgYSBjYWxsIGNhY2hlIGFwYXJ0IGZy
b20gdGhlIGp1bXAgdG8gdGhlIHBvbHltb3JwaGljIGNhbGwKICAgICAvLyBzdHViLgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW5saW5lcy5oCmluZGV4IGE4NzM3ZWVlMTgwNmNhOGQzODY0MDkxMTZmMmQyZGQzNjYx
ZTM2ODguLjE0MjlkMDU0Y2I0ZWQxMWM2MTVmNjk2ZDZjOTY2NGM0MjJhMjY4MjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lu
bGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRB
cnJheVZpZXdJbmxpbmVzLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgUmVmUHRyPEdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUo
dW4KICAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobGVuZ3RoLCBzaXpl
b2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gY3JlYXRlKGJ1ZmZlci5yZWxlYXNlKCksIDAsIGxl
bmd0aCk7CisgICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGxlbmd0aCk7CiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CkBAIC02Nyw3ICs2Nyw3IEBAIFJlZlB0cjxH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6Y3JlYXRlKAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCi0gICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBHZW5lcmljVHlwZWRBcnJheVZpZXcoYnVmZmVyLnJlbGVhc2Uo
KSwgYnl0ZU9mZnNldCwgbGVuZ3RoKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHZW5lcmlj
VHlwZWRBcnJheVZpZXcoV1RGTW92ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpKTsKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KQEAgLTc4LDcgKzc4LDcgQEAgR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0
aCkKICAgICAgICAgQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBz
aXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpOwogICAgIGlmICghYnVmZmVyKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gY3JlYXRlKGJ1ZmZlci5yZWxlYXNlKCksIDAs
IGxlbmd0aCk7CisgICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGxlbmd0aCk7
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmNwcAppbmRl
eCAyYmUwM2Y4OGI5YWU1ODU0YTRkMDQ0Zjk1MWUwMDJhOWZkMzg4ODU5Li42YmM4ZTQzNzljNTll
ZmMwZmM1NDc1YjllNjU4NGUxOGNkZGU5MjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHAKQEAgLTk5
LDcgKzk5LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0
QXJyYXlCdWZmZXIoRXhlY1N0YXRlKiBleGVjKQogICAgIFN0cnVjdHVyZSogYXJyYXlCdWZmZXJT
dHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVj
LCBleGVjLT5uZXdUYXJnZXQoKSwgY29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLT5hcnJheUJ1
ZmZlclN0cnVjdHVyZSgpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKLSAgICBKU0FycmF5QnVmZmVyKiBy
ZXN1bHQgPSBKU0FycmF5QnVmZmVyOjpjcmVhdGUoZXhlYy0+dm0oKSwgYXJyYXlCdWZmZXJTdHJ1
Y3R1cmUsIGJ1ZmZlci5yZWxlYXNlKCkpOworICAgIEpTQXJyYXlCdWZmZXIqIHJlc3VsdCA9IEpT
QXJyYXlCdWZmZXI6OmNyZWF0ZShleGVjLT52bSgpLCBhcnJheUJ1ZmZlclN0cnVjdHVyZSwgV1RG
TW92ZShidWZmZXIpKTsKICAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5h
bWVBcnJheS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJy
YXkuaAppbmRleCBhODA0YjllZGE3Yzg3YWJhNDljYjU2NDEzODFhMzEyZWJlZGFmM2IzLi4wNGMx
ZWQxM2FiMTk5Yzk3YWMwMTQ2MGUxNTVkNzAzODE0NzU1MDBlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmgKQEAgLTc2LDcgKzc2LDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBzZXREYXRhKFBhc3NSZWZQdHI8UHJvcGVydHlOYW1lQXJy
YXlEYXRhPiBkYXRhKSB7IG1fZGF0YSA9IGRhdGE7IH0KICAgICBQcm9wZXJ0eU5hbWVBcnJheURh
dGEqIGRhdGEoKSB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KLSAgICBQYXNzUmVmUHRyPFByb3Bl
cnR5TmFtZUFycmF5RGF0YT4gcmVsZWFzZURhdGEoKSB7IHJldHVybiBtX2RhdGEucmVsZWFzZSgp
OyB9CisgICAgUGFzc1JlZlB0cjxQcm9wZXJ0eU5hbWVBcnJheURhdGE+IHJlbGVhc2VEYXRhKCkg
eyByZXR1cm4gV1RGTW92ZShtX2RhdGEpOyB9CiAKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZXNl
IGZ1bmN0aW9ucy4KICAgICBib29sIGNhbkFkZEtub3duVW5pcXVlRm9yU3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKS5pc0VtcHR5KCk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IDZkN2ZiODE3
Yjk1Zjk3YjRmYzQ1ZDA3MmEyOWRkOTEyMTA3MjlhOWMuLjI3ZmZhNTE3ODA3NjhjNmM0MTczM2Ri
NjA4NTdmODcyZDdlNmU4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmNwcApAQCAtMTE5NywxNiArMTE5NywxNiBAQCBQYXNzUmVmUHRyPFN0cnVjdHVyZVNo
YXBlPiBTdHJ1Y3R1cmU6OnRvU3RydWN0dXJlU2hhcGUoSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAg
Y3VyU2hhcGUtPm1hcmtBc0ZpbmFsKCk7CiAKICAgICAgICAgaWYgKGN1clN0cnVjdHVyZS0+c3Rv
cmVkUHJvdG90eXBlU3RydWN0dXJlKCkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmVT
aGFwZT4gbmV3U2hhcGUgPSBTdHJ1Y3R1cmVTaGFwZTo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICBj
dXJTaGFwZS0+c2V0UHJvdG8obmV3U2hhcGUpOwotICAgICAgICAgICAgY3VyU2hhcGUgPSBuZXdT
aGFwZS5yZWxlYXNlKCk7CisgICAgICAgICAgICBhdXRvIG5ld1NoYXBlID0gU3RydWN0dXJlU2hh
cGU6OmNyZWF0ZSgpOworICAgICAgICAgICAgY3VyU2hhcGUtPnNldFByb3RvKG5ld1NoYXBlLnB0
cigpKTsKKyAgICAgICAgICAgIGN1clNoYXBlID0gV1RGTW92ZShuZXdTaGFwZSk7CiAgICAgICAg
ICAgICBjdXJWYWx1ZSA9IGN1clN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlKCk7CiAgICAgICAg
IH0KIAogICAgICAgICBjdXJTdHJ1Y3R1cmUgPSBjdXJTdHJ1Y3R1cmUtPnN0b3JlZFByb3RvdHlw
ZVN0cnVjdHVyZSgpOwogICAgIH0KICAgICAKLSAgICByZXR1cm4gYmFzZVNoYXBlLnJlbGVhc2Uo
KTsKKyAgICByZXR1cm4gV1RGTW92ZShiYXNlU2hhcGUpOwogfQogCiBib29sIFN0cnVjdHVyZTo6
Y2FuVXNlRm9yQWxsb2NhdGlvbnNPZihTdHJ1Y3R1cmUqIG90aGVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UeXBlU2V0LmNwcAppbmRleCAwNjdmMTI2YjYwZmFlOTg1MmZmZjVhNjlh
NDQ1NDQ2ODkzZWFkMGRiLi41OGNlMmMzZDE3M2E4ZTI2YjgyYzY2YWNhNTU2NjllZDU5MDJjODA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcApAQCAtNTQ4LDcg
KzU0OCw3IEBAIFBhc3NSZWZQdHI8U3RydWN0dXJlU2hhcGU+IFN0cnVjdHVyZVNoYXBlOjptZXJn
ZShjb25zdCBQYXNzUmVmUHRyPFN0cnVjdHVyZVNoYXBlCiAgICAgUmVmUHRyPFN0cnVjdHVyZVNo
YXBlPiBiID0gcHJwQjsKICAgICBBU1NFUlQoYS0+aGFzU2FtZVByb3RvdHlwZUNoYWluKGIpKTsK
IAotICAgIFJlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gbWVyZ2VkID0gU3RydWN0dXJlU2hhcGU6OmNy
ZWF0ZSgpOworICAgIGF1dG8gbWVyZ2VkID0gU3RydWN0dXJlU2hhcGU6OmNyZWF0ZSgpOwogICAg
IGZvciAoYXV0byBmaWVsZCA6IGEtPm1fZmllbGRzKSB7CiAgICAgICAgIGlmIChiLT5tX2ZpZWxk
cy5jb250YWlucyhmaWVsZCkpCiAgICAgICAgICAgICBtZXJnZWQtPm1fZmllbGRzLmFkZChmaWVs
ZCk7CkBAIC01NzgsNyArNTc4LDcgQEAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gU3RydWN0
dXJlU2hhcGU6Om1lcmdlKGNvbnN0IFBhc3NSZWZQdHI8U3RydWN0dXJlU2hhcGUKIAogICAgIG1l
cmdlZC0+bWFya0FzRmluYWwoKTsKIAotICAgIHJldHVybiBtZXJnZWQucmVsZWFzZSgpOworICAg
IHJldHVybiBXVEZNb3ZlKG1lcmdlZCk7CiB9CiAKIHZvaWQgU3RydWN0dXJlU2hhcGU6OmVudGVy
RGljdGlvbmFyeU1vZGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xz
L0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5j
dGlvbk92ZXJyaWRlcy5jcHAKaW5kZXggMmUzMjhjMTY3NGIyNzE3NmI3ODFkMTE4NjRhYjliMDEz
OTBkMDAzMy4uOWFlM2E4N2QyYzgyZDBlODllOGZkYjczNDlkNjc2Zjg2MDY3NGJiMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwCkBA
IC0xMTYsNyArMTE2LDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZU92ZXJyaWRlSW5mbyhjb25z
dCBTb3VyY2VDb2RlJiBvcmlnQ29kZSwgY29uc3QgU3RyaW5nJiBuZXcKICAgICBuZXdQcm92aWRl
clN0ci5hcHBlbmQob3JpZ0hlYWRlcik7CiAgICAgbmV3UHJvdmlkZXJTdHIuYXBwZW5kKG5ld0Jv
ZHkpOwogCi0gICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBuZXdQcm92aWRlciA9IFN0cmluZ1Nv
dXJjZVByb3ZpZGVyOjpjcmVhdGUobmV3UHJvdmlkZXJTdHIsICI8b3ZlcnJpZGRlbj4iKTsKKyAg
ICBhdXRvIG5ld1Byb3ZpZGVyID0gU3RyaW5nU291cmNlUHJvdmlkZXI6OmNyZWF0ZShuZXdQcm92
aWRlclN0ciwgIjxvdmVycmlkZGVuPiIpOwogCiAgICAgaW5mby5maXJzdExpbmUgPSAxOwogICAg
IGluZm8ubGluZUNvdW50ID0gMTsgLy8gRmFraW5nIGl0LiBUaGlzIGRvZXNuJ3QgcmVhbGx5IG1h
dHRlciBmb3Igbm93LgpAQCAtMTI3LDcgKzEyNyw3IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVP
dmVycmlkZUluZm8oY29uc3QgU291cmNlQ29kZSYgb3JpZ0NvZGUsIGNvbnN0IFN0cmluZyYgbmV3
CiAgICAgaW5mby50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0ID0gbmV3UHJvdmlkZXJTdHIubGVuZ3Ro
KCkgLSAxOwogCiAgICAgaW5mby5zb3VyY2VDb2RlID0KLSAgICAgICAgU291cmNlQ29kZShuZXdQ
cm92aWRlci5yZWxlYXNlKCksIGluZm8udHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0LCBpbmZvLnR5
cGVQcm9maWxpbmdFbmRPZmZzZXQgKyAxLCAxLCAxKTsKKyAgICAgICAgU291cmNlQ29kZShXVEZN
b3ZlKG5ld1Byb3ZpZGVyKSwgaW5mby50eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQsIGluZm8udHlw
ZVByb2ZpbGluZ0VuZE9mZnNldCArIDEsIDEsIDEpOwogfQogICAgIAogYm9vbCBGdW5jdGlvbk92
ZXJyaWRlczo6aW5pdGlhbGl6ZU92ZXJyaWRlRm9yKGNvbnN0IFNvdXJjZUNvZGUmIG9yaWdDb2Rl
LCBGdW5jdGlvbk92ZXJyaWRlczo6T3ZlcnJpZGVJbmZvJiByZXN1bHQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9QYXNzUmVmUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9QYXNzUmVmUHRyLmgK
aW5kZXggMDg5MTkyYjBiYzI3NGQ4ZmMwYTQ4MWNiZmE4OWI3NmUxMWY5ZTc3My4uZTZlMjc4OTg1
MjY4OTZhOWY1YmQ5NzE0NjUzY2I0ZWZjM2FlMWY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvUGFzc1JlZlB0ci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1Bhc3NSZWZQdHIuaApAQCAtNTUs
NiArNTUsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAgICAgICBBTFdBWVNfSU5MSU5FIH5QYXNz
UmVmUHRyKCkgeyBkZXJlZklmTm90TnVsbChzdGQ6OmV4Y2hhbmdlKG1fcHRyLCBudWxscHRyKSk7
IH0KIAorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBQYXNzUmVmUHRyKGNvbnN0IFJlZjxV
PiYpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBQYXNzUmVmUHRyKGNvbnN0IFJlZlB0
cjxVPiYpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBQYXNzUmVmUHRyKFJlZjxVPiYm
IHJlZmVyZW5jZSkgOiBtX3B0cigmcmVmZXJlbmNlLmxlYWtSZWYoKSkgeyB9CiAgICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFU+IFBhc3NSZWZQdHIoUmVmUHRyPFU+JiYgcmVmZXJlbmNlKSA6IG1f
cHRyKHJlZmVyZW5jZS5sZWFrUmVmKCkpIHsgfQpAQCAtODMsNiArODQsMTIgQEAgbmFtZXNwYWNl
IFdURiB7CiAgICAgICAgIG11dGFibGUgVCogbV9wdHI7CiAgICAgfTsKICAgICAKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgUGFzc1JlZlB0cjxU
Pjo6UGFzc1JlZlB0cihjb25zdCBSZWY8VT4mIG8pCisgICAgICAgIDogbV9wdHIoby5wdHIoKSkK
KyAgICB7CisgICAgICAgIG1fcHRyLT5yZWYoKTsKKyAgICB9CisKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgUGFzc1JlZlB0cjxUPjo6UGFzc1Jl
ZlB0cihjb25zdCBSZWZQdHI8VT4mIG8pCiAgICAgICAgIDogbV9wdHIoby5nZXQoKSkKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1
ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZl
ci5jcHAKaW5kZXggZWI1MjQ3YTlmMDdkOWJiZDhjODZiOGY1NjlmODQ2NDlmYTU2YzE4YS4uZGIz
Yjk1NDI4ZThlN2ZmMTgxYzVlZTBlM2UyM2UyNDE2NjQyN2RiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcApAQCAtNjYzLDcg
KzY2Myw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHJlbW92ZVNhbXBsZXNGcm9t
VHJhY2tCdWZmZXIoY29uc3QgRGVjb2RlT3JkZXJTYW1wCiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZl
cik7CiAjZW5kaWYKIAotICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiBlcmFzZWRSYW5nZXMgPSBUaW1l
UmFuZ2VzOjpjcmVhdGUoKTsKKyAgICBhdXRvIGVyYXNlZFJhbmdlcyA9IFRpbWVSYW5nZXM6OmNy
ZWF0ZSgpOwogICAgIE1lZGlhVGltZSBtaWNyb3NlY29uZCgxLCAxMDAwMDAwKTsKICAgICBmb3Ig
KGF1dG8gc2FtcGxlSXQgOiBzYW1wbGVzKSB7CiAgICAgICAgIGNvbnN0IERlY29kZU9yZGVyU2Ft
cGxlTWFwOjpLZXlUeXBlJiBkZWNvZGVLZXkgPSBzYW1wbGVJdC5maXJzdDsKQEAgLTY5OCw3ICs2
OTgsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiByZW1vdmVTYW1wbGVzRnJvbVRy
YWNrQnVmZmVyKGNvbnN0IERlY29kZU9yZGVyU2FtcAogICAgICAgICBMT0coTWVkaWFTb3VyY2Us
ICJTb3VyY2VCdWZmZXI6OiVzKCVwKSByZW1vdmVkICV6dSBieXRlcywgc3RhcnQoJWxmKSwgZW5k
KCVsZikiLCBsb2dQcmVmaXgsIGJ1ZmZlciwgYnl0ZXNSZW1vdmVkLCBlYXJsaWVzdFNhbXBsZSwg
bGF0ZXN0U2FtcGxlKTsKICNlbmRpZgogCi0gICAgcmV0dXJuIGVyYXNlZFJhbmdlcy5yZWxlYXNl
KCk7CisgICAgcmV0dXJuIFdURk1vdmUoZXJhc2VkUmFuZ2VzKTsKIH0KIAogdm9pZCBTb3VyY2VC
dWZmZXI6OnJlbW92ZUNvZGVkRnJhbWVzKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1l
ZGlhVGltZSYgZW5kKQpAQCAtMTc1MSw3ICsxNzUxLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnBy
b3ZpZGVNZWRpYURhdGEoVHJhY2tCdWZmZXImIHRyYWNrQnVmZmVyLCBBdG9taWNTdHJpbmcgdHJh
Y2sKICAgICAgICAgLy8gRklYTUUocmRhcjovL3Byb2JsZW0vMjA2MzU5NjkpOiBSZW1vdmUgdGhp
cyByZS1lbnRyYW5jeSBwcm90ZWN0aW9uIHdoZW4gdGhlIGFmb3JlbWVudGlvbmVkIHJhZGFyIGlz
IHJlc29sdmVkOyBwcm90ZWN0aW5nCiAgICAgICAgIC8vIGFnYWluc3QgcmUtZW50cmFuY3kgaW50
cm9kdWNlcyBhIHNtYWxsIGluZWZmaWNlbmN5IHdoZW4gcmVtb3ZpbmcgYXBwZW5kZWQgc2FtcGxl
cyBmcm9tIHRoZSBkZWNvZGUgcXVldWUgb25lIGF0IGEgdGltZQogICAgICAgICAvLyByYXRoZXIg
dGhhbiB3aGVuIGFsbCBzYW1wbGVzIGhhdmUgYmVlbiBlbnF1ZXVlZC4KLSAgICAgICAgUmVmUHRy
PE1lZGlhU2FtcGxlPiBzYW1wbGUgPSB0cmFja0J1ZmZlci5kZWNvZGVRdWV1ZS5iZWdpbigpLT5z
ZWNvbmQ7CisgICAgICAgIGF1dG8gc2FtcGxlID0gdHJhY2tCdWZmZXIuZGVjb2RlUXVldWUuYmVn
aW4oKS0+c2Vjb25kOwogICAgICAgICB0cmFja0J1ZmZlci5kZWNvZGVRdWV1ZS5lcmFzZSh0cmFj
a0J1ZmZlci5kZWNvZGVRdWV1ZS5iZWdpbigpKTsKIAogICAgICAgICAvLyBEbyBub3QgZW5xdWV1
ZSBzYW1wbGVzIHNwYW5uaW5nIGEgc2lnbmlmaWNhbnQgdW5idWZmZXJlZCBnYXAuCkBAIC0xNzY3
LDcgKzE3NjcsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6cHJvdmlkZU1lZGlhRGF0YShUcmFja0J1
ZmZlciYgdHJhY2tCdWZmZXIsIEF0b21pY1N0cmluZyB0cmFjawogCiAgICAgICAgIHRyYWNrQnVm
ZmVyLmxhc3RFbnF1ZXVlZFByZXNlbnRhdGlvblRpbWUgPSBzYW1wbGUtPnByZXNlbnRhdGlvblRp
bWUoKTsKICAgICAgICAgdHJhY2tCdWZmZXIubGFzdEVucXVldWVkRGVjb2RlRW5kVGltZSA9IHNh
bXBsZS0+ZGVjb2RlVGltZSgpICsgc2FtcGxlLT5kdXJhdGlvbigpOwotICAgICAgICBtX3ByaXZh
dGUtPmVucXVldWVTYW1wbGUoc2FtcGxlLnJlbGVhc2UoKSwgdHJhY2tJRCk7CisgICAgICAgIG1f
cHJpdmF0ZS0+ZW5xdWV1ZVNhbXBsZShXVEZNb3ZlKHNhbXBsZSksIHRyYWNrSUQpOwogI2lmICFM
T0dfRElTQUJMRUQKICAgICAgICAgKytlbnF1ZXVlZFNhbXBsZXM7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3Qu
Y3BwCmluZGV4IDllNWE5YzI0NGVmNjNhMTdiZmE4ZDljN2NjZTVjNjEzYWVhMzlhYzYuLmI5NmI3
YTBiMzUxOTExYTg3NjlhOTUyZDI5ZmU4ZWFiMGIxZTIyODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcApAQCAt
ODAsMTUgKzgwLDE1IEBAIHZvaWQgVXNlck1lZGlhUmVxdWVzdDo6c3RhcnQoRG9jdW1lbnQqIGRv
Y3VtZW50LCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBNZWRpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50cyA9
IHBhcnNlT3B0aW9ucyhvcHRpb25zLCBBdG9taWNTdHJpbmcoImF1ZGlvIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiB2
aWRlb0NvbnN0cmFpbnRzID0gcGFyc2VPcHRpb25zKG9wdGlvbnMsIEF0b21pY1N0cmluZygidmlk
ZW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgYXV0byBhdWRp
b0NvbnN0cmFpbnRzID0gcGFyc2VPcHRpb25zKG9wdGlvbnMsIEF0b21pY1N0cmluZygiYXVkaW8i
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgYXV0byB2aWRlb0Nv
bnN0cmFpbnRzID0gcGFyc2VPcHRpb25zKG9wdGlvbnMsIEF0b21pY1N0cmluZygidmlkZW8iLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAKICAgICBpZiAoIWF1ZGlvQ29u
c3RyYWludHMgJiYgIXZpZGVvQ29uc3RyYWludHMpIHsKICAgICAgICAgZWMgPSBOT1RfU1VQUE9S
VEVEX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZjxVc2VyTWVkaWFSZXF1
ZXN0PiByZXF1ZXN0ID0gYWRvcHRSZWYoKm5ldyBVc2VyTWVkaWFSZXF1ZXN0KGRvY3VtZW50LCB1
c2VyTWVkaWEsIGF1ZGlvQ29uc3RyYWludHMucmVsZWFzZSgpLCB2aWRlb0NvbnN0cmFpbnRzLnJl
bGVhc2UoKSwgV1RGTW92ZShwcm9taXNlKSkpOworICAgIGF1dG8gcmVxdWVzdCA9IGFkb3B0UmVm
KCpuZXcgVXNlck1lZGlhUmVxdWVzdChkb2N1bWVudCwgdXNlck1lZGlhLCBXVEZNb3ZlKGF1ZGlv
Q29uc3RyYWludHMpLCBXVEZNb3ZlKHZpZGVvQ29uc3RyYWludHMpLCBXVEZNb3ZlKHByb21pc2Up
KSk7CiAgICAgcmVxdWVzdC0+c3RhcnQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAppbmRleCBkYTM4ZTFjZmY4OTE2MDUwMDlhZjc1
NWM0NzJkZDBlNDQ3YWYxNTYzLi5iNWZkZmFlZjBlYTI1YjhhZWM2ZDkyMTdkZDJjZDVkZTcyOTc2
YjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
LmNwcApAQCAtMjQ2LDcgKzI0Niw3IEBAIERhdGFiYXNlOjp+RGF0YWJhc2UoKQogICAgIGlmICgh
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSkgewogICAgICAgICAv
LyBHcmFiIGEgcG9pbnRlciB0byB0aGUgc2NyaXB0IGV4ZWN1dGlvbiBoZXJlIGJlY2F1c2Ugd2Un
cmUgcmVsZWFzaW5nIGl0IHdoZW4gd2UgcGFzcyBpdCB0bwogICAgICAgICAvLyBEZXJlZkNvbnRl
eHRUYXNrOjpjcmVhdGUuCi0gICAgICAgIFBhc3NSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dD4gcGFzc2VkQ29udGV4dCA9IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5yZWxlYXNlKCk7Cisg
ICAgICAgIFBhc3NSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gcGFzc2VkQ29udGV4dCA9
IFdURk1vdmUobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKICAgICAgICAgcGFzc2VkQ29udGV4
dC0+cG9zdFRhc2soe1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s6OkNsZWFudXBUYXNrLCBb
cGFzc2VkQ29udGV4dF0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAg
ICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgJmNvbnRleHQgPT0gcGFzc2VkQ29udGV4dCk7
CiAgICAgICAgICAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gc2NyaXB0RXhlY3V0
aW9uQ29udGV4dChwYXNzZWRDb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvU1FMQ2FsbGJhY2tXcmFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL1NRTENhbGxiYWNrV3JhcHBlci5oCmluZGV4IGNhNjY1ODEwYmE2
MGQxNmNjNzQxZTE4ZGU0NTg2Y2U4NDcwNDkyN2IuLmI2NDU0ODIwZjczNzU2MWYzMGJjYWE1MGIw
YTYyODFiMjM5ZGNmODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvU1FMQ2FsbGJhY2tXcmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9TUUxDYWxsYmFja1dyYXBwZXIuaApAQCAtNjgsOCArNjgsOCBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gbnVsbHB0cjsKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBzY3JpcHRF
eGVjdXRpb25Db250ZXh0UHRyID0gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LnJlbGVhc2UoKS5s
ZWFrUmVmKCk7Ci0gICAgICAgICAgICBjYWxsYmFjayA9IG1fY2FsbGJhY2sucmVsZWFzZSgpLmxl
YWtSZWYoKTsKKyAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRQdHIgPSBtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQubGVha1JlZigpOworICAgICAgICAgICAgY2FsbGJhY2sgPSBtX2Nh
bGxiYWNrLmxlYWtSZWYoKTsKICAgICAgICAgfQogICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250
ZXh0UHRyLT5wb3N0VGFzayh7CiAgICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrOjpDbGVhbnVwVGFzaywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93Q3VzdG9tLmNwcAppbmRleCA4ZmI0ZTk5Y2E2NTg2NjRiNGRhZWNkNTdkNjMyNDBjMmU3
MjdiMTk2Li4zMzBkNmIyODE5NGZiNmNkMjc4OTU2NjFkYTE5OWM0YTk2NjY0ZGQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC01
MzksOSArNTM5LDcgQEAgc3RhdGljIEpTVmFsdWUgaGFuZGxlUG9zdE1lc3NhZ2UoRE9NV2luZG93
JiBpbXBsLCBFeGVjU3RhdGUmIHN0YXRlKQogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkK
ICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAgICBSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBtZXNzYWdlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoJnN0YXRl
LCBzdGF0ZS5hcmd1bWVudCgwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWVzc2FnZVBvcnRzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZhcnJheUJ1ZmZlcnMpOworICAgIGF1dG8gbWVzc2FnZSA9IFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCZzdGF0ZSwgc3RhdGUuYXJndW1lbnQoMCksICZtZXNzYWdl
UG9ydHMsICZhcnJheUJ1ZmZlcnMpOwogCiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTU1MSw3ICs1NDksNyBAQCBzdGF0aWMg
SlNWYWx1ZSBoYW5kbGVQb3N0TWVzc2FnZShET01XaW5kb3cmIGltcGwsIEV4ZWNTdGF0ZSYgc3Rh
dGUpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgaW1wbC5wb3N0TWVzc2FnZShtZXNzYWdlLnJlbGVhc2UoKSwgJm1lc3NhZ2VQ
b3J0cywgdGFyZ2V0T3JpZ2luLCBjYWxsZXJET01XaW5kb3coJnN0YXRlKSwgZWMpOworICAgIGlt
cGwucG9zdE1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSwgJm1lc3NhZ2VQb3J0cywgdGFyZ2V0T3Jp
Z2luLCBjYWxsZXJET01XaW5kb3coJnN0YXRlKSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigm
c3RhdGUsIGVjKTsKIAogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3RvbS5jcHAKaW5kZXggZjQ5Nzk2NWFlNTZkYjk0
NzEyNDhmMGY5MDQ2YWY0M2I3NmI0MmRhMy4uN2E0ZTg2ZWZhNzBlOGMxZTUwYWFmZmU3OGQ2OWE1
ZDhmMzYwODQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIaXN0
b3J5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hpc3RvcnlD
dXN0b20uY3BwCkBAIC01NSw3ICs1NSw3IEBAIEpTVmFsdWUgSlNIaXN0b3J5OjpzdGF0ZShFeGVj
U3RhdGUmIHN0YXRlKSBjb25zdAogCiBKU1ZhbHVlIEpTSGlzdG9yeTo6cHVzaFN0YXRlKEV4ZWNT
dGF0ZSYgc3RhdGUpCiB7Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gaGlzdG9y
eVN0YXRlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoJnN0YXRlLCBzdGF0ZS5hcmd1
bWVudCgwKSwgMCwgMCk7CisgICAgYXV0byBoaXN0b3J5U3RhdGUgPSBTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmNyZWF0ZSgmc3RhdGUsIHN0YXRlLmFyZ3VtZW50KDApLCAwLCAwKTsKICAgICBpZiAo
c3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCkBA
IC03MSw3ICs3MSw3IEBAIEpTVmFsdWUgSlNIaXN0b3J5OjpwdXNoU3RhdGUoRXhlY1N0YXRlJiBz
dGF0ZSkKICAgICB9CiAKICAgICBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UgZWM7Ci0gICAgd3Jh
cHBlZCgpLnN0YXRlT2JqZWN0QWRkZWQoaGlzdG9yeVN0YXRlLnJlbGVhc2UoKSwgdGl0bGUsIHVy
bCwgSGlzdG9yeTo6U3RhdGVPYmplY3RUeXBlOjpQdXNoLCBlYyk7CisgICAgd3JhcHBlZCgpLnN0
YXRlT2JqZWN0QWRkZWQoV1RGTW92ZShoaXN0b3J5U3RhdGUpLCB0aXRsZSwgdXJsLCBIaXN0b3J5
OjpTdGF0ZU9iamVjdFR5cGU6OlB1c2gsIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRl
LCBlYyk7CiAKICAgICBtX3N0YXRlLmNsZWFyKCk7CkBAIC04MSw3ICs4MSw3IEBAIEpTVmFsdWUg
SlNIaXN0b3J5OjpwdXNoU3RhdGUoRXhlY1N0YXRlJiBzdGF0ZSkKIAogSlNWYWx1ZSBKU0hpc3Rv
cnk6OnJlcGxhY2VTdGF0ZShFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIFJlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IGhpc3RvcnlTdGF0ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3Jl
YXRlKCZzdGF0ZSwgc3RhdGUuYXJndW1lbnQoMCksIDAsIDApOworICAgIGF1dG8gaGlzdG9yeVN0
YXRlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoJnN0YXRlLCBzdGF0ZS5hcmd1bWVu
dCgwKSwgMCwgMCk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKIApAQCAtOTcsNyArOTcsNyBAQCBKU1ZhbHVlIEpTSGlzdG9yeTo6
cmVwbGFjZVN0YXRlKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgfQogCiAgICAgRXhjZXB0aW9uQ29k
ZVdpdGhNZXNzYWdlIGVjOwotICAgIHdyYXBwZWQoKS5zdGF0ZU9iamVjdEFkZGVkKGhpc3RvcnlT
dGF0ZS5yZWxlYXNlKCksIHRpdGxlLCB1cmwsIEhpc3Rvcnk6OlN0YXRlT2JqZWN0VHlwZTo6UmVw
bGFjZSwgZWMpOworICAgIHdyYXBwZWQoKS5zdGF0ZU9iamVjdEFkZGVkKFdURk1vdmUoaGlzdG9y
eVN0YXRlKSwgdGl0bGUsIHVybCwgSGlzdG9yeTo6U3RhdGVPYmplY3RUeXBlOjpSZXBsYWNlLCBl
Yyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogCiAgICAgbV9zdGF0ZS5jbGVh
cigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9y
dEN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3Rv
bS5oCmluZGV4IGZjYTdhNDBhNzk5NzFmZjM4ZGQ5Y2VkNjJiZjU5Y2RjNDU1ZmM4MjUuLjA2Mjk0
NmI3MzFjOWM1NTYyYzk1MmVhNjYxZGVmNmQ2OGI4OTVmNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmgKQEAgLTU2LDEyICs1NiwxMiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIE1lc3NhZ2VQb3J0QXJyYXkgcG9ydEFycmF5
OwogICAgICAgICBBcnJheUJ1ZmZlckFycmF5IGFycmF5QnVmZmVyQXJyYXk7CiAgICAgICAgIGZp
bGxNZXNzYWdlUG9ydEFycmF5KHN0YXRlLCBzdGF0ZS5hcmd1bWVudCgxKSwgcG9ydEFycmF5LCBh
cnJheUJ1ZmZlckFycmF5KTsKLSAgICAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
bWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCZzdGF0ZSwgc3RhdGUudW5j
aGVja2VkQXJndW1lbnQoMCksICZwb3J0QXJyYXksICZhcnJheUJ1ZmZlckFycmF5KTsKKyAgICAg
ICAgYXV0byBtZXNzYWdlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoJnN0YXRlLCBz
dGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSwgJnBvcnRBcnJheSwgJmFycmF5QnVmZmVyQXJyYXkp
OwogICAgICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4g
SlNDOjpqc1VuZGVmaW5lZCgpOwogCiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
ICAgICBpbXBsLT5wb3N0TWVzc2FnZShtZXNzYWdlLnJlbGVhc2UoKSwgJnBvcnRBcnJheSwgZWMp
OworICAgICAgICBpbXBsLT5wb3N0TWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpLCAmcG9ydEFycmF5
LCBlYyk7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKICAgICAgICAgcmV0
dXJuIEpTQzo6anNVbmRlZmluZWQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlck1hYy5tbQppbmRleCA1ZmM3MmRmMDVjN2I2ODE3ZjJi
OWViODEzN2IyNDI5MjNmYzAyNGJlLi5hODQ3NDUyMjM2YTVjOTU4MjY4ODM1NjAxZjRjY2Q3NTg3
MWJkYmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRy
b2xsZXJNYWMubW0KQEAgLTY2LDEwICs2NiwxMCBAQCBSZWZQdHI8SlNDOjpCaW5kaW5nczo6SW5z
dGFuY2U+IFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVNjcmlwdEluc3RhbmNlRm9yV2lkZ2V0KAog
ICAgIGlmICghd2lkZ2V0VmlldykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQ
dHI8Um9vdE9iamVjdD4gcm9vdE9iamVjdCA9IGNyZWF0ZVJvb3RPYmplY3Qod2lkZ2V0Vmlldyk7
CisgICAgYXV0byByb290T2JqZWN0ID0gY3JlYXRlUm9vdE9iamVjdCh3aWRnZXRWaWV3KTsKIAog
ICAgIGlmIChbd2lkZ2V0VmlldyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGNyZWF0ZVBs
dWdpbkJpbmRpbmdzSW5zdGFuY2U6KV0pCi0gICAgICAgIHJldHVybiBbd2lkZ2V0VmlldyBjcmVh
dGVQbHVnaW5CaW5kaW5nc0luc3RhbmNlOnJvb3RPYmplY3QucmVsZWFzZSgpXTsKKyAgICAgICAg
cmV0dXJuIFt3aWRnZXRWaWV3IGNyZWF0ZVBsdWdpbkJpbmRpbmdzSW5zdGFuY2U6V1RGTW92ZShy
b290T2JqZWN0KV07CiAgICAgICAgIAogICAgIGlmIChbd2lkZ2V0VmlldyByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKG9iamVjdEZvcldlYlNjcmlwdCldKSB7CiAgICAgICAgIGlkIG9iamVj
dEZvcldlYlNjcmlwdCA9IFt3aWRnZXRWaWV3IG9iamVjdEZvcldlYlNjcmlwdF07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApp
bmRleCA2ODJjYzYyM2ZhZDdjNjk4MWY1Njg4NmZhYTNjNTY2NDVhYWY2M2ViLi44NjliNmVhYTgw
NGY3NzQ2YTAxMTBlNzUyN2RjMWQ4YWQyMjY1NjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTIzNTQsNyArMjM1
NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZmFpbCgpOwogICAgICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBKU1ZhbHVlIHJl
c3VsdCA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0ZShtX2V4ZWMtPnZtKCksIG1fZ2xvYmFsT2JqZWN0
LT5hcnJheUJ1ZmZlclN0cnVjdHVyZSgpLCBhcnJheUJ1ZmZlci5yZWxlYXNlKCkpOworICAgICAg
ICAgICAgSlNWYWx1ZSByZXN1bHQgPSBKU0FycmF5QnVmZmVyOjpjcmVhdGUobV9leGVjLT52bSgp
LCBtX2dsb2JhbE9iamVjdC0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUoKSwgV1RGTW92ZShhcnJheUJ1
ZmZlcikpOwogICAgICAgICAgICAgbV9nY0J1ZmZlci5hcHBlbmQocmVzdWx0KTsKICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggNjdkOWQ1N2ZlZjFhYzNjMGIz
YzI5ZGFjZDBkNzMxOWY4NjQzMzk0NS4uM2I0Mjc3YmRiMGI0OTVkZDNkOTEwMWM2NjEzYWVhZTU2
NjNmOTMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5jcHAKQEAgLTQwNTksOSArNDA1OSw5IEBAIFJlZjxNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpjb3B5UHJvcGVydGllc0luU2V0KGNvbnN0
IENTCiAgICAgVmVjdG9yPENTU1Byb3BlcnR5LCAyNTY+IGxpc3Q7CiAgICAgbGlzdC5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KGxlbmd0aCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxl
bmd0aDsgKytpKSB7Ci0gICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBwcm9wZXJ0eVZh
bHVlKHNldFtpXSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSBwcm9wZXJ0eVZhbHVlKHNldFtpXSk7
CiAgICAgICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAgIGxpc3QuYXBwZW5kKENTU1Byb3BlcnR5
KHNldFtpXSwgdmFsdWUucmVsZWFzZSgpLCBmYWxzZSkpOworICAgICAgICAgICAgbGlzdC5hcHBl
bmQoQ1NTUHJvcGVydHkoc2V0W2ldLCBXVEZNb3ZlKHZhbHVlKSwgZmFsc2UpKTsKICAgICB9CiAg
ICAgcmV0dXJuIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZShsaXN0LmRhdGEoKSwgbGlz
dC5zaXplKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1BhcnNl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcAppbmRleCBmMGM0ODU0
Y2M2MWQxYWZhMDUzYjVjZmU5ZjI4ODQ4MDhlYjBkZWQwLi45Y2I0NzkzYmJlMTQwZTMzNDIyNWQy
NDMwODIzNzY0ZWM5MDllOWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NT
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcApAQCAt
MjcyLDkgKzI3Miw5IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVNWR1ZhbHVlKENTU1Byb3BlcnR5
SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9u
ZSkKICAgICAgICAgICAgIHZhbGlkX3ByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gc2hhZG93VmFsdWVMaXN0ID0gcGFyc2VT
aGFkb3coKm1fdmFsdWVMaXN0LCBwcm9wSWQpOworICAgICAgICAgICAgYXV0byBzaGFkb3dWYWx1
ZUxpc3QgPSBwYXJzZVNoYWRvdygqbV92YWx1ZUxpc3QsIHByb3BJZCk7CiAgICAgICAgICAgICBp
ZiAoc2hhZG93VmFsdWVMaXN0KSB7Ci0gICAgICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcElk
LCBzaGFkb3dWYWx1ZUxpc3QucmVsZWFzZSgpLCBpbXBvcnRhbnQpOworICAgICAgICAgICAgICAg
IGFkZFByb3BlcnR5KHByb3BJZCwgV1RGTW92ZShzaGFkb3dWYWx1ZUxpc3QpLCBpbXBvcnRhbnQp
OwogICAgICAgICAgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CkBAIC0zMzYsNyArMzM2LDcgQEAgYm9vbCBDU1NQ
YXJzZXI6OnBhcnNlU1ZHVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50
KQogICAgIGlmICghcGFyc2VkVmFsdWUgfHwgKG1fdmFsdWVMaXN0LT5jdXJyZW50KCkgJiYgIWlu
U2hvcnRoYW5kKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhZGRQcm9wZXJ0eShw
cm9wSWQsIHBhcnNlZFZhbHVlLnJlbGVhc2UoKSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0
eShwcm9wSWQsIFdURk1vdmUocGFyc2VkVmFsdWUpLCBpbXBvcnRhbnQpOwogICAgIHJldHVybiB0
cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29u
dmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKaW5k
ZXggNzdhYzY1ZjI4MzhkYTYzY2VjNDg4Zjg1ZDJiYTMxYzE3YmY2MDg5ZC4uYWY0NTcxM2RmNTgz
MDFjYTMwN2MzMDZhZjQ4MTQ2Y2RhY2ZiNDA1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZUJ1aWxkZXJDb252ZXJ0ZXIuaApAQCAtNzYyLDcgKzc2Miw3IEBAIGlubGluZSBQYXNzUmVmUHRy
PFNoYXBlVmFsdWU+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNoYXBlVmFsdWUoU3R5
bGVSZXNvCiAgICAgfQogCiAgICAgaWYgKHNoYXBlKQotICAgICAgICByZXR1cm4gU2hhcGVWYWx1
ZTo6Y3JlYXRlU2hhcGVWYWx1ZShzaGFwZS5yZWxlYXNlKCksIHJlZmVyZW5jZUJveCk7CisgICAg
ICAgIHJldHVybiBTaGFwZVZhbHVlOjpjcmVhdGVTaGFwZVZhbHVlKFdURk1vdmUoc2hhcGUpLCBy
ZWZlcmVuY2VCb3gpOwogCiAgICAgaWYgKHJlZmVyZW5jZUJveCAhPSBCb3hNaXNzaW5nKQogICAg
ICAgICByZXR1cm4gU2hhcGVWYWx1ZTo6Y3JlYXRlQm94U2hhcGVWYWx1ZShyZWZlcmVuY2VCb3gp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcAppbmRleCBiZmNiZmE3MmQyMDRm
OWFlOWFkNWQ2NzFmMmRiY2IwNmQwNGJmY2U1Li5mN2JjNzMwMTVkZTBkMzU2ZWE0YzkxY2M5MzAy
MTUxODc2MjFjYTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0
aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcApAQCAt
MTMxMyw5ICsxMzEzLDkgQEAgUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IFN0eWxlUHJvcGVy
dGllczo6Y29weVByb3BlcnRpZXNJblNldChjb25zdCBDU1NQcm9wZXIKICAgICBWZWN0b3I8Q1NT
UHJvcGVydHksIDI1Nj4gbGlzdDsKICAgICBsaXN0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVu
Z3RoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAg
ICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWVJbnRlcm5hbChz
ZXRbaV0pOworICAgICAgICBhdXRvIHZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZUludGVybmFs
KHNldFtpXSk7CiAgICAgICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAgIGxpc3QuYXBwZW5kKENT
U1Byb3BlcnR5KHNldFtpXSwgdmFsdWUucmVsZWFzZSgpLCBmYWxzZSkpOworICAgICAgICAgICAg
bGlzdC5hcHBlbmQoQ1NTUHJvcGVydHkoc2V0W2ldLCBXVEZNb3ZlKHZhbHVlKSwgZmFsc2UpKTsK
ICAgICB9CiAgICAgcmV0dXJuIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZShsaXN0LmRh
dGEoKSwgbGlzdC5zaXplKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmlu
ZGV4IGMxN2FhZmE5NjQ1OGUzYWZmMjE1NjY0YWE2NDI2OWIyY2EyYTUwZDkuLmFiNmRmMjc2YjQ2
OTk1NzA3NDFlODFiZmVkZDQ5YzY3YWJjZWZhMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAKQEAgLTIxOTMsOCArMjE5Myw4IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6bG9hZFBl
bmRpbmdJbWFnZXMoKQogICAgICAgICAgICAgICAgIGlmIChpczxJbWFnZUNvbnRlbnREYXRhPigq
Y29udGVudERhdGEpKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8mIHN0eWxlSW1hZ2UgPSBk
b3duY2FzdDxJbWFnZUNvbnRlbnREYXRhPigqY29udGVudERhdGEpLmltYWdlKCk7CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChpczxTdHlsZVBlbmRpbmdJbWFnZT4oc3R5bGVJbWFnZSkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChSZWZQdHI8U3R5bGVJbWFnZT4gbG9hZGVkSW1hZ2Ug
PSBsb2FkUGVuZGluZ0ltYWdlKGRvd25jYXN0PFN0eWxlUGVuZGluZ0ltYWdlPihzdHlsZUltYWdl
KSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG93bmNhc3Q8SW1hZ2VDb250ZW50RGF0
YT4oKmNvbnRlbnREYXRhKS5zZXRJbWFnZShsb2FkZWRJbWFnZS5yZWxlYXNlKCkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGF1dG8gbG9hZGVkSW1hZ2UgPSBsb2FkUGVuZGluZ0ltYWdl
KGRvd25jYXN0PFN0eWxlUGVuZGluZ0ltYWdlPihzdHlsZUltYWdlKSkpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZG93bmNhc3Q8SW1hZ2VDb250ZW50RGF0YT4oKmNvbnRlbnREYXRhKS5z
ZXRJbWFnZShXVEZNb3ZlKGxvYWRlZEltYWdlKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0yMjI4LDggKzIyMjgsOCBAQCB2b2lk
IFN0eWxlUmVzb2x2ZXI6OmxvYWRQZW5kaW5nSW1hZ2VzKCkKICAgICAgICAgICAgICAgICBjb25z
dCBOaW5lUGllY2VJbWFnZSYgbWFza0ltYWdlID0gcmVmbGVjdGlvbi0+bWFzaygpOwogICAgICAg
ICAgICAgICAgIGF1dG8qIHN0eWxlSW1hZ2UgPSBtYXNrSW1hZ2UuaW1hZ2UoKTsKICAgICAgICAg
ICAgICAgICBpZiAoaXM8U3R5bGVQZW5kaW5nSW1hZ2U+KHN0eWxlSW1hZ2UpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIFJlZlB0cjxTdHlsZUltYWdlPiBsb2FkZWRJbWFnZSA9IGxvYWRQZW5kaW5n
SW1hZ2UoZG93bmNhc3Q8U3R5bGVQZW5kaW5nSW1hZ2U+KCpzdHlsZUltYWdlKSk7Ci0gICAgICAg
ICAgICAgICAgICAgIHJlZmxlY3Rpb24tPnNldE1hc2soTmluZVBpZWNlSW1hZ2UobG9hZGVkSW1h
Z2UucmVsZWFzZSgpLCBtYXNrSW1hZ2UuaW1hZ2VTbGljZXMoKSwgbWFza0ltYWdlLmZpbGwoKSwg
bWFza0ltYWdlLmJvcmRlclNsaWNlcygpLCBtYXNrSW1hZ2Uub3V0c2V0KCksIG1hc2tJbWFnZS5o
b3Jpem9udGFsUnVsZSgpLCBtYXNrSW1hZ2UudmVydGljYWxSdWxlKCkpKTsKKyAgICAgICAgICAg
ICAgICAgICAgYXV0byBsb2FkZWRJbWFnZSA9IGxvYWRQZW5kaW5nSW1hZ2UoZG93bmNhc3Q8U3R5
bGVQZW5kaW5nSW1hZ2U+KCpzdHlsZUltYWdlKSk7CisgICAgICAgICAgICAgICAgICAgIHJlZmxl
Y3Rpb24tPnNldE1hc2soTmluZVBpZWNlSW1hZ2UoV1RGTW92ZShsb2FkZWRJbWFnZSksIG1hc2tJ
bWFnZS5pbWFnZVNsaWNlcygpLCBtYXNrSW1hZ2UuZmlsbCgpLCBtYXNrSW1hZ2UuYm9yZGVyU2xp
Y2VzKCksIG1hc2tJbWFnZS5vdXRzZXQoKSwgbWFza0ltYWdlLmhvcml6b250YWxSdWxlKCksIG1h
c2tJbWFnZS52ZXJ0aWNhbFJ1bGUoKSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lu
bGluZVN0eWxlU2hlZXRPd25lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVT
aGVldE93bmVyLmNwcAppbmRleCA5ZmM0MjZkMWI4MzhlMmQzZTIxZDgzMmQ0N2JiNjIxODllYTE5
OWIzLi5lMDA2YjgxYTZjMWUyYzU0MGMzMTg1YTE3Y2ZiZTU5NTM5ZjJmMDAwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcApAQCAtMTA5LDcgKzEwOSw4
IEBAIHZvaWQgSW5saW5lU3R5bGVTaGVldE93bmVyOjpjcmVhdGVTaGVldEZyb21UZXh0Q29udGVu
dHMoRWxlbWVudCYgZWxlbWVudCkKIHZvaWQgSW5saW5lU3R5bGVTaGVldE93bmVyOjpjbGVhclNo
ZWV0KCkKIHsKICAgICBBU1NFUlQobV9zaGVldCk7Ci0gICAgbV9zaGVldC5yZWxlYXNlKCktPmNs
ZWFyT3duZXJOb2RlKCk7CisgICAgYXV0byBzaGVldCA9IFdURk1vdmUobV9zaGVldCk7CisgICAg
c2hlZXQtPmNsZWFyT3duZXJOb2RlKCk7CiB9CiAKIGlubGluZSBib29sIGlzVmFsaWRDU1NDb250
ZW50VHlwZShFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCmluZGV4IGEwNTk5ZGUz
MjRjNTU5MTJkZTE5NDEwMTI2NjVhMzgzYWI4ZmZlZDUuLjI2N2Y5NTA1YzUxYzQ3ZWVkMWRlYWQw
MDBkZDhkODhmMDlmYTdiYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBw
bHlTdHlsZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHls
ZUNvbW1hbmQuY3BwCkBAIC04NDAsNyArODQwLDcgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6
YXBwbHlJbmxpbmVTdHlsZVRvTm9kZVJhbmdlKEVkaXRpbmdTdHlsZSogc3R5bGUsIFBhc3NSZWYK
ICAgICAgICAgaWYgKHJ1bi5kdW1teUVsZW1lbnQpCiAgICAgICAgICAgICByZW1vdmVOb2RlKHJ1
bi5kdW1teUVsZW1lbnQpOwogICAgICAgICBpZiAocnVuLnN0YXJ0QW5kRW5kQXJlU3RpbGxJbkRv
Y3VtZW50KCkpCi0gICAgICAgICAgICBhcHBseUlubGluZVN0eWxlQ2hhbmdlKHJ1bi5zdGFydC5y
ZWxlYXNlKCksIHJ1bi5lbmQucmVsZWFzZSgpLCBydW4uY2hhbmdlLCBBZGRTdHlsZWRFbGVtZW50
KTsKKyAgICAgICAgICAgIGFwcGx5SW5saW5lU3R5bGVDaGFuZ2UoV1RGTW92ZShydW4uc3RhcnQp
LCBXVEZNb3ZlKHJ1bi5lbmQpLCBydW4uY2hhbmdlLCBBZGRTdHlsZWRFbGVtZW50KTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENv
bW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5j
cHAKaW5kZXggYjkwNDJmYTRkZjc4OWE1NmE2OGU5MjkzM2Q3NTA5ZGUyMjZjYmY0ZS4uOTE3OTdh
MWJmY2FmOTAyNzI1NjUxMjNkZWU0ZTU5MjE5MTRkNzlkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKQEAgLTUyMiw3ICs1MjIsNyBAQCB2
b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZW1vdmVDaGlsZHJlbkluUmFuZ2UoUGFzc1JlZlB0
cjxOb2RlPiBub2RlLCB1bnNpZ25lZAogICAgICAgICBjaGlsZHJlbi5hcHBlbmQoY2hpbGQpOwog
CiAgICAgZm9yIChhdXRvJiBjaGlsZCA6IGNoaWxkcmVuKQotICAgICAgICByZW1vdmVOb2RlKGNo
aWxkLnJlbGVhc2UoKSk7CisgICAgICAgIHJlbW92ZU5vZGUoV1RGTW92ZShjaGlsZCkpOwogfQog
CiB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZW1vdmVOb2RlKFBhc3NSZWZQdHI8Tm9kZT4g
bm9kZSwgU2hvdWxkQXNzdW1lQ29udGVudElzQWx3YXlzRWRpdGFibGUgc2hvdWxkQXNzdW1lQ29u
dGVudElzQWx3YXlzRWRpdGFibGUpCkBAIC01NDEsNyArNTQxLDcgQEAgdm9pZCBDb21wb3NpdGVF
ZGl0Q29tbWFuZDo6cmVtb3ZlTm9kZUFuZFBydW5lQW5jZXN0b3JzKFBhc3NSZWZQdHI8Tm9kZT4g
bm9kZSkKIHsKICAgICBSZWZQdHI8Q29udGFpbmVyTm9kZT4gcGFyZW50ID0gbm9kZS0+cGFyZW50
Tm9kZSgpOwogICAgIHJlbW92ZU5vZGUobm9kZSk7Ci0gICAgcHJ1bmUocGFyZW50LnJlbGVhc2Uo
KSk7CisgICAgcHJ1bmUoV1RGTW92ZShwYXJlbnQpKTsKIH0KIAogdm9pZCBDb21wb3NpdGVFZGl0
Q29tbWFuZDo6bW92ZVJlbWFpbmluZ1NpYmxpbmdzVG9OZXdQYXJlbnQoTm9kZSogbm9kZSwgTm9k
ZSogcGFzdExhc3ROb2RlVG9Nb3ZlLCBQYXNzUmVmUHRyPEVsZW1lbnQ+IHBycE5ld1BhcmVudCkK
QEAgLTU4Myw3ICs1ODMsNyBAQCBIVE1MRWxlbWVudCogQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnJl
cGxhY2VFbGVtZW50V2l0aFNwYW5QcmVzZXJ2aW5nQ2hpbGRyZW5BbmRBdAogdm9pZCBDb21wb3Np
dGVFZGl0Q29tbWFuZDo6cHJ1bmUoUGFzc1JlZlB0cjxOb2RlPiBub2RlKQogewogICAgIGlmIChS
ZWZQdHI8Tm9kZT4gaGlnaGVzdE5vZGVUb1JlbW92ZSA9IGhpZ2hlc3ROb2RlVG9SZW1vdmVJblBy
dW5pbmcobm9kZS5nZXQoKSkpCi0gICAgICAgIHJlbW92ZU5vZGUoaGlnaGVzdE5vZGVUb1JlbW92
ZS5yZWxlYXNlKCkpOworICAgICAgICByZW1vdmVOb2RlKFdURk1vdmUoaGlnaGVzdE5vZGVUb1Jl
bW92ZSkpOwogfQogCiB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpzcGxpdFRleHROb2RlKFBh
c3NSZWZQdHI8VGV4dD4gbm9kZSwgdW5zaWduZWQgb2Zmc2V0KQpAQCAtNjg4LDcgKzY4OCw3IEBA
IFBvc2l0aW9uIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZXBsYWNlU2VsZWN0ZWRUZXh0SW5Ob2Rl
KGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICBSZWZQdHI8VGV4dD4gdGV4dE5vZGUgPSBzdGFydC5j
b250YWluZXJUZXh0KCk7CiAgICAgcmVwbGFjZVRleHRJbk5vZGUodGV4dE5vZGUsIHN0YXJ0Lm9m
ZnNldEluQ29udGFpbmVyTm9kZSgpLCBlbmQub2Zmc2V0SW5Db250YWluZXJOb2RlKCkgLSBzdGFy
dC5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSwgdGV4dCk7CiAKLSAgICByZXR1cm4gUG9zaXRpb24o
dGV4dE5vZGUucmVsZWFzZSgpLCBzdGFydC5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSArIHRleHQu
bGVuZ3RoKCkpOworICAgIHJldHVybiBQb3NpdGlvbihXVEZNb3ZlKHRleHROb2RlKSwgc3RhcnQu
b2Zmc2V0SW5Db250YWluZXJOb2RlKCkgKyB0ZXh0Lmxlbmd0aCgpKTsKIH0KIAogc3RhdGljIFZl
Y3RvcjxSZW5kZXJlZERvY3VtZW50TWFya2VyPiBjb3B5TWFya2Vycyhjb25zdCBWZWN0b3I8UmVu
ZGVyZWREb2N1bWVudE1hcmtlcio+JiBtYXJrZXJQb2ludGVycykKQEAgLTg3Miw3ICs4NzIsNyBA
QCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZWJhbGFuY2VXaGl0ZXNwYWNlT25UZXh0U3Vi
c3RyaW5nKFBhc3NSZWZQdHI8VGV4dD4gcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRW5kT2ZQYXJhZ3JhcGgodmlzaWJsZURv
d25zdHJlYW1Qb3MpIHx8ICh1bnNpZ25lZClkb3duc3RyZWFtID09IHRleHQubGVuZ3RoKCkpOwog
ICAgIAogICAgIGlmIChzdHJpbmcgIT0gcmViYWxhbmNlZFN0cmluZykKLSAgICAgICAgcmVwbGFj
ZVRleHRJbk5vZGVQcmVzZXJ2aW5nTWFya2Vycyh0ZXh0Tm9kZS5yZWxlYXNlKCksIHVwc3RyZWFt
LCBsZW5ndGgsIHJlYmFsYW5jZWRTdHJpbmcpOworICAgICAgICByZXBsYWNlVGV4dEluTm9kZVBy
ZXNlcnZpbmdNYXJrZXJzKFdURk1vdmUodGV4dE5vZGUpLCB1cHN0cmVhbSwgbGVuZ3RoLCByZWJh
bGFuY2VkU3RyaW5nKTsKIH0KIAogdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cHJlcGFyZVdo
aXRlc3BhY2VBdFBvc2l0aW9uRm9yU3BsaXQoUG9zaXRpb24mIHBvc2l0aW9uKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9DcmVhdGVMaW5rQ29tbWFuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0NyZWF0ZUxpbmtDb21tYW5kLmNwcAppbmRleCBhM2VlN2U1MDU4NDI4
ZWY4MzEwNTM5OThiODIxYjJkNDdmYjZhYThmLi4zYTA1MjA4NzNiNDRmZTY0YTJlZDUyMmUzMzdk
ZmI3NGUxMmE2MjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NyZWF0ZUxp
bmtDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NyZWF0ZUxpbmtDb21t
YW5kLmNwcApAQCAtNDMsMTYgKzQzLDE2IEBAIHZvaWQgQ3JlYXRlTGlua0NvbW1hbmQ6OmRvQXBw
bHkoKQogICAgIGlmIChlbmRpbmdTZWxlY3Rpb24oKS5pc05vbmUoKSkKICAgICAgICAgcmV0dXJu
OwogICAgICAgICAKLSAgICBSZWZQdHI8SFRNTEFuY2hvckVsZW1lbnQ+IGFuY2hvckVsZW1lbnQg
PSBIVE1MQW5jaG9yRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpOworICAgIGF1dG8gYW5jaG9y
RWxlbWVudCA9IEhUTUxBbmNob3JFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7CiAgICAgYW5j
aG9yRWxlbWVudC0+c2V0SHJlZihtX3VybCk7CiAgICAgCiAgICAgaWYgKGVuZGluZ1NlbGVjdGlv
bigpLmlzUmFuZ2UoKSkKLSAgICAgICAgYXBwbHlTdHlsZWRFbGVtZW50KGFuY2hvckVsZW1lbnQu
cmVsZWFzZSgpKTsKKyAgICAgICAgYXBwbHlTdHlsZWRFbGVtZW50KFdURk1vdmUoYW5jaG9yRWxl
bWVudCkpOwogICAgIGVsc2UgewotICAgICAgICBpbnNlcnROb2RlQXQoYW5jaG9yRWxlbWVudC5n
ZXQoKSwgZW5kaW5nU2VsZWN0aW9uKCkuc3RhcnQoKSk7Ci0gICAgICAgIFJlZlB0cjxUZXh0PiB0
ZXh0Tm9kZSA9IFRleHQ6OmNyZWF0ZShkb2N1bWVudCgpLCBtX3VybCk7Ci0gICAgICAgIGFwcGVu
ZE5vZGUodGV4dE5vZGUucmVsZWFzZSgpLCBhbmNob3JFbGVtZW50LmdldCgpKTsKLSAgICAgICAg
c2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocG9zaXRpb25JblBhcmVudEJlZm9y
ZU5vZGUoYW5jaG9yRWxlbWVudC5nZXQoKSksIHBvc2l0aW9uSW5QYXJlbnRBZnRlck5vZGUoYW5j
aG9yRWxlbWVudC5nZXQoKSksIERPV05TVFJFQU0sIGVuZGluZ1NlbGVjdGlvbigpLmlzRGlyZWN0
aW9uYWwoKSkpOworICAgICAgICBpbnNlcnROb2RlQXQoYW5jaG9yRWxlbWVudC5wdHIoKSwgZW5k
aW5nU2VsZWN0aW9uKCkuc3RhcnQoKSk7CisgICAgICAgIGF1dG8gdGV4dE5vZGUgPSBUZXh0Ojpj
cmVhdGUoZG9jdW1lbnQoKSwgbV91cmwpOworICAgICAgICBhcHBlbmROb2RlKFdURk1vdmUodGV4
dE5vZGUpLCBhbmNob3JFbGVtZW50LnB0cigpKTsKKyAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9u
KFZpc2libGVTZWxlY3Rpb24ocG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUoYW5jaG9yRWxlbWVu
dC5wdHIoKSksIHBvc2l0aW9uSW5QYXJlbnRBZnRlck5vZGUoYW5jaG9yRWxlbWVudC5wdHIoKSks
IERPV05TVFJFQU0sIGVuZGluZ1NlbGVjdGlvbigpLmlzRGlyZWN0aW9uYWwoKSkpOwogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCmluZGV4IDI5MTRmNjI3
MTJiNzJkMTE4YWViZDIxNjUyMTA5ZGJmNTRmY2IyZmEuLmVjN2U3ZWI3NzJhNzFkMjliOWRiODFm
MTNmODA5YTIyMWQyZjcxN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dGluZ1N0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5j
cHAKQEAgLTEyNDgsOSArMTI0OCw5IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjptZXJnZVN0eWxlKGNv
bnN0IFN0eWxlUHJvcGVydGllcyogc3R5bGUsIENTU1Byb3BlcnR5T3ZlcnJpZGVNCiAgICAgICAg
IGlmICgocHJvcGVydHkuaWQoKSA9PSBDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uIHx8IHByb3Bl
cnR5LmlkKCkgPT0gQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCkKICAg
ICAgICAgICAgICYmIGlzPENTU1ZhbHVlTGlzdD4oKnByb3BlcnR5LnZhbHVlKCkpICYmIHZhbHVl
KSB7CiAgICAgICAgICAgICBpZiAoaXM8Q1NTVmFsdWVMaXN0PigqdmFsdWUpKSB7Ci0gICAgICAg
ICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbmV3VmFsdWUgPSBkb3duY2FzdDxDU1NWYWx1
ZUxpc3Q+KCp2YWx1ZSkuY29weSgpOwotICAgICAgICAgICAgICAgIG1lcmdlVGV4dERlY29yYXRp
b25WYWx1ZXMoKm5ld1ZhbHVlLCBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KCpwcm9wZXJ0eS52YWx1
ZSgpKSk7Ci0gICAgICAgICAgICAgICAgbV9tdXRhYmxlU3R5bGUtPnNldFByb3BlcnR5KHByb3Bl
cnR5LmlkKCksIG5ld1ZhbHVlLnJlbGVhc2UoKSwgcHJvcGVydHkuaXNJbXBvcnRhbnQoKSk7Cisg
ICAgICAgICAgICAgICAgYXV0byBuZXdWYWx1ZSA9IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4oKnZh
bHVlKS5jb3B5KCk7CisgICAgICAgICAgICAgICAgbWVyZ2VUZXh0RGVjb3JhdGlvblZhbHVlcyhu
ZXdWYWx1ZSwgZG93bmNhc3Q8Q1NTVmFsdWVMaXN0PigqcHJvcGVydHkudmFsdWUoKSkpOworICAg
ICAgICAgICAgICAgIG1fbXV0YWJsZVN0eWxlLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eS5pZCgpLCBX
VEZNb3ZlKG5ld1ZhbHVlKSwgcHJvcGVydHkuaXNJbXBvcnRhbnQoKSk7CiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB2YWx1ZSA9IG51bGxwdHI7
IC8vIHRleHQtZGVjb3JhdGlvbjogbm9uZSBpcyBlcXVpdmFsZW50IHRvIG5vdCBoYXZpbmcgdGhl
IHByb3BlcnR5LgpAQCAtMTMwNyw4ICsxMzA3LDggQEAgdm9pZCBFZGl0aW5nU3R5bGU6Om1lcmdl
U3R5bGVGcm9tUnVsZXNGb3JTZXJpYWxpemF0aW9uKFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgICAgICAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPigqdmFsdWUpLmlzUGVyY2VudGFnZSgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFJlZlB0
cjxDU1NWYWx1ZT4gY29tcHV0ZWRQcm9wZXJ0eVZhbHVlID0gY29tcHV0ZWRTdHlsZS5wcm9wZXJ0
eVZhbHVlKHByb3BlcnR5LmlkKCkpKQotICAgICAgICAgICAgICAgICAgICBmcm9tQ29tcHV0ZWRT
dHlsZS0+YWRkUGFyc2VkUHJvcGVydHkoQ1NTUHJvcGVydHkocHJvcGVydHkuaWQoKSwgY29tcHV0
ZWRQcm9wZXJ0eVZhbHVlLnJlbGVhc2UoKSkpOworICAgICAgICAgICAgICAgIGlmIChhdXRvIGNv
bXB1dGVkUHJvcGVydHlWYWx1ZSA9IGNvbXB1dGVkU3R5bGUucHJvcGVydHlWYWx1ZShwcm9wZXJ0
eS5pZCgpKSkKKyAgICAgICAgICAgICAgICAgICAgZnJvbUNvbXB1dGVkU3R5bGUtPmFkZFBhcnNl
ZFByb3BlcnR5KENTU1Byb3BlcnR5KHByb3BlcnR5LmlkKCksIFdURk1vdmUoY29tcHV0ZWRQcm9w
ZXJ0eVZhbHVlKSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCmluZGV4IDM0Y2RjZTk5ZjNiZmYzMmQ0NjlmNDUxNjk3ZDRkNTlkYTcw
OGM1ZmEuLmY2NjYzMzAxNjQzMDMxMzU4NTQwZmI3NGMxMjUwNzg2ZjdjNzUzNWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTEzNiw5ICsxMzYsOSBAQCB2b2lkIENsZWFyVGV4dENv
bW1hbmQ6OkNyZWF0ZUFuZEFwcGx5KGNvbnN0IFJlZlB0cjxGcmFtZT4gZnJhbWUpCiAgICAgCiAg
ICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiBvbGRTZWxlY3Rpb24gPSBmcmFtZS0+c2VsZWN0aW9u
KCkuc2VsZWN0aW9uKCk7CiAgICAgZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdEFsbCgpOwotICAg
IFJlZlB0cjxDbGVhclRleHRDb21tYW5kPiBjbGVhckNvbW1hbmQgPSBhZG9wdFJlZihuZXcgQ2xl
YXJUZXh0Q29tbWFuZCgqZnJhbWUtPmRvY3VtZW50KCkpKTsKKyAgICBhdXRvIGNsZWFyQ29tbWFu
ZCA9IGFkb3B0UmVmKCpuZXcgQ2xlYXJUZXh0Q29tbWFuZCgqZnJhbWUtPmRvY3VtZW50KCkpKTsK
ICAgICBjbGVhckNvbW1hbmQtPnNldFN0YXJ0aW5nU2VsZWN0aW9uKG9sZFNlbGVjdGlvbik7Ci0g
ICAgYXBwbHlDb21tYW5kKGNsZWFyQ29tbWFuZC5yZWxlYXNlKCkpOworICAgIGFwcGx5Q29tbWFu
ZChXVEZNb3ZlKGNsZWFyQ29tbWFuZCkpOwogfQogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVz
OwpAQCAtMjQzMywxNiArMjQzMywxNiBAQCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5n
c0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdUeXBlTWFzayB0ZXh0QwogICAgIGJv
b2wgYXN5bmNocm9ub3VzID0gbV9mcmFtZS5zZXR0aW5ncygpLmFzeW5jaHJvbm91c1NwZWxsQ2hl
Y2tpbmdFbmFibGVkKCkgJiYgIXNob3VsZFNob3dDb3JyZWN0aW9uUGFuZWw7CiAKICAgICAvLyBJ
biBhc3luY2hyb25vdXMgbW9kZSwgd2UgaW50ZW50aW9uYWxseSBjaGVjayBwYXJhZ3JhcGgtd2lk
ZSBzZW50ZW5jZS4KLSAgICBSZWZQdHI8U3BlbGxDaGVja1JlcXVlc3Q+IHJlcXVlc3QgPSBTcGVs
bENoZWNrUmVxdWVzdDo6Y3JlYXRlKHJlc29sdmVUZXh0Q2hlY2tpbmdUeXBlTWFzayh0ZXh0Q2hl
Y2tpbmdPcHRpb25zKSwgVGV4dENoZWNraW5nUHJvY2Vzc0luY3JlbWVudGFsLCBhc3luY2hyb25v
dXMgPyBwYXJhZ3JhcGhSYW5nZSA6IHJhbmdlVG9DaGVjaywgcGFyYWdyYXBoUmFuZ2UpOworICAg
IGF1dG8gcmVxdWVzdCA9IFNwZWxsQ2hlY2tSZXF1ZXN0OjpjcmVhdGUocmVzb2x2ZVRleHRDaGVj
a2luZ1R5cGVNYXNrKHRleHRDaGVja2luZ09wdGlvbnMpLCBUZXh0Q2hlY2tpbmdQcm9jZXNzSW5j
cmVtZW50YWwsIGFzeW5jaHJvbm91cyA/IHBhcmFncmFwaFJhbmdlIDogcmFuZ2VUb0NoZWNrLCBw
YXJhZ3JhcGhSYW5nZSk7CiAKICAgICBpZiAoYXN5bmNocm9ub3VzKSB7Ci0gICAgICAgIG1fc3Bl
bGxDaGVja2VyLT5yZXF1ZXN0Q2hlY2tpbmdGb3IocmVxdWVzdC5yZWxlYXNlKCkpOworICAgICAg
ICBtX3NwZWxsQ2hlY2tlci0+cmVxdWVzdENoZWNraW5nRm9yKFdURk1vdmUocmVxdWVzdCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4g
cmVzdWx0czsKICAgICBjaGVja1RleHRPZlBhcmFncmFwaCgqdGV4dENoZWNrZXIoKSwgcGFyYWdy
YXBoVG9DaGVjay50ZXh0KCksIHJlc29sdmVUZXh0Q2hlY2tpbmdUeXBlTWFzayh0ZXh0Q2hlY2tp
bmdPcHRpb25zKSwgcmVzdWx0cywgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSk7Ci0g
ICAgbWFya0FuZFJlcGxhY2VGb3IocmVxdWVzdC5yZWxlYXNlKCksIHJlc3VsdHMpOworICAgIG1h
cmtBbmRSZXBsYWNlRm9yKFdURk1vdmUocmVxdWVzdCksIHJlc3VsdHMpOwogfQogCiBzdGF0aWMg
Ym9vbCBpc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudFR5cGUoVGV4dENoZWNraW5nVHlwZSB0eXBl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKaW5kZXggYTkzNTgwZTc2
N2ZmY2IwZjQzYmFkMWY2ZDk4NWNhNmIzYTA3ZGZkOS4uZGRmMTk0YzcyYTczYjdmZmJkMThlYzYz
ZjJlYTU0YTg0OTc0MmQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3JDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQu
Y3BwCkBAIC0xNjUsMTIgKzE2NSwxMiBAQCBzdGF0aWMgYm9vbCBleGVjdXRlSW5zZXJ0RnJhZ21l
bnQoRnJhbWUmIGZyYW1lLCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYQogCiBzdGF0
aWMgYm9vbCBleGVjdXRlSW5zZXJ0Tm9kZShGcmFtZSYgZnJhbWUsIFJlZjxOb2RlPiYmIGNvbnRl
bnQpCiB7Ci0gICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gRG9jdW1lbnRG
cmFnbWVudDo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpKTsKKyAgICBhdXRvIGZyYWdtZW50ID0g
RG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpKTsKICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoY29udGVudCwgZWMpOwog
ICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBleGVjdXRlSW5z
ZXJ0RnJhZ21lbnQoZnJhbWUsIGZyYWdtZW50LnJlbGVhc2UoKSk7CisgICAgcmV0dXJuIGV4ZWN1
dGVJbnNlcnRGcmFnbWVudChmcmFtZSwgV1RGTW92ZShmcmFnbWVudCkpOwogfQogCiBzdGF0aWMg
Ym9vbCBleHBhbmRTZWxlY3Rpb25Ub0dyYW51bGFyaXR5KEZyYW1lJiBmcmFtZSwgVGV4dEdyYW51
bGFyaXR5IGdyYW51bGFyaXR5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9J
bnNlcnRUZXh0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRD
b21tYW5kLmNwcAppbmRleCA5Yjk0NDhjYzY2ZDAwN2E4ZWMyOTRiYzNiOWVmNWM4MTU2MjFiMTdi
Li4xMDM5ODdhZDdlZGE5ODBmODBlNjEyOTZhNjM3YWExNGQ5OTcwODM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcApAQCAtMTIwLDcgKzEyMCw3IEBA
IGJvb2wgSW5zZXJ0VGV4dENvbW1hbmQ6OnBlcmZvcm1PdmVyd3JpdGUoY29uc3QgU3RyaW5nJiB0
ZXh0LCBib29sIHNlbGVjdEluc2VydGVkCiAKICAgICByZXBsYWNlVGV4dEluTm9kZSh0ZXh0Tm9k
ZSwgc3RhcnQub2Zmc2V0SW5Db250YWluZXJOb2RlKCksIGNvdW50LCB0ZXh0KTsKIAotICAgIFBv
c2l0aW9uIGVuZFBvc2l0aW9uID0gUG9zaXRpb24odGV4dE5vZGUucmVsZWFzZSgpLCBzdGFydC5v
ZmZzZXRJbkNvbnRhaW5lck5vZGUoKSArIHRleHQubGVuZ3RoKCkpOworICAgIFBvc2l0aW9uIGVu
ZFBvc2l0aW9uID0gUG9zaXRpb24oV1RGTW92ZSh0ZXh0Tm9kZSksIHN0YXJ0Lm9mZnNldEluQ29u
dGFpbmVyTm9kZSgpICsgdGV4dC5sZW5ndGgoKSk7CiAgICAgc2V0RW5kaW5nU2VsZWN0aW9uV2l0
aG91dFZhbGlkYXRpb24oc3RhcnQsIGVuZFBvc2l0aW9uKTsKICAgICBpZiAoIXNlbGVjdEluc2Vy
dGVkVGV4dCkKICAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oZW5k
aW5nU2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpLCBlbmRpbmdTZWxlY3Rpb24oKS5pc0RpcmVjdGlv
bmFsKCkpKTsKQEAgLTI0NSw3ICsyNDUsNyBAQCBQb3NpdGlvbiBJbnNlcnRUZXh0Q29tbWFuZDo6
aW5zZXJ0VGFiKGNvbnN0IFBvc2l0aW9uJiBwb3MpCiAgICAgaWYgKGlzVGFiU3BhblRleHROb2Rl
KG5vZGUpKSB7CiAgICAgICAgIFJlZlB0cjxUZXh0PiB0ZXh0Tm9kZSA9IGRvd25jYXN0PFRleHQ+
KG5vZGUpOwogICAgICAgICBpbnNlcnRUZXh0SW50b05vZGUodGV4dE5vZGUsIG9mZnNldCwgIlx0
Iik7Ci0gICAgICAgIHJldHVybiBQb3NpdGlvbih0ZXh0Tm9kZS5yZWxlYXNlKCksIG9mZnNldCAr
IDEpOworICAgICAgICByZXR1cm4gUG9zaXRpb24oV1RGTW92ZSh0ZXh0Tm9kZSksIG9mZnNldCAr
IDEpOwogICAgIH0KICAgICAKICAgICAvLyBjcmVhdGUgbmV3IHRhYiBzcGFuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21t
YW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGls
ZHJlbkNvbW1hbmQuY3BwCmluZGV4IGI2MWUyZmZhYWNlNDI5NGFkM2QyMzZjYjJjZDYyMDRhOTdk
ZmJjYjMuLjE2ZjBmNjMxMDgwOGQ0MDk2MjYwNGY3MTk2ZDNmNjdjYTE2NmI3NWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNv
bW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZVByZXNlcnZp
bmdDaGlsZHJlbkNvbW1hbmQuY3BwCkBAIC00Nyw5ICs0Nyw5IEBAIHZvaWQgUmVtb3ZlTm9kZVBy
ZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQ6OmRvQXBwbHkoKQogCiAgICAgc2l6ZV90IHNpemUgPSBj
aGlsZHJlbi5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsK
LSAgICAgICAgUmVmUHRyPE5vZGU+IGNoaWxkID0gV1RGTW92ZShjaGlsZHJlbltpXSk7CisgICAg
ICAgIGF1dG8gY2hpbGQgPSBXVEZNb3ZlKGNoaWxkcmVuW2ldKTsKICAgICAgICAgcmVtb3ZlTm9k
ZShjaGlsZCwgbV9zaG91bGRBc3N1bWVDb250ZW50SXNBbHdheXNFZGl0YWJsZSk7Ci0gICAgICAg
IGluc2VydE5vZGVCZWZvcmUoY2hpbGQucmVsZWFzZSgpLCBtX25vZGUsIG1fc2hvdWxkQXNzdW1l
Q29udGVudElzQWx3YXlzRWRpdGFibGUpOworICAgICAgICBpbnNlcnROb2RlQmVmb3JlKFdURk1v
dmUoY2hpbGQpLCBtX25vZGUsIG1fc2hvdWxkQXNzdW1lQ29udGVudElzQWx3YXlzRWRpdGFibGUp
OwogICAgIH0KICAgICByZW1vdmVOb2RlKG1fbm9kZSwgbV9zaG91bGRBc3N1bWVDb250ZW50SXNB
bHdheXNFZGl0YWJsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Jl
cGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IGVkZTg3ZGIzZmZlOWU1YzI4MTAzMWUxMmFmOGY0
YWU4ZGUyZjUyNTYuLjkyZmMzNjhmODk4YmI3ZDJjODU5MmFmZjRhYmVlODgzZDcxZGY3MGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQu
Y3BwCkBAIC0yMjksOSArMjI5LDkgQEAgdm9pZCBSZXBsYWNlbWVudEZyYWdtZW50OjpyZW1vdmVO
b2RlUHJlc2VydmluZ0NoaWxkcmVuKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSkKIAogICAgIHdoaWxl
IChSZWZQdHI8Tm9kZT4gbiA9IG5vZGUtPmZpcnN0Q2hpbGQoKSkgewogICAgICAgICByZW1vdmVO
b2RlKG4pOwotICAgICAgICBpbnNlcnROb2RlQmVmb3JlKG4ucmVsZWFzZSgpLCBub2RlLmdldCgp
KTsKKyAgICAgICAgaW5zZXJ0Tm9kZUJlZm9yZShXVEZNb3ZlKG4pLCBub2RlLmdldCgpKTsKICAg
ICB9Ci0gICAgcmVtb3ZlTm9kZShub2RlKTsKKyAgICByZW1vdmVOb2RlKFdURk1vdmUobm9kZSkp
OwogfQogCiB2b2lkIFJlcGxhY2VtZW50RnJhZ21lbnQ6OnJlbW92ZU5vZGUoUGFzc1JlZlB0cjxO
b2RlPiBub2RlKQpAQCAtNjc4LDcgKzY3OCw3IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQ6Om1vdmVOb2RlT3V0T2ZBbmNlc3RvcihQYXNzUmVmUHRyPE5vZGU+IHBycE5vZGUsIFBhCiAg
ICAgfQogICAgIGlmICghYW5jZXN0b3ItPmZpcnN0Q2hpbGQoKSkgewogICAgICAgICBpbnNlcnRl
ZE5vZGVzLndpbGxSZW1vdmVOb2RlKGFuY2VzdG9yLmdldCgpKTsKLSAgICAgICAgcmVtb3ZlTm9k
ZShhbmNlc3Rvci5yZWxlYXNlKCkpOworICAgICAgICByZW1vdmVOb2RlKGFuY2VzdG9yKTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9j
dW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAK
aW5kZXggNDdlMWFhN2U5ZDdhMTM3ZTgzYzA3ZWM0NzBhNTAyNDQxNDI2ZDJlYy4uN2RlM2Q4MDcz
MGI2MzMyYTUzOGUwZjBmZTUwNzY1OGE0YzRlMzM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKQEAgLTI4MCw3ICsyODAsNyBAQCBzdGF0aWMgaW5s
aW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKFNldHRp
bmdzKiBzZXR0aW5ncwogICAgIAogYm9vbCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6bG9h
ZERvY3VtZW50VGVtcGxhdGUoKQogewotICAgIHN0YXRpYyBTaGFyZWRCdWZmZXIqIHRlbXBsYXRl
RG9jdW1lbnREYXRhID0gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoZG9jdW1lbnQoKS0+c2V0
dGluZ3MoKSkucmVsZWFzZSgpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgU2hhcmVkQnVmZmVyKiB0
ZW1wbGF0ZURvY3VtZW50RGF0YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGRvY3VtZW50
KCktPnNldHRpbmdzKCkpLmxlYWtSZWYoKTsKICAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiBzdG9y
aW5nIHRoZSBkYXRhLCBpdCB3b3VsZCBiZSBtb3JlIGVmZmljaWVudCBpZiB3ZSBjb3VsZCBwYXJz
ZSB0aGUgdGVtcGxhdGUgZGF0YSBpbnRvIHRoZQogICAgIC8vIHRlbXBsYXRlIERvY3VtZW50IG9u
Y2UsIHN0b3JlIHRoYXQgZG9jdW1lbnQsIHRoZW4gImNvcHkiIGl0IHdoZW5ldmVyIHdlIGdldCBh
biBGVFAgZGlyZWN0b3J5IGxpc3RpbmcuCiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb250RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250
RWxlbWVudC5jcHAKaW5kZXggMzk4ZDE0NTdhNTk5YWZiZDUxMWRiMGFkMTY5OTVjZjZhYmViNWM1
OS4uYWFiNGQ5NDYxM2Q0NGZkY2Q4NWZlOGY5ZDBhNDE0MDM2YmRlNDYzMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50LmNwcApAQCAtMTk0LDggKzE5NCw4IEBAIHZvaWQgSFRN
TEZvbnRFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYKICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gY29sb3JBdHRyKQogICAgICAg
ICBhZGRIVE1MQ29sb3JUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUNvbG9yLCB2YWx1ZSk7CiAg
ICAgZWxzZSBpZiAobmFtZSA9PSBmYWNlQXR0cikgewotICAgICAgICBpZiAoUmVmUHRyPENTU1Zh
bHVlTGlzdD4gZm9udEZhY2VWYWx1ZSA9IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRl
Rm9udEZhY2VWYWx1ZSh2YWx1ZSkpCi0gICAgICAgICAgICBzdHlsZS5zZXRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRGYW1pbHksIGZvbnRGYWNlVmFsdWUucmVsZWFzZSgpKSk7
CisgICAgICAgIGlmIChhdXRvIGZvbnRGYWNlVmFsdWUgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRv
bigpLmNyZWF0ZUZvbnRGYWNlVmFsdWUodmFsdWUpKQorICAgICAgICAgICAgc3R5bGUuc2V0UHJv
cGVydHkoQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlGb250RmFtaWx5LCBXVEZNb3ZlKGZvbnRGYWNl
VmFsdWUpKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIEhUTUxFbGVtZW50Ojpjb2xsZWN0U3R5bGVG
b3JQcmVzZW50YXRpb25BdHRyaWJ1dGUobmFtZSwgdmFsdWUsIHN0eWxlKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAppbmRleCBhYzkyNzI4MWM1MmRkNWViYTRjZTll
ODkxMmJhN2Y4MThhZDkzYWIzLi42MTNmZjJkZjlmZWY1MWFhMTI0MWNkNWQyNTM3NmZjNDcxOTg4
M2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC0yODQsOCAr
Mjg0LDggQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnByZXBhcmVGb3JTdWJtaXNzaW9uKEV2ZW50
KiBldmVudCkKIAogICAgIFN0cmluZ1BhaXJWZWN0b3IgY29udHJvbE5hbWVzQW5kVmFsdWVzOwog
ICAgIGdldFRleHRGaWVsZFZhbHVlcyhjb250cm9sTmFtZXNBbmRWYWx1ZXMpOwotICAgIFJlZlB0
cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSA9IEZvcm1TdGF0ZTo6Y3JlYXRlKHRoaXMsIGNvbnRyb2xO
YW1lc0FuZFZhbHVlcywgJmRvY3VtZW50KCksIE5vdFN1Ym1pdHRlZEJ5SmF2YVNjcmlwdCk7Ci0g
ICAgZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChm
b3JtU3RhdGUucmVsZWFzZSgpKTsKKyAgICBhdXRvIGZvcm1TdGF0ZSA9IEZvcm1TdGF0ZTo6Y3Jl
YXRlKHRoaXMsIGNvbnRyb2xOYW1lc0FuZFZhbHVlcywgJmRvY3VtZW50KCksIE5vdFN1Ym1pdHRl
ZEJ5SmF2YVNjcmlwdCk7CisgICAgZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoV2ls
bFNlbmRTdWJtaXRFdmVudChXVEZNb3ZlKGZvcm1TdGF0ZSkpOwogCiAgICAgUmVmPEhUTUxGb3Jt
RWxlbWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgLy8gRXZlbnQgaGFuZGxpbmcgY2Fu
IHJlc3VsdCBpbiBtX3Nob3VsZFN1Ym1pdCBiZWNvbWluZyB0cnVlLCByZWdhcmRsZXNzIG9mIGRp
c3BhdGNoRXZlbnQoKSByZXR1cm4gdmFsdWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVF
bGVtZW50LmNwcAppbmRleCAxZjUyNGZkZThiN2FmNTAxZTg2ZDk2MDk0NDU5OTVmMTZkNTI3MmE2
Li44N2YyYjc2MWY4NzE5YWViNWU2N2ViOGFkZTU1ODEwMGMxOGRkNmJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKQEAgLTQzNSwxMiArNDM1LDEyIEBAIHZvaWQg
SFRNTFRhYmxlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSwgY29uc3QgQXRvbWljU3RyCiAKIHN0YXRpYyBTdHlsZVByb3BlcnRpZXMqIGxlYWtCb3JkZXJT
dHlsZShDU1NWYWx1ZUlEIHZhbHVlKQogewotICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzPiBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOworICAgIGF1dG8g
c3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0
UHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwgdmFsdWUpOwogICAgIHN0eWxlLT5z
ZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCB2YWx1ZSk7CiAgICAgc3R5
bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCB2YWx1ZSk7CiAgICAg
c3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgdmFsdWUpOwot
ICAgIHJldHVybiBzdHlsZS5yZWxlYXNlKCkubGVha1JlZigpOworICAgIHJldHVybiAmc3R5bGUu
bGVha1JlZigpOwogfQogCiBjb25zdCBTdHlsZVByb3BlcnRpZXMqIEhUTUxUYWJsZUVsZW1lbnQ6
OmFkZGl0aW9uYWxQcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgpIGNvbnN0CkBAIC01MzksNyAr
NTM5LDcgQEAgY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBIVE1MVGFibGVFbGVtZW50OjphZGRpdGlv
bmFsQ2VsbFN0eWxlKCkKIAogc3RhdGljIFN0eWxlUHJvcGVydGllcyogbGVha0dyb3VwQm9yZGVy
U3R5bGUoaW50IHJvd3MpCiB7Ci0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IHN0
eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CisgICAgYXV0byBzdHlsZSA9
IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogICAgIGlmIChyb3dzKSB7CiAgICAg
ICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBDU1NWYWx1
ZVRoaW4pOwogICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJCb3R0
b21XaWR0aCwgQ1NTVmFsdWVUaGluKTsKQEAgLTU1MSw3ICs1NTEsNyBAQCBzdGF0aWMgU3R5bGVQ
cm9wZXJ0aWVzKiBsZWFrR3JvdXBCb3JkZXJTdHlsZShpbnQgcm93cykKICAgICAgICAgc3R5bGUt
PnNldFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsK
ICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwg
Q1NTVmFsdWVTb2xpZCk7CiAgICAgfQotICAgIHJldHVybiBzdHlsZS5yZWxlYXNlKCkubGVha1Jl
ZigpOworICAgIHJldHVybiAmc3R5bGUubGVha1JlZigpOwogfQogCiBjb25zdCBTdHlsZVByb3Bl
cnRpZXMqIEhUTUxUYWJsZUVsZW1lbnQ6OmFkZGl0aW9uYWxHcm91cFN0eWxlKGJvb2wgcm93cykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3Bw
CmluZGV4IDNhYWQ5YjY1NTI1NTJkZjA1ZGQyMDZhZWJmNDJhNmRiZjVkNGFlYTQuLmU2MjJkMGRm
YzM5MmI1ZWNhMmM0NGIxZjIzOTFlNGZhYTdjNDkyNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMjEwLDcgKzIxMCw3IEBA
IHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpydW5TY3JpcHRzRm9yUGF1c2VkVHJlZUJ1aWxkZXIo
KQogICAgICAgICBBU1NFUlQoIW1fdHJlZUJ1aWxkZXItPmhhc1BhcnNlckJsb2NraW5nU2NyaXB0
V29yaygpKTsKICAgICAgICAgLy8gV2Ugd2lsbCBub3QgaGF2ZSBhIHNjcmlwdFJ1bm5lciB3aGVu
IHBhcnNpbmcgYSBEb2N1bWVudEZyYWdtZW50LgogICAgICAgICBpZiAobV9zY3JpcHRSdW5uZXIp
Ci0gICAgICAgICAgICBtX3NjcmlwdFJ1bm5lci0+ZXhlY3V0ZShzY3JpcHRFbGVtZW50LnJlbGVh
c2UoKSwgc2NyaXB0U3RhcnRQb3NpdGlvbik7CisgICAgICAgICAgICBtX3NjcmlwdFJ1bm5lci0+
ZXhlY3V0ZShXVEZNb3ZlKHNjcmlwdEVsZW1lbnQpLCBzY3JpcHRTdGFydFBvc2l0aW9uKTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kRGF0
YVRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZERhdGFUZXh0
VHJhY2suY3BwCmluZGV4IDEzYWNhZDExYWVhMDIyYjhlNTBhN2M4MjlhYmY2ZjQ5MWI0ZWNiMGMu
LjdiZjI3YWUyMDA2ZDc5Mzg2Nzg4ZTY3M2RhNjgyMGZlZTA5Yjk4ZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRUcmFjay5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmREYXRhVGV4dFRyYWNrLmNwcApAQCAtNTQsOCAr
NTQsOCBAQCBJbmJhbmREYXRhVGV4dFRyYWNrOjp+SW5iYW5kRGF0YVRleHRUcmFjaygpCiAKIHZv
aWQgSW5iYW5kRGF0YVRleHRUcmFjazo6YWRkRGF0YUN1ZShJbmJhbmRUZXh0VHJhY2tQcml2YXRl
KiwgY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIGNvbnN0IHZv
aWQqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKIHsKLSAgICBSZWZQdHI8RGF0YUN1ZT4gY3VlID0g
RGF0YUN1ZTo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHN0YXJ0LCBlbmQsIGRh
dGEsIGxlbmd0aCk7Ci0gICAgYWRkQ3VlKGN1ZS5yZWxlYXNlKCksIEFTU0VSVF9OT19FWENFUFRJ
T04pOworICAgIGF1dG8gY3VlID0gRGF0YUN1ZTo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksIHN0YXJ0LCBlbmQsIGRhdGEsIGxlbmd0aCk7CisgICAgYWRkQ3VlKFdURk1vdmUoY3Vl
KSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiB9CiAKICNpZiBFTkFCTEUoREFUQUNVRV9WQUxVRSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRU
cmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJh
Y2suY3BwCmluZGV4IDI0OWYxY2NhNGQ4ZDg0ZTYzZmVlMzFjYzFhNDVlZDJiMzQ2YzI2NWYuLjdk
YzAyN2M1NzkyNmNmMDFhN2JlYjhiZTk1OTFiYWJlNTJjNWQ1ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcApAQCAtMjIx
LDEzICsyMjEsMTMgQEAgdm9pZCBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpuZXdDdWVzUGFyc2Vk
KCkKICAgICBwYXJzZXIoKS5nZXROZXdDdWVzKGN1ZXMpOwogCiAgICAgZm9yIChhdXRvJiBjdWVE
YXRhIDogY3VlcykgewotICAgICAgICBSZWZQdHI8VlRUQ3VlPiB2dHRDdWUgPSBWVFRDdWU6OmNy
ZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqY3VlRGF0YSk7CisgICAgICAgIGF1dG8g
dnR0Q3VlID0gVlRUQ3VlOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKmN1ZURh
dGEpOwogCi0gICAgICAgIGlmIChoYXNDdWUodnR0Q3VlLmdldCgpLCBUZXh0VHJhY2tDdWU6Okln
bm9yZUR1cmF0aW9uKSkgeworICAgICAgICBpZiAoaGFzQ3VlKHZ0dEN1ZS5wdHIoKSwgVGV4dFRy
YWNrQ3VlOjpJZ25vcmVEdXJhdGlvbikpIHsKICAgICAgICAgICAgIExPRyhNZWRpYSwgIkluYmFu
ZEdlbmVyaWNUZXh0VHJhY2s6Om5ld0N1ZXNQYXJzZWQgaWdub3JpbmcgYWxyZWFkeSBhZGRlZCBj
dWU6IHN0YXJ0PSUuMmYsIGVuZD0lLjJmLCBjb250ZW50PVwiJXNcIlxuIiwgdnR0Q3VlLT5zdGFy
dFRpbWUoKSwgdnR0Q3VlLT5lbmRUaW1lKCksIHZ0dEN1ZS0+dGV4dCgpLnV0ZjgoKS5kYXRhKCkp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGFkZEN1ZSh2dHRDdWUu
cmVsZWFzZSgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICAgICAgYWRkQ3VlKFdURk1vdmUo
dnR0Q3VlKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAKaW5kZXggMDlh
ZWVkNGUxZTU4YWE4OGJhYTU4MDcyY2E5ZTMxYmU2ZDhhZjI4NC4uOTliNDk0NTg4MTcyMDM2ODNh
NThlNThiZjIyM2VlYjY1M2YwMjg4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcApAQCAtNzYsMTMgKzc2LDEzIEBAIHZvaWQg
SW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpuZXdDdWVzUGFyc2VkKCkKICAgICBwYXJzZXIoKS5nZXRO
ZXdDdWVzKGN1ZXMpOwogCiAgICAgZm9yIChhdXRvJiBjdWVEYXRhIDogY3VlcykgewotICAgICAg
ICBSZWZQdHI8VlRUQ3VlPiB2dHRDdWUgPSBWVFRDdWU6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLCAqY3VlRGF0YSk7CisgICAgICAgIGF1dG8gdnR0Q3VlID0gVlRUQ3VlOjpjcmVh
dGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKmN1ZURhdGEpOwogCi0gICAgICAgIGlmICho
YXNDdWUodnR0Q3VlLmdldCgpLCBUZXh0VHJhY2tDdWU6Oklnbm9yZUR1cmF0aW9uKSkgeworICAg
ICAgICBpZiAoaGFzQ3VlKHZ0dEN1ZS5wdHIoKSwgVGV4dFRyYWNrQ3VlOjpJZ25vcmVEdXJhdGlv
bikpIHsKICAgICAgICAgICAgIExPRyhNZWRpYSwgIkluYmFuZFdlYlZUVFRleHRUcmFjazo6bmV3
Q3Vlc1BhcnNlZCBpZ25vcmluZyBhbHJlYWR5IGFkZGVkIGN1ZTogc3RhcnQ9JS4yZiwgZW5kPSUu
MmYsIGNvbnRlbnQ9XCIlc1wiXG4iLCB2dHRDdWUtPnN0YXJ0VGltZSgpLCB2dHRDdWUtPmVuZFRp
bWUoKSwgdnR0Q3VlLT50ZXh0KCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KLSAgICAgICAgYWRkQ3VlKHZ0dEN1ZS5yZWxlYXNlKCksIEFTU0VSVF9OT19F
WENFUFRJT04pOworICAgICAgICBhZGRDdWUoV1RGTW92ZSh2dHRDdWUpLCBBU1NFUlRfTk9fRVhD
RVBUSU9OKTsKICAgICB9CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1RleHRUcmFja0N1ZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2tDdWVMaXN0LmNwcAppbmRleCA2YjM5Mjk5ZGQzOTBhNGI3YzZkNGZiMTNlMDc2Mjkw
ZjJiODFkNjRhLi5mZmQ4ZWFlNGQ5OTM2NDgwYTZhNWJjMzU5MmZlMDgwYjcxNmUxM2ExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUxpc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlTGlzdC5jcHAKQEAgLTEw
MSw5ICsxMDEsOSBAQCBib29sIFRleHRUcmFja0N1ZUxpc3Q6OmFkZChQYXNzUmVmUHRyPFRleHRU
cmFja0N1ZT4gcHJwQ3VlLCBzaXplX3Qgc3RhcnQsIHNpemVfdAogCiAgICAgc2l6ZV90IGluZGV4
ID0gKHN0YXJ0ICsgZW5kKSAvIDI7CiAgICAgaWYgKGN1ZS0+aXNPcmRlcmVkQmVmb3JlKG1fbGlz
dFtpbmRleF0uZ2V0KCkpKQotICAgICAgICByZXR1cm4gYWRkKGN1ZS5yZWxlYXNlKCksIHN0YXJ0
LCBpbmRleCk7CisgICAgICAgIHJldHVybiBhZGQoV1RGTW92ZShjdWUpLCBzdGFydCwgaW5kZXgp
OwogCi0gICAgcmV0dXJuIGFkZChjdWUucmVsZWFzZSgpLCBpbmRleCArIDEsIGVuZCk7CisgICAg
cmV0dXJuIGFkZChXVEZNb3ZlKGN1ZSksIGluZGV4ICsgMSwgZW5kKTsKIH0KIAogYm9vbCBUZXh0
VHJhY2tDdWVMaXN0OjpyZW1vdmUoVGV4dFRyYWNrQ3VlKiBjdWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCAwNTQ4MGNhMjAzYjM4OGQ5
YTk1YmQzNDdjODUzYzViNmE0NWJmNjRjLi4zZDExMTFhYzQ5OWVjZWMwYWQ5Mzg3ZTUzYTg4YmVi
NjI2Nzg1MDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NB
Z2VudC5jcHAKQEAgLTYzMiw3ICs2MzIsMTAgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0
SW5saW5lU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2QKIAog
ICAgIGlubGluZVN0eWxlID0gc3R5bGVTaGVldC0+YnVpbGRPYmplY3RGb3JTdHlsZShlbGVtZW50
LT5jc3NvbVN0eWxlKCkpOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNT
U1N0eWxlPiBhdHRyaWJ1dGVzID0gYnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVzU3R5bGUoZWxlbWVu
dCk7Ci0gICAgYXR0cmlidXRlc1N0eWxlID0gYXR0cmlidXRlcyA/IGF0dHJpYnV0ZXMucmVsZWFz
ZSgpIDogbnVsbHB0cjsKKyAgICBpZiAoYXR0cmlidXRlcykKKyAgICAgICAgYXR0cmlidXRlc1N0
eWxlID0gV1RGTW92ZShhdHRyaWJ1dGVzKTsKKyAgICBlbHNlCisgICAgICAgIGF0dHJpYnV0ZXNT
dHlsZSA9IG51bGxwdHI7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldENvbXB1dGVk
U3R5bGVGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NT
Q29tcHV0ZWRTdHlsZVByb3BlcnR5Pj4mIHN0eWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggZDBjM2RhMTdhNmM5Y2NkMGQxZDgyOTEy
ZmMyNTU3NmY2OTgzMTY3Yi4uODdkMDJhY2ZjN2ZlMmE1YzI4YjkxMDQ0YTM2ZGU4ZDdlYjAzOWRj
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
CkBAIC00NjIsOCArNDYyLDggQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cHVzaENoaWxkTm9k
ZXNUb0Zyb250ZW5kKGludCBub2RlSWQsIGludCBkZXB0aCkKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlBy
b3RvY29sOjpET006Ok5vZGU+PiBjaGlsZHJlbiA9IGJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGls
ZHJlbihub2RlLCBkZXB0aCwgbm9kZU1hcCk7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnNl
dENoaWxkTm9kZXMobm9kZUlkLCBjaGlsZHJlbi5yZWxlYXNlKCkpOworICAgIGF1dG8gY2hpbGRy
ZW4gPSBidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4obm9kZSwgZGVwdGgsIG5vZGVNYXAp
OworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5zZXRDaGlsZE5vZGVzKG5vZGVJZCwgV1RGTW92
ZShjaGlsZHJlbikpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaXNjYXJkQmluZGlu
Z3MoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4
ZWREQkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVk
REJBZ2VudC5jcHAKaW5kZXggZWJlZGU5ZGY5YTA1MzcwMTY4ZWE0NGNhZTJmMDRjZTg3OGJlZmE3
OS4uMzM3MDU0NjdjM2I1YzBhMTc5NDZkZmUxNjk2NGViZDdmYTUzNDgyNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCkBA
IC0zMzAsNyArMzMwLDcgQEAgc3RhdGljIFJlZlB0cjxJREJLZXk+IGlkYktleUZyb21JbnNwZWN0
b3JPYmplY3QoSW5zcGVjdG9yT2JqZWN0KiBrZXkpCiAgICAgfSBlbHNlCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgcmV0dXJuIGlkYktleS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGlk
YktleTsKIH0KIAogc3RhdGljIFJlZlB0cjxJREJLZXlSYW5nZT4gaWRiS2V5UmFuZ2VGcm9tS2V5
UmFuZ2UoY29uc3QgSW5zcGVjdG9yT2JqZWN0KiBrZXlSYW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggNDMxNTRiMzk3
NGRhN2E5NzlhMjZkMTgyOWM3MWQ0MTliNjI3Y2Q3NS4uOTE4Njg2ZWEzMmVmMGZlMGJjNDE4NWRi
YjgyYjhmMDcxZjhjNDZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTY4Miw3ICs2ODIsNyBAQCB2b2lkIEluc3BlY3Rv
ck5ldHdvcmtBZ2VudDo6bG9hZFJlc291cmNlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgU3RyaW5nJgogICAgIC8vIEluc3BlY3RvclRocmVhZGFibGVMb2FkZXJDbGllbnQgZGVsZXRl
cyBpdHNlbGYgd2hlbiB0aGUgbG9hZCBjb21wbGV0ZXMuCiAgICAgSW5zcGVjdG9yVGhyZWFkYWJs
ZUxvYWRlckNsaWVudCogaW5zcGVjdG9yVGhyZWFkYWJsZUxvYWRlckNsaWVudCA9IG5ldyBJbnNw
ZWN0b3JUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KGNhbGxiYWNrLmNvcHlSZWYoKSk7CiAKLSAgICBS
ZWZQdHI8RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyPiBsb2FkZXIgPSBEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI6OmNyZWF0ZSgqZG9jdW1lbnQsICppbnNwZWN0b3JUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50LCByZXF1ZXN0LCBvcHRpb25zKTsKKyAgICBhdXRvIGxvYWRlciA9IERvY3VtZW50VGhyZWFk
YWJsZUxvYWRlcjo6Y3JlYXRlKCpkb2N1bWVudCwgKmluc3BlY3RvclRocmVhZGFibGVMb2FkZXJD
bGllbnQsIHJlcXVlc3QsIG9wdGlvbnMpOwogICAgIGlmICghbG9hZGVyKSB7CiAgICAgICAgIGlu
c3BlY3RvclRocmVhZGFibGVMb2FkZXJDbGllbnQtPmRpZEZhaWxMb2FkZXJDcmVhdGlvbigpOwog
ICAgICAgICByZXR1cm47CkBAIC02OTIsNyArNjkyLDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3Jr
QWdlbnQ6OmxvYWRSZXNvdXJjZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYKICAgICBpZiAoIWNhbGxiYWNrLT5pc0FjdGl2ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpbnNwZWN0b3JUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LT5zZXRMb2FkZXIobG9hZGVyLnJlbGVh
c2UoKSk7CisgICAgaW5zcGVjdG9yVGhyZWFkYWJsZUxvYWRlckNsaWVudC0+c2V0TG9hZGVyKFdU
Rk1vdmUobG9hZGVyKSk7CiB9CiAKIHN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFn
ZTo6U2VhcmNoUmVzdWx0PiBidWlsZE9iamVjdEZvclNlYXJjaFJlc3VsdChjb25zdCBTdHJpbmcm
IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCwgaW50
IG1hdGNoZXNDb3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JT
dHlsZVNoZWV0LmNwcAppbmRleCA2ZDU3M2NlOWMxMWZjNWQyM2ZlNzc4ZDU2ZjczNDEzM2E0MjU4
YjMzLi43ZGU5OGFhZDI5ODhiNzZhNmU1NjZiNDAwZWMxZGIwNDc1NWI5ZTgzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC05MjUs
NyArOTI1LDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U2VsZWN0b3JMaXN0PiBJ
bnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9iamVjdEZvclMKICAgICAgICAgICAgIHNlbGVjdG9y
cy0+YWRkSXRlbShidWlsZE9iamVjdEZvclNlbGVjdG9yKHNlbGVjdG9yLCBlbGVtZW50KSk7CiAg
ICAgfQogICAgIGF1dG8gcmVzdWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTZWxlY3Rv
ckxpc3Q6OmNyZWF0ZSgpCi0gICAgICAgIC5zZXRTZWxlY3RvcnMoc2VsZWN0b3JzLnJlbGVhc2Uo
KSkKKyAgICAgICAgLnNldFNlbGVjdG9ycyhXVEZNb3ZlKHNlbGVjdG9ycykpCiAgICAgICAgIC5z
ZXRUZXh0KHNlbGVjdG9yVGV4dCkKICAgICAgICAgLnJlbGVhc2UoKTsKICAgICBpZiAoc291cmNl
RGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCmluZGV4IGJlYzEy
MjNkNzY2Y2EyYjczMGQ4ZTkwMWM4NWI2MzJmMDMwMGQ2ZTMuLjQxMjA2MDk4MzBkNDM1ZjY0NThk
ODZmMGEyY2Y3OWNmNjY3YTY0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
b3JtU3VibWlzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNz
aW9uLmNwcApAQCAtMjM4LDggKzIzOCw4IEBAIFJlZjxGb3JtU3VibWlzc2lvbj4gRm9ybVN1Ym1p
c3Npb246OmNyZWF0ZShIVE1MRm9ybUVsZW1lbnQqIGZvcm0sIGNvbnN0IEF0dHJpYnV0CiAgICAg
Zm9ybURhdGEtPnNldElkZW50aWZpZXIoZ2VuZXJhdGVGb3JtRGF0YUlkZW50aWZpZXIoKSk7CiAg
ICAgZm9ybURhdGEtPnNldENvbnRhaW5zUGFzc3dvcmREYXRhKGNvbnRhaW5zUGFzc3dvcmREYXRh
KTsKICAgICBTdHJpbmcgdGFyZ2V0T3JCYXNlVGFyZ2V0ID0gY29waWVkQXR0cmlidXRlcy50YXJn
ZXQoKS5pc0VtcHR5KCkgPyBkb2N1bWVudC5iYXNlVGFyZ2V0KCkgOiBjb3BpZWRBdHRyaWJ1dGVz
LnRhcmdldCgpOwotICAgIFJlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSA9IEZvcm1TdGF0ZTo6
Y3JlYXRlKGZvcm0sIGZvcm1WYWx1ZXMsICZkb2N1bWVudCwgdHJpZ2dlcik7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRm9ybVN1Ym1pc3Npb24oY29waWVkQXR0cmlidXRlcy5tZXRob2QoKSwg
YWN0aW9uVVJMLCB0YXJnZXRPckJhc2VUYXJnZXQsIGVuY29kaW5nVHlwZSwgZm9ybVN0YXRlLnJl
bGVhc2UoKSwgZm9ybURhdGEucmVsZWFzZSgpLCBib3VuZGFyeSwgbG9ja0hpc3RvcnksIGV2ZW50
KSk7CisgICAgYXV0byBmb3JtU3RhdGUgPSBGb3JtU3RhdGU6OmNyZWF0ZShmb3JtLCBmb3JtVmFs
dWVzLCAmZG9jdW1lbnQsIHRyaWdnZXIpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvcm1T
dWJtaXNzaW9uKGNvcGllZEF0dHJpYnV0ZXMubWV0aG9kKCksIGFjdGlvblVSTCwgdGFyZ2V0T3JC
YXNlVGFyZ2V0LCBlbmNvZGluZ1R5cGUsIFdURk1vdmUoZm9ybVN0YXRlKSwgV1RGTW92ZShmb3Jt
RGF0YSksIGJvdW5kYXJ5LCBsb2NrSGlzdG9yeSwgZXZlbnQpKTsKIH0KIAogVVJMIEZvcm1TdWJt
aXNzaW9uOjpyZXF1ZXN0VVJMKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCmluZGV4IGQ4NmE0NDU1YmY3ZjFmZjNjNjM4YWY2ZTc0YjRhOTZjNTg4NGM2NWUuLmQyYmUy
MzJlMDZkZmExZTc4YWNlYzA4NDNjZGFlZWU0Njg2ZDRhZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcApAQCAtODc0LDkgKzg3NCw5IEBAIHZvaWQgRnJhbWVMb2FkZXI6Omxv
YWRVUkxJbnRvQ2hpbGRGcmFtZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcmVy
LCBGCiAgICAgQVNTRVJUKGNoaWxkRnJhbWUpOwogCiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8
fCBFTkFCTEUoTUhUTUwpCi0gICAgUmVmUHRyPEFyY2hpdmU+IHN1YmZyYW1lQXJjaGl2ZSA9IGFj
dGl2ZURvY3VtZW50TG9hZGVyKCktPnBvcEFyY2hpdmVGb3JTdWJmcmFtZShjaGlsZEZyYW1lLT50
cmVlKCkudW5pcXVlTmFtZSgpLCB1cmwpOworICAgIGF1dG8gc3ViZnJhbWVBcmNoaXZlID0gYWN0
aXZlRG9jdW1lbnRMb2FkZXIoKS0+cG9wQXJjaGl2ZUZvclN1YmZyYW1lKGNoaWxkRnJhbWUtPnRy
ZWUoKS51bmlxdWVOYW1lKCksIHVybCk7CiAgICAgaWYgKHN1YmZyYW1lQXJjaGl2ZSkgewotICAg
ICAgICBjaGlsZEZyYW1lLT5sb2FkZXIoKS5sb2FkQXJjaGl2ZShzdWJmcmFtZUFyY2hpdmUucmVs
ZWFzZSgpKTsKKyAgICAgICAgY2hpbGRGcmFtZS0+bG9hZGVyKCkubG9hZEFyY2hpdmUoV1RGTW92
ZShzdWJmcmFtZUFyY2hpdmUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZiAvLyBF
TkFCTEUoV0VCX0FSQ0hJVkUpCkBAIC0xMjE0LDcgKzEyMTQsNyBAQCB2b2lkIEZyYW1lTG9hZGVy
Ojpsb2FkVVJMKGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIGZyYW1lTG9hZFJlcXVlc3QsIGNvbnN0
IFN0cmluZwogICAgIGlmICh0YXJnZXRGcmFtZSAmJiB0YXJnZXRGcmFtZSAhPSAmbV9mcmFtZSkg
ewogICAgICAgICBGcmFtZUxvYWRSZXF1ZXN0IG5ld0ZyYW1lTG9hZFJlcXVlc3QoZnJhbWVMb2Fk
UmVxdWVzdCk7CiAgICAgICAgIG5ld0ZyYW1lTG9hZFJlcXVlc3Quc2V0RnJhbWVOYW1lKCJfc2Vs
ZiIpOwotICAgICAgICB0YXJnZXRGcmFtZS0+bG9hZGVyKCkubG9hZFVSTChuZXdGcmFtZUxvYWRS
ZXF1ZXN0LCByZWZlcnJlciwgbmV3TG9hZFR5cGUsIGV2ZW50LCBmb3JtU3RhdGUucmVsZWFzZSgp
KTsKKyAgICAgICAgdGFyZ2V0RnJhbWUtPmxvYWRlcigpLmxvYWRVUkwobmV3RnJhbWVMb2FkUmVx
dWVzdCwgcmVmZXJyZXIsIG5ld0xvYWRUeXBlLCBldmVudCwgV1RGTW92ZShmb3JtU3RhdGUpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTIyNSw3ICsxMjI1LDcgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6bG9hZFVSTChjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiBmcmFtZUxvYWRSZXF1ZXN0
LCBjb25zdCBTdHJpbmcKIAogICAgIGlmICghdGFyZ2V0RnJhbWUgJiYgIWZyYW1lTmFtZS5pc0Vt
cHR5KCkpIHsKICAgICAgICAgYWN0aW9uID0gYWN0aW9uLmNvcHlXaXRoU2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeShzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9BcHBseShtX2ZyYW1l
LCBmcmFtZUxvYWRSZXF1ZXN0LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSkpOwotICAg
ICAgICBwb2xpY3lDaGVja2VyKCkuY2hlY2tOZXdXaW5kb3dQb2xpY3koYWN0aW9uLCByZXF1ZXN0
LCBmb3JtU3RhdGUucmVsZWFzZSgpLCBmcmFtZU5hbWUsIFt0aGlzLCBhbGxvd05hdmlnYXRpb25U
b0ludmFsaWRVUkwsIG9wZW5lclBvbGljeV0oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFt
ZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBib29sIHNob3VsZENvbnRpbnVlKSB7
CisgICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05ld1dpbmRvd1BvbGljeShhY3Rpb24sIHJl
cXVlc3QsIFdURk1vdmUoZm9ybVN0YXRlKSwgZnJhbWVOYW1lLCBbdGhpcywgYWxsb3dOYXZpZ2F0
aW9uVG9JbnZhbGlkVVJMLCBvcGVuZXJQb2xpY3ldKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFt
ZU5hbWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgYm9vbCBzaG91bGRDb250aW51
ZSkgewogICAgICAgICAgICAgY29udGludWVMb2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3kocmVxdWVz
dCwgZm9ybVN0YXRlLCBmcmFtZU5hbWUsIGFjdGlvbiwgc2hvdWxkQ29udGludWUsIGFsbG93TmF2
aWdhdGlvblRvSW52YWxpZFVSTCwgb3BlbmVyUG9saWN5KTsKICAgICAgICAgfSk7CiAgICAgICAg
IHJldHVybjsKQEAgLTEyNDQsNyArMTI0NCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwo
Y29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVMb2FkUmVxdWVzdCwgY29uc3QgU3RyaW5nCiAg
ICAgICAgIG9sZERvY3VtZW50TG9hZGVyLT5zZXRMYXN0Q2hlY2tlZFJlcXVlc3QoUmVzb3VyY2VS
ZXF1ZXN0KCkpOwogICAgICAgICBwb2xpY3lDaGVja2VyKCkuc3RvcENoZWNrKCk7CiAgICAgICAg
IHBvbGljeUNoZWNrZXIoKS5zZXRMb2FkVHlwZShuZXdMb2FkVHlwZSk7Ci0gICAgICAgIHBvbGlj
eUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Qb2xpY3kocmVxdWVzdCwgZmFsc2UgLyogZGlkUmVj
ZWl2ZVJlZGlyZWN0UmVzcG9uc2UgKi8sIG9sZERvY3VtZW50TG9hZGVyLmdldCgpLCBmb3JtU3Rh
dGUucmVsZWFzZSgpLCBbdGhpc10oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQYXNz
UmVmUHRyPEZvcm1TdGF0ZT4sIGJvb2wgc2hvdWxkQ29udGludWUpIHsKKyAgICAgICAgcG9saWN5
Q2hlY2tlcigpLmNoZWNrTmF2aWdhdGlvblBvbGljeShyZXF1ZXN0LCBmYWxzZSAvKiBkaWRSZWNl
aXZlUmVkaXJlY3RSZXNwb25zZSAqLywgb2xkRG9jdW1lbnRMb2FkZXIuZ2V0KCksIFdURk1vdmUo
Zm9ybVN0YXRlKSwgW3RoaXNdKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFzc1Jl
ZlB0cjxGb3JtU3RhdGU+LCBib29sIHNob3VsZENvbnRpbnVlKSB7CiAgICAgICAgICAgICBjb250
aW51ZUZyYWdtZW50U2Nyb2xsQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KHJlcXVlc3QsIHNob3VsZENv
bnRpbnVlKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKQEAgLTEyNTIsNyArMTI1Miw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwoY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgZnJh
bWVMb2FkUmVxdWVzdCwgY29uc3QgU3RyaW5nCiAKICAgICAvLyBtdXN0IGdyYWIgdGhpcyBub3cs
IHNpbmNlIHRoaXMgbG9hZCBtYXkgc3RvcCB0aGUgcHJldmlvdXMgbG9hZCBhbmQgY2xlYXIgdGhp
cyBmbGFnCiAgICAgYm9vbCBpc1JlZGlyZWN0ID0gbV9xdWlja1JlZGlyZWN0Q29taW5nOwotICAg
IGxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0LCBhY3Rpb24sIGxvY2tIaXN0b3J5LCBu
ZXdMb2FkVHlwZSwgZm9ybVN0YXRlLnJlbGVhc2UoKSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlk
VVJMKTsKKyAgICBsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdCwgYWN0aW9uLCBsb2Nr
SGlzdG9yeSwgbmV3TG9hZFR5cGUsIFdURk1vdmUoZm9ybVN0YXRlKSwgYWxsb3dOYXZpZ2F0aW9u
VG9JbnZhbGlkVVJMKTsKICAgICBpZiAoaXNSZWRpcmVjdCkgewogICAgICAgICBtX3F1aWNrUmVk
aXJlY3RDb21pbmcgPSBmYWxzZTsKICAgICAgICAgaWYgKG1fcHJvdmlzaW9uYWxEb2N1bWVudExv
YWRlcikKQEAgLTI3MDIsMTEgKzI3MDIsMTEgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RS
ZXF1ZXN0KGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYKICAg
ICBpZiAoIWZyYW1lTmFtZS5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gVGhlIHNlYXJjaCBmb3Ig
YSB0YXJnZXQgZnJhbWUgaXMgZG9uZSBlYXJsaWVyIGluIHRoZSBjYXNlIG9mIGZvcm0gc3VibWlz
c2lvbi4KICAgICAgICAgaWYgKEZyYW1lKiB0YXJnZXRGcmFtZSA9IGZvcm1TdGF0ZSA/IDAgOiBm
aW5kRnJhbWVGb3JOYXZpZ2F0aW9uKGZyYW1lTmFtZSkpIHsKLSAgICAgICAgICAgIHRhcmdldEZy
YW1lLT5sb2FkZXIoKS5sb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24od29ya2luZ1Jlc291cmNlUmVx
dWVzdCwgYWN0aW9uLCBsb2NrSGlzdG9yeSwgbG9hZFR5cGUsIGZvcm1TdGF0ZS5yZWxlYXNlKCks
IGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCk7CisgICAgICAgICAgICB0YXJnZXRGcmFtZS0+
bG9hZGVyKCkubG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKHdvcmtpbmdSZXNvdXJjZVJlcXVlc3Qs
IGFjdGlvbiwgbG9ja0hpc3RvcnksIGxvYWRUeXBlLCBXVEZNb3ZlKGZvcm1TdGF0ZSksIGFsbG93
TmF2aWdhdGlvblRvSW52YWxpZFVSTCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICBwb2xpY3lDaGVja2VyKCkuY2hlY2tOZXdXaW5kb3dQb2xpY3koYWN0aW9uLCB3
b3JraW5nUmVzb3VyY2VSZXF1ZXN0LCBmb3JtU3RhdGUucmVsZWFzZSgpLCBmcmFtZU5hbWUsIFt0
aGlzLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIG9wZW5lclBvbGljeV0oY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlLCBj
b25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBi
b29sIHNob3VsZENvbnRpbnVlKSB7CisgICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05ld1dp
bmRvd1BvbGljeShhY3Rpb24sIHdvcmtpbmdSZXNvdXJjZVJlcXVlc3QsIFdURk1vdmUoZm9ybVN0
YXRlKSwgZnJhbWVOYW1lLCBbdGhpcywgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBvcGVu
ZXJQb2xpY3ldKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFzc1JlZlB0cjxGb3Jt
U3RhdGU+IGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IE5hdmlnYXRp
b25BY3Rpb24mIGFjdGlvbiwgYm9vbCBzaG91bGRDb250aW51ZSkgewogICAgICAgICAgICAgY29u
dGludWVMb2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3kocmVxdWVzdCwgZm9ybVN0YXRlLCBmcmFtZU5h
bWUsIGFjdGlvbiwgc2hvdWxkQ29udGludWUsIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwg
b3BlbmVyUG9saWN5KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKQEAgLTI3MTQsNyAr
MjcxNCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdChjb25zdCBGcmFtZUxv
YWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmCiAKICAgICAvLyBtdXN0IGdyYWIgdGhp
cyBub3csIHNpbmNlIHRoaXMgbG9hZCBtYXkgc3RvcCB0aGUgcHJldmlvdXMgbG9hZCBhbmQgY2xl
YXIgdGhpcyBmbGFnCiAgICAgYm9vbCBpc1JlZGlyZWN0ID0gbV9xdWlja1JlZGlyZWN0Q29taW5n
OwotICAgIGxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbih3b3JraW5nUmVzb3VyY2VSZXF1ZXN0LCBh
Y3Rpb24sIGxvY2tIaXN0b3J5LCBsb2FkVHlwZSwgZm9ybVN0YXRlLnJlbGVhc2UoKSwgYWxsb3dO
YXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKKyAgICBsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24od29y
a2luZ1Jlc291cmNlUmVxdWVzdCwgYWN0aW9uLCBsb2NrSGlzdG9yeSwgbG9hZFR5cGUsIFdURk1v
dmUoZm9ybVN0YXRlKSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKICAgICBpZiAoaXNS
ZWRpcmVjdCkgewogICAgICAgICBtX3F1aWNrUmVkaXJlY3RDb21pbmcgPSBmYWxzZTsKICAgICAg
ICAgaWYgKG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Byb2dyZXNzVHJhY2tlci5jcHAKaW5kZXggZDU2Y2EwNWRiOTkwYjMwYTZiMDdkMTJmYjJjMDll
OTk2Yjc5NzIwZi4uNzUyZWVmYzM3ODA2ODRkM2I1NWM2NDllMzAwYjYzOGQ4NjNjZDIwZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKQEAgLTE2OCw3ICsxNjgs
NyBAQCB2b2lkIFByb2dyZXNzVHJhY2tlcjo6ZmluYWxQcm9ncmVzc0NvbXBsZXRlKCkKIHsKICAg
ICBMT0coUHJvZ3Jlc3MsICJGaW5hbCBwcm9ncmVzcyBjb21wbGV0ZSAoJXApIiwgdGhpcyk7CiAg
ICAgCi0gICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9IG1fb3JpZ2luYXRpbmdQcm9ncmVzc0ZyYW1l
LnJlbGVhc2UoKTsKKyAgICBhdXRvIGZyYW1lID0gV1RGTW92ZShtX29yaWdpbmF0aW5nUHJvZ3Jl
c3NGcmFtZSk7CiAgICAgCiAgICAgLy8gQmVmb3JlIHJlc2V0dGluZyBwcm9ncmVzcyB2YWx1ZSBi
ZSBzdXJlIHRvIHNlbmQgY2xpZW50IGEgbGVhc3Qgb25lIG5vdGlmaWNhdGlvbgogICAgIC8vIHdp
dGggZmluYWwgcHJvZ3Jlc3MgdmFsdWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDU5NGNjZTZjYTYz
YTdhOTU1M2YwYTEzY2I4NzU1NmYwNTlhYWY3NGEuLjM3YWM3NWRiZjUwMWM0OGI2NmQwNWJlNDU5
NTNhNTYxN2NmOTJlMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC0zNjksNyArMzY5LDcgQEAgdm9p
ZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpc2Fzc29jaWF0ZURvY3VtZW50TG9hZGVyKERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIpCiAKICAgICAvLyBSZWxlYXNlIG91ciByZWZlcmVuY2UgdG8gdGhl
IG5ld2VzdCBjYWNoZS4gVGhpcyBjb3VsZCBjYXVzZSB1cyB0byBiZSBkZWxldGVkLgogICAgIC8v
IEFueSBvbmdvaW5nIHVwZGF0ZXMgd2lsbCBiZSBzdG9wcGVkIGZyb20gZGVzdHJ1Y3Rvci4KLSAg
ICBtX25ld2VzdENhY2hlLnJlbGVhc2UoKTsKKyAgICBtX25ld2VzdENhY2hlID0gbnVsbHB0cjsK
IH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNhY2hlRGVzdHJveWVkKEFwcGxpY2F0
aW9uQ2FjaGUqIGNhY2hlKQpAQCAtNTk0LDcgKzU5NCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNo
ZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGRvdWJsZSBm
aW5pCiAgICAgCiAgICAgQVNTRVJUKG1fY2FjaGVCZWluZ1VwZGF0ZWQpOwogCi0gICAgbV9jYWNo
ZUJlaW5nVXBkYXRlZC0+YWRkUmVzb3VyY2UobV9jdXJyZW50UmVzb3VyY2UucmVsZWFzZSgpKTsK
KyAgICBtX2NhY2hlQmVpbmdVcGRhdGVkLT5hZGRSZXNvdXJjZShXVEZNb3ZlKG1fY3VycmVudFJl
c291cmNlKSk7CiAgICAgbV9jdXJyZW50SGFuZGxlID0gbnVsbHB0cjsKIAogICAgIC8vIFdoaWxl
IGRvd25sb2FkaW5nIGNoZWNrIHRvIHNlZSBpZiB3ZSBoYXZlIGV4Y2VlZGVkIHRoZSBhdmFpbGFi
bGUgcXVvdGEuCkBAIC04NjgsNyArODY4LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6
OmNoZWNrSWZMb2FkSXNDb21wbGV0ZSgpCiAKICAgICAgICAgQVNTRVJUKG1fY2FjaGVCZWluZ1Vw
ZGF0ZWQpOwogICAgICAgICBpZiAobV9tYW5pZmVzdFJlc291cmNlKQotICAgICAgICAgICAgbV9j
YWNoZUJlaW5nVXBkYXRlZC0+c2V0TWFuaWZlc3RSZXNvdXJjZShtX21hbmlmZXN0UmVzb3VyY2Uu
cmVsZWFzZSgpKTsKKyAgICAgICAgICAgIG1fY2FjaGVCZWluZ1VwZGF0ZWQtPnNldE1hbmlmZXN0
UmVzb3VyY2UoV1RGTW92ZShtX21hbmlmZXN0UmVzb3VyY2UpKTsKICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICAvLyBXZSBjYW4gZ2V0IGhlcmUgYXMgYSByZXN1bHQgb2YgcmV0cnlpbmcgdGhl
IENvbXBsZXRlIHN0ZXAsIGZvbGxvd2luZwogICAgICAgICAgICAgLy8gYSBmYWlsdXJlIG9mIHRo
ZSBjYWNoZSBzdG9yYWdlIHRvIHNhdmUgdGhlIG5ld2VzdCBjYWNoZSBkdWUgdG8gaGl0dGluZwpA
QCAtODg4LDcgKzg4OCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpjaGVja0lmTG9h
ZElzQ29tcGxldGUoKQogICAgICAgICAgICAgZGlkUmVhY2hPcmlnaW5RdW90YSh0b3RhbFNwYWNl
TmVlZGVkKTsKIAogICAgICAgICBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6RmFpbHVyZVJlYXNv
biBmYWlsdXJlUmVhc29uOwotICAgICAgICBzZXROZXdlc3RDYWNoZShtX2NhY2hlQmVpbmdVcGRh
dGVkLnJlbGVhc2UoKSk7CisgICAgICAgIHNldE5ld2VzdENhY2hlKFdURk1vdmUobV9jYWNoZUJl
aW5nVXBkYXRlZCkpOwogICAgICAgICBpZiAobV9zdG9yYWdlLT5zdG9yZU5ld2VzdENhY2hlKHRo
aXMsIG9sZE5ld2VzdENhY2hlLmdldCgpLCBmYWlsdXJlUmVhc29uKSkgewogICAgICAgICAgICAg
Ly8gTmV3IGNhY2hlIHN0b3JlZCwgbm93IHJlbW92ZSB0aGUgb2xkIGNhY2hlLgogICAgICAgICAg
ICAgaWYgKG9sZE5ld2VzdENhY2hlKQpAQCAtOTE5LDEwICs5MTksMTAgQEAgdm9pZCBBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OmNoZWNrSWZMb2FkSXNDb21wbGV0ZSgpCiAgICAgICAgICAgICAgICAg
Ly8gc2F2ZSB0aGUgbmV3IGNhY2hlLgogCiAgICAgICAgICAgICAgICAgLy8gU2F2ZSBhIHJlZmVy
ZW5jZSB0byB0aGUgbmV3IGNhY2hlLgotICAgICAgICAgICAgICAgIG1fY2FjaGVCZWluZ1VwZGF0
ZWQgPSBtX25ld2VzdENhY2hlLnJlbGVhc2UoKTsKKyAgICAgICAgICAgICAgICBtX2NhY2hlQmVp
bmdVcGRhdGVkID0gV1RGTW92ZShtX25ld2VzdENhY2hlKTsKICAgICAgICAgICAgICAgICBpZiAo
b2xkTmV3ZXN0Q2FjaGUpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gUmVpbnN0YXRlIHRoZSBv
bGROZXdlc3RDYWNoZS4KLSAgICAgICAgICAgICAgICAgICAgc2V0TmV3ZXN0Q2FjaGUob2xkTmV3
ZXN0Q2FjaGUucmVsZWFzZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0TmV3ZXN0Q2FjaGUo
V1RGTW92ZShvbGROZXdlc3RDYWNoZSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICBzY2hlZHVsZVJlYWNoZWRNYXhBcHBDYWNoZVNpemVDYWxsYmFjaygpOwogICAgICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTk0NSw3ICs5NDUsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVH
cm91cDo6Y2hlY2tJZkxvYWRJc0NvbXBsZXRlKCkKICAgICAgICAgICAgIC8vIFJlaW5zdGF0ZSB0
aGUgb2xkTmV3ZXN0Q2FjaGUsIGlmIHRoZXJlIHdhcyBvbmUuCiAgICAgICAgICAgICBpZiAob2xk
TmV3ZXN0Q2FjaGUpIHsKICAgICAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgZGlzY2FyZCB0aGUg
ZmFpbGVkIG5ldyBjYWNoZS4KLSAgICAgICAgICAgICAgICBzZXROZXdlc3RDYWNoZShvbGROZXdl
c3RDYWNoZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgICAgIHNldE5ld2VzdENhY2hlKFdURk1v
dmUob2xkTmV3ZXN0Q2FjaGUpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgLy8gV2UgbXVzdCBoYXZlIGJlZW4gZGVsZXRlZCBieSB0aGUgbGFzdCBjYWxsIHRvIGRpc2Fz
c29jaWF0ZURvY3VtZW50TG9hZGVyKCkuCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHAKaW5kZXggNTA0ZGE3ZmZjNGM1ZmNlZDY1YWQ5MjE4NDVlMzc5ZGM0ODY1NDEy
Yy4uMGRkYTU2NDVkYWFmNDdiNzEyZjA0MGZmM2JlYmZmOWI3ZGM1YmU1MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UuY3BwCkBAIC0xMjEsMTQgKzEyMSwxNCBAQCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGVHcm91cChjb25zdCBVUkwmIG1hbmlmZQog
ICAgIAogICAgIHVuc2lnbmVkIG5ld2VzdENhY2hlU3RvcmFnZUlEID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHN0YXRlbWVudC5nZXRDb2x1bW5JbnQ2NCgyKSk7CiAKLSAgICBSZWZQdHI8QXBwbGlj
YXRpb25DYWNoZT4gY2FjaGUgPSBsb2FkQ2FjaGUobmV3ZXN0Q2FjaGVTdG9yYWdlSUQpOworICAg
IGF1dG8gY2FjaGUgPSBsb2FkQ2FjaGUobmV3ZXN0Q2FjaGVTdG9yYWdlSUQpOwogICAgIGlmICgh
Y2FjaGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAKICAgICBBcHBsaWNhdGlv
bkNhY2hlR3JvdXAqIGdyb3VwID0gbmV3IEFwcGxpY2F0aW9uQ2FjaGVHcm91cCgqdGhpcywgbWFu
aWZlc3RVUkwpOwogICAgICAgCiAgICAgZ3JvdXAtPnNldFN0b3JhZ2VJRChzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oc3RhdGVtZW50LmdldENvbHVtbkludDY0KDApKSk7Ci0gICAgZ3JvdXAtPnNldE5l
d2VzdENhY2hlKGNhY2hlLnJlbGVhc2UoKSk7CisgICAgZ3JvdXAtPnNldE5ld2VzdENhY2hlKFdU
Rk1vdmUoY2FjaGUpKTsKIAogICAgIHJldHVybiBncm91cDsKIH0gICAgCkBAIC0yMzksNyArMjM5
LDcgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2Fj
aGVHcm91cEZvclVSTChjb25zdCBVUkwmIHVybCkKICAgICAgICAgLy8gV2UgZm91bmQgYSBjYWNo
ZSBncm91cCB0aGF0IG1hdGNoZXMuIE5vdyBjaGVjayBpZiB0aGUgbmV3ZXN0IGNhY2hlIGhhcyBh
IHJlc291cmNlIHdpdGgKICAgICAgICAgLy8gYSBtYXRjaGluZyBVUkwuCiAgICAgICAgIHVuc2ln
bmVkIG5ld2VzdENhY2hlSUQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhdGVtZW50LmdldENv
bHVtbkludDY0KDIpKTsKLSAgICAgICAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IGNhY2hlID0g
bG9hZENhY2hlKG5ld2VzdENhY2hlSUQpOworICAgICAgICBhdXRvIGNhY2hlID0gbG9hZENhY2hl
KG5ld2VzdENhY2hlSUQpOwogICAgICAgICBpZiAoIWNhY2hlKQogICAgICAgICAgICAgY29udGlu
dWU7CiAKQEAgLTI1Miw3ICsyNTIsNyBAQCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlOjpjYWNoZUdyb3VwRm9yVVJMKGNvbnN0IFVSTCYgdXJsKQogICAgICAg
ICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGdyb3VwID0gbmV3IEFwcGxpY2F0aW9uQ2FjaGVHcm91
cCgqdGhpcywgbWFuaWZlc3RVUkwpOwogICAgICAgICAKICAgICAgICAgZ3JvdXAtPnNldFN0b3Jh
Z2VJRChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhdGVtZW50LmdldENvbHVtbkludDY0KDApKSk7
Ci0gICAgICAgIGdyb3VwLT5zZXROZXdlc3RDYWNoZShjYWNoZS5yZWxlYXNlKCkpOworICAgICAg
ICBncm91cC0+c2V0TmV3ZXN0Q2FjaGUoV1RGTW92ZShjYWNoZSkpOwogICAgICAgICAKICAgICAg
ICAgbV9jYWNoZXNJbk1lbW9yeS5zZXQoZ3JvdXAtPm1hbmlmZXN0VVJMKCksIGdyb3VwKTsKICAg
ICAgICAgCkBAIC0zMDksNyArMzA5LDcgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6ZmFsbGJhY2tDYWNoZUdyb3VwRm9yVVJMKGNvbnN0IFUKICAgICAg
ICAgLy8gV2UgZm91bmQgYSBjYWNoZSBncm91cCB0aGF0IG1hdGNoZXMuIE5vdyBjaGVjayBpZiB0
aGUgbmV3ZXN0IGNhY2hlIGhhcyBhIHJlc291cmNlIHdpdGgKICAgICAgICAgLy8gYSBtYXRjaGlu
ZyBmYWxsYmFjayBuYW1lc3BhY2UuCiAgICAgICAgIHVuc2lnbmVkIG5ld2VzdENhY2hlSUQgPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhdGVtZW50LmdldENvbHVtbkludDY0KDIpKTsKLSAgICAg
ICAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IGNhY2hlID0gbG9hZENhY2hlKG5ld2VzdENhY2hl
SUQpOworICAgICAgICBhdXRvIGNhY2hlID0gbG9hZENhY2hlKG5ld2VzdENhY2hlSUQpOwogCiAg
ICAgICAgIFVSTCBmYWxsYmFja1VSTDsKICAgICAgICAgaWYgKGNhY2hlLT5pc1VSTEluT25saW5l
V2hpdGVsaXN0KHVybCkpCkBAIC0zMjIsNyArMzIyLDcgQEAgQXBwbGljYXRpb25DYWNoZUdyb3Vw
KiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZmFsbGJhY2tDYWNoZUdyb3VwRm9yVVJMKGNvbnN0
IFUKICAgICAgICAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBncm91cCA9IG5ldyBBcHBsaWNhdGlv
bkNhY2hlR3JvdXAoKnRoaXMsIG1hbmlmZXN0VVJMKTsKICAgICAgICAgCiAgICAgICAgIGdyb3Vw
LT5zZXRTdG9yYWdlSUQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXRlbWVudC5nZXRDb2x1bW5J
bnQ2NCgwKSkpOwotICAgICAgICBncm91cC0+c2V0TmV3ZXN0Q2FjaGUoY2FjaGUucmVsZWFzZSgp
KTsKKyAgICAgICAgZ3JvdXAtPnNldE5ld2VzdENhY2hlKFdURk1vdmUoY2FjaGUpKTsKICAgICAg
ICAgCiAgICAgICAgIG1fY2FjaGVzSW5NZW1vcnkuc2V0KGdyb3VwLT5tYW5pZmVzdFVSTCgpLCBn
cm91cCk7CiAgICAgICAgIApAQCAtMTExOSw3ICsxMTE5LDcgQEAgUGFzc1JlZlB0cjxBcHBsaWNh
dGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKHVuc2lnbmVkIHN0
b3JhZ2UKICAgICAKICAgICBjYWNoZVN0YXRlbWVudC5iaW5kSW50NjQoMSwgc3RvcmFnZUlEKTsK
IAotICAgIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBjYWNoZSA9IEFwcGxpY2F0aW9uQ2FjaGU6
OmNyZWF0ZSgpOworICAgIGF1dG8gY2FjaGUgPSBBcHBsaWNhdGlvbkNhY2hlOjpjcmVhdGUoKTsK
IAogICAgIFN0cmluZyBmbGF0RmlsZURpcmVjdG9yeSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChtX2NhY2hlRGlyZWN0b3J5LCBtX2ZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7CiAKQEAgLTEx
MzQsNyArMTEzNCw3IEBAIFBhc3NSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSh1bnNpZ25lZCBzdG9yYWdlCiAgICAgICAgIFZlY3Rvcjxj
aGFyPiBibG9iOwogICAgICAgICBjYWNoZVN0YXRlbWVudC5nZXRDb2x1bW5CbG9iQXNWZWN0b3Io
NiwgYmxvYik7CiAgICAgICAgIAotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhID0g
U2hhcmVkQnVmZmVyOjphZG9wdFZlY3RvcihibG9iKTsKKyAgICAgICAgYXV0byBkYXRhID0gU2hh
cmVkQnVmZmVyOjphZG9wdFZlY3RvcihibG9iKTsKICAgICAgICAgCiAgICAgICAgIFN0cmluZyBw
YXRoID0gY2FjaGVTdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCg3KTsKICAgICAgICAgbG9uZyBsb25n
IHNpemUgPSAwOwpAQCAtMTE1NCwxMiArMTE1NCwxMiBAQCBQYXNzUmVmUHRyPEFwcGxpY2F0aW9u
Q2FjaGU+IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUodW5zaWduZWQgc3RvcmFn
ZQogICAgICAgICBTdHJpbmcgaGVhZGVycyA9IGNhY2hlU3RhdGVtZW50LmdldENvbHVtblRleHQo
NSk7CiAgICAgICAgIHBhcnNlSGVhZGVycyhoZWFkZXJzLCByZXNwb25zZSk7CiAgICAgICAgIAot
ICAgICAgICBSZWZQdHI8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiByZXNvdXJjZSA9IEFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKHVybCwgcmVzcG9uc2UsIHR5cGUsIGRhdGEucmVs
ZWFzZSgpLCBwYXRoKTsKKyAgICAgICAgYXV0byByZXNvdXJjZSA9IEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZTo6Y3JlYXRlKHVybCwgcmVzcG9uc2UsIHR5cGUsIFdURk1vdmUoZGF0YSksIHBhdGgp
OwogCiAgICAgICAgIGlmICh0eXBlICYgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpNYW5pZmVz
dCkKLSAgICAgICAgICAgIGNhY2hlLT5zZXRNYW5pZmVzdFJlc291cmNlKHJlc291cmNlLnJlbGVh
c2UoKSk7CisgICAgICAgICAgICBjYWNoZS0+c2V0TWFuaWZlc3RSZXNvdXJjZShXVEZNb3ZlKHJl
c291cmNlKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNhY2hlLT5hZGRSZXNvdXJjZShy
ZXNvdXJjZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgY2FjaGUtPmFkZFJlc291cmNlKFdURk1v
dmUocmVzb3VyY2UpKTsKICAgICB9CiAKICAgICBpZiAocmVzdWx0ICE9IFNRTElURV9ET05FKQpA
QCAtMTIxNyw3ICsxMjE3LDcgQEAgUGFzc1JlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2UKICAgICAKICAgICBj
YWNoZS0+c2V0U3RvcmFnZUlEKHN0b3JhZ2VJRCk7CiAKLSAgICByZXR1cm4gY2FjaGUucmVsZWFz
ZSgpOworICAgIHJldHVybiBXVEZNb3ZlKGNhY2hlKTsKIH0gICAgCiAgICAgCiB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpyZW1vdmUoQXBwbGljYXRpb25DYWNoZSogY2FjaGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xs
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJj
ZUNvbGxlY3Rpb24uY3BwCmluZGV4IDdlZWU3ODM2MGM5OTU4NDU3ODRhMTAzOWZhNWQ4YzYzOTAw
YjEzMTYuLjk4ZjZjMWUyZmExZDRhNTA5MTMwMGQ1ODc4MDQ0MjExZDhmN2IyM2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJj
ZUNvbGxlY3Rpb24uY3BwCkBAIC03Niw5ICs3Niw5IEBAIEFyY2hpdmVSZXNvdXJjZSogQXJjaGl2
ZVJlc291cmNlQ29sbGVjdGlvbjo6YXJjaGl2ZVJlc291cmNlRm9yVVJMKGNvbnN0IFVSTCYgdXJs
CiAKIFBhc3NSZWZQdHI8QXJjaGl2ZT4gQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjo6cG9wU3Vi
ZnJhbWVBcmNoaXZlKGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBVUkwmIHVybCkKIHsK
LSAgICBSZWZQdHI8QXJjaGl2ZT4gYXJjaGl2ZSA9IG1fc3ViZnJhbWVzLnRha2UoZnJhbWVOYW1l
KTsKKyAgICBhdXRvIGFyY2hpdmUgPSBtX3N1YmZyYW1lcy50YWtlKGZyYW1lTmFtZSk7CiAgICAg
aWYgKGFyY2hpdmUpCi0gICAgICAgIHJldHVybiBhcmNoaXZlLnJlbGVhc2UoKTsKKyAgICAgICAg
cmV0dXJuIFdURk1vdmUoYXJjaGl2ZSk7CiAKICAgICByZXR1cm4gbV9zdWJmcmFtZXMudGFrZSh1
cmwuc3RyaW5nKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRleCA2ZjVmZWZlZGRkNDBhOTJlMTQ1ZmRkMWQx
MmNmNWFjNzM5ZDdjOWNhLi5lMDQ5MDYzMDA4MWEwMTJhNDMzMzI2YmUyNDIzMTgyN2RkZmNlOTcx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJB
cmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lX
ZWJBcmNoaXZlLmNwcApAQCAtMzM0LDggKzMzNCw4IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6
ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChS
ZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBzdWJyZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHN1YnJl
c291cmNlRGljdCkpCi0gICAgICAgICAgICAgICAgYWRkU3VicmVzb3VyY2Uoc3VicmVzb3VyY2Uu
cmVsZWFzZSgpKTsKKyAgICAgICAgICAgIGlmIChhdXRvIHN1YnJlc291cmNlID0gY3JlYXRlUmVz
b3VyY2Uoc3VicmVzb3VyY2VEaWN0KSkKKyAgICAgICAgICAgICAgICBhZGRTdWJyZXNvdXJjZShX
VEZNb3ZlKHN1YnJlc291cmNlKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCkBAIC0zNTQsOSAr
MzU0LDkgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBk
aWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIAotICAgICAgICAgICAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IHN1YmZy
YW1lQXJjaGl2ZSA9IGNyZWF0ZSgpOworICAgICAgICAgICAgYXV0byBzdWJmcmFtZUFyY2hpdmUg
PSBjcmVhdGUoKTsKICAgICAgICAgICAgIGlmIChzdWJmcmFtZUFyY2hpdmUtPmV4dHJhY3Qoc3Vi
ZnJhbWVEaWN0KSkKLSAgICAgICAgICAgICAgICBhZGRTdWJmcmFtZUFyY2hpdmUoc3ViZnJhbWVB
cmNoaXZlLnJlbGVhc2UoKSk7CisgICAgICAgICAgICAgICAgYWRkU3ViZnJhbWVBcmNoaXZlKFdU
Rk1vdmUoc3ViZnJhbWVBcmNoaXZlKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg
ICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIEludmFsaWQgc3ViZnJhbWUgYXJj
aGl2ZSBza2lwcGVkIik7CiAgICAgICAgIH0KQEAgLTU0Nyw4ICs1NDcsOCBAQCBSZWZQdHI8TGVn
YWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWFy
a3VwU3RyaW5nLCBGcgogICAgICAgICBjb25zdCBTdHJpbmcmIGljb25VUkwgPSBpY29uRGF0YWJh
c2UoKS5zeW5jaHJvbm91c0ljb25VUkxGb3JQYWdlVVJMKHJlc3BvbnNlVVJMKTsKICAgICAgICAg
aWYgKCFpY29uVVJMLmlzRW1wdHkoKSAmJiBpY29uRGF0YWJhc2UoKS5zeW5jaHJvbm91c0ljb25E
YXRhS25vd25Gb3JJY29uVVJMKGljb25VUkwpKSB7CiAgICAgICAgICAgICBpZiAoSW1hZ2UqIGlj
b25JbWFnZSA9IGljb25EYXRhYmFzZSgpLnN5bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwocmVzcG9u
c2VVUkwsIEludFNpemUoMTYsIDE2KSkpIHsKLSAgICAgICAgICAgICAgICBpZiAoUmVmUHRyPEFy
Y2hpdmVSZXNvdXJjZT4gcmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShpY29uSW1h
Z2UtPmRhdGEoKSwgVVJMKFBhcnNlZFVSTFN0cmluZywgaWNvblVSTCksICJpbWFnZS94LWljb24i
LCAiIiwgIiIpKQotICAgICAgICAgICAgICAgICAgICBzdWJyZXNvdXJjZXMuYXBwZW5kKHJlc291
cmNlLnJlbGVhc2UoKSk7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8gcmVzb3VyY2UgPSBBcmNo
aXZlUmVzb3VyY2U6OmNyZWF0ZShpY29uSW1hZ2UtPmRhdGEoKSwgVVJMKFBhcnNlZFVSTFN0cmlu
ZywgaWNvblVSTCksICJpbWFnZS94LWljb24iLCAiIiwgIiIpKQorICAgICAgICAgICAgICAgICAg
ICBzdWJyZXNvdXJjZXMuYXBwZW5kKFdURk1vdmUocmVzb3VyY2UpKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgIH0KQEAgLTU4Miw5ICs1ODIsOSBAQCBSZWZQdHI8TGVnYWN5V2ViQXJj
aGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUp
CiAgICAgLy8gV3JhcCB0aGUgZnJhbWVzZXQgZG9jdW1lbnQgaW4gYW4gaWZyYW1lIHNvIGl0IGNh
biBiZSBwYXN0ZWQgaW50bwogICAgIC8vIGFub3RoZXIgZG9jdW1lbnQgKHdoaWNoIHdpbGwgaGF2
ZSBhIGJvZHkgb3IgZnJhbWVzZXQgb2YgaXRzIG93bikuIAogICAgIFN0cmluZyBpZnJhbWVNYXJr
dXAgPSAiPGlmcmFtZSBmcmFtZWJvcmRlcj1cIm5vXCIgbWFyZ2lud2lkdGg9XCIwXCIgbWFyZ2lu
aGVpZ2h0PVwiMFwiIHdpZHRoPVwiOTglJVwiIGhlaWdodD1cIjk4JSVcIiBzcmM9XCIiICsgZnJh
bWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkudXJsKCkuc3RyaW5nKCkg
KyAiXCI+PC9pZnJhbWU+IjsKLSAgICBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBpZnJhbWVSZXNv
dXJjZSA9IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKHV0ZjhCdWZmZXIoaWZyYW1lTWFya3VwKSwg
YmxhbmtVUkwoKSwgInRleHQvaHRtbCIsICJVVEYtOCIsIFN0cmluZygpKTsKKyAgICBhdXRvIGlm
cmFtZVJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUodXRmOEJ1ZmZlcihpZnJhbWVN
YXJrdXApLCBibGFua1VSTCgpLCAidGV4dC9odG1sIiwgIlVURi04IiwgU3RyaW5nKCkpOwogCi0g
ICAgcmV0dXJuIGNyZWF0ZShpZnJhbWVSZXNvdXJjZS5yZWxlYXNlKCksIFZlY3RvcjxSZWZQdHI8
QXJjaGl2ZVJlc291cmNlPj4oKSwgVmVjdG9yPFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPj4geyBh
cmNoaXZlIH0pOworICAgIHJldHVybiBjcmVhdGUoV1RGTW92ZShpZnJhbWVSZXNvdXJjZSksIFZl
Y3RvcjxSZWZQdHI8QXJjaGl2ZVJlc291cmNlPj4oKSwgVmVjdG9yPFJlZlB0cjxMZWdhY3lXZWJB
cmNoaXZlPj4geyBhcmNoaXZlIH0pOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCA0ZjU0NTI1NGRjODkyNDYxZDkyYWNkZDQ2MmY3NjQz
ZDlkNjRlZTc1Li45NmVlZjdmZTk3MGJlMTlhNWRlZDA4N2ZlOWZlN2ZiNWZkMzg5YTM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTMzNCw5ICsz
MzQsOSBAQCBpbmxpbmUgdm9pZCBDYWNoZWRJbWFnZTo6Y3JlYXRlSW1hZ2UoKQogICAgICAgICBt
X2ltYWdlID0gUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlKHRoaXMpOwogI2VuZGlmCiAgICAgZWxz
ZSBpZiAobV9yZXNwb25zZS5taW1lVHlwZSgpID09ICJpbWFnZS9zdmcreG1sIikgewotICAgICAg
ICBSZWZQdHI8U1ZHSW1hZ2U+IHN2Z0ltYWdlID0gU1ZHSW1hZ2U6OmNyZWF0ZSgqdGhpcywgdXJs
KCkpOwotICAgICAgICBtX3N2Z0ltYWdlQ2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0ltYWdl
Q2FjaGU+KHN2Z0ltYWdlLmdldCgpKTsKLSAgICAgICAgbV9pbWFnZSA9IHN2Z0ltYWdlLnJlbGVh
c2UoKTsKKyAgICAgICAgYXV0byBzdmdJbWFnZSA9IFNWR0ltYWdlOjpjcmVhdGUoKnRoaXMsIHVy
bCgpKTsKKyAgICAgICAgbV9zdmdJbWFnZUNhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdJbWFn
ZUNhY2hlPihzdmdJbWFnZS5wdHIoKSk7CisgICAgICAgIG1faW1hZ2UgPSBXVEZNb3ZlKHN2Z0lt
YWdlKTsKICAgICB9IGVsc2UgewogICAgICAgICBtX2ltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0
ZSh0aGlzKTsKICAgICAgICAgZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCptX2ltYWdlKS5zZXRBbGxv
d1N1YnNhbXBsaW5nKG1fbG9hZGVyICYmIG1fbG9hZGVyLT5mcmFtZUxvYWRlcigpLT5mcmFtZSgp
LnNldHRpbmdzKCkuaW1hZ2VTdWJzYW1wbGluZ0VuYWJsZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAppbmRleCBlMWVkYTVjYWExZDAwNWMwY2RlYTEx
M2M2NWIwNTk4Mzk1MzRmMDcyLi5lZTQzN2U4NjI4ZWJmNGU4NjMyN2NjNzcwMzBmNWY2OTRlMzBi
YjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKQEAg
LTU1OCw3ICs1NTgsNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6c2V0SWNvbkRhdGFGb3JJY29uVVJM
KFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhT3JpZ2luYWwsCiAgICAgICAgICAgICBpY29u
ID0gZ2V0T3JDcmVhdGVJY29uUmVjb3JkKGljb25VUkwpOwogICAgIAogICAgICAgICAvLyBVcGRh
dGUgdGhlIGRhdGEgYW5kIHNldCB0aGUgdGltZSBzdGFtcAotICAgICAgICBpY29uLT5zZXRJbWFn
ZURhdGEoZGF0YS5yZWxlYXNlKCkpOworICAgICAgICBpY29uLT5zZXRJbWFnZURhdGEoV1RGTW92
ZShkYXRhKSk7CiAgICAgICAgIGljb24tPnNldFRpbWVzdGFtcCgoaW50KWN1cnJlbnRUaW1lKCkp
OwogICAgICAgICAKICAgICAgICAgLy8gQ29weSB0aGUgY3VycmVudCByZXRhaW5pbmcgcGFnZVVS
THMgLSBpZiBhbnkgLSB0byBub3RpZnkgdGhlbSBvZiB0aGUgY2hhbmdlCkBAIC04OTMsMTAgKzg5
MywxMCBAQCBQYXNzUmVmUHRyPEljb25SZWNvcmQ+IEljb25EYXRhYmFzZTo6Z2V0T3JDcmVhdGVJ
Y29uUmVjb3JkKGNvbnN0IFN0cmluZyYgaWNvblVSTAogICAgIGlmIChJY29uUmVjb3JkKiBpY29u
ID0gbV9pY29uVVJMVG9SZWNvcmRNYXAuZ2V0KGljb25VUkwpKQogICAgICAgICByZXR1cm4gaWNv
bjsKIAotICAgIFJlZlB0cjxJY29uUmVjb3JkPiBuZXdJY29uID0gSWNvblJlY29yZDo6Y3JlYXRl
KGljb25VUkwpOwotICAgIG1faWNvblVSTFRvUmVjb3JkTWFwLnNldChpY29uVVJMLCBuZXdJY29u
LmdldCgpKTsKKyAgICBhdXRvIG5ld0ljb24gPSBJY29uUmVjb3JkOjpjcmVhdGUoaWNvblVSTCk7
CisgICAgbV9pY29uVVJMVG9SZWNvcmRNYXAuc2V0KGljb25VUkwsIG5ld0ljb24ucHRyKCkpOwog
Ci0gICAgcmV0dXJuIG5ld0ljb24ucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKG5ld0lj
b24pOwogfQogCiAvLyBUaGlzIG1ldGhvZCByZXRyaWV2ZXMgdGhlIGV4aXN0aW5nIFBhZ2VVUkxS
ZWNvcmQsIG9yIGNyZWF0ZXMgYSBuZXcgb25lIGFuZCBtYXJrcyBpdCBhcyAiaW50ZXJlc3RlZCBp
biB0aGUgaW1wb3J0IiBmb3IgbGF0ZXIgbm90aWZpY2F0aW9uCkBAIC0xNDkzLDcgKzE0OTMsNyBA
QCBib29sIEljb25EYXRhYmFzZTo6cmVhZEZyb21EYXRhYmFzZSgpCiAgICAgCiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGljb25zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGRpZEFueVdv
cmsgPSB0cnVlOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZURhdGEgPSBnZXRJ
bWFnZURhdGFGb3JJY29uVVJMRnJvbVNRTERhdGFiYXNlKGljb25zW2ldLT5pY29uVVJMKCkpOwor
ICAgICAgICBhdXRvIGltYWdlRGF0YSA9IGdldEltYWdlRGF0YUZvckljb25VUkxGcm9tU1FMRGF0
YWJhc2UoaWNvbnNbaV0tPmljb25VUkwoKSk7CiAKICAgICAgICAgLy8gVmVyaWZ5IHRoaXMgaWNv
biBzdGlsbCB3YW50cyB0byBiZSByZWFkIGZyb20gZGlzawogICAgICAgICB7CkBAIC0xNTAzLDcg
KzE1MDMsNyBAQCBib29sIEljb25EYXRhYmFzZTo6cmVhZEZyb21EYXRhYmFzZSgpCiAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKG1faWNvbnNQZW5kaW5nUmVhZGluZy5jb250
YWlucyhpY29uc1tpXSkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gU2V0IHRoZSBuZXcgZGF0
YQotICAgICAgICAgICAgICAgICAgICBpY29uc1tpXS0+c2V0SW1hZ2VEYXRhKGltYWdlRGF0YS5y
ZWxlYXNlKCkpOworICAgICAgICAgICAgICAgICAgICBpY29uc1tpXS0+c2V0SW1hZ2VEYXRhKFdU
Rk1vdmUoaW1hZ2VEYXRhKSk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
ICAgICAvLyBSZW1vdmUgdGhpcyBpY29uIGZyb20gdGhlIHNldCB0aGF0IG5lZWRzIHRvIGJlIHJl
YWQKICAgICAgICAgICAgICAgICAgICAgbV9pY29uc1BlbmRpbmdSZWFkaW5nLnJlbW92ZShpY29u
c1tpXSk7CkBAIC0xOTM2LDcgKzE5MzYsNyBAQCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSWNv
bkRhdGFiYXNlOjpnZXRJbWFnZURhdGFGb3JJY29uVVJMRnJvbVNRTERhdGFiYXNlKGNvbgogCiAg
ICAgbV9nZXRJbWFnZURhdGFGb3JJY29uVVJMU3RhdGVtZW50LT5yZXNldCgpOwogICAgIAotICAg
IHJldHVybiBpbWFnZURhdGEucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKGltYWdlRGF0
YSk7CiB9CiAKIHZvaWQgSWNvbkRhdGFiYXNlOjpyZW1vdmVJY29uRnJvbVNRTERhdGFiYXNlKGNv
bnN0IFN0cmluZyYgaWNvblVSTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCAxMTli
ZDQ2YTBkNmZjM2QzNTMyYTk4MjRkNzQ1Y2FmNDIxYTdkOTViLi5lYTlhZDQyMDlhYTcyZDgyNTAy
NzlhNzE0ZWUwNDc3NjY3NTM0MDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC04
MTIsMTMgKzgxMiwxMyBAQCBTdG9yYWdlKiBET01XaW5kb3c6OnNlc3Npb25TdG9yYWdlKEV4Y2Vw
dGlvbkNvZGUmIGVjKSBjb25zdAogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIDA7CiAK
LSAgICBSZWZQdHI8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhID0gcGFnZS0+c2Vzc2lvblN0b3Jh
Z2UoKS0+c3RvcmFnZUFyZWEoZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpOworICAgIGF1dG8g
c3RvcmFnZUFyZWEgPSBwYWdlLT5zZXNzaW9uU3RvcmFnZSgpLT5zdG9yYWdlQXJlYShkb2N1bWVu
dC0+c2VjdXJpdHlPcmlnaW4oKSk7CiAgICAgaWYgKCFzdG9yYWdlQXJlYS0+Y2FuQWNjZXNzU3Rv
cmFnZShtX2ZyYW1lKSkgewogICAgICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgfQogCi0gICAgbV9zZXNzaW9uU3RvcmFnZSA9IFN0b3JhZ2U6OmNyZWF0ZSht
X2ZyYW1lLCBzdG9yYWdlQXJlYS5yZWxlYXNlKCkpOworICAgIG1fc2Vzc2lvblN0b3JhZ2UgPSBT
dG9yYWdlOjpjcmVhdGUobV9mcmFtZSwgV1RGTW92ZShzdG9yYWdlQXJlYSkpOwogICAgIHJldHVy
biBtX3Nlc3Npb25TdG9yYWdlLmdldCgpOwogfQogCkBAIC04NTgsMTQgKzg1OCwxNCBAQCBTdG9y
YWdlKiBET01XaW5kb3c6OmxvY2FsU3RvcmFnZShFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKICAg
ICBpZiAoIXBhZ2UtPnNldHRpbmdzKCkubG9jYWxTdG9yYWdlRW5hYmxlZCgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEgPSBw
YWdlLT5zdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKS5sb2NhbFN0b3JhZ2VBcmVhKCpkb2N1bWVu
dCk7CisgICAgYXV0byBzdG9yYWdlQXJlYSA9IHBhZ2UtPnN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
cigpLmxvY2FsU3RvcmFnZUFyZWEoKmRvY3VtZW50KTsKIAogICAgIGlmICghc3RvcmFnZUFyZWEt
PmNhbkFjY2Vzc1N0b3JhZ2UobV9mcmFtZSkpIHsKICAgICAgICAgZWMgPSBTRUNVUklUWV9FUlI7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIG1fbG9jYWxTdG9yYWdlID0g
U3RvcmFnZTo6Y3JlYXRlKG1fZnJhbWUsIHN0b3JhZ2VBcmVhLnJlbGVhc2UoKSk7CisgICAgbV9s
b2NhbFN0b3JhZ2UgPSBTdG9yYWdlOjpjcmVhdGUobV9mcmFtZSwgV1RGTW92ZShzdG9yYWdlQXJl
YSkpOwogICAgIHJldHVybiBtX2xvY2FsU3RvcmFnZS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDIxMTU1MzE4NGNlYzY3ZTBlNTllOTcyYjUzZDYxOGJk
N2M5ZDJhZDQuLmVmZGVlZDEzNzJlZjA4ODY5NjNlZTU0ZmMyZDY2YjZiZWNmMzc3YWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTIyNzgsNyArMjI3OCw3IEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
IGV2ZW50LCBEYXRhVHJhbnNmCiAgICAgICAgICAgICBtX3Nob3VsZE9ubHlGaXJlRHJhZ092ZXJF
dmVudCA9IGZhbHNlOwogICAgICAgICB9CiAgICAgfQotICAgIG1fZHJhZ1RhcmdldCA9IG5ld1Rh
cmdldC5yZWxlYXNlKCk7CisgICAgbV9kcmFnVGFyZ2V0ID0gV1RGTW92ZShuZXdUYXJnZXQpOwog
ICAgIHJldHVybiBhY2NlcHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Fu
aW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwCmluZGV4IGVkMTliNjEzOWMzYTkxMmFlODg4
NzQwYWExMzBhNzI0MTY4ZTA0NjAuLjJmN2IxYWQwYTVkZjYxOWFjNGUzNzBmYjk1M2Y2ODk0ODU1
MGFkNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0
ZUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9z
aXRlQW5pbWF0aW9uLmNwcApAQCAtMTY4LDkgKzE2OCw5IEBAIHZvaWQgQ29tcG9zaXRlQW5pbWF0
aW9uOjp1cGRhdGVUcmFuc2l0aW9ucyhSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgUmVu
ZGVyCiAgICAgICAgICAgICAgICAgLy8gPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yNDc4Nz4KICAgICAgICAgICAgICAgICBpZiAoIWVxdWFsICYmIGlzQWN0aXZlVHJh
bnNpdGlvbikgewogICAgICAgICAgICAgICAgICAgICAvLyBBZGQgdGhlIG5ldyB0cmFuc2l0aW9u
Ci0gICAgICAgICAgICAgICAgICAgIFJlZlB0cjxJbXBsaWNpdEFuaW1hdGlvbj4gaW1wbGljaXRB
bmltYXRpb24gPSBJbXBsaWNpdEFuaW1hdGlvbjo6Y3JlYXRlKGFuaW1hdGlvbiwgcHJvcCwgcmVu
ZGVyZXIsIHRoaXMsIG1vZGlmaWVkQ3VycmVudFN0eWxlID8gbW9kaWZpZWRDdXJyZW50U3R5bGUu
Z2V0KCkgOiBmcm9tU3R5bGUpOwotICAgICAgICAgICAgICAgICAgICBMT0coQW5pbWF0aW9ucywg
IkNyZWF0ZWQgSW1wbGljaXRBbmltYXRpb24gJXAgb24gcmVuZGVyZXIgJXAgZm9yIHByb3BlcnR5
ICVzIGR1cmF0aW9uICUuMmYgZGVsYXkgJS4yZiIsIGltcGxpY2l0QW5pbWF0aW9uLmdldCgpLCBy
ZW5kZXJlciwgZ2V0UHJvcGVydHlOYW1lKHByb3ApLCBhbmltYXRpb24uZHVyYXRpb24oKSwgYW5p
bWF0aW9uLmRlbGF5KCkpOwotICAgICAgICAgICAgICAgICAgICBtX3RyYW5zaXRpb25zLnNldChw
cm9wLCBpbXBsaWNpdEFuaW1hdGlvbi5yZWxlYXNlKCkpOworICAgICAgICAgICAgICAgICAgICBh
dXRvIGltcGxpY2l0QW5pbWF0aW9uID0gSW1wbGljaXRBbmltYXRpb246OmNyZWF0ZShhbmltYXRp
b24sIHByb3AsIHJlbmRlcmVyLCB0aGlzLCBtb2RpZmllZEN1cnJlbnRTdHlsZSA/IG1vZGlmaWVk
Q3VycmVudFN0eWxlLmdldCgpIDogZnJvbVN0eWxlKTsKKyAgICAgICAgICAgICAgICAgICAgTE9H
KEFuaW1hdGlvbnMsICJDcmVhdGVkIEltcGxpY2l0QW5pbWF0aW9uICVwIG9uIHJlbmRlcmVyICVw
IGZvciBwcm9wZXJ0eSAlcyBkdXJhdGlvbiAlLjJmIGRlbGF5ICUuMmYiLCBpbXBsaWNpdEFuaW1h
dGlvbi5wdHIoKSwgcmVuZGVyZXIsIGdldFByb3BlcnR5TmFtZShwcm9wKSwgYW5pbWF0aW9uLmR1
cmF0aW9uKCksIGFuaW1hdGlvbi5kZWxheSgpKTsKKyAgICAgICAgICAgICAgICAgICAgbV90cmFu
c2l0aW9ucy5zZXQocHJvcCwgV1RGTW92ZShpbXBsaWNpdEFuaW1hdGlvbikpOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IG5l
ZWQgb25lIHBhc3MgZm9yIHRoZSBzaW5nbGUgcHJvcCBjYXNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAppbmRleCA5OWM3NmFiMmMxNDYx
YTRiY2IxZjBhMjFlNDQ2OTAwOTliYTQwZDViLi5lOThmYzc0NjI5ZTliYWM3MDdmZGFkNWFlNmRk
NWQ4Yjc4MDJkYWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50
U2VjdXJpdHlQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRT
ZWN1cml0eVBvbGljeS5jcHAKQEAgLTYyOCw3ICs2MjgsNyBAQCB2b2lkIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6cmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgZWZmZWN0aXZlVmlvbGF0ZWRE
aXJlYwogICAgIC8vIHNlbnQgZXhwbGljaXRseS4gQXMgZm9yIHdoaWNoIGRpcmVjdGl2ZSB3YXMg
dmlvbGF0ZWQsIHRoYXQncyBwcmV0dHkKICAgICAvLyBoYXJtbGVzcyBpbmZvcm1hdGlvbi4KIAot
ICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNzcFJlcG9ydCA9IEluc3BlY3Rvck9iamVjdDo6
Y3JlYXRlKCk7CisgICAgYXV0byBjc3BSZXBvcnQgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgp
OwogICAgIGNzcFJlcG9ydC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgiZG9jdW1lbnQtdXJpIiks
IGRvY3VtZW50VVJJKTsKICAgICBjc3BSZXBvcnQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInJl
ZmVycmVyIiksIHJlZmVycmVyKTsKICAgICBjc3BSZXBvcnQtPnNldFN0cmluZyhBU0NJSUxpdGVy
YWwoInZpb2xhdGVkLWRpcmVjdGl2ZSIpLCB2aW9sYXRlZERpcmVjdGl2ZVRleHQpOwpAQCAtNjQz
LDcgKzY0Myw3IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRWaW9sYXRpb24o
Y29uc3QgU3RyaW5nJiBlZmZlY3RpdmVWaW9sYXRlZERpcmVjCiAgICAgfQogCiAgICAgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gcmVwb3J0T2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUo
KTsKLSAgICByZXBvcnRPYmplY3QtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoImNzcC1yZXBvcnQi
KSwgY3NwUmVwb3J0LnJlbGVhc2UoKSk7CisgICAgcmVwb3J0T2JqZWN0LT5zZXRPYmplY3QoQVND
SUlMaXRlcmFsKCJjc3AtcmVwb3J0IiksIFdURk1vdmUoY3NwUmVwb3J0KSk7CiAKICAgICBSZWZQ
dHI8Rm9ybURhdGE+IHJlcG9ydCA9IEZvcm1EYXRhOjpjcmVhdGUocmVwb3J0T2JqZWN0LT50b0pT
T05TdHJpbmcoKS51dGY4KCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgdXJsIDogcmVwb3J0VVJJ
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNv
bnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250
cm9sbGVyLm1tCmluZGV4IGIxNjdjZTIwMTlkMjk0OGE3YWU5MzFkOTZhNWZjNzRjMzhiNzZmODAu
LmIxNjVlYTQ3NmJhMmQ1YWE1NzhjNGYyYWFhZjM4NTQ5MTYzNzg1MjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbQpAQCAt
NjIwLDkgKzYyMCw5IEBAIHZvaWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6Y3JlYXRlT3Zl
cmxheUlmTmVlZGVkKCkKICAgICBpZiAoIW1fbWFpbkZyYW1lLnNldHRpbmdzKCkuc2VydmljZUNv
bnRyb2xzRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8UGFnZU92ZXJs
YXk+IG92ZXJsYXkgPSBQYWdlT3ZlcmxheTo6Y3JlYXRlKCp0aGlzLCBQYWdlT3ZlcmxheTo6T3Zl
cmxheVR5cGU6OkRvY3VtZW50KTsKLSAgICBtX3NlcnZpY2VzT3ZlcmxheSA9IG92ZXJsYXkuZ2V0
KCk7Ci0gICAgbV9tYWluRnJhbWUucGFnZU92ZXJsYXlDb250cm9sbGVyKCkuaW5zdGFsbFBhZ2VP
dmVybGF5KG92ZXJsYXkucmVsZWFzZSgpLCBQYWdlT3ZlcmxheTo6RmFkZU1vZGU6OkRvTm90RmFk
ZSk7CisgICAgYXV0byBvdmVybGF5ID0gUGFnZU92ZXJsYXk6OmNyZWF0ZSgqdGhpcywgUGFnZU92
ZXJsYXk6Ok92ZXJsYXlUeXBlOjpEb2N1bWVudCk7CisgICAgbV9zZXJ2aWNlc092ZXJsYXkgPSBv
dmVybGF5LnB0cigpOworICAgIG1fbWFpbkZyYW1lLnBhZ2VPdmVybGF5Q29udHJvbGxlcigpLmlu
c3RhbGxQYWdlT3ZlcmxheShXVEZNb3ZlKG92ZXJsYXkpLCBQYWdlT3ZlcmxheTo6RmFkZU1vZGU6
OkRvTm90RmFkZSk7CiB9CiAKIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBTZXJ2aWNlc092ZXJsYXlD
b250cm9sbGVyOjp0ZWxlcGhvbmVOdW1iZXJSYW5nZXNGb3JGb2N1c2VkRnJhbWUoKQpAQCAtNzM5
LDcgKzczOSw3IEBAIHZvaWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6ZGV0ZXJtaW5lQWN0
aXZlSGlnaGxpZ2h0KGJvb2wmIG1vdXNlSXNPdmVyQWN0aXZlCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICBtX2FjdGl2ZUhpZ2hsaWdodCA9IG1fbmV4dEFjdGl2ZUhp
Z2hsaWdodC5yZWxlYXNlKCk7CisgICAgICAgIG1fYWN0aXZlSGlnaGxpZ2h0ID0gV1RGTW92ZSht
X25leHRBY3RpdmVIaWdobGlnaHQpOwogCiAgICAgICAgIGlmIChtX2FjdGl2ZUhpZ2hsaWdodCkg
ewogICAgICAgICAgICAgbV9zZXJ2aWNlc092ZXJsYXktPmxheWVyKCkuYWRkQ2hpbGQobV9hY3Rp
dmVIaWdobGlnaHQtPmxheWVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oCmluZGV4IGQwOTY4YmIzMzgw
Njg3ZGQzYmVmMzQzMTIwMTliZjMzM2JhN2YwNmEuLjYzMTYyY2FkODY1Mjk3YmRjNzQ0M2FjNDQ5
MzM3NzliYzBkYmM0ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKQEAgLTczLDcgKzczLDcgQEAgcHJv
dGVjdGVkOgogCiAgICAgU2Nyb2xsaW5nU3RhdGVUcmVlKiBzY3JvbGxpbmdTdGF0ZVRyZWUoKSB7
IHJldHVybiBtX3Njcm9sbGluZ1N0YXRlVHJlZS5nZXQoKTsgfQogCi0gICAgUGFzc1JlZlB0cjxT
Y3JvbGxpbmdUcmVlPiByZWxlYXNlU2Nyb2xsaW5nVHJlZSgpIHsgcmV0dXJuIG1fc2Nyb2xsaW5n
VHJlZS5yZWxlYXNlKCk7IH0KKyAgICBQYXNzUmVmUHRyPFNjcm9sbGluZ1RyZWU+IHJlbGVhc2VT
Y3JvbGxpbmdUcmVlKCkgeyByZXR1cm4gV1RGTW92ZShtX3Njcm9sbGluZ1RyZWUpOyB9CiAKICAg
ICB2b2lkIHVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbChTY3JvbGxpbmdOb2Rl
SUQsIGNvbnN0IEZsb2F0UG9pbnQmLCBib29sIHByb2dyYW1tYXRpY1Njcm9sbCwgU2V0T3JTeW5j
U2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuY3BwCmluZGV4IGRmZDUyODU3YWY2ZDAzYTJl
ODcwMzQ1MmI4MzJmNjAyNjQyNjQwMjQuLjg5YWVjYTBmNjk1NjllODY1NWNkZDAwMDU2NzFlMTkz
MWI1NDhhYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1N0YXRlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nU3RhdGVOb2RlLmNwcApAQCAtNzQsMTMgKzc0LDEzIEBAIHZvaWQgU2Nyb2xsaW5nU3Rh
dGVOb2RlOjpzZXRQcm9wZXJ0eUNoYW5nZWQodW5zaWduZWQgcHJvcGVydHlCaXQpCiAKIFBhc3NS
ZWZQdHI8U2Nyb2xsaW5nU3RhdGVOb2RlPiBTY3JvbGxpbmdTdGF0ZU5vZGU6OmNsb25lQW5kUmVz
ZXQoU2Nyb2xsaW5nU3RhdGVUcmVlJiBhZG9wdGl2ZVRyZWUpCiB7Ci0gICAgUmVmUHRyPFNjcm9s
bGluZ1N0YXRlTm9kZT4gY2xvbmUgPSB0aGlzLT5jbG9uZShhZG9wdGl2ZVRyZWUpOworICAgIGF1
dG8gY2xvbmUgPSB0aGlzLT5jbG9uZShhZG9wdGl2ZVRyZWUpOwogCiAgICAgLy8gTm93IHRoYXQg
dGhpcyBub2RlIGlzIGNsb25lZCwgcmVzZXQgb3VyIGNoYW5nZSBwcm9wZXJ0aWVzLgogICAgIHJl
c2V0Q2hhbmdlZFByb3BlcnRpZXMoKTsKIAotICAgIGNsb25lQW5kUmVzZXRDaGlsZHJlbigqY2xv
bmUsIGFkb3B0aXZlVHJlZSk7Ci0gICAgcmV0dXJuIGNsb25lLnJlbGVhc2UoKTsKKyAgICBjbG9u
ZUFuZFJlc2V0Q2hpbGRyZW4oY2xvbmUuZ2V0KCksIGFkb3B0aXZlVHJlZSk7CisgICAgcmV0dXJu
IFdURk1vdmUoY2xvbmUpOwogfQogCiB2b2lkIFNjcm9sbGluZ1N0YXRlTm9kZTo6Y2xvbmVBbmRS
ZXNldENoaWxkcmVuKFNjcm9sbGluZ1N0YXRlTm9kZSYgY2xvbmUsIFNjcm9sbGluZ1N0YXRlVHJl
ZSYgYWRvcHRpdmVUcmVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1N0YXRlVHJlZS5jcHAKaW5kZXggM2JlYzQzNjBjNGQxNTQ5Njc2MWZhYTQ3NDFm
MjkwMzZjMTc5NmY5NC4uMTFjZWM1ZjVkZTdhMjFjNmFmMWE2ZWMwNjFhOWY1ZmJkOTRhZTU3ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVU
cmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0
ZVRyZWUuY3BwCkBAIC0xMTUsMTYgKzExNSwxNiBAQCBTY3JvbGxpbmdOb2RlSUQgU2Nyb2xsaW5n
U3RhdGVUcmVlOjphdHRhY2hOb2RlKFNjcm9sbGluZ05vZGVUeXBlIG5vZGVUeXBlLCBTY3JvbAog
ICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgaWYgKG5vZGVUeXBlID09IEZyYW1lU2Ny
b2xsaW5nTm9kZSAmJiBwYXJlbnRJRCkgewotICAgICAgICAgICAgaWYgKFJlZlB0cjxTY3JvbGxp
bmdTdGF0ZU5vZGU+IG9ycGhhbmVkTm9kZSA9IG1fb3JwaGFuZWRTdWJmcmFtZU5vZGVzLnRha2Uo
bmV3Tm9kZUlEKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gb3JwaGFuZWROb2RlID0gbV9vcnBo
YW5lZFN1YmZyYW1lTm9kZXMudGFrZShuZXdOb2RlSUQpKSB7CiAgICAgICAgICAgICAgICAgbmV3
Tm9kZSA9IG9ycGhhbmVkTm9kZS5nZXQoKTsKLSAgICAgICAgICAgICAgICBwYXJlbnQtPmFwcGVu
ZENoaWxkKG9ycGhhbmVkTm9kZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgICAgIHBhcmVudC0+
YXBwZW5kQ2hpbGQoV1RGTW92ZShvcnBoYW5lZE5vZGUpKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogCiAgICAgICAgIGlmICghbmV3Tm9kZSkgewotICAgICAgICAgICAgUmVmUHRyPFNjcm9s
bGluZ1N0YXRlTm9kZT4gc3RhdGVOb2RlID0gY3JlYXRlTm9kZShub2RlVHlwZSwgbmV3Tm9kZUlE
KTsKKyAgICAgICAgICAgIGF1dG8gc3RhdGVOb2RlID0gY3JlYXRlTm9kZShub2RlVHlwZSwgbmV3
Tm9kZUlEKTsKICAgICAgICAgICAgIG5ld05vZGUgPSBzdGF0ZU5vZGUuZ2V0KCk7Ci0gICAgICAg
ICAgICBwYXJlbnQtPmFwcGVuZENoaWxkKHN0YXRlTm9kZS5yZWxlYXNlKCkpOworICAgICAgICAg
ICAgcGFyZW50LT5hcHBlbmRDaGlsZChXVEZNb3ZlKHN0YXRlTm9kZSkpOwogICAgICAgICB9CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxl
dmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24u
Y3BwCmluZGV4IGVhMzNlZmMxZDNiZjAwM2Y3NjZhOTg5ZjA0YzZhNTMwMjk4NjQ1N2YuLmY2NWNk
ZTNjMWFmZjQ1ZjY2ZDVmMjIzNjM2NzE5MmYwY2IzMDdhMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCkBAIC03NCwxMiArNzQsMTIgQEAg
c3RhdGljIEF1ZGlvQnVzKiBnZXRDb25jYXRlbmF0ZWRJbXB1bHNlUmVzcG9uc2VzRm9yU3ViamVj
dChjb25zdCBTdHJpbmcmIHN1YmplY3QKICAgICBBdWRpb0J1cyogYnVzOwogICAgIEF1ZGlvQnVz
TWFwOjppdGVyYXRvciBpdGVyYXRvciA9IGF1ZGlvQnVzTWFwLmdldCgpLmZpbmQoc3ViamVjdE5h
bWUpOwogICAgIGlmIChpdGVyYXRvciA9PSBhdWRpb0J1c01hcC5nZXQoKS5lbmQoKSkgewotICAg
ICAgICBSZWZQdHI8QXVkaW9CdXM+IGNvbmNhdGVuYXRlZEltcHVsc2VSZXNwb25zZXMgPSBBdWRp
b0J1czo6bG9hZFBsYXRmb3JtUmVzb3VyY2Uoc3ViamVjdE5hbWUudXRmOCgpLmRhdGEoKSwgUmVz
cG9uc2VTYW1wbGVSYXRlKTsKKyAgICAgICAgYXV0byBjb25jYXRlbmF0ZWRJbXB1bHNlUmVzcG9u
c2VzID0gQXVkaW9CdXM6OmxvYWRQbGF0Zm9ybVJlc291cmNlKHN1YmplY3ROYW1lLnV0ZjgoKS5k
YXRhKCksIFJlc3BvbnNlU2FtcGxlUmF0ZSk7CiAgICAgICAgIEFTU0VSVChjb25jYXRlbmF0ZWRJ
bXB1bHNlUmVzcG9uc2VzKTsKICAgICAgICAgaWYgKCFjb25jYXRlbmF0ZWRJbXB1bHNlUmVzcG9u
c2VzKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgYnVzID0gY29uY2F0ZW5hdGVk
SW1wdWxzZVJlc3BvbnNlcy5yZWxlYXNlKCkubGVha1JlZigpOworICAgICAgICBidXMgPSBjb25j
YXRlbmF0ZWRJbXB1bHNlUmVzcG9uc2VzLmxlYWtSZWYoKTsKICAgICAgICAgYXVkaW9CdXNNYXAu
Z2V0KCkuc2V0KHN1YmplY3ROYW1lLCBidXMpOwogICAgIH0gZWxzZQogICAgICAgICBidXMgPSBp
dGVyYXRvci0+dmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwCmluZGV4IDk3
ODJkMjg0NjBjYThmZDA5YzU4ZTcxYTVkN2NjOGJlNTRkNDVjMDYuLmYwOGFlYmU3MmU3ZTI5NGFi
NDlmZGQ1YWQ3MDNiZTVkMjYxZjJiOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIu
Y3BwCkBAIC01NCwxMyArNTQsMTMgQEAgRGlzcGxheVJlZnJlc2hNb25pdG9yKiBEaXNwbGF5UmVm
cmVzaE1vbml0b3JNYW5hZ2VyOjpjcmVhdGVNb25pdG9yRm9yQ2xpZW50KERpc3AKICAgICAgICAg
cmV0dXJuIG1vbml0b3IuZ2V0KCk7CiAgICAgfQogCi0gICAgUmVmUHRyPERpc3BsYXlSZWZyZXNo
TW9uaXRvcj4gbW9uaXRvciA9IERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6Y3JlYXRlKGNsaWVudCk7
CisgICAgYXV0byBtb25pdG9yID0gRGlzcGxheVJlZnJlc2hNb25pdG9yOjpjcmVhdGUoY2xpZW50
KTsKICAgICBpZiAoIW1vbml0b3IpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgbW9u
aXRvci0+YWRkQ2xpZW50KGNsaWVudCk7CiAgICAgRGlzcGxheVJlZnJlc2hNb25pdG9yKiByZXN1
bHQgPSBtb25pdG9yLmdldCgpOwotICAgIG1fbW9uaXRvcnMuYXBwZW5kKG1vbml0b3IucmVsZWFz
ZSgpKTsKKyAgICBtX21vbml0b3JzLmFwcGVuZChXVEZNb3ZlKG1vbml0b3IpKTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYXNjYWRlRm9udHMuY3BwCmluZGV4IGMzZjIzMjYwMWE4MDBiMjVmZGQwOWI5NGMy
MDUxNGQxYjJlZWMwNTcuLmQzNmVkMDkyNzRlM2I3ZGE4NTJiZWEyY2FmOTQ4MmJkNGUxYzhlZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRl
Rm9udHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNj
YWRlRm9udHMuY3BwCkBAIC0zMjQsNyArMzI0LDcgQEAgR2x5cGhEYXRhIEZvbnRDYXNjYWRlRm9u
dHM6OmdseXBoRGF0YUZvclN5c3RlbUZhbGxiYWNrKFVDaGFyMzIgYywgY29uc3QgRm9udENhc2MK
ICAgICBpZiAoIW9yaWdpbmFsRm9udCkKICAgICAgICAgb3JpZ2luYWxGb250ID0gJnByaW1hcnlS
YW5nZXMuZm9udEZvckZpcnN0UmFuZ2UoKTsKIAotICAgIFJlZlB0cjxGb250PiBzeXN0ZW1GYWxs
YmFja0ZvbnQgPSBvcmlnaW5hbEZvbnQtPnN5c3RlbUZhbGxiYWNrRm9udEZvckNoYXJhY3Rlcihj
LCBkZXNjcmlwdGlvbiwgbV9pc0ZvclBsYXRmb3JtRm9udCk7CisgICAgYXV0byBzeXN0ZW1GYWxs
YmFja0ZvbnQgPSBvcmlnaW5hbEZvbnQtPnN5c3RlbUZhbGxiYWNrRm9udEZvckNoYXJhY3Rlcihj
LCBkZXNjcmlwdGlvbiwgbV9pc0ZvclBsYXRmb3JtRm9udCk7CiAgICAgaWYgKCFzeXN0ZW1GYWxs
YmFja0ZvbnQpCiAgICAgICAgIHJldHVybiBHbHlwaERhdGEoKTsKIApAQCAtMzQ4LDcgKzM0OCw3
IEBAIEdseXBoRGF0YSBGb250Q2FzY2FkZUZvbnRzOjpnbHlwaERhdGFGb3JTeXN0ZW1GYWxsYmFj
ayhVQ2hhcjMyIGMsIGNvbnN0IEZvbnRDYXNjCiAKICAgICAvLyBLZWVwIHRoZSBzeXN0ZW0gZmFs
bGJhY2sgZm9udHMgd2UgdXNlIGFsaXZlLgogICAgIGlmIChmYWxsYmFja0dseXBoRGF0YS5nbHlw
aCkKLSAgICAgICAgbV9zeXN0ZW1GYWxsYmFja0ZvbnRTZXQuYWRkKHN5c3RlbUZhbGxiYWNrRm9u
dC5yZWxlYXNlKCkpOworICAgICAgICBtX3N5c3RlbUZhbGxiYWNrRm9udFNldC5hZGQoV1RGTW92
ZShzeXN0ZW1GYWxsYmFja0ZvbnQpKTsKIAogICAgIHJldHVybiBmYWxsYmFja0dseXBoRGF0YTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcApp
bmRleCBiOWI5MjMxOTBjNWYzMjVlMTMyZGViNjVmZDc3NWFjNjk5YTQxZjU1Li40ZjJmYjViYjVk
Mjk1NjQwOGM3MzNiMDk5N2VhNzM5Y2NiNTE3YTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Ri5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCkBAIC00MDUsNyArNDA1LDcgQEAgdm9pZCBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQXR0cmlidXRlZFN0cmluZ3MoQ0ZBcnJh
eVJlZiBhdHRyaWJ1dGVkU3QKICAgICAgICAgCiAgICAgICAgIExPRyhNZWRpYSwgIkluYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWUoJXApIC0gYWRkaW5nIGN1ZSBcIiVzXCIgZm9y
IHRpbWUgPSAlLjJmLCBlbmQgPSAlLjJmLCBwb3NpdGlvbiA9ICAlLjJmLCBsaW5lID0gICUuMmYi
LCB0aGlzLCBjdWVEYXRhLT5jb250ZW50KCkudXRmOCgpLmRhdGEoKSwgY3VlRGF0YS0+c3RhcnRU
aW1lKCkudG9Eb3VibGUoKSwgY3VlRGF0YS0+ZW5kVGltZSgpLnRvRG91YmxlKCksIGN1ZURhdGEt
PnBvc2l0aW9uKCksIGN1ZURhdGEtPmxpbmUoKSk7CiAKLSAgICAgICAgY2xpZW50KCktPmFkZEdl
bmVyaWNDdWUodGhpcywgY3VlRGF0YS5yZWxlYXNlKCkpOworICAgICAgICBjbGllbnQoKS0+YWRk
R2VuZXJpY0N1ZSh0aGlzLCBXVEZNb3ZlKGN1ZURhdGEpKTsKICAgICB9CiAKICAgICBtX3BlbmRp
bmdDdWVTdGF0dXMgPSBzZWVraW5nKCkgPyBEZWxpdmVyZWREdXJpbmdTZWVrIDogVmFsaWQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
TWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMubW0KaW5kZXgg
ZDEzNmQ4NzM2OTMzMmNjN2E5NzNkMDE0OWQ0NmI4YjYzOGFmY2NmMy4uMTBkMmIyMTU0ZmZhOTc0
YTFhNzkxMzA3OWVhNGVhNmRkODQ3OTljMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRp
YVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5tbQpAQCAtMTI5LDEwICsxMjksMTAgQEAgdm9pZCBNZWRp
YVNlbGVjdGlvbkdyb3VwQVZGT2JqQzo6dXBkYXRlT3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgY2hhcmFjdGVyaXMKICAgICBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uKiBzZWxlY3RlZE9wdGlv
biA9IFttX3BsYXllckl0ZW0gc2VsZWN0ZWRNZWRpYU9wdGlvbkluTWVkaWFTZWxlY3Rpb25Hcm91
cDptX21lZGlhU2VsZWN0aW9uR3JvdXAuZ2V0KCldOwogCiAgICAgZm9yIChBVk1lZGlhU2VsZWN0
aW9uT3B0aW9uKiBhZGRlZEFWT3B0aW9uIGluIGFkZGVkQVZPcHRpb25zLmdldCgpKSB7Ci0gICAg
ICAgIFJlZlB0cjxNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakM+IGFkZGVkT3B0aW9uID0gTWVk
aWFTZWxlY3Rpb25PcHRpb25BVkZPYmpDOjpjcmVhdGUoKnRoaXMsIGFkZGVkQVZPcHRpb24pOwor
ICAgICAgICBhdXRvIGFkZGVkT3B0aW9uID0gTWVkaWFTZWxlY3Rpb25PcHRpb25BVkZPYmpDOjpj
cmVhdGUoKnRoaXMsIGFkZGVkQVZPcHRpb24pOwogICAgICAgICBpZiAoYWRkZWRBVk9wdGlvbiA9
PSBzZWxlY3RlZE9wdGlvbikKICAgICAgICAgICAgIG1fc2VsZWN0ZWRPcHRpb24gPSBhZGRlZE9w
dGlvbi5nZXQoKTsKLSAgICAgICAgbV9vcHRpb25zLnNldChhZGRlZEFWT3B0aW9uLCBhZGRlZE9w
dGlvbi5yZWxlYXNlKCkpOworICAgICAgICBtX29wdGlvbnMuc2V0KGFkZGVkQVZPcHRpb24sIFdU
Rk1vdmUoYWRkZWRPcHRpb24pKTsKICAgICB9CiAKICAgICBpZiAoIW1fc2hvdWxkU2VsZWN0T3B0
aW9uQXV0b21hdGljYWxseSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggZjhmNmIyNTE1NGQ3NjVmMWQwYWJmNjdlOTRh
ZWI0ZDdiNmZlNzY5Yi4uYTlkNTc4ZmE4YWEyZGVhYTMxYTNmMjBlNWRmODE3OThhYjA3MDdjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakMubW0KQEAgLTY5Niw3ICs2OTYsNyBAQCBib29sIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjpwcm9jZXNzQ29kZWRGcmFtZShpbnQgdHJhY2tJRCwgQ01TYW1wbGVCdWZmZXJSZQogICAg
IGlmIChtX2NsaWVudCkgewogICAgICAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IG1lZGlhU2FtcGxl
ID0gTWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGUoc2FtcGxlQnVmZmVyLCB0cmFja0lEKTsKICAg
ICAgICAgTE9HKE1lZGlhU291cmNlU2FtcGxlcywgIlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
Ojpwcm9jZXNzQ29kZWRGcmFtZSglcCkgLSBzYW1wbGUoJXMpIiwgdGhpcywgdG9TdHJpbmcoKm1l
ZGlhU2FtcGxlKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZl
clByaXZhdGVEaWRSZWNlaXZlU2FtcGxlKHRoaXMsIG1lZGlhU2FtcGxlLnJlbGVhc2UoKSk7Cisg
ICAgICAgIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZVNhbXBsZSh0aGlz
LCBXVEZNb3ZlKG1lZGlhU2FtcGxlKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVy
Q0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXll
ckNBLmNwcAppbmRleCA0ZGE2N2YyYjFmNzY2MTJjZWFjZjM1Y2QyODYyNjc5ZjYwMjQxYjkzLi44
ODM3M2M4ZWNiNjkyZWY2NjgyY2EzZTMxMzk1NmE5NzkxY2EyMWM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAK
QEAgLTM4MTUsOCArMzgxNSw4IEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGlj
c0xheWVyQ0E6OmZldGNoQ2xvbmVMYXllcnMoR3JhcGhpY3NMYXllciogcmVwCiAKICAgICAgICAg
Zm9yIChhdXRvKiBjaGlsZExheWVyIDogY2hpbGRMYXllcnMpIHsKICAgICAgICAgICAgIEdyYXBo
aWNzTGF5ZXJDQSYgY2hpbGRMYXllckNBID0gZG93bmNhc3Q8R3JhcGhpY3NMYXllckNBPigqY2hp
bGRMYXllcik7Ci0gICAgICAgICAgICBpZiAoUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gcGxhdGZv
cm1MYXllciA9IGNoaWxkTGF5ZXJDQS5mZXRjaENsb25lTGF5ZXJzKHJlcGxpY2FSb290LCByZXBs
aWNhU3RhdGUsIEludGVybWVkaWF0ZUNsb25lTGV2ZWwpKQotICAgICAgICAgICAgICAgIGNsb25h
bFN1YmxheWVycy5hcHBlbmQocGxhdGZvcm1MYXllci5yZWxlYXNlKCkpOworICAgICAgICAgICAg
aWYgKGF1dG8gcGxhdGZvcm1MYXllciA9IGNoaWxkTGF5ZXJDQS5mZXRjaENsb25lTGF5ZXJzKHJl
cGxpY2FSb290LCByZXBsaWNhU3RhdGUsIEludGVybWVkaWF0ZUNsb25lTGV2ZWwpKQorICAgICAg
ICAgICAgICAgIGNsb25hbFN1YmxheWVycy5hcHBlbmQoV1RGTW92ZShwbGF0Zm9ybUxheWVyKSk7
CiAgICAgICAgIH0KIAogICAgICAgICByZXBsaWNhU3RhdGUucG9wKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcApp
bmRleCA0YzlkNzE1MmQ5ODIxNDBkZWRjZDUwNGNmZWE0MGM4NDU4NGI4NzBhLi4wMGEyNTczYWZm
MTJlZjg5ZGIyYTUxMDgxM2JmZTBjOWUzYWQxMTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAKQEAgLTEzNSwx
MyArMTM1LDEzIEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBQbGF0Zm9ybUNBTGF5ZXI6
OmNyZWF0ZUNvbXBhdGlibGVMYXllck9yVGFrZUZyb21Qb29sCiAKICAgICBpZiAoKGxheWVyID0g
bGF5ZXJQb29sKCkudGFrZUxheWVyV2l0aFNpemUoc2l6ZSkpKSB7CiAgICAgICAgIGxheWVyLT5z
ZXRPd25lcihjbGllbnQpOwotICAgICAgICByZXR1cm4gbGF5ZXIucmVsZWFzZSgpOworICAgICAg
ICByZXR1cm4gV1RGTW92ZShsYXllcik7CiAgICAgfQogCiAgICAgbGF5ZXIgPSBjcmVhdGVDb21w
YXRpYmxlTGF5ZXIobGF5ZXJUeXBlLCBjbGllbnQpOwogICAgIGxheWVyLT5zZXRCb3VuZHMoRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSkpOwogICAgIAotICAgIHJldHVybiBsYXllci5yZWxl
YXNlKCk7CisgICAgcmV0dXJuIFdURk1vdmUobGF5ZXIpOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FM
YXllcjo6bW92ZVRvTGF5ZXJQb29sKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmNwcAppbmRleCBmYTYzNGM4NmM0
MzQ1YmUxYmU3ZWI1NjU3MDhkNjQ3YWEwYTlkYzI0Li41ZjUwZjljYzAxMjVjY2ZhYzZiZjYyN2Y1
M2Q2MGM1ZDEyYTUxZTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwCkBAIC05Niw3ICs5Niw3IEBAIFJl
ZlB0cjxVaW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXJEYXRhOjpnZXREYXRhKGNvbnN0IElu
dFJlY3QmIHJlY3QsIGNvbnN0IEluCiAgICAgaWYgKGFyZWEuaGFzT3ZlcmZsb3dlZCgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gcmVz
dWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoYXJlYS51bnNhZmVH
ZXQoKSk7CisgICAgYXV0byByZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0
aWFsaXplZChhcmVhLnVuc2FmZUdldCgpKTsKICAgICB1bnNpZ25lZCBjaGFyKiByZXN1bHREYXRh
ID0gcmVzdWx0LT5kYXRhKCk7CiAgICAgaWYgKCFyZXN1bHREYXRhKSB7CiAgICAgICAgIFdURkxv
Z0Fsd2F5cygiSW1hZ2VCdWZmZXJEYXRhOiBVbmFibGUgdG8gY3JlYXRlIGJ1ZmZlci4gUmVxdWVz
dGVkIHNpemUgd2FzICVkIHggJWQgPSAldVxuIiwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgp
LCBhcmVhLnVuc2FmZUdldCgpKTsKQEAgLTEzOSw3ICsxMzksNyBAQCBSZWZQdHI8VWludDhDbGFt
cGVkQXJyYXk+IEltYWdlQnVmZmVyRGF0YTo6Z2V0RGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBj
b25zdCBJbgogICAgIENoZWNrZWQ8aW50PiBoZWlnaHQgPSBlbmR5IC0gb3JpZ2lueTsKICAgICAK
ICAgICBpZiAod2lkdGgudW5zYWZlR2V0KCkgPD0gMCB8fCBoZWlnaHQudW5zYWZlR2V0KCkgPD0g
MCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgCiAgICAgdW5zaWduZWQgZGVzdEJ5dGVzUGVyUm93ID0gNCAqIHJlY3Qud2lkdGgo
KTsKICAgICB1bnNpZ25lZCBjaGFyKiBkZXN0Um93cyA9IHJlc3VsdERhdGEgKyBkZXN0eSAqIGRl
c3RCeXRlc1BlclJvdyArIGRlc3R4ICogNDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAppbmRleCBjYmU1MTI4
ZjllNjI2NzJiYTFjZmUyN2IwNWNlMzI2MzA0ZGEyNjdkLi41ZTQ3YTQwNjhkODJjM2M1MGU4MzU5
ZGUwNjc2ZDM4ODdlMDhmMDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBAIC0yMzcsOSArMjM3LDkg
QEAgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gRmlsdGVyRWZmZWN0Ojphc1VubXVsdGlw
bGllZEltYWdlKGNvbnN0IEludFJlY3QmIHIKICAgICBJbnRTaXplIHNjYWxlZFNpemUocmVjdC5z
aXplKCkpOwogICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHNjYWxl
ZFNpemUpKTsKICAgICBzY2FsZWRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRlclNjYWxlKCkpOwot
ICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gaW1hZ2VEYXRhID0gVWludDhDbGFtcGVkQXJy
YXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2NhbGVkU2l6ZS53aWR0aCgpICogc2NhbGVkU2l6ZS5o
ZWlnaHQoKSAqIDQpOworICAgIGF1dG8gaW1hZ2VEYXRhID0gVWludDhDbGFtcGVkQXJyYXk6OmNy
ZWF0ZVVuaW5pdGlhbGl6ZWQoc2NhbGVkU2l6ZS53aWR0aCgpICogc2NhbGVkU2l6ZS5oZWlnaHQo
KSAqIDQpOwogICAgIGNvcHlVbm11bHRpcGxpZWRJbWFnZShpbWFnZURhdGEuZ2V0KCksIHJlY3Qp
OwotICAgIHJldHVybiBpbWFnZURhdGEucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKGlt
YWdlRGF0YSk7CiB9CiAKIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVj
dDo6YXNQcmVtdWx0aXBsaWVkSW1hZ2UoY29uc3QgSW50UmVjdCYgcmVjdCkKQEAgLTI0Nyw5ICsy
NDcsOSBAQCBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBGaWx0ZXJFZmZlY3Q6OmFzUHJl
bXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJlY3QmCiAgICAgSW50U2l6ZSBzY2FsZWRTaXplKHJl
Y3Quc2l6ZSgpKTsKICAgICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhz
Y2FsZWRTaXplKSk7CiAgICAgc2NhbGVkU2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgp
KTsKLSAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGltYWdlRGF0YSA9IFVpbnQ4Q2xhbXBl
ZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKHNjYWxlZFNpemUud2lkdGgoKSAqIHNjYWxlZFNp
emUuaGVpZ2h0KCkgKiA0KTsKKyAgICBhdXRvIGltYWdlRGF0YSA9IFVpbnQ4Q2xhbXBlZEFycmF5
OjpjcmVhdGVVbmluaXRpYWxpemVkKHNjYWxlZFNpemUud2lkdGgoKSAqIHNjYWxlZFNpemUuaGVp
Z2h0KCkgKiA0KTsKICAgICBjb3B5UHJlbXVsdGlwbGllZEltYWdlKGltYWdlRGF0YS5nZXQoKSwg
cmVjdCk7Ci0gICAgcmV0dXJuIGltYWdlRGF0YS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1v
dmUoaW1hZ2VEYXRhKTsKIH0KIAogaW5saW5lIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5SW1hZ2VC
eXRlcyhVaW50OENsYW1wZWRBcnJheSogc291cmNlLCBVaW50OENsYW1wZWRBcnJheSogZGVzdGlu
YXRpb24sIGNvbnN0IEludFJlY3QmIHJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KaW5kZXggZmEwMTFhYTg4MTYzMDMwMDA5NDQ5OGVi
YzBmZmNhOWZiOWMzMDM0Yi4uMDFlYjZkZDMwMDQzYTIyNTI5MTc2ZmQ5MTIxMTdkYzU3NzZjMTdi
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdl
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1h
Yy5tbQpAQCAtNjgsOSArNjgsOSBAQCBQYXNzUmVmUHRyPEltYWdlPiBJbWFnZTo6bG9hZFBsYXRm
b3JtUmVzb3VyY2UoY29uc3QgY2hhciAqbmFtZSkKICAgICBOU1N0cmluZyAqaW1hZ2VQYXRoID0g
W2J1bmRsZSBwYXRoRm9yUmVzb3VyY2U6W05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOm5h
bWVdIG9mVHlwZTpAInBuZyJdOwogICAgIE5TRGF0YSAqbmFtZWRJbWFnZURhdGEgPSBbTlNEYXRh
IGRhdGFXaXRoQ29udGVudHNPZkZpbGU6aW1hZ2VQYXRoXTsKICAgICBpZiAobmFtZWRJbWFnZURh
dGEpIHsKLSAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUo
KTsKKyAgICAgICAgYXV0byBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAgICAgICAg
aW1hZ2UtPnNldERhdGEoU2hhcmVkQnVmZmVyOjp3cmFwTlNEYXRhKG5hbWVkSW1hZ2VEYXRhKSwg
dHJ1ZSk7Ci0gICAgICAgIHJldHVybiBpbWFnZS5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBX
VEZNb3ZlKGltYWdlKTsKICAgICB9CiAKICAgICAvLyBXZSBoYXZlIHJlcG9ydHMgaW5kaWNhdGlu
ZyByZXNvdXJjZSBsb2FkcyBhcmUgZmFpbGluZywgYnV0IHdlIGRvbid0IHlldCBrbm93IHRoZSBy
b290IGNhdXNlKHMpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1v
bi5jcHAKaW5kZXggMDQ4OTUzNmQzYmQwY2JiZjdiMmJkYjA3YTZiYzJkYjg1Yjk0OTllNy4uYTQ4
NTkyYTgxMGFmMDc0OWY0ZmU5ODEwMWY3ZDFiMTZhYzZhOTI5ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdM
Q29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCkBAIC0xMzIsOCArMTMyLDEwIEBAIHN0
YXRpYyB1aW50NjRfdCBuYW1lSGFzaEZvclNoYWRlcihjb25zdCBjaGFyKiBuYW1lLCBzaXplX3Qg
bGVuZ3RoKQogCiBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQz
RDo6Y3JlYXRlRm9yQ3VycmVudEdMQ29udGV4dCgpCiB7Ci0gICAgUmVmUHRyPEdyYXBoaWNzQ29u
dGV4dDNEPiBjb250ZXh0ID0gYWRvcHRSZWYobmV3IEdyYXBoaWNzQ29udGV4dDNEKEF0dHJpYnV0
ZXMoKSwgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclRvQ3VycmVudEdMQ29udGV4dCkpOwot
ICAgIHJldHVybiBjb250ZXh0LT5tX3ByaXZhdGUgPyBjb250ZXh0LnJlbGVhc2UoKSA6IDA7Cisg
ICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYoKm5ldyBHcmFwaGljc0NvbnRleHQzRChBdHRyaWJ1
dGVzKCksIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJUb0N1cnJlbnRHTENvbnRleHQpKTsK
KyAgICBpZiAoIWNvbnRleHQtPm1fcHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgcmV0dXJuIFdURk1vdmUoY29udGV4dCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OnZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVu
c2lvbikKQEAgLTIwNSw3ICsyMDcsNyBAQCBQYXNzUmVmUHRyPEltYWdlRGF0YT4gR3JhcGhpY3ND
b250ZXh0M0Q6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkKICAgICBpZiAobV9h
dHRycy5wcmVtdWx0aXBsaWVkQWxwaGEpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRy
PEltYWdlRGF0YT4gaW1hZ2VEYXRhID0gSW1hZ2VEYXRhOjpjcmVhdGUoSW50U2l6ZShtX2N1cnJl
bnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0KSk7CisgICAgYXV0byBpbWFnZURhdGEgPSBJbWFnZURh
dGE6OmNyZWF0ZShJbnRTaXplKG1fY3VycmVudFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQpKTsKICAg
ICB1bnNpZ25lZCBjaGFyKiBwaXhlbHMgPSBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpOwogICAg
IGludCB0b3RhbEJ5dGVzID0gNCAqIG1fY3VycmVudFdpZHRoICogbV9jdXJyZW50SGVpZ2h0Owog
CkBAIC0yMTUsNyArMjE3LDcgQEAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29udGV4
dDNEOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpCiAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCB0b3RhbEJ5dGVzOyBpICs9IDQpCiAgICAgICAgIHN0ZDo6c3dhcChwaXhlbHNbaV0s
IHBpeGVsc1tpICsgMl0pOwogCi0gICAgcmV0dXJuIGltYWdlRGF0YS5yZWxlYXNlKCk7CisgICAg
cmV0dXJuIFdURk1vdmUoaW1hZ2VEYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
cHJlcGFyZVRleHR1cmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJN
YWMuY3BwCmluZGV4IGRlYTdhN2MyOTc0ZTNkOGE5ZTBkYjgxNzdkOTZiOWU0ZTJmMThjMGQuLjlh
MWIyZDY5NmM3Y2YwOWI5NTdmNGNmMjk4NGEyMGUzODFjODY3MDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAKQEAgLTExNiwxMCArMTE2LDEwIEBAIHZv
aWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1Jl
ZlB0cjxNZWRpYVN0cmVhbUNyZWF0CiAgICAgICAgIH0KICAgICAgICAgLy8gRklYTUU6IENvbnNp
ZGVyIHRoZSBjb25zdHJhaW50cyB3aGVuIGNob29zaW5nIGFtb25nIG11bHRpcGxlIGRldmljZXMu
IEZvciBub3cganVzdCBzZWxlY3QgdGhlIGZpcnN0IGF2YWlsYWJsZQogICAgICAgICAvLyBkZXZp
Y2Ugb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUuCi0gICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlh
U291cmNlPiBhdWRpb1NvdXJjZSA9IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigp
LmJlc3RTb3VyY2VzRm9yVHlwZUFuZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1
ZGlvLCBhdWRpb0NvbnN0cmFpbnRzLmdldCgpKS5hdCgwKTsKKyAgICAgICAgYXV0byBhdWRpb1Nv
dXJjZSA9IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpLmJlc3RTb3VyY2VzRm9y
VHlwZUFuZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBhdWRpb0NvbnN0
cmFpbnRzLmdldCgpKS5hdCgwKTsKICAgICAgICAgQVNTRVJUKGF1ZGlvU291cmNlKTsKICAgICAg
ICAgCi0gICAgICAgIGF1ZGlvU291cmNlcy5hcHBlbmQoYXVkaW9Tb3VyY2UucmVsZWFzZSgpKTsK
KyAgICAgICAgYXVkaW9Tb3VyY2VzLmFwcGVuZChXVEZNb3ZlKGF1ZGlvU291cmNlKSk7CiAgICAg
fQogICAgIAogICAgIGlmICh2aWRlb0NvbnN0cmFpbnRzKSB7CkBAIC0xMzEsMTAgKzEzMSwxMCBA
QCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OmNyZWF0ZU1lZGlhU3RyZWFtKFBh
c3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdAogICAgICAgICB9CiAgICAgICAgIC8vIEZJWE1FOiBD
b25zaWRlciB0aGUgY29uc3RyYWludHMgd2hlbiBjaG9vc2luZyBhbW9uZyBtdWx0aXBsZSBkZXZp
Y2VzLiBGb3Igbm93IGp1c3Qgc2VsZWN0IHRoZSBmaXJzdCBhdmFpbGFibGUKICAgICAgICAgLy8g
ZGV2aWNlIG9mIHRoZSBhcHByb3ByaWF0ZSB0eXBlLgotICAgICAgICBSZWZQdHI8UmVhbHRpbWVN
ZWRpYVNvdXJjZT4gdmlkZW9Tb3VyY2UgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0
b24oKS5iZXN0U291cmNlc0ZvclR5cGVBbmRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNl
OjpWaWRlbywgdmlkZW9Db25zdHJhaW50cy5nZXQoKSkuYXQoMCk7CisgICAgICAgIGF1dG8gdmlk
ZW9Tb3VyY2UgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5iZXN0U291cmNl
c0ZvclR5cGVBbmRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywgdmlkZW9D
b25zdHJhaW50cy5nZXQoKSkuYXQoMCk7CiAgICAgICAgIEFTU0VSVCh2aWRlb1NvdXJjZSk7CiAg
ICAgICAgIAotICAgICAgICB2aWRlb1NvdXJjZXMuYXBwZW5kKHZpZGVvU291cmNlLnJlbGVhc2Uo
KSk7CisgICAgICAgIHZpZGVvU291cmNlcy5hcHBlbmQoV1RGTW92ZSh2aWRlb1NvdXJjZSkpOwog
ICAgIH0KICAgICAKICAgICBjbGllbnQtPmRpZENyZWF0ZVN0cmVhbShNZWRpYVN0cmVhbVByaXZh
dGU6OmNyZWF0ZShhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcykpOwpAQCAtMTQ3LDE0ICsxNDcs
MTQgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjpjcmVhdGVNZWRpYVN0cmVh
bShNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KgogICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVN
ZWRpYVNvdXJjZT4+IHZpZGVvU291cmNlczsKIAogICAgIGlmICghYXVkaW9EZXZpY2VJRC5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IGF1ZGlvU291cmNl
ID0gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuc291cmNlV2l0aFVJRChhdWRp
b0RldmljZUlELCBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbywgbnVsbHB0cik7CisgICAgICAg
IGF1dG8gYXVkaW9Tb3VyY2UgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5z
b3VyY2VXaXRoVUlEKGF1ZGlvRGV2aWNlSUQsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBu
dWxscHRyKTsKICAgICAgICAgaWYgKGF1ZGlvU291cmNlKQotICAgICAgICAgICAgYXVkaW9Tb3Vy
Y2VzLmFwcGVuZChhdWRpb1NvdXJjZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgYXVkaW9Tb3Vy
Y2VzLmFwcGVuZChXVEZNb3ZlKGF1ZGlvU291cmNlKSk7CiAgICAgfQogICAgIGlmICghdmlkZW9E
ZXZpY2VJRC5pc0VtcHR5KCkpIHsKLSAgICAgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+
IHZpZGVvU291cmNlID0gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuc291cmNl
V2l0aFVJRCh2aWRlb0RldmljZUlELCBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywgbnVsbHB0
cik7CisgICAgICAgIGF1dG8gdmlkZW9Tb3VyY2UgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpz
aW5nbGV0b24oKS5zb3VyY2VXaXRoVUlEKHZpZGVvRGV2aWNlSUQsIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlZpZGVvLCBudWxscHRyKTsKICAgICAgICAgaWYgKHZpZGVvU291cmNlKQotICAgICAgICAg
ICAgdmlkZW9Tb3VyY2VzLmFwcGVuZCh2aWRlb1NvdXJjZS5yZWxlYXNlKCkpOworICAgICAgICAg
ICAgdmlkZW9Tb3VyY2VzLmFwcGVuZChXVEZNb3ZlKHZpZGVvU291cmNlKSk7CiAgICAgfQogCiAg
ICAgY2xpZW50LT5kaWRDcmVhdGVTdHJlYW0oTWVkaWFTdHJlYW1Qcml2YXRlOjpjcmVhdGUoYXVk
aW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKaW5k
ZXggYWFlODA4MzkxMTVmZjliYWZiOTQ4YzgyNTZmMzgzNGI0OGI4NmVlZS4uOGNjNmYwZjMzNTJj
MjMzMzhiNWUyOTA1MTJjZWU0ZWZlZmM0YWI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5j
cHAKQEAgLTgxLDggKzgxLDggQEAgdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6
dmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGkKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNl
PiBhdWRpb1NvdXJjZSA9IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGUoKTsKLSAgICAg
ICAgYXVkaW9Tb3VyY2VzLmFwcGVuZChhdWRpb1NvdXJjZS5yZWxlYXNlKCkpOworICAgICAgICBh
dXRvIGF1ZGlvU291cmNlID0gTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZSgpOworICAg
ICAgICBhdWRpb1NvdXJjZXMuYXBwZW5kKFdURk1vdmUoYXVkaW9Tb3VyY2UpKTsKICAgICB9CiAK
ICAgICBpZiAodmlkZW9Db25zdHJhaW50cykgewpAQCAtOTIsOCArOTIsOCBAQCB2b2lkIE1vY2tS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRp
YVN0cmVhbUNyZWF0aQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAg
UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IHZpZGVvU291cmNlID0gTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2U6OmNyZWF0ZSgpOwotICAgICAgICB2aWRlb1NvdXJjZXMuYXBwZW5kKHZpZGVvU291
cmNlLnJlbGVhc2UoKSk7CisgICAgICAgIGF1dG8gdmlkZW9Tb3VyY2UgPSBNb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZTo6Y3JlYXRlKCk7CisgICAgICAgIHZpZGVvU291cmNlcy5hcHBlbmQoV1RGTW92
ZSh2aWRlb1NvdXJjZSkpOwogICAgIH0KIAogICAgIGNsaWVudC0+Y29uc3RyYWludHNWYWxpZGF0
ZWQoYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMpOwpAQCAtMTE1LDggKzExNSw4IEBAIHZvaWQg
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQ
dHI8TWVkaWFTdHJlYW1DcmVhCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gYXVkaW9Tb3VyY2UgPSBNb2NrUmVhbHRp
bWVBdWRpb1NvdXJjZTo6Y3JlYXRlKCk7Ci0gICAgICAgIGF1ZGlvU291cmNlcy5hcHBlbmQoYXVk
aW9Tb3VyY2UucmVsZWFzZSgpKTsKKyAgICAgICAgYXV0byBhdWRpb1NvdXJjZSA9IE1vY2tSZWFs
dGltZUF1ZGlvU291cmNlOjpjcmVhdGUoKTsKKyAgICAgICAgYXVkaW9Tb3VyY2VzLmFwcGVuZChX
VEZNb3ZlKGF1ZGlvU291cmNlKSk7CiAgICAgfQogCiAgICAgaWYgKHZpZGVvQ29uc3RyYWludHMp
IHsKQEAgLTEyNiw4ICsxMjYsOCBAQCB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
OjpjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3Vy
Y2U+IHZpZGVvU291cmNlID0gTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmNyZWF0ZSgpOwotICAg
ICAgICB2aWRlb1NvdXJjZXMuYXBwZW5kKHZpZGVvU291cmNlLnJlbGVhc2UoKSk7CisgICAgICAg
IGF1dG8gdmlkZW9Tb3VyY2UgPSBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRlKCk7Cisg
ICAgICAgIHZpZGVvU291cmNlcy5hcHBlbmQoV1RGTW92ZSh2aWRlb1NvdXJjZSkpOwogICAgIH0K
ICAgICAKICAgICBjbGllbnQtPmRpZENyZWF0ZVN0cmVhbShNZWRpYVN0cmVhbVByaXZhdGU6OmNy
ZWF0ZShhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcykpOwpAQCAtMTQwLDEyICsxNDAsMTIgQEAg
dm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6Y3JlYXRlTWVkaWFTdHJlYW0oTWVk
aWFTdHJlYW1DcmVhdGlvbkNsaWVudCoKICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFT
b3VyY2U+PiB2aWRlb1NvdXJjZXM7CiAKICAgICBpZiAoIWF1ZGlvRGV2aWNlSUQuaXNFbXB0eSgp
ICYmIGF1ZGlvRGV2aWNlSUQgPT0gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6Om1vY2tBdWRpb1Nv
dXJjZVBlcnNpc3RlbnRJRCgpKSB7Ci0gICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNl
PiBhdWRpb1NvdXJjZSA9IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGUoKTsKLSAgICAg
ICAgYXVkaW9Tb3VyY2VzLmFwcGVuZChhdWRpb1NvdXJjZS5yZWxlYXNlKCkpOworICAgICAgICBh
dXRvIGF1ZGlvU291cmNlID0gTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZSgpOworICAg
ICAgICBhdWRpb1NvdXJjZXMuYXBwZW5kKFdURk1vdmUoYXVkaW9Tb3VyY2UpKTsKICAgICB9CiAg
ICAgaWYgKCF2aWRlb0RldmljZUlELmlzRW1wdHkoKSAmJiB2aWRlb0RldmljZUlEID09IE1vY2tS
ZWFsdGltZU1lZGlhU291cmNlOjptb2NrVmlkZW9Tb3VyY2VQZXJzaXN0ZW50SUQoKSkgewotICAg
ICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gdmlkZW9Tb3VyY2UgPSBNb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZTo6Y3JlYXRlKCk7Ci0gICAgICAgIHZpZGVvU291cmNlcy5hcHBlbmQodmlk
ZW9Tb3VyY2UucmVsZWFzZSgpKTsKKyAgICAgICAgYXV0byB2aWRlb1NvdXJjZSA9IE1vY2tSZWFs
dGltZVZpZGVvU291cmNlOjpjcmVhdGUoKTsKKyAgICAgICAgdmlkZW9Tb3VyY2VzLmFwcGVuZChX
VEZNb3ZlKHZpZGVvU291cmNlKSk7CiAgICAgfQogCiAgICAgY2xpZW50LT5kaWRDcmVhdGVTdHJl
YW0oTWVkaWFTdHJlYW1Qcml2YXRlOjpjcmVhdGUoYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lz
dHJ5SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3Ry
eUltcGwuY3BwCmluZGV4IDcyMGVmYzg3MWJmZDFlNGI0NTczNTA3ODdlNzNmODM2MzdiYTkxNTMu
LjY4MDYwMzU0ZTdlNTBlYmQ4NjdiMWQwODA5ZDNkMjdjM2U1MTRiYjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcApAQCAt
MTI1LDcgKzEyNSw3IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMKGNv
bnN0IFVSTCYgdXJsLCBWZWN0b3I8QmxvYlBhcnQ+IGJsb2JQYXJ0CiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKICAgICByZWdpc3RlckJsb2JSZXNvdXJjZUhhbmRsZUNvbnN0cnVjdG9yKCk7
CiAKLSAgICBSZWZQdHI8QmxvYkRhdGE+IGJsb2JEYXRhID0gQmxvYkRhdGE6OmNyZWF0ZShjb250
ZW50VHlwZSk7CisgICAgYXV0byBibG9iRGF0YSA9IEJsb2JEYXRhOjpjcmVhdGUoY29udGVudFR5
cGUpOwogCiAgICAgLy8gVGhlIGJsb2IgZGF0YSBpcyBzdG9yZWQgaW4gdGhlICJjYW5vbmljYWwi
IHdheS4gVGhhdCBpcywgaXQgb25seSBjb250YWlucyBhIGxpc3Qgb2YgRGF0YSBhbmQgRmlsZSBp
dGVtcy4KICAgICAvLyAxKSBUaGUgRGF0YSBpdGVtIGlzIGRlbm90ZWQgYnkgdGhlIHJhdyBkYXRh
IGFuZCB0aGUgcmFuZ2UuCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBCbG9iUmVnaXN0cnlJbXBs
OjpyZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4gYmxvYlBh
cnQKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fYmxvYnMuc2V0KHVybC5zdHJpbmcoKSwgYmxv
YkRhdGEucmVsZWFzZSgpKTsKKyAgICBtX2Jsb2JzLnNldCh1cmwuc3RyaW5nKCksIFdURk1vdmUo
YmxvYkRhdGEpKTsKIH0KIAogdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkwo
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMKQpAQCAtMjA4LDExICsyMDgsMTEgQEAg
dm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBVUkwm
IHVybCwgY29uc3QgVVJMJiBzcmNVUkwKICAgICAgICAgZW5kID0gb3JpZ2luYWxTaXplOwogCiAg
ICAgdW5zaWduZWQgbG9uZyBsb25nIG5ld0xlbmd0aCA9IGVuZCAtIHN0YXJ0OwotICAgIFJlZlB0
cjxCbG9iRGF0YT4gbmV3RGF0YSA9IEJsb2JEYXRhOjpjcmVhdGUob3JpZ2luYWxEYXRhLT5jb250
ZW50VHlwZSgpKTsKKyAgICBhdXRvIG5ld0RhdGEgPSBCbG9iRGF0YTo6Y3JlYXRlKG9yaWdpbmFs
RGF0YS0+Y29udGVudFR5cGUoKSk7CiAKLSAgICBhcHBlbmRTdG9yYWdlSXRlbXMobmV3RGF0YS5n
ZXQoKSwgb3JpZ2luYWxEYXRhLT5pdGVtcygpLCBzdGFydCwgbmV3TGVuZ3RoKTsKKyAgICBhcHBl
bmRTdG9yYWdlSXRlbXMobmV3RGF0YS5wdHIoKSwgb3JpZ2luYWxEYXRhLT5pdGVtcygpLCBzdGFy
dCwgbmV3TGVuZ3RoKTsKIAotICAgIG1fYmxvYnMuc2V0KHVybC5zdHJpbmcoKSwgbmV3RGF0YS5y
ZWxlYXNlKCkpOworICAgIG1fYmxvYnMuc2V0KHVybC5zdHJpbmcoKSwgV1RGTW92ZShuZXdEYXRh
KSk7CiB9CiAKIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6dW5yZWdpc3RlckJsb2JVUkwoY29uc3Qg
VVJMJiB1cmwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGUuY3BwCmluZGV4IGJjZTZiYTk3MzFiZjE5NDAxMTc2Y2NiZjZiZGQ3MGZkN2VlZjUy
MmYuLmI2YzY3YjdjZGUyNmE3NTNjOGFiMmUxY2MyMDE0OGJjYzc4ZmIwZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCkBAIC05
MywxMyArOTMsMTMgQEAgUmVmUHRyPFJlc291cmNlSGFuZGxlPiBSZXNvdXJjZUhhbmRsZTo6Y3Jl
YXRlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdAogICAgIGlmIChwcm90b2NvbE1h
cEl0ZW0gIT0gYnVpbHRpblJlc291cmNlSGFuZGxlQ29uc3RydWN0b3JNYXAoKS5lbmQoKSkKICAg
ICAgICAgcmV0dXJuIHByb3RvY29sTWFwSXRlbS0+dmFsdWUocmVxdWVzdCwgY2xpZW50KTsKIAot
ICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gbmV3SGFuZGxlKGFkb3B0UmVmKG5ldyBSZXNvdXJj
ZUhhbmRsZShjb250ZXh0LCByZXF1ZXN0LCBjbGllbnQsIGRlZmVyc0xvYWRpbmcsIHNob3VsZENv
bnRlbnRTbmlmZikpKTsKKyAgICBhdXRvIG5ld0hhbmRsZSA9IGFkb3B0UmVmKCpuZXcgUmVzb3Vy
Y2VIYW5kbGUoY29udGV4dCwgcmVxdWVzdCwgY2xpZW50LCBkZWZlcnNMb2FkaW5nLCBzaG91bGRD
b250ZW50U25pZmYpKTsKIAogICAgIGlmIChuZXdIYW5kbGUtPmQtPm1fc2NoZWR1bGVkRmFpbHVy
ZVR5cGUgIT0gTm9GYWlsdXJlKQotICAgICAgICByZXR1cm4gbmV3SGFuZGxlLnJlbGVhc2UoKTsK
KyAgICAgICAgcmV0dXJuIFdURk1vdmUobmV3SGFuZGxlKTsKIAogICAgIGlmIChuZXdIYW5kbGUt
PnN0YXJ0KCkpCi0gICAgICAgIHJldHVybiBuZXdIYW5kbGUucmVsZWFzZSgpOworICAgICAgICBy
ZXR1cm4gV1RGTW92ZShuZXdIYW5kbGUpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFt
Q0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0
cmVhbUNGTmV0LmNwcAppbmRleCA0ODYxMzNjYzg5Yzk5ZDZiMjQwNjUzMzFhNzJjNWQ5YTRkMDhk
NmQ1Li40MGViZjRkNjkwNjc1MjU1YWEzNjk0OTZhMzJmNDljYmU3NTkzNjc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJl
YW1DRk5ldC5jcHAKQEAgLTIwMCw3ICsyMDAsNyBAQCBzdGF0aWMgdm9pZCogZm9ybUNyZWF0ZShD
RlJlYWRTdHJlYW1SZWYgc3RyZWFtLCB2b2lkKiBjb250ZXh0KQogICAgIEZvcm1DcmVhdGlvbkNv
bnRleHQqIGZvcm1Db250ZXh0ID0gc3RhdGljX2Nhc3Q8Rm9ybUNyZWF0aW9uQ29udGV4dCo+KGNv
bnRleHQpOwogCiAgICAgRm9ybVN0cmVhbUZpZWxkcyogbmV3SW5mbyA9IG5ldyBGb3JtU3RyZWFt
RmllbGRzOwotICAgIG5ld0luZm8tPmZvcm1EYXRhID0gZm9ybUNvbnRleHQtPmZvcm1EYXRhLnJl
bGVhc2UoKTsKKyAgICBuZXdJbmZvLT5mb3JtRGF0YSA9IFdURk1vdmUoZm9ybUNvbnRleHQtPmZv
cm1EYXRhKTsKICAgICBuZXdJbmZvLT5jdXJyZW50U3RyZWFtID0gMDsKICAgICBuZXdJbmZvLT5j
dXJyZW50U3RyZWFtUmFuZ2VMZW5ndGggPSBCbG9iRGF0YUl0ZW06OnRvRW5kT2ZGaWxlOwogICAg
IG5ld0luZm8tPmZvcm1TdHJlYW0gPSBzdHJlYW07IC8vIERvbid0IHJldGFpbi4gVGhhdCB3b3Vs
ZCBjcmVhdGUgYSByZWZlcmVuY2UgY3ljbGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvQmlkaUNvbnRleHQuY3BwCmluZGV4IGU3ZTZlY2ZlY2VjMGFiYjhlMTJiY2M0ZWIyOGY2NGQ1
ZmFhNDZmMzYuLjk3N2RiZmQ3OTdkNTc4NTdmNDdlNDgxMTZiMTNkNDFjYWEzODg2ZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaUNvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaUNvbnRleHQuY3BwCkBAIC05Miw3ICs5
Miw3IEBAIFBhc3NSZWZQdHI8QmlkaUNvbnRleHQ+IEJpZGlDb250ZXh0Ojpjb3B5U3RhY2tSZW1v
dmluZ1VuaWNvZGVFbWJlZGRpbmdDb250ZXh0cygpCiAgICAgZm9yIChpbnQgaSA9IGNvbnRleHRz
LnNpemUoKSAtIDE7IGkgPiAwOyAtLWkpCiAgICAgICAgIHRvcENvbnRleHQgPSBjb3B5Q29udGV4
dEFuZFJlYmFzZWxpbmVMZXZlbChjb250ZXh0c1tpIC0gMV0sIHRvcENvbnRleHQuZ2V0KCkpOwog
Ci0gICAgcmV0dXJuIHRvcENvbnRleHQucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKHRv
cENvbnRleHQpOwogfQogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgQmlkaUNvbnRleHQmIGMxLCBj
b25zdCBCaWRpQ29udGV4dCYgYzIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zp
bHRlckVmZmVjdFJlbmRlcmVyLmNwcAppbmRleCBmNDdiM2JhNjE2MzdjYzI1NGVhYWYwOTNmMjc0
MWNlNGExZDExYjliLi5iYTUxMWNjYTZhOTgzYjBiMTE0YTEyZjk1YjQxNjJjOTU5MmFhZTY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5j
cHAKQEAgLTI4OCw3ICsyODgsNyBAQCBib29sIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZChS
ZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucwogICAgICAgICAg
ICAgICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKHByZXZpb3VzRWZmZWN0KTsKICAg
ICAgICAgICAgICAgICBtX2VmZmVjdHMuYXBwZW5kKGVmZmVjdCk7CiAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBwcmV2aW91c0VmZmVjdCA9IGVmZmVjdC5yZWxlYXNlKCk7CisgICAgICAgICAg
ICBwcmV2aW91c0VmZmVjdCA9IFdURk1vdmUoZWZmZWN0KTsKICAgICAgICAgfQogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggNmE2ZjExNjQ5OGQx
ODk1MzYyYTA3OGE4ZjliMDUxNmQxZTMxMGZiMC4uOTI5MDE0Y2U5YmZkNjMyZjU2ZTE3ZGI0NDU2
MDQ5M2ZhMzRjMWU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
CkBAIC0zMTE2LDcgKzMxMTYsNyBAQCBQYXNzUmVmUHRyPFNjcm9sbGJhcj4gUmVuZGVyTGF5ZXI6
OmNyZWF0ZVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdAogICAgICAgICB9
CiAgICAgfQogICAgIHJlbmRlcmVyKCkudmlldygpLmZyYW1lVmlldygpLmFkZENoaWxkKHdpZGdl
dC5nZXQoKSk7Ci0gICAgcmV0dXJuIHdpZGdldC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1v
dmUod2lkZ2V0KTsKIH0KIAogdm9pZCBSZW5kZXJMYXllcjo6ZGVzdHJveVNjcm9sbGJhcihTY3Jv
bGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMaXN0Qm94LmNwcAppbmRleCAyMzdjNmVhMjcyNDQxZGNkZjAyZTA5OGY2OTNjOTYxYjgw
MGUzMDBhLi41ZGFhNmY5NDM5ZWMzYzI1NmVhNzA5MzQwZmU1YTYzODQ5Mjk5ZTJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCkBAIC05MTEsNyArOTExLDcg
QEAgUGFzc1JlZlB0cjxTY3JvbGxiYXI+IFJlbmRlckxpc3RCb3g6OmNyZWF0ZVNjcm9sbGJhcigp
CiAgICAgICAgIH0KICAgICB9CiAgICAgdmlldygpLmZyYW1lVmlldygpLmFkZENoaWxkKHdpZGdl
dC5nZXQoKSk7Ci0gICAgcmV0dXJuIHdpZGdldC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1v
dmUod2lkZ2V0KTsKIH0KIAogdm9pZCBSZW5kZXJMaXN0Qm94OjpkZXN0cm95U2Nyb2xsYmFyKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCmluZGV4IDRkYjMz
YTAwODFhMzA1MTU5NzhhNGRmOTJhZWMxNzVhNGYwMTNkYTkuLmI4MDA5NDljZDc0NzAyZGZkMTE5
NGM1MWI1NDZkZTkxYmNkMmYyZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJNZW51TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck1lbnVMaXN0LmNwcApAQCAtNTc4LDcgKzU3OCw3IEBAIFBhc3NSZWZQdHI8U2Nyb2xsYmFyPiBS
ZW5kZXJNZW51TGlzdDo6Y3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxl
CiAgICAgICAgIHdpZGdldCA9IFJlbmRlclNjcm9sbGJhcjo6Y3JlYXRlQ3VzdG9tU2Nyb2xsYmFy
KHNjcm9sbGFibGVBcmVhLCBvcmllbnRhdGlvbiwgJnNlbGVjdEVsZW1lbnQoKSk7CiAgICAgZWxz
ZQogICAgICAgICB3aWRnZXQgPSBTY3JvbGxiYXI6OmNyZWF0ZU5hdGl2ZVNjcm9sbGJhcihzY3Jv
bGxhYmxlQXJlYSwgb3JpZW50YXRpb24sIGNvbnRyb2xTaXplKTsKLSAgICByZXR1cm4gd2lkZ2V0
LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92ZSh3aWRnZXQpOwogfQogCiBpbnQgUmVuZGVy
TWVudUxpc3Q6OmNsaWVudEluc2V0TGVmdCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcAppbmRleCAzZjVkMDNkYWNmMzA5NzE5MDQwNmUz
MGE4YmE4OWU2MDkwZWRmNjMyLi5mNWM2MjU5YWMwZTlkZTljMGZhYjJkYzNhZTc3YjU0ZGE1ZWMz
ZDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmll
bGQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5j
cHAKQEAgLTM1NCw3ICszNTQsNyBAQCBQYXNzUmVmUHRyPFNjcm9sbGJhcj4gUmVuZGVyU2VhcmNo
RmllbGQ6OmNyZWF0ZVNjcm9sbGJhcihTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYQogICAgICAgICB3
aWRnZXQgPSBSZW5kZXJTY3JvbGxiYXI6OmNyZWF0ZUN1c3RvbVNjcm9sbGJhcihzY3JvbGxhYmxl
QXJlYSwgb3JpZW50YXRpb24sICZpbnB1dEVsZW1lbnQoKSk7CiAgICAgZWxzZQogICAgICAgICB3
aWRnZXQgPSBTY3JvbGxiYXI6OmNyZWF0ZU5hdGl2ZVNjcm9sbGJhcihzY3JvbGxhYmxlQXJlYSwg
b3JpZW50YXRpb24sIGNvbnRyb2xTaXplKTsKLSAgICByZXR1cm4gd2lkZ2V0LnJlbGVhc2UoKTsK
KyAgICByZXR1cm4gV1RGTW92ZSh3aWRnZXQpOwogfQogCiBMYXlvdXRVbml0IFJlbmRlclNlYXJj
aEZpZWxkOjpjb21wdXRlTG9naWNhbEhlaWdodExpbWl0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlcGxheS9SZXBsYXlDb250cm9sbGVyLmNwcAppbmRleCA5MWEyOTUxNGE5NTg0MTIzNzNkNGQ3
OWEyNDk2ZTEwMjBmODg5YTQyLi5kMTA1MDFhMjZmNWUzZDYxMTBkNzA0MGZmOTdhMjQ5MDdiOWI3
MjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5Q29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuY3BwCkBAIC0y
ODQsNyArMjg0LDcgQEAgdm9pZCBSZXBsYXlDb250cm9sbGVyOjp1bmxvYWRTZWdtZW50KGJvb2wg
c3VwcHJlc3NOb3RpZmljYXRpb25zKQogICAgIExPRyhXZWJSZXBsYXksICIlLTIwcyBDbGVhcmlu
ZyBpbnB1dCBjdXJzb3JzIGZvciBwYWdlOiAlcFxuIiwgIlJlcGxheUNvbnRyb2xsZXIiLCAmbV9w
YWdlKTsKIAogICAgIG1fYWN0aXZlQ3Vyc29yID0gbnVsbHB0cjsKLSAgICBSZWZQdHI8UmVwbGF5
U2Vzc2lvblNlZ21lbnQ+IHVubG9hZGVkU2VnbWVudCA9IG1fbG9hZGVkU2VnbWVudC5yZWxlYXNl
KCk7CisgICAgYXV0byB1bmxvYWRlZFNlZ21lbnQgPSBXVEZNb3ZlKG1fbG9hZGVkU2VnbWVudCk7
CiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbV9wYWdlLm1haW5GcmFtZSgpOyBmcmFtZTsgZnJh
bWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGZyYW1lLT5zY3Jp
cHQoKS5nbG9iYWxPYmplY3QobWFpblRocmVhZE5vcm1hbFdvcmxkKCkpLT5zZXRJbnB1dEN1cnNv
cihtX2VtcHR5Q3Vyc29yLmNvcHlSZWYoKSk7CiAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5z
ZXRJbnB1dEN1cnNvcihtX2VtcHR5Q3Vyc29yLmNvcHlSZWYoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCmluZGV4IDEyZmEwYmI3
YzAxYTY1Mzk4YTQ0OTljYjE5ZjlmYzJmNGU5NTQ3YTYuLjFhMjA3MjA4YjNiYmVjMzM3OWRmOTFj
ZjQxYjcwOTNkNDYyZDM4YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC0xNzksNyArMTc5LDcgQEAgUmVmUHRyPEZpbHRl
ckVmZmVjdD4gU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWls
ZGVyKiBmaWx0ZXIKICAgICBpZiAoIWlucHV0MSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICBSZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNlID0gU1ZHRkVMaWdodEVsZW1lbnQ6
OmZpbmRMaWdodFNvdXJjZSh0aGlzKTsKKyAgICBhdXRvIGxpZ2h0U291cmNlID0gU1ZHRkVMaWdo
dEVsZW1lbnQ6OmZpbmRMaWdodFNvdXJjZSh0aGlzKTsKICAgICBpZiAoIWxpZ2h0U291cmNlKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTkwLDcgKzE5MCw3IEBAIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVp
bGRlciogZmlsdGVyCiAgICAgQ29sb3IgY29sb3IgPSByZW5kZXJlci0+c3R5bGUoKS5zdmdTdHls
ZSgpLmxpZ2h0aW5nQ29sb3IoKTsKIAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9
IEZFRGlmZnVzZUxpZ2h0aW5nOjpjcmVhdGUoZmlsdGVyLCBjb2xvciwgc3VyZmFjZVNjYWxlKCks
IGRpZmZ1c2VDb25zdGFudCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVu
aXRMZW5ndGhZKCksIGxpZ2h0U291cmNlLnJlbGVhc2UoKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsVW5pdExl
bmd0aFgoKSwga2VybmVsVW5pdExlbmd0aFkoKSwgV1RGTW92ZShsaWdodFNvdXJjZSkpOwogICAg
IGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7CiAgICAgcmV0dXJuIGVmZmVj
dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRp
bmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdF
bGVtZW50LmNwcAppbmRleCAxOWY1ZDM4OTQ1Y2E5NjNlOWZlZmQ5OGFhNDQwMjlmMzdjNDk1YWFi
Li42M2Y4NmUxZGJlYTIxMWNhY2JjYjdkYTQ0MjQ2MjA1ZDRhODU3NTc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC0x
OTAsNyArMTkwLDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVTcGVjdWxhckxpZ2h0aW5n
RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGUKICAgICBpZiAoIWlucHV0MSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0
U291cmNlID0gU1ZHRkVMaWdodEVsZW1lbnQ6OmZpbmRMaWdodFNvdXJjZSh0aGlzKTsKKyAgICBh
dXRvIGxpZ2h0U291cmNlID0gU1ZHRkVMaWdodEVsZW1lbnQ6OmZpbmRMaWdodFNvdXJjZSh0aGlz
KTsKICAgICBpZiAoIWxpZ2h0U291cmNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAt
MjAxLDcgKzIwMSw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFU3BlY3VsYXJMaWdodGlu
Z0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlCiAgICAgQ29sb3IgY29sb3Ig
PSByZW5kZXJlci0+c3R5bGUoKS5zdmdTdHlsZSgpLmxpZ2h0aW5nQ29sb3IoKTsKIAogICAgIFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFU3BlY3VsYXJMaWdodGluZzo6Y3JlYXRlKGZp
bHRlciwgY29sb3IsIHN1cmZhY2VTY2FsZSgpLCBzcGVjdWxhckNvbnN0YW50KCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjdWxhckV4cG9uZW50KCksIGtl
cm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIGxpZ2h0U291cmNlLnJlbGVh
c2UoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjdWxh
ckV4cG9uZW50KCksIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIFdU
Rk1vdmUobGlnaHRTb3VyY2UpKTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChp
bnB1dDEpOwogICAgIHJldHVybiBlZmZlY3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdMaXN0UHJvcGVydHkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eS5oCmluZGV4IDc3Nzg4ZTEwMjI0OGQ1MDI1MmM4MDE0
Zjc3YTA2NWQxYmFkOTU5ZGIuLjVkNDFlOTYwYjdlNDFiNzk4MWZiOTNkOThmNmY4MWE2ZTI1OGNh
NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9w
ZXJ0eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0
eS5oCkBAIC0yMDMsNyArMjAzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV93cmFwcGVycy0+
YXQoaW5kZXgpID0gd3JhcHBlcjsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiB3cmFwcGVy
LnJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUod3JhcHBlcik7CiAgICAgfQogCiAg
ICAgLy8gU1ZHTGlzdDo6aW5zZXJ0SXRlbUJlZm9yZSgpCkBAIC0yNTAsNyArMjUwLDcgQEAgcHVi
bGljOgogCiAgICAgICAgIC8vIFNwZWM6IElmIG5ld0l0ZW0gaXMgYWxyZWFkeSBpbiBhIGxpc3Qs
IGl0IGlzIHJlbW92ZWQgZnJvbSBpdHMgcHJldmlvdXMgbGlzdCBiZWZvcmUgaXQgaXMgaW5zZXJ0
ZWQgaW50byB0aGlzIGxpc3QuCiAgICAgICAgIGlmICghcHJvY2Vzc0luY29taW5nTGlzdEl0ZW1X
cmFwcGVyKG5ld0l0ZW0sICZpbmRleCkpCi0gICAgICAgICAgICByZXR1cm4gbmV3SXRlbS5yZWxl
YXNlKCk7CisgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShuZXdJdGVtKTsKIAogICAgICAgICAv
LyBTcGVjOiBJbnNlcnRzIGEgbmV3IGl0ZW0gaW50byB0aGUgbGlzdCBhdCB0aGUgc3BlY2lmaWVk
IHBvc2l0aW9uLiBUaGUgaW5kZXggb2YgdGhlIGl0ZW0gYmVmb3JlIHdoaWNoIHRoZSBuZXcgaXRl
bSBpcyB0byBiZQogICAgICAgICAvLyBpbnNlcnRlZC4gVGhlIGZpcnN0IGl0ZW0gaXMgbnVtYmVy
IDAuIElmIHRoZSBpbmRleCBpcyBlcXVhbCB0byAwLCB0aGVuIHRoZSBuZXcgaXRlbSBpcyBpbnNl
cnRlZCBhdCB0aGUgZnJvbnQgb2YgdGhlIGxpc3QuCkBAIC0yNjAsNyArMjYwLDcgQEAgcHVibGlj
OgogICAgICAgICBtX3dyYXBwZXJzLT5pbnNlcnQoaW5kZXgsIG5ld0l0ZW0pOwogCiAgICAgICAg
IGNvbW1pdENoYW5nZSgpOwotICAgICAgICByZXR1cm4gbmV3SXRlbTsKKyAgICAgICAgcmV0dXJu
IFdURk1vdmUobmV3SXRlbSk7CiAgICAgfQogCiAgICAgLy8gU1ZHTGlzdDo6cmVwbGFjZUl0ZW0o
KQpAQCAtMzg1LDcgKzM4NSw3IEBAIHB1YmxpYzoKICAgICAgICAgbV92YWx1ZXMtPnJlbW92ZShp
bmRleCk7CiAKICAgICAgICAgY29tbWl0Q2hhbmdlKCk7Ci0gICAgICAgIHJldHVybiBvbGRJdGVt
LnJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUob2xkSXRlbSk7CiAgICAgfQogCiAg
ICAgLy8gU1ZHTGlzdDo6YXBwZW5kSXRlbSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRo
cmVhZC5jcHAKaW5kZXggZDY4ODJkYjJjMTc3ZmRlMTcyN2YyMzEwZTI5MjBmZGJhZGZiN2Y0Ni4u
ZjZmNWE0ZGYxNDBlOGM3MjNiZjE4MzVmYTYxNTk2YTY3MDlmZTY5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgV29ya2Vy
VGhyZWFkOjp3b3JrZXJUaHJlYWQoKQogCiAgICAgewogICAgICAgICBMb2NrSG9sZGVyIGxvY2so
bV90aHJlYWRDcmVhdGlvbk11dGV4KTsKLSAgICAgICAgbV93b3JrZXJHbG9iYWxTY29wZSA9IGNy
ZWF0ZVdvcmtlckdsb2JhbFNjb3BlKG1fc3RhcnR1cERhdGEtPm1fc2NyaXB0VVJMLCBtX3N0YXJ0
dXBEYXRhLT5tX3VzZXJBZ2VudCwgbV9zdGFydHVwRGF0YS0+bV9jb250ZW50U2VjdXJpdHlQb2xp
Y3lSZXNwb25zZUhlYWRlcnMsIG1fc3RhcnR1cERhdGEtPm1fc2hvdWxkQnlwYXNzTWFpbldvcmxk
Q29udGVudFNlY3VyaXR5UG9saWN5LCBtX3N0YXJ0dXBEYXRhLT5tX3RvcE9yaWdpbi5yZWxlYXNl
KCkpOworICAgICAgICBtX3dvcmtlckdsb2JhbFNjb3BlID0gY3JlYXRlV29ya2VyR2xvYmFsU2Nv
cGUobV9zdGFydHVwRGF0YS0+bV9zY3JpcHRVUkwsIG1fc3RhcnR1cERhdGEtPm1fdXNlckFnZW50
LCBtX3N0YXJ0dXBEYXRhLT5tX2NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycywg
bV9zdGFydHVwRGF0YS0+bV9zaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xp
Y3ksIFdURk1vdmUobV9zdGFydHVwRGF0YS0+bV90b3BPcmlnaW4pKTsKIAogICAgICAgICBpZiAo
bV9ydW5Mb29wLnRlcm1pbmF0ZWQoKSkgewogICAgICAgICAgICAgLy8gVGhlIHdvcmtlciB3YXMg
dGVybWluYXRlZCBiZWZvcmUgdGhlIHRocmVhZCBoYWQgYSBjaGFuY2UgdG8gcnVuLiBTaW5jZSB0
aGUgY29udGV4dCBkaWRuJ3QgZXhpc3QgeWV0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVz
dC5jcHAKaW5kZXggZTVlYTc0MDViY2U5YjA2ZGQ3Y2M3MTE3M2FiNDRjYTVmNzc1OWQ0Mi4uODdj
ZGZhN2IxYTI4ZjM2MTU0OGYwYzEzYWRhZDhlNjdhNjIxOTBkZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuY3BwCkBAIC03OTgsNyArNzk4LDcgQEAgYm9vbCBYTUxIdHRwUmVxdWVz
dDo6aW50ZXJuYWxBYm9ydCgpCiAgICAgLy8gQ2FuY2VsbGluZyBtX2xvYWRlciBtYXkgdHJpZ2dl
ciBhIHdpbmRvdy5vbmxvYWQgY2FsbGJhY2sgd2hpY2ggY2FuIGNhbGwgb3BlbigpIG9uIHRoZSBz
YW1lIHhoci4KICAgICAvLyBUaGlzIHdvdWxkIGNyZWF0ZSBpbnRlcm5hbEFib3J0IHJlZW50cmFu
dCBjYWxsLgogICAgIC8vIG1fbG9hZGVyIGlzIHNldCB0byBudWxsIGJlZm9yZSBiZWluZyBjYW5j
ZWxsZWQgdG8gZXhpdCBlYXJseSBpbiBhbnkgcmVlbnRyYW50IGludGVybmFsQWJvcnQoKSBjYWxs
LgotICAgIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyPiBsb2FkZXIgPSBtX2xvYWRlci5yZWxlYXNl
KCk7CisgICAgYXV0byBsb2FkZXIgPSBXVEZNb3ZlKG1fbG9hZGVyKTsKICAgICBsb2FkZXItPmNh
bmNlbCgpOwogCiAgICAgLy8gSWYgd2luZG93Lm9ubG9hZCBjYWxsYmFjayBjYWxscyBvcGVuKCkg
YW5kIHNlbmQoKSBvbiB0aGUgc2FtZSB4aHIsIG1fbG9hZGVyIGlzIG5vdyBzZXQgdG8gYSBuZXcg
dmFsdWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhTdGVwLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YUGF0aFN0ZXAuY3BwCmluZGV4IDBhZTM0MDM2MDdjZjQ3ODYwMDZk
Njk3ODRiMmFkYmM3MjJmYjNmZmYuLmM1NTdlMTM2ZTg3YWRiYWQwNTE4ODFhYjE3NTcwMjM5YWZh
NDllMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFN0ZXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFN0ZXAuY3BwCkBAIC0zNDMsMTAgKzM0MywxMCBAQCB2
b2lkIFN0ZXA6Om5vZGVzSW5BeGlzKE5vZGUmIGNvbnRleHQsIE5vZGVTZXQmIG5vZGVzKSBjb25z
dAogCiAgICAgICAgICAgICAvLyBBdm9pZCBsYXppbHkgY3JlYXRpbmcgYXR0cmlidXRlIG5vZGVz
IGZvciBhdHRyaWJ1dGVzIHRoYXQgd2UgZG8gbm90IG5lZWQgYW55d2F5LgogICAgICAgICAgICAg
aWYgKG1fbm9kZVRlc3QubV9raW5kID09IE5vZGVUZXN0OjpOYW1lVGVzdCAmJiBtX25vZGVUZXN0
Lm1fZGF0YSAhPSBzdGFyQXRvbSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxBdHRyPiBhdHRy
ID0gY29udGV4dEVsZW1lbnQuZ2V0QXR0cmlidXRlTm9kZU5TKG1fbm9kZVRlc3QubV9uYW1lc3Bh
Y2VVUkksIG1fbm9kZVRlc3QubV9kYXRhKTsKKyAgICAgICAgICAgICAgICBhdXRvIGF0dHIgPSBj
b250ZXh0RWxlbWVudC5nZXRBdHRyaWJ1dGVOb2RlTlMobV9ub2RlVGVzdC5tX25hbWVzcGFjZVVS
SSwgbV9ub2RlVGVzdC5tX2RhdGEpOwogICAgICAgICAgICAgICAgIGlmIChhdHRyICYmIGF0dHIt
Pm5hbWVzcGFjZVVSSSgpICE9IFhNTE5TTmFtZXM6OnhtbG5zTmFtZXNwYWNlVVJJKSB7IC8vIElu
IFhQYXRoIGxhbmQsIG5hbWVzcGFjZSBub2RlcyBhcmUgbm90IGFjY2Vzc2libGUgb24gdGhlIGF0
dHJpYnV0ZSBheGlzLgogICAgICAgICAgICAgICAgICAgICBpZiAobm9kZU1hdGNoZXMoKmF0dHIs
IEF0dHJpYnV0ZUF4aXMsIG1fbm9kZVRlc3QpKSAvLyBTdGlsbCBuZWVkIHRvIGNoZWNrIG1lcmdl
ZCBwcmVkaWNhdGVzLgotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXMuYXBwZW5kKGF0dHIu
cmVsZWFzZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVzLmFwcGVuZChXVEZNb3Zl
KGF0dHIpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgfQpAQCAtMzU1LDkgKzM1NSw5IEBAIHZvaWQgU3RlcDo6bm9kZXNJbkF4aXMoTm9k
ZSYgY29udGV4dCwgTm9kZVNldCYgbm9kZXMpIGNvbnN0CiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgICAgICBmb3IgKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlIDogY29udGV4
dEVsZW1lbnQuYXR0cmlidXRlc0l0ZXJhdG9yKCkpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8
QXR0cj4gYXR0ciA9IGNvbnRleHRFbGVtZW50LmVuc3VyZUF0dHIoYXR0cmlidXRlLm5hbWUoKSk7
Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGVNYXRjaGVzKCphdHRyLCBBdHRyaWJ1dGVBeGlzLCBt
X25vZGVUZXN0KSkKLSAgICAgICAgICAgICAgICAgICAgbm9kZXMuYXBwZW5kKGF0dHIucmVsZWFz
ZSgpKTsKKyAgICAgICAgICAgICAgICBhdXRvIGF0dHIgPSBjb250ZXh0RWxlbWVudC5lbnN1cmVB
dHRyKGF0dHJpYnV0ZS5uYW1lKCkpOworICAgICAgICAgICAgICAgIGlmIChub2RlTWF0Y2hlcyhh
dHRyLmdldCgpLCBBdHRyaWJ1dGVBeGlzLCBtX25vZGVUZXN0KSkKKyAgICAgICAgICAgICAgICAg
ICAgbm9kZXMuYXBwZW5kKFdURk1vdmUoYXR0cikpOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2Uv
U3RvcmFnZUFyZWFJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlQXJlYUlt
cGwuY3BwCmluZGV4IDA4ZWExNjc2ZWM2NmNmNGY1NmFkMThiNWM0ZjQ5ZGRkYjc5ZmNhNmIuLmE2
NTUwZGExYWViZWY2NGI3YWNkMWViMmMyNjMwMGI2NzhiOTFjMzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCkBAIC0xMzksOSArMTM5LDkgQEAgdm9pZCBTdG9y
YWdlQXJlYUltcGw6OnNldEl0ZW0oRnJhbWUqIHNvdXJjZUZyYW1lLCBjb25zdCBTdHJpbmcmIGtl
eSwgY29uc3QgU3RyaW4KICAgICBibG9ja1VudGlsSW1wb3J0Q29tcGxldGUoKTsKIAogICAgIFN0
cmluZyBvbGRWYWx1ZTsKLSAgICBSZWZQdHI8U3RvcmFnZU1hcD4gbmV3TWFwID0gbV9zdG9yYWdl
TWFwLT5zZXRJdGVtKGtleSwgdmFsdWUsIG9sZFZhbHVlLCBxdW90YUV4Y2VwdGlvbik7CisgICAg
YXV0byBuZXdNYXAgPSBtX3N0b3JhZ2VNYXAtPnNldEl0ZW0oa2V5LCB2YWx1ZSwgb2xkVmFsdWUs
IHF1b3RhRXhjZXB0aW9uKTsKICAgICBpZiAobmV3TWFwKQotICAgICAgICBtX3N0b3JhZ2VNYXAg
PSBuZXdNYXAucmVsZWFzZSgpOworICAgICAgICBtX3N0b3JhZ2VNYXAgPSBXVEZNb3ZlKG5ld01h
cCk7CiAKICAgICBpZiAocXVvdGFFeGNlcHRpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTE2MSw5
ICsxNjEsOSBAQCB2b2lkIFN0b3JhZ2VBcmVhSW1wbDo6cmVtb3ZlSXRlbShGcmFtZSogc291cmNl
RnJhbWUsIGNvbnN0IFN0cmluZyYga2V5KQogICAgIGJsb2NrVW50aWxJbXBvcnRDb21wbGV0ZSgp
OwogCiAgICAgU3RyaW5nIG9sZFZhbHVlOwotICAgIFJlZlB0cjxTdG9yYWdlTWFwPiBuZXdNYXAg
PSBtX3N0b3JhZ2VNYXAtPnJlbW92ZUl0ZW0oa2V5LCBvbGRWYWx1ZSk7CisgICAgYXV0byBuZXdN
YXAgPSBtX3N0b3JhZ2VNYXAtPnJlbW92ZUl0ZW0oa2V5LCBvbGRWYWx1ZSk7CiAgICAgaWYgKG5l
d01hcCkKLSAgICAgICAgbV9zdG9yYWdlTWFwID0gbmV3TWFwLnJlbGVhc2UoKTsKKyAgICAgICAg
bV9zdG9yYWdlTWFwID0gV1RGTW92ZShuZXdNYXApOwogCiAgICAgaWYgKG9sZFZhbHVlLmlzTnVs
bCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVn
aW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9t
YWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbQppbmRleCBkNDll
ZjZlZTFiZDMxN2IyNmZmYjY4YzgyMGU5MmMyZDc3YmM1NWJiLi5lNGI3Yzg5OWE2NWEyNDM4Yjhi
MzZhZDQzODc4ZDhhOGI1ZDhlNWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVn
aW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0KQEAgLTI3
Miw3ICsyNzIsNyBAQCBQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eT4gTmV0
c2NhcGVQbHVnaW5Ib3N0TWFuYWdlcjo6aW5zdGFudGlhdGVQbAogICAgIGluc3RhbmNlLT5zZXRS
ZW5kZXJDb250ZXh0SUQocmVwbHktPm1fcmVuZGVyQ29udGV4dElEKTsKICAgICBpbnN0YW5jZS0+
c2V0UmVuZGVyZXJUeXBlKHJlcGx5LT5tX3JlbmRlcmVyVHlwZSk7CiAKLSAgICByZXR1cm4gaW5z
dGFuY2UucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKGluc3RhbmNlKTsKIH0KIAogdm9p
ZCBOZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyOjpjcmVhdGVQcm9wZXJ0eUxpc3RGaWxlKGNvbnN0
IFN0cmluZyYgcGx1Z2luUGF0aCwgY3B1X3R5cGVfdCBwbHVnaW5BcmNoaXRlY3R1cmUsIGNvbnN0
IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbSBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpp
bmRleCA5ODRjMjNkYjYxZmZlZDBhMGQ0OGI2YjVkOWYyYWJkZTZmMmYzMDA4Li5lZWQyNzc5ODFj
MGY4ZjU4ZGIwNjc3NDFlZjliMWU3NjBhMjJhMDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KKysrIGIv
U291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVBy
b3h5Lm1tCkBAIC0yNDgsOSArMjQ4LDkgQEAgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpO
ZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkoTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkKIAogUGFz
c1JlZlB0cjxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk+IE5ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eTo6Y3JlYXRlKE5ldHNjYXBlUGx1Z2luSG9zdFByb3h5KiBwbHVnaW5Ib3N0UHJveHks
IFdlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldyAqcGx1Z2luVmlldywgYm9vbCBmdWxsRnJhbWVQ
bHVnaW4pCiB7Ci0gICAgUmVmUHRyPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eT4gcHJveHkg
PSBhZG9wdFJlZihuZXcgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5KHBsdWdpbkhvc3RQcm94
eSwgcGx1Z2luVmlldywgZnVsbEZyYW1lUGx1Z2luKSk7Ci0gICAgcGx1Z2luSG9zdFByb3h5LT5h
ZGRQbHVnaW5JbnN0YW5jZShwcm94eS5nZXQoKSk7Ci0gICAgcmV0dXJuIHByb3h5LnJlbGVhc2Uo
KTsKKyAgICBhdXRvIHByb3h5ID0gYWRvcHRSZWYoKm5ldyBOZXRzY2FwZVBsdWdpbkluc3RhbmNl
UHJveHkocGx1Z2luSG9zdFByb3h5LCBwbHVnaW5WaWV3LCBmdWxsRnJhbWVQbHVnaW4pKTsKKyAg
ICBwbHVnaW5Ib3N0UHJveHktPmFkZFBsdWdpbkluc3RhbmNlKHByb3h5LnB0cigpKTsKKyAgICBy
ZXR1cm4gV1RGTW92ZShwcm94eSk7CiB9CiAKIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6
fk5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eSgpCkBAIC04MDEsOCArODAxLDggQEAgTlBFcnJv
ciBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmxvYWRSZXF1ZXN0KE5TVVJMUmVxdWVzdCAq
cmVxdWVzdCwgY29uc3QgY2gKICAgICAgICAgICAgIHJldHVybiBOUEVSUl9JTlZBTElEX1BBUkFN
OwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFBsdWdpblJlcXVlc3Q+IHBsdWdpblJlcXVl
c3QgPSBQbHVnaW5SZXF1ZXN0OjpjcmVhdGUocmVxdWVzdElELCByZXF1ZXN0LCB0YXJnZXQsIGFs
bG93UG9wdXBzKTsKLSAgICAgICAgbV9wbHVnaW5SZXF1ZXN0cy5hcHBlbmQocGx1Z2luUmVxdWVz
dC5yZWxlYXNlKCkpOworICAgICAgICBhdXRvIHBsdWdpblJlcXVlc3QgPSBQbHVnaW5SZXF1ZXN0
OjpjcmVhdGUocmVxdWVzdElELCByZXF1ZXN0LCB0YXJnZXQsIGFsbG93UG9wdXBzKTsKKyAgICAg
ICAgbV9wbHVnaW5SZXF1ZXN0cy5hcHBlbmQoV1RGTW92ZShwbHVnaW5SZXF1ZXN0KSk7CiAgICAg
ICAgIG1fcmVxdWVzdFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBSZWZQdHI8SG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0+IHN0cmVhbSA9IEhvc3RlZE5ldHNj
YXBlUGx1Z2luU3RyZWFtOjpjcmVhdGUodGhpcywgcmVxdWVzdElELCByZXF1ZXN0KTsKQEAgLTEz
NzIsMTEgKzEzNzIsMTEgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmRlbWFy
c2hhbFZhbHVlRnJvbUFycmF5KEV4ZWNTdGF0ZSogZXhlYywgTlNBcnIKICAgICAgICAgICAgIGlm
ICghZnJhbWUtPnNjcmlwdCgpLmNhbkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9FeGVjdXRlU2Ny
aXB0KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgICAgIFJlZlB0
cjxSb290T2JqZWN0PiByb290T2JqZWN0ID0gZnJhbWUtPnNjcmlwdCgpLmNyZWF0ZVJvb3RPYmpl
Y3QobV9wbHVnaW5WaWV3KTsKKyAgICAgICAgICAgIGF1dG8gcm9vdE9iamVjdCA9IGZyYW1lLT5z
Y3JpcHQoKS5jcmVhdGVSb290T2JqZWN0KG1fcGx1Z2luVmlldyk7CiAgICAgICAgICAgICBpZiAo
IXJvb3RPYmplY3QpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
Ci0gICAgICAgICAgICByZXN1bHQgPSBQcm94eUluc3RhbmNlOjpjcmVhdGUocm9vdE9iamVjdC5y
ZWxlYXNlKCksIHRoaXMsIG9iamVjdElEKS0+Y3JlYXRlUnVudGltZU9iamVjdChleGVjKTsKKyAg
ICAgICAgICAgIHJlc3VsdCA9IFByb3h5SW5zdGFuY2U6OmNyZWF0ZShXVEZNb3ZlKHJvb3RPYmpl
Y3QpLCB0aGlzLCBvYmplY3RJRCktPmNyZWF0ZVJ1bnRpbWVPYmplY3QoZXhlYyk7CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbQppbmRleCBmZmVmYzE5MGJjYjc1NjQxNWIzZjMyZTFiMmE1MmIxMTBhNThmMzM1Li44OWJh
MDdjZjcxMTE5NDEyMDZlZTQ0YThjZGYwM2EyMTkxMGUyNWZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpA
QCAtMjM0OCw3ICsyMzQ4LDcgQEAgLSAodm9pZClkZWFsbG9jCiAKIC0gKHZvaWQpcmVjZWl2ZWRQ
b2xpY3lEZWNpc2lvbjooUG9saWN5QWN0aW9uKWFjdGlvbgogewotICAgIFJlZlB0cjxGcmFtZT4g
ZnJhbWUgPSBfZnJhbWUucmVsZWFzZSgpOworICAgIGF1dG8gZnJhbWUgPSBXVEZNb3ZlKF9mcmFt
ZSk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbSBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCmluZGV4IGM2
Zjg1ZGU3ZDQ3NjQ3NzBkYWVhMzE2NzgzOTYzNGJhMmIzMTBiNDYuLmEzZGJmNGE3YjM5MGYxOWFj
ZGVmYzE0YmZhODI1NzQ5NTViNTNkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCkBAIC01NCw4ICs1NCw4IEBAIC0g
KGlkKWluaXRXaXRoVVJMOihOU1VSTCAqKXVybAogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0
dXJuIG5pbDsKIAotICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZShVUkwoW3VybCBhYnNvbHV0ZVVSTF0pKTsKLSAgICBTZWN1cml0eU9yaWdp
biogcmF3T3JpZ2luID0gb3JpZ2luLnJlbGVhc2UoKS5sZWFrUmVmKCk7CisgICAgYXV0byBvcmln
aW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFVSTChbdXJsIGFic29sdXRlVVJMXSkpOworICAg
IFNlY3VyaXR5T3JpZ2luKiByYXdPcmlnaW4gPSAmb3JpZ2luLmxlYWtSZWYoKTsKICAgICBfcHJp
dmF0ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlICo+KHJhd09y
aWdpbik7CiAKICAgICByZXR1cm4gc2VsZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViQXJjaGl2ZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViQXJj
aGl2ZS5tbQppbmRleCAzNDhlOGYwOGNhMmY0OTc2NjllZTNhYWNiZWMyY2Y2NTY3MThkYThmLi5l
OTZjNjA3Y2ZiODRjODVhMWViZmFhYmRjMzFjZWJhMDRlYTVjM2U4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkFyY2hpdmUubW0KKysrIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJBcmNoaXZlLm1tCkBAIC0xNzUsNyArMTc1LDcgQEAgLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoTWFpblJlc291cmNlOihXZWJSZXNvdXJjZSAqKW1haW5SZXNvdXJjZSBzdWJy
ZXNvdXJjZXM6KE4KICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB9CiAgICAgCi0gICAgUmVmUHRy
PEFyY2hpdmVSZXNvdXJjZT4gY29yZU1haW5SZXNvdXJjZSA9IG1haW5SZXNvdXJjZSA/IFttYWlu
UmVzb3VyY2UgX2NvcmVSZXNvdXJjZV0gOiAwOworICAgIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+
IGNvcmVNYWluUmVzb3VyY2UgPSBtYWluUmVzb3VyY2UgPyBbbWFpblJlc291cmNlIF9jb3JlUmVz
b3VyY2VdIDogbnVsbHB0cjsKIAogICAgIFZlY3RvcjxSZWZQdHI8QXJjaGl2ZVJlc291cmNlPj4g
Y29yZVJlc291cmNlczsKICAgICBmb3IgKFdlYlJlc291cmNlICpzdWJyZXNvdXJjZSBpbiBzdWJy
ZXNvdXJjZXMpCkBAIC0xODUsMTMgKzE4NSwxMyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhN
YWluUmVzb3VyY2U6KFdlYlJlc291cmNlICopbWFpblJlc291cmNlIHN1YnJlc291cmNlczooTgog
ICAgIGZvciAoV2ViQXJjaGl2ZSAqc3ViZnJhbWVBcmNoaXZlIGluIHN1YmZyYW1lQXJjaGl2ZXMp
CiAgICAgICAgIGNvcmVBcmNoaXZlcy5hcHBlbmQoW3N1YmZyYW1lQXJjaGl2ZS0+X3ByaXZhdGUg
Y29yZUFyY2hpdmVdKTsKIAotICAgIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjb3JlQXJjaGl2
ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb3JlTWFpblJlc291cmNlLnJlbGVhc2UoKSwg
V1RGTW92ZShjb3JlUmVzb3VyY2VzKSwgV1RGTW92ZShjb3JlQXJjaGl2ZXMpKTsKKyAgICBhdXRv
IGNvcmVBcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFdURk1vdmUoY29yZU1haW5S
ZXNvdXJjZSksIFdURk1vdmUoY29yZVJlc291cmNlcyksIFdURk1vdmUoY29yZUFyY2hpdmVzKSk7
CiAgICAgaWYgKCFjb3JlQXJjaGl2ZSkgewogICAgICAgICBbc2VsZiByZWxlYXNlXTsKICAgICAg
ICAgcmV0dXJuIG5pbDsKICAgICB9CiAKLSAgICBbX3ByaXZhdGUgc2V0Q29yZUFyY2hpdmU6Y29y
ZUFyY2hpdmUucmVsZWFzZSgpXTsKKyAgICBbX3ByaXZhdGUgc2V0Q29yZUFyY2hpdmU6V1RGTW92
ZShjb3JlQXJjaGl2ZSldOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0yMDksMTMgKzIwOSwx
MyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhOihOU0RhdGEgKilkYXRhCiAjZW5kaWYK
IAogICAgIF9wcml2YXRlID0gW1tXZWJBcmNoaXZlUHJpdmF0ZSBhbGxvY10gaW5pdF07Ci0gICAg
UmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNvcmVBcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6
Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6d3JhcE5TRGF0YShkYXRhKSk7CisgICAgYXV0byBjb3JlQXJj
aGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OndyYXBOU0RhdGEo
ZGF0YSkpOwogICAgIGlmICghY29yZUFyY2hpdmUpIHsKICAgICAgICAgW3NlbGYgcmVsZWFzZV07
CiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgfQogICAgICAgICAKLSAgICBbX3ByaXZhdGUgc2V0
Q29yZUFyY2hpdmU6Y29yZUFyY2hpdmUucmVsZWFzZSgpXTsKKyAgICBbX3ByaXZhdGUgc2V0Q29y
ZUFyY2hpdmU6V1RGTW92ZShjb3JlQXJjaGl2ZSldOwogICAgICAgICAKICNpZiAhTE9HX0RJU0FC
TEVECiAgICAgQ0ZBYnNvbHV0ZVRpbWUgZW5kID0gQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXggODAzZDNh
OGU0OWU1OWE3OTU0MDMwNmQ0MTgxNWFmOWM0Y2UwODgwMS4uNjA2NDcyMmE1NjM2MTQ4NTg0MmNm
NTdmZDkzMGY3NTU4OGQ2ZThmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJEYXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGF0
YVNvdXJjZS5tbQpAQCAtNTE4LDggKzUxOCw4IEBAIC0gKFdlYkFyY2hpdmUgKil3ZWJBcmNoaXZl
CiAKIC0gKFdlYlJlc291cmNlICopbWFpblJlc291cmNlCiB7Ci0gICAgUmVmUHRyPEFyY2hpdmVS
ZXNvdXJjZT4gY29yZVJlc291cmNlID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5tYWlu
UmVzb3VyY2UoKTsKLSAgICByZXR1cm4gW1tbV2ViUmVzb3VyY2UgYWxsb2NdIF9pbml0V2l0aENv
cmVSZXNvdXJjZTpjb3JlUmVzb3VyY2UucmVsZWFzZSgpXSBhdXRvcmVsZWFzZV07CisgICAgYXV0
byBjb3JlUmVzb3VyY2UgPSB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPm1haW5SZXNvdXJj
ZSgpOworICAgIHJldHVybiBbW1tXZWJSZXNvdXJjZSBhbGxvY10gX2luaXRXaXRoQ29yZVJlc291
cmNlOldURk1vdmUoY29yZVJlc291cmNlKV0gYXV0b3JlbGVhc2VdOwogfQogCiAtIChOU0FycmF5
ICopc3VicmVzb3VyY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkZyYW1lLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCBi
MGRjZDlhOWFhNmFlZmY0Y2RmNmFkZGUwNGVmN2NmMjlhZTQxODc2Li45Y2JmMzA5MTMzMzljMjY2
NGJiNzZhNmI1NDJiOWViZTUyNjEzMDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJh
bWUubW0KQEAgLTkxMSw3ICs5MTEsNyBAQCAtIChET01Eb2N1bWVudEZyYWdtZW50ICopX2RvY3Vt
ZW50RnJhZ21lbnRXaXRoTm9kZXNBc1BhcmFncmFwaHM6KE5TQXJyYXkgKilub2RlcwogICAgIHdo
aWxlICgobm9kZSA9IFtub2RlRW51bSBuZXh0T2JqZWN0XSkpCiAgICAgICAgIG5vZGVzVmVjdG9y
LmFwcGVuZChjb3JlKG5vZGUpKTsKIAotICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFn
bWVudCA9IGRvY3VtZW50LT5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CisgICAgYXV0byBmcmFn
bWVudCA9IGRvY3VtZW50LT5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CiAKICAgICBmb3IgKGF1
dG8qIG5vZGUgOiBub2Rlc1ZlY3RvcikgewogICAgICAgICBhdXRvIGVsZW1lbnQgPSBjcmVhdGVE
ZWZhdWx0UGFyYWdyYXBoRWxlbWVudCgqZG9jdW1lbnQpOwpAQCAtOTE5LDcgKzkxOSw3IEBAIC0g
KERPTURvY3VtZW50RnJhZ21lbnQgKilfZG9jdW1lbnRGcmFnbWVudFdpdGhOb2Rlc0FzUGFyYWdy
YXBoczooTlNBcnJheSAqKW5vZGVzCiAgICAgICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChlbGVt
ZW50KTsKICAgICB9CiAKLSAgICByZXR1cm4ga2l0KGZyYWdtZW50LnJlbGVhc2UoKS5nZXQoKSk7
CisgICAgcmV0dXJuIGtpdChmcmFnbWVudC5wdHIoKSk7CiB9CiAKIC0gKHZvaWQpX3JlcGxhY2VT
ZWxlY3Rpb25XaXRoTm9kZTooRE9NTm9kZSAqKW5vZGUgc2VsZWN0UmVwbGFjZW1lbnQ6KEJPT0wp
c2VsZWN0UmVwbGFjZW1lbnQgc21hcnRSZXBsYWNlOihCT09MKXNtYXJ0UmVwbGFjZSBtYXRjaFN0
eWxlOihCT09MKW1hdGNoU3R5bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNl
UHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9j
ZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAKaW5kZXggYWY4NmFkOGJmMzM0MzcxYjc5Njc3MWNkMjBh
MDEzZDhkNjk2MWIzZC4uM2VlNjI0N2U4ZGE4ODA5YjdjNDJmMDA1NTQ2ODVjNjNhYTk0YzA1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vz
cy5jcHAKQEAgLTE4Miw4ICsxODIsOCBAQCB2b2lkIERhdGFiYXNlUHJvY2Vzczo6Y3JlYXRlRGF0
YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKCkKICAgICBtYWNoX3BvcnRfYWxsb2NhdGUobWFj
aF90YXNrX3NlbGYoKSwgTUFDSF9QT1JUX1JJR0hUX1JFQ0VJVkUsICZsaXN0ZW5pbmdQb3J0KTsK
IAogICAgIC8vIENyZWF0ZSBhIGxpc3RlbmluZyBjb25uZWN0aW9uLgotICAgIFJlZlB0cjxEYXRh
YmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBEYXRhYmFzZVRvV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIobGlzdGVu
aW5nUG9ydCkpOwotICAgIG1fZGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQo
Y29ubmVjdGlvbi5yZWxlYXNlKCkpOworICAgIGF1dG8gY29ubmVjdGlvbiA9IERhdGFiYXNlVG9X
ZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihs
aXN0ZW5pbmdQb3J0KSk7CisgICAgbV9kYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFw
cGVuZChXVEZNb3ZlKGNvbm5lY3Rpb24pKTsKIAogICAgIElQQzo6QXR0YWNobWVudCBjbGllbnRQ
b3J0KGxpc3RlbmluZ1BvcnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKTsKICAgICBwYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpEYXRhYmFzZVByb2Nlc3NQcm94eTo6
RGlkQ3JlYXRlRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKGNsaWVudFBvcnQpLCAwKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApp
bmRleCBmMTU4YWFjN2VkZjRhM2Q3N2I1NzkzZjA1ZDE5OWNjMGNmYzhmYmNiLi5mMWNlMzFmZjY1
NWYyMDZjMTgyYTE4MjFlYzZmZTI2MjJkN2JmYzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yNTQsOCArMjU0LDggQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQog
I2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgIElQQzo6Q29ubmVjdGlvbjo6U29ja2V0
UGFpciBzb2NrZXRQYWlyID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rp
b24oKTsKIAotICAgIFJlZlB0cjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gY29ubmVj
dGlvbiA9IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoc29ja2V0UGFpci5z
ZXJ2ZXIpOwotICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJl
bGVhc2UoKSk7CisgICAgYXV0byBjb25uZWN0aW9uID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNyZWF0ZShzb2NrZXRQYWlyLnNlcnZlcik7CisgICAgbV93ZWJQcm9jZXNzQ29ubmVj
dGlvbnMuYXBwZW5kKFdURk1vdmUoY29ubmVjdGlvbikpOwogCiAgICAgSVBDOjpBdHRhY2htZW50
IGNsaWVudFNvY2tldChzb2NrZXRQYWlyLmNsaWVudCk7CiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RGlkQ3JlYXRlTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY2xpZW50U29ja2V0KSwgMCk7CkBAIC0yNjUsOCAr
MjY1LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MoKQogICAgIG1hY2hfcG9ydF9hbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBNQUNI
X1BPUlRfUklHSFRfUkVDRUlWRSwgJmxpc3RlbmluZ1BvcnQpOwogCiAgICAgLy8gQ3JlYXRlIGEg
bGlzdGVuaW5nIGNvbm5lY3Rpb24uCi0gICAgUmVmUHRyPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzPiBjb25uZWN0aW9uID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0
ZShJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCkpOwotICAgIG1fd2Vi
UHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7CisgICAgYXV0
byBjb25uZWN0aW9uID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShJUEM6
OkNvbm5lY3Rpb246OklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCkpOworICAgIG1fd2ViUHJvY2Vz
c0Nvbm5lY3Rpb25zLmFwcGVuZChXVEZNb3ZlKGNvbm5lY3Rpb24pKTsKIAogICAgIElQQzo6QXR0
YWNobWVudCBjbGllbnRQb3J0KGxpc3RlbmluZ1BvcnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5E
KTsKICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhjbGll
bnRQb3J0KSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKaW5kZXggYTQxZDBhYjdl
MTYyMGNlNTY2OWJlYzgwMDQxMTlhZTYzNTZlOGEwMS4uMGYxNmRmNDk2NzhmODUxYmVjMTVjMzE0
MjRkMTE5YmM2MjhlYzgyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcApAQCAtMTI3
LDggKzEyNyw4IEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZShJ
UEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgTmV0d29yCiAgICAgICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlcykpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVxdWVzdEJv
ZHlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYg
KFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBleHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGUocmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlc1tpXSkpCi0gICAgICAgICAg
ICAgICAgcmVzdWx0LnJlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbnMuYXBwZW5kKGV4dGVuc2lv
bi5yZWxlYXNlKCkpOworICAgICAgICAgICAgaWYgKGF1dG8gZXh0ZW5zaW9uID0gU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlKHJlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbkhhbmRsZXNbaV0pKQor
ICAgICAgICAgICAgICAgIHJlc3VsdC5yZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25zLmFwcGVu
ZChXVEZNb3ZlKGV4dGVuc2lvbikpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5j
cHAKaW5kZXggYjk3OGI5OTkzMzhiMzc4NmMxZTEyMWRjMGVlNzc4ZDViZmFkNjkxZS4uMjMwNjhh
NjkyYmYzNjBlY2U0ZjZlMDU4MDA3NTQ5N2EwNTg2Zjk2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcApA
QCAtMTQ1LDEyICsxNDUsMTEgQEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBFbnRyeTo6ZGVjb2Rl
U3RvcmFnZVJlY29yZChjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2UKICNpZiBFTkFCTEUo
U0hBUkVBQkxFX1JFU09VUkNFKQogdm9pZCBFbnRyeTo6aW5pdGlhbGl6ZVNoYXJlYWJsZVJlc291
cmNlSGFuZGxlRnJvbVN0b3JhZ2VSZWNvcmQoKSBjb25zdAogewotICAgIFJlZlB0cjxTaGFyZWRN
ZW1vcnk+IHNoYXJlZE1lbW9yeSA9IG1fc291cmNlU3RvcmFnZVJlY29yZC5ib2R5LnRyeUNyZWF0
ZVNoYXJlZE1lbW9yeSgpOworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gbV9zb3VyY2VTdG9yYWdl
UmVjb3JkLmJvZHkudHJ5Q3JlYXRlU2hhcmVkTWVtb3J5KCk7CiAgICAgaWYgKCFzaGFyZWRNZW1v
cnkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxTaGFyZWFibGVSZXNvdXJjZT4gc2hh
cmVhYmxlUmVzb3VyY2UgPSBTaGFyZWFibGVSZXNvdXJjZTo6Y3JlYXRlKHNoYXJlZE1lbW9yeS5y
ZWxlYXNlKCksIDAsIG1fc291cmNlU3RvcmFnZVJlY29yZC5ib2R5LnNpemUoKSk7Ci0gICAgQVNT
RVJUKHNoYXJlYWJsZVJlc291cmNlKTsKKyAgICBhdXRvIHNoYXJlYWJsZVJlc291cmNlID0gU2hh
cmVhYmxlUmVzb3VyY2U6OmNyZWF0ZShXVEZNb3ZlKHNoYXJlZE1lbW9yeSksIDAsIG1fc291cmNl
U3RvcmFnZVJlY29yZC5ib2R5LnNpemUoKSk7CiAgICAgc2hhcmVhYmxlUmVzb3VyY2UtPmNyZWF0
ZUhhbmRsZShtX3NoYXJlYWJsZVJlc291cmNlSGFuZGxlKTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL1NoYXJlZE1lbW9yeU1hYy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvU2hhcmVkTWVtb3J5TWFjLmNwcAppbmRleCBjYWY0ZmI0
OWI1NDZmYjk0YTIxNGFkNWExZTJhODA5MTJlMDcyYTVjLi4wODBjNTI4NDI2OTc5MWZkOWU5MDQx
ZDI5OTJmOGZmMDQzNzg3YWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9t
YWMvU2hhcmVkTWVtb3J5TWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMv
U2hhcmVkTWVtb3J5TWFjLmNwcApAQCAtMTEwLDEzICsxMTAsMTMgQEAgUmVmUHRyPFNoYXJlZE1l
bW9yeT4gU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShzaXplX3Qgc2l6ZSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5
ID0gYWRvcHRSZWYoKm5ldyBTaGFyZWRNZW1vcnkpOworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0g
YWRvcHRSZWYoKm5ldyBTaGFyZWRNZW1vcnkpOwogICAgIHNoYXJlZE1lbW9yeS0+bV9zaXplID0g
c2l6ZTsKICAgICBzaGFyZWRNZW1vcnktPm1fZGF0YSA9IHRvUG9pbnRlcihhZGRyZXNzKTsKICAg
ICBzaGFyZWRNZW1vcnktPm1fcG9ydCA9IE1BQ0hfUE9SVF9OVUxMOwogICAgIHNoYXJlZE1lbW9y
eS0+bV9wcm90ZWN0aW9uID0gUHJvdGVjdGlvbjo6UmVhZFdyaXRlOwogCi0gICAgcmV0dXJuIHNo
YXJlZE1lbW9yeTsKKyAgICByZXR1cm4gV1RGTW92ZShzaGFyZWRNZW1vcnkpOwogfQogCiBzdGF0
aWMgaW5saW5lIHZtX3Byb3RfdCBtYWNoUHJvdGVjdGlvbihTaGFyZWRNZW1vcnk6OlByb3RlY3Rp
b24gcHJvdGVjdGlvbikKQEAgLTE1NiwxMyArMTU2LDEzIEBAIFJlZlB0cjxTaGFyZWRNZW1vcnk+
IFNoYXJlZE1lbW9yeTo6Y3JlYXRlKHZvaWQqIGRhdGEsIHNpemVfdCBzaXplLCBQcm90ZWN0aW9u
IHByCiAgICAgaWYgKCFzZW5kUmlnaHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
UmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5KGFkb3B0UmVmKG5ldyBTaGFyZWRNZW1v
cnkpKTsKKyAgICBhdXRvIHNoYXJlZE1lbW9yeShhZG9wdFJlZigqbmV3IFNoYXJlZE1lbW9yeSkp
OwogICAgIHNoYXJlZE1lbW9yeS0+bV9zaXplID0gc2l6ZTsKICAgICBzaGFyZWRNZW1vcnktPm1f
ZGF0YSA9IG51bGxwdHI7CiAgICAgc2hhcmVkTWVtb3J5LT5tX3BvcnQgPSBzZW5kUmlnaHQubGVh
a1NlbmRSaWdodCgpOwogICAgIHNoYXJlZE1lbW9yeS0+bV9wcm90ZWN0aW9uID0gcHJvdGVjdGlv
bjsKIAotICAgIHJldHVybiBzaGFyZWRNZW1vcnkucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZN
b3ZlKHNoYXJlZE1lbW9yeSk7CiB9CiAKIFJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9y
eTo6bWFwKGNvbnN0IEhhbmRsZSYgaGFuZGxlLCBQcm90ZWN0aW9uIHByb3RlY3Rpb24pCkBAIC0x
NzgsMTMgKzE3OCwxMyBAQCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6Om1hcChj
b25zdCBIYW5kbGUmIGhhbmRsZSwgUHJvdGVjdGlvbiBwcm90ZWN0aQogICAgIGlmIChrciAhPSBL
RVJOX1NVQ0NFU1MpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPFNoYXJl
ZE1lbW9yeT4gc2hhcmVkTWVtb3J5KGFkb3B0UmVmKG5ldyBTaGFyZWRNZW1vcnkpKTsKKyAgICBh
dXRvIHNoYXJlZE1lbW9yeShhZG9wdFJlZigqbmV3IFNoYXJlZE1lbW9yeSkpOwogICAgIHNoYXJl
ZE1lbW9yeS0+bV9zaXplID0gaGFuZGxlLm1fc2l6ZTsKICAgICBzaGFyZWRNZW1vcnktPm1fZGF0
YSA9IHRvUG9pbnRlcihtYXBwZWRBZGRyZXNzKTsKICAgICBzaGFyZWRNZW1vcnktPm1fcG9ydCA9
IE1BQ0hfUE9SVF9OVUxMOwogICAgIHNoYXJlZE1lbW9yeS0+bV9wcm90ZWN0aW9uID0gcHJvdGVj
dGlvbjsKIAotICAgIHJldHVybiBzaGFyZWRNZW1vcnk7CisgICAgcmV0dXJuIFdURk1vdmUoc2hh
cmVkTWVtb3J5KTsKIH0KIAogU2hhcmVkTWVtb3J5Ojp+U2hhcmVkTWVtb3J5KCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3BwCmluZGV4IDI3MDBjYTIy
NTU1YTY4ZTljMmYyMDZhMjFmYTE3NWFjYTZkZjQxYjIuLjc1NTU3MDJhMjdiODU1MTlhMmFhMmEy
NTE2MDEzYmNiNDZhYjEyZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvUGx1Z2luUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9Q
bHVnaW5Qcm9jZXNzLmNwcApAQCAtMTUxLDggKzE1MSw4IEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6
Y3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKQogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRT
KQogICAgIElQQzo6Q29ubmVjdGlvbjo6U29ja2V0UGFpciBzb2NrZXRQYWlyID0gSVBDOjpDb25u
ZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKIAotICAgIFJlZlB0cjxXZWJQcm9j
ZXNzQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUo
c29ja2V0UGFpci5zZXJ2ZXIpOwotICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChj
b25uZWN0aW9uLnJlbGVhc2UoKSk7CisgICAgYXV0byBjb25uZWN0aW9uID0gV2ViUHJvY2Vzc0Nv
bm5lY3Rpb246OmNyZWF0ZShzb2NrZXRQYWlyLnNlcnZlcik7CisgICAgbV93ZWJQcm9jZXNzQ29u
bmVjdGlvbnMuYXBwZW5kKFdURk1vdmUoY29ubmVjdGlvbikpOwogCiAgICAgSVBDOjpBdHRhY2ht
ZW50IGNsaWVudFNvY2tldChzb2NrZXRQYWlyLmNsaWVudCk7CiAgICAgcGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVX
ZWJQcm9jZXNzQ29ubmVjdGlvbihjbGllbnRTb2NrZXQsIG1fc3VwcG9ydHNBc3luY2hyb25vdXNQ
bHVnaW5Jbml0aWFsaXphdGlvbiksIDApOwpAQCAtMTYyLDcgKzE2Miw3IEBAIHZvaWQgUGx1Z2lu
UHJvY2Vzczo6Y3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKQogICAgIG1hY2hfcG9ydF9hbGxv
Y2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBNQUNIX1BPUlRfUklHSFRfUkVDRUlWRSwgJmxpc3Rlbmlu
Z1BvcnQpOwogCiAgICAgLy8gQ3JlYXRlIGEgbGlzdGVuaW5nIGNvbm5lY3Rpb24uCi0gICAgUmVm
UHRyPFdlYlByb2Nlc3NDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzc0Nvbm5lY3Rp
b246OmNyZWF0ZShJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCkpOwor
ICAgIGF1dG8gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoSVBDOjpD
b25uZWN0aW9uOjpJZGVudGlmaWVyKGxpc3RlbmluZ1BvcnQpKTsKIAogICAgIGlmIChtX2F1ZGlv
SGFyZHdhcmVMaXN0ZW5lcikgewogICAgICAgICBpZiAobV9hdWRpb0hhcmR3YXJlTGlzdGVuZXIt
PmhhcmR3YXJlQWN0aXZpdHkoKSA9PSBXZWJDb3JlOjpBdWRpb0hhcmR3YXJlQWN0aXZpdHlUeXBl
OjpJc0FjdGl2ZSkKQEAgLTE3MSw3ICsxNzEsNyBAQCB2b2lkIFBsdWdpblByb2Nlc3M6OmNyZWF0
ZVdlYlByb2Nlc3NDb25uZWN0aW9uKCkKICAgICAgICAgICAgIGNvbm5lY3Rpb24tPmF1ZGlvSGFy
ZHdhcmVEaWRCZWNvbWVJbmFjdGl2ZSgpOwogICAgIH0KIAotICAgIG1fd2ViUHJvY2Vzc0Nvbm5l
Y3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7CisgICAgbV93ZWJQcm9jZXNzQ29u
bmVjdGlvbnMuYXBwZW5kKFdURk1vdmUoY29ubmVjdGlvbikpOwogCiAgICAgSVBDOjpBdHRhY2ht
ZW50IGNsaWVudFBvcnQobGlzdGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpOwog
ICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpblByb2Nl
c3NQcm94eTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY2xpZW50UG9ydCwgbV9zdXBw
b3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKSwgMCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0gYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0KaW5k
ZXggMmEyOTczODE5ODljMWQ3YTcwNDFkYTZlZGE4Yjg5MzFkYjA0ZDg4NC4uOWRmMmFiMGRiZTJk
NTc2OTkyZmEzM2MxYzU3NjM0OWU5ZmZiZDM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQpAQCAtMTA4LDkgKzEw
OCw5IEBAIHN0YXRpYyB2b2lkIGVuY29kZVRvT2JqZWN0U3RyZWFtKFdLUmVtb3RlT2JqZWN0RW5j
b2RlciAqZW5jb2RlciwgaWQgdmFsdWUpCiAgICAgc2l6ZV90IHBvc2l0aW9uID0gZW5jb2Rlci0+
X29iamVjdFN0cmVhbS0+c2l6ZSgpOwogICAgIGVuY29kZXItPl9vYmplY3RTdHJlYW0tPmVsZW1l
bnRzKCkuYXBwZW5kKG51bGxwdHIpOwogCi0gICAgUmVmUHRyPEFQSTo6RGljdGlvbmFyeT4gZW5j
b2RlZE9iamVjdCA9IGNyZWF0ZUVuY29kZWRPYmplY3QoZW5jb2RlciwgdmFsdWUpOworICAgIGF1
dG8gZW5jb2RlZE9iamVjdCA9IGNyZWF0ZUVuY29kZWRPYmplY3QoZW5jb2RlciwgdmFsdWUpOwog
ICAgIEFTU0VSVCghZW5jb2Rlci0+X29iamVjdFN0cmVhbS0+ZWxlbWVudHMoKVtwb3NpdGlvbl0p
OwotICAgIGVuY29kZXItPl9vYmplY3RTdHJlYW0tPmVsZW1lbnRzKClbcG9zaXRpb25dID0gZW5j
b2RlZE9iamVjdC5yZWxlYXNlKCk7CisgICAgZW5jb2Rlci0+X29iamVjdFN0cmVhbS0+ZWxlbWVu
dHMoKVtwb3NpdGlvbl0gPSBXVEZNb3ZlKGVuY29kZWRPYmplY3QpOwogfQogCiBzdGF0aWMgdm9p
ZCBlbmNvZGVJbnZvY2F0aW9uQXJndW1lbnRzKFdLUmVtb3RlT2JqZWN0RW5jb2RlciAqZW5jb2Rl
ciwgTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uLCBOU1VJbnRlZ2VyIGZpcnN0QXJndW1lbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tJbWFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tJbWFnZS5jcHAKaW5kZXggMjMyNzhiM2E3ZjUzNDAw
YjM2ZDg1YzgxODdlMDRiYWUyMWNhYzA4YS4uMjc0MTE5OWUyMjBkMDQ1ZTA3NzIzZDUxODBhODMy
NzFjMmFiZDMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLSW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0ltYWdlLmNwcApAQCAt
MzgsOCArMzgsOCBAQCBXS1R5cGVJRCBXS0ltYWdlR2V0VHlwZUlEKCkKIAogV0tJbWFnZVJlZiBX
S0ltYWdlQ3JlYXRlKFdLU2l6ZSBzaXplLCBXS0ltYWdlT3B0aW9ucyBvcHRpb25zKQogewotICAg
IFJlZlB0cjxXZWJJbWFnZT4gd2ViSW1hZ2UgPSBXZWJJbWFnZTo6Y3JlYXRlKHRvSW50U2l6ZShz
aXplKSwgdG9JbWFnZU9wdGlvbnMob3B0aW9ucykpOwotICAgIHJldHVybiB0b0FQSSh3ZWJJbWFn
ZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICBhdXRvIHdlYkltYWdlID0gV2ViSW1hZ2U6OmNy
ZWF0ZSh0b0ludFNpemUoc2l6ZSksIHRvSW1hZ2VPcHRpb25zKG9wdGlvbnMpKTsKKyAgICByZXR1
cm4gdG9BUEkod2ViSW1hZ2UubGVha1JlZigpKTsKIH0KIAogV0tTaXplIFdLSW1hZ2VHZXRTaXpl
KFdLSW1hZ2VSZWYgaW1hZ2VSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJL2MvV0tOdW1iZXIuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLTnVtYmVy
LmNwcAppbmRleCAxMTMwMDYzMmNmMGZiZTI0ZGEyMDE1NGU4MzJiYjgzYmQyYTQ5NDI4Li40MThl
MDI5ZWE2N2RiZjNhNmExZmVjYzA3NTM4N2NjNmEyMTc0ZDg2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tOdW1iZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUEkvYy9XS051bWJlci5jcHAKQEAgLTM4LDggKzM4LDggQEAgV0tUeXBlSUQgV0tCb29s
ZWFuR2V0VHlwZUlEKCkKIAogV0tCb29sZWFuUmVmIFdLQm9vbGVhbkNyZWF0ZShib29sIHZhbHVl
KQogewotICAgIFJlZlB0cjxBUEk6OkJvb2xlYW4+IGJvb2xlYW5PYmplY3QgPSBBUEk6OkJvb2xl
YW46OmNyZWF0ZSh2YWx1ZSk7Ci0gICAgcmV0dXJuIHRvQVBJKGJvb2xlYW5PYmplY3QucmVsZWFz
ZSgpLmxlYWtSZWYoKSk7CisgICAgYXV0byBib29sZWFuT2JqZWN0ID0gQVBJOjpCb29sZWFuOjpj
cmVhdGUodmFsdWUpOworICAgIHJldHVybiB0b0FQSSgmYm9vbGVhbk9iamVjdC5sZWFrUmVmKCkp
OwogfQogCiBib29sIFdLQm9vbGVhbkdldFZhbHVlKFdLQm9vbGVhblJlZiBib29sZWFuUmVmKQpA
QCAtNTQsOCArNTQsOCBAQCBXS1R5cGVJRCBXS0RvdWJsZUdldFR5cGVJRCgpCiAKIFdLRG91Ymxl
UmVmIFdLRG91YmxlQ3JlYXRlKGRvdWJsZSB2YWx1ZSkKIHsKLSAgICBSZWZQdHI8QVBJOjpEb3Vi
bGU+IGRvdWJsZU9iamVjdCA9IEFQSTo6RG91YmxlOjpjcmVhdGUodmFsdWUpOwotICAgIHJldHVy
biB0b0FQSShkb3VibGVPYmplY3QucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgYXV0byBkb3Vi
bGVPYmplY3QgPSBBUEk6OkRvdWJsZTo6Y3JlYXRlKHZhbHVlKTsKKyAgICByZXR1cm4gdG9BUEko
JmRvdWJsZU9iamVjdC5sZWFrUmVmKCkpOwogfQogCiBkb3VibGUgV0tEb3VibGVHZXRWYWx1ZShX
S0RvdWJsZVJlZiBkb3VibGVSZWYpCkBAIC03MCw4ICs3MCw4IEBAIFdLVHlwZUlEIFdLVUludDY0
R2V0VHlwZUlEKCkKIAogV0tVSW50NjRSZWYgV0tVSW50NjRDcmVhdGUodWludDY0X3QgdmFsdWUp
CiB7Ci0gICAgUmVmUHRyPEFQSTo6VUludDY0PiB1aW50NjRPYmplY3QgPSBBUEk6OlVJbnQ2NDo6
Y3JlYXRlKHZhbHVlKTsKLSAgICByZXR1cm4gdG9BUEkodWludDY0T2JqZWN0LnJlbGVhc2UoKS5s
ZWFrUmVmKCkpOworICAgIGF1dG8gdWludDY0T2JqZWN0ID0gQVBJOjpVSW50NjQ6OmNyZWF0ZSh2
YWx1ZSk7CisgICAgcmV0dXJuIHRvQVBJKCZ1aW50NjRPYmplY3QubGVha1JlZigpKTsKIH0KIAog
dWludDY0X3QgV0tVSW50NjRHZXRWYWx1ZShXS1VJbnQ2NFJlZiB1aW50NjRSZWYpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAKaW5k
ZXggODgyODY3ZjgwYjViZWNjNWUyOTM0ODE4NjUyYzkwZmUxZmMxNmEyZi4uNDhjYzBiMjIyYWJj
NDYzMTllNTljOTNjYjBmNjEzOWU1NmVlMDI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9jL1dLU2VjdXJpdHlPcmlnaW5SZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcApAQCAtNDgsOCArNDgsOCBAQCBX
S1NlY3VyaXR5T3JpZ2luUmVmIFdLU2VjdXJpdHlPcmlnaW5DcmVhdGVGcm9tRGF0YWJhc2VJZGVu
dGlmaWVyKFdLU3RyaW5nUmVmIGlkZQogCiBXS1NlY3VyaXR5T3JpZ2luUmVmIFdLU2VjdXJpdHlP
cmlnaW5DcmVhdGUoV0tTdHJpbmdSZWYgcHJvdG9jb2wsIFdLU3RyaW5nUmVmIGhvc3QsIGludCBw
b3J0KQogewotICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9
IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh0b0ltcGwocHJvdG9jb2wpLT5zdHJpbmcoKSwg
dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSwgcG9ydCk7Ci0gICAgcmV0dXJuIHRvQVBJKHNlY3VyaXR5
T3JpZ2luLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBB
UEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodG9JbXBsKHByb3RvY29sKS0+c3RyaW5nKCksIHRv
SW1wbChob3N0KS0+c3RyaW5nKCksIHBvcnQpOworICAgIHJldHVybiB0b0FQSShzZWN1cml0eU9y
aWdpbi5sZWFrUmVmKCkpOwogfQogCiBXS1N0cmluZ1JlZiBXS1NlY3VyaXR5T3JpZ2luQ29weURh
dGFiYXNlSWRlbnRpZmllcihXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAKaW5kZXggZWMyYWQ5NmY1MGZlNmI0NWY1MTBhZTNlOGI5MGEwNmVkMjQ4MzJlNC4u
ODYyZmQ3ZjYwYTg1NWQyOWFiMjY4YjJmMTYyYjJlMDI1MTE2NDczZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
CkBAIC0zOSwxNCArMzksMTQgQEAgV0tUeXBlSUQgV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVHZXRU
eXBlSUQoKQogCiBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBXS1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUNyZWF0ZShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1
ZVJlZiogZXhjZXB0aW9uKQogewotICAgIFJlZlB0cjxBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gc2VyaWFsaXplZFZhbHVlID0gQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShj
b250ZXh0LCB2YWx1ZSwgZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gdG9BUEkoc2VyaWFsaXplZFZh
bHVlLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgIGF1dG8gc2VyaWFsaXplZFZhbHVlID0gQVBJ
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShjb250ZXh0LCB2YWx1ZSwgZXhjZXB0aW9u
KTsKKyAgICByZXR1cm4gdG9BUEkoc2VyaWFsaXplZFZhbHVlLmxlYWtSZWYoKSk7CiB9CiAKIFdL
U2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlQ3JlYXRlV2l0
aEludGVybmFsUmVwcmVzZW50YXRpb24odm9pZCogaW50ZXJuYWxSZXByZXNlbnRhdGlvbikKIHsK
LSAgICBSZWZQdHI8QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSA9
IEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlKj4oaW50ZXJuYWxSZXByZXNlbnRhdGlvbikpOwotICAgIHJl
dHVybiB0b0FQSShzZXJpYWxpemVkVmFsdWUucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgYXV0
byBzZXJpYWxpemVkVmFsdWUgPSBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0
YXRpY19jYXN0PFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSo+KGludGVybmFsUmVwcmVz
ZW50YXRpb24pKTsKKyAgICByZXR1cm4gdG9BUEkoJnNlcmlhbGl6ZWRWYWx1ZS5sZWFrUmVmKCkp
OwogfQogCiBKU1ZhbHVlUmVmIFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlRGVzZXJpYWxpemUoV0tT
ZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgc2NyaXB0VmFsdWVSZWYsIEpTQ29udGV4dFJlZiBjb250
ZXh0UmVmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwCmluZGV4IGFmYjQ5OTMyYjE3ODFlNTA5
MDZkYjkzNjRhMDNkZDlhZWM0OTViODYuLjg1Yjk5Mzg0NDI3YjRmYWQ3MGJmMjBiNDlhZjIzNWU2
YTMyNjQ0MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jYWlyby9X
S0ltYWdlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jYWlyby9X
S0ltYWdlQ2Fpcm8uY3BwCkBAIC00NSw3ICs0NSw3IEBAIGNhaXJvX3N1cmZhY2VfdCogV0tJbWFn
ZUNyZWF0ZUNhaXJvU3VyZmFjZShXS0ltYWdlUmVmIGltYWdlUmVmKQogV0tJbWFnZVJlZiBXS0lt
YWdlQ3JlYXRlRnJvbUNhaXJvU3VyZmFjZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIFdLSW1h
Z2VPcHRpb25zIG9wdGlvbnMpCiB7CiAgICAgSW50U2l6ZSBpbWFnZVNpemUoY2Fpcm9faW1hZ2Vf
c3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZSksIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdo
dChzdXJmYWNlKSk7Ci0gICAgUmVmUHRyPFdlYkltYWdlPiB3ZWJJbWFnZSA9IFdlYkltYWdlOjpj
cmVhdGUoaW1hZ2VTaXplLCB0b0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7CisgICAgYXV0byB3ZWJJ
bWFnZSA9IFdlYkltYWdlOjpjcmVhdGUoaW1hZ2VTaXplLCB0b0ltYWdlT3B0aW9ucyhvcHRpb25z
KSk7CiAgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSB3ZWJJbWFnZS0+Yml0bWFwKCktPmNyZWF0
ZUdyYXBoaWNzQ29udGV4dCgpOwogCiAgICAgY2Fpcm9fdCogY3IgPSBncmFwaGljc0NvbnRleHQt
PnBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwpAQCAtNTQsNSArNTQsNSBAQCBXS0ltYWdlUmVmIFdL
SW1hZ2VDcmVhdGVGcm9tQ2Fpcm9TdXJmYWNlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgV0tJ
bWFnZU9wdGlvbgogICAgIGNhaXJvX3JlY3RhbmdsZShjciwgMCwgMCwgaW1hZ2VTaXplLndpZHRo
KCksIGltYWdlU2l6ZS5oZWlnaHQoKSk7CiAgICAgY2Fpcm9fZmlsbChjcik7CiAKLSAgICByZXR1
cm4gdG9BUEkod2ViSW1hZ2UucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJ
KHdlYkltYWdlLmxlYWtSZWYoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9j
Zy9XS0ltYWdlQ0cuY3BwCmluZGV4IGJjYWI2MGI1Y2RmOTdlZjBkYjIxYTAyNTMxYTgwOGM3MjEy
NGI1ZDEuLmM2MjM0M2Q5NTFiY2YwNjcyOTg4NWRlZjc3ODhmY2NlYTk1OGNiOTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCkBAIC01MCw3ICs1MCw3
IEBAIFdLSW1hZ2VSZWYgV0tJbWFnZUNyZWF0ZUZyb21DR0ltYWdlKENHSW1hZ2VSZWYgaW1hZ2VS
ZWYsIFdLSW1hZ2VPcHRpb25zIG9wdGlvbnMpCiAgICAgICAgIHJldHVybiAwOwogICAgIAogICAg
IEludFNpemUgaW1hZ2VTaXplKENHSW1hZ2VHZXRXaWR0aChpbWFnZVJlZiksIENHSW1hZ2VHZXRI
ZWlnaHQoaW1hZ2VSZWYpKTsKLSAgICBSZWZQdHI8V2ViSW1hZ2U+IHdlYkltYWdlID0gV2ViSW1h
Z2U6OmNyZWF0ZShpbWFnZVNpemUsIHRvSW1hZ2VPcHRpb25zKG9wdGlvbnMpKTsKKyAgICBhdXRv
IHdlYkltYWdlID0gV2ViSW1hZ2U6OmNyZWF0ZShpbWFnZVNpemUsIHRvSW1hZ2VPcHRpb25zKG9w
dGlvbnMpKTsKICAgICBpZiAoIXdlYkltYWdlLT5iaXRtYXAoKSkKICAgICAgICAgcmV0dXJuIDA7
CiAKQEAgLTU4LDUgKzU4LDUgQEAgV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlRnJvbUNHSW1hZ2Uo
Q0dJbWFnZVJlZiBpbWFnZVJlZiwgV0tJbWFnZU9wdGlvbnMgb3B0aW9ucykKICAgICBGbG9hdFJl
Y3QgcmVjdChGbG9hdFBvaW50KDAsIDApLCBpbWFnZVNpemUpOwogICAgIGdyYXBoaWNzQ29udGV4
dC0+Y2xlYXJSZWN0KHJlY3QpOwogICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd05hdGl2ZUltYWdl
KGltYWdlUmVmLCBpbWFnZVNpemUsIHJlY3QsIHJlY3QpOwotICAgIHJldHVybiB0b0FQSSh3ZWJJ
bWFnZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkod2ViSW1hZ2UubGVh
a1JlZigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMv
V0tDZXJ0aWZpY2F0ZUluZm9NYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFj
L1dLQ2VydGlmaWNhdGVJbmZvTWFjLm1tCmluZGV4IGM0NDBiNDY3MGE5NTgxYjVlZTZmMmZmNmY4
YTc3YTEwNmFlZTZjMjMuLmE4ODNiN2QzOTQzNWFiMzc2NTQzYWU2MjIxZGVjZjY3ODZkMDExOWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tDZXJ0aWZpY2F0
ZUluZm9NYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL21hYy9XS0NlcnRp
ZmljYXRlSW5mb01hYy5tbQpAQCAtMzUsNyArMzUsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwogV0tDZXJ0aWZpY2F0ZUluZm9SZWYgV0tDZXJ0aWZpY2F0ZUluZm9DcmVhdGVXaXRoQ2VydGZp
Y2F0ZUNoYWluKENGQXJyYXlSZWYgY2VydGlmaWNhdGVDaGFpbikKIHsKICAgICBSZWZQdHI8V2Vi
Q2VydGlmaWNhdGVJbmZvPiBjZXJ0aWZpY2F0ZUluZm8gPSBXZWJDZXJ0aWZpY2F0ZUluZm86OmNy
ZWF0ZShDZXJ0aWZpY2F0ZUluZm8oY2VydGlmaWNhdGVDaGFpbikpOwotICAgIHJldHVybiB0b0FQ
SShjZXJ0aWZpY2F0ZUluZm8ucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJ
KGNlcnRpZmljYXRlSW5mby5sZWFrUmVmKCkpOwogfQogCiBDRkFycmF5UmVmIFdLQ2VydGlmaWNh
dGVJbmZvR2V0Q2VydGlmaWNhdGVDaGFpbihXS0NlcnRpZmljYXRlSW5mb1JlZiBjZXJ0aWZpY2F0
ZUluZm9SZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFjL1dL
T2JqQ1R5cGVXcmFwcGVyUmVmLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL21hYy9X
S09iakNUeXBlV3JhcHBlclJlZi5tbQppbmRleCBlZTAxMjViYTFlYWI0OWZhOWQ0M2ZmZDZhZGY2
MDk4NmViYTY2YWQzLi5jZmNiOTAyZTE1NWNkZjcxMWQ0ZWZjYWY0ZGYwODgwODA3NjMwMTUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFjL1dLT2JqQ1R5cGVXcmFw
cGVyUmVmLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tPYmpDVHlw
ZVdyYXBwZXJSZWYubW0KQEAgLTM4LDggKzM4LDggQEAgV0tUeXBlSUQgV0tPYmpDVHlwZVdyYXBw
ZXJHZXRUeXBlSUQoKQogCiBXS09iakNUeXBlV3JhcHBlclJlZiBXS09iakNUeXBlV3JhcHBlckNy
ZWF0ZShpZCBvYmplY3QpCiB7Ci0gICAgUmVmUHRyPE9iakNPYmplY3RHcmFwaD4gb2JqZWN0V3Jh
cHBlciA9IE9iakNPYmplY3RHcmFwaDo6Y3JlYXRlKG9iamVjdCk7Ci0gICAgcmV0dXJuIHRvQVBJ
KG9iamVjdFdyYXBwZXIucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgYXV0byBvYmplY3RXcmFw
cGVyID0gT2JqQ09iamVjdEdyYXBoOjpjcmVhdGUob2JqZWN0KTsKKyAgICByZXR1cm4gdG9BUEko
Jm9iamVjdFdyYXBwZXIubGVha1JlZigpKTsKIH0KIAogaWQgV0tPYmpDVHlwZVdyYXBwZXJHZXRP
YmplY3QoV0tPYmpDVHlwZVdyYXBwZXJSZWYgd3JhcHBlclJlZikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tXZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tXZWJBcmNoaXZlLmNwcAppbmRleCA4Njc2Y2M2ZTIzMzI3
YzM5MjY0ZjA3MzYzMGRlZjA4ZmNkMjE5YWZiLi5jZjRiZTE1NTUzZDRiYWY2ZmJkZjQwYTE0Zjhl
YmE4ZmMxYjM1N2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFj
L1dLV2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL21hYy9X
S1dlYkFyY2hpdmUuY3BwCkBAIC00MywzOCArNDMsMzggQEAgV0tUeXBlSUQgV0tXZWJBcmNoaXZl
R2V0VHlwZUlEKCkKIAogV0tXZWJBcmNoaXZlUmVmIFdLV2ViQXJjaGl2ZUNyZWF0ZShXS1dlYkFy
Y2hpdmVSZXNvdXJjZVJlZiBtYWluUmVzb3VyY2VSZWYsIFdLQXJyYXlSZWYgc3VicmVzb3VyY2Vz
UmVmLCBXS0FycmF5UmVmIHN1YmZyYW1lQXJjaGl2ZXNSZWYpCiB7Ci0gICAgUmVmUHRyPEFQSTo6
V2ViQXJjaGl2ZT4gd2ViQXJjaGl2ZSA9IEFQSTo6V2ViQXJjaGl2ZTo6Y3JlYXRlKHRvSW1wbCht
YWluUmVzb3VyY2VSZWYpLCB0b0ltcGwoc3VicmVzb3VyY2VzUmVmKSwgdG9JbXBsKHN1YmZyYW1l
QXJjaGl2ZXNSZWYpKTsKLSAgICByZXR1cm4gdG9BUEkod2ViQXJjaGl2ZS5yZWxlYXNlKCkubGVh
a1JlZigpKTsKKyAgICBhdXRvIHdlYkFyY2hpdmUgPSBBUEk6OldlYkFyY2hpdmU6OmNyZWF0ZSh0
b0ltcGwobWFpblJlc291cmNlUmVmKSwgdG9JbXBsKHN1YnJlc291cmNlc1JlZiksIHRvSW1wbChz
dWJmcmFtZUFyY2hpdmVzUmVmKSk7CisgICAgcmV0dXJuIHRvQVBJKCZ3ZWJBcmNoaXZlLmxlYWtS
ZWYoKSk7CiB9CiAKIFdLV2ViQXJjaGl2ZVJlZiBXS1dlYkFyY2hpdmVDcmVhdGVXaXRoRGF0YShX
S0RhdGFSZWYgZGF0YVJlZikKIHsKLSAgICBSZWZQdHI8QVBJOjpXZWJBcmNoaXZlPiB3ZWJBcmNo
aXZlID0gQVBJOjpXZWJBcmNoaXZlOjpjcmVhdGUodG9JbXBsKGRhdGFSZWYpKTsKLSAgICByZXR1
cm4gdG9BUEkod2ViQXJjaGl2ZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICBhdXRvIHdlYkFy
Y2hpdmUgPSBBUEk6OldlYkFyY2hpdmU6OmNyZWF0ZSh0b0ltcGwoZGF0YVJlZikpOworICAgIHJl
dHVybiB0b0FQSSgmd2ViQXJjaGl2ZS5sZWFrUmVmKCkpOwogfQogCiBXS1dlYkFyY2hpdmVSZWYg
V0tXZWJBcmNoaXZlQ3JlYXRlRnJvbVJhbmdlKFdLQnVuZGxlUmFuZ2VIYW5kbGVSZWYgcmFuZ2VI
YW5kbGVSZWYpCiB7Ci0gICAgUmVmUHRyPEFQSTo6V2ViQXJjaGl2ZT4gd2ViQXJjaGl2ZSA9IEFQ
STo6V2ViQXJjaGl2ZTo6Y3JlYXRlKHRvSW1wbChyYW5nZUhhbmRsZVJlZiktPmNvcmVSYW5nZSgp
KTsKLSAgICByZXR1cm4gdG9BUEkod2ViQXJjaGl2ZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAg
ICBhdXRvIHdlYkFyY2hpdmUgPSBBUEk6OldlYkFyY2hpdmU6OmNyZWF0ZSh0b0ltcGwocmFuZ2VI
YW5kbGVSZWYpLT5jb3JlUmFuZ2UoKSk7CisgICAgcmV0dXJuIHRvQVBJKCZ3ZWJBcmNoaXZlLmxl
YWtSZWYoKSk7CiB9CiAKIFdLV2ViQXJjaGl2ZVJlc291cmNlUmVmIFdLV2ViQXJjaGl2ZUNvcHlN
YWluUmVzb3VyY2UoV0tXZWJBcmNoaXZlUmVmIHdlYkFyY2hpdmVSZWYpCiB7Ci0gICAgUmVmUHRy
PEFQSTo6V2ViQXJjaGl2ZVJlc291cmNlPiBtYWluUmVzb3VyY2UgPSB0b0ltcGwod2ViQXJjaGl2
ZVJlZiktPm1haW5SZXNvdXJjZSgpOwotICAgIHJldHVybiB0b0FQSShtYWluUmVzb3VyY2UucmVs
ZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgYXV0byBtYWluUmVzb3VyY2UgPSB0b0ltcGwod2ViQXJj
aGl2ZVJlZiktPm1haW5SZXNvdXJjZSgpOworICAgIHJldHVybiB0b0FQSShtYWluUmVzb3VyY2Up
OwogfQogCiBXS0FycmF5UmVmIFdLV2ViQXJjaGl2ZUNvcHlTdWJyZXNvdXJjZXMoV0tXZWJBcmNo
aXZlUmVmIHdlYkFyY2hpdmVSZWYpCiB7Ci0gICAgUmVmUHRyPEFQSTo6QXJyYXk+IHN1YnJlc291
cmNlcyA9IHRvSW1wbCh3ZWJBcmNoaXZlUmVmKS0+c3VicmVzb3VyY2VzKCk7Ci0gICAgcmV0dXJu
IHRvQVBJKHN1YnJlc291cmNlcy5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICBhdXRvIHN1YnJl
c291cmNlcyA9IHRvSW1wbCh3ZWJBcmNoaXZlUmVmKS0+c3VicmVzb3VyY2VzKCk7CisgICAgcmV0
dXJuIHRvQVBJKHN1YnJlc291cmNlcyk7CiB9CiAKIFdLQXJyYXlSZWYgV0tXZWJBcmNoaXZlQ29w
eVN1YmZyYW1lQXJjaGl2ZXMoV0tXZWJBcmNoaXZlUmVmIHdlYkFyY2hpdmVSZWYpCiB7Ci0gICAg
UmVmUHRyPEFQSTo6QXJyYXk+IHN1YmZyYW1lQXJjaGl2ZXMgPSB0b0ltcGwod2ViQXJjaGl2ZVJl
ZiktPnN1YmZyYW1lQXJjaGl2ZXMoKTsKLSAgICByZXR1cm4gdG9BUEkoc3ViZnJhbWVBcmNoaXZl
cy5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICBhdXRvIHN1YmZyYW1lQXJjaGl2ZXMgPSB0b0lt
cGwod2ViQXJjaGl2ZVJlZiktPnN1YmZyYW1lQXJjaGl2ZXMoKTsKKyAgICByZXR1cm4gdG9BUEko
c3ViZnJhbWVBcmNoaXZlcyk7CiB9CiAKIFdLRGF0YVJlZiBXS1dlYkFyY2hpdmVDb3B5RGF0YShX
S1dlYkFyY2hpdmVSZWYgd2ViQXJjaGl2ZVJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvYy9tYWMvV0tXZWJBcmNoaXZlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9jL21hYy9XS1dlYkFyY2hpdmVSZXNvdXJjZS5jcHAKaW5kZXggODQzMmQ5
ZWI1NzE4YTA0NDFhMzE2NzdjZTIxZDIzMTk3ZmZlZWU0NC4uYzgxOWMwMjE2OGI5M2QxMTNjYjBl
MDY2NDM1OTViNjk5NDQzZmM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SS9jL21hYy9XS1dlYkFyY2hpdmVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSS9jL21hYy9XS1dlYkFyY2hpdmVSZXNvdXJjZS5jcHAKQEAgLTM5LDggKzM5LDggQEAg
V0tUeXBlSUQgV0tXZWJBcmNoaXZlUmVzb3VyY2VHZXRUeXBlSUQoKQogCiBXS1dlYkFyY2hpdmVS
ZXNvdXJjZVJlZiBXS1dlYkFyY2hpdmVSZXNvdXJjZUNyZWF0ZShXS0RhdGFSZWYgZGF0YVJlZiwg
V0tVUkxSZWYgVVJMUmVmLCBXS1N0cmluZ1JlZiBNSU1FVHlwZVJlZiwgV0tTdHJpbmdSZWYgdGV4
dEVuY29kaW5nUmVmKQogewotICAgIFJlZlB0cjxBUEk6OldlYkFyY2hpdmVSZXNvdXJjZT4gd2Vi
QXJjaGl2ZVJlc291cmNlID0gQVBJOjpXZWJBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZSh0b0ltcGwo
ZGF0YVJlZiksIHRvV1RGU3RyaW5nKFVSTFJlZiksIHRvV1RGU3RyaW5nKE1JTUVUeXBlUmVmKSwg
dG9XVEZTdHJpbmcodGV4dEVuY29kaW5nUmVmKSk7Ci0gICAgcmV0dXJuIHRvQVBJKHdlYkFyY2hp
dmVSZXNvdXJjZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICBhdXRvIHdlYkFyY2hpdmVSZXNv
dXJjZSA9IEFQSTo6V2ViQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUodG9JbXBsKGRhdGFSZWYpLCB0
b1dURlN0cmluZyhVUkxSZWYpLCB0b1dURlN0cmluZyhNSU1FVHlwZVJlZiksIHRvV1RGU3RyaW5n
KHRleHRFbmNvZGluZ1JlZikpOworICAgIHJldHVybiB0b0FQSSgmd2ViQXJjaGl2ZVJlc291cmNl
LmxlYWtSZWYoKSk7CiB9CiAKIFdLRGF0YVJlZiBXS1dlYkFyY2hpdmVSZXNvdXJjZUNvcHlEYXRh
KFdLV2ViQXJjaGl2ZVJlc291cmNlUmVmIHdlYkFyY2hpdmVSZXNvdXJjZVJlZikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElXZWJBcmNoaXZlLm1tIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSVdlYkFyY2hpdmUubW0KaW5kZXggOGUxN2U1YmI1NjhhZGNkOTVkMzZjM2M4
ZjM4ZDY4Y2NjMjYwMTZiMC4uOTI5MDNiMzQ3YTQ5ZmNlY2ZhNmMzNWM1OWUyZjZkNjkxNmQ5ODJl
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSVdlYkFyY2hpdmUubW0KKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSVdlYkFyY2hpdmUubW0KQEAgLTgyLDcgKzgyLDcg
QEAgV2ViQXJjaGl2ZTo6V2ViQXJjaGl2ZShXZWJBcmNoaXZlUmVzb3VyY2UqIG1haW5SZXNvdXJj
ZSwgUGFzc1JlZlB0cjxBUEk6OkFycmF5PgogICAgICAgICBjb3JlU3ViZnJhbWVMZWdhY3lXZWJB
cmNoaXZlcy51bmNoZWNrZWRBcHBlbmQoc3ViZnJhbWVXZWJBcmNoaXZlLT5jb3JlTGVnYWN5V2Vi
QXJjaGl2ZSgpKTsKICAgICB9CiAKLSAgICBtX2xlZ2FjeVdlYkFyY2hpdmUgPSBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGUoY29yZU1haW5SZXNvdXJjZS5yZWxlYXNlKCksIFdURk1vdmUoY29yZUFy
Y2hpdmVSZXNvdXJjZXMpLCBXVEZNb3ZlKGNvcmVTdWJmcmFtZUxlZ2FjeVdlYkFyY2hpdmVzKSk7
CisgICAgbV9sZWdhY3lXZWJBcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFdURk1v
dmUoY29yZU1haW5SZXNvdXJjZSksIFdURk1vdmUoY29yZUFyY2hpdmVSZXNvdXJjZXMpLCBXVEZN
b3ZlKGNvcmVTdWJmcmFtZUxlZ2FjeVdlYkFyY2hpdmVzKSk7CiB9CiAKIFdlYkFyY2hpdmU6Oldl
YkFyY2hpdmUoQVBJOjpEYXRhKiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwCmlu
ZGV4IGViZjk3NDExM2FjMTBjMTlhYTU1YTRiMzJiYWNlMjQ3NGFkYWZiNjkuLmFkNzA2M2IyNGY2
ZjA4ZWFlMmI2MDM3MjYyNmRkYmQwYWZiZDM0MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVs
ZS5jcHAKQEAgLTE0NSwxMyArMTQ1LDEzIEBAIFBhc3NSZWZQdHI8TmV0c2NhcGVQbHVnaW5Nb2R1
bGU+IE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRPckNyZWF0ZShjb25zdCBTdHJpbmcmCiAgICAg
ICAgICAgICByZXR1cm4gcGx1Z2luTW9kdWxlOwogICAgIH0KIAotICAgIFJlZlB0cjxOZXRzY2Fw
ZVBsdWdpbk1vZHVsZT4gcGx1Z2luTW9kdWxlKGFkb3B0UmVmKG5ldyBOZXRzY2FwZVBsdWdpbk1v
ZHVsZShwbHVnaW5QYXRoKSkpOworICAgIGF1dG8gcGx1Z2luTW9kdWxlKGFkb3B0UmVmKCpuZXcg
TmV0c2NhcGVQbHVnaW5Nb2R1bGUocGx1Z2luUGF0aCkpKTsKICAgICAKICAgICAvLyBUcnkgdG8g
bG9hZCBhbmQgaW5pdGlhbGl6ZSB0aGUgcGx1Zy1pbiBtb2R1bGUuCiAgICAgaWYgKCFwbHVnaW5N
b2R1bGUtPmxvYWQoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIAotICAgIHJldHVybiBwbHVnaW5Nb2R1bGUucmVsZWFzZSgpOworICAgIHJldHVybiBX
VEZNb3ZlKHBsdWdpbk1vZHVsZSk7CiB9CiAKIHZvaWQgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6Omlu
Y3JlbWVudExvYWRDb3VudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hh
cmVhYmxlQml0bWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAu
Y3BwCmluZGV4IDRlZWNiY2M5OTc3NDI5NGQzNDlkZDE5Y2RiMzAyOGIwNDljMWJiNTcuLjdlMGRj
YjYzNTExMzA1YmRiYjBiNTA1NTIzODgwMDQwMWYyMzExN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCkBAIC05OSwxMSArOTksMTEgQEAgUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwg
RmxhZ3MgZmxhZ3MKIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3Jl
YXRlKGNvbnN0IEhhbmRsZSYgaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gcHJvdGVj
dGlvbikKIHsKICAgICAvLyBDcmVhdGUgdGhlIHNoYXJlZCBtZW1vcnkuCi0gICAgUmVmUHRyPFNo
YXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5OjptYXAoaGFuZGxlLm1faGFu
ZGxlLCBwcm90ZWN0aW9uKTsKKyAgICBhdXRvIHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6
bWFwKGhhbmRsZS5tX2hhbmRsZSwgcHJvdGVjdGlvbik7CiAgICAgaWYgKCFzaGFyZWRNZW1vcnkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGNyZWF0ZShoYW5kbGUubV9z
aXplLCBoYW5kbGUubV9mbGFncywgc2hhcmVkTWVtb3J5LnJlbGVhc2UoKSk7CisgICAgcmV0dXJu
IGNyZWF0ZShoYW5kbGUubV9zaXplLCBoYW5kbGUubV9mbGFncywgV1RGTW92ZShzaGFyZWRNZW1v
cnkpKTsKIH0KIAogYm9vbCBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUhhbmRsZShIYW5kbGUmIGhh
bmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uIHByb3RlY3Rpb24pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAppbmRleCA3ZjkxMjczZWRjMzA5NGIwYjli
OWU2OTM3NTM3ZmQzOTNlOTVkMzMzLi43NGFmZDRjNjY3NjZjMTA3NjljOTAxZjliZmY5YTljN2M3
YzI5YTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlUmVzb3Vy
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAK
QEAgLTExNCwxMSArMTE0LDExIEBAIFJlZjxTaGFyZWFibGVSZXNvdXJjZT4gU2hhcmVhYmxlUmVz
b3VyY2U6OmNyZWF0ZShQYXNzUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkCiAKIFBhc3NSZWZQ
dHI8U2hhcmVhYmxlUmVzb3VyY2U+IFNoYXJlYWJsZVJlc291cmNlOjptYXAoY29uc3QgSGFuZGxl
JiBoYW5kbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5ID0gU2hh
cmVkTWVtb3J5OjptYXAoaGFuZGxlLm1faGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246
OlJlYWRPbmx5KTsKKyAgICBhdXRvIHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6bWFwKGhh
bmRsZS5tX2hhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAg
aWYgKCFzaGFyZWRNZW1vcnkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIGNyZWF0
ZShzaGFyZWRNZW1vcnkucmVsZWFzZSgpLCBoYW5kbGUubV9vZmZzZXQsIGhhbmRsZS5tX3NpemUp
OworICAgIHJldHVybiBjcmVhdGUoV1RGTW92ZShzaGFyZWRNZW1vcnkpLCBoYW5kbGUubV9vZmZz
ZXQsIGhhbmRsZS5tX3NpemUpOwogfQogCiBTaGFyZWFibGVSZXNvdXJjZTo6U2hhcmVhYmxlUmVz
b3VyY2UoUGFzc1JlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSwgdW5zaWduZWQgb2Zm
c2V0LCB1bnNpZ25lZCBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0
ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL0FyZ3Vt
ZW50Q29kZXJzR3RrLmNwcAppbmRleCA1MDFkNmYxMzcwOTBjOTM0NmEyZmU0ZDExOWYwNDAxYTU0
MjQzY2RlLi43YTJkNmM0YWFlZGUyMmU2N2RhYmM5N2VhZjhhZGNmNjdkZTYyOWE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcApAQCAtMjI5
LDcgKzIyOSw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxEcmFnRGF0YT46OmRlY29kZShBcmd1bWVu
dERlY29kZXImIGRlY29kZXIsIERyYWdEYXRhJiBkcmFnRGF0CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCi0gICAgZHJhZ0RhdGEgPSBEcmFnRGF0YShwbGF0Zm9ybURhdGEucmVs
ZWFzZSgpLmxlYWtSZWYoKSwgY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBzdGF0aWNf
Y2FzdDxEcmFnT3BlcmF0aW9uPihzb3VyY2VPcGVyYXRpb25NYXNrKSwKKyAgICBkcmFnRGF0YSA9
IERyYWdEYXRhKHBsYXRmb3JtRGF0YS5sZWFrUmVmKCksIGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQ
b3NpdGlvbiwgc3RhdGljX2Nhc3Q8RHJhZ09wZXJhdGlvbj4oc291cmNlT3BlcmF0aW9uTWFzayks
CiAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxEcmFnQXBwbGljYXRpb25GbGFn
cz4oZmxhZ3MpKTsKIAogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9Db29yZGluYXRlZEdyYXBoaWNzL1dLVmlldy5jcHAK
aW5kZXggYzFhYjIyZmExYTM1NWYyM2UyYmY3MDkyMjFiZmZmNDQ1YTg5MzI5NC4uOGVjMjBiMTE4
NDZmZmQ5NTllMGI0Mjc4YzQ5MGZjMDhkNjZiY2VlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tWaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS1ZpZXcu
Y3BwCkBAIC0zMiw4ICszMiw4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIFdLVmlld1Jl
ZiBXS1ZpZXdDcmVhdGUoV0tQYWdlQ29uZmlndXJhdGlvblJlZiBwYWdlQ29uZmlndXJhdGlvbikK
IHsKLSAgICBSZWZQdHI8V2ViVmlldz4gd2ViVmlldyA9IFdlYlZpZXc6OmNyZWF0ZSgqdG9JbXBs
KHBhZ2VDb25maWd1cmF0aW9uKSk7Ci0gICAgcmV0dXJuIHRvQVBJKHdlYlZpZXcucmVsZWFzZSgp
LmxlYWtSZWYoKSk7CisgICAgYXV0byB3ZWJWaWV3ID0gV2ViVmlldzo6Y3JlYXRlKCp0b0ltcGwo
cGFnZUNvbmZpZ3VyYXRpb24pKTsKKyAgICByZXR1cm4gdG9BUEkod2ViVmlldy5sZWFrUmVmKCkp
OwogfQogCiBXS1NpemUgV0tWaWV3R2V0U2l6ZShXS1ZpZXdSZWYgdmlld1JlZikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0JhdHRlcnlTdGF0dXMuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQmF0dGVyeVN0YXR1cy5jcHAKaW5kZXgg
OTUzODUwZDhiYzJjMjdkYjEwM2E1NDBjNDhmYzU5ZjVkNmFlMDM1Ni4uYWZkODI1NzFhNDBkMjIy
ZDc2ZjdlOTdjZTM1MDg1NGU5MjM5ZTgwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLQmF0dGVyeVN0YXR1cy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLQmF0dGVyeVN0YXR1cy5jcHAKQEAgLTQ2LDggKzQ2LDggQEAgV0tUeXBl
SUQgV0tCYXR0ZXJ5U3RhdHVzR2V0VHlwZUlEKCkKIFdLQmF0dGVyeVN0YXR1c1JlZiBXS0JhdHRl
cnlTdGF0dXNDcmVhdGUoYm9vbCBpc0NoYXJnaW5nLCBkb3VibGUgY2hhcmdpbmdUaW1lLCBkb3Vi
bGUgZGlzY2hhcmdpbmdUaW1lLCBkb3VibGUgbGV2ZWwpCiB7CiAjaWYgRU5BQkxFKEJBVFRFUllf
U1RBVFVTKQotICAgIFJlZlB0cjxXZWJCYXR0ZXJ5U3RhdHVzPiBzdGF0dXMgPSBXZWJCYXR0ZXJ5
U3RhdHVzOjpjcmVhdGUoaXNDaGFyZ2luZywgY2hhcmdpbmdUaW1lLCBkaXNjaGFyZ2luZ1RpbWUs
IGxldmVsKTsKLSAgICByZXR1cm4gdG9BUEkoc3RhdHVzLnJlbGVhc2UoKS5sZWFrUmVmKCkpOwor
ICAgIGF1dG8gc3RhdHVzID0gV2ViQmF0dGVyeVN0YXR1czo6Y3JlYXRlKGlzQ2hhcmdpbmcsIGNo
YXJnaW5nVGltZSwgZGlzY2hhcmdpbmdUaW1lLCBsZXZlbCk7CisgICAgcmV0dXJuIHRvQVBJKHN0
YXR1cy5sZWFrUmVmKCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaXNDaGFyZ2luZyk7CiAg
ICAgVU5VU0VEX1BBUkFNKGNoYXJnaW5nVGltZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvblBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uUG9zaXRpb24uY3BwCmluZGV4IDVkOTRm
M2U4NjJiYTI5YjljY2NmZjllZTUwNjBkMTY3ZWE2MDFjNzguLjhiNGM1YjY1MDVhYTFkYTI3ZmRl
Y2U1ZjdiODU1ZDM2OGI0MTRiZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0dlb2xvY2F0aW9uUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uUG9zaXRpb24uY3BwCkBAIC00Myw2ICs0Myw2IEBA
IFdLR2VvbG9jYXRpb25Qb3NpdGlvblJlZiBXS0dlb2xvY2F0aW9uUG9zaXRpb25DcmVhdGUoZG91
YmxlIHRpbWVzdGFtcCwgZG91YmxlIGxhCiAKIFdLR2VvbG9jYXRpb25Qb3NpdGlvblJlZiBXS0dl
b2xvY2F0aW9uUG9zaXRpb25DcmVhdGVfYihkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1
ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0
dWRlLCBkb3VibGUgYWx0aXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3Vi
bGUgYWx0aXR1ZGVBY2N1cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5n
LCBib29sIHByb3ZpZGVzU3BlZWQsIGRvdWJsZSBzcGVlZCkKIHsKLSAgICBSZWZQdHI8V2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbj4gcG9zaXRpb24gPSBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVh
dGUodGltZXN0YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSwgcHJvdmlkZXNBbHRp
dHVkZSwgYWx0aXR1ZGUsIHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwgYWx0aXR1ZGVBY2N1cmFj
eSwgcHJvdmlkZXNIZWFkaW5nLCBoZWFkaW5nLCBwcm92aWRlc1NwZWVkLCBzcGVlZCk7Ci0gICAg
cmV0dXJuIHRvQVBJKHBvc2l0aW9uLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgIGF1dG8gcG9z
aXRpb24gPSBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUodGltZXN0YW1wLCBsYXRpdHVk
ZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSwgcHJvdmlkZXNBbHRpdHVkZSwgYWx0aXR1ZGUsIHByb3Zp
ZGVzQWx0aXR1ZGVBY2N1cmFjeSwgYWx0aXR1ZGVBY2N1cmFjeSwgcHJvdmlkZXNIZWFkaW5nLCBo
ZWFkaW5nLCBwcm92aWRlc1NwZWVkLCBzcGVlZCk7CisgICAgcmV0dXJuIHRvQVBJKHBvc2l0aW9u
LmxlYWtSZWYoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tHcmFtbWFyRGV0YWlsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S0dyYW1tYXJEZXRhaWwuY3BwCmluZGV4IDA2NWY5OWJhNzUwYTlhZDk4NTQzYmJkYWI0NGJiZWY1
N2E4Yjc0MDcuLmFmZDk4OTVkZGUzZGY0ZTNkNjE3ODcyNDdhNDNiNjFhOGU5ZjdlY2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0dyYW1tYXJEZXRhaWwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0dyYW1tYXJEZXRhaWwuY3Bw
CkBAIC00MCw4ICs0MCw4IEBAIFdLVHlwZUlEIFdLR3JhbW1hckRldGFpbEdldFR5cGVJRCgpCiAK
IFdLR3JhbW1hckRldGFpbFJlZiBXS0dyYW1tYXJEZXRhaWxDcmVhdGUoaW50IGxvY2F0aW9uLCBp
bnQgbGVuZ3RoLCBXS0FycmF5UmVmIGd1ZXNzZXMsIFdLU3RyaW5nUmVmIHVzZXJEZXNjcmlwdGlv
bikKIHsKLSAgICBSZWZQdHI8V2ViR3JhbW1hckRldGFpbD4gZGV0YWlsID0gV2ViR3JhbW1hckRl
dGFpbDo6Y3JlYXRlKGxvY2F0aW9uLCBsZW5ndGgsIHRvSW1wbChndWVzc2VzKSwgdG9XVEZTdHJp
bmcodXNlckRlc2NyaXB0aW9uKSk7Ci0gICAgcmV0dXJuIHRvQVBJKGRldGFpbC5yZWxlYXNlKCku
bGVha1JlZigpKTsKKyAgICBhdXRvIGRldGFpbCA9IFdlYkdyYW1tYXJEZXRhaWw6OmNyZWF0ZShs
b2NhdGlvbiwgbGVuZ3RoLCB0b0ltcGwoZ3Vlc3NlcyksIHRvV1RGU3RyaW5nKHVzZXJEZXNjcmlw
dGlvbikpOworICAgIHJldHVybiB0b0FQSShkZXRhaWwubGVha1JlZigpKTsKIH0KIAogaW50IFdL
R3JhbW1hckRldGFpbEdldExvY2F0aW9uKFdLR3JhbW1hckRldGFpbFJlZiBncmFtbWFyRGV0YWls
UmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCA4ZTMw
MzNlMzA5ZWQ0MjU4YzJlNzQ2NWE4ZjYzYzQ2YmI2NDI5YmI1Li4xMGQwODgyMzQ0NGYyMWZhOGE1
NDQ3ODRiM2Y2MmExMzJmNTNkMGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlLmNwcApAQCAtNDM5LDcgKzQzOSw3IEBAIFdLVHlwZVJlZiBXS1BhZ2VDb3B5U2Vzc2lv
blN0YXRlKFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VTZXNzaW9uCiAg
ICAgfSk7CiAKICAgICBpZiAoc2hvdWxkUmV0dXJuRGF0YSkKLSAgICAgICAgcmV0dXJuIHRvQVBJ
KGVuY29kZUxlZ2FjeVNlc3Npb25TdGF0ZShzZXNzaW9uU3RhdGUpLnJlbGVhc2UoKS5sZWFrUmVm
KCkpOworICAgICAgICByZXR1cm4gdG9BUEkoZW5jb2RlTGVnYWN5U2Vzc2lvblN0YXRlKHNlc3Np
b25TdGF0ZSkubGVha1JlZigpKTsKIAogICAgIHJldHVybiB0b0FQSSgmQVBJOjpTZXNzaW9uU3Rh
dGU6OmNyZWF0ZShXVEZNb3ZlKHNlc3Npb25TdGF0ZSkpLmxlYWtSZWYoKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcAppbmRleCAzY2M2MDk1
NGQ4Y2RmOTlhMmE4NzA5YTRlMmQ3ZTFlZjViNzcxZWNkLi40ZTIxNzcxOGE1NjRhOWMxMmU1ZjQ1
OTJhNGU0Y2E5MjE4N2VlYmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2VHcm91cC5jcHAKQEAgLTQxLDggKzQxLDggQEAgV0tUeXBlSUQgV0tQYWdlR3JvdXBH
ZXRUeXBlSUQoKQogCiBXS1BhZ2VHcm91cFJlZiBXS1BhZ2VHcm91cENyZWF0ZVdpdGhJZGVudGlm
aWVyKFdLU3RyaW5nUmVmIGlkZW50aWZpZXIpCiB7Ci0gICAgUmVmUHRyPFdlYlBhZ2VHcm91cD4g
cGFnZUdyb3VwID0gV2ViUGFnZUdyb3VwOjpjcmVhdGUodG9XVEZTdHJpbmcoaWRlbnRpZmllcikp
OwotICAgIHJldHVybiB0b0FQSShwYWdlR3JvdXAucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAg
YXV0byBwYWdlR3JvdXAgPSBXZWJQYWdlR3JvdXA6OmNyZWF0ZSh0b1dURlN0cmluZyhpZGVudGlm
aWVyKSk7CisgICAgcmV0dXJuIHRvQVBJKHBhZ2VHcm91cC5sZWFrUmVmKCkpOwogfQogCiBXS1N0
cmluZ1JlZiBXS1BhZ2VHcm91cENvcHlJZGVudGlmaWVyKFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91
cFJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZl
cmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2Vz
LmNwcAppbmRleCA2MDUzMjRkNTZlNTIzYTZlYjEwNjFjZWUzZmZiMmFjMzJlZmI0NGNjLi5lOWQw
ZjE0NTg4OTViY2NmNTgyZTRlMDFlNzhlOTU1NjdjNDllZGJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCkBAIC00NiwyMCArNDYsMjAg
QEAgV0tUeXBlSUQgV0tQcmVmZXJlbmNlc0dldFR5cGVJRCgpCiAKIFdLUHJlZmVyZW5jZXNSZWYg
V0tQcmVmZXJlbmNlc0NyZWF0ZSgpCiB7Ci0gICAgUmVmUHRyPFdlYlByZWZlcmVuY2VzPiBwcmVm
ZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGVXaXRoTGVnYWN5RGVmYXVsdHMoU3RyaW5n
KCksICJXZWJLaXQyLiIsICJXZWJLaXQyLiIpOwotICAgIHJldHVybiB0b0FQSShwcmVmZXJlbmNl
cy5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gV2ViUHJlZmVy
ZW5jZXM6OmNyZWF0ZVdpdGhMZWdhY3lEZWZhdWx0cyhTdHJpbmcoKSwgIldlYktpdDIuIiwgIldl
YktpdDIuIik7CisgICAgcmV0dXJuIHRvQVBJKHByZWZlcmVuY2VzLmxlYWtSZWYoKSk7CiB9CiAK
IFdLUHJlZmVyZW5jZXNSZWYgV0tQcmVmZXJlbmNlc0NyZWF0ZVdpdGhJZGVudGlmaWVyKFdLU3Ry
aW5nUmVmIGlkZW50aWZpZXJSZWYpCiB7Ci0gICAgUmVmUHRyPFdlYlByZWZlcmVuY2VzPiBwcmVm
ZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGVXaXRoTGVnYWN5RGVmYXVsdHModG9XVEZT
dHJpbmcoaWRlbnRpZmllclJlZiksICJXZWJLaXQyLiIsICJXZWJLaXQyLiIpOwotICAgIHJldHVy
biB0b0FQSShwcmVmZXJlbmNlcy5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICBhdXRvIHByZWZl
cmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZVdpdGhMZWdhY3lEZWZhdWx0cyh0b1dURlN0
cmluZyhpZGVudGlmaWVyUmVmKSwgIldlYktpdDIuIiwgIldlYktpdDIuIik7CisgICAgcmV0dXJu
IHRvQVBJKHByZWZlcmVuY2VzLmxlYWtSZWYoKSk7CiB9CiAKIFdLUHJlZmVyZW5jZXNSZWYgV0tQ
cmVmZXJlbmNlc0NyZWF0ZUNvcHkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZikKIHsK
LSAgICBSZWZQdHI8V2ViUHJlZmVyZW5jZXM+IHByZWZlcmVuY2VzID0gdG9JbXBsKHByZWZlcmVu
Y2VzUmVmKS0+Y29weSgpOwotICAgIHJldHVybiB0b0FQSShwcmVmZXJlbmNlcy5yZWxlYXNlKCku
bGVha1JlZigpKTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gdG9JbXBsKHByZWZlcmVuY2VzUmVm
KS0+Y29weSgpOworICAgIHJldHVybiB0b0FQSShwcmVmZXJlbmNlcy5sZWFrUmVmKCkpOwogfQog
CiB2b2lkIFdLUHJlZmVyZW5jZXNFbmFibGVBbGxFeHBlcmltZW50YWxGZWF0dXJlcyhXS1ByZWZl
cmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLU2Vzc2lvblJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tTZXNzaW9uUmVmLmNwcAppbmRleCBhOTM1NzkwODcyNTQ2ZTE3N2U5MGMxM2U2ZTM1
OGQ3MTZmZGM1YTBjLi5mZWRjMGU4YTc4OWRlZTU3NmViZWJkNmJmOTYxNzUxNzdjNDU0N2VjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tTZXNzaW9uUmVmLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tTZXNzaW9uUmVmLmNwcApA
QCAtMzcsOCArMzcsOCBAQCBXS1Nlc3Npb25SZWYgV0tTZXNzaW9uQ3JlYXRlKGJvb2wgaXNFcGhl
bWVyYWwpCiAgICAgaWYgKCFpc0VwaGVtZXJhbCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICBSZWZQdHI8QVBJOjpTZXNzaW9uPiBzZXNzaW9uID0gQVBJOjpTZXNzaW9uOjpjcmVhdGVF
cGhlbWVyYWwoKTsKLSAgICByZXR1cm4gdG9BUEkoc2Vzc2lvbi5yZWxlYXNlKCkubGVha1JlZigp
KTsKKyAgICBhdXRvIHNlc3Npb24gPSBBUEk6OlNlc3Npb246OmNyZWF0ZUVwaGVtZXJhbCgpOwor
ICAgIHJldHVybiB0b0FQSSgmc2Vzc2lvbi5sZWFrUmVmKCkpOwogfQogCiBXS1R5cGVJRCBXS1Nl
c3Npb25HZXRUeXBlSUQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLU2Vzc2lvblN0YXRlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1Nlc3Npb25TdGF0ZVJlZi5jcHAKaW5kZXggOThlNzE3NTE5ZDU2YTI3NWE1MDQxMTVmY2Q4
NmZhZWY0NTVjMGQ2NS4uYzkzOGY1MTRjYTM4ZTIyNDQwZWNmMmFiMGIyNGU2ZGNhYjFkNTlkYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLU2Vzc2lvblN0YXRl
UmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tTZXNzaW9uU3Rh
dGVSZWYuY3BwCkBAIC00OCw1ICs0OCw1IEBAIFdLU2Vzc2lvblN0YXRlUmVmIFdLU2Vzc2lvblN0
YXRlQ3JlYXRlRnJvbURhdGEoV0tEYXRhUmVmIGRhdGEpCiAKIFdLRGF0YVJlZiBXS1Nlc3Npb25T
dGF0ZUNvcHlEYXRhKFdLU2Vzc2lvblN0YXRlUmVmIHNlc3Npb25TdGF0ZSkKIHsKLSAgICByZXR1
cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6OmVuY29kZUxlZ2FjeVNlc3Npb25TdGF0ZShXZWJLaXQ6
OnRvSW1wbChzZXNzaW9uU3RhdGUpLT5zZXNzaW9uU3RhdGUoKSkucmVsZWFzZSgpLmxlYWtSZWYo
KSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0OjplbmNvZGVMZWdhY3lTZXNzaW9u
U3RhdGUoV2ViS2l0Ojp0b0ltcGwoc2Vzc2lvblN0YXRlKS0+c2Vzc2lvblN0YXRlKCkpLmxlYWtS
ZWYoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFj
L1dLQ29udGV4dFByaXZhdGVNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
bWFjL1dLQ29udGV4dFByaXZhdGVNYWMubW0KaW5kZXggNGMxOTJiNmQ0YTZlOGM1NzcyZjYwMzA1
ZjY2ZWYyMThhYTBjMmIxZS4uYTU4OTEwNGIxMmE5OGNkN2Q3ZjYxZGFhOGY5NmY0ZGNkNWY5YzJm
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRl
eHRQcml2YXRlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMv
V0tDb250ZXh0UHJpdmF0ZU1hYy5tbQpAQCAtNzMsOCArNzMsOCBAQCBXS0RpY3Rpb25hcnlSZWYg
V0tDb250ZXh0Q29weVBsdWdJbkluZm9Gb3JCdW5kbGVJZGVudGlmaWVyKFdLQ29udGV4dFJlZiBj
b250ZXh0UgogICAgIGlmIChwbHVnaW4ucGF0aC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICBSZWZQdHI8QVBJOjpEaWN0aW9uYXJ5PiBkaWN0aW9uYXJ5ID0gY3JlYXRlUGx1Z2lu
SW5mb3JtYXRpb25EaWN0aW9uYXJ5KHBsdWdpbik7Ci0gICAgcmV0dXJuIHRvQVBJKGRpY3Rpb25h
cnkucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgYXV0byBkaWN0aW9uYXJ5ID0gY3JlYXRlUGx1
Z2luSW5mb3JtYXRpb25EaWN0aW9uYXJ5KHBsdWdpbik7CisgICAgcmV0dXJuIHRvQVBJKCZkaWN0
aW9uYXJ5LmxlYWtSZWYoKSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGUxNzU0
ZjQyYjZmYWYxYWU1YjAzMTQyOWEwYWQ0YzA4NTc2NmI4MTAuLjkwY2M2YWU1ZjNiMDY2MzhkMjVh
YjIxZjkzOTIzNzFlNmY0ZWM1NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC02NjEsNyArNjYxLDcgQEAgLSAoV0tOYXZpZ2F0aW9u
ICopbG9hZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKICAgICBpZiAoIW5hdmlnYXRp
b24pCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRp
b24ucmVsZWFzZSgpLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBbd3JhcHBl
cigqbmF2aWdhdGlvbi5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAoV0tOYXZpZ2F0
aW9uICopbG9hZEZpbGVVUkw6KE5TVVJMICopVVJMIGFsbG93aW5nUmVhZEFjY2Vzc1RvVVJMOihO
U1VSTCAqKXJlYWRBY2Nlc3NVUkwKQEAgLTY3Niw3ICs2NzYsNyBAQCAtIChXS05hdmlnYXRpb24g
Kilsb2FkRmlsZVVSTDooTlNVUkwgKilVUkwgYWxsb3dpbmdSZWFkQWNjZXNzVG9VUkw6KE5TVVJM
ICopcmVhZAogICAgIGlmICghbmF2aWdhdGlvbikKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAg
IHJldHVybiBbd3JhcHBlcigqbmF2aWdhdGlvbi5yZWxlYXNlKCkubGVha1JlZigpKSBhdXRvcmVs
ZWFzZV07CisgICAgcmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLmxlYWtSZWYoKSkgYXV0b3Jl
bGVhc2VdOwogfQogCiAtIChXS05hdmlnYXRpb24gKilsb2FkSFRNTFN0cmluZzooTlNTdHJpbmcg
KilzdHJpbmcgYmFzZVVSTDooTlNVUkwgKiliYXNlVVJMCkBAIC02OTIsNyArNjkyLDcgQEAgLSAo
V0tOYXZpZ2F0aW9uICopbG9hZERhdGE6KE5TRGF0YSAqKWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5n
ICopTUlNRVR5cGUgY2hhcmFjdGUKICAgICBpZiAoIW5hdmlnYXRpb24pCiAgICAgICAgIHJldHVy
biBuaWw7CiAKLSAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ucmVsZWFzZSgpLmxlYWtS
ZWYoKSkgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBbd3JhcHBlcigqbmF2aWdhdGlvbi5sZWFr
UmVmKCkpIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAoV0tOYXZpZ2F0aW9uICopZ29Ub0JhY2tGb3J3
YXJkTGlzdEl0ZW06KFdLQmFja0ZvcndhcmRMaXN0SXRlbSAqKWl0ZW0KQEAgLTcwMSw3ICs3MDEs
NyBAQCAtIChXS05hdmlnYXRpb24gKilnb1RvQmFja0ZvcndhcmRMaXN0SXRlbTooV0tCYWNrRm9y
d2FyZExpc3RJdGVtICopaXRlbQogICAgIGlmICghbmF2aWdhdGlvbikKICAgICAgICAgcmV0dXJu
IG5pbDsKIAotICAgIHJldHVybiBbd3JhcHBlcigqbmF2aWdhdGlvbi5yZWxlYXNlKCkubGVha1Jl
ZigpKSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLmxlYWtS
ZWYoKSkgYXV0b3JlbGVhc2VdOwogfQogCiAtIChOU1N0cmluZyAqKXRpdGxlCkBAIC03NTgsNyAr
NzU4LDcgQEAgLSAoV0tOYXZpZ2F0aW9uICopZ29CYWNrCiAgICAgaWYgKCFuYXZpZ2F0aW9uKQog
ICAgICAgICByZXR1cm4gbmlsOwogIAotICAgIHJldHVybiBbd3JhcHBlcigqbmF2aWdhdGlvbi5y
ZWxlYXNlKCkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIFt3cmFwcGVyKCpu
YXZpZ2F0aW9uLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOwogfQogCiAtIChXS05hdmlnYXRpb24g
Kilnb0ZvcndhcmQKQEAgLTc2Nyw3ICs3NjcsNyBAQCAtIChXS05hdmlnYXRpb24gKilnb0Zvcndh
cmQKICAgICBpZiAoIW5hdmlnYXRpb24pCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICByZXR1
cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ucmVsZWFzZSgpLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2Vd
OworICAgIHJldHVybiBbd3JhcHBlcigqbmF2aWdhdGlvbi5sZWFrUmVmKCkpIGF1dG9yZWxlYXNl
XTsKIH0KIAogLSAoV0tOYXZpZ2F0aW9uICopcmVsb2FkCkBAIC03NzgsNyArNzc4LDcgQEAgLSAo
V0tOYXZpZ2F0aW9uICopcmVsb2FkCiAgICAgaWYgKCFuYXZpZ2F0aW9uKQogICAgICAgICByZXR1
cm4gbmlsOwogCi0gICAgcmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLnJlbGVhc2UoKS5sZWFr
UmVmKCkpIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ubGVh
a1JlZigpKSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKFdLTmF2aWdhdGlvbiAqKXJlbG9hZEZyb21P
cmlnaW4KQEAgLTc4OSw3ICs3ODksNyBAQCAtIChXS05hdmlnYXRpb24gKilyZWxvYWRGcm9tT3Jp
Z2luCiAgICAgaWYgKCFuYXZpZ2F0aW9uKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0
dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLnJlbGVhc2UoKS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNl
XTsKKyAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ubGVha1JlZigpKSBhdXRvcmVsZWFz
ZV07CiB9CiAKIC0gKHZvaWQpc3RvcExvYWRpbmcKQEAgLTMxNzcsNyArMzE3Nyw3IEBAIC0gKFdL
TmF2aWdhdGlvbiAqKV9sb2FkRGF0YTooTlNEYXRhICopZGF0YSBNSU1FVHlwZTooTlNTdHJpbmcg
KilNSU1FVHlwZSBjaGFyYWN0CiAgICAgaWYgKCFuYXZpZ2F0aW9uKQogICAgICAgICByZXR1cm4g
bmlsOwogCi0gICAgcmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLnJlbGVhc2UoKS5sZWFrUmVm
KCkpIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ubGVha1Jl
ZigpKSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKE5TQXJyYXkgKilfY2VydGlmaWNhdGVDaGFpbgpA
QCAtMzI1OCw3ICszMjU4LDcgQEAgLSAoV0tOYXZpZ2F0aW9uICopX3JlbG9hZFdpdGhvdXRDb250
ZW50QmxvY2tlcnMKICAgICBpZiAoIW5hdmlnYXRpb24pCiAgICAgICAgIHJldHVybiBuaWw7CiAg
ICAgCi0gICAgcmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLnJlbGVhc2UoKS5sZWFrUmVmKCkp
IGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ubGVha1JlZigp
KSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKHZvaWQpX2tpbGxXZWJDb250ZW50UHJvY2Vzc0FuZFJl
c2V0U3RhdGUKQEAgLTMzMzksNyArMzMzOSw3IEBAIC0gKE5TRGF0YSAqKV9zZXNzaW9uU3RhdGVE
YXRhCiAgICAgV2ViS2l0OjpTZXNzaW9uU3RhdGUgc2Vzc2lvblN0YXRlID0gX3BhZ2UtPnNlc3Np
b25TdGF0ZSgpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIG5vdCB1c2UgdGhlIGxlZ2Fj
eSBzZXNzaW9uIHN0YXRlIGVuY29kZXIuCi0gICAgcmV0dXJuIFt3cmFwcGVyKCpXZWJLaXQ6OmVu
Y29kZUxlZ2FjeVNlc3Npb25TdGF0ZShzZXNzaW9uU3RhdGUpLnJlbGVhc2UoKS5sZWFrUmVmKCkp
IGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gW3dyYXBwZXIoKldlYktpdDo6ZW5jb2RlTGVnYWN5
U2Vzc2lvblN0YXRlKHNlc3Npb25TdGF0ZSkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CiB9CiAK
IC0gKF9XS1Nlc3Npb25TdGF0ZSAqKV9zZXNzaW9uU3RhdGUKQEAgLTMzNjMsNyArMzM2Myw3IEBA
IC0gKFdLTmF2aWdhdGlvbiAqKV9yZXN0b3JlU2Vzc2lvblN0YXRlOihfV0tTZXNzaW9uU3RhdGUg
KilzZXNzaW9uU3RhdGUgYW5kTmF2aWdhCiAgICAgaWYgKCFuYXZpZ2F0aW9uKQogICAgICAgICBy
ZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLnJlbGVhc2UoKS5s
ZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24u
bGVha1JlZigpKSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKHZvaWQpX2Nsb3NlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZGF0YWJhc2VfbWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZGF0YWJhc2VfbWFuYWdl
ci5jcHAKaW5kZXggZGFjZjc4ZmE5NDg3MGE3MWJiYTU2MDRkMzNjOWJhYjUyMWU3MmRjMi4uNDE3
NzcyYWNkNWQyZmVkYWU3MWQxM2ZmZDJmYzUyMTczOGVkYjU2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2RhdGFiYXNlX21hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19kYXRhYmFzZV9tYW5hZ2VyLmNw
cApAQCAtNzAsMTIgKzcwLDEyIEBAIEVpbmFfTGlzdCogRXdrRGF0YWJhc2VNYW5hZ2VyOjpjcmVh
dGVPcmlnaW5MaXN0KFdLQXJyYXlSZWYgb3JpZ2lucykgY29uc3QKIAogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgV0tTZWN1cml0eU9yaWdpblJlZiB3
a09yaWdpblJlZiA9IHN0YXRpY19jYXN0PFdLU2VjdXJpdHlPcmlnaW5SZWY+KFdLQXJyYXlHZXRJ
dGVtQXRJbmRleChvcmlnaW5zLCBpKSk7Ci0gICAgICAgIFJlZlB0cjxFd2tTZWN1cml0eU9yaWdp
bj4gb3JpZ2luID0gbV93cmFwcGVyQ2FjaGUuZ2V0KHdrT3JpZ2luUmVmKTsKKyAgICAgICAgYXV0
byBvcmlnaW4gPSBtX3dyYXBwZXJDYWNoZS5nZXQod2tPcmlnaW5SZWYpOwogICAgICAgICBpZiAo
IW9yaWdpbikgewogICAgICAgICAgICAgb3JpZ2luID0gRXdrU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZSh3a09yaWdpblJlZik7CiAgICAgICAgICAgICBtX3dyYXBwZXJDYWNoZS5zZXQod2tPcmlnaW5S
ZWYsIG9yaWdpbik7CiAgICAgICAgIH0KLSAgICAgICAgb3JpZ2luTGlzdCA9IGVpbmFfbGlzdF9h
cHBlbmQob3JpZ2luTGlzdCwgb3JpZ2luLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgICAgICBv
cmlnaW5MaXN0ID0gZWluYV9saXN0X2FwcGVuZChvcmlnaW5MaXN0LCBvcmlnaW4ubGVha1JlZigp
KTsKICAgICB9CiAKICAgICByZXR1cm4gb3JpZ2luTGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19zdG9yYWdlX21hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3N0b3JhZ2VfbWFuYWdlci5jcHAKaW5kZXgg
NWQzZWRiMGEyNjk2YjIxNTFjZjYwODVmN2Q2NTUwZWM0MmYwODQ4My4uNzNmYWQzOTdkMzFlY2Q1
OGQwYmZkNDBlYTdhNzQwMDQ1NjQ4ZTgxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3N0b3JhZ2VfbWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3N0b3JhZ2VfbWFuYWdlci5jcHAKQEAgLTUzLDEyICs1
MywxMiBAQCBFaW5hX0xpc3QqIEV3a1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVPcmlnaW5MaXN0KFdL
QXJyYXlSZWYgb3JpZ2lucykgY29uc3QKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVu
Z3RoOyArK2kpIHsKICAgICAgICAgV0tTZWN1cml0eU9yaWdpblJlZiB3a09yaWdpblJlZiA9IHN0
YXRpY19jYXN0PFdLU2VjdXJpdHlPcmlnaW5SZWY+KFdLQXJyYXlHZXRJdGVtQXRJbmRleChvcmln
aW5zLCBpKSk7Ci0gICAgICAgIFJlZlB0cjxFd2tTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gbV93
cmFwcGVyQ2FjaGUuZ2V0KHdrT3JpZ2luUmVmKTsKKyAgICAgICAgYXV0byBvcmlnaW4gPSBtX3dy
YXBwZXJDYWNoZS5nZXQod2tPcmlnaW5SZWYpOwogICAgICAgICBpZiAoIW9yaWdpbikgewogICAg
ICAgICAgICAgb3JpZ2luID0gRXdrU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh3a09yaWdpblJlZik7
CiAgICAgICAgICAgICBtX3dyYXBwZXJDYWNoZS5zZXQod2tPcmlnaW5SZWYsIG9yaWdpbik7CiAg
ICAgICAgIH0KLSAgICAgICAgb3JpZ2luTGlzdCA9IGVpbmFfbGlzdF9hcHBlbmQob3JpZ2luTGlz
dCwgb3JpZ2luLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgICAgICBvcmlnaW5MaXN0ID0gZWlu
YV9saXN0X2FwcGVuZChvcmlnaW5MaXN0LCBvcmlnaW4ubGVha1JlZigpKTsKICAgICB9CiAKICAg
ICByZXR1cm4gb3JpZ2luTGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggOTZmZTFmYzI5YTY1ZDJiNmU1OTgwZTBmMTA4
NTA0MGE3NjAxNGQzMi4uZGZmYWU0MjMxNDE0NDZkZTllOGQ2NTNiMzhmNmNkN2E4YWM3ZWJjMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
dy5jcHAKQEAgLTE4MzYsOCArMTgzNiw4IEBAIFdlYlBhZ2VQcm94eSogd2Via2l0V2ViVmlld0Ny
ZWF0ZU5ld1BhZ2UoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgV2luZG93RmVhCiAKICAg
ICB3ZWJraXRXaW5kb3dQcm9wZXJ0aWVzVXBkYXRlRnJvbVdlYldpbmRvd0ZlYXR1cmVzKG5ld1dl
YlZpZXctPnByaXYtPndpbmRvd1Byb3BlcnRpZXMuZ2V0KCksIHdpbmRvd0ZlYXR1cmVzKTsKIAot
ICAgIFJlZlB0cjxXZWJQYWdlUHJveHk+IG5ld1BhZ2UgPSBnZXRQYWdlKG5ld1dlYlZpZXcpOwot
ICAgIHJldHVybiBuZXdQYWdlLnJlbGVhc2UoKS5sZWFrUmVmKCk7CisgICAgYXV0byBuZXdQYWdl
ID0gZ2V0UGFnZShuZXdXZWJWaWV3KTsKKyAgICByZXR1cm4gbmV3UGFnZS5sZWFrUmVmKCk7CiB9
CiAKIHZvaWQgd2Via2l0V2ViVmlld1JlYWR5VG9TaG93UGFnZShXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3KQpAQCAtMTkyNSw3ICsxOTI1LDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3TW91c2VUYXJnZXRD
aGFuZ2VkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IFdlYkhpdFRlc3RSZXMKIAogdm9p
ZCB3ZWJraXRXZWJWaWV3UHJpbnRGcmFtZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJGcmFt
ZVByb3h5KiBmcmFtZSkKIHsKLSAgICBHUmVmUHRyPFdlYktpdFByaW50T3BlcmF0aW9uPiBwcmlu
dE9wZXJhdGlvbiA9IGFkb3B0R1JlZih3ZWJraXRfcHJpbnRfb3BlcmF0aW9uX25ldyh3ZWJWaWV3
KSk7CisgICAgYXV0byBwcmludE9wZXJhdGlvbiA9IGFkb3B0R1JlZih3ZWJraXRfcHJpbnRfb3Bl
cmF0aW9uX25ldyh3ZWJWaWV3KSk7CiAgICAgd2Via2l0UHJpbnRPcGVyYXRpb25TZXRQcmludE1v
ZGUocHJpbnRPcGVyYXRpb24uZ2V0KCksIFByaW50SW5mbzo6UHJpbnRNb2RlU3luYyk7CiAgICAg
Z2Jvb2xlYW4gcmV0dXJuVmFsdWU7CiAgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxz
W1BSSU5UXSwgMCwgcHJpbnRPcGVyYXRpb24uZ2V0KCksICZyZXR1cm5WYWx1ZSk7CkBAIC0zMjA0
LDcgKzMyMDQsNyBAQCBzdGF0aWMgdm9pZCBmaWxlUmVwbGFjZUNvbnRlbnRzQ2FsbGJhY2soR09i
amVjdCogb2JqZWN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZwogCiBzdGF0aWMgdm9pZCBnZXRD
b250ZW50c0FzTUhUTUxEYXRhQ2FsbGJhY2soQVBJOjpEYXRhKiB3a0RhdGEsIEdUYXNrKiB0YXNr
UHRyKQogewotICAgIEdSZWZQdHI8R1Rhc2s+IHRhc2sgPSBhZG9wdEdSZWYodGFza1B0cik7Cisg
ICAgYXV0byB0YXNrID0gYWRvcHRHUmVmKHRhc2tQdHIpOwogICAgIGlmIChnX3Rhc2tfcmV0dXJu
X2Vycm9yX2lmX2NhbmNlbGxlZCh0YXNrLmdldCgpKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvU2Vzc2lvblN0YXRlQ29kaW5n
Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1Nlc3Npb25TdGF0ZUNvZGluZy5t
bQppbmRleCAzZWQ0MTlkY2Q1Mzk3NDExODY0MDhmYmI4MGIwZGQ4NWUxMGI0MDFhLi42MjNiYTQ2
MGEyMDhhYjdkNzM2MTI3Y2VhYTg0NDE0ZmNhMDQ1MDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvU2Vzc2lvblN0YXRlQ29kaW5nLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9TZXNzaW9uU3RhdGVDb2RpbmcubW0KQEAgLTM0LDcgKzM0
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBSZXRhaW5QdHI8TlNEYXRhPiBlbmNvZGVTZXNzaW9u
U3RhdGUoY29uc3QgU2Vzc2lvblN0YXRlJiBzZXNzaW9uU3RhdGUpCiB7CiAjaWYgV0tfQVBJX0VO
QUJMRUQKLSAgICByZXR1cm4gW3dyYXBwZXIoKldlYktpdDo6ZW5jb2RlTGVnYWN5U2Vzc2lvblN0
YXRlKHNlc3Npb25TdGF0ZSkucmVsZWFzZSgpLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOworICAg
IHJldHVybiBbd3JhcHBlcigqV2ViS2l0OjplbmNvZGVMZWdhY3lTZXNzaW9uU3RhdGUoc2Vzc2lv
blN0YXRlKS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKICNlbHNlCiAgICAgcmV0dXJuIG51bGxw
dHI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5lcmlj
Q2FsbGJhY2suaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2suaApp
bmRleCAxZDIwNTM5YTE4NzM4OWQxMmYwMDEyZDcwNjk3MmI2N2EwZGFkMDY5Li4xYjY3ZTkzODQ2
Nzk3OWQxMjljYzdmYzJmYWJjZDVkZmUwN2ZlNDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0dlbmVyaWNDYWxsYmFjay5oCkBAIC0yMDAsMTEgKzIwMCwxMSBAQCBwdWJsaWM6CiAgICAg
dGVtcGxhdGU8Y2xhc3MgVD4KICAgICBSZWZQdHI8VD4gdGFrZSh1aW50NjRfdCBjYWxsYmFja0lE
KQogICAgIHsKLSAgICAgICAgUmVmUHRyPENhbGxiYWNrQmFzZT4gYmFzZSA9IG1fbWFwLnRha2Uo
Y2FsbGJhY2tJRCk7CisgICAgICAgIGF1dG8gYmFzZSA9IG1fbWFwLnRha2UoY2FsbGJhY2tJRCk7
CiAgICAgICAgIGlmICghYmFzZSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihiYXNlLnJlbGVhc2UoKS5sZWFrUmVmKCktPmFzPFQ+KCkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoYmFzZS5sZWFrUmVmKCktPmFzPFQ+KCkpOwogICAgIH0K
IAogICAgIHZvaWQgaW52YWxpZGF0ZShDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDIwNWEwZjA2YzllM2M0ZWU5
ZjZkNWE4MGEwZjFkMjNlNTM3M2Q2NjIuLjBjZjcwNDUxMTgwYTVjY2FjYzliYWYxY2FkYWIxYjQx
YjMzYWRmZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKQEAg
LTQ3LDkgKzQ3LDkgQEAgdm9pZCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5OjppbnZhbGlkYXRlUmVxdWVzdHMoKQogCiBQYXNzUmVmUHRyPEdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RQcm94eT4gR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eTo6Y3JlYXRlUmVxdWVzdCh1aW50NjRfdCBnZW9sb2NhdGlvbklEKQogewotICAgIFJlZlB0cjxH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHk+IHJlcXVlc3QgPSBHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0UHJveHk6OmNyZWF0ZSh0aGlzLCBnZW9sb2NhdGlvbklEKTsKLSAgICBt
X3BlbmRpbmdSZXF1ZXN0cy5hZGQoZ2VvbG9jYXRpb25JRCwgcmVxdWVzdC5nZXQoKSk7Ci0gICAg
cmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOworICAgIGF1dG8gcmVxdWVzdCA9IEdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RQcm94eTo6Y3JlYXRlKHRoaXMsIGdlb2xvY2F0aW9uSUQpOworICAg
IG1fcGVuZGluZ1JlcXVlc3RzLmFkZChnZW9sb2NhdGlvbklELCByZXF1ZXN0LnB0cigpKTsKKyAg
ICByZXR1cm4gV1RGTW92ZShyZXF1ZXN0KTsKIH0KIAogdm9pZCBHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5OjpkaWRSZWNlaXZlR2VvbG9jYXRpb25QZXJtaXNzaW9uRGVj
aXNpb24odWludDY0X3QgZ2VvbG9jYXRpb25JRCwgYm9vbCBhbGxvd2VkKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cAppbmRleCBiNDI2NjBmZTYxYmU0NWQ1MDE2ZGVkZjZlZjM3MzQ0NTRiNzQ3M2U4Li5kN2QzNTA5
OTg3YmM0ZmQ2NzI4YTg3MzczZTJiYzYxMTNiNjllYTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAt
MjQ5LDggKzI0OSw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwgdWluCiAgICAgV2ViUGFnZVByb3h5
KiBwYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7CiAgICAgTUVTU0FHRV9D
SEVDSyhwYWdlKTsKIAotICAgIFJlZlB0cjxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5PiBh
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk6OmNy
ZWF0ZShjb3JlQ2hhbGxlbmdlLCBjaGFsbGVuZ2VJRCwgY29ubmVjdGlvbigpKTsKLSAgICBwYWdl
LT5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eShmcmFtZUlELCBhdXRoZW50
aWNhdGlvbkNoYWxsZW5nZS5yZWxlYXNlKCkpOworICAgIGF1dG8gYXV0aGVudGljYXRpb25DaGFs
bGVuZ2UgPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5OjpjcmVhdGUoY29yZUNoYWxsZW5n
ZSwgY2hhbGxlbmdlSUQsIGNvbm5lY3Rpb24oKSk7CisgICAgcGFnZS0+ZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkoZnJhbWVJRCwgV1RGTW92ZShhdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSkpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZEZldGNoV2Vic2l0
ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgV2Vic2l0ZURhdGEmIHdlYnNpdGVEYXRh
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHkuY3BwCmluZGV4IDBiMmE2MzI5NzhkYjdjYjRlM2FjNWU4MTg0MzE4OTJjYzE2
OTU0ZTQuLjgxOGE1MjU0MTYwN2EzY2U5YTIzZGM4NzhmMThiZmExMzdjMGRhZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eS5jcHAKQEAgLTQ4LDkgKzQ4LDkgQEAgdm9pZCBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eTo6aW52YWxpZGF0ZVJlcXVlc3RzKCkKIAogUGFzc1JlZlB0cjxOb3Rp
ZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdD4gTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHk6OmNyZWF0ZVJlcXVlc3QodWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCiB7Ci0g
ICAgUmVmUHRyPE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0PiByZXF1ZXN0ID0gTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZSh0aGlzLCBub3RpZmljYXRpb25JRCk7Ci0g
ICAgbV9wZW5kaW5nUmVxdWVzdHMuYWRkKG5vdGlmaWNhdGlvbklELCByZXF1ZXN0LmdldCgpKTsK
LSAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CisgICAgYXV0byByZXF1ZXN0ID0gTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZSh0aGlzLCBub3RpZmljYXRpb25JRCk7Cisg
ICAgbV9wZW5kaW5nUmVxdWVzdHMuYWRkKG5vdGlmaWNhdGlvbklELCByZXF1ZXN0LnB0cigpKTsK
KyAgICByZXR1cm4gV1RGTW92ZShyZXF1ZXN0KTsKIH0KIAogdm9pZCBOb3RpZmljYXRpb25QZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZU5vdGlmaWNhdGlvblBlcm1pc3Np
b25EZWNpc2lvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCwgYm9vbCBhbGxvdykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5h
Z2VyLmNwcAppbmRleCBiZDAwYmRjODM3NDFmYTZjYmYxMGQyNDFmODMzNTgwZGFiYTE1YjQ1Li5m
ZmEwYTdlODYyNzlmMTU1Yzk0ZjY0ZTc2ZWZkM2UxZWQxZWZiYmRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIu
Y3BwCkBAIC0xMjUsMTAgKzEyNSwxMCBAQCBQbHVnaW5Qcm9jZXNzUHJveHkqIFBsdWdpblByb2Nl
c3NNYW5hZ2VyOjpnZXRPckNyZWF0ZVBsdWdpblByb2Nlc3ModWludDY0X3QgcGx1ZwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wbHVnaW5Qcm9jZXNzVG9rZW5zLnNpemUoKTsgKytpKSB7
CiAgICAgICAgIGF1dG8mIGF0dHJpYnV0ZXNBbmRUb2tlbiA9IG1fcGx1Z2luUHJvY2Vzc1Rva2Vu
c1tpXTsKICAgICAgICAgaWYgKGF0dHJpYnV0ZXNBbmRUb2tlbi5zZWNvbmQgPT0gcGx1Z2luUHJv
Y2Vzc1Rva2VuKSB7Ci0gICAgICAgICAgICBSZWZQdHI8UGx1Z2luUHJvY2Vzc1Byb3h5PiBwbHVn
aW5Qcm9jZXNzID0gUGx1Z2luUHJvY2Vzc1Byb3h5OjpjcmVhdGUodGhpcywgYXR0cmlidXRlc0Fu
ZFRva2VuLmZpcnN0LCBhdHRyaWJ1dGVzQW5kVG9rZW4uc2Vjb25kKTsKLSAgICAgICAgICAgIFBs
dWdpblByb2Nlc3NQcm94eSogcGx1Z2luUHJvY2Vzc1B0ciA9IHBsdWdpblByb2Nlc3MuZ2V0KCk7
CisgICAgICAgICAgICBhdXRvIHBsdWdpblByb2Nlc3MgPSBQbHVnaW5Qcm9jZXNzUHJveHk6OmNy
ZWF0ZSh0aGlzLCBhdHRyaWJ1dGVzQW5kVG9rZW4uZmlyc3QsIGF0dHJpYnV0ZXNBbmRUb2tlbi5z
ZWNvbmQpOworICAgICAgICAgICAgUGx1Z2luUHJvY2Vzc1Byb3h5KiBwbHVnaW5Qcm9jZXNzUHRy
ID0gcGx1Z2luUHJvY2Vzcy5wdHIoKTsKIAotICAgICAgICAgICAgbV9wbHVnaW5Qcm9jZXNzZXMu
YXBwZW5kKHBsdWdpblByb2Nlc3MucmVsZWFzZSgpKTsKKyAgICAgICAgICAgIG1fcGx1Z2luUHJv
Y2Vzc2VzLmFwcGVuZChXVEZNb3ZlKHBsdWdpblByb2Nlc3MpKTsKICAgICAgICAgICAgIHJldHVy
biBwbHVnaW5Qcm9jZXNzUHRyOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IGI0Y2E1MzQ5
OTY4MDc5ZWM0MmM3NDgyODQ4NjZkZDdiZTM3ODY1YWMuLjE1Yzk4ZWFjOWJlYTA4NzIwZTY3YjM4
YjVmNWQ2ZjNkMmE5M2VkOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9T
dG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
U3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKQEAgLTIxOSw5ICsyMTksOSBAQCB2b2lkIFN0b3Jh
Z2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6c2V0SXRlbShJUEM6OkNvbm5lY3Rpb24qIHNvdXJjZUNv
bm5lY3Rpb24sIHVpbgogCiAgICAgU3RyaW5nIG9sZFZhbHVlOwogCi0gICAgUmVmUHRyPFN0b3Jh
Z2VNYXA+IG5ld1N0b3JhZ2VNYXAgPSBtX3N0b3JhZ2VNYXAtPnNldEl0ZW0oa2V5LCB2YWx1ZSwg
b2xkVmFsdWUsIHF1b3RhRXhjZXB0aW9uKTsKKyAgICBhdXRvIG5ld1N0b3JhZ2VNYXAgPSBtX3N0
b3JhZ2VNYXAtPnNldEl0ZW0oa2V5LCB2YWx1ZSwgb2xkVmFsdWUsIHF1b3RhRXhjZXB0aW9uKTsK
ICAgICBpZiAobmV3U3RvcmFnZU1hcCkKLSAgICAgICAgbV9zdG9yYWdlTWFwID0gbmV3U3RvcmFn
ZU1hcC5yZWxlYXNlKCk7CisgICAgICAgIG1fc3RvcmFnZU1hcCA9IFdURk1vdmUobmV3U3RvcmFn
ZU1hcCk7CiAKICAgICBpZiAocXVvdGFFeGNlcHRpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTIz
Nyw5ICsyMzcsOSBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6cmVtb3ZlSXRl
bShJUEM6OkNvbm5lY3Rpb24qIHNvdXJjZUNvbm5lY3Rpb24sCiAgICAgb3BlbkRhdGFiYXNlQW5k
SW1wb3J0SXRlbXNJZk5lZWRlZCgpOwogCiAgICAgU3RyaW5nIG9sZFZhbHVlOwotICAgIFJlZlB0
cjxTdG9yYWdlTWFwPiBuZXdTdG9yYWdlTWFwID0gbV9zdG9yYWdlTWFwLT5yZW1vdmVJdGVtKGtl
eSwgb2xkVmFsdWUpOworICAgIGF1dG8gbmV3U3RvcmFnZU1hcCA9IG1fc3RvcmFnZU1hcC0+cmVt
b3ZlSXRlbShrZXksIG9sZFZhbHVlKTsKICAgICBpZiAobmV3U3RvcmFnZU1hcCkKLSAgICAgICAg
bV9zdG9yYWdlTWFwID0gbmV3U3RvcmFnZU1hcC5yZWxlYXNlKCk7CisgICAgICAgIG1fc3RvcmFn
ZU1hcCA9IFdURk1vdmUobmV3U3RvcmFnZU1hcCk7CiAKICAgICBpZiAob2xkVmFsdWUuaXNOdWxs
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTY4NiwxMCArNjg2LDEwIEBAIHZvaWQgU3RvcmFnZU1h
bmFnZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU1hcChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IHVpbnQ2NF90CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGEgbWVzc2FnZSBjaGVjay4K
ICAgICBBU1NFUlQobG9jYWxTdG9yYWdlTmFtZXNwYWNlKTsKIAotICAgIFJlZlB0cjxTdG9yYWdl
QXJlYT4gc3RvcmFnZUFyZWEgPSBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmdldE9yQ3JlYXRlU3Rv
cmFnZUFyZWEoc2VjdXJpdHlPcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCkpOworICAgIGF1dG8g
c3RvcmFnZUFyZWEgPSBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmdldE9yQ3JlYXRlU3RvcmFnZUFy
ZWEoc2VjdXJpdHlPcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCkpOwogICAgIHN0b3JhZ2VBcmVh
LT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uLCBzdG9yYWdlTWFwSUQpOwogCi0gICAgcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSA9IHN0b3JhZ2VBcmVhLnJlbGVhc2UoKTsKKyAgICByZXN1bHQuaXRlcmF0
b3ItPnZhbHVlID0gV1RGTW92ZShzdG9yYWdlQXJlYSk7CiB9CiAKIHZvaWQgU3RvcmFnZU1hbmFn
ZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU1hcChJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlE
LCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHRvcExldmVsT3JpZ2luRGF0YSwgY29uc3QgU2Vj
dXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbkRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCmluZGV4IDI3MzQzMTIzMmIyY2I1NDI4
MzdmMjIxYzZmMWVkZjVhM2Y5MjgwNzAuLjBmNzEzYTlkMDQyODRlNmNkZmQ1ZWUwMTY2MGUzNzVj
OWE3OGRmMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYWNrRm9y
d2FyZExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2Fy
ZExpc3QuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZExpc3Q6OmFk
ZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogbmV3SXRlbSkKICAgICAgICAgcmVtb3ZlZEl0
ZW1zLnJlc2VydmVDYXBhY2l0eShtX2VudHJpZXMuc2l6ZSgpIC0gdGFyZ2V0U2l6ZSk7CiAgICAg
ICAgIHdoaWxlIChtX2VudHJpZXMuc2l6ZSgpID4gdGFyZ2V0U2l6ZSkgewogICAgICAgICAgICAg
ZGlkUmVtb3ZlSXRlbSgqbV9lbnRyaWVzLmxhc3QoKSk7Ci0gICAgICAgICAgICByZW1vdmVkSXRl
bXMuYXBwZW5kKG1fZW50cmllcy5sYXN0KCkucmVsZWFzZSgpKTsKKyAgICAgICAgICAgIHJlbW92
ZWRJdGVtcy5hcHBlbmQoV1RGTW92ZShtX2VudHJpZXMubGFzdCgpKSk7CiAgICAgICAgICAgICBt
X2VudHJpZXMucmVtb3ZlTGFzdCgpOwogICAgICAgICB9CiAKQEAgLTEwOCw3ICsxMDgsNyBAQCB2
b2lkIFdlYkJhY2tGb3J3YXJkTGlzdDo6YWRkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBu
ZXdJdGVtKQogICAgICAgICAvLyAob3IgZXZlbiBpZiB3ZSBhcmUsIGlmIHdlIG9ubHkgd2FudCAx
IGVudHJ5KS4KICAgICAgICAgaWYgKG1fZW50cmllcy5zaXplKCkgPT0gbV9jYXBhY2l0eSAmJiAo
bV9jdXJyZW50SW5kZXggfHwgbV9jYXBhY2l0eSA9PSAxKSkgewogICAgICAgICAgICAgZGlkUmVt
b3ZlSXRlbSgqbV9lbnRyaWVzWzBdKTsKLSAgICAgICAgICAgIHJlbW92ZWRJdGVtcy5hcHBlbmQo
bV9lbnRyaWVzWzBdLnJlbGVhc2UoKSk7CisgICAgICAgICAgICByZW1vdmVkSXRlbXMuYXBwZW5k
KFdURk1vdmUobV9lbnRyaWVzWzBdKSk7CiAgICAgICAgICAgICBtX2VudHJpZXMucmVtb3ZlKDAp
OwogCiAgICAgICAgICAgICBpZiAobV9lbnRyaWVzLmlzRW1wdHkoKSkKQEAgLTEyNyw3ICsxMjcs
NyBAQCB2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdDo6YWRkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtKiBuZXdJdGVtKQogICAgICAgICAgICAgaWYgKCFtX2VudHJpZXNbaV0pCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICBkaWRSZW1vdmVJdGVtKCptX2VudHJpZXNbaV0p
OwotICAgICAgICAgICAgcmVtb3ZlZEl0ZW1zLmFwcGVuZChtX2VudHJpZXNbaV0ucmVsZWFzZSgp
KTsKKyAgICAgICAgICAgIHJlbW92ZWRJdGVtcy5hcHBlbmQoV1RGTW92ZShtX2VudHJpZXNbaV0p
KTsKICAgICAgICAgfQogICAgICAgICBtX2VudHJpZXMuY2xlYXIoKTsKICAgICB9CkBAIC0zNTcs
NyArMzU3LDcgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZExpc3Q6OmNsZWFyKCkKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgZGlkUmVtb3ZlSXRlbSgqbV9lbnRyaWVzW2ld
KTsKLSAgICAgICAgICAgIHJlbW92ZWRJdGVtcy5hcHBlbmQobV9lbnRyaWVzW2ldLnJlbGVhc2Uo
KSk7CisgICAgICAgICAgICByZW1vdmVkSXRlbXMuYXBwZW5kKFdURk1vdmUobV9lbnRyaWVzW2ld
KSk7CiAgICAgICAgIH0KIAogICAgICAgICBtX2VudHJpZXMuY2xlYXIoKTsKQEAgLTM3NiwxNCAr
Mzc2LDE0IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0OjpjbGVhcigpCiAgICAgcmVtb3ZlZEl0
ZW1zLnJlc2VydmVDYXBhY2l0eShzaXplIC0gMSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzaXplOyArK2kpIHsKICAgICAgICAgaWYgKGkgIT0gbV9jdXJyZW50SW5kZXggJiYgbV9oYXND
dXJyZW50SW5kZXggJiYgbV9lbnRyaWVzW2ldKQotICAgICAgICAgICAgcmVtb3ZlZEl0ZW1zLmFw
cGVuZChtX2VudHJpZXNbaV0ucmVsZWFzZSgpKTsKKyAgICAgICAgICAgIHJlbW92ZWRJdGVtcy5h
cHBlbmQoV1RGTW92ZShtX2VudHJpZXNbaV0pKTsKICAgICB9CiAKICAgICBtX2N1cnJlbnRJbmRl
eCA9IDA7CiAKICAgICBpZiAoY3VycmVudEl0ZW0pIHsKICAgICAgICAgbV9lbnRyaWVzLnNocmlu
aygxKTsKLSAgICAgICAgbV9lbnRyaWVzWzBdID0gY3VycmVudEl0ZW0ucmVsZWFzZSgpOworICAg
ICAgICBtX2VudHJpZXNbMF0gPSBXVEZNb3ZlKGN1cnJlbnRJdGVtKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBtX2VudHJpZXMuY2xlYXIoKTsKICAgICAgICAgbV9oYXNDdXJyZW50SW5kZXggPSBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5h
Z2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQ
cm94eS5jcHAKaW5kZXggMmMzMGQ2NDA0NTMyYzZhNDRmMjJiYWJjZjkwM2NkYmNlMjRkZWRkYy4u
YzZmZjkzNjAzZWRhOWQwODFiODU2NDA0Yzk0ODdmMTNkN2VlYjQ5YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKQEAgLTk1LDkg
Kzk1LDkgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlcmVmV2ViQ29udGV4dFN1cHBs
ZW1lbnQoKQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SG9zdG5hbWVzV2l0aENv
b2tpZXMoc3RkOjpmdW5jdGlvbjx2b2lkIChBUEk6OkFycmF5KiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+IGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgUmVmUHRyPEFycmF5Q2FsbGJhY2s+IGNhbGxi
YWNrID0gQXJyYXlDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwor
ICAgIGF1dG8gY2FsbGJhY2sgPSBBcnJheUNhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSk7CiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFj
a0lEKCk7Ci0gICAgbV9hcnJheUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgY2FsbGJhY2sucmVs
ZWFzZSgpKTsKKyAgICBtX2FycmF5Q2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNh
bGxiYWNrKSk7CiAKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1Jl
bGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkdldEhvc3Ru
YW1lc1dpdGhDb29raWVzKGNhbGxiYWNrSUQpKTsKIH0KQEAgLTE2NywxMCArMTY3LDEwIEBAIHZv
aWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBD
b29raWVBY2NlcHRQb2xpY3kgcG9sCiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KHN0ZDo6ZnVuY3Rpb248dm9pZCAoSFRUUENvb2tpZUFjY2Vw
dFBvbGljeSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAg
UmVmUHRyPEhUVFBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFjaz4gY2FsbGJhY2sgPSBIVFRQQ29v
a2llQWNjZXB0UG9saWN5Q2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
KTsKKyAgICBhdXRvIGNhbGxiYWNrID0gSFRUUENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrOjpj
cmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiAKICAgICB1aW50NjRfdCBjYWxsYmFj
a0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKLSAgICBtX2h0dHBDb29raWVBY2NlcHRQb2xp
Y3lDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIGNhbGxiYWNrLnJlbGVhc2UoKSk7CisgICAgbV9o
dHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNh
bGxiYWNrKSk7CiAKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1Jl
bGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkdldEhUVFBD
b29raWVBY2NlcHRQb2xpY3koY2FsbGJhY2tJRCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAwOTdjZmM1ZTFlZTY3NGRkOTQ0MjY0OTg4ZjJmOTgz
MTlhNzAwMTM5Li45NGMxZDUxM2Q0OTQ4MDM2YjkwZDk1OWYxODQ0MzNmMzg5OGE4OThjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNjE2NywxMSArNjE2
NywxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zdGFsbFZpZXdTdGF0ZUNoYW5nZUNvbXBsZXRp
b25IYW5kbGVyKHZvaWQgKF5jb21wbGV0aW9uSGFuZAogICAgIH0KIAogICAgIGF1dG8gY29waWVk
Q29tcGxldGlvbkhhbmRsZXIgPSBCbG9ja19jb3B5KGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICBS
ZWZQdHI8Vm9pZENhbGxiYWNrPiB2b2lkQ2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShb
Y29waWVkQ29tcGxldGlvbkhhbmRsZXJdIChDYWxsYmFja0Jhc2U6OkVycm9yKSB7CisgICAgYXV0
byB2b2lkQ2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShbY29waWVkQ29tcGxldGlvbkhh
bmRsZXJdIChDYWxsYmFja0Jhc2U6OkVycm9yKSB7CiAgICAgICAgIGNvcGllZENvbXBsZXRpb25I
YW5kbGVyKCk7CiAgICAgICAgIEJsb2NrX3JlbGVhc2UoY29waWVkQ29tcGxldGlvbkhhbmRsZXIp
OwogICAgIH0sIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4o
KSk7Ci0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dCh2b2lkQ2FsbGJh
Y2sucmVsZWFzZSgpKTsKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUodm9pZENhbGxiYWNrKSk7CiAgICAgbV9uZXh0Vmlld1N0YXRlQ2hhbmdlQ2FsbGJh
Y2tzLmFwcGVuZChjYWxsYmFja0lEKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcmVmZXJlbmNlcy5jcHAKaW5kZXggNDRiMzYzM2ZjYzFlNjNmZDZkZjg3NjFlMTkwZjEwMDJj
ODUzZjRmYi4uODA5YWE4MzYxOTMzNDg5NjQ2NmQwMDVkZjVmMDNkMzVmYmFmMjVhMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuY3BwCkBAIC00NSwxNCArNDUs
MTQgQEAgUmVmPFdlYlByZWZlcmVuY2VzPiBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKGNvbnN0IFN0
cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW4KIAogUGFzc1JlZlB0cjxXZWJQcmVmZXJlbmNl
cz4gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZVdpdGhMZWdhY3lEZWZhdWx0cyhjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYga2V5UHJlZml4LCBjb25zdCBTdHJpbmcmIGdsb2Jh
bERlYnVnS2V5UHJlZml4KQogewotICAgIFJlZlB0cjxXZWJQcmVmZXJlbmNlcz4gcHJlZmVyZW5j
ZXMgPSBhZG9wdFJlZihuZXcgV2ViUHJlZmVyZW5jZXMoaWRlbnRpZmllciwga2V5UHJlZml4LCBn
bG9iYWxEZWJ1Z0tleVByZWZpeCkpOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJl
bmNlczo6Y3JlYXRlKGlkZW50aWZpZXIsIGtleVByZWZpeCwgZ2xvYmFsRGVidWdLZXlQcmVmaXgp
OwogICAgIC8vIEZJWE1FOiBUaGUgcmVnaXN0ZXJEZWZhdWx0Li4uVmFsdWVGb3JLZXkgbWFjaGlu
ZXJ5IGlzIHVubmVjZXNzYXJpbHkgaGVhdnl3ZWlnaHQgYW5kIGNvbXBsaWNhdGVkLgogICAgIC8v
IFdlIGNhbiBqdXN0IGNvbXB1dGUgZGlmZmVyZW50IGRlZmF1bHRzIGZvciBtb2Rlcm4gYW5kIGxl
Z2FjeSBBUElzIGluIFdlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaCBtYWNyb3MuCiAgICAgcHJl
ZmVyZW5jZXMtPnJlZ2lzdGVyRGVmYXVsdEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tl
eTo6amF2YUVuYWJsZWRLZXkoKSwgdHJ1ZSk7CiAgICAgcHJlZmVyZW5jZXMtPnJlZ2lzdGVyRGVm
YXVsdEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6amF2YUVuYWJsZWRGb3JMb2Nh
bEZpbGVzS2V5KCksIHRydWUpOwogICAgIHByZWZlcmVuY2VzLT5yZWdpc3RlckRlZmF1bHRCb29s
VmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnBsdWdpbnNFbmFibGVkS2V5KCksIHRydWUp
OwogICAgIHByZWZlcmVuY2VzLT5yZWdpc3RlckRlZmF1bHRVSW50MzJWYWx1ZUZvcktleShXZWJQ
cmVmZXJlbmNlc0tleTo6c3RvcmFnZUJsb2NraW5nUG9saWN5S2V5KCksIFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luOjpBbGxvd0FsbFN0b3JhZ2UpOwotICAgIHJldHVybiBwcmVmZXJlbmNlcy5yZWxl
YXNlKCk7CisgICAgcmV0dXJuIFdURk1vdmUocHJlZmVyZW5jZXMpOwogfQogCiBXZWJQcmVmZXJl
bmNlczo6V2ViUHJlZmVyZW5jZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGtleVByZWZpeCwgY29uc3QgU3RyaW5nJiBnbG9iYWxEZWJ1Z0tleVByZWZpeCkKQEAgLTc4
LDcgKzc4LDcgQEAgV2ViUHJlZmVyZW5jZXM6On5XZWJQcmVmZXJlbmNlcygpCiAKIFBhc3NSZWZQ
dHI8V2ViUHJlZmVyZW5jZXM+IFdlYlByZWZlcmVuY2VzOjpjb3B5KCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFdlYlByZWZlcmVuY2VzKCp0aGlzKSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2ViUHJlZmVyZW5jZXMoKnRoaXMpKTsKIH0KIAogdm9pZCBXZWJQcmVmZXJl
bmNlczo6YWRkUGFnZShXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDhjNjIwNTM2NWQ4Y2RmMGQyZTEw
MDk0ZTg0YjYxNDM2YTU3ZDJiMDkuLmE3ZTAzNDZmMDNkOWYxODkwMTRhNmU5ZDQ1Yzk4MGJlMDlk
MmUwMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApA
QCAtMjM4LDcgKzIzOCw3IEBAIFdlYlByb2Nlc3NQb29sOjp+V2ViUHJvY2Vzc1Bvb2woKQogCiAg
ICAgbV9pY29uRGF0YWJhc2UtPmludmFsaWRhdGUoKTsKICAgICBtX2ljb25EYXRhYmFzZS0+Y2xl
YXJQcm9jZXNzUG9vbCgpOwotICAgIFdlYkljb25EYXRhYmFzZSogcmF3SWNvbkRhdGFiYXNlID0g
bV9pY29uRGF0YWJhc2UucmVsZWFzZSgpLmxlYWtSZWYoKTsKKyAgICBXZWJJY29uRGF0YWJhc2Uq
IHJhd0ljb25EYXRhYmFzZSA9IG1faWNvbkRhdGFiYXNlLmxlYWtSZWYoKTsKICAgICByYXdJY29u
RGF0YWJhc2UtPmRlcmVmV2hlbkFwcHJvcHJpYXRlKCk7CiAKICAgICBpbnZhbGlkYXRlQ2FsbGJh
Y2tNYXAobV9kaWN0aW9uYXJ5Q2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldh
c0ludmFsaWRhdGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
Vmlld1NuYXBzaG90U3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdT
bmFwc2hvdFN0b3JlLm1tCmluZGV4IDNmOGZjZmYxYTQxZTFjZDRlODRlMDhkMmZmY2RjMTU1MGQx
ZmQ4MmIuLmQxOTM4NmMwNmM2ZWE5Y2NkMzg2N2Y3YjQ5MzQ1ZmU3ZmQ4YTYzMmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90U3RvcmUubW0KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZS5tbQpAQCAt
MTE0LDcgKzExNCw3IEBAIHZvaWQgVmlld1NuYXBzaG90U3RvcmU6OnJlY29yZFNuYXBzaG90KFdl
YlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5LCBXZWJCYWNrRm9yd2FyCiAKICAgICB3ZWJQYWdlUHJv
eHkud2lsbFJlY29yZE5hdmlnYXRpb25TbmFwc2hvdChpdGVtKTsKIAotICAgIFJlZlB0cjxWaWV3
U25hcHNob3Q+IHNuYXBzaG90ID0gd2ViUGFnZVByb3h5LnRha2VWaWV3U25hcHNob3QoKTsKKyAg
ICBhdXRvIHNuYXBzaG90ID0gd2ViUGFnZVByb3h5LnRha2VWaWV3U25hcHNob3QoKTsKICAgICBp
ZiAoIXNuYXBzaG90KQogICAgICAgICByZXR1cm47CiAKQEAgLTEyMiw3ICsxMjIsNyBAQCB2b2lk
IFZpZXdTbmFwc2hvdFN0b3JlOjpyZWNvcmRTbmFwc2hvdChXZWJQYWdlUHJveHkmIHdlYlBhZ2VQ
cm94eSwgV2ViQmFja0ZvcndhcgogICAgIHNuYXBzaG90LT5zZXREZXZpY2VTY2FsZUZhY3Rvcih3
ZWJQYWdlUHJveHkuZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgc25hcHNob3QtPnNldEJhY2tn
cm91bmRDb2xvcih3ZWJQYWdlUHJveHkucGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yKCkpOwog
Ci0gICAgaXRlbS5zZXRTbmFwc2hvdChzbmFwc2hvdC5yZWxlYXNlKCkpOworICAgIGl0ZW0uc2V0
U25hcHNob3QoV1RGTW92ZShzbmFwc2hvdCkpOwogfQogCiB2b2lkIFZpZXdTbmFwc2hvdFN0b3Jl
OjpkaXNjYXJkU25hcHNob3RJbWFnZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQppbmRleCBmYWEx
NTQzMDkyNjgzNDFhOTVlZjhhZTM2MjUyN2JlNGU2OGM3NmM2Li5mMmQ3YTkyN2Y2Yzk2MjcxOTBk
YjI4ZjQ0MWEzYzFhOGNiYjAxMzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQpAQCAtMjYzLDcg
KzI2Myw3IEBAIC0gKFBhc3NSZWZQdHI8QVBJOjpIaXRUZXN0UmVzdWx0Pilfd2ViSGl0VGVzdFJl
c3VsdAogICAgIGVsc2UKICAgICAgICAgaGl0VGVzdFJlc3VsdCA9IF9wYWdlLT5sYXN0TW91c2VN
b3ZlSGl0VGVzdFJlc3VsdCgpOwogCi0gICAgcmV0dXJuIGhpdFRlc3RSZXN1bHQucmVsZWFzZSgp
OworICAgIHJldHVybiBXVEZNb3ZlKGhpdFRlc3RSZXN1bHQpOwogfQogCiAjcHJhZ21hIG1hcmsg
SW1tZWRpYXRlIGFjdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvV0tQcmludGluZ1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLUHJp
bnRpbmdWaWV3Lm1tCmluZGV4IDdiOWQ4ODliMWQ0YTc1Y2M2ZDhkZTdmMjczMGRjYTkyZDVhNzE5
YjMuLjNiMTBjZTc1ZjE1ZWM2YjM5ZjExZTYwYTQ2MWI4NmNmNzg1YWU0NGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcubW0KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbQpAQCAtMzQwLDcgKzM0
MCw3IEBAIC0gKEJPT0wpX2Fza1BhZ2VUb0NvbXB1dGVQYWdlUmVjdHMKICAgICBBU1NFUlQoIV9l
eHBlY3RlZENvbXB1dGVkUGFnZXNDYWxsYmFjayk7CiAKICAgICBJUENDYWxsYmFja0NvbnRleHQq
IGNvbnRleHQgPSBuZXcgSVBDQ2FsbGJhY2tDb250ZXh0OwotICAgIFJlZlB0cjxDb21wdXRlZFBh
Z2VzQ2FsbGJhY2s+IGNhbGxiYWNrID0gQ29tcHV0ZWRQYWdlc0NhbGxiYWNrOjpjcmVhdGUoW2Nv
bnRleHRdKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgcGFnZVJlY3RzLCBkb3VibGUg
dG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3Ip
IHsKKyAgICBhdXRvIGNhbGxiYWNrID0gQ29tcHV0ZWRQYWdlc0NhbGxiYWNrOjpjcmVhdGUoW2Nv
bnRleHRdKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgcGFnZVJlY3RzLCBkb3VibGUg
dG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3Ip
IHsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElQQ0NhbGxiYWNrQ29udGV4dD4gY29udGV4dERl
bGV0ZXIoY29udGV4dCk7CiAgICAgICAgIHBhZ2VEaWRDb21wdXRlUGFnZVJlY3RzKHBhZ2VSZWN0
cywgdG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCBjb250ZXh0KTsKICAgICB9KTsKQEAgLTM0
OCw3ICszNDgsNyBAQCAtIChCT09MKV9hc2tQYWdlVG9Db21wdXRlUGFnZVJlY3RzCiAgICAgY29u
dGV4dC0+dmlldyA9IHNlbGY7CiAgICAgY29udGV4dC0+Y2FsbGJhY2tJRCA9IF9leHBlY3RlZENv
bXB1dGVkUGFnZXNDYWxsYmFjazsKIAotICAgIF93ZWJGcmFtZS0+cGFnZSgpLT5jb21wdXRlUGFn
ZXNGb3JQcmludGluZyhfd2ViRnJhbWUuZ2V0KCksIFByaW50SW5mbyhbX3ByaW50T3BlcmF0aW9u
IHByaW50SW5mb10pLCBjYWxsYmFjay5yZWxlYXNlKCkpOworICAgIF93ZWJGcmFtZS0+cGFnZSgp
LT5jb21wdXRlUGFnZXNGb3JQcmludGluZyhfd2ViRnJhbWUuZ2V0KCksIFByaW50SW5mbyhbX3By
aW50T3BlcmF0aW9uIHByaW50SW5mb10pLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgcmV0dXJu
IFlFUzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQ
YWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94
eU1hYy5tbQppbmRleCA0M2ZhNmYyMDY1ZDBjMTI5ZWRmZjEyYTM3YWUyOTFjY2Q0MmRmMmRkLi45
NWQwM2M5MjQwZWZlNTlkNThhMmVmMGM1MjIxYTI4MGViM2NkY2U5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMjcxLDggKzI3MSw4
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXBsYWNlU2VsZWN0aW9uV2l0aFBhc3RlYm9hcmREYXRh
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXREcmFnSW1hZ2UoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNs
aWVudFBvc2l0aW9uLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgZHJhZ0ltYWdlSGFu
ZGxlLCBib29sIGlzTGlua0RyYWcpCiB7Ci0gICAgaWYgKFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+
IGRyYWdJbWFnZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGRyYWdJbWFnZUhhbmRsZSkpCi0g
ICAgICAgIG1fcGFnZUNsaWVudC5zZXREcmFnSW1hZ2UoY2xpZW50UG9zaXRpb24sIGRyYWdJbWFn
ZS5yZWxlYXNlKCksIGlzTGlua0RyYWcpOworICAgIGlmIChhdXRvIGRyYWdJbWFnZSA9IFNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlKGRyYWdJbWFnZUhhbmRsZSkpCisgICAgICAgIG1fcGFnZUNsaWVu
dC5zZXREcmFnSW1hZ2UoY2xpZW50UG9zaXRpb24sIFdURk1vdmUoZHJhZ0ltYWdlKSwgaXNMaW5r
RHJhZyk7CiAKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkU3RhcnRE
cmFnKCksIG1fcGFnZUlEKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLm1tIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQ
cm9jZXNzUGx1Z0luRnJhbWUubW0KaW5kZXggZmRhZjY3NThkNmE1ZmQ0MzQ4YzY0ZDc0NDNmZjg0
NTk5YzViYjEzOC4uMzJkOGRjNzQ4YjUyZjViN2YzZGRmOTUyYjZiNGZiZTcyZjU2MDY5NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29j
b2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUubW0K
QEAgLTcxLDggKzcxLDggQEAgLSAoSlNDb250ZXh0ICopanNDb250ZXh0Rm9yV29ybGQ6KFdLV2Vi
UHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkICopd29ybGQKIAogLSAoV0tXZWJQcm9jZXNzUGx1Z0lu
SGl0VGVzdFJlc3VsdCAqKWhpdFRlc3Q6KENHUG9pbnQpcG9pbnQKIHsKLSAgICBSZWZQdHI8SW5q
ZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0PiBoaXRUZXN0UmVzdWx0ID0gX2ZyYW1lLT5oaXRUZXN0
KFdlYkNvcmU6OkludFBvaW50KHBvaW50KSk7Ci0gICAgcmV0dXJuIFt3cmFwcGVyKCpoaXRUZXN0
UmVzdWx0LnJlbGVhc2UoKS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIGhpdFRl
c3RSZXN1bHQgPSBfZnJhbWUtPmhpdFRlc3QoV2ViQ29yZTo6SW50UG9pbnQocG9pbnQpKTsKKyAg
ICByZXR1cm4gW3dyYXBwZXIoKmhpdFRlc3RSZXN1bHQubGVha1JlZigpKSBhdXRvcmVsZWFzZV07
CiB9CiAKIC0gKEpTVmFsdWUgKilqc05vZGVGb3JOb2RlSGFuZGxlOihXS1dlYlByb2Nlc3NQbHVn
SW5Ob2RlSGFuZGxlICopbm9kZUhhbmRsZSBpbldvcmxkOihXS1dlYlByb2Nlc3NQbHVnSW5TY3Jp
cHRXb3JsZCAqKXdvcmxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0Lm1t
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tX
ZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdC5tbQppbmRleCA1MWRlZWE4MTUzOTg2ZWEwMzFh
YTAyMTg5M2FjMjg0NTBjOTRkOTNmLi43ZWE4NmM5MTFlNGQ2NDJlNWZjNjMyNTYyNDNkMjJhNWMx
ZGEzMmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJv
Y2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHQubW0KQEAgLTQ0LDggKzQ0LDggQEAgLSAodm9pZClkZWFs
bG9jCiAKIC0gKFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUgKilub2RlSGFuZGxlCiB7Ci0g
ICAgUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gbm9kZUhhbmRsZSA9IF9oaXRUZXN0
UmVzdWx0LT5ub2RlSGFuZGxlKCk7Ci0gICAgcmV0dXJuIG5vZGVIYW5kbGUgPyBbd3JhcHBlcigq
bm9kZUhhbmRsZS5yZWxlYXNlKCkubGVha1JlZigpKSBhdXRvcmVsZWFzZV0gOiBuaWw7CisgICAg
YXV0byBub2RlSGFuZGxlID0gX2hpdFRlc3RSZXN1bHQtPm5vZGVIYW5kbGUoKTsKKyAgICByZXR1
cm4gbm9kZUhhbmRsZSA/IFt3cmFwcGVyKCpub2RlSGFuZGxlLmxlYWtSZWYoKSkgYXV0b3JlbGVh
c2VdIDogbmlsOwogfQogCiAjcHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9jb2wgaW1wbGVtZW50
YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVn
SW5Ob2RlSGFuZGxlLm1tCmluZGV4IDBiMWRmZGZmZTE1NzdiMjllY2Y2MmMzYjE1MmM4YzE5Nzdk
MjAzNDcuLjdiMjg3ZmM3NTRkYzJjYjhkYzE0NGJjYmI3NDFjYTRiYzE2ZjFkNTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dL
V2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRs
ZS5tbQpAQCAtNDgsMjAgKzQ4LDIwIEBAICsgKFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUg
Kilub2RlSGFuZGxlV2l0aEpTVmFsdWU6KEpTVmFsdWUgKil2YWx1ZSBpbkNvbnRlCiB7CiAgICAg
SlNDb250ZXh0UmVmIGNvbnRleHRSZWYgPSBbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdOwog
ICAgIEpTT2JqZWN0UmVmIG9iamVjdFJlZiA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0UmVmLCBb
dmFsdWUgSlNWYWx1ZVJlZl0sIDApOwotICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5k
bGU+IG5vZGVIYW5kbGUgPSBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmdldE9yQ3JlYXRlKGNv
bnRleHRSZWYsIG9iamVjdFJlZik7CisgICAgYXV0byBub2RlSGFuZGxlID0gSW5qZWN0ZWRCdW5k
bGVOb2RlSGFuZGxlOjpnZXRPckNyZWF0ZShjb250ZXh0UmVmLCBvYmplY3RSZWYpOwogICAgIGlm
ICghbm9kZUhhbmRsZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiBbd3JhcHBl
cigqbm9kZUhhbmRsZS5yZWxlYXNlKCkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CisgICAgcmV0
dXJuIFt3cmFwcGVyKCpub2RlSGFuZGxlLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOwogfQogCiAt
IChXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSAqKWh0bWxJRnJhbWVFbGVtZW50Q29udGVudEZyYW1l
CiB7Ci0gICAgUmVmUHRyPFdlYkZyYW1lPiBmcmFtZSA9IF9ub2RlSGFuZGxlLT5odG1sSUZyYW1l
RWxlbWVudENvbnRlbnRGcmFtZSgpOworICAgIGF1dG8gZnJhbWUgPSBfbm9kZUhhbmRsZS0+aHRt
bElGcmFtZUVsZW1lbnRDb250ZW50RnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICBy
ZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIFt3cmFwcGVyKCpmcmFtZS5yZWxlYXNlKCkubGVha1Jl
ZigpKSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIFt3cmFwcGVyKCpmcmFtZS5sZWFrUmVmKCkp
IGF1dG9yZWxlYXNlXTsKIH0KIAogI2lmIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vz
c1BsdWdJblNjcmlwdFdvcmxkLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQubW0KaW5kZXgg
NmMxMDYxZGQ4MDM0OTFmNDdlZTkzM2UwYTk3NGQzZDJkY2YzMmVkZi4uMWFlYzBiOTIyZWUzZWVk
OWI0YTIxZGQ3NTYyNmE2Zjg1OGM0NjE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0
V29ybGQubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQubW0KQEAgLTM2LDggKzM2LDgg
QEAgQGltcGxlbWVudGF0aW9uIFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkIHsKIAogKyAo
V0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgKil3b3JsZAogewotICAgIFJlZlB0cjxJbmpl
Y3RlZEJ1bmRsZVNjcmlwdFdvcmxkPiBzY3JpcHRXb3JsZCA9IEluamVjdGVkQnVuZGxlU2NyaXB0
V29ybGQ6OmNyZWF0ZSgpOwotICAgIHJldHVybiBbd3JhcHBlcigqc2NyaXB0V29ybGQucmVsZWFz
ZSgpLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOworICAgIGF1dG8gc2NyaXB0V29ybGQgPSBJbmpl
Y3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpjcmVhdGUoKTsKKyAgICByZXR1cm4gW3dyYXBwZXIoc2Ny
aXB0V29ybGQubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CiB9CiAKICsgKFdLV2ViUHJvY2Vzc1Bs
dWdJblNjcmlwdFdvcmxkICopbm9ybWFsV29ybGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKaW5kZXgg
ODViOGY5MjJmMWVjMGMxMmVjZDQzMDFlNGEwOGJlZWU1YjQwZjdmMi4uZTg4NTNkYmQwNjI3YjY5
ZGM0OTg0OTBmY2VjNWJkOGQzNzEwYzUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKQEAgLTYy
LDcgKzYyLDcgQEAgdm9pZCBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoV0tCdW5kbGVS
ZWYgYnVuZGxlUmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmEKICAgICBSZWZQdHI8QVBJOjpPYmpl
Y3Q+IHJldHVybkRhdGE7CiAgICAgdG9JbXBsKGJ1bmRsZVJlZiktPnBvc3RTeW5jaHJvbm91c01l
c3NhZ2UodG9XVEZTdHJpbmcobWVzc2FnZU5hbWVSZWYpLCB0b0ltcGwobWVzc2FnZUJvZHlSZWYp
LCByZXR1cm5EYXRhKTsKICAgICBpZiAocmV0dXJuRGF0YVJlZikKLSAgICAgICAgKnJldHVybkRh
dGFSZWYgPSB0b0FQSShyZXR1cm5EYXRhLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgICAgICAq
cmV0dXJuRGF0YVJlZiA9IHRvQVBJKHJldHVybkRhdGEubGVha1JlZigpKTsKIH0KIAogV0tDb25u
ZWN0aW9uUmVmIFdLQnVuZGxlR2V0QXBwbGljYXRpb25Db25uZWN0aW9uKFdLQnVuZGxlUmVmIGJ1
bmRsZVJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZURPTVdpbmRvd0V4dGVu
c2lvbi5jcHAKaW5kZXggYjY2MGU4MTVmYjU3NWFkN2U0YzZhNTE4M2M4MzljZWU1NzU4NTQ3OS4u
ZmMzODFmNDZhNjQxZmEwNzc1YzNlNTQ2NDg2MGQ5ZTA0ZjQ4M2UyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZURPTVdp
bmRvd0V4dGVuc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5jcHAKQEAgLTQxLDcgKzQx
LDcgQEAgV0tUeXBlSUQgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25HZXRUeXBlSUQoKQogV0tC
dW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25DcmVh
dGUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiB3b3JsZCkK
IHsKICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24+IGV4dGVuc2lv
biA9IEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uOjpjcmVhdGUodG9JbXBsKGZyYW1l
KSwgdG9JbXBsKHdvcmxkKSk7Ci0gICAgcmV0dXJuIHRvQVBJKGV4dGVuc2lvbi5yZWxlYXNlKCku
bGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkoZXh0ZW5zaW9uLmxlYWtSZWYoKSk7CiB9CiAK
IFdLQnVuZGxlRnJhbWVSZWYgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25HZXRGcmFtZShXS0J1
bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZiBleHRlbnNpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSGl0VGVzdFJl
c3VsdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggNDZmNjk5OTI2YTIxNWE4N2RhYzExOGFl
ZmUwNTY0ZTZiYTI3NzRmNS4uMmU0YTdiNjMxZDEzMWNhMTc2ZGM0ZDFiMTgxNWQ4ODE5ZjYwOTY4
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZUhpdFRlc3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcApAQCAt
NDIsMTMgKzQyLDEzIEBAIFdLVHlwZUlEIFdLQnVuZGxlSGl0VGVzdFJlc3VsdEdldFR5cGVJRCgp
CiBXS0J1bmRsZU5vZGVIYW5kbGVSZWYgV0tCdW5kbGVIaXRUZXN0UmVzdWx0Q29weU5vZGVIYW5k
bGUoV0tCdW5kbGVIaXRUZXN0UmVzdWx0UmVmIGhpdFRlc3RSZXN1bHRSZWYpCiB7CiAgICAgUmVm
UHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gbm9kZUhhbmRsZSA9IHRvSW1wbChoaXRUZXN0
UmVzdWx0UmVmKS0+bm9kZUhhbmRsZSgpOwotICAgIHJldHVybiB0b0FQSShub2RlSGFuZGxlLnJl
bGVhc2UoKS5sZWFrUmVmKCkpOworICAgIHJldHVybiB0b0FQSShub2RlSGFuZGxlLmxlYWtSZWYo
KSk7CiB9CiAKIFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBXS0J1bmRsZUhpdFRlc3RSZXN1bHRDb3B5
VVJMRWxlbWVudEhhbmRsZShXS0J1bmRsZUhpdFRlc3RSZXN1bHRSZWYgaGl0VGVzdFJlc3VsdFJl
ZikKIHsKICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiB1cmxFbGVtZW50Tm9k
ZUhhbmRsZSA9IHRvSW1wbChoaXRUZXN0UmVzdWx0UmVmKS0+dXJsRWxlbWVudEhhbmRsZSgpOwot
ICAgIHJldHVybiB0b0FQSSh1cmxFbGVtZW50Tm9kZUhhbmRsZS5yZWxlYXNlKCkubGVha1JlZigp
KTsKKyAgICByZXR1cm4gdG9BUEkodXJsRWxlbWVudE5vZGVIYW5kbGUubGVha1JlZigpKTsKIH0K
IAogV0tCdW5kbGVGcmFtZVJlZiBXS0J1bmRsZUhpdFRlc3RSZXN1bHRHZXRGcmFtZShXS0J1bmRs
ZUhpdFRlc3RSZXN1bHRSZWYgaGl0VGVzdFJlc3VsdFJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOYXZpZ2F0aW9u
QWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcAppbmRleCBlZTg5ODI3M2ZjZDNhZjI5NWQy
MmE0YjZlNWU5NGY5ZTQ3ZjRmZTA1Li5hM2MzNjNlMTk0MmNlYzA0Nzk1NWY5MmIwMzI3MGE5NTZk
YWZlOTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5hdmlnYXRpb25BY3Rp
b24uY3BwCkBAIC01OCwxMyArNTgsMTMgQEAgV0tFdmVudE1vdXNlQnV0dG9uIFdLQnVuZGxlTmF2
aWdhdGlvbkFjdGlvbkdldEV2ZW50TW91c2VCdXR0b24oV0tCdW5kbGVOYXZpZ2F0aW8KIFdLQnVu
ZGxlSGl0VGVzdFJlc3VsdFJlZiBXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb25Db3B5SGl0VGVzdFJl
c3VsdChXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb25SZWYgbmF2aWdhdGlvbkFjdGlvblJlZikKIHsK
ICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0PiBoaXRUZXN0UmVzdWx0ID0g
dG9JbXBsKG5hdmlnYXRpb25BY3Rpb25SZWYpLT5oaXRUZXN0UmVzdWx0KCk7Ci0gICAgcmV0dXJu
IHRvQVBJKGhpdFRlc3RSZXN1bHQucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRv
QVBJKGhpdFRlc3RSZXN1bHQubGVha1JlZigpKTsKIH0KIAogV0tCdW5kbGVOb2RlSGFuZGxlUmVm
IFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbkNvcHlGb3JtRWxlbWVudChXS0J1bmRsZU5hdmlnYXRp
b25BY3Rpb25SZWYgbmF2aWdhdGlvbkFjdGlvblJlZikKIHsKICAgICBSZWZQdHI8SW5qZWN0ZWRC
dW5kbGVOb2RlSGFuZGxlPiBmb3JtRWxlbWVudCA9IHRvSW1wbChuYXZpZ2F0aW9uQWN0aW9uUmVm
KS0+Zm9ybUVsZW1lbnQoKTsKLSAgICByZXR1cm4gdG9BUEkoZm9ybUVsZW1lbnQucmVsZWFzZSgp
LmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKGZvcm1FbGVtZW50LmxlYWtSZWYoKSk7CiB9
CiAKIGJvb2wgV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uR2V0U2hvdWxkT3BlbkV4dGVybmFsVVJM
cyhXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb25SZWYgbmF2aWdhdGlvbkFjdGlvblJlZikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVOb2RlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxlLmNwcAppbmRleCBlZTRmMzYyMjQ1NGI5MTc1
MDM3M2NmODRlZDY0MDU3NDI5MzlhN2NmLi40NmNmYTM0YTA4MGVlNWFmNGVlMDg4NzNlYjRjMzg4
NzczMjQzYjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlTm9kZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5vZGVIYW5kbGUuY3BwCkBA
IC01OSwxMyArNTksMTMgQEAgV0tUeXBlSUQgV0tCdW5kbGVOb2RlSGFuZGxlR2V0VHlwZUlEKCkK
IFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBXS0J1bmRsZU5vZGVIYW5kbGVDcmVhdGUoSlNDb250ZXh0
UmVmIGNvbnRleHRSZWYsIEpTT2JqZWN0UmVmIG9iamVjdFJlZikKIHsKICAgICBSZWZQdHI8SW5q
ZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBub2RlSGFuZGxlID0gSW5qZWN0ZWRCdW5kbGVOb2RlSGFu
ZGxlOjpnZXRPckNyZWF0ZShjb250ZXh0UmVmLCBvYmplY3RSZWYpOwotICAgIHJldHVybiB0b0FQ
SShub2RlSGFuZGxlLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgIHJldHVybiB0b0FQSShub2Rl
SGFuZGxlLmxlYWtSZWYoKSk7CiB9CiAKIFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBXS0J1bmRsZU5v
ZGVIYW5kbGVDb3B5RG9jdW1lbnQoV0tCdW5kbGVOb2RlSGFuZGxlUmVmIG5vZGVIYW5kbGVSZWYp
CiB7CiAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gbm9kZUhhbmRsZSA9IHRv
SW1wbChub2RlSGFuZGxlUmVmKS0+ZG9jdW1lbnQoKTsKLSAgICByZXR1cm4gdG9BUEkobm9kZUhh
bmRsZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkobm9kZUhhbmRsZS5s
ZWFrUmVmKCkpOwogfQogCiBXS1JlY3QgV0tCdW5kbGVOb2RlSGFuZGxlR2V0UmVuZGVyUmVjdChX
S0J1bmRsZU5vZGVIYW5kbGVSZWYgbm9kZUhhbmRsZVJlZiwgYm9vbCogaXNSZXBsYWNlZCkKQEAg
LTc2LDEzICs3NiwxMyBAQCBXS1JlY3QgV0tCdW5kbGVOb2RlSGFuZGxlR2V0UmVuZGVyUmVjdChX
S0J1bmRsZU5vZGVIYW5kbGVSZWYgbm9kZUhhbmRsZVJlZiwgYm9vbAogV0tJbWFnZVJlZiBXS0J1
bmRsZU5vZGVIYW5kbGVDb3B5U25hcHNob3RXaXRoT3B0aW9ucyhXS0J1bmRsZU5vZGVIYW5kbGVS
ZWYgbm9kZUhhbmRsZVJlZiwgV0tTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucykKIHsKICAgICBSZWZQ
dHI8V2ViSW1hZ2U+IGltYWdlID0gdG9JbXBsKG5vZGVIYW5kbGVSZWYpLT5yZW5kZXJlZEltYWdl
KHRvU25hcHNob3RPcHRpb25zKG9wdGlvbnMpKTsKLSAgICByZXR1cm4gdG9BUEkoaW1hZ2UucmVs
ZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKGltYWdlLmxlYWtSZWYoKSk7CiB9
CiAKIFdLQnVuZGxlUmFuZ2VIYW5kbGVSZWYgV0tCdW5kbGVOb2RlSGFuZGxlQ29weVZpc2libGVS
YW5nZShXS0J1bmRsZU5vZGVIYW5kbGVSZWYgbm9kZUhhbmRsZVJlZikKIHsKICAgICBSZWZQdHI8
SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gcmFuZ2VIYW5kbGUgPSB0b0ltcGwobm9kZUhhbmRs
ZVJlZiktPnZpc2libGVSYW5nZSgpOwotICAgIHJldHVybiB0b0FQSShyYW5nZUhhbmRsZS5yZWxl
YXNlKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkocmFuZ2VIYW5kbGUubGVha1JlZigp
KTsKIH0KIAogV0tSZWN0IFdLQnVuZGxlTm9kZUhhbmRsZUdldEVsZW1lbnRCb3VuZHMoV0tCdW5k
bGVOb2RlSGFuZGxlUmVmIGVsZW1lbnRIYW5kbGVSZWYpCkBAIC0xMzgsMjUgKzEzOCwyNSBAQCBi
b29sIFdLQnVuZGxlTm9kZUhhbmRsZUdldEhUTUxUZXh0QXJlYUVsZW1lbnRMYXN0Q2hhbmdlV2Fz
VXNlckVkaXQoV0tCdW5kbGVOb2RlSAogV0tCdW5kbGVOb2RlSGFuZGxlUmVmIFdLQnVuZGxlTm9k
ZUhhbmRsZUNvcHlIVE1MVGFibGVDZWxsRWxlbWVudENlbGxBYm92ZShXS0J1bmRsZU5vZGVIYW5k
bGVSZWYgaHRtbFRhYmxlQ2VsbEVsZW1lbnRIYW5kbGVSZWYpCiB7CiAgICAgUmVmUHRyPEluamVj
dGVkQnVuZGxlTm9kZUhhbmRsZT4gbm9kZUhhbmRsZSA9IHRvSW1wbChodG1sVGFibGVDZWxsRWxl
bWVudEhhbmRsZVJlZiktPmh0bWxUYWJsZUNlbGxFbGVtZW50Q2VsbEFib3ZlKCk7Ci0gICAgcmV0
dXJuIHRvQVBJKG5vZGVIYW5kbGUucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRv
QVBJKG5vZGVIYW5kbGUubGVha1JlZigpKTsKIH0KIAogV0tCdW5kbGVGcmFtZVJlZiBXS0J1bmRs
ZU5vZGVIYW5kbGVDb3B5RG9jdW1lbnRGcmFtZShXS0J1bmRsZU5vZGVIYW5kbGVSZWYgZG9jdW1l
bnRIYW5kbGVSZWYpCiB7CiAgICAgUmVmUHRyPFdlYkZyYW1lPiBmcmFtZSA9IHRvSW1wbChkb2N1
bWVudEhhbmRsZVJlZiktPmRvY3VtZW50RnJhbWUoKTsKLSAgICByZXR1cm4gdG9BUEkoZnJhbWUu
cmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKGZyYW1lLmxlYWtSZWYoKSk7
CiB9CiAKIFdLQnVuZGxlRnJhbWVSZWYgV0tCdW5kbGVOb2RlSGFuZGxlQ29weUhUTUxGcmFtZUVs
ZW1lbnRDb250ZW50RnJhbWUoV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGh0bWxGcmFtZUVsZW1lbnRI
YW5kbGVSZWYpCiB7CiAgICAgUmVmUHRyPFdlYkZyYW1lPiBmcmFtZSA9IHRvSW1wbChodG1sRnJh
bWVFbGVtZW50SGFuZGxlUmVmKS0+aHRtbEZyYW1lRWxlbWVudENvbnRlbnRGcmFtZSgpOwotICAg
IHJldHVybiB0b0FQSShmcmFtZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9B
UEkoZnJhbWUubGVha1JlZigpKTsKIH0KIAogV0tCdW5kbGVGcmFtZVJlZiBXS0J1bmRsZU5vZGVI
YW5kbGVDb3B5SFRNTElGcmFtZUVsZW1lbnRDb250ZW50RnJhbWUoV0tCdW5kbGVOb2RlSGFuZGxl
UmVmIGh0bWxJRnJhbWVFbGVtZW50SGFuZGxlUmVmKQogewogICAgIFJlZlB0cjxXZWJGcmFtZT4g
ZnJhbWUgPSB0b0ltcGwoaHRtbElGcmFtZUVsZW1lbnRIYW5kbGVSZWYpLT5odG1sSUZyYW1lRWxl
bWVudENvbnRlbnRGcmFtZSgpOwotICAgIHJldHVybiB0b0FQSShmcmFtZS5yZWxlYXNlKCkubGVh
a1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkoZnJhbWUubGVha1JlZigpKTsKIH0KIAogLy8gRGVw
cmVjYXRlZCAtIHVzZSBXS0J1bmRsZU5vZGVIYW5kbGVHZXRIVE1MSW5wdXRFbGVtZW50QXV0b0Zp
bGxlZChXS0J1bmRsZU5vZGVIYW5kbGVSZWYpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3Bw
CmluZGV4IDE3ZTIxYWZjMzNiNjhlZmUzZDg3NTgzMDhiZDgxYzYwYzNmODA5NTUuLmUxOGRhOTE0
ZmMyMGRlZWRlYTZjMWY5NjdkOGYzNDkwNDc3NDA2OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UGFnZS5jcHAKQEAgLTQzNCw3ICs0MzQsNyBAQCBib29sIFdLQnVuZGxlUGFnZUZpbmRTdHJpbmco
V0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHRhcmdldCwgV0tGaW5kTwogV0tJ
bWFnZVJlZiBXS0J1bmRsZVBhZ2VDcmVhdGVTbmFwc2hvdFdpdGhPcHRpb25zKFdLQnVuZGxlUGFn
ZVJlZiBwYWdlUmVmLCBXS1JlY3QgcmVjdCwgV0tTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucykKIHsK
ICAgICBSZWZQdHI8V2ViSW1hZ2U+IHdlYkltYWdlID0gdG9JbXBsKHBhZ2VSZWYpLT5zY2FsZWRT
bmFwc2hvdFdpdGhPcHRpb25zKHRvSW50UmVjdChyZWN0KSwgMSwgdG9TbmFwc2hvdE9wdGlvbnMo
b3B0aW9ucykpOwotICAgIHJldHVybiB0b0FQSSh3ZWJJbWFnZS5yZWxlYXNlKCkubGVha1JlZigp
KTsKKyAgICByZXR1cm4gdG9BUEkod2ViSW1hZ2UubGVha1JlZigpKTsKIH0KIAogV0tJbWFnZVJl
ZiBXS0J1bmRsZVBhZ2VDcmVhdGVTbmFwc2hvdEluVmlld0Nvb3JkaW5hdGVzKFdLQnVuZGxlUGFn
ZVJlZiBwYWdlUmVmLCBXS1JlY3QgcmVjdCwgV0tJbWFnZU9wdGlvbnMgb3B0aW9ucykKQEAgLTQ0
MiwxOSArNDQyLDE5IEBAIFdLSW1hZ2VSZWYgV0tCdW5kbGVQYWdlQ3JlYXRlU25hcHNob3RJblZp
ZXdDb29yZGluYXRlcyhXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwKICAgICBTbmFwc2hvdE9wdGlv
bnMgc25hcHNob3RPcHRpb25zID0gc25hcHNob3RPcHRpb25zRnJvbUltYWdlT3B0aW9ucyhvcHRp
b25zKTsKICAgICBzbmFwc2hvdE9wdGlvbnMgfD0gU25hcHNob3RPcHRpb25zSW5WaWV3Q29vcmRp
bmF0ZXM7CiAgICAgUmVmUHRyPFdlYkltYWdlPiB3ZWJJbWFnZSA9IHRvSW1wbChwYWdlUmVmKS0+
c2NhbGVkU25hcHNob3RXaXRoT3B0aW9ucyh0b0ludFJlY3QocmVjdCksIDEsIHNuYXBzaG90T3B0
aW9ucyk7Ci0gICAgcmV0dXJuIHRvQVBJKHdlYkltYWdlLnJlbGVhc2UoKS5sZWFrUmVmKCkpOwor
ICAgIHJldHVybiB0b0FQSSh3ZWJJbWFnZS5sZWFrUmVmKCkpOwogfQogCiBXS0ltYWdlUmVmIFdL
QnVuZGxlUGFnZUNyZWF0ZVNuYXBzaG90SW5Eb2N1bWVudENvb3JkaW5hdGVzKFdLQnVuZGxlUGFn
ZVJlZiBwYWdlUmVmLCBXS1JlY3QgcmVjdCwgV0tJbWFnZU9wdGlvbnMgb3B0aW9ucykKIHsKICAg
ICBSZWZQdHI8V2ViSW1hZ2U+IHdlYkltYWdlID0gdG9JbXBsKHBhZ2VSZWYpLT5zY2FsZWRTbmFw
c2hvdFdpdGhPcHRpb25zKHRvSW50UmVjdChyZWN0KSwgMSwgc25hcHNob3RPcHRpb25zRnJvbUlt
YWdlT3B0aW9ucyhvcHRpb25zKSk7Ci0gICAgcmV0dXJuIHRvQVBJKHdlYkltYWdlLnJlbGVhc2Uo
KS5sZWFrUmVmKCkpOworICAgIHJldHVybiB0b0FQSSh3ZWJJbWFnZS5sZWFrUmVmKCkpOwogfQog
CiBXS0ltYWdlUmVmIFdLQnVuZGxlUGFnZUNyZWF0ZVNjYWxlZFNuYXBzaG90SW5Eb2N1bWVudENv
b3JkaW5hdGVzKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS1JlY3QgcmVjdCwgZG91YmxlIHNj
YWxlRmFjdG9yLCBXS0ltYWdlT3B0aW9ucyBvcHRpb25zKQogewogICAgIFJlZlB0cjxXZWJJbWFn
ZT4gd2ViSW1hZ2UgPSB0b0ltcGwocGFnZVJlZiktPnNjYWxlZFNuYXBzaG90V2l0aE9wdGlvbnMo
dG9JbnRSZWN0KHJlY3QpLCBzY2FsZUZhY3Rvciwgc25hcHNob3RPcHRpb25zRnJvbUltYWdlT3B0
aW9ucyhvcHRpb25zKSk7Ci0gICAgcmV0dXJuIHRvQVBJKHdlYkltYWdlLnJlbGVhc2UoKS5sZWFr
UmVmKCkpOworICAgIHJldHVybiB0b0FQSSh3ZWJJbWFnZS5sZWFrUmVmKCkpOwogfQogCiBkb3Vi
bGUgV0tCdW5kbGVQYWdlR2V0QmFja2luZ1NjYWxlRmFjdG9yKFdLQnVuZGxlUGFnZVJlZiBwYWdl
UmVmKQpAQCAtNjI0LDcgKzYyNCw3IEBAIHZvaWQgV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9ub3Vz
TWVzc2FnZUZvclRlc3RpbmcoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyCiAgICAgUmVm
UHRyPEFQSTo6T2JqZWN0PiByZXR1cm5EYXRhOwogICAgIHBhZ2UtPnBvc3RTeW5jaHJvbm91c01l
c3NhZ2VGb3JUZXN0aW5nKHRvV1RGU3RyaW5nKG1lc3NhZ2VOYW1lUmVmKSwgdG9JbXBsKG1lc3Nh
Z2VCb2R5UmVmKSwgcmV0dXJuRGF0YSk7CiAgICAgaWYgKHJldHVybkRhdGFSZWYpCi0gICAgICAg
ICpyZXR1cm5EYXRhUmVmID0gdG9BUEkocmV0dXJuRGF0YS5yZWxlYXNlKCkubGVha1JlZigpKTsK
KyAgICAgICAgKnJldHVybkRhdGFSZWYgPSB0b0FQSShyZXR1cm5EYXRhLmxlYWtSZWYoKSk7CiB9
CiAKIHZvaWQgV0tCdW5kbGVQYWdlQWRkVXNlclNjcmlwdChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJl
ZiwgV0tTdHJpbmdSZWYgc291cmNlLCBfV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rp
b25UaW1lLCBXS1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlUmFuZ2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVJhbmdlSGFuZGxlLmNwcAppbmRleCA3M2I4OGMxMzQwNjMz
YzY5MDgxOGQ0OGMzNDFlYTU2OTlhODE3ZWMwLi40MzcxN2M5MTVkMDYyYjNkNGE0YjdkZjBlZjMx
YzNmNTY2MWU1NDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVSYW5nZUhhbmRsZS5j
cHAKQEAgLTQzLDcgKzQzLDcgQEAgV0tUeXBlSUQgV0tCdW5kbGVSYW5nZUhhbmRsZUdldFR5cGVJ
RCgpCiBXS0J1bmRsZVJhbmdlSGFuZGxlUmVmIFdLQnVuZGxlUmFuZ2VIYW5kbGVDcmVhdGUoSlND
b250ZXh0UmVmIGNvbnRleHRSZWYsIEpTT2JqZWN0UmVmIG9iamVjdFJlZikKIHsKICAgICBSZWZQ
dHI8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gcmFuZ2VIYW5kbGUgPSBJbmplY3RlZEJ1bmRs
ZVJhbmdlSGFuZGxlOjpnZXRPckNyZWF0ZShjb250ZXh0UmVmLCBvYmplY3RSZWYpOwotICAgIHJl
dHVybiB0b0FQSShyYW5nZUhhbmRsZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4g
dG9BUEkocmFuZ2VIYW5kbGUubGVha1JlZigpKTsKIH0KIAogV0tSZWN0IFdLQnVuZGxlUmFuZ2VI
YW5kbGVHZXRCb3VuZGluZ1JlY3RJbldpbmRvd0Nvb3JkaW5hdGVzKFdLQnVuZGxlUmFuZ2VIYW5k
bGVSZWYgcmFuZ2VIYW5kbGVSZWYpCkBAIC01NSw1ICs1NSw1IEBAIFdLUmVjdCBXS0J1bmRsZVJh
bmdlSGFuZGxlR2V0Qm91bmRpbmdSZWN0SW5XaW5kb3dDb29yZGluYXRlcyhXS0J1bmRsZVJhbmdl
SGFuZGxlCiBXS0ltYWdlUmVmIFdLQnVuZGxlUmFuZ2VIYW5kbGVDb3B5U25hcHNob3RXaXRoT3B0
aW9ucyhXS0J1bmRsZVJhbmdlSGFuZGxlUmVmIHJhbmdlSGFuZGxlUmVmLCBXS1NuYXBzaG90T3B0
aW9ucyBvcHRpb25zKQogewogICAgIFJlZlB0cjxXZWJJbWFnZT4gaW1hZ2UgPSB0b0ltcGwocmFu
Z2VIYW5kbGVSZWYpLT5yZW5kZXJlZEltYWdlKHRvU25hcHNob3RPcHRpb25zKG9wdGlvbnMpKTsK
LSAgICByZXR1cm4gdG9BUEkoaW1hZ2UucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJu
IHRvQVBJKGltYWdlLmxlYWtSZWYoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlU2NyaXB0V29ybGQuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVNj
cmlwdFdvcmxkLmNwcAppbmRleCA2ZGEwY2MwZTY3NWZjZTM0NWNiNDI3MjQwOGE2ODIyZDA4N2Vm
M2E0Li5iN2JkOGIzMDJiMzE3MmUxZmUzYmM4Y2JjNTM5YjhhZjkwNjI0YWUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
U2NyaXB0V29ybGQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVTY3JpcHRXb3JsZC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgV0tU
eXBlSUQgV0tCdW5kbGVTY3JpcHRXb3JsZEdldFR5cGVJRCgpCiBXS0J1bmRsZVNjcmlwdFdvcmxk
UmVmIFdLQnVuZGxlU2NyaXB0V29ybGRDcmVhdGVXb3JsZCgpCiB7CiAgICAgUmVmUHRyPEluamVj
dGVkQnVuZGxlU2NyaXB0V29ybGQ+IHdvcmxkID0gSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6
Y3JlYXRlKCk7Ci0gICAgcmV0dXJuIHRvQVBJKHdvcmxkLnJlbGVhc2UoKS5sZWFrUmVmKCkpOwor
ICAgIHJldHVybiB0b0FQSSh3b3JsZC5sZWFrUmVmKCkpOwogfQogCiBXS0J1bmRsZVNjcmlwdFdv
cmxkUmVmIFdLQnVuZGxlU2NyaXB0V29ybGROb3JtYWxXb3JsZCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Ob2RlLm1t
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9N
Tm9kZS5tbQppbmRleCA3MTIyYzNmZDk3ZDYzOGE5MGY2MjA3ZGQyYmQ3ZTVlOTI3Y2E3YTkyLi40
OWI0Y2I5Y2FlYmI5ZGYwMTQyNmY5NWY5N2U2MzY5YmZiMjJhY2ZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Ob2RlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9X
S0RPTU5vZGUubW0KQEAgLTEyOSw4ICsxMjksOCBAQCBAaW1wbGVtZW50YXRpb24gV0tET01Ob2Rl
IChXS1ByaXZhdGUpCiAKIC0gKFdLQnVuZGxlTm9kZUhhbmRsZVJlZilfY29weUJ1bmRsZU5vZGVI
YW5kbGVSZWYKIHsKLSAgICBSZWZQdHI8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+
IG5vZGVIYW5kbGUgPSBXZWJLaXQ6OkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6Z2V0T3JDcmVh
dGUoX2ltcGwuZ2V0KCkpOwotICAgIHJldHVybiB0b0FQSShub2RlSGFuZGxlLnJlbGVhc2UoKS5s
ZWFrUmVmKCkpOworICAgIGF1dG8gbm9kZUhhbmRsZSA9IFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVO
b2RlSGFuZGxlOjpnZXRPckNyZWF0ZShfaW1wbC5nZXQoKSk7CisgICAgcmV0dXJuIHRvQVBJKG5v
ZGVIYW5kbGUubGVha1JlZigpKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01SYW5nZS5t
bQppbmRleCAxNjVkYTA2NDM0MzIxNWRjNmI5ZjAwMWNlNjA1NTcxMGVlZjZjYjY3Li4wZjA4ZDg0
ODEwMTg4OWE1MGI1ZjExMTY4OWE1NzZmMTU4MWQ1MTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01SYW5nZS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01S
YW5nZS5tbQpAQCAtMTU2LDggKzE1Niw4IEBAIEBpbXBsZW1lbnRhdGlvbiBXS0RPTVJhbmdlIChX
S1ByaXZhdGUpCiAKIC0gKFdLQnVuZGxlUmFuZ2VIYW5kbGVSZWYpX2NvcHlCdW5kbGVSYW5nZUhh
bmRsZVJlZgogewotICAgIFJlZlB0cjxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+
IHJhbmdlSGFuZGxlID0gV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpnZXRPckNy
ZWF0ZShfaW1wbC5nZXQoKSk7Ci0gICAgcmV0dXJuIHRvQVBJKHJhbmdlSGFuZGxlLnJlbGVhc2Uo
KS5sZWFrUmVmKCkpOworICAgIGF1dG8gcmFuZ2VIYW5kbGUgPSBXZWJLaXQ6OkluamVjdGVkQnVu
ZGxlUmFuZ2VIYW5kbGU6OmdldE9yQ3JlYXRlKF9pbXBsLmdldCgpKTsKKyAgICByZXR1cm4gdG9B
UEkocmFuZ2VIYW5kbGUubGVha1JlZigpKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVDU1NT
dHlsZURlY2xhcmF0aW9uSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZS5j
cHAKaW5kZXggYWMxMWQxMWE3ODY2NDJhZjczOTlmZjUwOWU4ZjdjNWNkMWU2OGNlMi4uMmE4ZjE3
YTRhY2Y4NmIyNzc5MmRiZGUzN2Q3M2ZiMDViNWI2MDc2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVDU1NTdHls
ZURlY2xhcmF0aW9uSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25IYW5kbGUu
Y3BwCkBAIC01MSw5ICs1MSw5IEBAIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURl
Y2xhcmF0aW9uSGFuZGxlPiBJbmplY3RlZEJ1bmRsZUNTU1N0eWxlRGVjbGFyCiAgICAgaWYgKCFy
ZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5k
bGVDU1NTdHlsZURlY2xhcmF0aW9uSGFuZGxlPihyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKIAot
ICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25IYW5kbGU+IHN0eWxl
RGVjbGFyYXRpb25IYW5kbGUgPSBhZG9wdFJlZihuZXcgSW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURl
Y2xhcmF0aW9uSGFuZGxlKCpzdHlsZURlY2xhcmF0aW9uKSk7Ci0gICAgcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSA9IHN0eWxlRGVjbGFyYXRpb25IYW5kbGUuZ2V0KCk7Ci0gICAgcmV0dXJuIHN0eWxl
RGVjbGFyYXRpb25IYW5kbGUucmVsZWFzZSgpOworICAgIGF1dG8gc3R5bGVEZWNsYXJhdGlvbkhh
bmRsZSA9IGFkb3B0UmVmKCpuZXcgSW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uSGFu
ZGxlKCpzdHlsZURlY2xhcmF0aW9uKSk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0
eWxlRGVjbGFyYXRpb25IYW5kbGUucHRyKCk7CisgICAgcmV0dXJuIFdURk1vdmUoc3R5bGVEZWNs
YXJhdGlvbkhhbmRsZSk7CiB9CiAKIEluamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhh
bmRsZTo6SW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uSGFuZGxlKENTU1N0eWxlRGVj
bGFyYXRpb24mIHN0eWxlRGVjbGFyYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRC
dW5kbGVOb2RlSGFuZGxlLmNwcAppbmRleCAyZWIyZGIzYjI5N2VlNjJhOTM0YTk3ZmRmYzljODM1
YjhkZDZjNjY5Li5jZmU5OTA2NDI3MWRkZjc4ZDVjNjkzMjRjNjI5ZTdlMWUyNWI5Y2EwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9Jbmpl
Y3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKQEAgLTE0MCw3
ICsxNDAsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxXZWJJbWFnZT4gaW1hZ2VGb3JSZWN0KEZyYW1l
VmlldyogZnJhbWVWaWV3LCBjb25zdCBJbnRSZWN0JiByZQogICAgIGZsb2F0IHNjYWxlRmFjdG9y
ID0gZnJhbWVWaWV3LT5mcmFtZSgpLnBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKICAgICBi
aXRtYXBTaXplLnNjYWxlKHNjYWxlRmFjdG9yKTsKIAotICAgIFJlZlB0cjxXZWJJbWFnZT4gc25h
cHNob3QgPSBXZWJJbWFnZTo6Y3JlYXRlKGJpdG1hcFNpemUsIHNuYXBzaG90T3B0aW9uc1RvSW1h
Z2VPcHRpb25zKG9wdGlvbnMpKTsKKyAgICBhdXRvIHNuYXBzaG90ID0gV2ViSW1hZ2U6OmNyZWF0
ZShiaXRtYXBTaXplLCBzbmFwc2hvdE9wdGlvbnNUb0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7CiAg
ICAgaWYgKCFzbmFwc2hvdC0+Yml0bWFwKCkpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0xNjQs
NyArMTY0LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IGltYWdlRm9yUmVjdChGcmFt
ZVZpZXcqIGZyYW1lVmlldywgY29uc3QgSW50UmVjdCYgcmUKICAgICBmcmFtZVZpZXctPnBhaW50
Q29udGVudHNGb3JTbmFwc2hvdCgqZ3JhcGhpY3NDb250ZXh0LmdldCgpLCByZWN0LCBzaG91bGRQ
YWludFNlbGVjdGlvbiwgRnJhbWVWaWV3OjpEb2N1bWVudENvb3JkaW5hdGVzKTsKICAgICBmcmFt
ZVZpZXctPnNldFBhaW50QmVoYXZpb3Iob2xkUGFpbnRCZWhhdmlvcik7CiAKLSAgICByZXR1cm4g
c25hcHNob3QucmVsZWFzZSgpOworICAgIHJldHVybiBzbmFwc2hvdDsKIH0KIAogUGFzc1JlZlB0
cjxXZWJJbWFnZT4gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpyZW5kZXJlZEltYWdlKFNuYXBz
aG90T3B0aW9ucyBvcHRpb25zKQpAQCAtMTg3LDEwICsxODcsMTAgQEAgUGFzc1JlZlB0cjxXZWJJ
bWFnZT4gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpyZW5kZXJlZEltYWdlKFNuYXBzaG90T3B0
aW9ucyBvcHQKICAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IHNuYXBwZWRJbnRSZWN0KHJlbmRl
cmVyLT5wYWludGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCkpOwogCiAgICAgZnJhbWVWaWV3LT5z
ZXROb2RlVG9EcmF3KG1fbm9kZS5wdHIoKSk7Ci0gICAgUmVmUHRyPFdlYkltYWdlPiBpbWFnZSA9
IGltYWdlRm9yUmVjdChmcmFtZVZpZXcsIHBhaW50aW5nUmVjdCwgb3B0aW9ucyk7CisgICAgYXV0
byBpbWFnZSA9IGltYWdlRm9yUmVjdChmcmFtZVZpZXcsIHBhaW50aW5nUmVjdCwgb3B0aW9ucyk7
CiAgICAgZnJhbWVWaWV3LT5zZXROb2RlVG9EcmF3KDApOwogCi0gICAgcmV0dXJuIGltYWdlLnJl
bGVhc2UoKTsKKyAgICByZXR1cm4gaW1hZ2U7CiB9CiAKIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5k
bGVSYW5nZUhhbmRsZT4gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjp2aXNpYmxlUmFuZ2UoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00v
SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAppbmRleCA4
YTk0NTE0OWI4ZTliODI0MmRkMzU2ZDQyMjM5MmNjNDQxNTBlN2M5Li5jOWJlZjVhNmU4YjYzYWZl
OTYyNWQ4ZGRmZTk0MzI3OGQ5MDFhMzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3Rl
ZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcApAQCAtNzAsOSArNzAsOSBAQCBQYXNzUmVmUHRyPEluamVj
dGVkQnVuZGxlUmFuZ2VIYW5kbGU+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmdldE9yQ3Jl
YXRlKFJhbgogICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybiBQYXNz
UmVmUHRyPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+KHJlc3VsdC5pdGVyYXRvci0+dmFsdWUp
OwogCi0gICAgUmVmUHRyPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IHJhbmdlSGFuZGxlID0g
SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Y3JlYXRlKHJhbmdlKTsKLSAgICByZXN1bHQuaXRl
cmF0b3ItPnZhbHVlID0gcmFuZ2VIYW5kbGUuZ2V0KCk7Ci0gICAgcmV0dXJuIHJhbmdlSGFuZGxl
LnJlbGVhc2UoKTsKKyAgICBhdXRvIHJhbmdlSGFuZGxlID0gSW5qZWN0ZWRCdW5kbGVSYW5nZUhh
bmRsZTo6Y3JlYXRlKHJhbmdlKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gcmFuZ2VI
YW5kbGUucHRyKCk7CisgICAgcmV0dXJuIFdURk1vdmUocmFuZ2VIYW5kbGUpOwogfQogCiBSZWY8
SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Y3Jl
YXRlKFJhbmdlKiByYW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggNjlhNGZmODA5Zjk3
MGMzNWFkZDE1YzQ4MTJkMWU5ZDU0NWJmYWEyNS4uMjgzYTk2NzAwZjVlMWZkNjM4YjJlYzUyMzI0
ZDM3ZTcwZThiMDA3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTkwLDEzICs5MCwxMyBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZT4gSW5qZWN0
ZWRCdW5kbGU6OmNyZWF0ZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzLCBBUEk6Ok9iamVjdCogaW5pdGlhbGl6YXRpb25Vc2VyRGF0YSkKIHsKLSAgICBSZWZQ
dHI8SW5qZWN0ZWRCdW5kbGU+IGJ1bmRsZSA9IGFkb3B0UmVmKG5ldyBJbmplY3RlZEJ1bmRsZShw
YXJhbWV0ZXJzKSk7CisgICAgYXV0byBidW5kbGUgPSBhZG9wdFJlZigqbmV3IEluamVjdGVkQnVu
ZGxlKHBhcmFtZXRlcnMpKTsKIAogICAgIGJ1bmRsZS0+bV9zYW5kYm94RXh0ZW5zaW9uID0gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlKHBhcmFtZXRlcnMuaW5qZWN0ZWRCdW5kbGVQYXRoRXh0ZW5z
aW9uSGFuZGxlKTsKICAgICBpZiAoIWJ1bmRsZS0+aW5pdGlhbGl6ZShwYXJhbWV0ZXJzLCBpbml0
aWFsaXphdGlvblVzZXJEYXRhKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1
cm4gYnVuZGxlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92ZShidW5kbGUpOwogfQogCiBJ
bmplY3RlZEJ1bmRsZTo6SW5qZWN0ZWRCdW5kbGUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycyYgcGFyYW1ldGVycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCmluZGV4IDMxNTFl
MTRlYjVlOTVlNDZiMDZmMGQ3Y2YxMDk4NWNhMjRmNjJmNGYuLjhmMTVkMzUyNDY4YjExMWRhYjU4
YmU3OGQyNmY5MWY4NWM1MmYxZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcApAQCAtMTY5
LDEwICsxNjksMTAgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6bG9hZFVSTChjb25zdCBTdHJpbmcm
IG1ldGhvZCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnMKIAogICAgIGlmICh0YXJnZXQu
aXNOdWxsKCkpIHsKICAgICAgICAgLy8gVGhlIGJyb3dzZXIgaXMgZ29pbmcgdG8gc2VuZCB0aGUg
ZGF0YSBpbiBhIHN0cmVhbSwgY3JlYXRlIGEgcGx1Zy1pbiBzdHJlYW0uCi0gICAgICAgIFJlZlB0
cjxOZXRzY2FwZVBsdWdpblN0cmVhbT4gcGx1Z2luU3RyZWFtID0gTmV0c2NhcGVQbHVnaW5TdHJl
YW06OmNyZWF0ZSh0aGlzLCByZXF1ZXN0SUQsIHVybFN0cmluZywgc2VuZE5vdGlmaWNhdGlvbiwg
bm90aWZpY2F0aW9uRGF0YSk7CisgICAgICAgIGF1dG8gcGx1Z2luU3RyZWFtID0gTmV0c2NhcGVQ
bHVnaW5TdHJlYW06OmNyZWF0ZSh0aGlzLCByZXF1ZXN0SUQsIHVybFN0cmluZywgc2VuZE5vdGlm
aWNhdGlvbiwgbm90aWZpY2F0aW9uRGF0YSk7CiAgICAgICAgIEFTU0VSVCghbV9zdHJlYW1zLmNv
bnRhaW5zKHJlcXVlc3RJRCkpOwogCi0gICAgICAgIG1fc3RyZWFtcy5zZXQocmVxdWVzdElELCBw
bHVnaW5TdHJlYW0ucmVsZWFzZSgpKTsKKyAgICAgICAgbV9zdHJlYW1zLnNldChyZXF1ZXN0SUQs
IFdURk1vdmUocGx1Z2luU3RyZWFtKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBE
RlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVj
YXRlZFBERlBsdWdpbi5tbQppbmRleCAxYzQ3MTdjYTcxODQzZjRlNGMwMTZlZmI3NmNmMzljM2Ew
Y2ViM2ViLi4xMjIzZjQ5YzUwODQ0MDdhNGQwOGZjMzUxMWNhNDYyNWQyMDdlYjA4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0RlcHJlY2F0ZWRQREZQ
bHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9EZXBy
ZWNhdGVkUERGUGx1Z2luLm1tCkBAIC02NTEsNyArNjUxLDcgQEAgY29uc3QgUGx1Z2luVmlldyog
UERGUGx1Z2luOjpwbHVnaW5WaWV3KCkgY29uc3QKIAogUGFzc1JlZlB0cjxTY3JvbGxiYXI+IFBE
RlBsdWdpbjo6Y3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9u
KQogewotICAgIFJlZlB0cjxTY3JvbGxiYXI+IHdpZGdldCA9IFNjcm9sbGJhcjo6Y3JlYXRlTmF0
aXZlU2Nyb2xsYmFyKCp0aGlzLCBvcmllbnRhdGlvbiwgUmVndWxhclNjcm9sbGJhcik7CisgICAg
YXV0byB3aWRnZXQgPSBTY3JvbGxiYXI6OmNyZWF0ZU5hdGl2ZVNjcm9sbGJhcigqdGhpcywgb3Jp
ZW50YXRpb24sIFJlZ3VsYXJTY3JvbGxiYXIpOwogICAgIGlmIChvcmllbnRhdGlvbiA9PSBIb3Jp
em9udGFsU2Nyb2xsYmFyKSB7CiAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhckxheWVyID0g
YWRvcHROUyhbW1dLUERGUGx1Z2luU2Nyb2xsYmFyTGF5ZXIgYWxsb2NdIGluaXRXaXRoUERGUGx1
Z2luOnRoaXNdKTsKICAgICAgICAgW21fY29udGFpbmVyTGF5ZXIgYWRkU3VibGF5ZXI6bV9ob3Jp
em9udGFsU2Nyb2xsYmFyTGF5ZXIuZ2V0KCldOwpAQCAtNjY3LDcgKzY2Nyw3IEBAIFBhc3NSZWZQ
dHI8U2Nyb2xsYmFyPiBQREZQbHVnaW46OmNyZWF0ZVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRh
dGlvbiBvcmllbnRhdGlvCiAgICAgICAgIH0KICAgICB9CiAgICAgcGx1Z2luVmlldygpLT5mcmFt
ZSgpLT52aWV3KCktPmFkZENoaWxkKHdpZGdldC5nZXQoKSk7Ci0gICAgcmV0dXJuIHdpZGdldC5y
ZWxlYXNlKCk7CisgICAgcmV0dXJuIHdpZGdldDsKIH0KIAogdm9pZCBQREZQbHVnaW46OmRlc3Ry
b3lTY3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcAppbmRl
eCA2YjI0Y2Y0NzMyMjJmZDBjMzI2OGE1ZDc1MTE0OTEwNmM2NTdmNjA5Li5hMGNjOGI5YjI0NGYy
NTNkYzExZDZiZThhNWRjZDY5ZTdmODcwMzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKQEAgLTI2Miw3ICsyNjIsNyBA
QCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjphcHBseUNoYW5nZShjb25zdCBTdHJpbmcmIGtleSwgY29u
c3QgU3RyaW5nJiBuZXdWYWx1ZSkKIAogICAgIGlmICgha2V5KSB7CiAgICAgICAgIC8vIEEgbnVs
bCBrZXkgbWVhbnMgY2xlYXIuCi0gICAgICAgIFJlZlB0cjxTdG9yYWdlTWFwPiBuZXdTdG9yYWdl
TWFwID0gU3RvcmFnZU1hcDo6Y3JlYXRlKG1fcXVvdGFJbkJ5dGVzKTsKKyAgICAgICAgYXV0byBu
ZXdTdG9yYWdlTWFwID0gU3RvcmFnZU1hcDo6Y3JlYXRlKG1fcXVvdGFJbkJ5dGVzKTsKIAogICAg
ICAgICAvLyBBbnkgY2hhbmdlcyB0aGF0IHdlcmUgbWFkZSBsb2NhbGx5IGFmdGVyIHRoZSBjbGVh
ciBtdXN0IHN0aWxsIGJlIGtlcHQgYXJvdW5kIGluIHRoZSBuZXcgbWFwLgogICAgICAgICBmb3Ig
KGF1dG8gaXQgPSBtX3BlbmRpbmdWYWx1ZUNoYW5nZXMuYmVnaW4oKS5rZXlzKCksIGVuZCA9IG1f
cGVuZGluZ1ZhbHVlQ2hhbmdlcy5lbmQoKS5rZXlzKCk7IGl0ICE9IGVuZDsgKytpdCkgewpAQCAt
Mjc4LDcgKzI3OCw3IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmFwcGx5Q2hhbmdlKGNvbnN0IFN0
cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlKQogICAgICAgICAgICAgbmV3U3RvcmFn
ZU1hcC0+c2V0SXRlbUlnbm9yaW5nUXVvdGEoa2V5LCBvbGRWYWx1ZSk7CiAgICAgICAgIH0KIAot
ICAgICAgICBtX3N0b3JhZ2VNYXAgPSBuZXdTdG9yYWdlTWFwLnJlbGVhc2UoKTsKKyAgICAgICAg
bV9zdG9yYWdlTWFwID0gV1RGTW92ZShuZXdTdG9yYWdlTWFwKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKaW5kZXggMTUxYzkw
MDZmYzJiNGY5MDgxMGU2MmQ2ZDMzN2QxODliNzYzNzI1NS4uMWNhN2Y0NDk3YTc5OGIzZTVkZWQ0
YWVlYjE4ZWFjYzJmMTlhYTc3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24u
Y3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgUGFnZVN0YXRlIHRvUGFnZVN0YXRlKGNvbnN0IFdlYkNv
cmU6Okhpc3RvcnlJdGVtJiBoaXN0b3J5SXRlbSkKIAogc3RhdGljIFBhc3NSZWZQdHI8Rm9ybURh
dGE+IHRvRm9ybURhdGEoY29uc3QgSFRUUEJvZHkmIGh0dHBCb2R5KQogewotICAgIFJlZlB0cjxG
b3JtRGF0YT4gZm9ybURhdGEgPSBGb3JtRGF0YTo6Y3JlYXRlKCk7CisgICAgYXV0byBmb3JtRGF0
YSA9IEZvcm1EYXRhOjpjcmVhdGUoKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6
IGh0dHBCb2R5LmVsZW1lbnRzKSB7CiAgICAgICAgIHN3aXRjaCAoZWxlbWVudC50eXBlKSB7CkBA
IC0xNDEsNyArMTQxLDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8Rm9ybURhdGE+IHRvRm9ybURhdGEo
Y29uc3QgSFRUUEJvZHkmIGh0dHBCb2R5KQogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJu
IGZvcm1EYXRhLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92ZShmb3JtRGF0YSk7CiB9CiAK
IHN0YXRpYyB2b2lkIGFwcGx5RnJhbWVTdGF0ZShIaXN0b3J5SXRlbSYgaGlzdG9yeUl0ZW0sIGNv
bnN0IEZyYW1lU3RhdGUmIGZyYW1lU3RhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCmluZGV4IGExNDdmMjBkZjhmOTdjYjVkYTNiYWY2OTNlMzM0MDRkMTUwMDhlN2UuLmYxYWU1
NTQzMTA0NGJmODllYjU2MDA5NTI0NDc4NGRmZDgwYmVjYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCkBAIC0xNDM1LDExICsxNDM1LDExIEBAIFJlZlB0cjxXaWRnZXQ+IFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVn
SW5FbGVtCiAjZW5kaWYKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIFJl
ZlB0cjxQbHVnaW4+IHBsdWdpbiA9IG1fZnJhbWUtPnBhZ2UoKS0+Y3JlYXRlUGx1Z2luKG1fZnJh
bWUsIHBsdWdpbkVsZW1lbnQsIHBhcmFtZXRlcnMsIHBhcmFtZXRlcnMubWltZVR5cGUpOworICAg
IGF1dG8gcGx1Z2luID0gbV9mcmFtZS0+cGFnZSgpLT5jcmVhdGVQbHVnaW4obV9mcmFtZSwgcGx1
Z2luRWxlbWVudCwgcGFyYW1ldGVycywgcGFyYW1ldGVycy5taW1lVHlwZSk7CiAgICAgaWYgKCFw
bHVnaW4pCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFBsdWdpblZpZXc6
OmNyZWF0ZShwbHVnaW5FbGVtZW50LCBwbHVnaW4ucmVsZWFzZSgpLCBwYXJhbWV0ZXJzKTsKKyAg
ICByZXR1cm4gUGx1Z2luVmlldzo6Y3JlYXRlKHBsdWdpbkVsZW1lbnQsIFdURk1vdmUocGx1Z2lu
KSwgcGFyYW1ldGVycyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShwbHVnaW5FbGVtZW50KTsK
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE0NTQsOCArMTQ1NCw4IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OnJlY3JlYXRlUGx1Z2luKFdpZGdldCogd2lkZ2V0KQogCiAgICAgUGx1Z2lu
VmlldyogcGx1Z2luVmlldyA9IHN0YXRpY19jYXN0PFBsdWdpblZpZXcqPih3aWRnZXQpOwogICAg
IFN0cmluZyBuZXdNSU1FVHlwZTsKLSAgICBSZWZQdHI8UGx1Z2luPiBwbHVnaW4gPSBtX2ZyYW1l
LT5wYWdlKCktPmNyZWF0ZVBsdWdpbihtX2ZyYW1lLCBwbHVnaW5WaWV3LT5wbHVnaW5FbGVtZW50
KCksIHBsdWdpblZpZXctPmluaXRpYWxQYXJhbWV0ZXJzKCksIG5ld01JTUVUeXBlKTsKLSAgICBw
bHVnaW5WaWV3LT5yZWNyZWF0ZUFuZEluaXRpYWxpemUocGx1Z2luLnJlbGVhc2UoKSk7CisgICAg
YXV0byBwbHVnaW4gPSBtX2ZyYW1lLT5wYWdlKCktPmNyZWF0ZVBsdWdpbihtX2ZyYW1lLCBwbHVn
aW5WaWV3LT5wbHVnaW5FbGVtZW50KCksIHBsdWdpblZpZXctPmluaXRpYWxQYXJhbWV0ZXJzKCks
IG5ld01JTUVUeXBlKTsKKyAgICBwbHVnaW5WaWV3LT5yZWNyZWF0ZUFuZEluaXRpYWxpemUoV1RG
TW92ZShwbHVnaW4pKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHdpZGdldCk7CiAjZW5kaWYK
QEAgLTE0ODgsNyArMTQ4OCw3IEBAIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSBXZWJGcmFtZUxv
YWRlckNsaWVudDo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFN0CiBQYXNzUmVmUHRy
PFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29u
c3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgSFRNTEFwcGxldEVsZW1lbnQqIGFwcGxldEVsZW1lbnQs
IGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpCiB7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9B
UEkpCi0gICAgUmVmUHRyPFdpZGdldD4gcGx1Z2luID0gY3JlYXRlUGx1Z2luKHBsdWdpblNpemUs
IGFwcGxldEVsZW1lbnQsIFVSTCgpLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcywgYXBwbGV0RWxl
bWVudC0+c2VydmljZVR5cGUoKSwgZmFsc2UpOworICAgIGF1dG8gcGx1Z2luID0gY3JlYXRlUGx1
Z2luKHBsdWdpblNpemUsIGFwcGxldEVsZW1lbnQsIFVSTCgpLCBwYXJhbU5hbWVzLCBwYXJhbVZh
bHVlcywgYXBwbGV0RWxlbWVudC0+c2VydmljZVR5cGUoKSwgZmFsc2UpOwogICAgIGlmICghcGx1
Z2luKSB7CiAgICAgICAgIGlmIChXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpKSB7
CiAgICAgICAgICAgICBTdHJpbmcgZnJhbWVVUkxTdHJpbmcgPSBtX2ZyYW1lLT5jb3JlRnJhbWUo
KS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2VVUkwoKS5zdHJpbmcoKTsKQEAg
LTE0OTYsNyArMTQ5Niw3IEBAIFBhc3NSZWZQdHI8V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiBwCiAgICAgICAgICAgICB3
ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZhaWxUb0luaXRpYWxpemVQ
bHVnaW4oYXBwbGV0RWxlbWVudC0+c2VydmljZVR5cGUoKSwgZnJhbWVVUkxTdHJpbmcsIHBhZ2VV
UkxTdHJpbmcpKTsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gcGx1Z2luLnJlbGVhc2Uo
KTsKKyAgICByZXR1cm4gV1RGTW92ZShwbHVnaW4pOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0o
cGx1Z2luU2l6ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGFwcGxldEVsZW1lbnQpOwpAQCAtMTcwMSw4
ICsxNzAxLDggQEAgYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkRm9yY2VVbml2ZXJz
YWxBY2Nlc3NGcm9tTG9jYWxVUkwoY29uc3QgV2ViQ29yZToKIAogUGFzc1JlZlB0cjxGcmFtZU5l
dHdvcmtpbmdDb250ZXh0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlTmV0d29ya2luZ0Nv
bnRleHQoKQogewotICAgIFJlZlB0cjxXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0PiBjb250ZXh0
ID0gV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6Y3JlYXRlKG1fZnJhbWUpOwotICAgIHJldHVy
biBjb250ZXh0LnJlbGVhc2UoKTsKKyAgICBhdXRvIGNvbnRleHQgPSBXZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0OjpjcmVhdGUobV9mcmFtZSk7CisgICAgcmV0dXJuIFdURk1vdmUoY29udGV4dCk7
CiB9CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5jcHAKaW5kZXggMDIxYWJmYTUwMDkyNTAwZTFkNWMxYzNjMGUyNTI3ZTg0N2I3NmYzOC4u
OTY4OTI5ZmRhMzQ3OWFhZDJiZTRhMTBhMGI0NTk2YWUxNzU1NmQ1MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50LmNwcApAQCAtMTA3LDkgKzEwNyw5IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xp
ZW50OjpoaWdobGlnaHQoKQogewogI2lmICFQTEFURk9STShJT1MpCiAgICAgaWYgKCFtX2hpZ2hs
aWdodE92ZXJsYXkpIHsKLSAgICAgICAgUmVmUHRyPFBhZ2VPdmVybGF5PiBoaWdobGlnaHRPdmVy
bGF5ID0gUGFnZU92ZXJsYXk6OmNyZWF0ZSgqdGhpcyk7Ci0gICAgICAgIG1faGlnaGxpZ2h0T3Zl
cmxheSA9IGhpZ2hsaWdodE92ZXJsYXkuZ2V0KCk7Ci0gICAgICAgIG1fcGFnZS0+bWFpbkZyYW1l
KCktPnBhZ2VPdmVybGF5Q29udHJvbGxlcigpLmluc3RhbGxQYWdlT3ZlcmxheShoaWdobGlnaHRP
dmVybGF5LnJlbGVhc2UoKSwgUGFnZU92ZXJsYXk6OkZhZGVNb2RlOjpGYWRlKTsKKyAgICAgICAg
YXV0byBoaWdobGlnaHRPdmVybGF5ID0gUGFnZU92ZXJsYXk6OmNyZWF0ZSgqdGhpcyk7CisgICAg
ICAgIG1faGlnaGxpZ2h0T3ZlcmxheSA9IGhpZ2hsaWdodE92ZXJsYXkucHRyKCk7CisgICAgICAg
IG1fcGFnZS0+bWFpbkZyYW1lKCktPnBhZ2VPdmVybGF5Q29udHJvbGxlcigpLmluc3RhbGxQYWdl
T3ZlcmxheShXVEZNb3ZlKGhpZ2hsaWdodE92ZXJsYXkpLCBQYWdlT3ZlcmxheTo6RmFkZU1vZGU6
OkZhZGUpOwogICAgICAgICBtX2hpZ2hsaWdodE92ZXJsYXktPnNldE5lZWRzRGlzcGxheSgpOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIG1faGlnaGxpZ2h0T3ZlcmxheS0+c3RvcEZhZGVPdXRBbmlt
YXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCmluZGV4IDVhMDM4NTliZjEy
Nzk2MDZmZjcwM2M5NzE4NzA1ZTBlNGQ3NWRlNjcuLjBiZDI1ODc0ZmY1YmYwODE3ZDc5MWY0ODcz
MTBlZjYwYzU3YTUzMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQpAQCAtNTYs
NyArNTYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiBjb252ZXJ0SW1hZ2VUb0JpdG1hcChOU0ltYWdlICppbWFnZSwgY29uc3QgSW50
U2l6ZSYgc2l6ZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzaXplLCBTaGFyZWFibGVCaXRtYXA6OlN1cHBv
cnRzQWxwaGEpOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFy
ZWFibGUoc2l6ZSwgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKTsKICAgICBpZiAoIWJp
dG1hcCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTcyLDcgKzcyLDcgQEAgc3RhdGlj
IFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0SW1hZ2VUb0JpdG1hcChOU0ltYWdl
ICppbWFnZSwgY29uc3QgSW4KIAogICAgIFtOU0dyYXBoaWNzQ29udGV4dCBzZXRDdXJyZW50Q29u
dGV4dDpzYXZlZENvbnRleHQuZ2V0KCldOwogCi0gICAgcmV0dXJuIGJpdG1hcC5yZWxlYXNlKCk7
CisgICAgcmV0dXJuIFdURk1vdmUoYml0bWFwKTsKIH0KIAogdm9pZCBXZWJEcmFnQ2xpZW50Ojpz
dGFydERyYWcoUmV0YWluUHRyPE5TSW1hZ2U+IGltYWdlLCBjb25zdCBJbnRQb2ludCYgcG9pbnQs
IGNvbnN0IEludFBvaW50JiwgRGF0YVRyYW5zZmVyJiwgRnJhbWUmIGZyYW1lLCBib29sIGxpbmtE
cmFnKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRD
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29u
dHJvbGxlci5jcHAKaW5kZXggOWYxMTkzZjQ5MzI3OTMyNzk5MDA1NDAzODY4ZWFkYzBkNjI0ODg2
ZC4uMWUwY2VmNDY1MWI5M2JmODBmYjcwNTY2NWM2ZjYxNWZlYWJjMmE4OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCkBA
IC0xOTIsOSArMTkyLDkgQEAgdm9pZCBGaW5kQ29udHJvbGxlcjo6dXBkYXRlRmluZFVJQWZ0ZXJQ
YWdlU2Nyb2xsKGJvb2wgZm91bmQsIGNvbnN0IFN0cmluZyYgc3RyaW4KICAgICAgICAgICAgIG1f
d2ViUGFnZS0+bWFpbkZyYW1lKCktPnBhZ2VPdmVybGF5Q29udHJvbGxlcigpLnVuaW5zdGFsbFBh
Z2VPdmVybGF5KG1fZmluZFBhZ2VPdmVybGF5LCBQYWdlT3ZlcmxheTo6RmFkZU1vZGU6OkZhZGUp
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICghbV9maW5kUGFnZU92ZXJsYXkpIHsKLSAgICAg
ICAgICAgIFJlZlB0cjxQYWdlT3ZlcmxheT4gZmluZFBhZ2VPdmVybGF5ID0gUGFnZU92ZXJsYXk6
OmNyZWF0ZSgqdGhpcywgUGFnZU92ZXJsYXk6Ok92ZXJsYXlUeXBlOjpEb2N1bWVudCk7Ci0gICAg
ICAgICAgICBtX2ZpbmRQYWdlT3ZlcmxheSA9IGZpbmRQYWdlT3ZlcmxheS5nZXQoKTsKLSAgICAg
ICAgICAgIG1fd2ViUGFnZS0+bWFpbkZyYW1lKCktPnBhZ2VPdmVybGF5Q29udHJvbGxlcigpLmlu
c3RhbGxQYWdlT3ZlcmxheShmaW5kUGFnZU92ZXJsYXkucmVsZWFzZSgpLCBQYWdlT3ZlcmxheTo6
RmFkZU1vZGU6OkZhZGUpOworICAgICAgICAgICAgYXV0byBmaW5kUGFnZU92ZXJsYXkgPSBQYWdl
T3ZlcmxheTo6Y3JlYXRlKCp0aGlzLCBQYWdlT3ZlcmxheTo6T3ZlcmxheVR5cGU6OkRvY3VtZW50
KTsKKyAgICAgICAgICAgIG1fZmluZFBhZ2VPdmVybGF5ID0gZmluZFBhZ2VPdmVybGF5LnB0cigp
OworICAgICAgICAgICAgbV93ZWJQYWdlLT5tYWluRnJhbWUoKS0+cGFnZU92ZXJsYXlDb250cm9s
bGVyKCkuaW5zdGFsbFBhZ2VPdmVybGF5KFdURk1vdmUoZmluZFBhZ2VPdmVybGF5KSwgUGFnZU92
ZXJsYXk6OkZhZGVNb2RlOjpGYWRlKTsKICAgICAgICAgfQogICAgICAgICBtX2ZpbmRQYWdlT3Zl
cmxheS0+c2V0TmVlZHNEaXNwbGF5KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxl
ci5jcHAKaW5kZXggOGUyMmY2ZWE1OGExNjUyOTRhMDNiZGQxZjJhMWZiZTc5YWJjZmFhMi4uMWEz
OWUzZTEwN2RjMWZkYWIzMmNkMzYyN2U1NGNmMjg1ZjZkMGM0NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlzaXRlZExpbmtUYWJs
ZUNvbnRyb2xsZXIuY3BwCkBAIC01MCwxMCArNTAsMTAgQEAgUGFzc1JlZlB0cjxWaXNpdGVkTGlu
a1RhYmxlQ29udHJvbGxlcj4gVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXI6OmdldE9yQ3JlYXRl
KHUKICAgICBpZiAodmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXJQdHIpCiAgICAgICAgIHJldHVy
biB2aXNpdGVkTGlua1RhYmxlQ29udHJvbGxlclB0cjsKIAotICAgIFJlZlB0cjxWaXNpdGVkTGlu
a1RhYmxlQ29udHJvbGxlcj4gdmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIgPSBhZG9wdFJlZihu
ZXcgVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIoaWRlbnRpZmllcikpOwotICAgIHZpc2l0ZWRM
aW5rVGFibGVDb250cm9sbGVyUHRyID0gdmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIuZ2V0KCk7
CisgICAgYXV0byB2aXNpdGVkTGlua1RhYmxlQ29udHJvbGxlciA9IGFkb3B0UmVmKCpuZXcgVmlz
aXRlZExpbmtUYWJsZUNvbnRyb2xsZXIoaWRlbnRpZmllcikpOworICAgIHZpc2l0ZWRMaW5rVGFi
bGVDb250cm9sbGVyUHRyID0gdmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIucHRyKCk7CiAKLSAg
ICByZXR1cm4gdmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIucmVsZWFzZSgpOworICAgIHJldHVy
biBXVEZNb3ZlKHZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyKTsKIH0KIAogVmlzaXRlZExpbmtU
YWJsZUNvbnRyb2xsZXI6OlZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyKHVpbnQ2NF90IGlkZW50
aWZpZXIpCkBAIC05MCwxMSArOTAsMTEgQEAgdm9pZCBWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxl
cjo6YWRkVmlzaXRlZExpbmsoUGFnZSYgcGFnZSwgTGlua0hhc2ggbGlua0hhc2gpCiAKIHZvaWQg
VmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXI6OnNldFZpc2l0ZWRMaW5rVGFibGUoY29uc3QgU2hh
cmVkTWVtb3J5OjpIYW5kbGUmIGhhbmRsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBz
aGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6Om1hcChoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJv
dGVjdGlvbjo6UmVhZE9ubHkpOworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5
OjptYXAoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICBp
ZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV92aXNpdGVkTGlua1Rh
YmxlLnNldFNoYXJlZE1lbW9yeShzaGFyZWRNZW1vcnkucmVsZWFzZSgpKTsKKyAgICBtX3Zpc2l0
ZWRMaW5rVGFibGUuc2V0U2hhcmVkTWVtb3J5KFdURk1vdmUoc2hhcmVkTWVtb3J5KSk7CiAKICAg
ICBpbnZhbGlkYXRlU3R5bGVzRm9yQWxsTGlua3MoKTsKICAgICBQYWdlQ2FjaGU6OnNpbmdsZXRv
bigpLm1hcmtQYWdlc0ZvclZpc2l0ZWRMaW5rU3R5bGVSZWNhbGMoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDJiNTU0MGRmN2E1MTE5
Njg2MjE5YjVkNTlmMDUzZmYzNTI2YzhhZWYuLjllYzI2NDU3Y2MyNDM5NDMyNWRmZTRkMmViNTcy
ZWMzZGQxYmQ0NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmNwcApAQCAtMTEwLDE4ICsxMTAsMTggQEAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRl
TGlzdGVuZXJJRCgpCiAKIFBhc3NSZWZQdHI8V2ViRnJhbWU+IFdlYkZyYW1lOjpjcmVhdGVXaXRo
Q29yZU1haW5GcmFtZShXZWJQYWdlKiBwYWdlLCBXZWJDb3JlOjpGcmFtZSogY29yZUZyYW1lKQog
ewotICAgIFJlZlB0cjxXZWJGcmFtZT4gZnJhbWUgPSBjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPFdl
YkZyYW1lTG9hZGVyQ2xpZW50PihzdGF0aWNfY2FzdDxXZWJGcmFtZUxvYWRlckNsaWVudCo+KCZj
b3JlRnJhbWUtPmxvYWRlcigpLmNsaWVudCgpKSkpOworICAgIGF1dG8gZnJhbWUgPSBjcmVhdGUo
c3RkOjp1bmlxdWVfcHRyPFdlYkZyYW1lTG9hZGVyQ2xpZW50PihzdGF0aWNfY2FzdDxXZWJGcmFt
ZUxvYWRlckNsaWVudCo+KCZjb3JlRnJhbWUtPmxvYWRlcigpLmNsaWVudCgpKSkpOwogICAgIHBh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ3JlYXRlTWFpbkZyYW1lKGZyYW1l
LT5mcmFtZUlEKCkpLCBwYWdlLT5wYWdlSUQoKSwgSVBDOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hl
bldhaXRpbmdGb3JTeW5jUmVwbHkpOwogCiAgICAgZnJhbWUtPm1fY29yZUZyYW1lID0gY29yZUZy
YW1lOwogICAgIGZyYW1lLT5tX2NvcmVGcmFtZS0+dHJlZSgpLnNldE5hbWUoU3RyaW5nKCkpOwog
ICAgIGZyYW1lLT5tX2NvcmVGcmFtZS0+aW5pdCgpOwotICAgIHJldHVybiBmcmFtZS5yZWxlYXNl
KCk7CisgICAgcmV0dXJuIGZyYW1lOwogfQogCiBQYXNzUmVmUHRyPFdlYkZyYW1lPiBXZWJGcmFt
ZTo6Y3JlYXRlU3ViZnJhbWUoV2ViUGFnZSogcGFnZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUs
IEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50KQogewotICAgIFJlZlB0cjxXZWJG
cmFtZT4gZnJhbWUgPSBjcmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJGcmFtZUxvYWRlckNsaWVu
dD4oKSk7CisgICAgYXV0byBmcmFtZSA9IGNyZWF0ZShzdGQ6Om1ha2VfdW5pcXVlPFdlYkZyYW1l
TG9hZGVyQ2xpZW50PigpKTsKICAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRpZENyZWF0ZVN1YmZyYW1lKGZyYW1lLT5mcmFtZUlEKCkpLCBwYWdlLT5wYWdlSUQoKSwgSVBD
OjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwogCiAgICAgUmVm
PFdlYkNvcmU6OkZyYW1lPiBjb3JlRnJhbWUgPSBGcmFtZTo6Y3JlYXRlKHBhZ2UtPmNvcmVQYWdl
KCksIG93bmVyRWxlbWVudCwgZnJhbWUtPm1fZnJhbWVMb2FkZXJDbGllbnQuZ2V0KCkpOwpAQCAt
MTMyLDE3ICsxMzIsMTcgQEAgUGFzc1JlZlB0cjxXZWJGcmFtZT4gV2ViRnJhbWU6OmNyZWF0ZVN1
YmZyYW1lKFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmluZyYgZnJhbWUKICAgICAgICAgb3duZXJF
bGVtZW50LT5kb2N1bWVudCgpLmZyYW1lKCktPnRyZWUoKS5hcHBlbmRDaGlsZChXVEZNb3ZlKGNv
cmVGcmFtZSkpOwogICAgIH0KICAgICBmcmFtZS0+bV9jb3JlRnJhbWUtPmluaXQoKTsKLSAgICBy
ZXR1cm4gZnJhbWUucmVsZWFzZSgpOworICAgIHJldHVybiBmcmFtZTsKIH0KIAogUGFzc1JlZlB0
cjxXZWJGcmFtZT4gV2ViRnJhbWU6OmNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8V2ViRnJhbWVMb2Fk
ZXJDbGllbnQ+IGZyYW1lTG9hZGVyQ2xpZW50KQogewotICAgIFJlZlB0cjxXZWJGcmFtZT4gZnJh
bWUgPSBhZG9wdFJlZihuZXcgV2ViRnJhbWUoV1RGTW92ZShmcmFtZUxvYWRlckNsaWVudCkpKTsK
KyAgICBhdXRvIGZyYW1lID0gYWRvcHRSZWYoKm5ldyBXZWJGcmFtZShXVEZNb3ZlKGZyYW1lTG9h
ZGVyQ2xpZW50KSkpOwogCiAgICAgLy8gQWRkIGV4cGxpY3QgcmVmKCkgdGhhdCB3aWxsIGJlIGJh
bGFuY2VkIGluIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmcmFtZUxvYWRlckRlc3Ryb3llZCgpLgog
ICAgIGZyYW1lLT5yZWYoKTsKIAotICAgIHJldHVybiBmcmFtZS5yZWxlYXNlKCk7CisgICAgcmV0
dXJuIFdURk1vdmUoZnJhbWUpOwogfQogCiBXZWJGcmFtZTo6V2ViRnJhbWUoc3RkOjp1bmlxdWVf
cHRyPFdlYkZyYW1lTG9hZGVyQ2xpZW50PiBmcmFtZUxvYWRlckNsaWVudCkKQEAgLTgxOCw3ICs4
MTgsNyBAQCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gV2ViRnJhbWU6OmNyZWF0ZVNlbGVj
dGlvblNuYXBzaG90KCkgY29uc3QKICAgICBpZiAoIXNuYXBzaG90KQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNoYXJlZFNuYXBzaG90ID0g
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc25hcHNob3QtPmludGVybmFsU2l6ZSgp
LCBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpOworICAgIGF1dG8gc2hhcmVkU25hcHNo
b3QgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzbmFwc2hvdC0+aW50ZXJuYWxT
aXplKCksIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CiAgICAgaWYgKCFzaGFyZWRT
bmFwc2hvdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTgyOSw3ICs4MjksNyBAQCBQ
YXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gV2ViRnJhbWU6OmNyZWF0ZVNlbGVjdGlvblNuYXBz
aG90KCkgY29uc3QKICAgICBncmFwaGljc0NvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShkZXZpY2VT
Y2FsZUZhY3RvciwgZGV2aWNlU2NhbGVGYWN0b3IpKTsKICAgICBncmFwaGljc0NvbnRleHQtPmRy
YXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihXVEZNb3ZlKHNuYXBzaG90KSwgRmxvYXRQb2ludCgpKTsK
IAotICAgIHJldHVybiBzaGFyZWRTbmFwc2hvdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1v
dmUoc2hhcmVkU25hcHNob3QpOwogfQogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZTQwZGIz
MTYzNzAxZDE5YzVkM2MxMjg1NWFkZTkwMTZjN2U3YmE4MC4uNjBmOTJlYTg4OWY5OTdiNjU5ZWZk
ZGMyNTYzZDhkZWE0NDE0OGMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcApAQCAtNzUzLDggKzc1Myw4IEBAIFBhc3NSZWZQdHI8UGx1Z2luPiBX
ZWJQYWdlOjpjcmVhdGVQbHVnaW4oV2ViRnJhbWUqIGZyYW1lLCBIVE1MUGx1Z0luRWxlbWVudCog
cGx1CiAjaWYgRU5BQkxFKFBERktJVF9QTFVHSU4pCiAgICAgICAgIFN0cmluZyBwYXRoID0gcGFy
YW1ldGVycy51cmwucGF0aCgpOwogICAgICAgICBpZiAoc2hvdWxkVXNlUERGUGx1Z2luKCkgJiYg
KE1JTUVUeXBlUmVnaXN0cnk6OmlzUERGT3JQb3N0U2NyaXB0TUlNRVR5cGUocGFyYW1ldGVycy5t
aW1lVHlwZSkgfHwgKHBhcmFtZXRlcnMubWltZVR5cGUuaXNFbXB0eSgpICYmIChwYXRoLmVuZHNX
aXRoKCIucGRmIiwgZmFsc2UpIHx8IHBhdGguZW5kc1dpdGgoIi5wcyIsIGZhbHNlKSkpKSkgewot
ICAgICAgICAgICAgUmVmUHRyPFBERlBsdWdpbj4gcGRmUGx1Z2luID0gUERGUGx1Z2luOjpjcmVh
dGUoZnJhbWUpOwotICAgICAgICAgICAgcmV0dXJuIHBkZlBsdWdpbi5yZWxlYXNlKCk7CisgICAg
ICAgICAgICBhdXRvIHBkZlBsdWdpbiA9IFBERlBsdWdpbjo6Y3JlYXRlKGZyYW1lKTsKKyAgICAg
ICAgICAgIHJldHVybiBXVEZNb3ZlKHBkZlBsdWdpbik7CiAgICAgICAgIH0KICNlbHNlCiAgICAg
ICAgIFVOVVNFRF9QQVJBTShmcmFtZSk7CkBAIC0xODY5LDcgKzE4NjksNyBAQCBQYXNzUmVmUHRy
PFdlYkltYWdlPiBXZWJQYWdlOjpzbmFwc2hvdEF0U2l6ZShjb25zdCBJbnRSZWN0JiByZWN0LCBj
b25zdCBJbnRTaXplJgogICAgIGZsb2F0IHZlcnRpY2FsU2NhbGVGYWN0b3IgPSBzdGF0aWNfY2Fz
dDxmbG9hdD4oYml0bWFwU2l6ZS5oZWlnaHQoKSkgLyByZWN0LmhlaWdodCgpOwogICAgIGZsb2F0
IHNjYWxlRmFjdG9yID0gc3RkOjptYXgoaG9yaXpvbnRhbFNjYWxlRmFjdG9yLCB2ZXJ0aWNhbFNj
YWxlRmFjdG9yKTsKIAotICAgIFJlZlB0cjxXZWJJbWFnZT4gc25hcHNob3QgPSBXZWJJbWFnZTo6
Y3JlYXRlKGJpdG1hcFNpemUsIHNuYXBzaG90T3B0aW9uc1RvSW1hZ2VPcHRpb25zKG9wdGlvbnMp
KTsKKyAgICBhdXRvIHNuYXBzaG90ID0gV2ViSW1hZ2U6OmNyZWF0ZShiaXRtYXBTaXplLCBzbmFw
c2hvdE9wdGlvbnNUb0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7CiAgICAgaWYgKCFzbmFwc2hvdC0+
Yml0bWFwKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0xODc3LDcgKzE4NzcsNyBA
QCBQYXNzUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFwc2hvdEF0U2l6ZShjb25zdCBJbnRS
ZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJgogCiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9w
dGlvbnNQcmludGluZykgewogICAgICAgICBQcmludENvbnRleHQ6OnNwb29sQWxsUGFnZXNXaXRo
Qm91bmRhcmllcygqY29yZUZyYW1lLCAqZ3JhcGhpY3NDb250ZXh0LCBzbmFwc2hvdFJlY3Quc2l6
ZSgpKTsKLSAgICAgICAgcmV0dXJuIHNuYXBzaG90LnJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJu
IHNuYXBzaG90OwogICAgIH0KIAogICAgIENvbG9yIGRvY3VtZW50QmFja2dyb3VuZENvbG9yID0g
ZnJhbWVWaWV3LT5kb2N1bWVudEJhY2tncm91bmRDb2xvcigpOwpAQCAtMTkwOSw3ICsxOTA5LDcg
QEAgUGFzc1JlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNob3RBdFNpemUoY29uc3QgSW50
UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zdHJv
a2VSZWN0KHNlbGVjdGlvblJlY3RhbmdsZSwgMSk7CiAgICAgfQogICAgIAotICAgIHJldHVybiBz
bmFwc2hvdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHNuYXBzaG90OwogfQogCiBQYXNzUmVmUHRy
PFdlYkltYWdlPiBXZWJQYWdlOjpzbmFwc2hvdE5vZGUoV2ViQ29yZTo6Tm9kZSYgbm9kZSwgU25h
cHNob3RPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIG1heGltdW1QaXhlbENvdW50KQpAQCAtMTkz
OCw3ICsxOTM4LDcgQEAgUGFzc1JlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNob3ROb2Rl
KFdlYkNvcmU6Ok5vZGUmIG5vZGUsIFNuYXBzaG90T3B0aW9ucwogICAgICAgICBzbmFwc2hvdFNp
emUgPSBJbnRTaXplKHNuYXBzaG90U2l6ZS53aWR0aCgpICogc2NhbGVGYWN0b3IsIG1heGltdW1I
ZWlnaHQpOwogICAgIH0KIAotICAgIFJlZlB0cjxXZWJJbWFnZT4gc25hcHNob3QgPSBXZWJJbWFn
ZTo6Y3JlYXRlKHNuYXBzaG90U2l6ZSwgc25hcHNob3RPcHRpb25zVG9JbWFnZU9wdGlvbnMob3B0
aW9ucykpOworICAgIGF1dG8gc25hcHNob3QgPSBXZWJJbWFnZTo6Y3JlYXRlKHNuYXBzaG90U2l6
ZSwgc25hcHNob3RPcHRpb25zVG9JbWFnZU9wdGlvbnMob3B0aW9ucykpOwogICAgIGlmICghc25h
cHNob3QtPmJpdG1hcCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTk2Miw3ICsx
OTYyLDcgQEAgUGFzc1JlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNob3ROb2RlKFdlYkNv
cmU6Ok5vZGUmIG5vZGUsIFNuYXBzaG90T3B0aW9ucwogICAgIGZyYW1lVmlldy0+c2V0QmFzZUJh
Y2tncm91bmRDb2xvcihzYXZlZEJhY2tncm91bmRDb2xvcik7CiAgICAgZnJhbWVWaWV3LT5zZXRO
b2RlVG9EcmF3KG51bGxwdHIpOwogCi0gICAgcmV0dXJuIHNuYXBzaG90LnJlbGVhc2UoKTsKKyAg
ICByZXR1cm4gc25hcHNob3Q7CiB9CiAKIHZvaWQgV2ViUGFnZTo6cGFnZURpZFNjcm9sbCgpCkBA
IC0zNDE4LDcgKzM0MTgsNyBAQCB2b2lkIFdlYlBhZ2U6OmRyYWdFbmRlZChXZWJDb3JlOjpJbnRQ
b2ludCBjbGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYgogCiB2b2lkIFdlYlBh
Z2U6OndpbGxQZXJmb3JtTG9hZERyYWdEZXN0aW5hdGlvbkFjdGlvbigpCiB7Ci0gICAgbV9zYW5k
Ym94RXh0ZW5zaW9uVHJhY2tlci53aWxsUGVyZm9ybUxvYWREcmFnRGVzdGluYXRpb25BY3Rpb24o
bV9wZW5kaW5nRHJvcFNhbmRib3hFeHRlbnNpb24ucmVsZWFzZSgpKTsKKyAgICBtX3NhbmRib3hF
eHRlbnNpb25UcmFja2VyLndpbGxQZXJmb3JtTG9hZERyYWdEZXN0aW5hdGlvbkFjdGlvbihXVEZN
b3ZlKG1fcGVuZGluZ0Ryb3BTYW5kYm94RXh0ZW5zaW9uKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6
bWF5UGVyZm9ybVVwbG9hZERyYWdEZXN0aW5hdGlvbkFjdGlvbigpCkBAIC0zOTcxLDcgKzM5NzEs
NyBAQCB2b2lkIFdlYlBhZ2U6OlNhbmRib3hFeHRlbnNpb25UcmFja2VyOjpkaWRTdGFydFByb3Zp
c2lvbmFsTG9hZChXZWJGcmFtZSogZnJhbWUpCiAKICAgICBBU1NFUlQoIW1fcHJvdmlzaW9uYWxT
YW5kYm94RXh0ZW5zaW9uKTsKIAotICAgIG1fcHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uID0g
bV9wZW5kaW5nUHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uLnJlbGVhc2UoKTsKKyAgICBtX3By
b3Zpc2lvbmFsU2FuZGJveEV4dGVuc2lvbiA9IFdURk1vdmUobV9wZW5kaW5nUHJvdmlzaW9uYWxT
YW5kYm94RXh0ZW5zaW9uKTsKICAgICBpZiAoIW1fcHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9u
KQogICAgICAgICByZXR1cm47CiAKQEAgLTM5ODgsNyArMzk4OCw3IEBAIHZvaWQgV2ViUGFnZTo6
U2FuZGJveEV4dGVuc2lvblRyYWNrZXI6OmRpZENvbW1pdFByb3Zpc2lvbmFsTG9hZChXZWJGcmFt
ZSogZnJhbWUpCiAgICAgaWYgKG1fY29tbWl0dGVkU2FuZGJveEV4dGVuc2lvbikKICAgICAgICAg
bV9jb21taXR0ZWRTYW5kYm94RXh0ZW5zaW9uLT5yZXZva2UoKTsKIAotICAgIG1fY29tbWl0dGVk
U2FuZGJveEV4dGVuc2lvbiA9IG1fcHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uLnJlbGVhc2Uo
KTsKKyAgICBtX2NvbW1pdHRlZFNhbmRib3hFeHRlbnNpb24gPSBXVEZNb3ZlKG1fcHJvdmlzaW9u
YWxTYW5kYm94RXh0ZW5zaW9uKTsKIAogICAgIC8vIFdlIGNhbiBhbHNvIGhhdmUgYSBub24tbnVs
bCBtX3BlbmRpbmdQcm92aXNpb25hbFNhbmRib3hFeHRlbnNpb24gaWYgYSBuZXcgbG9hZCBpcyBi
ZWluZyBzdGFydGVkLgogICAgIC8vIFRoaXMgZXh0ZW5zaW9uIGlzIG5vdCBjbGVhcmVkLCBiZWNh
dXNlIGl0IGRvZXMgbm90IHBlcnRhaW4gdG8gdGhlIGZhaWxlZCBsb2FkLCBhbmQgd2lsbCBiZSBu
ZWVkZWQuCkBAIC00MTQ3LDcgKzQxNDcsNyBAQCB2b2lkIFdlYlBhZ2U6OmRyYXdSZWN0VG9JbWFn
ZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgY29ucwogICAg
ICAgICBBU1NFUlQoY29yZUZyYW1lLT5kb2N1bWVudCgpLT5wcmludGluZygpKTsKICNlbmRpZgog
Ci0gICAgICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1h
cDo6Y3JlYXRlU2hhcmVhYmxlKGltYWdlU2l6ZSwgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0Fs
cGhhKTsKKyAgICAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJl
YWJsZShpbWFnZVNpemUsIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CiAgICAgICAg
IGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsK
IAogICAgICAgICBmbG9hdCBwcmludGluZ1NjYWxlID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGltYWdl
U2l6ZS53aWR0aCgpKSAvIHJlY3Qud2lkdGgoKTsKQEAgLTQxNjUsNyArNDE2NSw3IEBAIHZvaWQg
V2ViUGFnZTo6ZHJhd1JlY3RUb0ltYWdlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5m
byYgcHJpbnRJbmZvLCBjb25zCiAgICAgICAgICAgICBtX3ByaW50Q29udGV4dC0+c3Bvb2xSZWN0
KCpncmFwaGljc0NvbnRleHQsIHJlY3QpOwogICAgICAgICB9CiAKLSAgICAgICAgaW1hZ2UgPSBX
ZWJJbWFnZTo6Y3JlYXRlKGJpdG1hcC5yZWxlYXNlKCkpOworICAgICAgICBpbWFnZSA9IFdlYklt
YWdlOjpjcmVhdGUoV1RGTW92ZShiaXRtYXApKTsKICAgICB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94eS5j
cHAKaW5kZXggZjlhODYzMDhmNThjOTk3MGM2NGRjNGU3MmU3NGE5NjIwNGFlOWFkYy4uYzZmYjcy
MTk2NDRhZDZkNDVlZjkzNmQ1ZGVmYmJmNzk0Y2ViMWE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJveHkuY3BwCkBAIC0z
NywxMiArMzcsMTIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIFBhc3NSZWZQdHI8V2ViUGFnZUdy
b3VwUHJveHk+IFdlYlBhZ2VHcm91cFByb3h5OjpjcmVhdGUoY29uc3QgV2ViUGFnZUdyb3VwRGF0
YSYgZGF0YSkKIHsKLSAgICBSZWZQdHI8V2ViUGFnZUdyb3VwUHJveHk+IHBhZ2VHcm91cCA9IGFk
b3B0UmVmKG5ldyBXZWJQYWdlR3JvdXBQcm94eShkYXRhKSk7Ci0gICAgCisgICAgYXV0byBwYWdl
R3JvdXAgPSBhZG9wdFJlZigqbmV3IFdlYlBhZ2VHcm91cFByb3h5KGRhdGEpKTsKKwogICAgIGlm
IChwYWdlR3JvdXAtPmlzVmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUoKSAmJiBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5pbmplY3RlZEJ1bmRsZSgpKQotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5pbmplY3RlZEJ1bmRsZSgpLT5kaWRJbml0aWFsaXplUGFnZUdyb3VwKHBhZ2VHcm91cC5n
ZXQoKSk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmluamVjdGVkQnVuZGxlKCkt
PmRpZEluaXRpYWxpemVQYWdlR3JvdXAocGFnZUdyb3VwLnB0cigpKTsKIAotICAgIHJldHVybiBw
YWdlR3JvdXAucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKHBhZ2VHcm91cCk7CiB9CiAK
IFdlYlBhZ2VHcm91cFByb3h5OjpXZWJQYWdlR3JvdXBQcm94eShjb25zdCBXZWJQYWdlR3JvdXBE
YXRhJiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tCmluZGV4IDZhODZm
MTcxYzJiMjA2Y2EyNjAzMTJlYWQ0OGRjYzMxOGZiMTQzYWYuLjU4MTVjZmU2MTBmZGQ0NmMwNDA1
ZGViZDQ0YmFjOGEwZTE4MzkxNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUu
bW0KQEAgLTI5NCw3ICsyOTQsNyBAQCBib29sIFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OlBy
b3BlcnRpZXM6OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlcgogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAgICBw
cm9wZXJ0aWVzLnRpbWluZ0Z1bmN0aW9ucy51bmNoZWNrZWRBcHBlbmQodGltaW5nRnVuY3Rpb24u
cmVsZWFzZSgpKTsKKyAgICAgICAgICAgIHByb3BlcnRpZXMudGltaW5nRnVuY3Rpb25zLnVuY2hl
Y2tlZEFwcGVuZChXVEZNb3ZlKHRpbWluZ0Z1bmN0aW9uKSk7CiAgICAgICAgIH0KICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZv
cm1DQUxheWVyUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcAppbmRleCAyMTllODNjMTE0MDc5YTUwZmJjYjA0
ZDYxMTE3N2E4YWY3Zjc4ZGM4Li4yNDc2ODI1MzI3ZTY0Y2UxOWI4MzA5OGE0ZDllOTk4NWVkNDgz
ODU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Bs
YXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCkBAIC01Niw3ICs1Niw3IEBAIFBh
c3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyUmVtb3RlPiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNy
ZWF0ZShMYXllclR5cGUgbGF5ZXJUCiAKICAgICBjb250ZXh0LmxheWVyV2FzQ3JlYXRlZCgqbGF5
ZXIsIGxheWVyVHlwZSk7CiAKLSAgICByZXR1cm4gbGF5ZXIucmVsZWFzZSgpOworICAgIHJldHVy
biBXVEZNb3ZlKGxheWVyKTsKIH0KIAogUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+
IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6Y3JlYXRlKFBsYXRmb3JtTGF5ZXIgKnBsYXRmb3JtTGF5
ZXIsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRleHQm
IGNvbnRleHQpCkBAIC02NiwxMSArNjYsMTEgQEAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGU+IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6Y3JlYXRlKFBsYXRmb3JtTGF5ZXIgKnAKIAog
UGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6
Y3JlYXRlKGNvbnN0IFBsYXRmb3JtQ0FMYXllclJlbW90ZSYgb3RoZXIsIFdlYkNvcmU6OlBsYXRm
b3JtQ0FMYXllckNsaWVudCogb3duZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRleHQmIGNvbnRleHQp
CiB7Ci0gICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllclJlbW90ZT4gbGF5ZXIgPSBhZG9wdFJlZihu
ZXcgUGxhdGZvcm1DQUxheWVyUmVtb3RlKG90aGVyLCBvd25lciwgY29udGV4dCkpOworICAgIGF1
dG8gbGF5ZXIgPSBhZG9wdFJlZigqbmV3IFBsYXRmb3JtQ0FMYXllclJlbW90ZShvdGhlciwgb3du
ZXIsIGNvbnRleHQpKTsKIAotICAgIGNvbnRleHQubGF5ZXJXYXNDcmVhdGVkKCpsYXllciwgb3Ro
ZXIubGF5ZXJUeXBlKCkpOworICAgIGNvbnRleHQubGF5ZXJXYXNDcmVhdGVkKGxheWVyLmdldCgp
LCBvdGhlci5sYXllclR5cGUoKSk7CiAKLSAgICByZXR1cm4gbGF5ZXIucmVsZWFzZSgpOworICAg
IHJldHVybiBXVEZNb3ZlKGxheWVyKTsKIH0KIAogUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpQbGF0
Zm9ybUNBTGF5ZXJSZW1vdGUoTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQ2xp
ZW50KiBvd25lciwgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYgY29udGV4dCkKQEAgLTk1LDEyICs5
NSwxMiBAQCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OlBsYXRmb3JtQ0FMYXllclJlbW90ZShjb25z
dCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUmIG90aGVyLAogCiBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FM
YXllcj4gUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjbG9uZShQbGF0Zm9ybUNBTGF5ZXJDbGllbnQq
IG93bmVyKSBjb25zdAogewotICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+IGNsb25l
ID0gUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjcmVhdGUoKnRoaXMsIG93bmVyLCAqbV9jb250ZXh0
KTsKKyAgICBhdXRvIGNsb25lID0gUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjcmVhdGUoKnRoaXMs
IG93bmVyLCAqbV9jb250ZXh0KTsKIAogICAgIHVwZGF0ZUNsb25lZExheWVyUHJvcGVydGllcygq
Y2xvbmUpOwogCiAgICAgY2xvbmUtPnNldENsb25lZExheWVyKHRoaXMpOwotICAgIHJldHVybiBj
bG9uZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1vdmUoY2xvbmUpOwogfQogCiBQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGU6On5QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVD
dXN0b20ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3Jt
Q0FMYXllclJlbW90ZUN1c3RvbS5tbQppbmRleCAxNTQyYTZiZmI0MTY5YzMxYWU5ZjhiZTYxZjQ5
MmI0ZTc2NjQyYmM3Li41N2IzY2MxMTEyMjQ5ZjcwODY5MGI1MzVjNjk0MTk2YjU0NGQzNGZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3Jt
Q0FMYXllclJlbW90ZUN1c3RvbS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbQpAQCAtNDgsMTAgKzQ4LDEw
IEBAIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHBsYXRmb3JtQ0FMYXllclBvaW50ZXIgPSBAIldL
UGxhdGZvcm1DQUxheWVyIjsKIAogUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+IFBs
YXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6Y3JlYXRlKFBsYXRmb3JtTGF5ZXIgKnBsYXRmb3Jt
TGF5ZXIsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRl
eHQmIGNvbnRleHQpCiB7Ci0gICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllclJlbW90ZT4gbGF5ZXIg
PSBhZG9wdFJlZihuZXcgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tKFBsYXRmb3JtQ0FMYXll
ckNvY29hOjpsYXllclR5cGVGb3JQbGF0Zm9ybUxheWVyKHBsYXRmb3JtTGF5ZXIpLCBwbGF0Zm9y
bUxheWVyLCBvd25lciwgY29udGV4dCkpOwotICAgIGNvbnRleHQubGF5ZXJXYXNDcmVhdGVkKCps
YXllciwgbGF5ZXItPmxheWVyVHlwZSgpKTsKKyAgICBhdXRvIGxheWVyID0gYWRvcHRSZWYoKm5l
dyBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20oUGxhdGZvcm1DQUxheWVyQ29jb2E6OmxheWVy
VHlwZUZvclBsYXRmb3JtTGF5ZXIocGxhdGZvcm1MYXllciksIHBsYXRmb3JtTGF5ZXIsIG93bmVy
LCBjb250ZXh0KSk7CisgICAgY29udGV4dC5sYXllcldhc0NyZWF0ZWQobGF5ZXIuZ2V0KCksIGxh
eWVyLT5sYXllclR5cGUoKSk7CiAKLSAgICByZXR1cm4gbGF5ZXIucmVsZWFzZSgpOworICAgIHJl
dHVybiBXVEZNb3ZlKGxheWVyKTsKIH0KIAogUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20oTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1M
YXllciAqIGN1c3RvbUxheWVyLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyLCBSZW1vdGVM
YXllclRyZWVDb250ZXh0JiBjb250ZXh0KQpAQCAtMTI3LDEzICsxMjcsMTMgQEAgUGFzc1JlZlB0
cjxXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI+IFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6
Y2xvbmUoUGxhdGZvcm0KICAgICAgICAgY29weUNvbnRlbnRzID0gZmFsc2U7CiAgICAgfQogCi0g
ICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllclJlbW90ZT4gY2xvbmUgPSBhZG9wdFJlZihuZXcgUGxh
dGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tKGxheWVyVHlwZSgpLCBjbG9uZWRMYXllci5nZXQoKSwg
b3duZXIsICpjb250ZXh0KCkpKTsKLSAgICBjb250ZXh0KCktPmxheWVyV2FzQ3JlYXRlZCgqY2xv
bmUsIGNsb25lLT5sYXllclR5cGUoKSk7CisgICAgYXV0byBjbG9uZSA9IGFkb3B0UmVmKCpuZXcg
UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tKGxheWVyVHlwZSgpLCBjbG9uZWRMYXllci5nZXQo
KSwgb3duZXIsICpjb250ZXh0KCkpKTsKKyAgICBjb250ZXh0KCktPmxheWVyV2FzQ3JlYXRlZChj
bG9uZS5nZXQoKSwgY2xvbmUtPmxheWVyVHlwZSgpKTsKIAotICAgIHVwZGF0ZUNsb25lZExheWVy
UHJvcGVydGllcygqY2xvbmUsIGNvcHlDb250ZW50cyk7CisgICAgdXBkYXRlQ2xvbmVkTGF5ZXJQ
cm9wZXJ0aWVzKGNsb25lLmdldCgpLCBjb3B5Q29udGVudHMpOwogCiAgICAgY2xvbmUtPnNldENs
b25lZExheWVyKHRoaXMpOwotICAgIHJldHVybiBjbG9uZS5yZWxlYXNlKCk7CisgICAgcmV0dXJu
IFdURk1vdmUoY2xvbmUpOwogfQogCiBDRlR5cGVSZWYgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3Vz
dG9tOjpjb250ZW50cygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5t
bQppbmRleCBmZmU4Y2NmNDgyMmYzYWU2Nzk3Mzg0ZDU0MzQ3MWM0ODYzOTM4NjNmLi45NmNlNzM3
ZjEyYzMzNGQ5YTUzMmU1ZjFmZTlhMDczOTg5YjA4YjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWEubW0KQEAgLTExMSw5ICsxMTEsOSBAQCBHcmFwaGljc0xheWVyRmFjdG9y
eSogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkKIAog
UmVmUHRyPERpc3BsYXlSZWZyZXNoTW9uaXRvcj4gUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6
OmNyZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRvcihQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQp
CiB7Ci0gICAgUmVmUHRyPFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcj4gbW9u
aXRvciA9IFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcjo6Y3JlYXRlKGRpc3Bs
YXlJRCwgKnRoaXMpOwotICAgIG1fZGlzcGxheVJlZnJlc2hNb25pdG9ycy5hZGQobW9uaXRvci5n
ZXQoKSk7Ci0gICAgcmV0dXJuIG1vbml0b3IucmVsZWFzZSgpOworICAgIGF1dG8gbW9uaXRvciA9
IFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcjo6Y3JlYXRlKGRpc3BsYXlJRCwg
KnRoaXMpOworICAgIG1fZGlzcGxheVJlZnJlc2hNb25pdG9ycy5hZGQobW9uaXRvci5wdHIoKSk7
CisgICAgcmV0dXJuIFdURk1vdmUobW9uaXRvcik7CiB9CiAKIHZvaWQgUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWE6OndpbGxEZXN0cm95RGlzcGxheVJlZnJlc2hNb25pdG9yKERpc3BsYXlSZWZy
ZXNoTW9uaXRvciogbW9uaXRvcikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCAyOTg3ZjEzYmQwOTY5MGViYzNiY2I2OTA4ZThmZGMyYjNkNjJmMzU1
Li5iMTc1ODViYjE5NGI1OWJhMDFiNTdiMmEyNTMxNTQ1NWRhZDcxNTZlIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIw
MTYtMDYtMTUgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJl
bW92ZSBSZWZQdHI6OnJlbGVhc2UoKSBhbmQgY2hhbmdlIGNhbGxzIHNpdGVzIHRvIHVzZSBXVEZN
b3ZlKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
ODM2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
ZlB0cjo6cmVsZWFzZSgpIHJlbGVhc2VzIGl0cyBtYW5hZ2VkIHBvaW50ZXIgYXdrd2FyZGx5LiBJ
dCdzIG1vcmUKKyAgICAgICAgZGlyZWN0IGFuZCBjbGVhcmVyIHRvIHVzZSBXVEZNb3ZlIHRvIHRy
YW5zZmVyIG93bmVyc2hpcCBvZiB0aGUgbWFuYWdlZAorICAgICAgICBwb2ludGVyLgorCisgICAg
ICAgIEFzIHBhcnQgb2YgdGhpcyBjbGVhbnVwLCBhbHNvIGNoYW5nZSBhIGxvdCBvZiBleHBsaWNp
dCBkYXRhIHR5cGVzIHRvCisgICAgICAgICdhdXRvJy4KKworICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL21hYy9QaXhlbER1bXBTdXBwb3J0TWFjLm1tOgorICAgICAgICAoY3JlYXRlQml0bWFwQ29u
dGV4dEZyb21XZWJWaWV3KToKKyAgICAgICAgKGNyZWF0ZVBhZ2VkQml0bWFwQ29udGV4dCk6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW06CisgICAgICAgIChU
ZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbik6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvSGFzaENvdW50ZWRTZXQuY3BwOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxNi0wNi0xNSAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIEltcHJvdmUgSGFzaE1hcCBhbmQgSGFz
aFNldCBzdXBwb3J0IGZvciBSZWYKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9QaXhlbER1bXBTdXBwb3J0TWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1BpeGVs
RHVtcFN1cHBvcnRNYWMubW0KaW5kZXggZTMzMzRlZmU1MzI5MGMzZGRkYzVmNWFlYTU0ODg3MWE3
NmRmYWJmMS4uOWY5OTZkMzJjMTBiYWE4OTc1OGMyOGIxODhjMjgwODQxMDliZjIxMCAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1BpeGVsRHVtcFN1cHBvcnRNYWMubW0KKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1BpeGVsRHVtcFN1cHBvcnRNYWMubW0KQEAgLTEy
MCw3ICsxMjAsNyBAQCBQYXNzUmVmUHRyPEJpdG1hcENvbnRleHQ+IGNyZWF0ZUJpdG1hcENvbnRl
eHRGcm9tV2ViVmlldyhib29sIG9uc2NyZWVuLCBib29sIGluYwogICAgIHNpemVfdCBwaXhlbHNI
aWdoID0gc3RhdGljX2Nhc3Q8c2l6ZV90Pih3ZWJWaWV3U2l6ZS5oZWlnaHQgKiBkZXZpY2VTY2Fs
ZUZhY3Rvcik7CiAgICAgc2l6ZV90IHJvd0J5dGVzID0gMDsKICAgICB2b2lkKiBidWZmZXIgPSBu
dWxscHRyOwotICAgIFJlZlB0cjxCaXRtYXBDb250ZXh0PiBiaXRtYXBDb250ZXh0ID0gY3JlYXRl
Qml0bWFwQ29udGV4dChwaXhlbHNXaWRlLCBwaXhlbHNIaWdoLCByb3dCeXRlcywgYnVmZmVyKTsK
KyAgICBhdXRvIGJpdG1hcENvbnRleHQgPSBjcmVhdGVCaXRtYXBDb250ZXh0KHBpeGVsc1dpZGUs
IHBpeGVsc0hpZ2gsIHJvd0J5dGVzLCBidWZmZXIpOwogICAgIGlmICghYml0bWFwQ29udGV4dCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBiaXRt
YXBDb250ZXh0LT5jZ0NvbnRleHQoKTsKQEAgLTE5NCw3ICsxOTQsNyBAQCBQYXNzUmVmUHRyPEJp
dG1hcENvbnRleHQ+IGNyZWF0ZUJpdG1hcENvbnRleHRGcm9tV2ViVmlldyhib29sIG9uc2NyZWVu
LCBib29sIGluYwogICAgICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOwogICAg
IH0KICAgICAKLSAgICByZXR1cm4gYml0bWFwQ29udGV4dC5yZWxlYXNlKCk7CisgICAgcmV0dXJu
IGJpdG1hcENvbnRleHQ7CiB9CiAKIFBhc3NSZWZQdHI8Qml0bWFwQ29udGV4dD4gY3JlYXRlUGFn
ZWRCaXRtYXBDb250ZXh0KCkKQEAgLTIwNywxMCArMjA3LDEwIEBAIFBhc3NSZWZQdHI8Qml0bWFw
Q29udGV4dD4gY3JlYXRlUGFnZWRCaXRtYXBDb250ZXh0KCkKIAogICAgIGludCB0b3RhbEhlaWdo
dCA9IG51bWJlck9mUGFnZXMgKiAocGFnZUhlaWdodEluUGl4ZWxzICsgMSkgLSAxOwogCi0gICAg
UmVmUHRyPEJpdG1hcENvbnRleHQ+IGJpdG1hcENvbnRleHQgPSBjcmVhdGVCaXRtYXBDb250ZXh0
KHBhZ2VXaWR0aEluUGl4ZWxzLCB0b3RhbEhlaWdodCwgcm93Qnl0ZXMsIGJ1ZmZlcik7CisgICAg
YXV0byBiaXRtYXBDb250ZXh0ID0gY3JlYXRlQml0bWFwQ29udGV4dChwYWdlV2lkdGhJblBpeGVs
cywgdG90YWxIZWlnaHQsIHJvd0J5dGVzLCBidWZmZXIpOwogICAgIENHQ29udGV4dFJlZiBjb250
ZXh0ID0gYml0bWFwQ29udGV4dC0+Y2dDb250ZXh0KCk7CiAgICAgQ0dDb250ZXh0VHJhbnNsYXRl
Q1RNKGNvbnRleHQsIDAsIHRvdGFsSGVpZ2h0KTsKICAgICBDR0NvbnRleHRTY2FsZUNUTShjb250
ZXh0LCAxLCAtMSk7CiAgICAgW21haW5GcmFtZSBwcmludFRvQ0dDb250ZXh0OmNvbnRleHQgcGFn
ZVdpZHRoOnBhZ2VXaWR0aEluUGl4ZWxzIHBhZ2VIZWlnaHQ6cGFnZUhlaWdodEluUGl4ZWxzXTsK
LSAgICByZXR1cm4gYml0bWFwQ29udGV4dC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGJpdG1hcENv
bnRleHQ7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5l
ck1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCmluZGV4
IGU0ZjUyNDgyODkzYWY0MjdjZWQxOTY5ZjcxZjM4MTYzZjI5OGQxN2EuLjQ0NWY0NDk0OWY5OTNm
YjIwNmEyMTBiMTQyNjZjYTUyZjM2Y2E5NjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9U
ZXN0UnVubmVyTWFjLm1tCkBAIC00MjcsOCArNDI3LDggQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRN
b2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUs
IGQKICAgICAgICAgLy8gVGVzdCB0aGUgZXhwb3NlZCBBUEkuCiAgICAgICAgIHBvc2l0aW9uID0g
W1tXZWJHZW9sb2NhdGlvblBvc2l0aW9uIGFsbG9jXSBpbml0V2l0aFRpbWVzdGFtcDpjdXJyZW50
VGltZSgpIGxhdGl0dWRlOmxhdGl0dWRlIGxvbmdpdHVkZTpsb25naXR1ZGUgYWNjdXJhY3k6YWNj
dXJhY3ldOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFJlZlB0cjxXZWJDb3JlOjpHZW9sb2NhdGlv
blBvc2l0aW9uPiBjb3JlR2VvbG9jYXRpb25Qb3NpdGlvbiA9IFdlYkNvcmU6Okdlb2xvY2F0aW9u
UG9zaXRpb246OmNyZWF0ZShjdXJyZW50VGltZSgpLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1
cmFjeSwgcHJvdmlkZXNBbHRpdHVkZSwgYWx0aXR1ZGUsIHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFj
eSwgYWx0aXR1ZGVBY2N1cmFjeSwgcHJvdmlkZXNIZWFkaW5nLCBoZWFkaW5nLCBwcm92aWRlc1Nw
ZWVkLCBzcGVlZCk7Ci0gICAgICAgIHBvc2l0aW9uID0gW1tXZWJHZW9sb2NhdGlvblBvc2l0aW9u
IGFsbG9jXSBpbml0V2l0aEdlb2xvY2F0aW9uUG9zaXRpb246KGNvcmVHZW9sb2NhdGlvblBvc2l0
aW9uLnJlbGVhc2UoKSldOworICAgICAgICBhdXRvIGNvcmVHZW9sb2NhdGlvblBvc2l0aW9uID0g
V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKGN1cnJlbnRUaW1lKCksIGxhdGl0
dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5LCBwcm92aWRlc0FsdGl0dWRlLCBhbHRpdHVkZSwgcHJv
dmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBhbHRpdHVkZUFjY3VyYWN5LCBwcm92aWRlc0hlYWRpbmcs
IGhlYWRpbmcsIHByb3ZpZGVzU3BlZWQsIHNwZWVkKTsKKyAgICAgICAgcG9zaXRpb24gPSBbW1dl
Ykdlb2xvY2F0aW9uUG9zaXRpb24gYWxsb2NdIGluaXRXaXRoR2VvbG9jYXRpb25Qb3NpdGlvbjoo
V1RGTW92ZShjb3JlR2VvbG9jYXRpb25Qb3NpdGlvbikpXTsKICAgICB9CiAgICAgW1tNb2NrR2Vv
bG9jYXRpb25Qcm92aWRlciBzaGFyZWRdIHNldFBvc2l0aW9uOnBvc2l0aW9uXTsKICAgICBbcG9z
aXRpb24gcmVsZWFzZV07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9IYXNoQ291bnRlZFNldC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNo
Q291bnRlZFNldC5jcHAKaW5kZXggNGMxYWZkMTA1YmYxZjcwMjMwNzNmNjYyYzI2ZmFiODVjYjgz
ODVmMy4uNmE3YmIxOWI1NTM5ODJiMzM1MzkwZWZjYmY3M2M0N2I5YWRmYTk1OSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaENvdW50ZWRTZXQuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hDb3VudGVkU2V0LmNwcApAQCAtMzcw
LDcgKzM3MCw3IEBAIFRFU1QoV1RGX0hhc2hDb3VudGVkU2V0LCBSZWZQdHJLZXlfQWRkVXNpbmdS
ZWxlYXNlKQogICAgIAogICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOwogICAgIFJlZlB0cjxS
ZWZMb2dnZXI+IHB0cigmYSk7Ci0gICAgaGFzaENvdW50ZWRTZXQuYWRkKHB0ci5yZWxlYXNlKCkp
OworICAgIGhhc2hDb3VudGVkU2V0LmFkZChXVEZNb3ZlKHB0cikpOwogICAgIAogICAgIEVYUEVD
VF9TVFJFUSgicmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIH0KQEAgLTQzNiw3ICs0
MzYsNyBAQCBURVNUKFdURl9IYXNoQ291bnRlZFNldCwgUmVmUHRyS2V5X0FkZFVzaW5nUmVsZWFz
ZUtleUFscmVhZHlQcmVzZW50KQogICAgIAogICAgIHsKICAgICAgICAgUmVmUHRyPFJlZkxvZ2dl
cj4gcHRyMigmYSk7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gaGFzaENvdW50ZWRTZXQuYWRk
KHB0cjIucmVsZWFzZSgpKTsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBoYXNoQ291bnRlZFNl
dC5hZGQoV1RGTW92ZShwdHIyKSk7CiAgICAgICAgIEVYUEVDVF9GQUxTRShhZGRSZXN1bHQuaXNO
ZXdFbnRyeSk7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvSGFzaE1hcC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNo
TWFwLmNwcAppbmRleCAyOTA2ZTdiNWFkNWUyNmJlMWQzOGM5M2ViZjM3Y2Q5MTU3ZjU0ZjY1Li43
OTczYTdiNjNhOGE4ZmQ3MTEwYTgxYmMyMmZhNTRjYjM1NDUxNjMxIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoTWFwLmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9IYXNoTWFwLmNwcApAQCAtMzA5LDcgKzMwOSw3IEBAIFRFU1QoV1RG
X0hhc2hNYXAsIFJlZlB0cktleV9BZGRVc2luZ1JlbGVhc2UpCiAKICAgICBEZXJpdmVkUmVmTG9n
Z2VyIGEoImEiKTsKICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwdHIoJmEpOwotICAgIG1hcC5hZGQo
cHRyLnJlbGVhc2UoKSwgMCk7CisgICAgbWFwLmFkZChXVEZNb3ZlKHB0ciksIDApOwogCiAgICAg
RVhQRUNUX1NUUkVRKCJyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogfQpAQCAtMzcz
LDcgKzM3Myw3IEBAIFRFU1QoV1RGX0hhc2hNYXAsIFJlZlB0cktleV9BZGRVc2luZ1JlbGVhc2VL
ZXlBbHJlYWR5UHJlc2VudCkKIAogICAgIHsKICAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcHRy
MigmYSk7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbWFwLmFkZChwdHIyLnJlbGVhc2UoKSwg
MCk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbWFwLmFkZChXVEZNb3ZlKHB0cjIpLCAwKTsK
ICAgICAgICAgRVhQRUNUX0ZBTFNFKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICAgICB9CiAKQEAg
LTQxOSw3ICs0MTksNyBAQCBURVNUKFdURl9IYXNoTWFwLCBSZWZQdHJLZXlfU2V0VXNpbmdSZWxl
YXNlKQogCiAgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CiAgICAgUmVmUHRyPFJlZkxvZ2dl
cj4gcHRyKCZhKTsKLSAgICBtYXAuc2V0KHB0ci5yZWxlYXNlKCksIDApOworICAgIG1hcC5zZXQo
V1RGTW92ZShwdHIpLCAwKTsKIAogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpICIsIHRha2VMb2dT
dHIoKS5jX3N0cigpKTsKIH0KQEAgLTQ4MSw3ICs0ODEsNyBAQCBURVNUKFdURl9IYXNoTWFwLCBS
ZWZQdHJLZXlfU2V0VXNpbmdSZWxlYXNlS2V5QWxyZWFkeVByZXNlbnQpCiAKICAgICB7CiAgICAg
ICAgIFJlZlB0cjxSZWZMb2dnZXI+IHB0cjIoJmEpOwotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9
IG1hcC5zZXQocHRyMi5yZWxlYXNlKCksIDEpOworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1h
cC5zZXQoV1RGTW92ZShwdHIyKSwgMSk7CiAgICAgICAgIEVYUEVDVF9GQUxTRShhZGRSZXN1bHQu
aXNOZXdFbnRyeSk7CiAgICAgICAgIEVYUEVDVF9FUSgxLCBtYXAuZ2V0KHB0ci5nZXQoKSkpOwog
ICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281513</attachid>
            <date>2016-06-16 17:31:56 -0700</date>
            <delta_ts>2016-06-17 12:20:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158369-20160616173154.patch</filename>
            <type>text/plain</type>
            <size>296693</size>
            <attacher name="Keith Rollin">krollin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyMTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
YzQyYWM2NmJlMzA5NzZjMDExZGE3NjIzNmM0NWRkMTY4MDZiNmMzLi5mYmNiYWZjMTQ0MDc5NTYw
NjhmZTJlZjVkMzM2ZmU2MjM2NjQ0MmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NSBAQAorMjAxNi0wNi0xNiAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVtb3ZlIFJlZlB0cjo6cmVsZWFzZSgpIGFuZCBjaGFuZ2UgY2FsbHMgc2l0
ZXMgdG8gdXNlIFdURk1vdmUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU4MzY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmVmUHRyOjpyZWxlYXNlKCkgcmVsZWFzZXMgaXRzIG1hbmFnZWQgcG9pbnRl
ciBhd2t3YXJkbHkuIEl0J3MgbW9yZQorICAgICAgICBkaXJlY3QgYW5kIGNsZWFyZXIgdG8gdXNl
IFdURk1vdmUgdG8gdHJhbnNmZXIgb3duZXJzaGlwIG9mIHRoZSBtYW5hZ2VkCisgICAgICAgIHBv
aW50ZXIuCisKKyAgICAgICAgQXMgcGFydCBvZiB0aGlzIGNsZWFudXAsIGFsc28gY2hhbmdlIGEg
bG90IG9mIGV4cGxpY2l0IGRhdGEgdHlwZXMgdG8KKyAgICAgICAgJ2F1dG8nLgorCisgICAgICAg
ICogQVBJL0pTT2JqZWN0UmVmLmNwcDoKKyAgICAgICAgKEpTQ2xhc3NDcmVhdGUpOgorICAgICAg
ICAqIEFQSS9KU1NjcmlwdFJlZi5jcHA6CisgICAgICAgICogQVBJL0pTVmFsdWVSZWYuY3BwOgor
ICAgICAgICAoSlNWYWx1ZVRvU3RyaW5nQ29weSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL1N0
YXRpY1Byb3BlcnR5QW5hbHl6ZXIuaDoKKyAgICAgICAgKEpTQzo6U3RhdGljUHJvcGVydHlBbmFs
eXplcjo6bmV3T2JqZWN0KToKKyAgICAgICAgKEpTQzo6U3RhdGljUHJvcGVydHlBbmFseXplcjo6
bW92KToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHA6CisgICAgICAg
IChKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lOjppbnZhbGlkYXRlKToKKyAgICAgICAgKiBkZmcvREZH
SklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxl
KToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcDoKKyAgICAgICAgKEluc3BlY3Rv
cjo6SW5zcGVjdG9yVmFsdWU6OnBhcnNlSlNPTik6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50
OjphY3RpdmF0ZUV4dHJhRG9tYWluKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdl
bnQ6OmFjdGl2YXRlRXh0cmFEb21haW5zKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uUHJvYmUpOgorICAgICAgICAqIGluc3BlY3Rv
ci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3I6OnJlY2VpdmVkU2V0dXBNZXNzYWdlKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5j
cHA6CisgICAgICAgIChKU0M6OmxpbmtQb2x5bW9ycGhpY0NhbGwpOgorICAgICAgICAqIHJ1bnRp
bWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgICog
cnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25z
dHJ1Y3RBcnJheUJ1ZmZlcik6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5o
OgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU5hbWVBcnJheTo6cmVsZWFzZURhdGEpOgorICAgICAg
ICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b1N0
cnVjdHVyZVNoYXBlKToKKyAgICAgICAgKiBydW50aW1lL1R5cGVTZXQuY3BwOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmVTaGFwZTo6bWVyZ2UpOgorICAgICAgICAqIHRvb2xzL0Z1bmN0aW9uT3Zl
cnJpZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6ZU92ZXJyaWRlSW5mbyk6CisKIDIw
MTYtMDYtMTYgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBj
b2xsZWN0aW5nIG9mIExMSU5UIHNsb3cgcGF0aCBzdGF0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhYjQ3NDBh
MmU1NGZlMjRmOGNjNzI1YWU4ZGI0NzBhNTFlZDEzYWM4Li42Y2ZjMTZkZWEzNzRkZjNhNTc4Nzc5
ZGU0ODdkNjZkNjRlNDYyY2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIwIEBACisyMDE2LTA2
LTE2ICBLZWl0aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUg
UmVmUHRyOjpyZWxlYXNlKCkgYW5kIGNoYW5nZSBjYWxscyBzaXRlcyB0byB1c2UgV1RGTW92ZSgp
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgzNjkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZQdHI6
OnJlbGVhc2UoKSByZWxlYXNlcyBpdHMgbWFuYWdlZCBwb2ludGVyIGF3a3dhcmRseS4gSXQncyBt
b3JlCisgICAgICAgIGRpcmVjdCBhbmQgY2xlYXJlciB0byB1c2UgV1RGTW92ZSB0byB0cmFuc2Zl
ciBvd25lcnNoaXAgb2YgdGhlIG1hbmFnZWQKKyAgICAgICAgcG9pbnRlci4KKworICAgICAgICBB
cyBwYXJ0IG9mIHRoaXMgY2xlYW51cCwgYWxzbyBjaGFuZ2UgYSBsb3Qgb2YgZXhwbGljaXQgZGF0
YSB0eXBlcyB0bworICAgICAgICAnYXV0bycuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzOiB0aGVy
ZSdzIG5vIG5ldyBmdW5jdGlvbmFsaXR5LCBqdXN0IGEgcmVmYWN0b3Jpbmcgb2YKKyAgICAgICAg
ZXhpc3RpbmcgY29kZS4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVm
ZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZVNhbXBsZXNGcm9tVHJhY2tCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpwcm92aWRlTWVkaWFEYXRhKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6c3RhcnQpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6On5E
YXRhYmFzZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxDYWxsYmFja1dyYXBw
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTENhbGxiYWNrV3JhcHBlcjo6Y2xlYXIpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmhhbmRsZVBvc3RNZXNzYWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hpc3RvcnlD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIaXN0b3J5OjpwdXNoU3RhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNIaXN0b3J5OjpyZXBsYWNlU3RhdGUpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZVBv
c3RNZXNzYWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFu
Y2VGb3JXaWRnZXQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZFRlcm1pbmFs
KToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmNvcHlQcm9wZXJ0aWVzSW5TZXQp
OgorICAgICAgICAqIGNzcy9TVkdDU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyOjpwYXJzZVNWR1ZhbHVlKToKKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ29udmVy
dGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRT
aGFwZVZhbHVlKToKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlUHJvcGVydGllczo6Y29weVByb3BlcnRpZXNJblNldCk6CisgICAgICAg
ICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZl
cjo6bG9hZFBlbmRpbmdJbWFnZXMpOgorICAgICAgICAqIGRvbS9JbmxpbmVTdHlsZVNoZWV0T3du
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lU3R5bGVTaGVldE93bmVyOjpjbGVhclNo
ZWV0KToKKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjphcHBseUlubGluZVN0eWxlVG9Ob2RlUmFuZ2Up
OgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlbW92ZUNoaWxkcmVuSW5SYW5nZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVtb3ZlTm9kZUFuZFBydW5l
QW5jZXN0b3JzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjpwcnVu
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVwbGFjZVNlbGVj
dGVkVGV4dEluTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6
cmViYWxhbmNlV2hpdGVzcGFjZU9uVGV4dFN1YnN0cmluZyk6CisgICAgICAgICogZWRpdGluZy9D
cmVhdGVMaW5rQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcmVhdGVMaW5rQ29tbWFu
ZDo6ZG9BcHBseSk6CisgICAgICAgICogZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjptZXJnZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRpbmdTdHlsZTo6bWVyZ2VTdHlsZUZyb21SdWxlc0ZvclNlcmlhbGl6YXRpb24pOgorICAg
ICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsZWFyVGV4dENv
bW1hbmQ6OkNyZWF0ZUFuZEFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya0Fs
bE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyk6CisgICAgICAgICogZWRpdGluZy9F
ZGl0b3JDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVJbnNlcnROb2RlKToK
KyAgICAgICAgKiBlZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc2VydFRleHRDb21tYW5kOjpwZXJmb3JtT3ZlcndyaXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc2VydFRleHRDb21tYW5kOjppbnNlcnRUYWIpOgorICAgICAgICAqIGVkaXRpbmcvUmVt
b3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICAq
IGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVwbGFjZW1lbnRGcmFnbWVudDo6cmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6bW92ZU5vZGVPdXRPZkFuY2Vz
dG9yKToKKyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0
ZSk6CisgICAgICAgICogaHRtbC9IVE1MRm9udEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEZvbnRFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUp
OgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxGb3JtRWxlbWVudDo6cHJlcGFyZUZvclN1Ym1pc3Npb24pOgorICAgICAgICAqIGh0bWwv
SFRNTFRhYmxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsZWFrQm9yZGVyU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6bGVha0dyb3VwQm9yZGVyU3R5bGUpOgorICAgICAgICAqIGh0
bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RG9jdW1lbnRQYXJzZXI6OnJ1blNjcmlwdHNGb3JQYXVzZWRUcmVlQnVpbGRlcik6CisgICAgICAg
ICogaHRtbC90cmFjay9JbmJhbmREYXRhVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkluYmFuZERhdGFUZXh0VHJhY2s6OmFkZERhdGFDdWUpOgorICAgICAgICAqIGh0bWwvdHJhY2sv
SW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5l
cmljVGV4dFRyYWNrOjpuZXdDdWVzUGFyc2VkKToKKyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFu
ZFdlYlZUVFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRXZWJWVFRUZXh0
VHJhY2s6Om5ld0N1ZXNQYXJzZWQpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3Vl
TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVMaXN0OjphZGQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0SW5saW5lU3R5bGVzRm9yTm9kZSk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRPTUFnZW50OjpwdXNoQ2hpbGROb2Rlc1RvRnJvbnRlbmQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3Rvck5ldHdvcmtBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3
b3JrQWdlbnQ6OmxvYWRSZXNvdXJjZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0
eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6YnVp
bGRPYmplY3RGb3JTZWxlY3Rvckxpc3QpOgorICAgICAgICAqIGxvYWRlci9Gb3JtU3VibWlzc2lv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtU3VibWlzc2lvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OmxvYWRVUkxJbnRvQ2hpbGRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6bG9hZFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1
ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlByb2dyZXNzVHJhY2tlcjo6ZmluYWxQcm9ncmVzc0NvbXBsZXRlKToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlzYXNzb2NpYXRlRG9jdW1lbnRMb2FkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2Fk
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2hlY2tJZkxv
YWRJc0NvbXBsZXRlKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OmxvYWRDYWNoZUdyb3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpjYWNoZUdyb3VwRm9yVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlOjpmYWxsYmFja0NhY2hlR3JvdXBGb3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSk6CisgICAgICAgICogbG9hZGVyL2Fy
Y2hpdmUvQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
cmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOjpwb3BTdWJmcmFtZUFyY2hpdmUpOgorICAgICAgICAq
IGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lX
ZWJBcmNoaXZlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6
Y3JlYXRlRnJvbVNlbGVjdGlvbik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjcmVhdGVJbWFnZSk6CisgICAg
ICAgICogbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklj
b25EYXRhYmFzZTo6c2V0SWNvbkRhdGFGb3JJY29uVVJMKToKKyAgICAgICAgKFdlYkNvcmU6Oklj
b25EYXRhYmFzZTo6Z2V0T3JDcmVhdGVJY29uUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6Oklj
b25EYXRhYmFzZTo6cmVhZEZyb21EYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0
YWJhc2U6OmdldEltYWdlRGF0YUZvckljb25VUkxGcm9tU1FMRGF0YWJhc2UpOgorICAgICAgICAq
IHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6c2Vzc2lv
blN0b3JhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpsb2NhbFN0b3JhZ2UpOgor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3ApOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0Nv
bXBvc2l0ZUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVBbmltYXRp
b246OnVwZGF0ZVRyYW5zaXRpb25zKToKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5Ojpy
ZXBvcnRWaW9sYXRpb24pOgorICAgICAgICAqIHBhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRy
b2xsZXIubW06CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpj
cmVhdGVPdmVybGF5SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNPdmVybGF5
Q29udHJvbGxlcjo6ZGV0ZXJtaW5lQWN0aXZlSGlnaGxpZ2h0KToKKyAgICAgICAgKiBwYWdlL3Nj
cm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpB
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZWxlYXNlU2Nyb2xsaW5nVHJlZSk6CisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6Y2xvbmVBbmRSZXNldCk6CisgICAgICAgICogcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGluZ1N0YXRlVHJlZTo6YXR0YWNoTm9kZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJU
RkVsZXZhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRDb25jYXRlbmF0ZWRJbXB1bHNl
UmVzcG9uc2VzRm9yU3ViamVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxh
eVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVm
cmVzaE1vbml0b3JNYW5hZ2VyOjpjcmVhdGVNb25pdG9yRm9yQ2xpZW50KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRDYXNjYWRlRm9udHM6OmdseXBoRGF0YUZvclN5c3RlbUZhbGxiYWNrKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Ri5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9j
ZXNzQXR0cmlidXRlZFN0cmluZ3MpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9NZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDOjp1cGRhdGVPcHRpb25zKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpw
cm9jZXNzQ29kZWRGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhp
Y3NMYXllckNBLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNB
TGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpjcmVhdGVDb21w
YXRpYmxlTGF5ZXJPclRha2VGcm9tUG9vbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJE
YXRhOjpnZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ckVmZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmFzVW5tdWx0aXBs
aWVkSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojphc1ByZW11bHRpcGxp
ZWRJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUZvckN1cnJl
bnRHTENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50
UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjpjcmVhdGVNZWRpYVN0cmVhbSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6dmFsaWRh
dGVSZXF1ZXN0Q29uc3RyYWludHMpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXI6OmNyZWF0ZU1lZGlhU3RyZWFtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlZ2lz
dHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZWdpc3Ry
eUltcGw6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1D
Rk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmb3JtQ3JlYXRlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpZGlDb250ZXh0
Ojpjb3B5U3RhY2tSZW1vdmluZ1VuaWNvZGVFbWJlZGRpbmdDb250ZXh0cyk6CisgICAgICAgICog
cmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZp
bHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjcmVhdGVTY3JvbGxiYXIp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxpc3RCb3g6OmNyZWF0ZVNjcm9sbGJhcik6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlck1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFJlbmRlck1lbnVMaXN0OjpjcmVhdGVTY3Jv
bGxiYXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTZWFyY2hGaWVsZDo6Y3JlYXRlU2Nyb2xsYmFyKToKKyAgICAg
ICAgKiByZXBsYXkvUmVwbGF5Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXBs
YXlDb250cm9sbGVyOjp1bmxvYWRTZWdtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRkVEaWZmdXNl
TGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1l
bnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdMaXN0UHJvcGVydHkuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3RQcm9wZXJ0eTo6Z2V0SXRlbVZhbHVlc0FuZFdyYXBw
ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3RQcm9wZXJ0eTo6aW5zZXJ0SXRlbUJlZm9y
ZVZhbHVlc0FuZFdyYXBwZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3RQcm9wZXJ0eTo6
cmVtb3ZlSXRlbVZhbHVlc0FuZFdyYXBwZXJzKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclRo
cmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OndvcmtlclRocmVhZCk6
CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhN
TEh0dHBSZXF1ZXN0OjppbnRlcm5hbEFib3J0KToKKyAgICAgICAgKiB4bWwvWFBhdGhTdGVwLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpTdGVwOjpub2Rlc0luQXhpcyk6CisKIDIwMTYt
MDYtMTYgIEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24uY29tPgogCiAg
ICAgICAgIFdlYlJUQzogQ2hlY2sgdHlwZSBvZiB0aGlzIGluIFJUQ1BlZXJDb25uZWN0aW9uIEpT
IGJ1aWx0LWluIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2MjgyYWMwMDYxMWMwODRmMTEyNDI4YzMw
NjVlYzZlZDMwOGUyZDMxLi4yOWJiZjg3ZDMyNDVjYTQ4NGQ2ZTY5YzhkODBkNDY0ZmE1NDY4OWM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE2LTA2LTE2ICBLZWl0aCBSb2xsaW4gIDxr
cm9sbGluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgUmVmUHRyOjpyZWxlYXNlKCkgYW5k
IGNoYW5nZSBjYWxscyBzaXRlcyB0byB1c2UgV1RGTW92ZSgpCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgzNjkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZQdHI6OnJlbGVhc2UoKSByZWxlYXNlcyBp
dHMgbWFuYWdlZCBwb2ludGVyIGF3a3dhcmRseS4gSXQncyBtb3JlCisgICAgICAgIGRpcmVjdCBh
bmQgY2xlYXJlciB0byB1c2UgV1RGTW92ZSB0byB0cmFuc2ZlciBvd25lcnNoaXAgb2YgdGhlIG1h
bmFnZWQKKyAgICAgICAgcG9pbnRlci4KKworICAgICAgICBBcyBwYXJ0IG9mIHRoaXMgY2xlYW51
cCwgYWxzbyBjaGFuZ2UgYSBsb3Qgb2YgZXhwbGljaXQgZGF0YSB0eXBlcyB0bworICAgICAgICAn
YXV0bycuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdG9yYWdlQXJlYUltcGw6OnNldEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6
U3RvcmFnZUFyZWFJbXBsOjpyZW1vdmVJdGVtKToKKwogMjAxNi0wNi0xMyAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBXZWJTb2NrZXRQ
cm92aWRlciBzdHViCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggNzU3ZDJhMDQyMzU3NmQ4NDEzNDgyYTc1
YjM1ZTA4ZGM2OTlmMmU1Mi4uYjRhMjMxMmY4Y2JlZTAwYjExNzk2YWU3OWZkYjRmNTFiM2JlYmJk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE2LTA2LTE2ICBLZWl0aCBS
b2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgUmVmUHRyOjpyZWxl
YXNlKCkgYW5kIGNoYW5nZSBjYWxscyBzaXRlcyB0byB1c2UgV1RGTW92ZSgpCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgzNjkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZQdHI6OnJlbGVhc2UoKSBy
ZWxlYXNlcyBpdHMgbWFuYWdlZCBwb2ludGVyIGF3a3dhcmRseS4gSXQncyBtb3JlCisgICAgICAg
IGRpcmVjdCBhbmQgY2xlYXJlciB0byB1c2UgV1RGTW92ZSB0byB0cmFuc2ZlciBvd25lcnNoaXAg
b2YgdGhlIG1hbmFnZWQKKyAgICAgICAgcG9pbnRlci4KKworICAgICAgICBBcyBwYXJ0IG9mIHRo
aXMgY2xlYW51cCwgYWxzbyBjaGFuZ2UgYSBsb3Qgb2YgZXhwbGljaXQgZGF0YSB0eXBlcyB0bwor
ICAgICAgICAnYXV0bycuCisKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdp
bkhvc3RNYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkhvc3RNYW5h
Z2VyOjppbnN0YW50aWF0ZVBsdWdpbik6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHk6OmRlbWFyc2hhbFZhbHVlRnJvbUFycmF5KToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKC1bV2ViRnJh
bWVQb2xpY3lMaXN0ZW5lciByZWNlaXZlZFBvbGljeURlY2lzaW9uOl0pOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tOgorICAgICAgICAoLVtXZWJTZWN1cml0
eU9yaWdpbiBpbml0V2l0aFVSTDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkFyY2hpdmUubW06
CisgICAgICAgICgtW1dlYkFyY2hpdmUgaW5pdFdpdGhNYWluUmVzb3VyY2U6c3VicmVzb3VyY2Vz
OnN1YmZyYW1lQXJjaGl2ZXM6XSk6CisgICAgICAgICgtW1dlYkFyY2hpdmUgaW5pdFdpdGhEYXRh
Ol0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbToKKyAgICAgICAgKC1bV2Vi
RGF0YVNvdXJjZSBtYWluUmVzb3VyY2VdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1t
OgorICAgICAgICAoLVtXZWJGcmFtZSBfZG9jdW1lbnRGcmFnbWVudFdpdGhOb2Rlc0FzUGFyYWdy
YXBoczpdKToKKwogMjAxNi0wNi0xNSAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNv
bT4KIAogICAgICAgICArW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBzdXBwb3J0ZWRNSU1FVHlwZXNd
IGxlYWtzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggZGZiY2M5Y2Y2NzYzMDhhZGI1YjhhZTcyMjQ3YWY0MWQ0M2Rk
NmM1Ni4uNDIxMGZhNWVmNDBmMjUwNzM1ZWJhNThkMGJkZjgyYjhiZjM2NWNmMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI1MSBAQAorMjAxNi0wNi0xNiAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFJlZlB0cjo6cmVsZWFzZSgpIGFuZCBjaGFuZ2Ug
Y2FsbHMgc2l0ZXMgdG8gdXNlIFdURk1vdmUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MzY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmVmUHRyOjpyZWxlYXNlKCkgcmVsZWFzZXMgaXRzIG1hbmFn
ZWQgcG9pbnRlciBhd2t3YXJkbHkuIEl0J3MgbW9yZQorICAgICAgICBkaXJlY3QgYW5kIGNsZWFy
ZXIgdG8gdXNlIFdURk1vdmUgdG8gdHJhbnNmZXIgb3duZXJzaGlwIG9mIHRoZSBtYW5hZ2VkCisg
ICAgICAgIHBvaW50ZXIuCisKKyAgICAgICAgQXMgcGFydCBvZiB0aGlzIGNsZWFudXAsIGFsc28g
Y2hhbmdlIGEgbG90IG9mIGV4cGxpY2l0IGRhdGEgdHlwZXMgdG8KKyAgICAgICAgJ2F1dG8nLgor
CisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzczo6Y3JlYXRlRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25u
ZWN0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6Omlu
aXRpYWxpemVTaGFyZWFibGVSZXNvdXJjZUhhbmRsZUZyb21TdG9yYWdlUmVjb3JkKToKKyAgICAg
ICAgKiBQbGF0Zm9ybS9tYWMvU2hhcmVkTWVtb3J5TWFjLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
U2hhcmVkTWVtb3J5OjphbGxvY2F0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5OjptYXApOgorICAgICAgICAq
IFBsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdp
blByb2Nlc3M6OmNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKiBTaGFyZWQv
QVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW06CisgICAgICAgIChlbmNvZGVUb09iamVj
dFN0cmVhbSk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLSW1hZ2UuY3BwOgorICAgICAgICAo
V0tJbWFnZUNyZWF0ZSk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLTnVtYmVyLmNwcDoKKyAg
ICAgICAgKFdLQm9vbGVhbkNyZWF0ZSk6CisgICAgICAgIChXS0RvdWJsZUNyZWF0ZSk6CisgICAg
ICAgIChXS1VJbnQ2NENyZWF0ZSk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLU2VjdXJpdHlP
cmlnaW5SZWYuY3BwOgorICAgICAgICAoV0tTZWN1cml0eU9yaWdpbkNyZWF0ZSk6CisgICAgICAg
ICogU2hhcmVkL0FQSS9jL1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdL
U2VyaWFsaXplZFNjcmlwdFZhbHVlQ3JlYXRlKToKKyAgICAgICAgKFdLU2VyaWFsaXplZFNjcmlw
dFZhbHVlQ3JlYXRlV2l0aEludGVybmFsUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFNoYXJl
ZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwOgorICAgICAgICAoV0tJbWFnZUNyZWF0ZUZy
b21DYWlyb1N1cmZhY2UpOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3Bw
OgorICAgICAgICAoV0tJbWFnZUNyZWF0ZUZyb21DR0ltYWdlKToKKyAgICAgICAgKiBTaGFyZWQv
QVBJL2MvbWFjL1dLQ2VydGlmaWNhdGVJbmZvTWFjLm1tOgorICAgICAgICAoV0tDZXJ0aWZpY2F0
ZUluZm9DcmVhdGVXaXRoQ2VydGZpY2F0ZUNoYWluKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2Mv
bWFjL1dLT2JqQ1R5cGVXcmFwcGVyUmVmLm1tOgorICAgICAgICAoV0tPYmpDVHlwZVdyYXBwZXJD
cmVhdGUpOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9tYWMvV0tXZWJBcmNoaXZlLmNwcDoKKyAg
ICAgICAgKFdLV2ViQXJjaGl2ZUNyZWF0ZSk6CisgICAgICAgIChXS1dlYkFyY2hpdmVDcmVhdGVX
aXRoRGF0YSk6CisgICAgICAgIChXS1dlYkFyY2hpdmVDcmVhdGVGcm9tUmFuZ2UpOgorICAgICAg
ICAoV0tXZWJBcmNoaXZlQ29weU1haW5SZXNvdXJjZSk6CisgICAgICAgIChXS1dlYkFyY2hpdmVD
b3B5U3VicmVzb3VyY2VzKToKKyAgICAgICAgKFdLV2ViQXJjaGl2ZUNvcHlTdWJmcmFtZUFyY2hp
dmVzKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvbWFjL1dLV2ViQXJjaGl2ZVJlc291cmNlLmNw
cDoKKyAgICAgICAgKFdLV2ViQXJjaGl2ZVJlc291cmNlQ3JlYXRlKToKKyAgICAgICAgKiBTaGFy
ZWQvQVBJV2ViQXJjaGl2ZS5tbToKKyAgICAgICAgKEFQSTo6V2ViQXJjaGl2ZTo6V2ViQXJjaGl2
ZSk6CisgICAgICAgICogU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1
bGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0T3JDcmVh
dGUpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZSk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJs
ZVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6Om1hcCk6
CisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHA6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+OjpkZWNvZGUpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9Db29yZGluYXRlZEdyYXBoaWNzL1dLVmlldy5jcHA6CisgICAgICAgIChXS1ZpZXdD
cmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0JhdHRlcnlTdGF0dXMuY3BwOgor
ICAgICAgICAoV0tCYXR0ZXJ5U3RhdHVzQ3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tHZW9sb2NhdGlvblBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdLR2VvbG9jYXRpb25Qb3Np
dGlvbkNyZWF0ZV9iKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tHcmFtbWFyRGV0YWls
LmNwcDoKKyAgICAgICAgKFdLR3JhbW1hckRldGFpbENyZWF0ZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VDb3B5U2Vzc2lvblN0YXRlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwOgorICAgICAgICAoV0tQ
YWdlR3JvdXBDcmVhdGVXaXRoSWRlbnRpZmllcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV0tQcmVmZXJlbmNlc0NyZWF0ZSk6CisgICAg
ICAgIChXS1ByZWZlcmVuY2VzQ3JlYXRlV2l0aElkZW50aWZpZXIpOgorICAgICAgICAoV0tQcmVm
ZXJlbmNlc0NyZWF0ZUNvcHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1Nlc3Npb25S
ZWYuY3BwOgorICAgICAgICAoV0tTZXNzaW9uQ3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tTZXNzaW9uU3RhdGVSZWYuY3BwOgorICAgICAgICAoV0tTZXNzaW9uU3RhdGVDb3B5
RGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFj
Lm1tOgorICAgICAgICAoV0tDb250ZXh0Q29weVBsdWdJbkluZm9Gb3JCdW5kbGVJZGVudGlmaWVy
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IGxvYWRSZXF1ZXN0Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgbG9hZEZp
bGVVUkw6YWxsb3dpbmdSZWFkQWNjZXNzVG9VUkw6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBs
b2FkRGF0YTpNSU1FVHlwZTpjaGFyYWN0ZXJFbmNvZGluZ05hbWU6YmFzZVVSTDpdKToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IGdvVG9CYWNrRm9yd2FyZExpc3RJdGVtOl0pOgorICAgICAgICAoLVtX
S1dlYlZpZXcgZ29CYWNrXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBnb0ZvcndhcmRdKToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IHJlbG9hZF0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgcmVsb2Fk
RnJvbU9yaWdpbl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2xvYWREYXRhOk1JTUVUeXBlOmNo
YXJhY3RlckVuY29kaW5nTmFtZTpiYXNlVVJMOnVzZXJEYXRhOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX3JlbG9hZFdpdGhvdXRDb250ZW50QmxvY2tlcnNdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF9zZXNzaW9uU3RhdGVEYXRhXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVzdG9yZVNl
c3Npb25TdGF0ZTphbmROYXZpZ2F0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfZGF0YWJhc2VfbWFuYWdlci5jcHA6CisgICAgICAgIChFd2tEYXRhYmFzZU1hbmFnZXI6OmNy
ZWF0ZU9yaWdpbkxpc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19zdG9yYWdl
X21hbmFnZXIuY3BwOgorICAgICAgICAoRXdrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZU9yaWdpbkxp
c3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOgorICAg
ICAgICAod2Via2l0V2ViVmlld0NyZWF0ZU5ld1BhZ2UpOgorICAgICAgICAod2Via2l0V2ViVmll
d1ByaW50RnJhbWUpOgorICAgICAgICAoZ2V0Q29udGVudHNBc01IVE1MRGF0YUNhbGxiYWNrKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvU2Vzc2lvblN0YXRlQ29kaW5nLm1tOgorICAgICAg
ICAoV2ViS2l0OjplbmNvZGVTZXNzaW9uU3RhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9HZW5l
cmljQ2FsbGJhY2suaDoKKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tNYXA6OnRha2UpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eTo6Y3JlYXRlUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eTo6Y3JlYXRlUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJvY2Vzc01hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNz
TWFuYWdlcjo6Z2V0T3JDcmVhdGVQbHVnaW5Qcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
U3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5h
Z2VyOjpTdG9yYWdlQXJlYTo6c2V0SXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5h
Z2VyOjpTdG9yYWdlQXJlYTo6cmVtb3ZlSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VN
YW5hZ2VyOjpjcmVhdGVMb2NhbFN0b3JhZ2VNYXApOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJC
YWNrRm9yd2FyZExpc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6
OmFkZEl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6OmNsZWFyKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENvb2tpZUFj
Y2VwdFBvbGljeSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5zdGFsbFZpZXdTdGF0ZUNoYW5nZUNvbXBsZXRp
b25IYW5kbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcmVmZXJlbmNlczo6Y3JlYXRlV2l0aExlZ2FjeURlZmF1bHRzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJlZmVyZW5jZXM6OmNvcHkpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
Ojp+V2ViUHJvY2Vzc1Bvb2wpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90
U3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdFN0b3JlOjpyZWNvcmRTbmFw
c2hvdCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xs
ZXIubW06CisgICAgICAgICgtW1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciBfd2ViSGl0VGVz
dFJlc3VsdF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcubW06Cisg
ICAgICAgICgtW1dLUHJpbnRpbmdWaWV3IF9hc2tQYWdlVG9Db21wdXRlUGFnZVJlY3RzXSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2V0RHJhZ0ltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5tbToKKyAgICAg
ICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUgaGl0VGVzdDpdKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0
UmVzdWx0Lm1tOgorICAgICAgICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0IG5v
ZGVIYW5kbGVdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2Nv
YS9XS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tOgorICAgICAgICAoK1tXS1dlYlByb2Nl
c3NQbHVnSW5Ob2RlSGFuZGxlIG5vZGVIYW5kbGVXaXRoSlNWYWx1ZTppbkNvbnRleHQ6XSk6Cisg
ICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUgaHRtbElGcmFtZUVsZW1lbnRD
b250ZW50RnJhbWVdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9D
b2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZC5tbToKKyAgICAgICAgKCtbV0tXZWJQ
cm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgd29ybGRdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUG9zdFN5
bmNocm9ub3VzTWVzc2FnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5jcHA6CisgICAgICAgIChXS0J1bmRsZURP
TVdpbmRvd0V4dGVuc2lvbkNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZUhpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV0tCdW5kbGVI
aXRUZXN0UmVzdWx0Q29weU5vZGVIYW5kbGUpOgorICAgICAgICAoV0tCdW5kbGVIaXRUZXN0UmVz
dWx0Q29weVVSTEVsZW1lbnRIYW5kbGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcDoKKyAgICAgICAgKFdLQnVu
ZGxlTmF2aWdhdGlvbkFjdGlvbkNvcHlIaXRUZXN0UmVzdWx0KToKKyAgICAgICAgKFdLQnVuZGxl
TmF2aWdhdGlvbkFjdGlvbkNvcHlGb3JtRWxlbWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5vZGVIYW5kbGUuY3BwOgorICAgICAgICAoV0tC
dW5kbGVOb2RlSGFuZGxlQ3JlYXRlKToKKyAgICAgICAgKFdLQnVuZGxlTm9kZUhhbmRsZUNvcHlE
b2N1bWVudCk6CisgICAgICAgIChXS0J1bmRsZU5vZGVIYW5kbGVDb3B5U25hcHNob3RXaXRoT3B0
aW9ucyk6CisgICAgICAgIChXS0J1bmRsZU5vZGVIYW5kbGVDb3B5VmlzaWJsZVJhbmdlKToKKyAg
ICAgICAgKFdLQnVuZGxlTm9kZUhhbmRsZUNvcHlIVE1MVGFibGVDZWxsRWxlbWVudENlbGxBYm92
ZSk6CisgICAgICAgIChXS0J1bmRsZU5vZGVIYW5kbGVDb3B5RG9jdW1lbnRGcmFtZSk6CisgICAg
ICAgIChXS0J1bmRsZU5vZGVIYW5kbGVDb3B5SFRNTEZyYW1lRWxlbWVudENvbnRlbnRGcmFtZSk6
CisgICAgICAgIChXS0J1bmRsZU5vZGVIYW5kbGVDb3B5SFRNTElGcmFtZUVsZW1lbnRDb250ZW50
RnJhbWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVQYWdlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUGFnZUNyZWF0ZVNuYXBzaG90V2l0aE9wdGlv
bnMpOgorICAgICAgICAoV0tCdW5kbGVQYWdlQ3JlYXRlU25hcHNob3RJblZpZXdDb29yZGluYXRl
cyk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VDcmVhdGVTbmFwc2hvdEluRG9jdW1lbnRDb29yZGlu
YXRlcyk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VDcmVhdGVTY2FsZWRTbmFwc2hvdEluRG9jdW1l
bnRDb29yZGluYXRlcyk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNz
YWdlRm9yVGVzdGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZVJhbmdlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUmFuZ2VIYW5kbGVD
cmVhdGUpOgorICAgICAgICAoV0tCdW5kbGVSYW5nZUhhbmRsZUNvcHlTbmFwc2hvdFdpdGhPcHRp
b25zKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
U2NyaXB0V29ybGQuY3BwOgorICAgICAgICAoV0tCdW5kbGVTY3JpcHRXb3JsZENyZWF0ZVdvcmxk
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Ob2Rl
Lm1tOgorICAgICAgICAoLVtXS0RPTU5vZGUgX2NvcHlCdW5kbGVOb2RlSGFuZGxlUmVmXSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW06
CisgICAgICAgICgtW1dLRE9NUmFuZ2UgX2NvcHlCdW5kbGVSYW5nZUhhbmRsZVJlZl0pOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5
bGVEZWNsYXJhdGlvbkhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxl
Q1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZTo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OmltYWdlRm9yUmVjdCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVk
QnVuZGxlTm9kZUhhbmRsZTo6cmVuZGVyZWRJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmdldE9yQ3JlYXRlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0c2NhcGVQbHVnaW46OmxvYWRVUkwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvRGVwcmVjYXRlZFBERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpj
cmVhdGVTY3JvbGxiYXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlQXJl
YU1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjphcHBseUNoYW5nZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJz
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6dG9Gb3JtRGF0YSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6cmVjcmVhdGVQbHVnaW4pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVOZXR3b3JraW5nQ29udGV4
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JDbGllbnQ6OmhpZ2hsaWdodCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1h
Yy5tbToKKyAgICAgICAgKFdlYktpdDo6Y29udmVydEltYWdlVG9CaXRtYXApOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kVUlBZnRlclBhZ2VTY3JvbGwpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyOjpnZXRPckNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyOjpzZXRWaXNpdGVkTGlu
a1RhYmxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6Y3JlYXRlV2l0aENvcmVNYWluRnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJGcmFtZTo6Y3JlYXRlU3ViZnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGcmFtZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNyZWF0ZVNlbGVj
dGlvblNuYXBzaG90KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNyZWF0ZVBsdWdpbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnNuYXBzaG90QXRTaXplKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
c25hcHNob3ROb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6d2lsbFBlcmZvcm1Mb2Fk
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6U2FuZGJv
eEV4dGVuc2lvblRyYWNrZXI6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6U2FuZGJveEV4dGVuc2lvblRyYWNrZXI6OmRpZENvbW1pdFByb3Zpc2lv
bmFsTG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZUdyb3VwUHJveHk6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tOgorICAgICAgICAo
V2ViS2l0OjpQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpQcm9wZXJ0aWVzOjpkZWNvZGUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNsb25lKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbToKKyAg
ICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OmNsb25lKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1t
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6Y3JlYXRlRGlz
cGxheVJlZnJlc2hNb25pdG9yKToKKwogMjAxNi0wNi0xNSAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TIFdLMl0gT24gaVBhZCwgaW5kaXJlY3Qg
Zm9jdXNzaW5nIG9mIGEgdGV4dCBmaWVsZCBkb2Vzbid0IGFsd2F5cyBzY3JvbGwgdG8gdGhlIGNv
cnJlY3QgbG9jYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNP
YmplY3RSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAK
aW5kZXggMzdjZDY1NzMyMzcwMDg1MWIyNTc5ZDY0MzZiNDEzNTMzNTNlOGQyZS4uYzFkZGMzMjcx
Zjc4NTI0ZDc3MWE2NGQxYjVjZDZmZDE4OWM4OTFjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU09iamVjdFJlZi5jcHAKQEAgLTY2LDExICs2NiwxMSBAQCB1c2luZyBuYW1lc3BhY2Ug
SlNDOwogSlNDbGFzc1JlZiBKU0NsYXNzQ3JlYXRlKGNvbnN0IEpTQ2xhc3NEZWZpbml0aW9uKiBk
ZWZpbml0aW9uKQogewogICAgIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKLSAgICBSZWZQdHI8T3Bh
cXVlSlNDbGFzcz4ganNDbGFzcyA9IChkZWZpbml0aW9uLT5hdHRyaWJ1dGVzICYga0pTQ2xhc3NB
dHRyaWJ1dGVOb0F1dG9tYXRpY1Byb3RvdHlwZSkKKyAgICBhdXRvIGpzQ2xhc3MgPSAoZGVmaW5p
dGlvbi0+YXR0cmlidXRlcyAmIGtKU0NsYXNzQXR0cmlidXRlTm9BdXRvbWF0aWNQcm90b3R5cGUp
CiAgICAgICAgID8gT3BhcXVlSlNDbGFzczo6Y3JlYXRlTm9BdXRvbWF0aWNQcm90b3R5cGUoZGVm
aW5pdGlvbikKICAgICAgICAgOiBPcGFxdWVKU0NsYXNzOjpjcmVhdGUoZGVmaW5pdGlvbik7CiAg
ICAgCi0gICAgcmV0dXJuIGpzQ2xhc3MucmVsZWFzZSgpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4g
JmpzQ2xhc3MubGVha1JlZigpOwogfQogCiBKU0NsYXNzUmVmIEpTQ2xhc3NSZXRhaW4oSlNDbGFz
c1JlZiBqc0NsYXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1Nj
cmlwdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcApp
bmRleCA2MGJkZTYwNGUzNTg1MTZmMWVmNmNhYTIzZDgxMjQ4OTJjY2ZhOTU1Li44M2QxZmU2MmYx
MGEyZDA5MjkzMTBiZjM4YWVmMjYyZGJiZTJjM2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTU2NyaXB0UmVmLmNwcApAQCAtOTMsNyArOTMsNyBAQCBKU1NjcmlwdFJlZiBKU1Njcmlw
dENyZWF0ZVJlZmVyZW5jaW5nSW1tb3J0YWxBU0NJSVRleHQoSlNDb250ZXh0R3JvdXBSZWYgY29u
dGV4dAogCiAgICAgc3RhcnRpbmdMaW5lTnVtYmVyID0gc3RkOjptYXgoMSwgc3RhcnRpbmdMaW5l
TnVtYmVyKTsKIAotICAgIFJlZlB0cjxPcGFxdWVKU1NjcmlwdD4gcmVzdWx0ID0gT3BhcXVlSlNT
Y3JpcHQ6OmNyZWF0ZSh2bSwgdXJsID8gdXJsLT5zdHJpbmcoKSA6IFN0cmluZygpLCBzdGFydGlu
Z0xpbmVOdW1iZXIsIFN0cmluZyhTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbChzb3VyY2Us
IGxlbmd0aCkpKTsKKyAgICBhdXRvIHJlc3VsdCA9IE9wYXF1ZUpTU2NyaXB0OjpjcmVhdGUodm0s
IHVybCA/IHVybC0+c3RyaW5nKCkgOiBTdHJpbmcoKSwgc3RhcnRpbmdMaW5lTnVtYmVyLCBTdHJp
bmcoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoc291cmNlLCBsZW5ndGgpKSk7CiAKICAg
ICBQYXJzZXJFcnJvciBlcnJvcjsKICAgICBpZiAoIXBhcnNlU2NyaXB0KHZtLCBTb3VyY2VDb2Rl
KHJlc3VsdCksIGVycm9yKSkgewpAQCAtMTA0LDcgKzEwNCw3IEBAIEpTU2NyaXB0UmVmIEpTU2Ny
aXB0Q3JlYXRlUmVmZXJlbmNpbmdJbW1vcnRhbEFTQ0lJVGV4dChKU0NvbnRleHRHcm91cFJlZiBj
b250ZXh0CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiByZXN1
bHQucmVsZWFzZSgpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gcmVzdWx0LmxlYWtSZWYoKTsKIH0K
IAogSlNTY3JpcHRSZWYgSlNTY3JpcHRDcmVhdGVGcm9tU3RyaW5nKEpTQ29udGV4dEdyb3VwUmVm
IGNvbnRleHRHcm91cCwgSlNTdHJpbmdSZWYgdXJsLCBpbnQgc3RhcnRpbmdMaW5lTnVtYmVyLCBK
U1N0cmluZ1JlZiBzb3VyY2UsIEpTU3RyaW5nUmVmKiBlcnJvck1lc3NhZ2UsIGludCogZXJyb3JM
aW5lKQpAQCAtMTE0LDcgKzExNCw3IEBAIEpTU2NyaXB0UmVmIEpTU2NyaXB0Q3JlYXRlRnJvbVN0
cmluZyhKU0NvbnRleHRHcm91cFJlZiBjb250ZXh0R3JvdXAsIEpTU3RyaW5nUmVmCiAKICAgICBz
dGFydGluZ0xpbmVOdW1iZXIgPSBzdGQ6Om1heCgxLCBzdGFydGluZ0xpbmVOdW1iZXIpOwogCi0g
ICAgUmVmUHRyPE9wYXF1ZUpTU2NyaXB0PiByZXN1bHQgPSBPcGFxdWVKU1NjcmlwdDo6Y3JlYXRl
KHZtLCB1cmwgPyB1cmwtPnN0cmluZygpIDogU3RyaW5nKCksIHN0YXJ0aW5nTGluZU51bWJlciwg
c291cmNlLT5zdHJpbmcoKSk7CisgICAgYXV0byByZXN1bHQgPSBPcGFxdWVKU1NjcmlwdDo6Y3Jl
YXRlKHZtLCB1cmwgPyB1cmwtPnN0cmluZygpIDogU3RyaW5nKCksIHN0YXJ0aW5nTGluZU51bWJl
ciwgc291cmNlLT5zdHJpbmcoKSk7CiAKICAgICBQYXJzZXJFcnJvciBlcnJvcjsKICAgICBpZiAo
IXBhcnNlU2NyaXB0KHZtLCBTb3VyY2VDb2RlKHJlc3VsdCksIGVycm9yKSkgewpAQCAtMTI1LDcg
KzEyNSw3IEBAIEpTU2NyaXB0UmVmIEpTU2NyaXB0Q3JlYXRlRnJvbVN0cmluZyhKU0NvbnRleHRH
cm91cFJlZiBjb250ZXh0R3JvdXAsIEpTU3RyaW5nUmVmCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIAotICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpLmxlYWtSZWYoKTsKKyAgICBy
ZXR1cm4gcmVzdWx0LmxlYWtSZWYoKTsKIH0KIAogdm9pZCBKU1NjcmlwdFJldGFpbihKU1Njcmlw
dFJlZiBzY3JpcHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFs
dWVSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAppbmRl
eCAwZDNiZWYwMjE5ZGJjZjFjMDc1NjViYTY0Y2YzZmUwYzYxNmE3YjViLi40Mjg0MzUwZmE3MTVj
NjVjMjI3MDcyY2ZiZTg2OWMzNzdiM2MzOWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNWYWx1ZVJlZi5jcHAKQEAgLTQwMSwxMCArNDAxLDEwIEBAIEpTU3RyaW5nUmVmIEpTVmFsdWVU
b1N0cmluZ0NvcHkoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJl
ZioKIAogICAgIEpTVmFsdWUganNWYWx1ZSA9IHRvSlMoZXhlYywgdmFsdWUpOwogICAgIAotICAg
IFJlZlB0cjxPcGFxdWVKU1N0cmluZz4gc3RyaW5nUmVmKE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUo
anNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICBhdXRvIHN0cmluZ1Jl
ZihPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKGpzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpKSk7CiAgICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKGV4ZWMsIGV4Y2VwdGlvbikg
PT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKICAgICAgICAgc3RyaW5nUmVmID0gbnVsbHB0
cjsKLSAgICByZXR1cm4gc3RyaW5nUmVmLnJlbGVhc2UoKS5sZWFrUmVmKCk7CisgICAgcmV0dXJu
IHN0cmluZ1JlZi5sZWFrUmVmKCk7CiB9CiAKIEpTT2JqZWN0UmVmIEpTVmFsdWVUb09iamVjdChK
U0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1N0YXRpY1By
b3BlcnR5QW5hbHl6ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvU3Rh
dGljUHJvcGVydHlBbmFseXplci5oCmluZGV4IGU2M2ZlZjg2YTEwN2M4ZTQ4MDhmYmIwMDAwZmQz
ZWQ1N2E4MzhhOGUuLjFlYzEyOWU4OTg1YzdhNjBlOWFhYmNlOGM3NTFjYWFhNTViN2Y2MDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvU3RhdGljUHJvcGVy
dHlBbmFseXplci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvU3Rh
dGljUHJvcGVydHlBbmFseXplci5oCkBAIC03Miw3ICs3Miw3IEBAIGlubGluZSB2b2lkIFN0YXRp
Y1Byb3BlcnR5QW5hbHl6ZXI6Om5ld09iamVjdChpbnQgZHN0LCB1bnNpZ25lZCBvZmZzZXRPZklu
bGluZUNhCiAgICAgQW5hbHlzaXNNYXA6OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBtX2FuYWx5c2Vz
LmFkZChkc3QsIGFuYWx5c2lzKTsKICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KSB7CiAg
ICAgICAgIGtpbGwoYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKSk7Ci0gICAgICAgIGFk
ZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBhbmFseXNpcy5yZWxlYXNlKCk7CisgICAgICAgIGFk
ZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBXVEZNb3ZlKGFuYWx5c2lzKTsKICAgICB9CiB9CiAK
QEAgLTk1LDcgKzk1LDcgQEAgaW5saW5lIHZvaWQgU3RhdGljUHJvcGVydHlBbmFseXplcjo6bW92
KGludCBkc3QsIGludCBzcmMpCiAgICAgQW5hbHlzaXNNYXA6OkFkZFJlc3VsdCBhZGRSZXN1bHQg
PSBtX2FuYWx5c2VzLmFkZChkc3QsIGFuYWx5c2lzKTsKICAgICBpZiAoIWFkZFJlc3VsdC5pc05l
d0VudHJ5KSB7CiAgICAgICAgIGtpbGwoYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKSk7
Ci0gICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBhbmFseXNpcy5yZWxlYXNlKCk7
CisgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBXVEZNb3ZlKGFuYWx5c2lzKTsK
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlckNhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJDYWxsRnJhbWUuY3BwCmluZGV4IGE4YzU1N2M3NDczMWYyYjZhMzMzMTc1MTYwY2EzMzQ4
ZDIxNTIyYmIuLmZiODYzNjhhMzk0OGI2ZjhlMzVhMWVkNDZiNTM4MzFhYzNiMWVkZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1l
LmNwcApAQCAtMjc4LDcgKzI3OCw3IEBAIHZvaWQgRGVidWdnZXJDYWxsRnJhbWU6OmludmFsaWRh
dGUoKQogICAgICAgICAgICAgZnJhbWUtPm1fc2NvcGUtPmludmFsaWRhdGVDaGFpbigpOwogICAg
ICAgICAgICAgZnJhbWUtPm1fc2NvcGUuY2xlYXIoKTsKICAgICAgICAgfQotICAgICAgICBmcmFt
ZSA9IGZyYW1lLT5tX2NhbGxlci5yZWxlYXNlKCk7CisgICAgICAgIGZyYW1lID0gV1RGTW92ZShm
cmFtZS0+bV9jYWxsZXIpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmNwcAppbmRleCAxN2M2YTBiODUyYTIyMWVlYTY4ODMxZTYwZDMzM2U5
MTZiOTg5YjI0Li45MDA2MzA4YTQzMTY3ZTIxNjAzMjkyZmYxOGY1NDk1ODcxMDllOGQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcApAQCAtMzgxLDcg
KzM4MSw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQogICAgIGRpc2Fzc2VtYmxlKCps
aW5rQnVmZmVyKTsKICAgICAKICAgICBtX2dyYXBoLm1fcGxhbi5maW5hbGl6ZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEpJVEZpbmFsaXplcj4oCi0gICAgICAgIG1fZ3JhcGgubV9wbGFuLCBtX2ppdENv
ZGUucmVsZWFzZSgpLCBXVEZNb3ZlKGxpbmtCdWZmZXIpKTsKKyAgICAgICAgbV9ncmFwaC5tX3Bs
YW4sIFdURk1vdmUobV9qaXRDb2RlKSwgV1RGTW92ZShsaW5rQnVmZmVyKSk7CiB9CiAKIHZvaWQg
SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCkBAIC00NzgsNyArNDc4LDcgQEAgdm9pZCBK
SVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIg
d2l0aEFyaXR5Q2hlY2sgPSBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKG1fYXJpdHlDaGVjayk7CiAK
ICAgICBtX2dyYXBoLm1fcGxhbi5maW5hbGl6ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEpJVEZpbmFs
aXplcj4oCi0gICAgICAgIG1fZ3JhcGgubV9wbGFuLCBtX2ppdENvZGUucmVsZWFzZSgpLCBXVEZN
b3ZlKGxpbmtCdWZmZXIpLCB3aXRoQXJpdHlDaGVjayk7CisgICAgICAgIG1fZ3JhcGgubV9wbGFu
LCBXVEZNb3ZlKG1faml0Q29kZSksIFdURk1vdmUobGlua0J1ZmZlciksIHdpdGhBcml0eUNoZWNr
KTsKIH0KIAogdm9pZCBKSVRDb21waWxlcjo6ZGlzYXNzZW1ibGUoTGlua0J1ZmZlciYgbGlua0J1
ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yVmFsdWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
VmFsdWVzLmNwcAppbmRleCBjNWMxMTYzNGJmNjI4MTUyNDUzNzNmMzBjNjE0NWYyZmEzOTFjMjI1
Li41Njk0OGZhMzEzZjJlNmM4ZTA5ZmFlNGQ3NWNmOTkyOTQ2OGY4MTlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCkBAIC00
NTksNyArNDU5LDcgQEAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBidWlsZFZhbHVlKGNvbnN0IFVD
aGFyKiBzdGFydCwgY29uc3QgVUNoYXIqIGVuZCwgY29uc3QgVUMKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogICAgICp2YWx1ZVRva2VuRW5kID0gdG9rZW5FbmQ7Ci0gICAgcmV0dXJu
IHJlc3VsdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogaW5saW5lIGJvb2wg
ZXNjYXBlQ2hhcihVQ2hhciBjLCBTdHJpbmdCdWlsZGVyJiBkc3QpCkBAIC01NTEsMTEgKzU1MSwx
MSBAQCBib29sIEluc3BlY3RvclZhbHVlOjpwYXJzZUpTT04oY29uc3QgU3RyaW5nJiBqc29uSW5w
dXQsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4mCiAgICAgY29uc3QgVUNoYXIqIHN0YXJ0ID0gY2hh
cmFjdGVyczsKICAgICBjb25zdCBVQ2hhciogZW5kID0gc3RhcnQgKyBqc29uSW5wdXQubGVuZ3Ro
KCk7CiAgICAgY29uc3QgVUNoYXIqIHRva2VuRW5kOwotICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1
ZT4gcmVzdWx0ID0gYnVpbGRWYWx1ZShzdGFydCwgZW5kLCAmdG9rZW5FbmQsIDApOworICAgIGF1
dG8gcmVzdWx0ID0gYnVpbGRWYWx1ZShzdGFydCwgZW5kLCAmdG9rZW5FbmQsIDApOwogICAgIGlm
ICghcmVzdWx0IHx8IHRva2VuRW5kICE9IGVuZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgb3V0cHV0ID0gcmVzdWx0LnJlbGVhc2UoKTsKKyAgICBvdXRwdXQgPSBXVEZNb3ZlKHJlc3Vs
dCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcAppbmRleCAzMTJlNWQ5
YjRiMWNmODllNzc0MGZhZDY2NTI3MjEzZDBiZTNlNDFmLi5mNjRiYWYzZDMwNzc3YmY3OTZmMzU3
NGFmYjRkODg4MWFiYWUwNTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwCkBAIC0xMjEsNyArMTIxLDcg
QEAgdm9pZCBJbnNwZWN0b3JBZ2VudDo6YWN0aXZhdGVFeHRyYURvbWFpbihjb25zdCBTdHJpbmcm
IGRvbWFpbk5hbWUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWY8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gZG9tYWluTmFtZXMgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICBhdXRvIGRvbWFpbk5hbWVzID0gSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgZG9tYWluTmFt
ZXMtPmFkZEl0ZW0oZG9tYWluTmFtZSk7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmFjdGl2
YXRlRXh0cmFEb21haW5zKFdURk1vdmUoZG9tYWluTmFtZXMpKTsKIH0KQEAgLTEzMSwxNCArMTMx
LDE0IEBAIHZvaWQgSW5zcGVjdG9yQWdlbnQ6OmFjdGl2YXRlRXh0cmFEb21haW5zKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBleHRyYURvbWFpbnMpCiAgICAgaWYgKGV4dHJhRG9tYWlucy5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxTdHJpbmc+PiBkb21haW5OYW1lcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0
cmluZz46OmNyZWF0ZSgpOworICAgIGF1dG8gZG9tYWluTmFtZXMgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKICAgICBmb3IgKGF1dG8gZG9tYWluTmFtZSA6
IGV4dHJhRG9tYWlucykKICAgICAgICAgZG9tYWluTmFtZXMtPmFkZEl0ZW0oZG9tYWluTmFtZSk7
CiAKICAgICBpZiAoIW1fZW5hYmxlZCkKLSAgICAgICAgbV9wZW5kaW5nRXh0cmFEb21haW5zRGF0
YSA9IGRvbWFpbk5hbWVzLnJlbGVhc2UoKTsKKyAgICAgICAgbV9wZW5kaW5nRXh0cmFEb21haW5z
RGF0YSA9IFdURk1vdmUoZG9tYWluTmFtZXMpOwogICAgIGVsc2UKLSAgICAgICAgbV9mcm9udGVu
ZERpc3BhdGNoZXItPmFjdGl2YXRlRXh0cmFEb21haW5zKGRvbWFpbk5hbWVzLnJlbGVhc2UoKSk7
CisgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5hY3RpdmF0ZUV4dHJhRG9tYWlucyhXVEZN
b3ZlKGRvbWFpbk5hbWVzKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50LmNwcAppbmRleCA3M2NmYjZmMzczYjJmNWQ4ZWQxYTNiMDM2NGFmMGE2OGM1NTYxZDc3Li4x
MzRlMjI0Zjc0MGE2NTAyYmYxNzIwZTQ5NjhmNTEzZjg5YjUwOWE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtNzUwLDcgKzc1MCw3IEBAIHZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvblByb2JlKEpTQzo6RXhlY1N0YXRlJiBzY3JpcHRT
dGF0ZSwKICAgICAgICAgLnNldEJhdGNoSWQoYmF0Y2hJZCkKICAgICAgICAgLnNldFNhbXBsZUlk
KHNhbXBsZUlkKQogICAgICAgICAuc2V0VGltZXN0YW1wKG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
Lmluc3BlY3RvckVudmlyb25tZW50KCkuZXhlY3V0aW9uU3RvcHdhdGNoKCktPmVsYXBzZWRUaW1l
KCkpCi0gICAgICAgIC5zZXRQYXlsb2FkKHBheWxvYWQucmVsZWFzZSgpKQorICAgICAgICAuc2V0
UGF5bG9hZChXVEZNb3ZlKHBheWxvYWQpKQogICAgICAgICAucmVsZWFzZSgpOwogICAgIG1fZnJv
bnRlbmREaXNwYXRjaGVyLT5kaWRTYW1wbGVQcm9iZShXVEZNb3ZlKHJlc3VsdCkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5z
cGVjdG9yLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3Rl
SW5zcGVjdG9yLm1tCmluZGV4IDcyYmZjNmU4NzgwZjc5OTAwOGY4MzJiZWE3Y2EzZWQ3OWVhZWEy
YWUuLmYzYWVlMWM5NzQxMTE0YWJjZjhhYjBkNjZkODdhY2JmOWVhMWNjNWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5t
bQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNw
ZWN0b3IubW0KQEAgLTYyOSw3ICs2MjksNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2
ZWRTZXR1cE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKIAogICAgIC8vIEF0dGVtcHQg
dG8gY3JlYXRlIGEgY29ubmVjdGlvbi4gVGhpcyBtYXkgZmFpbCBpZiB0aGUgcGFnZSBhbHJlYWR5
IGhhcyBhbiBpbnNwZWN0b3Igb3IgaWYgaXQgZGlzYWxsb3dzIGluc3BlY3Rpb24uCiAgICAgUmVt
b3RlQ29udHJvbGxhYmxlVGFyZ2V0KiB0YXJnZXQgPSBmaW5kUmVzdWx0LT52YWx1ZTsKLSAgICBS
ZWZQdHI8UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0PiBjb25uZWN0aW9uVG9UYXJnZXQgPSBhZG9w
dFJlZihuZXcgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0KHRhcmdldCwgY29ubmVjdGlvbklkZW50
aWZpZXIsIHNlbmRlcikpOworICAgIGF1dG8gY29ubmVjdGlvblRvVGFyZ2V0ID0gYWRvcHRSZWYo
Km5ldyBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQodGFyZ2V0LCBjb25uZWN0aW9uSWRlbnRpZmll
ciwgc2VuZGVyKSk7CiAKICAgICBpZiAoaXM8UmVtb3RlSW5zcGVjdGlvblRhcmdldD4odGFyZ2V0
KSkgewogICAgICAgICBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbiA9IG1fYXV0b21hdGljSW5z
cGVjdGlvbkNhbmRpZGF0ZVRhcmdldElkZW50aWZpZXIgPT0gdGFyZ2V0LT50YXJnZXRJZGVudGlm
aWVyKCk7CkBAIC02MzksMTQgKzYzOSwxNCBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2
ZWRTZXR1cE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKICAgICAgICAgICAgIGNvbm5l
Y3Rpb25Ub1RhcmdldC0+Y2xvc2UoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQot
ICAgICAgICBtX3RhcmdldENvbm5lY3Rpb25NYXAuc2V0KHRhcmdldElkZW50aWZpZXIsIGNvbm5l
Y3Rpb25Ub1RhcmdldC5yZWxlYXNlKCkpOworICAgICAgICBtX3RhcmdldENvbm5lY3Rpb25NYXAu
c2V0KHRhcmdldElkZW50aWZpZXIsIFdURk1vdmUoY29ubmVjdGlvblRvVGFyZ2V0KSk7CiAgICAg
ICAgIHVwZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbigpOwogICAgIH0gZWxzZSBpZiAoaXM8UmVt
b3RlQXV0b21hdGlvblRhcmdldD4odGFyZ2V0KSkgewogICAgICAgICBpZiAoIWNvbm5lY3Rpb25U
b1RhcmdldC0+c2V0dXAoKSkgewogICAgICAgICAgICAgY29ubmVjdGlvblRvVGFyZ2V0LT5jbG9z
ZSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIG1fdGFyZ2V0Q29u
bmVjdGlvbk1hcC5zZXQodGFyZ2V0SWRlbnRpZmllciwgY29ubmVjdGlvblRvVGFyZ2V0LnJlbGVh
c2UoKSk7CisgICAgICAgIG1fdGFyZ2V0Q29ubmVjdGlvbk1hcC5zZXQodGFyZ2V0SWRlbnRpZmll
ciwgV1RGTW92ZShjb25uZWN0aW9uVG9UYXJnZXQpKTsKICAgICAgICAgdXBkYXRlSGFzQWN0aXZl
RGVidWdTZXNzaW9uKCk7CiAgICAgfSBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggODI5ODQ1MzNhNjZiNzVm
N2E3YWIzZjk1OWFiMDAyNTcxNGNhMzI2NS4uMDA4OGM0ZjJiMmRkYmY2MGI4MWFkNzA4YjIyMTgz
Njc2Y2I0YzkwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC05NDMs
NyArOTQzLDcgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKAogICAgICAgICBwYXRjaEJ1ZmZl
ci5saW5rKGRvbmUsIGNhbGxMaW5rSW5mby5ob3RQYXRoT3RoZXIoKS5sYWJlbEF0T2Zmc2V0KDAp
KTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKHNsb3csIENvZGVMb2NhdGlvbkxhYmVsKHZtLT5nZXRD
VElTdHViKGxpbmtQb2x5bW9ycGhpY0NhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpKSk7CiAgICAg
Ci0gICAgUmVmUHRyPFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lPiBzdHViUm91dGluZSA9IGFk
b3B0UmVmKG5ldyBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSgKKyAgICBhdXRvIHN0dWJSb3V0
aW5lID0gYWRvcHRSZWYoKm5ldyBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSgKICAgICAgICAg
RklOQUxJWkVfQ09ERV9GT1IoCiAgICAgICAgICAgICBjYWxsZXJDb2RlQmxvY2ssIHBhdGNoQnVm
ZmVyLAogICAgICAgICAgICAgKCJQb2x5bW9ycGhpYyBjYWxsIHN0dWIgZm9yICVzLCByZXR1cm4g
cG9pbnQgJXAsIHRhcmdldHMgJXMiLApAQCAtOTYyLDcgKzk2Miw3IEBAIHZvaWQgbGlua1BvbHlt
b3JwaGljQ2FsbCgKICAgICAKICAgICAvLyBJZiB0aGVyZSBoYWQgYmVlbiBhIHByZXZpb3VzIHN0
dWIgcm91dGluZSwgdGhhdCBvbmUgd2lsbCBkaWUgYXMgc29vbiBhcyB0aGUgR0MgcnVucyBhbmQg
c2VlcwogICAgIC8vIHRoYXQgaXQncyBubyBsb25nZXIgb24gc3RhY2suCi0gICAgY2FsbExpbmtJ
bmZvLnNldFN0dWIoc3R1YlJvdXRpbmUucmVsZWFzZSgpKTsKKyAgICBjYWxsTGlua0luZm8uc2V0
U3R1YihXVEZNb3ZlKHN0dWJSb3V0aW5lKSk7CiAgICAgCiAgICAgLy8gVGhlIGNhbGwgbGluayBp
bmZvIG5vIGxvbmdlciBoYXMgYSBjYWxsIGNhY2hlIGFwYXJ0IGZyb20gdGhlIGp1bXAgdG8gdGhl
IHBvbHltb3JwaGljIGNhbGwKICAgICAvLyBzdHViLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmlu
ZGV4IGE4NzM3ZWVlMTgwNmNhOGQzODY0MDkxMTZmMmQyZGQzNjYxZTM2ODguLjE0MjlkMDU0Y2I0
ZWQxMWM2MTVmNjk2ZDZjOTY2NGM0MjJhMjY4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgK
QEAgLTQ1LDcgKzQ1LDcgQEAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4g
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUodW4KICAgICBhdXRvIGJ1ZmZl
ciA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSkpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICByZXR1cm4gY3JlYXRlKGJ1ZmZlci5yZWxlYXNlKCksIDAsIGxlbmd0aCk7CisgICAgcmV0dXJu
IGNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGxlbmd0aCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIEFkYXB0b3I+CkBAIC02Nyw3ICs2Nyw3IEBAIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBHZW5lcmljVHlwZWRBcnJheVZpZXcoYnVmZmVyLnJlbGVhc2UoKSwgYnl0ZU9mZnNldCwgbGVu
Z3RoKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHZW5lcmljVHlwZWRBcnJheVZpZXcoV1RG
TW92ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgQWRhcHRvcj4KQEAgLTc4LDcgKzc4LDcgQEAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKICAgICAgICAgQXJyYXlC
dWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRh
cHRvcjo6VHlwZSkpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICByZXR1cm4gY3JlYXRlKGJ1ZmZlci5yZWxlYXNlKCksIDAsIGxlbmd0aCk7CisgICAgcmV0
dXJuIGNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGxlbmd0aCk7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIEFkYXB0b3I+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmNwcAppbmRleCAyYmUwM2Y4OGI5YWU1ODU0
YTRkMDQ0Zjk1MWUwMDJhOWZkMzg4ODU5Li42YmM4ZTQzNzljNTllZmMwZmM1NDc1YjllNjU4NGUx
OGNkZGU5MjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0QXJyYXlCdWZmZXIoRXhlY1N0
YXRlKiBleGVjKQogICAgIFN0cnVjdHVyZSogYXJyYXlCdWZmZXJTdHJ1Y3R1cmUgPSBJbnRlcm5h
bEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBleGVjLT5uZXdUYXJnZXQo
KSwgY29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLT5hcnJheUJ1ZmZlclN0cnVjdHVyZSgpKTsK
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSlNWYWx1ZSgpKTsKLSAgICBKU0FycmF5QnVmZmVyKiByZXN1bHQgPSBKU0FycmF5QnVm
ZmVyOjpjcmVhdGUoZXhlYy0+dm0oKSwgYXJyYXlCdWZmZXJTdHJ1Y3R1cmUsIGJ1ZmZlci5yZWxl
YXNlKCkpOworICAgIEpTQXJyYXlCdWZmZXIqIHJlc3VsdCA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0
ZShleGVjLT52bSgpLCBhcnJheUJ1ZmZlclN0cnVjdHVyZSwgV1RGTW92ZShidWZmZXIpKTsKICAg
ICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaAppbmRleCBhODA0Yjll
ZGE3Yzg3YWJhNDljYjU2NDEzODFhMzEyZWJlZGFmM2IzLi4wNGMxZWQxM2FiMTk5Yzk3YWMwMTQ2
MGUxNTVkNzAzODE0NzU1MDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5TmFtZUFycmF5LmgKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCBzZXREYXRhKFBhc3NSZWZQdHI8UHJvcGVydHlOYW1lQXJyYXlEYXRhPiBkYXRhKSB7IG1f
ZGF0YSA9IGRhdGE7IH0KICAgICBQcm9wZXJ0eU5hbWVBcnJheURhdGEqIGRhdGEoKSB7IHJldHVy
biBtX2RhdGEuZ2V0KCk7IH0KLSAgICBQYXNzUmVmUHRyPFByb3BlcnR5TmFtZUFycmF5RGF0YT4g
cmVsZWFzZURhdGEoKSB7IHJldHVybiBtX2RhdGEucmVsZWFzZSgpOyB9CisgICAgUGFzc1JlZlB0
cjxQcm9wZXJ0eU5hbWVBcnJheURhdGE+IHJlbGVhc2VEYXRhKCkgeyByZXR1cm4gV1RGTW92ZSht
X2RhdGEpOyB9CiAKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZXNlIGZ1bmN0aW9ucy4KICAgICBi
b29sIGNhbkFkZEtub3duVW5pcXVlRm9yU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
LT5wcm9wZXJ0eU5hbWVWZWN0b3IoKS5pc0VtcHR5KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IDZkN2ZiODE3Yjk1Zjk3YjRmYzQ1ZDA3MmEy
OWRkOTEyMTA3MjlhOWMuLjI3ZmZhNTE3ODA3NjhjNmM0MTczM2RiNjA4NTdmODcyZDdlNmU4NWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtMTE5
NywxNiArMTE5NywxNiBAQCBQYXNzUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiBTdHJ1Y3R1cmU6OnRv
U3RydWN0dXJlU2hhcGUoSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgY3VyU2hhcGUtPm1hcmtBc0Zp
bmFsKCk7CiAKICAgICAgICAgaWYgKGN1clN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlU3RydWN0
dXJlKCkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gbmV3U2hhcGUgPSBT
dHJ1Y3R1cmVTaGFwZTo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICBjdXJTaGFwZS0+c2V0UHJvdG8o
bmV3U2hhcGUpOwotICAgICAgICAgICAgY3VyU2hhcGUgPSBuZXdTaGFwZS5yZWxlYXNlKCk7Cisg
ICAgICAgICAgICBhdXRvIG5ld1NoYXBlID0gU3RydWN0dXJlU2hhcGU6OmNyZWF0ZSgpOworICAg
ICAgICAgICAgY3VyU2hhcGUtPnNldFByb3RvKG5ld1NoYXBlLnB0cigpKTsKKyAgICAgICAgICAg
IGN1clNoYXBlID0gV1RGTW92ZShuZXdTaGFwZSk7CiAgICAgICAgICAgICBjdXJWYWx1ZSA9IGN1
clN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlKCk7CiAgICAgICAgIH0KIAogICAgICAgICBjdXJT
dHJ1Y3R1cmUgPSBjdXJTdHJ1Y3R1cmUtPnN0b3JlZFByb3RvdHlwZVN0cnVjdHVyZSgpOwogICAg
IH0KICAgICAKLSAgICByZXR1cm4gYmFzZVNoYXBlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RG
TW92ZShiYXNlU2hhcGUpOwogfQogCiBib29sIFN0cnVjdHVyZTo6Y2FuVXNlRm9yQWxsb2NhdGlv
bnNPZihTdHJ1Y3R1cmUqIG90aGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVHlwZVNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBl
U2V0LmNwcAppbmRleCAwNjdmMTI2YjYwZmFlOTg1MmZmZjVhNjlhNDQ1NDQ2ODkzZWFkMGRiLi41
OGNlMmMzZDE3M2E4ZTI2YjgyYzY2YWNhNTU2NjllZDU5MDJjODA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcApAQCAtNTQ4LDcgKzU0OCw3IEBAIFBhc3NSZWZQ
dHI8U3RydWN0dXJlU2hhcGU+IFN0cnVjdHVyZVNoYXBlOjptZXJnZShjb25zdCBQYXNzUmVmUHRy
PFN0cnVjdHVyZVNoYXBlCiAgICAgUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiBiID0gcHJwQjsKICAg
ICBBU1NFUlQoYS0+aGFzU2FtZVByb3RvdHlwZUNoYWluKGIpKTsKIAotICAgIFJlZlB0cjxTdHJ1
Y3R1cmVTaGFwZT4gbWVyZ2VkID0gU3RydWN0dXJlU2hhcGU6OmNyZWF0ZSgpOworICAgIGF1dG8g
bWVyZ2VkID0gU3RydWN0dXJlU2hhcGU6OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byBmaWVsZCA6
IGEtPm1fZmllbGRzKSB7CiAgICAgICAgIGlmIChiLT5tX2ZpZWxkcy5jb250YWlucyhmaWVsZCkp
CiAgICAgICAgICAgICBtZXJnZWQtPm1fZmllbGRzLmFkZChmaWVsZCk7CkBAIC01NzgsNyArNTc4
LDcgQEAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gU3RydWN0dXJlU2hhcGU6Om1lcmdlKGNv
bnN0IFBhc3NSZWZQdHI8U3RydWN0dXJlU2hhcGUKIAogICAgIG1lcmdlZC0+bWFya0FzRmluYWwo
KTsKIAotICAgIHJldHVybiBtZXJnZWQucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKG1l
cmdlZCk7CiB9CiAKIHZvaWQgU3RydWN0dXJlU2hhcGU6OmVudGVyRGljdGlvbmFyeU1vZGUoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5jdGlvbk92ZXJyaWRlcy5jcHAK
aW5kZXggMmUzMjhjMTY3NGIyNzE3NmI3ODFkMTE4NjRhYjliMDEzOTBkMDAzMy4uOWFlM2E4N2Qy
YzgyZDBlODllOGZkYjczNDlkNjc2Zjg2MDY3NGJiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAg
c3RhdGljIHZvaWQgaW5pdGlhbGl6ZU92ZXJyaWRlSW5mbyhjb25zdCBTb3VyY2VDb2RlJiBvcmln
Q29kZSwgY29uc3QgU3RyaW5nJiBuZXcKICAgICBuZXdQcm92aWRlclN0ci5hcHBlbmQob3JpZ0hl
YWRlcik7CiAgICAgbmV3UHJvdmlkZXJTdHIuYXBwZW5kKG5ld0JvZHkpOwogCi0gICAgUmVmUHRy
PFNvdXJjZVByb3ZpZGVyPiBuZXdQcm92aWRlciA9IFN0cmluZ1NvdXJjZVByb3ZpZGVyOjpjcmVh
dGUobmV3UHJvdmlkZXJTdHIsICI8b3ZlcnJpZGRlbj4iKTsKKyAgICBhdXRvIG5ld1Byb3ZpZGVy
ID0gU3RyaW5nU291cmNlUHJvdmlkZXI6OmNyZWF0ZShuZXdQcm92aWRlclN0ciwgIjxvdmVycmlk
ZGVuPiIpOwogCiAgICAgaW5mby5maXJzdExpbmUgPSAxOwogICAgIGluZm8ubGluZUNvdW50ID0g
MTsgLy8gRmFraW5nIGl0LiBUaGlzIGRvZXNuJ3QgcmVhbGx5IG1hdHRlciBmb3Igbm93LgpAQCAt
MTI3LDcgKzEyNyw3IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVPdmVycmlkZUluZm8oY29uc3Qg
U291cmNlQ29kZSYgb3JpZ0NvZGUsIGNvbnN0IFN0cmluZyYgbmV3CiAgICAgaW5mby50eXBlUHJv
ZmlsaW5nRW5kT2Zmc2V0ID0gbmV3UHJvdmlkZXJTdHIubGVuZ3RoKCkgLSAxOwogCiAgICAgaW5m
by5zb3VyY2VDb2RlID0KLSAgICAgICAgU291cmNlQ29kZShuZXdQcm92aWRlci5yZWxlYXNlKCks
IGluZm8udHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0LCBpbmZvLnR5cGVQcm9maWxpbmdFbmRPZmZz
ZXQgKyAxLCAxLCAxKTsKKyAgICAgICAgU291cmNlQ29kZShXVEZNb3ZlKG5ld1Byb3ZpZGVyKSwg
aW5mby50eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQsIGluZm8udHlwZVByb2ZpbGluZ0VuZE9mZnNl
dCArIDEsIDEsIDEpOwogfQogICAgIAogYm9vbCBGdW5jdGlvbk92ZXJyaWRlczo6aW5pdGlhbGl6
ZU92ZXJyaWRlRm9yKGNvbnN0IFNvdXJjZUNvZGUmIG9yaWdDb2RlLCBGdW5jdGlvbk92ZXJyaWRl
czo6T3ZlcnJpZGVJbmZvJiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKaW5kZXggZWI1MjQ3YTlmMDdkOWJiZDhjODZi
OGY1NjlmODQ2NDlmYTU2YzE4YS4uZGIzYjk1NDI4ZThlN2ZmMTgxYzVlZTBlM2UyM2UyNDE2NjQy
N2RiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3Vy
Y2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291
cmNlQnVmZmVyLmNwcApAQCAtNjYzLDcgKzY2Myw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFRpbWVS
YW5nZXM+IHJlbW92ZVNhbXBsZXNGcm9tVHJhY2tCdWZmZXIoY29uc3QgRGVjb2RlT3JkZXJTYW1w
CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CiAjZW5kaWYKIAotICAgIFJlZlB0cjxUaW1lUmFu
Z2VzPiBlcmFzZWRSYW5nZXMgPSBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKKyAgICBhdXRvIGVyYXNl
ZFJhbmdlcyA9IFRpbWVSYW5nZXM6OmNyZWF0ZSgpOwogICAgIE1lZGlhVGltZSBtaWNyb3NlY29u
ZCgxLCAxMDAwMDAwKTsKICAgICBmb3IgKGF1dG8gc2FtcGxlSXQgOiBzYW1wbGVzKSB7CiAgICAg
ICAgIGNvbnN0IERlY29kZU9yZGVyU2FtcGxlTWFwOjpLZXlUeXBlJiBkZWNvZGVLZXkgPSBzYW1w
bGVJdC5maXJzdDsKQEAgLTY5OCw3ICs2OTgsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxUaW1lUmFu
Z2VzPiByZW1vdmVTYW1wbGVzRnJvbVRyYWNrQnVmZmVyKGNvbnN0IERlY29kZU9yZGVyU2FtcAog
ICAgICAgICBMT0coTWVkaWFTb3VyY2UsICJTb3VyY2VCdWZmZXI6OiVzKCVwKSByZW1vdmVkICV6
dSBieXRlcywgc3RhcnQoJWxmKSwgZW5kKCVsZikiLCBsb2dQcmVmaXgsIGJ1ZmZlciwgYnl0ZXNS
ZW1vdmVkLCBlYXJsaWVzdFNhbXBsZSwgbGF0ZXN0U2FtcGxlKTsKICNlbmRpZgogCi0gICAgcmV0
dXJuIGVyYXNlZFJhbmdlcy5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1vdmUoZXJhc2VkUmFu
Z2VzKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXI6OnJlbW92ZUNvZGVkRnJhbWVzKGNvbnN0IE1l
ZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kKQpAQCAtMTc1MSw3ICsxNzUxLDcg
QEAgdm9pZCBTb3VyY2VCdWZmZXI6OnByb3ZpZGVNZWRpYURhdGEoVHJhY2tCdWZmZXImIHRyYWNr
QnVmZmVyLCBBdG9taWNTdHJpbmcgdHJhY2sKICAgICAgICAgLy8gRklYTUUocmRhcjovL3Byb2Js
ZW0vMjA2MzU5NjkpOiBSZW1vdmUgdGhpcyByZS1lbnRyYW5jeSBwcm90ZWN0aW9uIHdoZW4gdGhl
IGFmb3JlbWVudGlvbmVkIHJhZGFyIGlzIHJlc29sdmVkOyBwcm90ZWN0aW5nCiAgICAgICAgIC8v
IGFnYWluc3QgcmUtZW50cmFuY3kgaW50cm9kdWNlcyBhIHNtYWxsIGluZWZmaWNlbmN5IHdoZW4g
cmVtb3ZpbmcgYXBwZW5kZWQgc2FtcGxlcyBmcm9tIHRoZSBkZWNvZGUgcXVldWUgb25lIGF0IGEg
dGltZQogICAgICAgICAvLyByYXRoZXIgdGhhbiB3aGVuIGFsbCBzYW1wbGVzIGhhdmUgYmVlbiBl
bnF1ZXVlZC4KLSAgICAgICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBzYW1wbGUgPSB0cmFja0J1ZmZl
ci5kZWNvZGVRdWV1ZS5iZWdpbigpLT5zZWNvbmQ7CisgICAgICAgIGF1dG8gc2FtcGxlID0gdHJh
Y2tCdWZmZXIuZGVjb2RlUXVldWUuYmVnaW4oKS0+c2Vjb25kOwogICAgICAgICB0cmFja0J1ZmZl
ci5kZWNvZGVRdWV1ZS5lcmFzZSh0cmFja0J1ZmZlci5kZWNvZGVRdWV1ZS5iZWdpbigpKTsKIAog
ICAgICAgICAvLyBEbyBub3QgZW5xdWV1ZSBzYW1wbGVzIHNwYW5uaW5nIGEgc2lnbmlmaWNhbnQg
dW5idWZmZXJlZCBnYXAuCkBAIC0xNzY3LDcgKzE3NjcsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6
cHJvdmlkZU1lZGlhRGF0YShUcmFja0J1ZmZlciYgdHJhY2tCdWZmZXIsIEF0b21pY1N0cmluZyB0
cmFjawogCiAgICAgICAgIHRyYWNrQnVmZmVyLmxhc3RFbnF1ZXVlZFByZXNlbnRhdGlvblRpbWUg
PSBzYW1wbGUtPnByZXNlbnRhdGlvblRpbWUoKTsKICAgICAgICAgdHJhY2tCdWZmZXIubGFzdEVu
cXVldWVkRGVjb2RlRW5kVGltZSA9IHNhbXBsZS0+ZGVjb2RlVGltZSgpICsgc2FtcGxlLT5kdXJh
dGlvbigpOwotICAgICAgICBtX3ByaXZhdGUtPmVucXVldWVTYW1wbGUoc2FtcGxlLnJlbGVhc2Uo
KSwgdHJhY2tJRCk7CisgICAgICAgIG1fcHJpdmF0ZS0+ZW5xdWV1ZVNhbXBsZShXVEZNb3ZlKHNh
bXBsZSksIHRyYWNrSUQpOwogI2lmICFMT0dfRElTQUJMRUQKICAgICAgICAgKytlbnF1ZXVlZFNh
bXBsZXM7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCmluZGV4IDllNWE5YzI0NGVmNjNhMTdiZmE4ZDlj
N2NjZTVjNjEzYWVhMzlhYzYuLmI5NmI3YTBiMzUxOTExYTg3NjlhOTUyZDI5ZmU4ZWFiMGIxZTIy
ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1l
ZGlhUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9V
c2VyTWVkaWFSZXF1ZXN0LmNwcApAQCAtODAsMTUgKzgwLDE1IEBAIHZvaWQgVXNlck1lZGlhUmVx
dWVzdDo6c3RhcnQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25z
LCBNZWRpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8TWVkaWFDb25zdHJh
aW50cz4gYXVkaW9Db25zdHJhaW50cyA9IHBhcnNlT3B0aW9ucyhvcHRpb25zLCBBdG9taWNTdHJp
bmcoImF1ZGlvIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIFJl
ZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiB2aWRlb0NvbnN0cmFpbnRzID0gcGFyc2VPcHRpb25zKG9w
dGlvbnMsIEF0b21pY1N0cmluZygidmlkZW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKSk7CisgICAgYXV0byBhdWRpb0NvbnN0cmFpbnRzID0gcGFyc2VPcHRpb25zKG9wdGlv
bnMsIEF0b21pY1N0cmluZygiYXVkaW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgYXV0byB2aWRlb0NvbnN0cmFpbnRzID0gcGFyc2VPcHRpb25zKG9wdGlvbnMs
IEF0b21pY1N0cmluZygidmlkZW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7CiAKICAgICBpZiAoIWF1ZGlvQ29uc3RyYWludHMgJiYgIXZpZGVvQ29uc3RyYWludHMpIHsK
ICAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIFJlZjxVc2VyTWVkaWFSZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHRSZWYoKm5ldyBVc2Vy
TWVkaWFSZXF1ZXN0KGRvY3VtZW50LCB1c2VyTWVkaWEsIGF1ZGlvQ29uc3RyYWludHMucmVsZWFz
ZSgpLCB2aWRlb0NvbnN0cmFpbnRzLnJlbGVhc2UoKSwgV1RGTW92ZShwcm9taXNlKSkpOworICAg
IGF1dG8gcmVxdWVzdCA9IGFkb3B0UmVmKCpuZXcgVXNlck1lZGlhUmVxdWVzdChkb2N1bWVudCwg
dXNlck1lZGlhLCBXVEZNb3ZlKGF1ZGlvQ29uc3RyYWludHMpLCBXVEZNb3ZlKHZpZGVvQ29uc3Ry
YWludHMpLCBXVEZNb3ZlKHByb21pc2UpKSk7CiAgICAgcmVxdWVzdC0+c3RhcnQoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAppbmRl
eCBkYTM4ZTFjZmY4OTE2MDUwMDlhZjc1NWM0NzJkZDBlNDQ3YWYxNTYzLi5iNWZkZmFlZjBlYTI1
YjhhZWM2ZDkyMTdkZDJjZDVkZTcyOTc2YjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcApAQCAtMjQ2LDcgKzI0Niw3IEBAIERhdGFiYXNl
Ojp+RGF0YWJhc2UoKQogICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRl
eHRUaHJlYWQoKSkgewogICAgICAgICAvLyBHcmFiIGEgcG9pbnRlciB0byB0aGUgc2NyaXB0IGV4
ZWN1dGlvbiBoZXJlIGJlY2F1c2Ugd2UncmUgcmVsZWFzaW5nIGl0IHdoZW4gd2UgcGFzcyBpdCB0
bwogICAgICAgICAvLyBEZXJlZkNvbnRleHRUYXNrOjpjcmVhdGUuCi0gICAgICAgIFBhc3NSZWZQ
dHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gcGFzc2VkQ29udGV4dCA9IG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5yZWxlYXNlKCk7CisgICAgICAgIFBhc3NSZWZQdHI8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dD4gcGFzc2VkQ29udGV4dCA9IFdURk1vdmUobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
KTsKICAgICAgICAgcGFzc2VkQ29udGV4dC0+cG9zdFRhc2soe1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2s6OkNsZWFudXBUYXNrLCBbcGFzc2VkQ29udGV4dF0gKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgJmNv
bnRleHQgPT0gcGFzc2VkQ29udGV4dCk7CiAgICAgICAgICAgICBSZWZQdHI8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dD4gc2NyaXB0RXhlY3V0aW9uQ29udGV4dChwYXNzZWRDb250ZXh0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMQ2FsbGJhY2tXcmFw
cGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTENhbGxiYWNrV3Jh
cHBlci5oCmluZGV4IGNhNjY1ODEwYmE2MGQxNmNjNzQxZTE4ZGU0NTg2Y2U4NDcwNDkyN2IuLmI2
NDU0ODIwZjczNzU2MWYzMGJjYWE1MGIwYTYyODFiMjM5ZGNmODAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMQ2FsbGJhY2tXcmFwcGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxDYWxsYmFja1dyYXBwZXIuaApA
QCAtNjgsOCArNjgsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0ID0gbnVsbHB0cjsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0UHRyID0gbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LnJlbGVhc2UoKS5sZWFrUmVmKCk7Ci0gICAgICAgICAgICBjYWxsYmFjayA9
IG1fY2FsbGJhY2sucmVsZWFzZSgpLmxlYWtSZWYoKTsKKyAgICAgICAgICAgIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRQdHIgPSBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQubGVha1JlZigpOworICAg
ICAgICAgICAgY2FsbGJhY2sgPSBtX2NhbGxiYWNrLmxlYWtSZWYoKTsKICAgICAgICAgfQogICAg
ICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0UHRyLT5wb3N0VGFzayh7CiAgICAgICAgICAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrOjpDbGVhbnVwVGFzaywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCA4ZmI0ZTk5Y2E2
NTg2NjRiNGRhZWNkNTdkNjMyNDBjMmU3MjdiMTk2Li4zMzBkNmIyODE5NGZiNmNkMjc4OTU2NjFk
YTE5OWM0YTk2NjY0ZGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uY3BwCkBAIC01MzksOSArNTM5LDcgQEAgc3RhdGljIEpTVmFsdWUgaGFu
ZGxlUG9zdE1lc3NhZ2UoRE9NV2luZG93JiBpbXBsLCBFeGVjU3RhdGUmIHN0YXRlKQogICAgIGlm
IChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAK
LSAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlID0gU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpjcmVhdGUoJnN0YXRlLCBzdGF0ZS5hcmd1bWVudCgwKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmbWVzc2FnZVBvcnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhcnJheUJ1ZmZlcnMpOworICAg
IGF1dG8gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCZzdGF0ZSwgc3Rh
dGUuYXJndW1lbnQoMCksICZtZXNzYWdlUG9ydHMsICZhcnJheUJ1ZmZlcnMpOwogCiAgICAgaWYg
KHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAg
LTU1MSw3ICs1NDksNyBAQCBzdGF0aWMgSlNWYWx1ZSBoYW5kbGVQb3N0TWVzc2FnZShET01XaW5k
b3cmIGltcGwsIEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbC5wb3N0TWVzc2FnZShtZXNz
YWdlLnJlbGVhc2UoKSwgJm1lc3NhZ2VQb3J0cywgdGFyZ2V0T3JpZ2luLCBjYWxsZXJET01XaW5k
b3coJnN0YXRlKSwgZWMpOworICAgIGltcGwucG9zdE1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSwg
Jm1lc3NhZ2VQb3J0cywgdGFyZ2V0T3JpZ2luLCBjYWxsZXJET01XaW5kb3coJnN0YXRlKSwgZWMp
OwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIaXN0b3J5
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3RvbS5j
cHAKaW5kZXggZjQ5Nzk2NWFlNTZkYjk0NzEyNDhmMGY5MDQ2YWY0M2I3NmI0MmRhMy4uN2E0ZTg2
ZWZhNzBlOGMxZTUwYWFmZmU3OGQ2OWE1ZDhmMzYwODQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0b20uY3BwCkBAIC01NSw3ICs1NSw3IEBAIEpTVmFs
dWUgSlNIaXN0b3J5OjpzdGF0ZShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogCiBKU1ZhbHVlIEpT
SGlzdG9yeTo6cHVzaFN0YXRlKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gaGlzdG9yeVN0YXRlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpj
cmVhdGUoJnN0YXRlLCBzdGF0ZS5hcmd1bWVudCgwKSwgMCwgMCk7CisgICAgYXV0byBoaXN0b3J5
U3RhdGUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgmc3RhdGUsIHN0YXRlLmFyZ3Vt
ZW50KDApLCAwLCAwKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwogCkBAIC03MSw3ICs3MSw3IEBAIEpTVmFsdWUgSlNIaXN0b3J5
OjpwdXNoU3RhdGUoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICB9CiAKICAgICBFeGNlcHRpb25Db2Rl
V2l0aE1lc3NhZ2UgZWM7Ci0gICAgd3JhcHBlZCgpLnN0YXRlT2JqZWN0QWRkZWQoaGlzdG9yeVN0
YXRlLnJlbGVhc2UoKSwgdGl0bGUsIHVybCwgSGlzdG9yeTo6U3RhdGVPYmplY3RUeXBlOjpQdXNo
LCBlYyk7CisgICAgd3JhcHBlZCgpLnN0YXRlT2JqZWN0QWRkZWQoV1RGTW92ZShoaXN0b3J5U3Rh
dGUpLCB0aXRsZSwgdXJsLCBIaXN0b3J5OjpTdGF0ZU9iamVjdFR5cGU6OlB1c2gsIGVjKTsKICAg
ICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAKICAgICBtX3N0YXRlLmNsZWFyKCk7CkBA
IC04MSw3ICs4MSw3IEBAIEpTVmFsdWUgSlNIaXN0b3J5OjpwdXNoU3RhdGUoRXhlY1N0YXRlJiBz
dGF0ZSkKIAogSlNWYWx1ZSBKU0hpc3Rvcnk6OnJlcGxhY2VTdGF0ZShFeGVjU3RhdGUmIHN0YXRl
KQogewotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGhpc3RvcnlTdGF0ZSA9IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCZzdGF0ZSwgc3RhdGUuYXJndW1lbnQoMCksIDAs
IDApOworICAgIGF1dG8gaGlzdG9yeVN0YXRlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVh
dGUoJnN0YXRlLCBzdGF0ZS5hcmd1bWVudCgwKSwgMCwgMCk7CiAgICAgaWYgKHN0YXRlLmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIApAQCAtOTcsNyArOTcs
NyBAQCBKU1ZhbHVlIEpTSGlzdG9yeTo6cmVwbGFjZVN0YXRlKEV4ZWNTdGF0ZSYgc3RhdGUpCiAg
ICAgfQogCiAgICAgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlIGVjOwotICAgIHdyYXBwZWQoKS5z
dGF0ZU9iamVjdEFkZGVkKGhpc3RvcnlTdGF0ZS5yZWxlYXNlKCksIHRpdGxlLCB1cmwsIEhpc3Rv
cnk6OlN0YXRlT2JqZWN0VHlwZTo6UmVwbGFjZSwgZWMpOworICAgIHdyYXBwZWQoKS5zdGF0ZU9i
amVjdEFkZGVkKFdURk1vdmUoaGlzdG9yeVN0YXRlKSwgdGl0bGUsIHVybCwgSGlzdG9yeTo6U3Rh
dGVPYmplY3RUeXBlOjpSZXBsYWNlLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwg
ZWMpOwogCiAgICAgbV9zdGF0ZS5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oCmluZGV4IGZjYTdhNDBhNzk5NzFmZjM4ZGQ5Y2Vk
NjJiZjU5Y2RjNDU1ZmM4MjUuLjA2Mjk0NmI3MzFjOWM1NTYyYzk1MmVhNjYxZGVmNmQ2OGI4OTVm
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRD
dXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3Vz
dG9tLmgKQEAgLTU2LDEyICs1NiwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIE1l
c3NhZ2VQb3J0QXJyYXkgcG9ydEFycmF5OwogICAgICAgICBBcnJheUJ1ZmZlckFycmF5IGFycmF5
QnVmZmVyQXJyYXk7CiAgICAgICAgIGZpbGxNZXNzYWdlUG9ydEFycmF5KHN0YXRlLCBzdGF0ZS5h
cmd1bWVudCgxKSwgcG9ydEFycmF5LCBhcnJheUJ1ZmZlckFycmF5KTsKLSAgICAgICAgUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
Y3JlYXRlKCZzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCksICZwb3J0QXJyYXksICZh
cnJheUJ1ZmZlckFycmF5KTsKKyAgICAgICAgYXV0byBtZXNzYWdlID0gU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpjcmVhdGUoJnN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSwgJnBvcnRB
cnJheSwgJmFycmF5QnVmZmVyQXJyYXkpOwogICAgICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9u
KCkpCiAgICAgICAgICAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOwogCiAgICAgICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICBpbXBsLT5wb3N0TWVzc2FnZShtZXNzYWdlLnJl
bGVhc2UoKSwgJnBvcnRBcnJheSwgZWMpOworICAgICAgICBpbXBsLT5wb3N0TWVzc2FnZShXVEZN
b3ZlKG1lc3NhZ2UpLCAmcG9ydEFycmF5LCBlYyk7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigm
c3RhdGUsIGVjKTsKICAgICAgICAgcmV0dXJuIEpTQzo6anNVbmRlZmluZWQoKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlck1hYy5tbQpp
bmRleCA1ZmM3MmRmMDVjN2I2ODE3ZjJiOWViODEzN2IyNDI5MjNmYzAyNGJlLi5hODQ3NDUyMjM2
YTVjOTU4MjY4ODM1NjAxZjRjY2Q3NTg3MWJkYmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJNYWMubW0KQEAgLTY2LDEwICs2NiwxMCBAQCBS
ZWZQdHI8SlNDOjpCaW5kaW5nczo6SW5zdGFuY2U+IFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVNj
cmlwdEluc3RhbmNlRm9yV2lkZ2V0KAogICAgIGlmICghd2lkZ2V0VmlldykKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8Um9vdE9iamVjdD4gcm9vdE9iamVjdCA9IGNyZWF0
ZVJvb3RPYmplY3Qod2lkZ2V0Vmlldyk7CisgICAgYXV0byByb290T2JqZWN0ID0gY3JlYXRlUm9v
dE9iamVjdCh3aWRnZXRWaWV3KTsKIAogICAgIGlmIChbd2lkZ2V0VmlldyByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKGNyZWF0ZVBsdWdpbkJpbmRpbmdzSW5zdGFuY2U6KV0pCi0gICAgICAg
IHJldHVybiBbd2lkZ2V0VmlldyBjcmVhdGVQbHVnaW5CaW5kaW5nc0luc3RhbmNlOnJvb3RPYmpl
Y3QucmVsZWFzZSgpXTsKKyAgICAgICAgcmV0dXJuIFt3aWRnZXRWaWV3IGNyZWF0ZVBsdWdpbkJp
bmRpbmdzSW5zdGFuY2U6V1RGTW92ZShyb290T2JqZWN0KV07CiAgICAgICAgIAogICAgIGlmIChb
d2lkZ2V0VmlldyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG9iamVjdEZvcldlYlNjcmlw
dCldKSB7CiAgICAgICAgIGlkIG9iamVjdEZvcldlYlNjcmlwdCA9IFt3aWRnZXRWaWV3IG9iamVj
dEZvcldlYlNjcmlwdF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA2ODJjYzYyM2ZhZDdjNjk4MWY1Njg4NmZhYTNj
NTY2NDVhYWY2M2ViLi44NjliNmVhYTgwNGY3NzQ2YTAxMTBlNzUyN2RjMWQ4YWQyMjY1NjZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAKQEAgLTIzNTQsNyArMjM1NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
ZmFpbCgpOwogICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0ZShtX2V4
ZWMtPnZtKCksIG1fZ2xvYmFsT2JqZWN0LT5hcnJheUJ1ZmZlclN0cnVjdHVyZSgpLCBhcnJheUJ1
ZmZlci5yZWxlYXNlKCkpOworICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBKU0FycmF5QnVm
ZmVyOjpjcmVhdGUobV9leGVjLT52bSgpLCBtX2dsb2JhbE9iamVjdC0+YXJyYXlCdWZmZXJTdHJ1
Y3R1cmUoKSwgV1RGTW92ZShhcnJheUJ1ZmZlcikpOwogICAgICAgICAgICAgbV9nY0J1ZmZlci5h
cHBlbmQocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAK
aW5kZXggNjdkOWQ1N2ZlZjFhYzNjMGIzYzI5ZGFjZDBkNzMxOWY4NjQzMzk0NS4uM2I0Mjc3YmRi
MGI0OTVkZDNkOTEwMWM2NjEzYWVhZTU2NjNmOTMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTQwNTksOSArNDA1OSw5
IEBAIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpj
b3B5UHJvcGVydGllc0luU2V0KGNvbnN0IENTCiAgICAgVmVjdG9yPENTU1Byb3BlcnR5LCAyNTY+
IGxpc3Q7CiAgICAgbGlzdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0aCk7CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIFJlZlB0cjxDU1NW
YWx1ZT4gdmFsdWUgPSBwcm9wZXJ0eVZhbHVlKHNldFtpXSk7CisgICAgICAgIGF1dG8gdmFsdWUg
PSBwcm9wZXJ0eVZhbHVlKHNldFtpXSk7CiAgICAgICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAg
IGxpc3QuYXBwZW5kKENTU1Byb3BlcnR5KHNldFtpXSwgdmFsdWUucmVsZWFzZSgpLCBmYWxzZSkp
OworICAgICAgICAgICAgbGlzdC5hcHBlbmQoQ1NTUHJvcGVydHkoc2V0W2ldLCBXVEZNb3ZlKHZh
bHVlKSwgZmFsc2UpKTsKICAgICB9CiAgICAgcmV0dXJuIE11dGFibGVTdHlsZVByb3BlcnRpZXM6
OmNyZWF0ZShsaXN0LmRhdGEoKSwgbGlzdC5zaXplKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL1NWR0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NT
UGFyc2VyLmNwcAppbmRleCBmMGM0ODU0Y2M2MWQxYWZhMDUzYjVjZmU5ZjI4ODQ4MDhlYjBkZWQw
Li45Y2I0NzkzYmJlMTQwZTMzNDIyNWQyNDMwODIzNzY0ZWM5MDllOWI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU1ZHQ1NTUGFyc2VyLmNwcApAQCAtMjcyLDkgKzI3Miw5IEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZVNWR1ZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAg
ICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSkKICAgICAgICAgICAgIHZhbGlkX3ByaW1pdGl2ZSA9
IHRydWU7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4g
c2hhZG93VmFsdWVMaXN0ID0gcGFyc2VTaGFkb3coKm1fdmFsdWVMaXN0LCBwcm9wSWQpOworICAg
ICAgICAgICAgYXV0byBzaGFkb3dWYWx1ZUxpc3QgPSBwYXJzZVNoYWRvdygqbV92YWx1ZUxpc3Qs
IHByb3BJZCk7CiAgICAgICAgICAgICBpZiAoc2hhZG93VmFsdWVMaXN0KSB7Ci0gICAgICAgICAg
ICAgICAgYWRkUHJvcGVydHkocHJvcElkLCBzaGFkb3dWYWx1ZUxpc3QucmVsZWFzZSgpLCBpbXBv
cnRhbnQpOworICAgICAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BJZCwgV1RGTW92ZShzaGFk
b3dWYWx1ZUxpc3QpLCBpbXBvcnRhbnQpOwogICAgICAgICAgICAgICAgIG1fdmFsdWVMaXN0LT5u
ZXh0KCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CkBAIC0z
MzYsNyArMzM2LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlU1ZHVmFsdWUoQ1NTUHJvcGVydHlJ
RCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGlmICghcGFyc2VkVmFsdWUgfHwgKG1fdmFs
dWVMaXN0LT5jdXJyZW50KCkgJiYgIWluU2hvcnRoYW5kKCkpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBhZGRQcm9wZXJ0eShwcm9wSWQsIHBhcnNlZFZhbHVlLnJlbGVhc2UoKSwgaW1w
b3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShwcm9wSWQsIFdURk1vdmUocGFyc2VkVmFsdWUpLCBp
bXBvcnRhbnQpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVCdWlsZGVyQ29udmVydGVyLmgKaW5kZXggNzdhYzY1ZjI4MzhkYTYzY2VjNDg4Zjg1ZDJiYTMx
YzE3YmY2MDg5ZC4uYWY0NTcxM2RmNTgzMDFjYTMwN2MzMDZhZjQ4MTQ2Y2RhY2ZiNDA1MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaApAQCAtNzYyLDcgKzc2
Miw3IEBAIGlubGluZSBQYXNzUmVmUHRyPFNoYXBlVmFsdWU+IFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydFNoYXBlVmFsdWUoU3R5bGVSZXNvCiAgICAgfQogCiAgICAgaWYgKHNoYXBlKQot
ICAgICAgICByZXR1cm4gU2hhcGVWYWx1ZTo6Y3JlYXRlU2hhcGVWYWx1ZShzaGFwZS5yZWxlYXNl
KCksIHJlZmVyZW5jZUJveCk7CisgICAgICAgIHJldHVybiBTaGFwZVZhbHVlOjpjcmVhdGVTaGFw
ZVZhbHVlKFdURk1vdmUoc2hhcGUpLCByZWZlcmVuY2VCb3gpOwogCiAgICAgaWYgKHJlZmVyZW5j
ZUJveCAhPSBCb3hNaXNzaW5nKQogICAgICAgICByZXR1cm4gU2hhcGVWYWx1ZTo6Y3JlYXRlQm94
U2hhcGVWYWx1ZShyZWZlcmVuY2VCb3gpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUHJvcGVydGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVz
LmNwcAppbmRleCBiZmNiZmE3MmQyMDRmOWFlOWFkNWQ2NzFmMmRiY2IwNmQwNGJmY2U1Li5mN2Jj
NzMwMTVkZTBkMzU2ZWE0YzkxY2M5MzAyMTUxODc2MjFjYTY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVQcm9wZXJ0aWVzLmNwcApAQCAtMTMxMyw5ICsxMzEzLDkgQEAgUmVmPE11dGFibGVTdHls
ZVByb3BlcnRpZXM+IFN0eWxlUHJvcGVydGllczo6Y29weVByb3BlcnRpZXNJblNldChjb25zdCBD
U1NQcm9wZXIKICAgICBWZWN0b3I8Q1NTUHJvcGVydHksIDI1Nj4gbGlzdDsKICAgICBsaXN0LnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFBy
b3BlcnR5Q1NTVmFsdWVJbnRlcm5hbChzZXRbaV0pOworICAgICAgICBhdXRvIHZhbHVlID0gZ2V0
UHJvcGVydHlDU1NWYWx1ZUludGVybmFsKHNldFtpXSk7CiAgICAgICAgIGlmICh2YWx1ZSkKLSAg
ICAgICAgICAgIGxpc3QuYXBwZW5kKENTU1Byb3BlcnR5KHNldFtpXSwgdmFsdWUucmVsZWFzZSgp
LCBmYWxzZSkpOworICAgICAgICAgICAgbGlzdC5hcHBlbmQoQ1NTUHJvcGVydHkoc2V0W2ldLCBX
VEZNb3ZlKHZhbHVlKSwgZmFsc2UpKTsKICAgICB9CiAgICAgcmV0dXJuIE11dGFibGVTdHlsZVBy
b3BlcnRpZXM6OmNyZWF0ZShsaXN0LmRhdGEoKSwgbGlzdC5zaXplKCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGMxN2FhZmE5NjQ1OGUzYWZmMjE1NjY0YWE2NDI2
OWIyY2EyYTUwZDkuLmFiNmRmMjc2YjQ2OTk1NzA3NDFlODFiZmVkZDQ5YzY3YWJjZWZhMmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTIxOTMsOCArMjE5Myw4IEBAIHZv
aWQgU3R5bGVSZXNvbHZlcjo6bG9hZFBlbmRpbmdJbWFnZXMoKQogICAgICAgICAgICAgICAgIGlm
IChpczxJbWFnZUNvbnRlbnREYXRhPigqY29udGVudERhdGEpKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGF1dG8mIHN0eWxlSW1hZ2UgPSBkb3duY2FzdDxJbWFnZUNvbnRlbnREYXRhPigqY29udGVu
dERhdGEpLmltYWdlKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChpczxTdHlsZVBlbmRpbmdJ
bWFnZT4oc3R5bGVJbWFnZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSZWZQdHI8
U3R5bGVJbWFnZT4gbG9hZGVkSW1hZ2UgPSBsb2FkUGVuZGluZ0ltYWdlKGRvd25jYXN0PFN0eWxl
UGVuZGluZ0ltYWdlPihzdHlsZUltYWdlKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZG93bmNhc3Q8SW1hZ2VDb250ZW50RGF0YT4oKmNvbnRlbnREYXRhKS5zZXRJbWFnZShsb2FkZWRJ
bWFnZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8gbG9hZGVk
SW1hZ2UgPSBsb2FkUGVuZGluZ0ltYWdlKGRvd25jYXN0PFN0eWxlUGVuZGluZ0ltYWdlPihzdHls
ZUltYWdlKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG93bmNhc3Q8SW1hZ2VDb250
ZW50RGF0YT4oKmNvbnRlbnREYXRhKS5zZXRJbWFnZShXVEZNb3ZlKGxvYWRlZEltYWdlKSk7CiAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBA
IC0yMjI4LDggKzIyMjgsOCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmxvYWRQZW5kaW5nSW1hZ2Vz
KCkKICAgICAgICAgICAgICAgICBjb25zdCBOaW5lUGllY2VJbWFnZSYgbWFza0ltYWdlID0gcmVm
bGVjdGlvbi0+bWFzaygpOwogICAgICAgICAgICAgICAgIGF1dG8qIHN0eWxlSW1hZ2UgPSBtYXNr
SW1hZ2UuaW1hZ2UoKTsKICAgICAgICAgICAgICAgICBpZiAoaXM8U3R5bGVQZW5kaW5nSW1hZ2U+
KHN0eWxlSW1hZ2UpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlZlB0cjxTdHlsZUltYWdlPiBs
b2FkZWRJbWFnZSA9IGxvYWRQZW5kaW5nSW1hZ2UoZG93bmNhc3Q8U3R5bGVQZW5kaW5nSW1hZ2U+
KCpzdHlsZUltYWdlKSk7Ci0gICAgICAgICAgICAgICAgICAgIHJlZmxlY3Rpb24tPnNldE1hc2so
TmluZVBpZWNlSW1hZ2UobG9hZGVkSW1hZ2UucmVsZWFzZSgpLCBtYXNrSW1hZ2UuaW1hZ2VTbGlj
ZXMoKSwgbWFza0ltYWdlLmZpbGwoKSwgbWFza0ltYWdlLmJvcmRlclNsaWNlcygpLCBtYXNrSW1h
Z2Uub3V0c2V0KCksIG1hc2tJbWFnZS5ob3Jpem9udGFsUnVsZSgpLCBtYXNrSW1hZ2UudmVydGlj
YWxSdWxlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBsb2FkZWRJbWFnZSA9IGxvYWRQ
ZW5kaW5nSW1hZ2UoZG93bmNhc3Q8U3R5bGVQZW5kaW5nSW1hZ2U+KCpzdHlsZUltYWdlKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHJlZmxlY3Rpb24tPnNldE1hc2soTmluZVBpZWNlSW1hZ2UoV1RG
TW92ZShsb2FkZWRJbWFnZSksIG1hc2tJbWFnZS5pbWFnZVNsaWNlcygpLCBtYXNrSW1hZ2UuZmls
bCgpLCBtYXNrSW1hZ2UuYm9yZGVyU2xpY2VzKCksIG1hc2tJbWFnZS5vdXRzZXQoKSwgbWFza0lt
YWdlLmhvcml6b250YWxSdWxlKCksIG1hc2tJbWFnZS52ZXJ0aWNhbFJ1bGUoKSkpOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAppbmRleCA5ZmM0MjZkMWI4Mzhl
MmQzZTIxZDgzMmQ0N2JiNjIxODllYTE5OWIzLi5lMDA2YjgxYTZjMWUyYzU0MGMzMTg1YTE3Y2Zi
ZTU5NTM5ZjJmMDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVT
aGVldE93bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93
bmVyLmNwcApAQCAtMTA5LDcgKzEwOSw4IEBAIHZvaWQgSW5saW5lU3R5bGVTaGVldE93bmVyOjpj
cmVhdGVTaGVldEZyb21UZXh0Q29udGVudHMoRWxlbWVudCYgZWxlbWVudCkKIHZvaWQgSW5saW5l
U3R5bGVTaGVldE93bmVyOjpjbGVhclNoZWV0KCkKIHsKICAgICBBU1NFUlQobV9zaGVldCk7Ci0g
ICAgbV9zaGVldC5yZWxlYXNlKCktPmNsZWFyT3duZXJOb2RlKCk7CisgICAgYXV0byBzaGVldCA9
IFdURk1vdmUobV9zaGVldCk7CisgICAgc2hlZXQtPmNsZWFyT3duZXJOb2RlKCk7CiB9CiAKIGlu
bGluZSBib29sIGlzVmFsaWRDU1NDb250ZW50VHlwZShFbGVtZW50JiBlbGVtZW50LCBjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Fw
cGx5U3R5bGVDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNv
bW1hbmQuY3BwCmluZGV4IGEwNTk5ZGUzMjRjNTU5MTJkZTE5NDEwMTI2NjVhMzgzYWI4ZmZlZDUu
LjI2N2Y5NTA1YzUxYzQ3ZWVkMWRlYWQwMDBkZDhkODhmMDlmYTdiYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCkBAIC04NDAsNyArODQwLDcgQEAg
dm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlJbmxpbmVTdHlsZVRvTm9kZVJhbmdlKEVkaXRp
bmdTdHlsZSogc3R5bGUsIFBhc3NSZWYKICAgICAgICAgaWYgKHJ1bi5kdW1teUVsZW1lbnQpCiAg
ICAgICAgICAgICByZW1vdmVOb2RlKHJ1bi5kdW1teUVsZW1lbnQpOwogICAgICAgICBpZiAocnVu
LnN0YXJ0QW5kRW5kQXJlU3RpbGxJbkRvY3VtZW50KCkpCi0gICAgICAgICAgICBhcHBseUlubGlu
ZVN0eWxlQ2hhbmdlKHJ1bi5zdGFydC5yZWxlYXNlKCksIHJ1bi5lbmQucmVsZWFzZSgpLCBydW4u
Y2hhbmdlLCBBZGRTdHlsZWRFbGVtZW50KTsKKyAgICAgICAgICAgIGFwcGx5SW5saW5lU3R5bGVD
aGFuZ2UoV1RGTW92ZShydW4uc3RhcnQpLCBXVEZNb3ZlKHJ1bi5lbmQpLCBydW4uY2hhbmdlLCBB
ZGRTdHlsZWRFbGVtZW50KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKaW5kZXggYjkwNDJmYTRkZjc4OWE1NmE2OGU5Mjkz
M2Q3NTA5ZGUyMjZjYmY0ZS4uOTE3OTdhMWJmY2FmOTAyNzI1NjUxMjNkZWU0ZTU5MjE5MTRkNzlk
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFu
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5j
cHAKQEAgLTUyMiw3ICs1MjIsNyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZW1vdmVD
aGlsZHJlbkluUmFuZ2UoUGFzc1JlZlB0cjxOb2RlPiBub2RlLCB1bnNpZ25lZAogICAgICAgICBj
aGlsZHJlbi5hcHBlbmQoY2hpbGQpOwogCiAgICAgZm9yIChhdXRvJiBjaGlsZCA6IGNoaWxkcmVu
KQotICAgICAgICByZW1vdmVOb2RlKGNoaWxkLnJlbGVhc2UoKSk7CisgICAgICAgIHJlbW92ZU5v
ZGUoV1RGTW92ZShjaGlsZCkpOwogfQogCiB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZW1v
dmVOb2RlKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSwgU2hvdWxkQXNzdW1lQ29udGVudElzQWx3YXlz
RWRpdGFibGUgc2hvdWxkQXNzdW1lQ29udGVudElzQWx3YXlzRWRpdGFibGUpCkBAIC01NDEsNyAr
NTQxLDcgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVtb3ZlTm9kZUFuZFBydW5lQW5j
ZXN0b3JzKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSkKIHsKICAgICBSZWZQdHI8Q29udGFpbmVyTm9k
ZT4gcGFyZW50ID0gbm9kZS0+cGFyZW50Tm9kZSgpOwogICAgIHJlbW92ZU5vZGUobm9kZSk7Ci0g
ICAgcHJ1bmUocGFyZW50LnJlbGVhc2UoKSk7CisgICAgcHJ1bmUoV1RGTW92ZShwYXJlbnQpKTsK
IH0KIAogdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVJlbWFpbmluZ1NpYmxpbmdzVG9O
ZXdQYXJlbnQoTm9kZSogbm9kZSwgTm9kZSogcGFzdExhc3ROb2RlVG9Nb3ZlLCBQYXNzUmVmUHRy
PEVsZW1lbnQ+IHBycE5ld1BhcmVudCkKQEAgLTU4Myw3ICs1ODMsNyBAQCBIVE1MRWxlbWVudCog
Q29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlcGxhY2VFbGVtZW50V2l0aFNwYW5QcmVzZXJ2aW5nQ2hp
bGRyZW5BbmRBdAogdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cHJ1bmUoUGFzc1JlZlB0cjxO
b2RlPiBub2RlKQogewogICAgIGlmIChSZWZQdHI8Tm9kZT4gaGlnaGVzdE5vZGVUb1JlbW92ZSA9
IGhpZ2hlc3ROb2RlVG9SZW1vdmVJblBydW5pbmcobm9kZS5nZXQoKSkpCi0gICAgICAgIHJlbW92
ZU5vZGUoaGlnaGVzdE5vZGVUb1JlbW92ZS5yZWxlYXNlKCkpOworICAgICAgICByZW1vdmVOb2Rl
KFdURk1vdmUoaGlnaGVzdE5vZGVUb1JlbW92ZSkpOwogfQogCiB2b2lkIENvbXBvc2l0ZUVkaXRD
b21tYW5kOjpzcGxpdFRleHROb2RlKFBhc3NSZWZQdHI8VGV4dD4gbm9kZSwgdW5zaWduZWQgb2Zm
c2V0KQpAQCAtNjg4LDcgKzY4OCw3IEBAIFBvc2l0aW9uIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpy
ZXBsYWNlU2VsZWN0ZWRUZXh0SW5Ob2RlKGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICBSZWZQdHI8
VGV4dD4gdGV4dE5vZGUgPSBzdGFydC5jb250YWluZXJUZXh0KCk7CiAgICAgcmVwbGFjZVRleHRJ
bk5vZGUodGV4dE5vZGUsIHN0YXJ0Lm9mZnNldEluQ29udGFpbmVyTm9kZSgpLCBlbmQub2Zmc2V0
SW5Db250YWluZXJOb2RlKCkgLSBzdGFydC5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSwgdGV4dCk7
CiAKLSAgICByZXR1cm4gUG9zaXRpb24odGV4dE5vZGUucmVsZWFzZSgpLCBzdGFydC5vZmZzZXRJ
bkNvbnRhaW5lck5vZGUoKSArIHRleHQubGVuZ3RoKCkpOworICAgIHJldHVybiBQb3NpdGlvbihX
VEZNb3ZlKHRleHROb2RlKSwgc3RhcnQub2Zmc2V0SW5Db250YWluZXJOb2RlKCkgKyB0ZXh0Lmxl
bmd0aCgpKTsKIH0KIAogc3RhdGljIFZlY3RvcjxSZW5kZXJlZERvY3VtZW50TWFya2VyPiBjb3B5
TWFya2Vycyhjb25zdCBWZWN0b3I8UmVuZGVyZWREb2N1bWVudE1hcmtlcio+JiBtYXJrZXJQb2lu
dGVycykKQEAgLTg3Miw3ICs4NzIsNyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZWJh
bGFuY2VXaGl0ZXNwYWNlT25UZXh0U3Vic3RyaW5nKFBhc3NSZWZQdHI8VGV4dD4gcAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlz
RW5kT2ZQYXJhZ3JhcGgodmlzaWJsZURvd25zdHJlYW1Qb3MpIHx8ICh1bnNpZ25lZClkb3duc3Ry
ZWFtID09IHRleHQubGVuZ3RoKCkpOwogICAgIAogICAgIGlmIChzdHJpbmcgIT0gcmViYWxhbmNl
ZFN0cmluZykKLSAgICAgICAgcmVwbGFjZVRleHRJbk5vZGVQcmVzZXJ2aW5nTWFya2Vycyh0ZXh0
Tm9kZS5yZWxlYXNlKCksIHVwc3RyZWFtLCBsZW5ndGgsIHJlYmFsYW5jZWRTdHJpbmcpOworICAg
ICAgICByZXBsYWNlVGV4dEluTm9kZVByZXNlcnZpbmdNYXJrZXJzKFdURk1vdmUodGV4dE5vZGUp
LCB1cHN0cmVhbSwgbGVuZ3RoLCByZWJhbGFuY2VkU3RyaW5nKTsKIH0KIAogdm9pZCBDb21wb3Np
dGVFZGl0Q29tbWFuZDo6cHJlcGFyZVdoaXRlc3BhY2VBdFBvc2l0aW9uRm9yU3BsaXQoUG9zaXRp
b24mIHBvc2l0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9DcmVhdGVM
aW5rQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NyZWF0ZUxpbmtDb21tYW5k
LmNwcAppbmRleCBhM2VlN2U1MDU4NDI4ZWY4MzEwNTM5OThiODIxYjJkNDdmYjZhYThmLi4zYTA1
MjA4NzNiNDRmZTY0YTJlZDUyMmUzMzdkZmI3NGUxMmE2MjI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0NyZWF0ZUxpbmtDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0NyZWF0ZUxpbmtDb21tYW5kLmNwcApAQCAtNDMsMTYgKzQzLDE2IEBAIHZvaWQg
Q3JlYXRlTGlua0NvbW1hbmQ6OmRvQXBwbHkoKQogICAgIGlmIChlbmRpbmdTZWxlY3Rpb24oKS5p
c05vbmUoKSkKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICBSZWZQdHI8SFRNTEFuY2hv
ckVsZW1lbnQ+IGFuY2hvckVsZW1lbnQgPSBIVE1MQW5jaG9yRWxlbWVudDo6Y3JlYXRlKGRvY3Vt
ZW50KCkpOworICAgIGF1dG8gYW5jaG9yRWxlbWVudCA9IEhUTUxBbmNob3JFbGVtZW50OjpjcmVh
dGUoZG9jdW1lbnQoKSk7CiAgICAgYW5jaG9yRWxlbWVudC0+c2V0SHJlZihtX3VybCk7CiAgICAg
CiAgICAgaWYgKGVuZGluZ1NlbGVjdGlvbigpLmlzUmFuZ2UoKSkKLSAgICAgICAgYXBwbHlTdHls
ZWRFbGVtZW50KGFuY2hvckVsZW1lbnQucmVsZWFzZSgpKTsKKyAgICAgICAgYXBwbHlTdHlsZWRF
bGVtZW50KFdURk1vdmUoYW5jaG9yRWxlbWVudCkpOwogICAgIGVsc2UgewotICAgICAgICBpbnNl
cnROb2RlQXQoYW5jaG9yRWxlbWVudC5nZXQoKSwgZW5kaW5nU2VsZWN0aW9uKCkuc3RhcnQoKSk7
Ci0gICAgICAgIFJlZlB0cjxUZXh0PiB0ZXh0Tm9kZSA9IFRleHQ6OmNyZWF0ZShkb2N1bWVudCgp
LCBtX3VybCk7Ci0gICAgICAgIGFwcGVuZE5vZGUodGV4dE5vZGUucmVsZWFzZSgpLCBhbmNob3JF
bGVtZW50LmdldCgpKTsKLSAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rp
b24ocG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUoYW5jaG9yRWxlbWVudC5nZXQoKSksIHBvc2l0
aW9uSW5QYXJlbnRBZnRlck5vZGUoYW5jaG9yRWxlbWVudC5nZXQoKSksIERPV05TVFJFQU0sIGVu
ZGluZ1NlbGVjdGlvbigpLmlzRGlyZWN0aW9uYWwoKSkpOworICAgICAgICBpbnNlcnROb2RlQXQo
YW5jaG9yRWxlbWVudC5wdHIoKSwgZW5kaW5nU2VsZWN0aW9uKCkuc3RhcnQoKSk7CisgICAgICAg
IGF1dG8gdGV4dE5vZGUgPSBUZXh0OjpjcmVhdGUoZG9jdW1lbnQoKSwgbV91cmwpOworICAgICAg
ICBhcHBlbmROb2RlKFdURk1vdmUodGV4dE5vZGUpLCBhbmNob3JFbGVtZW50LnB0cigpKTsKKyAg
ICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocG9zaXRpb25JblBhcmVu
dEJlZm9yZU5vZGUoYW5jaG9yRWxlbWVudC5wdHIoKSksIHBvc2l0aW9uSW5QYXJlbnRBZnRlck5v
ZGUoYW5jaG9yRWxlbWVudC5wdHIoKSksIERPV05TVFJFQU0sIGVuZGluZ1NlbGVjdGlvbigpLmlz
RGlyZWN0aW9uYWwoKSkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5n
U3R5bGUuY3BwCmluZGV4IDI5MTRmNjI3MTJiNzJkMTE4YWViZDIxNjUyMTA5ZGJmNTRmY2IyZmEu
LmVjN2U3ZWI3NzJhNzFkMjliOWRiODFmMTNmODA5YTIyMWQyZjcxN2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKQEAgLTEyNDgsOSArMTI0OCw5IEBAIHZvaWQgRWRp
dGluZ1N0eWxlOjptZXJnZVN0eWxlKGNvbnN0IFN0eWxlUHJvcGVydGllcyogc3R5bGUsIENTU1By
b3BlcnR5T3ZlcnJpZGVNCiAgICAgICAgIGlmICgocHJvcGVydHkuaWQoKSA9PSBDU1NQcm9wZXJ0
eVRleHREZWNvcmF0aW9uIHx8IHByb3BlcnR5LmlkKCkgPT0gQ1NTUHJvcGVydHlXZWJraXRUZXh0
RGVjb3JhdGlvbnNJbkVmZmVjdCkKICAgICAgICAgICAgICYmIGlzPENTU1ZhbHVlTGlzdD4oKnBy
b3BlcnR5LnZhbHVlKCkpICYmIHZhbHVlKSB7CiAgICAgICAgICAgICBpZiAoaXM8Q1NTVmFsdWVM
aXN0PigqdmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbmV3
VmFsdWUgPSBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KCp2YWx1ZSkuY29weSgpOwotICAgICAgICAg
ICAgICAgIG1lcmdlVGV4dERlY29yYXRpb25WYWx1ZXMoKm5ld1ZhbHVlLCBkb3duY2FzdDxDU1NW
YWx1ZUxpc3Q+KCpwcm9wZXJ0eS52YWx1ZSgpKSk7Ci0gICAgICAgICAgICAgICAgbV9tdXRhYmxl
U3R5bGUtPnNldFByb3BlcnR5KHByb3BlcnR5LmlkKCksIG5ld1ZhbHVlLnJlbGVhc2UoKSwgcHJv
cGVydHkuaXNJbXBvcnRhbnQoKSk7CisgICAgICAgICAgICAgICAgYXV0byBuZXdWYWx1ZSA9IGRv
d25jYXN0PENTU1ZhbHVlTGlzdD4oKnZhbHVlKS5jb3B5KCk7CisgICAgICAgICAgICAgICAgbWVy
Z2VUZXh0RGVjb3JhdGlvblZhbHVlcyhuZXdWYWx1ZSwgZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pigq
cHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICAgICAgICAgIG1fbXV0YWJsZVN0eWxlLT5zZXRQ
cm9wZXJ0eShwcm9wZXJ0eS5pZCgpLCBXVEZNb3ZlKG5ld1ZhbHVlKSwgcHJvcGVydHkuaXNJbXBv
cnRhbnQoKSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB2YWx1ZSA9IG51bGxwdHI7IC8vIHRleHQtZGVjb3JhdGlvbjogbm9uZSBpcyBlcXVp
dmFsZW50IHRvIG5vdCBoYXZpbmcgdGhlIHByb3BlcnR5LgpAQCAtMTMwNyw4ICsxMzA3LDggQEAg
dm9pZCBFZGl0aW5nU3R5bGU6Om1lcmdlU3R5bGVGcm9tUnVsZXNGb3JTZXJpYWxpemF0aW9uKFN0
eWxlZEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgICAgICAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZh
bHVlPigqdmFsdWUpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYg
KGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLmlzUGVyY2VudGFnZSgpKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKFJlZlB0cjxDU1NWYWx1ZT4gY29tcHV0ZWRQcm9wZXJ0eVZhbHVl
ID0gY29tcHV0ZWRTdHlsZS5wcm9wZXJ0eVZhbHVlKHByb3BlcnR5LmlkKCkpKQotICAgICAgICAg
ICAgICAgICAgICBmcm9tQ29tcHV0ZWRTdHlsZS0+YWRkUGFyc2VkUHJvcGVydHkoQ1NTUHJvcGVy
dHkocHJvcGVydHkuaWQoKSwgY29tcHV0ZWRQcm9wZXJ0eVZhbHVlLnJlbGVhc2UoKSkpOworICAg
ICAgICAgICAgICAgIGlmIChhdXRvIGNvbXB1dGVkUHJvcGVydHlWYWx1ZSA9IGNvbXB1dGVkU3R5
bGUucHJvcGVydHlWYWx1ZShwcm9wZXJ0eS5pZCgpKSkKKyAgICAgICAgICAgICAgICAgICAgZnJv
bUNvbXB1dGVkU3R5bGUtPmFkZFBhcnNlZFByb3BlcnR5KENTU1Byb3BlcnR5KHByb3BlcnR5Lmlk
KCksIFdURk1vdmUoY29tcHV0ZWRQcm9wZXJ0eVZhbHVlKSkpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDM0Y2RjZTk5ZjNi
ZmYzMmQ0NjlmNDUxNjk3ZDRkNTlkYTcwOGM1ZmEuLmY2NjYzMzAxNjQzMDMxMzU4NTQwZmI3NGMx
MjUwNzg2ZjdjNzUzNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTEzNiw5ICsx
MzYsOSBAQCB2b2lkIENsZWFyVGV4dENvbW1hbmQ6OkNyZWF0ZUFuZEFwcGx5KGNvbnN0IFJlZlB0
cjxGcmFtZT4gZnJhbWUpCiAgICAgCiAgICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiBvbGRTZWxl
Y3Rpb24gPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CiAgICAgZnJhbWUtPnNlbGVj
dGlvbigpLnNlbGVjdEFsbCgpOwotICAgIFJlZlB0cjxDbGVhclRleHRDb21tYW5kPiBjbGVhckNv
bW1hbmQgPSBhZG9wdFJlZihuZXcgQ2xlYXJUZXh0Q29tbWFuZCgqZnJhbWUtPmRvY3VtZW50KCkp
KTsKKyAgICBhdXRvIGNsZWFyQ29tbWFuZCA9IGFkb3B0UmVmKCpuZXcgQ2xlYXJUZXh0Q29tbWFu
ZCgqZnJhbWUtPmRvY3VtZW50KCkpKTsKICAgICBjbGVhckNvbW1hbmQtPnNldFN0YXJ0aW5nU2Vs
ZWN0aW9uKG9sZFNlbGVjdGlvbik7Ci0gICAgYXBwbHlDb21tYW5kKGNsZWFyQ29tbWFuZC5yZWxl
YXNlKCkpOworICAgIGFwcGx5Q29tbWFuZChXVEZNb3ZlKGNsZWFyQ29tbWFuZCkpOwogfQogCiB1
c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMjQzMywxNiArMjQzMywxNiBAQCB2b2lkIEVk
aXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tp
bmdUeXBlTWFzayB0ZXh0QwogICAgIGJvb2wgYXN5bmNocm9ub3VzID0gbV9mcmFtZS5zZXR0aW5n
cygpLmFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgJiYgIXNob3VsZFNob3dDb3Jy
ZWN0aW9uUGFuZWw7CiAKICAgICAvLyBJbiBhc3luY2hyb25vdXMgbW9kZSwgd2UgaW50ZW50aW9u
YWxseSBjaGVjayBwYXJhZ3JhcGgtd2lkZSBzZW50ZW5jZS4KLSAgICBSZWZQdHI8U3BlbGxDaGVj
a1JlcXVlc3Q+IHJlcXVlc3QgPSBTcGVsbENoZWNrUmVxdWVzdDo6Y3JlYXRlKHJlc29sdmVUZXh0
Q2hlY2tpbmdUeXBlTWFzayh0ZXh0Q2hlY2tpbmdPcHRpb25zKSwgVGV4dENoZWNraW5nUHJvY2Vz
c0luY3JlbWVudGFsLCBhc3luY2hyb25vdXMgPyBwYXJhZ3JhcGhSYW5nZSA6IHJhbmdlVG9DaGVj
aywgcGFyYWdyYXBoUmFuZ2UpOworICAgIGF1dG8gcmVxdWVzdCA9IFNwZWxsQ2hlY2tSZXF1ZXN0
OjpjcmVhdGUocmVzb2x2ZVRleHRDaGVja2luZ1R5cGVNYXNrKHRleHRDaGVja2luZ09wdGlvbnMp
LCBUZXh0Q2hlY2tpbmdQcm9jZXNzSW5jcmVtZW50YWwsIGFzeW5jaHJvbm91cyA/IHBhcmFncmFw
aFJhbmdlIDogcmFuZ2VUb0NoZWNrLCBwYXJhZ3JhcGhSYW5nZSk7CiAKICAgICBpZiAoYXN5bmNo
cm9ub3VzKSB7Ci0gICAgICAgIG1fc3BlbGxDaGVja2VyLT5yZXF1ZXN0Q2hlY2tpbmdGb3IocmVx
dWVzdC5yZWxlYXNlKCkpOworICAgICAgICBtX3NwZWxsQ2hlY2tlci0+cmVxdWVzdENoZWNraW5n
Rm9yKFdURk1vdmUocmVxdWVzdCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgVmVj
dG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gcmVzdWx0czsKICAgICBjaGVja1RleHRPZlBhcmFncmFw
aCgqdGV4dENoZWNrZXIoKSwgcGFyYWdyYXBoVG9DaGVjay50ZXh0KCksIHJlc29sdmVUZXh0Q2hl
Y2tpbmdUeXBlTWFzayh0ZXh0Q2hlY2tpbmdPcHRpb25zKSwgcmVzdWx0cywgbV9mcmFtZS5zZWxl
Y3Rpb24oKS5zZWxlY3Rpb24oKSk7Ci0gICAgbWFya0FuZFJlcGxhY2VGb3IocmVxdWVzdC5yZWxl
YXNlKCksIHJlc3VsdHMpOworICAgIG1hcmtBbmRSZXBsYWNlRm9yKFdURk1vdmUocmVxdWVzdCks
IHJlc3VsdHMpOwogfQogCiBzdGF0aWMgYm9vbCBpc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudFR5
cGUoVGV4dENoZWNraW5nVHlwZSB0eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3JDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29t
bWFuZC5jcHAKaW5kZXggYTkzNTgwZTc2N2ZmY2IwZjQzYmFkMWY2ZDk4NWNhNmIzYTA3ZGZkOS4u
ZGRmMTk0YzcyYTczYjdmZmJkMThlYzYzZjJlYTU0YTg0OTc0MmQ4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCkBAIC0xNjUsMTIgKzE2NSwxMiBAQCBzdGF0aWMg
Ym9vbCBleGVjdXRlSW5zZXJ0RnJhZ21lbnQoRnJhbWUmIGZyYW1lLCBQYXNzUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IGZyYQogCiBzdGF0aWMgYm9vbCBleGVjdXRlSW5zZXJ0Tm9kZShGcmFtZSYg
ZnJhbWUsIFJlZjxOb2RlPiYmIGNvbnRlbnQpCiB7Ci0gICAgUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IGZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgp
KTsKKyAgICBhdXRvIGZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKCpmcmFtZS5k
b2N1bWVudCgpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBmcmFnbWVudC0+YXBw
ZW5kQ2hpbGQoY29udGVudCwgZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIHJldHVybiBleGVjdXRlSW5zZXJ0RnJhZ21lbnQoZnJhbWUsIGZyYWdtZW50LnJlbGVh
c2UoKSk7CisgICAgcmV0dXJuIGV4ZWN1dGVJbnNlcnRGcmFnbWVudChmcmFtZSwgV1RGTW92ZShm
cmFnbWVudCkpOwogfQogCiBzdGF0aWMgYm9vbCBleHBhbmRTZWxlY3Rpb25Ub0dyYW51bGFyaXR5
KEZyYW1lJiBmcmFtZSwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcAppbmRleCA5Yjk0NDhjYzY2ZDAwN2E4
ZWMyOTRiYzNiOWVmNWM4MTU2MjFiMTdiLi4xMDM5ODdhZDdlZGE5ODBmODBlNjEyOTZhNjM3YWEx
NGQ5OTcwODM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRD
b21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5k
LmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIGJvb2wgSW5zZXJ0VGV4dENvbW1hbmQ6OnBlcmZvcm1P
dmVyd3JpdGUoY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIHNlbGVjdEluc2VydGVkCiAKICAgICBy
ZXBsYWNlVGV4dEluTm9kZSh0ZXh0Tm9kZSwgc3RhcnQub2Zmc2V0SW5Db250YWluZXJOb2RlKCks
IGNvdW50LCB0ZXh0KTsKIAotICAgIFBvc2l0aW9uIGVuZFBvc2l0aW9uID0gUG9zaXRpb24odGV4
dE5vZGUucmVsZWFzZSgpLCBzdGFydC5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSArIHRleHQubGVu
Z3RoKCkpOworICAgIFBvc2l0aW9uIGVuZFBvc2l0aW9uID0gUG9zaXRpb24oV1RGTW92ZSh0ZXh0
Tm9kZSksIHN0YXJ0Lm9mZnNldEluQ29udGFpbmVyTm9kZSgpICsgdGV4dC5sZW5ndGgoKSk7CiAg
ICAgc2V0RW5kaW5nU2VsZWN0aW9uV2l0aG91dFZhbGlkYXRpb24oc3RhcnQsIGVuZFBvc2l0aW9u
KTsKICAgICBpZiAoIXNlbGVjdEluc2VydGVkVGV4dCkKICAgICAgICAgc2V0RW5kaW5nU2VsZWN0
aW9uKFZpc2libGVTZWxlY3Rpb24oZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpLCBlbmRp
bmdTZWxlY3Rpb24oKS5pc0RpcmVjdGlvbmFsKCkpKTsKQEAgLTI0NSw3ICsyNDUsNyBAQCBQb3Np
dGlvbiBJbnNlcnRUZXh0Q29tbWFuZDo6aW5zZXJ0VGFiKGNvbnN0IFBvc2l0aW9uJiBwb3MpCiAg
ICAgaWYgKGlzVGFiU3BhblRleHROb2RlKG5vZGUpKSB7CiAgICAgICAgIFJlZlB0cjxUZXh0PiB0
ZXh0Tm9kZSA9IGRvd25jYXN0PFRleHQ+KG5vZGUpOwogICAgICAgICBpbnNlcnRUZXh0SW50b05v
ZGUodGV4dE5vZGUsIG9mZnNldCwgIlx0Iik7Ci0gICAgICAgIHJldHVybiBQb3NpdGlvbih0ZXh0
Tm9kZS5yZWxlYXNlKCksIG9mZnNldCArIDEpOworICAgICAgICByZXR1cm4gUG9zaXRpb24oV1RG
TW92ZSh0ZXh0Tm9kZSksIG9mZnNldCArIDEpOwogICAgIH0KICAgICAKICAgICAvLyBjcmVhdGUg
bmV3IHRhYiBzcGFuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5v
ZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwCmluZGV4IGI2MWUyZmZhYWNl
NDI5NGFkM2QyMzZjYjJjZDYyMDRhOTdkZmJjYjMuLjE2ZjBmNjMxMDgwOGQ0MDk2MjYwNGY3MTk2
ZDNmNjdjYTE2NmI3NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3Zl
Tm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwCkBAIC00Nyw5ICs0
Nyw5IEBAIHZvaWQgUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQ6OmRvQXBwbHko
KQogCiAgICAgc2l6ZV90IHNpemUgPSBjaGlsZHJlbi5zaXplKCk7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgUmVmUHRyPE5vZGU+IGNoaWxkID0gV1RG
TW92ZShjaGlsZHJlbltpXSk7CisgICAgICAgIGF1dG8gY2hpbGQgPSBXVEZNb3ZlKGNoaWxkcmVu
W2ldKTsKICAgICAgICAgcmVtb3ZlTm9kZShjaGlsZCwgbV9zaG91bGRBc3N1bWVDb250ZW50SXNB
bHdheXNFZGl0YWJsZSk7Ci0gICAgICAgIGluc2VydE5vZGVCZWZvcmUoY2hpbGQucmVsZWFzZSgp
LCBtX25vZGUsIG1fc2hvdWxkQXNzdW1lQ29udGVudElzQWx3YXlzRWRpdGFibGUpOworICAgICAg
ICBpbnNlcnROb2RlQmVmb3JlKFdURk1vdmUoY2hpbGQpLCBtX25vZGUsIG1fc2hvdWxkQXNzdW1l
Q29udGVudElzQWx3YXlzRWRpdGFibGUpOwogICAgIH0KICAgICByZW1vdmVOb2RlKG1fbm9kZSwg
bV9zaG91bGRBc3N1bWVDb250ZW50SXNBbHdheXNFZGl0YWJsZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IGVkZTg3
ZGIzZmZlOWU1YzI4MTAzMWUxMmFmOGY0YWU4ZGUyZjUyNTYuLjQ5NDQwNWUyNDJmYTc4NmE1N2Qy
MWQyYzcxZmNhYzgyN2RhNTU1OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC0yMjksOSArMjI5LDkgQEAgdm9pZCBSZXBs
YWNlbWVudEZyYWdtZW50OjpyZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuKFBhc3NSZWZQdHI8
Tm9kZT4gbm9kZSkKIAogICAgIHdoaWxlIChSZWZQdHI8Tm9kZT4gbiA9IG5vZGUtPmZpcnN0Q2hp
bGQoKSkgewogICAgICAgICByZW1vdmVOb2RlKG4pOwotICAgICAgICBpbnNlcnROb2RlQmVmb3Jl
KG4ucmVsZWFzZSgpLCBub2RlLmdldCgpKTsKKyAgICAgICAgaW5zZXJ0Tm9kZUJlZm9yZShXVEZN
b3ZlKG4pLCBub2RlLmdldCgpKTsKICAgICB9Ci0gICAgcmVtb3ZlTm9kZShub2RlKTsKKyAgICBy
ZW1vdmVOb2RlKFdURk1vdmUobm9kZSkpOwogfQogCiB2b2lkIFJlcGxhY2VtZW50RnJhZ21lbnQ6
OnJlbW92ZU5vZGUoUGFzc1JlZlB0cjxOb2RlPiBub2RlKQpAQCAtNjc4LDcgKzY3OCw3IEBAIHZv
aWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Om1vdmVOb2RlT3V0T2ZBbmNlc3RvcihQYXNzUmVm
UHRyPE5vZGU+IHBycE5vZGUsIFBhCiAgICAgfQogICAgIGlmICghYW5jZXN0b3ItPmZpcnN0Q2hp
bGQoKSkgewogICAgICAgICBpbnNlcnRlZE5vZGVzLndpbGxSZW1vdmVOb2RlKGFuY2VzdG9yLmdl
dCgpKTsKLSAgICAgICAgcmVtb3ZlTm9kZShhbmNlc3Rvci5yZWxlYXNlKCkpOworICAgICAgICBy
ZW1vdmVOb2RlKFdURk1vdmUoYW5jZXN0b3IpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXggNDdlMWFhN2U5ZDdhMTM3ZTgz
YzA3ZWM0NzBhNTAyNDQxNDI2ZDJlYy4uN2RlM2Q4MDczMGI2MzMyYTUzOGUwZjBmZTUwNzY1OGE0
YzRlMzM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5j
cHAKQEAgLTI4MCw3ICsyODAsNyBAQCBzdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKFNldHRpbmdzKiBzZXR0aW5ncwogICAgIAogYm9v
bCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUoKQogewot
ICAgIHN0YXRpYyBTaGFyZWRCdWZmZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRhID0gY3JlYXRlVGVt
cGxhdGVEb2N1bWVudERhdGEoZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSkucmVsZWFzZSgpLmxlYWtS
ZWYoKTsKKyAgICBzdGF0aWMgU2hhcmVkQnVmZmVyKiB0ZW1wbGF0ZURvY3VtZW50RGF0YSA9IGNy
ZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGRvY3VtZW50KCktPnNldHRpbmdzKCkpLmxlYWtSZWYo
KTsKICAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiBzdG9yaW5nIHRoZSBkYXRhLCBpdCB3b3VsZCBi
ZSBtb3JlIGVmZmljaWVudCBpZiB3ZSBjb3VsZCBwYXJzZSB0aGUgdGVtcGxhdGUgZGF0YSBpbnRv
IHRoZQogICAgIC8vIHRlbXBsYXRlIERvY3VtZW50IG9uY2UsIHN0b3JlIHRoYXQgZG9jdW1lbnQs
IHRoZW4gImNvcHkiIGl0IHdoZW5ldmVyIHdlIGdldCBhbiBGVFAgZGlyZWN0b3J5IGxpc3Rpbmcu
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5jcHAKaW5kZXggMzk4ZDE0
NTdhNTk5YWZiZDUxMWRiMGFkMTY5OTVjZjZhYmViNWM1OS4uYWFiNGQ5NDYxM2Q0NGZkY2Q4NWZl
OGY5ZDBhNDE0MDM2YmRlNDYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9udEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50
LmNwcApAQCAtMTk0LDggKzE5NCw4IEBAIHZvaWQgSFRNTEZvbnRFbGVtZW50Ojpjb2xsZWN0U3R5
bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYKICAgICB9IGVs
c2UgaWYgKG5hbWUgPT0gY29sb3JBdHRyKQogICAgICAgICBhZGRIVE1MQ29sb3JUb1N0eWxlKHN0
eWxlLCBDU1NQcm9wZXJ0eUNvbG9yLCB2YWx1ZSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBmYWNl
QXR0cikgewotICAgICAgICBpZiAoUmVmUHRyPENTU1ZhbHVlTGlzdD4gZm9udEZhY2VWYWx1ZSA9
IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlRm9udEZhY2VWYWx1ZSh2YWx1ZSkpCi0g
ICAgICAgICAgICBzdHlsZS5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRG
YW1pbHksIGZvbnRGYWNlVmFsdWUucmVsZWFzZSgpKSk7CisgICAgICAgIGlmIChhdXRvIGZvbnRG
YWNlVmFsdWUgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUZvbnRGYWNlVmFsdWUo
dmFsdWUpKQorICAgICAgICAgICAgc3R5bGUuc2V0UHJvcGVydHkoQ1NTUHJvcGVydHkoQ1NTUHJv
cGVydHlGb250RmFtaWx5LCBXVEZNb3ZlKGZvbnRGYWNlVmFsdWUpKSk7CiAgICAgfSBlbHNlCiAg
ICAgICAgIEhUTUxFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUo
bmFtZSwgdmFsdWUsIHN0eWxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50
LmNwcAppbmRleCBhYzkyNzI4MWM1MmRkNWViYTRjZTllODkxMmJhN2Y4MThhZDkzYWIzLi42MTNm
ZjJkZjlmZWY1MWFhMTI0MWNkNWQyNTM3NmZjNDcxOTg4M2I0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC0yODQsOCArMjg0LDggQEAgdm9pZCBIVE1MRm9ybUVs
ZW1lbnQ6OnByZXBhcmVGb3JTdWJtaXNzaW9uKEV2ZW50KiBldmVudCkKIAogICAgIFN0cmluZ1Bh
aXJWZWN0b3IgY29udHJvbE5hbWVzQW5kVmFsdWVzOwogICAgIGdldFRleHRGaWVsZFZhbHVlcyhj
b250cm9sTmFtZXNBbmRWYWx1ZXMpOwotICAgIFJlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSA9
IEZvcm1TdGF0ZTo6Y3JlYXRlKHRoaXMsIGNvbnRyb2xOYW1lc0FuZFZhbHVlcywgJmRvY3VtZW50
KCksIE5vdFN1Ym1pdHRlZEJ5SmF2YVNjcmlwdCk7Ci0gICAgZnJhbWUtPmxvYWRlcigpLmNsaWVu
dCgpLmRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChmb3JtU3RhdGUucmVsZWFzZSgpKTsKKyAg
ICBhdXRvIGZvcm1TdGF0ZSA9IEZvcm1TdGF0ZTo6Y3JlYXRlKHRoaXMsIGNvbnRyb2xOYW1lc0Fu
ZFZhbHVlcywgJmRvY3VtZW50KCksIE5vdFN1Ym1pdHRlZEJ5SmF2YVNjcmlwdCk7CisgICAgZnJh
bWUtPmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChXVEZNb3Zl
KGZvcm1TdGF0ZSkpOwogCiAgICAgUmVmPEhUTUxGb3JtRWxlbWVudD4gcHJvdGVjdGVkVGhpcygq
dGhpcyk7CiAgICAgLy8gRXZlbnQgaGFuZGxpbmcgY2FuIHJlc3VsdCBpbiBtX3Nob3VsZFN1Ym1p
dCBiZWNvbWluZyB0cnVlLCByZWdhcmRsZXNzIG9mIGRpc3BhdGNoRXZlbnQoKSByZXR1cm4gdmFs
dWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAppbmRleCAxZjUyNGZk
ZThiN2FmNTAxZTg2ZDk2MDk0NDU5OTVmMTZkNTI3MmE2Li44N2YyYjc2MWY4NzE5YWViNWU2N2Vi
OGFkZTU1ODEwMGMxOGRkNmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVu
dC5jcHAKQEAgLTQzNSwxMiArNDM1LDEyIEBAIHZvaWQgSFRNTFRhYmxlRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyCiAKIHN0
YXRpYyBTdHlsZVByb3BlcnRpZXMqIGxlYWtCb3JkZXJTdHlsZShDU1NWYWx1ZUlEIHZhbHVlKQog
ewotICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHls
ZVByb3BlcnRpZXM6OmNyZWF0ZSgpOworICAgIGF1dG8gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzOjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCb3Jk
ZXJUb3BTdHlsZSwgdmFsdWUpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJv
cmRlckJvdHRvbVN0eWxlLCB2YWx1ZSk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3Bl
cnR5Qm9yZGVyTGVmdFN0eWxlLCB2YWx1ZSk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1By
b3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgdmFsdWUpOwotICAgIHJldHVybiBzdHlsZS5yZWxlYXNl
KCkubGVha1JlZigpOworICAgIHJldHVybiAmc3R5bGUubGVha1JlZigpOwogfQogCiBjb25zdCBT
dHlsZVByb3BlcnRpZXMqIEhUTUxUYWJsZUVsZW1lbnQ6OmFkZGl0aW9uYWxQcmVzZW50YXRpb25B
dHRyaWJ1dGVTdHlsZSgpIGNvbnN0CkBAIC01MzksNyArNTM5LDcgQEAgY29uc3QgU3R5bGVQcm9w
ZXJ0aWVzKiBIVE1MVGFibGVFbGVtZW50OjphZGRpdGlvbmFsQ2VsbFN0eWxlKCkKIAogc3RhdGlj
IFN0eWxlUHJvcGVydGllcyogbGVha0dyb3VwQm9yZGVyU3R5bGUoaW50IHJvd3MpCiB7Ci0gICAg
UmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVy
dGllczo6Y3JlYXRlKCk7CisgICAgYXV0byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6
OmNyZWF0ZSgpOwogICAgIGlmIChyb3dzKSB7CiAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShD
U1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBDU1NWYWx1ZVRoaW4pOwogICAgICAgICBzdHlsZS0+
c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgQ1NTVmFsdWVUaGluKTsK
QEAgLTU1MSw3ICs1NTEsNyBAQCBzdGF0aWMgU3R5bGVQcm9wZXJ0aWVzKiBsZWFrR3JvdXBCb3Jk
ZXJTdHlsZShpbnQgcm93cykKICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5
Qm9yZGVyTGVmdFN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKICAgICAgICAgc3R5bGUtPnNldFByb3Bl
cnR5KENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgQ1NTVmFsdWVTb2xpZCk7CiAgICAgfQot
ICAgIHJldHVybiBzdHlsZS5yZWxlYXNlKCkubGVha1JlZigpOworICAgIHJldHVybiAmc3R5bGUu
bGVha1JlZigpOwogfQogCiBjb25zdCBTdHlsZVByb3BlcnRpZXMqIEhUTUxUYWJsZUVsZW1lbnQ6
OmFkZGl0aW9uYWxHcm91cFN0eWxlKGJvb2wgcm93cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDNhYWQ5YjY1NTI1NTJkZjA1
ZGQyMDZhZWJmNDJhNmRiZjVkNGFlYTQuLmU2MjJkMGRmYzM5MmI1ZWNhMmM0NGIxZjIzOTFlNGZh
YTdjNDkyNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1
bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3Vt
ZW50UGFyc2VyLmNwcApAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2Vy
OjpydW5TY3JpcHRzRm9yUGF1c2VkVHJlZUJ1aWxkZXIoKQogICAgICAgICBBU1NFUlQoIW1fdHJl
ZUJ1aWxkZXItPmhhc1BhcnNlckJsb2NraW5nU2NyaXB0V29yaygpKTsKICAgICAgICAgLy8gV2Ug
d2lsbCBub3QgaGF2ZSBhIHNjcmlwdFJ1bm5lciB3aGVuIHBhcnNpbmcgYSBEb2N1bWVudEZyYWdt
ZW50LgogICAgICAgICBpZiAobV9zY3JpcHRSdW5uZXIpCi0gICAgICAgICAgICBtX3NjcmlwdFJ1
bm5lci0+ZXhlY3V0ZShzY3JpcHRFbGVtZW50LnJlbGVhc2UoKSwgc2NyaXB0U3RhcnRQb3NpdGlv
bik7CisgICAgICAgICAgICBtX3NjcmlwdFJ1bm5lci0+ZXhlY3V0ZShXVEZNb3ZlKHNjcmlwdEVs
ZW1lbnQpLCBzY3JpcHRTdGFydFBvc2l0aW9uKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRUcmFjay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZERhdGFUZXh0VHJhY2suY3BwCmluZGV4IDEzYWNhZDEx
YWVhMDIyYjhlNTBhN2M4MjlhYmY2ZjQ5MWI0ZWNiMGMuLjdiZjI3YWUyMDA2ZDc5Mzg2Nzg4ZTY3
M2RhNjgyMGZlZTA5Yjk4ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
SW5iYW5kRGF0YVRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9J
bmJhbmREYXRhVGV4dFRyYWNrLmNwcApAQCAtNTQsOCArNTQsOCBAQCBJbmJhbmREYXRhVGV4dFRy
YWNrOjp+SW5iYW5kRGF0YVRleHRUcmFjaygpCiAKIHZvaWQgSW5iYW5kRGF0YVRleHRUcmFjazo6
YWRkRGF0YUN1ZShJbmJhbmRUZXh0VHJhY2tQcml2YXRlKiwgY29uc3QgTWVkaWFUaW1lJiBzdGFy
dCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCkKIHsKLSAgICBSZWZQdHI8RGF0YUN1ZT4gY3VlID0gRGF0YUN1ZTo6Y3JlYXRlKCpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksIHN0YXJ0LCBlbmQsIGRhdGEsIGxlbmd0aCk7Ci0gICAgYWRkQ3Vl
KGN1ZS5yZWxlYXNlKCksIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIGF1dG8gY3VlID0gRGF0
YUN1ZTo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHN0YXJ0LCBlbmQsIGRhdGEs
IGxlbmd0aCk7CisgICAgYWRkQ3VlKFdURk1vdmUoY3VlKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7
CiB9CiAKICNpZiBFTkFCTEUoREFUQUNVRV9WQUxVRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwCmluZGV4IDI0OWYxY2NhNGQ4
ZDg0ZTYzZmVlMzFjYzFhNDVlZDJiMzQ2YzI2NWYuLjdkYzAyN2M1NzkyNmNmMDFhN2JlYjhiZTk1
OTFiYWJlNTJjNWQ1ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5i
YW5kR2VuZXJpY1RleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9J
bmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcApAQCAtMjIxLDEzICsyMjEsMTMgQEAgdm9pZCBJbmJh
bmRHZW5lcmljVGV4dFRyYWNrOjpuZXdDdWVzUGFyc2VkKCkKICAgICBwYXJzZXIoKS5nZXROZXdD
dWVzKGN1ZXMpOwogCiAgICAgZm9yIChhdXRvJiBjdWVEYXRhIDogY3VlcykgewotICAgICAgICBS
ZWZQdHI8VlRUQ3VlPiB2dHRDdWUgPSBWVFRDdWU6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCAqY3VlRGF0YSk7CisgICAgICAgIGF1dG8gdnR0Q3VlID0gVlRUQ3VlOjpjcmVhdGUo
KnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKmN1ZURhdGEpOwogCi0gICAgICAgIGlmIChoYXND
dWUodnR0Q3VlLmdldCgpLCBUZXh0VHJhY2tDdWU6Oklnbm9yZUR1cmF0aW9uKSkgeworICAgICAg
ICBpZiAoaGFzQ3VlKHZ0dEN1ZS5wdHIoKSwgVGV4dFRyYWNrQ3VlOjpJZ25vcmVEdXJhdGlvbikp
IHsKICAgICAgICAgICAgIExPRyhNZWRpYSwgIkluYmFuZEdlbmVyaWNUZXh0VHJhY2s6Om5ld0N1
ZXNQYXJzZWQgaWdub3JpbmcgYWxyZWFkeSBhZGRlZCBjdWU6IHN0YXJ0PSUuMmYsIGVuZD0lLjJm
LCBjb250ZW50PVwiJXNcIlxuIiwgdnR0Q3VlLT5zdGFydFRpbWUoKSwgdnR0Q3VlLT5lbmRUaW1l
KCksIHZ0dEN1ZS0+dGV4dCgpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9Ci0gICAgICAgIGFkZEN1ZSh2dHRDdWUucmVsZWFzZSgpLCBBU1NFUlRfTk9fRVhD
RVBUSU9OKTsKKyAgICAgICAgYWRkQ3VlKFdURk1vdmUodnR0Q3VlKSwgQVNTRVJUX05PX0VYQ0VQ
VElPTik7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0lu
YmFuZFdlYlZUVFRleHRUcmFjay5jcHAKaW5kZXggMDlhZWVkNGUxZTU4YWE4OGJhYTU4MDcyY2E5
ZTMxYmU2ZDhhZjI4NC4uOTliNDk0NTg4MTcyMDM2ODNhNThlNThiZjIyM2VlYjY1M2YwMjg4YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJh
Y2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRy
YWNrLmNwcApAQCAtNzYsMTMgKzc2LDEzIEBAIHZvaWQgSW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpu
ZXdDdWVzUGFyc2VkKCkKICAgICBwYXJzZXIoKS5nZXROZXdDdWVzKGN1ZXMpOwogCiAgICAgZm9y
IChhdXRvJiBjdWVEYXRhIDogY3VlcykgewotICAgICAgICBSZWZQdHI8VlRUQ3VlPiB2dHRDdWUg
PSBWVFRDdWU6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqY3VlRGF0YSk7Cisg
ICAgICAgIGF1dG8gdnR0Q3VlID0gVlRUQ3VlOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgKmN1ZURhdGEpOwogCi0gICAgICAgIGlmIChoYXNDdWUodnR0Q3VlLmdldCgpLCBUZXh0
VHJhY2tDdWU6Oklnbm9yZUR1cmF0aW9uKSkgeworICAgICAgICBpZiAoaGFzQ3VlKHZ0dEN1ZS5w
dHIoKSwgVGV4dFRyYWNrQ3VlOjpJZ25vcmVEdXJhdGlvbikpIHsKICAgICAgICAgICAgIExPRyhN
ZWRpYSwgIkluYmFuZFdlYlZUVFRleHRUcmFjazo6bmV3Q3Vlc1BhcnNlZCBpZ25vcmluZyBhbHJl
YWR5IGFkZGVkIGN1ZTogc3RhcnQ9JS4yZiwgZW5kPSUuMmYsIGNvbnRlbnQ9XCIlc1wiXG4iLCB2
dHRDdWUtPnN0YXJ0VGltZSgpLCB2dHRDdWUtPmVuZFRpbWUoKSwgdnR0Q3VlLT50ZXh0KCkudXRm
OCgpLmRhdGEoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgYWRk
Q3VlKHZ0dEN1ZS5yZWxlYXNlKCksIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgICAgICBhZGRD
dWUoV1RGTW92ZSh2dHRDdWUpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICB9CiB9CiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUxpc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVMaXN0LmNwcAppbmRl
eCA2YjM5Mjk5ZGQzOTBhNGI3YzZkNGZiMTNlMDc2MjkwZjJiODFkNjRhLi5mZmQ4ZWFlNGQ5OTM2
NDgwYTZhNWJjMzU5MmZlMDgwYjcxNmUxM2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RleHRUcmFja0N1ZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVGV4dFRyYWNrQ3VlTGlzdC5jcHAKQEAgLTEwMSw5ICsxMDEsOSBAQCBib29sIFRleHRU
cmFja0N1ZUxpc3Q6OmFkZChQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4gcHJwQ3VlLCBzaXplX3Qg
c3RhcnQsIHNpemVfdAogCiAgICAgc2l6ZV90IGluZGV4ID0gKHN0YXJ0ICsgZW5kKSAvIDI7CiAg
ICAgaWYgKGN1ZS0+aXNPcmRlcmVkQmVmb3JlKG1fbGlzdFtpbmRleF0uZ2V0KCkpKQotICAgICAg
ICByZXR1cm4gYWRkKGN1ZS5yZWxlYXNlKCksIHN0YXJ0LCBpbmRleCk7CisgICAgICAgIHJldHVy
biBhZGQoV1RGTW92ZShjdWUpLCBzdGFydCwgaW5kZXgpOwogCi0gICAgcmV0dXJuIGFkZChjdWUu
cmVsZWFzZSgpLCBpbmRleCArIDEsIGVuZCk7CisgICAgcmV0dXJuIGFkZChXVEZNb3ZlKGN1ZSks
IGluZGV4ICsgMSwgZW5kKTsKIH0KIAogYm9vbCBUZXh0VHJhY2tDdWVMaXN0OjpyZW1vdmUoVGV4
dFRyYWNrQ3VlKiBjdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmNwcAppbmRleCAwNTQ4MGNhMjAzYjM4OGQ5YTk1YmQzNDdjODUzYzViNmE0NWJmNjRj
Li5jN2M2ZDZmNGU2OTcwZWFhMWRlYTM1OWYxYjdjZTg2OGIxNWE1OWYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTYzMSw4ICs2MzEs
MTAgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0SW5saW5lU3R5bGVzRm9yTm9kZShFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2QKICAgICAgICAgcmV0dXJuOwogCiAgICAgaW5s
aW5lU3R5bGUgPSBzdHlsZVNoZWV0LT5idWlsZE9iamVjdEZvclN0eWxlKGVsZW1lbnQtPmNzc29t
U3R5bGUoKSk7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+
IGF0dHJpYnV0ZXMgPSBidWlsZE9iamVjdEZvckF0dHJpYnV0ZXNTdHlsZShlbGVtZW50KTsKLSAg
ICBhdHRyaWJ1dGVzU3R5bGUgPSBhdHRyaWJ1dGVzID8gYXR0cmlidXRlcy5yZWxlYXNlKCkgOiBu
dWxscHRyOworICAgIGlmIChhdXRvIGF0dHJpYnV0ZXMgPSBidWlsZE9iamVjdEZvckF0dHJpYnV0
ZXNTdHlsZShlbGVtZW50KSkKKyAgICAgICAgYXR0cmlidXRlc1N0eWxlID0gV1RGTW92ZShhdHRy
aWJ1dGVzKTsKKyAgICBlbHNlCisgICAgICAgIGF0dHJpYnV0ZXNTdHlsZSA9IG51bGxwdHI7CiB9
CiAKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldENvbXB1dGVkU3R5bGVGb3JOb2RlKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3Bl
cnR5Pj4mIHN0eWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5jcHAKaW5kZXggZDBjM2RhMTdhNmM5Y2NkMGQxZDgyOTEyZmMyNTU3NmY2OTgzMTY3Yi4u
ODdkMDJhY2ZjN2ZlMmE1YzI4YjkxMDQ0YTM2ZGU4ZDdlYjAzOWRjNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC00NjIsOCArNDYyLDgg
QEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cHVzaENoaWxkTm9kZXNUb0Zyb250ZW5kKGludCBu
b2RlSWQsIGludCBkZXB0aCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+
PiBjaGlsZHJlbiA9IGJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihub2RlLCBkZXB0aCwg
bm9kZU1hcCk7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnNldENoaWxkTm9kZXMobm9kZUlk
LCBjaGlsZHJlbi5yZWxlYXNlKCkpOworICAgIGF1dG8gY2hpbGRyZW4gPSBidWlsZEFycmF5Rm9y
Q29udGFpbmVyQ2hpbGRyZW4obm9kZSwgZGVwdGgsIG5vZGVNYXApOworICAgIG1fZnJvbnRlbmRE
aXNwYXRjaGVyLT5zZXRDaGlsZE5vZGVzKG5vZGVJZCwgV1RGTW92ZShjaGlsZHJlbikpOwogfQog
CiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaXNjYXJkQmluZGluZ3MoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKaW5kZXgg
ZWJlZGU5ZGY5YTA1MzcwMTY4ZWE0NGNhZTJmMDRjZTg3OGJlZmE3OS4uMzM3MDU0NjdjM2I1YzBh
MTc5NDZkZmUxNjk2NGViZDdmYTUzNDgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCkBAIC0zMzAsNyArMzMwLDcgQEAg
c3RhdGljIFJlZlB0cjxJREJLZXk+IGlkYktleUZyb21JbnNwZWN0b3JPYmplY3QoSW5zcGVjdG9y
T2JqZWN0KiBrZXkpCiAgICAgfSBlbHNlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
cmV0dXJuIGlkYktleS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGlkYktleTsKIH0KIAogc3RhdGlj
IFJlZlB0cjxJREJLZXlSYW5nZT4gaWRiS2V5UmFuZ2VGcm9tS2V5UmFuZ2UoY29uc3QgSW5zcGVj
dG9yT2JqZWN0KiBrZXlSYW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggNDMxNTRiMzk3NGRhN2E5NzlhMjZkMTgyOWM3
MWQ0MTliNjI3Y2Q3NS4uOTE4Njg2ZWEzMmVmMGZlMGJjNDE4NWRiYjgyYjhmMDcxZjhjNDZlZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5jcHAKQEAgLTY4Miw3ICs2ODIsNyBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6bG9h
ZFJlc291cmNlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJgogICAgIC8v
IEluc3BlY3RvclRocmVhZGFibGVMb2FkZXJDbGllbnQgZGVsZXRlcyBpdHNlbGYgd2hlbiB0aGUg
bG9hZCBjb21wbGV0ZXMuCiAgICAgSW5zcGVjdG9yVGhyZWFkYWJsZUxvYWRlckNsaWVudCogaW5z
cGVjdG9yVGhyZWFkYWJsZUxvYWRlckNsaWVudCA9IG5ldyBJbnNwZWN0b3JUaHJlYWRhYmxlTG9h
ZGVyQ2xpZW50KGNhbGxiYWNrLmNvcHlSZWYoKSk7CiAKLSAgICBSZWZQdHI8RG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyPiBsb2FkZXIgPSBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSgq
ZG9jdW1lbnQsICppbnNwZWN0b3JUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LCByZXF1ZXN0LCBvcHRp
b25zKTsKKyAgICBhdXRvIGxvYWRlciA9IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRl
KCpkb2N1bWVudCwgKmluc3BlY3RvclRocmVhZGFibGVMb2FkZXJDbGllbnQsIHJlcXVlc3QsIG9w
dGlvbnMpOwogICAgIGlmICghbG9hZGVyKSB7CiAgICAgICAgIGluc3BlY3RvclRocmVhZGFibGVM
b2FkZXJDbGllbnQtPmRpZEZhaWxMb2FkZXJDcmVhdGlvbigpOwogICAgICAgICByZXR1cm47CkBA
IC02OTIsNyArNjkyLDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmxvYWRSZXNvdXJj
ZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYKICAgICBpZiAoIWNhbGxi
YWNrLT5pc0FjdGl2ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpbnNwZWN0b3JUaHJlYWRh
YmxlTG9hZGVyQ2xpZW50LT5zZXRMb2FkZXIobG9hZGVyLnJlbGVhc2UoKSk7CisgICAgaW5zcGVj
dG9yVGhyZWFkYWJsZUxvYWRlckNsaWVudC0+c2V0TG9hZGVyKFdURk1vdmUobG9hZGVyKSk7CiB9
CiAKIHN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0PiBi
dWlsZE9iamVjdEZvclNlYXJjaFJlc3VsdChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3Qg
U3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCwgaW50IG1hdGNoZXNDb3VudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRl
eCA2ZDU3M2NlOWMxMWZjNWQyM2ZlNzc4ZDU2ZjczNDEzM2E0MjU4YjMzLi43ZGU5OGFhZDI5ODhi
NzZhNmU1NjZiNDAwZWMxZGIwNDc1NWI5ZTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC05MjUsNyArOTI1LDcgQEAgUmVmPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U2VsZWN0b3JMaXN0PiBJbnNwZWN0b3JTdHlsZVNoZWV0
OjpidWlsZE9iamVjdEZvclMKICAgICAgICAgICAgIHNlbGVjdG9ycy0+YWRkSXRlbShidWlsZE9i
amVjdEZvclNlbGVjdG9yKHNlbGVjdG9yLCBlbGVtZW50KSk7CiAgICAgfQogICAgIGF1dG8gcmVz
dWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTZWxlY3Rvckxpc3Q6OmNyZWF0ZSgpCi0g
ICAgICAgIC5zZXRTZWxlY3RvcnMoc2VsZWN0b3JzLnJlbGVhc2UoKSkKKyAgICAgICAgLnNldFNl
bGVjdG9ycyhXVEZNb3ZlKHNlbGVjdG9ycykpCiAgICAgICAgIC5zZXRUZXh0KHNlbGVjdG9yVGV4
dCkKICAgICAgICAgLnJlbGVhc2UoKTsKICAgICBpZiAoc291cmNlRGF0YSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCmluZGV4IGJlYzEyMjNkNzY2Y2EyYjczMGQ4ZTkw
MWM4NWI2MzJmMDMwMGQ2ZTMuLjQxMjA2MDk4MzBkNDM1ZjY0NThkODZmMGEyY2Y3OWNmNjY3YTY0
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcApAQCAtMjM4LDgg
KzIzOCw4IEBAIFJlZjxGb3JtU3VibWlzc2lvbj4gRm9ybVN1Ym1pc3Npb246OmNyZWF0ZShIVE1M
Rm9ybUVsZW1lbnQqIGZvcm0sIGNvbnN0IEF0dHJpYnV0CiAgICAgZm9ybURhdGEtPnNldElkZW50
aWZpZXIoZ2VuZXJhdGVGb3JtRGF0YUlkZW50aWZpZXIoKSk7CiAgICAgZm9ybURhdGEtPnNldENv
bnRhaW5zUGFzc3dvcmREYXRhKGNvbnRhaW5zUGFzc3dvcmREYXRhKTsKICAgICBTdHJpbmcgdGFy
Z2V0T3JCYXNlVGFyZ2V0ID0gY29waWVkQXR0cmlidXRlcy50YXJnZXQoKS5pc0VtcHR5KCkgPyBk
b2N1bWVudC5iYXNlVGFyZ2V0KCkgOiBjb3BpZWRBdHRyaWJ1dGVzLnRhcmdldCgpOwotICAgIFJl
ZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSA9IEZvcm1TdGF0ZTo6Y3JlYXRlKGZvcm0sIGZvcm1W
YWx1ZXMsICZkb2N1bWVudCwgdHJpZ2dlcik7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9y
bVN1Ym1pc3Npb24oY29waWVkQXR0cmlidXRlcy5tZXRob2QoKSwgYWN0aW9uVVJMLCB0YXJnZXRP
ckJhc2VUYXJnZXQsIGVuY29kaW5nVHlwZSwgZm9ybVN0YXRlLnJlbGVhc2UoKSwgZm9ybURhdGEu
cmVsZWFzZSgpLCBib3VuZGFyeSwgbG9ja0hpc3RvcnksIGV2ZW50KSk7CisgICAgYXV0byBmb3Jt
U3RhdGUgPSBGb3JtU3RhdGU6OmNyZWF0ZShmb3JtLCBmb3JtVmFsdWVzLCAmZG9jdW1lbnQsIHRy
aWdnZXIpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvcm1TdWJtaXNzaW9uKGNvcGllZEF0
dHJpYnV0ZXMubWV0aG9kKCksIGFjdGlvblVSTCwgdGFyZ2V0T3JCYXNlVGFyZ2V0LCBlbmNvZGlu
Z1R5cGUsIFdURk1vdmUoZm9ybVN0YXRlKSwgV1RGTW92ZShmb3JtRGF0YSksIGJvdW5kYXJ5LCBs
b2NrSGlzdG9yeSwgZXZlbnQpKTsKIH0KIAogVVJMIEZvcm1TdWJtaXNzaW9uOjpyZXF1ZXN0VVJM
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGQ4NmE0NDU1
YmY3ZjFmZjNjNjM4YWY2ZTc0YjRhOTZjNTg4NGM2NWUuLmQyYmUyMzJlMDZkZmExZTc4YWNlYzA4
NDNjZGFlZWU0Njg2ZDRhZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApA
QCAtODc0LDkgKzg3NCw5IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkxJbnRvQ2hpbGRGcmFt
ZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcmVyLCBGCiAgICAgQVNTRVJUKGNo
aWxkRnJhbWUpOwogCiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCi0g
ICAgUmVmUHRyPEFyY2hpdmU+IHN1YmZyYW1lQXJjaGl2ZSA9IGFjdGl2ZURvY3VtZW50TG9hZGVy
KCktPnBvcEFyY2hpdmVGb3JTdWJmcmFtZShjaGlsZEZyYW1lLT50cmVlKCkudW5pcXVlTmFtZSgp
LCB1cmwpOworICAgIGF1dG8gc3ViZnJhbWVBcmNoaXZlID0gYWN0aXZlRG9jdW1lbnRMb2FkZXIo
KS0+cG9wQXJjaGl2ZUZvclN1YmZyYW1lKGNoaWxkRnJhbWUtPnRyZWUoKS51bmlxdWVOYW1lKCks
IHVybCk7CiAgICAgaWYgKHN1YmZyYW1lQXJjaGl2ZSkgewotICAgICAgICBjaGlsZEZyYW1lLT5s
b2FkZXIoKS5sb2FkQXJjaGl2ZShzdWJmcmFtZUFyY2hpdmUucmVsZWFzZSgpKTsKKyAgICAgICAg
Y2hpbGRGcmFtZS0+bG9hZGVyKCkubG9hZEFyY2hpdmUoV1RGTW92ZShzdWJmcmFtZUFyY2hpdmUp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FSQ0hJVkUp
CkBAIC0xMjE0LDcgKzEyMTQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMKGNvbnN0IEZy
YW1lTG9hZFJlcXVlc3QmIGZyYW1lTG9hZFJlcXVlc3QsIGNvbnN0IFN0cmluZwogICAgIGlmICh0
YXJnZXRGcmFtZSAmJiB0YXJnZXRGcmFtZSAhPSAmbV9mcmFtZSkgewogICAgICAgICBGcmFtZUxv
YWRSZXF1ZXN0IG5ld0ZyYW1lTG9hZFJlcXVlc3QoZnJhbWVMb2FkUmVxdWVzdCk7CiAgICAgICAg
IG5ld0ZyYW1lTG9hZFJlcXVlc3Quc2V0RnJhbWVOYW1lKCJfc2VsZiIpOwotICAgICAgICB0YXJn
ZXRGcmFtZS0+bG9hZGVyKCkubG9hZFVSTChuZXdGcmFtZUxvYWRSZXF1ZXN0LCByZWZlcnJlciwg
bmV3TG9hZFR5cGUsIGV2ZW50LCBmb3JtU3RhdGUucmVsZWFzZSgpKTsKKyAgICAgICAgdGFyZ2V0
RnJhbWUtPmxvYWRlcigpLmxvYWRVUkwobmV3RnJhbWVMb2FkUmVxdWVzdCwgcmVmZXJyZXIsIG5l
d0xvYWRUeXBlLCBldmVudCwgV1RGTW92ZShmb3JtU3RhdGUpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtMTIyNSw3ICsxMjI1LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTChj
b25zdCBGcmFtZUxvYWRSZXF1ZXN0JiBmcmFtZUxvYWRSZXF1ZXN0LCBjb25zdCBTdHJpbmcKIAog
ICAgIGlmICghdGFyZ2V0RnJhbWUgJiYgIWZyYW1lTmFtZS5pc0VtcHR5KCkpIHsKICAgICAgICAg
YWN0aW9uID0gYWN0aW9uLmNvcHlXaXRoU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeShzaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9BcHBseShtX2ZyYW1lLCBmcmFtZUxvYWRSZXF1ZXN0
LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSkpOwotICAgICAgICBwb2xpY3lDaGVja2Vy
KCkuY2hlY2tOZXdXaW5kb3dQb2xpY3koYWN0aW9uLCByZXF1ZXN0LCBmb3JtU3RhdGUucmVsZWFz
ZSgpLCBmcmFtZU5hbWUsIFt0aGlzLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIG9wZW5l
clBvbGljeV0oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1T
dGF0ZT4gZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgTmF2aWdhdGlv
bkFjdGlvbiYgYWN0aW9uLCBib29sIHNob3VsZENvbnRpbnVlKSB7CisgICAgICAgIHBvbGljeUNo
ZWNrZXIoKS5jaGVja05ld1dpbmRvd1BvbGljeShhY3Rpb24sIHJlcXVlc3QsIFdURk1vdmUoZm9y
bVN0YXRlKSwgZnJhbWVOYW1lLCBbdGhpcywgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBv
cGVuZXJQb2xpY3ldKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFzc1JlZlB0cjxG
b3JtU3RhdGU+IGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IE5hdmln
YXRpb25BY3Rpb24mIGFjdGlvbiwgYm9vbCBzaG91bGRDb250aW51ZSkgewogICAgICAgICAgICAg
Y29udGludWVMb2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3kocmVxdWVzdCwgZm9ybVN0YXRlLCBmcmFt
ZU5hbWUsIGFjdGlvbiwgc2hvdWxkQ29udGludWUsIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVS
TCwgb3BlbmVyUG9saWN5KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKQEAgLTEyNDQs
NyArMTI0NCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwoY29uc3QgRnJhbWVMb2FkUmVx
dWVzdCYgZnJhbWVMb2FkUmVxdWVzdCwgY29uc3QgU3RyaW5nCiAgICAgICAgIG9sZERvY3VtZW50
TG9hZGVyLT5zZXRMYXN0Q2hlY2tlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KCkpOwogICAgICAg
ICBwb2xpY3lDaGVja2VyKCkuc3RvcENoZWNrKCk7CiAgICAgICAgIHBvbGljeUNoZWNrZXIoKS5z
ZXRMb2FkVHlwZShuZXdMb2FkVHlwZSk7Ci0gICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05h
dmlnYXRpb25Qb2xpY3kocmVxdWVzdCwgZmFsc2UgLyogZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9u
c2UgKi8sIG9sZERvY3VtZW50TG9hZGVyLmdldCgpLCBmb3JtU3RhdGUucmVsZWFzZSgpLCBbdGhp
c10oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4s
IGJvb2wgc2hvdWxkQ29udGludWUpIHsKKyAgICAgICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmF2
aWdhdGlvblBvbGljeShyZXF1ZXN0LCBmYWxzZSAvKiBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25z
ZSAqLywgb2xkRG9jdW1lbnRMb2FkZXIuZ2V0KCksIFdURk1vdmUoZm9ybVN0YXRlKSwgW3RoaXNd
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBi
b29sIHNob3VsZENvbnRpbnVlKSB7CiAgICAgICAgICAgICBjb250aW51ZUZyYWdtZW50U2Nyb2xs
QWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KHJlcXVlc3QsIHNob3VsZENvbnRpbnVlKTsKICAgICAgICAg
fSk7CiAgICAgICAgIHJldHVybjsKQEAgLTEyNTIsNyArMTI1Miw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OmxvYWRVUkwoY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVMb2FkUmVxdWVzdCwgY29u
c3QgU3RyaW5nCiAKICAgICAvLyBtdXN0IGdyYWIgdGhpcyBub3csIHNpbmNlIHRoaXMgbG9hZCBt
YXkgc3RvcCB0aGUgcHJldmlvdXMgbG9hZCBhbmQgY2xlYXIgdGhpcyBmbGFnCiAgICAgYm9vbCBp
c1JlZGlyZWN0ID0gbV9xdWlja1JlZGlyZWN0Q29taW5nOwotICAgIGxvYWRXaXRoTmF2aWdhdGlv
bkFjdGlvbihyZXF1ZXN0LCBhY3Rpb24sIGxvY2tIaXN0b3J5LCBuZXdMb2FkVHlwZSwgZm9ybVN0
YXRlLnJlbGVhc2UoKSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKKyAgICBsb2FkV2l0
aE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdCwgYWN0aW9uLCBsb2NrSGlzdG9yeSwgbmV3TG9hZFR5
cGUsIFdURk1vdmUoZm9ybVN0YXRlKSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKICAg
ICBpZiAoaXNSZWRpcmVjdCkgewogICAgICAgICBtX3F1aWNrUmVkaXJlY3RDb21pbmcgPSBmYWxz
ZTsKICAgICAgICAgaWYgKG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcikKQEAgLTI3MDIsMTEg
KzI3MDIsMTEgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KGNvbnN0IEZyYW1l
TG9hZFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYKICAgICBpZiAoIWZyYW1lTmFtZS5p
c0VtcHR5KCkpIHsKICAgICAgICAgLy8gVGhlIHNlYXJjaCBmb3IgYSB0YXJnZXQgZnJhbWUgaXMg
ZG9uZSBlYXJsaWVyIGluIHRoZSBjYXNlIG9mIGZvcm0gc3VibWlzc2lvbi4KICAgICAgICAgaWYg
KEZyYW1lKiB0YXJnZXRGcmFtZSA9IGZvcm1TdGF0ZSA/IDAgOiBmaW5kRnJhbWVGb3JOYXZpZ2F0
aW9uKGZyYW1lTmFtZSkpIHsKLSAgICAgICAgICAgIHRhcmdldEZyYW1lLT5sb2FkZXIoKS5sb2Fk
V2l0aE5hdmlnYXRpb25BY3Rpb24od29ya2luZ1Jlc291cmNlUmVxdWVzdCwgYWN0aW9uLCBsb2Nr
SGlzdG9yeSwgbG9hZFR5cGUsIGZvcm1TdGF0ZS5yZWxlYXNlKCksIGFsbG93TmF2aWdhdGlvblRv
SW52YWxpZFVSTCk7CisgICAgICAgICAgICB0YXJnZXRGcmFtZS0+bG9hZGVyKCkubG9hZFdpdGhO
YXZpZ2F0aW9uQWN0aW9uKHdvcmtpbmdSZXNvdXJjZVJlcXVlc3QsIGFjdGlvbiwgbG9ja0hpc3Rv
cnksIGxvYWRUeXBlLCBXVEZNb3ZlKGZvcm1TdGF0ZSksIGFsbG93TmF2aWdhdGlvblRvSW52YWxp
ZFVSTCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBwb2xpY3lD
aGVja2VyKCkuY2hlY2tOZXdXaW5kb3dQb2xpY3koYWN0aW9uLCB3b3JraW5nUmVzb3VyY2VSZXF1
ZXN0LCBmb3JtU3RhdGUucmVsZWFzZSgpLCBmcmFtZU5hbWUsIFt0aGlzLCBhbGxvd05hdmlnYXRp
b25Ub0ludmFsaWRVUkwsIG9wZW5lclBvbGljeV0oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1l
TmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBib29sIHNob3VsZENvbnRpbnVl
KSB7CisgICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05ld1dpbmRvd1BvbGljeShhY3Rpb24s
IHdvcmtpbmdSZXNvdXJjZVJlcXVlc3QsIFdURk1vdmUoZm9ybVN0YXRlKSwgZnJhbWVOYW1lLCBb
dGhpcywgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBvcGVuZXJQb2xpY3ldKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSwg
Y29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwg
Ym9vbCBzaG91bGRDb250aW51ZSkgewogICAgICAgICAgICAgY29udGludWVMb2FkQWZ0ZXJOZXdX
aW5kb3dQb2xpY3kocmVxdWVzdCwgZm9ybVN0YXRlLCBmcmFtZU5hbWUsIGFjdGlvbiwgc2hvdWxk
Q29udGludWUsIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgb3BlbmVyUG9saWN5KTsKICAg
ICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKQEAgLTI3MTQsNyArMjcxNCw3IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdChjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBTdHJpbmcmCiAKICAgICAvLyBtdXN0IGdyYWIgdGhpcyBub3csIHNpbmNlIHRoaXMg
bG9hZCBtYXkgc3RvcCB0aGUgcHJldmlvdXMgbG9hZCBhbmQgY2xlYXIgdGhpcyBmbGFnCiAgICAg
Ym9vbCBpc1JlZGlyZWN0ID0gbV9xdWlja1JlZGlyZWN0Q29taW5nOwotICAgIGxvYWRXaXRoTmF2
aWdhdGlvbkFjdGlvbih3b3JraW5nUmVzb3VyY2VSZXF1ZXN0LCBhY3Rpb24sIGxvY2tIaXN0b3J5
LCBsb2FkVHlwZSwgZm9ybVN0YXRlLnJlbGVhc2UoKSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlk
VVJMKTsKKyAgICBsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24od29ya2luZ1Jlc291cmNlUmVxdWVz
dCwgYWN0aW9uLCBsb2NrSGlzdG9yeSwgbG9hZFR5cGUsIFdURk1vdmUoZm9ybVN0YXRlKSwgYWxs
b3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKICAgICBpZiAoaXNSZWRpcmVjdCkgewogICAgICAg
ICBtX3F1aWNrUmVkaXJlY3RDb21pbmcgPSBmYWxzZTsKICAgICAgICAgaWYgKG1fcHJvdmlzaW9u
YWxEb2N1bWVudExvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9n
cmVzc1RyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5j
cHAKaW5kZXggZDU2Y2EwNWRiOTkwYjMwYTZiMDdkMTJmYjJjMDllOTk2Yjc5NzIwZi4uNzUyZWVm
YzM3ODA2ODRkM2I1NWM2NDllMzAwYjYzOGQ4NjNjZDIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIFByb2dyZXNz
VHJhY2tlcjo6ZmluYWxQcm9ncmVzc0NvbXBsZXRlKCkKIHsKICAgICBMT0coUHJvZ3Jlc3MsICJG
aW5hbCBwcm9ncmVzcyBjb21wbGV0ZSAoJXApIiwgdGhpcyk7CiAgICAgCi0gICAgUmVmUHRyPEZy
YW1lPiBmcmFtZSA9IG1fb3JpZ2luYXRpbmdQcm9ncmVzc0ZyYW1lLnJlbGVhc2UoKTsKKyAgICBh
dXRvIGZyYW1lID0gV1RGTW92ZShtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZSk7CiAgICAgCiAg
ICAgLy8gQmVmb3JlIHJlc2V0dGluZyBwcm9ncmVzcyB2YWx1ZSBiZSBzdXJlIHRvIHNlbmQgY2xp
ZW50IGEgbGVhc3Qgb25lIG5vdGlmaWNhdGlvbgogICAgIC8vIHdpdGggZmluYWwgcHJvZ3Jlc3Mg
dmFsdWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDU5NGNjZTZjYTYzYTdhOTU1M2YwYTEzY2I4NzU1
NmYwNTlhYWY3NGEuLjM3YWM3NWRiZjUwMWM0OGI2NmQwNWJlNDU5NTNhNTYxN2NmOTJlMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
R3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlR3JvdXAuY3BwCkBAIC0zNjksNyArMzY5LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hl
R3JvdXA6OmRpc2Fzc29jaWF0ZURvY3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVyKiBsb2FkZXIp
CiAKICAgICAvLyBSZWxlYXNlIG91ciByZWZlcmVuY2UgdG8gdGhlIG5ld2VzdCBjYWNoZS4gVGhp
cyBjb3VsZCBjYXVzZSB1cyB0byBiZSBkZWxldGVkLgogICAgIC8vIEFueSBvbmdvaW5nIHVwZGF0
ZXMgd2lsbCBiZSBzdG9wcGVkIGZyb20gZGVzdHJ1Y3Rvci4KLSAgICBtX25ld2VzdENhY2hlLnJl
bGVhc2UoKTsKKyAgICBtX25ld2VzdENhY2hlID0gbnVsbHB0cjsKIH0KIAogdm9pZCBBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OmNhY2hlRGVzdHJveWVkKEFwcGxpY2F0aW9uQ2FjaGUqIGNhY2hlKQpA
QCAtNTk0LDcgKzU5NCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hM
b2FkaW5nKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGRvdWJsZSBmaW5pCiAgICAgCiAgICAgQVNT
RVJUKG1fY2FjaGVCZWluZ1VwZGF0ZWQpOwogCi0gICAgbV9jYWNoZUJlaW5nVXBkYXRlZC0+YWRk
UmVzb3VyY2UobV9jdXJyZW50UmVzb3VyY2UucmVsZWFzZSgpKTsKKyAgICBtX2NhY2hlQmVpbmdV
cGRhdGVkLT5hZGRSZXNvdXJjZShXVEZNb3ZlKG1fY3VycmVudFJlc291cmNlKSk7CiAgICAgbV9j
dXJyZW50SGFuZGxlID0gbnVsbHB0cjsKIAogICAgIC8vIFdoaWxlIGRvd25sb2FkaW5nIGNoZWNr
IHRvIHNlZSBpZiB3ZSBoYXZlIGV4Y2VlZGVkIHRoZSBhdmFpbGFibGUgcXVvdGEuCkBAIC04Njgs
NyArODY4LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNoZWNrSWZMb2FkSXNDb21w
bGV0ZSgpCiAKICAgICAgICAgQVNTRVJUKG1fY2FjaGVCZWluZ1VwZGF0ZWQpOwogICAgICAgICBp
ZiAobV9tYW5pZmVzdFJlc291cmNlKQotICAgICAgICAgICAgbV9jYWNoZUJlaW5nVXBkYXRlZC0+
c2V0TWFuaWZlc3RSZXNvdXJjZShtX21hbmlmZXN0UmVzb3VyY2UucmVsZWFzZSgpKTsKKyAgICAg
ICAgICAgIG1fY2FjaGVCZWluZ1VwZGF0ZWQtPnNldE1hbmlmZXN0UmVzb3VyY2UoV1RGTW92ZSht
X21hbmlmZXN0UmVzb3VyY2UpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvLyBXZSBj
YW4gZ2V0IGhlcmUgYXMgYSByZXN1bHQgb2YgcmV0cnlpbmcgdGhlIENvbXBsZXRlIHN0ZXAsIGZv
bGxvd2luZwogICAgICAgICAgICAgLy8gYSBmYWlsdXJlIG9mIHRoZSBjYWNoZSBzdG9yYWdlIHRv
IHNhdmUgdGhlIG5ld2VzdCBjYWNoZSBkdWUgdG8gaGl0dGluZwpAQCAtODg4LDcgKzg4OCw3IEBA
IHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpjaGVja0lmTG9hZElzQ29tcGxldGUoKQogICAg
ICAgICAgICAgZGlkUmVhY2hPcmlnaW5RdW90YSh0b3RhbFNwYWNlTmVlZGVkKTsKIAogICAgICAg
ICBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6RmFpbHVyZVJlYXNvbiBmYWlsdXJlUmVhc29uOwot
ICAgICAgICBzZXROZXdlc3RDYWNoZShtX2NhY2hlQmVpbmdVcGRhdGVkLnJlbGVhc2UoKSk7Cisg
ICAgICAgIHNldE5ld2VzdENhY2hlKFdURk1vdmUobV9jYWNoZUJlaW5nVXBkYXRlZCkpOwogICAg
ICAgICBpZiAobV9zdG9yYWdlLT5zdG9yZU5ld2VzdENhY2hlKHRoaXMsIG9sZE5ld2VzdENhY2hl
LmdldCgpLCBmYWlsdXJlUmVhc29uKSkgewogICAgICAgICAgICAgLy8gTmV3IGNhY2hlIHN0b3Jl
ZCwgbm93IHJlbW92ZSB0aGUgb2xkIGNhY2hlLgogICAgICAgICAgICAgaWYgKG9sZE5ld2VzdENh
Y2hlKQpAQCAtOTE5LDEwICs5MTksMTAgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNo
ZWNrSWZMb2FkSXNDb21wbGV0ZSgpCiAgICAgICAgICAgICAgICAgLy8gc2F2ZSB0aGUgbmV3IGNh
Y2hlLgogCiAgICAgICAgICAgICAgICAgLy8gU2F2ZSBhIHJlZmVyZW5jZSB0byB0aGUgbmV3IGNh
Y2hlLgotICAgICAgICAgICAgICAgIG1fY2FjaGVCZWluZ1VwZGF0ZWQgPSBtX25ld2VzdENhY2hl
LnJlbGVhc2UoKTsKKyAgICAgICAgICAgICAgICBtX2NhY2hlQmVpbmdVcGRhdGVkID0gV1RGTW92
ZShtX25ld2VzdENhY2hlKTsKICAgICAgICAgICAgICAgICBpZiAob2xkTmV3ZXN0Q2FjaGUpIHsK
ICAgICAgICAgICAgICAgICAgICAgLy8gUmVpbnN0YXRlIHRoZSBvbGROZXdlc3RDYWNoZS4KLSAg
ICAgICAgICAgICAgICAgICAgc2V0TmV3ZXN0Q2FjaGUob2xkTmV3ZXN0Q2FjaGUucmVsZWFzZSgp
KTsKKyAgICAgICAgICAgICAgICAgICAgc2V0TmV3ZXN0Q2FjaGUoV1RGTW92ZShvbGROZXdlc3RD
YWNoZSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBzY2hlZHVsZVJlYWNo
ZWRNYXhBcHBDYWNoZVNpemVDYWxsYmFjaygpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAg
LTk0NSw3ICs5NDUsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2hlY2tJZkxvYWRJ
c0NvbXBsZXRlKCkKICAgICAgICAgICAgIC8vIFJlaW5zdGF0ZSB0aGUgb2xkTmV3ZXN0Q2FjaGUs
IGlmIHRoZXJlIHdhcyBvbmUuCiAgICAgICAgICAgICBpZiAob2xkTmV3ZXN0Q2FjaGUpIHsKICAg
ICAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgZGlzY2FyZCB0aGUgZmFpbGVkIG5ldyBjYWNoZS4K
LSAgICAgICAgICAgICAgICBzZXROZXdlc3RDYWNoZShvbGROZXdlc3RDYWNoZS5yZWxlYXNlKCkp
OworICAgICAgICAgICAgICAgIHNldE5ld2VzdENhY2hlKFdURk1vdmUob2xkTmV3ZXN0Q2FjaGUp
KTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gV2UgbXVzdCBoYXZl
IGJlZW4gZGVsZXRlZCBieSB0aGUgbGFzdCBjYWxsIHRvIGRpc2Fzc29jaWF0ZURvY3VtZW50TG9h
ZGVyKCkuCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXgg
NTA0ZGE3ZmZjNGM1ZmNlZDY1YWQ5MjE4NDVlMzc5ZGM0ODY1NDEyYy4uMGRkYTU2NDVkYWFmNDdi
NzEyZjA0MGZmM2JlYmZmOWI3ZGM1YmU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC0xMjEs
MTQgKzEyMSwxNCBAQCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpsb2FkQ2FjaGVHcm91cChjb25zdCBVUkwmIG1hbmlmZQogICAgIAogICAgIHVuc2lnbmVk
IG5ld2VzdENhY2hlU3RvcmFnZUlEID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXRlbWVudC5n
ZXRDb2x1bW5JbnQ2NCgyKSk7CiAKLSAgICBSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gY2FjaGUg
PSBsb2FkQ2FjaGUobmV3ZXN0Q2FjaGVTdG9yYWdlSUQpOworICAgIGF1dG8gY2FjaGUgPSBsb2Fk
Q2FjaGUobmV3ZXN0Q2FjaGVTdG9yYWdlSUQpOwogICAgIGlmICghY2FjaGUpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgICAgICAKICAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGdyb3Vw
ID0gbmV3IEFwcGxpY2F0aW9uQ2FjaGVHcm91cCgqdGhpcywgbWFuaWZlc3RVUkwpOwogICAgICAg
CiAgICAgZ3JvdXAtPnNldFN0b3JhZ2VJRChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhdGVtZW50
LmdldENvbHVtbkludDY0KDApKSk7Ci0gICAgZ3JvdXAtPnNldE5ld2VzdENhY2hlKGNhY2hlLnJl
bGVhc2UoKSk7CisgICAgZ3JvdXAtPnNldE5ld2VzdENhY2hlKFdURk1vdmUoY2FjaGUpKTsKIAog
ICAgIHJldHVybiBncm91cDsKIH0gICAgCkBAIC0yMzksNyArMjM5LDcgQEAgQXBwbGljYXRpb25D
YWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FjaGVHcm91cEZvclVSTChjb25z
dCBVUkwmIHVybCkKICAgICAgICAgLy8gV2UgZm91bmQgYSBjYWNoZSBncm91cCB0aGF0IG1hdGNo
ZXMuIE5vdyBjaGVjayBpZiB0aGUgbmV3ZXN0IGNhY2hlIGhhcyBhIHJlc291cmNlIHdpdGgKICAg
ICAgICAgLy8gYSBtYXRjaGluZyBVUkwuCiAgICAgICAgIHVuc2lnbmVkIG5ld2VzdENhY2hlSUQg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhdGVtZW50LmdldENvbHVtbkludDY0KDIpKTsKLSAg
ICAgICAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IGNhY2hlID0gbG9hZENhY2hlKG5ld2VzdENh
Y2hlSUQpOworICAgICAgICBhdXRvIGNhY2hlID0gbG9hZENhY2hlKG5ld2VzdENhY2hlSUQpOwog
ICAgICAgICBpZiAoIWNhY2hlKQogICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTI1Miw3ICsy
NTIsNyBAQCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpj
YWNoZUdyb3VwRm9yVVJMKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICBBcHBsaWNhdGlvbkNhY2hl
R3JvdXAqIGdyb3VwID0gbmV3IEFwcGxpY2F0aW9uQ2FjaGVHcm91cCgqdGhpcywgbWFuaWZlc3RV
UkwpOwogICAgICAgICAKICAgICAgICAgZ3JvdXAtPnNldFN0b3JhZ2VJRChzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oc3RhdGVtZW50LmdldENvbHVtbkludDY0KDApKSk7Ci0gICAgICAgIGdyb3VwLT5z
ZXROZXdlc3RDYWNoZShjYWNoZS5yZWxlYXNlKCkpOworICAgICAgICBncm91cC0+c2V0TmV3ZXN0
Q2FjaGUoV1RGTW92ZShjYWNoZSkpOwogICAgICAgICAKICAgICAgICAgbV9jYWNoZXNJbk1lbW9y
eS5zZXQoZ3JvdXAtPm1hbmlmZXN0VVJMKCksIGdyb3VwKTsKICAgICAgICAgCkBAIC0zMDksNyAr
MzA5LDcgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
ZmFsbGJhY2tDYWNoZUdyb3VwRm9yVVJMKGNvbnN0IFUKICAgICAgICAgLy8gV2UgZm91bmQgYSBj
YWNoZSBncm91cCB0aGF0IG1hdGNoZXMuIE5vdyBjaGVjayBpZiB0aGUgbmV3ZXN0IGNhY2hlIGhh
cyBhIHJlc291cmNlIHdpdGgKICAgICAgICAgLy8gYSBtYXRjaGluZyBmYWxsYmFjayBuYW1lc3Bh
Y2UuCiAgICAgICAgIHVuc2lnbmVkIG5ld2VzdENhY2hlSUQgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oc3RhdGVtZW50LmdldENvbHVtbkludDY0KDIpKTsKLSAgICAgICAgUmVmUHRyPEFwcGxpY2F0
aW9uQ2FjaGU+IGNhY2hlID0gbG9hZENhY2hlKG5ld2VzdENhY2hlSUQpOworICAgICAgICBhdXRv
IGNhY2hlID0gbG9hZENhY2hlKG5ld2VzdENhY2hlSUQpOwogCiAgICAgICAgIFVSTCBmYWxsYmFj
a1VSTDsKICAgICAgICAgaWYgKGNhY2hlLT5pc1VSTEluT25saW5lV2hpdGVsaXN0KHVybCkpCkBA
IC0zMjIsNyArMzIyLDcgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6ZmFsbGJhY2tDYWNoZUdyb3VwRm9yVVJMKGNvbnN0IFUKICAgICAgICAgQXBwbGlj
YXRpb25DYWNoZUdyb3VwKiBncm91cCA9IG5ldyBBcHBsaWNhdGlvbkNhY2hlR3JvdXAoKnRoaXMs
IG1hbmlmZXN0VVJMKTsKICAgICAgICAgCiAgICAgICAgIGdyb3VwLT5zZXRTdG9yYWdlSUQoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXRlbWVudC5nZXRDb2x1bW5JbnQ2NCgwKSkpOwotICAgICAg
ICBncm91cC0+c2V0TmV3ZXN0Q2FjaGUoY2FjaGUucmVsZWFzZSgpKTsKKyAgICAgICAgZ3JvdXAt
PnNldE5ld2VzdENhY2hlKFdURk1vdmUoY2FjaGUpKTsKICAgICAgICAgCiAgICAgICAgIG1fY2Fj
aGVzSW5NZW1vcnkuc2V0KGdyb3VwLT5tYW5pZmVzdFVSTCgpLCBncm91cCk7CiAgICAgICAgIApA
QCAtMTExOSw3ICsxMTE5LDcgQEAgUGFzc1JlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2UKICAgICAKICAgICBj
YWNoZVN0YXRlbWVudC5iaW5kSW50NjQoMSwgc3RvcmFnZUlEKTsKIAotICAgIFJlZlB0cjxBcHBs
aWNhdGlvbkNhY2hlPiBjYWNoZSA9IEFwcGxpY2F0aW9uQ2FjaGU6OmNyZWF0ZSgpOworICAgIGF1
dG8gY2FjaGUgPSBBcHBsaWNhdGlvbkNhY2hlOjpjcmVhdGUoKTsKIAogICAgIFN0cmluZyBmbGF0
RmlsZURpcmVjdG9yeSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2NhY2hlRGlyZWN0b3J5
LCBtX2ZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7CiAKQEAgLTExMzQsNyArMTEzNCw3IEBAIFBh
c3NSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRD
YWNoZSh1bnNpZ25lZCBzdG9yYWdlCiAgICAgICAgIFZlY3RvcjxjaGFyPiBibG9iOwogICAgICAg
ICBjYWNoZVN0YXRlbWVudC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoNiwgYmxvYik7CiAgICAgICAg
IAotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhID0gU2hhcmVkQnVmZmVyOjphZG9w
dFZlY3RvcihibG9iKTsKKyAgICAgICAgYXV0byBkYXRhID0gU2hhcmVkQnVmZmVyOjphZG9wdFZl
Y3RvcihibG9iKTsKICAgICAgICAgCiAgICAgICAgIFN0cmluZyBwYXRoID0gY2FjaGVTdGF0ZW1l
bnQuZ2V0Q29sdW1uVGV4dCg3KTsKICAgICAgICAgbG9uZyBsb25nIHNpemUgPSAwOwpAQCAtMTE1
NCwxMiArMTE1NCwxMiBAQCBQYXNzUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IEFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUodW5zaWduZWQgc3RvcmFnZQogICAgICAgICBTdHJpbmcg
aGVhZGVycyA9IGNhY2hlU3RhdGVtZW50LmdldENvbHVtblRleHQoNSk7CiAgICAgICAgIHBhcnNl
SGVhZGVycyhoZWFkZXJzLCByZXNwb25zZSk7CiAgICAgICAgIAotICAgICAgICBSZWZQdHI8QXBw
bGljYXRpb25DYWNoZVJlc291cmNlPiByZXNvdXJjZSA9IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZTo6Y3JlYXRlKHVybCwgcmVzcG9uc2UsIHR5cGUsIGRhdGEucmVsZWFzZSgpLCBwYXRoKTsKKyAg
ICAgICAgYXV0byByZXNvdXJjZSA9IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKHVy
bCwgcmVzcG9uc2UsIHR5cGUsIFdURk1vdmUoZGF0YSksIHBhdGgpOwogCiAgICAgICAgIGlmICh0
eXBlICYgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpNYW5pZmVzdCkKLSAgICAgICAgICAgIGNh
Y2hlLT5zZXRNYW5pZmVzdFJlc291cmNlKHJlc291cmNlLnJlbGVhc2UoKSk7CisgICAgICAgICAg
ICBjYWNoZS0+c2V0TWFuaWZlc3RSZXNvdXJjZShXVEZNb3ZlKHJlc291cmNlKSk7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIGNhY2hlLT5hZGRSZXNvdXJjZShyZXNvdXJjZS5yZWxlYXNlKCkp
OworICAgICAgICAgICAgY2FjaGUtPmFkZFJlc291cmNlKFdURk1vdmUocmVzb3VyY2UpKTsKICAg
ICB9CiAKICAgICBpZiAocmVzdWx0ICE9IFNRTElURV9ET05FKQpAQCAtMTIxNyw3ICsxMjE3LDcg
QEAgUGFzc1JlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
bG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2UKICAgICAKICAgICBjYWNoZS0+c2V0U3RvcmFnZUlE
KHN0b3JhZ2VJRCk7CiAKLSAgICByZXR1cm4gY2FjaGUucmVsZWFzZSgpOworICAgIHJldHVybiBX
VEZNb3ZlKGNhY2hlKTsKIH0gICAgCiAgICAgCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjpyZW1vdmUoQXBwbGljYXRpb25DYWNoZSogY2FjaGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uY3BwCmlu
ZGV4IDdlZWU3ODM2MGM5OTU4NDU3ODRhMTAzOWZhNWQ4YzYzOTAwYjEzMTYuLjk4ZjZjMWUyZmEx
ZDRhNTA5MTMwMGQ1ODc4MDQ0MjExZDhmN2IyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uY3BwCkBA
IC03Niw5ICs3Niw5IEBAIEFyY2hpdmVSZXNvdXJjZSogQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlv
bjo6YXJjaGl2ZVJlc291cmNlRm9yVVJMKGNvbnN0IFVSTCYgdXJsCiAKIFBhc3NSZWZQdHI8QXJj
aGl2ZT4gQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjo6cG9wU3ViZnJhbWVBcmNoaXZlKGNvbnN0
IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBVUkwmIHVybCkKIHsKLSAgICBSZWZQdHI8QXJjaGl2
ZT4gYXJjaGl2ZSA9IG1fc3ViZnJhbWVzLnRha2UoZnJhbWVOYW1lKTsKKyAgICBhdXRvIGFyY2hp
dmUgPSBtX3N1YmZyYW1lcy50YWtlKGZyYW1lTmFtZSk7CiAgICAgaWYgKGFyY2hpdmUpCi0gICAg
ICAgIHJldHVybiBhcmNoaXZlLnJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoYXJj
aGl2ZSk7CiAKICAgICByZXR1cm4gbV9zdWJmcmFtZXMudGFrZSh1cmwuc3RyaW5nKCkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJj
aGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNo
aXZlLmNwcAppbmRleCA2ZjVmZWZlZGRkNDBhOTJlMTQ1ZmRkMWQxMmNmNWFjNzM5ZDdjOWNhLi5l
MDQ5MDYzMDA4MWEwMTJhNDMzMzI2YmUyNDIzMTgyN2RkZmNlOTcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAt
MzM0LDggKzMzNCw4IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25h
cnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChSZWZQdHI8QXJjaGl2ZVJlc291
cmNlPiBzdWJyZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHN1YnJlc291cmNlRGljdCkpCi0gICAg
ICAgICAgICAgICAgYWRkU3VicmVzb3VyY2Uoc3VicmVzb3VyY2UucmVsZWFzZSgpKTsKKyAgICAg
ICAgICAgIGlmIChhdXRvIHN1YnJlc291cmNlID0gY3JlYXRlUmVzb3VyY2Uoc3VicmVzb3VyY2VE
aWN0KSkKKyAgICAgICAgICAgICAgICBhZGRTdWJyZXNvdXJjZShXVEZNb3ZlKHN1YnJlc291cmNl
KSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCkBAIC0zNTQsOSArMzU0LDkgQEAgYm9vbCBMZWdh
Y3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAg
ICAgICAgICAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IHN1YmZyYW1lQXJjaGl2ZSA9IGNyZWF0
ZSgpOworICAgICAgICAgICAgYXV0byBzdWJmcmFtZUFyY2hpdmUgPSBjcmVhdGUoKTsKICAgICAg
ICAgICAgIGlmIChzdWJmcmFtZUFyY2hpdmUtPmV4dHJhY3Qoc3ViZnJhbWVEaWN0KSkKLSAgICAg
ICAgICAgICAgICBhZGRTdWJmcmFtZUFyY2hpdmUoc3ViZnJhbWVBcmNoaXZlLnJlbGVhc2UoKSk7
CisgICAgICAgICAgICAgICAgYWRkU3ViZnJhbWVBcmNoaXZlKFdURk1vdmUoc3ViZnJhbWVBcmNo
aXZlKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAi
TGVnYWN5V2ViQXJjaGl2ZSAtIEludmFsaWQgc3ViZnJhbWUgYXJjaGl2ZSBza2lwcGVkIik7CiAg
ICAgICAgIH0KQEAgLTU0Nyw4ICs1NDcsOCBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5nLCBGcgogICAg
ICAgICBjb25zdCBTdHJpbmcmIGljb25VUkwgPSBpY29uRGF0YWJhc2UoKS5zeW5jaHJvbm91c0lj
b25VUkxGb3JQYWdlVVJMKHJlc3BvbnNlVVJMKTsKICAgICAgICAgaWYgKCFpY29uVVJMLmlzRW1w
dHkoKSAmJiBpY29uRGF0YWJhc2UoKS5zeW5jaHJvbm91c0ljb25EYXRhS25vd25Gb3JJY29uVVJM
KGljb25VUkwpKSB7CiAgICAgICAgICAgICBpZiAoSW1hZ2UqIGljb25JbWFnZSA9IGljb25EYXRh
YmFzZSgpLnN5bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwocmVzcG9uc2VVUkwsIEludFNpemUoMTYs
IDE2KSkpIHsKLSAgICAgICAgICAgICAgICBpZiAoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gcmVz
b3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShpY29uSW1hZ2UtPmRhdGEoKSwgVVJMKFBh
cnNlZFVSTFN0cmluZywgaWNvblVSTCksICJpbWFnZS94LWljb24iLCAiIiwgIiIpKQotICAgICAg
ICAgICAgICAgICAgICBzdWJyZXNvdXJjZXMuYXBwZW5kKHJlc291cmNlLnJlbGVhc2UoKSk7Cisg
ICAgICAgICAgICAgICAgaWYgKGF1dG8gcmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0
ZShpY29uSW1hZ2UtPmRhdGEoKSwgVVJMKFBhcnNlZFVSTFN0cmluZywgaWNvblVSTCksICJpbWFn
ZS94LWljb24iLCAiIiwgIiIpKQorICAgICAgICAgICAgICAgICAgICBzdWJyZXNvdXJjZXMuYXBw
ZW5kKFdURk1vdmUocmVzb3VyY2UpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
QEAgLTU4Miw5ICs1ODIsOSBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJj
aGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiAgICAgLy8gV3JhcCB0aGUg
ZnJhbWVzZXQgZG9jdW1lbnQgaW4gYW4gaWZyYW1lIHNvIGl0IGNhbiBiZSBwYXN0ZWQgaW50bwog
ICAgIC8vIGFub3RoZXIgZG9jdW1lbnQgKHdoaWNoIHdpbGwgaGF2ZSBhIGJvZHkgb3IgZnJhbWVz
ZXQgb2YgaXRzIG93bikuIAogICAgIFN0cmluZyBpZnJhbWVNYXJrdXAgPSAiPGlmcmFtZSBmcmFt
ZWJvcmRlcj1cIm5vXCIgbWFyZ2lud2lkdGg9XCIwXCIgbWFyZ2luaGVpZ2h0PVwiMFwiIHdpZHRo
PVwiOTglJVwiIGhlaWdodD1cIjk4JSVcIiBzcmM9XCIiICsgZnJhbWUtPmxvYWRlcigpLmRvY3Vt
ZW50TG9hZGVyKCktPnJlc3BvbnNlKCkudXJsKCkuc3RyaW5nKCkgKyAiXCI+PC9pZnJhbWU+IjsK
LSAgICBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBpZnJhbWVSZXNvdXJjZSA9IEFyY2hpdmVSZXNv
dXJjZTo6Y3JlYXRlKHV0ZjhCdWZmZXIoaWZyYW1lTWFya3VwKSwgYmxhbmtVUkwoKSwgInRleHQv
aHRtbCIsICJVVEYtOCIsIFN0cmluZygpKTsKKyAgICBhdXRvIGlmcmFtZVJlc291cmNlID0gQXJj
aGl2ZVJlc291cmNlOjpjcmVhdGUodXRmOEJ1ZmZlcihpZnJhbWVNYXJrdXApLCBibGFua1VSTCgp
LCAidGV4dC9odG1sIiwgIlVURi04IiwgU3RyaW5nKCkpOwogCi0gICAgcmV0dXJuIGNyZWF0ZShp
ZnJhbWVSZXNvdXJjZS5yZWxlYXNlKCksIFZlY3RvcjxSZWZQdHI8QXJjaGl2ZVJlc291cmNlPj4o
KSwgVmVjdG9yPFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPj4geyBhcmNoaXZlIH0pOworICAgIHJl
dHVybiBjcmVhdGUoV1RGTW92ZShpZnJhbWVSZXNvdXJjZSksIFZlY3RvcjxSZWZQdHI8QXJjaGl2
ZVJlc291cmNlPj4oKSwgVmVjdG9yPFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPj4geyBhcmNoaXZl
IH0pOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNw
cAppbmRleCA0ZjU0NTI1NGRjODkyNDYxZDkyYWNkZDQ2MmY3NjQzZDlkNjRlZTc1Li45NmVlZjdm
ZTk3MGJlMTlhNWRlZDA4N2ZlOWZlN2ZiNWZkMzg5YTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTMzNCw5ICszMzQsOSBAQCBpbmxpbmUgdm9p
ZCBDYWNoZWRJbWFnZTo6Y3JlYXRlSW1hZ2UoKQogICAgICAgICBtX2ltYWdlID0gUERGRG9jdW1l
bnRJbWFnZTo6Y3JlYXRlKHRoaXMpOwogI2VuZGlmCiAgICAgZWxzZSBpZiAobV9yZXNwb25zZS5t
aW1lVHlwZSgpID09ICJpbWFnZS9zdmcreG1sIikgewotICAgICAgICBSZWZQdHI8U1ZHSW1hZ2U+
IHN2Z0ltYWdlID0gU1ZHSW1hZ2U6OmNyZWF0ZSgqdGhpcywgdXJsKCkpOwotICAgICAgICBtX3N2
Z0ltYWdlQ2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0ltYWdlQ2FjaGU+KHN2Z0ltYWdlLmdl
dCgpKTsKLSAgICAgICAgbV9pbWFnZSA9IHN2Z0ltYWdlLnJlbGVhc2UoKTsKKyAgICAgICAgYXV0
byBzdmdJbWFnZSA9IFNWR0ltYWdlOjpjcmVhdGUoKnRoaXMsIHVybCgpKTsKKyAgICAgICAgbV9z
dmdJbWFnZUNhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdJbWFnZUNhY2hlPihzdmdJbWFnZS5w
dHIoKSk7CisgICAgICAgIG1faW1hZ2UgPSBXVEZNb3ZlKHN2Z0ltYWdlKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBtX2ltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSh0aGlzKTsKICAgICAgICAg
ZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCptX2ltYWdlKS5zZXRBbGxvd1N1YnNhbXBsaW5nKG1fbG9h
ZGVyICYmIG1fbG9hZGVyLT5mcmFtZUxvYWRlcigpLT5mcmFtZSgpLnNldHRpbmdzKCkuaW1hZ2VT
dWJzYW1wbGluZ0VuYWJsZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aWNvbi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRh
dGFiYXNlLmNwcAppbmRleCBlMWVkYTVjYWExZDAwNWMwY2RlYTExM2M2NWIwNTk4Mzk1MzRmMDcy
Li5lZTQzN2U4NjI4ZWJmNGU4NjMyN2NjNzcwMzBmNWY2OTRlMzBiYjJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKQEAgLTU1OCw3ICs1NTgsNyBAQCB2
b2lkIEljb25EYXRhYmFzZTo6c2V0SWNvbkRhdGFGb3JJY29uVVJMKFBhc3NSZWZQdHI8U2hhcmVk
QnVmZmVyPiBkYXRhT3JpZ2luYWwsCiAgICAgICAgICAgICBpY29uID0gZ2V0T3JDcmVhdGVJY29u
UmVjb3JkKGljb25VUkwpOwogICAgIAogICAgICAgICAvLyBVcGRhdGUgdGhlIGRhdGEgYW5kIHNl
dCB0aGUgdGltZSBzdGFtcAotICAgICAgICBpY29uLT5zZXRJbWFnZURhdGEoZGF0YS5yZWxlYXNl
KCkpOworICAgICAgICBpY29uLT5zZXRJbWFnZURhdGEoV1RGTW92ZShkYXRhKSk7CiAgICAgICAg
IGljb24tPnNldFRpbWVzdGFtcCgoaW50KWN1cnJlbnRUaW1lKCkpOwogICAgICAgICAKICAgICAg
ICAgLy8gQ29weSB0aGUgY3VycmVudCByZXRhaW5pbmcgcGFnZVVSTHMgLSBpZiBhbnkgLSB0byBu
b3RpZnkgdGhlbSBvZiB0aGUgY2hhbmdlCkBAIC04OTMsMTAgKzg5MywxMCBAQCBQYXNzUmVmUHRy
PEljb25SZWNvcmQ+IEljb25EYXRhYmFzZTo6Z2V0T3JDcmVhdGVJY29uUmVjb3JkKGNvbnN0IFN0
cmluZyYgaWNvblVSTAogICAgIGlmIChJY29uUmVjb3JkKiBpY29uID0gbV9pY29uVVJMVG9SZWNv
cmRNYXAuZ2V0KGljb25VUkwpKQogICAgICAgICByZXR1cm4gaWNvbjsKIAotICAgIFJlZlB0cjxJ
Y29uUmVjb3JkPiBuZXdJY29uID0gSWNvblJlY29yZDo6Y3JlYXRlKGljb25VUkwpOwotICAgIG1f
aWNvblVSTFRvUmVjb3JkTWFwLnNldChpY29uVVJMLCBuZXdJY29uLmdldCgpKTsKKyAgICBhdXRv
IG5ld0ljb24gPSBJY29uUmVjb3JkOjpjcmVhdGUoaWNvblVSTCk7CisgICAgbV9pY29uVVJMVG9S
ZWNvcmRNYXAuc2V0KGljb25VUkwsIG5ld0ljb24ucHRyKCkpOwogCi0gICAgcmV0dXJuIG5ld0lj
b24ucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKG5ld0ljb24pOwogfQogCiAvLyBUaGlz
IG1ldGhvZCByZXRyaWV2ZXMgdGhlIGV4aXN0aW5nIFBhZ2VVUkxSZWNvcmQsIG9yIGNyZWF0ZXMg
YSBuZXcgb25lIGFuZCBtYXJrcyBpdCBhcyAiaW50ZXJlc3RlZCBpbiB0aGUgaW1wb3J0IiBmb3Ig
bGF0ZXIgbm90aWZpY2F0aW9uCkBAIC0xNDkzLDcgKzE0OTMsNyBAQCBib29sIEljb25EYXRhYmFz
ZTo6cmVhZEZyb21EYXRhYmFzZSgpCiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGljb25zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGRpZEFueVdvcmsgPSB0cnVlOwotICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZURhdGEgPSBnZXRJbWFnZURhdGFGb3JJY29uVVJM
RnJvbVNRTERhdGFiYXNlKGljb25zW2ldLT5pY29uVVJMKCkpOworICAgICAgICBhdXRvIGltYWdl
RGF0YSA9IGdldEltYWdlRGF0YUZvckljb25VUkxGcm9tU1FMRGF0YWJhc2UoaWNvbnNbaV0tPmlj
b25VUkwoKSk7CiAKICAgICAgICAgLy8gVmVyaWZ5IHRoaXMgaWNvbiBzdGlsbCB3YW50cyB0byBi
ZSByZWFkIGZyb20gZGlzawogICAgICAgICB7CkBAIC0xNTAzLDcgKzE1MDMsNyBAQCBib29sIElj
b25EYXRhYmFzZTo6cmVhZEZyb21EYXRhYmFzZSgpCiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgaWYgKG1faWNvbnNQZW5kaW5nUmVhZGluZy5jb250YWlucyhpY29uc1tpXSkpIHsK
ICAgICAgICAgICAgICAgICAgICAgLy8gU2V0IHRoZSBuZXcgZGF0YQotICAgICAgICAgICAgICAg
ICAgICBpY29uc1tpXS0+c2V0SW1hZ2VEYXRhKGltYWdlRGF0YS5yZWxlYXNlKCkpOworICAgICAg
ICAgICAgICAgICAgICBpY29uc1tpXS0+c2V0SW1hZ2VEYXRhKFdURk1vdmUoaW1hZ2VEYXRhKSk7
CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAvLyBSZW1vdmUgdGhp
cyBpY29uIGZyb20gdGhlIHNldCB0aGF0IG5lZWRzIHRvIGJlIHJlYWQKICAgICAgICAgICAgICAg
ICAgICAgbV9pY29uc1BlbmRpbmdSZWFkaW5nLnJlbW92ZShpY29uc1tpXSk7CkBAIC0xOTM2LDcg
KzE5MzYsNyBAQCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSWNvbkRhdGFiYXNlOjpnZXRJbWFn
ZURhdGFGb3JJY29uVVJMRnJvbVNRTERhdGFiYXNlKGNvbgogCiAgICAgbV9nZXRJbWFnZURhdGFG
b3JJY29uVVJMU3RhdGVtZW50LT5yZXNldCgpOwogICAgIAotICAgIHJldHVybiBpbWFnZURhdGEu
cmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKGltYWdlRGF0YSk7CiB9CiAKIHZvaWQgSWNv
bkRhdGFiYXNlOjpyZW1vdmVJY29uRnJvbVNRTERhdGFiYXNlKGNvbnN0IFN0cmluZyYgaWNvblVS
TCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCAxMTliZDQ2YTBkNmZjM2QzNTMyYTk4
MjRkNzQ1Y2FmNDIxYTdkOTViLi5lYTlhZDQyMDlhYTcyZDgyNTAyNzlhNzE0ZWUwNDc3NjY3NTM0
MDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC04MTIsMTMgKzgxMiwxMyBAQCBT
dG9yYWdlKiBET01XaW5kb3c6OnNlc3Npb25TdG9yYWdlKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25z
dAogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8U3RvcmFn
ZUFyZWE+IHN0b3JhZ2VBcmVhID0gcGFnZS0+c2Vzc2lvblN0b3JhZ2UoKS0+c3RvcmFnZUFyZWEo
ZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpOworICAgIGF1dG8gc3RvcmFnZUFyZWEgPSBwYWdl
LT5zZXNzaW9uU3RvcmFnZSgpLT5zdG9yYWdlQXJlYShkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4o
KSk7CiAgICAgaWYgKCFzdG9yYWdlQXJlYS0+Y2FuQWNjZXNzU3RvcmFnZShtX2ZyYW1lKSkgewog
ICAgICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0g
ICAgbV9zZXNzaW9uU3RvcmFnZSA9IFN0b3JhZ2U6OmNyZWF0ZShtX2ZyYW1lLCBzdG9yYWdlQXJl
YS5yZWxlYXNlKCkpOworICAgIG1fc2Vzc2lvblN0b3JhZ2UgPSBTdG9yYWdlOjpjcmVhdGUobV9m
cmFtZSwgV1RGTW92ZShzdG9yYWdlQXJlYSkpOwogICAgIHJldHVybiBtX3Nlc3Npb25TdG9yYWdl
LmdldCgpOwogfQogCkBAIC04NTgsMTQgKzg1OCwxNCBAQCBTdG9yYWdlKiBET01XaW5kb3c6Omxv
Y2FsU3RvcmFnZShFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKICAgICBpZiAoIXBhZ2UtPnNldHRp
bmdzKCkubG9jYWxTdG9yYWdlRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIFJlZlB0cjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEgPSBwYWdlLT5zdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXIoKS5sb2NhbFN0b3JhZ2VBcmVhKCpkb2N1bWVudCk7CisgICAgYXV0byBzdG9y
YWdlQXJlYSA9IHBhZ2UtPnN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigpLmxvY2FsU3RvcmFnZUFy
ZWEoKmRvY3VtZW50KTsKIAogICAgIGlmICghc3RvcmFnZUFyZWEtPmNhbkFjY2Vzc1N0b3JhZ2Uo
bV9mcmFtZSkpIHsKICAgICAgICAgZWMgPSBTRUNVUklUWV9FUlI7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAotICAgIG1fbG9jYWxTdG9yYWdlID0gU3RvcmFnZTo6Y3JlYXRlKG1f
ZnJhbWUsIHN0b3JhZ2VBcmVhLnJlbGVhc2UoKSk7CisgICAgbV9sb2NhbFN0b3JhZ2UgPSBTdG9y
YWdlOjpjcmVhdGUobV9mcmFtZSwgV1RGTW92ZShzdG9yYWdlQXJlYSkpOwogICAgIHJldHVybiBt
X2xvY2FsU3RvcmFnZS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CmluZGV4IDIxMTU1MzE4NGNlYzY3ZTBlNTllOTcyYjUzZDYxOGJkN2M5ZDJhZDQuLmVmZGVlZDEz
NzJlZjA4ODY5NjNlZTU0ZmMyZDY2YjZiZWNmMzc3YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5jcHAKQEAgLTIyNzgsNyArMjI3OCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjp1cGRh
dGVEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBEYXRhVHJhbnNm
CiAgICAgICAgICAgICBtX3Nob3VsZE9ubHlGaXJlRHJhZ092ZXJFdmVudCA9IGZhbHNlOwogICAg
ICAgICB9CiAgICAgfQotICAgIG1fZHJhZ1RhcmdldCA9IG5ld1RhcmdldC5yZWxlYXNlKCk7Cisg
ICAgbV9kcmFnVGFyZ2V0ID0gV1RGTW92ZShuZXdUYXJnZXQpOwogICAgIHJldHVybiBhY2NlcHQ7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0
ZUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVB
bmltYXRpb24uY3BwCmluZGV4IGVkMTliNjEzOWMzYTkxMmFlODg4NzQwYWExMzBhNzI0MTY4ZTA0
NjAuLjJmN2IxYWQwYTVkZjYxOWFjNGUzNzBmYjk1M2Y2ODk0ODU1MGFkNWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcApA
QCAtMTY4LDkgKzE2OCw5IEBAIHZvaWQgQ29tcG9zaXRlQW5pbWF0aW9uOjp1cGRhdGVUcmFuc2l0
aW9ucyhSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgUmVuZGVyCiAgICAgICAgICAgICAg
ICAgLy8gPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDc4Nz4KICAg
ICAgICAgICAgICAgICBpZiAoIWVxdWFsICYmIGlzQWN0aXZlVHJhbnNpdGlvbikgewogICAgICAg
ICAgICAgICAgICAgICAvLyBBZGQgdGhlIG5ldyB0cmFuc2l0aW9uCi0gICAgICAgICAgICAgICAg
ICAgIFJlZlB0cjxJbXBsaWNpdEFuaW1hdGlvbj4gaW1wbGljaXRBbmltYXRpb24gPSBJbXBsaWNp
dEFuaW1hdGlvbjo6Y3JlYXRlKGFuaW1hdGlvbiwgcHJvcCwgcmVuZGVyZXIsIHRoaXMsIG1vZGlm
aWVkQ3VycmVudFN0eWxlID8gbW9kaWZpZWRDdXJyZW50U3R5bGUuZ2V0KCkgOiBmcm9tU3R5bGUp
OwotICAgICAgICAgICAgICAgICAgICBMT0coQW5pbWF0aW9ucywgIkNyZWF0ZWQgSW1wbGljaXRB
bmltYXRpb24gJXAgb24gcmVuZGVyZXIgJXAgZm9yIHByb3BlcnR5ICVzIGR1cmF0aW9uICUuMmYg
ZGVsYXkgJS4yZiIsIGltcGxpY2l0QW5pbWF0aW9uLmdldCgpLCByZW5kZXJlciwgZ2V0UHJvcGVy
dHlOYW1lKHByb3ApLCBhbmltYXRpb24uZHVyYXRpb24oKSwgYW5pbWF0aW9uLmRlbGF5KCkpOwot
ICAgICAgICAgICAgICAgICAgICBtX3RyYW5zaXRpb25zLnNldChwcm9wLCBpbXBsaWNpdEFuaW1h
dGlvbi5yZWxlYXNlKCkpOworICAgICAgICAgICAgICAgICAgICBhdXRvIGltcGxpY2l0QW5pbWF0
aW9uID0gSW1wbGljaXRBbmltYXRpb246OmNyZWF0ZShhbmltYXRpb24sIHByb3AsIHJlbmRlcmVy
LCB0aGlzLCBtb2RpZmllZEN1cnJlbnRTdHlsZSA/IG1vZGlmaWVkQ3VycmVudFN0eWxlLmdldCgp
IDogZnJvbVN0eWxlKTsKKyAgICAgICAgICAgICAgICAgICAgTE9HKEFuaW1hdGlvbnMsICJDcmVh
dGVkIEltcGxpY2l0QW5pbWF0aW9uICVwIG9uIHJlbmRlcmVyICVwIGZvciBwcm9wZXJ0eSAlcyBk
dXJhdGlvbiAlLjJmIGRlbGF5ICUuMmYiLCBpbXBsaWNpdEFuaW1hdGlvbi5wdHIoKSwgcmVuZGVy
ZXIsIGdldFByb3BlcnR5TmFtZShwcm9wKSwgYW5pbWF0aW9uLmR1cmF0aW9uKCksIGFuaW1hdGlv
bi5kZWxheSgpKTsKKyAgICAgICAgICAgICAgICAgICAgbV90cmFuc2l0aW9ucy5zZXQocHJvcCwg
V1RGTW92ZShpbXBsaWNpdEFuaW1hdGlvbikpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IG5lZWQgb25lIHBhc3MgZm9yIHRo
ZSBzaW5nbGUgcHJvcCBjYXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5LmNwcAppbmRleCA5OWM3NmFiMmMxNDYxYTRiY2IxZjBhMjFlNDQ2OTAw
OTliYTQwZDViLi5lOThmYzc0NjI5ZTliYWM3MDdmZGFkNWFlNmRkNWQ4Yjc4MDJkYWU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAK
QEAgLTYyOCw3ICs2MjgsNyBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0Vmlv
bGF0aW9uKGNvbnN0IFN0cmluZyYgZWZmZWN0aXZlVmlvbGF0ZWREaXJlYwogICAgIC8vIHNlbnQg
ZXhwbGljaXRseS4gQXMgZm9yIHdoaWNoIGRpcmVjdGl2ZSB3YXMgdmlvbGF0ZWQsIHRoYXQncyBw
cmV0dHkKICAgICAvLyBoYXJtbGVzcyBpbmZvcm1hdGlvbi4KIAotICAgIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IGNzcFJlcG9ydCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAgYXV0
byBjc3BSZXBvcnQgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGNzcFJlcG9ydC0+
c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgiZG9jdW1lbnQtdXJpIiksIGRvY3VtZW50VVJJKTsKICAg
ICBjc3BSZXBvcnQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInJlZmVycmVyIiksIHJlZmVycmVy
KTsKICAgICBjc3BSZXBvcnQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInZpb2xhdGVkLWRpcmVj
dGl2ZSIpLCB2aW9sYXRlZERpcmVjdGl2ZVRleHQpOwpAQCAtNjQzLDcgKzY0Myw3IEBAIHZvaWQg
Q29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBlZmZl
Y3RpdmVWaW9sYXRlZERpcmVjCiAgICAgfQogCiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
cmVwb3J0T2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICByZXBvcnRPYmpl
Y3QtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoImNzcC1yZXBvcnQiKSwgY3NwUmVwb3J0LnJlbGVh
c2UoKSk7CisgICAgcmVwb3J0T2JqZWN0LT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJjc3AtcmVw
b3J0IiksIFdURk1vdmUoY3NwUmVwb3J0KSk7CiAKICAgICBSZWZQdHI8Rm9ybURhdGE+IHJlcG9y
dCA9IEZvcm1EYXRhOjpjcmVhdGUocmVwb3J0T2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCkp
OwogICAgIGZvciAoY29uc3QgYXV0byYgdXJsIDogcmVwb3J0VVJJcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tCmluZGV4IGIx
NjdjZTIwMTlkMjk0OGE3YWU5MzFkOTZhNWZjNzRjMzhiNzZmODAuLmIxNjVlYTQ3NmJhMmQ1YWE1
NzhjNGYyYWFhZjM4NTQ5MTYzNzg1MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
bWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbQpAQCAtNjIwLDkgKzYyMCw5IEBAIHZv
aWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6Y3JlYXRlT3ZlcmxheUlmTmVlZGVkKCkKICAg
ICBpZiAoIW1fbWFpbkZyYW1lLnNldHRpbmdzKCkuc2VydmljZUNvbnRyb2xzRW5hYmxlZCgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8UGFnZU92ZXJsYXk+IG92ZXJsYXkgPSBQYWdl
T3ZlcmxheTo6Y3JlYXRlKCp0aGlzLCBQYWdlT3ZlcmxheTo6T3ZlcmxheVR5cGU6OkRvY3VtZW50
KTsKLSAgICBtX3NlcnZpY2VzT3ZlcmxheSA9IG92ZXJsYXkuZ2V0KCk7Ci0gICAgbV9tYWluRnJh
bWUucGFnZU92ZXJsYXlDb250cm9sbGVyKCkuaW5zdGFsbFBhZ2VPdmVybGF5KG92ZXJsYXkucmVs
ZWFzZSgpLCBQYWdlT3ZlcmxheTo6RmFkZU1vZGU6OkRvTm90RmFkZSk7CisgICAgYXV0byBvdmVy
bGF5ID0gUGFnZU92ZXJsYXk6OmNyZWF0ZSgqdGhpcywgUGFnZU92ZXJsYXk6Ok92ZXJsYXlUeXBl
OjpEb2N1bWVudCk7CisgICAgbV9zZXJ2aWNlc092ZXJsYXkgPSBvdmVybGF5LnB0cigpOworICAg
IG1fbWFpbkZyYW1lLnBhZ2VPdmVybGF5Q29udHJvbGxlcigpLmluc3RhbGxQYWdlT3ZlcmxheShX
VEZNb3ZlKG92ZXJsYXkpLCBQYWdlT3ZlcmxheTo6RmFkZU1vZGU6OkRvTm90RmFkZSk7CiB9CiAK
IFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjp0ZWxlcGhv
bmVOdW1iZXJSYW5nZXNGb3JGb2N1c2VkRnJhbWUoKQpAQCAtNzM5LDcgKzczOSw3IEBAIHZvaWQg
U2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6ZGV0ZXJtaW5lQWN0aXZlSGlnaGxpZ2h0KGJvb2wm
IG1vdXNlSXNPdmVyQWN0aXZlCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICBtX2FjdGl2ZUhpZ2hsaWdodCA9IG1fbmV4dEFjdGl2ZUhpZ2hsaWdodC5yZWxlYXNlKCk7
CisgICAgICAgIG1fYWN0aXZlSGlnaGxpZ2h0ID0gV1RGTW92ZShtX25leHRBY3RpdmVIaWdobGln
aHQpOwogCiAgICAgICAgIGlmIChtX2FjdGl2ZUhpZ2hsaWdodCkgewogICAgICAgICAgICAgbV9z
ZXJ2aWNlc092ZXJsYXktPmxheWVyKCkuYWRkQ2hpbGQobV9hY3RpdmVIaWdobGlnaHQtPmxheWVy
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3Jv
bGxpbmdDb29yZGluYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNT
Y3JvbGxpbmdDb29yZGluYXRvci5oCmluZGV4IGQwOTY4YmIzMzgwNjg3ZGQzYmVmMzQzMTIwMTli
ZjMzM2JhN2YwNmEuLjYzMTYyY2FkODY1Mjk3YmRjNzQ0M2FjNDQ5MzM3NzliYzBkYmM0ZDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29v
cmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9s
bGluZ0Nvb3JkaW5hdG9yLmgKQEAgLTczLDcgKzczLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgU2Ny
b2xsaW5nU3RhdGVUcmVlKiBzY3JvbGxpbmdTdGF0ZVRyZWUoKSB7IHJldHVybiBtX3Njcm9sbGlu
Z1N0YXRlVHJlZS5nZXQoKTsgfQogCi0gICAgUGFzc1JlZlB0cjxTY3JvbGxpbmdUcmVlPiByZWxl
YXNlU2Nyb2xsaW5nVHJlZSgpIHsgcmV0dXJuIG1fc2Nyb2xsaW5nVHJlZS5yZWxlYXNlKCk7IH0K
KyAgICBQYXNzUmVmUHRyPFNjcm9sbGluZ1RyZWU+IHJlbGVhc2VTY3JvbGxpbmdUcmVlKCkgeyBy
ZXR1cm4gV1RGTW92ZShtX3Njcm9sbGluZ1RyZWUpOyB9CiAKICAgICB2b2lkIHVwZGF0ZVNjcm9s
bFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbChTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IEZsb2F0UG9p
bnQmLCBib29sIHByb2dyYW1tYXRpY1Njcm9sbCwgU2V0T3JTeW5jU2Nyb2xsaW5nTGF5ZXJQb3Np
dGlvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1N0YXRlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdTdGF0ZU5vZGUuY3BwCmluZGV4IGRmZDUyODU3YWY2ZDAzYTJlODcwMzQ1MmI4MzJmNjAyNjQy
NjQwMjQuLjg5YWVjYTBmNjk1NjllODY1NWNkZDAwMDU2NzFlMTkzMWI1NDhhYjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmNw
cApAQCAtNzQsMTMgKzc0LDEzIEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVOb2RlOjpzZXRQcm9wZXJ0
eUNoYW5nZWQodW5zaWduZWQgcHJvcGVydHlCaXQpCiAKIFBhc3NSZWZQdHI8U2Nyb2xsaW5nU3Rh
dGVOb2RlPiBTY3JvbGxpbmdTdGF0ZU5vZGU6OmNsb25lQW5kUmVzZXQoU2Nyb2xsaW5nU3RhdGVU
cmVlJiBhZG9wdGl2ZVRyZWUpCiB7Ci0gICAgUmVmUHRyPFNjcm9sbGluZ1N0YXRlTm9kZT4gY2xv
bmUgPSB0aGlzLT5jbG9uZShhZG9wdGl2ZVRyZWUpOworICAgIGF1dG8gY2xvbmUgPSB0aGlzLT5j
bG9uZShhZG9wdGl2ZVRyZWUpOwogCiAgICAgLy8gTm93IHRoYXQgdGhpcyBub2RlIGlzIGNsb25l
ZCwgcmVzZXQgb3VyIGNoYW5nZSBwcm9wZXJ0aWVzLgogICAgIHJlc2V0Q2hhbmdlZFByb3BlcnRp
ZXMoKTsKIAotICAgIGNsb25lQW5kUmVzZXRDaGlsZHJlbigqY2xvbmUsIGFkb3B0aXZlVHJlZSk7
Ci0gICAgcmV0dXJuIGNsb25lLnJlbGVhc2UoKTsKKyAgICBjbG9uZUFuZFJlc2V0Q2hpbGRyZW4o
Y2xvbmUuZ2V0KCksIGFkb3B0aXZlVHJlZSk7CisgICAgcmV0dXJuIFdURk1vdmUoY2xvbmUpOwog
fQogCiB2b2lkIFNjcm9sbGluZ1N0YXRlTm9kZTo6Y2xvbmVBbmRSZXNldENoaWxkcmVuKFNjcm9s
bGluZ1N0YXRlTm9kZSYgY2xvbmUsIFNjcm9sbGluZ1N0YXRlVHJlZSYgYWRvcHRpdmVUcmVlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVU
cmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJl
ZS5jcHAKaW5kZXggM2JlYzQzNjBjNGQxNTQ5Njc2MWZhYTQ3NDFmMjkwMzZjMTc5NmY5NC4uMTFj
ZWM1ZjVkZTdhMjFjNmFmMWE2ZWMwNjFhOWY1ZmJkOTRhZTU3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwCkBAIC0xMTUs
MTYgKzExNSwxNiBAQCBTY3JvbGxpbmdOb2RlSUQgU2Nyb2xsaW5nU3RhdGVUcmVlOjphdHRhY2hO
b2RlKFNjcm9sbGluZ05vZGVUeXBlIG5vZGVUeXBlLCBTY3JvbAogICAgICAgICAgICAgcmV0dXJu
IDA7CiAKICAgICAgICAgaWYgKG5vZGVUeXBlID09IEZyYW1lU2Nyb2xsaW5nTm9kZSAmJiBwYXJl
bnRJRCkgewotICAgICAgICAgICAgaWYgKFJlZlB0cjxTY3JvbGxpbmdTdGF0ZU5vZGU+IG9ycGhh
bmVkTm9kZSA9IG1fb3JwaGFuZWRTdWJmcmFtZU5vZGVzLnRha2UobmV3Tm9kZUlEKSkgeworICAg
ICAgICAgICAgaWYgKGF1dG8gb3JwaGFuZWROb2RlID0gbV9vcnBoYW5lZFN1YmZyYW1lTm9kZXMu
dGFrZShuZXdOb2RlSUQpKSB7CiAgICAgICAgICAgICAgICAgbmV3Tm9kZSA9IG9ycGhhbmVkTm9k
ZS5nZXQoKTsKLSAgICAgICAgICAgICAgICBwYXJlbnQtPmFwcGVuZENoaWxkKG9ycGhhbmVkTm9k
ZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgICAgIHBhcmVudC0+YXBwZW5kQ2hpbGQoV1RGTW92
ZShvcnBoYW5lZE5vZGUpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGlm
ICghbmV3Tm9kZSkgewotICAgICAgICAgICAgUmVmUHRyPFNjcm9sbGluZ1N0YXRlTm9kZT4gc3Rh
dGVOb2RlID0gY3JlYXRlTm9kZShub2RlVHlwZSwgbmV3Tm9kZUlEKTsKKyAgICAgICAgICAgIGF1
dG8gc3RhdGVOb2RlID0gY3JlYXRlTm9kZShub2RlVHlwZSwgbmV3Tm9kZUlEKTsKICAgICAgICAg
ICAgIG5ld05vZGUgPSBzdGF0ZU5vZGUuZ2V0KCk7Ci0gICAgICAgICAgICBwYXJlbnQtPmFwcGVu
ZENoaWxkKHN0YXRlTm9kZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgcGFyZW50LT5hcHBlbmRD
aGlsZChXVEZNb3ZlKHN0YXRlTm9kZSkpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCmluZGV4IGVhMzNlZmMx
ZDNiZjAwM2Y3NjZhOTg5ZjA0YzZhNTMwMjk4NjQ1N2YuLmY2NWNkZTNjMWFmZjQ1ZjY2ZDVmMjIz
NjM2NzE5MmYwY2IzMDdhMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0hSVEZFbGV2YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0hSVEZFbGV2YXRpb24uY3BwCkBAIC03NCwxMiArNzQsMTIgQEAgc3RhdGljIEF1ZGlvQnVzKiBn
ZXRDb25jYXRlbmF0ZWRJbXB1bHNlUmVzcG9uc2VzRm9yU3ViamVjdChjb25zdCBTdHJpbmcmIHN1
YmplY3QKICAgICBBdWRpb0J1cyogYnVzOwogICAgIEF1ZGlvQnVzTWFwOjppdGVyYXRvciBpdGVy
YXRvciA9IGF1ZGlvQnVzTWFwLmdldCgpLmZpbmQoc3ViamVjdE5hbWUpOwogICAgIGlmIChpdGVy
YXRvciA9PSBhdWRpb0J1c01hcC5nZXQoKS5lbmQoKSkgewotICAgICAgICBSZWZQdHI8QXVkaW9C
dXM+IGNvbmNhdGVuYXRlZEltcHVsc2VSZXNwb25zZXMgPSBBdWRpb0J1czo6bG9hZFBsYXRmb3Jt
UmVzb3VyY2Uoc3ViamVjdE5hbWUudXRmOCgpLmRhdGEoKSwgUmVzcG9uc2VTYW1wbGVSYXRlKTsK
KyAgICAgICAgYXV0byBjb25jYXRlbmF0ZWRJbXB1bHNlUmVzcG9uc2VzID0gQXVkaW9CdXM6Omxv
YWRQbGF0Zm9ybVJlc291cmNlKHN1YmplY3ROYW1lLnV0ZjgoKS5kYXRhKCksIFJlc3BvbnNlU2Ft
cGxlUmF0ZSk7CiAgICAgICAgIEFTU0VSVChjb25jYXRlbmF0ZWRJbXB1bHNlUmVzcG9uc2VzKTsK
ICAgICAgICAgaWYgKCFjb25jYXRlbmF0ZWRJbXB1bHNlUmVzcG9uc2VzKQogICAgICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICAgICAgYnVzID0gY29uY2F0ZW5hdGVkSW1wdWxzZVJlc3BvbnNlcy5y
ZWxlYXNlKCkubGVha1JlZigpOworICAgICAgICBidXMgPSBjb25jYXRlbmF0ZWRJbXB1bHNlUmVz
cG9uc2VzLmxlYWtSZWYoKTsKICAgICAgICAgYXVkaW9CdXNNYXAuZ2V0KCkuc2V0KHN1YmplY3RO
YW1lLCBidXMpOwogICAgIH0gZWxzZQogICAgICAgICBidXMgPSBpdGVyYXRvci0+dmFsdWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVz
aE1vbml0b3JNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rp
c3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwCmluZGV4IDk3ODJkMjg0NjBjYThmZDA5YzU4
ZTcxYTVkN2NjOGJlNTRkNDVjMDYuLmYwOGFlYmU3MmU3ZTI5NGFiNDlmZGQ1YWQ3MDNiZTVkMjYx
ZjJiOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3Bs
YXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwCkBAIC01NCwxMyArNTQs
MTMgQEAgRGlzcGxheVJlZnJlc2hNb25pdG9yKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2Vy
OjpjcmVhdGVNb25pdG9yRm9yQ2xpZW50KERpc3AKICAgICAgICAgcmV0dXJuIG1vbml0b3IuZ2V0
KCk7CiAgICAgfQogCi0gICAgUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9uaXRvcj4gbW9uaXRvciA9
IERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6Y3JlYXRlKGNsaWVudCk7CisgICAgYXV0byBtb25pdG9y
ID0gRGlzcGxheVJlZnJlc2hNb25pdG9yOjpjcmVhdGUoY2xpZW50KTsKICAgICBpZiAoIW1vbml0
b3IpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgbW9uaXRvci0+YWRkQ2xpZW50KGNs
aWVudCk7CiAgICAgRGlzcGxheVJlZnJlc2hNb25pdG9yKiByZXN1bHQgPSBtb25pdG9yLmdldCgp
OwotICAgIG1fbW9uaXRvcnMuYXBwZW5kKG1vbml0b3IucmVsZWFzZSgpKTsKKyAgICBtX21vbml0
b3JzLmFwcGVuZChXVEZNb3ZlKG1vbml0b3IpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZv
bnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9u
dHMuY3BwCmluZGV4IGMzZjIzMjYwMWE4MDBiMjVmZGQwOWI5NGMyMDUxNGQxYjJlZWMwNTcuLmQz
NmVkMDkyNzRlM2I3ZGE4NTJiZWEyY2FmOTQ4MmJkNGUxYzhlZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuY3BwCkBAIC0z
MjQsNyArMzI0LDcgQEAgR2x5cGhEYXRhIEZvbnRDYXNjYWRlRm9udHM6OmdseXBoRGF0YUZvclN5
c3RlbUZhbGxiYWNrKFVDaGFyMzIgYywgY29uc3QgRm9udENhc2MKICAgICBpZiAoIW9yaWdpbmFs
Rm9udCkKICAgICAgICAgb3JpZ2luYWxGb250ID0gJnByaW1hcnlSYW5nZXMuZm9udEZvckZpcnN0
UmFuZ2UoKTsKIAotICAgIFJlZlB0cjxGb250PiBzeXN0ZW1GYWxsYmFja0ZvbnQgPSBvcmlnaW5h
bEZvbnQtPnN5c3RlbUZhbGxiYWNrRm9udEZvckNoYXJhY3RlcihjLCBkZXNjcmlwdGlvbiwgbV9p
c0ZvclBsYXRmb3JtRm9udCk7CisgICAgYXV0byBzeXN0ZW1GYWxsYmFja0ZvbnQgPSBvcmlnaW5h
bEZvbnQtPnN5c3RlbUZhbGxiYWNrRm9udEZvckNoYXJhY3RlcihjLCBkZXNjcmlwdGlvbiwgbV9p
c0ZvclBsYXRmb3JtRm9udCk7CiAgICAgaWYgKCFzeXN0ZW1GYWxsYmFja0ZvbnQpCiAgICAgICAg
IHJldHVybiBHbHlwaERhdGEoKTsKIApAQCAtMzQ4LDcgKzM0OCw3IEBAIEdseXBoRGF0YSBGb250
Q2FzY2FkZUZvbnRzOjpnbHlwaERhdGFGb3JTeXN0ZW1GYWxsYmFjayhVQ2hhcjMyIGMsIGNvbnN0
IEZvbnRDYXNjCiAKICAgICAvLyBLZWVwIHRoZSBzeXN0ZW0gZmFsbGJhY2sgZm9udHMgd2UgdXNl
IGFsaXZlLgogICAgIGlmIChmYWxsYmFja0dseXBoRGF0YS5nbHlwaCkKLSAgICAgICAgbV9zeXN0
ZW1GYWxsYmFja0ZvbnRTZXQuYWRkKHN5c3RlbUZhbGxiYWNrRm9udC5yZWxlYXNlKCkpOworICAg
ICAgICBtX3N5c3RlbUZhbGxiYWNrRm9udFNldC5hZGQoV1RGTW92ZShzeXN0ZW1GYWxsYmFja0Zv
bnQpKTsKIAogICAgIHJldHVybiBmYWxsYmFja0dseXBoRGF0YTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAppbmRleCBiOWI5MjMxOTBjNWYz
MjVlMTMyZGViNjVmZDc3NWFjNjk5YTQxZjU1Li40ZjJmYjViYjVkMjk1NjQwOGM3MzNiMDk5N2Vh
NzM5Y2NiNTE3YTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1By
aXZhdGVBVkYuY3BwCkBAIC00MDUsNyArNDA1LDcgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGOjpwcm9jZXNzQXR0cmlidXRlZFN0cmluZ3MoQ0ZBcnJheVJlZiBhdHRyaWJ1dGVkU3QK
ICAgICAgICAgCiAgICAgICAgIExPRyhNZWRpYSwgIkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6
OnByb2Nlc3NDdWUoJXApIC0gYWRkaW5nIGN1ZSBcIiVzXCIgZm9yIHRpbWUgPSAlLjJmLCBlbmQg
PSAlLjJmLCBwb3NpdGlvbiA9ICAlLjJmLCBsaW5lID0gICUuMmYiLCB0aGlzLCBjdWVEYXRhLT5j
b250ZW50KCkudXRmOCgpLmRhdGEoKSwgY3VlRGF0YS0+c3RhcnRUaW1lKCkudG9Eb3VibGUoKSwg
Y3VlRGF0YS0+ZW5kVGltZSgpLnRvRG91YmxlKCksIGN1ZURhdGEtPnBvc2l0aW9uKCksIGN1ZURh
dGEtPmxpbmUoKSk7CiAKLSAgICAgICAgY2xpZW50KCktPmFkZEdlbmVyaWNDdWUodGhpcywgY3Vl
RGF0YS5yZWxlYXNlKCkpOworICAgICAgICBjbGllbnQoKS0+YWRkR2VuZXJpY0N1ZSh0aGlzLCBX
VEZNb3ZlKGN1ZURhdGEpKTsKICAgICB9CiAKICAgICBtX3BlbmRpbmdDdWVTdGF0dXMgPSBzZWVr
aW5nKCkgPyBEZWxpdmVyZWREdXJpbmdTZWVrIDogVmFsaWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFTZWxlY3Rpb25Hcm91
cEFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMubW0KaW5kZXggZDEzNmQ4NzM2OTMzMmNjN2E5
NzNkMDE0OWQ0NmI4YjYzOGFmY2NmMy4uMTBkMmIyMTU0ZmZhOTc0YTFhNzkxMzA3OWVhNGVhNmRk
ODQ3OTljMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNlbGVjdGlvbkdyb3VwQVZG
T2JqQy5tbQpAQCAtMTI5LDEwICsxMjksMTAgQEAgdm9pZCBNZWRpYVNlbGVjdGlvbkdyb3VwQVZG
T2JqQzo6dXBkYXRlT3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgY2hhcmFjdGVyaXMKICAg
ICBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uKiBzZWxlY3RlZE9wdGlvbiA9IFttX3BsYXllckl0ZW0g
c2VsZWN0ZWRNZWRpYU9wdGlvbkluTWVkaWFTZWxlY3Rpb25Hcm91cDptX21lZGlhU2VsZWN0aW9u
R3JvdXAuZ2V0KCldOwogCiAgICAgZm9yIChBVk1lZGlhU2VsZWN0aW9uT3B0aW9uKiBhZGRlZEFW
T3B0aW9uIGluIGFkZGVkQVZPcHRpb25zLmdldCgpKSB7Ci0gICAgICAgIFJlZlB0cjxNZWRpYVNl
bGVjdGlvbk9wdGlvbkFWRk9iakM+IGFkZGVkT3B0aW9uID0gTWVkaWFTZWxlY3Rpb25PcHRpb25B
VkZPYmpDOjpjcmVhdGUoKnRoaXMsIGFkZGVkQVZPcHRpb24pOworICAgICAgICBhdXRvIGFkZGVk
T3B0aW9uID0gTWVkaWFTZWxlY3Rpb25PcHRpb25BVkZPYmpDOjpjcmVhdGUoKnRoaXMsIGFkZGVk
QVZPcHRpb24pOwogICAgICAgICBpZiAoYWRkZWRBVk9wdGlvbiA9PSBzZWxlY3RlZE9wdGlvbikK
ICAgICAgICAgICAgIG1fc2VsZWN0ZWRPcHRpb24gPSBhZGRlZE9wdGlvbi5nZXQoKTsKLSAgICAg
ICAgbV9vcHRpb25zLnNldChhZGRlZEFWT3B0aW9uLCBhZGRlZE9wdGlvbi5yZWxlYXNlKCkpOwor
ICAgICAgICBtX29wdGlvbnMuc2V0KGFkZGVkQVZPcHRpb24sIFdURk1vdmUoYWRkZWRPcHRpb24p
KTsKICAgICB9CiAKICAgICBpZiAoIW1fc2hvdWxkU2VsZWN0T3B0aW9uQXV0b21hdGljYWxseSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMubW0KaW5kZXggZjhmNmIyNTE1NGQ3NjVmMWQwYWJmNjdlOTRhZWI0ZDdiNmZlNzY5Yi4uYTlk
NTc4ZmE4YWEyZGVhYTMxYTNmMjBlNWRmODE3OThhYjA3MDdjZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAgLTY5Niw3
ICs2OTYsNyBAQCBib29sIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpwcm9jZXNzQ29kZWRG
cmFtZShpbnQgdHJhY2tJRCwgQ01TYW1wbGVCdWZmZXJSZQogICAgIGlmIChtX2NsaWVudCkgewog
ICAgICAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IG1lZGlhU2FtcGxlID0gTWVkaWFTYW1wbGVBVkZP
YmpDOjpjcmVhdGUoc2FtcGxlQnVmZmVyLCB0cmFja0lEKTsKICAgICAgICAgTE9HKE1lZGlhU291
cmNlU2FtcGxlcywgIlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpwcm9jZXNzQ29kZWRGcmFt
ZSglcCkgLSBzYW1wbGUoJXMpIiwgdGhpcywgdG9TdHJpbmcoKm1lZGlhU2FtcGxlKS51dGY4KCku
ZGF0YSgpKTsKLSAgICAgICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZl
U2FtcGxlKHRoaXMsIG1lZGlhU2FtcGxlLnJlbGVhc2UoKSk7CisgICAgICAgIG1fY2xpZW50LT5z
b3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZVNhbXBsZSh0aGlzLCBXVEZNb3ZlKG1lZGlhU2Ft
cGxlKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCA0ZGE2
N2YyYjFmNzY2MTJjZWFjZjM1Y2QyODYyNjc5ZjYwMjQxYjkzLi44ODM3M2M4ZWNiNjkyZWY2Njgy
Y2EzZTMxMzk1NmE5NzkxY2EyMWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTM4MTUsOCArMzgxNSw4
IEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmZldGNoQ2xv
bmVMYXllcnMoR3JhcGhpY3NMYXllciogcmVwCiAKICAgICAgICAgZm9yIChhdXRvKiBjaGlsZExh
eWVyIDogY2hpbGRMYXllcnMpIHsKICAgICAgICAgICAgIEdyYXBoaWNzTGF5ZXJDQSYgY2hpbGRM
YXllckNBID0gZG93bmNhc3Q8R3JhcGhpY3NMYXllckNBPigqY2hpbGRMYXllcik7Ci0gICAgICAg
ICAgICBpZiAoUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gcGxhdGZvcm1MYXllciA9IGNoaWxkTGF5
ZXJDQS5mZXRjaENsb25lTGF5ZXJzKHJlcGxpY2FSb290LCByZXBsaWNhU3RhdGUsIEludGVybWVk
aWF0ZUNsb25lTGV2ZWwpKQotICAgICAgICAgICAgICAgIGNsb25hbFN1YmxheWVycy5hcHBlbmQo
cGxhdGZvcm1MYXllci5yZWxlYXNlKCkpOworICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1M
YXllciA9IGNoaWxkTGF5ZXJDQS5mZXRjaENsb25lTGF5ZXJzKHJlcGxpY2FSb290LCByZXBsaWNh
U3RhdGUsIEludGVybWVkaWF0ZUNsb25lTGV2ZWwpKQorICAgICAgICAgICAgICAgIGNsb25hbFN1
YmxheWVycy5hcHBlbmQoV1RGTW92ZShwbGF0Zm9ybUxheWVyKSk7CiAgICAgICAgIH0KIAogICAg
ICAgICByZXBsaWNhU3RhdGUucG9wKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcAppbmRleCA0YzlkNzE1MmQ5ODIx
NDBkZWRjZDUwNGNmZWE0MGM4NDU4NGI4NzBhLi4wMGEyNTczYWZmMTJlZjg5ZGIyYTUxMDgxM2Jm
ZTBjOWUzYWQxMTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAKQEAgLTEzNSwxMyArMTM1LDEzIEBAIFBhc3NS
ZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBQbGF0Zm9ybUNBTGF5ZXI6OmNyZWF0ZUNvbXBhdGlibGVM
YXllck9yVGFrZUZyb21Qb29sCiAKICAgICBpZiAoKGxheWVyID0gbGF5ZXJQb29sKCkudGFrZUxh
eWVyV2l0aFNpemUoc2l6ZSkpKSB7CiAgICAgICAgIGxheWVyLT5zZXRPd25lcihjbGllbnQpOwot
ICAgICAgICByZXR1cm4gbGF5ZXIucmVsZWFzZSgpOworICAgICAgICByZXR1cm4gV1RGTW92ZShs
YXllcik7CiAgICAgfQogCiAgICAgbGF5ZXIgPSBjcmVhdGVDb21wYXRpYmxlTGF5ZXIobGF5ZXJU
eXBlLCBjbGllbnQpOwogICAgIGxheWVyLT5zZXRCb3VuZHMoRmxvYXRSZWN0KEZsb2F0UG9pbnQo
KSwgc2l6ZSkpOwogICAgIAotICAgIHJldHVybiBsYXllci5yZWxlYXNlKCk7CisgICAgcmV0dXJu
IFdURk1vdmUobGF5ZXIpOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6bW92ZVRvTGF5ZXJQ
b29sKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVyRGF0YUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyRGF0YUNHLmNwcAppbmRleCBmYTYzNGM4NmM0MzQ1YmUxYmU3ZWI1NjU3MDhk
NjQ3YWEwYTlkYzI0Li41ZjUwZjljYzAxMjVjY2ZhYzZiZjYyN2Y1M2Q2MGM1ZDEyYTUxZTFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckRhdGFDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJEYXRhQ0cuY3BwCkBAIC05Niw3ICs5Niw3IEBAIFJlZlB0cjxVaW50OENsYW1wZWRB
cnJheT4gSW1hZ2VCdWZmZXJEYXRhOjpnZXREYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0
IEluCiAgICAgaWYgKGFyZWEuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gcmVzdWx0ID0gVWludDhDbGFtcGVk
QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoYXJlYS51bnNhZmVHZXQoKSk7CisgICAgYXV0byBy
ZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZChhcmVhLnVuc2Fm
ZUdldCgpKTsKICAgICB1bnNpZ25lZCBjaGFyKiByZXN1bHREYXRhID0gcmVzdWx0LT5kYXRhKCk7
CiAgICAgaWYgKCFyZXN1bHREYXRhKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiSW1hZ2VCdWZm
ZXJEYXRhOiBVbmFibGUgdG8gY3JlYXRlIGJ1ZmZlci4gUmVxdWVzdGVkIHNpemUgd2FzICVkIHgg
JWQgPSAldVxuIiwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpLCBhcmVhLnVuc2FmZUdldCgp
KTsKQEAgLTEzOSw3ICsxMzksNyBAQCBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVm
ZmVyRGF0YTo6Z2V0RGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbgogICAgIENoZWNr
ZWQ8aW50PiBoZWlnaHQgPSBlbmR5IC0gb3JpZ2lueTsKICAgICAKICAgICBpZiAod2lkdGgudW5z
YWZlR2V0KCkgPD0gMCB8fCBoZWlnaHQudW5zYWZlR2V0KCkgPD0gMCkKLSAgICAgICAgcmV0dXJu
IHJlc3VsdC5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgCiAgICAgdW5z
aWduZWQgZGVzdEJ5dGVzUGVyUm93ID0gNCAqIHJlY3Qud2lkdGgoKTsKICAgICB1bnNpZ25lZCBj
aGFyKiBkZXN0Um93cyA9IHJlc3VsdERhdGEgKyBkZXN0eSAqIGRlc3RCeXRlc1BlclJvdyArIGRl
c3R4ICogNDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAppbmRleCBjYmU1MTI4ZjllNjI2NzJiYTFjZmUyN2Iw
NWNlMzI2MzA0ZGEyNjdkLi41ZTQ3YTQwNjhkODJjM2M1MGU4MzU5ZGUwNjc2ZDM4ODdlMDhmMDkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlckVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBAIC0yMzcsOSArMjM3LDkgQEAgUGFzc1JlZlB0cjxVaW50
OENsYW1wZWRBcnJheT4gRmlsdGVyRWZmZWN0Ojphc1VubXVsdGlwbGllZEltYWdlKGNvbnN0IElu
dFJlY3QmIHIKICAgICBJbnRTaXplIHNjYWxlZFNpemUocmVjdC5zaXplKCkpOwogICAgIEFTU0VS
VCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHNjYWxlZFNpemUpKTsKICAgICBzY2Fs
ZWRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRlclNjYWxlKCkpOwotICAgIFJlZlB0cjxVaW50OENs
YW1wZWRBcnJheT4gaW1hZ2VEYXRhID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlh
bGl6ZWQoc2NhbGVkU2l6ZS53aWR0aCgpICogc2NhbGVkU2l6ZS5oZWlnaHQoKSAqIDQpOworICAg
IGF1dG8gaW1hZ2VEYXRhID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQo
c2NhbGVkU2l6ZS53aWR0aCgpICogc2NhbGVkU2l6ZS5oZWlnaHQoKSAqIDQpOwogICAgIGNvcHlV
bm11bHRpcGxpZWRJbWFnZShpbWFnZURhdGEuZ2V0KCksIHJlY3QpOwotICAgIHJldHVybiBpbWFn
ZURhdGEucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKGltYWdlRGF0YSk7CiB9CiAKIFBh
c3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6YXNQcmVtdWx0aXBsaWVk
SW1hZ2UoY29uc3QgSW50UmVjdCYgcmVjdCkKQEAgLTI0Nyw5ICsyNDcsOSBAQCBQYXNzUmVmUHRy
PFVpbnQ4Q2xhbXBlZEFycmF5PiBGaWx0ZXJFZmZlY3Q6OmFzUHJlbXVsdGlwbGllZEltYWdlKGNv
bnN0IEludFJlY3QmCiAgICAgSW50U2l6ZSBzY2FsZWRTaXplKHJlY3Quc2l6ZSgpKTsKICAgICBB
U1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhzY2FsZWRTaXplKSk7CiAgICAg
c2NhbGVkU2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKLSAgICBSZWZQdHI8VWlu
dDhDbGFtcGVkQXJyYXk+IGltYWdlRGF0YSA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmlu
aXRpYWxpemVkKHNjYWxlZFNpemUud2lkdGgoKSAqIHNjYWxlZFNpemUuaGVpZ2h0KCkgKiA0KTsK
KyAgICBhdXRvIGltYWdlRGF0YSA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxp
emVkKHNjYWxlZFNpemUud2lkdGgoKSAqIHNjYWxlZFNpemUuaGVpZ2h0KCkgKiA0KTsKICAgICBj
b3B5UHJlbXVsdGlwbGllZEltYWdlKGltYWdlRGF0YS5nZXQoKSwgcmVjdCk7Ci0gICAgcmV0dXJu
IGltYWdlRGF0YS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1vdmUoaW1hZ2VEYXRhKTsKIH0K
IAogaW5saW5lIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5SW1hZ2VCeXRlcyhVaW50OENsYW1wZWRB
cnJheSogc291cmNlLCBVaW50OENsYW1wZWRBcnJheSogZGVzdGluYXRpb24sIGNvbnN0IEludFJl
Y3QmIHJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvSW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1h
Z2VNYWMubW0KaW5kZXggZmEwMTFhYTg4MTYzMDMwMDA5NDQ5OGViYzBmZmNhOWZiOWMzMDM0Yi4u
MDFlYjZkZDMwMDQzYTIyNTI5MTc2ZmQ5MTIxMTdkYzU3NzZjMTdiYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQpAQCAtNjgsOSArNjgs
OSBAQCBQYXNzUmVmUHRyPEltYWdlPiBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3Qg
Y2hhciAqbmFtZSkKICAgICBOU1N0cmluZyAqaW1hZ2VQYXRoID0gW2J1bmRsZSBwYXRoRm9yUmVz
b3VyY2U6W05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOm5hbWVdIG9mVHlwZTpAInBuZyJd
OwogICAgIE5TRGF0YSAqbmFtZWRJbWFnZURhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNP
ZkZpbGU6aW1hZ2VQYXRoXTsKICAgICBpZiAobmFtZWRJbWFnZURhdGEpIHsKLSAgICAgICAgUmVm
UHRyPEltYWdlPiBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKKyAgICAgICAgYXV0byBp
bWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAgICAgICAgaW1hZ2UtPnNldERhdGEoU2hh
cmVkQnVmZmVyOjp3cmFwTlNEYXRhKG5hbWVkSW1hZ2VEYXRhKSwgdHJ1ZSk7Ci0gICAgICAgIHJl
dHVybiBpbWFnZS5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBXVEZNb3ZlKGltYWdlKTsKICAg
ICB9CiAKICAgICAvLyBXZSBoYXZlIHJlcG9ydHMgaW5kaWNhdGluZyByZXNvdXJjZSBsb2FkcyBh
cmUgZmFpbGluZywgYnV0IHdlIGRvbid0IHlldCBrbm93IHRoZSByb290IGNhdXNlKHMpLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKaW5kZXggMDQ4OTUz
NmQzYmQwY2JiZjdiMmJkYjA3YTZiYzJkYjg1Yjk0OTllNy4uYTQ4NTkyYTgxMGFmMDc0OWY0ZmU5
ODEwMWY3ZDFiMTZhYzZhOTI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RP
cGVuR0xDb21tb24uY3BwCkBAIC0xMzIsOCArMTMyLDEwIEBAIHN0YXRpYyB1aW50NjRfdCBuYW1l
SGFzaEZvclNoYWRlcihjb25zdCBjaGFyKiBuYW1lLCBzaXplX3QgbGVuZ3RoKQogCiBQYXNzUmVm
UHRyPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlRm9yQ3VycmVu
dEdMQ29udGV4dCgpCiB7Ci0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0g
YWRvcHRSZWYobmV3IEdyYXBoaWNzQ29udGV4dDNEKEF0dHJpYnV0ZXMoKSwgMCwgR3JhcGhpY3ND
b250ZXh0M0Q6OlJlbmRlclRvQ3VycmVudEdMQ29udGV4dCkpOwotICAgIHJldHVybiBjb250ZXh0
LT5tX3ByaXZhdGUgPyBjb250ZXh0LnJlbGVhc2UoKSA6IDA7CisgICAgYXV0byBjb250ZXh0ID0g
YWRvcHRSZWYoKm5ldyBHcmFwaGljc0NvbnRleHQzRChBdHRyaWJ1dGVzKCksIDAsIEdyYXBoaWNz
Q29udGV4dDNEOjpSZW5kZXJUb0N1cnJlbnRHTENvbnRleHQpKTsKKyAgICBpZiAoIWNvbnRleHQt
Pm1fcHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIFdURk1vdmUo
Y29udGV4dCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZhbGlkYXRlRGVwdGhTdGVu
Y2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikKQEAgLTIwNSw3ICsy
MDcsNyBAQCBQYXNzUmVmUHRyPEltYWdlRGF0YT4gR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50UmVu
ZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkKICAgICBpZiAobV9hdHRycy5wcmVtdWx0aXBsaWVk
QWxwaGEpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPEltYWdlRGF0YT4gaW1hZ2VE
YXRhID0gSW1hZ2VEYXRhOjpjcmVhdGUoSW50U2l6ZShtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50
SGVpZ2h0KSk7CisgICAgYXV0byBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShJbnRTaXpl
KG1fY3VycmVudFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQpKTsKICAgICB1bnNpZ25lZCBjaGFyKiBw
aXhlbHMgPSBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpOwogICAgIGludCB0b3RhbEJ5dGVzID0g
NCAqIG1fY3VycmVudFdpZHRoICogbV9jdXJyZW50SGVpZ2h0OwogCkBAIC0yMTUsNyArMjE3LDcg
QEAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFJlbmRlcmlu
Z1Jlc3VsdHNUb0ltYWdlRGF0YSgpCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0b3RhbEJ5dGVz
OyBpICs9IDQpCiAgICAgICAgIHN0ZDo6c3dhcChwaXhlbHNbaV0sIHBpeGVsc1tpICsgMl0pOwog
Ci0gICAgcmV0dXJuIGltYWdlRGF0YS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1vdmUoaW1h
Z2VEYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cHJlcGFyZVRleHR1cmUoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwCmluZGV4IGRlYTdh
N2MyOTc0ZTNkOGE5ZTBkYjgxNzdkOTZiOWU0ZTJmMThjMGQuLjlhMWIyZDY5NmM3Y2YwOWI5NTdm
NGNmMjk4NGEyMGUzODFjODY3MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlck1hYy5jcHAKQEAgLTExNiwxMCArMTE2LDEwIEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlck1hYzo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNy
ZWF0CiAgICAgICAgIH0KICAgICAgICAgLy8gRklYTUU6IENvbnNpZGVyIHRoZSBjb25zdHJhaW50
cyB3aGVuIGNob29zaW5nIGFtb25nIG11bHRpcGxlIGRldmljZXMuIEZvciBub3cganVzdCBzZWxl
Y3QgdGhlIGZpcnN0IGF2YWlsYWJsZQogICAgICAgICAvLyBkZXZpY2Ugb2YgdGhlIGFwcHJvcHJp
YXRlIHR5cGUuCi0gICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBhdWRpb1NvdXJj
ZSA9IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpLmJlc3RTb3VyY2VzRm9yVHlw
ZUFuZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBhdWRpb0NvbnN0cmFp
bnRzLmdldCgpKS5hdCgwKTsKKyAgICAgICAgYXV0byBhdWRpb1NvdXJjZSA9IEFWQ2FwdHVyZURl
dmljZU1hbmFnZXI6OnNpbmdsZXRvbigpLmJlc3RTb3VyY2VzRm9yVHlwZUFuZENvbnN0cmFpbnRz
KFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBhdWRpb0NvbnN0cmFpbnRzLmdldCgpKS5hdCgw
KTsKICAgICAgICAgQVNTRVJUKGF1ZGlvU291cmNlKTsKICAgICAgICAgCi0gICAgICAgIGF1ZGlv
U291cmNlcy5hcHBlbmQoYXVkaW9Tb3VyY2UucmVsZWFzZSgpKTsKKyAgICAgICAgYXVkaW9Tb3Vy
Y2VzLmFwcGVuZChXVEZNb3ZlKGF1ZGlvU291cmNlKSk7CiAgICAgfQogICAgIAogICAgIGlmICh2
aWRlb0NvbnN0cmFpbnRzKSB7CkBAIC0xMzEsMTAgKzEzMSwxMCBAQCB2b2lkIFJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXJNYWM6OmNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJl
YW1DcmVhdAogICAgICAgICB9CiAgICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciB0aGUgY29uc3Ry
YWludHMgd2hlbiBjaG9vc2luZyBhbW9uZyBtdWx0aXBsZSBkZXZpY2VzLiBGb3Igbm93IGp1c3Qg
c2VsZWN0IHRoZSBmaXJzdCBhdmFpbGFibGUKICAgICAgICAgLy8gZGV2aWNlIG9mIHRoZSBhcHBy
b3ByaWF0ZSB0eXBlLgotICAgICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gdmlkZW9T
b3VyY2UgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5iZXN0U291cmNlc0Zv
clR5cGVBbmRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywgdmlkZW9Db25z
dHJhaW50cy5nZXQoKSkuYXQoMCk7CisgICAgICAgIGF1dG8gdmlkZW9Tb3VyY2UgPSBBVkNhcHR1
cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5iZXN0U291cmNlc0ZvclR5cGVBbmRDb25zdHJh
aW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywgdmlkZW9Db25zdHJhaW50cy5nZXQoKSku
YXQoMCk7CiAgICAgICAgIEFTU0VSVCh2aWRlb1NvdXJjZSk7CiAgICAgICAgIAotICAgICAgICB2
aWRlb1NvdXJjZXMuYXBwZW5kKHZpZGVvU291cmNlLnJlbGVhc2UoKSk7CisgICAgICAgIHZpZGVv
U291cmNlcy5hcHBlbmQoV1RGTW92ZSh2aWRlb1NvdXJjZSkpOwogICAgIH0KICAgICAKICAgICBj
bGllbnQtPmRpZENyZWF0ZVN0cmVhbShNZWRpYVN0cmVhbVByaXZhdGU6OmNyZWF0ZShhdWRpb1Nv
dXJjZXMsIHZpZGVvU291cmNlcykpOwpAQCAtMTQ3LDE0ICsxNDcsMTQgQEAgdm9pZCBSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyTWFjOjpjcmVhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbUNyZWF0
aW9uQ2xpZW50KgogICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+IHZpZGVv
U291cmNlczsKIAogICAgIGlmICghYXVkaW9EZXZpY2VJRC5pc0VtcHR5KCkpIHsKLSAgICAgICAg
UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IGF1ZGlvU291cmNlID0gQVZDYXB0dXJlRGV2aWNl
TWFuYWdlcjo6c2luZ2xldG9uKCkuc291cmNlV2l0aFVJRChhdWRpb0RldmljZUlELCBSZWFsdGlt
ZU1lZGlhU291cmNlOjpBdWRpbywgbnVsbHB0cik7CisgICAgICAgIGF1dG8gYXVkaW9Tb3VyY2Ug
PSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5zb3VyY2VXaXRoVUlEKGF1ZGlv
RGV2aWNlSUQsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBudWxscHRyKTsKICAgICAgICAg
aWYgKGF1ZGlvU291cmNlKQotICAgICAgICAgICAgYXVkaW9Tb3VyY2VzLmFwcGVuZChhdWRpb1Nv
dXJjZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgYXVkaW9Tb3VyY2VzLmFwcGVuZChXVEZNb3Zl
KGF1ZGlvU291cmNlKSk7CiAgICAgfQogICAgIGlmICghdmlkZW9EZXZpY2VJRC5pc0VtcHR5KCkp
IHsKLSAgICAgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IHZpZGVvU291cmNlID0gQVZD
YXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuc291cmNlV2l0aFVJRCh2aWRlb0Rldmlj
ZUlELCBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywgbnVsbHB0cik7CisgICAgICAgIGF1dG8g
dmlkZW9Tb3VyY2UgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5zb3VyY2VX
aXRoVUlEKHZpZGVvRGV2aWNlSUQsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvLCBudWxscHRy
KTsKICAgICAgICAgaWYgKHZpZGVvU291cmNlKQotICAgICAgICAgICAgdmlkZW9Tb3VyY2VzLmFw
cGVuZCh2aWRlb1NvdXJjZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgdmlkZW9Tb3VyY2VzLmFw
cGVuZChXVEZNb3ZlKHZpZGVvU291cmNlKSk7CiAgICAgfQogCiAgICAgY2xpZW50LT5kaWRDcmVh
dGVTdHJlYW0oTWVkaWFTdHJlYW1Qcml2YXRlOjpjcmVhdGUoYXVkaW9Tb3VyY2VzLCB2aWRlb1Nv
dXJjZXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKaW5kZXggYWFlODA4MzkxMTVmZjli
YWZiOTQ4YzgyNTZmMzgzNGI0OGI4NmVlZS4uOGNjNmYwZjMzNTJjMjMzMzhiNWUyOTA1MTJjZWU0
ZWZlZmM0YWI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKQEAgLTgxLDggKzgxLDgg
QEAgdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6dmFsaWRhdGVSZXF1ZXN0Q29u
c3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBhdWRpb1NvdXJjZSA9IE1v
Y2tSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGUoKTsKLSAgICAgICAgYXVkaW9Tb3VyY2VzLmFw
cGVuZChhdWRpb1NvdXJjZS5yZWxlYXNlKCkpOworICAgICAgICBhdXRvIGF1ZGlvU291cmNlID0g
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZSgpOworICAgICAgICBhdWRpb1NvdXJjZXMu
YXBwZW5kKFdURk1vdmUoYXVkaW9Tb3VyY2UpKTsKICAgICB9CiAKICAgICBpZiAodmlkZW9Db25z
dHJhaW50cykgewpAQCAtOTIsOCArOTIsOCBAQCB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFJlYWx0aW1lTWVk
aWFTb3VyY2U+IHZpZGVvU291cmNlID0gTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmNyZWF0ZSgp
OwotICAgICAgICB2aWRlb1NvdXJjZXMuYXBwZW5kKHZpZGVvU291cmNlLnJlbGVhc2UoKSk7Cisg
ICAgICAgIGF1dG8gdmlkZW9Tb3VyY2UgPSBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRl
KCk7CisgICAgICAgIHZpZGVvU291cmNlcy5hcHBlbmQoV1RGTW92ZSh2aWRlb1NvdXJjZSkpOwog
ICAgIH0KIAogICAgIGNsaWVudC0+Y29uc3RyYWludHNWYWxpZGF0ZWQoYXVkaW9Tb3VyY2VzLCB2
aWRlb1NvdXJjZXMpOwpAQCAtMTE1LDggKzExNSw4IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXI6OmNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVh
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8UmVhbHRp
bWVNZWRpYVNvdXJjZT4gYXVkaW9Tb3VyY2UgPSBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6Y3Jl
YXRlKCk7Ci0gICAgICAgIGF1ZGlvU291cmNlcy5hcHBlbmQoYXVkaW9Tb3VyY2UucmVsZWFzZSgp
KTsKKyAgICAgICAgYXV0byBhdWRpb1NvdXJjZSA9IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpj
cmVhdGUoKTsKKyAgICAgICAgYXVkaW9Tb3VyY2VzLmFwcGVuZChXVEZNb3ZlKGF1ZGlvU291cmNl
KSk7CiAgICAgfQogCiAgICAgaWYgKHZpZGVvQ29uc3RyYWludHMpIHsKQEAgLTEyNiw4ICsxMjYs
OCBAQCB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpjcmVhdGVNZWRpYVN0cmVh
bShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IHZpZGVvU291cmNlID0g
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmNyZWF0ZSgpOwotICAgICAgICB2aWRlb1NvdXJjZXMu
YXBwZW5kKHZpZGVvU291cmNlLnJlbGVhc2UoKSk7CisgICAgICAgIGF1dG8gdmlkZW9Tb3VyY2Ug
PSBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRlKCk7CisgICAgICAgIHZpZGVvU291cmNl
cy5hcHBlbmQoV1RGTW92ZSh2aWRlb1NvdXJjZSkpOwogICAgIH0KICAgICAKICAgICBjbGllbnQt
PmRpZENyZWF0ZVN0cmVhbShNZWRpYVN0cmVhbVByaXZhdGU6OmNyZWF0ZShhdWRpb1NvdXJjZXMs
IHZpZGVvU291cmNlcykpOwpAQCAtMTQwLDEyICsxNDAsMTIgQEAgdm9pZCBNb2NrUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlcjo6Y3JlYXRlTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1DcmVhdGlvbkNs
aWVudCoKICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiB2aWRlb1NvdXJj
ZXM7CiAKICAgICBpZiAoIWF1ZGlvRGV2aWNlSUQuaXNFbXB0eSgpICYmIGF1ZGlvRGV2aWNlSUQg
PT0gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6Om1vY2tBdWRpb1NvdXJjZVBlcnNpc3RlbnRJRCgp
KSB7Ci0gICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBhdWRpb1NvdXJjZSA9IE1v
Y2tSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGUoKTsKLSAgICAgICAgYXVkaW9Tb3VyY2VzLmFw
cGVuZChhdWRpb1NvdXJjZS5yZWxlYXNlKCkpOworICAgICAgICBhdXRvIGF1ZGlvU291cmNlID0g
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZSgpOworICAgICAgICBhdWRpb1NvdXJjZXMu
YXBwZW5kKFdURk1vdmUoYXVkaW9Tb3VyY2UpKTsKICAgICB9CiAgICAgaWYgKCF2aWRlb0Rldmlj
ZUlELmlzRW1wdHkoKSAmJiB2aWRlb0RldmljZUlEID09IE1vY2tSZWFsdGltZU1lZGlhU291cmNl
Ojptb2NrVmlkZW9Tb3VyY2VQZXJzaXN0ZW50SUQoKSkgewotICAgICAgICBSZWZQdHI8UmVhbHRp
bWVNZWRpYVNvdXJjZT4gdmlkZW9Tb3VyY2UgPSBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3Jl
YXRlKCk7Ci0gICAgICAgIHZpZGVvU291cmNlcy5hcHBlbmQodmlkZW9Tb3VyY2UucmVsZWFzZSgp
KTsKKyAgICAgICAgYXV0byB2aWRlb1NvdXJjZSA9IE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpj
cmVhdGUoKTsKKyAgICAgICAgdmlkZW9Tb3VyY2VzLmFwcGVuZChXVEZNb3ZlKHZpZGVvU291cmNl
KSk7CiAgICAgfQogCiAgICAgY2xpZW50LT5kaWRDcmVhdGVTdHJlYW0oTWVkaWFTdHJlYW1Qcml2
YXRlOjpjcmVhdGUoYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCmluZGV4IDcy
MGVmYzg3MWJmZDFlNGI0NTczNTA3ODdlNzNmODM2MzdiYTkxNTMuLjY4MDYwMzU0ZTdlNTBlYmQ4
NjdiMWQwODA5ZDNkMjdjM2U1MTRiYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIHZv
aWQgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBWZWN0
b3I8QmxvYlBhcnQ+IGJsb2JQYXJ0CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBy
ZWdpc3RlckJsb2JSZXNvdXJjZUhhbmRsZUNvbnN0cnVjdG9yKCk7CiAKLSAgICBSZWZQdHI8Qmxv
YkRhdGE+IGJsb2JEYXRhID0gQmxvYkRhdGE6OmNyZWF0ZShjb250ZW50VHlwZSk7CisgICAgYXV0
byBibG9iRGF0YSA9IEJsb2JEYXRhOjpjcmVhdGUoY29udGVudFR5cGUpOwogCiAgICAgLy8gVGhl
IGJsb2IgZGF0YSBpcyBzdG9yZWQgaW4gdGhlICJjYW5vbmljYWwiIHdheS4gVGhhdCBpcywgaXQg
b25seSBjb250YWlucyBhIGxpc3Qgb2YgRGF0YSBhbmQgRmlsZSBpdGVtcy4KICAgICAvLyAxKSBU
aGUgRGF0YSBpdGVtIGlzIGRlbm90ZWQgYnkgdGhlIHJhdyBkYXRhIGFuZCB0aGUgcmFuZ2UuCkBA
IC0xNTEsNyArMTUxLDcgQEAgdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkwo
Y29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4gYmxvYlBhcnQKICAgICAgICAgfQogICAg
IH0KIAotICAgIG1fYmxvYnMuc2V0KHVybC5zdHJpbmcoKSwgYmxvYkRhdGEucmVsZWFzZSgpKTsK
KyAgICBtX2Jsb2JzLnNldCh1cmwuc3RyaW5nKCksIFdURk1vdmUoYmxvYkRhdGEpKTsKIH0KIAog
dm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFVSTCYgc3JjVVJMKQpAQCAtMjA4LDExICsyMDgsMTEgQEAgdm9pZCBCbG9iUmVnaXN0cnlJ
bXBsOjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBz
cmNVUkwKICAgICAgICAgZW5kID0gb3JpZ2luYWxTaXplOwogCiAgICAgdW5zaWduZWQgbG9uZyBs
b25nIG5ld0xlbmd0aCA9IGVuZCAtIHN0YXJ0OwotICAgIFJlZlB0cjxCbG9iRGF0YT4gbmV3RGF0
YSA9IEJsb2JEYXRhOjpjcmVhdGUob3JpZ2luYWxEYXRhLT5jb250ZW50VHlwZSgpKTsKKyAgICBh
dXRvIG5ld0RhdGEgPSBCbG9iRGF0YTo6Y3JlYXRlKG9yaWdpbmFsRGF0YS0+Y29udGVudFR5cGUo
KSk7CiAKLSAgICBhcHBlbmRTdG9yYWdlSXRlbXMobmV3RGF0YS5nZXQoKSwgb3JpZ2luYWxEYXRh
LT5pdGVtcygpLCBzdGFydCwgbmV3TGVuZ3RoKTsKKyAgICBhcHBlbmRTdG9yYWdlSXRlbXMobmV3
RGF0YS5wdHIoKSwgb3JpZ2luYWxEYXRhLT5pdGVtcygpLCBzdGFydCwgbmV3TGVuZ3RoKTsKIAot
ICAgIG1fYmxvYnMuc2V0KHVybC5zdHJpbmcoKSwgbmV3RGF0YS5yZWxlYXNlKCkpOworICAgIG1f
YmxvYnMuc2V0KHVybC5zdHJpbmcoKSwgV1RGTW92ZShuZXdEYXRhKSk7CiB9CiAKIHZvaWQgQmxv
YlJlZ2lzdHJ5SW1wbDo6dW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCmluZGV4
IGJjZTZiYTk3MzFiZjE5NDAxMTc2Y2NiZjZiZGQ3MGZkN2VlZjUyMmYuLmI2YzY3YjdjZGUyNmE3
NTNjOGFiMmUxY2MyMDE0OGJjYzc4ZmIwZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCkBAIC05MywxMyArOTMsMTMgQEAgUmVm
UHRyPFJlc291cmNlSGFuZGxlPiBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlKE5ldHdvcmtpbmdDb250
ZXh0KiBjb250ZXh0LCBjb25zdAogICAgIGlmIChwcm90b2NvbE1hcEl0ZW0gIT0gYnVpbHRpblJl
c291cmNlSGFuZGxlQ29uc3RydWN0b3JNYXAoKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHByb3Rv
Y29sTWFwSXRlbS0+dmFsdWUocmVxdWVzdCwgY2xpZW50KTsKIAotICAgIFJlZlB0cjxSZXNvdXJj
ZUhhbmRsZT4gbmV3SGFuZGxlKGFkb3B0UmVmKG5ldyBSZXNvdXJjZUhhbmRsZShjb250ZXh0LCBy
ZXF1ZXN0LCBjbGllbnQsIGRlZmVyc0xvYWRpbmcsIHNob3VsZENvbnRlbnRTbmlmZikpKTsKKyAg
ICBhdXRvIG5ld0hhbmRsZSA9IGFkb3B0UmVmKCpuZXcgUmVzb3VyY2VIYW5kbGUoY29udGV4dCwg
cmVxdWVzdCwgY2xpZW50LCBkZWZlcnNMb2FkaW5nLCBzaG91bGRDb250ZW50U25pZmYpKTsKIAog
ICAgIGlmIChuZXdIYW5kbGUtPmQtPm1fc2NoZWR1bGVkRmFpbHVyZVR5cGUgIT0gTm9GYWlsdXJl
KQotICAgICAgICByZXR1cm4gbmV3SGFuZGxlLnJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJuIFdU
Rk1vdmUobmV3SGFuZGxlKTsKIAogICAgIGlmIChuZXdIYW5kbGUtPnN0YXJ0KCkpCi0gICAgICAg
IHJldHVybiBuZXdIYW5kbGUucmVsZWFzZSgpOworICAgICAgICByZXR1cm4gV1RGTW92ZShuZXdI
YW5kbGUpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAppbmRl
eCA0ODYxMzNjYzg5Yzk5ZDZiMjQwNjUzMzFhNzJjNWQ5YTRkMDhkNmQ1Li40MGViZjRkNjkwNjc1
MjU1YWEzNjk0OTZhMzJmNDljYmU3NTkzNjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKQEAgLTIw
MCw3ICsyMDAsNyBAQCBzdGF0aWMgdm9pZCogZm9ybUNyZWF0ZShDRlJlYWRTdHJlYW1SZWYgc3Ry
ZWFtLCB2b2lkKiBjb250ZXh0KQogICAgIEZvcm1DcmVhdGlvbkNvbnRleHQqIGZvcm1Db250ZXh0
ID0gc3RhdGljX2Nhc3Q8Rm9ybUNyZWF0aW9uQ29udGV4dCo+KGNvbnRleHQpOwogCiAgICAgRm9y
bVN0cmVhbUZpZWxkcyogbmV3SW5mbyA9IG5ldyBGb3JtU3RyZWFtRmllbGRzOwotICAgIG5ld0lu
Zm8tPmZvcm1EYXRhID0gZm9ybUNvbnRleHQtPmZvcm1EYXRhLnJlbGVhc2UoKTsKKyAgICBuZXdJ
bmZvLT5mb3JtRGF0YSA9IFdURk1vdmUoZm9ybUNvbnRleHQtPmZvcm1EYXRhKTsKICAgICBuZXdJ
bmZvLT5jdXJyZW50U3RyZWFtID0gMDsKICAgICBuZXdJbmZvLT5jdXJyZW50U3RyZWFtUmFuZ2VM
ZW5ndGggPSBCbG9iRGF0YUl0ZW06OnRvRW5kT2ZGaWxlOwogICAgIG5ld0luZm8tPmZvcm1TdHJl
YW0gPSBzdHJlYW07IC8vIERvbid0IHJldGFpbi4gVGhhdCB3b3VsZCBjcmVhdGUgYSByZWZlcmVu
Y2UgY3ljbGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaUNvbnRleHQuY3Bw
CmluZGV4IGU3ZTZlY2ZlY2VjMGFiYjhlMTJiY2M0ZWIyOGY2NGQ1ZmFhNDZmMzYuLjk3N2RiZmQ3
OTdkNTc4NTdmNDdlNDgxMTZiMTNkNDFjYWEzODg2ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvQmlkaUNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvQmlkaUNvbnRleHQuY3BwCkBAIC05Miw3ICs5Miw3IEBAIFBhc3NSZWZQdHI8
QmlkaUNvbnRleHQ+IEJpZGlDb250ZXh0Ojpjb3B5U3RhY2tSZW1vdmluZ1VuaWNvZGVFbWJlZGRp
bmdDb250ZXh0cygpCiAgICAgZm9yIChpbnQgaSA9IGNvbnRleHRzLnNpemUoKSAtIDE7IGkgPiAw
OyAtLWkpCiAgICAgICAgIHRvcENvbnRleHQgPSBjb3B5Q29udGV4dEFuZFJlYmFzZWxpbmVMZXZl
bChjb250ZXh0c1tpIC0gMV0sIHRvcENvbnRleHQuZ2V0KCkpOwogCi0gICAgcmV0dXJuIHRvcENv
bnRleHQucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKHRvcENvbnRleHQpOwogfQogCiBi
b29sIG9wZXJhdG9yPT0oY29uc3QgQmlkaUNvbnRleHQmIGMxLCBjb25zdCBCaWRpQ29udGV4dCYg
YzIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVu
ZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVy
LmNwcAppbmRleCBmNDdiM2JhNjE2MzdjYzI1NGVhYWYwOTNmMjc0MWNlNGExZDExYjliLi5iYTUx
MWNjYTZhOTgzYjBiMTE0YTEyZjk1YjQxNjJjOTU5MmFhZTY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKQEAgLTI4OCw3ICsyODgs
NyBAQCBib29sIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZChSZW5kZXJFbGVtZW50KiByZW5k
ZXJlciwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucwogICAgICAgICAgICAgICAgIGVmZmVjdC0+aW5w
dXRFZmZlY3RzKCkuYXBwZW5kKHByZXZpb3VzRWZmZWN0KTsKICAgICAgICAgICAgICAgICBtX2Vm
ZmVjdHMuYXBwZW5kKGVmZmVjdCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBwcmV2aW91
c0VmZmVjdCA9IGVmZmVjdC5yZWxlYXNlKCk7CisgICAgICAgICAgICBwcmV2aW91c0VmZmVjdCA9
IFdURk1vdmUoZWZmZWN0KTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggNmE2ZjExNjQ5OGQxODk1MzYyYTA3OGE4ZjliMDUx
NmQxZTMxMGZiMC4uOTI5MDE0Y2U5YmZkNjMyZjU2ZTE3ZGI0NDU2MDQ5M2ZhMzRjMWU1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0zMTE2LDcgKzMxMTYs
NyBAQCBQYXNzUmVmUHRyPFNjcm9sbGJhcj4gUmVuZGVyTGF5ZXI6OmNyZWF0ZVNjcm9sbGJhcihT
Y3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdAogICAgICAgICB9CiAgICAgfQogICAgIHJlbmRl
cmVyKCkudmlldygpLmZyYW1lVmlldygpLmFkZENoaWxkKHdpZGdldC5nZXQoKSk7Ci0gICAgcmV0
dXJuIHdpZGdldC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1vdmUod2lkZ2V0KTsKIH0KIAog
dm9pZCBSZW5kZXJMYXllcjo6ZGVzdHJveVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbiBv
cmllbnRhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApp
bmRleCAyMzdjNmVhMjcyNDQxZGNkZjAyZTA5OGY2OTNjOTYxYjgwMGUzMDBhLi41ZGFhNmY5NDM5
ZWMzYzI1NmVhNzA5MzQwZmU1YTYzODQ5Mjk5ZTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpc3RCb3guY3BwCkBAIC05MTEsNyArOTExLDcgQEAgUGFzc1JlZlB0cjxTY3Jv
bGxiYXI+IFJlbmRlckxpc3RCb3g6OmNyZWF0ZVNjcm9sbGJhcigpCiAgICAgICAgIH0KICAgICB9
CiAgICAgdmlldygpLmZyYW1lVmlldygpLmFkZENoaWxkKHdpZGdldC5nZXQoKSk7Ci0gICAgcmV0
dXJuIHdpZGdldC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1vdmUod2lkZ2V0KTsKIH0KIAog
dm9pZCBSZW5kZXJMaXN0Qm94OjpkZXN0cm95U2Nyb2xsYmFyKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCmluZGV4IDRkYjMzYTAwODFhMzA1MTU5NzhhNGRm
OTJhZWMxNzVhNGYwMTNkYTkuLmI4MDA5NDljZDc0NzAyZGZkMTE5NGM1MWI1NDZkZTkxYmNkMmYy
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcApAQCAt
NTc4LDcgKzU3OCw3IEBAIFBhc3NSZWZQdHI8U2Nyb2xsYmFyPiBSZW5kZXJNZW51TGlzdDo6Y3Jl
YXRlU2Nyb2xsYmFyKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlCiAgICAgICAgIHdpZGdldCA9
IFJlbmRlclNjcm9sbGJhcjo6Y3JlYXRlQ3VzdG9tU2Nyb2xsYmFyKHNjcm9sbGFibGVBcmVhLCBv
cmllbnRhdGlvbiwgJnNlbGVjdEVsZW1lbnQoKSk7CiAgICAgZWxzZQogICAgICAgICB3aWRnZXQg
PSBTY3JvbGxiYXI6OmNyZWF0ZU5hdGl2ZVNjcm9sbGJhcihzY3JvbGxhYmxlQXJlYSwgb3JpZW50
YXRpb24sIGNvbnRyb2xTaXplKTsKLSAgICByZXR1cm4gd2lkZ2V0LnJlbGVhc2UoKTsKKyAgICBy
ZXR1cm4gV1RGTW92ZSh3aWRnZXQpOwogfQogCiBpbnQgUmVuZGVyTWVudUxpc3Q6OmNsaWVudElu
c2V0TGVmdCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU2VhcmNoRmllbGQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJj
aEZpZWxkLmNwcAppbmRleCAzZjVkMDNkYWNmMzA5NzE5MDQwNmUzMGE4YmE4OWU2MDkwZWRmNjMy
Li5mNWM2MjU5YWMwZTlkZTljMGZhYjJkYzNhZTc3YjU0ZGE1ZWMzZDczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAKQEAgLTM1NCw3ICszNTQs
NyBAQCBQYXNzUmVmUHRyPFNjcm9sbGJhcj4gUmVuZGVyU2VhcmNoRmllbGQ6OmNyZWF0ZVNjcm9s
bGJhcihTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYQogICAgICAgICB3aWRnZXQgPSBSZW5kZXJTY3Jv
bGxiYXI6OmNyZWF0ZUN1c3RvbVNjcm9sbGJhcihzY3JvbGxhYmxlQXJlYSwgb3JpZW50YXRpb24s
ICZpbnB1dEVsZW1lbnQoKSk7CiAgICAgZWxzZQogICAgICAgICB3aWRnZXQgPSBTY3JvbGxiYXI6
OmNyZWF0ZU5hdGl2ZVNjcm9sbGJhcihzY3JvbGxhYmxlQXJlYSwgb3JpZW50YXRpb24sIGNvbnRy
b2xTaXplKTsKLSAgICByZXR1cm4gd2lkZ2V0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92
ZSh3aWRnZXQpOwogfQogCiBMYXlvdXRVbml0IFJlbmRlclNlYXJjaEZpZWxkOjpjb21wdXRlTG9n
aWNhbEhlaWdodExpbWl0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlcGxh
eS9SZXBsYXlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlDb250
cm9sbGVyLmNwcAppbmRleCA5MWEyOTUxNGE5NTg0MTIzNzNkNGQ3OWEyNDk2ZTEwMjBmODg5YTQy
Li5kMTA1MDFhMjZmNWUzZDYxMTBkNzA0MGZmOTdhMjQ5MDdiOWI3MjNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuY3BwCkBAIC0yODQsNyArMjg0LDcgQEAgdm9p
ZCBSZXBsYXlDb250cm9sbGVyOjp1bmxvYWRTZWdtZW50KGJvb2wgc3VwcHJlc3NOb3RpZmljYXRp
b25zKQogICAgIExPRyhXZWJSZXBsYXksICIlLTIwcyBDbGVhcmluZyBpbnB1dCBjdXJzb3JzIGZv
ciBwYWdlOiAlcFxuIiwgIlJlcGxheUNvbnRyb2xsZXIiLCAmbV9wYWdlKTsKIAogICAgIG1fYWN0
aXZlQ3Vyc29yID0gbnVsbHB0cjsKLSAgICBSZWZQdHI8UmVwbGF5U2Vzc2lvblNlZ21lbnQ+IHVu
bG9hZGVkU2VnbWVudCA9IG1fbG9hZGVkU2VnbWVudC5yZWxlYXNlKCk7CisgICAgYXV0byB1bmxv
YWRlZFNlZ21lbnQgPSBXVEZNb3ZlKG1fbG9hZGVkU2VnbWVudCk7CiAgICAgZm9yIChGcmFtZSog
ZnJhbWUgPSAmbV9wYWdlLm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgp
LnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGZyYW1lLT5zY3JpcHQoKS5nbG9iYWxPYmplY3Qo
bWFpblRocmVhZE5vcm1hbFdvcmxkKCkpLT5zZXRJbnB1dEN1cnNvcihtX2VtcHR5Q3Vyc29yLmNv
cHlSZWYoKSk7CiAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5zZXRJbnB1dEN1cnNvcihtX2Vt
cHR5Q3Vyc29yLmNvcHlSZWYoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCmluZGV4IDEyZmEwYmI3YzAxYTY1Mzk4YTQ0OTljYjE5
ZjlmYzJmNGU5NTQ3YTYuLjFhMjA3MjA4YjNiYmVjMzM3OWRmOTFjZjQxYjcwOTNkNDYyZDM4YjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQuY3BwCkBAIC0xNzksNyArMTc5LDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEaWZm
dXNlTGlnaHRpbmdFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXIKICAgICBp
ZiAoIWlucHV0MSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8TGlnaHRT
b3VyY2U+IGxpZ2h0U291cmNlID0gU1ZHRkVMaWdodEVsZW1lbnQ6OmZpbmRMaWdodFNvdXJjZSh0
aGlzKTsKKyAgICBhdXRvIGxpZ2h0U291cmNlID0gU1ZHRkVMaWdodEVsZW1lbnQ6OmZpbmRMaWdo
dFNvdXJjZSh0aGlzKTsKICAgICBpZiAoIWxpZ2h0U291cmNlKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIApAQCAtMTkwLDcgKzE5MCw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRGlm
ZnVzZUxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyCiAgICAg
Q29sb3IgY29sb3IgPSByZW5kZXJlci0+c3R5bGUoKS5zdmdTdHlsZSgpLmxpZ2h0aW5nQ29sb3Io
KTsKIAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFRGlmZnVzZUxpZ2h0aW5n
OjpjcmVhdGUoZmlsdGVyLCBjb2xvciwgc3VyZmFjZVNjYWxlKCksIGRpZmZ1c2VDb25zdGFudCgp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIGxpZ2h0
U291cmNlLnJlbGVhc2UoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsVW5pdExlbmd0aFgoKSwga2VybmVsVW5p
dExlbmd0aFkoKSwgV1RGTW92ZShsaWdodFNvdXJjZSkpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZl
Y3RzKCkuYXBwZW5kKGlucHV0MSk7CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAppbmRleCAx
OWY1ZDM4OTQ1Y2E5NjNlOWZlZmQ5OGFhNDQwMjlmMzdjNDk1YWFiLi42M2Y4NmUxZGJlYTIxMWNh
Y2JjYjdkYTQ0MjQ2MjA1ZDRhODU3NTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC0xOTAsNyArMTkwLDcgQEAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZH
RmlsdGVyQnVpbGRlciogZmlsdGUKICAgICBpZiAoIWlucHV0MSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBSZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNlID0gU1ZHRkVMaWdo
dEVsZW1lbnQ6OmZpbmRMaWdodFNvdXJjZSh0aGlzKTsKKyAgICBhdXRvIGxpZ2h0U291cmNlID0g
U1ZHRkVMaWdodEVsZW1lbnQ6OmZpbmRMaWdodFNvdXJjZSh0aGlzKTsKICAgICBpZiAoIWxpZ2h0
U291cmNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMjAxLDcgKzIwMSw3IEBAIFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKFNW
R0ZpbHRlckJ1aWxkZXIqIGZpbHRlCiAgICAgQ29sb3IgY29sb3IgPSByZW5kZXJlci0+c3R5bGUo
KS5zdmdTdHlsZSgpLmxpZ2h0aW5nQ29sb3IoKTsKIAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IGVmZmVjdCA9IEZFU3BlY3VsYXJMaWdodGluZzo6Y3JlYXRlKGZpbHRlciwgY29sb3IsIHN1cmZh
Y2VTY2FsZSgpLCBzcGVjdWxhckNvbnN0YW50KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzcGVjdWxhckV4cG9uZW50KCksIGtlcm5lbFVuaXRMZW5ndGhYKCks
IGtlcm5lbFVuaXRMZW5ndGhZKCksIGxpZ2h0U291cmNlLnJlbGVhc2UoKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjdWxhckV4cG9uZW50KCksIGtlcm5l
bFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIFdURk1vdmUobGlnaHRTb3VyY2Up
KTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwogICAgIHJldHVy
biBlZmZlY3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdMaXN0UHJvcGVydHkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQ
cm9wZXJ0eS5oCmluZGV4IDc3Nzg4ZTEwMjI0OGQ1MDI1MmM4MDE0Zjc3YTA2NWQxYmFkOTU5ZGIu
LjVkNDFlOTYwYjdlNDFiNzk4MWZiOTNkOThmNmY4MWE2ZTI1OGNhNGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eS5oCkBAIC0yMDMsNyArMjAz
LDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV93cmFwcGVycy0+YXQoaW5kZXgpID0gd3JhcHBl
cjsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiB3cmFwcGVyLnJlbGVhc2UoKTsKKyAgICAg
ICAgcmV0dXJuIFdURk1vdmUod3JhcHBlcik7CiAgICAgfQogCiAgICAgLy8gU1ZHTGlzdDo6aW5z
ZXJ0SXRlbUJlZm9yZSgpCkBAIC0yNTAsNyArMjUwLDcgQEAgcHVibGljOgogCiAgICAgICAgIC8v
IFNwZWM6IElmIG5ld0l0ZW0gaXMgYWxyZWFkeSBpbiBhIGxpc3QsIGl0IGlzIHJlbW92ZWQgZnJv
bSBpdHMgcHJldmlvdXMgbGlzdCBiZWZvcmUgaXQgaXMgaW5zZXJ0ZWQgaW50byB0aGlzIGxpc3Qu
CiAgICAgICAgIGlmICghcHJvY2Vzc0luY29taW5nTGlzdEl0ZW1XcmFwcGVyKG5ld0l0ZW0sICZp
bmRleCkpCi0gICAgICAgICAgICByZXR1cm4gbmV3SXRlbS5yZWxlYXNlKCk7CisgICAgICAgICAg
ICByZXR1cm4gV1RGTW92ZShuZXdJdGVtKTsKIAogICAgICAgICAvLyBTcGVjOiBJbnNlcnRzIGEg
bmV3IGl0ZW0gaW50byB0aGUgbGlzdCBhdCB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLiBUaGUgaW5k
ZXggb2YgdGhlIGl0ZW0gYmVmb3JlIHdoaWNoIHRoZSBuZXcgaXRlbSBpcyB0byBiZQogICAgICAg
ICAvLyBpbnNlcnRlZC4gVGhlIGZpcnN0IGl0ZW0gaXMgbnVtYmVyIDAuIElmIHRoZSBpbmRleCBp
cyBlcXVhbCB0byAwLCB0aGVuIHRoZSBuZXcgaXRlbSBpcyBpbnNlcnRlZCBhdCB0aGUgZnJvbnQg
b2YgdGhlIGxpc3QuCkBAIC0yNjAsNyArMjYwLDcgQEAgcHVibGljOgogICAgICAgICBtX3dyYXBw
ZXJzLT5pbnNlcnQoaW5kZXgsIG5ld0l0ZW0pOwogCiAgICAgICAgIGNvbW1pdENoYW5nZSgpOwot
ICAgICAgICByZXR1cm4gbmV3SXRlbTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUobmV3SXRlbSk7
CiAgICAgfQogCiAgICAgLy8gU1ZHTGlzdDo6cmVwbGFjZUl0ZW0oKQpAQCAtMzg1LDcgKzM4NSw3
IEBAIHB1YmxpYzoKICAgICAgICAgbV92YWx1ZXMtPnJlbW92ZShpbmRleCk7CiAKICAgICAgICAg
Y29tbWl0Q2hhbmdlKCk7Ci0gICAgICAgIHJldHVybiBvbGRJdGVtLnJlbGVhc2UoKTsKKyAgICAg
ICAgcmV0dXJuIFdURk1vdmUob2xkSXRlbSk7CiAgICAgfQogCiAgICAgLy8gU1ZHTGlzdDo6YXBw
ZW5kSXRlbSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVh
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKaW5kZXggZDY4
ODJkYjJjMTc3ZmRlMTcyN2YyMzEwZTI5MjBmZGJhZGZiN2Y0Ni4uZjZmNWE0ZGYxNDBlOGM3MjNi
ZjE4MzVmYTYxNTk2YTY3MDlmZTY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhy
ZWFkLmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgV29ya2VyVGhyZWFkOjp3b3JrZXJUaHJl
YWQoKQogCiAgICAgewogICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV90aHJlYWRDcmVhdGlvbk11
dGV4KTsKLSAgICAgICAgbV93b3JrZXJHbG9iYWxTY29wZSA9IGNyZWF0ZVdvcmtlckdsb2JhbFNj
b3BlKG1fc3RhcnR1cERhdGEtPm1fc2NyaXB0VVJMLCBtX3N0YXJ0dXBEYXRhLT5tX3VzZXJBZ2Vu
dCwgbV9zdGFydHVwRGF0YS0+bV9jb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMs
IG1fc3RhcnR1cERhdGEtPm1fc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9s
aWN5LCBtX3N0YXJ0dXBEYXRhLT5tX3RvcE9yaWdpbi5yZWxlYXNlKCkpOworICAgICAgICBtX3dv
cmtlckdsb2JhbFNjb3BlID0gY3JlYXRlV29ya2VyR2xvYmFsU2NvcGUobV9zdGFydHVwRGF0YS0+
bV9zY3JpcHRVUkwsIG1fc3RhcnR1cERhdGEtPm1fdXNlckFnZW50LCBtX3N0YXJ0dXBEYXRhLT5t
X2NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycywgbV9zdGFydHVwRGF0YS0+bV9z
aG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFdURk1vdmUobV9zdGFy
dHVwRGF0YS0+bV90b3BPcmlnaW4pKTsKIAogICAgICAgICBpZiAobV9ydW5Mb29wLnRlcm1pbmF0
ZWQoKSkgewogICAgICAgICAgICAgLy8gVGhlIHdvcmtlciB3YXMgdGVybWluYXRlZCBiZWZvcmUg
dGhlIHRocmVhZCBoYWQgYSBjaGFuY2UgdG8gcnVuLiBTaW5jZSB0aGUgY29udGV4dCBkaWRuJ3Qg
ZXhpc3QgeWV0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggZTVlYTc0
MDViY2U5YjA2ZGQ3Y2M3MTE3M2FiNDRjYTVmNzc1OWQ0Mi4uODdjZGZhN2IxYTI4ZjM2MTU0OGYw
YzEzYWRhZDhlNjdhNjIxOTBkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3Bw
CkBAIC03OTgsNyArNzk4LDcgQEAgYm9vbCBYTUxIdHRwUmVxdWVzdDo6aW50ZXJuYWxBYm9ydCgp
CiAgICAgLy8gQ2FuY2VsbGluZyBtX2xvYWRlciBtYXkgdHJpZ2dlciBhIHdpbmRvdy5vbmxvYWQg
Y2FsbGJhY2sgd2hpY2ggY2FuIGNhbGwgb3BlbigpIG9uIHRoZSBzYW1lIHhoci4KICAgICAvLyBU
aGlzIHdvdWxkIGNyZWF0ZSBpbnRlcm5hbEFib3J0IHJlZW50cmFudCBjYWxsLgogICAgIC8vIG1f
bG9hZGVyIGlzIHNldCB0byBudWxsIGJlZm9yZSBiZWluZyBjYW5jZWxsZWQgdG8gZXhpdCBlYXJs
eSBpbiBhbnkgcmVlbnRyYW50IGludGVybmFsQWJvcnQoKSBjYWxsLgotICAgIFJlZlB0cjxUaHJl
YWRhYmxlTG9hZGVyPiBsb2FkZXIgPSBtX2xvYWRlci5yZWxlYXNlKCk7CisgICAgYXV0byBsb2Fk
ZXIgPSBXVEZNb3ZlKG1fbG9hZGVyKTsKICAgICBsb2FkZXItPmNhbmNlbCgpOwogCiAgICAgLy8g
SWYgd2luZG93Lm9ubG9hZCBjYWxsYmFjayBjYWxscyBvcGVuKCkgYW5kIHNlbmQoKSBvbiB0aGUg
c2FtZSB4aHIsIG1fbG9hZGVyIGlzIG5vdyBzZXQgdG8gYSBuZXcgdmFsdWUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhTdGVwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
UGF0aFN0ZXAuY3BwCmluZGV4IDBhZTM0MDM2MDdjZjQ3ODYwMDZkNjk3ODRiMmFkYmM3MjJmYjNm
ZmYuLmM1NTdlMTM2ZTg3YWRiYWQwNTE4ODFhYjE3NTcwMjM5YWZhNDllMzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFN0ZXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YUGF0aFN0ZXAuY3BwCkBAIC0zNDMsMTAgKzM0MywxMCBAQCB2b2lkIFN0ZXA6Om5vZGVzSW5B
eGlzKE5vZGUmIGNvbnRleHQsIE5vZGVTZXQmIG5vZGVzKSBjb25zdAogCiAgICAgICAgICAgICAv
LyBBdm9pZCBsYXppbHkgY3JlYXRpbmcgYXR0cmlidXRlIG5vZGVzIGZvciBhdHRyaWJ1dGVzIHRo
YXQgd2UgZG8gbm90IG5lZWQgYW55d2F5LgogICAgICAgICAgICAgaWYgKG1fbm9kZVRlc3QubV9r
aW5kID09IE5vZGVUZXN0OjpOYW1lVGVzdCAmJiBtX25vZGVUZXN0Lm1fZGF0YSAhPSBzdGFyQXRv
bSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxBdHRyPiBhdHRyID0gY29udGV4dEVsZW1lbnQu
Z2V0QXR0cmlidXRlTm9kZU5TKG1fbm9kZVRlc3QubV9uYW1lc3BhY2VVUkksIG1fbm9kZVRlc3Qu
bV9kYXRhKTsKKyAgICAgICAgICAgICAgICBhdXRvIGF0dHIgPSBjb250ZXh0RWxlbWVudC5nZXRB
dHRyaWJ1dGVOb2RlTlMobV9ub2RlVGVzdC5tX25hbWVzcGFjZVVSSSwgbV9ub2RlVGVzdC5tX2Rh
dGEpOwogICAgICAgICAgICAgICAgIGlmIChhdHRyICYmIGF0dHItPm5hbWVzcGFjZVVSSSgpICE9
IFhNTE5TTmFtZXM6OnhtbG5zTmFtZXNwYWNlVVJJKSB7IC8vIEluIFhQYXRoIGxhbmQsIG5hbWVz
cGFjZSBub2RlcyBhcmUgbm90IGFjY2Vzc2libGUgb24gdGhlIGF0dHJpYnV0ZSBheGlzLgogICAg
ICAgICAgICAgICAgICAgICBpZiAobm9kZU1hdGNoZXMoKmF0dHIsIEF0dHJpYnV0ZUF4aXMsIG1f
bm9kZVRlc3QpKSAvLyBTdGlsbCBuZWVkIHRvIGNoZWNrIG1lcmdlZCBwcmVkaWNhdGVzLgotICAg
ICAgICAgICAgICAgICAgICAgICAgbm9kZXMuYXBwZW5kKGF0dHIucmVsZWFzZSgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG5vZGVzLmFwcGVuZChXVEZNb3ZlKGF0dHIpKTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtMzU1
LDkgKzM1NSw5IEBAIHZvaWQgU3RlcDo6bm9kZXNJbkF4aXMoTm9kZSYgY29udGV4dCwgTm9kZVNl
dCYgbm9kZXMpIGNvbnN0CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBm
b3IgKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlIDogY29udGV4dEVsZW1lbnQuYXR0cmlidXRl
c0l0ZXJhdG9yKCkpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8QXR0cj4gYXR0ciA9IGNvbnRl
eHRFbGVtZW50LmVuc3VyZUF0dHIoYXR0cmlidXRlLm5hbWUoKSk7Ci0gICAgICAgICAgICAgICAg
aWYgKG5vZGVNYXRjaGVzKCphdHRyLCBBdHRyaWJ1dGVBeGlzLCBtX25vZGVUZXN0KSkKLSAgICAg
ICAgICAgICAgICAgICAgbm9kZXMuYXBwZW5kKGF0dHIucmVsZWFzZSgpKTsKKyAgICAgICAgICAg
ICAgICBhdXRvIGF0dHIgPSBjb250ZXh0RWxlbWVudC5lbnN1cmVBdHRyKGF0dHJpYnV0ZS5uYW1l
KCkpOworICAgICAgICAgICAgICAgIGlmIChub2RlTWF0Y2hlcyhhdHRyLmdldCgpLCBBdHRyaWJ1
dGVBeGlzLCBtX25vZGVUZXN0KSkKKyAgICAgICAgICAgICAgICAgICAgbm9kZXMuYXBwZW5kKFdU
Rk1vdmUoYXR0cikpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCmluZGV4IDA4ZWEx
Njc2ZWM2NmNmNGY1NmFkMThiNWM0ZjQ5ZGRkYjc5ZmNhNmIuLmE2NTUwZGExYWViZWY2NGI3YWNk
MWViMmMyNjMwMGI2NzhiOTFjMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9T
dG9yYWdlQXJlYUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlQXJl
YUltcGwuY3BwCkBAIC0xMzksOSArMTM5LDkgQEAgdm9pZCBTdG9yYWdlQXJlYUltcGw6OnNldEl0
ZW0oRnJhbWUqIHNvdXJjZUZyYW1lLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW4KICAg
ICBibG9ja1VudGlsSW1wb3J0Q29tcGxldGUoKTsKIAogICAgIFN0cmluZyBvbGRWYWx1ZTsKLSAg
ICBSZWZQdHI8U3RvcmFnZU1hcD4gbmV3TWFwID0gbV9zdG9yYWdlTWFwLT5zZXRJdGVtKGtleSwg
dmFsdWUsIG9sZFZhbHVlLCBxdW90YUV4Y2VwdGlvbik7CisgICAgYXV0byBuZXdNYXAgPSBtX3N0
b3JhZ2VNYXAtPnNldEl0ZW0oa2V5LCB2YWx1ZSwgb2xkVmFsdWUsIHF1b3RhRXhjZXB0aW9uKTsK
ICAgICBpZiAobmV3TWFwKQotICAgICAgICBtX3N0b3JhZ2VNYXAgPSBuZXdNYXAucmVsZWFzZSgp
OworICAgICAgICBtX3N0b3JhZ2VNYXAgPSBXVEZNb3ZlKG5ld01hcCk7CiAKICAgICBpZiAocXVv
dGFFeGNlcHRpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTE2MSw5ICsxNjEsOSBAQCB2b2lkIFN0
b3JhZ2VBcmVhSW1wbDo6cmVtb3ZlSXRlbShGcmFtZSogc291cmNlRnJhbWUsIGNvbnN0IFN0cmlu
ZyYga2V5KQogICAgIGJsb2NrVW50aWxJbXBvcnRDb21wbGV0ZSgpOwogCiAgICAgU3RyaW5nIG9s
ZFZhbHVlOwotICAgIFJlZlB0cjxTdG9yYWdlTWFwPiBuZXdNYXAgPSBtX3N0b3JhZ2VNYXAtPnJl
bW92ZUl0ZW0oa2V5LCBvbGRWYWx1ZSk7CisgICAgYXV0byBuZXdNYXAgPSBtX3N0b3JhZ2VNYXAt
PnJlbW92ZUl0ZW0oa2V5LCBvbGRWYWx1ZSk7CiAgICAgaWYgKG5ld01hcCkKLSAgICAgICAgbV9z
dG9yYWdlTWFwID0gbmV3TWFwLnJlbGVhc2UoKTsKKyAgICAgICAgbV9zdG9yYWdlTWFwID0gV1RG
TW92ZShuZXdNYXApOwogCiAgICAgaWYgKG9sZFZhbHVlLmlzTnVsbCgpKQogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkhvc3RNYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQv
TmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbQppbmRleCBkNDllZjZlZTFiZDMxN2IyNmZmYjY4
YzgyMGU5MmMyZDc3YmM1NWJiLi5lNGI3Yzg5OWE2NWEyNDM4YjhiMzZhZDQzODc4ZDhhOGI1ZDhl
NWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkhvc3RNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9z
dGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0KQEAgLTI3Miw3ICsyNzIsNyBAQCBQYXNz
UmVmUHRyPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eT4gTmV0c2NhcGVQbHVnaW5Ib3N0TWFu
YWdlcjo6aW5zdGFudGlhdGVQbAogICAgIGluc3RhbmNlLT5zZXRSZW5kZXJDb250ZXh0SUQocmVw
bHktPm1fcmVuZGVyQ29udGV4dElEKTsKICAgICBpbnN0YW5jZS0+c2V0UmVuZGVyZXJUeXBlKHJl
cGx5LT5tX3JlbmRlcmVyVHlwZSk7CiAKLSAgICByZXR1cm4gaW5zdGFuY2UucmVsZWFzZSgpOwor
ICAgIHJldHVybiBXVEZNb3ZlKGluc3RhbmNlKTsKIH0KIAogdm9pZCBOZXRzY2FwZVBsdWdpbkhv
c3RNYW5hZ2VyOjpjcmVhdGVQcm9wZXJ0eUxpc3RGaWxlKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0
aCwgY3B1X3R5cGVfdCBwbHVnaW5BcmNoaXRlY3R1cmUsIGNvbnN0IFN0cmluZyYgYnVuZGxlSWRl
bnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05l
dHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMv
SG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQppbmRleCA5ODRjMjNkYjYxZmZl
ZDBhMGQ0OGI2YjVkOWYyYWJkZTZmMmYzMDA4Li5lZWQyNzc5ODFjMGY4ZjU4ZGIwNjc3NDFlZjli
MWU3NjBhMjJhMDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3Rl
ZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCkBAIC0yNDgsOSAr
MjQ4LDkgQEAgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpOZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveHkoTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkKIAogUGFzc1JlZlB0cjxOZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHk+IE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Y3JlYXRlKE5l
dHNjYXBlUGx1Z2luSG9zdFByb3h5KiBwbHVnaW5Ib3N0UHJveHksIFdlYkhvc3RlZE5ldHNjYXBl
UGx1Z2luVmlldyAqcGx1Z2luVmlldywgYm9vbCBmdWxsRnJhbWVQbHVnaW4pCiB7Ci0gICAgUmVm
UHRyPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eT4gcHJveHkgPSBhZG9wdFJlZihuZXcgTmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5KHBsdWdpbkhvc3RQcm94eSwgcGx1Z2luVmlldywgZnVs
bEZyYW1lUGx1Z2luKSk7Ci0gICAgcGx1Z2luSG9zdFByb3h5LT5hZGRQbHVnaW5JbnN0YW5jZShw
cm94eS5nZXQoKSk7Ci0gICAgcmV0dXJuIHByb3h5LnJlbGVhc2UoKTsKKyAgICBhdXRvIHByb3h5
ID0gYWRvcHRSZWYoKm5ldyBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkocGx1Z2luSG9zdFBy
b3h5LCBwbHVnaW5WaWV3LCBmdWxsRnJhbWVQbHVnaW4pKTsKKyAgICBwbHVnaW5Ib3N0UHJveHkt
PmFkZFBsdWdpbkluc3RhbmNlKHByb3h5LnB0cigpKTsKKyAgICByZXR1cm4gV1RGTW92ZShwcm94
eSk7CiB9CiAKIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6fk5ldHNjYXBlUGx1Z2luSW5z
dGFuY2VQcm94eSgpCkBAIC04MDEsOCArODAxLDggQEAgTlBFcnJvciBOZXRzY2FwZVBsdWdpbklu
c3RhbmNlUHJveHk6OmxvYWRSZXF1ZXN0KE5TVVJMUmVxdWVzdCAqcmVxdWVzdCwgY29uc3QgY2gK
ICAgICAgICAgICAgIHJldHVybiBOUEVSUl9JTlZBTElEX1BBUkFNOwogICAgICAgICB9CiAKLSAg
ICAgICAgUmVmUHRyPFBsdWdpblJlcXVlc3Q+IHBsdWdpblJlcXVlc3QgPSBQbHVnaW5SZXF1ZXN0
OjpjcmVhdGUocmVxdWVzdElELCByZXF1ZXN0LCB0YXJnZXQsIGFsbG93UG9wdXBzKTsKLSAgICAg
ICAgbV9wbHVnaW5SZXF1ZXN0cy5hcHBlbmQocGx1Z2luUmVxdWVzdC5yZWxlYXNlKCkpOworICAg
ICAgICBhdXRvIHBsdWdpblJlcXVlc3QgPSBQbHVnaW5SZXF1ZXN0OjpjcmVhdGUocmVxdWVzdElE
LCByZXF1ZXN0LCB0YXJnZXQsIGFsbG93UG9wdXBzKTsKKyAgICAgICAgbV9wbHVnaW5SZXF1ZXN0
cy5hcHBlbmQoV1RGTW92ZShwbHVnaW5SZXF1ZXN0KSk7CiAgICAgICAgIG1fcmVxdWVzdFRpbWVy
LnN0YXJ0T25lU2hvdCgwKTsKICAgICB9IGVsc2UgewogICAgICAgICBSZWZQdHI8SG9zdGVkTmV0
c2NhcGVQbHVnaW5TdHJlYW0+IHN0cmVhbSA9IEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpj
cmVhdGUodGhpcywgcmVxdWVzdElELCByZXF1ZXN0KTsKQEAgLTEzNzIsMTEgKzEzNzIsMTEgQEAg
Ym9vbCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmRlbWFyc2hhbFZhbHVlRnJvbUFycmF5
KEV4ZWNTdGF0ZSogZXhlYywgTlNBcnIKICAgICAgICAgICAgIGlmICghZnJhbWUtPnNjcmlwdCgp
LmNhbkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgICAgIFJlZlB0cjxSb290T2JqZWN0PiByb290
T2JqZWN0ID0gZnJhbWUtPnNjcmlwdCgpLmNyZWF0ZVJvb3RPYmplY3QobV9wbHVnaW5WaWV3KTsK
KyAgICAgICAgICAgIGF1dG8gcm9vdE9iamVjdCA9IGZyYW1lLT5zY3JpcHQoKS5jcmVhdGVSb290
T2JqZWN0KG1fcGx1Z2luVmlldyk7CiAgICAgICAgICAgICBpZiAoIXJvb3RPYmplY3QpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgCi0gICAgICAgICAgICByZXN1
bHQgPSBQcm94eUluc3RhbmNlOjpjcmVhdGUocm9vdE9iamVjdC5yZWxlYXNlKCksIHRoaXMsIG9i
amVjdElEKS0+Y3JlYXRlUnVudGltZU9iamVjdChleGVjKTsKKyAgICAgICAgICAgIHJlc3VsdCA9
IFByb3h5SW5zdGFuY2U6OmNyZWF0ZShXVEZNb3ZlKHJvb3RPYmplY3QpLCB0aGlzLCBvYmplY3RJ
RCktPmNyZWF0ZVJ1bnRpbWVPYmplY3QoZXhlYyk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCBmZmVmYzE5
MGJjYjc1NjQxNWIzZjMyZTFiMmE1MmIxMTBhNThmMzM1Li44OWJhMDdjZjcxMTE5NDEyMDZlZTQ0
YThjZGYwM2EyMTkxMGUyNWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMjM0OCw3ICsyMzQ4LDcg
QEAgLSAodm9pZClkZWFsbG9jCiAKIC0gKHZvaWQpcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbjooUG9s
aWN5QWN0aW9uKWFjdGlvbgogewotICAgIFJlZlB0cjxGcmFtZT4gZnJhbWUgPSBfZnJhbWUucmVs
ZWFzZSgpOworICAgIGF1dG8gZnJhbWUgPSBXVEZNb3ZlKF9mcmFtZSk7CiAgICAgaWYgKCFmcmFt
ZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCmluZGV4IGM2Zjg1ZGU3ZDQ3NjQ3NzBkYWVh
MzE2NzgzOTYzNGJhMmIzMTBiNDYuLmEzZGJmNGE3YjM5MGYxOWFjZGVmYzE0YmZhODI1NzQ5NTVi
NTNkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNl
Y3VyaXR5T3JpZ2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlNlY3VyaXR5T3JpZ2luLm1tCkBAIC01NCw4ICs1NCw4IEBAIC0gKGlkKWluaXRXaXRoVVJMOihO
U1VSTCAqKXVybAogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIFJl
ZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShVUkwo
W3VybCBhYnNvbHV0ZVVSTF0pKTsKLSAgICBTZWN1cml0eU9yaWdpbiogcmF3T3JpZ2luID0gb3Jp
Z2luLnJlbGVhc2UoKS5sZWFrUmVmKCk7CisgICAgYXV0byBvcmlnaW4gPSBTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKFVSTChbdXJsIGFic29sdXRlVVJMXSkpOworICAgIFNlY3VyaXR5T3JpZ2luKiBy
YXdPcmlnaW4gPSAmb3JpZ2luLmxlYWtSZWYoKTsKICAgICBfcHJpdmF0ZSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8V2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlICo+KHJhd09yaWdpbik7CiAKICAgICByZXR1
cm4gc2VsZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViQXJjaGl2
ZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViQXJjaGl2ZS5tbQppbmRleCAzNDhl
OGYwOGNhMmY0OTc2NjllZTNhYWNiZWMyY2Y2NTY3MThkYThmLi5lOTZjNjA3Y2ZiODRjODVhMWVi
ZmFhYmRjMzFjZWJhMDRlYTVjM2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkFyY2hpdmUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJBcmNo
aXZlLm1tCkBAIC0xNzUsNyArMTc1LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTWFpblJl
c291cmNlOihXZWJSZXNvdXJjZSAqKW1haW5SZXNvdXJjZSBzdWJyZXNvdXJjZXM6KE4KICAgICAg
ICAgcmV0dXJuIG5pbDsKICAgICB9CiAgICAgCi0gICAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4g
Y29yZU1haW5SZXNvdXJjZSA9IG1haW5SZXNvdXJjZSA/IFttYWluUmVzb3VyY2UgX2NvcmVSZXNv
dXJjZV0gOiAwOworICAgIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNvcmVNYWluUmVzb3VyY2Ug
PSBtYWluUmVzb3VyY2UgPyBbbWFpblJlc291cmNlIF9jb3JlUmVzb3VyY2VdIDogbnVsbHB0cjsK
IAogICAgIFZlY3RvcjxSZWZQdHI8QXJjaGl2ZVJlc291cmNlPj4gY29yZVJlc291cmNlczsKICAg
ICBmb3IgKFdlYlJlc291cmNlICpzdWJyZXNvdXJjZSBpbiBzdWJyZXNvdXJjZXMpCkBAIC0xODUs
MTMgKzE4NSwxMyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhNYWluUmVzb3VyY2U6KFdlYlJl
c291cmNlICopbWFpblJlc291cmNlIHN1YnJlc291cmNlczooTgogICAgIGZvciAoV2ViQXJjaGl2
ZSAqc3ViZnJhbWVBcmNoaXZlIGluIHN1YmZyYW1lQXJjaGl2ZXMpCiAgICAgICAgIGNvcmVBcmNo
aXZlcy5hcHBlbmQoW3N1YmZyYW1lQXJjaGl2ZS0+X3ByaXZhdGUgY29yZUFyY2hpdmVdKTsKIAot
ICAgIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjb3JlQXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hp
dmU6OmNyZWF0ZShjb3JlTWFpblJlc291cmNlLnJlbGVhc2UoKSwgV1RGTW92ZShjb3JlUmVzb3Vy
Y2VzKSwgV1RGTW92ZShjb3JlQXJjaGl2ZXMpKTsKKyAgICBhdXRvIGNvcmVBcmNoaXZlID0gTGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFdURk1vdmUoY29yZU1haW5SZXNvdXJjZSksIFdURk1vdmUo
Y29yZVJlc291cmNlcyksIFdURk1vdmUoY29yZUFyY2hpdmVzKSk7CiAgICAgaWYgKCFjb3JlQXJj
aGl2ZSkgewogICAgICAgICBbc2VsZiByZWxlYXNlXTsKICAgICAgICAgcmV0dXJuIG5pbDsKICAg
ICB9CiAKLSAgICBbX3ByaXZhdGUgc2V0Q29yZUFyY2hpdmU6Y29yZUFyY2hpdmUucmVsZWFzZSgp
XTsKKyAgICBbX3ByaXZhdGUgc2V0Q29yZUFyY2hpdmU6V1RGTW92ZShjb3JlQXJjaGl2ZSldOwog
CiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0yMDksMTMgKzIwOSwxMyBAQCAtIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhEYXRhOihOU0RhdGEgKilkYXRhCiAjZW5kaWYKIAogICAgIF9wcml2YXRlID0g
W1tXZWJBcmNoaXZlUHJpdmF0ZSBhbGxvY10gaW5pdF07Ci0gICAgUmVmUHRyPExlZ2FjeVdlYkFy
Y2hpdmU+IGNvcmVBcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZl
cjo6d3JhcE5TRGF0YShkYXRhKSk7CisgICAgYXV0byBjb3JlQXJjaGl2ZSA9IExlZ2FjeVdlYkFy
Y2hpdmU6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OndyYXBOU0RhdGEoZGF0YSkpOwogICAgIGlmICgh
Y29yZUFyY2hpdmUpIHsKICAgICAgICAgW3NlbGYgcmVsZWFzZV07CiAgICAgICAgIHJldHVybiBu
aWw7CiAgICAgfQogICAgICAgICAKLSAgICBbX3ByaXZhdGUgc2V0Q29yZUFyY2hpdmU6Y29yZUFy
Y2hpdmUucmVsZWFzZSgpXTsKKyAgICBbX3ByaXZhdGUgc2V0Q29yZUFyY2hpdmU6V1RGTW92ZShj
b3JlQXJjaGl2ZSldOwogICAgICAgICAKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgQ0ZBYnNvbHV0
ZVRpbWUgZW5kID0gQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXggODAzZDNhOGU0OWU1OWE3OTU0MDMwNmQ0
MTgxNWFmOWM0Y2UwODgwMS4uNjA2NDcyMmE1NjM2MTQ4NTg0MmNmNTdmZDkzMGY3NTU4OGQ2ZThm
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQpAQCAtNTE4
LDggKzUxOCw4IEBAIC0gKFdlYkFyY2hpdmUgKil3ZWJBcmNoaXZlCiAKIC0gKFdlYlJlc291cmNl
ICopbWFpblJlc291cmNlCiB7Ci0gICAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY29yZVJlc291
cmNlID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5tYWluUmVzb3VyY2UoKTsKLSAgICBy
ZXR1cm4gW1tbV2ViUmVzb3VyY2UgYWxsb2NdIF9pbml0V2l0aENvcmVSZXNvdXJjZTpjb3JlUmVz
b3VyY2UucmVsZWFzZSgpXSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBjb3JlUmVzb3VyY2UgPSB0
b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPm1haW5SZXNvdXJjZSgpOworICAgIHJldHVybiBb
W1tXZWJSZXNvdXJjZSBhbGxvY10gX2luaXRXaXRoQ29yZVJlc291cmNlOldURk1vdmUoY29yZVJl
c291cmNlKV0gYXV0b3JlbGVhc2VdOwogfQogCiAtIChOU0FycmF5ICopc3VicmVzb3VyY2VzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCBiMGRjZDlhOWFhNmFlZmY0Y2Rm
NmFkZGUwNGVmN2NmMjlhZTQxODc2Li45Y2JmMzA5MTMzMzljMjY2NGJiNzZhNmI1NDJiOWViZTUy
NjEzMDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTkxMSw3ICs5
MTEsNyBAQCAtIChET01Eb2N1bWVudEZyYWdtZW50ICopX2RvY3VtZW50RnJhZ21lbnRXaXRoTm9k
ZXNBc1BhcmFncmFwaHM6KE5TQXJyYXkgKilub2RlcwogICAgIHdoaWxlICgobm9kZSA9IFtub2Rl
RW51bSBuZXh0T2JqZWN0XSkpCiAgICAgICAgIG5vZGVzVmVjdG9yLmFwcGVuZChjb3JlKG5vZGUp
KTsKIAotICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGRvY3VtZW50LT5j
cmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CisgICAgYXV0byBmcmFnbWVudCA9IGRvY3VtZW50LT5j
cmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CiAKICAgICBmb3IgKGF1dG8qIG5vZGUgOiBub2Rlc1Zl
Y3RvcikgewogICAgICAgICBhdXRvIGVsZW1lbnQgPSBjcmVhdGVEZWZhdWx0UGFyYWdyYXBoRWxl
bWVudCgqZG9jdW1lbnQpOwpAQCAtOTE5LDcgKzkxOSw3IEBAIC0gKERPTURvY3VtZW50RnJhZ21l
bnQgKilfZG9jdW1lbnRGcmFnbWVudFdpdGhOb2Rlc0FzUGFyYWdyYXBoczooTlNBcnJheSAqKW5v
ZGVzCiAgICAgICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChlbGVtZW50KTsKICAgICB9CiAKLSAg
ICByZXR1cm4ga2l0KGZyYWdtZW50LnJlbGVhc2UoKS5nZXQoKSk7CisgICAgcmV0dXJuIGtpdChm
cmFnbWVudC5wdHIoKSk7CiB9CiAKIC0gKHZvaWQpX3JlcGxhY2VTZWxlY3Rpb25XaXRoTm9kZToo
RE9NTm9kZSAqKW5vZGUgc2VsZWN0UmVwbGFjZW1lbnQ6KEJPT0wpc2VsZWN0UmVwbGFjZW1lbnQg
c21hcnRSZXBsYWNlOihCT09MKXNtYXJ0UmVwbGFjZSBtYXRjaFN0eWxlOihCT09MKW1hdGNoU3R5
bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVBy
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vz
cy5jcHAKaW5kZXggYWY4NmFkOGJmMzM0MzcxYjc5Njc3MWNkMjBhMDEzZDhkNjk2MWIzZC4uM2Vl
NjI0N2U4ZGE4ODA5YjdjNDJmMDA1NTQ2ODVjNjNhYTk0YzA1YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAKQEAgLTE4Miw4ICsx
ODIsOCBAQCB2b2lkIERhdGFiYXNlUHJvY2Vzczo6Y3JlYXRlRGF0YWJhc2VUb1dlYlByb2Nlc3ND
b25uZWN0aW9uKCkKICAgICBtYWNoX3BvcnRfYWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwgTUFD
SF9QT1JUX1JJR0hUX1JFQ0VJVkUsICZsaXN0ZW5pbmdQb3J0KTsKIAogICAgIC8vIENyZWF0ZSBh
IGxpc3RlbmluZyBjb25uZWN0aW9uLgotICAgIFJlZlB0cjxEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nv
bm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNy
ZWF0ZShJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCkpOwotICAgIG1f
ZGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQoY29ubmVjdGlvbi5yZWxlYXNl
KCkpOworICAgIGF1dG8gY29ubmVjdGlvbiA9IERhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlv
bjo6Y3JlYXRlKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihsaXN0ZW5pbmdQb3J0KSk7Cisg
ICAgbV9kYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChXVEZNb3ZlKGNvbm5l
Y3Rpb24pKTsKIAogICAgIElQQzo6QXR0YWNobWVudCBjbGllbnRQb3J0KGxpc3RlbmluZ1BvcnQs
IE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKTsKICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpEYXRhYmFzZVByb2Nlc3NQcm94eTo6RGlkQ3JlYXRlRGF0YWJhc2VU
b1dlYlByb2Nlc3NDb25uZWN0aW9uKGNsaWVudFBvcnQpLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBmMTU4YWFjN2VkZjRh
M2Q3N2I1NzkzZjA1ZDE5OWNjMGNmYzhmYmNiLi5mMWNlMzFmZjY1NWYyMDZjMTgyYTE4MjFlYzZm
ZTI2MjJkN2JmYzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCkBAIC0yNTQsOCArMjU0LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQogI2lmIFVTRShVTklYX0RPTUFJ
Tl9TT0NLRVRTKQogICAgIElQQzo6Q29ubmVjdGlvbjo6U29ja2V0UGFpciBzb2NrZXRQYWlyID0g
SVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKIAotICAgIFJlZlB0
cjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gY29ubmVjdGlvbiA9IE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoc29ja2V0UGFpci5zZXJ2ZXIpOwotICAgIG1fd2Vi
UHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7CisgICAgYXV0
byBjb25uZWN0aW9uID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShzb2Nr
ZXRQYWlyLnNlcnZlcik7CisgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKFdURk1v
dmUoY29ubmVjdGlvbikpOwogCiAgICAgSVBDOjpBdHRhY2htZW50IGNsaWVudFNvY2tldChzb2Nr
ZXRQYWlyLmNsaWVudCk7CiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MoY2xpZW50U29ja2V0KSwgMCk7CkBAIC0yNjUsOCArMjY1LDggQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQogICAgIG1h
Y2hfcG9ydF9hbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBNQUNIX1BPUlRfUklHSFRfUkVDRUlW
RSwgJmxpc3RlbmluZ1BvcnQpOwogCiAgICAgLy8gQ3JlYXRlIGEgbGlzdGVuaW5nIGNvbm5lY3Rp
b24uCi0gICAgUmVmUHRyPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBjb25uZWN0aW9u
ID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShJUEM6OkNvbm5lY3Rpb246
OklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCkpOwotICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25z
LmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7CisgICAgYXV0byBjb25uZWN0aW9uID0gTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShJUEM6OkNvbm5lY3Rpb246OklkZW50
aWZpZXIobGlzdGVuaW5nUG9ydCkpOworICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVu
ZChXVEZNb3ZlKGNvbm5lY3Rpb24pKTsKIAogICAgIElQQzo6QXR0YWNobWVudCBjbGllbnRQb3J0
KGxpc3RlbmluZ1BvcnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKTsKICAgICBwYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRD
cmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhjbGllbnRQb3J0KSwgMCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKaW5kZXggYTQxZDBhYjdlMTYyMGNlNTY2OWJlYzgwMDQx
MTlhZTYzNTZlOGEwMS4uMGYxNmRmNDk2NzhmODUxYmVjMTVjMzE0MjRkMTE5YmM2MjhlYzgyMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcApAQCAtMTI3LDggKzEyNyw4IEBAIGJvb2wg
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2Rl
ciYgZGVjb2RlciwgTmV0d29yCiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVxdWVzdEJv
ZHlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlcykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9u
SGFuZGxlcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKFJlZlB0cjxTYW5kYm94RXh0
ZW5zaW9uPiBleHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUocmVxdWVzdEJvZHlT
YW5kYm94RXh0ZW5zaW9uSGFuZGxlc1tpXSkpCi0gICAgICAgICAgICAgICAgcmVzdWx0LnJlcXVl
c3RCb2R5U2FuZGJveEV4dGVuc2lvbnMuYXBwZW5kKGV4dGVuc2lvbi5yZWxlYXNlKCkpOworICAg
ICAgICAgICAgaWYgKGF1dG8gZXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKHJl
cXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbkhhbmRsZXNbaV0pKQorICAgICAgICAgICAgICAgIHJl
c3VsdC5yZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25zLmFwcGVuZChXVEZNb3ZlKGV4dGVuc2lv
bikpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKaW5kZXggYjk3OGI5OTkz
MzhiMzc4NmMxZTEyMWRjMGVlNzc4ZDViZmFkNjkxZS4uMjMwNjhhNjkyYmYzNjBlY2U0ZjZlMDU4
MDA3NTQ5N2EwNTg2Zjk2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcApAQCAtMTQ1LDEyICsxNDUsMTEg
QEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBFbnRyeTo6ZGVjb2RlU3RvcmFnZVJlY29yZChjb25z
dCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2UKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNF
KQogdm9pZCBFbnRyeTo6aW5pdGlhbGl6ZVNoYXJlYWJsZVJlc291cmNlSGFuZGxlRnJvbVN0b3Jh
Z2VSZWNvcmQoKSBjb25zdAogewotICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9y
eSA9IG1fc291cmNlU3RvcmFnZVJlY29yZC5ib2R5LnRyeUNyZWF0ZVNoYXJlZE1lbW9yeSgpOwor
ICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gbV9zb3VyY2VTdG9yYWdlUmVjb3JkLmJvZHkudHJ5Q3Jl
YXRlU2hhcmVkTWVtb3J5KCk7CiAgICAgaWYgKCFzaGFyZWRNZW1vcnkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFJlZlB0cjxTaGFyZWFibGVSZXNvdXJjZT4gc2hhcmVhYmxlUmVzb3VyY2UgPSBT
aGFyZWFibGVSZXNvdXJjZTo6Y3JlYXRlKHNoYXJlZE1lbW9yeS5yZWxlYXNlKCksIDAsIG1fc291
cmNlU3RvcmFnZVJlY29yZC5ib2R5LnNpemUoKSk7Ci0gICAgQVNTRVJUKHNoYXJlYWJsZVJlc291
cmNlKTsKKyAgICBhdXRvIHNoYXJlYWJsZVJlc291cmNlID0gU2hhcmVhYmxlUmVzb3VyY2U6OmNy
ZWF0ZShXVEZNb3ZlKHNoYXJlZE1lbW9yeSksIDAsIG1fc291cmNlU3RvcmFnZVJlY29yZC5ib2R5
LnNpemUoKSk7CiAgICAgc2hhcmVhYmxlUmVzb3VyY2UtPmNyZWF0ZUhhbmRsZShtX3NoYXJlYWJs
ZVJlc291cmNlSGFuZGxlKTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vbWFjL1NoYXJlZE1lbW9yeU1hYy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9tYWMvU2hhcmVkTWVtb3J5TWFjLmNwcAppbmRleCBjYWY0ZmI0OWI1NDZmYjk0YTIxNGFkNWEx
ZTJhODA5MTJlMDcyYTVjLi4wODBjNTI4NDI2OTc5MWZkOWU5MDQxZDI5OTJmOGZmMDQzNzg3YWY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvU2hhcmVkTWVtb3J5TWFj
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvU2hhcmVkTWVtb3J5TWFjLmNw
cApAQCAtMTEwLDEzICsxMTAsMTMgQEAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5
OjphbGxvY2F0ZShzaXplX3Qgc2l6ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
Ci0gICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5ID0gYWRvcHRSZWYoKm5ldyBT
aGFyZWRNZW1vcnkpOworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gYWRvcHRSZWYoKm5ldyBTaGFy
ZWRNZW1vcnkpOwogICAgIHNoYXJlZE1lbW9yeS0+bV9zaXplID0gc2l6ZTsKICAgICBzaGFyZWRN
ZW1vcnktPm1fZGF0YSA9IHRvUG9pbnRlcihhZGRyZXNzKTsKICAgICBzaGFyZWRNZW1vcnktPm1f
cG9ydCA9IE1BQ0hfUE9SVF9OVUxMOwogICAgIHNoYXJlZE1lbW9yeS0+bV9wcm90ZWN0aW9uID0g
UHJvdGVjdGlvbjo6UmVhZFdyaXRlOwogCi0gICAgcmV0dXJuIHNoYXJlZE1lbW9yeTsKKyAgICBy
ZXR1cm4gV1RGTW92ZShzaGFyZWRNZW1vcnkpOwogfQogCiBzdGF0aWMgaW5saW5lIHZtX3Byb3Rf
dCBtYWNoUHJvdGVjdGlvbihTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gcHJvdGVjdGlvbikKQEAg
LTE1NiwxMyArMTU2LDEzIEBAIFJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y3Jl
YXRlKHZvaWQqIGRhdGEsIHNpemVfdCBzaXplLCBQcm90ZWN0aW9uIHByCiAgICAgaWYgKCFzZW5k
UmlnaHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPFNoYXJlZE1lbW9y
eT4gc2hhcmVkTWVtb3J5KGFkb3B0UmVmKG5ldyBTaGFyZWRNZW1vcnkpKTsKKyAgICBhdXRvIHNo
YXJlZE1lbW9yeShhZG9wdFJlZigqbmV3IFNoYXJlZE1lbW9yeSkpOwogICAgIHNoYXJlZE1lbW9y
eS0+bV9zaXplID0gc2l6ZTsKICAgICBzaGFyZWRNZW1vcnktPm1fZGF0YSA9IG51bGxwdHI7CiAg
ICAgc2hhcmVkTWVtb3J5LT5tX3BvcnQgPSBzZW5kUmlnaHQubGVha1NlbmRSaWdodCgpOwogICAg
IHNoYXJlZE1lbW9yeS0+bV9wcm90ZWN0aW9uID0gcHJvdGVjdGlvbjsKIAotICAgIHJldHVybiBz
aGFyZWRNZW1vcnkucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKHNoYXJlZE1lbW9yeSk7
CiB9CiAKIFJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6bWFwKGNvbnN0IEhhbmRs
ZSYgaGFuZGxlLCBQcm90ZWN0aW9uIHByb3RlY3Rpb24pCkBAIC0xNzgsMTMgKzE3OCwxMyBAQCBS
ZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6Om1hcChjb25zdCBIYW5kbGUmIGhhbmRs
ZSwgUHJvdGVjdGlvbiBwcm90ZWN0aQogICAgIGlmIChrciAhPSBLRVJOX1NVQ0NFU1MpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVt
b3J5KGFkb3B0UmVmKG5ldyBTaGFyZWRNZW1vcnkpKTsKKyAgICBhdXRvIHNoYXJlZE1lbW9yeShh
ZG9wdFJlZigqbmV3IFNoYXJlZE1lbW9yeSkpOwogICAgIHNoYXJlZE1lbW9yeS0+bV9zaXplID0g
aGFuZGxlLm1fc2l6ZTsKICAgICBzaGFyZWRNZW1vcnktPm1fZGF0YSA9IHRvUG9pbnRlcihtYXBw
ZWRBZGRyZXNzKTsKICAgICBzaGFyZWRNZW1vcnktPm1fcG9ydCA9IE1BQ0hfUE9SVF9OVUxMOwog
ICAgIHNoYXJlZE1lbW9yeS0+bV9wcm90ZWN0aW9uID0gcHJvdGVjdGlvbjsKIAotICAgIHJldHVy
biBzaGFyZWRNZW1vcnk7CisgICAgcmV0dXJuIFdURk1vdmUoc2hhcmVkTWVtb3J5KTsKIH0KIAog
U2hhcmVkTWVtb3J5Ojp+U2hhcmVkTWVtb3J5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Q
cm9jZXNzL1BsdWdpblByb2Nlc3MuY3BwCmluZGV4IDI3MDBjYTIyNTU1YTY4ZTljMmYyMDZhMjFm
YTE3NWFjYTZkZjQxYjIuLjc1NTU3MDJhMjdiODU1MTlhMmFhMmEyNTE2MDEzYmNiNDZhYjEyZGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcApA
QCAtMTUxLDggKzE1MSw4IEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6Y3JlYXRlV2ViUHJvY2Vzc0Nv
bm5lY3Rpb24oKQogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgIElQQzo6Q29ubmVj
dGlvbjo6U29ja2V0UGFpciBzb2NrZXRQYWlyID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0
Zm9ybUNvbm5lY3Rpb24oKTsKIAotICAgIFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gY29u
bmVjdGlvbiA9IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoc29ja2V0UGFpci5zZXJ2ZXIp
OwotICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2Uo
KSk7CisgICAgYXV0byBjb25uZWN0aW9uID0gV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShz
b2NrZXRQYWlyLnNlcnZlcik7CisgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKFdU
Rk1vdmUoY29ubmVjdGlvbikpOwogCiAgICAgSVBDOjpBdHRhY2htZW50IGNsaWVudFNvY2tldChz
b2NrZXRQYWlyLmNsaWVudCk7CiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlv
bihjbGllbnRTb2NrZXQsIG1fc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlv
biksIDApOwpAQCAtMTYyLDcgKzE2Miw3IEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6Y3JlYXRlV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24oKQogICAgIG1hY2hfcG9ydF9hbGxvY2F0ZShtYWNoX3Rhc2tfc2Vs
ZigpLCBNQUNIX1BPUlRfUklHSFRfUkVDRUlWRSwgJmxpc3RlbmluZ1BvcnQpOwogCiAgICAgLy8g
Q3JlYXRlIGEgbGlzdGVuaW5nIGNvbm5lY3Rpb24uCi0gICAgUmVmUHRyPFdlYlByb2Nlc3NDb25u
ZWN0aW9uPiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShJUEM6OkNv
bm5lY3Rpb246OklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCkpOworICAgIGF1dG8gY29ubmVjdGlv
biA9IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoSVBDOjpDb25uZWN0aW9uOjpJZGVudGlm
aWVyKGxpc3RlbmluZ1BvcnQpKTsKIAogICAgIGlmIChtX2F1ZGlvSGFyZHdhcmVMaXN0ZW5lcikg
ewogICAgICAgICBpZiAobV9hdWRpb0hhcmR3YXJlTGlzdGVuZXItPmhhcmR3YXJlQWN0aXZpdHko
KSA9PSBXZWJDb3JlOjpBdWRpb0hhcmR3YXJlQWN0aXZpdHlUeXBlOjpJc0FjdGl2ZSkKQEAgLTE3
MSw3ICsxNzEsNyBAQCB2b2lkIFBsdWdpblByb2Nlc3M6OmNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0
aW9uKCkKICAgICAgICAgICAgIGNvbm5lY3Rpb24tPmF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVJbmFj
dGl2ZSgpOwogICAgIH0KIAotICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25u
ZWN0aW9uLnJlbGVhc2UoKSk7CisgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKFdU
Rk1vdmUoY29ubmVjdGlvbikpOwogCiAgICAgSVBDOjpBdHRhY2htZW50IGNsaWVudFBvcnQobGlz
dGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpOwogICAgIHBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpblByb2Nlc3NQcm94eTo6RGlkQ3JlYXRl
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY2xpZW50UG9ydCwgbV9zdXBwb3J0c0FzeW5jaHJvbm91c1Bs
dWdpbkluaXRpYWxpemF0aW9uKSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0KaW5kZXggMmEyOTczODE5ODljMWQ3
YTcwNDFkYTZlZGE4Yjg5MzFkYjA0ZDg4NC4uOWRmMmFiMGRiZTJkNTc2OTkyZmEzM2MxYzU3NjM0
OWU5ZmZiZDM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9X
S1JlbW90ZU9iamVjdENvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQ29j
b2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQpAQCAtMTA4LDkgKzEwOCw5IEBAIHN0YXRpYyB2b2lk
IGVuY29kZVRvT2JqZWN0U3RyZWFtKFdLUmVtb3RlT2JqZWN0RW5jb2RlciAqZW5jb2RlciwgaWQg
dmFsdWUpCiAgICAgc2l6ZV90IHBvc2l0aW9uID0gZW5jb2Rlci0+X29iamVjdFN0cmVhbS0+c2l6
ZSgpOwogICAgIGVuY29kZXItPl9vYmplY3RTdHJlYW0tPmVsZW1lbnRzKCkuYXBwZW5kKG51bGxw
dHIpOwogCi0gICAgUmVmUHRyPEFQSTo6RGljdGlvbmFyeT4gZW5jb2RlZE9iamVjdCA9IGNyZWF0
ZUVuY29kZWRPYmplY3QoZW5jb2RlciwgdmFsdWUpOworICAgIGF1dG8gZW5jb2RlZE9iamVjdCA9
IGNyZWF0ZUVuY29kZWRPYmplY3QoZW5jb2RlciwgdmFsdWUpOwogICAgIEFTU0VSVCghZW5jb2Rl
ci0+X29iamVjdFN0cmVhbS0+ZWxlbWVudHMoKVtwb3NpdGlvbl0pOwotICAgIGVuY29kZXItPl9v
YmplY3RTdHJlYW0tPmVsZW1lbnRzKClbcG9zaXRpb25dID0gZW5jb2RlZE9iamVjdC5yZWxlYXNl
KCk7CisgICAgZW5jb2Rlci0+X29iamVjdFN0cmVhbS0+ZWxlbWVudHMoKVtwb3NpdGlvbl0gPSBX
VEZNb3ZlKGVuY29kZWRPYmplY3QpOwogfQogCiBzdGF0aWMgdm9pZCBlbmNvZGVJbnZvY2F0aW9u
QXJndW1lbnRzKFdLUmVtb3RlT2JqZWN0RW5jb2RlciAqZW5jb2RlciwgTlNJbnZvY2F0aW9uICpp
bnZvY2F0aW9uLCBOU1VJbnRlZ2VyIGZpcnN0QXJndW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJL2MvV0tJbWFnZS5jcHAKaW5kZXggMjMyNzhiM2E3ZjUzNDAwYjM2ZDg1YzgxODdlMDRiYWUy
MWNhYzA4YS4uMjc0MTE5OWUyMjBkMDQ1ZTA3NzIzZDUxODBhODMyNzFjMmFiZDMyOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLSW1hZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0ltYWdlLmNwcApAQCAtMzgsOCArMzgsOCBAQCBXS1R5
cGVJRCBXS0ltYWdlR2V0VHlwZUlEKCkKIAogV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlKFdLU2l6
ZSBzaXplLCBXS0ltYWdlT3B0aW9ucyBvcHRpb25zKQogewotICAgIFJlZlB0cjxXZWJJbWFnZT4g
d2ViSW1hZ2UgPSBXZWJJbWFnZTo6Y3JlYXRlKHRvSW50U2l6ZShzaXplKSwgdG9JbWFnZU9wdGlv
bnMob3B0aW9ucykpOwotICAgIHJldHVybiB0b0FQSSh3ZWJJbWFnZS5yZWxlYXNlKCkubGVha1Jl
ZigpKTsKKyAgICBhdXRvIHdlYkltYWdlID0gV2ViSW1hZ2U6OmNyZWF0ZSh0b0ludFNpemUoc2l6
ZSksIHRvSW1hZ2VPcHRpb25zKG9wdGlvbnMpKTsKKyAgICByZXR1cm4gdG9BUEkod2ViSW1hZ2Uu
bGVha1JlZigpKTsKIH0KIAogV0tTaXplIFdLSW1hZ2VHZXRTaXplKFdLSW1hZ2VSZWYgaW1hZ2VS
ZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tOdW1iZXIuY3Bw
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLTnVtYmVyLmNwcAppbmRleCAxMTMwMDYz
MmNmMGZiZTI0ZGEyMDE1NGU4MzJiYjgzYmQyYTQ5NDI4Li40MThlMDI5ZWE2N2RiZjNhNmExZmVj
YzA3NTM4N2NjNmEyMTc0ZDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L2MvV0tOdW1iZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS051bWJl
ci5jcHAKQEAgLTM4LDggKzM4LDggQEAgV0tUeXBlSUQgV0tCb29sZWFuR2V0VHlwZUlEKCkKIAog
V0tCb29sZWFuUmVmIFdLQm9vbGVhbkNyZWF0ZShib29sIHZhbHVlKQogewotICAgIFJlZlB0cjxB
UEk6OkJvb2xlYW4+IGJvb2xlYW5PYmplY3QgPSBBUEk6OkJvb2xlYW46OmNyZWF0ZSh2YWx1ZSk7
Ci0gICAgcmV0dXJuIHRvQVBJKGJvb2xlYW5PYmplY3QucmVsZWFzZSgpLmxlYWtSZWYoKSk7Cisg
ICAgYXV0byBib29sZWFuT2JqZWN0ID0gQVBJOjpCb29sZWFuOjpjcmVhdGUodmFsdWUpOworICAg
IHJldHVybiB0b0FQSSgmYm9vbGVhbk9iamVjdC5sZWFrUmVmKCkpOwogfQogCiBib29sIFdLQm9v
bGVhbkdldFZhbHVlKFdLQm9vbGVhblJlZiBib29sZWFuUmVmKQpAQCAtNTQsOCArNTQsOCBAQCBX
S1R5cGVJRCBXS0RvdWJsZUdldFR5cGVJRCgpCiAKIFdLRG91YmxlUmVmIFdLRG91YmxlQ3JlYXRl
KGRvdWJsZSB2YWx1ZSkKIHsKLSAgICBSZWZQdHI8QVBJOjpEb3VibGU+IGRvdWJsZU9iamVjdCA9
IEFQSTo6RG91YmxlOjpjcmVhdGUodmFsdWUpOwotICAgIHJldHVybiB0b0FQSShkb3VibGVPYmpl
Y3QucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgYXV0byBkb3VibGVPYmplY3QgPSBBUEk6OkRv
dWJsZTo6Y3JlYXRlKHZhbHVlKTsKKyAgICByZXR1cm4gdG9BUEkoJmRvdWJsZU9iamVjdC5sZWFr
UmVmKCkpOwogfQogCiBkb3VibGUgV0tEb3VibGVHZXRWYWx1ZShXS0RvdWJsZVJlZiBkb3VibGVS
ZWYpCkBAIC03MCw4ICs3MCw4IEBAIFdLVHlwZUlEIFdLVUludDY0R2V0VHlwZUlEKCkKIAogV0tV
SW50NjRSZWYgV0tVSW50NjRDcmVhdGUodWludDY0X3QgdmFsdWUpCiB7Ci0gICAgUmVmUHRyPEFQ
STo6VUludDY0PiB1aW50NjRPYmplY3QgPSBBUEk6OlVJbnQ2NDo6Y3JlYXRlKHZhbHVlKTsKLSAg
ICByZXR1cm4gdG9BUEkodWludDY0T2JqZWN0LnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgIGF1
dG8gdWludDY0T2JqZWN0ID0gQVBJOjpVSW50NjQ6OmNyZWF0ZSh2YWx1ZSk7CisgICAgcmV0dXJu
IHRvQVBJKCZ1aW50NjRPYmplY3QubGVha1JlZigpKTsKIH0KIAogdWludDY0X3QgV0tVSW50NjRH
ZXRWYWx1ZShXS1VJbnQ2NFJlZiB1aW50NjRSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAKaW5kZXggODgyODY3ZjgwYjViZWNj
NWUyOTM0ODE4NjUyYzkwZmUxZmMxNmEyZi4uNDhjYzBiMjIyYWJjNDYzMTllNTljOTNjYjBmNjEz
OWU1NmVlMDI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLU2Vj
dXJpdHlPcmlnaW5SZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1Nl
Y3VyaXR5T3JpZ2luUmVmLmNwcApAQCAtNDgsOCArNDgsOCBAQCBXS1NlY3VyaXR5T3JpZ2luUmVm
IFdLU2VjdXJpdHlPcmlnaW5DcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKFdLU3RyaW5nUmVm
IGlkZQogCiBXS1NlY3VyaXR5T3JpZ2luUmVmIFdLU2VjdXJpdHlPcmlnaW5DcmVhdGUoV0tTdHJp
bmdSZWYgcHJvdG9jb2wsIFdLU3RyaW5nUmVmIGhvc3QsIGludCBwb3J0KQogewotICAgIFJlZlB0
cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmln
aW46OmNyZWF0ZSh0b0ltcGwocHJvdG9jb2wpLT5zdHJpbmcoKSwgdG9JbXBsKGhvc3QpLT5zdHJp
bmcoKSwgcG9ydCk7Ci0gICAgcmV0dXJuIHRvQVBJKHNlY3VyaXR5T3JpZ2luLnJlbGVhc2UoKS5s
ZWFrUmVmKCkpOworICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGUodG9JbXBsKHByb3RvY29sKS0+c3RyaW5nKCksIHRvSW1wbChob3N0KS0+c3RyaW5n
KCksIHBvcnQpOworICAgIHJldHVybiB0b0FQSShzZWN1cml0eU9yaWdpbi5sZWFrUmVmKCkpOwog
fQogCiBXS1N0cmluZ1JlZiBXS1NlY3VyaXR5T3JpZ2luQ29weURhdGFiYXNlSWRlbnRpZmllcihX
S1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9jL1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggZWMy
YWQ5NmY1MGZlNmI0NWY1MTBhZTNlOGI5MGEwNmVkMjQ4MzJlNC4uODYyZmQ3ZjYwYTg1NWQyOWFi
MjY4YjJmMTYyYjJlMDI1MTE2NDczZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSS9jL1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvV0tTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0zOSwxNCArMzksMTQg
QEAgV0tUeXBlSUQgV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVHZXRUeXBlSUQoKQogCiBXS1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZVJlZiBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNyZWF0ZShKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQog
ewotICAgIFJlZlB0cjxBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVl
ID0gQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShjb250ZXh0LCB2YWx1ZSwgZXhj
ZXB0aW9uKTsKLSAgICByZXR1cm4gdG9BUEkoc2VyaWFsaXplZFZhbHVlLnJlbGVhc2UoKS5sZWFr
UmVmKCkpOworICAgIGF1dG8gc2VyaWFsaXplZFZhbHVlID0gQVBJOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmNyZWF0ZShjb250ZXh0LCB2YWx1ZSwgZXhjZXB0aW9uKTsKKyAgICByZXR1cm4gdG9B
UEkoc2VyaWFsaXplZFZhbHVlLmxlYWtSZWYoKSk7CiB9CiAKIFdLU2VyaWFsaXplZFNjcmlwdFZh
bHVlUmVmIFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlQ3JlYXRlV2l0aEludGVybmFsUmVwcmVzZW50
YXRpb24odm9pZCogaW50ZXJuYWxSZXByZXNlbnRhdGlvbikKIHsKLSAgICBSZWZQdHI8QVBJOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSA9IEFQSTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpjcmVhdGUoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlKj4oaW50ZXJuYWxSZXByZXNlbnRhdGlvbikpOwotICAgIHJldHVybiB0b0FQSShzZXJpYWxp
emVkVmFsdWUucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgYXV0byBzZXJpYWxpemVkVmFsdWUg
PSBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0YXRpY19jYXN0PFdlYkNvcmU6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSo+KGludGVybmFsUmVwcmVzZW50YXRpb24pKTsKKyAgICBy
ZXR1cm4gdG9BUEkoJnNlcmlhbGl6ZWRWYWx1ZS5sZWFrUmVmKCkpOwogfQogCiBKU1ZhbHVlUmVm
IFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlRGVzZXJpYWxpemUoV0tTZXJpYWxpemVkU2NyaXB0VmFs
dWVSZWYgc2NyaXB0VmFsdWVSZWYsIEpTQ29udGV4dFJlZiBjb250ZXh0UmVmLCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2Fp
cm8vV0tJbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jYWlyby9X
S0ltYWdlQ2Fpcm8uY3BwCmluZGV4IGFmYjQ5OTMyYjE3ODFlNTA5MDZkYjkzNjRhMDNkZDlhZWM0
OTViODYuLjg1Yjk5Mzg0NDI3YjRmYWQ3MGJmMjBiNDlhZjIzNWU2YTMyNjQ0MWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwCkBA
IC00NSw3ICs0NSw3IEBAIGNhaXJvX3N1cmZhY2VfdCogV0tJbWFnZUNyZWF0ZUNhaXJvU3VyZmFj
ZShXS0ltYWdlUmVmIGltYWdlUmVmKQogV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlRnJvbUNhaXJv
U3VyZmFjZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIFdLSW1hZ2VPcHRpb25zIG9wdGlvbnMp
CiB7CiAgICAgSW50U2l6ZSBpbWFnZVNpemUoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgo
c3VyZmFjZSksIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlKSk7Ci0gICAg
UmVmUHRyPFdlYkltYWdlPiB3ZWJJbWFnZSA9IFdlYkltYWdlOjpjcmVhdGUoaW1hZ2VTaXplLCB0
b0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7CisgICAgYXV0byB3ZWJJbWFnZSA9IFdlYkltYWdlOjpj
cmVhdGUoaW1hZ2VTaXplLCB0b0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7CiAgICAgYXV0byBncmFw
aGljc0NvbnRleHQgPSB3ZWJJbWFnZS0+Yml0bWFwKCktPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgp
OwogCiAgICAgY2Fpcm9fdCogY3IgPSBncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgp
LT5jcigpOwpAQCAtNTQsNSArNTQsNSBAQCBXS0ltYWdlUmVmIFdLSW1hZ2VDcmVhdGVGcm9tQ2Fp
cm9TdXJmYWNlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgV0tJbWFnZU9wdGlvbgogICAgIGNh
aXJvX3JlY3RhbmdsZShjciwgMCwgMCwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWln
aHQoKSk7CiAgICAgY2Fpcm9fZmlsbChjcik7CiAKLSAgICByZXR1cm4gdG9BUEkod2ViSW1hZ2Uu
cmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKHdlYkltYWdlLmxlYWtSZWYo
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2cvV0tJbWFn
ZUNHLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCmlu
ZGV4IGJjYWI2MGI1Y2RmOTdlZjBkYjIxYTAyNTMxYTgwOGM3MjEyNGI1ZDEuLmM2MjM0M2Q5NTFi
Y2YwNjcyOTg4NWRlZjc3ODhmY2NlYTk1OGNiOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCkBAIC01MCw3ICs1MCw3IEBAIFdLSW1hZ2VSZWYgV0tJ
bWFnZUNyZWF0ZUZyb21DR0ltYWdlKENHSW1hZ2VSZWYgaW1hZ2VSZWYsIFdLSW1hZ2VPcHRpb25z
IG9wdGlvbnMpCiAgICAgICAgIHJldHVybiAwOwogICAgIAogICAgIEludFNpemUgaW1hZ2VTaXpl
KENHSW1hZ2VHZXRXaWR0aChpbWFnZVJlZiksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2VSZWYpKTsK
LSAgICBSZWZQdHI8V2ViSW1hZ2U+IHdlYkltYWdlID0gV2ViSW1hZ2U6OmNyZWF0ZShpbWFnZVNp
emUsIHRvSW1hZ2VPcHRpb25zKG9wdGlvbnMpKTsKKyAgICBhdXRvIHdlYkltYWdlID0gV2ViSW1h
Z2U6OmNyZWF0ZShpbWFnZVNpemUsIHRvSW1hZ2VPcHRpb25zKG9wdGlvbnMpKTsKICAgICBpZiAo
IXdlYkltYWdlLT5iaXRtYXAoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTU4LDUgKzU4LDUg
QEAgV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlRnJvbUNHSW1hZ2UoQ0dJbWFnZVJlZiBpbWFnZVJl
ZiwgV0tJbWFnZU9wdGlvbnMgb3B0aW9ucykKICAgICBGbG9hdFJlY3QgcmVjdChGbG9hdFBvaW50
KDAsIDApLCBpbWFnZVNpemUpOwogICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJSZWN0KHJlY3Qp
OwogICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlUmVmLCBpbWFnZVNp
emUsIHJlY3QsIHJlY3QpOwotICAgIHJldHVybiB0b0FQSSh3ZWJJbWFnZS5yZWxlYXNlKCkubGVh
a1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkod2ViSW1hZ2UubGVha1JlZigpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tDZXJ0aWZpY2F0ZUluZm9N
YWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFjL1dLQ2VydGlmaWNhdGVJbmZv
TWFjLm1tCmluZGV4IGM0NDBiNDY3MGE5NTgxYjVlZTZmMmZmNmY4YTc3YTEwNmFlZTZjMjMuLmE4
ODNiN2QzOTQzNWFiMzc2NTQzYWU2MjIxZGVjZjY3ODZkMDExOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tDZXJ0aWZpY2F0ZUluZm9NYWMubW0KKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL21hYy9XS0NlcnRpZmljYXRlSW5mb01hYy5tbQpA
QCAtMzUsNyArMzUsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogV0tDZXJ0aWZpY2F0ZUlu
Zm9SZWYgV0tDZXJ0aWZpY2F0ZUluZm9DcmVhdGVXaXRoQ2VydGZpY2F0ZUNoYWluKENGQXJyYXlS
ZWYgY2VydGlmaWNhdGVDaGFpbikKIHsKICAgICBSZWZQdHI8V2ViQ2VydGlmaWNhdGVJbmZvPiBj
ZXJ0aWZpY2F0ZUluZm8gPSBXZWJDZXJ0aWZpY2F0ZUluZm86OmNyZWF0ZShDZXJ0aWZpY2F0ZUlu
Zm8oY2VydGlmaWNhdGVDaGFpbikpOwotICAgIHJldHVybiB0b0FQSShjZXJ0aWZpY2F0ZUluZm8u
cmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKGNlcnRpZmljYXRlSW5mby5s
ZWFrUmVmKCkpOwogfQogCiBDRkFycmF5UmVmIFdLQ2VydGlmaWNhdGVJbmZvR2V0Q2VydGlmaWNh
dGVDaGFpbihXS0NlcnRpZmljYXRlSW5mb1JlZiBjZXJ0aWZpY2F0ZUluZm9SZWYpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFjL1dLT2JqQ1R5cGVXcmFwcGVyUmVm
Lm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL21hYy9XS09iakNUeXBlV3JhcHBlclJl
Zi5tbQppbmRleCBlZTAxMjViYTFlYWI0OWZhOWQ0M2ZmZDZhZGY2MDk4NmViYTY2YWQzLi5jZmNi
OTAyZTE1NWNkZjcxMWQ0ZWZjYWY0ZGYwODgwODA3NjMwMTUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFjL1dLT2JqQ1R5cGVXcmFwcGVyUmVmLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tPYmpDVHlwZVdyYXBwZXJSZWYubW0KQEAg
LTM4LDggKzM4LDggQEAgV0tUeXBlSUQgV0tPYmpDVHlwZVdyYXBwZXJHZXRUeXBlSUQoKQogCiBX
S09iakNUeXBlV3JhcHBlclJlZiBXS09iakNUeXBlV3JhcHBlckNyZWF0ZShpZCBvYmplY3QpCiB7
Ci0gICAgUmVmUHRyPE9iakNPYmplY3RHcmFwaD4gb2JqZWN0V3JhcHBlciA9IE9iakNPYmplY3RH
cmFwaDo6Y3JlYXRlKG9iamVjdCk7Ci0gICAgcmV0dXJuIHRvQVBJKG9iamVjdFdyYXBwZXIucmVs
ZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgYXV0byBvYmplY3RXcmFwcGVyID0gT2JqQ09iamVjdEdy
YXBoOjpjcmVhdGUob2JqZWN0KTsKKyAgICByZXR1cm4gdG9BUEkoJm9iamVjdFdyYXBwZXIubGVh
a1JlZigpKTsKIH0KIAogaWQgV0tPYmpDVHlwZVdyYXBwZXJHZXRPYmplY3QoV0tPYmpDVHlwZVdy
YXBwZXJSZWYgd3JhcHBlclJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9tYWMvV0tXZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9t
YWMvV0tXZWJBcmNoaXZlLmNwcAppbmRleCA4Njc2Y2M2ZTIzMzI3YzM5MjY0ZjA3MzYzMGRlZjA4
ZmNkMjE5YWZiLi5lNmFhMjRlNTZjMTg1ZTEwMDdkMzIxYzRkMDgyZGFhYmIzMjBkNzU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFjL1dLV2ViQXJjaGl2ZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL21hYy9XS1dlYkFyY2hpdmUuY3BwCkBA
IC00MywzOCArNDMsMzggQEAgV0tUeXBlSUQgV0tXZWJBcmNoaXZlR2V0VHlwZUlEKCkKIAogV0tX
ZWJBcmNoaXZlUmVmIFdLV2ViQXJjaGl2ZUNyZWF0ZShXS1dlYkFyY2hpdmVSZXNvdXJjZVJlZiBt
YWluUmVzb3VyY2VSZWYsIFdLQXJyYXlSZWYgc3VicmVzb3VyY2VzUmVmLCBXS0FycmF5UmVmIHN1
YmZyYW1lQXJjaGl2ZXNSZWYpCiB7Ci0gICAgUmVmUHRyPEFQSTo6V2ViQXJjaGl2ZT4gd2ViQXJj
aGl2ZSA9IEFQSTo6V2ViQXJjaGl2ZTo6Y3JlYXRlKHRvSW1wbChtYWluUmVzb3VyY2VSZWYpLCB0
b0ltcGwoc3VicmVzb3VyY2VzUmVmKSwgdG9JbXBsKHN1YmZyYW1lQXJjaGl2ZXNSZWYpKTsKLSAg
ICByZXR1cm4gdG9BUEkod2ViQXJjaGl2ZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICBhdXRv
IHdlYkFyY2hpdmUgPSBBUEk6OldlYkFyY2hpdmU6OmNyZWF0ZSh0b0ltcGwobWFpblJlc291cmNl
UmVmKSwgdG9JbXBsKHN1YnJlc291cmNlc1JlZiksIHRvSW1wbChzdWJmcmFtZUFyY2hpdmVzUmVm
KSk7CisgICAgcmV0dXJuIHRvQVBJKCZ3ZWJBcmNoaXZlLmxlYWtSZWYoKSk7CiB9CiAKIFdLV2Vi
QXJjaGl2ZVJlZiBXS1dlYkFyY2hpdmVDcmVhdGVXaXRoRGF0YShXS0RhdGFSZWYgZGF0YVJlZikK
IHsKLSAgICBSZWZQdHI8QVBJOjpXZWJBcmNoaXZlPiB3ZWJBcmNoaXZlID0gQVBJOjpXZWJBcmNo
aXZlOjpjcmVhdGUodG9JbXBsKGRhdGFSZWYpKTsKLSAgICByZXR1cm4gdG9BUEkod2ViQXJjaGl2
ZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICBhdXRvIHdlYkFyY2hpdmUgPSBBUEk6OldlYkFy
Y2hpdmU6OmNyZWF0ZSh0b0ltcGwoZGF0YVJlZikpOworICAgIHJldHVybiB0b0FQSSgmd2ViQXJj
aGl2ZS5sZWFrUmVmKCkpOwogfQogCiBXS1dlYkFyY2hpdmVSZWYgV0tXZWJBcmNoaXZlQ3JlYXRl
RnJvbVJhbmdlKFdLQnVuZGxlUmFuZ2VIYW5kbGVSZWYgcmFuZ2VIYW5kbGVSZWYpCiB7Ci0gICAg
UmVmUHRyPEFQSTo6V2ViQXJjaGl2ZT4gd2ViQXJjaGl2ZSA9IEFQSTo6V2ViQXJjaGl2ZTo6Y3Jl
YXRlKHRvSW1wbChyYW5nZUhhbmRsZVJlZiktPmNvcmVSYW5nZSgpKTsKLSAgICByZXR1cm4gdG9B
UEkod2ViQXJjaGl2ZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICBhdXRvIHdlYkFyY2hpdmUg
PSBBUEk6OldlYkFyY2hpdmU6OmNyZWF0ZSh0b0ltcGwocmFuZ2VIYW5kbGVSZWYpLT5jb3JlUmFu
Z2UoKSk7CisgICAgcmV0dXJuIHRvQVBJKCZ3ZWJBcmNoaXZlLmxlYWtSZWYoKSk7CiB9CiAKIFdL
V2ViQXJjaGl2ZVJlc291cmNlUmVmIFdLV2ViQXJjaGl2ZUNvcHlNYWluUmVzb3VyY2UoV0tXZWJB
cmNoaXZlUmVmIHdlYkFyY2hpdmVSZWYpCiB7CiAgICAgUmVmUHRyPEFQSTo6V2ViQXJjaGl2ZVJl
c291cmNlPiBtYWluUmVzb3VyY2UgPSB0b0ltcGwod2ViQXJjaGl2ZVJlZiktPm1haW5SZXNvdXJj
ZSgpOwotICAgIHJldHVybiB0b0FQSShtYWluUmVzb3VyY2UucmVsZWFzZSgpLmxlYWtSZWYoKSk7
CisgICAgcmV0dXJuIHRvQVBJKG1haW5SZXNvdXJjZS5sZWFrUmVmKCkpOwogfQogCiBXS0FycmF5
UmVmIFdLV2ViQXJjaGl2ZUNvcHlTdWJyZXNvdXJjZXMoV0tXZWJBcmNoaXZlUmVmIHdlYkFyY2hp
dmVSZWYpCiB7CiAgICAgUmVmUHRyPEFQSTo6QXJyYXk+IHN1YnJlc291cmNlcyA9IHRvSW1wbCh3
ZWJBcmNoaXZlUmVmKS0+c3VicmVzb3VyY2VzKCk7Ci0gICAgcmV0dXJuIHRvQVBJKHN1YnJlc291
cmNlcy5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkoc3VicmVzb3VyY2Vz
LmxlYWtSZWYoKSk7CiB9CiAKIFdLQXJyYXlSZWYgV0tXZWJBcmNoaXZlQ29weVN1YmZyYW1lQXJj
aGl2ZXMoV0tXZWJBcmNoaXZlUmVmIHdlYkFyY2hpdmVSZWYpCiB7CiAgICAgUmVmUHRyPEFQSTo6
QXJyYXk+IHN1YmZyYW1lQXJjaGl2ZXMgPSB0b0ltcGwod2ViQXJjaGl2ZVJlZiktPnN1YmZyYW1l
QXJjaGl2ZXMoKTsKLSAgICByZXR1cm4gdG9BUEkoc3ViZnJhbWVBcmNoaXZlcy5yZWxlYXNlKCku
bGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkoc3ViZnJhbWVBcmNoaXZlcy5sZWFrUmVmKCkp
OwogfQogCiBXS0RhdGFSZWYgV0tXZWJBcmNoaXZlQ29weURhdGEoV0tXZWJBcmNoaXZlUmVmIHdl
YkFyY2hpdmVSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFj
L1dLV2ViQXJjaGl2ZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9t
YWMvV0tXZWJBcmNoaXZlUmVzb3VyY2UuY3BwCmluZGV4IDg0MzJkOWViNTcxOGEwNDQxYTMxNjc3
Y2UyMWQyMzE5N2ZmZWVlNDQuLmM4MTljMDIxNjhiOTNkMTEzY2IwZTA2NjQzNTk1YjY5OTQ0M2Zj
NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tXZWJBcmNo
aXZlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tX
ZWJBcmNoaXZlUmVzb3VyY2UuY3BwCkBAIC0zOSw4ICszOSw4IEBAIFdLVHlwZUlEIFdLV2ViQXJj
aGl2ZVJlc291cmNlR2V0VHlwZUlEKCkKIAogV0tXZWJBcmNoaXZlUmVzb3VyY2VSZWYgV0tXZWJB
cmNoaXZlUmVzb3VyY2VDcmVhdGUoV0tEYXRhUmVmIGRhdGFSZWYsIFdLVVJMUmVmIFVSTFJlZiwg
V0tTdHJpbmdSZWYgTUlNRVR5cGVSZWYsIFdLU3RyaW5nUmVmIHRleHRFbmNvZGluZ1JlZikKIHsK
LSAgICBSZWZQdHI8QVBJOjpXZWJBcmNoaXZlUmVzb3VyY2U+IHdlYkFyY2hpdmVSZXNvdXJjZSA9
IEFQSTo6V2ViQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUodG9JbXBsKGRhdGFSZWYpLCB0b1dURlN0
cmluZyhVUkxSZWYpLCB0b1dURlN0cmluZyhNSU1FVHlwZVJlZiksIHRvV1RGU3RyaW5nKHRleHRF
bmNvZGluZ1JlZikpOwotICAgIHJldHVybiB0b0FQSSh3ZWJBcmNoaXZlUmVzb3VyY2UucmVsZWFz
ZSgpLmxlYWtSZWYoKSk7CisgICAgYXV0byB3ZWJBcmNoaXZlUmVzb3VyY2UgPSBBUEk6OldlYkFy
Y2hpdmVSZXNvdXJjZTo6Y3JlYXRlKHRvSW1wbChkYXRhUmVmKSwgdG9XVEZTdHJpbmcoVVJMUmVm
KSwgdG9XVEZTdHJpbmcoTUlNRVR5cGVSZWYpLCB0b1dURlN0cmluZyh0ZXh0RW5jb2RpbmdSZWYp
KTsKKyAgICByZXR1cm4gdG9BUEkoJndlYkFyY2hpdmVSZXNvdXJjZS5sZWFrUmVmKCkpOwogfQog
CiBXS0RhdGFSZWYgV0tXZWJBcmNoaXZlUmVzb3VyY2VDb3B5RGF0YShXS1dlYkFyY2hpdmVSZXNv
dXJjZVJlZiB3ZWJBcmNoaXZlUmVzb3VyY2VSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJV2ViQXJjaGl2ZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElXZWJB
cmNoaXZlLm1tCmluZGV4IDhlMTdlNWJiNTY4YWRjZDk1ZDM2YzNjOGYzOGQ2OGNjYzI2MDE2YjAu
LjkyOTAzYjM0N2E0OWZjZWNmYTZjMzVjNTllMmY2ZDY5MTZkOTgyZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUElXZWJBcmNoaXZlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUElXZWJBcmNoaXZlLm1tCkBAIC04Miw3ICs4Miw3IEBAIFdlYkFyY2hpdmU6Oldl
YkFyY2hpdmUoV2ViQXJjaGl2ZVJlc291cmNlKiBtYWluUmVzb3VyY2UsIFBhc3NSZWZQdHI8QVBJ
OjpBcnJheT4KICAgICAgICAgY29yZVN1YmZyYW1lTGVnYWN5V2ViQXJjaGl2ZXMudW5jaGVja2Vk
QXBwZW5kKHN1YmZyYW1lV2ViQXJjaGl2ZS0+Y29yZUxlZ2FjeVdlYkFyY2hpdmUoKSk7CiAgICAg
fQogCi0gICAgbV9sZWdhY3lXZWJBcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNv
cmVNYWluUmVzb3VyY2UucmVsZWFzZSgpLCBXVEZNb3ZlKGNvcmVBcmNoaXZlUmVzb3VyY2VzKSwg
V1RGTW92ZShjb3JlU3ViZnJhbWVMZWdhY3lXZWJBcmNoaXZlcykpOworICAgIG1fbGVnYWN5V2Vi
QXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShXVEZNb3ZlKGNvcmVNYWluUmVzb3Vy
Y2UpLCBXVEZNb3ZlKGNvcmVBcmNoaXZlUmVzb3VyY2VzKSwgV1RGTW92ZShjb3JlU3ViZnJhbWVM
ZWdhY3lXZWJBcmNoaXZlcykpOwogfQogCiBXZWJBcmNoaXZlOjpXZWJBcmNoaXZlKEFQSTo6RGF0
YSogZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcAppbmRleCBlYmY5NzQxMTNhYzEw
YzE5YWE1NWE0YjMyYmFjZTI0NzRhZGFmYjY5Li5hZDcwNjNiMjRmNmYwOGVhZTJiNjAzNzI2MjZk
ZGJkMGFmYmQzNDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwCkBAIC0xNDUsMTMg
KzE0NSwxMyBAQCBQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z2luTW9kdWxlPiBOZXRzY2FwZVBsdWdp
bk1vZHVsZTo6Z2V0T3JDcmVhdGUoY29uc3QgU3RyaW5nJgogICAgICAgICAgICAgcmV0dXJuIHBs
dWdpbk1vZHVsZTsKICAgICB9CiAKLSAgICBSZWZQdHI8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+IHBs
dWdpbk1vZHVsZShhZG9wdFJlZihuZXcgTmV0c2NhcGVQbHVnaW5Nb2R1bGUocGx1Z2luUGF0aCkp
KTsKKyAgICBhdXRvIHBsdWdpbk1vZHVsZShhZG9wdFJlZigqbmV3IE5ldHNjYXBlUGx1Z2luTW9k
dWxlKHBsdWdpblBhdGgpKSk7CiAgICAgCiAgICAgLy8gVHJ5IHRvIGxvYWQgYW5kIGluaXRpYWxp
emUgdGhlIHBsdWctaW4gbW9kdWxlLgogICAgIGlmICghcGx1Z2luTW9kdWxlLT5sb2FkKCkpCi0g
ICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKLSAgICByZXR1
cm4gcGx1Z2luTW9kdWxlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92ZShwbHVnaW5Nb2R1
bGUpOwogfQogCiB2b2lkIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjppbmNyZW1lbnRMb2FkQ291bnQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcAppbmRleCA0ZWVjYmNj
OTk3NzQyOTRkMzQ5ZGQxOWNkYjMwMjhiMDQ5YzFiYjU3Li43ZTBkY2I2MzUxMTMwNWJkYmIwYjUw
NTUyMzg4MDA0MDFmMjMxMTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hh
cmVhYmxlQml0bWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0
bWFwLmNwcApAQCAtOTksMTEgKzk5LDExIEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdzCiBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBIYW5kbGUm
IGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uIHByb3RlY3Rpb24pCiB7CiAgICAgLy8g
Q3JlYXRlIHRoZSBzaGFyZWQgbWVtb3J5LgotICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJl
ZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6bWFwKGhhbmRsZS5tX2hhbmRsZSwgcHJvdGVjdGlvbik7
CisgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6Om1hcChoYW5kbGUubV9oYW5k
bGUsIHByb3RlY3Rpb24pOwogICAgIGlmICghc2hhcmVkTWVtb3J5KQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiBjcmVhdGUoaGFuZGxlLm1fc2l6ZSwgaGFuZGxlLm1fZmxh
Z3MsIHNoYXJlZE1lbW9yeS5yZWxlYXNlKCkpOworICAgIHJldHVybiBjcmVhdGUoaGFuZGxlLm1f
c2l6ZSwgaGFuZGxlLm1fZmxhZ3MsIFdURk1vdmUoc2hhcmVkTWVtb3J5KSk7CiB9CiAKIGJvb2wg
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVIYW5kbGUoSGFuZGxlJiBoYW5kbGUsIFNoYXJlZE1lbW9y
eTo6UHJvdGVjdGlvbiBwcm90ZWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFi
bGVSZXNvdXJjZS5jcHAKaW5kZXggN2Y5MTI3M2VkYzMwOTRiMGI5YjllNjkzNzUzN2ZkMzkzZTk1
ZDMzMy4uNzRhZmQ0YzY2NzY2YzEwNzY5YzkwMWY5YmZmOWE5YzdjN2MyOWE0OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCkBAIC0xMTQsMTEgKzExNCwx
MSBAQCBSZWY8U2hhcmVhYmxlUmVzb3VyY2U+IFNoYXJlYWJsZVJlc291cmNlOjpjcmVhdGUoUGFz
c1JlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZAogCiBQYXNzUmVmUHRyPFNoYXJlYWJsZVJlc291
cmNlPiBTaGFyZWFibGVSZXNvdXJjZTo6bWFwKGNvbnN0IEhhbmRsZSYgaGFuZGxlKQogewotICAg
IFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6bWFwKGhh
bmRsZS5tX2hhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAg
YXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6Om1hcChoYW5kbGUubV9oYW5kbGUsIFNo
YXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgIGlmICghc2hhcmVkTWVtb3J5
KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBjcmVhdGUoc2hhcmVkTWVtb3J5LnJl
bGVhc2UoKSwgaGFuZGxlLm1fb2Zmc2V0LCBoYW5kbGUubV9zaXplKTsKKyAgICByZXR1cm4gY3Jl
YXRlKFdURk1vdmUoc2hhcmVkTWVtb3J5KSwgaGFuZGxlLm1fb2Zmc2V0LCBoYW5kbGUubV9zaXpl
KTsKIH0KIAogU2hhcmVhYmxlUmVzb3VyY2U6OlNoYXJlYWJsZVJlc291cmNlKFBhc3NSZWZQdHI8
U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnksIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgc2l6
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNH
dGsuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAK
aW5kZXggNTAxZDZmMTM3MDkwYzkzNDZhMmZlNGQxMTlmMDQwMWE1NDI0M2NkZS4uN2EyZDZjNGFh
ZWRlMjJlNjdkYWJjOTdlYWY4YWRjZjY3ZGU2MjlhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKQEAgLTIyOSw3ICsyMjksNyBAQCBib29s
IEFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVy
LCBEcmFnRGF0YSYgZHJhZ0RhdAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAot
ICAgIGRyYWdEYXRhID0gRHJhZ0RhdGEocGxhdGZvcm1EYXRhLnJlbGVhc2UoKS5sZWFrUmVmKCks
IGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgc3RhdGljX2Nhc3Q8RHJhZ09wZXJhdGlv
bj4oc291cmNlT3BlcmF0aW9uTWFzayksCisgICAgZHJhZ0RhdGEgPSBEcmFnRGF0YShwbGF0Zm9y
bURhdGEubGVha1JlZigpLCBjbGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIHN0YXRpY19j
YXN0PERyYWdPcGVyYXRpb24+KHNvdXJjZU9wZXJhdGlvbk1hc2spLAogICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+KGZsYWdzKSk7CiAKICAg
ICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9Db29yZGluYXRlZEdyYXBoaWNzL1dLVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS1ZpZXcuY3BwCmluZGV4IGMxYWIyMmZhMWEz
NTVmMjNlMmJmNzA5MjIxYmZmZjQ0NWE4OTMyOTQuLjhlYzIwYjExODQ2ZmZkOTU5ZTBiNDI3OGM0
OTBmYzA4ZDY2YmNlZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9Db29yZGluYXRlZEdyYXBoaWNzL1dLVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tWaWV3LmNwcApAQCAtMzIsOCArMzIs
OCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBXS1ZpZXdSZWYgV0tWaWV3Q3JlYXRlKFdL
UGFnZUNvbmZpZ3VyYXRpb25SZWYgcGFnZUNvbmZpZ3VyYXRpb24pCiB7Ci0gICAgUmVmUHRyPFdl
YlZpZXc+IHdlYlZpZXcgPSBXZWJWaWV3OjpjcmVhdGUoKnRvSW1wbChwYWdlQ29uZmlndXJhdGlv
bikpOwotICAgIHJldHVybiB0b0FQSSh3ZWJWaWV3LnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAg
IGF1dG8gd2ViVmlldyA9IFdlYlZpZXc6OmNyZWF0ZSgqdG9JbXBsKHBhZ2VDb25maWd1cmF0aW9u
KSk7CisgICAgcmV0dXJuIHRvQVBJKHdlYlZpZXcubGVha1JlZigpKTsKIH0KIAogV0tTaXplIFdL
Vmlld0dldFNpemUoV0tWaWV3UmVmIHZpZXdSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tCYXR0ZXJ5U3RhdHVzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS0JhdHRlcnlTdGF0dXMuY3BwCmluZGV4IDk1Mzg1MGQ4YmMyYzI3ZGIx
MDNhNTQwYzQ4ZmM1OWY1ZDZhZTAzNTYuLjA5ZjhjYzc2OTk2OWFkZDFmMmJhYTc3ZmI5YjgwY2Q2
YzBkM2RjMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0Jh
dHRlcnlTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0Jh
dHRlcnlTdGF0dXMuY3BwCkBAIC00Niw4ICs0Niw4IEBAIFdLVHlwZUlEIFdLQmF0dGVyeVN0YXR1
c0dldFR5cGVJRCgpCiBXS0JhdHRlcnlTdGF0dXNSZWYgV0tCYXR0ZXJ5U3RhdHVzQ3JlYXRlKGJv
b2wgaXNDaGFyZ2luZywgZG91YmxlIGNoYXJnaW5nVGltZSwgZG91YmxlIGRpc2NoYXJnaW5nVGlt
ZSwgZG91YmxlIGxldmVsKQogewogI2lmIEVOQUJMRShCQVRURVJZX1NUQVRVUykKLSAgICBSZWZQ
dHI8V2ViQmF0dGVyeVN0YXR1cz4gc3RhdHVzID0gV2ViQmF0dGVyeVN0YXR1czo6Y3JlYXRlKGlz
Q2hhcmdpbmcsIGNoYXJnaW5nVGltZSwgZGlzY2hhcmdpbmdUaW1lLCBsZXZlbCk7Ci0gICAgcmV0
dXJuIHRvQVBJKHN0YXR1cy5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICBhdXRvIHN0YXR1cyA9
IFdlYkJhdHRlcnlTdGF0dXM6OmNyZWF0ZShpc0NoYXJnaW5nLCBjaGFyZ2luZ1RpbWUsIGRpc2No
YXJnaW5nVGltZSwgbGV2ZWwpOworICAgIHJldHVybiB0b0FQSSgmc3RhdHVzLmxlYWtSZWYoKSk7
CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShpc0NoYXJnaW5nKTsKICAgICBVTlVTRURfUEFSQU0o
Y2hhcmdpbmdUaW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS0dlb2xvY2F0aW9uUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAKaW5kZXggNWQ5NGYzZTg2MmJhMjliOWNjY2Zm
OWVlNTA2MGQxNjdlYTYwMWM3OC4uOGI0YzViNjUwNWFhMWRhMjdmZGVjZTVmN2I4NTVkMzY4YjQx
NGJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9j
YXRpb25Qb3NpdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
R2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAKQEAgLTQzLDYgKzQzLDYgQEAgV0tHZW9sb2NhdGlvblBv
c2l0aW9uUmVmIFdLR2VvbG9jYXRpb25Qb3NpdGlvbkNyZWF0ZShkb3VibGUgdGltZXN0YW1wLCBk
b3VibGUgbGEKIAogV0tHZW9sb2NhdGlvblBvc2l0aW9uUmVmIFdLR2VvbG9jYXRpb25Qb3NpdGlv
bkNyZWF0ZV9iKGRvdWJsZSB0aW1lc3RhbXAsIGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdp
dHVkZSwgZG91YmxlIGFjY3VyYWN5LCBib29sIHByb3ZpZGVzQWx0aXR1ZGUsIGRvdWJsZSBhbHRp
dHVkZSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlQWNjdXJhY3ksIGRvdWJsZSBhbHRpdHVkZUFjY3Vy
YWN5LCBib29sIHByb3ZpZGVzSGVhZGluZywgZG91YmxlIGhlYWRpbmcsIGJvb2wgcHJvdmlkZXNT
cGVlZCwgZG91YmxlIHNwZWVkKQogewotICAgIFJlZlB0cjxXZWJHZW9sb2NhdGlvblBvc2l0aW9u
PiBwb3NpdGlvbiA9IFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZSh0aW1lc3RhbXAsIGxh
dGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5LCBwcm92aWRlc0FsdGl0dWRlLCBhbHRpdHVkZSwg
cHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBhbHRpdHVkZUFjY3VyYWN5LCBwcm92aWRlc0hlYWRp
bmcsIGhlYWRpbmcsIHByb3ZpZGVzU3BlZWQsIHNwZWVkKTsKLSAgICByZXR1cm4gdG9BUEkocG9z
aXRpb24ucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgYXV0byBwb3NpdGlvbiA9IFdlYkdlb2xv
Y2F0aW9uUG9zaXRpb246OmNyZWF0ZSh0aW1lc3RhbXAsIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFj
Y3VyYWN5LCBwcm92aWRlc0FsdGl0dWRlLCBhbHRpdHVkZSwgcHJvdmlkZXNBbHRpdHVkZUFjY3Vy
YWN5LCBhbHRpdHVkZUFjY3VyYWN5LCBwcm92aWRlc0hlYWRpbmcsIGhlYWRpbmcsIHByb3ZpZGVz
U3BlZWQsIHNwZWVkKTsKKyAgICByZXR1cm4gdG9BUEkocG9zaXRpb24ubGVha1JlZigpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0dyYW1tYXJEZXRh
aWwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLR3JhbW1hckRldGFpbC5j
cHAKaW5kZXggMDY1Zjk5YmE3NTBhOWFkOTg1NDNiYmRhYjQ0YmJlZjU3YThiNzQwNy4uYWZkOTg5
NWRkZTNkZjRlM2Q2MTc4NzI0N2E0M2I2MWE4ZTlmN2VjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLR3JhbW1hckRldGFpbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLR3JhbW1hckRldGFpbC5jcHAKQEAgLTQwLDggKzQwLDgg
QEAgV0tUeXBlSUQgV0tHcmFtbWFyRGV0YWlsR2V0VHlwZUlEKCkKIAogV0tHcmFtbWFyRGV0YWls
UmVmIFdLR3JhbW1hckRldGFpbENyZWF0ZShpbnQgbG9jYXRpb24sIGludCBsZW5ndGgsIFdLQXJy
YXlSZWYgZ3Vlc3NlcywgV0tTdHJpbmdSZWYgdXNlckRlc2NyaXB0aW9uKQogewotICAgIFJlZlB0
cjxXZWJHcmFtbWFyRGV0YWlsPiBkZXRhaWwgPSBXZWJHcmFtbWFyRGV0YWlsOjpjcmVhdGUobG9j
YXRpb24sIGxlbmd0aCwgdG9JbXBsKGd1ZXNzZXMpLCB0b1dURlN0cmluZyh1c2VyRGVzY3JpcHRp
b24pKTsKLSAgICByZXR1cm4gdG9BUEkoZGV0YWlsLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAg
IGF1dG8gZGV0YWlsID0gV2ViR3JhbW1hckRldGFpbDo6Y3JlYXRlKGxvY2F0aW9uLCBsZW5ndGgs
IHRvSW1wbChndWVzc2VzKSwgdG9XVEZTdHJpbmcodXNlckRlc2NyaXB0aW9uKSk7CisgICAgcmV0
dXJuIHRvQVBJKGRldGFpbC5sZWFrUmVmKCkpOwogfQogCiBpbnQgV0tHcmFtbWFyRGV0YWlsR2V0
TG9jYXRpb24oV0tHcmFtbWFyRGV0YWlsUmVmIGdyYW1tYXJEZXRhaWxSZWYpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IDhlMzAzM2UzMDllZDQyNThjMmU3
NDY1YThmNjNjNDZiYjY0MjliYjUuLjEwZDA4ODIzNDQ0ZjIxZmE4YTU0NDc4NGIzZjYyYTEzMmY1
M2QwYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC00
MzksNyArNDM5LDcgQEAgV0tUeXBlUmVmIFdLUGFnZUNvcHlTZXNzaW9uU3RhdGUoV0tQYWdlUmVm
IHBhZ2VSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZVNlc3Npb24KICAgICB9KTsKIAogICAgIGlm
IChzaG91bGRSZXR1cm5EYXRhKQotICAgICAgICByZXR1cm4gdG9BUEkoZW5jb2RlTGVnYWN5U2Vz
c2lvblN0YXRlKHNlc3Npb25TdGF0ZSkucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgICAgIHJl
dHVybiB0b0FQSShlbmNvZGVMZWdhY3lTZXNzaW9uU3RhdGUoc2Vzc2lvblN0YXRlKS5sZWFrUmVm
KCkpOwogCiAgICAgcmV0dXJuIHRvQVBJKCZBUEk6OlNlc3Npb25TdGF0ZTo6Y3JlYXRlKFdURk1v
dmUoc2Vzc2lvblN0YXRlKSkubGVha1JlZigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwCmluZGV4IDNjYzYwOTU0ZDhjZGY5OWEyYTg3MDlh
NGUyZDdlMWVmNWI3NzFlY2QuLjRlMjE3NzE4YTU2NGE5YzEyZTVmNDU5MmE0ZTRjYTkyMTg3ZWVi
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91
cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNw
cApAQCAtNDEsOCArNDEsOCBAQCBXS1R5cGVJRCBXS1BhZ2VHcm91cEdldFR5cGVJRCgpCiAKIFdL
UGFnZUdyb3VwUmVmIFdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIoV0tTdHJpbmdSZWYg
aWRlbnRpZmllcikKIHsKLSAgICBSZWZQdHI8V2ViUGFnZUdyb3VwPiBwYWdlR3JvdXAgPSBXZWJQ
YWdlR3JvdXA6OmNyZWF0ZSh0b1dURlN0cmluZyhpZGVudGlmaWVyKSk7Ci0gICAgcmV0dXJuIHRv
QVBJKHBhZ2VHcm91cC5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICBhdXRvIHBhZ2VHcm91cCA9
IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKHRvV1RGU3RyaW5nKGlkZW50aWZpZXIpKTsKKyAgICByZXR1
cm4gdG9BUEkocGFnZUdyb3VwLmxlYWtSZWYoKSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLUGFnZUdy
b3VwQ29weUlkZW50aWZpZXIoV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCmluZGV4IDYwNTMy
NGQ1NmU1MjNhNmViMTA2MWNlZTNmZmIyYWMzMmVmYjQ0Y2MuLmU5ZDBmMTQ1ODg5NWJjY2Y1ODJl
NGUwMWU3OGU5NTU2N2M0OWVkYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKQEAgLTQ2LDIwICs0NiwyMCBAQCBXS1R5cGVJRCBXS1By
ZWZlcmVuY2VzR2V0VHlwZUlEKCkKIAogV0tQcmVmZXJlbmNlc1JlZiBXS1ByZWZlcmVuY2VzQ3Jl
YXRlKCkKIHsKLSAgICBSZWZQdHI8V2ViUHJlZmVyZW5jZXM+IHByZWZlcmVuY2VzID0gV2ViUHJl
ZmVyZW5jZXM6OmNyZWF0ZVdpdGhMZWdhY3lEZWZhdWx0cyhTdHJpbmcoKSwgIldlYktpdDIuIiwg
IldlYktpdDIuIik7Ci0gICAgcmV0dXJuIHRvQVBJKHByZWZlcmVuY2VzLnJlbGVhc2UoKS5sZWFr
UmVmKCkpOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlV2l0
aExlZ2FjeURlZmF1bHRzKFN0cmluZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKKyAgICBy
ZXR1cm4gdG9BUEkocHJlZmVyZW5jZXMubGVha1JlZigpKTsKIH0KIAogV0tQcmVmZXJlbmNlc1Jl
ZiBXS1ByZWZlcmVuY2VzQ3JlYXRlV2l0aElkZW50aWZpZXIoV0tTdHJpbmdSZWYgaWRlbnRpZmll
clJlZikKIHsKLSAgICBSZWZQdHI8V2ViUHJlZmVyZW5jZXM+IHByZWZlcmVuY2VzID0gV2ViUHJl
ZmVyZW5jZXM6OmNyZWF0ZVdpdGhMZWdhY3lEZWZhdWx0cyh0b1dURlN0cmluZyhpZGVudGlmaWVy
UmVmKSwgIldlYktpdDIuIiwgIldlYktpdDIuIik7Ci0gICAgcmV0dXJuIHRvQVBJKHByZWZlcmVu
Y2VzLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVm
ZXJlbmNlczo6Y3JlYXRlV2l0aExlZ2FjeURlZmF1bHRzKHRvV1RGU3RyaW5nKGlkZW50aWZpZXJS
ZWYpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKKyAgICByZXR1cm4gdG9BUEkocHJlZmVyZW5j
ZXMubGVha1JlZigpKTsKIH0KIAogV0tQcmVmZXJlbmNlc1JlZiBXS1ByZWZlcmVuY2VzQ3JlYXRl
Q29weShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKQogewotICAgIFJlZlB0cjxXZWJQ
cmVmZXJlbmNlcz4gcHJlZmVyZW5jZXMgPSB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5jb3B5KCk7
Ci0gICAgcmV0dXJuIHRvQVBJKHByZWZlcmVuY2VzLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAg
IGF1dG8gcHJlZmVyZW5jZXMgPSB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5jb3B5KCk7CisgICAg
cmV0dXJuIHRvQVBJKHByZWZlcmVuY2VzLmxlYWtSZWYoKSk7CiB9CiAKIHZvaWQgV0tQcmVmZXJl
bmNlc0VuYWJsZUFsbEV4cGVyaW1lbnRhbEZlYXR1cmVzKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVy
ZW5jZXNSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tT
ZXNzaW9uUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Nlc3Npb25S
ZWYuY3BwCmluZGV4IGE5MzU3OTA4NzI1NDZlMTc3ZTkwYzEzZTZlMzU4ZDcxNmZkYzVhMGMuLmZl
ZGMwZThhNzg5ZGVlNTc2ZWJlYmQ2YmY5NjE3NTE3N2M0NTQ3ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Nlc3Npb25SZWYuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Nlc3Npb25SZWYuY3BwCkBAIC0zNyw4ICszNyw4IEBA
IFdLU2Vzc2lvblJlZiBXS1Nlc3Npb25DcmVhdGUoYm9vbCBpc0VwaGVtZXJhbCkKICAgICBpZiAo
IWlzRXBoZW1lcmFsKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxBUEk6
OlNlc3Npb24+IHNlc3Npb24gPSBBUEk6OlNlc3Npb246OmNyZWF0ZUVwaGVtZXJhbCgpOwotICAg
IHJldHVybiB0b0FQSShzZXNzaW9uLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgIGF1dG8gc2Vz
c2lvbiA9IEFQSTo6U2Vzc2lvbjo6Y3JlYXRlRXBoZW1lcmFsKCk7CisgICAgcmV0dXJuIHRvQVBJ
KCZzZXNzaW9uLmxlYWtSZWYoKSk7CiB9CiAKIFdLVHlwZUlEIFdLU2Vzc2lvbkdldFR5cGVJRCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tTZXNzaW9uU3Rh
dGVSZWYuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLU2Vzc2lvblN0YXRl
UmVmLmNwcAppbmRleCA5OGU3MTc1MTlkNTZhMjc1YTUwNDExNWZjZDg2ZmFlZjQ1NWMwZDY1Li5j
OTM4ZjUxNGNhMzhlMjI0NDBlY2YyYWIwYjI0ZTZkY2FiMWQ1OWRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tTZXNzaW9uU3RhdGVSZWYuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Nlc3Npb25TdGF0ZVJlZi5jcHAKQEAgLTQ4
LDUgKzQ4LDUgQEAgV0tTZXNzaW9uU3RhdGVSZWYgV0tTZXNzaW9uU3RhdGVDcmVhdGVGcm9tRGF0
YShXS0RhdGFSZWYgZGF0YSkKIAogV0tEYXRhUmVmIFdLU2Vzc2lvblN0YXRlQ29weURhdGEoV0tT
ZXNzaW9uU3RhdGVSZWYgc2Vzc2lvblN0YXRlKQogewotICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJ
KFdlYktpdDo6ZW5jb2RlTGVnYWN5U2Vzc2lvblN0YXRlKFdlYktpdDo6dG9JbXBsKHNlc3Npb25T
dGF0ZSktPnNlc3Npb25TdGF0ZSgpKS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4g
V2ViS2l0Ojp0b0FQSShXZWJLaXQ6OmVuY29kZUxlZ2FjeVNlc3Npb25TdGF0ZShXZWJLaXQ6OnRv
SW1wbChzZXNzaW9uU3RhdGUpLT5zZXNzaW9uU3RhdGUoKSkubGVha1JlZigpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0
ZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJp
dmF0ZU1hYy5tbQppbmRleCA0YzE5MmI2ZDRhNmU4YzU3NzJmNjAzMDVmNjZlZjIxOGFhMGMyYjFl
Li5hNTg5MTA0YjEyYTk4Y2Q3ZDdmNjFkYWE4Zjk2ZjRkY2Q1ZjljMmY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMubW0K
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRl
TWFjLm1tCkBAIC03Myw4ICs3Myw4IEBAIFdLRGljdGlvbmFyeVJlZiBXS0NvbnRleHRDb3B5UGx1
Z0luSW5mb0ZvckJ1bmRsZUlkZW50aWZpZXIoV0tDb250ZXh0UmVmIGNvbnRleHRSCiAgICAgaWYg
KHBsdWdpbi5wYXRoLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlZlB0cjxB
UEk6OkRpY3Rpb25hcnk+IGRpY3Rpb25hcnkgPSBjcmVhdGVQbHVnaW5JbmZvcm1hdGlvbkRpY3Rp
b25hcnkocGx1Z2luKTsKLSAgICByZXR1cm4gdG9BUEkoZGljdGlvbmFyeS5yZWxlYXNlKCkubGVh
a1JlZigpKTsKKyAgICBhdXRvIGRpY3Rpb25hcnkgPSBjcmVhdGVQbHVnaW5JbmZvcm1hdGlvbkRp
Y3Rpb25hcnkocGx1Z2luKTsKKyAgICByZXR1cm4gdG9BUEkoJmRpY3Rpb25hcnkubGVha1JlZigp
KTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggMzAxY2JjZTk0OGQyYjE0ZjkwMzlk
YTE0NmQ2MmQ5NzE4MGFiMzE2Yy4uNjAwMDA4OGJkNDEzNjNmYjI3ZDEzODBjN2RiZTJmZjMzYWEy
MmM4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KQEAgLTY2MSw3ICs2NjEsNyBAQCAtIChXS05hdmlnYXRpb24gKilsb2FkUmVxdWVzdDoo
TlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogICAgIGlmICghbmF2aWdhdGlvbikKICAgICAgICAgcmV0
dXJuIG5pbDsKIAotICAgIHJldHVybiBbd3JhcHBlcigqbmF2aWdhdGlvbi5yZWxlYXNlKCkubGVh
a1JlZigpKSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLmxl
YWtSZWYoKSkgYXV0b3JlbGVhc2VdOwogfQogCiAtIChXS05hdmlnYXRpb24gKilsb2FkRmlsZVVS
TDooTlNVUkwgKilVUkwgYWxsb3dpbmdSZWFkQWNjZXNzVG9VUkw6KE5TVVJMICopcmVhZEFjY2Vz
c1VSTApAQCAtNjc2LDcgKzY3Niw3IEBAIC0gKFdLTmF2aWdhdGlvbiAqKWxvYWRGaWxlVVJMOihO
U1VSTCAqKVVSTCBhbGxvd2luZ1JlYWRBY2Nlc3NUb1VSTDooTlNVUkwgKilyZWFkCiAgICAgaWYg
KCFuYXZpZ2F0aW9uKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIFt3cmFwcGVy
KCpuYXZpZ2F0aW9uLnJlbGVhc2UoKS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1
cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CiB9CiAKIC0g
KFdLTmF2aWdhdGlvbiAqKWxvYWRIVE1MU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBiYXNlVVJM
OihOU1VSTCAqKWJhc2VVUkwKQEAgLTY5Miw3ICs2OTIsNyBAQCAtIChXS05hdmlnYXRpb24gKils
b2FkRGF0YTooTlNEYXRhICopZGF0YSBNSU1FVHlwZTooTlNTdHJpbmcgKilNSU1FVHlwZSBjaGFy
YWN0ZQogICAgIGlmICghbmF2aWdhdGlvbikKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJl
dHVybiBbd3JhcHBlcigqbmF2aWdhdGlvbi5yZWxlYXNlKCkubGVha1JlZigpKSBhdXRvcmVsZWFz
ZV07CisgICAgcmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLmxlYWtSZWYoKSkgYXV0b3JlbGVh
c2VdOwogfQogCiAtIChXS05hdmlnYXRpb24gKilnb1RvQmFja0ZvcndhcmRMaXN0SXRlbTooV0tC
YWNrRm9yd2FyZExpc3RJdGVtICopaXRlbQpAQCAtNzAxLDcgKzcwMSw3IEBAIC0gKFdLTmF2aWdh
dGlvbiAqKWdvVG9CYWNrRm9yd2FyZExpc3RJdGVtOihXS0JhY2tGb3J3YXJkTGlzdEl0ZW0gKilp
dGVtCiAgICAgaWYgKCFuYXZpZ2F0aW9uKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0
dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLnJlbGVhc2UoKS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNl
XTsKKyAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ubGVha1JlZigpKSBhdXRvcmVsZWFz
ZV07CiB9CiAKIC0gKE5TU3RyaW5nICopdGl0bGUKQEAgLTc1OCw3ICs3NTgsNyBAQCAtIChXS05h
dmlnYXRpb24gKilnb0JhY2sKICAgICBpZiAoIW5hdmlnYXRpb24pCiAgICAgICAgIHJldHVybiBu
aWw7CiAgCi0gICAgcmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLnJlbGVhc2UoKS5sZWFrUmVm
KCkpIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ubGVha1Jl
ZigpKSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKFdLTmF2aWdhdGlvbiAqKWdvRm9yd2FyZApAQCAt
NzY3LDcgKzc2Nyw3IEBAIC0gKFdLTmF2aWdhdGlvbiAqKWdvRm9yd2FyZAogICAgIGlmICghbmF2
aWdhdGlvbikKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiBbd3JhcHBlcigqbmF2
aWdhdGlvbi5yZWxlYXNlKCkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIFt3
cmFwcGVyKCpuYXZpZ2F0aW9uLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOwogfQogCiAtIChXS05h
dmlnYXRpb24gKilyZWxvYWQKQEAgLTc3OCw3ICs3NzgsNyBAQCAtIChXS05hdmlnYXRpb24gKily
ZWxvYWQKICAgICBpZiAoIW5hdmlnYXRpb24pCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBy
ZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ucmVsZWFzZSgpLmxlYWtSZWYoKSkgYXV0b3JlbGVh
c2VdOworICAgIHJldHVybiBbd3JhcHBlcigqbmF2aWdhdGlvbi5sZWFrUmVmKCkpIGF1dG9yZWxl
YXNlXTsKIH0KIAogLSAoV0tOYXZpZ2F0aW9uICopcmVsb2FkRnJvbU9yaWdpbgpAQCAtNzg5LDcg
Kzc4OSw3IEBAIC0gKFdLTmF2aWdhdGlvbiAqKXJlbG9hZEZyb21PcmlnaW4KICAgICBpZiAoIW5h
dmlnYXRpb24pCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICByZXR1cm4gW3dyYXBwZXIoKm5h
dmlnYXRpb24ucmVsZWFzZSgpLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBb
d3JhcHBlcigqbmF2aWdhdGlvbi5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAodm9p
ZClzdG9wTG9hZGluZwpAQCAtMzE3Nyw3ICszMTc3LDcgQEAgLSAoV0tOYXZpZ2F0aW9uICopX2xv
YWREYXRhOihOU0RhdGEgKilkYXRhIE1JTUVUeXBlOihOU1N0cmluZyAqKU1JTUVUeXBlIGNoYXJh
Y3QKICAgICBpZiAoIW5hdmlnYXRpb24pCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICByZXR1
cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ucmVsZWFzZSgpLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2Vd
OworICAgIHJldHVybiBbd3JhcHBlcigqbmF2aWdhdGlvbi5sZWFrUmVmKCkpIGF1dG9yZWxlYXNl
XTsKIH0KIAogLSAoTlNBcnJheSAqKV9jZXJ0aWZpY2F0ZUNoYWluCkBAIC0zMjU4LDcgKzMyNTgs
NyBAQCAtIChXS05hdmlnYXRpb24gKilfcmVsb2FkV2l0aG91dENvbnRlbnRCbG9ja2VycwogICAg
IGlmICghbmF2aWdhdGlvbikKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAKLSAgICByZXR1cm4g
W3dyYXBwZXIoKm5hdmlnYXRpb24ucmVsZWFzZSgpLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOwor
ICAgIHJldHVybiBbd3JhcHBlcigqbmF2aWdhdGlvbi5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsK
IH0KIAogLSAodm9pZClfa2lsbFdlYkNvbnRlbnRQcm9jZXNzQW5kUmVzZXRTdGF0ZQpAQCAtMzMz
OSw3ICszMzM5LDcgQEAgLSAoTlNEYXRhICopX3Nlc3Npb25TdGF0ZURhdGEKICAgICBXZWJLaXQ6
OlNlc3Npb25TdGF0ZSBzZXNzaW9uU3RhdGUgPSBfcGFnZS0+c2Vzc2lvblN0YXRlKCk7CiAKICAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgbm90IHVzZSB0aGUgbGVnYWN5IHNlc3Npb24gc3RhdGUg
ZW5jb2Rlci4KLSAgICByZXR1cm4gW3dyYXBwZXIoKldlYktpdDo6ZW5jb2RlTGVnYWN5U2Vzc2lv
blN0YXRlKHNlc3Npb25TdGF0ZSkucmVsZWFzZSgpLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOwor
ICAgIHJldHVybiBbd3JhcHBlcigqV2ViS2l0OjplbmNvZGVMZWdhY3lTZXNzaW9uU3RhdGUoc2Vz
c2lvblN0YXRlKS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAoX1dLU2Vzc2lvblN0
YXRlICopX3Nlc3Npb25TdGF0ZQpAQCAtMzM2Myw3ICszMzYzLDcgQEAgLSAoV0tOYXZpZ2F0aW9u
ICopX3Jlc3RvcmVTZXNzaW9uU3RhdGU6KF9XS1Nlc3Npb25TdGF0ZSAqKXNlc3Npb25TdGF0ZSBh
bmROYXZpZ2EKICAgICBpZiAoIW5hdmlnYXRpb24pCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAg
ICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ucmVsZWFzZSgpLmxlYWtSZWYoKSkgYXV0b3Jl
bGVhc2VdOworICAgIHJldHVybiBbd3JhcHBlcigqbmF2aWdhdGlvbi5sZWFrUmVmKCkpIGF1dG9y
ZWxlYXNlXTsKIH0KIAogLSAodm9pZClfY2xvc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19kYXRhYmFzZV9tYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19kYXRhYmFzZV9tYW5hZ2VyLmNwcAppbmRleCBkYWNm
NzhmYTk0ODcwYTcxYmJhNTYwNGQzM2M5YmFiNTIxZTcyZGMyLi40MTc3NzJhY2Q1ZDJmZWRhZTcx
ZDEzZmZkMmZjNTIxNzM4ZWRiNTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfZGF0YWJhc2VfbWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2RhdGFiYXNlX21hbmFnZXIuY3BwCkBAIC03MCwxMiArNzAs
MTIgQEAgRWluYV9MaXN0KiBFd2tEYXRhYmFzZU1hbmFnZXI6OmNyZWF0ZU9yaWdpbkxpc3QoV0tB
cnJheVJlZiBvcmlnaW5zKSBjb25zdAogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5n
dGg7ICsraSkgewogICAgICAgICBXS1NlY3VyaXR5T3JpZ2luUmVmIHdrT3JpZ2luUmVmID0gc3Rh
dGljX2Nhc3Q8V0tTZWN1cml0eU9yaWdpblJlZj4oV0tBcnJheUdldEl0ZW1BdEluZGV4KG9yaWdp
bnMsIGkpKTsKLSAgICAgICAgUmVmUHRyPEV3a1NlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBtX3dy
YXBwZXJDYWNoZS5nZXQod2tPcmlnaW5SZWYpOworICAgICAgICBhdXRvIG9yaWdpbiA9IG1fd3Jh
cHBlckNhY2hlLmdldCh3a09yaWdpblJlZik7CiAgICAgICAgIGlmICghb3JpZ2luKSB7CiAgICAg
ICAgICAgICBvcmlnaW4gPSBFd2tTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHdrT3JpZ2luUmVmKTsK
ICAgICAgICAgICAgIG1fd3JhcHBlckNhY2hlLnNldCh3a09yaWdpblJlZiwgb3JpZ2luKTsKICAg
ICAgICAgfQotICAgICAgICBvcmlnaW5MaXN0ID0gZWluYV9saXN0X2FwcGVuZChvcmlnaW5MaXN0
LCBvcmlnaW4ucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgICAgIG9yaWdpbkxpc3QgPSBlaW5h
X2xpc3RfYXBwZW5kKG9yaWdpbkxpc3QsIG9yaWdpbi5sZWFrUmVmKCkpOwogICAgIH0KIAogICAg
IHJldHVybiBvcmlnaW5MaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3N0b3JhZ2VfbWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfc3RvcmFnZV9tYW5hZ2VyLmNwcAppbmRleCA1ZDNlZGIwYTI2OTZiMjE1
MWNmNjA4NWY3ZDY1NTBlYzQyZjA4NDgzLi43M2ZhZDM5N2QzMWVjZDU4ZDBiZmQ0MGVhN2E3NDAw
NDU2NDhlODE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfc3RvcmFnZV9tYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfc3RvcmFnZV9tYW5hZ2VyLmNwcApAQCAtNTMsMTIgKzUzLDEyIEBAIEVpbmFfTGlz
dCogRXdrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZU9yaWdpbkxpc3QoV0tBcnJheVJlZiBvcmlnaW5z
KSBjb25zdAogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAg
ICAgICBXS1NlY3VyaXR5T3JpZ2luUmVmIHdrT3JpZ2luUmVmID0gc3RhdGljX2Nhc3Q8V0tTZWN1
cml0eU9yaWdpblJlZj4oV0tBcnJheUdldEl0ZW1BdEluZGV4KG9yaWdpbnMsIGkpKTsKLSAgICAg
ICAgUmVmUHRyPEV3a1NlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBtX3dyYXBwZXJDYWNoZS5nZXQo
d2tPcmlnaW5SZWYpOworICAgICAgICBhdXRvIG9yaWdpbiA9IG1fd3JhcHBlckNhY2hlLmdldCh3
a09yaWdpblJlZik7CiAgICAgICAgIGlmICghb3JpZ2luKSB7CiAgICAgICAgICAgICBvcmlnaW4g
PSBFd2tTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHdrT3JpZ2luUmVmKTsKICAgICAgICAgICAgIG1f
d3JhcHBlckNhY2hlLnNldCh3a09yaWdpblJlZiwgb3JpZ2luKTsKICAgICAgICAgfQotICAgICAg
ICBvcmlnaW5MaXN0ID0gZWluYV9saXN0X2FwcGVuZChvcmlnaW5MaXN0LCBvcmlnaW4ucmVsZWFz
ZSgpLmxlYWtSZWYoKSk7CisgICAgICAgIG9yaWdpbkxpc3QgPSBlaW5hX2xpc3RfYXBwZW5kKG9y
aWdpbkxpc3QsIG9yaWdpbi5sZWFrUmVmKCkpOwogICAgIH0KIAogICAgIHJldHVybiBvcmlnaW5M
aXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3LmNwcAppbmRleCA5NmZlMWZjMjlhNjVkMmI2ZTU5ODBlMGYxMDg1MDQwYTc2MDE0ZDMyLi40
MTQ4MDZjZTRjMjI4Y2Y5NzVlNTBhNmUxZTUyNWQ1ZThmYjg4ZTUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMTgzNyw3
ICsxODM3LDcgQEAgV2ViUGFnZVByb3h5KiB3ZWJraXRXZWJWaWV3Q3JlYXRlTmV3UGFnZShXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBXaW5kb3dGZWEKICAgICB3ZWJraXRXaW5kb3dQcm9w
ZXJ0aWVzVXBkYXRlRnJvbVdlYldpbmRvd0ZlYXR1cmVzKG5ld1dlYlZpZXctPnByaXYtPndpbmRv
d1Byb3BlcnRpZXMuZ2V0KCksIHdpbmRvd0ZlYXR1cmVzKTsKIAogICAgIFJlZlB0cjxXZWJQYWdl
UHJveHk+IG5ld1BhZ2UgPSBnZXRQYWdlKG5ld1dlYlZpZXcpOwotICAgIHJldHVybiBuZXdQYWdl
LnJlbGVhc2UoKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIG5ld1BhZ2UubGVha1JlZigpOwogfQog
CiB2b2lkIHdlYmtpdFdlYlZpZXdSZWFkeVRvU2hvd1BhZ2UoV2ViS2l0V2ViVmlldyogd2ViVmll
dykKQEAgLTE5MjUsNyArMTkyNSw3IEBAIHZvaWQgd2Via2l0V2ViVmlld01vdXNlVGFyZ2V0Q2hh
bmdlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBXZWJIaXRUZXN0UmVzCiAKIHZvaWQg
d2Via2l0V2ViVmlld1ByaW50RnJhbWUoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViRnJhbWVQ
cm94eSogZnJhbWUpCiB7Ci0gICAgR1JlZlB0cjxXZWJLaXRQcmludE9wZXJhdGlvbj4gcHJpbnRP
cGVyYXRpb24gPSBhZG9wdEdSZWYod2Via2l0X3ByaW50X29wZXJhdGlvbl9uZXcod2ViVmlldykp
OworICAgIGF1dG8gcHJpbnRPcGVyYXRpb24gPSBhZG9wdEdSZWYod2Via2l0X3ByaW50X29wZXJh
dGlvbl9uZXcod2ViVmlldykpOwogICAgIHdlYmtpdFByaW50T3BlcmF0aW9uU2V0UHJpbnRNb2Rl
KHByaW50T3BlcmF0aW9uLmdldCgpLCBQcmludEluZm86OlByaW50TW9kZVN5bmMpOwogICAgIGdi
b29sZWFuIHJldHVyblZhbHVlOwogICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgc2lnbmFsc1tQ
UklOVF0sIDAsIHByaW50T3BlcmF0aW9uLmdldCgpLCAmcmV0dXJuVmFsdWUpOwpAQCAtMzIwNCw3
ICszMjA0LDcgQEAgc3RhdGljIHZvaWQgZmlsZVJlcGxhY2VDb250ZW50c0NhbGxiYWNrKEdPYmpl
Y3QqIG9iamVjdCwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGcKIAogc3RhdGljIHZvaWQgZ2V0Q29u
dGVudHNBc01IVE1MRGF0YUNhbGxiYWNrKEFQSTo6RGF0YSogd2tEYXRhLCBHVGFzayogdGFza1B0
cikKIHsKLSAgICBHUmVmUHRyPEdUYXNrPiB0YXNrID0gYWRvcHRHUmVmKHRhc2tQdHIpOworICAg
IGF1dG8gdGFzayA9IGFkb3B0R1JlZih0YXNrUHRyKTsKICAgICBpZiAoZ190YXNrX3JldHVybl9l
cnJvcl9pZl9jYW5jZWxsZWQodGFzay5nZXQoKSkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1Nlc3Npb25TdGF0ZUNvZGluZy5t
bSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9TZXNzaW9uU3RhdGVDb2RpbmcubW0K
aW5kZXggM2VkNDE5ZGNkNTM5NzQxMTg2NDA4ZmJiODBiMGRkODVlMTBiNDAxYS4uNjIzYmE0NjBh
MjA4YWI3ZDczNjEyN2NlYWE4NDQxNGZjYTA0NTAzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NvY29hL1Nlc3Npb25TdGF0ZUNvZGluZy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvU2Vzc2lvblN0YXRlQ29kaW5nLm1tCkBAIC0zNCw3ICszNCw3
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogUmV0YWluUHRyPE5TRGF0YT4gZW5jb2RlU2Vzc2lvblN0
YXRlKGNvbnN0IFNlc3Npb25TdGF0ZSYgc2Vzc2lvblN0YXRlKQogewogI2lmIFdLX0FQSV9FTkFC
TEVECi0gICAgcmV0dXJuIFt3cmFwcGVyKCpXZWJLaXQ6OmVuY29kZUxlZ2FjeVNlc3Npb25TdGF0
ZShzZXNzaW9uU3RhdGUpLnJlbGVhc2UoKS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKKyAgICBy
ZXR1cm4gW3dyYXBwZXIoKldlYktpdDo6ZW5jb2RlTGVnYWN5U2Vzc2lvblN0YXRlKHNlc3Npb25T
dGF0ZSkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CiAjZWxzZQogICAgIHJldHVybiBudWxscHRy
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2VuZXJpY0Nh
bGxiYWNrLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKaW5k
ZXggMWQyMDUzOWExODczODlkMTJmMDAxMmQ3MDY5NzJiNjdhMGRhZDA2OS4uMWI2N2U5Mzg0Njc5
NzlkMTI5Y2M3ZmMyZmFiY2Q1ZGZlMDdmZTQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9HZW5lcmljQ2FsbGJhY2suaApAQCAtMjAwLDExICsyMDAsMTEgQEAgcHVibGljOgogICAgIHRl
bXBsYXRlPGNsYXNzIFQ+CiAgICAgUmVmUHRyPFQ+IHRha2UodWludDY0X3QgY2FsbGJhY2tJRCkK
ICAgICB7Ci0gICAgICAgIFJlZlB0cjxDYWxsYmFja0Jhc2U+IGJhc2UgPSBtX21hcC50YWtlKGNh
bGxiYWNrSUQpOworICAgICAgICBhdXRvIGJhc2UgPSBtX21hcC50YWtlKGNhbGxiYWNrSUQpOwog
ICAgICAgICBpZiAoIWJhc2UpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoYmFzZS5yZWxlYXNlKCkubGVha1JlZigpLT5hczxUPigpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKGJhc2UubGVha1JlZigpLT5hczxUPigpKTsKICAgICB9CiAK
ICAgICB2b2lkIGludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAppbmRleCAyMDVhMGYwNmM5ZTNjNGVlOWY2
ZDVhODBhMGYxZDIzZTUzNzNkNjYyLi4wY2Y3MDQ1MTE4MGE1Y2NhY2M5YmFmMWNhZGFiMWI0MWIz
M2FkZmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCkBAIC00
Nyw5ICs0Nyw5IEBAIHZvaWQgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eTo6aW52YWxpZGF0ZVJlcXVlc3RzKCkKIAogUGFzc1JlZlB0cjxHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0UHJveHk+IEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6
OmNyZWF0ZVJlcXVlc3QodWludDY0X3QgZ2VvbG9jYXRpb25JRCkKIHsKLSAgICBSZWZQdHI8R2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5PiByZXF1ZXN0ID0gR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdFByb3h5OjpjcmVhdGUodGhpcywgZ2VvbG9jYXRpb25JRCk7Ci0gICAgbV9w
ZW5kaW5nUmVxdWVzdHMuYWRkKGdlb2xvY2F0aW9uSUQsIHJlcXVlc3QuZ2V0KCkpOwotICAgIHJl
dHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKKyAgICBhdXRvIHJlcXVlc3QgPSBHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0UHJveHk6OmNyZWF0ZSh0aGlzLCBnZW9sb2NhdGlvbklEKTsKKyAgICBt
X3BlbmRpbmdSZXF1ZXN0cy5hZGQoZ2VvbG9jYXRpb25JRCwgcmVxdWVzdC5wdHIoKSk7CisgICAg
cmV0dXJuIFdURk1vdmUocmVxdWVzdCk7CiB9CiAKIHZvaWQgR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZUdlb2xvY2F0aW9uUGVybWlzc2lvbkRlY2lz
aW9uKHVpbnQ2NF90IGdlb2xvY2F0aW9uSUQsIGJvb2wgYWxsb3dlZCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAK
aW5kZXggYjQyNjYwZmU2MWJlNDVkNTAxNmRlZGY2ZWYzNzM0NDU0Yjc0NzNlOC4uZDdkMzUwOTk4
N2JjNGZkNjcyOGE4NzM3M2UyYmM2MTEzYjY5ZWE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTI0
OSw4ICsyNDksOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHVpbgogICAgIFdlYlBhZ2VQcm94eSog
cGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlSUQpOwogICAgIE1FU1NBR0VfQ0hF
Q0socGFnZSk7CiAKLSAgICBSZWZQdHI8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eT4gYXV0
aGVudGljYXRpb25DaGFsbGVuZ2UgPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5OjpjcmVh
dGUoY29yZUNoYWxsZW5nZSwgY2hhbGxlbmdlSUQsIGNvbm5lY3Rpb24oKSk7Ci0gICAgcGFnZS0+
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkoZnJhbWVJRCwgYXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UucmVsZWFzZSgpKTsKKyAgICBhdXRvIGF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTo6Y3JlYXRlKGNvcmVDaGFsbGVuZ2Us
IGNoYWxsZW5nZUlELCBjb25uZWN0aW9uKCkpOworICAgIHBhZ2UtPmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVByb3h5KGZyYW1lSUQsIFdURk1vdmUoYXV0aGVudGljYXRpb25DaGFs
bGVuZ2UpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRGZXRjaFdlYnNpdGVE
YXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFdlYnNpdGVEYXRhJiB3ZWJzaXRlRGF0YSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlm
aWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclByb3h5LmNwcAppbmRleCAwYjJhNjMyOTc4ZGI3Y2I0ZTNhYzVlODE4NDMxODkyY2MxNjk1
NGU0Li44MThhNTI1NDE2MDdhM2NlOWEyM2RjODc4ZjE4YmZhMTM3YzBkYWUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuY3BwCkBAIC00OCw5ICs0OCw5IEBAIHZvaWQgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHk6OmludmFsaWRhdGVSZXF1ZXN0cygpCiAKIFBhc3NSZWZQdHI8Tm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3Q+IE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclByb3h5OjpjcmVhdGVSZXF1ZXN0KHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQogewotICAg
IFJlZlB0cjxOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdD4gcmVxdWVzdCA9IE5vdGlmaWNh
dGlvblBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUodGhpcywgbm90aWZpY2F0aW9uSUQpOwotICAg
IG1fcGVuZGluZ1JlcXVlc3RzLmFkZChub3RpZmljYXRpb25JRCwgcmVxdWVzdC5nZXQoKSk7Ci0g
ICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOworICAgIGF1dG8gcmVxdWVzdCA9IE5vdGlmaWNh
dGlvblBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUodGhpcywgbm90aWZpY2F0aW9uSUQpOworICAg
IG1fcGVuZGluZ1JlcXVlc3RzLmFkZChub3RpZmljYXRpb25JRCwgcmVxdWVzdC5wdHIoKSk7Cisg
ICAgcmV0dXJuIFdURk1vdmUocmVxdWVzdCk7CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVOb3RpZmljYXRpb25QZXJtaXNzaW9u
RGVjaXNpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQsIGJvb2wgYWxsb3cpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdl
ci5jcHAKaW5kZXggYmQwMGJkYzgzNzQxZmE2Y2JmMTBkMjQxZjgzMzU4MGRhYmExNWI0NS4uZmZh
MGE3ZTg2Mjc5ZjE1NWM5NGY2NGU3NmVmZDNlMWVkMWVmYmJkZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmNw
cApAQCAtMTI1LDEwICsxMjUsMTAgQEAgUGx1Z2luUHJvY2Vzc1Byb3h5KiBQbHVnaW5Qcm9jZXNz
TWFuYWdlcjo6Z2V0T3JDcmVhdGVQbHVnaW5Qcm9jZXNzKHVpbnQ2NF90IHBsdWcKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fcGx1Z2luUHJvY2Vzc1Rva2Vucy5zaXplKCk7ICsraSkgewog
ICAgICAgICBhdXRvJiBhdHRyaWJ1dGVzQW5kVG9rZW4gPSBtX3BsdWdpblByb2Nlc3NUb2tlbnNb
aV07CiAgICAgICAgIGlmIChhdHRyaWJ1dGVzQW5kVG9rZW4uc2Vjb25kID09IHBsdWdpblByb2Nl
c3NUb2tlbikgewotICAgICAgICAgICAgUmVmUHRyPFBsdWdpblByb2Nlc3NQcm94eT4gcGx1Z2lu
UHJvY2VzcyA9IFBsdWdpblByb2Nlc3NQcm94eTo6Y3JlYXRlKHRoaXMsIGF0dHJpYnV0ZXNBbmRU
b2tlbi5maXJzdCwgYXR0cmlidXRlc0FuZFRva2VuLnNlY29uZCk7Ci0gICAgICAgICAgICBQbHVn
aW5Qcm9jZXNzUHJveHkqIHBsdWdpblByb2Nlc3NQdHIgPSBwbHVnaW5Qcm9jZXNzLmdldCgpOwor
ICAgICAgICAgICAgYXV0byBwbHVnaW5Qcm9jZXNzID0gUGx1Z2luUHJvY2Vzc1Byb3h5OjpjcmVh
dGUodGhpcywgYXR0cmlidXRlc0FuZFRva2VuLmZpcnN0LCBhdHRyaWJ1dGVzQW5kVG9rZW4uc2Vj
b25kKTsKKyAgICAgICAgICAgIFBsdWdpblByb2Nlc3NQcm94eSogcGx1Z2luUHJvY2Vzc1B0ciA9
IHBsdWdpblByb2Nlc3MucHRyKCk7CiAKLSAgICAgICAgICAgIG1fcGx1Z2luUHJvY2Vzc2VzLmFw
cGVuZChwbHVnaW5Qcm9jZXNzLnJlbGVhc2UoKSk7CisgICAgICAgICAgICBtX3BsdWdpblByb2Nl
c3Nlcy5hcHBlbmQoV1RGTW92ZShwbHVnaW5Qcm9jZXNzKSk7CiAgICAgICAgICAgICByZXR1cm4g
cGx1Z2luUHJvY2Vzc1B0cjsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCBiNGNhNTM0OTk2
ODA3OWVjNDJjNzQ4Mjg0ODY2ZGQ3YmUzNzg2NWFjLi4xNWM5OGVhYzliZWEwODcyMGU2N2IzOGI1
ZjVkNmYzZDJhOTNlZDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3Rv
cmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0
b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0yMTksOSArMjE5LDkgQEAgdm9pZCBTdG9yYWdl
TWFuYWdlcjo6U3RvcmFnZUFyZWE6OnNldEl0ZW0oSVBDOjpDb25uZWN0aW9uKiBzb3VyY2VDb25u
ZWN0aW9uLCB1aW4KIAogICAgIFN0cmluZyBvbGRWYWx1ZTsKIAotICAgIFJlZlB0cjxTdG9yYWdl
TWFwPiBuZXdTdG9yYWdlTWFwID0gbV9zdG9yYWdlTWFwLT5zZXRJdGVtKGtleSwgdmFsdWUsIG9s
ZFZhbHVlLCBxdW90YUV4Y2VwdGlvbik7CisgICAgYXV0byBuZXdTdG9yYWdlTWFwID0gbV9zdG9y
YWdlTWFwLT5zZXRJdGVtKGtleSwgdmFsdWUsIG9sZFZhbHVlLCBxdW90YUV4Y2VwdGlvbik7CiAg
ICAgaWYgKG5ld1N0b3JhZ2VNYXApCi0gICAgICAgIG1fc3RvcmFnZU1hcCA9IG5ld1N0b3JhZ2VN
YXAucmVsZWFzZSgpOworICAgICAgICBtX3N0b3JhZ2VNYXAgPSBXVEZNb3ZlKG5ld1N0b3JhZ2VN
YXApOwogCiAgICAgaWYgKHF1b3RhRXhjZXB0aW9uKQogICAgICAgICByZXR1cm47CkBAIC0yMzcs
OSArMjM3LDkgQEAgdm9pZCBTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6OnJlbW92ZUl0ZW0o
SVBDOjpDb25uZWN0aW9uKiBzb3VyY2VDb25uZWN0aW9uLAogICAgIG9wZW5EYXRhYmFzZUFuZElt
cG9ydEl0ZW1zSWZOZWVkZWQoKTsKIAogICAgIFN0cmluZyBvbGRWYWx1ZTsKLSAgICBSZWZQdHI8
U3RvcmFnZU1hcD4gbmV3U3RvcmFnZU1hcCA9IG1fc3RvcmFnZU1hcC0+cmVtb3ZlSXRlbShrZXks
IG9sZFZhbHVlKTsKKyAgICBhdXRvIG5ld1N0b3JhZ2VNYXAgPSBtX3N0b3JhZ2VNYXAtPnJlbW92
ZUl0ZW0oa2V5LCBvbGRWYWx1ZSk7CiAgICAgaWYgKG5ld1N0b3JhZ2VNYXApCi0gICAgICAgIG1f
c3RvcmFnZU1hcCA9IG5ld1N0b3JhZ2VNYXAucmVsZWFzZSgpOworICAgICAgICBtX3N0b3JhZ2VN
YXAgPSBXVEZNb3ZlKG5ld1N0b3JhZ2VNYXApOwogCiAgICAgaWYgKG9sZFZhbHVlLmlzTnVsbCgp
KQogICAgICAgICByZXR1cm47CkBAIC02ODYsMTAgKzY4NiwxMCBAQCB2b2lkIFN0b3JhZ2VNYW5h
Z2VyOjpjcmVhdGVMb2NhbFN0b3JhZ2VNYXAoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1
aW50NjRfdAogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBhIG1lc3NhZ2UgY2hlY2suCiAg
ICAgQVNTRVJUKGxvY2FsU3RvcmFnZU5hbWVzcGFjZSk7CiAKLSAgICBSZWZQdHI8U3RvcmFnZUFy
ZWE+IHN0b3JhZ2VBcmVhID0gbG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5nZXRPckNyZWF0ZVN0b3Jh
Z2VBcmVhKHNlY3VyaXR5T3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbigpKTsKKyAgICBhdXRvIHN0
b3JhZ2VBcmVhID0gbG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5nZXRPckNyZWF0ZVN0b3JhZ2VBcmVh
KHNlY3VyaXR5T3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbigpKTsKICAgICBzdG9yYWdlQXJlYS0+
YWRkTGlzdGVuZXIoY29ubmVjdGlvbiwgc3RvcmFnZU1hcElEKTsKIAotICAgIHJlc3VsdC5pdGVy
YXRvci0+dmFsdWUgPSBzdG9yYWdlQXJlYS5yZWxlYXNlKCk7CisgICAgcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSA9IFdURk1vdmUoc3RvcmFnZUFyZWEpOwogfQogCiB2b2lkIFN0b3JhZ2VNYW5hZ2Vy
OjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VNYXAoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwg
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BMZXZlbE9yaWdpbkRhdGEsIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW5EYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcAppbmRleCAyNzM0MzEyMzJiMmNiNTQyODM3
ZjIyMWM2ZjFlZGY1YTNmOTI4MDcwLi4wZjcxM2E5ZDA0Mjg0ZTZjZGZkNWVlMDE2NjBlMzc1Yzlh
NzhkZjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmFja0Zvcndh
cmRMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRM
aXN0LmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0OjphZGRJ
dGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIG5ld0l0ZW0pCiAgICAgICAgIHJlbW92ZWRJdGVt
cy5yZXNlcnZlQ2FwYWNpdHkobV9lbnRyaWVzLnNpemUoKSAtIHRhcmdldFNpemUpOwogICAgICAg
ICB3aGlsZSAobV9lbnRyaWVzLnNpemUoKSA+IHRhcmdldFNpemUpIHsKICAgICAgICAgICAgIGRp
ZFJlbW92ZUl0ZW0oKm1fZW50cmllcy5sYXN0KCkpOwotICAgICAgICAgICAgcmVtb3ZlZEl0ZW1z
LmFwcGVuZChtX2VudHJpZXMubGFzdCgpLnJlbGVhc2UoKSk7CisgICAgICAgICAgICByZW1vdmVk
SXRlbXMuYXBwZW5kKFdURk1vdmUobV9lbnRyaWVzLmxhc3QoKSkpOwogICAgICAgICAgICAgbV9l
bnRyaWVzLnJlbW92ZUxhc3QoKTsKICAgICAgICAgfQogCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9p
ZCBXZWJCYWNrRm9yd2FyZExpc3Q6OmFkZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogbmV3
SXRlbSkKICAgICAgICAgLy8gKG9yIGV2ZW4gaWYgd2UgYXJlLCBpZiB3ZSBvbmx5IHdhbnQgMSBl
bnRyeSkuCiAgICAgICAgIGlmIChtX2VudHJpZXMuc2l6ZSgpID09IG1fY2FwYWNpdHkgJiYgKG1f
Y3VycmVudEluZGV4IHx8IG1fY2FwYWNpdHkgPT0gMSkpIHsKICAgICAgICAgICAgIGRpZFJlbW92
ZUl0ZW0oKm1fZW50cmllc1swXSk7Ci0gICAgICAgICAgICByZW1vdmVkSXRlbXMuYXBwZW5kKG1f
ZW50cmllc1swXS5yZWxlYXNlKCkpOworICAgICAgICAgICAgcmVtb3ZlZEl0ZW1zLmFwcGVuZChX
VEZNb3ZlKG1fZW50cmllc1swXSkpOwogICAgICAgICAgICAgbV9lbnRyaWVzLnJlbW92ZSgwKTsK
IAogICAgICAgICAgICAgaWYgKG1fZW50cmllcy5pc0VtcHR5KCkpCkBAIC0xMjcsNyArMTI3LDcg
QEAgdm9pZCBXZWJCYWNrRm9yd2FyZExpc3Q6OmFkZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRl
bSogbmV3SXRlbSkKICAgICAgICAgICAgIGlmICghbV9lbnRyaWVzW2ldKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgZGlkUmVtb3ZlSXRlbSgqbV9lbnRyaWVzW2ldKTsK
LSAgICAgICAgICAgIHJlbW92ZWRJdGVtcy5hcHBlbmQobV9lbnRyaWVzW2ldLnJlbGVhc2UoKSk7
CisgICAgICAgICAgICByZW1vdmVkSXRlbXMuYXBwZW5kKFdURk1vdmUobV9lbnRyaWVzW2ldKSk7
CiAgICAgICAgIH0KICAgICAgICAgbV9lbnRyaWVzLmNsZWFyKCk7CiAgICAgfQpAQCAtMzU3LDcg
KzM1Nyw3IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0OjpjbGVhcigpCiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAKICAgICAgICAgICAgIGRpZFJlbW92ZUl0ZW0oKm1fZW50cmllc1tpXSk7
Ci0gICAgICAgICAgICByZW1vdmVkSXRlbXMuYXBwZW5kKG1fZW50cmllc1tpXS5yZWxlYXNlKCkp
OworICAgICAgICAgICAgcmVtb3ZlZEl0ZW1zLmFwcGVuZChXVEZNb3ZlKG1fZW50cmllc1tpXSkp
OwogICAgICAgICB9CiAKICAgICAgICAgbV9lbnRyaWVzLmNsZWFyKCk7CkBAIC0zNzYsMTQgKzM3
NiwxNCBAQCB2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdDo6Y2xlYXIoKQogICAgIHJlbW92ZWRJdGVt
cy5yZXNlcnZlQ2FwYWNpdHkoc2l6ZSAtIDEpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c2l6ZTsgKytpKSB7CiAgICAgICAgIGlmIChpICE9IG1fY3VycmVudEluZGV4ICYmIG1faGFzQ3Vy
cmVudEluZGV4ICYmIG1fZW50cmllc1tpXSkKLSAgICAgICAgICAgIHJlbW92ZWRJdGVtcy5hcHBl
bmQobV9lbnRyaWVzW2ldLnJlbGVhc2UoKSk7CisgICAgICAgICAgICByZW1vdmVkSXRlbXMuYXBw
ZW5kKFdURk1vdmUobV9lbnRyaWVzW2ldKSk7CiAgICAgfQogCiAgICAgbV9jdXJyZW50SW5kZXgg
PSAwOwogCiAgICAgaWYgKGN1cnJlbnRJdGVtKSB7CiAgICAgICAgIG1fZW50cmllcy5zaHJpbmso
MSk7Ci0gICAgICAgIG1fZW50cmllc1swXSA9IGN1cnJlbnRJdGVtLnJlbGVhc2UoKTsKKyAgICAg
ICAgbV9lbnRyaWVzWzBdID0gV1RGTW92ZShjdXJyZW50SXRlbSk7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgbV9lbnRyaWVzLmNsZWFyKCk7CiAgICAgICAgIG1faGFzQ3VycmVudEluZGV4ID0gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdl
clByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJv
eHkuY3BwCmluZGV4IDJjMzBkNjQwNDUzMmM2YTQ0ZjIyYmFiY2Y5MDNjZGJjZTI0ZGVkZGMuLmM2
ZmY5MzYwM2VkYTlkMDgxYjg1NjQwNGM5NDg3ZjEzZDdlZWI0OWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCkBAIC05NSw5ICs5
NSw5IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZXJlZldlYkNvbnRleHRTdXBwbGVt
ZW50KCkKIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhvc3RuYW1lc1dpdGhDb29r
aWVzKHN0ZDo6ZnVuY3Rpb248dm9pZCAoQVBJOjpBcnJheSosIENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiBjYWxsYmFja0Z1bmN0aW9uKQogewotICAgIFJlZlB0cjxBcnJheUNhbGxiYWNrPiBjYWxsYmFj
ayA9IEFycmF5Q2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKKyAg
ICBhdXRvIGNhbGxiYWNrID0gQXJyYXlDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbikpOwogICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJ
RCgpOwotICAgIG1fYXJyYXlDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIGNhbGxiYWNrLnJlbGVh
c2UoKSk7CisgICAgbV9hcnJheUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxs
YmFjaykpOwogCiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxh
dW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRIb3N0bmFt
ZXNXaXRoQ29va2llcyhjYWxsYmFja0lEKSk7CiB9CkBAIC0xNjcsMTAgKzE2NywxMCBAQCB2b2lk
IFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29v
a2llQWNjZXB0UG9saWN5IHBvbAogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeShzdGQ6OmZ1bmN0aW9uPHZvaWQgKEhUVFBDb29raWVBY2NlcHRQ
b2xpY3ksIENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQogewotICAgIFJl
ZlB0cjxIVFRQQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2s+IGNhbGxiYWNrID0gSFRUUENvb2tp
ZUFjY2VwdFBvbGljeUNhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7
CisgICAgYXV0byBjYWxsYmFjayA9IEhUVFBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFjazo6Y3Jl
YXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogCiAgICAgdWludDY0X3QgY2FsbGJhY2tJ
RCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7Ci0gICAgbV9odHRwQ29va2llQWNjZXB0UG9saWN5
Q2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBjYWxsYmFjay5yZWxlYXNlKCkpOworICAgIG1faHR0
cENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxs
YmFjaykpOwogCiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxh
dW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRIVFRQQ29v
a2llQWNjZXB0UG9saWN5KGNhbGxiYWNrSUQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZDQzZGQxNmZhNGJkODc4NGI1NzdiOGFjMWEwMDk3ZDIy
NzA0Y2I1NC4uNGRiYWY2OWI3ZmQwMzk3ZmY0ZTdkZjE1Yjk0ODhjNTk4YjgzY2QwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTYxNjgsMTEgKzYxNjgs
MTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omluc3RhbGxWaWV3U3RhdGVDaGFuZ2VDb21wbGV0aW9u
SGFuZGxlcih2b2lkICheY29tcGxldGlvbkhhbmQKICAgICB9CiAKICAgICBhdXRvIGNvcGllZENv
bXBsZXRpb25IYW5kbGVyID0gQmxvY2tfY29weShjb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgUmVm
UHRyPFZvaWRDYWxsYmFjaz4gdm9pZENhbGxiYWNrID0gVm9pZENhbGxiYWNrOjpjcmVhdGUoW2Nv
cGllZENvbXBsZXRpb25IYW5kbGVyXSAoQ2FsbGJhY2tCYXNlOjpFcnJvcikgeworICAgIGF1dG8g
dm9pZENhbGxiYWNrID0gVm9pZENhbGxiYWNrOjpjcmVhdGUoW2NvcGllZENvbXBsZXRpb25IYW5k
bGVyXSAoQ2FsbGJhY2tCYXNlOjpFcnJvcikgewogICAgICAgICBjb3BpZWRDb21wbGV0aW9uSGFu
ZGxlcigpOwogICAgICAgICBCbG9ja19yZWxlYXNlKGNvcGllZENvbXBsZXRpb25IYW5kbGVyKTsK
ICAgICB9LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkp
OwotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQodm9pZENhbGxiYWNr
LnJlbGVhc2UoKSk7CisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKHZvaWRDYWxsYmFjaykpOwogICAgIG1fbmV4dFZpZXdTdGF0ZUNoYW5nZUNhbGxiYWNr
cy5hcHBlbmQoY2FsbGJhY2tJRCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJlZmVyZW5jZXMuY3BwCmluZGV4IDQ0YjM2MzNmY2MxZTYzZmQ2ZGY4NzYxZTE5MGYxMDAyYzg1
M2Y0ZmIuLjgwOWFhODM2MTkzMzQ4OTY0NjZkMDA1ZGY1ZjAzZDM1ZmJhZjI1YTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmNwcApAQCAtNDUsMTQgKzQ1LDE0
IEBAIFJlZjxXZWJQcmVmZXJlbmNlcz4gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluCiAKIFBhc3NSZWZQdHI8V2ViUHJlZmVyZW5jZXM+
IFdlYlByZWZlcmVuY2VzOjpjcmVhdGVXaXRoTGVnYWN5RGVmYXVsdHMoY29uc3QgU3RyaW5nJiBp
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGtleVByZWZpeCwgY29uc3QgU3RyaW5nJiBnbG9iYWxE
ZWJ1Z0tleVByZWZpeCkKIHsKLSAgICBSZWZQdHI8V2ViUHJlZmVyZW5jZXM+IHByZWZlcmVuY2Vz
ID0gYWRvcHRSZWYobmV3IFdlYlByZWZlcmVuY2VzKGlkZW50aWZpZXIsIGtleVByZWZpeCwgZ2xv
YmFsRGVidWdLZXlQcmVmaXgpKTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5j
ZXM6OmNyZWF0ZShpZGVudGlmaWVyLCBrZXlQcmVmaXgsIGdsb2JhbERlYnVnS2V5UHJlZml4KTsK
ICAgICAvLyBGSVhNRTogVGhlIHJlZ2lzdGVyRGVmYXVsdC4uLlZhbHVlRm9yS2V5IG1hY2hpbmVy
eSBpcyB1bm5lY2Vzc2FyaWx5IGhlYXZ5d2VpZ2h0IGFuZCBjb21wbGljYXRlZC4KICAgICAvLyBX
ZSBjYW4ganVzdCBjb21wdXRlIGRpZmZlcmVudCBkZWZhdWx0cyBmb3IgbW9kZXJuIGFuZCBsZWdh
Y3kgQVBJcyBpbiBXZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmggbWFjcm9zLgogICAgIHByZWZl
cmVuY2VzLT5yZWdpc3RlckRlZmF1bHRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6
OmphdmFFbmFibGVkS2V5KCksIHRydWUpOwogICAgIHByZWZlcmVuY2VzLT5yZWdpc3RlckRlZmF1
bHRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmphdmFFbmFibGVkRm9yTG9jYWxG
aWxlc0tleSgpLCB0cnVlKTsKICAgICBwcmVmZXJlbmNlcy0+cmVnaXN0ZXJEZWZhdWx0Qm9vbFZh
bHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpwbHVnaW5zRW5hYmxlZEtleSgpLCB0cnVlKTsK
ICAgICBwcmVmZXJlbmNlcy0+cmVnaXN0ZXJEZWZhdWx0VUludDMyVmFsdWVGb3JLZXkoV2ViUHJl
ZmVyZW5jZXNLZXk6OnN0b3JhZ2VCbG9ja2luZ1BvbGljeUtleSgpLCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbjo6QWxsb3dBbGxTdG9yYWdlKTsKLSAgICByZXR1cm4gcHJlZmVyZW5jZXMucmVsZWFz
ZSgpOworICAgIHJldHVybiBXVEZNb3ZlKHByZWZlcmVuY2VzKTsKIH0KIAogV2ViUHJlZmVyZW5j
ZXM6OldlYlByZWZlcmVuY2VzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBrZXlQcmVmaXgsIGNvbnN0IFN0cmluZyYgZ2xvYmFsRGVidWdLZXlQcmVmaXgpCkBAIC03OCw3
ICs3OCw3IEBAIFdlYlByZWZlcmVuY2VzOjp+V2ViUHJlZmVyZW5jZXMoKQogCiBQYXNzUmVmUHRy
PFdlYlByZWZlcmVuY2VzPiBXZWJQcmVmZXJlbmNlczo6Y29weSgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBXZWJQcmVmZXJlbmNlcygqdGhpcykpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFdlYlByZWZlcmVuY2VzKCp0aGlzKSk7CiB9CiAKIHZvaWQgV2ViUHJlZmVyZW5j
ZXM6OmFkZFBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCA4YzYyMDUzNjVkOGNkZjBkMmUxMDA5
NGU4NGI2MTQzNmE1N2QyYjA5Li5hN2UwMzQ2ZjAzZDlmMTg5MDE0YTZlOWQ0NWM5ODBiZTA5ZDJl
MDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAg
LTIzOCw3ICsyMzgsNyBAQCBXZWJQcm9jZXNzUG9vbDo6fldlYlByb2Nlc3NQb29sKCkKIAogICAg
IG1faWNvbkRhdGFiYXNlLT5pbnZhbGlkYXRlKCk7CiAgICAgbV9pY29uRGF0YWJhc2UtPmNsZWFy
UHJvY2Vzc1Bvb2woKTsKLSAgICBXZWJJY29uRGF0YWJhc2UqIHJhd0ljb25EYXRhYmFzZSA9IG1f
aWNvbkRhdGFiYXNlLnJlbGVhc2UoKS5sZWFrUmVmKCk7CisgICAgV2ViSWNvbkRhdGFiYXNlKiBy
YXdJY29uRGF0YWJhc2UgPSBtX2ljb25EYXRhYmFzZS5sZWFrUmVmKCk7CiAgICAgcmF3SWNvbkRh
dGFiYXNlLT5kZXJlZldoZW5BcHByb3ByaWF0ZSgpOwogCiAgICAgaW52YWxpZGF0ZUNhbGxiYWNr
TWFwKG1fZGljdGlvbmFyeUNhbGxiYWNrcywgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJ
bnZhbGlkYXRlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1Zp
ZXdTbmFwc2hvdFN0b3JlLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3U25h
cHNob3RTdG9yZS5tbQppbmRleCAzZjhmY2ZmMWE0MWUxY2Q0ZTg0ZTA4ZDJmZmNkYzE1NTBkMWZk
ODJiLi5kMTkzODZjMDZjNmVhOWNjZDM4NjdmN2I0OTM0NWZlN2ZkOGE2MzJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdTbmFwc2hvdFN0b3JlLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90U3RvcmUubW0KQEAgLTEx
NCw3ICsxMTQsNyBAQCB2b2lkIFZpZXdTbmFwc2hvdFN0b3JlOjpyZWNvcmRTbmFwc2hvdChXZWJQ
YWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgV2ViQmFja0ZvcndhcgogCiAgICAgd2ViUGFnZVByb3h5
LndpbGxSZWNvcmROYXZpZ2F0aW9uU25hcHNob3QoaXRlbSk7CiAKLSAgICBSZWZQdHI8Vmlld1Nu
YXBzaG90PiBzbmFwc2hvdCA9IHdlYlBhZ2VQcm94eS50YWtlVmlld1NuYXBzaG90KCk7CisgICAg
YXV0byBzbmFwc2hvdCA9IHdlYlBhZ2VQcm94eS50YWtlVmlld1NuYXBzaG90KCk7CiAgICAgaWYg
KCFzbmFwc2hvdCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBW
aWV3U25hcHNob3RTdG9yZTo6cmVjb3JkU25hcHNob3QoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJv
eHksIFdlYkJhY2tGb3J3YXIKICAgICBzbmFwc2hvdC0+c2V0RGV2aWNlU2NhbGVGYWN0b3Iod2Vi
UGFnZVByb3h5LmRldmljZVNjYWxlRmFjdG9yKCkpOwogICAgIHNuYXBzaG90LT5zZXRCYWNrZ3Jv
dW5kQ29sb3Iod2ViUGFnZVByb3h5LnBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcigpKTsKIAot
ICAgIGl0ZW0uc2V0U25hcHNob3Qoc25hcHNob3QucmVsZWFzZSgpKTsKKyAgICBpdGVtLnNldFNu
YXBzaG90KFdURk1vdmUoc25hcHNob3QpKTsKIH0KIAogdm9pZCBWaWV3U25hcHNob3RTdG9yZTo6
ZGlzY2FyZFNuYXBzaG90SW1hZ2VzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KaW5kZXggZmFhMTU0
MzA5MjY4MzQxYTk1ZWY4YWUzNjI1MjdiZTRlNjhjNzZjNi4uZjJkN2E5MjdmNmM5NjI3MTkwZGIy
OGY0NDFhM2MxYThjYmIwMTM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KQEAgLTI2Myw3ICsy
NjMsNyBAQCAtIChQYXNzUmVmUHRyPEFQSTo6SGl0VGVzdFJlc3VsdD4pX3dlYkhpdFRlc3RSZXN1
bHQKICAgICBlbHNlCiAgICAgICAgIGhpdFRlc3RSZXN1bHQgPSBfcGFnZS0+bGFzdE1vdXNlTW92
ZUhpdFRlc3RSZXN1bHQoKTsKIAotICAgIHJldHVybiBoaXRUZXN0UmVzdWx0LnJlbGVhc2UoKTsK
KyAgICByZXR1cm4gV1RGTW92ZShoaXRUZXN0UmVzdWx0KTsKIH0KIAogI3ByYWdtYSBtYXJrIElt
bWVkaWF0ZSBhY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1dLUHJpbnRpbmdWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS1ByaW50
aW5nVmlldy5tbQppbmRleCA3YjlkODg5YjFkNGE3NWNjNmQ4ZGU3ZjI3MzBkY2E5MmQ1YTcxOWIz
Li4zYjEwY2U3NWYxNWVjNmIzOWYxMWU2MGE0NjFiODZjZjc4NWFlNDRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcubW0KQEAgLTM0MCw3ICszNDAs
NyBAQCAtIChCT09MKV9hc2tQYWdlVG9Db21wdXRlUGFnZVJlY3RzCiAgICAgQVNTRVJUKCFfZXhw
ZWN0ZWRDb21wdXRlZFBhZ2VzQ2FsbGJhY2spOwogCiAgICAgSVBDQ2FsbGJhY2tDb250ZXh0KiBj
b250ZXh0ID0gbmV3IElQQ0NhbGxiYWNrQ29udGV4dDsKLSAgICBSZWZQdHI8Q29tcHV0ZWRQYWdl
c0NhbGxiYWNrPiBjYWxsYmFjayA9IENvbXB1dGVkUGFnZXNDYWxsYmFjazo6Y3JlYXRlKFtjb250
ZXh0XShjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIHBhZ2VSZWN0cywgZG91YmxlIHRv
dGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7
CisgICAgYXV0byBjYWxsYmFjayA9IENvbXB1dGVkUGFnZXNDYWxsYmFjazo6Y3JlYXRlKFtjb250
ZXh0XShjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIHBhZ2VSZWN0cywgZG91YmxlIHRv
dGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7
CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJUENDYWxsYmFja0NvbnRleHQ+IGNvbnRleHREZWxl
dGVyKGNvbnRleHQpOwogICAgICAgICBwYWdlRGlkQ29tcHV0ZVBhZ2VSZWN0cyhwYWdlUmVjdHMs
IHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgY29udGV4dCk7CiAgICAgfSk7CkBAIC0zNDgs
NyArMzQ4LDcgQEAgLSAoQk9PTClfYXNrUGFnZVRvQ29tcHV0ZVBhZ2VSZWN0cwogICAgIGNvbnRl
eHQtPnZpZXcgPSBzZWxmOwogICAgIGNvbnRleHQtPmNhbGxiYWNrSUQgPSBfZXhwZWN0ZWRDb21w
dXRlZFBhZ2VzQ2FsbGJhY2s7CiAKLSAgICBfd2ViRnJhbWUtPnBhZ2UoKS0+Y29tcHV0ZVBhZ2Vz
Rm9yUHJpbnRpbmcoX3dlYkZyYW1lLmdldCgpLCBQcmludEluZm8oW19wcmludE9wZXJhdGlvbiBw
cmludEluZm9dKSwgY2FsbGJhY2sucmVsZWFzZSgpKTsKKyAgICBfd2ViRnJhbWUtPnBhZ2UoKS0+
Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoX3dlYkZyYW1lLmdldCgpLCBQcmludEluZm8oW19wcmlu
dE9wZXJhdGlvbiBwcmludEluZm9dKSwgV1RGTW92ZShjYWxsYmFjaykpOwogICAgIHJldHVybiBZ
RVM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFn
ZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlN
YWMubW0KaW5kZXggNDNmYTZmMjA2NWQwYzEyOWVkZmYxMmEzN2FlMjkxY2NkNDJkZjJkZC4uOTVk
MDNjOTI0MGVmZTU5ZDU4YTJlZjBjNTIyMWEyODBlYjNjZGNlOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTI3MSw4ICsyNzEsOCBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVwbGFjZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJkRGF0YShj
b25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZQogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0RHJhZ0ltYWdlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGll
bnRQb3NpdGlvbiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGRyYWdJbWFnZUhhbmRs
ZSwgYm9vbCBpc0xpbmtEcmFnKQogewotICAgIGlmIChSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBk
cmFnSW1hZ2UgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShkcmFnSW1hZ2VIYW5kbGUpKQotICAg
ICAgICBtX3BhZ2VDbGllbnQuc2V0RHJhZ0ltYWdlKGNsaWVudFBvc2l0aW9uLCBkcmFnSW1hZ2Uu
cmVsZWFzZSgpLCBpc0xpbmtEcmFnKTsKKyAgICBpZiAoYXV0byBkcmFnSW1hZ2UgPSBTaGFyZWFi
bGVCaXRtYXA6OmNyZWF0ZShkcmFnSW1hZ2VIYW5kbGUpKQorICAgICAgICBtX3BhZ2VDbGllbnQu
c2V0RHJhZ0ltYWdlKGNsaWVudFBvc2l0aW9uLCBXVEZNb3ZlKGRyYWdJbWFnZSksIGlzTGlua0Ry
YWcpOwogCiAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFN0YXJ0RHJh
ZygpLCBtX3BhZ2VJRCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJv
Y2Vzc1BsdWdJbkZyYW1lLm1tCmluZGV4IGZkYWY2NzU4ZDZhNWZkNDM0OGM2NGQ3NDQzZmY4NDU5
OWM1YmIxMzguLjMyZDhkYzc0OGI1MmY1YjdmM2RkZjk1MmI2YjRmYmU3MmY1NjA2OTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29h
L1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLm1tCkBA
IC03MSw4ICs3MSw4IEBAIC0gKEpTQ29udGV4dCAqKWpzQ29udGV4dEZvcldvcmxkOihXS1dlYlBy
b2Nlc3NQbHVnSW5TY3JpcHRXb3JsZCAqKXdvcmxkCiAKIC0gKFdLV2ViUHJvY2Vzc1BsdWdJbkhp
dFRlc3RSZXN1bHQgKiloaXRUZXN0OihDR1BvaW50KXBvaW50CiB7Ci0gICAgUmVmUHRyPEluamVj
dGVkQnVuZGxlSGl0VGVzdFJlc3VsdD4gaGl0VGVzdFJlc3VsdCA9IF9mcmFtZS0+aGl0VGVzdChX
ZWJDb3JlOjpJbnRQb2ludChwb2ludCkpOwotICAgIHJldHVybiBbd3JhcHBlcigqaGl0VGVzdFJl
c3VsdC5yZWxlYXNlKCkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBoaXRUZXN0
UmVzdWx0ID0gX2ZyYW1lLT5oaXRUZXN0KFdlYkNvcmU6OkludFBvaW50KHBvaW50KSk7CisgICAg
cmV0dXJuIFt3cmFwcGVyKCpoaXRUZXN0UmVzdWx0LmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOwog
fQogCiAtIChKU1ZhbHVlICopanNOb2RlRm9yTm9kZUhhbmRsZTooV0tXZWJQcm9jZXNzUGx1Z0lu
Tm9kZUhhbmRsZSAqKW5vZGVIYW5kbGUgaW5Xb3JsZDooV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0
V29ybGQgKil3b3JsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdC5tbSBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2Vi
UHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHQubW0KaW5kZXggNTFkZWVhODE1Mzk4NmVhMDMxYWEw
MjE4OTNhYzI4NDUwYzk0ZDkzZi4uN2VhODZjOTExZTRkNjQyZTVmYzYzMjU2MjQzZDIyYTVjMWRh
MzJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nl
c3NQbHVnSW5IaXRUZXN0UmVzdWx0Lm1tCkBAIC00NCw4ICs0NCw4IEBAIC0gKHZvaWQpZGVhbGxv
YwogCiAtIChXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlICopbm9kZUhhbmRsZQogewotICAg
IFJlZlB0cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+IG5vZGVIYW5kbGUgPSBfaGl0VGVzdFJl
c3VsdC0+bm9kZUhhbmRsZSgpOwotICAgIHJldHVybiBub2RlSGFuZGxlID8gW3dyYXBwZXIoKm5v
ZGVIYW5kbGUucmVsZWFzZSgpLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdIDogbmlsOworICAgIGF1
dG8gbm9kZUhhbmRsZSA9IF9oaXRUZXN0UmVzdWx0LT5ub2RlSGFuZGxlKCk7CisgICAgcmV0dXJu
IG5vZGVIYW5kbGUgPyBbd3JhcHBlcigqbm9kZUhhbmRsZS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNl
XSA6IG5pbDsKIH0KIAogI3ByYWdtYSBtYXJrIFdLT2JqZWN0IHByb3RvY29sIGltcGxlbWVudGF0
aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0lu
Tm9kZUhhbmRsZS5tbQppbmRleCAwYjFkZmRmZmUxNTc3YjI5ZWNmNjJjM2IxNTJjOGMxOTc3ZDIw
MzQ3Li43YjI4N2ZjNzU0ZGMyY2I4ZGMxNDRiY2JiNzQxY2E0YmMxNmYxZDU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dl
YlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUu
bW0KQEAgLTQ4LDIwICs0OCwyMCBAQCArIChXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlICop
bm9kZUhhbmRsZVdpdGhKU1ZhbHVlOihKU1ZhbHVlICopdmFsdWUgaW5Db250ZQogewogICAgIEpT
Q29udGV4dFJlZiBjb250ZXh0UmVmID0gW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXTsKICAg
ICBKU09iamVjdFJlZiBvYmplY3RSZWYgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dFJlZiwgW3Zh
bHVlIEpTVmFsdWVSZWZdLCAwKTsKLSAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxl
PiBub2RlSGFuZGxlID0gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpnZXRPckNyZWF0ZShjb250
ZXh0UmVmLCBvYmplY3RSZWYpOworICAgIGF1dG8gbm9kZUhhbmRsZSA9IEluamVjdGVkQnVuZGxl
Tm9kZUhhbmRsZTo6Z2V0T3JDcmVhdGUoY29udGV4dFJlZiwgb2JqZWN0UmVmKTsKICAgICBpZiAo
IW5vZGVIYW5kbGUpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICByZXR1cm4gW3dyYXBwZXIo
Km5vZGVIYW5kbGUucmVsZWFzZSgpLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOworICAgIHJldHVy
biBbd3JhcHBlcigqbm9kZUhhbmRsZS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAo
V0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUgKilodG1sSUZyYW1lRWxlbWVudENvbnRlbnRGcmFtZQog
ewotICAgIFJlZlB0cjxXZWJGcmFtZT4gZnJhbWUgPSBfbm9kZUhhbmRsZS0+aHRtbElGcmFtZUVs
ZW1lbnRDb250ZW50RnJhbWUoKTsKKyAgICBhdXRvIGZyYW1lID0gX25vZGVIYW5kbGUtPmh0bWxJ
RnJhbWVFbGVtZW50Q29udGVudEZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0
dXJuIG5pbDsKIAotICAgIHJldHVybiBbd3JhcHBlcigqZnJhbWUucmVsZWFzZSgpLmxlYWtSZWYo
KSkgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBbd3JhcHBlcigqZnJhbWUubGVha1JlZigpKSBh
dXRvcmVsZWFzZV07CiB9CiAKICNpZiBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQ
bHVnSW5TY3JpcHRXb3JsZC5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkLm1tCmluZGV4IDZj
MTA2MWRkODAzNDkxZjQ3ZWU5MzNlMGE5NzRkM2QyZGNmMzJlZGYuLjFhZWMwYjkyMmVlM2VlZDli
NGEyMWRkNzU2MjZhNmY4NThjNDYxNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdv
cmxkLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkLm1tCkBAIC0zNiw4ICszNiw4IEBA
IEBpbXBsZW1lbnRhdGlvbiBXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZCB7CiAKICsgKFdL
V2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkICopd29ybGQKIHsKLSAgICBSZWZQdHI8SW5qZWN0
ZWRCdW5kbGVTY3JpcHRXb3JsZD4gc2NyaXB0V29ybGQgPSBJbmplY3RlZEJ1bmRsZVNjcmlwdFdv
cmxkOjpjcmVhdGUoKTsKLSAgICByZXR1cm4gW3dyYXBwZXIoKnNjcmlwdFdvcmxkLnJlbGVhc2Uo
KS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHNjcmlwdFdvcmxkID0gSW5qZWN0
ZWRCdW5kbGVTY3JpcHRXb3JsZDo6Y3JlYXRlKCk7CisgICAgcmV0dXJuIFt3cmFwcGVyKHNjcmlw
dFdvcmxkLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOwogfQogCiArIChXS1dlYlByb2Nlc3NQbHVn
SW5TY3JpcHRXb3JsZCAqKW5vcm1hbFdvcmxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwCmluZGV4IDg1
YjhmOTIyZjFlYzBjMTJlY2Q0MzAxZTRhMDhiZWVlNWI0MGY3ZjIuLmU4ODUzZGJkMDYyN2I2OWRj
NDk4NDkwZmNlYzViZDhkMzcxMGM1M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwCkBAIC02Miw3
ICs2Miw3IEBAIHZvaWQgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKFdLQnVuZGxlUmVm
IGJ1bmRsZVJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hCiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0
PiByZXR1cm5EYXRhOwogICAgIHRvSW1wbChidW5kbGVSZWYpLT5wb3N0U3luY2hyb25vdXNNZXNz
YWdlKHRvV1RGU3RyaW5nKG1lc3NhZ2VOYW1lUmVmKSwgdG9JbXBsKG1lc3NhZ2VCb2R5UmVmKSwg
cmV0dXJuRGF0YSk7CiAgICAgaWYgKHJldHVybkRhdGFSZWYpCi0gICAgICAgICpyZXR1cm5EYXRh
UmVmID0gdG9BUEkocmV0dXJuRGF0YS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICAgICAgKnJl
dHVybkRhdGFSZWYgPSB0b0FQSShyZXR1cm5EYXRhLmxlYWtSZWYoKSk7CiB9CiAKIFdLQ29ubmVj
dGlvblJlZiBXS0J1bmRsZUdldEFwcGxpY2F0aW9uQ29ubmVjdGlvbihXS0J1bmRsZVJlZiBidW5k
bGVSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVET01XaW5kb3dFeHRlbnNp
b24uY3BwCmluZGV4IGI2NjBlODE1ZmI1NzVhZDdlNGM2YTUxODNjODM5Y2VlNTc1ODU0NzkuLmZj
MzgxZjQ2YTY0MWZhMDc3NWMzZTU0NjQ4NjBkOWUwNGY0ODNlMmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVET01XaW5k
b3dFeHRlbnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwCkBAIC00MSw3ICs0MSw3
IEBAIFdLVHlwZUlEIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uR2V0VHlwZUlEKCkKIFdLQnVu
ZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uQ3JlYXRl
KFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLQnVuZGxlU2NyaXB0V29ybGRSZWYgd29ybGQpCiB7
CiAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uPiBleHRlbnNpb24g
PSBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbjo6Y3JlYXRlKHRvSW1wbChmcmFtZSks
IHRvSW1wbCh3b3JsZCkpOwotICAgIHJldHVybiB0b0FQSShleHRlbnNpb24ucmVsZWFzZSgpLmxl
YWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKGV4dGVuc2lvbi5sZWFrUmVmKCkpOwogfQogCiBX
S0J1bmRsZUZyYW1lUmVmIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uR2V0RnJhbWUoV0tCdW5k
bGVET01XaW5kb3dFeHRlbnNpb25SZWYgZXh0ZW5zaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUhpdFRlc3RSZXN1
bHQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZUhpdFRlc3RSZXN1bHQuY3BwCmluZGV4IDQ2ZjY5OTkyNmEyMTVhODdkYWMxMThhZWZl
MDU2NGU2YmEyNzc0ZjUuLjJlNGE3YjYzMWQxMzFjYTE3NmRjNGQxYjE4MTVkODgxOWY2MDk2ODAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTQy
LDEzICs0MiwxMyBAQCBXS1R5cGVJRCBXS0J1bmRsZUhpdFRlc3RSZXN1bHRHZXRUeXBlSUQoKQog
V0tCdW5kbGVOb2RlSGFuZGxlUmVmIFdLQnVuZGxlSGl0VGVzdFJlc3VsdENvcHlOb2RlSGFuZGxl
KFdLQnVuZGxlSGl0VGVzdFJlc3VsdFJlZiBoaXRUZXN0UmVzdWx0UmVmKQogewogICAgIFJlZlB0
cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+IG5vZGVIYW5kbGUgPSB0b0ltcGwoaGl0VGVzdFJl
c3VsdFJlZiktPm5vZGVIYW5kbGUoKTsKLSAgICByZXR1cm4gdG9BUEkobm9kZUhhbmRsZS5yZWxl
YXNlKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkobm9kZUhhbmRsZS5sZWFrUmVmKCkp
OwogfQogCiBXS0J1bmRsZU5vZGVIYW5kbGVSZWYgV0tCdW5kbGVIaXRUZXN0UmVzdWx0Q29weVVS
TEVsZW1lbnRIYW5kbGUoV0tCdW5kbGVIaXRUZXN0UmVzdWx0UmVmIGhpdFRlc3RSZXN1bHRSZWYp
CiB7CiAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gdXJsRWxlbWVudE5vZGVI
YW5kbGUgPSB0b0ltcGwoaGl0VGVzdFJlc3VsdFJlZiktPnVybEVsZW1lbnRIYW5kbGUoKTsKLSAg
ICByZXR1cm4gdG9BUEkodXJsRWxlbWVudE5vZGVIYW5kbGUucmVsZWFzZSgpLmxlYWtSZWYoKSk7
CisgICAgcmV0dXJuIHRvQVBJKHVybEVsZW1lbnROb2RlSGFuZGxlLmxlYWtSZWYoKSk7CiB9CiAK
IFdLQnVuZGxlRnJhbWVSZWYgV0tCdW5kbGVIaXRUZXN0UmVzdWx0R2V0RnJhbWUoV0tCdW5kbGVI
aXRUZXN0UmVzdWx0UmVmIGhpdFRlc3RSZXN1bHRSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTmF2aWdhdGlvbkFj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAKaW5kZXggZWU4OTgyNzNmY2QzYWYyOTVkMjJh
NGI2ZTVlOTRmOWU0N2Y0ZmUwNS4uYTNjMzYzZTE5NDJjZWMwNDc5NTVmOTJiMDMyNzBhOTU2ZGFm
ZTk3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9u
LmNwcApAQCAtNTgsMTMgKzU4LDEzIEBAIFdLRXZlbnRNb3VzZUJ1dHRvbiBXS0J1bmRsZU5hdmln
YXRpb25BY3Rpb25HZXRFdmVudE1vdXNlQnV0dG9uKFdLQnVuZGxlTmF2aWdhdGlvCiBXS0J1bmRs
ZUhpdFRlc3RSZXN1bHRSZWYgV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uQ29weUhpdFRlc3RSZXN1
bHQoV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uUmVmIG5hdmlnYXRpb25BY3Rpb25SZWYpCiB7CiAg
ICAgUmVmUHRyPEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdD4gaGl0VGVzdFJlc3VsdCA9IHRv
SW1wbChuYXZpZ2F0aW9uQWN0aW9uUmVmKS0+aGl0VGVzdFJlc3VsdCgpOwotICAgIHJldHVybiB0
b0FQSShoaXRUZXN0UmVzdWx0LnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgIHJldHVybiB0b0FQ
SShoaXRUZXN0UmVzdWx0LmxlYWtSZWYoKSk7CiB9CiAKIFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBX
S0J1bmRsZU5hdmlnYXRpb25BY3Rpb25Db3B5Rm9ybUVsZW1lbnQoV0tCdW5kbGVOYXZpZ2F0aW9u
QWN0aW9uUmVmIG5hdmlnYXRpb25BY3Rpb25SZWYpCiB7CiAgICAgUmVmUHRyPEluamVjdGVkQnVu
ZGxlTm9kZUhhbmRsZT4gZm9ybUVsZW1lbnQgPSB0b0ltcGwobmF2aWdhdGlvbkFjdGlvblJlZikt
PmZvcm1FbGVtZW50KCk7Ci0gICAgcmV0dXJuIHRvQVBJKGZvcm1FbGVtZW50LnJlbGVhc2UoKS5s
ZWFrUmVmKCkpOworICAgIHJldHVybiB0b0FQSShmb3JtRWxlbWVudC5sZWFrUmVmKCkpOwogfQog
CiBib29sIFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbkdldFNob3VsZE9wZW5FeHRlcm5hbFVSTHMo
V0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uUmVmIG5hdmlnYXRpb25BY3Rpb25SZWYpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlTm9kZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlTm9kZUhhbmRsZS5jcHAKaW5kZXggZWU0ZjM2MjI0NTRiOTE3NTAz
NzNjZjg0ZWQ2NDA1NzQyOTM5YTdjZi4uNDZjZmEzNGEwODBlZTVhZjRlZTA4ODczZWI0YzM4ODc3
MzI0M2IzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZU5vZGVIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxlLmNwcApAQCAt
NTksMTMgKzU5LDEzIEBAIFdLVHlwZUlEIFdLQnVuZGxlTm9kZUhhbmRsZUdldFR5cGVJRCgpCiBX
S0J1bmRsZU5vZGVIYW5kbGVSZWYgV0tCdW5kbGVOb2RlSGFuZGxlQ3JlYXRlKEpTQ29udGV4dFJl
ZiBjb250ZXh0UmVmLCBKU09iamVjdFJlZiBvYmplY3RSZWYpCiB7CiAgICAgUmVmUHRyPEluamVj
dGVkQnVuZGxlTm9kZUhhbmRsZT4gbm9kZUhhbmRsZSA9IEluamVjdGVkQnVuZGxlTm9kZUhhbmRs
ZTo6Z2V0T3JDcmVhdGUoY29udGV4dFJlZiwgb2JqZWN0UmVmKTsKLSAgICByZXR1cm4gdG9BUEko
bm9kZUhhbmRsZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkobm9kZUhh
bmRsZS5sZWFrUmVmKCkpOwogfQogCiBXS0J1bmRsZU5vZGVIYW5kbGVSZWYgV0tCdW5kbGVOb2Rl
SGFuZGxlQ29weURvY3VtZW50KFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBub2RlSGFuZGxlUmVmKQog
ewogICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+IG5vZGVIYW5kbGUgPSB0b0lt
cGwobm9kZUhhbmRsZVJlZiktPmRvY3VtZW50KCk7Ci0gICAgcmV0dXJuIHRvQVBJKG5vZGVIYW5k
bGUucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKG5vZGVIYW5kbGUubGVh
a1JlZigpKTsKIH0KIAogV0tSZWN0IFdLQnVuZGxlTm9kZUhhbmRsZUdldFJlbmRlclJlY3QoV0tC
dW5kbGVOb2RlSGFuZGxlUmVmIG5vZGVIYW5kbGVSZWYsIGJvb2wqIGlzUmVwbGFjZWQpCkBAIC03
NiwxMyArNzYsMTMgQEAgV0tSZWN0IFdLQnVuZGxlTm9kZUhhbmRsZUdldFJlbmRlclJlY3QoV0tC
dW5kbGVOb2RlSGFuZGxlUmVmIG5vZGVIYW5kbGVSZWYsIGJvb2wKIFdLSW1hZ2VSZWYgV0tCdW5k
bGVOb2RlSGFuZGxlQ29weVNuYXBzaG90V2l0aE9wdGlvbnMoV0tCdW5kbGVOb2RlSGFuZGxlUmVm
IG5vZGVIYW5kbGVSZWYsIFdLU25hcHNob3RPcHRpb25zIG9wdGlvbnMpCiB7CiAgICAgUmVmUHRy
PFdlYkltYWdlPiBpbWFnZSA9IHRvSW1wbChub2RlSGFuZGxlUmVmKS0+cmVuZGVyZWRJbWFnZSh0
b1NuYXBzaG90T3B0aW9ucyhvcHRpb25zKSk7Ci0gICAgcmV0dXJuIHRvQVBJKGltYWdlLnJlbGVh
c2UoKS5sZWFrUmVmKCkpOworICAgIHJldHVybiB0b0FQSShpbWFnZS5sZWFrUmVmKCkpOwogfQog
CiBXS0J1bmRsZVJhbmdlSGFuZGxlUmVmIFdLQnVuZGxlTm9kZUhhbmRsZUNvcHlWaXNpYmxlUmFu
Z2UoV0tCdW5kbGVOb2RlSGFuZGxlUmVmIG5vZGVIYW5kbGVSZWYpCiB7CiAgICAgUmVmUHRyPElu
amVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IHJhbmdlSGFuZGxlID0gdG9JbXBsKG5vZGVIYW5kbGVS
ZWYpLT52aXNpYmxlUmFuZ2UoKTsKLSAgICByZXR1cm4gdG9BUEkocmFuZ2VIYW5kbGUucmVsZWFz
ZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKHJhbmdlSGFuZGxlLmxlYWtSZWYoKSk7
CiB9CiAKIFdLUmVjdCBXS0J1bmRsZU5vZGVIYW5kbGVHZXRFbGVtZW50Qm91bmRzKFdLQnVuZGxl
Tm9kZUhhbmRsZVJlZiBlbGVtZW50SGFuZGxlUmVmKQpAQCAtMTM4LDI1ICsxMzgsMjUgQEAgYm9v
bCBXS0J1bmRsZU5vZGVIYW5kbGVHZXRIVE1MVGV4dEFyZWFFbGVtZW50TGFzdENoYW5nZVdhc1Vz
ZXJFZGl0KFdLQnVuZGxlTm9kZUgKIFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBXS0J1bmRsZU5vZGVI
YW5kbGVDb3B5SFRNTFRhYmxlQ2VsbEVsZW1lbnRDZWxsQWJvdmUoV0tCdW5kbGVOb2RlSGFuZGxl
UmVmIGh0bWxUYWJsZUNlbGxFbGVtZW50SGFuZGxlUmVmKQogewogICAgIFJlZlB0cjxJbmplY3Rl
ZEJ1bmRsZU5vZGVIYW5kbGU+IG5vZGVIYW5kbGUgPSB0b0ltcGwoaHRtbFRhYmxlQ2VsbEVsZW1l
bnRIYW5kbGVSZWYpLT5odG1sVGFibGVDZWxsRWxlbWVudENlbGxBYm92ZSgpOwotICAgIHJldHVy
biB0b0FQSShub2RlSGFuZGxlLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgIHJldHVybiB0b0FQ
SShub2RlSGFuZGxlLmxlYWtSZWYoKSk7CiB9CiAKIFdLQnVuZGxlRnJhbWVSZWYgV0tCdW5kbGVO
b2RlSGFuZGxlQ29weURvY3VtZW50RnJhbWUoV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGRvY3VtZW50
SGFuZGxlUmVmKQogewogICAgIFJlZlB0cjxXZWJGcmFtZT4gZnJhbWUgPSB0b0ltcGwoZG9jdW1l
bnRIYW5kbGVSZWYpLT5kb2N1bWVudEZyYW1lKCk7Ci0gICAgcmV0dXJuIHRvQVBJKGZyYW1lLnJl
bGVhc2UoKS5sZWFrUmVmKCkpOworICAgIHJldHVybiB0b0FQSShmcmFtZS5sZWFrUmVmKCkpOwog
fQogCiBXS0J1bmRsZUZyYW1lUmVmIFdLQnVuZGxlTm9kZUhhbmRsZUNvcHlIVE1MRnJhbWVFbGVt
ZW50Q29udGVudEZyYW1lKFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBodG1sRnJhbWVFbGVtZW50SGFu
ZGxlUmVmKQogewogICAgIFJlZlB0cjxXZWJGcmFtZT4gZnJhbWUgPSB0b0ltcGwoaHRtbEZyYW1l
RWxlbWVudEhhbmRsZVJlZiktPmh0bWxGcmFtZUVsZW1lbnRDb250ZW50RnJhbWUoKTsKLSAgICBy
ZXR1cm4gdG9BUEkoZnJhbWUucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJ
KGZyYW1lLmxlYWtSZWYoKSk7CiB9CiAKIFdLQnVuZGxlRnJhbWVSZWYgV0tCdW5kbGVOb2RlSGFu
ZGxlQ29weUhUTUxJRnJhbWVFbGVtZW50Q29udGVudEZyYW1lKFdLQnVuZGxlTm9kZUhhbmRsZVJl
ZiBodG1sSUZyYW1lRWxlbWVudEhhbmRsZVJlZikKIHsKICAgICBSZWZQdHI8V2ViRnJhbWU+IGZy
YW1lID0gdG9JbXBsKGh0bWxJRnJhbWVFbGVtZW50SGFuZGxlUmVmKS0+aHRtbElGcmFtZUVsZW1l
bnRDb250ZW50RnJhbWUoKTsKLSAgICByZXR1cm4gdG9BUEkoZnJhbWUucmVsZWFzZSgpLmxlYWtS
ZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKGZyYW1lLmxlYWtSZWYoKSk7CiB9CiAKIC8vIERlcHJl
Y2F0ZWQgLSB1c2UgV0tCdW5kbGVOb2RlSGFuZGxlR2V0SFRNTElucHV0RWxlbWVudEF1dG9GaWxs
ZWQoV0tCdW5kbGVOb2RlSGFuZGxlUmVmKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcApp
bmRleCAxN2UyMWFmYzMzYjY4ZWZlM2Q4NzU4MzA4YmQ4MWM2MGMzZjgwOTU1Li5lMThkYTkxNGZj
MjBkZWVkZWE2YzFmOTY3ZDhmMzQ5MDQ3NzQwNjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBh
Z2UuY3BwCkBAIC00MzQsNyArNDM0LDcgQEAgYm9vbCBXS0J1bmRsZVBhZ2VGaW5kU3RyaW5nKFdL
QnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiB0YXJnZXQsIFdLRmluZE8KIFdLSW1h
Z2VSZWYgV0tCdW5kbGVQYWdlQ3JlYXRlU25hcHNob3RXaXRoT3B0aW9ucyhXS0J1bmRsZVBhZ2VS
ZWYgcGFnZVJlZiwgV0tSZWN0IHJlY3QsIFdLU25hcHNob3RPcHRpb25zIG9wdGlvbnMpCiB7CiAg
ICAgUmVmUHRyPFdlYkltYWdlPiB3ZWJJbWFnZSA9IHRvSW1wbChwYWdlUmVmKS0+c2NhbGVkU25h
cHNob3RXaXRoT3B0aW9ucyh0b0ludFJlY3QocmVjdCksIDEsIHRvU25hcHNob3RPcHRpb25zKG9w
dGlvbnMpKTsKLSAgICByZXR1cm4gdG9BUEkod2ViSW1hZ2UucmVsZWFzZSgpLmxlYWtSZWYoKSk7
CisgICAgcmV0dXJuIHRvQVBJKHdlYkltYWdlLmxlYWtSZWYoKSk7CiB9CiAKIFdLSW1hZ2VSZWYg
V0tCdW5kbGVQYWdlQ3JlYXRlU25hcHNob3RJblZpZXdDb29yZGluYXRlcyhXS0J1bmRsZVBhZ2VS
ZWYgcGFnZVJlZiwgV0tSZWN0IHJlY3QsIFdLSW1hZ2VPcHRpb25zIG9wdGlvbnMpCkBAIC00NDIs
MTkgKzQ0MiwxOSBAQCBXS0ltYWdlUmVmIFdLQnVuZGxlUGFnZUNyZWF0ZVNuYXBzaG90SW5WaWV3
Q29vcmRpbmF0ZXMoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsCiAgICAgU25hcHNob3RPcHRpb25z
IHNuYXBzaG90T3B0aW9ucyA9IHNuYXBzaG90T3B0aW9uc0Zyb21JbWFnZU9wdGlvbnMob3B0aW9u
cyk7CiAgICAgc25hcHNob3RPcHRpb25zIHw9IFNuYXBzaG90T3B0aW9uc0luVmlld0Nvb3JkaW5h
dGVzOwogICAgIFJlZlB0cjxXZWJJbWFnZT4gd2ViSW1hZ2UgPSB0b0ltcGwocGFnZVJlZiktPnNj
YWxlZFNuYXBzaG90V2l0aE9wdGlvbnModG9JbnRSZWN0KHJlY3QpLCAxLCBzbmFwc2hvdE9wdGlv
bnMpOwotICAgIHJldHVybiB0b0FQSSh3ZWJJbWFnZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAg
ICByZXR1cm4gdG9BUEkod2ViSW1hZ2UubGVha1JlZigpKTsKIH0KIAogV0tJbWFnZVJlZiBXS0J1
bmRsZVBhZ2VDcmVhdGVTbmFwc2hvdEluRG9jdW1lbnRDb29yZGluYXRlcyhXS0J1bmRsZVBhZ2VS
ZWYgcGFnZVJlZiwgV0tSZWN0IHJlY3QsIFdLSW1hZ2VPcHRpb25zIG9wdGlvbnMpCiB7CiAgICAg
UmVmUHRyPFdlYkltYWdlPiB3ZWJJbWFnZSA9IHRvSW1wbChwYWdlUmVmKS0+c2NhbGVkU25hcHNo
b3RXaXRoT3B0aW9ucyh0b0ludFJlY3QocmVjdCksIDEsIHNuYXBzaG90T3B0aW9uc0Zyb21JbWFn
ZU9wdGlvbnMob3B0aW9ucykpOwotICAgIHJldHVybiB0b0FQSSh3ZWJJbWFnZS5yZWxlYXNlKCku
bGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkod2ViSW1hZ2UubGVha1JlZigpKTsKIH0KIAog
V0tJbWFnZVJlZiBXS0J1bmRsZVBhZ2VDcmVhdGVTY2FsZWRTbmFwc2hvdEluRG9jdW1lbnRDb29y
ZGluYXRlcyhXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tSZWN0IHJlY3QsIGRvdWJsZSBzY2Fs
ZUZhY3RvciwgV0tJbWFnZU9wdGlvbnMgb3B0aW9ucykKIHsKICAgICBSZWZQdHI8V2ViSW1hZ2U+
IHdlYkltYWdlID0gdG9JbXBsKHBhZ2VSZWYpLT5zY2FsZWRTbmFwc2hvdFdpdGhPcHRpb25zKHRv
SW50UmVjdChyZWN0KSwgc2NhbGVGYWN0b3IsIHNuYXBzaG90T3B0aW9uc0Zyb21JbWFnZU9wdGlv
bnMob3B0aW9ucykpOwotICAgIHJldHVybiB0b0FQSSh3ZWJJbWFnZS5yZWxlYXNlKCkubGVha1Jl
ZigpKTsKKyAgICByZXR1cm4gdG9BUEkod2ViSW1hZ2UubGVha1JlZigpKTsKIH0KIAogZG91Ymxl
IFdLQnVuZGxlUGFnZUdldEJhY2tpbmdTY2FsZUZhY3RvcihXS0J1bmRsZVBhZ2VSZWYgcGFnZVJl
ZikKQEAgLTYyNCw3ICs2MjQsNyBAQCB2b2lkIFdLQnVuZGxlUGFnZVBvc3RTeW5jaHJvbm91c01l
c3NhZ2VGb3JUZXN0aW5nKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS1N0cgogICAgIFJlZlB0
cjxBUEk6Ok9iamVjdD4gcmV0dXJuRGF0YTsKICAgICBwYWdlLT5wb3N0U3luY2hyb25vdXNNZXNz
YWdlRm9yVGVzdGluZyh0b1dURlN0cmluZyhtZXNzYWdlTmFtZVJlZiksIHRvSW1wbChtZXNzYWdl
Qm9keVJlZiksIHJldHVybkRhdGEpOwogICAgIGlmIChyZXR1cm5EYXRhUmVmKQotICAgICAgICAq
cmV0dXJuRGF0YVJlZiA9IHRvQVBJKHJldHVybkRhdGEucmVsZWFzZSgpLmxlYWtSZWYoKSk7Cisg
ICAgICAgICpyZXR1cm5EYXRhUmVmID0gdG9BUEkocmV0dXJuRGF0YS5sZWFrUmVmKCkpOwogfQog
CiB2b2lkIFdLQnVuZGxlUGFnZUFkZFVzZXJTY3JpcHQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYs
IFdLU3RyaW5nUmVmIHNvdXJjZSwgX1dLVXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9u
VGltZSwgV0tVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVJhbmdlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVSYW5nZUhhbmRsZS5jcHAKaW5kZXggNzNiODhjMTM0MDYzM2M2
OTA4MThkNDhjMzQxZWE1Njk5YTgxN2VjMC4uNDM3MTdjOTE1ZDA2MmIzZDRhNGI3ZGYwZWYzMWMz
ZjU2NjFlNTQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVJhbmdlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUmFuZ2VIYW5kbGUuY3Bw
CkBAIC00Myw3ICs0Myw3IEBAIFdLVHlwZUlEIFdLQnVuZGxlUmFuZ2VIYW5kbGVHZXRUeXBlSUQo
KQogV0tCdW5kbGVSYW5nZUhhbmRsZVJlZiBXS0J1bmRsZVJhbmdlSGFuZGxlQ3JlYXRlKEpTQ29u
dGV4dFJlZiBjb250ZXh0UmVmLCBKU09iamVjdFJlZiBvYmplY3RSZWYpCiB7CiAgICAgUmVmUHRy
PEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IHJhbmdlSGFuZGxlID0gSW5qZWN0ZWRCdW5kbGVS
YW5nZUhhbmRsZTo6Z2V0T3JDcmVhdGUoY29udGV4dFJlZiwgb2JqZWN0UmVmKTsKLSAgICByZXR1
cm4gdG9BUEkocmFuZ2VIYW5kbGUucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRv
QVBJKHJhbmdlSGFuZGxlLmxlYWtSZWYoKSk7CiB9CiAKIFdLUmVjdCBXS0J1bmRsZVJhbmdlSGFu
ZGxlR2V0Qm91bmRpbmdSZWN0SW5XaW5kb3dDb29yZGluYXRlcyhXS0J1bmRsZVJhbmdlSGFuZGxl
UmVmIHJhbmdlSGFuZGxlUmVmKQpAQCAtNTUsNSArNTUsNSBAQCBXS1JlY3QgV0tCdW5kbGVSYW5n
ZUhhbmRsZUdldEJvdW5kaW5nUmVjdEluV2luZG93Q29vcmRpbmF0ZXMoV0tCdW5kbGVSYW5nZUhh
bmRsZQogV0tJbWFnZVJlZiBXS0J1bmRsZVJhbmdlSGFuZGxlQ29weVNuYXBzaG90V2l0aE9wdGlv
bnMoV0tCdW5kbGVSYW5nZUhhbmRsZVJlZiByYW5nZUhhbmRsZVJlZiwgV0tTbmFwc2hvdE9wdGlv
bnMgb3B0aW9ucykKIHsKICAgICBSZWZQdHI8V2ViSW1hZ2U+IGltYWdlID0gdG9JbXBsKHJhbmdl
SGFuZGxlUmVmKS0+cmVuZGVyZWRJbWFnZSh0b1NuYXBzaG90T3B0aW9ucyhvcHRpb25zKSk7Ci0g
ICAgcmV0dXJuIHRvQVBJKGltYWdlLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgIHJldHVybiB0
b0FQSShpbWFnZS5sZWFrUmVmKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVNjcmlwdFdvcmxkLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVTY3Jp
cHRXb3JsZC5jcHAKaW5kZXggNmRhMGNjMGU2NzVmY2UzNDVjYjQyNzI0MDhhNjgyMmQwODdlZjNh
NC4uYjdiZDhiMzAyYjMxNzJlMWZlM2JjOGNiYzUzOWI4YWY5MDYyNGFlMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVNj
cmlwdFdvcmxkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlU2NyaXB0V29ybGQuY3BwCkBAIC00MCw3ICs0MCw3IEBAIFdLVHlw
ZUlEIFdLQnVuZGxlU2NyaXB0V29ybGRHZXRUeXBlSUQoKQogV0tCdW5kbGVTY3JpcHRXb3JsZFJl
ZiBXS0J1bmRsZVNjcmlwdFdvcmxkQ3JlYXRlV29ybGQoKQogewogICAgIFJlZlB0cjxJbmplY3Rl
ZEJ1bmRsZVNjcmlwdFdvcmxkPiB3b3JsZCA9IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6OmNy
ZWF0ZSgpOwotICAgIHJldHVybiB0b0FQSSh3b3JsZC5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAg
ICByZXR1cm4gdG9BUEkod29ybGQubGVha1JlZigpKTsKIH0KIAogV0tCdW5kbGVTY3JpcHRXb3Js
ZFJlZiBXS0J1bmRsZVNjcmlwdFdvcmxkTm9ybWFsV29ybGQoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NTm9kZS5tbSBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTU5v
ZGUubW0KaW5kZXggNzEyMmMzZmQ5N2Q2MzhhOTBmNjIwN2RkMmJkN2U1ZTkyN2NhN2E5Mi4uNDli
NGNiOWNhZWJiOWRmMDE0MjZmOTVmOTdlNjM2OWJmYjIyYWNmZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NTm9kZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tE
T01Ob2RlLm1tCkBAIC0xMjksOCArMTI5LDggQEAgQGltcGxlbWVudGF0aW9uIFdLRE9NTm9kZSAo
V0tQcml2YXRlKQogCiAtIChXS0J1bmRsZU5vZGVIYW5kbGVSZWYpX2NvcHlCdW5kbGVOb2RlSGFu
ZGxlUmVmCiB7Ci0gICAgUmVmUHRyPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBu
b2RlSGFuZGxlID0gV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmdldE9yQ3JlYXRl
KF9pbXBsLmdldCgpKTsKLSAgICByZXR1cm4gdG9BUEkobm9kZUhhbmRsZS5yZWxlYXNlKCkubGVh
a1JlZigpKTsKKyAgICBhdXRvIG5vZGVIYW5kbGUgPSBXZWJLaXQ6OkluamVjdGVkQnVuZGxlTm9k
ZUhhbmRsZTo6Z2V0T3JDcmVhdGUoX2ltcGwuZ2V0KCkpOworICAgIHJldHVybiB0b0FQSShub2Rl
SGFuZGxlLmxlYWtSZWYoKSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW0K
aW5kZXggMTY1ZGEwNjQzNDMyMTVkYzZiOWYwMDFjZTYwNTU3MTBlZWY2Y2I2Ny4uMGYwOGQ4NDgx
MDE4ODlhNTBiNWYxMTE2ODlhNTc2ZjE1ODFkNTE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW0KKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFu
Z2UubW0KQEAgLTE1Niw4ICsxNTYsOCBAQCBAaW1wbGVtZW50YXRpb24gV0tET01SYW5nZSAoV0tQ
cml2YXRlKQogCiAtIChXS0J1bmRsZVJhbmdlSGFuZGxlUmVmKV9jb3B5QnVuZGxlUmFuZ2VIYW5k
bGVSZWYKIHsKLSAgICBSZWZQdHI8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPiBy
YW5nZUhhbmRsZSA9IFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Z2V0T3JDcmVh
dGUoX2ltcGwuZ2V0KCkpOwotICAgIHJldHVybiB0b0FQSShyYW5nZUhhbmRsZS5yZWxlYXNlKCku
bGVha1JlZigpKTsKKyAgICBhdXRvIHJhbmdlSGFuZGxlID0gV2ViS2l0OjpJbmplY3RlZEJ1bmRs
ZVJhbmdlSGFuZGxlOjpnZXRPckNyZWF0ZShfaW1wbC5nZXQoKSk7CisgICAgcmV0dXJuIHRvQVBJ
KHJhbmdlSGFuZGxlLmxlYWtSZWYoKSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5
bGVEZWNsYXJhdGlvbkhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25IYW5kbGUuY3Bw
CmluZGV4IGFjMTFkMTFhNzg2NjQyYWY3Mzk5ZmY1MDllOGY3YzVjZDFlNjhjZTIuLjJhOGYxN2E0
YWNmODZiMjc3OTJkYmRlMzdkNzNmYjA1YjViNjA3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5bGVE
ZWNsYXJhdGlvbkhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uSGFuZGxlLmNw
cApAQCAtNTEsOSArNTEsOSBAQCBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNs
YXJhdGlvbkhhbmRsZT4gSW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURlY2xhcgogICAgIGlmICghcmVz
dWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybiBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxl
Q1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZT4ocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7CiAKLSAg
ICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uSGFuZGxlPiBzdHlsZURl
Y2xhcmF0aW9uSGFuZGxlID0gYWRvcHRSZWYobmV3IEluamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNs
YXJhdGlvbkhhbmRsZSgqc3R5bGVEZWNsYXJhdGlvbikpOwotICAgIHJlc3VsdC5pdGVyYXRvci0+
dmFsdWUgPSBzdHlsZURlY2xhcmF0aW9uSGFuZGxlLmdldCgpOwotICAgIHJldHVybiBzdHlsZURl
Y2xhcmF0aW9uSGFuZGxlLnJlbGVhc2UoKTsKKyAgICBhdXRvIHN0eWxlRGVjbGFyYXRpb25IYW5k
bGUgPSBhZG9wdFJlZigqbmV3IEluamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRs
ZSgqc3R5bGVEZWNsYXJhdGlvbikpOworICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdHls
ZURlY2xhcmF0aW9uSGFuZGxlLnB0cigpOworICAgIHJldHVybiBXVEZNb3ZlKHN0eWxlRGVjbGFy
YXRpb25IYW5kbGUpOwogfQogCiBJbmplY3RlZEJ1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25IYW5k
bGU6OkluamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZShDU1NTdHlsZURlY2xh
cmF0aW9uJiBzdHlsZURlY2xhcmF0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVu
ZGxlTm9kZUhhbmRsZS5jcHAKaW5kZXggMmViMmRiM2IyOTdlZTYyYTkzNGE5N2ZkZmM5YzgzNWI4
ZGQ2YzY2OS4uY2ZlOTkwNjQyNzFkZGY3OGQ1YzY5MzI0YzYyOWU3ZTFlMjViOWNhMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0
ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCkBAIC0xNDAsNyAr
MTQwLDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IGltYWdlRm9yUmVjdChGcmFtZVZp
ZXcqIGZyYW1lVmlldywgY29uc3QgSW50UmVjdCYgcmUKICAgICBmbG9hdCBzY2FsZUZhY3RvciA9
IGZyYW1lVmlldy0+ZnJhbWUoKS5wYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCk7CiAgICAgYml0
bWFwU2l6ZS5zY2FsZShzY2FsZUZhY3Rvcik7CiAKLSAgICBSZWZQdHI8V2ViSW1hZ2U+IHNuYXBz
aG90ID0gV2ViSW1hZ2U6OmNyZWF0ZShiaXRtYXBTaXplLCBzbmFwc2hvdE9wdGlvbnNUb0ltYWdl
T3B0aW9ucyhvcHRpb25zKSk7CisgICAgYXV0byBzbmFwc2hvdCA9IFdlYkltYWdlOjpjcmVhdGUo
Yml0bWFwU2l6ZSwgc25hcHNob3RPcHRpb25zVG9JbWFnZU9wdGlvbnMob3B0aW9ucykpOwogICAg
IGlmICghc25hcHNob3QtPmJpdG1hcCgpKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtMTY0LDcg
KzE2NCw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkltYWdlPiBpbWFnZUZvclJlY3QoRnJhbWVW
aWV3KiBmcmFtZVZpZXcsIGNvbnN0IEludFJlY3QmIHJlCiAgICAgZnJhbWVWaWV3LT5wYWludENv
bnRlbnRzRm9yU25hcHNob3QoKmdyYXBoaWNzQ29udGV4dC5nZXQoKSwgcmVjdCwgc2hvdWxkUGFp
bnRTZWxlY3Rpb24sIEZyYW1lVmlldzo6RG9jdW1lbnRDb29yZGluYXRlcyk7CiAgICAgZnJhbWVW
aWV3LT5zZXRQYWludEJlaGF2aW9yKG9sZFBhaW50QmVoYXZpb3IpOwogCi0gICAgcmV0dXJuIHNu
YXBzaG90LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gc25hcHNob3Q7CiB9CiAKIFBhc3NSZWZQdHI8
V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6cmVuZGVyZWRJbWFnZShTbmFwc2hv
dE9wdGlvbnMgb3B0aW9ucykKQEAgLTE4NywxMCArMTg3LDEwIEBAIFBhc3NSZWZQdHI8V2ViSW1h
Z2U+IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6cmVuZGVyZWRJbWFnZShTbmFwc2hvdE9wdGlv
bnMgb3B0CiAgICAgSW50UmVjdCBwYWludGluZ1JlY3QgPSBzbmFwcGVkSW50UmVjdChyZW5kZXJl
ci0+cGFpbnRpbmdSb290UmVjdCh0b3BMZXZlbFJlY3QpKTsKIAogICAgIGZyYW1lVmlldy0+c2V0
Tm9kZVRvRHJhdyhtX25vZGUucHRyKCkpOwotICAgIFJlZlB0cjxXZWJJbWFnZT4gaW1hZ2UgPSBp
bWFnZUZvclJlY3QoZnJhbWVWaWV3LCBwYWludGluZ1JlY3QsIG9wdGlvbnMpOworICAgIGF1dG8g
aW1hZ2UgPSBpbWFnZUZvclJlY3QoZnJhbWVWaWV3LCBwYWludGluZ1JlY3QsIG9wdGlvbnMpOwog
ICAgIGZyYW1lVmlldy0+c2V0Tm9kZVRvRHJhdygwKTsKIAotICAgIHJldHVybiBpbWFnZS5yZWxl
YXNlKCk7CisgICAgcmV0dXJuIGltYWdlOwogfQogCiBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxl
UmFuZ2VIYW5kbGU+IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6dmlzaWJsZVJhbmdlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0lu
amVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKaW5kZXggOGE5
NDUxNDliOGU5YjgyNDJkZDM1NmQ0MjIzOTJjYzQ0MTUwZTdjOS4uYzliZWY1YTZlOGI2M2FmZTk2
MjVkOGRkZmU5NDMyNzhkOTAxYTMyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRC
dW5kbGVSYW5nZUhhbmRsZS5jcHAKQEAgLTcwLDkgKzcwLDkgQEAgUGFzc1JlZlB0cjxJbmplY3Rl
ZEJ1bmRsZVJhbmdlSGFuZGxlPiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpnZXRPckNyZWF0
ZShSYW4KICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICByZXR1cm4gUGFzc1Jl
ZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPihyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsK
IAotICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPiByYW5nZUhhbmRsZSA9IElu
amVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmNyZWF0ZShyYW5nZSk7Ci0gICAgcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSA9IHJhbmdlSGFuZGxlLmdldCgpOwotICAgIHJldHVybiByYW5nZUhhbmRsZS5y
ZWxlYXNlKCk7CisgICAgYXV0byByYW5nZUhhbmRsZSA9IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5k
bGU6OmNyZWF0ZShyYW5nZSk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHJhbmdlSGFu
ZGxlLnB0cigpOworICAgIHJldHVybiBXVEZNb3ZlKHJhbmdlSGFuZGxlKTsKIH0KIAogUmVmPElu
amVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmNyZWF0
ZShSYW5nZSogcmFuZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDY5YTRmZjgwOWY5NzBj
MzVhZGQxNWM0ODEyZDFlOWQ1NDViZmFhMjUuLjI4M2E5NjcwMGY1ZTFmZDYzOGIyZWM1MjMyNGQz
N2U3MGU4YjAwNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC05MCwxMyArOTAsMTMgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAKIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGU+IEluamVjdGVk
QnVuZGxlOjpjcmVhdGUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1l
dGVycywgQVBJOjpPYmplY3QqIGluaXRpYWxpemF0aW9uVXNlckRhdGEpCiB7Ci0gICAgUmVmUHRy
PEluamVjdGVkQnVuZGxlPiBidW5kbGUgPSBhZG9wdFJlZihuZXcgSW5qZWN0ZWRCdW5kbGUocGFy
YW1ldGVycykpOworICAgIGF1dG8gYnVuZGxlID0gYWRvcHRSZWYoKm5ldyBJbmplY3RlZEJ1bmRs
ZShwYXJhbWV0ZXJzKSk7CiAKICAgICBidW5kbGUtPm1fc2FuZGJveEV4dGVuc2lvbiA9IFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZShwYXJhbWV0ZXJzLmluamVjdGVkQnVuZGxlUGF0aEV4dGVuc2lv
bkhhbmRsZSk7CiAgICAgaWYgKCFidW5kbGUtPmluaXRpYWxpemUocGFyYW1ldGVycywgaW5pdGlh
bGl6YXRpb25Vc2VyRGF0YSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJu
IGJ1bmRsZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1vdmUoYnVuZGxlKTsKIH0KIAogSW5q
ZWN0ZWRCdW5kbGU6OkluamVjdGVkQnVuZGxlKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMmIHBhcmFtZXRlcnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAppbmRleCAzMTUxZTE0
ZWI1ZTk1ZTQ2YjA2ZjBkN2NmMTA5ODVjYTI0ZjYyZjRmLi44ZjE1ZDM1MjQ2OGIxMTFkYWI1OGJl
NzhkMjZmOTFmODVjNTJmMWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKQEAgLTE2OSwx
MCArMTY5LDEwIEBAIHZvaWQgTmV0c2NhcGVQbHVnaW46OmxvYWRVUkwoY29uc3QgU3RyaW5nJiBt
ZXRob2QsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zCiAKICAgICBpZiAodGFyZ2V0Lmlz
TnVsbCgpKSB7CiAgICAgICAgIC8vIFRoZSBicm93c2VyIGlzIGdvaW5nIHRvIHNlbmQgdGhlIGRh
dGEgaW4gYSBzdHJlYW0sIGNyZWF0ZSBhIHBsdWctaW4gc3RyZWFtLgotICAgICAgICBSZWZQdHI8
TmV0c2NhcGVQbHVnaW5TdHJlYW0+IHBsdWdpblN0cmVhbSA9IE5ldHNjYXBlUGx1Z2luU3RyZWFt
OjpjcmVhdGUodGhpcywgcmVxdWVzdElELCB1cmxTdHJpbmcsIHNlbmROb3RpZmljYXRpb24sIG5v
dGlmaWNhdGlvbkRhdGEpOworICAgICAgICBhdXRvIHBsdWdpblN0cmVhbSA9IE5ldHNjYXBlUGx1
Z2luU3RyZWFtOjpjcmVhdGUodGhpcywgcmVxdWVzdElELCB1cmxTdHJpbmcsIHNlbmROb3RpZmlj
YXRpb24sIG5vdGlmaWNhdGlvbkRhdGEpOwogICAgICAgICBBU1NFUlQoIW1fc3RyZWFtcy5jb250
YWlucyhyZXF1ZXN0SUQpKTsKIAotICAgICAgICBtX3N0cmVhbXMuc2V0KHJlcXVlc3RJRCwgcGx1
Z2luU3RyZWFtLnJlbGVhc2UoKSk7CisgICAgICAgIG1fc3RyZWFtcy5zZXQocmVxdWVzdElELCBX
VEZNb3ZlKHBsdWdpblN0cmVhbSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0RlcHJlY2F0ZWRQREZQ
bHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0RlcHJlY2F0
ZWRQREZQbHVnaW4ubW0KaW5kZXggMWM0NzE3Y2E3MTg0M2Y0ZTRjMDE2ZWZiNzZjZjM5YzNhMGNl
YjNlYi4uMTIyM2Y0OWM1MDg0NDA3YTRkMDhmYzM1MTFjYTQ2MjVkMjA3ZWIwOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9EZXByZWNhdGVkUERGUGx1
Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVj
YXRlZFBERlBsdWdpbi5tbQpAQCAtNjUxLDcgKzY1MSw3IEBAIGNvbnN0IFBsdWdpblZpZXcqIFBE
RlBsdWdpbjo6cGx1Z2luVmlldygpIGNvbnN0CiAKIFBhc3NSZWZQdHI8U2Nyb2xsYmFyPiBQREZQ
bHVnaW46OmNyZWF0ZVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbikK
IHsKLSAgICBSZWZQdHI8U2Nyb2xsYmFyPiB3aWRnZXQgPSBTY3JvbGxiYXI6OmNyZWF0ZU5hdGl2
ZVNjcm9sbGJhcigqdGhpcywgb3JpZW50YXRpb24sIFJlZ3VsYXJTY3JvbGxiYXIpOworICAgIGF1
dG8gd2lkZ2V0ID0gU2Nyb2xsYmFyOjpjcmVhdGVOYXRpdmVTY3JvbGxiYXIoKnRoaXMsIG9yaWVu
dGF0aW9uLCBSZWd1bGFyU2Nyb2xsYmFyKTsKICAgICBpZiAob3JpZW50YXRpb24gPT0gSG9yaXpv
bnRhbFNjcm9sbGJhcikgewogICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXJMYXllciA9IGFk
b3B0TlMoW1tXS1BERlBsdWdpblNjcm9sbGJhckxheWVyIGFsbG9jXSBpbml0V2l0aFBERlBsdWdp
bjp0aGlzXSk7CiAgICAgICAgIFttX2NvbnRhaW5lckxheWVyIGFkZFN1YmxheWVyOm1faG9yaXpv
bnRhbFNjcm9sbGJhckxheWVyLmdldCgpXTsKQEAgLTY2Nyw3ICs2NjcsNyBAQCBQYXNzUmVmUHRy
PFNjcm9sbGJhcj4gUERGUGx1Z2luOjpjcmVhdGVTY3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRp
b24gb3JpZW50YXRpbwogICAgICAgICB9CiAgICAgfQogICAgIHBsdWdpblZpZXcoKS0+ZnJhbWUo
KS0+dmlldygpLT5hZGRDaGlsZCh3aWRnZXQuZ2V0KCkpOwotICAgIHJldHVybiB3aWRnZXQucmVs
ZWFzZSgpOworICAgIHJldHVybiB3aWRnZXQ7CiB9CiAKIHZvaWQgUERGUGx1Z2luOjpkZXN0cm95
U2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKaW5kZXgg
NmIyNGNmNDczMjIyZmQwYzMyNjhhNWQ3NTExNDkxMDZjNjU3ZjYwOS4uYTBjYzhiOWIyNDRmMjUz
ZGMxMWQ2YmU4YTVkY2Q2OWU3Zjg3MDMxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCkBAIC0yNjIsNyArMjYyLDcgQEAg
dm9pZCBTdG9yYWdlQXJlYU1hcDo6YXBwbHlDaGFuZ2UoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0
IFN0cmluZyYgbmV3VmFsdWUpCiAKICAgICBpZiAoIWtleSkgewogICAgICAgICAvLyBBIG51bGwg
a2V5IG1lYW5zIGNsZWFyLgotICAgICAgICBSZWZQdHI8U3RvcmFnZU1hcD4gbmV3U3RvcmFnZU1h
cCA9IFN0b3JhZ2VNYXA6OmNyZWF0ZShtX3F1b3RhSW5CeXRlcyk7CisgICAgICAgIGF1dG8gbmV3
U3RvcmFnZU1hcCA9IFN0b3JhZ2VNYXA6OmNyZWF0ZShtX3F1b3RhSW5CeXRlcyk7CiAKICAgICAg
ICAgLy8gQW55IGNoYW5nZXMgdGhhdCB3ZXJlIG1hZGUgbG9jYWxseSBhZnRlciB0aGUgY2xlYXIg
bXVzdCBzdGlsbCBiZSBrZXB0IGFyb3VuZCBpbiB0aGUgbmV3IG1hcC4KICAgICAgICAgZm9yIChh
dXRvIGl0ID0gbV9wZW5kaW5nVmFsdWVDaGFuZ2VzLmJlZ2luKCkua2V5cygpLCBlbmQgPSBtX3Bl
bmRpbmdWYWx1ZUNoYW5nZXMuZW5kKCkua2V5cygpOyBpdCAhPSBlbmQ7ICsraXQpIHsKQEAgLTI3
OCw3ICsyNzgsNyBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjphcHBseUNoYW5nZShjb25zdCBTdHJp
bmcmIGtleSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSkKICAgICAgICAgICAgIG5ld1N0b3JhZ2VN
YXAtPnNldEl0ZW1JZ25vcmluZ1F1b3RhKGtleSwgb2xkVmFsdWUpOwogICAgICAgICB9CiAKLSAg
ICAgICAgbV9zdG9yYWdlTWFwID0gbmV3U3RvcmFnZU1hcC5yZWxlYXNlKCk7CisgICAgICAgIG1f
c3RvcmFnZU1hcCA9IFdURk1vdmUobmV3U3RvcmFnZU1hcCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCmluZGV4IDE1MWM5MDA2
ZmMyYjRmOTA4MTBlNjJkNmQzMzdkMTg5Yjc2MzcyNTUuLjFjYTdmNDQ5N2E3OThiM2U1ZGVkNGFl
ZWIxOGVhY2MyZjE5YWE3NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNw
cApAQCAtMTIzLDcgKzEyMyw3IEBAIFBhZ2VTdGF0ZSB0b1BhZ2VTdGF0ZShjb25zdCBXZWJDb3Jl
OjpIaXN0b3J5SXRlbSYgaGlzdG9yeUl0ZW0pCiAKIHN0YXRpYyBQYXNzUmVmUHRyPEZvcm1EYXRh
PiB0b0Zvcm1EYXRhKGNvbnN0IEhUVFBCb2R5JiBodHRwQm9keSkKIHsKLSAgICBSZWZQdHI8Rm9y
bURhdGE+IGZvcm1EYXRhID0gRm9ybURhdGE6OmNyZWF0ZSgpOworICAgIGF1dG8gZm9ybURhdGEg
PSBGb3JtRGF0YTo6Y3JlYXRlKCk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBo
dHRwQm9keS5lbGVtZW50cykgewogICAgICAgICBzd2l0Y2ggKGVsZW1lbnQudHlwZSkgewpAQCAt
MTQxLDcgKzE0MSw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEZvcm1EYXRhPiB0b0Zvcm1EYXRhKGNv
bnN0IEhUVFBCb2R5JiBodHRwQm9keSkKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBm
b3JtRGF0YS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1vdmUoZm9ybURhdGEpOwogfQogCiBz
dGF0aWMgdm9pZCBhcHBseUZyYW1lU3RhdGUoSGlzdG9yeUl0ZW0mIGhpc3RvcnlJdGVtLCBjb25z
dCBGcmFtZVN0YXRlJiBmcmFtZVN0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cAppbmRleCBhMTQ3ZjIwZGY4Zjk3Y2I1ZGEzYmFmNjkzZTMzNDA0ZDE1MDA4ZTdlLi5mMWFlNTU0
MzEwNDRiZjg5ZWI1NjAwOTUyNDQ3ODRkZmQ4MGJlY2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcApAQCAtMTQzNSwxMSArMTQzNSwxMSBAQCBSZWZQdHI8V2lkZ2V0PiBXZWJG
cmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0lu
RWxlbQogI2VuZGlmCiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICBSZWZQ
dHI8UGx1Z2luPiBwbHVnaW4gPSBtX2ZyYW1lLT5wYWdlKCktPmNyZWF0ZVBsdWdpbihtX2ZyYW1l
LCBwbHVnaW5FbGVtZW50LCBwYXJhbWV0ZXJzLCBwYXJhbWV0ZXJzLm1pbWVUeXBlKTsKKyAgICBh
dXRvIHBsdWdpbiA9IG1fZnJhbWUtPnBhZ2UoKS0+Y3JlYXRlUGx1Z2luKG1fZnJhbWUsIHBsdWdp
bkVsZW1lbnQsIHBhcmFtZXRlcnMsIHBhcmFtZXRlcnMubWltZVR5cGUpOwogICAgIGlmICghcGx1
Z2luKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBQbHVnaW5WaWV3Ojpj
cmVhdGUocGx1Z2luRWxlbWVudCwgcGx1Z2luLnJlbGVhc2UoKSwgcGFyYW1ldGVycyk7CisgICAg
cmV0dXJuIFBsdWdpblZpZXc6OmNyZWF0ZShwbHVnaW5FbGVtZW50LCBXVEZNb3ZlKHBsdWdpbiks
IHBhcmFtZXRlcnMpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocGx1Z2luRWxlbWVudCk7CiAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNDU0LDggKzE0NTQsOCBAQCB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpyZWNyZWF0ZVBsdWdpbihXaWRnZXQqIHdpZGdldCkKIAogICAgIFBsdWdpblZp
ZXcqIHBsdWdpblZpZXcgPSBzdGF0aWNfY2FzdDxQbHVnaW5WaWV3Kj4od2lkZ2V0KTsKICAgICBT
dHJpbmcgbmV3TUlNRVR5cGU7Ci0gICAgUmVmUHRyPFBsdWdpbj4gcGx1Z2luID0gbV9mcmFtZS0+
cGFnZSgpLT5jcmVhdGVQbHVnaW4obV9mcmFtZSwgcGx1Z2luVmlldy0+cGx1Z2luRWxlbWVudCgp
LCBwbHVnaW5WaWV3LT5pbml0aWFsUGFyYW1ldGVycygpLCBuZXdNSU1FVHlwZSk7Ci0gICAgcGx1
Z2luVmlldy0+cmVjcmVhdGVBbmRJbml0aWFsaXplKHBsdWdpbi5yZWxlYXNlKCkpOworICAgIGF1
dG8gcGx1Z2luID0gbV9mcmFtZS0+cGFnZSgpLT5jcmVhdGVQbHVnaW4obV9mcmFtZSwgcGx1Z2lu
Vmlldy0+cGx1Z2luRWxlbWVudCgpLCBwbHVnaW5WaWV3LT5pbml0aWFsUGFyYW1ldGVycygpLCBu
ZXdNSU1FVHlwZSk7CisgICAgcGx1Z2luVmlldy0+cmVjcmVhdGVBbmRJbml0aWFsaXplKFdURk1v
dmUocGx1Z2luKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh3aWRnZXQpOwogI2VuZGlmCkBA
IC0xNDg4LDcgKzE0ODgsNyBAQCBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTChjb25zdCBTdAogUGFzc1JlZlB0cjxX
aWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0
IEludFNpemUmIHBsdWdpblNpemUsIEhUTUxBcHBsZXRFbGVtZW50KiBhcHBsZXRFbGVtZW50LCBj
b25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhcmFtVmFsdWVzKQogewogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQotICAgIFJlZlB0cjxXaWRnZXQ+IHBsdWdpbiA9IGNyZWF0ZVBsdWdpbihwbHVnaW5TaXplLCBh
cHBsZXRFbGVtZW50LCBVUkwoKSwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMsIGFwcGxldEVsZW1l
bnQtPnNlcnZpY2VUeXBlKCksIGZhbHNlKTsKKyAgICBhdXRvIHBsdWdpbiA9IGNyZWF0ZVBsdWdp
bihwbHVnaW5TaXplLCBhcHBsZXRFbGVtZW50LCBVUkwoKSwgcGFyYW1OYW1lcywgcGFyYW1WYWx1
ZXMsIGFwcGxldEVsZW1lbnQtPnNlcnZpY2VUeXBlKCksIGZhbHNlKTsKICAgICBpZiAoIXBsdWdp
bikgewogICAgICAgICBpZiAoV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkgewog
ICAgICAgICAgICAgU3RyaW5nIGZyYW1lVVJMU3RyaW5nID0gbV9mcmFtZS0+Y29yZUZyYW1lKCkt
PmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlVVJMKCkuc3RyaW5nKCk7CkBAIC0x
NDk2LDcgKzE0OTYsNyBAQCBQYXNzUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYgcAogICAgICAgICAgICAgd2Vi
UGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRGYWlsVG9Jbml0aWFsaXplUGx1
Z2luKGFwcGxldEVsZW1lbnQtPnNlcnZpY2VUeXBlKCksIGZyYW1lVVJMU3RyaW5nLCBwYWdlVVJM
U3RyaW5nKSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIHBsdWdpbi5yZWxlYXNlKCk7
CisgICAgcmV0dXJuIFdURk1vdmUocGx1Z2luKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBs
dWdpblNpemUpOwogICAgIFVOVVNFRF9QQVJBTShhcHBsZXRFbGVtZW50KTsKQEAgLTE3MDEsOCAr
MTcwMSw4IEBAIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZEZvcmNlVW5pdmVyc2Fs
QWNjZXNzRnJvbUxvY2FsVVJMKGNvbnN0IFdlYkNvcmU6CiAKIFBhc3NSZWZQdHI8RnJhbWVOZXR3
b3JraW5nQ29udGV4dD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZU5ldHdvcmtpbmdDb250
ZXh0KCkKIHsKLSAgICBSZWZQdHI8V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY29udGV4dCA9
IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmNyZWF0ZShtX2ZyYW1lKTsKLSAgICByZXR1cm4g
Y29udGV4dC5yZWxlYXNlKCk7CisgICAgYXV0byBjb250ZXh0ID0gV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dDo6Y3JlYXRlKG1fZnJhbWUpOworICAgIHJldHVybiBXVEZNb3ZlKGNvbnRleHQpOwog
fQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuY3BwCmluZGV4IDAyMWFiZmE1MDA5MjUwMGUxZDVjMWMzYzBlMjUyN2U4NDdiNzZmMzguLjk2
ODkyOWZkYTM0NzlhYWQyYmU0YTEwYTBiNDU5NmFlMTc1NTZkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5jcHAKQEAgLTEwNyw5ICsxMDcsOSBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVu
dDo6aGlnaGxpZ2h0KCkKIHsKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIGlmICghbV9oaWdobGln
aHRPdmVybGF5KSB7Ci0gICAgICAgIFJlZlB0cjxQYWdlT3ZlcmxheT4gaGlnaGxpZ2h0T3Zlcmxh
eSA9IFBhZ2VPdmVybGF5OjpjcmVhdGUoKnRoaXMpOwotICAgICAgICBtX2hpZ2hsaWdodE92ZXJs
YXkgPSBoaWdobGlnaHRPdmVybGF5LmdldCgpOwotICAgICAgICBtX3BhZ2UtPm1haW5GcmFtZSgp
LT5wYWdlT3ZlcmxheUNvbnRyb2xsZXIoKS5pbnN0YWxsUGFnZU92ZXJsYXkoaGlnaGxpZ2h0T3Zl
cmxheS5yZWxlYXNlKCksIFBhZ2VPdmVybGF5OjpGYWRlTW9kZTo6RmFkZSk7CisgICAgICAgIGF1
dG8gaGlnaGxpZ2h0T3ZlcmxheSA9IFBhZ2VPdmVybGF5OjpjcmVhdGUoKnRoaXMpOworICAgICAg
ICBtX2hpZ2hsaWdodE92ZXJsYXkgPSBoaWdobGlnaHRPdmVybGF5LnB0cigpOworICAgICAgICBt
X3BhZ2UtPm1haW5GcmFtZSgpLT5wYWdlT3ZlcmxheUNvbnRyb2xsZXIoKS5pbnN0YWxsUGFnZU92
ZXJsYXkoV1RGTW92ZShoaWdobGlnaHRPdmVybGF5KSwgUGFnZU92ZXJsYXk6OkZhZGVNb2RlOjpG
YWRlKTsKICAgICAgICAgbV9oaWdobGlnaHRPdmVybGF5LT5zZXROZWVkc0Rpc3BsYXkoKTsKICAg
ICB9IGVsc2UgewogICAgICAgICBtX2hpZ2hsaWdodE92ZXJsYXktPnN0b3BGYWRlT3V0QW5pbWF0
aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQppbmRleCA1YTAzODU5YmYxMjc5
NjA2ZmY3MDNjOTcxODcwNWUwZTRkNzVkZTY3Li4wYmQyNTg3NGZmNWJmMDgxN2Q3OTFmNDg3MzEw
ZWY2MGM1N2E1MzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KQEAgLTU2LDcg
KzU2LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4gY29udmVydEltYWdlVG9CaXRtYXAoTlNJbWFnZSAqaW1hZ2UsIGNvbnN0IEludFNp
emUmIHNpemUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVh
YmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc2l6ZSwgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0
c0FscGhhKTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVh
YmxlKHNpemUsIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CiAgICAgaWYgKCFiaXRt
YXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC03Miw3ICs3Miw3IEBAIHN0YXRpYyBQ
YXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY29udmVydEltYWdlVG9CaXRtYXAoTlNJbWFnZSAq
aW1hZ2UsIGNvbnN0IEluCiAKICAgICBbTlNHcmFwaGljc0NvbnRleHQgc2V0Q3VycmVudENvbnRl
eHQ6c2F2ZWRDb250ZXh0LmdldCgpXTsKIAotICAgIHJldHVybiBiaXRtYXAucmVsZWFzZSgpOwor
ICAgIHJldHVybiBXVEZNb3ZlKGJpdG1hcCk7CiB9CiAKIHZvaWQgV2ViRHJhZ0NsaWVudDo6c3Rh
cnREcmFnKFJldGFpblB0cjxOU0ltYWdlPiBpbWFnZSwgY29uc3QgSW50UG9pbnQmIHBvaW50LCBj
b25zdCBJbnRQb2ludCYsIERhdGFUcmFuc2ZlciYsIEZyYW1lJiBmcmFtZSwgYm9vbCBsaW5rRHJh
ZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRy
b2xsZXIuY3BwCmluZGV4IDlmMTE5M2Y0OTMyNzkzMjc5OTAwNTQwMzg2OGVhZGMwZDYyNDg4NmQu
LjFlMGNlZjQ2NTFiOTNiZjgwZmI3MDU2NjVjNmY2MTVmZWFiYzJhODkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcApAQCAt
MTkyLDkgKzE5Miw5IEBAIHZvaWQgRmluZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRVSUFmdGVyUGFn
ZVNjcm9sbChib29sIGZvdW5kLCBjb25zdCBTdHJpbmcmIHN0cmluCiAgICAgICAgICAgICBtX3dl
YlBhZ2UtPm1haW5GcmFtZSgpLT5wYWdlT3ZlcmxheUNvbnRyb2xsZXIoKS51bmluc3RhbGxQYWdl
T3ZlcmxheShtX2ZpbmRQYWdlT3ZlcmxheSwgUGFnZU92ZXJsYXk6OkZhZGVNb2RlOjpGYWRlKTsK
ICAgICB9IGVsc2UgewogICAgICAgICBpZiAoIW1fZmluZFBhZ2VPdmVybGF5KSB7Ci0gICAgICAg
ICAgICBSZWZQdHI8UGFnZU92ZXJsYXk+IGZpbmRQYWdlT3ZlcmxheSA9IFBhZ2VPdmVybGF5Ojpj
cmVhdGUoKnRoaXMsIFBhZ2VPdmVybGF5OjpPdmVybGF5VHlwZTo6RG9jdW1lbnQpOwotICAgICAg
ICAgICAgbV9maW5kUGFnZU92ZXJsYXkgPSBmaW5kUGFnZU92ZXJsYXkuZ2V0KCk7Ci0gICAgICAg
ICAgICBtX3dlYlBhZ2UtPm1haW5GcmFtZSgpLT5wYWdlT3ZlcmxheUNvbnRyb2xsZXIoKS5pbnN0
YWxsUGFnZU92ZXJsYXkoZmluZFBhZ2VPdmVybGF5LnJlbGVhc2UoKSwgUGFnZU92ZXJsYXk6OkZh
ZGVNb2RlOjpGYWRlKTsKKyAgICAgICAgICAgIGF1dG8gZmluZFBhZ2VPdmVybGF5ID0gUGFnZU92
ZXJsYXk6OmNyZWF0ZSgqdGhpcywgUGFnZU92ZXJsYXk6Ok92ZXJsYXlUeXBlOjpEb2N1bWVudCk7
CisgICAgICAgICAgICBtX2ZpbmRQYWdlT3ZlcmxheSA9IGZpbmRQYWdlT3ZlcmxheS5wdHIoKTsK
KyAgICAgICAgICAgIG1fd2ViUGFnZS0+bWFpbkZyYW1lKCktPnBhZ2VPdmVybGF5Q29udHJvbGxl
cigpLmluc3RhbGxQYWdlT3ZlcmxheShXVEZNb3ZlKGZpbmRQYWdlT3ZlcmxheSksIFBhZ2VPdmVy
bGF5OjpGYWRlTW9kZTo6RmFkZSk7CiAgICAgICAgIH0KICAgICAgICAgbV9maW5kUGFnZU92ZXJs
YXktPnNldE5lZWRzRGlzcGxheSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIu
Y3BwCmluZGV4IDhlMjJmNmVhNThhMTY1Mjk0YTAzYmRkMWYyYTFmYmU3OWFiY2ZhYTIuLjFhMzll
M2UxMDdkYzFmZGFiMzJjZDM2MjdlNTRjZjI4NWY2ZDBjNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVD
b250cm9sbGVyLmNwcApAQCAtNTAsMTAgKzUwLDEwIEBAIFBhc3NSZWZQdHI8VmlzaXRlZExpbmtU
YWJsZUNvbnRyb2xsZXI+IFZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyOjpnZXRPckNyZWF0ZSh1
CiAgICAgaWYgKHZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyUHRyKQogICAgICAgICByZXR1cm4g
dmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXJQdHI7CiAKLSAgICBSZWZQdHI8VmlzaXRlZExpbmtU
YWJsZUNvbnRyb2xsZXI+IHZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyID0gYWRvcHRSZWYobmV3
IFZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyKGlkZW50aWZpZXIpKTsKLSAgICB2aXNpdGVkTGlu
a1RhYmxlQ29udHJvbGxlclB0ciA9IHZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyLmdldCgpOwor
ICAgIGF1dG8gdmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIgPSBhZG9wdFJlZigqbmV3IFZpc2l0
ZWRMaW5rVGFibGVDb250cm9sbGVyKGlkZW50aWZpZXIpKTsKKyAgICB2aXNpdGVkTGlua1RhYmxl
Q29udHJvbGxlclB0ciA9IHZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyLnB0cigpOwogCi0gICAg
cmV0dXJuIHZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyLnJlbGVhc2UoKTsKKyAgICByZXR1cm4g
V1RGTW92ZSh2aXNpdGVkTGlua1RhYmxlQ29udHJvbGxlcik7CiB9CiAKIFZpc2l0ZWRMaW5rVGFi
bGVDb250cm9sbGVyOjpWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlcih1aW50NjRfdCBpZGVudGlm
aWVyKQpAQCAtOTAsMTEgKzkwLDExIEBAIHZvaWQgVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXI6
OmFkZFZpc2l0ZWRMaW5rKFBhZ2UmIHBhZ2UsIExpbmtIYXNoIGxpbmtIYXNoKQogCiB2b2lkIFZp
c2l0ZWRMaW5rVGFibGVDb250cm9sbGVyOjpzZXRWaXNpdGVkTGlua1RhYmxlKGNvbnN0IFNoYXJl
ZE1lbW9yeTo6SGFuZGxlJiBoYW5kbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hh
cmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5OjptYXAoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3Rl
Y3Rpb246OlJlYWRPbmx5KTsKKyAgICBhdXRvIHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6
bWFwKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgaWYg
KCFzaGFyZWRNZW1vcnkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fdmlzaXRlZExpbmtUYWJs
ZS5zZXRTaGFyZWRNZW1vcnkoc2hhcmVkTWVtb3J5LnJlbGVhc2UoKSk7CisgICAgbV92aXNpdGVk
TGlua1RhYmxlLnNldFNoYXJlZE1lbW9yeShXVEZNb3ZlKHNoYXJlZE1lbW9yeSkpOwogCiAgICAg
aW52YWxpZGF0ZVN0eWxlc0ZvckFsbExpbmtzKCk7CiAgICAgUGFnZUNhY2hlOjpzaW5nbGV0b24o
KS5tYXJrUGFnZXNGb3JWaXNpdGVkTGlua1N0eWxlUmVjYWxjKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCAyYjU1NDBkZjdhNTExOTY4
NjIxOWI1ZDU5ZjA1M2ZmMzUyNmM4YWVmLi45ZWMyNjQ1N2NjMjQzOTQzMjVkZmU0ZDJlYjU3MmVj
M2RkMWJkNDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHAKQEAgLTExMCwxOCArMTEwLDE4IEBAIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUxp
c3RlbmVySUQoKQogCiBQYXNzUmVmUHRyPFdlYkZyYW1lPiBXZWJGcmFtZTo6Y3JlYXRlV2l0aENv
cmVNYWluRnJhbWUoV2ViUGFnZSogcGFnZSwgV2ViQ29yZTo6RnJhbWUqIGNvcmVGcmFtZSkKIHsK
LSAgICBSZWZQdHI8V2ViRnJhbWU+IGZyYW1lID0gY3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxXZWJG
cmFtZUxvYWRlckNsaWVudD4oc3RhdGljX2Nhc3Q8V2ViRnJhbWVMb2FkZXJDbGllbnQqPigmY29y
ZUZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKSkpKTsKKyAgICBhdXRvIGZyYW1lID0gY3JlYXRlKHN0
ZDo6dW5pcXVlX3B0cjxXZWJGcmFtZUxvYWRlckNsaWVudD4oc3RhdGljX2Nhc3Q8V2ViRnJhbWVM
b2FkZXJDbGllbnQqPigmY29yZUZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKSkpKTsKICAgICBwYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENyZWF0ZU1haW5GcmFtZShmcmFtZS0+
ZnJhbWVJRCgpKSwgcGFnZS0+cGFnZUlEKCksIElQQzo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5X
YWl0aW5nRm9yU3luY1JlcGx5KTsKIAogICAgIGZyYW1lLT5tX2NvcmVGcmFtZSA9IGNvcmVGcmFt
ZTsKICAgICBmcmFtZS0+bV9jb3JlRnJhbWUtPnRyZWUoKS5zZXROYW1lKFN0cmluZygpKTsKICAg
ICBmcmFtZS0+bV9jb3JlRnJhbWUtPmluaXQoKTsKLSAgICByZXR1cm4gZnJhbWUucmVsZWFzZSgp
OworICAgIHJldHVybiBmcmFtZTsKIH0KIAogUGFzc1JlZlB0cjxXZWJGcmFtZT4gV2ViRnJhbWU6
OmNyZWF0ZVN1YmZyYW1lKFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBI
VE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCkKIHsKLSAgICBSZWZQdHI8V2ViRnJh
bWU+IGZyYW1lID0gY3JlYXRlKHN0ZDo6bWFrZV91bmlxdWU8V2ViRnJhbWVMb2FkZXJDbGllbnQ+
KCkpOworICAgIGF1dG8gZnJhbWUgPSBjcmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJGcmFtZUxv
YWRlckNsaWVudD4oKSk7CiAgICAgcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
aWRDcmVhdGVTdWJmcmFtZShmcmFtZS0+ZnJhbWVJRCgpKSwgcGFnZS0+cGFnZUlEKCksIElQQzo6
RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKIAogICAgIFJlZjxX
ZWJDb3JlOjpGcmFtZT4gY29yZUZyYW1lID0gRnJhbWU6OmNyZWF0ZShwYWdlLT5jb3JlUGFnZSgp
LCBvd25lckVsZW1lbnQsIGZyYW1lLT5tX2ZyYW1lTG9hZGVyQ2xpZW50LmdldCgpKTsKQEAgLTEz
MiwxNyArMTMyLDE3IEBAIFBhc3NSZWZQdHI8V2ViRnJhbWU+IFdlYkZyYW1lOjpjcmVhdGVTdWJm
cmFtZShXZWJQYWdlKiBwYWdlLCBjb25zdCBTdHJpbmcmIGZyYW1lCiAgICAgICAgIG93bmVyRWxl
bWVudC0+ZG9jdW1lbnQoKS5mcmFtZSgpLT50cmVlKCkuYXBwZW5kQ2hpbGQoV1RGTW92ZShjb3Jl
RnJhbWUpKTsKICAgICB9CiAgICAgZnJhbWUtPm1fY29yZUZyYW1lLT5pbml0KCk7Ci0gICAgcmV0
dXJuIGZyYW1lLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gZnJhbWU7CiB9CiAKIFBhc3NSZWZQdHI8
V2ViRnJhbWU+IFdlYkZyYW1lOjpjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPFdlYkZyYW1lTG9hZGVy
Q2xpZW50PiBmcmFtZUxvYWRlckNsaWVudCkKIHsKLSAgICBSZWZQdHI8V2ViRnJhbWU+IGZyYW1l
ID0gYWRvcHRSZWYobmV3IFdlYkZyYW1lKFdURk1vdmUoZnJhbWVMb2FkZXJDbGllbnQpKSk7Cisg
ICAgYXV0byBmcmFtZSA9IGFkb3B0UmVmKCpuZXcgV2ViRnJhbWUoV1RGTW92ZShmcmFtZUxvYWRl
ckNsaWVudCkpKTsKIAogICAgIC8vIEFkZCBleHBsaWN0IHJlZigpIHRoYXQgd2lsbCBiZSBiYWxh
bmNlZCBpbiBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZnJhbWVMb2FkZXJEZXN0cm95ZWQoKS4KICAg
ICBmcmFtZS0+cmVmKCk7CiAKLSAgICByZXR1cm4gZnJhbWUucmVsZWFzZSgpOworICAgIHJldHVy
biBXVEZNb3ZlKGZyYW1lKTsKIH0KIAogV2ViRnJhbWU6OldlYkZyYW1lKHN0ZDo6dW5pcXVlX3B0
cjxXZWJGcmFtZUxvYWRlckNsaWVudD4gZnJhbWVMb2FkZXJDbGllbnQpCkBAIC04MTgsNyArODE4
LDcgQEAgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFdlYkZyYW1lOjpjcmVhdGVTZWxlY3Rp
b25TbmFwc2hvdCgpIGNvbnN0CiAgICAgaWYgKCFzbmFwc2hvdCkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzaGFyZWRTbmFwc2hvdCA9IFNo
YXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHNuYXBzaG90LT5pbnRlcm5hbFNpemUoKSwg
U2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKTsKKyAgICBhdXRvIHNoYXJlZFNuYXBzaG90
ID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc25hcHNob3QtPmludGVybmFsU2l6
ZSgpLCBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpOwogICAgIGlmICghc2hhcmVkU25h
cHNob3QpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC04MjksNyArODI5LDcgQEAgUGFz
c1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFdlYkZyYW1lOjpjcmVhdGVTZWxlY3Rpb25TbmFwc2hv
dCgpIGNvbnN0CiAgICAgZ3JhcGhpY3NDb250ZXh0LT5zY2FsZShGbG9hdFNpemUoZGV2aWNlU2Nh
bGVGYWN0b3IsIGRldmljZVNjYWxlRmFjdG9yKSk7CiAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3
Q29uc3VtaW5nSW1hZ2VCdWZmZXIoV1RGTW92ZShzbmFwc2hvdCksIEZsb2F0UG9pbnQoKSk7CiAK
LSAgICByZXR1cm4gc2hhcmVkU25hcHNob3QucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3Zl
KHNoYXJlZFNuYXBzaG90KTsKIH0KICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDYyNTI4N2Vl
NzViMjEyYjQ4YzU2ZmI4MmJkMGU4ZjdhMGI3ZTFmMzIuLjY4OTQzNDM1ZWExYTliMjA4ZDZkZjRm
YjlhY2Q5MjlmZGRkOGY5MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKQEAgLTc1NCw4ICs3NTQsOCBAQCBQYXNzUmVmUHRyPFBsdWdpbj4gV2Vi
UGFnZTo6Y3JlYXRlUGx1Z2luKFdlYkZyYW1lKiBmcmFtZSwgSFRNTFBsdWdJbkVsZW1lbnQqIHBs
dQogI2lmIEVOQUJMRShQREZLSVRfUExVR0lOKQogICAgICAgICBTdHJpbmcgcGF0aCA9IHBhcmFt
ZXRlcnMudXJsLnBhdGgoKTsKICAgICAgICAgaWYgKHNob3VsZFVzZVBERlBsdWdpbigpICYmIChN
SU1FVHlwZVJlZ2lzdHJ5Ojppc1BERk9yUG9zdFNjcmlwdE1JTUVUeXBlKHBhcmFtZXRlcnMubWlt
ZVR5cGUpIHx8IChwYXJhbWV0ZXJzLm1pbWVUeXBlLmlzRW1wdHkoKSAmJiAocGF0aC5lbmRzV2l0
aCgiLnBkZiIsIGZhbHNlKSB8fCBwYXRoLmVuZHNXaXRoKCIucHMiLCBmYWxzZSkpKSkpIHsKLSAg
ICAgICAgICAgIFJlZlB0cjxQREZQbHVnaW4+IHBkZlBsdWdpbiA9IFBERlBsdWdpbjo6Y3JlYXRl
KGZyYW1lKTsKLSAgICAgICAgICAgIHJldHVybiBwZGZQbHVnaW4ucmVsZWFzZSgpOworICAgICAg
ICAgICAgYXV0byBwZGZQbHVnaW4gPSBQREZQbHVnaW46OmNyZWF0ZShmcmFtZSk7CisgICAgICAg
ICAgICByZXR1cm4gV1RGTW92ZShwZGZQbHVnaW4pOwogICAgICAgICB9CiAjZWxzZQogICAgICAg
ICBVTlVTRURfUEFSQU0oZnJhbWUpOwpAQCAtMTg3MCw3ICsxODcwLDcgQEAgUGFzc1JlZlB0cjxX
ZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNob3RBdFNpemUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29u
c3QgSW50U2l6ZSYKICAgICBmbG9hdCB2ZXJ0aWNhbFNjYWxlRmFjdG9yID0gc3RhdGljX2Nhc3Q8
ZmxvYXQ+KGJpdG1hcFNpemUuaGVpZ2h0KCkpIC8gcmVjdC5oZWlnaHQoKTsKICAgICBmbG9hdCBz
Y2FsZUZhY3RvciA9IHN0ZDo6bWF4KGhvcml6b250YWxTY2FsZUZhY3RvciwgdmVydGljYWxTY2Fs
ZUZhY3Rvcik7CiAKLSAgICBSZWZQdHI8V2ViSW1hZ2U+IHNuYXBzaG90ID0gV2ViSW1hZ2U6OmNy
ZWF0ZShiaXRtYXBTaXplLCBzbmFwc2hvdE9wdGlvbnNUb0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7
CisgICAgYXV0byBzbmFwc2hvdCA9IFdlYkltYWdlOjpjcmVhdGUoYml0bWFwU2l6ZSwgc25hcHNo
b3RPcHRpb25zVG9JbWFnZU9wdGlvbnMob3B0aW9ucykpOwogICAgIGlmICghc25hcHNob3QtPmJp
dG1hcCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTg3OCw3ICsxODc4LDcgQEAg
UGFzc1JlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNob3RBdFNpemUoY29uc3QgSW50UmVj
dCYgcmVjdCwgY29uc3QgSW50U2l6ZSYKIAogICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRp
b25zUHJpbnRpbmcpIHsKICAgICAgICAgUHJpbnRDb250ZXh0OjpzcG9vbEFsbFBhZ2VzV2l0aEJv
dW5kYXJpZXMoKmNvcmVGcmFtZSwgKmdyYXBoaWNzQ29udGV4dCwgc25hcHNob3RSZWN0LnNpemUo
KSk7Ci0gICAgICAgIHJldHVybiBzbmFwc2hvdC5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBz
bmFwc2hvdDsKICAgICB9CiAKICAgICBDb2xvciBkb2N1bWVudEJhY2tncm91bmRDb2xvciA9IGZy
YW1lVmlldy0+ZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IoKTsKQEAgLTE5MTAsNyArMTkxMCw3IEBA
IFBhc3NSZWZQdHI8V2ViSW1hZ2U+IFdlYlBhZ2U6OnNuYXBzaG90QXRTaXplKGNvbnN0IEludFJl
Y3QmIHJlY3QsIGNvbnN0IEludFNpemUmCiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c3Ryb2tl
UmVjdChzZWxlY3Rpb25SZWN0YW5nbGUsIDEpOwogICAgIH0KICAgICAKLSAgICByZXR1cm4gc25h
cHNob3QucmVsZWFzZSgpOworICAgIHJldHVybiBzbmFwc2hvdDsKIH0KIAogUGFzc1JlZlB0cjxX
ZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNob3ROb2RlKFdlYkNvcmU6Ok5vZGUmIG5vZGUsIFNuYXBz
aG90T3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhpbXVtUGl4ZWxDb3VudCkKQEAgLTE5Mzks
NyArMTkzOSw3IEBAIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IFdlYlBhZ2U6OnNuYXBzaG90Tm9kZShX
ZWJDb3JlOjpOb2RlJiBub2RlLCBTbmFwc2hvdE9wdGlvbnMKICAgICAgICAgc25hcHNob3RTaXpl
ID0gSW50U2l6ZShzbmFwc2hvdFNpemUud2lkdGgoKSAqIHNjYWxlRmFjdG9yLCBtYXhpbXVtSGVp
Z2h0KTsKICAgICB9CiAKLSAgICBSZWZQdHI8V2ViSW1hZ2U+IHNuYXBzaG90ID0gV2ViSW1hZ2U6
OmNyZWF0ZShzbmFwc2hvdFNpemUsIHNuYXBzaG90T3B0aW9uc1RvSW1hZ2VPcHRpb25zKG9wdGlv
bnMpKTsKKyAgICBhdXRvIHNuYXBzaG90ID0gV2ViSW1hZ2U6OmNyZWF0ZShzbmFwc2hvdFNpemUs
IHNuYXBzaG90T3B0aW9uc1RvSW1hZ2VPcHRpb25zKG9wdGlvbnMpKTsKICAgICBpZiAoIXNuYXBz
aG90LT5iaXRtYXAoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTE5NjMsNyArMTk2
Myw3IEBAIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IFdlYlBhZ2U6OnNuYXBzaG90Tm9kZShXZWJDb3Jl
OjpOb2RlJiBub2RlLCBTbmFwc2hvdE9wdGlvbnMKICAgICBmcmFtZVZpZXctPnNldEJhc2VCYWNr
Z3JvdW5kQ29sb3Ioc2F2ZWRCYWNrZ3JvdW5kQ29sb3IpOwogICAgIGZyYW1lVmlldy0+c2V0Tm9k
ZVRvRHJhdyhudWxscHRyKTsKIAotICAgIHJldHVybiBzbmFwc2hvdC5yZWxlYXNlKCk7CisgICAg
cmV0dXJuIHNuYXBzaG90OwogfQogCiB2b2lkIFdlYlBhZ2U6OnBhZ2VEaWRTY3JvbGwoKQpAQCAt
MzQxOSw3ICszNDE5LDcgQEAgdm9pZCBXZWJQYWdlOjpkcmFnRW5kZWQoV2ViQ29yZTo6SW50UG9p
bnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGdsb2IKIAogdm9pZCBXZWJQYWdl
Ojp3aWxsUGVyZm9ybUxvYWREcmFnRGVzdGluYXRpb25BY3Rpb24oKQogewotICAgIG1fc2FuZGJv
eEV4dGVuc2lvblRyYWNrZXIud2lsbFBlcmZvcm1Mb2FkRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKG1f
cGVuZGluZ0Ryb3BTYW5kYm94RXh0ZW5zaW9uLnJlbGVhc2UoKSk7CisgICAgbV9zYW5kYm94RXh0
ZW5zaW9uVHJhY2tlci53aWxsUGVyZm9ybUxvYWREcmFnRGVzdGluYXRpb25BY3Rpb24oV1RGTW92
ZShtX3BlbmRpbmdEcm9wU2FuZGJveEV4dGVuc2lvbikpOwogfQogCiB2b2lkIFdlYlBhZ2U6Om1h
eVBlcmZvcm1VcGxvYWREcmFnRGVzdGluYXRpb25BY3Rpb24oKQpAQCAtMzk3Miw3ICszOTcyLDcg
QEAgdm9pZCBXZWJQYWdlOjpTYW5kYm94RXh0ZW5zaW9uVHJhY2tlcjo6ZGlkU3RhcnRQcm92aXNp
b25hbExvYWQoV2ViRnJhbWUqIGZyYW1lKQogCiAgICAgQVNTRVJUKCFtX3Byb3Zpc2lvbmFsU2Fu
ZGJveEV4dGVuc2lvbik7CiAKLSAgICBtX3Byb3Zpc2lvbmFsU2FuZGJveEV4dGVuc2lvbiA9IG1f
cGVuZGluZ1Byb3Zpc2lvbmFsU2FuZGJveEV4dGVuc2lvbi5yZWxlYXNlKCk7CisgICAgbV9wcm92
aXNpb25hbFNhbmRib3hFeHRlbnNpb24gPSBXVEZNb3ZlKG1fcGVuZGluZ1Byb3Zpc2lvbmFsU2Fu
ZGJveEV4dGVuc2lvbik7CiAgICAgaWYgKCFtX3Byb3Zpc2lvbmFsU2FuZGJveEV4dGVuc2lvbikK
ICAgICAgICAgcmV0dXJuOwogCkBAIC0zOTg5LDcgKzM5ODksNyBAQCB2b2lkIFdlYlBhZ2U6OlNh
bmRib3hFeHRlbnNpb25UcmFja2VyOjpkaWRDb21taXRQcm92aXNpb25hbExvYWQoV2ViRnJhbWUq
IGZyYW1lKQogICAgIGlmIChtX2NvbW1pdHRlZFNhbmRib3hFeHRlbnNpb24pCiAgICAgICAgIG1f
Y29tbWl0dGVkU2FuZGJveEV4dGVuc2lvbi0+cmV2b2tlKCk7CiAKLSAgICBtX2NvbW1pdHRlZFNh
bmRib3hFeHRlbnNpb24gPSBtX3Byb3Zpc2lvbmFsU2FuZGJveEV4dGVuc2lvbi5yZWxlYXNlKCk7
CisgICAgbV9jb21taXR0ZWRTYW5kYm94RXh0ZW5zaW9uID0gV1RGTW92ZShtX3Byb3Zpc2lvbmFs
U2FuZGJveEV4dGVuc2lvbik7CiAKICAgICAvLyBXZSBjYW4gYWxzbyBoYXZlIGEgbm9uLW51bGwg
bV9wZW5kaW5nUHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uIGlmIGEgbmV3IGxvYWQgaXMgYmVp
bmcgc3RhcnRlZC4KICAgICAvLyBUaGlzIGV4dGVuc2lvbiBpcyBub3QgY2xlYXJlZCwgYmVjYXVz
ZSBpdCBkb2VzIG5vdCBwZXJ0YWluIHRvIHRoZSBmYWlsZWQgbG9hZCwgYW5kIHdpbGwgYmUgbmVl
ZGVkLgpAQCAtNDE0OCw3ICs0MTQ4LDcgQEAgdm9pZCBXZWJQYWdlOjpkcmF3UmVjdFRvSW1hZ2Uo
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIGNvbnMKICAgICAg
ICAgQVNTRVJUKGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+cHJpbnRpbmcoKSk7CiAjZW5kaWYKIAot
ICAgICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZVNoYXJlYWJsZShpbWFnZVNpemUsIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBo
YSk7CisgICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFi
bGUoaW1hZ2VTaXplLCBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpOwogICAgICAgICBh
dXRvIGdyYXBoaWNzQ29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAK
ICAgICAgICAgZmxvYXQgcHJpbnRpbmdTY2FsZSA9IHN0YXRpY19jYXN0PGZsb2F0PihpbWFnZVNp
emUud2lkdGgoKSkgLyByZWN0LndpZHRoKCk7CkBAIC00MTY2LDcgKzQxNjYsNyBAQCB2b2lkIFdl
YlBhZ2U6OmRyYXdSZWN0VG9JbWFnZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8m
IHByaW50SW5mbywgY29ucwogICAgICAgICAgICAgbV9wcmludENvbnRleHQtPnNwb29sUmVjdCgq
Z3JhcGhpY3NDb250ZXh0LCByZWN0KTsKICAgICAgICAgfQogCi0gICAgICAgIGltYWdlID0gV2Vi
SW1hZ2U6OmNyZWF0ZShiaXRtYXAucmVsZWFzZSgpKTsKKyAgICAgICAgaW1hZ2UgPSBXZWJJbWFn
ZTo6Y3JlYXRlKFdURk1vdmUoYml0bWFwKSk7CiAgICAgfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJveHkuY3Bw
CmluZGV4IGY5YTg2MzA4ZjU4Yzk5NzBjNjRkYzRlNzJlNzRhOTYyMDRhZTlhZGMuLmM2ZmI3MjE5
NjQ0YWQ2ZDQ1ZWY5MzZkNWRlZmJiZjc5NGNlYjFhNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5LmNwcApAQCAtMzcs
MTIgKzM3LDEyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBQYXNzUmVmUHRyPFdlYlBhZ2VHcm91
cFByb3h5PiBXZWJQYWdlR3JvdXBQcm94eTo6Y3JlYXRlKGNvbnN0IFdlYlBhZ2VHcm91cERhdGEm
IGRhdGEpCiB7Ci0gICAgUmVmUHRyPFdlYlBhZ2VHcm91cFByb3h5PiBwYWdlR3JvdXAgPSBhZG9w
dFJlZihuZXcgV2ViUGFnZUdyb3VwUHJveHkoZGF0YSkpOwotICAgIAorICAgIGF1dG8gcGFnZUdy
b3VwID0gYWRvcHRSZWYoKm5ldyBXZWJQYWdlR3JvdXBQcm94eShkYXRhKSk7CisKICAgICBpZiAo
cGFnZUdyb3VwLT5pc1Zpc2libGVUb0luamVjdGVkQnVuZGxlKCkgJiYgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuaW5qZWN0ZWRCdW5kbGUoKSkKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuaW5qZWN0ZWRCdW5kbGUoKS0+ZGlkSW5pdGlhbGl6ZVBhZ2VHcm91cChwYWdlR3JvdXAuZ2V0
KCkpOworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5pbmplY3RlZEJ1bmRsZSgpLT5k
aWRJbml0aWFsaXplUGFnZUdyb3VwKHBhZ2VHcm91cC5wdHIoKSk7CiAKLSAgICByZXR1cm4gcGFn
ZUdyb3VwLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92ZShwYWdlR3JvdXApOwogfQogCiBX
ZWJQYWdlR3JvdXBQcm94eTo6V2ViUGFnZUdyb3VwUHJveHkoY29uc3QgV2ViUGFnZUdyb3VwRGF0
YSYgZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZS5tbQppbmRleCA2YTg2ZjE3
MWMyYjIwNmNhMjYwMzEyZWFkNDhkY2MzMThmYjE0M2FmLi41ODE1Y2ZlNjEwZmRkNDZjMDQwNWRl
YmQ0NGJhYzhhMGUxODM5MTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUubW0KKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1t
CkBAIC0yOTQsNyArMjk0LDcgQEAgYm9vbCBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpQcm9w
ZXJ0aWVzOjpkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgcHJv
cGVydGllcy50aW1pbmdGdW5jdGlvbnMudW5jaGVja2VkQXBwZW5kKHRpbWluZ0Z1bmN0aW9uLnJl
bGVhc2UoKSk7CisgICAgICAgICAgICBwcm9wZXJ0aWVzLnRpbWluZ0Z1bmN0aW9ucy51bmNoZWNr
ZWRBcHBlbmQoV1RGTW92ZSh0aW1pbmdGdW5jdGlvbikpOwogICAgICAgICB9CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3Jt
Q0FMYXllclJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKaW5kZXggMjE5ZTgzYzExNDA3OWE1MGZiY2IwNGQ2
MTExNzdhOGFmN2Y3OGRjOC4uMjQ3NjgyNTMyN2U2NGNlMTliODMwOThhNGQ5ZTk5ODVlZDQ4Mzg1
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0
Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcApAQCAtNTYsNyArNTYsNyBAQCBQYXNz
UmVmUHRyPFBsYXRmb3JtQ0FMYXllclJlbW90ZT4gUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjcmVh
dGUoTGF5ZXJUeXBlIGxheWVyVAogCiAgICAgY29udGV4dC5sYXllcldhc0NyZWF0ZWQoKmxheWVy
LCBsYXllclR5cGUpOwogCi0gICAgcmV0dXJuIGxheWVyLnJlbGVhc2UoKTsKKyAgICByZXR1cm4g
V1RGTW92ZShsYXllcik7CiB9CiAKIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyUmVtb3RlPiBQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNyZWF0ZShQbGF0Zm9ybUxheWVyICpwbGF0Zm9ybUxheWVy
LCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyLCBSZW1vdGVMYXllclRyZWVDb250ZXh0JiBj
b250ZXh0KQpAQCAtNjYsMTEgKzY2LDExIEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyUmVt
b3RlPiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNyZWF0ZShQbGF0Zm9ybUxheWVyICpwCiAKIFBh
c3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyUmVtb3RlPiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNy
ZWF0ZShjb25zdCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUmIG90aGVyLCBXZWJDb3JlOjpQbGF0Zm9y
bUNBTGF5ZXJDbGllbnQqIG93bmVyLCBSZW1vdGVMYXllclRyZWVDb250ZXh0JiBjb250ZXh0KQog
ewotICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+IGxheWVyID0gYWRvcHRSZWYobmV3
IFBsYXRmb3JtQ0FMYXllclJlbW90ZShvdGhlciwgb3duZXIsIGNvbnRleHQpKTsKKyAgICBhdXRv
IGxheWVyID0gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUob3RoZXIsIG93bmVy
LCBjb250ZXh0KSk7CiAKLSAgICBjb250ZXh0LmxheWVyV2FzQ3JlYXRlZCgqbGF5ZXIsIG90aGVy
LmxheWVyVHlwZSgpKTsKKyAgICBjb250ZXh0LmxheWVyV2FzQ3JlYXRlZChsYXllci5nZXQoKSwg
b3RoZXIubGF5ZXJUeXBlKCkpOwogCi0gICAgcmV0dXJuIGxheWVyLnJlbGVhc2UoKTsKKyAgICBy
ZXR1cm4gV1RGTW92ZShsYXllcik7CiB9CiAKIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6UGxhdGZv
cm1DQUxheWVyUmVtb3RlKExheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3JtQ0FMYXllckNsaWVu
dCogb3duZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRleHQmIGNvbnRleHQpCkBAIC05NSwxMiArOTUs
MTIgQEAgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUoY29uc3Qg
UGxhdGZvcm1DQUxheWVyUmVtb3RlJiBvdGhlciwKIAogUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5
ZXI+IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6Y2xvbmUoUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBv
d25lcikgY29uc3QKIHsKLSAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyUmVtb3RlPiBjbG9uZSA9
IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6Y3JlYXRlKCp0aGlzLCBvd25lciwgKm1fY29udGV4dCk7
CisgICAgYXV0byBjbG9uZSA9IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6Y3JlYXRlKCp0aGlzLCBv
d25lciwgKm1fY29udGV4dCk7CiAKICAgICB1cGRhdGVDbG9uZWRMYXllclByb3BlcnRpZXMoKmNs
b25lKTsKIAogICAgIGNsb25lLT5zZXRDbG9uZWRMYXllcih0aGlzKTsKLSAgICByZXR1cm4gY2xv
bmUucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKGNsb25lKTsKIH0KIAogUGxhdGZvcm1D
QUxheWVyUmVtb3RlOjp+UGxhdGZvcm1DQUxheWVyUmVtb3RlKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3Vz
dG9tLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNB
TGF5ZXJSZW1vdGVDdXN0b20ubW0KaW5kZXggMTU0MmE2YmZiNDE2OWMzMWFlOWY4YmU2MWY0OTJi
NGU3NjY0MmJjNy4uNTdiM2NjMTExMjI0OWY3MDg2OTBiNTM1YzY5NDE5NmI1NDRkMzRmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNB
TGF5ZXJSZW1vdGVDdXN0b20ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0KQEAgLTQ4LDEwICs0OCwxMCBA
QCBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBwbGF0Zm9ybUNBTGF5ZXJQb2ludGVyID0gQCJXS1Bs
YXRmb3JtQ0FMYXllciI7CiAKIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyUmVtb3RlPiBQbGF0
Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OmNyZWF0ZShQbGF0Zm9ybUxheWVyICpwbGF0Zm9ybUxh
eWVyLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyLCBSZW1vdGVMYXllclRyZWVDb250ZXh0
JiBjb250ZXh0KQogewotICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+IGxheWVyID0g
YWRvcHRSZWYobmV3IFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbShQbGF0Zm9ybUNBTGF5ZXJD
b2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcihwbGF0Zm9ybUxheWVyKSwgcGxhdGZvcm1M
YXllciwgb3duZXIsIGNvbnRleHQpKTsKLSAgICBjb250ZXh0LmxheWVyV2FzQ3JlYXRlZCgqbGF5
ZXIsIGxheWVyLT5sYXllclR5cGUoKSk7CisgICAgYXV0byBsYXllciA9IGFkb3B0UmVmKCpuZXcg
UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tKFBsYXRmb3JtQ0FMYXllckNvY29hOjpsYXllclR5
cGVGb3JQbGF0Zm9ybUxheWVyKHBsYXRmb3JtTGF5ZXIpLCBwbGF0Zm9ybUxheWVyLCBvd25lciwg
Y29udGV4dCkpOworICAgIGNvbnRleHQubGF5ZXJXYXNDcmVhdGVkKGxheWVyLmdldCgpLCBsYXll
ci0+bGF5ZXJUeXBlKCkpOwogCi0gICAgcmV0dXJuIGxheWVyLnJlbGVhc2UoKTsKKyAgICByZXR1
cm4gV1RGTW92ZShsYXllcik7CiB9CiAKIFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6UGxh
dGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tKExheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3JtTGF5
ZXIgKiBjdXN0b21MYXllciwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lciwgUmVtb3RlTGF5
ZXJUcmVlQ29udGV4dCYgY29udGV4dCkKQEAgLTEyNywxMyArMTI3LDEzIEBAIFBhc3NSZWZQdHI8
V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyPiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OmNs
b25lKFBsYXRmb3JtCiAgICAgICAgIGNvcHlDb250ZW50cyA9IGZhbHNlOwogICAgIH0KIAotICAg
IFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+IGNsb25lID0gYWRvcHRSZWYobmV3IFBsYXRm
b3JtQ0FMYXllclJlbW90ZUN1c3RvbShsYXllclR5cGUoKSwgY2xvbmVkTGF5ZXIuZ2V0KCksIG93
bmVyLCAqY29udGV4dCgpKSk7Ci0gICAgY29udGV4dCgpLT5sYXllcldhc0NyZWF0ZWQoKmNsb25l
LCBjbG9uZS0+bGF5ZXJUeXBlKCkpOworICAgIGF1dG8gY2xvbmUgPSBhZG9wdFJlZigqbmV3IFBs
YXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbShsYXllclR5cGUoKSwgY2xvbmVkTGF5ZXIuZ2V0KCks
IG93bmVyLCAqY29udGV4dCgpKSk7CisgICAgY29udGV4dCgpLT5sYXllcldhc0NyZWF0ZWQoY2xv
bmUuZ2V0KCksIGNsb25lLT5sYXllclR5cGUoKSk7CiAKLSAgICB1cGRhdGVDbG9uZWRMYXllclBy
b3BlcnRpZXMoKmNsb25lLCBjb3B5Q29udGVudHMpOworICAgIHVwZGF0ZUNsb25lZExheWVyUHJv
cGVydGllcyhjbG9uZS5nZXQoKSwgY29weUNvbnRlbnRzKTsKIAogICAgIGNsb25lLT5zZXRDbG9u
ZWRMYXllcih0aGlzKTsKLSAgICByZXR1cm4gY2xvbmUucmVsZWFzZSgpOworICAgIHJldHVybiBX
VEZNb3ZlKGNsb25lKTsKIH0KIAogQ0ZUeXBlUmVmIFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3Rv
bTo6Y29udGVudHMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0K
aW5kZXggZmZlOGNjZjQ4MjJmM2FlNjc5NzM4NGQ1NDM0NzFjNDg2MzkzODYzZi4uOTZjZTczN2Yx
MmMzMzRkOWE1MzJlNWYxZmU5YTA3Mzk4OWIwOGIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhLm1tCkBAIC0xMTEsOSArMTExLDkgQEAgR3JhcGhpY3NMYXllckZhY3Rvcnkq
IFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpncmFwaGljc0xheWVyRmFjdG9yeSgpCiAKIFJl
ZlB0cjxEaXNwbGF5UmVmcmVzaE1vbml0b3I+IFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpj
cmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3IoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQog
ewotICAgIFJlZlB0cjxSZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3I+IG1vbml0
b3IgPSBSZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmNyZWF0ZShkaXNwbGF5
SUQsICp0aGlzKTsKLSAgICBtX2Rpc3BsYXlSZWZyZXNoTW9uaXRvcnMuYWRkKG1vbml0b3IuZ2V0
KCkpOwotICAgIHJldHVybiBtb25pdG9yLnJlbGVhc2UoKTsKKyAgICBhdXRvIG1vbml0b3IgPSBS
ZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmNyZWF0ZShkaXNwbGF5SUQsICp0
aGlzKTsKKyAgICBtX2Rpc3BsYXlSZWZyZXNoTW9uaXRvcnMuYWRkKG1vbml0b3IucHRyKCkpOwor
ICAgIHJldHVybiBXVEZNb3ZlKG1vbml0b3IpOwogfQogCiB2b2lkIFJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhOjp3aWxsRGVzdHJveURpc3BsYXlSZWZyZXNoTW9uaXRvcihEaXNwbGF5UmVmcmVz
aE1vbml0b3IqIG1vbml0b3IpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggNjVlMGVlMjExNjY0YTM4ZmQ3MzNiYzZmNzhiZDIxY2M1NGY2ZTE1ZS4u
MWFjNzg5ZmI2MTQ5OTc5NjMyOGU3OTA3OGJmNDU1MmJjZmY4NmViYyAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE2
LTA2LTE2ICBLZWl0aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1v
dmUgUmVmUHRyOjpyZWxlYXNlKCkgYW5kIGNoYW5nZSBjYWxscyBzaXRlcyB0byB1c2UgV1RGTW92
ZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgz
NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZQ
dHI6OnJlbGVhc2UoKSByZWxlYXNlcyBpdHMgbWFuYWdlZCBwb2ludGVyIGF3a3dhcmRseS4gSXQn
cyBtb3JlCisgICAgICAgIGRpcmVjdCBhbmQgY2xlYXJlciB0byB1c2UgV1RGTW92ZSB0byB0cmFu
c2ZlciBvd25lcnNoaXAgb2YgdGhlIG1hbmFnZWQKKyAgICAgICAgcG9pbnRlci4KKworICAgICAg
ICBBcyBwYXJ0IG9mIHRoaXMgY2xlYW51cCwgYWxzbyBjaGFuZ2UgYSBsb3Qgb2YgZXhwbGljaXQg
ZGF0YSB0eXBlcyB0bworICAgICAgICAnYXV0bycuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9tYWMvUGl4ZWxEdW1wU3VwcG9ydE1hYy5tbToKKyAgICAgICAgKGNyZWF0ZUJpdG1hcENvbnRl
eHRGcm9tV2ViVmlldyk6CisgICAgICAgIChjcmVhdGVQYWdlZEJpdG1hcENvbnRleHQpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tOgorICAgICAgICAoVGVz
dFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24pOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0hhc2hDb3VudGVkU2V0LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3Bw
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTYtMDYtMTYgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByMjAyMDAyIGFuZCByMjAyMTExLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL1BpeGVsRHVtcFN1cHBvcnRNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUGl4
ZWxEdW1wU3VwcG9ydE1hYy5tbQppbmRleCBlMzMzNGVmZTUzMjkwYzNkZGRjNWY1YWVhNTQ4ODcx
YTc2ZGZhYmYxLi45Zjk5NmQzMmMxMGJhYTg5NzU4YzI4YjE4OGMyODA4NDEwOWJmMjEwIDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUGl4ZWxEdW1wU3VwcG9ydE1hYy5tbQor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUGl4ZWxEdW1wU3VwcG9ydE1hYy5tbQpAQCAt
MTIwLDcgKzEyMCw3IEBAIFBhc3NSZWZQdHI8Qml0bWFwQ29udGV4dD4gY3JlYXRlQml0bWFwQ29u
dGV4dEZyb21XZWJWaWV3KGJvb2wgb25zY3JlZW4sIGJvb2wgaW5jCiAgICAgc2l6ZV90IHBpeGVs
c0hpZ2ggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHdlYlZpZXdTaXplLmhlaWdodCAqIGRldmljZVNj
YWxlRmFjdG9yKTsKICAgICBzaXplX3Qgcm93Qnl0ZXMgPSAwOwogICAgIHZvaWQqIGJ1ZmZlciA9
IG51bGxwdHI7Ci0gICAgUmVmUHRyPEJpdG1hcENvbnRleHQ+IGJpdG1hcENvbnRleHQgPSBjcmVh
dGVCaXRtYXBDb250ZXh0KHBpeGVsc1dpZGUsIHBpeGVsc0hpZ2gsIHJvd0J5dGVzLCBidWZmZXIp
OworICAgIGF1dG8gYml0bWFwQ29udGV4dCA9IGNyZWF0ZUJpdG1hcENvbnRleHQocGl4ZWxzV2lk
ZSwgcGl4ZWxzSGlnaCwgcm93Qnl0ZXMsIGJ1ZmZlcik7CiAgICAgaWYgKCFiaXRtYXBDb250ZXh0
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IGJp
dG1hcENvbnRleHQtPmNnQ29udGV4dCgpOwpAQCAtMTk0LDcgKzE5NCw3IEBAIFBhc3NSZWZQdHI8
Qml0bWFwQ29udGV4dD4gY3JlYXRlQml0bWFwQ29udGV4dEZyb21XZWJWaWV3KGJvb2wgb25zY3Jl
ZW4sIGJvb2wgaW5jCiAgICAgICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY29udGV4dCk7CiAg
ICAgfQogICAgIAotICAgIHJldHVybiBiaXRtYXBDb250ZXh0LnJlbGVhc2UoKTsKKyAgICByZXR1
cm4gYml0bWFwQ29udGV4dDsKIH0KIAogUGFzc1JlZlB0cjxCaXRtYXBDb250ZXh0PiBjcmVhdGVQ
YWdlZEJpdG1hcENvbnRleHQoKQpAQCAtMjA3LDEwICsyMDcsMTAgQEAgUGFzc1JlZlB0cjxCaXRt
YXBDb250ZXh0PiBjcmVhdGVQYWdlZEJpdG1hcENvbnRleHQoKQogCiAgICAgaW50IHRvdGFsSGVp
Z2h0ID0gbnVtYmVyT2ZQYWdlcyAqIChwYWdlSGVpZ2h0SW5QaXhlbHMgKyAxKSAtIDE7CiAKLSAg
ICBSZWZQdHI8Qml0bWFwQ29udGV4dD4gYml0bWFwQ29udGV4dCA9IGNyZWF0ZUJpdG1hcENvbnRl
eHQocGFnZVdpZHRoSW5QaXhlbHMsIHRvdGFsSGVpZ2h0LCByb3dCeXRlcywgYnVmZmVyKTsKKyAg
ICBhdXRvIGJpdG1hcENvbnRleHQgPSBjcmVhdGVCaXRtYXBDb250ZXh0KHBhZ2VXaWR0aEluUGl4
ZWxzLCB0b3RhbEhlaWdodCwgcm93Qnl0ZXMsIGJ1ZmZlcik7CiAgICAgQ0dDb250ZXh0UmVmIGNv
bnRleHQgPSBiaXRtYXBDb250ZXh0LT5jZ0NvbnRleHQoKTsKICAgICBDR0NvbnRleHRUcmFuc2xh
dGVDVE0oY29udGV4dCwgMCwgdG90YWxIZWlnaHQpOwogICAgIENHQ29udGV4dFNjYWxlQ1RNKGNv
bnRleHQsIDEsIC0xKTsKICAgICBbbWFpbkZyYW1lIHByaW50VG9DR0NvbnRleHQ6Y29udGV4dCBw
YWdlV2lkdGg6cGFnZVdpZHRoSW5QaXhlbHMgcGFnZUhlaWdodDpwYWdlSGVpZ2h0SW5QaXhlbHNd
OwotICAgIHJldHVybiBiaXRtYXBDb250ZXh0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gYml0bWFw
Q29udGV4dDsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVu
bmVyTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KaW5k
ZXggZTRmNTI0ODI4OTNhZjQyN2NlZDE5NjlmNzFmMzgxNjNmMjk4ZDE3YS4uNDQ1ZjQ0OTQ5Zjk5
M2ZiMjA2YTIxMGIxNDI2NmNhNTJmMzZjYTk2MSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L1Rlc3RSdW5uZXJNYWMubW0KQEAgLTQyNyw4ICs0MjcsOCBAQCB2b2lkIFRlc3RSdW5uZXI6OnNl
dE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVk
ZSwgZAogICAgICAgICAvLyBUZXN0IHRoZSBleHBvc2VkIEFQSS4KICAgICAgICAgcG9zaXRpb24g
PSBbW1dlYkdlb2xvY2F0aW9uUG9zaXRpb24gYWxsb2NdIGluaXRXaXRoVGltZXN0YW1wOmN1cnJl
bnRUaW1lKCkgbGF0aXR1ZGU6bGF0aXR1ZGUgbG9uZ2l0dWRlOmxvbmdpdHVkZSBhY2N1cmFjeTph
Y2N1cmFjeV07CiAgICAgfSBlbHNlIHsKLSAgICAgICAgUmVmUHRyPFdlYkNvcmU6Okdlb2xvY2F0
aW9uUG9zaXRpb24+IGNvcmVHZW9sb2NhdGlvblBvc2l0aW9uID0gV2ViQ29yZTo6R2VvbG9jYXRp
b25Qb3NpdGlvbjo6Y3JlYXRlKGN1cnJlbnRUaW1lKCksIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFj
Y3VyYWN5LCBwcm92aWRlc0FsdGl0dWRlLCBhbHRpdHVkZSwgcHJvdmlkZXNBbHRpdHVkZUFjY3Vy
YWN5LCBhbHRpdHVkZUFjY3VyYWN5LCBwcm92aWRlc0hlYWRpbmcsIGhlYWRpbmcsIHByb3ZpZGVz
U3BlZWQsIHNwZWVkKTsKLSAgICAgICAgcG9zaXRpb24gPSBbW1dlYkdlb2xvY2F0aW9uUG9zaXRp
b24gYWxsb2NdIGluaXRXaXRoR2VvbG9jYXRpb25Qb3NpdGlvbjooY29yZUdlb2xvY2F0aW9uUG9z
aXRpb24ucmVsZWFzZSgpKV07CisgICAgICAgIGF1dG8gY29yZUdlb2xvY2F0aW9uUG9zaXRpb24g
PSBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUoY3VycmVudFRpbWUoKSwgbGF0
aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3ksIHByb3ZpZGVzQWx0aXR1ZGUsIGFsdGl0dWRlLCBw
cm92aWRlc0FsdGl0dWRlQWNjdXJhY3ksIGFsdGl0dWRlQWNjdXJhY3ksIHByb3ZpZGVzSGVhZGlu
ZywgaGVhZGluZywgcHJvdmlkZXNTcGVlZCwgc3BlZWQpOworICAgICAgICBwb3NpdGlvbiA9IFtb
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbiBhbGxvY10gaW5pdFdpdGhHZW9sb2NhdGlvblBvc2l0aW9u
OihXVEZNb3ZlKGNvcmVHZW9sb2NhdGlvblBvc2l0aW9uKSldOwogICAgIH0KICAgICBbW01vY2tH
ZW9sb2NhdGlvblByb3ZpZGVyIHNoYXJlZF0gc2V0UG9zaXRpb246cG9zaXRpb25dOwogICAgIFtw
b3NpdGlvbiByZWxlYXNlXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0hhc2hDb3VudGVkU2V0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hh
c2hDb3VudGVkU2V0LmNwcAppbmRleCA0YzFhZmQxMDViZjFmNzAyMzA3M2Y2NjJjMjZmYWI4NWNi
ODM4NWYzLi42YTdiYjE5YjU1Mzk4MmIzMzUzOTBlZmNiZjczYzQ3YjlhZGZhOTU5IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoQ291bnRlZFNldC5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaENvdW50ZWRTZXQuY3BwCkBAIC0z
NzAsNyArMzcwLDcgQEAgVEVTVChXVEZfSGFzaENvdW50ZWRTZXQsIFJlZlB0cktleV9BZGRVc2lu
Z1JlbGVhc2UpCiAgICAgCiAgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CiAgICAgUmVmUHRy
PFJlZkxvZ2dlcj4gcHRyKCZhKTsKLSAgICBoYXNoQ291bnRlZFNldC5hZGQocHRyLnJlbGVhc2Uo
KSk7CisgICAgaGFzaENvdW50ZWRTZXQuYWRkKFdURk1vdmUocHRyKSk7CiAgICAgCiAgICAgRVhQ
RUNUX1NUUkVRKCJyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogfQpAQCAtNDM2LDcg
KzQzNiw3IEBAIFRFU1QoV1RGX0hhc2hDb3VudGVkU2V0LCBSZWZQdHJLZXlfQWRkVXNpbmdSZWxl
YXNlS2V5QWxyZWFkeVByZXNlbnQpCiAgICAgCiAgICAgewogICAgICAgICBSZWZQdHI8UmVmTG9n
Z2VyPiBwdHIyKCZhKTsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBoYXNoQ291bnRlZFNldC5h
ZGQocHRyMi5yZWxlYXNlKCkpOworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IGhhc2hDb3VudGVk
U2V0LmFkZChXVEZNb3ZlKHB0cjIpKTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKGFkZFJlc3VsdC5p
c05ld0VudHJ5KTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9IYXNoTWFwLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hh
c2hNYXAuY3BwCmluZGV4IDJmMDY2MjNjNGE0OGFmYjc0MzAxMTc5ZGMyNmI4NjU0NGY2ZmZkODUu
LjA4YTQxNGRiZTAzMTExMzc4ZGEyOWVlZjQxN2FmOGUxNjgwMzA4MzUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwCkBAIC0zMDksNyArMzA5LDcgQEAgVEVTVChX
VEZfSGFzaE1hcCwgUmVmUHRyS2V5X0FkZFVzaW5nUmVsZWFzZSkKIAogICAgIERlcml2ZWRSZWZM
b2dnZXIgYSgiYSIpOwogICAgIFJlZlB0cjxSZWZMb2dnZXI+IHB0cigmYSk7Ci0gICAgbWFwLmFk
ZChwdHIucmVsZWFzZSgpLCAwKTsKKyAgICBtYXAuYWRkKFdURk1vdmUocHRyKSwgMCk7CiAKICAg
ICBFWFBFQ1RfU1RSRVEoInJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiB9CkBAIC0z
NzMsNyArMzczLDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgUmVmUHRyS2V5X0FkZFVzaW5nUmVsZWFz
ZUtleUFscmVhZHlQcmVzZW50KQogCiAgICAgewogICAgICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBw
dHIyKCZhKTsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtYXAuYWRkKHB0cjIucmVsZWFzZSgp
LCAwKTsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtYXAuYWRkKFdURk1vdmUocHRyMiksIDAp
OwogICAgICAgICBFWFBFQ1RfRkFMU0UoYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogICAgIH0KIApA
QCAtNDE5LDcgKzQxOSw3IEBAIFRFU1QoV1RGX0hhc2hNYXAsIFJlZlB0cktleV9TZXRVc2luZ1Jl
bGVhc2UpCiAKICAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKICAgICBSZWZQdHI8UmVmTG9n
Z2VyPiBwdHIoJmEpOwotICAgIG1hcC5zZXQocHRyLnJlbGVhc2UoKSwgMCk7CisgICAgbWFwLnNl
dChXVEZNb3ZlKHB0ciksIDApOwogCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgIiwgdGFrZUxv
Z1N0cigpLmNfc3RyKCkpOwogfQpAQCAtNDgxLDcgKzQ4MSw3IEBAIFRFU1QoV1RGX0hhc2hNYXAs
IFJlZlB0cktleV9TZXRVc2luZ1JlbGVhc2VLZXlBbHJlYWR5UHJlc2VudCkKIAogICAgIHsKICAg
ICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcHRyMigmYSk7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0
ID0gbWFwLnNldChwdHIyLnJlbGVhc2UoKSwgMSk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0g
bWFwLnNldChXVEZNb3ZlKHB0cjIpLCAxKTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKGFkZFJlc3Vs
dC5pc05ld0VudHJ5KTsKICAgICAgICAgRVhQRUNUX0VRKDEsIG1hcC5nZXQocHRyLmdldCgpKSk7
CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281574</attachid>
            <date>2016-06-17 12:20:16 -0700</date>
            <delta_ts>2016-06-17 13:07:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158369-20160617122013.patch</filename>
            <type>text/plain</type>
            <size>296694</size>
            <attacher name="Keith Rollin">krollin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyMTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
YzQyYWM2NmJlMzA5NzZjMDExZGE3NjIzNmM0NWRkMTY4MDZiNmMzLi5mYmNiYWZjMTQ0MDc5NTYw
NjhmZTJlZjVkMzM2ZmU2MjM2NjQ0MmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NSBAQAorMjAxNi0wNi0xNiAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVtb3ZlIFJlZlB0cjo6cmVsZWFzZSgpIGFuZCBjaGFuZ2UgY2FsbHMgc2l0
ZXMgdG8gdXNlIFdURk1vdmUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU4MzY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmVmUHRyOjpyZWxlYXNlKCkgcmVsZWFzZXMgaXRzIG1hbmFnZWQgcG9pbnRl
ciBhd2t3YXJkbHkuIEl0J3MgbW9yZQorICAgICAgICBkaXJlY3QgYW5kIGNsZWFyZXIgdG8gdXNl
IFdURk1vdmUgdG8gdHJhbnNmZXIgb3duZXJzaGlwIG9mIHRoZSBtYW5hZ2VkCisgICAgICAgIHBv
aW50ZXIuCisKKyAgICAgICAgQXMgcGFydCBvZiB0aGlzIGNsZWFudXAsIGFsc28gY2hhbmdlIGEg
bG90IG9mIGV4cGxpY2l0IGRhdGEgdHlwZXMgdG8KKyAgICAgICAgJ2F1dG8nLgorCisgICAgICAg
ICogQVBJL0pTT2JqZWN0UmVmLmNwcDoKKyAgICAgICAgKEpTQ2xhc3NDcmVhdGUpOgorICAgICAg
ICAqIEFQSS9KU1NjcmlwdFJlZi5jcHA6CisgICAgICAgICogQVBJL0pTVmFsdWVSZWYuY3BwOgor
ICAgICAgICAoSlNWYWx1ZVRvU3RyaW5nQ29weSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL1N0
YXRpY1Byb3BlcnR5QW5hbHl6ZXIuaDoKKyAgICAgICAgKEpTQzo6U3RhdGljUHJvcGVydHlBbmFs
eXplcjo6bmV3T2JqZWN0KToKKyAgICAgICAgKEpTQzo6U3RhdGljUHJvcGVydHlBbmFseXplcjo6
bW92KToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHA6CisgICAgICAg
IChKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lOjppbnZhbGlkYXRlKToKKyAgICAgICAgKiBkZmcvREZH
SklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxl
KToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcDoKKyAgICAgICAgKEluc3BlY3Rv
cjo6SW5zcGVjdG9yVmFsdWU6OnBhcnNlSlNPTik6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50
OjphY3RpdmF0ZUV4dHJhRG9tYWluKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdl
bnQ6OmFjdGl2YXRlRXh0cmFEb21haW5zKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uUHJvYmUpOgorICAgICAgICAqIGluc3BlY3Rv
ci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3I6OnJlY2VpdmVkU2V0dXBNZXNzYWdlKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5j
cHA6CisgICAgICAgIChKU0M6OmxpbmtQb2x5bW9ycGhpY0NhbGwpOgorICAgICAgICAqIHJ1bnRp
bWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgICog
cnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25z
dHJ1Y3RBcnJheUJ1ZmZlcik6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5o
OgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU5hbWVBcnJheTo6cmVsZWFzZURhdGEpOgorICAgICAg
ICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b1N0
cnVjdHVyZVNoYXBlKToKKyAgICAgICAgKiBydW50aW1lL1R5cGVTZXQuY3BwOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmVTaGFwZTo6bWVyZ2UpOgorICAgICAgICAqIHRvb2xzL0Z1bmN0aW9uT3Zl
cnJpZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6ZU92ZXJyaWRlSW5mbyk6CisKIDIw
MTYtMDYtMTYgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBj
b2xsZWN0aW5nIG9mIExMSU5UIHNsb3cgcGF0aCBzdGF0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhYjQ3NDBh
MmU1NGZlMjRmOGNjNzI1YWU4ZGI0NzBhNTFlZDEzYWM4Li42Y2ZjMTZkZWEzNzRkZjNhNTc4Nzc5
ZGU0ODdkNjZkNjRlNDYyY2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIwIEBACisyMDE2LTA2
LTE2ICBLZWl0aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUg
UmVmUHRyOjpyZWxlYXNlKCkgYW5kIGNoYW5nZSBjYWxscyBzaXRlcyB0byB1c2UgV1RGTW92ZSgp
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgzNjkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZQdHI6
OnJlbGVhc2UoKSByZWxlYXNlcyBpdHMgbWFuYWdlZCBwb2ludGVyIGF3a3dhcmRseS4gSXQncyBt
b3JlCisgICAgICAgIGRpcmVjdCBhbmQgY2xlYXJlciB0byB1c2UgV1RGTW92ZSB0byB0cmFuc2Zl
ciBvd25lcnNoaXAgb2YgdGhlIG1hbmFnZWQKKyAgICAgICAgcG9pbnRlci4KKworICAgICAgICBB
cyBwYXJ0IG9mIHRoaXMgY2xlYW51cCwgYWxzbyBjaGFuZ2UgYSBsb3Qgb2YgZXhwbGljaXQgZGF0
YSB0eXBlcyB0bworICAgICAgICAnYXV0bycuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzOiB0aGVy
ZSdzIG5vIG5ldyBmdW5jdGlvbmFsaXR5LCBqdXN0IGEgcmVmYWN0b3Jpbmcgb2YKKyAgICAgICAg
ZXhpc3RpbmcgY29kZS4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVm
ZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZVNhbXBsZXNGcm9tVHJhY2tCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpwcm92aWRlTWVkaWFEYXRhKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6c3RhcnQpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6On5E
YXRhYmFzZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxDYWxsYmFja1dyYXBw
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTENhbGxiYWNrV3JhcHBlcjo6Y2xlYXIpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmhhbmRsZVBvc3RNZXNzYWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hpc3RvcnlD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIaXN0b3J5OjpwdXNoU3RhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNIaXN0b3J5OjpyZXBsYWNlU3RhdGUpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZVBv
c3RNZXNzYWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFu
Y2VGb3JXaWRnZXQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZFRlcm1pbmFs
KToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmNvcHlQcm9wZXJ0aWVzSW5TZXQp
OgorICAgICAgICAqIGNzcy9TVkdDU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyOjpwYXJzZVNWR1ZhbHVlKToKKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ29udmVy
dGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRT
aGFwZVZhbHVlKToKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlUHJvcGVydGllczo6Y29weVByb3BlcnRpZXNJblNldCk6CisgICAgICAg
ICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZl
cjo6bG9hZFBlbmRpbmdJbWFnZXMpOgorICAgICAgICAqIGRvbS9JbmxpbmVTdHlsZVNoZWV0T3du
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lU3R5bGVTaGVldE93bmVyOjpjbGVhclNo
ZWV0KToKKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjphcHBseUlubGluZVN0eWxlVG9Ob2RlUmFuZ2Up
OgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlbW92ZUNoaWxkcmVuSW5SYW5nZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVtb3ZlTm9kZUFuZFBydW5l
QW5jZXN0b3JzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjpwcnVu
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVwbGFjZVNlbGVj
dGVkVGV4dEluTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6
cmViYWxhbmNlV2hpdGVzcGFjZU9uVGV4dFN1YnN0cmluZyk6CisgICAgICAgICogZWRpdGluZy9D
cmVhdGVMaW5rQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcmVhdGVMaW5rQ29tbWFu
ZDo6ZG9BcHBseSk6CisgICAgICAgICogZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjptZXJnZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRpbmdTdHlsZTo6bWVyZ2VTdHlsZUZyb21SdWxlc0ZvclNlcmlhbGl6YXRpb24pOgorICAg
ICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsZWFyVGV4dENv
bW1hbmQ6OkNyZWF0ZUFuZEFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya0Fs
bE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyk6CisgICAgICAgICogZWRpdGluZy9F
ZGl0b3JDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVJbnNlcnROb2RlKToK
KyAgICAgICAgKiBlZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc2VydFRleHRDb21tYW5kOjpwZXJmb3JtT3ZlcndyaXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc2VydFRleHRDb21tYW5kOjppbnNlcnRUYWIpOgorICAgICAgICAqIGVkaXRpbmcvUmVt
b3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICAq
IGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVwbGFjZW1lbnRGcmFnbWVudDo6cmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6bW92ZU5vZGVPdXRPZkFuY2Vz
dG9yKToKKyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0
ZSk6CisgICAgICAgICogaHRtbC9IVE1MRm9udEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEZvbnRFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUp
OgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxGb3JtRWxlbWVudDo6cHJlcGFyZUZvclN1Ym1pc3Npb24pOgorICAgICAgICAqIGh0bWwv
SFRNTFRhYmxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsZWFrQm9yZGVyU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6bGVha0dyb3VwQm9yZGVyU3R5bGUpOgorICAgICAgICAqIGh0
bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RG9jdW1lbnRQYXJzZXI6OnJ1blNjcmlwdHNGb3JQYXVzZWRUcmVlQnVpbGRlcik6CisgICAgICAg
ICogaHRtbC90cmFjay9JbmJhbmREYXRhVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkluYmFuZERhdGFUZXh0VHJhY2s6OmFkZERhdGFDdWUpOgorICAgICAgICAqIGh0bWwvdHJhY2sv
SW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5l
cmljVGV4dFRyYWNrOjpuZXdDdWVzUGFyc2VkKToKKyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFu
ZFdlYlZUVFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRXZWJWVFRUZXh0
VHJhY2s6Om5ld0N1ZXNQYXJzZWQpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3Vl
TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVMaXN0OjphZGQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0SW5saW5lU3R5bGVzRm9yTm9kZSk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRPTUFnZW50OjpwdXNoQ2hpbGROb2Rlc1RvRnJvbnRlbmQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3Rvck5ldHdvcmtBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3
b3JrQWdlbnQ6OmxvYWRSZXNvdXJjZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0
eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6YnVp
bGRPYmplY3RGb3JTZWxlY3Rvckxpc3QpOgorICAgICAgICAqIGxvYWRlci9Gb3JtU3VibWlzc2lv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtU3VibWlzc2lvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OmxvYWRVUkxJbnRvQ2hpbGRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6bG9hZFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1
ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlByb2dyZXNzVHJhY2tlcjo6ZmluYWxQcm9ncmVzc0NvbXBsZXRlKToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlzYXNzb2NpYXRlRG9jdW1lbnRMb2FkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2Fk
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2hlY2tJZkxv
YWRJc0NvbXBsZXRlKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OmxvYWRDYWNoZUdyb3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpjYWNoZUdyb3VwRm9yVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlOjpmYWxsYmFja0NhY2hlR3JvdXBGb3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSk6CisgICAgICAgICogbG9hZGVyL2Fy
Y2hpdmUvQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
cmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOjpwb3BTdWJmcmFtZUFyY2hpdmUpOgorICAgICAgICAq
IGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lX
ZWJBcmNoaXZlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6
Y3JlYXRlRnJvbVNlbGVjdGlvbik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjcmVhdGVJbWFnZSk6CisgICAg
ICAgICogbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklj
b25EYXRhYmFzZTo6c2V0SWNvbkRhdGFGb3JJY29uVVJMKToKKyAgICAgICAgKFdlYkNvcmU6Oklj
b25EYXRhYmFzZTo6Z2V0T3JDcmVhdGVJY29uUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6Oklj
b25EYXRhYmFzZTo6cmVhZEZyb21EYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0
YWJhc2U6OmdldEltYWdlRGF0YUZvckljb25VUkxGcm9tU1FMRGF0YWJhc2UpOgorICAgICAgICAq
IHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6c2Vzc2lv
blN0b3JhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpsb2NhbFN0b3JhZ2UpOgor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3ApOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0Nv
bXBvc2l0ZUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVBbmltYXRp
b246OnVwZGF0ZVRyYW5zaXRpb25zKToKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5Ojpy
ZXBvcnRWaW9sYXRpb24pOgorICAgICAgICAqIHBhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRy
b2xsZXIubW06CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpj
cmVhdGVPdmVybGF5SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNPdmVybGF5
Q29udHJvbGxlcjo6ZGV0ZXJtaW5lQWN0aXZlSGlnaGxpZ2h0KToKKyAgICAgICAgKiBwYWdlL3Nj
cm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpB
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZWxlYXNlU2Nyb2xsaW5nVHJlZSk6CisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6Y2xvbmVBbmRSZXNldCk6CisgICAgICAgICogcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGluZ1N0YXRlVHJlZTo6YXR0YWNoTm9kZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJU
RkVsZXZhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRDb25jYXRlbmF0ZWRJbXB1bHNl
UmVzcG9uc2VzRm9yU3ViamVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxh
eVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVm
cmVzaE1vbml0b3JNYW5hZ2VyOjpjcmVhdGVNb25pdG9yRm9yQ2xpZW50KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRDYXNjYWRlRm9udHM6OmdseXBoRGF0YUZvclN5c3RlbUZhbGxiYWNrKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Ri5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9j
ZXNzQXR0cmlidXRlZFN0cmluZ3MpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9NZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDOjp1cGRhdGVPcHRpb25zKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpw
cm9jZXNzQ29kZWRGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhp
Y3NMYXllckNBLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNB
TGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpjcmVhdGVDb21w
YXRpYmxlTGF5ZXJPclRha2VGcm9tUG9vbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJE
YXRhOjpnZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ckVmZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmFzVW5tdWx0aXBs
aWVkSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojphc1ByZW11bHRpcGxp
ZWRJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUZvckN1cnJl
bnRHTENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50
UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjpjcmVhdGVNZWRpYVN0cmVhbSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6dmFsaWRh
dGVSZXF1ZXN0Q29uc3RyYWludHMpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXI6OmNyZWF0ZU1lZGlhU3RyZWFtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlZ2lz
dHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZWdpc3Ry
eUltcGw6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1D
Rk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmb3JtQ3JlYXRlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpZGlDb250ZXh0
Ojpjb3B5U3RhY2tSZW1vdmluZ1VuaWNvZGVFbWJlZGRpbmdDb250ZXh0cyk6CisgICAgICAgICog
cmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZp
bHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjcmVhdGVTY3JvbGxiYXIp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxpc3RCb3g6OmNyZWF0ZVNjcm9sbGJhcik6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlck1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFJlbmRlck1lbnVMaXN0OjpjcmVhdGVTY3Jv
bGxiYXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTZWFyY2hGaWVsZDo6Y3JlYXRlU2Nyb2xsYmFyKToKKyAgICAg
ICAgKiByZXBsYXkvUmVwbGF5Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXBs
YXlDb250cm9sbGVyOjp1bmxvYWRTZWdtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRkVEaWZmdXNl
TGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1l
bnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdMaXN0UHJvcGVydHkuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3RQcm9wZXJ0eTo6Z2V0SXRlbVZhbHVlc0FuZFdyYXBw
ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3RQcm9wZXJ0eTo6aW5zZXJ0SXRlbUJlZm9y
ZVZhbHVlc0FuZFdyYXBwZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3RQcm9wZXJ0eTo6
cmVtb3ZlSXRlbVZhbHVlc0FuZFdyYXBwZXJzKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclRo
cmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OndvcmtlclRocmVhZCk6
CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhN
TEh0dHBSZXF1ZXN0OjppbnRlcm5hbEFib3J0KToKKyAgICAgICAgKiB4bWwvWFBhdGhTdGVwLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpTdGVwOjpub2Rlc0luQXhpcyk6CisKIDIwMTYt
MDYtMTYgIEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24uY29tPgogCiAg
ICAgICAgIFdlYlJUQzogQ2hlY2sgdHlwZSBvZiB0aGlzIGluIFJUQ1BlZXJDb25uZWN0aW9uIEpT
IGJ1aWx0LWluIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2MjgyYWMwMDYxMWMwODRmMTEyNDI4YzMw
NjVlYzZlZDMwOGUyZDMxLi4yOWJiZjg3ZDMyNDVjYTQ4NGQ2ZTY5YzhkODBkNDY0ZmE1NDY4OWM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE2LTA2LTE2ICBLZWl0aCBSb2xsaW4gIDxr
cm9sbGluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgUmVmUHRyOjpyZWxlYXNlKCkgYW5k
IGNoYW5nZSBjYWxscyBzaXRlcyB0byB1c2UgV1RGTW92ZSgpCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgzNjkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZQdHI6OnJlbGVhc2UoKSByZWxlYXNlcyBp
dHMgbWFuYWdlZCBwb2ludGVyIGF3a3dhcmRseS4gSXQncyBtb3JlCisgICAgICAgIGRpcmVjdCBh
bmQgY2xlYXJlciB0byB1c2UgV1RGTW92ZSB0byB0cmFuc2ZlciBvd25lcnNoaXAgb2YgdGhlIG1h
bmFnZWQKKyAgICAgICAgcG9pbnRlci4KKworICAgICAgICBBcyBwYXJ0IG9mIHRoaXMgY2xlYW51
cCwgYWxzbyBjaGFuZ2UgYSBsb3Qgb2YgZXhwbGljaXQgZGF0YSB0eXBlcyB0bworICAgICAgICAn
YXV0bycuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdG9yYWdlQXJlYUltcGw6OnNldEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6
U3RvcmFnZUFyZWFJbXBsOjpyZW1vdmVJdGVtKToKKwogMjAxNi0wNi0xMyAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBXZWJTb2NrZXRQ
cm92aWRlciBzdHViCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggNzU3ZDJhMDQyMzU3NmQ4NDEzNDgyYTc1
YjM1ZTA4ZGM2OTlmMmU1Mi4uYjRhMjMxMmY4Y2JlZTAwYjExNzk2YWU3OWZkYjRmNTFiM2JlYmJk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE2LTA2LTE2ICBLZWl0aCBS
b2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgUmVmUHRyOjpyZWxl
YXNlKCkgYW5kIGNoYW5nZSBjYWxscyBzaXRlcyB0byB1c2UgV1RGTW92ZSgpCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgzNjkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZQdHI6OnJlbGVhc2UoKSBy
ZWxlYXNlcyBpdHMgbWFuYWdlZCBwb2ludGVyIGF3a3dhcmRseS4gSXQncyBtb3JlCisgICAgICAg
IGRpcmVjdCBhbmQgY2xlYXJlciB0byB1c2UgV1RGTW92ZSB0byB0cmFuc2ZlciBvd25lcnNoaXAg
b2YgdGhlIG1hbmFnZWQKKyAgICAgICAgcG9pbnRlci4KKworICAgICAgICBBcyBwYXJ0IG9mIHRo
aXMgY2xlYW51cCwgYWxzbyBjaGFuZ2UgYSBsb3Qgb2YgZXhwbGljaXQgZGF0YSB0eXBlcyB0bwor
ICAgICAgICAnYXV0bycuCisKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdp
bkhvc3RNYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkhvc3RNYW5h
Z2VyOjppbnN0YW50aWF0ZVBsdWdpbik6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHk6OmRlbWFyc2hhbFZhbHVlRnJvbUFycmF5KToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKC1bV2ViRnJh
bWVQb2xpY3lMaXN0ZW5lciByZWNlaXZlZFBvbGljeURlY2lzaW9uOl0pOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tOgorICAgICAgICAoLVtXZWJTZWN1cml0
eU9yaWdpbiBpbml0V2l0aFVSTDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkFyY2hpdmUubW06
CisgICAgICAgICgtW1dlYkFyY2hpdmUgaW5pdFdpdGhNYWluUmVzb3VyY2U6c3VicmVzb3VyY2Vz
OnN1YmZyYW1lQXJjaGl2ZXM6XSk6CisgICAgICAgICgtW1dlYkFyY2hpdmUgaW5pdFdpdGhEYXRh
Ol0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbToKKyAgICAgICAgKC1bV2Vi
RGF0YVNvdXJjZSBtYWluUmVzb3VyY2VdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1t
OgorICAgICAgICAoLVtXZWJGcmFtZSBfZG9jdW1lbnRGcmFnbWVudFdpdGhOb2Rlc0FzUGFyYWdy
YXBoczpdKToKKwogMjAxNi0wNi0xNSAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNv
bT4KIAogICAgICAgICArW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBzdXBwb3J0ZWRNSU1FVHlwZXNd
IGxlYWtzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggZGZiY2M5Y2Y2NzYzMDhhZGI1YjhhZTcyMjQ3YWY0MWQ0M2Rk
NmM1Ni4uNDIxMGZhNWVmNDBmMjUwNzM1ZWJhNThkMGJkZjgyYjhiZjM2NWNmMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI1MSBAQAorMjAxNi0wNi0xNiAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFJlZlB0cjo6cmVsZWFzZSgpIGFuZCBjaGFuZ2Ug
Y2FsbHMgc2l0ZXMgdG8gdXNlIFdURk1vdmUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MzY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmVmUHRyOjpyZWxlYXNlKCkgcmVsZWFzZXMgaXRzIG1hbmFn
ZWQgcG9pbnRlciBhd2t3YXJkbHkuIEl0J3MgbW9yZQorICAgICAgICBkaXJlY3QgYW5kIGNsZWFy
ZXIgdG8gdXNlIFdURk1vdmUgdG8gdHJhbnNmZXIgb3duZXJzaGlwIG9mIHRoZSBtYW5hZ2VkCisg
ICAgICAgIHBvaW50ZXIuCisKKyAgICAgICAgQXMgcGFydCBvZiB0aGlzIGNsZWFudXAsIGFsc28g
Y2hhbmdlIGEgbG90IG9mIGV4cGxpY2l0IGRhdGEgdHlwZXMgdG8KKyAgICAgICAgJ2F1dG8nLgor
CisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzczo6Y3JlYXRlRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25u
ZWN0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6Omlu
aXRpYWxpemVTaGFyZWFibGVSZXNvdXJjZUhhbmRsZUZyb21TdG9yYWdlUmVjb3JkKToKKyAgICAg
ICAgKiBQbGF0Zm9ybS9tYWMvU2hhcmVkTWVtb3J5TWFjLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
U2hhcmVkTWVtb3J5OjphbGxvY2F0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5OjptYXApOgorICAgICAgICAq
IFBsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdp
blByb2Nlc3M6OmNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKiBTaGFyZWQv
QVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW06CisgICAgICAgIChlbmNvZGVUb09iamVj
dFN0cmVhbSk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLSW1hZ2UuY3BwOgorICAgICAgICAo
V0tJbWFnZUNyZWF0ZSk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLTnVtYmVyLmNwcDoKKyAg
ICAgICAgKFdLQm9vbGVhbkNyZWF0ZSk6CisgICAgICAgIChXS0RvdWJsZUNyZWF0ZSk6CisgICAg
ICAgIChXS1VJbnQ2NENyZWF0ZSk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLU2VjdXJpdHlP
cmlnaW5SZWYuY3BwOgorICAgICAgICAoV0tTZWN1cml0eU9yaWdpbkNyZWF0ZSk6CisgICAgICAg
ICogU2hhcmVkL0FQSS9jL1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdL
U2VyaWFsaXplZFNjcmlwdFZhbHVlQ3JlYXRlKToKKyAgICAgICAgKFdLU2VyaWFsaXplZFNjcmlw
dFZhbHVlQ3JlYXRlV2l0aEludGVybmFsUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFNoYXJl
ZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwOgorICAgICAgICAoV0tJbWFnZUNyZWF0ZUZy
b21DYWlyb1N1cmZhY2UpOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3Bw
OgorICAgICAgICAoV0tJbWFnZUNyZWF0ZUZyb21DR0ltYWdlKToKKyAgICAgICAgKiBTaGFyZWQv
QVBJL2MvbWFjL1dLQ2VydGlmaWNhdGVJbmZvTWFjLm1tOgorICAgICAgICAoV0tDZXJ0aWZpY2F0
ZUluZm9DcmVhdGVXaXRoQ2VydGZpY2F0ZUNoYWluKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2Mv
bWFjL1dLT2JqQ1R5cGVXcmFwcGVyUmVmLm1tOgorICAgICAgICAoV0tPYmpDVHlwZVdyYXBwZXJD
cmVhdGUpOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9tYWMvV0tXZWJBcmNoaXZlLmNwcDoKKyAg
ICAgICAgKFdLV2ViQXJjaGl2ZUNyZWF0ZSk6CisgICAgICAgIChXS1dlYkFyY2hpdmVDcmVhdGVX
aXRoRGF0YSk6CisgICAgICAgIChXS1dlYkFyY2hpdmVDcmVhdGVGcm9tUmFuZ2UpOgorICAgICAg
ICAoV0tXZWJBcmNoaXZlQ29weU1haW5SZXNvdXJjZSk6CisgICAgICAgIChXS1dlYkFyY2hpdmVD
b3B5U3VicmVzb3VyY2VzKToKKyAgICAgICAgKFdLV2ViQXJjaGl2ZUNvcHlTdWJmcmFtZUFyY2hp
dmVzKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvbWFjL1dLV2ViQXJjaGl2ZVJlc291cmNlLmNw
cDoKKyAgICAgICAgKFdLV2ViQXJjaGl2ZVJlc291cmNlQ3JlYXRlKToKKyAgICAgICAgKiBTaGFy
ZWQvQVBJV2ViQXJjaGl2ZS5tbToKKyAgICAgICAgKEFQSTo6V2ViQXJjaGl2ZTo6V2ViQXJjaGl2
ZSk6CisgICAgICAgICogU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1
bGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0T3JDcmVh
dGUpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZSk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJs
ZVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6Om1hcCk6
CisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHA6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+OjpkZWNvZGUpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9Db29yZGluYXRlZEdyYXBoaWNzL1dLVmlldy5jcHA6CisgICAgICAgIChXS1ZpZXdD
cmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0JhdHRlcnlTdGF0dXMuY3BwOgor
ICAgICAgICAoV0tCYXR0ZXJ5U3RhdHVzQ3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tHZW9sb2NhdGlvblBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdLR2VvbG9jYXRpb25Qb3Np
dGlvbkNyZWF0ZV9iKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tHcmFtbWFyRGV0YWls
LmNwcDoKKyAgICAgICAgKFdLR3JhbW1hckRldGFpbENyZWF0ZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VDb3B5U2Vzc2lvblN0YXRlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwOgorICAgICAgICAoV0tQ
YWdlR3JvdXBDcmVhdGVXaXRoSWRlbnRpZmllcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV0tQcmVmZXJlbmNlc0NyZWF0ZSk6CisgICAg
ICAgIChXS1ByZWZlcmVuY2VzQ3JlYXRlV2l0aElkZW50aWZpZXIpOgorICAgICAgICAoV0tQcmVm
ZXJlbmNlc0NyZWF0ZUNvcHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1Nlc3Npb25S
ZWYuY3BwOgorICAgICAgICAoV0tTZXNzaW9uQ3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tTZXNzaW9uU3RhdGVSZWYuY3BwOgorICAgICAgICAoV0tTZXNzaW9uU3RhdGVDb3B5
RGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFj
Lm1tOgorICAgICAgICAoV0tDb250ZXh0Q29weVBsdWdJbkluZm9Gb3JCdW5kbGVJZGVudGlmaWVy
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IGxvYWRSZXF1ZXN0Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgbG9hZEZp
bGVVUkw6YWxsb3dpbmdSZWFkQWNjZXNzVG9VUkw6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBs
b2FkRGF0YTpNSU1FVHlwZTpjaGFyYWN0ZXJFbmNvZGluZ05hbWU6YmFzZVVSTDpdKToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IGdvVG9CYWNrRm9yd2FyZExpc3RJdGVtOl0pOgorICAgICAgICAoLVtX
S1dlYlZpZXcgZ29CYWNrXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBnb0ZvcndhcmRdKToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IHJlbG9hZF0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgcmVsb2Fk
RnJvbU9yaWdpbl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2xvYWREYXRhOk1JTUVUeXBlOmNo
YXJhY3RlckVuY29kaW5nTmFtZTpiYXNlVVJMOnVzZXJEYXRhOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX3JlbG9hZFdpdGhvdXRDb250ZW50QmxvY2tlcnNdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF9zZXNzaW9uU3RhdGVEYXRhXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVzdG9yZVNl
c3Npb25TdGF0ZTphbmROYXZpZ2F0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfZGF0YWJhc2VfbWFuYWdlci5jcHA6CisgICAgICAgIChFd2tEYXRhYmFzZU1hbmFnZXI6OmNy
ZWF0ZU9yaWdpbkxpc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19zdG9yYWdl
X21hbmFnZXIuY3BwOgorICAgICAgICAoRXdrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZU9yaWdpbkxp
c3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOgorICAg
ICAgICAod2Via2l0V2ViVmlld0NyZWF0ZU5ld1BhZ2UpOgorICAgICAgICAod2Via2l0V2ViVmll
d1ByaW50RnJhbWUpOgorICAgICAgICAoZ2V0Q29udGVudHNBc01IVE1MRGF0YUNhbGxiYWNrKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvU2Vzc2lvblN0YXRlQ29kaW5nLm1tOgorICAgICAg
ICAoV2ViS2l0OjplbmNvZGVTZXNzaW9uU3RhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9HZW5l
cmljQ2FsbGJhY2suaDoKKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tNYXA6OnRha2UpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eTo6Y3JlYXRlUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eTo6Y3JlYXRlUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJvY2Vzc01hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNz
TWFuYWdlcjo6Z2V0T3JDcmVhdGVQbHVnaW5Qcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
U3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5h
Z2VyOjpTdG9yYWdlQXJlYTo6c2V0SXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5h
Z2VyOjpTdG9yYWdlQXJlYTo6cmVtb3ZlSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VN
YW5hZ2VyOjpjcmVhdGVMb2NhbFN0b3JhZ2VNYXApOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJC
YWNrRm9yd2FyZExpc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6
OmFkZEl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6OmNsZWFyKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENvb2tpZUFj
Y2VwdFBvbGljeSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5zdGFsbFZpZXdTdGF0ZUNoYW5nZUNvbXBsZXRp
b25IYW5kbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcmVmZXJlbmNlczo6Y3JlYXRlV2l0aExlZ2FjeURlZmF1bHRzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJlZmVyZW5jZXM6OmNvcHkpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
Ojp+V2ViUHJvY2Vzc1Bvb2wpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90
U3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdFN0b3JlOjpyZWNvcmRTbmFw
c2hvdCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xs
ZXIubW06CisgICAgICAgICgtW1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciBfd2ViSGl0VGVz
dFJlc3VsdF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcubW06Cisg
ICAgICAgICgtW1dLUHJpbnRpbmdWaWV3IF9hc2tQYWdlVG9Db21wdXRlUGFnZVJlY3RzXSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2V0RHJhZ0ltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5tbToKKyAgICAg
ICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUgaGl0VGVzdDpdKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0
UmVzdWx0Lm1tOgorICAgICAgICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0IG5v
ZGVIYW5kbGVdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2Nv
YS9XS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tOgorICAgICAgICAoK1tXS1dlYlByb2Nl
c3NQbHVnSW5Ob2RlSGFuZGxlIG5vZGVIYW5kbGVXaXRoSlNWYWx1ZTppbkNvbnRleHQ6XSk6Cisg
ICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUgaHRtbElGcmFtZUVsZW1lbnRD
b250ZW50RnJhbWVdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9D
b2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZC5tbToKKyAgICAgICAgKCtbV0tXZWJQ
cm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgd29ybGRdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUG9zdFN5
bmNocm9ub3VzTWVzc2FnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5jcHA6CisgICAgICAgIChXS0J1bmRsZURP
TVdpbmRvd0V4dGVuc2lvbkNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZUhpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV0tCdW5kbGVI
aXRUZXN0UmVzdWx0Q29weU5vZGVIYW5kbGUpOgorICAgICAgICAoV0tCdW5kbGVIaXRUZXN0UmVz
dWx0Q29weVVSTEVsZW1lbnRIYW5kbGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcDoKKyAgICAgICAgKFdLQnVu
ZGxlTmF2aWdhdGlvbkFjdGlvbkNvcHlIaXRUZXN0UmVzdWx0KToKKyAgICAgICAgKFdLQnVuZGxl
TmF2aWdhdGlvbkFjdGlvbkNvcHlGb3JtRWxlbWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5vZGVIYW5kbGUuY3BwOgorICAgICAgICAoV0tC
dW5kbGVOb2RlSGFuZGxlQ3JlYXRlKToKKyAgICAgICAgKFdLQnVuZGxlTm9kZUhhbmRsZUNvcHlE
b2N1bWVudCk6CisgICAgICAgIChXS0J1bmRsZU5vZGVIYW5kbGVDb3B5U25hcHNob3RXaXRoT3B0
aW9ucyk6CisgICAgICAgIChXS0J1bmRsZU5vZGVIYW5kbGVDb3B5VmlzaWJsZVJhbmdlKToKKyAg
ICAgICAgKFdLQnVuZGxlTm9kZUhhbmRsZUNvcHlIVE1MVGFibGVDZWxsRWxlbWVudENlbGxBYm92
ZSk6CisgICAgICAgIChXS0J1bmRsZU5vZGVIYW5kbGVDb3B5RG9jdW1lbnRGcmFtZSk6CisgICAg
ICAgIChXS0J1bmRsZU5vZGVIYW5kbGVDb3B5SFRNTEZyYW1lRWxlbWVudENvbnRlbnRGcmFtZSk6
CisgICAgICAgIChXS0J1bmRsZU5vZGVIYW5kbGVDb3B5SFRNTElGcmFtZUVsZW1lbnRDb250ZW50
RnJhbWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVQYWdlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUGFnZUNyZWF0ZVNuYXBzaG90V2l0aE9wdGlv
bnMpOgorICAgICAgICAoV0tCdW5kbGVQYWdlQ3JlYXRlU25hcHNob3RJblZpZXdDb29yZGluYXRl
cyk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VDcmVhdGVTbmFwc2hvdEluRG9jdW1lbnRDb29yZGlu
YXRlcyk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VDcmVhdGVTY2FsZWRTbmFwc2hvdEluRG9jdW1l
bnRDb29yZGluYXRlcyk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNz
YWdlRm9yVGVzdGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZVJhbmdlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUmFuZ2VIYW5kbGVD
cmVhdGUpOgorICAgICAgICAoV0tCdW5kbGVSYW5nZUhhbmRsZUNvcHlTbmFwc2hvdFdpdGhPcHRp
b25zKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
U2NyaXB0V29ybGQuY3BwOgorICAgICAgICAoV0tCdW5kbGVTY3JpcHRXb3JsZENyZWF0ZVdvcmxk
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Ob2Rl
Lm1tOgorICAgICAgICAoLVtXS0RPTU5vZGUgX2NvcHlCdW5kbGVOb2RlSGFuZGxlUmVmXSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW06
CisgICAgICAgICgtW1dLRE9NUmFuZ2UgX2NvcHlCdW5kbGVSYW5nZUhhbmRsZVJlZl0pOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5
bGVEZWNsYXJhdGlvbkhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxl
Q1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZTo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OmltYWdlRm9yUmVjdCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVk
QnVuZGxlTm9kZUhhbmRsZTo6cmVuZGVyZWRJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmdldE9yQ3JlYXRlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0c2NhcGVQbHVnaW46OmxvYWRVUkwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvRGVwcmVjYXRlZFBERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpj
cmVhdGVTY3JvbGxiYXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlQXJl
YU1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjphcHBseUNoYW5nZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJz
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6dG9Gb3JtRGF0YSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6cmVjcmVhdGVQbHVnaW4pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVOZXR3b3JraW5nQ29udGV4
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JDbGllbnQ6OmhpZ2hsaWdodCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1h
Yy5tbToKKyAgICAgICAgKFdlYktpdDo6Y29udmVydEltYWdlVG9CaXRtYXApOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kVUlBZnRlclBhZ2VTY3JvbGwpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyOjpnZXRPckNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyOjpzZXRWaXNpdGVkTGlu
a1RhYmxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6Y3JlYXRlV2l0aENvcmVNYWluRnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJGcmFtZTo6Y3JlYXRlU3ViZnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGcmFtZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNyZWF0ZVNlbGVj
dGlvblNuYXBzaG90KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNyZWF0ZVBsdWdpbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnNuYXBzaG90QXRTaXplKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
c25hcHNob3ROb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6d2lsbFBlcmZvcm1Mb2Fk
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6U2FuZGJv
eEV4dGVuc2lvblRyYWNrZXI6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6U2FuZGJveEV4dGVuc2lvblRyYWNrZXI6OmRpZENvbW1pdFByb3Zpc2lv
bmFsTG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZUdyb3VwUHJveHk6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tOgorICAgICAgICAo
V2ViS2l0OjpQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpQcm9wZXJ0aWVzOjpkZWNvZGUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNsb25lKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbToKKyAg
ICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OmNsb25lKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1t
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6Y3JlYXRlRGlz
cGxheVJlZnJlc2hNb25pdG9yKToKKwogMjAxNi0wNi0xNSAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TIFdLMl0gT24gaVBhZCwgaW5kaXJlY3Qg
Zm9jdXNzaW5nIG9mIGEgdGV4dCBmaWVsZCBkb2Vzbid0IGFsd2F5cyBzY3JvbGwgdG8gdGhlIGNv
cnJlY3QgbG9jYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNP
YmplY3RSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAK
aW5kZXggMzdjZDY1NzMyMzcwMDg1MWIyNTc5ZDY0MzZiNDEzNTMzNTNlOGQyZS4uYzFkZGMzMjcx
Zjc4NTI0ZDc3MWE2NGQxYjVjZDZmZDE4OWM4OTFjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU09iamVjdFJlZi5jcHAKQEAgLTY2LDExICs2NiwxMSBAQCB1c2luZyBuYW1lc3BhY2Ug
SlNDOwogSlNDbGFzc1JlZiBKU0NsYXNzQ3JlYXRlKGNvbnN0IEpTQ2xhc3NEZWZpbml0aW9uKiBk
ZWZpbml0aW9uKQogewogICAgIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKLSAgICBSZWZQdHI8T3Bh
cXVlSlNDbGFzcz4ganNDbGFzcyA9IChkZWZpbml0aW9uLT5hdHRyaWJ1dGVzICYga0pTQ2xhc3NB
dHRyaWJ1dGVOb0F1dG9tYXRpY1Byb3RvdHlwZSkKKyAgICBhdXRvIGpzQ2xhc3MgPSAoZGVmaW5p
dGlvbi0+YXR0cmlidXRlcyAmIGtKU0NsYXNzQXR0cmlidXRlTm9BdXRvbWF0aWNQcm90b3R5cGUp
CiAgICAgICAgID8gT3BhcXVlSlNDbGFzczo6Y3JlYXRlTm9BdXRvbWF0aWNQcm90b3R5cGUoZGVm
aW5pdGlvbikKICAgICAgICAgOiBPcGFxdWVKU0NsYXNzOjpjcmVhdGUoZGVmaW5pdGlvbik7CiAg
ICAgCi0gICAgcmV0dXJuIGpzQ2xhc3MucmVsZWFzZSgpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4g
JmpzQ2xhc3MubGVha1JlZigpOwogfQogCiBKU0NsYXNzUmVmIEpTQ2xhc3NSZXRhaW4oSlNDbGFz
c1JlZiBqc0NsYXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1Nj
cmlwdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcApp
bmRleCA2MGJkZTYwNGUzNTg1MTZmMWVmNmNhYTIzZDgxMjQ4OTJjY2ZhOTU1Li44M2QxZmU2MmYx
MGEyZDA5MjkzMTBiZjM4YWVmMjYyZGJiZTJjM2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTU2NyaXB0UmVmLmNwcApAQCAtOTMsNyArOTMsNyBAQCBKU1NjcmlwdFJlZiBKU1Njcmlw
dENyZWF0ZVJlZmVyZW5jaW5nSW1tb3J0YWxBU0NJSVRleHQoSlNDb250ZXh0R3JvdXBSZWYgY29u
dGV4dAogCiAgICAgc3RhcnRpbmdMaW5lTnVtYmVyID0gc3RkOjptYXgoMSwgc3RhcnRpbmdMaW5l
TnVtYmVyKTsKIAotICAgIFJlZlB0cjxPcGFxdWVKU1NjcmlwdD4gcmVzdWx0ID0gT3BhcXVlSlNT
Y3JpcHQ6OmNyZWF0ZSh2bSwgdXJsID8gdXJsLT5zdHJpbmcoKSA6IFN0cmluZygpLCBzdGFydGlu
Z0xpbmVOdW1iZXIsIFN0cmluZyhTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbChzb3VyY2Us
IGxlbmd0aCkpKTsKKyAgICBhdXRvIHJlc3VsdCA9IE9wYXF1ZUpTU2NyaXB0OjpjcmVhdGUodm0s
IHVybCA/IHVybC0+c3RyaW5nKCkgOiBTdHJpbmcoKSwgc3RhcnRpbmdMaW5lTnVtYmVyLCBTdHJp
bmcoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoc291cmNlLCBsZW5ndGgpKSk7CiAKICAg
ICBQYXJzZXJFcnJvciBlcnJvcjsKICAgICBpZiAoIXBhcnNlU2NyaXB0KHZtLCBTb3VyY2VDb2Rl
KHJlc3VsdCksIGVycm9yKSkgewpAQCAtMTA0LDcgKzEwNCw3IEBAIEpTU2NyaXB0UmVmIEpTU2Ny
aXB0Q3JlYXRlUmVmZXJlbmNpbmdJbW1vcnRhbEFTQ0lJVGV4dChKU0NvbnRleHRHcm91cFJlZiBj
b250ZXh0CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiByZXN1
bHQucmVsZWFzZSgpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gcmVzdWx0LmxlYWtSZWYoKTsKIH0K
IAogSlNTY3JpcHRSZWYgSlNTY3JpcHRDcmVhdGVGcm9tU3RyaW5nKEpTQ29udGV4dEdyb3VwUmVm
IGNvbnRleHRHcm91cCwgSlNTdHJpbmdSZWYgdXJsLCBpbnQgc3RhcnRpbmdMaW5lTnVtYmVyLCBK
U1N0cmluZ1JlZiBzb3VyY2UsIEpTU3RyaW5nUmVmKiBlcnJvck1lc3NhZ2UsIGludCogZXJyb3JM
aW5lKQpAQCAtMTE0LDcgKzExNCw3IEBAIEpTU2NyaXB0UmVmIEpTU2NyaXB0Q3JlYXRlRnJvbVN0
cmluZyhKU0NvbnRleHRHcm91cFJlZiBjb250ZXh0R3JvdXAsIEpTU3RyaW5nUmVmCiAKICAgICBz
dGFydGluZ0xpbmVOdW1iZXIgPSBzdGQ6Om1heCgxLCBzdGFydGluZ0xpbmVOdW1iZXIpOwogCi0g
ICAgUmVmUHRyPE9wYXF1ZUpTU2NyaXB0PiByZXN1bHQgPSBPcGFxdWVKU1NjcmlwdDo6Y3JlYXRl
KHZtLCB1cmwgPyB1cmwtPnN0cmluZygpIDogU3RyaW5nKCksIHN0YXJ0aW5nTGluZU51bWJlciwg
c291cmNlLT5zdHJpbmcoKSk7CisgICAgYXV0byByZXN1bHQgPSBPcGFxdWVKU1NjcmlwdDo6Y3Jl
YXRlKHZtLCB1cmwgPyB1cmwtPnN0cmluZygpIDogU3RyaW5nKCksIHN0YXJ0aW5nTGluZU51bWJl
ciwgc291cmNlLT5zdHJpbmcoKSk7CiAKICAgICBQYXJzZXJFcnJvciBlcnJvcjsKICAgICBpZiAo
IXBhcnNlU2NyaXB0KHZtLCBTb3VyY2VDb2RlKHJlc3VsdCksIGVycm9yKSkgewpAQCAtMTI1LDcg
KzEyNSw3IEBAIEpTU2NyaXB0UmVmIEpTU2NyaXB0Q3JlYXRlRnJvbVN0cmluZyhKU0NvbnRleHRH
cm91cFJlZiBjb250ZXh0R3JvdXAsIEpTU3RyaW5nUmVmCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIAotICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpLmxlYWtSZWYoKTsKKyAgICBy
ZXR1cm4gcmVzdWx0LmxlYWtSZWYoKTsKIH0KIAogdm9pZCBKU1NjcmlwdFJldGFpbihKU1Njcmlw
dFJlZiBzY3JpcHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFs
dWVSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAppbmRl
eCAwZDNiZWYwMjE5ZGJjZjFjMDc1NjViYTY0Y2YzZmUwYzYxNmE3YjViLi40Mjg0MzUwZmE3MTVj
NjVjMjI3MDcyY2ZiZTg2OWMzNzdiM2MzOWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNWYWx1ZVJlZi5jcHAKQEAgLTQwMSwxMCArNDAxLDEwIEBAIEpTU3RyaW5nUmVmIEpTVmFsdWVU
b1N0cmluZ0NvcHkoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJl
ZioKIAogICAgIEpTVmFsdWUganNWYWx1ZSA9IHRvSlMoZXhlYywgdmFsdWUpOwogICAgIAotICAg
IFJlZlB0cjxPcGFxdWVKU1N0cmluZz4gc3RyaW5nUmVmKE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUo
anNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICBhdXRvIHN0cmluZ1Jl
ZihPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKGpzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpKSk7CiAgICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKGV4ZWMsIGV4Y2VwdGlvbikg
PT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKICAgICAgICAgc3RyaW5nUmVmID0gbnVsbHB0
cjsKLSAgICByZXR1cm4gc3RyaW5nUmVmLnJlbGVhc2UoKS5sZWFrUmVmKCk7CisgICAgcmV0dXJu
IHN0cmluZ1JlZi5sZWFrUmVmKCk7CiB9CiAKIEpTT2JqZWN0UmVmIEpTVmFsdWVUb09iamVjdChK
U0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1N0YXRpY1By
b3BlcnR5QW5hbHl6ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvU3Rh
dGljUHJvcGVydHlBbmFseXplci5oCmluZGV4IGU2M2ZlZjg2YTEwN2M4ZTQ4MDhmYmIwMDAwZmQz
ZWQ1N2E4MzhhOGUuLjFlYzEyOWU4OTg1YzdhNjBlOWFhYmNlOGM3NTFjYWFhNTViN2Y2MDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvU3RhdGljUHJvcGVy
dHlBbmFseXplci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvU3Rh
dGljUHJvcGVydHlBbmFseXplci5oCkBAIC03Miw3ICs3Miw3IEBAIGlubGluZSB2b2lkIFN0YXRp
Y1Byb3BlcnR5QW5hbHl6ZXI6Om5ld09iamVjdChpbnQgZHN0LCB1bnNpZ25lZCBvZmZzZXRPZklu
bGluZUNhCiAgICAgQW5hbHlzaXNNYXA6OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBtX2FuYWx5c2Vz
LmFkZChkc3QsIGFuYWx5c2lzKTsKICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KSB7CiAg
ICAgICAgIGtpbGwoYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKSk7Ci0gICAgICAgIGFk
ZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBhbmFseXNpcy5yZWxlYXNlKCk7CisgICAgICAgIGFk
ZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBXVEZNb3ZlKGFuYWx5c2lzKTsKICAgICB9CiB9CiAK
QEAgLTk1LDcgKzk1LDcgQEAgaW5saW5lIHZvaWQgU3RhdGljUHJvcGVydHlBbmFseXplcjo6bW92
KGludCBkc3QsIGludCBzcmMpCiAgICAgQW5hbHlzaXNNYXA6OkFkZFJlc3VsdCBhZGRSZXN1bHQg
PSBtX2FuYWx5c2VzLmFkZChkc3QsIGFuYWx5c2lzKTsKICAgICBpZiAoIWFkZFJlc3VsdC5pc05l
d0VudHJ5KSB7CiAgICAgICAgIGtpbGwoYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKSk7
Ci0gICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBhbmFseXNpcy5yZWxlYXNlKCk7
CisgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBXVEZNb3ZlKGFuYWx5c2lzKTsK
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlckNhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJDYWxsRnJhbWUuY3BwCmluZGV4IGE4YzU1N2M3NDczMWYyYjZhMzMzMTc1MTYwY2EzMzQ4
ZDIxNTIyYmIuLmZiODYzNjhhMzk0OGI2ZjhlMzVhMWVkNDZiNTM4MzFhYzNiMWVkZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1l
LmNwcApAQCAtMjc4LDcgKzI3OCw3IEBAIHZvaWQgRGVidWdnZXJDYWxsRnJhbWU6OmludmFsaWRh
dGUoKQogICAgICAgICAgICAgZnJhbWUtPm1fc2NvcGUtPmludmFsaWRhdGVDaGFpbigpOwogICAg
ICAgICAgICAgZnJhbWUtPm1fc2NvcGUuY2xlYXIoKTsKICAgICAgICAgfQotICAgICAgICBmcmFt
ZSA9IGZyYW1lLT5tX2NhbGxlci5yZWxlYXNlKCk7CisgICAgICAgIGZyYW1lID0gV1RGTW92ZShm
cmFtZS0+bV9jYWxsZXIpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmNwcAppbmRleCAxN2M2YTBiODUyYTIyMWVlYTY4ODMxZTYwZDMzM2U5
MTZiOTg5YjI0Li45MDA2MzA4YTQzMTY3ZTIxNjAzMjkyZmYxOGY1NDk1ODcxMDllOGQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcApAQCAtMzgxLDcg
KzM4MSw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQogICAgIGRpc2Fzc2VtYmxlKCps
aW5rQnVmZmVyKTsKICAgICAKICAgICBtX2dyYXBoLm1fcGxhbi5maW5hbGl6ZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEpJVEZpbmFsaXplcj4oCi0gICAgICAgIG1fZ3JhcGgubV9wbGFuLCBtX2ppdENv
ZGUucmVsZWFzZSgpLCBXVEZNb3ZlKGxpbmtCdWZmZXIpKTsKKyAgICAgICAgbV9ncmFwaC5tX3Bs
YW4sIFdURk1vdmUobV9qaXRDb2RlKSwgV1RGTW92ZShsaW5rQnVmZmVyKSk7CiB9CiAKIHZvaWQg
SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCkBAIC00NzgsNyArNDc4LDcgQEAgdm9pZCBK
SVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIg
d2l0aEFyaXR5Q2hlY2sgPSBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKG1fYXJpdHlDaGVjayk7CiAK
ICAgICBtX2dyYXBoLm1fcGxhbi5maW5hbGl6ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEpJVEZpbmFs
aXplcj4oCi0gICAgICAgIG1fZ3JhcGgubV9wbGFuLCBtX2ppdENvZGUucmVsZWFzZSgpLCBXVEZN
b3ZlKGxpbmtCdWZmZXIpLCB3aXRoQXJpdHlDaGVjayk7CisgICAgICAgIG1fZ3JhcGgubV9wbGFu
LCBXVEZNb3ZlKG1faml0Q29kZSksIFdURk1vdmUobGlua0J1ZmZlciksIHdpdGhBcml0eUNoZWNr
KTsKIH0KIAogdm9pZCBKSVRDb21waWxlcjo6ZGlzYXNzZW1ibGUoTGlua0J1ZmZlciYgbGlua0J1
ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yVmFsdWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
VmFsdWVzLmNwcAppbmRleCBjNWMxMTYzNGJmNjI4MTUyNDUzNzNmMzBjNjE0NWYyZmEzOTFjMjI1
Li41Njk0OGZhMzEzZjJlNmM4ZTA5ZmFlNGQ3NWNmOTkyOTQ2OGY4MTlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCkBAIC00
NTksNyArNDU5LDcgQEAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBidWlsZFZhbHVlKGNvbnN0IFVD
aGFyKiBzdGFydCwgY29uc3QgVUNoYXIqIGVuZCwgY29uc3QgVUMKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogICAgICp2YWx1ZVRva2VuRW5kID0gdG9rZW5FbmQ7Ci0gICAgcmV0dXJu
IHJlc3VsdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogaW5saW5lIGJvb2wg
ZXNjYXBlQ2hhcihVQ2hhciBjLCBTdHJpbmdCdWlsZGVyJiBkc3QpCkBAIC01NTEsMTEgKzU1MSwx
MSBAQCBib29sIEluc3BlY3RvclZhbHVlOjpwYXJzZUpTT04oY29uc3QgU3RyaW5nJiBqc29uSW5w
dXQsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4mCiAgICAgY29uc3QgVUNoYXIqIHN0YXJ0ID0gY2hh
cmFjdGVyczsKICAgICBjb25zdCBVQ2hhciogZW5kID0gc3RhcnQgKyBqc29uSW5wdXQubGVuZ3Ro
KCk7CiAgICAgY29uc3QgVUNoYXIqIHRva2VuRW5kOwotICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1
ZT4gcmVzdWx0ID0gYnVpbGRWYWx1ZShzdGFydCwgZW5kLCAmdG9rZW5FbmQsIDApOworICAgIGF1
dG8gcmVzdWx0ID0gYnVpbGRWYWx1ZShzdGFydCwgZW5kLCAmdG9rZW5FbmQsIDApOwogICAgIGlm
ICghcmVzdWx0IHx8IHRva2VuRW5kICE9IGVuZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgb3V0cHV0ID0gcmVzdWx0LnJlbGVhc2UoKTsKKyAgICBvdXRwdXQgPSBXVEZNb3ZlKHJlc3Vs
dCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcAppbmRleCAzMTJlNWQ5
YjRiMWNmODllNzc0MGZhZDY2NTI3MjEzZDBiZTNlNDFmLi5mNjRiYWYzZDMwNzc3YmY3OTZmMzU3
NGFmYjRkODg4MWFiYWUwNTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwCkBAIC0xMjEsNyArMTIxLDcg
QEAgdm9pZCBJbnNwZWN0b3JBZ2VudDo6YWN0aXZhdGVFeHRyYURvbWFpbihjb25zdCBTdHJpbmcm
IGRvbWFpbk5hbWUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWY8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gZG9tYWluTmFtZXMgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICBhdXRvIGRvbWFpbk5hbWVzID0gSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgZG9tYWluTmFt
ZXMtPmFkZEl0ZW0oZG9tYWluTmFtZSk7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmFjdGl2
YXRlRXh0cmFEb21haW5zKFdURk1vdmUoZG9tYWluTmFtZXMpKTsKIH0KQEAgLTEzMSwxNCArMTMx
LDE0IEBAIHZvaWQgSW5zcGVjdG9yQWdlbnQ6OmFjdGl2YXRlRXh0cmFEb21haW5zKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBleHRyYURvbWFpbnMpCiAgICAgaWYgKGV4dHJhRG9tYWlucy5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxTdHJpbmc+PiBkb21haW5OYW1lcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0
cmluZz46OmNyZWF0ZSgpOworICAgIGF1dG8gZG9tYWluTmFtZXMgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKICAgICBmb3IgKGF1dG8gZG9tYWluTmFtZSA6
IGV4dHJhRG9tYWlucykKICAgICAgICAgZG9tYWluTmFtZXMtPmFkZEl0ZW0oZG9tYWluTmFtZSk7
CiAKICAgICBpZiAoIW1fZW5hYmxlZCkKLSAgICAgICAgbV9wZW5kaW5nRXh0cmFEb21haW5zRGF0
YSA9IGRvbWFpbk5hbWVzLnJlbGVhc2UoKTsKKyAgICAgICAgbV9wZW5kaW5nRXh0cmFEb21haW5z
RGF0YSA9IFdURk1vdmUoZG9tYWluTmFtZXMpOwogICAgIGVsc2UKLSAgICAgICAgbV9mcm9udGVu
ZERpc3BhdGNoZXItPmFjdGl2YXRlRXh0cmFEb21haW5zKGRvbWFpbk5hbWVzLnJlbGVhc2UoKSk7
CisgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5hY3RpdmF0ZUV4dHJhRG9tYWlucyhXVEZN
b3ZlKGRvbWFpbk5hbWVzKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50LmNwcAppbmRleCA3M2NmYjZmMzczYjJmNWQ4ZWQxYTNiMDM2NGFmMGE2OGM1NTYxZDc3Li4x
MzRlMjI0Zjc0MGE2NTAyYmYxNzIwZTQ5NjhmNTEzZjg5YjUwOWE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtNzUwLDcgKzc1MCw3IEBAIHZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvblByb2JlKEpTQzo6RXhlY1N0YXRlJiBzY3JpcHRT
dGF0ZSwKICAgICAgICAgLnNldEJhdGNoSWQoYmF0Y2hJZCkKICAgICAgICAgLnNldFNhbXBsZUlk
KHNhbXBsZUlkKQogICAgICAgICAuc2V0VGltZXN0YW1wKG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
Lmluc3BlY3RvckVudmlyb25tZW50KCkuZXhlY3V0aW9uU3RvcHdhdGNoKCktPmVsYXBzZWRUaW1l
KCkpCi0gICAgICAgIC5zZXRQYXlsb2FkKHBheWxvYWQucmVsZWFzZSgpKQorICAgICAgICAuc2V0
UGF5bG9hZChXVEZNb3ZlKHBheWxvYWQpKQogICAgICAgICAucmVsZWFzZSgpOwogICAgIG1fZnJv
bnRlbmREaXNwYXRjaGVyLT5kaWRTYW1wbGVQcm9iZShXVEZNb3ZlKHJlc3VsdCkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5z
cGVjdG9yLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3Rl
SW5zcGVjdG9yLm1tCmluZGV4IDcyYmZjNmU4NzgwZjc5OTAwOGY4MzJiZWE3Y2EzZWQ3OWVhZWEy
YWUuLmYzYWVlMWM5NzQxMTE0YWJjZjhhYjBkNjZkODdhY2JmOWVhMWNjNWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5t
bQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNw
ZWN0b3IubW0KQEAgLTYyOSw3ICs2MjksNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2
ZWRTZXR1cE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKIAogICAgIC8vIEF0dGVtcHQg
dG8gY3JlYXRlIGEgY29ubmVjdGlvbi4gVGhpcyBtYXkgZmFpbCBpZiB0aGUgcGFnZSBhbHJlYWR5
IGhhcyBhbiBpbnNwZWN0b3Igb3IgaWYgaXQgZGlzYWxsb3dzIGluc3BlY3Rpb24uCiAgICAgUmVt
b3RlQ29udHJvbGxhYmxlVGFyZ2V0KiB0YXJnZXQgPSBmaW5kUmVzdWx0LT52YWx1ZTsKLSAgICBS
ZWZQdHI8UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0PiBjb25uZWN0aW9uVG9UYXJnZXQgPSBhZG9w
dFJlZihuZXcgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0KHRhcmdldCwgY29ubmVjdGlvbklkZW50
aWZpZXIsIHNlbmRlcikpOworICAgIGF1dG8gY29ubmVjdGlvblRvVGFyZ2V0ID0gYWRvcHRSZWYo
Km5ldyBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQodGFyZ2V0LCBjb25uZWN0aW9uSWRlbnRpZmll
ciwgc2VuZGVyKSk7CiAKICAgICBpZiAoaXM8UmVtb3RlSW5zcGVjdGlvblRhcmdldD4odGFyZ2V0
KSkgewogICAgICAgICBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbiA9IG1fYXV0b21hdGljSW5z
cGVjdGlvbkNhbmRpZGF0ZVRhcmdldElkZW50aWZpZXIgPT0gdGFyZ2V0LT50YXJnZXRJZGVudGlm
aWVyKCk7CkBAIC02MzksMTQgKzYzOSwxNCBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2
ZWRTZXR1cE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKICAgICAgICAgICAgIGNvbm5l
Y3Rpb25Ub1RhcmdldC0+Y2xvc2UoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQot
ICAgICAgICBtX3RhcmdldENvbm5lY3Rpb25NYXAuc2V0KHRhcmdldElkZW50aWZpZXIsIGNvbm5l
Y3Rpb25Ub1RhcmdldC5yZWxlYXNlKCkpOworICAgICAgICBtX3RhcmdldENvbm5lY3Rpb25NYXAu
c2V0KHRhcmdldElkZW50aWZpZXIsIFdURk1vdmUoY29ubmVjdGlvblRvVGFyZ2V0KSk7CiAgICAg
ICAgIHVwZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbigpOwogICAgIH0gZWxzZSBpZiAoaXM8UmVt
b3RlQXV0b21hdGlvblRhcmdldD4odGFyZ2V0KSkgewogICAgICAgICBpZiAoIWNvbm5lY3Rpb25U
b1RhcmdldC0+c2V0dXAoKSkgewogICAgICAgICAgICAgY29ubmVjdGlvblRvVGFyZ2V0LT5jbG9z
ZSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIG1fdGFyZ2V0Q29u
bmVjdGlvbk1hcC5zZXQodGFyZ2V0SWRlbnRpZmllciwgY29ubmVjdGlvblRvVGFyZ2V0LnJlbGVh
c2UoKSk7CisgICAgICAgIG1fdGFyZ2V0Q29ubmVjdGlvbk1hcC5zZXQodGFyZ2V0SWRlbnRpZmll
ciwgV1RGTW92ZShjb25uZWN0aW9uVG9UYXJnZXQpKTsKICAgICAgICAgdXBkYXRlSGFzQWN0aXZl
RGVidWdTZXNzaW9uKCk7CiAgICAgfSBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggODI5ODQ1MzNhNjZiNzVm
N2E3YWIzZjk1OWFiMDAyNTcxNGNhMzI2NS4uMDA4OGM0ZjJiMmRkYmY2MGI4MWFkNzA4YjIyMTgz
Njc2Y2I0YzkwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC05NDMs
NyArOTQzLDcgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKAogICAgICAgICBwYXRjaEJ1ZmZl
ci5saW5rKGRvbmUsIGNhbGxMaW5rSW5mby5ob3RQYXRoT3RoZXIoKS5sYWJlbEF0T2Zmc2V0KDAp
KTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKHNsb3csIENvZGVMb2NhdGlvbkxhYmVsKHZtLT5nZXRD
VElTdHViKGxpbmtQb2x5bW9ycGhpY0NhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpKSk7CiAgICAg
Ci0gICAgUmVmUHRyPFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lPiBzdHViUm91dGluZSA9IGFk
b3B0UmVmKG5ldyBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSgKKyAgICBhdXRvIHN0dWJSb3V0
aW5lID0gYWRvcHRSZWYoKm5ldyBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSgKICAgICAgICAg
RklOQUxJWkVfQ09ERV9GT1IoCiAgICAgICAgICAgICBjYWxsZXJDb2RlQmxvY2ssIHBhdGNoQnVm
ZmVyLAogICAgICAgICAgICAgKCJQb2x5bW9ycGhpYyBjYWxsIHN0dWIgZm9yICVzLCByZXR1cm4g
cG9pbnQgJXAsIHRhcmdldHMgJXMiLApAQCAtOTYyLDcgKzk2Miw3IEBAIHZvaWQgbGlua1BvbHlt
b3JwaGljQ2FsbCgKICAgICAKICAgICAvLyBJZiB0aGVyZSBoYWQgYmVlbiBhIHByZXZpb3VzIHN0
dWIgcm91dGluZSwgdGhhdCBvbmUgd2lsbCBkaWUgYXMgc29vbiBhcyB0aGUgR0MgcnVucyBhbmQg
c2VlcwogICAgIC8vIHRoYXQgaXQncyBubyBsb25nZXIgb24gc3RhY2suCi0gICAgY2FsbExpbmtJ
bmZvLnNldFN0dWIoc3R1YlJvdXRpbmUucmVsZWFzZSgpKTsKKyAgICBjYWxsTGlua0luZm8uc2V0
U3R1YihXVEZNb3ZlKHN0dWJSb3V0aW5lKSk7CiAgICAgCiAgICAgLy8gVGhlIGNhbGwgbGluayBp
bmZvIG5vIGxvbmdlciBoYXMgYSBjYWxsIGNhY2hlIGFwYXJ0IGZyb20gdGhlIGp1bXAgdG8gdGhl
IHBvbHltb3JwaGljIGNhbGwKICAgICAvLyBzdHViLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmlu
ZGV4IGE4NzM3ZWVlMTgwNmNhOGQzODY0MDkxMTZmMmQyZGQzNjYxZTM2ODguLjE0MjlkMDU0Y2I0
ZWQxMWM2MTVmNjk2ZDZjOTY2NGM0MjJhMjY4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgK
QEAgLTQ1LDcgKzQ1LDcgQEAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4g
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUodW4KICAgICBhdXRvIGJ1ZmZl
ciA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSkpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICByZXR1cm4gY3JlYXRlKGJ1ZmZlci5yZWxlYXNlKCksIDAsIGxlbmd0aCk7CisgICAgcmV0dXJu
IGNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGxlbmd0aCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIEFkYXB0b3I+CkBAIC02Nyw3ICs2Nyw3IEBAIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBHZW5lcmljVHlwZWRBcnJheVZpZXcoYnVmZmVyLnJlbGVhc2UoKSwgYnl0ZU9mZnNldCwgbGVu
Z3RoKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHZW5lcmljVHlwZWRBcnJheVZpZXcoV1RG
TW92ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgQWRhcHRvcj4KQEAgLTc4LDcgKzc4LDcgQEAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKICAgICAgICAgQXJyYXlC
dWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRh
cHRvcjo6VHlwZSkpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICByZXR1cm4gY3JlYXRlKGJ1ZmZlci5yZWxlYXNlKCksIDAsIGxlbmd0aCk7CisgICAgcmV0
dXJuIGNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGxlbmd0aCk7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIEFkYXB0b3I+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmNwcAppbmRleCAyYmUwM2Y4OGI5YWU1ODU0
YTRkMDQ0Zjk1MWUwMDJhOWZkMzg4ODU5Li42YmM4ZTQzNzljNTllZmMwZmM1NDc1YjllNjU4NGUx
OGNkZGU5MjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0QXJyYXlCdWZmZXIoRXhlY1N0
YXRlKiBleGVjKQogICAgIFN0cnVjdHVyZSogYXJyYXlCdWZmZXJTdHJ1Y3R1cmUgPSBJbnRlcm5h
bEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBleGVjLT5uZXdUYXJnZXQo
KSwgY29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLT5hcnJheUJ1ZmZlclN0cnVjdHVyZSgpKTsK
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSlNWYWx1ZSgpKTsKLSAgICBKU0FycmF5QnVmZmVyKiByZXN1bHQgPSBKU0FycmF5QnVm
ZmVyOjpjcmVhdGUoZXhlYy0+dm0oKSwgYXJyYXlCdWZmZXJTdHJ1Y3R1cmUsIGJ1ZmZlci5yZWxl
YXNlKCkpOworICAgIEpTQXJyYXlCdWZmZXIqIHJlc3VsdCA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0
ZShleGVjLT52bSgpLCBhcnJheUJ1ZmZlclN0cnVjdHVyZSwgV1RGTW92ZShidWZmZXIpKTsKICAg
ICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaAppbmRleCBhODA0Yjll
ZGE3Yzg3YWJhNDljYjU2NDEzODFhMzEyZWJlZGFmM2IzLi4wNGMxZWQxM2FiMTk5Yzk3YWMwMTQ2
MGUxNTVkNzAzODE0NzU1MDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5TmFtZUFycmF5LmgKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCBzZXREYXRhKFBhc3NSZWZQdHI8UHJvcGVydHlOYW1lQXJyYXlEYXRhPiBkYXRhKSB7IG1f
ZGF0YSA9IGRhdGE7IH0KICAgICBQcm9wZXJ0eU5hbWVBcnJheURhdGEqIGRhdGEoKSB7IHJldHVy
biBtX2RhdGEuZ2V0KCk7IH0KLSAgICBQYXNzUmVmUHRyPFByb3BlcnR5TmFtZUFycmF5RGF0YT4g
cmVsZWFzZURhdGEoKSB7IHJldHVybiBtX2RhdGEucmVsZWFzZSgpOyB9CisgICAgUGFzc1JlZlB0
cjxQcm9wZXJ0eU5hbWVBcnJheURhdGE+IHJlbGVhc2VEYXRhKCkgeyByZXR1cm4gV1RGTW92ZSht
X2RhdGEpOyB9CiAKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZXNlIGZ1bmN0aW9ucy4KICAgICBi
b29sIGNhbkFkZEtub3duVW5pcXVlRm9yU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
LT5wcm9wZXJ0eU5hbWVWZWN0b3IoKS5pc0VtcHR5KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IDZkN2ZiODE3Yjk1Zjk3YjRmYzQ1ZDA3MmEy
OWRkOTEyMTA3MjlhOWMuLjI3ZmZhNTE3ODA3NjhjNmM0MTczM2RiNjA4NTdmODcyZDdlNmU4NWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtMTE5
NywxNiArMTE5NywxNiBAQCBQYXNzUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiBTdHJ1Y3R1cmU6OnRv
U3RydWN0dXJlU2hhcGUoSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgY3VyU2hhcGUtPm1hcmtBc0Zp
bmFsKCk7CiAKICAgICAgICAgaWYgKGN1clN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlU3RydWN0
dXJlKCkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gbmV3U2hhcGUgPSBT
dHJ1Y3R1cmVTaGFwZTo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICBjdXJTaGFwZS0+c2V0UHJvdG8o
bmV3U2hhcGUpOwotICAgICAgICAgICAgY3VyU2hhcGUgPSBuZXdTaGFwZS5yZWxlYXNlKCk7Cisg
ICAgICAgICAgICBhdXRvIG5ld1NoYXBlID0gU3RydWN0dXJlU2hhcGU6OmNyZWF0ZSgpOworICAg
ICAgICAgICAgY3VyU2hhcGUtPnNldFByb3RvKG5ld1NoYXBlLnB0cigpKTsKKyAgICAgICAgICAg
IGN1clNoYXBlID0gV1RGTW92ZShuZXdTaGFwZSk7CiAgICAgICAgICAgICBjdXJWYWx1ZSA9IGN1
clN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlKCk7CiAgICAgICAgIH0KIAogICAgICAgICBjdXJT
dHJ1Y3R1cmUgPSBjdXJTdHJ1Y3R1cmUtPnN0b3JlZFByb3RvdHlwZVN0cnVjdHVyZSgpOwogICAg
IH0KICAgICAKLSAgICByZXR1cm4gYmFzZVNoYXBlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RG
TW92ZShiYXNlU2hhcGUpOwogfQogCiBib29sIFN0cnVjdHVyZTo6Y2FuVXNlRm9yQWxsb2NhdGlv
bnNPZihTdHJ1Y3R1cmUqIG90aGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVHlwZVNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBl
U2V0LmNwcAppbmRleCAwNjdmMTI2YjYwZmFlOTg1MmZmZjVhNjlhNDQ1NDQ2ODkzZWFkMGRiLi41
OGNlMmMzZDE3M2E4ZTI2YjgyYzY2YWNhNTU2NjllZDU5MDJjODA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcApAQCAtNTQ4LDcgKzU0OCw3IEBAIFBhc3NSZWZQ
dHI8U3RydWN0dXJlU2hhcGU+IFN0cnVjdHVyZVNoYXBlOjptZXJnZShjb25zdCBQYXNzUmVmUHRy
PFN0cnVjdHVyZVNoYXBlCiAgICAgUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiBiID0gcHJwQjsKICAg
ICBBU1NFUlQoYS0+aGFzU2FtZVByb3RvdHlwZUNoYWluKGIpKTsKIAotICAgIFJlZlB0cjxTdHJ1
Y3R1cmVTaGFwZT4gbWVyZ2VkID0gU3RydWN0dXJlU2hhcGU6OmNyZWF0ZSgpOworICAgIGF1dG8g
bWVyZ2VkID0gU3RydWN0dXJlU2hhcGU6OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byBmaWVsZCA6
IGEtPm1fZmllbGRzKSB7CiAgICAgICAgIGlmIChiLT5tX2ZpZWxkcy5jb250YWlucyhmaWVsZCkp
CiAgICAgICAgICAgICBtZXJnZWQtPm1fZmllbGRzLmFkZChmaWVsZCk7CkBAIC01NzgsNyArNTc4
LDcgQEAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gU3RydWN0dXJlU2hhcGU6Om1lcmdlKGNv
bnN0IFBhc3NSZWZQdHI8U3RydWN0dXJlU2hhcGUKIAogICAgIG1lcmdlZC0+bWFya0FzRmluYWwo
KTsKIAotICAgIHJldHVybiBtZXJnZWQucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKG1l
cmdlZCk7CiB9CiAKIHZvaWQgU3RydWN0dXJlU2hhcGU6OmVudGVyRGljdGlvbmFyeU1vZGUoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5jdGlvbk92ZXJyaWRlcy5jcHAK
aW5kZXggMmUzMjhjMTY3NGIyNzE3NmI3ODFkMTE4NjRhYjliMDEzOTBkMDAzMy4uOWFlM2E4N2Qy
YzgyZDBlODllOGZkYjczNDlkNjc2Zjg2MDY3NGJiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAg
c3RhdGljIHZvaWQgaW5pdGlhbGl6ZU92ZXJyaWRlSW5mbyhjb25zdCBTb3VyY2VDb2RlJiBvcmln
Q29kZSwgY29uc3QgU3RyaW5nJiBuZXcKICAgICBuZXdQcm92aWRlclN0ci5hcHBlbmQob3JpZ0hl
YWRlcik7CiAgICAgbmV3UHJvdmlkZXJTdHIuYXBwZW5kKG5ld0JvZHkpOwogCi0gICAgUmVmUHRy
PFNvdXJjZVByb3ZpZGVyPiBuZXdQcm92aWRlciA9IFN0cmluZ1NvdXJjZVByb3ZpZGVyOjpjcmVh
dGUobmV3UHJvdmlkZXJTdHIsICI8b3ZlcnJpZGRlbj4iKTsKKyAgICBhdXRvIG5ld1Byb3ZpZGVy
ID0gU3RyaW5nU291cmNlUHJvdmlkZXI6OmNyZWF0ZShuZXdQcm92aWRlclN0ciwgIjxvdmVycmlk
ZGVuPiIpOwogCiAgICAgaW5mby5maXJzdExpbmUgPSAxOwogICAgIGluZm8ubGluZUNvdW50ID0g
MTsgLy8gRmFraW5nIGl0LiBUaGlzIGRvZXNuJ3QgcmVhbGx5IG1hdHRlciBmb3Igbm93LgpAQCAt
MTI3LDcgKzEyNyw3IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVPdmVycmlkZUluZm8oY29uc3Qg
U291cmNlQ29kZSYgb3JpZ0NvZGUsIGNvbnN0IFN0cmluZyYgbmV3CiAgICAgaW5mby50eXBlUHJv
ZmlsaW5nRW5kT2Zmc2V0ID0gbmV3UHJvdmlkZXJTdHIubGVuZ3RoKCkgLSAxOwogCiAgICAgaW5m
by5zb3VyY2VDb2RlID0KLSAgICAgICAgU291cmNlQ29kZShuZXdQcm92aWRlci5yZWxlYXNlKCks
IGluZm8udHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0LCBpbmZvLnR5cGVQcm9maWxpbmdFbmRPZmZz
ZXQgKyAxLCAxLCAxKTsKKyAgICAgICAgU291cmNlQ29kZShXVEZNb3ZlKG5ld1Byb3ZpZGVyKSwg
aW5mby50eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQsIGluZm8udHlwZVByb2ZpbGluZ0VuZE9mZnNl
dCArIDEsIDEsIDEpOwogfQogICAgIAogYm9vbCBGdW5jdGlvbk92ZXJyaWRlczo6aW5pdGlhbGl6
ZU92ZXJyaWRlRm9yKGNvbnN0IFNvdXJjZUNvZGUmIG9yaWdDb2RlLCBGdW5jdGlvbk92ZXJyaWRl
czo6T3ZlcnJpZGVJbmZvJiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKaW5kZXggZWI1MjQ3YTlmMDdkOWJiZDhjODZi
OGY1NjlmODQ2NDlmYTU2YzE4YS4uZGIzYjk1NDI4ZThlN2ZmMTgxYzVlZTBlM2UyM2UyNDE2NjQy
N2RiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3Vy
Y2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291
cmNlQnVmZmVyLmNwcApAQCAtNjYzLDcgKzY2Myw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFRpbWVS
YW5nZXM+IHJlbW92ZVNhbXBsZXNGcm9tVHJhY2tCdWZmZXIoY29uc3QgRGVjb2RlT3JkZXJTYW1w
CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CiAjZW5kaWYKIAotICAgIFJlZlB0cjxUaW1lUmFu
Z2VzPiBlcmFzZWRSYW5nZXMgPSBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKKyAgICBhdXRvIGVyYXNl
ZFJhbmdlcyA9IFRpbWVSYW5nZXM6OmNyZWF0ZSgpOwogICAgIE1lZGlhVGltZSBtaWNyb3NlY29u
ZCgxLCAxMDAwMDAwKTsKICAgICBmb3IgKGF1dG8gc2FtcGxlSXQgOiBzYW1wbGVzKSB7CiAgICAg
ICAgIGNvbnN0IERlY29kZU9yZGVyU2FtcGxlTWFwOjpLZXlUeXBlJiBkZWNvZGVLZXkgPSBzYW1w
bGVJdC5maXJzdDsKQEAgLTY5OCw3ICs2OTgsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxUaW1lUmFu
Z2VzPiByZW1vdmVTYW1wbGVzRnJvbVRyYWNrQnVmZmVyKGNvbnN0IERlY29kZU9yZGVyU2FtcAog
ICAgICAgICBMT0coTWVkaWFTb3VyY2UsICJTb3VyY2VCdWZmZXI6OiVzKCVwKSByZW1vdmVkICV6
dSBieXRlcywgc3RhcnQoJWxmKSwgZW5kKCVsZikiLCBsb2dQcmVmaXgsIGJ1ZmZlciwgYnl0ZXNS
ZW1vdmVkLCBlYXJsaWVzdFNhbXBsZSwgbGF0ZXN0U2FtcGxlKTsKICNlbmRpZgogCi0gICAgcmV0
dXJuIGVyYXNlZFJhbmdlcy5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1vdmUoZXJhc2VkUmFu
Z2VzKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXI6OnJlbW92ZUNvZGVkRnJhbWVzKGNvbnN0IE1l
ZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kKQpAQCAtMTc1MSw3ICsxNzUxLDcg
QEAgdm9pZCBTb3VyY2VCdWZmZXI6OnByb3ZpZGVNZWRpYURhdGEoVHJhY2tCdWZmZXImIHRyYWNr
QnVmZmVyLCBBdG9taWNTdHJpbmcgdHJhY2sKICAgICAgICAgLy8gRklYTUUocmRhcjovL3Byb2Js
ZW0vMjA2MzU5NjkpOiBSZW1vdmUgdGhpcyByZS1lbnRyYW5jeSBwcm90ZWN0aW9uIHdoZW4gdGhl
IGFmb3JlbWVudGlvbmVkIHJhZGFyIGlzIHJlc29sdmVkOyBwcm90ZWN0aW5nCiAgICAgICAgIC8v
IGFnYWluc3QgcmUtZW50cmFuY3kgaW50cm9kdWNlcyBhIHNtYWxsIGluZWZmaWNlbmN5IHdoZW4g
cmVtb3ZpbmcgYXBwZW5kZWQgc2FtcGxlcyBmcm9tIHRoZSBkZWNvZGUgcXVldWUgb25lIGF0IGEg
dGltZQogICAgICAgICAvLyByYXRoZXIgdGhhbiB3aGVuIGFsbCBzYW1wbGVzIGhhdmUgYmVlbiBl
bnF1ZXVlZC4KLSAgICAgICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBzYW1wbGUgPSB0cmFja0J1ZmZl
ci5kZWNvZGVRdWV1ZS5iZWdpbigpLT5zZWNvbmQ7CisgICAgICAgIGF1dG8gc2FtcGxlID0gdHJh
Y2tCdWZmZXIuZGVjb2RlUXVldWUuYmVnaW4oKS0+c2Vjb25kOwogICAgICAgICB0cmFja0J1ZmZl
ci5kZWNvZGVRdWV1ZS5lcmFzZSh0cmFja0J1ZmZlci5kZWNvZGVRdWV1ZS5iZWdpbigpKTsKIAog
ICAgICAgICAvLyBEbyBub3QgZW5xdWV1ZSBzYW1wbGVzIHNwYW5uaW5nIGEgc2lnbmlmaWNhbnQg
dW5idWZmZXJlZCBnYXAuCkBAIC0xNzY3LDcgKzE3NjcsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6
cHJvdmlkZU1lZGlhRGF0YShUcmFja0J1ZmZlciYgdHJhY2tCdWZmZXIsIEF0b21pY1N0cmluZyB0
cmFjawogCiAgICAgICAgIHRyYWNrQnVmZmVyLmxhc3RFbnF1ZXVlZFByZXNlbnRhdGlvblRpbWUg
PSBzYW1wbGUtPnByZXNlbnRhdGlvblRpbWUoKTsKICAgICAgICAgdHJhY2tCdWZmZXIubGFzdEVu
cXVldWVkRGVjb2RlRW5kVGltZSA9IHNhbXBsZS0+ZGVjb2RlVGltZSgpICsgc2FtcGxlLT5kdXJh
dGlvbigpOwotICAgICAgICBtX3ByaXZhdGUtPmVucXVldWVTYW1wbGUoc2FtcGxlLnJlbGVhc2Uo
KSwgdHJhY2tJRCk7CisgICAgICAgIG1fcHJpdmF0ZS0+ZW5xdWV1ZVNhbXBsZShXVEZNb3ZlKHNh
bXBsZSksIHRyYWNrSUQpOwogI2lmICFMT0dfRElTQUJMRUQKICAgICAgICAgKytlbnF1ZXVlZFNh
bXBsZXM7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCmluZGV4IDllNWE5YzI0NGVmNjNhMTdiZmE4ZDlj
N2NjZTVjNjEzYWVhMzlhYzYuLmI5NmI3YTBiMzUxOTExYTg3NjlhOTUyZDI5ZmU4ZWFiMGIxZTIy
ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1l
ZGlhUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9V
c2VyTWVkaWFSZXF1ZXN0LmNwcApAQCAtODAsMTUgKzgwLDE1IEBAIHZvaWQgVXNlck1lZGlhUmVx
dWVzdDo6c3RhcnQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25z
LCBNZWRpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8TWVkaWFDb25zdHJh
aW50cz4gYXVkaW9Db25zdHJhaW50cyA9IHBhcnNlT3B0aW9ucyhvcHRpb25zLCBBdG9taWNTdHJp
bmcoImF1ZGlvIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIFJl
ZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiB2aWRlb0NvbnN0cmFpbnRzID0gcGFyc2VPcHRpb25zKG9w
dGlvbnMsIEF0b21pY1N0cmluZygidmlkZW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKSk7CisgICAgYXV0byBhdWRpb0NvbnN0cmFpbnRzID0gcGFyc2VPcHRpb25zKG9wdGlv
bnMsIEF0b21pY1N0cmluZygiYXVkaW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgYXV0byB2aWRlb0NvbnN0cmFpbnRzID0gcGFyc2VPcHRpb25zKG9wdGlvbnMs
IEF0b21pY1N0cmluZygidmlkZW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7CiAKICAgICBpZiAoIWF1ZGlvQ29uc3RyYWludHMgJiYgIXZpZGVvQ29uc3RyYWludHMpIHsK
ICAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIFJlZjxVc2VyTWVkaWFSZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHRSZWYoKm5ldyBVc2Vy
TWVkaWFSZXF1ZXN0KGRvY3VtZW50LCB1c2VyTWVkaWEsIGF1ZGlvQ29uc3RyYWludHMucmVsZWFz
ZSgpLCB2aWRlb0NvbnN0cmFpbnRzLnJlbGVhc2UoKSwgV1RGTW92ZShwcm9taXNlKSkpOworICAg
IGF1dG8gcmVxdWVzdCA9IGFkb3B0UmVmKCpuZXcgVXNlck1lZGlhUmVxdWVzdChkb2N1bWVudCwg
dXNlck1lZGlhLCBXVEZNb3ZlKGF1ZGlvQ29uc3RyYWludHMpLCBXVEZNb3ZlKHZpZGVvQ29uc3Ry
YWludHMpLCBXVEZNb3ZlKHByb21pc2UpKSk7CiAgICAgcmVxdWVzdC0+c3RhcnQoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAppbmRl
eCBkYTM4ZTFjZmY4OTE2MDUwMDlhZjc1NWM0NzJkZDBlNDQ3YWYxNTYzLi5iNWZkZmFlZjBlYTI1
YjhhZWM2ZDkyMTdkZDJjZDVkZTcyOTc2YjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcApAQCAtMjQ2LDcgKzI0Niw3IEBAIERhdGFiYXNl
Ojp+RGF0YWJhc2UoKQogICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRl
eHRUaHJlYWQoKSkgewogICAgICAgICAvLyBHcmFiIGEgcG9pbnRlciB0byB0aGUgc2NyaXB0IGV4
ZWN1dGlvbiBoZXJlIGJlY2F1c2Ugd2UncmUgcmVsZWFzaW5nIGl0IHdoZW4gd2UgcGFzcyBpdCB0
bwogICAgICAgICAvLyBEZXJlZkNvbnRleHRUYXNrOjpjcmVhdGUuCi0gICAgICAgIFBhc3NSZWZQ
dHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gcGFzc2VkQ29udGV4dCA9IG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5yZWxlYXNlKCk7CisgICAgICAgIFBhc3NSZWZQdHI8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dD4gcGFzc2VkQ29udGV4dCA9IFdURk1vdmUobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
KTsKICAgICAgICAgcGFzc2VkQ29udGV4dC0+cG9zdFRhc2soe1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2s6OkNsZWFudXBUYXNrLCBbcGFzc2VkQ29udGV4dF0gKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgJmNv
bnRleHQgPT0gcGFzc2VkQ29udGV4dCk7CiAgICAgICAgICAgICBSZWZQdHI8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dD4gc2NyaXB0RXhlY3V0aW9uQ29udGV4dChwYXNzZWRDb250ZXh0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMQ2FsbGJhY2tXcmFw
cGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTENhbGxiYWNrV3Jh
cHBlci5oCmluZGV4IGNhNjY1ODEwYmE2MGQxNmNjNzQxZTE4ZGU0NTg2Y2U4NDcwNDkyN2IuLmI2
NDU0ODIwZjczNzU2MWYzMGJjYWE1MGIwYTYyODFiMjM5ZGNmODAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMQ2FsbGJhY2tXcmFwcGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxDYWxsYmFja1dyYXBwZXIuaApA
QCAtNjgsOCArNjgsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0ID0gbnVsbHB0cjsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0UHRyID0gbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LnJlbGVhc2UoKS5sZWFrUmVmKCk7Ci0gICAgICAgICAgICBjYWxsYmFjayA9
IG1fY2FsbGJhY2sucmVsZWFzZSgpLmxlYWtSZWYoKTsKKyAgICAgICAgICAgIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRQdHIgPSBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQubGVha1JlZigpOworICAg
ICAgICAgICAgY2FsbGJhY2sgPSBtX2NhbGxiYWNrLmxlYWtSZWYoKTsKICAgICAgICAgfQogICAg
ICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0UHRyLT5wb3N0VGFzayh7CiAgICAgICAgICAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrOjpDbGVhbnVwVGFzaywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCA4ZmI0ZTk5Y2E2
NTg2NjRiNGRhZWNkNTdkNjMyNDBjMmU3MjdiMTk2Li4zMzBkNmIyODE5NGZiNmNkMjc4OTU2NjFk
YTE5OWM0YTk2NjY0ZGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uY3BwCkBAIC01MzksOSArNTM5LDcgQEAgc3RhdGljIEpTVmFsdWUgaGFu
ZGxlUG9zdE1lc3NhZ2UoRE9NV2luZG93JiBpbXBsLCBFeGVjU3RhdGUmIHN0YXRlKQogICAgIGlm
IChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAK
LSAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlID0gU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpjcmVhdGUoJnN0YXRlLCBzdGF0ZS5hcmd1bWVudCgwKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmbWVzc2FnZVBvcnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhcnJheUJ1ZmZlcnMpOworICAg
IGF1dG8gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCZzdGF0ZSwgc3Rh
dGUuYXJndW1lbnQoMCksICZtZXNzYWdlUG9ydHMsICZhcnJheUJ1ZmZlcnMpOwogCiAgICAgaWYg
KHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAg
LTU1MSw3ICs1NDksNyBAQCBzdGF0aWMgSlNWYWx1ZSBoYW5kbGVQb3N0TWVzc2FnZShET01XaW5k
b3cmIGltcGwsIEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbC5wb3N0TWVzc2FnZShtZXNz
YWdlLnJlbGVhc2UoKSwgJm1lc3NhZ2VQb3J0cywgdGFyZ2V0T3JpZ2luLCBjYWxsZXJET01XaW5k
b3coJnN0YXRlKSwgZWMpOworICAgIGltcGwucG9zdE1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSwg
Jm1lc3NhZ2VQb3J0cywgdGFyZ2V0T3JpZ2luLCBjYWxsZXJET01XaW5kb3coJnN0YXRlKSwgZWMp
OwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIaXN0b3J5
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3RvbS5j
cHAKaW5kZXggZjQ5Nzk2NWFlNTZkYjk0NzEyNDhmMGY5MDQ2YWY0M2I3NmI0MmRhMy4uN2E0ZTg2
ZWZhNzBlOGMxZTUwYWFmZmU3OGQ2OWE1ZDhmMzYwODQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0b20uY3BwCkBAIC01NSw3ICs1NSw3IEBAIEpTVmFs
dWUgSlNIaXN0b3J5OjpzdGF0ZShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogCiBKU1ZhbHVlIEpT
SGlzdG9yeTo6cHVzaFN0YXRlKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gaGlzdG9yeVN0YXRlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpj
cmVhdGUoJnN0YXRlLCBzdGF0ZS5hcmd1bWVudCgwKSwgMCwgMCk7CisgICAgYXV0byBoaXN0b3J5
U3RhdGUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgmc3RhdGUsIHN0YXRlLmFyZ3Vt
ZW50KDApLCAwLCAwKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwogCkBAIC03MSw3ICs3MSw3IEBAIEpTVmFsdWUgSlNIaXN0b3J5
OjpwdXNoU3RhdGUoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICB9CiAKICAgICBFeGNlcHRpb25Db2Rl
V2l0aE1lc3NhZ2UgZWM7Ci0gICAgd3JhcHBlZCgpLnN0YXRlT2JqZWN0QWRkZWQoaGlzdG9yeVN0
YXRlLnJlbGVhc2UoKSwgdGl0bGUsIHVybCwgSGlzdG9yeTo6U3RhdGVPYmplY3RUeXBlOjpQdXNo
LCBlYyk7CisgICAgd3JhcHBlZCgpLnN0YXRlT2JqZWN0QWRkZWQoV1RGTW92ZShoaXN0b3J5U3Rh
dGUpLCB0aXRsZSwgdXJsLCBIaXN0b3J5OjpTdGF0ZU9iamVjdFR5cGU6OlB1c2gsIGVjKTsKICAg
ICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAKICAgICBtX3N0YXRlLmNsZWFyKCk7CkBA
IC04MSw3ICs4MSw3IEBAIEpTVmFsdWUgSlNIaXN0b3J5OjpwdXNoU3RhdGUoRXhlY1N0YXRlJiBz
dGF0ZSkKIAogSlNWYWx1ZSBKU0hpc3Rvcnk6OnJlcGxhY2VTdGF0ZShFeGVjU3RhdGUmIHN0YXRl
KQogewotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGhpc3RvcnlTdGF0ZSA9IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCZzdGF0ZSwgc3RhdGUuYXJndW1lbnQoMCksIDAs
IDApOworICAgIGF1dG8gaGlzdG9yeVN0YXRlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVh
dGUoJnN0YXRlLCBzdGF0ZS5hcmd1bWVudCgwKSwgMCwgMCk7CiAgICAgaWYgKHN0YXRlLmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIApAQCAtOTcsNyArOTcs
NyBAQCBKU1ZhbHVlIEpTSGlzdG9yeTo6cmVwbGFjZVN0YXRlKEV4ZWNTdGF0ZSYgc3RhdGUpCiAg
ICAgfQogCiAgICAgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlIGVjOwotICAgIHdyYXBwZWQoKS5z
dGF0ZU9iamVjdEFkZGVkKGhpc3RvcnlTdGF0ZS5yZWxlYXNlKCksIHRpdGxlLCB1cmwsIEhpc3Rv
cnk6OlN0YXRlT2JqZWN0VHlwZTo6UmVwbGFjZSwgZWMpOworICAgIHdyYXBwZWQoKS5zdGF0ZU9i
amVjdEFkZGVkKFdURk1vdmUoaGlzdG9yeVN0YXRlKSwgdGl0bGUsIHVybCwgSGlzdG9yeTo6U3Rh
dGVPYmplY3RUeXBlOjpSZXBsYWNlLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwg
ZWMpOwogCiAgICAgbV9zdGF0ZS5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oCmluZGV4IGZjYTdhNDBhNzk5NzFmZjM4ZGQ5Y2Vk
NjJiZjU5Y2RjNDU1ZmM4MjUuLjA2Mjk0NmI3MzFjOWM1NTYyYzk1MmVhNjYxZGVmNmQ2OGI4OTVm
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRD
dXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3Vz
dG9tLmgKQEAgLTU2LDEyICs1NiwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIE1l
c3NhZ2VQb3J0QXJyYXkgcG9ydEFycmF5OwogICAgICAgICBBcnJheUJ1ZmZlckFycmF5IGFycmF5
QnVmZmVyQXJyYXk7CiAgICAgICAgIGZpbGxNZXNzYWdlUG9ydEFycmF5KHN0YXRlLCBzdGF0ZS5h
cmd1bWVudCgxKSwgcG9ydEFycmF5LCBhcnJheUJ1ZmZlckFycmF5KTsKLSAgICAgICAgUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
Y3JlYXRlKCZzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCksICZwb3J0QXJyYXksICZh
cnJheUJ1ZmZlckFycmF5KTsKKyAgICAgICAgYXV0byBtZXNzYWdlID0gU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpjcmVhdGUoJnN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSwgJnBvcnRB
cnJheSwgJmFycmF5QnVmZmVyQXJyYXkpOwogICAgICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9u
KCkpCiAgICAgICAgICAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOwogCiAgICAgICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICBpbXBsLT5wb3N0TWVzc2FnZShtZXNzYWdlLnJl
bGVhc2UoKSwgJnBvcnRBcnJheSwgZWMpOworICAgICAgICBpbXBsLT5wb3N0TWVzc2FnZShXVEZN
b3ZlKG1lc3NhZ2UpLCAmcG9ydEFycmF5LCBlYyk7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigm
c3RhdGUsIGVjKTsKICAgICAgICAgcmV0dXJuIEpTQzo6anNVbmRlZmluZWQoKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlck1hYy5tbQpp
bmRleCA1ZmM3MmRmMDVjN2I2ODE3ZjJiOWViODEzN2IyNDI5MjNmYzAyNGJlLi5hODQ3NDUyMjM2
YTVjOTU4MjY4ODM1NjAxZjRjY2Q3NTg3MWJkYmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJNYWMubW0KQEAgLTY2LDEwICs2NiwxMCBAQCBS
ZWZQdHI8SlNDOjpCaW5kaW5nczo6SW5zdGFuY2U+IFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVNj
cmlwdEluc3RhbmNlRm9yV2lkZ2V0KAogICAgIGlmICghd2lkZ2V0VmlldykKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8Um9vdE9iamVjdD4gcm9vdE9iamVjdCA9IGNyZWF0
ZVJvb3RPYmplY3Qod2lkZ2V0Vmlldyk7CisgICAgYXV0byByb290T2JqZWN0ID0gY3JlYXRlUm9v
dE9iamVjdCh3aWRnZXRWaWV3KTsKIAogICAgIGlmIChbd2lkZ2V0VmlldyByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKGNyZWF0ZVBsdWdpbkJpbmRpbmdzSW5zdGFuY2U6KV0pCi0gICAgICAg
IHJldHVybiBbd2lkZ2V0VmlldyBjcmVhdGVQbHVnaW5CaW5kaW5nc0luc3RhbmNlOnJvb3RPYmpl
Y3QucmVsZWFzZSgpXTsKKyAgICAgICAgcmV0dXJuIFt3aWRnZXRWaWV3IGNyZWF0ZVBsdWdpbkJp
bmRpbmdzSW5zdGFuY2U6V1RGTW92ZShyb290T2JqZWN0KV07CiAgICAgICAgIAogICAgIGlmIChb
d2lkZ2V0VmlldyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG9iamVjdEZvcldlYlNjcmlw
dCldKSB7CiAgICAgICAgIGlkIG9iamVjdEZvcldlYlNjcmlwdCA9IFt3aWRnZXRWaWV3IG9iamVj
dEZvcldlYlNjcmlwdF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA2ODJjYzYyM2ZhZDdjNjk4MWY1Njg4NmZhYTNj
NTY2NDVhYWY2M2ViLi44NjliNmVhYTgwNGY3NzQ2YTAxMTBlNzUyN2RjMWQ4YWQyMjY1NjZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAKQEAgLTIzNTQsNyArMjM1NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
ZmFpbCgpOwogICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0ZShtX2V4
ZWMtPnZtKCksIG1fZ2xvYmFsT2JqZWN0LT5hcnJheUJ1ZmZlclN0cnVjdHVyZSgpLCBhcnJheUJ1
ZmZlci5yZWxlYXNlKCkpOworICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBKU0FycmF5QnVm
ZmVyOjpjcmVhdGUobV9leGVjLT52bSgpLCBtX2dsb2JhbE9iamVjdC0+YXJyYXlCdWZmZXJTdHJ1
Y3R1cmUoKSwgV1RGTW92ZShhcnJheUJ1ZmZlcikpOwogICAgICAgICAgICAgbV9nY0J1ZmZlci5h
cHBlbmQocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAK
aW5kZXggNjdkOWQ1N2ZlZjFhYzNjMGIzYzI5ZGFjZDBkNzMxOWY4NjQzMzk0NS4uM2I0Mjc3YmRi
MGI0OTVkZDNkOTEwMWM2NjEzYWVhZTU2NjNmOTMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTQwNTksOSArNDA1OSw5
IEBAIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpj
b3B5UHJvcGVydGllc0luU2V0KGNvbnN0IENTCiAgICAgVmVjdG9yPENTU1Byb3BlcnR5LCAyNTY+
IGxpc3Q7CiAgICAgbGlzdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0aCk7CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIFJlZlB0cjxDU1NW
YWx1ZT4gdmFsdWUgPSBwcm9wZXJ0eVZhbHVlKHNldFtpXSk7CisgICAgICAgIGF1dG8gdmFsdWUg
PSBwcm9wZXJ0eVZhbHVlKHNldFtpXSk7CiAgICAgICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAg
IGxpc3QuYXBwZW5kKENTU1Byb3BlcnR5KHNldFtpXSwgdmFsdWUucmVsZWFzZSgpLCBmYWxzZSkp
OworICAgICAgICAgICAgbGlzdC5hcHBlbmQoQ1NTUHJvcGVydHkoc2V0W2ldLCBXVEZNb3ZlKHZh
bHVlKSwgZmFsc2UpKTsKICAgICB9CiAgICAgcmV0dXJuIE11dGFibGVTdHlsZVByb3BlcnRpZXM6
OmNyZWF0ZShsaXN0LmRhdGEoKSwgbGlzdC5zaXplKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL1NWR0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NT
UGFyc2VyLmNwcAppbmRleCBmMGM0ODU0Y2M2MWQxYWZhMDUzYjVjZmU5ZjI4ODQ4MDhlYjBkZWQw
Li45Y2I0NzkzYmJlMTQwZTMzNDIyNWQyNDMwODIzNzY0ZWM5MDllOWI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU1ZHQ1NTUGFyc2VyLmNwcApAQCAtMjcyLDkgKzI3Miw5IEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZVNWR1ZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAg
ICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSkKICAgICAgICAgICAgIHZhbGlkX3ByaW1pdGl2ZSA9
IHRydWU7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4g
c2hhZG93VmFsdWVMaXN0ID0gcGFyc2VTaGFkb3coKm1fdmFsdWVMaXN0LCBwcm9wSWQpOworICAg
ICAgICAgICAgYXV0byBzaGFkb3dWYWx1ZUxpc3QgPSBwYXJzZVNoYWRvdygqbV92YWx1ZUxpc3Qs
IHByb3BJZCk7CiAgICAgICAgICAgICBpZiAoc2hhZG93VmFsdWVMaXN0KSB7Ci0gICAgICAgICAg
ICAgICAgYWRkUHJvcGVydHkocHJvcElkLCBzaGFkb3dWYWx1ZUxpc3QucmVsZWFzZSgpLCBpbXBv
cnRhbnQpOworICAgICAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BJZCwgV1RGTW92ZShzaGFk
b3dWYWx1ZUxpc3QpLCBpbXBvcnRhbnQpOwogICAgICAgICAgICAgICAgIG1fdmFsdWVMaXN0LT5u
ZXh0KCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CkBAIC0z
MzYsNyArMzM2LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlU1ZHVmFsdWUoQ1NTUHJvcGVydHlJ
RCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGlmICghcGFyc2VkVmFsdWUgfHwgKG1fdmFs
dWVMaXN0LT5jdXJyZW50KCkgJiYgIWluU2hvcnRoYW5kKCkpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBhZGRQcm9wZXJ0eShwcm9wSWQsIHBhcnNlZFZhbHVlLnJlbGVhc2UoKSwgaW1w
b3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShwcm9wSWQsIFdURk1vdmUocGFyc2VkVmFsdWUpLCBp
bXBvcnRhbnQpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVCdWlsZGVyQ29udmVydGVyLmgKaW5kZXggNzdhYzY1ZjI4MzhkYTYzY2VjNDg4Zjg1ZDJiYTMx
YzE3YmY2MDg5ZC4uYWY0NTcxM2RmNTgzMDFjYTMwN2MzMDZhZjQ4MTQ2Y2RhY2ZiNDA1MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaApAQCAtNzYyLDcgKzc2
Miw3IEBAIGlubGluZSBQYXNzUmVmUHRyPFNoYXBlVmFsdWU+IFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydFNoYXBlVmFsdWUoU3R5bGVSZXNvCiAgICAgfQogCiAgICAgaWYgKHNoYXBlKQot
ICAgICAgICByZXR1cm4gU2hhcGVWYWx1ZTo6Y3JlYXRlU2hhcGVWYWx1ZShzaGFwZS5yZWxlYXNl
KCksIHJlZmVyZW5jZUJveCk7CisgICAgICAgIHJldHVybiBTaGFwZVZhbHVlOjpjcmVhdGVTaGFw
ZVZhbHVlKFdURk1vdmUoc2hhcGUpLCByZWZlcmVuY2VCb3gpOwogCiAgICAgaWYgKHJlZmVyZW5j
ZUJveCAhPSBCb3hNaXNzaW5nKQogICAgICAgICByZXR1cm4gU2hhcGVWYWx1ZTo6Y3JlYXRlQm94
U2hhcGVWYWx1ZShyZWZlcmVuY2VCb3gpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUHJvcGVydGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVz
LmNwcAppbmRleCBiZmNiZmE3MmQyMDRmOWFlOWFkNWQ2NzFmMmRiY2IwNmQwNGJmY2U1Li5mN2Jj
NzMwMTVkZTBkMzU2ZWE0YzkxY2M5MzAyMTUxODc2MjFjYTY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVQcm9wZXJ0aWVzLmNwcApAQCAtMTMxMyw5ICsxMzEzLDkgQEAgUmVmPE11dGFibGVTdHls
ZVByb3BlcnRpZXM+IFN0eWxlUHJvcGVydGllczo6Y29weVByb3BlcnRpZXNJblNldChjb25zdCBD
U1NQcm9wZXIKICAgICBWZWN0b3I8Q1NTUHJvcGVydHksIDI1Nj4gbGlzdDsKICAgICBsaXN0LnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFBy
b3BlcnR5Q1NTVmFsdWVJbnRlcm5hbChzZXRbaV0pOworICAgICAgICBhdXRvIHZhbHVlID0gZ2V0
UHJvcGVydHlDU1NWYWx1ZUludGVybmFsKHNldFtpXSk7CiAgICAgICAgIGlmICh2YWx1ZSkKLSAg
ICAgICAgICAgIGxpc3QuYXBwZW5kKENTU1Byb3BlcnR5KHNldFtpXSwgdmFsdWUucmVsZWFzZSgp
LCBmYWxzZSkpOworICAgICAgICAgICAgbGlzdC5hcHBlbmQoQ1NTUHJvcGVydHkoc2V0W2ldLCBX
VEZNb3ZlKHZhbHVlKSwgZmFsc2UpKTsKICAgICB9CiAgICAgcmV0dXJuIE11dGFibGVTdHlsZVBy
b3BlcnRpZXM6OmNyZWF0ZShsaXN0LmRhdGEoKSwgbGlzdC5zaXplKCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGMxN2FhZmE5NjQ1OGUzYWZmMjE1NjY0YWE2NDI2
OWIyY2EyYTUwZDkuLmFiNmRmMjc2YjQ2OTk1NzA3NDFlODFiZmVkZDQ5YzY3YWJjZWZhMmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTIxOTMsOCArMjE5Myw4IEBAIHZv
aWQgU3R5bGVSZXNvbHZlcjo6bG9hZFBlbmRpbmdJbWFnZXMoKQogICAgICAgICAgICAgICAgIGlm
IChpczxJbWFnZUNvbnRlbnREYXRhPigqY29udGVudERhdGEpKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGF1dG8mIHN0eWxlSW1hZ2UgPSBkb3duY2FzdDxJbWFnZUNvbnRlbnREYXRhPigqY29udGVu
dERhdGEpLmltYWdlKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChpczxTdHlsZVBlbmRpbmdJ
bWFnZT4oc3R5bGVJbWFnZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSZWZQdHI8
U3R5bGVJbWFnZT4gbG9hZGVkSW1hZ2UgPSBsb2FkUGVuZGluZ0ltYWdlKGRvd25jYXN0PFN0eWxl
UGVuZGluZ0ltYWdlPihzdHlsZUltYWdlKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZG93bmNhc3Q8SW1hZ2VDb250ZW50RGF0YT4oKmNvbnRlbnREYXRhKS5zZXRJbWFnZShsb2FkZWRJ
bWFnZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8gbG9hZGVk
SW1hZ2UgPSBsb2FkUGVuZGluZ0ltYWdlKGRvd25jYXN0PFN0eWxlUGVuZGluZ0ltYWdlPihzdHls
ZUltYWdlKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG93bmNhc3Q8SW1hZ2VDb250
ZW50RGF0YT4oKmNvbnRlbnREYXRhKS5zZXRJbWFnZShXVEZNb3ZlKGxvYWRlZEltYWdlKSk7CiAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBA
IC0yMjI4LDggKzIyMjgsOCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmxvYWRQZW5kaW5nSW1hZ2Vz
KCkKICAgICAgICAgICAgICAgICBjb25zdCBOaW5lUGllY2VJbWFnZSYgbWFza0ltYWdlID0gcmVm
bGVjdGlvbi0+bWFzaygpOwogICAgICAgICAgICAgICAgIGF1dG8qIHN0eWxlSW1hZ2UgPSBtYXNr
SW1hZ2UuaW1hZ2UoKTsKICAgICAgICAgICAgICAgICBpZiAoaXM8U3R5bGVQZW5kaW5nSW1hZ2U+
KHN0eWxlSW1hZ2UpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlZlB0cjxTdHlsZUltYWdlPiBs
b2FkZWRJbWFnZSA9IGxvYWRQZW5kaW5nSW1hZ2UoZG93bmNhc3Q8U3R5bGVQZW5kaW5nSW1hZ2U+
KCpzdHlsZUltYWdlKSk7Ci0gICAgICAgICAgICAgICAgICAgIHJlZmxlY3Rpb24tPnNldE1hc2so
TmluZVBpZWNlSW1hZ2UobG9hZGVkSW1hZ2UucmVsZWFzZSgpLCBtYXNrSW1hZ2UuaW1hZ2VTbGlj
ZXMoKSwgbWFza0ltYWdlLmZpbGwoKSwgbWFza0ltYWdlLmJvcmRlclNsaWNlcygpLCBtYXNrSW1h
Z2Uub3V0c2V0KCksIG1hc2tJbWFnZS5ob3Jpem9udGFsUnVsZSgpLCBtYXNrSW1hZ2UudmVydGlj
YWxSdWxlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBsb2FkZWRJbWFnZSA9IGxvYWRQ
ZW5kaW5nSW1hZ2UoZG93bmNhc3Q8U3R5bGVQZW5kaW5nSW1hZ2U+KCpzdHlsZUltYWdlKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHJlZmxlY3Rpb24tPnNldE1hc2soTmluZVBpZWNlSW1hZ2UoV1RG
TW92ZShsb2FkZWRJbWFnZSksIG1hc2tJbWFnZS5pbWFnZVNsaWNlcygpLCBtYXNrSW1hZ2UuZmls
bCgpLCBtYXNrSW1hZ2UuYm9yZGVyU2xpY2VzKCksIG1hc2tJbWFnZS5vdXRzZXQoKSwgbWFza0lt
YWdlLmhvcml6b250YWxSdWxlKCksIG1hc2tJbWFnZS52ZXJ0aWNhbFJ1bGUoKSkpOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAppbmRleCA5ZmM0MjZkMWI4Mzhl
MmQzZTIxZDgzMmQ0N2JiNjIxODllYTE5OWIzLi5lMDA2YjgxYTZjMWUyYzU0MGMzMTg1YTE3Y2Zi
ZTU5NTM5ZjJmMDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVT
aGVldE93bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93
bmVyLmNwcApAQCAtMTA5LDcgKzEwOSw4IEBAIHZvaWQgSW5saW5lU3R5bGVTaGVldE93bmVyOjpj
cmVhdGVTaGVldEZyb21UZXh0Q29udGVudHMoRWxlbWVudCYgZWxlbWVudCkKIHZvaWQgSW5saW5l
U3R5bGVTaGVldE93bmVyOjpjbGVhclNoZWV0KCkKIHsKICAgICBBU1NFUlQobV9zaGVldCk7Ci0g
ICAgbV9zaGVldC5yZWxlYXNlKCktPmNsZWFyT3duZXJOb2RlKCk7CisgICAgYXV0byBzaGVldCA9
IFdURk1vdmUobV9zaGVldCk7CisgICAgc2hlZXQtPmNsZWFyT3duZXJOb2RlKCk7CiB9CiAKIGlu
bGluZSBib29sIGlzVmFsaWRDU1NDb250ZW50VHlwZShFbGVtZW50JiBlbGVtZW50LCBjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Fw
cGx5U3R5bGVDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNv
bW1hbmQuY3BwCmluZGV4IGEwNTk5ZGUzMjRjNTU5MTJkZTE5NDEwMTI2NjVhMzgzYWI4ZmZlZDUu
LjI2N2Y5NTA1YzUxYzQ3ZWVkMWRlYWQwMDBkZDhkODhmMDlmYTdiYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCkBAIC04NDAsNyArODQwLDcgQEAg
dm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlJbmxpbmVTdHlsZVRvTm9kZVJhbmdlKEVkaXRp
bmdTdHlsZSogc3R5bGUsIFBhc3NSZWYKICAgICAgICAgaWYgKHJ1bi5kdW1teUVsZW1lbnQpCiAg
ICAgICAgICAgICByZW1vdmVOb2RlKHJ1bi5kdW1teUVsZW1lbnQpOwogICAgICAgICBpZiAocnVu
LnN0YXJ0QW5kRW5kQXJlU3RpbGxJbkRvY3VtZW50KCkpCi0gICAgICAgICAgICBhcHBseUlubGlu
ZVN0eWxlQ2hhbmdlKHJ1bi5zdGFydC5yZWxlYXNlKCksIHJ1bi5lbmQucmVsZWFzZSgpLCBydW4u
Y2hhbmdlLCBBZGRTdHlsZWRFbGVtZW50KTsKKyAgICAgICAgICAgIGFwcGx5SW5saW5lU3R5bGVD
aGFuZ2UoV1RGTW92ZShydW4uc3RhcnQpLCBXVEZNb3ZlKHJ1bi5lbmQpLCBydW4uY2hhbmdlLCBB
ZGRTdHlsZWRFbGVtZW50KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKaW5kZXggYjkwNDJmYTRkZjc4OWE1NmE2OGU5Mjkz
M2Q3NTA5ZGUyMjZjYmY0ZS4uOTE3OTdhMWJmY2FmOTAyNzI1NjUxMjNkZWU0ZTU5MjE5MTRkNzlk
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFu
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5j
cHAKQEAgLTUyMiw3ICs1MjIsNyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZW1vdmVD
aGlsZHJlbkluUmFuZ2UoUGFzc1JlZlB0cjxOb2RlPiBub2RlLCB1bnNpZ25lZAogICAgICAgICBj
aGlsZHJlbi5hcHBlbmQoY2hpbGQpOwogCiAgICAgZm9yIChhdXRvJiBjaGlsZCA6IGNoaWxkcmVu
KQotICAgICAgICByZW1vdmVOb2RlKGNoaWxkLnJlbGVhc2UoKSk7CisgICAgICAgIHJlbW92ZU5v
ZGUoV1RGTW92ZShjaGlsZCkpOwogfQogCiB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZW1v
dmVOb2RlKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSwgU2hvdWxkQXNzdW1lQ29udGVudElzQWx3YXlz
RWRpdGFibGUgc2hvdWxkQXNzdW1lQ29udGVudElzQWx3YXlzRWRpdGFibGUpCkBAIC01NDEsNyAr
NTQxLDcgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVtb3ZlTm9kZUFuZFBydW5lQW5j
ZXN0b3JzKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSkKIHsKICAgICBSZWZQdHI8Q29udGFpbmVyTm9k
ZT4gcGFyZW50ID0gbm9kZS0+cGFyZW50Tm9kZSgpOwogICAgIHJlbW92ZU5vZGUobm9kZSk7Ci0g
ICAgcHJ1bmUocGFyZW50LnJlbGVhc2UoKSk7CisgICAgcHJ1bmUoV1RGTW92ZShwYXJlbnQpKTsK
IH0KIAogdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVJlbWFpbmluZ1NpYmxpbmdzVG9O
ZXdQYXJlbnQoTm9kZSogbm9kZSwgTm9kZSogcGFzdExhc3ROb2RlVG9Nb3ZlLCBQYXNzUmVmUHRy
PEVsZW1lbnQ+IHBycE5ld1BhcmVudCkKQEAgLTU4Myw3ICs1ODMsNyBAQCBIVE1MRWxlbWVudCog
Q29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlcGxhY2VFbGVtZW50V2l0aFNwYW5QcmVzZXJ2aW5nQ2hp
bGRyZW5BbmRBdAogdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cHJ1bmUoUGFzc1JlZlB0cjxO
b2RlPiBub2RlKQogewogICAgIGlmIChSZWZQdHI8Tm9kZT4gaGlnaGVzdE5vZGVUb1JlbW92ZSA9
IGhpZ2hlc3ROb2RlVG9SZW1vdmVJblBydW5pbmcobm9kZS5nZXQoKSkpCi0gICAgICAgIHJlbW92
ZU5vZGUoaGlnaGVzdE5vZGVUb1JlbW92ZS5yZWxlYXNlKCkpOworICAgICAgICByZW1vdmVOb2Rl
KFdURk1vdmUoaGlnaGVzdE5vZGVUb1JlbW92ZSkpOwogfQogCiB2b2lkIENvbXBvc2l0ZUVkaXRD
b21tYW5kOjpzcGxpdFRleHROb2RlKFBhc3NSZWZQdHI8VGV4dD4gbm9kZSwgdW5zaWduZWQgb2Zm
c2V0KQpAQCAtNjg4LDcgKzY4OCw3IEBAIFBvc2l0aW9uIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpy
ZXBsYWNlU2VsZWN0ZWRUZXh0SW5Ob2RlKGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICBSZWZQdHI8
VGV4dD4gdGV4dE5vZGUgPSBzdGFydC5jb250YWluZXJUZXh0KCk7CiAgICAgcmVwbGFjZVRleHRJ
bk5vZGUodGV4dE5vZGUsIHN0YXJ0Lm9mZnNldEluQ29udGFpbmVyTm9kZSgpLCBlbmQub2Zmc2V0
SW5Db250YWluZXJOb2RlKCkgLSBzdGFydC5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSwgdGV4dCk7
CiAKLSAgICByZXR1cm4gUG9zaXRpb24odGV4dE5vZGUucmVsZWFzZSgpLCBzdGFydC5vZmZzZXRJ
bkNvbnRhaW5lck5vZGUoKSArIHRleHQubGVuZ3RoKCkpOworICAgIHJldHVybiBQb3NpdGlvbihX
VEZNb3ZlKHRleHROb2RlKSwgc3RhcnQub2Zmc2V0SW5Db250YWluZXJOb2RlKCkgKyB0ZXh0Lmxl
bmd0aCgpKTsKIH0KIAogc3RhdGljIFZlY3RvcjxSZW5kZXJlZERvY3VtZW50TWFya2VyPiBjb3B5
TWFya2Vycyhjb25zdCBWZWN0b3I8UmVuZGVyZWREb2N1bWVudE1hcmtlcio+JiBtYXJrZXJQb2lu
dGVycykKQEAgLTg3Miw3ICs4NzIsNyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZWJh
bGFuY2VXaGl0ZXNwYWNlT25UZXh0U3Vic3RyaW5nKFBhc3NSZWZQdHI8VGV4dD4gcAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlz
RW5kT2ZQYXJhZ3JhcGgodmlzaWJsZURvd25zdHJlYW1Qb3MpIHx8ICh1bnNpZ25lZClkb3duc3Ry
ZWFtID09IHRleHQubGVuZ3RoKCkpOwogICAgIAogICAgIGlmIChzdHJpbmcgIT0gcmViYWxhbmNl
ZFN0cmluZykKLSAgICAgICAgcmVwbGFjZVRleHRJbk5vZGVQcmVzZXJ2aW5nTWFya2Vycyh0ZXh0
Tm9kZS5yZWxlYXNlKCksIHVwc3RyZWFtLCBsZW5ndGgsIHJlYmFsYW5jZWRTdHJpbmcpOworICAg
ICAgICByZXBsYWNlVGV4dEluTm9kZVByZXNlcnZpbmdNYXJrZXJzKFdURk1vdmUodGV4dE5vZGUp
LCB1cHN0cmVhbSwgbGVuZ3RoLCByZWJhbGFuY2VkU3RyaW5nKTsKIH0KIAogdm9pZCBDb21wb3Np
dGVFZGl0Q29tbWFuZDo6cHJlcGFyZVdoaXRlc3BhY2VBdFBvc2l0aW9uRm9yU3BsaXQoUG9zaXRp
b24mIHBvc2l0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9DcmVhdGVM
aW5rQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NyZWF0ZUxpbmtDb21tYW5k
LmNwcAppbmRleCBhM2VlN2U1MDU4NDI4ZWY4MzEwNTM5OThiODIxYjJkNDdmYjZhYThmLi4zYTA1
MjA4NzNiNDRmZTY0YTJlZDUyMmUzMzdkZmI3NGUxMmE2MjI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0NyZWF0ZUxpbmtDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0NyZWF0ZUxpbmtDb21tYW5kLmNwcApAQCAtNDMsMTYgKzQzLDE2IEBAIHZvaWQg
Q3JlYXRlTGlua0NvbW1hbmQ6OmRvQXBwbHkoKQogICAgIGlmIChlbmRpbmdTZWxlY3Rpb24oKS5p
c05vbmUoKSkKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICBSZWZQdHI8SFRNTEFuY2hv
ckVsZW1lbnQ+IGFuY2hvckVsZW1lbnQgPSBIVE1MQW5jaG9yRWxlbWVudDo6Y3JlYXRlKGRvY3Vt
ZW50KCkpOworICAgIGF1dG8gYW5jaG9yRWxlbWVudCA9IEhUTUxBbmNob3JFbGVtZW50OjpjcmVh
dGUoZG9jdW1lbnQoKSk7CiAgICAgYW5jaG9yRWxlbWVudC0+c2V0SHJlZihtX3VybCk7CiAgICAg
CiAgICAgaWYgKGVuZGluZ1NlbGVjdGlvbigpLmlzUmFuZ2UoKSkKLSAgICAgICAgYXBwbHlTdHls
ZWRFbGVtZW50KGFuY2hvckVsZW1lbnQucmVsZWFzZSgpKTsKKyAgICAgICAgYXBwbHlTdHlsZWRF
bGVtZW50KFdURk1vdmUoYW5jaG9yRWxlbWVudCkpOwogICAgIGVsc2UgewotICAgICAgICBpbnNl
cnROb2RlQXQoYW5jaG9yRWxlbWVudC5nZXQoKSwgZW5kaW5nU2VsZWN0aW9uKCkuc3RhcnQoKSk7
Ci0gICAgICAgIFJlZlB0cjxUZXh0PiB0ZXh0Tm9kZSA9IFRleHQ6OmNyZWF0ZShkb2N1bWVudCgp
LCBtX3VybCk7Ci0gICAgICAgIGFwcGVuZE5vZGUodGV4dE5vZGUucmVsZWFzZSgpLCBhbmNob3JF
bGVtZW50LmdldCgpKTsKLSAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rp
b24ocG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUoYW5jaG9yRWxlbWVudC5nZXQoKSksIHBvc2l0
aW9uSW5QYXJlbnRBZnRlck5vZGUoYW5jaG9yRWxlbWVudC5nZXQoKSksIERPV05TVFJFQU0sIGVu
ZGluZ1NlbGVjdGlvbigpLmlzRGlyZWN0aW9uYWwoKSkpOworICAgICAgICBpbnNlcnROb2RlQXQo
YW5jaG9yRWxlbWVudC5wdHIoKSwgZW5kaW5nU2VsZWN0aW9uKCkuc3RhcnQoKSk7CisgICAgICAg
IGF1dG8gdGV4dE5vZGUgPSBUZXh0OjpjcmVhdGUoZG9jdW1lbnQoKSwgbV91cmwpOworICAgICAg
ICBhcHBlbmROb2RlKFdURk1vdmUodGV4dE5vZGUpLCBhbmNob3JFbGVtZW50LnB0cigpKTsKKyAg
ICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocG9zaXRpb25JblBhcmVu
dEJlZm9yZU5vZGUoYW5jaG9yRWxlbWVudC5wdHIoKSksIHBvc2l0aW9uSW5QYXJlbnRBZnRlck5v
ZGUoYW5jaG9yRWxlbWVudC5wdHIoKSksIERPV05TVFJFQU0sIGVuZGluZ1NlbGVjdGlvbigpLmlz
RGlyZWN0aW9uYWwoKSkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5n
U3R5bGUuY3BwCmluZGV4IDI5MTRmNjI3MTJiNzJkMTE4YWViZDIxNjUyMTA5ZGJmNTRmY2IyZmEu
LmVjN2U3ZWI3NzJhNzFkMjliOWRiODFmMTNmODA5YTIyMWQyZjcxN2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKQEAgLTEyNDgsOSArMTI0OCw5IEBAIHZvaWQgRWRp
dGluZ1N0eWxlOjptZXJnZVN0eWxlKGNvbnN0IFN0eWxlUHJvcGVydGllcyogc3R5bGUsIENTU1By
b3BlcnR5T3ZlcnJpZGVNCiAgICAgICAgIGlmICgocHJvcGVydHkuaWQoKSA9PSBDU1NQcm9wZXJ0
eVRleHREZWNvcmF0aW9uIHx8IHByb3BlcnR5LmlkKCkgPT0gQ1NTUHJvcGVydHlXZWJraXRUZXh0
RGVjb3JhdGlvbnNJbkVmZmVjdCkKICAgICAgICAgICAgICYmIGlzPENTU1ZhbHVlTGlzdD4oKnBy
b3BlcnR5LnZhbHVlKCkpICYmIHZhbHVlKSB7CiAgICAgICAgICAgICBpZiAoaXM8Q1NTVmFsdWVM
aXN0PigqdmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbmV3
VmFsdWUgPSBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KCp2YWx1ZSkuY29weSgpOwotICAgICAgICAg
ICAgICAgIG1lcmdlVGV4dERlY29yYXRpb25WYWx1ZXMoKm5ld1ZhbHVlLCBkb3duY2FzdDxDU1NW
YWx1ZUxpc3Q+KCpwcm9wZXJ0eS52YWx1ZSgpKSk7Ci0gICAgICAgICAgICAgICAgbV9tdXRhYmxl
U3R5bGUtPnNldFByb3BlcnR5KHByb3BlcnR5LmlkKCksIG5ld1ZhbHVlLnJlbGVhc2UoKSwgcHJv
cGVydHkuaXNJbXBvcnRhbnQoKSk7CisgICAgICAgICAgICAgICAgYXV0byBuZXdWYWx1ZSA9IGRv
d25jYXN0PENTU1ZhbHVlTGlzdD4oKnZhbHVlKS5jb3B5KCk7CisgICAgICAgICAgICAgICAgbWVy
Z2VUZXh0RGVjb3JhdGlvblZhbHVlcyhuZXdWYWx1ZSwgZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pigq
cHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICAgICAgICAgIG1fbXV0YWJsZVN0eWxlLT5zZXRQ
cm9wZXJ0eShwcm9wZXJ0eS5pZCgpLCBXVEZNb3ZlKG5ld1ZhbHVlKSwgcHJvcGVydHkuaXNJbXBv
cnRhbnQoKSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB2YWx1ZSA9IG51bGxwdHI7IC8vIHRleHQtZGVjb3JhdGlvbjogbm9uZSBpcyBlcXVp
dmFsZW50IHRvIG5vdCBoYXZpbmcgdGhlIHByb3BlcnR5LgpAQCAtMTMwNyw4ICsxMzA3LDggQEAg
dm9pZCBFZGl0aW5nU3R5bGU6Om1lcmdlU3R5bGVGcm9tUnVsZXNGb3JTZXJpYWxpemF0aW9uKFN0
eWxlZEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgICAgICAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZh
bHVlPigqdmFsdWUpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYg
KGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLmlzUGVyY2VudGFnZSgpKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKFJlZlB0cjxDU1NWYWx1ZT4gY29tcHV0ZWRQcm9wZXJ0eVZhbHVl
ID0gY29tcHV0ZWRTdHlsZS5wcm9wZXJ0eVZhbHVlKHByb3BlcnR5LmlkKCkpKQotICAgICAgICAg
ICAgICAgICAgICBmcm9tQ29tcHV0ZWRTdHlsZS0+YWRkUGFyc2VkUHJvcGVydHkoQ1NTUHJvcGVy
dHkocHJvcGVydHkuaWQoKSwgY29tcHV0ZWRQcm9wZXJ0eVZhbHVlLnJlbGVhc2UoKSkpOworICAg
ICAgICAgICAgICAgIGlmIChhdXRvIGNvbXB1dGVkUHJvcGVydHlWYWx1ZSA9IGNvbXB1dGVkU3R5
bGUucHJvcGVydHlWYWx1ZShwcm9wZXJ0eS5pZCgpKSkKKyAgICAgICAgICAgICAgICAgICAgZnJv
bUNvbXB1dGVkU3R5bGUtPmFkZFBhcnNlZFByb3BlcnR5KENTU1Byb3BlcnR5KHByb3BlcnR5Lmlk
KCksIFdURk1vdmUoY29tcHV0ZWRQcm9wZXJ0eVZhbHVlKSkpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDM0Y2RjZTk5ZjNi
ZmYzMmQ0NjlmNDUxNjk3ZDRkNTlkYTcwOGM1ZmEuLmY2NjYzMzAxNjQzMDMxMzU4NTQwZmI3NGMx
MjUwNzg2ZjdjNzUzNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTEzNiw5ICsx
MzYsOSBAQCB2b2lkIENsZWFyVGV4dENvbW1hbmQ6OkNyZWF0ZUFuZEFwcGx5KGNvbnN0IFJlZlB0
cjxGcmFtZT4gZnJhbWUpCiAgICAgCiAgICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiBvbGRTZWxl
Y3Rpb24gPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CiAgICAgZnJhbWUtPnNlbGVj
dGlvbigpLnNlbGVjdEFsbCgpOwotICAgIFJlZlB0cjxDbGVhclRleHRDb21tYW5kPiBjbGVhckNv
bW1hbmQgPSBhZG9wdFJlZihuZXcgQ2xlYXJUZXh0Q29tbWFuZCgqZnJhbWUtPmRvY3VtZW50KCkp
KTsKKyAgICBhdXRvIGNsZWFyQ29tbWFuZCA9IGFkb3B0UmVmKCpuZXcgQ2xlYXJUZXh0Q29tbWFu
ZCgqZnJhbWUtPmRvY3VtZW50KCkpKTsKICAgICBjbGVhckNvbW1hbmQtPnNldFN0YXJ0aW5nU2Vs
ZWN0aW9uKG9sZFNlbGVjdGlvbik7Ci0gICAgYXBwbHlDb21tYW5kKGNsZWFyQ29tbWFuZC5yZWxl
YXNlKCkpOworICAgIGFwcGx5Q29tbWFuZChXVEZNb3ZlKGNsZWFyQ29tbWFuZCkpOwogfQogCiB1
c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMjQzMywxNiArMjQzMywxNiBAQCB2b2lkIEVk
aXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tp
bmdUeXBlTWFzayB0ZXh0QwogICAgIGJvb2wgYXN5bmNocm9ub3VzID0gbV9mcmFtZS5zZXR0aW5n
cygpLmFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgJiYgIXNob3VsZFNob3dDb3Jy
ZWN0aW9uUGFuZWw7CiAKICAgICAvLyBJbiBhc3luY2hyb25vdXMgbW9kZSwgd2UgaW50ZW50aW9u
YWxseSBjaGVjayBwYXJhZ3JhcGgtd2lkZSBzZW50ZW5jZS4KLSAgICBSZWZQdHI8U3BlbGxDaGVj
a1JlcXVlc3Q+IHJlcXVlc3QgPSBTcGVsbENoZWNrUmVxdWVzdDo6Y3JlYXRlKHJlc29sdmVUZXh0
Q2hlY2tpbmdUeXBlTWFzayh0ZXh0Q2hlY2tpbmdPcHRpb25zKSwgVGV4dENoZWNraW5nUHJvY2Vz
c0luY3JlbWVudGFsLCBhc3luY2hyb25vdXMgPyBwYXJhZ3JhcGhSYW5nZSA6IHJhbmdlVG9DaGVj
aywgcGFyYWdyYXBoUmFuZ2UpOworICAgIGF1dG8gcmVxdWVzdCA9IFNwZWxsQ2hlY2tSZXF1ZXN0
OjpjcmVhdGUocmVzb2x2ZVRleHRDaGVja2luZ1R5cGVNYXNrKHRleHRDaGVja2luZ09wdGlvbnMp
LCBUZXh0Q2hlY2tpbmdQcm9jZXNzSW5jcmVtZW50YWwsIGFzeW5jaHJvbm91cyA/IHBhcmFncmFw
aFJhbmdlIDogcmFuZ2VUb0NoZWNrLCBwYXJhZ3JhcGhSYW5nZSk7CiAKICAgICBpZiAoYXN5bmNo
cm9ub3VzKSB7Ci0gICAgICAgIG1fc3BlbGxDaGVja2VyLT5yZXF1ZXN0Q2hlY2tpbmdGb3IocmVx
dWVzdC5yZWxlYXNlKCkpOworICAgICAgICBtX3NwZWxsQ2hlY2tlci0+cmVxdWVzdENoZWNraW5n
Rm9yKFdURk1vdmUocmVxdWVzdCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgVmVj
dG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gcmVzdWx0czsKICAgICBjaGVja1RleHRPZlBhcmFncmFw
aCgqdGV4dENoZWNrZXIoKSwgcGFyYWdyYXBoVG9DaGVjay50ZXh0KCksIHJlc29sdmVUZXh0Q2hl
Y2tpbmdUeXBlTWFzayh0ZXh0Q2hlY2tpbmdPcHRpb25zKSwgcmVzdWx0cywgbV9mcmFtZS5zZWxl
Y3Rpb24oKS5zZWxlY3Rpb24oKSk7Ci0gICAgbWFya0FuZFJlcGxhY2VGb3IocmVxdWVzdC5yZWxl
YXNlKCksIHJlc3VsdHMpOworICAgIG1hcmtBbmRSZXBsYWNlRm9yKFdURk1vdmUocmVxdWVzdCks
IHJlc3VsdHMpOwogfQogCiBzdGF0aWMgYm9vbCBpc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudFR5
cGUoVGV4dENoZWNraW5nVHlwZSB0eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3JDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29t
bWFuZC5jcHAKaW5kZXggYTkzNTgwZTc2N2ZmY2IwZjQzYmFkMWY2ZDk4NWNhNmIzYTA3ZGZkOS4u
ZGRmMTk0YzcyYTczYjdmZmJkMThlYzYzZjJlYTU0YTg0OTc0MmQ4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCkBAIC0xNjUsMTIgKzE2NSwxMiBAQCBzdGF0aWMg
Ym9vbCBleGVjdXRlSW5zZXJ0RnJhZ21lbnQoRnJhbWUmIGZyYW1lLCBQYXNzUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IGZyYQogCiBzdGF0aWMgYm9vbCBleGVjdXRlSW5zZXJ0Tm9kZShGcmFtZSYg
ZnJhbWUsIFJlZjxOb2RlPiYmIGNvbnRlbnQpCiB7Ci0gICAgUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IGZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgp
KTsKKyAgICBhdXRvIGZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKCpmcmFtZS5k
b2N1bWVudCgpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBmcmFnbWVudC0+YXBw
ZW5kQ2hpbGQoY29udGVudCwgZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIHJldHVybiBleGVjdXRlSW5zZXJ0RnJhZ21lbnQoZnJhbWUsIGZyYWdtZW50LnJlbGVh
c2UoKSk7CisgICAgcmV0dXJuIGV4ZWN1dGVJbnNlcnRGcmFnbWVudChmcmFtZSwgV1RGTW92ZShm
cmFnbWVudCkpOwogfQogCiBzdGF0aWMgYm9vbCBleHBhbmRTZWxlY3Rpb25Ub0dyYW51bGFyaXR5
KEZyYW1lJiBmcmFtZSwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcAppbmRleCA5Yjk0NDhjYzY2ZDAwN2E4
ZWMyOTRiYzNiOWVmNWM4MTU2MjFiMTdiLi4xMDM5ODdhZDdlZGE5ODBmODBlNjEyOTZhNjM3YWEx
NGQ5OTcwODM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRD
b21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5k
LmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIGJvb2wgSW5zZXJ0VGV4dENvbW1hbmQ6OnBlcmZvcm1P
dmVyd3JpdGUoY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIHNlbGVjdEluc2VydGVkCiAKICAgICBy
ZXBsYWNlVGV4dEluTm9kZSh0ZXh0Tm9kZSwgc3RhcnQub2Zmc2V0SW5Db250YWluZXJOb2RlKCks
IGNvdW50LCB0ZXh0KTsKIAotICAgIFBvc2l0aW9uIGVuZFBvc2l0aW9uID0gUG9zaXRpb24odGV4
dE5vZGUucmVsZWFzZSgpLCBzdGFydC5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSArIHRleHQubGVu
Z3RoKCkpOworICAgIFBvc2l0aW9uIGVuZFBvc2l0aW9uID0gUG9zaXRpb24oV1RGTW92ZSh0ZXh0
Tm9kZSksIHN0YXJ0Lm9mZnNldEluQ29udGFpbmVyTm9kZSgpICsgdGV4dC5sZW5ndGgoKSk7CiAg
ICAgc2V0RW5kaW5nU2VsZWN0aW9uV2l0aG91dFZhbGlkYXRpb24oc3RhcnQsIGVuZFBvc2l0aW9u
KTsKICAgICBpZiAoIXNlbGVjdEluc2VydGVkVGV4dCkKICAgICAgICAgc2V0RW5kaW5nU2VsZWN0
aW9uKFZpc2libGVTZWxlY3Rpb24oZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpLCBlbmRp
bmdTZWxlY3Rpb24oKS5pc0RpcmVjdGlvbmFsKCkpKTsKQEAgLTI0NSw3ICsyNDUsNyBAQCBQb3Np
dGlvbiBJbnNlcnRUZXh0Q29tbWFuZDo6aW5zZXJ0VGFiKGNvbnN0IFBvc2l0aW9uJiBwb3MpCiAg
ICAgaWYgKGlzVGFiU3BhblRleHROb2RlKG5vZGUpKSB7CiAgICAgICAgIFJlZlB0cjxUZXh0PiB0
ZXh0Tm9kZSA9IGRvd25jYXN0PFRleHQ+KG5vZGUpOwogICAgICAgICBpbnNlcnRUZXh0SW50b05v
ZGUodGV4dE5vZGUsIG9mZnNldCwgIlx0Iik7Ci0gICAgICAgIHJldHVybiBQb3NpdGlvbih0ZXh0
Tm9kZS5yZWxlYXNlKCksIG9mZnNldCArIDEpOworICAgICAgICByZXR1cm4gUG9zaXRpb24oV1RG
TW92ZSh0ZXh0Tm9kZSksIG9mZnNldCArIDEpOwogICAgIH0KICAgICAKICAgICAvLyBjcmVhdGUg
bmV3IHRhYiBzcGFuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5v
ZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwCmluZGV4IGI2MWUyZmZhYWNl
NDI5NGFkM2QyMzZjYjJjZDYyMDRhOTdkZmJjYjMuLjE2ZjBmNjMxMDgwOGQ0MDk2MjYwNGY3MTk2
ZDNmNjdjYTE2NmI3NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3Zl
Tm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwCkBAIC00Nyw5ICs0
Nyw5IEBAIHZvaWQgUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQ6OmRvQXBwbHko
KQogCiAgICAgc2l6ZV90IHNpemUgPSBjaGlsZHJlbi5zaXplKCk7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgUmVmUHRyPE5vZGU+IGNoaWxkID0gV1RG
TW92ZShjaGlsZHJlbltpXSk7CisgICAgICAgIGF1dG8gY2hpbGQgPSBXVEZNb3ZlKGNoaWxkcmVu
W2ldKTsKICAgICAgICAgcmVtb3ZlTm9kZShjaGlsZCwgbV9zaG91bGRBc3N1bWVDb250ZW50SXNB
bHdheXNFZGl0YWJsZSk7Ci0gICAgICAgIGluc2VydE5vZGVCZWZvcmUoY2hpbGQucmVsZWFzZSgp
LCBtX25vZGUsIG1fc2hvdWxkQXNzdW1lQ29udGVudElzQWx3YXlzRWRpdGFibGUpOworICAgICAg
ICBpbnNlcnROb2RlQmVmb3JlKFdURk1vdmUoY2hpbGQpLCBtX25vZGUsIG1fc2hvdWxkQXNzdW1l
Q29udGVudElzQWx3YXlzRWRpdGFibGUpOwogICAgIH0KICAgICByZW1vdmVOb2RlKG1fbm9kZSwg
bV9zaG91bGRBc3N1bWVDb250ZW50SXNBbHdheXNFZGl0YWJsZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IGVkZTg3
ZGIzZmZlOWU1YzI4MTAzMWUxMmFmOGY0YWU4ZGUyZjUyNTYuLjQ5NDQwNWUyNDJmYTc4NmE1N2Qy
MWQyYzcxZmNhYzgyN2RhNTU1OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC0yMjksOSArMjI5LDkgQEAgdm9pZCBSZXBs
YWNlbWVudEZyYWdtZW50OjpyZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuKFBhc3NSZWZQdHI8
Tm9kZT4gbm9kZSkKIAogICAgIHdoaWxlIChSZWZQdHI8Tm9kZT4gbiA9IG5vZGUtPmZpcnN0Q2hp
bGQoKSkgewogICAgICAgICByZW1vdmVOb2RlKG4pOwotICAgICAgICBpbnNlcnROb2RlQmVmb3Jl
KG4ucmVsZWFzZSgpLCBub2RlLmdldCgpKTsKKyAgICAgICAgaW5zZXJ0Tm9kZUJlZm9yZShXVEZN
b3ZlKG4pLCBub2RlLmdldCgpKTsKICAgICB9Ci0gICAgcmVtb3ZlTm9kZShub2RlKTsKKyAgICBy
ZW1vdmVOb2RlKFdURk1vdmUobm9kZSkpOwogfQogCiB2b2lkIFJlcGxhY2VtZW50RnJhZ21lbnQ6
OnJlbW92ZU5vZGUoUGFzc1JlZlB0cjxOb2RlPiBub2RlKQpAQCAtNjc4LDcgKzY3OCw3IEBAIHZv
aWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Om1vdmVOb2RlT3V0T2ZBbmNlc3RvcihQYXNzUmVm
UHRyPE5vZGU+IHBycE5vZGUsIFBhCiAgICAgfQogICAgIGlmICghYW5jZXN0b3ItPmZpcnN0Q2hp
bGQoKSkgewogICAgICAgICBpbnNlcnRlZE5vZGVzLndpbGxSZW1vdmVOb2RlKGFuY2VzdG9yLmdl
dCgpKTsKLSAgICAgICAgcmVtb3ZlTm9kZShhbmNlc3Rvci5yZWxlYXNlKCkpOworICAgICAgICBy
ZW1vdmVOb2RlKFdURk1vdmUoYW5jZXN0b3IpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXggNDdlMWFhN2U5ZDdhMTM3ZTgz
YzA3ZWM0NzBhNTAyNDQxNDI2ZDJlYy4uN2RlM2Q4MDczMGI2MzMyYTUzOGUwZjBmZTUwNzY1OGE0
YzRlMzM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5j
cHAKQEAgLTI4MCw3ICsyODAsNyBAQCBzdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKFNldHRpbmdzKiBzZXR0aW5ncwogICAgIAogYm9v
bCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUoKQogewot
ICAgIHN0YXRpYyBTaGFyZWRCdWZmZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRhID0gY3JlYXRlVGVt
cGxhdGVEb2N1bWVudERhdGEoZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSkucmVsZWFzZSgpLmxlYWtS
ZWYoKTsKKyAgICBzdGF0aWMgU2hhcmVkQnVmZmVyKiB0ZW1wbGF0ZURvY3VtZW50RGF0YSA9IGNy
ZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGRvY3VtZW50KCktPnNldHRpbmdzKCkpLmxlYWtSZWYo
KTsKICAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiBzdG9yaW5nIHRoZSBkYXRhLCBpdCB3b3VsZCBi
ZSBtb3JlIGVmZmljaWVudCBpZiB3ZSBjb3VsZCBwYXJzZSB0aGUgdGVtcGxhdGUgZGF0YSBpbnRv
IHRoZQogICAgIC8vIHRlbXBsYXRlIERvY3VtZW50IG9uY2UsIHN0b3JlIHRoYXQgZG9jdW1lbnQs
IHRoZW4gImNvcHkiIGl0IHdoZW5ldmVyIHdlIGdldCBhbiBGVFAgZGlyZWN0b3J5IGxpc3Rpbmcu
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5jcHAKaW5kZXggMzk4ZDE0
NTdhNTk5YWZiZDUxMWRiMGFkMTY5OTVjZjZhYmViNWM1OS4uYWFiNGQ5NDYxM2Q0NGZkY2Q4NWZl
OGY5ZDBhNDE0MDM2YmRlNDYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9udEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50
LmNwcApAQCAtMTk0LDggKzE5NCw4IEBAIHZvaWQgSFRNTEZvbnRFbGVtZW50Ojpjb2xsZWN0U3R5
bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYKICAgICB9IGVs
c2UgaWYgKG5hbWUgPT0gY29sb3JBdHRyKQogICAgICAgICBhZGRIVE1MQ29sb3JUb1N0eWxlKHN0
eWxlLCBDU1NQcm9wZXJ0eUNvbG9yLCB2YWx1ZSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBmYWNl
QXR0cikgewotICAgICAgICBpZiAoUmVmUHRyPENTU1ZhbHVlTGlzdD4gZm9udEZhY2VWYWx1ZSA9
IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlRm9udEZhY2VWYWx1ZSh2YWx1ZSkpCi0g
ICAgICAgICAgICBzdHlsZS5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRG
YW1pbHksIGZvbnRGYWNlVmFsdWUucmVsZWFzZSgpKSk7CisgICAgICAgIGlmIChhdXRvIGZvbnRG
YWNlVmFsdWUgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUZvbnRGYWNlVmFsdWUo
dmFsdWUpKQorICAgICAgICAgICAgc3R5bGUuc2V0UHJvcGVydHkoQ1NTUHJvcGVydHkoQ1NTUHJv
cGVydHlGb250RmFtaWx5LCBXVEZNb3ZlKGZvbnRGYWNlVmFsdWUpKSk7CiAgICAgfSBlbHNlCiAg
ICAgICAgIEhUTUxFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUo
bmFtZSwgdmFsdWUsIHN0eWxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50
LmNwcAppbmRleCBhYzkyNzI4MWM1MmRkNWViYTRjZTllODkxMmJhN2Y4MThhZDkzYWIzLi42MTNm
ZjJkZjlmZWY1MWFhMTI0MWNkNWQyNTM3NmZjNDcxOTg4M2I0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC0yODQsOCArMjg0LDggQEAgdm9pZCBIVE1MRm9ybUVs
ZW1lbnQ6OnByZXBhcmVGb3JTdWJtaXNzaW9uKEV2ZW50KiBldmVudCkKIAogICAgIFN0cmluZ1Bh
aXJWZWN0b3IgY29udHJvbE5hbWVzQW5kVmFsdWVzOwogICAgIGdldFRleHRGaWVsZFZhbHVlcyhj
b250cm9sTmFtZXNBbmRWYWx1ZXMpOwotICAgIFJlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSA9
IEZvcm1TdGF0ZTo6Y3JlYXRlKHRoaXMsIGNvbnRyb2xOYW1lc0FuZFZhbHVlcywgJmRvY3VtZW50
KCksIE5vdFN1Ym1pdHRlZEJ5SmF2YVNjcmlwdCk7Ci0gICAgZnJhbWUtPmxvYWRlcigpLmNsaWVu
dCgpLmRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChmb3JtU3RhdGUucmVsZWFzZSgpKTsKKyAg
ICBhdXRvIGZvcm1TdGF0ZSA9IEZvcm1TdGF0ZTo6Y3JlYXRlKHRoaXMsIGNvbnRyb2xOYW1lc0Fu
ZFZhbHVlcywgJmRvY3VtZW50KCksIE5vdFN1Ym1pdHRlZEJ5SmF2YVNjcmlwdCk7CisgICAgZnJh
bWUtPmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChXVEZNb3Zl
KGZvcm1TdGF0ZSkpOwogCiAgICAgUmVmPEhUTUxGb3JtRWxlbWVudD4gcHJvdGVjdGVkVGhpcygq
dGhpcyk7CiAgICAgLy8gRXZlbnQgaGFuZGxpbmcgY2FuIHJlc3VsdCBpbiBtX3Nob3VsZFN1Ym1p
dCBiZWNvbWluZyB0cnVlLCByZWdhcmRsZXNzIG9mIGRpc3BhdGNoRXZlbnQoKSByZXR1cm4gdmFs
dWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAppbmRleCAxZjUyNGZk
ZThiN2FmNTAxZTg2ZDk2MDk0NDU5OTVmMTZkNTI3MmE2Li44N2YyYjc2MWY4NzE5YWViNWU2N2Vi
OGFkZTU1ODEwMGMxOGRkNmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVu
dC5jcHAKQEAgLTQzNSwxMiArNDM1LDEyIEBAIHZvaWQgSFRNTFRhYmxlRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyCiAKIHN0
YXRpYyBTdHlsZVByb3BlcnRpZXMqIGxlYWtCb3JkZXJTdHlsZShDU1NWYWx1ZUlEIHZhbHVlKQog
ewotICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHls
ZVByb3BlcnRpZXM6OmNyZWF0ZSgpOworICAgIGF1dG8gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzOjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCb3Jk
ZXJUb3BTdHlsZSwgdmFsdWUpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJv
cmRlckJvdHRvbVN0eWxlLCB2YWx1ZSk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3Bl
cnR5Qm9yZGVyTGVmdFN0eWxlLCB2YWx1ZSk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1By
b3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgdmFsdWUpOwotICAgIHJldHVybiBzdHlsZS5yZWxlYXNl
KCkubGVha1JlZigpOworICAgIHJldHVybiAmc3R5bGUubGVha1JlZigpOwogfQogCiBjb25zdCBT
dHlsZVByb3BlcnRpZXMqIEhUTUxUYWJsZUVsZW1lbnQ6OmFkZGl0aW9uYWxQcmVzZW50YXRpb25B
dHRyaWJ1dGVTdHlsZSgpIGNvbnN0CkBAIC01MzksNyArNTM5LDcgQEAgY29uc3QgU3R5bGVQcm9w
ZXJ0aWVzKiBIVE1MVGFibGVFbGVtZW50OjphZGRpdGlvbmFsQ2VsbFN0eWxlKCkKIAogc3RhdGlj
IFN0eWxlUHJvcGVydGllcyogbGVha0dyb3VwQm9yZGVyU3R5bGUoaW50IHJvd3MpCiB7Ci0gICAg
UmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVy
dGllczo6Y3JlYXRlKCk7CisgICAgYXV0byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6
OmNyZWF0ZSgpOwogICAgIGlmIChyb3dzKSB7CiAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShD
U1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBDU1NWYWx1ZVRoaW4pOwogICAgICAgICBzdHlsZS0+
c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgQ1NTVmFsdWVUaGluKTsK
QEAgLTU1MSw3ICs1NTEsNyBAQCBzdGF0aWMgU3R5bGVQcm9wZXJ0aWVzKiBsZWFrR3JvdXBCb3Jk
ZXJTdHlsZShpbnQgcm93cykKICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5
Qm9yZGVyTGVmdFN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKICAgICAgICAgc3R5bGUtPnNldFByb3Bl
cnR5KENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgQ1NTVmFsdWVTb2xpZCk7CiAgICAgfQot
ICAgIHJldHVybiBzdHlsZS5yZWxlYXNlKCkubGVha1JlZigpOworICAgIHJldHVybiAmc3R5bGUu
bGVha1JlZigpOwogfQogCiBjb25zdCBTdHlsZVByb3BlcnRpZXMqIEhUTUxUYWJsZUVsZW1lbnQ6
OmFkZGl0aW9uYWxHcm91cFN0eWxlKGJvb2wgcm93cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDNhYWQ5YjY1NTI1NTJkZjA1
ZGQyMDZhZWJmNDJhNmRiZjVkNGFlYTQuLmU2MjJkMGRmYzM5MmI1ZWNhMmM0NGIxZjIzOTFlNGZh
YTdjNDkyNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1
bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3Vt
ZW50UGFyc2VyLmNwcApAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2Vy
OjpydW5TY3JpcHRzRm9yUGF1c2VkVHJlZUJ1aWxkZXIoKQogICAgICAgICBBU1NFUlQoIW1fdHJl
ZUJ1aWxkZXItPmhhc1BhcnNlckJsb2NraW5nU2NyaXB0V29yaygpKTsKICAgICAgICAgLy8gV2Ug
d2lsbCBub3QgaGF2ZSBhIHNjcmlwdFJ1bm5lciB3aGVuIHBhcnNpbmcgYSBEb2N1bWVudEZyYWdt
ZW50LgogICAgICAgICBpZiAobV9zY3JpcHRSdW5uZXIpCi0gICAgICAgICAgICBtX3NjcmlwdFJ1
bm5lci0+ZXhlY3V0ZShzY3JpcHRFbGVtZW50LnJlbGVhc2UoKSwgc2NyaXB0U3RhcnRQb3NpdGlv
bik7CisgICAgICAgICAgICBtX3NjcmlwdFJ1bm5lci0+ZXhlY3V0ZShXVEZNb3ZlKHNjcmlwdEVs
ZW1lbnQpLCBzY3JpcHRTdGFydFBvc2l0aW9uKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRUcmFjay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZERhdGFUZXh0VHJhY2suY3BwCmluZGV4IDEzYWNhZDEx
YWVhMDIyYjhlNTBhN2M4MjlhYmY2ZjQ5MWI0ZWNiMGMuLjdiZjI3YWUyMDA2ZDc5Mzg2Nzg4ZTY3
M2RhNjgyMGZlZTA5Yjk4ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
SW5iYW5kRGF0YVRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9J
bmJhbmREYXRhVGV4dFRyYWNrLmNwcApAQCAtNTQsOCArNTQsOCBAQCBJbmJhbmREYXRhVGV4dFRy
YWNrOjp+SW5iYW5kRGF0YVRleHRUcmFjaygpCiAKIHZvaWQgSW5iYW5kRGF0YVRleHRUcmFjazo6
YWRkRGF0YUN1ZShJbmJhbmRUZXh0VHJhY2tQcml2YXRlKiwgY29uc3QgTWVkaWFUaW1lJiBzdGFy
dCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCkKIHsKLSAgICBSZWZQdHI8RGF0YUN1ZT4gY3VlID0gRGF0YUN1ZTo6Y3JlYXRlKCpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksIHN0YXJ0LCBlbmQsIGRhdGEsIGxlbmd0aCk7Ci0gICAgYWRkQ3Vl
KGN1ZS5yZWxlYXNlKCksIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIGF1dG8gY3VlID0gRGF0
YUN1ZTo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHN0YXJ0LCBlbmQsIGRhdGEs
IGxlbmd0aCk7CisgICAgYWRkQ3VlKFdURk1vdmUoY3VlKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7
CiB9CiAKICNpZiBFTkFCTEUoREFUQUNVRV9WQUxVRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwCmluZGV4IDI0OWYxY2NhNGQ4
ZDg0ZTYzZmVlMzFjYzFhNDVlZDJiMzQ2YzI2NWYuLjdkYzAyN2M1NzkyNmNmMDFhN2JlYjhiZTk1
OTFiYWJlNTJjNWQ1ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5i
YW5kR2VuZXJpY1RleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9J
bmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcApAQCAtMjIxLDEzICsyMjEsMTMgQEAgdm9pZCBJbmJh
bmRHZW5lcmljVGV4dFRyYWNrOjpuZXdDdWVzUGFyc2VkKCkKICAgICBwYXJzZXIoKS5nZXROZXdD
dWVzKGN1ZXMpOwogCiAgICAgZm9yIChhdXRvJiBjdWVEYXRhIDogY3VlcykgewotICAgICAgICBS
ZWZQdHI8VlRUQ3VlPiB2dHRDdWUgPSBWVFRDdWU6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCAqY3VlRGF0YSk7CisgICAgICAgIGF1dG8gdnR0Q3VlID0gVlRUQ3VlOjpjcmVhdGUo
KnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKmN1ZURhdGEpOwogCi0gICAgICAgIGlmIChoYXND
dWUodnR0Q3VlLmdldCgpLCBUZXh0VHJhY2tDdWU6Oklnbm9yZUR1cmF0aW9uKSkgeworICAgICAg
ICBpZiAoaGFzQ3VlKHZ0dEN1ZS5wdHIoKSwgVGV4dFRyYWNrQ3VlOjpJZ25vcmVEdXJhdGlvbikp
IHsKICAgICAgICAgICAgIExPRyhNZWRpYSwgIkluYmFuZEdlbmVyaWNUZXh0VHJhY2s6Om5ld0N1
ZXNQYXJzZWQgaWdub3JpbmcgYWxyZWFkeSBhZGRlZCBjdWU6IHN0YXJ0PSUuMmYsIGVuZD0lLjJm
LCBjb250ZW50PVwiJXNcIlxuIiwgdnR0Q3VlLT5zdGFydFRpbWUoKSwgdnR0Q3VlLT5lbmRUaW1l
KCksIHZ0dEN1ZS0+dGV4dCgpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9Ci0gICAgICAgIGFkZEN1ZSh2dHRDdWUucmVsZWFzZSgpLCBBU1NFUlRfTk9fRVhD
RVBUSU9OKTsKKyAgICAgICAgYWRkQ3VlKFdURk1vdmUodnR0Q3VlKSwgQVNTRVJUX05PX0VYQ0VQ
VElPTik7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0lu
YmFuZFdlYlZUVFRleHRUcmFjay5jcHAKaW5kZXggMDlhZWVkNGUxZTU4YWE4OGJhYTU4MDcyY2E5
ZTMxYmU2ZDhhZjI4NC4uOTliNDk0NTg4MTcyMDM2ODNhNThlNThiZjIyM2VlYjY1M2YwMjg4YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJh
Y2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRy
YWNrLmNwcApAQCAtNzYsMTMgKzc2LDEzIEBAIHZvaWQgSW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpu
ZXdDdWVzUGFyc2VkKCkKICAgICBwYXJzZXIoKS5nZXROZXdDdWVzKGN1ZXMpOwogCiAgICAgZm9y
IChhdXRvJiBjdWVEYXRhIDogY3VlcykgewotICAgICAgICBSZWZQdHI8VlRUQ3VlPiB2dHRDdWUg
PSBWVFRDdWU6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqY3VlRGF0YSk7Cisg
ICAgICAgIGF1dG8gdnR0Q3VlID0gVlRUQ3VlOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgKmN1ZURhdGEpOwogCi0gICAgICAgIGlmIChoYXNDdWUodnR0Q3VlLmdldCgpLCBUZXh0
VHJhY2tDdWU6Oklnbm9yZUR1cmF0aW9uKSkgeworICAgICAgICBpZiAoaGFzQ3VlKHZ0dEN1ZS5w
dHIoKSwgVGV4dFRyYWNrQ3VlOjpJZ25vcmVEdXJhdGlvbikpIHsKICAgICAgICAgICAgIExPRyhN
ZWRpYSwgIkluYmFuZFdlYlZUVFRleHRUcmFjazo6bmV3Q3Vlc1BhcnNlZCBpZ25vcmluZyBhbHJl
YWR5IGFkZGVkIGN1ZTogc3RhcnQ9JS4yZiwgZW5kPSUuMmYsIGNvbnRlbnQ9XCIlc1wiXG4iLCB2
dHRDdWUtPnN0YXJ0VGltZSgpLCB2dHRDdWUtPmVuZFRpbWUoKSwgdnR0Q3VlLT50ZXh0KCkudXRm
OCgpLmRhdGEoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgYWRk
Q3VlKHZ0dEN1ZS5yZWxlYXNlKCksIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgICAgICBhZGRD
dWUoV1RGTW92ZSh2dHRDdWUpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICB9CiB9CiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUxpc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVMaXN0LmNwcAppbmRl
eCA2YjM5Mjk5ZGQzOTBhNGI3YzZkNGZiMTNlMDc2MjkwZjJiODFkNjRhLi5mZmQ4ZWFlNGQ5OTM2
NDgwYTZhNWJjMzU5MmZlMDgwYjcxNmUxM2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RleHRUcmFja0N1ZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVGV4dFRyYWNrQ3VlTGlzdC5jcHAKQEAgLTEwMSw5ICsxMDEsOSBAQCBib29sIFRleHRU
cmFja0N1ZUxpc3Q6OmFkZChQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4gcHJwQ3VlLCBzaXplX3Qg
c3RhcnQsIHNpemVfdAogCiAgICAgc2l6ZV90IGluZGV4ID0gKHN0YXJ0ICsgZW5kKSAvIDI7CiAg
ICAgaWYgKGN1ZS0+aXNPcmRlcmVkQmVmb3JlKG1fbGlzdFtpbmRleF0uZ2V0KCkpKQotICAgICAg
ICByZXR1cm4gYWRkKGN1ZS5yZWxlYXNlKCksIHN0YXJ0LCBpbmRleCk7CisgICAgICAgIHJldHVy
biBhZGQoV1RGTW92ZShjdWUpLCBzdGFydCwgaW5kZXgpOwogCi0gICAgcmV0dXJuIGFkZChjdWUu
cmVsZWFzZSgpLCBpbmRleCArIDEsIGVuZCk7CisgICAgcmV0dXJuIGFkZChXVEZNb3ZlKGN1ZSks
IGluZGV4ICsgMSwgZW5kKTsKIH0KIAogYm9vbCBUZXh0VHJhY2tDdWVMaXN0OjpyZW1vdmUoVGV4
dFRyYWNrQ3VlKiBjdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmNwcAppbmRleCAwNTQ4MGNhMjAzYjM4OGQ5YTk1YmQzNDdjODUzYzViNmE0NWJmNjRj
Li5jN2M2ZDZmNGU2OTcwZWFhMWRlYTM1OWYxYjdjZTg2OGIxNWE1OWYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTYzMSw4ICs2MzEs
MTAgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0SW5saW5lU3R5bGVzRm9yTm9kZShFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2QKICAgICAgICAgcmV0dXJuOwogCiAgICAgaW5s
aW5lU3R5bGUgPSBzdHlsZVNoZWV0LT5idWlsZE9iamVjdEZvclN0eWxlKGVsZW1lbnQtPmNzc29t
U3R5bGUoKSk7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+
IGF0dHJpYnV0ZXMgPSBidWlsZE9iamVjdEZvckF0dHJpYnV0ZXNTdHlsZShlbGVtZW50KTsKLSAg
ICBhdHRyaWJ1dGVzU3R5bGUgPSBhdHRyaWJ1dGVzID8gYXR0cmlidXRlcy5yZWxlYXNlKCkgOiBu
dWxscHRyOworICAgIGlmIChhdXRvIGF0dHJpYnV0ZXMgPSBidWlsZE9iamVjdEZvckF0dHJpYnV0
ZXNTdHlsZShlbGVtZW50KSkKKyAgICAgICAgYXR0cmlidXRlc1N0eWxlID0gV1RGTW92ZShhdHRy
aWJ1dGVzKTsKKyAgICBlbHNlCisgICAgICAgIGF0dHJpYnV0ZXNTdHlsZSA9IG51bGxwdHI7CiB9
CiAKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldENvbXB1dGVkU3R5bGVGb3JOb2RlKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3Bl
cnR5Pj4mIHN0eWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5jcHAKaW5kZXggZDBjM2RhMTdhNmM5Y2NkMGQxZDgyOTEyZmMyNTU3NmY2OTgzMTY3Yi4u
ODdkMDJhY2ZjN2ZlMmE1YzI4YjkxMDQ0YTM2ZGU4ZDdlYjAzOWRjNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC00NjIsOCArNDYyLDgg
QEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cHVzaENoaWxkTm9kZXNUb0Zyb250ZW5kKGludCBu
b2RlSWQsIGludCBkZXB0aCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+
PiBjaGlsZHJlbiA9IGJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihub2RlLCBkZXB0aCwg
bm9kZU1hcCk7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnNldENoaWxkTm9kZXMobm9kZUlk
LCBjaGlsZHJlbi5yZWxlYXNlKCkpOworICAgIGF1dG8gY2hpbGRyZW4gPSBidWlsZEFycmF5Rm9y
Q29udGFpbmVyQ2hpbGRyZW4obm9kZSwgZGVwdGgsIG5vZGVNYXApOworICAgIG1fZnJvbnRlbmRE
aXNwYXRjaGVyLT5zZXRDaGlsZE5vZGVzKG5vZGVJZCwgV1RGTW92ZShjaGlsZHJlbikpOwogfQog
CiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaXNjYXJkQmluZGluZ3MoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKaW5kZXgg
ZWJlZGU5ZGY5YTA1MzcwMTY4ZWE0NGNhZTJmMDRjZTg3OGJlZmE3OS4uMzM3MDU0NjdjM2I1YzBh
MTc5NDZkZmUxNjk2NGViZDdmYTUzNDgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCkBAIC0zMzAsNyArMzMwLDcgQEAg
c3RhdGljIFJlZlB0cjxJREJLZXk+IGlkYktleUZyb21JbnNwZWN0b3JPYmplY3QoSW5zcGVjdG9y
T2JqZWN0KiBrZXkpCiAgICAgfSBlbHNlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
cmV0dXJuIGlkYktleS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGlkYktleTsKIH0KIAogc3RhdGlj
IFJlZlB0cjxJREJLZXlSYW5nZT4gaWRiS2V5UmFuZ2VGcm9tS2V5UmFuZ2UoY29uc3QgSW5zcGVj
dG9yT2JqZWN0KiBrZXlSYW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggNDMxNTRiMzk3NGRhN2E5NzlhMjZkMTgyOWM3
MWQ0MTliNjI3Y2Q3NS4uOTE4Njg2ZWEzMmVmMGZlMGJjNDE4NWRiYjgyYjhmMDcxZjhjNDZlZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5jcHAKQEAgLTY4Miw3ICs2ODIsNyBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6bG9h
ZFJlc291cmNlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJgogICAgIC8v
IEluc3BlY3RvclRocmVhZGFibGVMb2FkZXJDbGllbnQgZGVsZXRlcyBpdHNlbGYgd2hlbiB0aGUg
bG9hZCBjb21wbGV0ZXMuCiAgICAgSW5zcGVjdG9yVGhyZWFkYWJsZUxvYWRlckNsaWVudCogaW5z
cGVjdG9yVGhyZWFkYWJsZUxvYWRlckNsaWVudCA9IG5ldyBJbnNwZWN0b3JUaHJlYWRhYmxlTG9h
ZGVyQ2xpZW50KGNhbGxiYWNrLmNvcHlSZWYoKSk7CiAKLSAgICBSZWZQdHI8RG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyPiBsb2FkZXIgPSBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSgq
ZG9jdW1lbnQsICppbnNwZWN0b3JUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LCByZXF1ZXN0LCBvcHRp
b25zKTsKKyAgICBhdXRvIGxvYWRlciA9IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRl
KCpkb2N1bWVudCwgKmluc3BlY3RvclRocmVhZGFibGVMb2FkZXJDbGllbnQsIHJlcXVlc3QsIG9w
dGlvbnMpOwogICAgIGlmICghbG9hZGVyKSB7CiAgICAgICAgIGluc3BlY3RvclRocmVhZGFibGVM
b2FkZXJDbGllbnQtPmRpZEZhaWxMb2FkZXJDcmVhdGlvbigpOwogICAgICAgICByZXR1cm47CkBA
IC02OTIsNyArNjkyLDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmxvYWRSZXNvdXJj
ZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYKICAgICBpZiAoIWNhbGxi
YWNrLT5pc0FjdGl2ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpbnNwZWN0b3JUaHJlYWRh
YmxlTG9hZGVyQ2xpZW50LT5zZXRMb2FkZXIobG9hZGVyLnJlbGVhc2UoKSk7CisgICAgaW5zcGVj
dG9yVGhyZWFkYWJsZUxvYWRlckNsaWVudC0+c2V0TG9hZGVyKFdURk1vdmUobG9hZGVyKSk7CiB9
CiAKIHN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0PiBi
dWlsZE9iamVjdEZvclNlYXJjaFJlc3VsdChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3Qg
U3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCwgaW50IG1hdGNoZXNDb3VudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRl
eCA2ZDU3M2NlOWMxMWZjNWQyM2ZlNzc4ZDU2ZjczNDEzM2E0MjU4YjMzLi43ZGU5OGFhZDI5ODhi
NzZhNmU1NjZiNDAwZWMxZGIwNDc1NWI5ZTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC05MjUsNyArOTI1LDcgQEAgUmVmPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U2VsZWN0b3JMaXN0PiBJbnNwZWN0b3JTdHlsZVNoZWV0
OjpidWlsZE9iamVjdEZvclMKICAgICAgICAgICAgIHNlbGVjdG9ycy0+YWRkSXRlbShidWlsZE9i
amVjdEZvclNlbGVjdG9yKHNlbGVjdG9yLCBlbGVtZW50KSk7CiAgICAgfQogICAgIGF1dG8gcmVz
dWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTZWxlY3Rvckxpc3Q6OmNyZWF0ZSgpCi0g
ICAgICAgIC5zZXRTZWxlY3RvcnMoc2VsZWN0b3JzLnJlbGVhc2UoKSkKKyAgICAgICAgLnNldFNl
bGVjdG9ycyhXVEZNb3ZlKHNlbGVjdG9ycykpCiAgICAgICAgIC5zZXRUZXh0KHNlbGVjdG9yVGV4
dCkKICAgICAgICAgLnJlbGVhc2UoKTsKICAgICBpZiAoc291cmNlRGF0YSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCmluZGV4IGJlYzEyMjNkNzY2Y2EyYjczMGQ4ZTkw
MWM4NWI2MzJmMDMwMGQ2ZTMuLjQxMjA2MDk4MzBkNDM1ZjY0NThkODZmMGEyY2Y3OWNmNjY3YTY0
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcApAQCAtMjM4LDgg
KzIzOCw4IEBAIFJlZjxGb3JtU3VibWlzc2lvbj4gRm9ybVN1Ym1pc3Npb246OmNyZWF0ZShIVE1M
Rm9ybUVsZW1lbnQqIGZvcm0sIGNvbnN0IEF0dHJpYnV0CiAgICAgZm9ybURhdGEtPnNldElkZW50
aWZpZXIoZ2VuZXJhdGVGb3JtRGF0YUlkZW50aWZpZXIoKSk7CiAgICAgZm9ybURhdGEtPnNldENv
bnRhaW5zUGFzc3dvcmREYXRhKGNvbnRhaW5zUGFzc3dvcmREYXRhKTsKICAgICBTdHJpbmcgdGFy
Z2V0T3JCYXNlVGFyZ2V0ID0gY29waWVkQXR0cmlidXRlcy50YXJnZXQoKS5pc0VtcHR5KCkgPyBk
b2N1bWVudC5iYXNlVGFyZ2V0KCkgOiBjb3BpZWRBdHRyaWJ1dGVzLnRhcmdldCgpOwotICAgIFJl
ZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSA9IEZvcm1TdGF0ZTo6Y3JlYXRlKGZvcm0sIGZvcm1W
YWx1ZXMsICZkb2N1bWVudCwgdHJpZ2dlcik7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9y
bVN1Ym1pc3Npb24oY29waWVkQXR0cmlidXRlcy5tZXRob2QoKSwgYWN0aW9uVVJMLCB0YXJnZXRP
ckJhc2VUYXJnZXQsIGVuY29kaW5nVHlwZSwgZm9ybVN0YXRlLnJlbGVhc2UoKSwgZm9ybURhdGEu
cmVsZWFzZSgpLCBib3VuZGFyeSwgbG9ja0hpc3RvcnksIGV2ZW50KSk7CisgICAgYXV0byBmb3Jt
U3RhdGUgPSBGb3JtU3RhdGU6OmNyZWF0ZShmb3JtLCBmb3JtVmFsdWVzLCAmZG9jdW1lbnQsIHRy
aWdnZXIpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvcm1TdWJtaXNzaW9uKGNvcGllZEF0
dHJpYnV0ZXMubWV0aG9kKCksIGFjdGlvblVSTCwgdGFyZ2V0T3JCYXNlVGFyZ2V0LCBlbmNvZGlu
Z1R5cGUsIFdURk1vdmUoZm9ybVN0YXRlKSwgV1RGTW92ZShmb3JtRGF0YSksIGJvdW5kYXJ5LCBs
b2NrSGlzdG9yeSwgZXZlbnQpKTsKIH0KIAogVVJMIEZvcm1TdWJtaXNzaW9uOjpyZXF1ZXN0VVJM
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGQ4NmE0NDU1
YmY3ZjFmZjNjNjM4YWY2ZTc0YjRhOTZjNTg4NGM2NWUuLmQyYmUyMzJlMDZkZmExZTc4YWNlYzA4
NDNjZGFlZWU0Njg2ZDRhZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApA
QCAtODc0LDkgKzg3NCw5IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkxJbnRvQ2hpbGRGcmFt
ZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcmVyLCBGCiAgICAgQVNTRVJUKGNo
aWxkRnJhbWUpOwogCiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCi0g
ICAgUmVmUHRyPEFyY2hpdmU+IHN1YmZyYW1lQXJjaGl2ZSA9IGFjdGl2ZURvY3VtZW50TG9hZGVy
KCktPnBvcEFyY2hpdmVGb3JTdWJmcmFtZShjaGlsZEZyYW1lLT50cmVlKCkudW5pcXVlTmFtZSgp
LCB1cmwpOworICAgIGF1dG8gc3ViZnJhbWVBcmNoaXZlID0gYWN0aXZlRG9jdW1lbnRMb2FkZXIo
KS0+cG9wQXJjaGl2ZUZvclN1YmZyYW1lKGNoaWxkRnJhbWUtPnRyZWUoKS51bmlxdWVOYW1lKCks
IHVybCk7CiAgICAgaWYgKHN1YmZyYW1lQXJjaGl2ZSkgewotICAgICAgICBjaGlsZEZyYW1lLT5s
b2FkZXIoKS5sb2FkQXJjaGl2ZShzdWJmcmFtZUFyY2hpdmUucmVsZWFzZSgpKTsKKyAgICAgICAg
Y2hpbGRGcmFtZS0+bG9hZGVyKCkubG9hZEFyY2hpdmUoV1RGTW92ZShzdWJmcmFtZUFyY2hpdmUp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FSQ0hJVkUp
CkBAIC0xMjE0LDcgKzEyMTQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMKGNvbnN0IEZy
YW1lTG9hZFJlcXVlc3QmIGZyYW1lTG9hZFJlcXVlc3QsIGNvbnN0IFN0cmluZwogICAgIGlmICh0
YXJnZXRGcmFtZSAmJiB0YXJnZXRGcmFtZSAhPSAmbV9mcmFtZSkgewogICAgICAgICBGcmFtZUxv
YWRSZXF1ZXN0IG5ld0ZyYW1lTG9hZFJlcXVlc3QoZnJhbWVMb2FkUmVxdWVzdCk7CiAgICAgICAg
IG5ld0ZyYW1lTG9hZFJlcXVlc3Quc2V0RnJhbWVOYW1lKCJfc2VsZiIpOwotICAgICAgICB0YXJn
ZXRGcmFtZS0+bG9hZGVyKCkubG9hZFVSTChuZXdGcmFtZUxvYWRSZXF1ZXN0LCByZWZlcnJlciwg
bmV3TG9hZFR5cGUsIGV2ZW50LCBmb3JtU3RhdGUucmVsZWFzZSgpKTsKKyAgICAgICAgdGFyZ2V0
RnJhbWUtPmxvYWRlcigpLmxvYWRVUkwobmV3RnJhbWVMb2FkUmVxdWVzdCwgcmVmZXJyZXIsIG5l
d0xvYWRUeXBlLCBldmVudCwgV1RGTW92ZShmb3JtU3RhdGUpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtMTIyNSw3ICsxMjI1LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTChj
b25zdCBGcmFtZUxvYWRSZXF1ZXN0JiBmcmFtZUxvYWRSZXF1ZXN0LCBjb25zdCBTdHJpbmcKIAog
ICAgIGlmICghdGFyZ2V0RnJhbWUgJiYgIWZyYW1lTmFtZS5pc0VtcHR5KCkpIHsKICAgICAgICAg
YWN0aW9uID0gYWN0aW9uLmNvcHlXaXRoU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeShzaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9BcHBseShtX2ZyYW1lLCBmcmFtZUxvYWRSZXF1ZXN0
LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSkpOwotICAgICAgICBwb2xpY3lDaGVja2Vy
KCkuY2hlY2tOZXdXaW5kb3dQb2xpY3koYWN0aW9uLCByZXF1ZXN0LCBmb3JtU3RhdGUucmVsZWFz
ZSgpLCBmcmFtZU5hbWUsIFt0aGlzLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIG9wZW5l
clBvbGljeV0oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1T
dGF0ZT4gZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgTmF2aWdhdGlv
bkFjdGlvbiYgYWN0aW9uLCBib29sIHNob3VsZENvbnRpbnVlKSB7CisgICAgICAgIHBvbGljeUNo
ZWNrZXIoKS5jaGVja05ld1dpbmRvd1BvbGljeShhY3Rpb24sIHJlcXVlc3QsIFdURk1vdmUoZm9y
bVN0YXRlKSwgZnJhbWVOYW1lLCBbdGhpcywgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBv
cGVuZXJQb2xpY3ldKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFzc1JlZlB0cjxG
b3JtU3RhdGU+IGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IE5hdmln
YXRpb25BY3Rpb24mIGFjdGlvbiwgYm9vbCBzaG91bGRDb250aW51ZSkgewogICAgICAgICAgICAg
Y29udGludWVMb2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3kocmVxdWVzdCwgZm9ybVN0YXRlLCBmcmFt
ZU5hbWUsIGFjdGlvbiwgc2hvdWxkQ29udGludWUsIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVS
TCwgb3BlbmVyUG9saWN5KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKQEAgLTEyNDQs
NyArMTI0NCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwoY29uc3QgRnJhbWVMb2FkUmVx
dWVzdCYgZnJhbWVMb2FkUmVxdWVzdCwgY29uc3QgU3RyaW5nCiAgICAgICAgIG9sZERvY3VtZW50
TG9hZGVyLT5zZXRMYXN0Q2hlY2tlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KCkpOwogICAgICAg
ICBwb2xpY3lDaGVja2VyKCkuc3RvcENoZWNrKCk7CiAgICAgICAgIHBvbGljeUNoZWNrZXIoKS5z
ZXRMb2FkVHlwZShuZXdMb2FkVHlwZSk7Ci0gICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05h
dmlnYXRpb25Qb2xpY3kocmVxdWVzdCwgZmFsc2UgLyogZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9u
c2UgKi8sIG9sZERvY3VtZW50TG9hZGVyLmdldCgpLCBmb3JtU3RhdGUucmVsZWFzZSgpLCBbdGhp
c10oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4s
IGJvb2wgc2hvdWxkQ29udGludWUpIHsKKyAgICAgICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmF2
aWdhdGlvblBvbGljeShyZXF1ZXN0LCBmYWxzZSAvKiBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25z
ZSAqLywgb2xkRG9jdW1lbnRMb2FkZXIuZ2V0KCksIFdURk1vdmUoZm9ybVN0YXRlKSwgW3RoaXNd
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBi
b29sIHNob3VsZENvbnRpbnVlKSB7CiAgICAgICAgICAgICBjb250aW51ZUZyYWdtZW50U2Nyb2xs
QWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KHJlcXVlc3QsIHNob3VsZENvbnRpbnVlKTsKICAgICAgICAg
fSk7CiAgICAgICAgIHJldHVybjsKQEAgLTEyNTIsNyArMTI1Miw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OmxvYWRVUkwoY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVMb2FkUmVxdWVzdCwgY29u
c3QgU3RyaW5nCiAKICAgICAvLyBtdXN0IGdyYWIgdGhpcyBub3csIHNpbmNlIHRoaXMgbG9hZCBt
YXkgc3RvcCB0aGUgcHJldmlvdXMgbG9hZCBhbmQgY2xlYXIgdGhpcyBmbGFnCiAgICAgYm9vbCBp
c1JlZGlyZWN0ID0gbV9xdWlja1JlZGlyZWN0Q29taW5nOwotICAgIGxvYWRXaXRoTmF2aWdhdGlv
bkFjdGlvbihyZXF1ZXN0LCBhY3Rpb24sIGxvY2tIaXN0b3J5LCBuZXdMb2FkVHlwZSwgZm9ybVN0
YXRlLnJlbGVhc2UoKSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKKyAgICBsb2FkV2l0
aE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdCwgYWN0aW9uLCBsb2NrSGlzdG9yeSwgbmV3TG9hZFR5
cGUsIFdURk1vdmUoZm9ybVN0YXRlKSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKICAg
ICBpZiAoaXNSZWRpcmVjdCkgewogICAgICAgICBtX3F1aWNrUmVkaXJlY3RDb21pbmcgPSBmYWxz
ZTsKICAgICAgICAgaWYgKG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcikKQEAgLTI3MDIsMTEg
KzI3MDIsMTEgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KGNvbnN0IEZyYW1l
TG9hZFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYKICAgICBpZiAoIWZyYW1lTmFtZS5p
c0VtcHR5KCkpIHsKICAgICAgICAgLy8gVGhlIHNlYXJjaCBmb3IgYSB0YXJnZXQgZnJhbWUgaXMg
ZG9uZSBlYXJsaWVyIGluIHRoZSBjYXNlIG9mIGZvcm0gc3VibWlzc2lvbi4KICAgICAgICAgaWYg
KEZyYW1lKiB0YXJnZXRGcmFtZSA9IGZvcm1TdGF0ZSA/IDAgOiBmaW5kRnJhbWVGb3JOYXZpZ2F0
aW9uKGZyYW1lTmFtZSkpIHsKLSAgICAgICAgICAgIHRhcmdldEZyYW1lLT5sb2FkZXIoKS5sb2Fk
V2l0aE5hdmlnYXRpb25BY3Rpb24od29ya2luZ1Jlc291cmNlUmVxdWVzdCwgYWN0aW9uLCBsb2Nr
SGlzdG9yeSwgbG9hZFR5cGUsIGZvcm1TdGF0ZS5yZWxlYXNlKCksIGFsbG93TmF2aWdhdGlvblRv
SW52YWxpZFVSTCk7CisgICAgICAgICAgICB0YXJnZXRGcmFtZS0+bG9hZGVyKCkubG9hZFdpdGhO
YXZpZ2F0aW9uQWN0aW9uKHdvcmtpbmdSZXNvdXJjZVJlcXVlc3QsIGFjdGlvbiwgbG9ja0hpc3Rv
cnksIGxvYWRUeXBlLCBXVEZNb3ZlKGZvcm1TdGF0ZSksIGFsbG93TmF2aWdhdGlvblRvSW52YWxp
ZFVSTCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBwb2xpY3lD
aGVja2VyKCkuY2hlY2tOZXdXaW5kb3dQb2xpY3koYWN0aW9uLCB3b3JraW5nUmVzb3VyY2VSZXF1
ZXN0LCBmb3JtU3RhdGUucmVsZWFzZSgpLCBmcmFtZU5hbWUsIFt0aGlzLCBhbGxvd05hdmlnYXRp
b25Ub0ludmFsaWRVUkwsIG9wZW5lclBvbGljeV0oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1l
TmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBib29sIHNob3VsZENvbnRpbnVl
KSB7CisgICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05ld1dpbmRvd1BvbGljeShhY3Rpb24s
IHdvcmtpbmdSZXNvdXJjZVJlcXVlc3QsIFdURk1vdmUoZm9ybVN0YXRlKSwgZnJhbWVOYW1lLCBb
dGhpcywgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBvcGVuZXJQb2xpY3ldKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSwg
Y29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwg
Ym9vbCBzaG91bGRDb250aW51ZSkgewogICAgICAgICAgICAgY29udGludWVMb2FkQWZ0ZXJOZXdX
aW5kb3dQb2xpY3kocmVxdWVzdCwgZm9ybVN0YXRlLCBmcmFtZU5hbWUsIGFjdGlvbiwgc2hvdWxk
Q29udGludWUsIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgb3BlbmVyUG9saWN5KTsKICAg
ICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKQEAgLTI3MTQsNyArMjcxNCw3IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdChjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBTdHJpbmcmCiAKICAgICAvLyBtdXN0IGdyYWIgdGhpcyBub3csIHNpbmNlIHRoaXMg
bG9hZCBtYXkgc3RvcCB0aGUgcHJldmlvdXMgbG9hZCBhbmQgY2xlYXIgdGhpcyBmbGFnCiAgICAg
Ym9vbCBpc1JlZGlyZWN0ID0gbV9xdWlja1JlZGlyZWN0Q29taW5nOwotICAgIGxvYWRXaXRoTmF2
aWdhdGlvbkFjdGlvbih3b3JraW5nUmVzb3VyY2VSZXF1ZXN0LCBhY3Rpb24sIGxvY2tIaXN0b3J5
LCBsb2FkVHlwZSwgZm9ybVN0YXRlLnJlbGVhc2UoKSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlk
VVJMKTsKKyAgICBsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24od29ya2luZ1Jlc291cmNlUmVxdWVz
dCwgYWN0aW9uLCBsb2NrSGlzdG9yeSwgbG9hZFR5cGUsIFdURk1vdmUoZm9ybVN0YXRlKSwgYWxs
b3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKICAgICBpZiAoaXNSZWRpcmVjdCkgewogICAgICAg
ICBtX3F1aWNrUmVkaXJlY3RDb21pbmcgPSBmYWxzZTsKICAgICAgICAgaWYgKG1fcHJvdmlzaW9u
YWxEb2N1bWVudExvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9n
cmVzc1RyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5j
cHAKaW5kZXggZDU2Y2EwNWRiOTkwYjMwYTZiMDdkMTJmYjJjMDllOTk2Yjc5NzIwZi4uNzUyZWVm
YzM3ODA2ODRkM2I1NWM2NDllMzAwYjYzOGQ4NjNjZDIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIFByb2dyZXNz
VHJhY2tlcjo6ZmluYWxQcm9ncmVzc0NvbXBsZXRlKCkKIHsKICAgICBMT0coUHJvZ3Jlc3MsICJG
aW5hbCBwcm9ncmVzcyBjb21wbGV0ZSAoJXApIiwgdGhpcyk7CiAgICAgCi0gICAgUmVmUHRyPEZy
YW1lPiBmcmFtZSA9IG1fb3JpZ2luYXRpbmdQcm9ncmVzc0ZyYW1lLnJlbGVhc2UoKTsKKyAgICBh
dXRvIGZyYW1lID0gV1RGTW92ZShtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZSk7CiAgICAgCiAg
ICAgLy8gQmVmb3JlIHJlc2V0dGluZyBwcm9ncmVzcyB2YWx1ZSBiZSBzdXJlIHRvIHNlbmQgY2xp
ZW50IGEgbGVhc3Qgb25lIG5vdGlmaWNhdGlvbgogICAgIC8vIHdpdGggZmluYWwgcHJvZ3Jlc3Mg
dmFsdWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDU5NGNjZTZjYTYzYTdhOTU1M2YwYTEzY2I4NzU1
NmYwNTlhYWY3NGEuLjM3YWM3NWRiZjUwMWM0OGI2NmQwNWJlNDU5NTNhNTYxN2NmOTJlMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
R3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlR3JvdXAuY3BwCkBAIC0zNjksNyArMzY5LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hl
R3JvdXA6OmRpc2Fzc29jaWF0ZURvY3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVyKiBsb2FkZXIp
CiAKICAgICAvLyBSZWxlYXNlIG91ciByZWZlcmVuY2UgdG8gdGhlIG5ld2VzdCBjYWNoZS4gVGhp
cyBjb3VsZCBjYXVzZSB1cyB0byBiZSBkZWxldGVkLgogICAgIC8vIEFueSBvbmdvaW5nIHVwZGF0
ZXMgd2lsbCBiZSBzdG9wcGVkIGZyb20gZGVzdHJ1Y3Rvci4KLSAgICBtX25ld2VzdENhY2hlLnJl
bGVhc2UoKTsKKyAgICBtX25ld2VzdENhY2hlID0gbnVsbHB0cjsKIH0KIAogdm9pZCBBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OmNhY2hlRGVzdHJveWVkKEFwcGxpY2F0aW9uQ2FjaGUqIGNhY2hlKQpA
QCAtNTk0LDcgKzU5NCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hM
b2FkaW5nKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGRvdWJsZSBmaW5pCiAgICAgCiAgICAgQVNT
RVJUKG1fY2FjaGVCZWluZ1VwZGF0ZWQpOwogCi0gICAgbV9jYWNoZUJlaW5nVXBkYXRlZC0+YWRk
UmVzb3VyY2UobV9jdXJyZW50UmVzb3VyY2UucmVsZWFzZSgpKTsKKyAgICBtX2NhY2hlQmVpbmdV
cGRhdGVkLT5hZGRSZXNvdXJjZShXVEZNb3ZlKG1fY3VycmVudFJlc291cmNlKSk7CiAgICAgbV9j
dXJyZW50SGFuZGxlID0gbnVsbHB0cjsKIAogICAgIC8vIFdoaWxlIGRvd25sb2FkaW5nIGNoZWNr
IHRvIHNlZSBpZiB3ZSBoYXZlIGV4Y2VlZGVkIHRoZSBhdmFpbGFibGUgcXVvdGEuCkBAIC04Njgs
NyArODY4LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNoZWNrSWZMb2FkSXNDb21w
bGV0ZSgpCiAKICAgICAgICAgQVNTRVJUKG1fY2FjaGVCZWluZ1VwZGF0ZWQpOwogICAgICAgICBp
ZiAobV9tYW5pZmVzdFJlc291cmNlKQotICAgICAgICAgICAgbV9jYWNoZUJlaW5nVXBkYXRlZC0+
c2V0TWFuaWZlc3RSZXNvdXJjZShtX21hbmlmZXN0UmVzb3VyY2UucmVsZWFzZSgpKTsKKyAgICAg
ICAgICAgIG1fY2FjaGVCZWluZ1VwZGF0ZWQtPnNldE1hbmlmZXN0UmVzb3VyY2UoV1RGTW92ZSht
X21hbmlmZXN0UmVzb3VyY2UpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvLyBXZSBj
YW4gZ2V0IGhlcmUgYXMgYSByZXN1bHQgb2YgcmV0cnlpbmcgdGhlIENvbXBsZXRlIHN0ZXAsIGZv
bGxvd2luZwogICAgICAgICAgICAgLy8gYSBmYWlsdXJlIG9mIHRoZSBjYWNoZSBzdG9yYWdlIHRv
IHNhdmUgdGhlIG5ld2VzdCBjYWNoZSBkdWUgdG8gaGl0dGluZwpAQCAtODg4LDcgKzg4OCw3IEBA
IHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpjaGVja0lmTG9hZElzQ29tcGxldGUoKQogICAg
ICAgICAgICAgZGlkUmVhY2hPcmlnaW5RdW90YSh0b3RhbFNwYWNlTmVlZGVkKTsKIAogICAgICAg
ICBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6RmFpbHVyZVJlYXNvbiBmYWlsdXJlUmVhc29uOwot
ICAgICAgICBzZXROZXdlc3RDYWNoZShtX2NhY2hlQmVpbmdVcGRhdGVkLnJlbGVhc2UoKSk7Cisg
ICAgICAgIHNldE5ld2VzdENhY2hlKFdURk1vdmUobV9jYWNoZUJlaW5nVXBkYXRlZCkpOwogICAg
ICAgICBpZiAobV9zdG9yYWdlLT5zdG9yZU5ld2VzdENhY2hlKHRoaXMsIG9sZE5ld2VzdENhY2hl
LmdldCgpLCBmYWlsdXJlUmVhc29uKSkgewogICAgICAgICAgICAgLy8gTmV3IGNhY2hlIHN0b3Jl
ZCwgbm93IHJlbW92ZSB0aGUgb2xkIGNhY2hlLgogICAgICAgICAgICAgaWYgKG9sZE5ld2VzdENh
Y2hlKQpAQCAtOTE5LDEwICs5MTksMTAgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNo
ZWNrSWZMb2FkSXNDb21wbGV0ZSgpCiAgICAgICAgICAgICAgICAgLy8gc2F2ZSB0aGUgbmV3IGNh
Y2hlLgogCiAgICAgICAgICAgICAgICAgLy8gU2F2ZSBhIHJlZmVyZW5jZSB0byB0aGUgbmV3IGNh
Y2hlLgotICAgICAgICAgICAgICAgIG1fY2FjaGVCZWluZ1VwZGF0ZWQgPSBtX25ld2VzdENhY2hl
LnJlbGVhc2UoKTsKKyAgICAgICAgICAgICAgICBtX2NhY2hlQmVpbmdVcGRhdGVkID0gV1RGTW92
ZShtX25ld2VzdENhY2hlKTsKICAgICAgICAgICAgICAgICBpZiAob2xkTmV3ZXN0Q2FjaGUpIHsK
ICAgICAgICAgICAgICAgICAgICAgLy8gUmVpbnN0YXRlIHRoZSBvbGROZXdlc3RDYWNoZS4KLSAg
ICAgICAgICAgICAgICAgICAgc2V0TmV3ZXN0Q2FjaGUob2xkTmV3ZXN0Q2FjaGUucmVsZWFzZSgp
KTsKKyAgICAgICAgICAgICAgICAgICAgc2V0TmV3ZXN0Q2FjaGUoV1RGTW92ZShvbGROZXdlc3RD
YWNoZSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBzY2hlZHVsZVJlYWNo
ZWRNYXhBcHBDYWNoZVNpemVDYWxsYmFjaygpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAg
LTk0NSw3ICs5NDUsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2hlY2tJZkxvYWRJ
c0NvbXBsZXRlKCkKICAgICAgICAgICAgIC8vIFJlaW5zdGF0ZSB0aGUgb2xkTmV3ZXN0Q2FjaGUs
IGlmIHRoZXJlIHdhcyBvbmUuCiAgICAgICAgICAgICBpZiAob2xkTmV3ZXN0Q2FjaGUpIHsKICAg
ICAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgZGlzY2FyZCB0aGUgZmFpbGVkIG5ldyBjYWNoZS4K
LSAgICAgICAgICAgICAgICBzZXROZXdlc3RDYWNoZShvbGROZXdlc3RDYWNoZS5yZWxlYXNlKCkp
OworICAgICAgICAgICAgICAgIHNldE5ld2VzdENhY2hlKFdURk1vdmUob2xkTmV3ZXN0Q2FjaGUp
KTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gV2UgbXVzdCBoYXZl
IGJlZW4gZGVsZXRlZCBieSB0aGUgbGFzdCBjYWxsIHRvIGRpc2Fzc29jaWF0ZURvY3VtZW50TG9h
ZGVyKCkuCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXgg
NTA0ZGE3ZmZjNGM1ZmNlZDY1YWQ5MjE4NDVlMzc5ZGM0ODY1NDEyYy4uMGRkYTU2NDVkYWFmNDdi
NzEyZjA0MGZmM2JlYmZmOWI3ZGM1YmU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC0xMjEs
MTQgKzEyMSwxNCBAQCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpsb2FkQ2FjaGVHcm91cChjb25zdCBVUkwmIG1hbmlmZQogICAgIAogICAgIHVuc2lnbmVk
IG5ld2VzdENhY2hlU3RvcmFnZUlEID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXRlbWVudC5n
ZXRDb2x1bW5JbnQ2NCgyKSk7CiAKLSAgICBSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gY2FjaGUg
PSBsb2FkQ2FjaGUobmV3ZXN0Q2FjaGVTdG9yYWdlSUQpOworICAgIGF1dG8gY2FjaGUgPSBsb2Fk
Q2FjaGUobmV3ZXN0Q2FjaGVTdG9yYWdlSUQpOwogICAgIGlmICghY2FjaGUpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgICAgICAKICAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGdyb3Vw
ID0gbmV3IEFwcGxpY2F0aW9uQ2FjaGVHcm91cCgqdGhpcywgbWFuaWZlc3RVUkwpOwogICAgICAg
CiAgICAgZ3JvdXAtPnNldFN0b3JhZ2VJRChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhdGVtZW50
LmdldENvbHVtbkludDY0KDApKSk7Ci0gICAgZ3JvdXAtPnNldE5ld2VzdENhY2hlKGNhY2hlLnJl
bGVhc2UoKSk7CisgICAgZ3JvdXAtPnNldE5ld2VzdENhY2hlKFdURk1vdmUoY2FjaGUpKTsKIAog
ICAgIHJldHVybiBncm91cDsKIH0gICAgCkBAIC0yMzksNyArMjM5LDcgQEAgQXBwbGljYXRpb25D
YWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FjaGVHcm91cEZvclVSTChjb25z
dCBVUkwmIHVybCkKICAgICAgICAgLy8gV2UgZm91bmQgYSBjYWNoZSBncm91cCB0aGF0IG1hdGNo
ZXMuIE5vdyBjaGVjayBpZiB0aGUgbmV3ZXN0IGNhY2hlIGhhcyBhIHJlc291cmNlIHdpdGgKICAg
ICAgICAgLy8gYSBtYXRjaGluZyBVUkwuCiAgICAgICAgIHVuc2lnbmVkIG5ld2VzdENhY2hlSUQg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhdGVtZW50LmdldENvbHVtbkludDY0KDIpKTsKLSAg
ICAgICAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IGNhY2hlID0gbG9hZENhY2hlKG5ld2VzdENh
Y2hlSUQpOworICAgICAgICBhdXRvIGNhY2hlID0gbG9hZENhY2hlKG5ld2VzdENhY2hlSUQpOwog
ICAgICAgICBpZiAoIWNhY2hlKQogICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTI1Miw3ICsy
NTIsNyBAQCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpj
YWNoZUdyb3VwRm9yVVJMKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICBBcHBsaWNhdGlvbkNhY2hl
R3JvdXAqIGdyb3VwID0gbmV3IEFwcGxpY2F0aW9uQ2FjaGVHcm91cCgqdGhpcywgbWFuaWZlc3RV
UkwpOwogICAgICAgICAKICAgICAgICAgZ3JvdXAtPnNldFN0b3JhZ2VJRChzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oc3RhdGVtZW50LmdldENvbHVtbkludDY0KDApKSk7Ci0gICAgICAgIGdyb3VwLT5z
ZXROZXdlc3RDYWNoZShjYWNoZS5yZWxlYXNlKCkpOworICAgICAgICBncm91cC0+c2V0TmV3ZXN0
Q2FjaGUoV1RGTW92ZShjYWNoZSkpOwogICAgICAgICAKICAgICAgICAgbV9jYWNoZXNJbk1lbW9y
eS5zZXQoZ3JvdXAtPm1hbmlmZXN0VVJMKCksIGdyb3VwKTsKICAgICAgICAgCkBAIC0zMDksNyAr
MzA5LDcgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
ZmFsbGJhY2tDYWNoZUdyb3VwRm9yVVJMKGNvbnN0IFUKICAgICAgICAgLy8gV2UgZm91bmQgYSBj
YWNoZSBncm91cCB0aGF0IG1hdGNoZXMuIE5vdyBjaGVjayBpZiB0aGUgbmV3ZXN0IGNhY2hlIGhh
cyBhIHJlc291cmNlIHdpdGgKICAgICAgICAgLy8gYSBtYXRjaGluZyBmYWxsYmFjayBuYW1lc3Bh
Y2UuCiAgICAgICAgIHVuc2lnbmVkIG5ld2VzdENhY2hlSUQgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oc3RhdGVtZW50LmdldENvbHVtbkludDY0KDIpKTsKLSAgICAgICAgUmVmUHRyPEFwcGxpY2F0
aW9uQ2FjaGU+IGNhY2hlID0gbG9hZENhY2hlKG5ld2VzdENhY2hlSUQpOworICAgICAgICBhdXRv
IGNhY2hlID0gbG9hZENhY2hlKG5ld2VzdENhY2hlSUQpOwogCiAgICAgICAgIFVSTCBmYWxsYmFj
a1VSTDsKICAgICAgICAgaWYgKGNhY2hlLT5pc1VSTEluT25saW5lV2hpdGVsaXN0KHVybCkpCkBA
IC0zMjIsNyArMzIyLDcgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6ZmFsbGJhY2tDYWNoZUdyb3VwRm9yVVJMKGNvbnN0IFUKICAgICAgICAgQXBwbGlj
YXRpb25DYWNoZUdyb3VwKiBncm91cCA9IG5ldyBBcHBsaWNhdGlvbkNhY2hlR3JvdXAoKnRoaXMs
IG1hbmlmZXN0VVJMKTsKICAgICAgICAgCiAgICAgICAgIGdyb3VwLT5zZXRTdG9yYWdlSUQoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXRlbWVudC5nZXRDb2x1bW5JbnQ2NCgwKSkpOwotICAgICAg
ICBncm91cC0+c2V0TmV3ZXN0Q2FjaGUoY2FjaGUucmVsZWFzZSgpKTsKKyAgICAgICAgZ3JvdXAt
PnNldE5ld2VzdENhY2hlKFdURk1vdmUoY2FjaGUpKTsKICAgICAgICAgCiAgICAgICAgIG1fY2Fj
aGVzSW5NZW1vcnkuc2V0KGdyb3VwLT5tYW5pZmVzdFVSTCgpLCBncm91cCk7CiAgICAgICAgIApA
QCAtMTExOSw3ICsxMTE5LDcgQEAgUGFzc1JlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2UKICAgICAKICAgICBj
YWNoZVN0YXRlbWVudC5iaW5kSW50NjQoMSwgc3RvcmFnZUlEKTsKIAotICAgIFJlZlB0cjxBcHBs
aWNhdGlvbkNhY2hlPiBjYWNoZSA9IEFwcGxpY2F0aW9uQ2FjaGU6OmNyZWF0ZSgpOworICAgIGF1
dG8gY2FjaGUgPSBBcHBsaWNhdGlvbkNhY2hlOjpjcmVhdGUoKTsKIAogICAgIFN0cmluZyBmbGF0
RmlsZURpcmVjdG9yeSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2NhY2hlRGlyZWN0b3J5
LCBtX2ZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7CiAKQEAgLTExMzQsNyArMTEzNCw3IEBAIFBh
c3NSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRD
YWNoZSh1bnNpZ25lZCBzdG9yYWdlCiAgICAgICAgIFZlY3RvcjxjaGFyPiBibG9iOwogICAgICAg
ICBjYWNoZVN0YXRlbWVudC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoNiwgYmxvYik7CiAgICAgICAg
IAotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhID0gU2hhcmVkQnVmZmVyOjphZG9w
dFZlY3RvcihibG9iKTsKKyAgICAgICAgYXV0byBkYXRhID0gU2hhcmVkQnVmZmVyOjphZG9wdFZl
Y3RvcihibG9iKTsKICAgICAgICAgCiAgICAgICAgIFN0cmluZyBwYXRoID0gY2FjaGVTdGF0ZW1l
bnQuZ2V0Q29sdW1uVGV4dCg3KTsKICAgICAgICAgbG9uZyBsb25nIHNpemUgPSAwOwpAQCAtMTE1
NCwxMiArMTE1NCwxMiBAQCBQYXNzUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IEFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUodW5zaWduZWQgc3RvcmFnZQogICAgICAgICBTdHJpbmcg
aGVhZGVycyA9IGNhY2hlU3RhdGVtZW50LmdldENvbHVtblRleHQoNSk7CiAgICAgICAgIHBhcnNl
SGVhZGVycyhoZWFkZXJzLCByZXNwb25zZSk7CiAgICAgICAgIAotICAgICAgICBSZWZQdHI8QXBw
bGljYXRpb25DYWNoZVJlc291cmNlPiByZXNvdXJjZSA9IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZTo6Y3JlYXRlKHVybCwgcmVzcG9uc2UsIHR5cGUsIGRhdGEucmVsZWFzZSgpLCBwYXRoKTsKKyAg
ICAgICAgYXV0byByZXNvdXJjZSA9IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKHVy
bCwgcmVzcG9uc2UsIHR5cGUsIFdURk1vdmUoZGF0YSksIHBhdGgpOwogCiAgICAgICAgIGlmICh0
eXBlICYgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpNYW5pZmVzdCkKLSAgICAgICAgICAgIGNh
Y2hlLT5zZXRNYW5pZmVzdFJlc291cmNlKHJlc291cmNlLnJlbGVhc2UoKSk7CisgICAgICAgICAg
ICBjYWNoZS0+c2V0TWFuaWZlc3RSZXNvdXJjZShXVEZNb3ZlKHJlc291cmNlKSk7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIGNhY2hlLT5hZGRSZXNvdXJjZShyZXNvdXJjZS5yZWxlYXNlKCkp
OworICAgICAgICAgICAgY2FjaGUtPmFkZFJlc291cmNlKFdURk1vdmUocmVzb3VyY2UpKTsKICAg
ICB9CiAKICAgICBpZiAocmVzdWx0ICE9IFNRTElURV9ET05FKQpAQCAtMTIxNyw3ICsxMjE3LDcg
QEAgUGFzc1JlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
bG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2UKICAgICAKICAgICBjYWNoZS0+c2V0U3RvcmFnZUlE
KHN0b3JhZ2VJRCk7CiAKLSAgICByZXR1cm4gY2FjaGUucmVsZWFzZSgpOworICAgIHJldHVybiBX
VEZNb3ZlKGNhY2hlKTsKIH0gICAgCiAgICAgCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjpyZW1vdmUoQXBwbGljYXRpb25DYWNoZSogY2FjaGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uY3BwCmlu
ZGV4IDdlZWU3ODM2MGM5OTU4NDU3ODRhMTAzOWZhNWQ4YzYzOTAwYjEzMTYuLjk4ZjZjMWUyZmEx
ZDRhNTA5MTMwMGQ1ODc4MDQ0MjExZDhmN2IyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uY3BwCkBA
IC03Niw5ICs3Niw5IEBAIEFyY2hpdmVSZXNvdXJjZSogQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlv
bjo6YXJjaGl2ZVJlc291cmNlRm9yVVJMKGNvbnN0IFVSTCYgdXJsCiAKIFBhc3NSZWZQdHI8QXJj
aGl2ZT4gQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjo6cG9wU3ViZnJhbWVBcmNoaXZlKGNvbnN0
IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBVUkwmIHVybCkKIHsKLSAgICBSZWZQdHI8QXJjaGl2
ZT4gYXJjaGl2ZSA9IG1fc3ViZnJhbWVzLnRha2UoZnJhbWVOYW1lKTsKKyAgICBhdXRvIGFyY2hp
dmUgPSBtX3N1YmZyYW1lcy50YWtlKGZyYW1lTmFtZSk7CiAgICAgaWYgKGFyY2hpdmUpCi0gICAg
ICAgIHJldHVybiBhcmNoaXZlLnJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoYXJj
aGl2ZSk7CiAKICAgICByZXR1cm4gbV9zdWJmcmFtZXMudGFrZSh1cmwuc3RyaW5nKCkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJj
aGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNo
aXZlLmNwcAppbmRleCA2ZjVmZWZlZGRkNDBhOTJlMTQ1ZmRkMWQxMmNmNWFjNzM5ZDdjOWNhLi5l
MDQ5MDYzMDA4MWEwMTJhNDMzMzI2YmUyNDIzMTgyN2RkZmNlOTcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAt
MzM0LDggKzMzNCw4IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25h
cnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChSZWZQdHI8QXJjaGl2ZVJlc291
cmNlPiBzdWJyZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHN1YnJlc291cmNlRGljdCkpCi0gICAg
ICAgICAgICAgICAgYWRkU3VicmVzb3VyY2Uoc3VicmVzb3VyY2UucmVsZWFzZSgpKTsKKyAgICAg
ICAgICAgIGlmIChhdXRvIHN1YnJlc291cmNlID0gY3JlYXRlUmVzb3VyY2Uoc3VicmVzb3VyY2VE
aWN0KSkKKyAgICAgICAgICAgICAgICBhZGRTdWJyZXNvdXJjZShXVEZNb3ZlKHN1YnJlc291cmNl
KSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCkBAIC0zNTQsOSArMzU0LDkgQEAgYm9vbCBMZWdh
Y3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAg
ICAgICAgICAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IHN1YmZyYW1lQXJjaGl2ZSA9IGNyZWF0
ZSgpOworICAgICAgICAgICAgYXV0byBzdWJmcmFtZUFyY2hpdmUgPSBjcmVhdGUoKTsKICAgICAg
ICAgICAgIGlmIChzdWJmcmFtZUFyY2hpdmUtPmV4dHJhY3Qoc3ViZnJhbWVEaWN0KSkKLSAgICAg
ICAgICAgICAgICBhZGRTdWJmcmFtZUFyY2hpdmUoc3ViZnJhbWVBcmNoaXZlLnJlbGVhc2UoKSk7
CisgICAgICAgICAgICAgICAgYWRkU3ViZnJhbWVBcmNoaXZlKFdURk1vdmUoc3ViZnJhbWVBcmNo
aXZlKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAi
TGVnYWN5V2ViQXJjaGl2ZSAtIEludmFsaWQgc3ViZnJhbWUgYXJjaGl2ZSBza2lwcGVkIik7CiAg
ICAgICAgIH0KQEAgLTU0Nyw4ICs1NDcsOCBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5nLCBGcgogICAg
ICAgICBjb25zdCBTdHJpbmcmIGljb25VUkwgPSBpY29uRGF0YWJhc2UoKS5zeW5jaHJvbm91c0lj
b25VUkxGb3JQYWdlVVJMKHJlc3BvbnNlVVJMKTsKICAgICAgICAgaWYgKCFpY29uVVJMLmlzRW1w
dHkoKSAmJiBpY29uRGF0YWJhc2UoKS5zeW5jaHJvbm91c0ljb25EYXRhS25vd25Gb3JJY29uVVJM
KGljb25VUkwpKSB7CiAgICAgICAgICAgICBpZiAoSW1hZ2UqIGljb25JbWFnZSA9IGljb25EYXRh
YmFzZSgpLnN5bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwocmVzcG9uc2VVUkwsIEludFNpemUoMTYs
IDE2KSkpIHsKLSAgICAgICAgICAgICAgICBpZiAoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gcmVz
b3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShpY29uSW1hZ2UtPmRhdGEoKSwgVVJMKFBh
cnNlZFVSTFN0cmluZywgaWNvblVSTCksICJpbWFnZS94LWljb24iLCAiIiwgIiIpKQotICAgICAg
ICAgICAgICAgICAgICBzdWJyZXNvdXJjZXMuYXBwZW5kKHJlc291cmNlLnJlbGVhc2UoKSk7Cisg
ICAgICAgICAgICAgICAgaWYgKGF1dG8gcmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0
ZShpY29uSW1hZ2UtPmRhdGEoKSwgVVJMKFBhcnNlZFVSTFN0cmluZywgaWNvblVSTCksICJpbWFn
ZS94LWljb24iLCAiIiwgIiIpKQorICAgICAgICAgICAgICAgICAgICBzdWJyZXNvdXJjZXMuYXBw
ZW5kKFdURk1vdmUocmVzb3VyY2UpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
QEAgLTU4Miw5ICs1ODIsOSBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJj
aGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiAgICAgLy8gV3JhcCB0aGUg
ZnJhbWVzZXQgZG9jdW1lbnQgaW4gYW4gaWZyYW1lIHNvIGl0IGNhbiBiZSBwYXN0ZWQgaW50bwog
ICAgIC8vIGFub3RoZXIgZG9jdW1lbnQgKHdoaWNoIHdpbGwgaGF2ZSBhIGJvZHkgb3IgZnJhbWVz
ZXQgb2YgaXRzIG93bikuIAogICAgIFN0cmluZyBpZnJhbWVNYXJrdXAgPSAiPGlmcmFtZSBmcmFt
ZWJvcmRlcj1cIm5vXCIgbWFyZ2lud2lkdGg9XCIwXCIgbWFyZ2luaGVpZ2h0PVwiMFwiIHdpZHRo
PVwiOTglJVwiIGhlaWdodD1cIjk4JSVcIiBzcmM9XCIiICsgZnJhbWUtPmxvYWRlcigpLmRvY3Vt
ZW50TG9hZGVyKCktPnJlc3BvbnNlKCkudXJsKCkuc3RyaW5nKCkgKyAiXCI+PC9pZnJhbWU+IjsK
LSAgICBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBpZnJhbWVSZXNvdXJjZSA9IEFyY2hpdmVSZXNv
dXJjZTo6Y3JlYXRlKHV0ZjhCdWZmZXIoaWZyYW1lTWFya3VwKSwgYmxhbmtVUkwoKSwgInRleHQv
aHRtbCIsICJVVEYtOCIsIFN0cmluZygpKTsKKyAgICBhdXRvIGlmcmFtZVJlc291cmNlID0gQXJj
aGl2ZVJlc291cmNlOjpjcmVhdGUodXRmOEJ1ZmZlcihpZnJhbWVNYXJrdXApLCBibGFua1VSTCgp
LCAidGV4dC9odG1sIiwgIlVURi04IiwgU3RyaW5nKCkpOwogCi0gICAgcmV0dXJuIGNyZWF0ZShp
ZnJhbWVSZXNvdXJjZS5yZWxlYXNlKCksIFZlY3RvcjxSZWZQdHI8QXJjaGl2ZVJlc291cmNlPj4o
KSwgVmVjdG9yPFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPj4geyBhcmNoaXZlIH0pOworICAgIHJl
dHVybiBjcmVhdGUoV1RGTW92ZShpZnJhbWVSZXNvdXJjZSksIFZlY3RvcjxSZWZQdHI8QXJjaGl2
ZVJlc291cmNlPj4oKSwgVmVjdG9yPFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPj4geyBhcmNoaXZl
IH0pOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNw
cAppbmRleCA0ZjU0NTI1NGRjODkyNDYxZDkyYWNkZDQ2MmY3NjQzZDlkNjRlZTc1Li45NmVlZjdm
ZTk3MGJlMTlhNWRlZDA4N2ZlOWZlN2ZiNWZkMzg5YTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTMzNCw5ICszMzQsOSBAQCBpbmxpbmUgdm9p
ZCBDYWNoZWRJbWFnZTo6Y3JlYXRlSW1hZ2UoKQogICAgICAgICBtX2ltYWdlID0gUERGRG9jdW1l
bnRJbWFnZTo6Y3JlYXRlKHRoaXMpOwogI2VuZGlmCiAgICAgZWxzZSBpZiAobV9yZXNwb25zZS5t
aW1lVHlwZSgpID09ICJpbWFnZS9zdmcreG1sIikgewotICAgICAgICBSZWZQdHI8U1ZHSW1hZ2U+
IHN2Z0ltYWdlID0gU1ZHSW1hZ2U6OmNyZWF0ZSgqdGhpcywgdXJsKCkpOwotICAgICAgICBtX3N2
Z0ltYWdlQ2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0ltYWdlQ2FjaGU+KHN2Z0ltYWdlLmdl
dCgpKTsKLSAgICAgICAgbV9pbWFnZSA9IHN2Z0ltYWdlLnJlbGVhc2UoKTsKKyAgICAgICAgYXV0
byBzdmdJbWFnZSA9IFNWR0ltYWdlOjpjcmVhdGUoKnRoaXMsIHVybCgpKTsKKyAgICAgICAgbV9z
dmdJbWFnZUNhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdJbWFnZUNhY2hlPihzdmdJbWFnZS5w
dHIoKSk7CisgICAgICAgIG1faW1hZ2UgPSBXVEZNb3ZlKHN2Z0ltYWdlKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBtX2ltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSh0aGlzKTsKICAgICAgICAg
ZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCptX2ltYWdlKS5zZXRBbGxvd1N1YnNhbXBsaW5nKG1fbG9h
ZGVyICYmIG1fbG9hZGVyLT5mcmFtZUxvYWRlcigpLT5mcmFtZSgpLnNldHRpbmdzKCkuaW1hZ2VT
dWJzYW1wbGluZ0VuYWJsZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aWNvbi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRh
dGFiYXNlLmNwcAppbmRleCBlMWVkYTVjYWExZDAwNWMwY2RlYTExM2M2NWIwNTk4Mzk1MzRmMDcy
Li5lZTQzN2U4NjI4ZWJmNGU4NjMyN2NjNzcwMzBmNWY2OTRlMzBiYjJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKQEAgLTU1OCw3ICs1NTgsNyBAQCB2
b2lkIEljb25EYXRhYmFzZTo6c2V0SWNvbkRhdGFGb3JJY29uVVJMKFBhc3NSZWZQdHI8U2hhcmVk
QnVmZmVyPiBkYXRhT3JpZ2luYWwsCiAgICAgICAgICAgICBpY29uID0gZ2V0T3JDcmVhdGVJY29u
UmVjb3JkKGljb25VUkwpOwogICAgIAogICAgICAgICAvLyBVcGRhdGUgdGhlIGRhdGEgYW5kIHNl
dCB0aGUgdGltZSBzdGFtcAotICAgICAgICBpY29uLT5zZXRJbWFnZURhdGEoZGF0YS5yZWxlYXNl
KCkpOworICAgICAgICBpY29uLT5zZXRJbWFnZURhdGEoV1RGTW92ZShkYXRhKSk7CiAgICAgICAg
IGljb24tPnNldFRpbWVzdGFtcCgoaW50KWN1cnJlbnRUaW1lKCkpOwogICAgICAgICAKICAgICAg
ICAgLy8gQ29weSB0aGUgY3VycmVudCByZXRhaW5pbmcgcGFnZVVSTHMgLSBpZiBhbnkgLSB0byBu
b3RpZnkgdGhlbSBvZiB0aGUgY2hhbmdlCkBAIC04OTMsMTAgKzg5MywxMCBAQCBQYXNzUmVmUHRy
PEljb25SZWNvcmQ+IEljb25EYXRhYmFzZTo6Z2V0T3JDcmVhdGVJY29uUmVjb3JkKGNvbnN0IFN0
cmluZyYgaWNvblVSTAogICAgIGlmIChJY29uUmVjb3JkKiBpY29uID0gbV9pY29uVVJMVG9SZWNv
cmRNYXAuZ2V0KGljb25VUkwpKQogICAgICAgICByZXR1cm4gaWNvbjsKIAotICAgIFJlZlB0cjxJ
Y29uUmVjb3JkPiBuZXdJY29uID0gSWNvblJlY29yZDo6Y3JlYXRlKGljb25VUkwpOwotICAgIG1f
aWNvblVSTFRvUmVjb3JkTWFwLnNldChpY29uVVJMLCBuZXdJY29uLmdldCgpKTsKKyAgICBhdXRv
IG5ld0ljb24gPSBJY29uUmVjb3JkOjpjcmVhdGUoaWNvblVSTCk7CisgICAgbV9pY29uVVJMVG9S
ZWNvcmRNYXAuc2V0KGljb25VUkwsIG5ld0ljb24ucHRyKCkpOwogCi0gICAgcmV0dXJuIG5ld0lj
b24ucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKG5ld0ljb24pOwogfQogCiAvLyBUaGlz
IG1ldGhvZCByZXRyaWV2ZXMgdGhlIGV4aXN0aW5nIFBhZ2VVUkxSZWNvcmQsIG9yIGNyZWF0ZXMg
YSBuZXcgb25lIGFuZCBtYXJrcyBpdCBhcyAiaW50ZXJlc3RlZCBpbiB0aGUgaW1wb3J0IiBmb3Ig
bGF0ZXIgbm90aWZpY2F0aW9uCkBAIC0xNDkzLDcgKzE0OTMsNyBAQCBib29sIEljb25EYXRhYmFz
ZTo6cmVhZEZyb21EYXRhYmFzZSgpCiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGljb25zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGRpZEFueVdvcmsgPSB0cnVlOwotICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZURhdGEgPSBnZXRJbWFnZURhdGFGb3JJY29uVVJM
RnJvbVNRTERhdGFiYXNlKGljb25zW2ldLT5pY29uVVJMKCkpOworICAgICAgICBhdXRvIGltYWdl
RGF0YSA9IGdldEltYWdlRGF0YUZvckljb25VUkxGcm9tU1FMRGF0YWJhc2UoaWNvbnNbaV0tPmlj
b25VUkwoKSk7CiAKICAgICAgICAgLy8gVmVyaWZ5IHRoaXMgaWNvbiBzdGlsbCB3YW50cyB0byBi
ZSByZWFkIGZyb20gZGlzawogICAgICAgICB7CkBAIC0xNTAzLDcgKzE1MDMsNyBAQCBib29sIElj
b25EYXRhYmFzZTo6cmVhZEZyb21EYXRhYmFzZSgpCiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgaWYgKG1faWNvbnNQZW5kaW5nUmVhZGluZy5jb250YWlucyhpY29uc1tpXSkpIHsK
ICAgICAgICAgICAgICAgICAgICAgLy8gU2V0IHRoZSBuZXcgZGF0YQotICAgICAgICAgICAgICAg
ICAgICBpY29uc1tpXS0+c2V0SW1hZ2VEYXRhKGltYWdlRGF0YS5yZWxlYXNlKCkpOworICAgICAg
ICAgICAgICAgICAgICBpY29uc1tpXS0+c2V0SW1hZ2VEYXRhKFdURk1vdmUoaW1hZ2VEYXRhKSk7
CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAvLyBSZW1vdmUgdGhp
cyBpY29uIGZyb20gdGhlIHNldCB0aGF0IG5lZWRzIHRvIGJlIHJlYWQKICAgICAgICAgICAgICAg
ICAgICAgbV9pY29uc1BlbmRpbmdSZWFkaW5nLnJlbW92ZShpY29uc1tpXSk7CkBAIC0xOTM2LDcg
KzE5MzYsNyBAQCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSWNvbkRhdGFiYXNlOjpnZXRJbWFn
ZURhdGFGb3JJY29uVVJMRnJvbVNRTERhdGFiYXNlKGNvbgogCiAgICAgbV9nZXRJbWFnZURhdGFG
b3JJY29uVVJMU3RhdGVtZW50LT5yZXNldCgpOwogICAgIAotICAgIHJldHVybiBpbWFnZURhdGEu
cmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKGltYWdlRGF0YSk7CiB9CiAKIHZvaWQgSWNv
bkRhdGFiYXNlOjpyZW1vdmVJY29uRnJvbVNRTERhdGFiYXNlKGNvbnN0IFN0cmluZyYgaWNvblVS
TCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCAxMTliZDQ2YTBkNmZjM2QzNTMyYTk4
MjRkNzQ1Y2FmNDIxYTdkOTViLi5lYTlhZDQyMDlhYTcyZDgyNTAyNzlhNzE0ZWUwNDc3NjY3NTM0
MDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC04MTIsMTMgKzgxMiwxMyBAQCBT
dG9yYWdlKiBET01XaW5kb3c6OnNlc3Npb25TdG9yYWdlKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25z
dAogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8U3RvcmFn
ZUFyZWE+IHN0b3JhZ2VBcmVhID0gcGFnZS0+c2Vzc2lvblN0b3JhZ2UoKS0+c3RvcmFnZUFyZWEo
ZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpOworICAgIGF1dG8gc3RvcmFnZUFyZWEgPSBwYWdl
LT5zZXNzaW9uU3RvcmFnZSgpLT5zdG9yYWdlQXJlYShkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4o
KSk7CiAgICAgaWYgKCFzdG9yYWdlQXJlYS0+Y2FuQWNjZXNzU3RvcmFnZShtX2ZyYW1lKSkgewog
ICAgICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0g
ICAgbV9zZXNzaW9uU3RvcmFnZSA9IFN0b3JhZ2U6OmNyZWF0ZShtX2ZyYW1lLCBzdG9yYWdlQXJl
YS5yZWxlYXNlKCkpOworICAgIG1fc2Vzc2lvblN0b3JhZ2UgPSBTdG9yYWdlOjpjcmVhdGUobV9m
cmFtZSwgV1RGTW92ZShzdG9yYWdlQXJlYSkpOwogICAgIHJldHVybiBtX3Nlc3Npb25TdG9yYWdl
LmdldCgpOwogfQogCkBAIC04NTgsMTQgKzg1OCwxNCBAQCBTdG9yYWdlKiBET01XaW5kb3c6Omxv
Y2FsU3RvcmFnZShFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKICAgICBpZiAoIXBhZ2UtPnNldHRp
bmdzKCkubG9jYWxTdG9yYWdlRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIFJlZlB0cjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEgPSBwYWdlLT5zdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXIoKS5sb2NhbFN0b3JhZ2VBcmVhKCpkb2N1bWVudCk7CisgICAgYXV0byBzdG9y
YWdlQXJlYSA9IHBhZ2UtPnN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigpLmxvY2FsU3RvcmFnZUFy
ZWEoKmRvY3VtZW50KTsKIAogICAgIGlmICghc3RvcmFnZUFyZWEtPmNhbkFjY2Vzc1N0b3JhZ2Uo
bV9mcmFtZSkpIHsKICAgICAgICAgZWMgPSBTRUNVUklUWV9FUlI7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAotICAgIG1fbG9jYWxTdG9yYWdlID0gU3RvcmFnZTo6Y3JlYXRlKG1f
ZnJhbWUsIHN0b3JhZ2VBcmVhLnJlbGVhc2UoKSk7CisgICAgbV9sb2NhbFN0b3JhZ2UgPSBTdG9y
YWdlOjpjcmVhdGUobV9mcmFtZSwgV1RGTW92ZShzdG9yYWdlQXJlYSkpOwogICAgIHJldHVybiBt
X2xvY2FsU3RvcmFnZS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CmluZGV4IDIxMTU1MzE4NGNlYzY3ZTBlNTllOTcyYjUzZDYxOGJkN2M5ZDJhZDQuLmVmZGVlZDEz
NzJlZjA4ODY5NjNlZTU0ZmMyZDY2YjZiZWNmMzc3YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5jcHAKQEAgLTIyNzgsNyArMjI3OCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjp1cGRh
dGVEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBEYXRhVHJhbnNm
CiAgICAgICAgICAgICBtX3Nob3VsZE9ubHlGaXJlRHJhZ092ZXJFdmVudCA9IGZhbHNlOwogICAg
ICAgICB9CiAgICAgfQotICAgIG1fZHJhZ1RhcmdldCA9IG5ld1RhcmdldC5yZWxlYXNlKCk7Cisg
ICAgbV9kcmFnVGFyZ2V0ID0gV1RGTW92ZShuZXdUYXJnZXQpOwogICAgIHJldHVybiBhY2NlcHQ7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0
ZUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVB
bmltYXRpb24uY3BwCmluZGV4IGVkMTliNjEzOWMzYTkxMmFlODg4NzQwYWExMzBhNzI0MTY4ZTA0
NjAuLjJmN2IxYWQwYTVkZjYxOWFjNGUzNzBmYjk1M2Y2ODk0ODU1MGFkNWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcApA
QCAtMTY4LDkgKzE2OCw5IEBAIHZvaWQgQ29tcG9zaXRlQW5pbWF0aW9uOjp1cGRhdGVUcmFuc2l0
aW9ucyhSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgUmVuZGVyCiAgICAgICAgICAgICAg
ICAgLy8gPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDc4Nz4KICAg
ICAgICAgICAgICAgICBpZiAoIWVxdWFsICYmIGlzQWN0aXZlVHJhbnNpdGlvbikgewogICAgICAg
ICAgICAgICAgICAgICAvLyBBZGQgdGhlIG5ldyB0cmFuc2l0aW9uCi0gICAgICAgICAgICAgICAg
ICAgIFJlZlB0cjxJbXBsaWNpdEFuaW1hdGlvbj4gaW1wbGljaXRBbmltYXRpb24gPSBJbXBsaWNp
dEFuaW1hdGlvbjo6Y3JlYXRlKGFuaW1hdGlvbiwgcHJvcCwgcmVuZGVyZXIsIHRoaXMsIG1vZGlm
aWVkQ3VycmVudFN0eWxlID8gbW9kaWZpZWRDdXJyZW50U3R5bGUuZ2V0KCkgOiBmcm9tU3R5bGUp
OwotICAgICAgICAgICAgICAgICAgICBMT0coQW5pbWF0aW9ucywgIkNyZWF0ZWQgSW1wbGljaXRB
bmltYXRpb24gJXAgb24gcmVuZGVyZXIgJXAgZm9yIHByb3BlcnR5ICVzIGR1cmF0aW9uICUuMmYg
ZGVsYXkgJS4yZiIsIGltcGxpY2l0QW5pbWF0aW9uLmdldCgpLCByZW5kZXJlciwgZ2V0UHJvcGVy
dHlOYW1lKHByb3ApLCBhbmltYXRpb24uZHVyYXRpb24oKSwgYW5pbWF0aW9uLmRlbGF5KCkpOwot
ICAgICAgICAgICAgICAgICAgICBtX3RyYW5zaXRpb25zLnNldChwcm9wLCBpbXBsaWNpdEFuaW1h
dGlvbi5yZWxlYXNlKCkpOworICAgICAgICAgICAgICAgICAgICBhdXRvIGltcGxpY2l0QW5pbWF0
aW9uID0gSW1wbGljaXRBbmltYXRpb246OmNyZWF0ZShhbmltYXRpb24sIHByb3AsIHJlbmRlcmVy
LCB0aGlzLCBtb2RpZmllZEN1cnJlbnRTdHlsZSA/IG1vZGlmaWVkQ3VycmVudFN0eWxlLmdldCgp
IDogZnJvbVN0eWxlKTsKKyAgICAgICAgICAgICAgICAgICAgTE9HKEFuaW1hdGlvbnMsICJDcmVh
dGVkIEltcGxpY2l0QW5pbWF0aW9uICVwIG9uIHJlbmRlcmVyICVwIGZvciBwcm9wZXJ0eSAlcyBk
dXJhdGlvbiAlLjJmIGRlbGF5ICUuMmYiLCBpbXBsaWNpdEFuaW1hdGlvbi5wdHIoKSwgcmVuZGVy
ZXIsIGdldFByb3BlcnR5TmFtZShwcm9wKSwgYW5pbWF0aW9uLmR1cmF0aW9uKCksIGFuaW1hdGlv
bi5kZWxheSgpKTsKKyAgICAgICAgICAgICAgICAgICAgbV90cmFuc2l0aW9ucy5zZXQocHJvcCwg
V1RGTW92ZShpbXBsaWNpdEFuaW1hdGlvbikpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IG5lZWQgb25lIHBhc3MgZm9yIHRo
ZSBzaW5nbGUgcHJvcCBjYXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5LmNwcAppbmRleCA5OWM3NmFiMmMxNDYxYTRiY2IxZjBhMjFlNDQ2OTAw
OTliYTQwZDViLi5lOThmYzc0NjI5ZTliYWM3MDdmZGFkNWFlNmRkNWQ4Yjc4MDJkYWU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAK
QEAgLTYyOCw3ICs2MjgsNyBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0Vmlv
bGF0aW9uKGNvbnN0IFN0cmluZyYgZWZmZWN0aXZlVmlvbGF0ZWREaXJlYwogICAgIC8vIHNlbnQg
ZXhwbGljaXRseS4gQXMgZm9yIHdoaWNoIGRpcmVjdGl2ZSB3YXMgdmlvbGF0ZWQsIHRoYXQncyBw
cmV0dHkKICAgICAvLyBoYXJtbGVzcyBpbmZvcm1hdGlvbi4KIAotICAgIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IGNzcFJlcG9ydCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAgYXV0
byBjc3BSZXBvcnQgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGNzcFJlcG9ydC0+
c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgiZG9jdW1lbnQtdXJpIiksIGRvY3VtZW50VVJJKTsKICAg
ICBjc3BSZXBvcnQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInJlZmVycmVyIiksIHJlZmVycmVy
KTsKICAgICBjc3BSZXBvcnQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInZpb2xhdGVkLWRpcmVj
dGl2ZSIpLCB2aW9sYXRlZERpcmVjdGl2ZVRleHQpOwpAQCAtNjQzLDcgKzY0Myw3IEBAIHZvaWQg
Q29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBlZmZl
Y3RpdmVWaW9sYXRlZERpcmVjCiAgICAgfQogCiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
cmVwb3J0T2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICByZXBvcnRPYmpl
Y3QtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoImNzcC1yZXBvcnQiKSwgY3NwUmVwb3J0LnJlbGVh
c2UoKSk7CisgICAgcmVwb3J0T2JqZWN0LT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJjc3AtcmVw
b3J0IiksIFdURk1vdmUoY3NwUmVwb3J0KSk7CiAKICAgICBSZWZQdHI8Rm9ybURhdGE+IHJlcG9y
dCA9IEZvcm1EYXRhOjpjcmVhdGUocmVwb3J0T2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCkp
OwogICAgIGZvciAoY29uc3QgYXV0byYgdXJsIDogcmVwb3J0VVJJcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tCmluZGV4IGIx
NjdjZTIwMTlkMjk0OGE3YWU5MzFkOTZhNWZjNzRjMzhiNzZmODAuLmIxNjVlYTQ3NmJhMmQ1YWE1
NzhjNGYyYWFhZjM4NTQ5MTYzNzg1MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
bWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbQpAQCAtNjIwLDkgKzYyMCw5IEBAIHZv
aWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6Y3JlYXRlT3ZlcmxheUlmTmVlZGVkKCkKICAg
ICBpZiAoIW1fbWFpbkZyYW1lLnNldHRpbmdzKCkuc2VydmljZUNvbnRyb2xzRW5hYmxlZCgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8UGFnZU92ZXJsYXk+IG92ZXJsYXkgPSBQYWdl
T3ZlcmxheTo6Y3JlYXRlKCp0aGlzLCBQYWdlT3ZlcmxheTo6T3ZlcmxheVR5cGU6OkRvY3VtZW50
KTsKLSAgICBtX3NlcnZpY2VzT3ZlcmxheSA9IG92ZXJsYXkuZ2V0KCk7Ci0gICAgbV9tYWluRnJh
bWUucGFnZU92ZXJsYXlDb250cm9sbGVyKCkuaW5zdGFsbFBhZ2VPdmVybGF5KG92ZXJsYXkucmVs
ZWFzZSgpLCBQYWdlT3ZlcmxheTo6RmFkZU1vZGU6OkRvTm90RmFkZSk7CisgICAgYXV0byBvdmVy
bGF5ID0gUGFnZU92ZXJsYXk6OmNyZWF0ZSgqdGhpcywgUGFnZU92ZXJsYXk6Ok92ZXJsYXlUeXBl
OjpEb2N1bWVudCk7CisgICAgbV9zZXJ2aWNlc092ZXJsYXkgPSBvdmVybGF5LnB0cigpOworICAg
IG1fbWFpbkZyYW1lLnBhZ2VPdmVybGF5Q29udHJvbGxlcigpLmluc3RhbGxQYWdlT3ZlcmxheShX
VEZNb3ZlKG92ZXJsYXkpLCBQYWdlT3ZlcmxheTo6RmFkZU1vZGU6OkRvTm90RmFkZSk7CiB9CiAK
IFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjp0ZWxlcGhv
bmVOdW1iZXJSYW5nZXNGb3JGb2N1c2VkRnJhbWUoKQpAQCAtNzM5LDcgKzczOSw3IEBAIHZvaWQg
U2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6ZGV0ZXJtaW5lQWN0aXZlSGlnaGxpZ2h0KGJvb2wm
IG1vdXNlSXNPdmVyQWN0aXZlCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICBtX2FjdGl2ZUhpZ2hsaWdodCA9IG1fbmV4dEFjdGl2ZUhpZ2hsaWdodC5yZWxlYXNlKCk7
CisgICAgICAgIG1fYWN0aXZlSGlnaGxpZ2h0ID0gV1RGTW92ZShtX25leHRBY3RpdmVIaWdobGln
aHQpOwogCiAgICAgICAgIGlmIChtX2FjdGl2ZUhpZ2hsaWdodCkgewogICAgICAgICAgICAgbV9z
ZXJ2aWNlc092ZXJsYXktPmxheWVyKCkuYWRkQ2hpbGQobV9hY3RpdmVIaWdobGlnaHQtPmxheWVy
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3Jv
bGxpbmdDb29yZGluYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNT
Y3JvbGxpbmdDb29yZGluYXRvci5oCmluZGV4IGQwOTY4YmIzMzgwNjg3ZGQzYmVmMzQzMTIwMTli
ZjMzM2JhN2YwNmEuLjYzMTYyY2FkODY1Mjk3YmRjNzQ0M2FjNDQ5MzM3NzliYzBkYmM0ZDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29v
cmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9s
bGluZ0Nvb3JkaW5hdG9yLmgKQEAgLTczLDcgKzczLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgU2Ny
b2xsaW5nU3RhdGVUcmVlKiBzY3JvbGxpbmdTdGF0ZVRyZWUoKSB7IHJldHVybiBtX3Njcm9sbGlu
Z1N0YXRlVHJlZS5nZXQoKTsgfQogCi0gICAgUGFzc1JlZlB0cjxTY3JvbGxpbmdUcmVlPiByZWxl
YXNlU2Nyb2xsaW5nVHJlZSgpIHsgcmV0dXJuIG1fc2Nyb2xsaW5nVHJlZS5yZWxlYXNlKCk7IH0K
KyAgICBQYXNzUmVmUHRyPFNjcm9sbGluZ1RyZWU+IHJlbGVhc2VTY3JvbGxpbmdUcmVlKCkgeyBy
ZXR1cm4gV1RGTW92ZShtX3Njcm9sbGluZ1RyZWUpOyB9CiAKICAgICB2b2lkIHVwZGF0ZVNjcm9s
bFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbChTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IEZsb2F0UG9p
bnQmLCBib29sIHByb2dyYW1tYXRpY1Njcm9sbCwgU2V0T3JTeW5jU2Nyb2xsaW5nTGF5ZXJQb3Np
dGlvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1N0YXRlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdTdGF0ZU5vZGUuY3BwCmluZGV4IGRmZDUyODU3YWY2ZDAzYTJlODcwMzQ1MmI4MzJmNjAyNjQy
NjQwMjQuLjg5YWVjYTBmNjk1NjllODY1NWNkZDAwMDU2NzFlMTkzMWI1NDhhYjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmNw
cApAQCAtNzQsMTMgKzc0LDEzIEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVOb2RlOjpzZXRQcm9wZXJ0
eUNoYW5nZWQodW5zaWduZWQgcHJvcGVydHlCaXQpCiAKIFBhc3NSZWZQdHI8U2Nyb2xsaW5nU3Rh
dGVOb2RlPiBTY3JvbGxpbmdTdGF0ZU5vZGU6OmNsb25lQW5kUmVzZXQoU2Nyb2xsaW5nU3RhdGVU
cmVlJiBhZG9wdGl2ZVRyZWUpCiB7Ci0gICAgUmVmUHRyPFNjcm9sbGluZ1N0YXRlTm9kZT4gY2xv
bmUgPSB0aGlzLT5jbG9uZShhZG9wdGl2ZVRyZWUpOworICAgIGF1dG8gY2xvbmUgPSB0aGlzLT5j
bG9uZShhZG9wdGl2ZVRyZWUpOwogCiAgICAgLy8gTm93IHRoYXQgdGhpcyBub2RlIGlzIGNsb25l
ZCwgcmVzZXQgb3VyIGNoYW5nZSBwcm9wZXJ0aWVzLgogICAgIHJlc2V0Q2hhbmdlZFByb3BlcnRp
ZXMoKTsKIAotICAgIGNsb25lQW5kUmVzZXRDaGlsZHJlbigqY2xvbmUsIGFkb3B0aXZlVHJlZSk7
Ci0gICAgcmV0dXJuIGNsb25lLnJlbGVhc2UoKTsKKyAgICBjbG9uZUFuZFJlc2V0Q2hpbGRyZW4o
Y2xvbmUuZ2V0KCksIGFkb3B0aXZlVHJlZSk7CisgICAgcmV0dXJuIFdURk1vdmUoY2xvbmUpOwog
fQogCiB2b2lkIFNjcm9sbGluZ1N0YXRlTm9kZTo6Y2xvbmVBbmRSZXNldENoaWxkcmVuKFNjcm9s
bGluZ1N0YXRlTm9kZSYgY2xvbmUsIFNjcm9sbGluZ1N0YXRlVHJlZSYgYWRvcHRpdmVUcmVlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVU
cmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJl
ZS5jcHAKaW5kZXggM2JlYzQzNjBjNGQxNTQ5Njc2MWZhYTQ3NDFmMjkwMzZjMTc5NmY5NC4uMTFj
ZWM1ZjVkZTdhMjFjNmFmMWE2ZWMwNjFhOWY1ZmJkOTRhZTU3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwCkBAIC0xMTUs
MTYgKzExNSwxNiBAQCBTY3JvbGxpbmdOb2RlSUQgU2Nyb2xsaW5nU3RhdGVUcmVlOjphdHRhY2hO
b2RlKFNjcm9sbGluZ05vZGVUeXBlIG5vZGVUeXBlLCBTY3JvbAogICAgICAgICAgICAgcmV0dXJu
IDA7CiAKICAgICAgICAgaWYgKG5vZGVUeXBlID09IEZyYW1lU2Nyb2xsaW5nTm9kZSAmJiBwYXJl
bnRJRCkgewotICAgICAgICAgICAgaWYgKFJlZlB0cjxTY3JvbGxpbmdTdGF0ZU5vZGU+IG9ycGhh
bmVkTm9kZSA9IG1fb3JwaGFuZWRTdWJmcmFtZU5vZGVzLnRha2UobmV3Tm9kZUlEKSkgeworICAg
ICAgICAgICAgaWYgKGF1dG8gb3JwaGFuZWROb2RlID0gbV9vcnBoYW5lZFN1YmZyYW1lTm9kZXMu
dGFrZShuZXdOb2RlSUQpKSB7CiAgICAgICAgICAgICAgICAgbmV3Tm9kZSA9IG9ycGhhbmVkTm9k
ZS5nZXQoKTsKLSAgICAgICAgICAgICAgICBwYXJlbnQtPmFwcGVuZENoaWxkKG9ycGhhbmVkTm9k
ZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgICAgIHBhcmVudC0+YXBwZW5kQ2hpbGQoV1RGTW92
ZShvcnBoYW5lZE5vZGUpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGlm
ICghbmV3Tm9kZSkgewotICAgICAgICAgICAgUmVmUHRyPFNjcm9sbGluZ1N0YXRlTm9kZT4gc3Rh
dGVOb2RlID0gY3JlYXRlTm9kZShub2RlVHlwZSwgbmV3Tm9kZUlEKTsKKyAgICAgICAgICAgIGF1
dG8gc3RhdGVOb2RlID0gY3JlYXRlTm9kZShub2RlVHlwZSwgbmV3Tm9kZUlEKTsKICAgICAgICAg
ICAgIG5ld05vZGUgPSBzdGF0ZU5vZGUuZ2V0KCk7Ci0gICAgICAgICAgICBwYXJlbnQtPmFwcGVu
ZENoaWxkKHN0YXRlTm9kZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgcGFyZW50LT5hcHBlbmRD
aGlsZChXVEZNb3ZlKHN0YXRlTm9kZSkpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCmluZGV4IGVhMzNlZmMx
ZDNiZjAwM2Y3NjZhOTg5ZjA0YzZhNTMwMjk4NjQ1N2YuLmY2NWNkZTNjMWFmZjQ1ZjY2ZDVmMjIz
NjM2NzE5MmYwY2IzMDdhMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0hSVEZFbGV2YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0hSVEZFbGV2YXRpb24uY3BwCkBAIC03NCwxMiArNzQsMTIgQEAgc3RhdGljIEF1ZGlvQnVzKiBn
ZXRDb25jYXRlbmF0ZWRJbXB1bHNlUmVzcG9uc2VzRm9yU3ViamVjdChjb25zdCBTdHJpbmcmIHN1
YmplY3QKICAgICBBdWRpb0J1cyogYnVzOwogICAgIEF1ZGlvQnVzTWFwOjppdGVyYXRvciBpdGVy
YXRvciA9IGF1ZGlvQnVzTWFwLmdldCgpLmZpbmQoc3ViamVjdE5hbWUpOwogICAgIGlmIChpdGVy
YXRvciA9PSBhdWRpb0J1c01hcC5nZXQoKS5lbmQoKSkgewotICAgICAgICBSZWZQdHI8QXVkaW9C
dXM+IGNvbmNhdGVuYXRlZEltcHVsc2VSZXNwb25zZXMgPSBBdWRpb0J1czo6bG9hZFBsYXRmb3Jt
UmVzb3VyY2Uoc3ViamVjdE5hbWUudXRmOCgpLmRhdGEoKSwgUmVzcG9uc2VTYW1wbGVSYXRlKTsK
KyAgICAgICAgYXV0byBjb25jYXRlbmF0ZWRJbXB1bHNlUmVzcG9uc2VzID0gQXVkaW9CdXM6Omxv
YWRQbGF0Zm9ybVJlc291cmNlKHN1YmplY3ROYW1lLnV0ZjgoKS5kYXRhKCksIFJlc3BvbnNlU2Ft
cGxlUmF0ZSk7CiAgICAgICAgIEFTU0VSVChjb25jYXRlbmF0ZWRJbXB1bHNlUmVzcG9uc2VzKTsK
ICAgICAgICAgaWYgKCFjb25jYXRlbmF0ZWRJbXB1bHNlUmVzcG9uc2VzKQogICAgICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICAgICAgYnVzID0gY29uY2F0ZW5hdGVkSW1wdWxzZVJlc3BvbnNlcy5y
ZWxlYXNlKCkubGVha1JlZigpOworICAgICAgICBidXMgPSBjb25jYXRlbmF0ZWRJbXB1bHNlUmVz
cG9uc2VzLmxlYWtSZWYoKTsKICAgICAgICAgYXVkaW9CdXNNYXAuZ2V0KCkuc2V0KHN1YmplY3RO
YW1lLCBidXMpOwogICAgIH0gZWxzZQogICAgICAgICBidXMgPSBpdGVyYXRvci0+dmFsdWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVz
aE1vbml0b3JNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rp
c3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwCmluZGV4IDk3ODJkMjg0NjBjYThmZDA5YzU4
ZTcxYTVkN2NjOGJlNTRkNDVjMDYuLmYwOGFlYmU3MmU3ZTI5NGFiNDlmZGQ1YWQ3MDNiZTVkMjYx
ZjJiOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3Bs
YXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwCkBAIC01NCwxMyArNTQs
MTMgQEAgRGlzcGxheVJlZnJlc2hNb25pdG9yKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2Vy
OjpjcmVhdGVNb25pdG9yRm9yQ2xpZW50KERpc3AKICAgICAgICAgcmV0dXJuIG1vbml0b3IuZ2V0
KCk7CiAgICAgfQogCi0gICAgUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9uaXRvcj4gbW9uaXRvciA9
IERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6Y3JlYXRlKGNsaWVudCk7CisgICAgYXV0byBtb25pdG9y
ID0gRGlzcGxheVJlZnJlc2hNb25pdG9yOjpjcmVhdGUoY2xpZW50KTsKICAgICBpZiAoIW1vbml0
b3IpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgbW9uaXRvci0+YWRkQ2xpZW50KGNs
aWVudCk7CiAgICAgRGlzcGxheVJlZnJlc2hNb25pdG9yKiByZXN1bHQgPSBtb25pdG9yLmdldCgp
OwotICAgIG1fbW9uaXRvcnMuYXBwZW5kKG1vbml0b3IucmVsZWFzZSgpKTsKKyAgICBtX21vbml0
b3JzLmFwcGVuZChXVEZNb3ZlKG1vbml0b3IpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZv
bnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9u
dHMuY3BwCmluZGV4IGMzZjIzMjYwMWE4MDBiMjVmZGQwOWI5NGMyMDUxNGQxYjJlZWMwNTcuLmQz
NmVkMDkyNzRlM2I3ZGE4NTJiZWEyY2FmOTQ4MmJkNGUxYzhlZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuY3BwCkBAIC0z
MjQsNyArMzI0LDcgQEAgR2x5cGhEYXRhIEZvbnRDYXNjYWRlRm9udHM6OmdseXBoRGF0YUZvclN5
c3RlbUZhbGxiYWNrKFVDaGFyMzIgYywgY29uc3QgRm9udENhc2MKICAgICBpZiAoIW9yaWdpbmFs
Rm9udCkKICAgICAgICAgb3JpZ2luYWxGb250ID0gJnByaW1hcnlSYW5nZXMuZm9udEZvckZpcnN0
UmFuZ2UoKTsKIAotICAgIFJlZlB0cjxGb250PiBzeXN0ZW1GYWxsYmFja0ZvbnQgPSBvcmlnaW5h
bEZvbnQtPnN5c3RlbUZhbGxiYWNrRm9udEZvckNoYXJhY3RlcihjLCBkZXNjcmlwdGlvbiwgbV9p
c0ZvclBsYXRmb3JtRm9udCk7CisgICAgYXV0byBzeXN0ZW1GYWxsYmFja0ZvbnQgPSBvcmlnaW5h
bEZvbnQtPnN5c3RlbUZhbGxiYWNrRm9udEZvckNoYXJhY3RlcihjLCBkZXNjcmlwdGlvbiwgbV9p
c0ZvclBsYXRmb3JtRm9udCk7CiAgICAgaWYgKCFzeXN0ZW1GYWxsYmFja0ZvbnQpCiAgICAgICAg
IHJldHVybiBHbHlwaERhdGEoKTsKIApAQCAtMzQ4LDcgKzM0OCw3IEBAIEdseXBoRGF0YSBGb250
Q2FzY2FkZUZvbnRzOjpnbHlwaERhdGFGb3JTeXN0ZW1GYWxsYmFjayhVQ2hhcjMyIGMsIGNvbnN0
IEZvbnRDYXNjCiAKICAgICAvLyBLZWVwIHRoZSBzeXN0ZW0gZmFsbGJhY2sgZm9udHMgd2UgdXNl
IGFsaXZlLgogICAgIGlmIChmYWxsYmFja0dseXBoRGF0YS5nbHlwaCkKLSAgICAgICAgbV9zeXN0
ZW1GYWxsYmFja0ZvbnRTZXQuYWRkKHN5c3RlbUZhbGxiYWNrRm9udC5yZWxlYXNlKCkpOworICAg
ICAgICBtX3N5c3RlbUZhbGxiYWNrRm9udFNldC5hZGQoV1RGTW92ZShzeXN0ZW1GYWxsYmFja0Zv
bnQpKTsKIAogICAgIHJldHVybiBmYWxsYmFja0dseXBoRGF0YTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAppbmRleCBiOWI5MjMxOTBjNWYz
MjVlMTMyZGViNjVmZDc3NWFjNjk5YTQxZjU1Li40ZjJmYjViYjVkMjk1NjQwOGM3MzNiMDk5N2Vh
NzM5Y2NiNTE3YTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1By
aXZhdGVBVkYuY3BwCkBAIC00MDUsNyArNDA1LDcgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGOjpwcm9jZXNzQXR0cmlidXRlZFN0cmluZ3MoQ0ZBcnJheVJlZiBhdHRyaWJ1dGVkU3QK
ICAgICAgICAgCiAgICAgICAgIExPRyhNZWRpYSwgIkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6
OnByb2Nlc3NDdWUoJXApIC0gYWRkaW5nIGN1ZSBcIiVzXCIgZm9yIHRpbWUgPSAlLjJmLCBlbmQg
PSAlLjJmLCBwb3NpdGlvbiA9ICAlLjJmLCBsaW5lID0gICUuMmYiLCB0aGlzLCBjdWVEYXRhLT5j
b250ZW50KCkudXRmOCgpLmRhdGEoKSwgY3VlRGF0YS0+c3RhcnRUaW1lKCkudG9Eb3VibGUoKSwg
Y3VlRGF0YS0+ZW5kVGltZSgpLnRvRG91YmxlKCksIGN1ZURhdGEtPnBvc2l0aW9uKCksIGN1ZURh
dGEtPmxpbmUoKSk7CiAKLSAgICAgICAgY2xpZW50KCktPmFkZEdlbmVyaWNDdWUodGhpcywgY3Vl
RGF0YS5yZWxlYXNlKCkpOworICAgICAgICBjbGllbnQoKS0+YWRkR2VuZXJpY0N1ZSh0aGlzLCBX
VEZNb3ZlKGN1ZURhdGEpKTsKICAgICB9CiAKICAgICBtX3BlbmRpbmdDdWVTdGF0dXMgPSBzZWVr
aW5nKCkgPyBEZWxpdmVyZWREdXJpbmdTZWVrIDogVmFsaWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFTZWxlY3Rpb25Hcm91
cEFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMubW0KaW5kZXggZDEzNmQ4NzM2OTMzMmNjN2E5
NzNkMDE0OWQ0NmI4YjYzOGFmY2NmMy4uMTBkMmIyMTU0ZmZhOTc0YTFhNzkxMzA3OWVhNGVhNmRk
ODQ3OTljMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNlbGVjdGlvbkdyb3VwQVZG
T2JqQy5tbQpAQCAtMTI5LDEwICsxMjksMTAgQEAgdm9pZCBNZWRpYVNlbGVjdGlvbkdyb3VwQVZG
T2JqQzo6dXBkYXRlT3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgY2hhcmFjdGVyaXMKICAg
ICBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uKiBzZWxlY3RlZE9wdGlvbiA9IFttX3BsYXllckl0ZW0g
c2VsZWN0ZWRNZWRpYU9wdGlvbkluTWVkaWFTZWxlY3Rpb25Hcm91cDptX21lZGlhU2VsZWN0aW9u
R3JvdXAuZ2V0KCldOwogCiAgICAgZm9yIChBVk1lZGlhU2VsZWN0aW9uT3B0aW9uKiBhZGRlZEFW
T3B0aW9uIGluIGFkZGVkQVZPcHRpb25zLmdldCgpKSB7Ci0gICAgICAgIFJlZlB0cjxNZWRpYVNl
bGVjdGlvbk9wdGlvbkFWRk9iakM+IGFkZGVkT3B0aW9uID0gTWVkaWFTZWxlY3Rpb25PcHRpb25B
VkZPYmpDOjpjcmVhdGUoKnRoaXMsIGFkZGVkQVZPcHRpb24pOworICAgICAgICBhdXRvIGFkZGVk
T3B0aW9uID0gTWVkaWFTZWxlY3Rpb25PcHRpb25BVkZPYmpDOjpjcmVhdGUoKnRoaXMsIGFkZGVk
QVZPcHRpb24pOwogICAgICAgICBpZiAoYWRkZWRBVk9wdGlvbiA9PSBzZWxlY3RlZE9wdGlvbikK
ICAgICAgICAgICAgIG1fc2VsZWN0ZWRPcHRpb24gPSBhZGRlZE9wdGlvbi5nZXQoKTsKLSAgICAg
ICAgbV9vcHRpb25zLnNldChhZGRlZEFWT3B0aW9uLCBhZGRlZE9wdGlvbi5yZWxlYXNlKCkpOwor
ICAgICAgICBtX29wdGlvbnMuc2V0KGFkZGVkQVZPcHRpb24sIFdURk1vdmUoYWRkZWRPcHRpb24p
KTsKICAgICB9CiAKICAgICBpZiAoIW1fc2hvdWxkU2VsZWN0T3B0aW9uQXV0b21hdGljYWxseSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMubW0KaW5kZXggZjhmNmIyNTE1NGQ3NjVmMWQwYWJmNjdlOTRhZWI0ZDdiNmZlNzY5Yi4uYTlk
NTc4ZmE4YWEyZGVhYTMxYTNmMjBlNWRmODE3OThhYjA3MDdjZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAgLTY5Niw3
ICs2OTYsNyBAQCBib29sIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpwcm9jZXNzQ29kZWRG
cmFtZShpbnQgdHJhY2tJRCwgQ01TYW1wbGVCdWZmZXJSZQogICAgIGlmIChtX2NsaWVudCkgewog
ICAgICAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IG1lZGlhU2FtcGxlID0gTWVkaWFTYW1wbGVBVkZP
YmpDOjpjcmVhdGUoc2FtcGxlQnVmZmVyLCB0cmFja0lEKTsKICAgICAgICAgTE9HKE1lZGlhU291
cmNlU2FtcGxlcywgIlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpwcm9jZXNzQ29kZWRGcmFt
ZSglcCkgLSBzYW1wbGUoJXMpIiwgdGhpcywgdG9TdHJpbmcoKm1lZGlhU2FtcGxlKS51dGY4KCku
ZGF0YSgpKTsKLSAgICAgICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZl
U2FtcGxlKHRoaXMsIG1lZGlhU2FtcGxlLnJlbGVhc2UoKSk7CisgICAgICAgIG1fY2xpZW50LT5z
b3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZVNhbXBsZSh0aGlzLCBXVEZNb3ZlKG1lZGlhU2Ft
cGxlKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCA0ZGE2
N2YyYjFmNzY2MTJjZWFjZjM1Y2QyODYyNjc5ZjYwMjQxYjkzLi44ODM3M2M4ZWNiNjkyZWY2Njgy
Y2EzZTMxMzk1NmE5NzkxY2EyMWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTM4MTUsOCArMzgxNSw4
IEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmZldGNoQ2xv
bmVMYXllcnMoR3JhcGhpY3NMYXllciogcmVwCiAKICAgICAgICAgZm9yIChhdXRvKiBjaGlsZExh
eWVyIDogY2hpbGRMYXllcnMpIHsKICAgICAgICAgICAgIEdyYXBoaWNzTGF5ZXJDQSYgY2hpbGRM
YXllckNBID0gZG93bmNhc3Q8R3JhcGhpY3NMYXllckNBPigqY2hpbGRMYXllcik7Ci0gICAgICAg
ICAgICBpZiAoUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gcGxhdGZvcm1MYXllciA9IGNoaWxkTGF5
ZXJDQS5mZXRjaENsb25lTGF5ZXJzKHJlcGxpY2FSb290LCByZXBsaWNhU3RhdGUsIEludGVybWVk
aWF0ZUNsb25lTGV2ZWwpKQotICAgICAgICAgICAgICAgIGNsb25hbFN1YmxheWVycy5hcHBlbmQo
cGxhdGZvcm1MYXllci5yZWxlYXNlKCkpOworICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1M
YXllciA9IGNoaWxkTGF5ZXJDQS5mZXRjaENsb25lTGF5ZXJzKHJlcGxpY2FSb290LCByZXBsaWNh
U3RhdGUsIEludGVybWVkaWF0ZUNsb25lTGV2ZWwpKQorICAgICAgICAgICAgICAgIGNsb25hbFN1
YmxheWVycy5hcHBlbmQoV1RGTW92ZShwbGF0Zm9ybUxheWVyKSk7CiAgICAgICAgIH0KIAogICAg
ICAgICByZXBsaWNhU3RhdGUucG9wKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcAppbmRleCA0YzlkNzE1MmQ5ODIx
NDBkZWRjZDUwNGNmZWE0MGM4NDU4NGI4NzBhLi4wMGEyNTczYWZmMTJlZjg5ZGIyYTUxMDgxM2Jm
ZTBjOWUzYWQxMTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAKQEAgLTEzNSwxMyArMTM1LDEzIEBAIFBhc3NS
ZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBQbGF0Zm9ybUNBTGF5ZXI6OmNyZWF0ZUNvbXBhdGlibGVM
YXllck9yVGFrZUZyb21Qb29sCiAKICAgICBpZiAoKGxheWVyID0gbGF5ZXJQb29sKCkudGFrZUxh
eWVyV2l0aFNpemUoc2l6ZSkpKSB7CiAgICAgICAgIGxheWVyLT5zZXRPd25lcihjbGllbnQpOwot
ICAgICAgICByZXR1cm4gbGF5ZXIucmVsZWFzZSgpOworICAgICAgICByZXR1cm4gV1RGTW92ZShs
YXllcik7CiAgICAgfQogCiAgICAgbGF5ZXIgPSBjcmVhdGVDb21wYXRpYmxlTGF5ZXIobGF5ZXJU
eXBlLCBjbGllbnQpOwogICAgIGxheWVyLT5zZXRCb3VuZHMoRmxvYXRSZWN0KEZsb2F0UG9pbnQo
KSwgc2l6ZSkpOwogICAgIAotICAgIHJldHVybiBsYXllci5yZWxlYXNlKCk7CisgICAgcmV0dXJu
IFdURk1vdmUobGF5ZXIpOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6bW92ZVRvTGF5ZXJQ
b29sKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVyRGF0YUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyRGF0YUNHLmNwcAppbmRleCBmYTYzNGM4NmM0MzQ1YmUxYmU3ZWI1NjU3MDhk
NjQ3YWEwYTlkYzI0Li41ZjUwZjljYzAxMjVjY2ZhYzZiZjYyN2Y1M2Q2MGM1ZDEyYTUxZTFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckRhdGFDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJEYXRhQ0cuY3BwCkBAIC05Niw3ICs5Niw3IEBAIFJlZlB0cjxVaW50OENsYW1wZWRB
cnJheT4gSW1hZ2VCdWZmZXJEYXRhOjpnZXREYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0
IEluCiAgICAgaWYgKGFyZWEuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gcmVzdWx0ID0gVWludDhDbGFtcGVk
QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoYXJlYS51bnNhZmVHZXQoKSk7CisgICAgYXV0byBy
ZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZChhcmVhLnVuc2Fm
ZUdldCgpKTsKICAgICB1bnNpZ25lZCBjaGFyKiByZXN1bHREYXRhID0gcmVzdWx0LT5kYXRhKCk7
CiAgICAgaWYgKCFyZXN1bHREYXRhKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiSW1hZ2VCdWZm
ZXJEYXRhOiBVbmFibGUgdG8gY3JlYXRlIGJ1ZmZlci4gUmVxdWVzdGVkIHNpemUgd2FzICVkIHgg
JWQgPSAldVxuIiwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpLCBhcmVhLnVuc2FmZUdldCgp
KTsKQEAgLTEzOSw3ICsxMzksNyBAQCBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVm
ZmVyRGF0YTo6Z2V0RGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbgogICAgIENoZWNr
ZWQ8aW50PiBoZWlnaHQgPSBlbmR5IC0gb3JpZ2lueTsKICAgICAKICAgICBpZiAod2lkdGgudW5z
YWZlR2V0KCkgPD0gMCB8fCBoZWlnaHQudW5zYWZlR2V0KCkgPD0gMCkKLSAgICAgICAgcmV0dXJu
IHJlc3VsdC5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgCiAgICAgdW5z
aWduZWQgZGVzdEJ5dGVzUGVyUm93ID0gNCAqIHJlY3Qud2lkdGgoKTsKICAgICB1bnNpZ25lZCBj
aGFyKiBkZXN0Um93cyA9IHJlc3VsdERhdGEgKyBkZXN0eSAqIGRlc3RCeXRlc1BlclJvdyArIGRl
c3R4ICogNDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAppbmRleCBjYmU1MTI4ZjllNjI2NzJiYTFjZmUyN2Iw
NWNlMzI2MzA0ZGEyNjdkLi41ZTQ3YTQwNjhkODJjM2M1MGU4MzU5ZGUwNjc2ZDM4ODdlMDhmMDkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlckVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBAIC0yMzcsOSArMjM3LDkgQEAgUGFzc1JlZlB0cjxVaW50
OENsYW1wZWRBcnJheT4gRmlsdGVyRWZmZWN0Ojphc1VubXVsdGlwbGllZEltYWdlKGNvbnN0IElu
dFJlY3QmIHIKICAgICBJbnRTaXplIHNjYWxlZFNpemUocmVjdC5zaXplKCkpOwogICAgIEFTU0VS
VCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHNjYWxlZFNpemUpKTsKICAgICBzY2Fs
ZWRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRlclNjYWxlKCkpOwotICAgIFJlZlB0cjxVaW50OENs
YW1wZWRBcnJheT4gaW1hZ2VEYXRhID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlh
bGl6ZWQoc2NhbGVkU2l6ZS53aWR0aCgpICogc2NhbGVkU2l6ZS5oZWlnaHQoKSAqIDQpOworICAg
IGF1dG8gaW1hZ2VEYXRhID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQo
c2NhbGVkU2l6ZS53aWR0aCgpICogc2NhbGVkU2l6ZS5oZWlnaHQoKSAqIDQpOwogICAgIGNvcHlV
bm11bHRpcGxpZWRJbWFnZShpbWFnZURhdGEuZ2V0KCksIHJlY3QpOwotICAgIHJldHVybiBpbWFn
ZURhdGEucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKGltYWdlRGF0YSk7CiB9CiAKIFBh
c3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6YXNQcmVtdWx0aXBsaWVk
SW1hZ2UoY29uc3QgSW50UmVjdCYgcmVjdCkKQEAgLTI0Nyw5ICsyNDcsOSBAQCBQYXNzUmVmUHRy
PFVpbnQ4Q2xhbXBlZEFycmF5PiBGaWx0ZXJFZmZlY3Q6OmFzUHJlbXVsdGlwbGllZEltYWdlKGNv
bnN0IEludFJlY3QmCiAgICAgSW50U2l6ZSBzY2FsZWRTaXplKHJlY3Quc2l6ZSgpKTsKICAgICBB
U1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhzY2FsZWRTaXplKSk7CiAgICAg
c2NhbGVkU2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKLSAgICBSZWZQdHI8VWlu
dDhDbGFtcGVkQXJyYXk+IGltYWdlRGF0YSA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmlu
aXRpYWxpemVkKHNjYWxlZFNpemUud2lkdGgoKSAqIHNjYWxlZFNpemUuaGVpZ2h0KCkgKiA0KTsK
KyAgICBhdXRvIGltYWdlRGF0YSA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxp
emVkKHNjYWxlZFNpemUud2lkdGgoKSAqIHNjYWxlZFNpemUuaGVpZ2h0KCkgKiA0KTsKICAgICBj
b3B5UHJlbXVsdGlwbGllZEltYWdlKGltYWdlRGF0YS5nZXQoKSwgcmVjdCk7Ci0gICAgcmV0dXJu
IGltYWdlRGF0YS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1vdmUoaW1hZ2VEYXRhKTsKIH0K
IAogaW5saW5lIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5SW1hZ2VCeXRlcyhVaW50OENsYW1wZWRB
cnJheSogc291cmNlLCBVaW50OENsYW1wZWRBcnJheSogZGVzdGluYXRpb24sIGNvbnN0IEludFJl
Y3QmIHJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvSW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1h
Z2VNYWMubW0KaW5kZXggZmEwMTFhYTg4MTYzMDMwMDA5NDQ5OGViYzBmZmNhOWZiOWMzMDM0Yi4u
MDFlYjZkZDMwMDQzYTIyNTI5MTc2ZmQ5MTIxMTdkYzU3NzZjMTdiYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQpAQCAtNjgsOSArNjgs
OSBAQCBQYXNzUmVmUHRyPEltYWdlPiBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3Qg
Y2hhciAqbmFtZSkKICAgICBOU1N0cmluZyAqaW1hZ2VQYXRoID0gW2J1bmRsZSBwYXRoRm9yUmVz
b3VyY2U6W05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOm5hbWVdIG9mVHlwZTpAInBuZyJd
OwogICAgIE5TRGF0YSAqbmFtZWRJbWFnZURhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNP
ZkZpbGU6aW1hZ2VQYXRoXTsKICAgICBpZiAobmFtZWRJbWFnZURhdGEpIHsKLSAgICAgICAgUmVm
UHRyPEltYWdlPiBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKKyAgICAgICAgYXV0byBp
bWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAgICAgICAgaW1hZ2UtPnNldERhdGEoU2hh
cmVkQnVmZmVyOjp3cmFwTlNEYXRhKG5hbWVkSW1hZ2VEYXRhKSwgdHJ1ZSk7Ci0gICAgICAgIHJl
dHVybiBpbWFnZS5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBXVEZNb3ZlKGltYWdlKTsKICAg
ICB9CiAKICAgICAvLyBXZSBoYXZlIHJlcG9ydHMgaW5kaWNhdGluZyByZXNvdXJjZSBsb2FkcyBh
cmUgZmFpbGluZywgYnV0IHdlIGRvbid0IHlldCBrbm93IHRoZSByb290IGNhdXNlKHMpLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKaW5kZXggMDQ4OTUz
NmQzYmQwY2JiZjdiMmJkYjA3YTZiYzJkYjg1Yjk0OTllNy4uYTQ4NTkyYTgxMGFmMDc0OWY0ZmU5
ODEwMWY3ZDFiMTZhYzZhOTI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RP
cGVuR0xDb21tb24uY3BwCkBAIC0xMzIsOCArMTMyLDEwIEBAIHN0YXRpYyB1aW50NjRfdCBuYW1l
SGFzaEZvclNoYWRlcihjb25zdCBjaGFyKiBuYW1lLCBzaXplX3QgbGVuZ3RoKQogCiBQYXNzUmVm
UHRyPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlRm9yQ3VycmVu
dEdMQ29udGV4dCgpCiB7Ci0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0g
YWRvcHRSZWYobmV3IEdyYXBoaWNzQ29udGV4dDNEKEF0dHJpYnV0ZXMoKSwgMCwgR3JhcGhpY3ND
b250ZXh0M0Q6OlJlbmRlclRvQ3VycmVudEdMQ29udGV4dCkpOwotICAgIHJldHVybiBjb250ZXh0
LT5tX3ByaXZhdGUgPyBjb250ZXh0LnJlbGVhc2UoKSA6IDA7CisgICAgYXV0byBjb250ZXh0ID0g
YWRvcHRSZWYoKm5ldyBHcmFwaGljc0NvbnRleHQzRChBdHRyaWJ1dGVzKCksIDAsIEdyYXBoaWNz
Q29udGV4dDNEOjpSZW5kZXJUb0N1cnJlbnRHTENvbnRleHQpKTsKKyAgICBpZiAoIWNvbnRleHQt
Pm1fcHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIFdURk1vdmUo
Y29udGV4dCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZhbGlkYXRlRGVwdGhTdGVu
Y2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikKQEAgLTIwNSw3ICsy
MDcsNyBAQCBQYXNzUmVmUHRyPEltYWdlRGF0YT4gR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50UmVu
ZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkKICAgICBpZiAobV9hdHRycy5wcmVtdWx0aXBsaWVk
QWxwaGEpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPEltYWdlRGF0YT4gaW1hZ2VE
YXRhID0gSW1hZ2VEYXRhOjpjcmVhdGUoSW50U2l6ZShtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50
SGVpZ2h0KSk7CisgICAgYXV0byBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShJbnRTaXpl
KG1fY3VycmVudFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQpKTsKICAgICB1bnNpZ25lZCBjaGFyKiBw
aXhlbHMgPSBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpOwogICAgIGludCB0b3RhbEJ5dGVzID0g
NCAqIG1fY3VycmVudFdpZHRoICogbV9jdXJyZW50SGVpZ2h0OwogCkBAIC0yMTUsNyArMjE3LDcg
QEAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFJlbmRlcmlu
Z1Jlc3VsdHNUb0ltYWdlRGF0YSgpCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0b3RhbEJ5dGVz
OyBpICs9IDQpCiAgICAgICAgIHN0ZDo6c3dhcChwaXhlbHNbaV0sIHBpeGVsc1tpICsgMl0pOwog
Ci0gICAgcmV0dXJuIGltYWdlRGF0YS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1vdmUoaW1h
Z2VEYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cHJlcGFyZVRleHR1cmUoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwCmluZGV4IGRlYTdh
N2MyOTc0ZTNkOGE5ZTBkYjgxNzdkOTZiOWU0ZTJmMThjMGQuLjlhMWIyZDY5NmM3Y2YwOWI5NTdm
NGNmMjk4NGEyMGUzODFjODY3MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlck1hYy5jcHAKQEAgLTExNiwxMCArMTE2LDEwIEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlck1hYzo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNy
ZWF0CiAgICAgICAgIH0KICAgICAgICAgLy8gRklYTUU6IENvbnNpZGVyIHRoZSBjb25zdHJhaW50
cyB3aGVuIGNob29zaW5nIGFtb25nIG11bHRpcGxlIGRldmljZXMuIEZvciBub3cganVzdCBzZWxl
Y3QgdGhlIGZpcnN0IGF2YWlsYWJsZQogICAgICAgICAvLyBkZXZpY2Ugb2YgdGhlIGFwcHJvcHJp
YXRlIHR5cGUuCi0gICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBhdWRpb1NvdXJj
ZSA9IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpLmJlc3RTb3VyY2VzRm9yVHlw
ZUFuZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBhdWRpb0NvbnN0cmFp
bnRzLmdldCgpKS5hdCgwKTsKKyAgICAgICAgYXV0byBhdWRpb1NvdXJjZSA9IEFWQ2FwdHVyZURl
dmljZU1hbmFnZXI6OnNpbmdsZXRvbigpLmJlc3RTb3VyY2VzRm9yVHlwZUFuZENvbnN0cmFpbnRz
KFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBhdWRpb0NvbnN0cmFpbnRzLmdldCgpKS5hdCgw
KTsKICAgICAgICAgQVNTRVJUKGF1ZGlvU291cmNlKTsKICAgICAgICAgCi0gICAgICAgIGF1ZGlv
U291cmNlcy5hcHBlbmQoYXVkaW9Tb3VyY2UucmVsZWFzZSgpKTsKKyAgICAgICAgYXVkaW9Tb3Vy
Y2VzLmFwcGVuZChXVEZNb3ZlKGF1ZGlvU291cmNlKSk7CiAgICAgfQogICAgIAogICAgIGlmICh2
aWRlb0NvbnN0cmFpbnRzKSB7CkBAIC0xMzEsMTAgKzEzMSwxMCBAQCB2b2lkIFJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXJNYWM6OmNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJl
YW1DcmVhdAogICAgICAgICB9CiAgICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciB0aGUgY29uc3Ry
YWludHMgd2hlbiBjaG9vc2luZyBhbW9uZyBtdWx0aXBsZSBkZXZpY2VzLiBGb3Igbm93IGp1c3Qg
c2VsZWN0IHRoZSBmaXJzdCBhdmFpbGFibGUKICAgICAgICAgLy8gZGV2aWNlIG9mIHRoZSBhcHBy
b3ByaWF0ZSB0eXBlLgotICAgICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gdmlkZW9T
b3VyY2UgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5iZXN0U291cmNlc0Zv
clR5cGVBbmRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywgdmlkZW9Db25z
dHJhaW50cy5nZXQoKSkuYXQoMCk7CisgICAgICAgIGF1dG8gdmlkZW9Tb3VyY2UgPSBBVkNhcHR1
cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5iZXN0U291cmNlc0ZvclR5cGVBbmRDb25zdHJh
aW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywgdmlkZW9Db25zdHJhaW50cy5nZXQoKSku
YXQoMCk7CiAgICAgICAgIEFTU0VSVCh2aWRlb1NvdXJjZSk7CiAgICAgICAgIAotICAgICAgICB2
aWRlb1NvdXJjZXMuYXBwZW5kKHZpZGVvU291cmNlLnJlbGVhc2UoKSk7CisgICAgICAgIHZpZGVv
U291cmNlcy5hcHBlbmQoV1RGTW92ZSh2aWRlb1NvdXJjZSkpOwogICAgIH0KICAgICAKICAgICBj
bGllbnQtPmRpZENyZWF0ZVN0cmVhbShNZWRpYVN0cmVhbVByaXZhdGU6OmNyZWF0ZShhdWRpb1Nv
dXJjZXMsIHZpZGVvU291cmNlcykpOwpAQCAtMTQ3LDE0ICsxNDcsMTQgQEAgdm9pZCBSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyTWFjOjpjcmVhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbUNyZWF0
aW9uQ2xpZW50KgogICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+IHZpZGVv
U291cmNlczsKIAogICAgIGlmICghYXVkaW9EZXZpY2VJRC5pc0VtcHR5KCkpIHsKLSAgICAgICAg
UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IGF1ZGlvU291cmNlID0gQVZDYXB0dXJlRGV2aWNl
TWFuYWdlcjo6c2luZ2xldG9uKCkuc291cmNlV2l0aFVJRChhdWRpb0RldmljZUlELCBSZWFsdGlt
ZU1lZGlhU291cmNlOjpBdWRpbywgbnVsbHB0cik7CisgICAgICAgIGF1dG8gYXVkaW9Tb3VyY2Ug
PSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5zb3VyY2VXaXRoVUlEKGF1ZGlv
RGV2aWNlSUQsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBudWxscHRyKTsKICAgICAgICAg
aWYgKGF1ZGlvU291cmNlKQotICAgICAgICAgICAgYXVkaW9Tb3VyY2VzLmFwcGVuZChhdWRpb1Nv
dXJjZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgYXVkaW9Tb3VyY2VzLmFwcGVuZChXVEZNb3Zl
KGF1ZGlvU291cmNlKSk7CiAgICAgfQogICAgIGlmICghdmlkZW9EZXZpY2VJRC5pc0VtcHR5KCkp
IHsKLSAgICAgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IHZpZGVvU291cmNlID0gQVZD
YXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuc291cmNlV2l0aFVJRCh2aWRlb0Rldmlj
ZUlELCBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywgbnVsbHB0cik7CisgICAgICAgIGF1dG8g
dmlkZW9Tb3VyY2UgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5zb3VyY2VX
aXRoVUlEKHZpZGVvRGV2aWNlSUQsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvLCBudWxscHRy
KTsKICAgICAgICAgaWYgKHZpZGVvU291cmNlKQotICAgICAgICAgICAgdmlkZW9Tb3VyY2VzLmFw
cGVuZCh2aWRlb1NvdXJjZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgdmlkZW9Tb3VyY2VzLmFw
cGVuZChXVEZNb3ZlKHZpZGVvU291cmNlKSk7CiAgICAgfQogCiAgICAgY2xpZW50LT5kaWRDcmVh
dGVTdHJlYW0oTWVkaWFTdHJlYW1Qcml2YXRlOjpjcmVhdGUoYXVkaW9Tb3VyY2VzLCB2aWRlb1Nv
dXJjZXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKaW5kZXggYWFlODA4MzkxMTVmZjli
YWZiOTQ4YzgyNTZmMzgzNGI0OGI4NmVlZS4uOGNjNmYwZjMzNTJjMjMzMzhiNWUyOTA1MTJjZWU0
ZWZlZmM0YWI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKQEAgLTgxLDggKzgxLDgg
QEAgdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6dmFsaWRhdGVSZXF1ZXN0Q29u
c3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBhdWRpb1NvdXJjZSA9IE1v
Y2tSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGUoKTsKLSAgICAgICAgYXVkaW9Tb3VyY2VzLmFw
cGVuZChhdWRpb1NvdXJjZS5yZWxlYXNlKCkpOworICAgICAgICBhdXRvIGF1ZGlvU291cmNlID0g
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZSgpOworICAgICAgICBhdWRpb1NvdXJjZXMu
YXBwZW5kKFdURk1vdmUoYXVkaW9Tb3VyY2UpKTsKICAgICB9CiAKICAgICBpZiAodmlkZW9Db25z
dHJhaW50cykgewpAQCAtOTIsOCArOTIsOCBAQCB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFJlYWx0aW1lTWVk
aWFTb3VyY2U+IHZpZGVvU291cmNlID0gTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmNyZWF0ZSgp
OwotICAgICAgICB2aWRlb1NvdXJjZXMuYXBwZW5kKHZpZGVvU291cmNlLnJlbGVhc2UoKSk7Cisg
ICAgICAgIGF1dG8gdmlkZW9Tb3VyY2UgPSBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRl
KCk7CisgICAgICAgIHZpZGVvU291cmNlcy5hcHBlbmQoV1RGTW92ZSh2aWRlb1NvdXJjZSkpOwog
ICAgIH0KIAogICAgIGNsaWVudC0+Y29uc3RyYWludHNWYWxpZGF0ZWQoYXVkaW9Tb3VyY2VzLCB2
aWRlb1NvdXJjZXMpOwpAQCAtMTE1LDggKzExNSw4IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXI6OmNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVh
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8UmVhbHRp
bWVNZWRpYVNvdXJjZT4gYXVkaW9Tb3VyY2UgPSBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6Y3Jl
YXRlKCk7Ci0gICAgICAgIGF1ZGlvU291cmNlcy5hcHBlbmQoYXVkaW9Tb3VyY2UucmVsZWFzZSgp
KTsKKyAgICAgICAgYXV0byBhdWRpb1NvdXJjZSA9IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpj
cmVhdGUoKTsKKyAgICAgICAgYXVkaW9Tb3VyY2VzLmFwcGVuZChXVEZNb3ZlKGF1ZGlvU291cmNl
KSk7CiAgICAgfQogCiAgICAgaWYgKHZpZGVvQ29uc3RyYWludHMpIHsKQEAgLTEyNiw4ICsxMjYs
OCBAQCB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpjcmVhdGVNZWRpYVN0cmVh
bShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IHZpZGVvU291cmNlID0g
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmNyZWF0ZSgpOwotICAgICAgICB2aWRlb1NvdXJjZXMu
YXBwZW5kKHZpZGVvU291cmNlLnJlbGVhc2UoKSk7CisgICAgICAgIGF1dG8gdmlkZW9Tb3VyY2Ug
PSBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRlKCk7CisgICAgICAgIHZpZGVvU291cmNl
cy5hcHBlbmQoV1RGTW92ZSh2aWRlb1NvdXJjZSkpOwogICAgIH0KICAgICAKICAgICBjbGllbnQt
PmRpZENyZWF0ZVN0cmVhbShNZWRpYVN0cmVhbVByaXZhdGU6OmNyZWF0ZShhdWRpb1NvdXJjZXMs
IHZpZGVvU291cmNlcykpOwpAQCAtMTQwLDEyICsxNDAsMTIgQEAgdm9pZCBNb2NrUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlcjo6Y3JlYXRlTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1DcmVhdGlvbkNs
aWVudCoKICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiB2aWRlb1NvdXJj
ZXM7CiAKICAgICBpZiAoIWF1ZGlvRGV2aWNlSUQuaXNFbXB0eSgpICYmIGF1ZGlvRGV2aWNlSUQg
PT0gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6Om1vY2tBdWRpb1NvdXJjZVBlcnNpc3RlbnRJRCgp
KSB7Ci0gICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBhdWRpb1NvdXJjZSA9IE1v
Y2tSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGUoKTsKLSAgICAgICAgYXVkaW9Tb3VyY2VzLmFw
cGVuZChhdWRpb1NvdXJjZS5yZWxlYXNlKCkpOworICAgICAgICBhdXRvIGF1ZGlvU291cmNlID0g
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZSgpOworICAgICAgICBhdWRpb1NvdXJjZXMu
YXBwZW5kKFdURk1vdmUoYXVkaW9Tb3VyY2UpKTsKICAgICB9CiAgICAgaWYgKCF2aWRlb0Rldmlj
ZUlELmlzRW1wdHkoKSAmJiB2aWRlb0RldmljZUlEID09IE1vY2tSZWFsdGltZU1lZGlhU291cmNl
Ojptb2NrVmlkZW9Tb3VyY2VQZXJzaXN0ZW50SUQoKSkgewotICAgICAgICBSZWZQdHI8UmVhbHRp
bWVNZWRpYVNvdXJjZT4gdmlkZW9Tb3VyY2UgPSBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3Jl
YXRlKCk7Ci0gICAgICAgIHZpZGVvU291cmNlcy5hcHBlbmQodmlkZW9Tb3VyY2UucmVsZWFzZSgp
KTsKKyAgICAgICAgYXV0byB2aWRlb1NvdXJjZSA9IE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpj
cmVhdGUoKTsKKyAgICAgICAgdmlkZW9Tb3VyY2VzLmFwcGVuZChXVEZNb3ZlKHZpZGVvU291cmNl
KSk7CiAgICAgfQogCiAgICAgY2xpZW50LT5kaWRDcmVhdGVTdHJlYW0oTWVkaWFTdHJlYW1Qcml2
YXRlOjpjcmVhdGUoYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCmluZGV4IDcy
MGVmYzg3MWJmZDFlNGI0NTczNTA3ODdlNzNmODM2MzdiYTkxNTMuLjY4MDYwMzU0ZTdlNTBlYmQ4
NjdiMWQwODA5ZDNkMjdjM2U1MTRiYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIHZv
aWQgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBWZWN0
b3I8QmxvYlBhcnQ+IGJsb2JQYXJ0CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBy
ZWdpc3RlckJsb2JSZXNvdXJjZUhhbmRsZUNvbnN0cnVjdG9yKCk7CiAKLSAgICBSZWZQdHI8Qmxv
YkRhdGE+IGJsb2JEYXRhID0gQmxvYkRhdGE6OmNyZWF0ZShjb250ZW50VHlwZSk7CisgICAgYXV0
byBibG9iRGF0YSA9IEJsb2JEYXRhOjpjcmVhdGUoY29udGVudFR5cGUpOwogCiAgICAgLy8gVGhl
IGJsb2IgZGF0YSBpcyBzdG9yZWQgaW4gdGhlICJjYW5vbmljYWwiIHdheS4gVGhhdCBpcywgaXQg
b25seSBjb250YWlucyBhIGxpc3Qgb2YgRGF0YSBhbmQgRmlsZSBpdGVtcy4KICAgICAvLyAxKSBU
aGUgRGF0YSBpdGVtIGlzIGRlbm90ZWQgYnkgdGhlIHJhdyBkYXRhIGFuZCB0aGUgcmFuZ2UuCkBA
IC0xNTEsNyArMTUxLDcgQEAgdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkwo
Y29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4gYmxvYlBhcnQKICAgICAgICAgfQogICAg
IH0KIAotICAgIG1fYmxvYnMuc2V0KHVybC5zdHJpbmcoKSwgYmxvYkRhdGEucmVsZWFzZSgpKTsK
KyAgICBtX2Jsb2JzLnNldCh1cmwuc3RyaW5nKCksIFdURk1vdmUoYmxvYkRhdGEpKTsKIH0KIAog
dm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFVSTCYgc3JjVVJMKQpAQCAtMjA4LDExICsyMDgsMTEgQEAgdm9pZCBCbG9iUmVnaXN0cnlJ
bXBsOjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBz
cmNVUkwKICAgICAgICAgZW5kID0gb3JpZ2luYWxTaXplOwogCiAgICAgdW5zaWduZWQgbG9uZyBs
b25nIG5ld0xlbmd0aCA9IGVuZCAtIHN0YXJ0OwotICAgIFJlZlB0cjxCbG9iRGF0YT4gbmV3RGF0
YSA9IEJsb2JEYXRhOjpjcmVhdGUob3JpZ2luYWxEYXRhLT5jb250ZW50VHlwZSgpKTsKKyAgICBh
dXRvIG5ld0RhdGEgPSBCbG9iRGF0YTo6Y3JlYXRlKG9yaWdpbmFsRGF0YS0+Y29udGVudFR5cGUo
KSk7CiAKLSAgICBhcHBlbmRTdG9yYWdlSXRlbXMobmV3RGF0YS5nZXQoKSwgb3JpZ2luYWxEYXRh
LT5pdGVtcygpLCBzdGFydCwgbmV3TGVuZ3RoKTsKKyAgICBhcHBlbmRTdG9yYWdlSXRlbXMobmV3
RGF0YS5wdHIoKSwgb3JpZ2luYWxEYXRhLT5pdGVtcygpLCBzdGFydCwgbmV3TGVuZ3RoKTsKIAot
ICAgIG1fYmxvYnMuc2V0KHVybC5zdHJpbmcoKSwgbmV3RGF0YS5yZWxlYXNlKCkpOworICAgIG1f
YmxvYnMuc2V0KHVybC5zdHJpbmcoKSwgV1RGTW92ZShuZXdEYXRhKSk7CiB9CiAKIHZvaWQgQmxv
YlJlZ2lzdHJ5SW1wbDo6dW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCmluZGV4
IGJjZTZiYTk3MzFiZjE5NDAxMTc2Y2NiZjZiZGQ3MGZkN2VlZjUyMmYuLmI2YzY3YjdjZGUyNmE3
NTNjOGFiMmUxY2MyMDE0OGJjYzc4ZmIwZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCkBAIC05MywxMyArOTMsMTMgQEAgUmVm
UHRyPFJlc291cmNlSGFuZGxlPiBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlKE5ldHdvcmtpbmdDb250
ZXh0KiBjb250ZXh0LCBjb25zdAogICAgIGlmIChwcm90b2NvbE1hcEl0ZW0gIT0gYnVpbHRpblJl
c291cmNlSGFuZGxlQ29uc3RydWN0b3JNYXAoKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHByb3Rv
Y29sTWFwSXRlbS0+dmFsdWUocmVxdWVzdCwgY2xpZW50KTsKIAotICAgIFJlZlB0cjxSZXNvdXJj
ZUhhbmRsZT4gbmV3SGFuZGxlKGFkb3B0UmVmKG5ldyBSZXNvdXJjZUhhbmRsZShjb250ZXh0LCBy
ZXF1ZXN0LCBjbGllbnQsIGRlZmVyc0xvYWRpbmcsIHNob3VsZENvbnRlbnRTbmlmZikpKTsKKyAg
ICBhdXRvIG5ld0hhbmRsZSA9IGFkb3B0UmVmKCpuZXcgUmVzb3VyY2VIYW5kbGUoY29udGV4dCwg
cmVxdWVzdCwgY2xpZW50LCBkZWZlcnNMb2FkaW5nLCBzaG91bGRDb250ZW50U25pZmYpKTsKIAog
ICAgIGlmIChuZXdIYW5kbGUtPmQtPm1fc2NoZWR1bGVkRmFpbHVyZVR5cGUgIT0gTm9GYWlsdXJl
KQotICAgICAgICByZXR1cm4gbmV3SGFuZGxlLnJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJuIFdU
Rk1vdmUobmV3SGFuZGxlKTsKIAogICAgIGlmIChuZXdIYW5kbGUtPnN0YXJ0KCkpCi0gICAgICAg
IHJldHVybiBuZXdIYW5kbGUucmVsZWFzZSgpOworICAgICAgICByZXR1cm4gV1RGTW92ZShuZXdI
YW5kbGUpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAppbmRl
eCA0ODYxMzNjYzg5Yzk5ZDZiMjQwNjUzMzFhNzJjNWQ5YTRkMDhkNmQ1Li40MGViZjRkNjkwNjc1
MjU1YWEzNjk0OTZhMzJmNDljYmU3NTkzNjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKQEAgLTIw
MCw3ICsyMDAsNyBAQCBzdGF0aWMgdm9pZCogZm9ybUNyZWF0ZShDRlJlYWRTdHJlYW1SZWYgc3Ry
ZWFtLCB2b2lkKiBjb250ZXh0KQogICAgIEZvcm1DcmVhdGlvbkNvbnRleHQqIGZvcm1Db250ZXh0
ID0gc3RhdGljX2Nhc3Q8Rm9ybUNyZWF0aW9uQ29udGV4dCo+KGNvbnRleHQpOwogCiAgICAgRm9y
bVN0cmVhbUZpZWxkcyogbmV3SW5mbyA9IG5ldyBGb3JtU3RyZWFtRmllbGRzOwotICAgIG5ld0lu
Zm8tPmZvcm1EYXRhID0gZm9ybUNvbnRleHQtPmZvcm1EYXRhLnJlbGVhc2UoKTsKKyAgICBuZXdJ
bmZvLT5mb3JtRGF0YSA9IFdURk1vdmUoZm9ybUNvbnRleHQtPmZvcm1EYXRhKTsKICAgICBuZXdJ
bmZvLT5jdXJyZW50U3RyZWFtID0gMDsKICAgICBuZXdJbmZvLT5jdXJyZW50U3RyZWFtUmFuZ2VM
ZW5ndGggPSBCbG9iRGF0YUl0ZW06OnRvRW5kT2ZGaWxlOwogICAgIG5ld0luZm8tPmZvcm1TdHJl
YW0gPSBzdHJlYW07IC8vIERvbid0IHJldGFpbi4gVGhhdCB3b3VsZCBjcmVhdGUgYSByZWZlcmVu
Y2UgY3ljbGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaUNvbnRleHQuY3Bw
CmluZGV4IGU3ZTZlY2ZlY2VjMGFiYjhlMTJiY2M0ZWIyOGY2NGQ1ZmFhNDZmMzYuLjk3N2RiZmQ3
OTdkNTc4NTdmNDdlNDgxMTZiMTNkNDFjYWEzODg2ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvQmlkaUNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvQmlkaUNvbnRleHQuY3BwCkBAIC05Miw3ICs5Miw3IEBAIFBhc3NSZWZQdHI8
QmlkaUNvbnRleHQ+IEJpZGlDb250ZXh0Ojpjb3B5U3RhY2tSZW1vdmluZ1VuaWNvZGVFbWJlZGRp
bmdDb250ZXh0cygpCiAgICAgZm9yIChpbnQgaSA9IGNvbnRleHRzLnNpemUoKSAtIDE7IGkgPiAw
OyAtLWkpCiAgICAgICAgIHRvcENvbnRleHQgPSBjb3B5Q29udGV4dEFuZFJlYmFzZWxpbmVMZXZl
bChjb250ZXh0c1tpIC0gMV0sIHRvcENvbnRleHQuZ2V0KCkpOwogCi0gICAgcmV0dXJuIHRvcENv
bnRleHQucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKHRvcENvbnRleHQpOwogfQogCiBi
b29sIG9wZXJhdG9yPT0oY29uc3QgQmlkaUNvbnRleHQmIGMxLCBjb25zdCBCaWRpQ29udGV4dCYg
YzIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVu
ZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVy
LmNwcAppbmRleCBmNDdiM2JhNjE2MzdjYzI1NGVhYWYwOTNmMjc0MWNlNGExZDExYjliLi5iYTUx
MWNjYTZhOTgzYjBiMTE0YTEyZjk1YjQxNjJjOTU5MmFhZTY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKQEAgLTI4OCw3ICsyODgs
NyBAQCBib29sIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZChSZW5kZXJFbGVtZW50KiByZW5k
ZXJlciwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucwogICAgICAgICAgICAgICAgIGVmZmVjdC0+aW5w
dXRFZmZlY3RzKCkuYXBwZW5kKHByZXZpb3VzRWZmZWN0KTsKICAgICAgICAgICAgICAgICBtX2Vm
ZmVjdHMuYXBwZW5kKGVmZmVjdCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBwcmV2aW91
c0VmZmVjdCA9IGVmZmVjdC5yZWxlYXNlKCk7CisgICAgICAgICAgICBwcmV2aW91c0VmZmVjdCA9
IFdURk1vdmUoZWZmZWN0KTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggNmE2ZjExNjQ5OGQxODk1MzYyYTA3OGE4ZjliMDUx
NmQxZTMxMGZiMC4uOTI5MDE0Y2U5YmZkNjMyZjU2ZTE3ZGI0NDU2MDQ5M2ZhMzRjMWU1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0zMTE2LDcgKzMxMTYs
NyBAQCBQYXNzUmVmUHRyPFNjcm9sbGJhcj4gUmVuZGVyTGF5ZXI6OmNyZWF0ZVNjcm9sbGJhcihT
Y3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdAogICAgICAgICB9CiAgICAgfQogICAgIHJlbmRl
cmVyKCkudmlldygpLmZyYW1lVmlldygpLmFkZENoaWxkKHdpZGdldC5nZXQoKSk7Ci0gICAgcmV0
dXJuIHdpZGdldC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1vdmUod2lkZ2V0KTsKIH0KIAog
dm9pZCBSZW5kZXJMYXllcjo6ZGVzdHJveVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbiBv
cmllbnRhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApp
bmRleCAyMzdjNmVhMjcyNDQxZGNkZjAyZTA5OGY2OTNjOTYxYjgwMGUzMDBhLi41ZGFhNmY5NDM5
ZWMzYzI1NmVhNzA5MzQwZmU1YTYzODQ5Mjk5ZTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpc3RCb3guY3BwCkBAIC05MTEsNyArOTExLDcgQEAgUGFzc1JlZlB0cjxTY3Jv
bGxiYXI+IFJlbmRlckxpc3RCb3g6OmNyZWF0ZVNjcm9sbGJhcigpCiAgICAgICAgIH0KICAgICB9
CiAgICAgdmlldygpLmZyYW1lVmlldygpLmFkZENoaWxkKHdpZGdldC5nZXQoKSk7Ci0gICAgcmV0
dXJuIHdpZGdldC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1vdmUod2lkZ2V0KTsKIH0KIAog
dm9pZCBSZW5kZXJMaXN0Qm94OjpkZXN0cm95U2Nyb2xsYmFyKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCmluZGV4IDRkYjMzYTAwODFhMzA1MTU5NzhhNGRm
OTJhZWMxNzVhNGYwMTNkYTkuLmI4MDA5NDljZDc0NzAyZGZkMTE5NGM1MWI1NDZkZTkxYmNkMmYy
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcApAQCAt
NTc4LDcgKzU3OCw3IEBAIFBhc3NSZWZQdHI8U2Nyb2xsYmFyPiBSZW5kZXJNZW51TGlzdDo6Y3Jl
YXRlU2Nyb2xsYmFyKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlCiAgICAgICAgIHdpZGdldCA9
IFJlbmRlclNjcm9sbGJhcjo6Y3JlYXRlQ3VzdG9tU2Nyb2xsYmFyKHNjcm9sbGFibGVBcmVhLCBv
cmllbnRhdGlvbiwgJnNlbGVjdEVsZW1lbnQoKSk7CiAgICAgZWxzZQogICAgICAgICB3aWRnZXQg
PSBTY3JvbGxiYXI6OmNyZWF0ZU5hdGl2ZVNjcm9sbGJhcihzY3JvbGxhYmxlQXJlYSwgb3JpZW50
YXRpb24sIGNvbnRyb2xTaXplKTsKLSAgICByZXR1cm4gd2lkZ2V0LnJlbGVhc2UoKTsKKyAgICBy
ZXR1cm4gV1RGTW92ZSh3aWRnZXQpOwogfQogCiBpbnQgUmVuZGVyTWVudUxpc3Q6OmNsaWVudElu
c2V0TGVmdCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU2VhcmNoRmllbGQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJj
aEZpZWxkLmNwcAppbmRleCAzZjVkMDNkYWNmMzA5NzE5MDQwNmUzMGE4YmE4OWU2MDkwZWRmNjMy
Li5mNWM2MjU5YWMwZTlkZTljMGZhYjJkYzNhZTc3YjU0ZGE1ZWMzZDczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAKQEAgLTM1NCw3ICszNTQs
NyBAQCBQYXNzUmVmUHRyPFNjcm9sbGJhcj4gUmVuZGVyU2VhcmNoRmllbGQ6OmNyZWF0ZVNjcm9s
bGJhcihTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYQogICAgICAgICB3aWRnZXQgPSBSZW5kZXJTY3Jv
bGxiYXI6OmNyZWF0ZUN1c3RvbVNjcm9sbGJhcihzY3JvbGxhYmxlQXJlYSwgb3JpZW50YXRpb24s
ICZpbnB1dEVsZW1lbnQoKSk7CiAgICAgZWxzZQogICAgICAgICB3aWRnZXQgPSBTY3JvbGxiYXI6
OmNyZWF0ZU5hdGl2ZVNjcm9sbGJhcihzY3JvbGxhYmxlQXJlYSwgb3JpZW50YXRpb24sIGNvbnRy
b2xTaXplKTsKLSAgICByZXR1cm4gd2lkZ2V0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92
ZSh3aWRnZXQpOwogfQogCiBMYXlvdXRVbml0IFJlbmRlclNlYXJjaEZpZWxkOjpjb21wdXRlTG9n
aWNhbEhlaWdodExpbWl0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlcGxh
eS9SZXBsYXlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlDb250
cm9sbGVyLmNwcAppbmRleCA5MWEyOTUxNGE5NTg0MTIzNzNkNGQ3OWEyNDk2ZTEwMjBmODg5YTQy
Li5kMTA1MDFhMjZmNWUzZDYxMTBkNzA0MGZmOTdhMjQ5MDdiOWI3MjNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuY3BwCkBAIC0yODQsNyArMjg0LDcgQEAgdm9p
ZCBSZXBsYXlDb250cm9sbGVyOjp1bmxvYWRTZWdtZW50KGJvb2wgc3VwcHJlc3NOb3RpZmljYXRp
b25zKQogICAgIExPRyhXZWJSZXBsYXksICIlLTIwcyBDbGVhcmluZyBpbnB1dCBjdXJzb3JzIGZv
ciBwYWdlOiAlcFxuIiwgIlJlcGxheUNvbnRyb2xsZXIiLCAmbV9wYWdlKTsKIAogICAgIG1fYWN0
aXZlQ3Vyc29yID0gbnVsbHB0cjsKLSAgICBSZWZQdHI8UmVwbGF5U2Vzc2lvblNlZ21lbnQ+IHVu
bG9hZGVkU2VnbWVudCA9IG1fbG9hZGVkU2VnbWVudC5yZWxlYXNlKCk7CisgICAgYXV0byB1bmxv
YWRlZFNlZ21lbnQgPSBXVEZNb3ZlKG1fbG9hZGVkU2VnbWVudCk7CiAgICAgZm9yIChGcmFtZSog
ZnJhbWUgPSAmbV9wYWdlLm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgp
LnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGZyYW1lLT5zY3JpcHQoKS5nbG9iYWxPYmplY3Qo
bWFpblRocmVhZE5vcm1hbFdvcmxkKCkpLT5zZXRJbnB1dEN1cnNvcihtX2VtcHR5Q3Vyc29yLmNv
cHlSZWYoKSk7CiAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5zZXRJbnB1dEN1cnNvcihtX2Vt
cHR5Q3Vyc29yLmNvcHlSZWYoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCmluZGV4IDEyZmEwYmI3YzAxYTY1Mzk4YTQ0OTljYjE5
ZjlmYzJmNGU5NTQ3YTYuLjFhMjA3MjA4YjNiYmVjMzM3OWRmOTFjZjQxYjcwOTNkNDYyZDM4YjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQuY3BwCkBAIC0xNzksNyArMTc5LDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEaWZm
dXNlTGlnaHRpbmdFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXIKICAgICBp
ZiAoIWlucHV0MSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8TGlnaHRT
b3VyY2U+IGxpZ2h0U291cmNlID0gU1ZHRkVMaWdodEVsZW1lbnQ6OmZpbmRMaWdodFNvdXJjZSh0
aGlzKTsKKyAgICBhdXRvIGxpZ2h0U291cmNlID0gU1ZHRkVMaWdodEVsZW1lbnQ6OmZpbmRMaWdo
dFNvdXJjZSh0aGlzKTsKICAgICBpZiAoIWxpZ2h0U291cmNlKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIApAQCAtMTkwLDcgKzE5MCw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRGlm
ZnVzZUxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyCiAgICAg
Q29sb3IgY29sb3IgPSByZW5kZXJlci0+c3R5bGUoKS5zdmdTdHlsZSgpLmxpZ2h0aW5nQ29sb3Io
KTsKIAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFRGlmZnVzZUxpZ2h0aW5n
OjpjcmVhdGUoZmlsdGVyLCBjb2xvciwgc3VyZmFjZVNjYWxlKCksIGRpZmZ1c2VDb25zdGFudCgp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIGxpZ2h0
U291cmNlLnJlbGVhc2UoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsVW5pdExlbmd0aFgoKSwga2VybmVsVW5p
dExlbmd0aFkoKSwgV1RGTW92ZShsaWdodFNvdXJjZSkpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZl
Y3RzKCkuYXBwZW5kKGlucHV0MSk7CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAppbmRleCAx
OWY1ZDM4OTQ1Y2E5NjNlOWZlZmQ5OGFhNDQwMjlmMzdjNDk1YWFiLi42M2Y4NmUxZGJlYTIxMWNh
Y2JjYjdkYTQ0MjQ2MjA1ZDRhODU3NTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC0xOTAsNyArMTkwLDcgQEAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZH
RmlsdGVyQnVpbGRlciogZmlsdGUKICAgICBpZiAoIWlucHV0MSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBSZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNlID0gU1ZHRkVMaWdo
dEVsZW1lbnQ6OmZpbmRMaWdodFNvdXJjZSh0aGlzKTsKKyAgICBhdXRvIGxpZ2h0U291cmNlID0g
U1ZHRkVMaWdodEVsZW1lbnQ6OmZpbmRMaWdodFNvdXJjZSh0aGlzKTsKICAgICBpZiAoIWxpZ2h0
U291cmNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMjAxLDcgKzIwMSw3IEBAIFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKFNW
R0ZpbHRlckJ1aWxkZXIqIGZpbHRlCiAgICAgQ29sb3IgY29sb3IgPSByZW5kZXJlci0+c3R5bGUo
KS5zdmdTdHlsZSgpLmxpZ2h0aW5nQ29sb3IoKTsKIAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IGVmZmVjdCA9IEZFU3BlY3VsYXJMaWdodGluZzo6Y3JlYXRlKGZpbHRlciwgY29sb3IsIHN1cmZh
Y2VTY2FsZSgpLCBzcGVjdWxhckNvbnN0YW50KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzcGVjdWxhckV4cG9uZW50KCksIGtlcm5lbFVuaXRMZW5ndGhYKCks
IGtlcm5lbFVuaXRMZW5ndGhZKCksIGxpZ2h0U291cmNlLnJlbGVhc2UoKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjdWxhckV4cG9uZW50KCksIGtlcm5l
bFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIFdURk1vdmUobGlnaHRTb3VyY2Up
KTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwogICAgIHJldHVy
biBlZmZlY3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdMaXN0UHJvcGVydHkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQ
cm9wZXJ0eS5oCmluZGV4IDc3Nzg4ZTEwMjI0OGQ1MDI1MmM4MDE0Zjc3YTA2NWQxYmFkOTU5ZGIu
LjVkNDFlOTYwYjdlNDFiNzk4MWZiOTNkOThmNmY4MWE2ZTI1OGNhNGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eS5oCkBAIC0yMDMsNyArMjAz
LDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV93cmFwcGVycy0+YXQoaW5kZXgpID0gd3JhcHBl
cjsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiB3cmFwcGVyLnJlbGVhc2UoKTsKKyAgICAg
ICAgcmV0dXJuIFdURk1vdmUod3JhcHBlcik7CiAgICAgfQogCiAgICAgLy8gU1ZHTGlzdDo6aW5z
ZXJ0SXRlbUJlZm9yZSgpCkBAIC0yNTAsNyArMjUwLDcgQEAgcHVibGljOgogCiAgICAgICAgIC8v
IFNwZWM6IElmIG5ld0l0ZW0gaXMgYWxyZWFkeSBpbiBhIGxpc3QsIGl0IGlzIHJlbW92ZWQgZnJv
bSBpdHMgcHJldmlvdXMgbGlzdCBiZWZvcmUgaXQgaXMgaW5zZXJ0ZWQgaW50byB0aGlzIGxpc3Qu
CiAgICAgICAgIGlmICghcHJvY2Vzc0luY29taW5nTGlzdEl0ZW1XcmFwcGVyKG5ld0l0ZW0sICZp
bmRleCkpCi0gICAgICAgICAgICByZXR1cm4gbmV3SXRlbS5yZWxlYXNlKCk7CisgICAgICAgICAg
ICByZXR1cm4gV1RGTW92ZShuZXdJdGVtKTsKIAogICAgICAgICAvLyBTcGVjOiBJbnNlcnRzIGEg
bmV3IGl0ZW0gaW50byB0aGUgbGlzdCBhdCB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLiBUaGUgaW5k
ZXggb2YgdGhlIGl0ZW0gYmVmb3JlIHdoaWNoIHRoZSBuZXcgaXRlbSBpcyB0byBiZQogICAgICAg
ICAvLyBpbnNlcnRlZC4gVGhlIGZpcnN0IGl0ZW0gaXMgbnVtYmVyIDAuIElmIHRoZSBpbmRleCBp
cyBlcXVhbCB0byAwLCB0aGVuIHRoZSBuZXcgaXRlbSBpcyBpbnNlcnRlZCBhdCB0aGUgZnJvbnQg
b2YgdGhlIGxpc3QuCkBAIC0yNjAsNyArMjYwLDcgQEAgcHVibGljOgogICAgICAgICBtX3dyYXBw
ZXJzLT5pbnNlcnQoaW5kZXgsIG5ld0l0ZW0pOwogCiAgICAgICAgIGNvbW1pdENoYW5nZSgpOwot
ICAgICAgICByZXR1cm4gbmV3SXRlbTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUobmV3SXRlbSk7
CiAgICAgfQogCiAgICAgLy8gU1ZHTGlzdDo6cmVwbGFjZUl0ZW0oKQpAQCAtMzg1LDcgKzM4NSw3
IEBAIHB1YmxpYzoKICAgICAgICAgbV92YWx1ZXMtPnJlbW92ZShpbmRleCk7CiAKICAgICAgICAg
Y29tbWl0Q2hhbmdlKCk7Ci0gICAgICAgIHJldHVybiBvbGRJdGVtLnJlbGVhc2UoKTsKKyAgICAg
ICAgcmV0dXJuIFdURk1vdmUob2xkSXRlbSk7CiAgICAgfQogCiAgICAgLy8gU1ZHTGlzdDo6YXBw
ZW5kSXRlbSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVh
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKaW5kZXggZDY4
ODJkYjJjMTc3ZmRlMTcyN2YyMzEwZTI5MjBmZGJhZGZiN2Y0Ni4uZjZmNWE0ZGYxNDBlOGM3MjNi
ZjE4MzVmYTYxNTk2YTY3MDlmZTY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhy
ZWFkLmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgV29ya2VyVGhyZWFkOjp3b3JrZXJUaHJl
YWQoKQogCiAgICAgewogICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV90aHJlYWRDcmVhdGlvbk11
dGV4KTsKLSAgICAgICAgbV93b3JrZXJHbG9iYWxTY29wZSA9IGNyZWF0ZVdvcmtlckdsb2JhbFNj
b3BlKG1fc3RhcnR1cERhdGEtPm1fc2NyaXB0VVJMLCBtX3N0YXJ0dXBEYXRhLT5tX3VzZXJBZ2Vu
dCwgbV9zdGFydHVwRGF0YS0+bV9jb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMs
IG1fc3RhcnR1cERhdGEtPm1fc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9s
aWN5LCBtX3N0YXJ0dXBEYXRhLT5tX3RvcE9yaWdpbi5yZWxlYXNlKCkpOworICAgICAgICBtX3dv
cmtlckdsb2JhbFNjb3BlID0gY3JlYXRlV29ya2VyR2xvYmFsU2NvcGUobV9zdGFydHVwRGF0YS0+
bV9zY3JpcHRVUkwsIG1fc3RhcnR1cERhdGEtPm1fdXNlckFnZW50LCBtX3N0YXJ0dXBEYXRhLT5t
X2NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycywgbV9zdGFydHVwRGF0YS0+bV9z
aG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFdURk1vdmUobV9zdGFy
dHVwRGF0YS0+bV90b3BPcmlnaW4pKTsKIAogICAgICAgICBpZiAobV9ydW5Mb29wLnRlcm1pbmF0
ZWQoKSkgewogICAgICAgICAgICAgLy8gVGhlIHdvcmtlciB3YXMgdGVybWluYXRlZCBiZWZvcmUg
dGhlIHRocmVhZCBoYWQgYSBjaGFuY2UgdG8gcnVuLiBTaW5jZSB0aGUgY29udGV4dCBkaWRuJ3Qg
ZXhpc3QgeWV0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggZTVlYTc0
MDViY2U5YjA2ZGQ3Y2M3MTE3M2FiNDRjYTVmNzc1OWQ0Mi4uODdjZGZhN2IxYTI4ZjM2MTU0OGYw
YzEzYWRhZDhlNjdhNjIxOTBkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3Bw
CkBAIC03OTgsNyArNzk4LDcgQEAgYm9vbCBYTUxIdHRwUmVxdWVzdDo6aW50ZXJuYWxBYm9ydCgp
CiAgICAgLy8gQ2FuY2VsbGluZyBtX2xvYWRlciBtYXkgdHJpZ2dlciBhIHdpbmRvdy5vbmxvYWQg
Y2FsbGJhY2sgd2hpY2ggY2FuIGNhbGwgb3BlbigpIG9uIHRoZSBzYW1lIHhoci4KICAgICAvLyBU
aGlzIHdvdWxkIGNyZWF0ZSBpbnRlcm5hbEFib3J0IHJlZW50cmFudCBjYWxsLgogICAgIC8vIG1f
bG9hZGVyIGlzIHNldCB0byBudWxsIGJlZm9yZSBiZWluZyBjYW5jZWxsZWQgdG8gZXhpdCBlYXJs
eSBpbiBhbnkgcmVlbnRyYW50IGludGVybmFsQWJvcnQoKSBjYWxsLgotICAgIFJlZlB0cjxUaHJl
YWRhYmxlTG9hZGVyPiBsb2FkZXIgPSBtX2xvYWRlci5yZWxlYXNlKCk7CisgICAgYXV0byBsb2Fk
ZXIgPSBXVEZNb3ZlKG1fbG9hZGVyKTsKICAgICBsb2FkZXItPmNhbmNlbCgpOwogCiAgICAgLy8g
SWYgd2luZG93Lm9ubG9hZCBjYWxsYmFjayBjYWxscyBvcGVuKCkgYW5kIHNlbmQoKSBvbiB0aGUg
c2FtZSB4aHIsIG1fbG9hZGVyIGlzIG5vdyBzZXQgdG8gYSBuZXcgdmFsdWUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhTdGVwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
UGF0aFN0ZXAuY3BwCmluZGV4IDBhZTM0MDM2MDdjZjQ3ODYwMDZkNjk3ODRiMmFkYmM3MjJmYjNm
ZmYuLmM1NTdlMTM2ZTg3YWRiYWQwNTE4ODFhYjE3NTcwMjM5YWZhNDllMzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFN0ZXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YUGF0aFN0ZXAuY3BwCkBAIC0zNDMsMTAgKzM0MywxMCBAQCB2b2lkIFN0ZXA6Om5vZGVzSW5B
eGlzKE5vZGUmIGNvbnRleHQsIE5vZGVTZXQmIG5vZGVzKSBjb25zdAogCiAgICAgICAgICAgICAv
LyBBdm9pZCBsYXppbHkgY3JlYXRpbmcgYXR0cmlidXRlIG5vZGVzIGZvciBhdHRyaWJ1dGVzIHRo
YXQgd2UgZG8gbm90IG5lZWQgYW55d2F5LgogICAgICAgICAgICAgaWYgKG1fbm9kZVRlc3QubV9r
aW5kID09IE5vZGVUZXN0OjpOYW1lVGVzdCAmJiBtX25vZGVUZXN0Lm1fZGF0YSAhPSBzdGFyQXRv
bSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxBdHRyPiBhdHRyID0gY29udGV4dEVsZW1lbnQu
Z2V0QXR0cmlidXRlTm9kZU5TKG1fbm9kZVRlc3QubV9uYW1lc3BhY2VVUkksIG1fbm9kZVRlc3Qu
bV9kYXRhKTsKKyAgICAgICAgICAgICAgICBhdXRvIGF0dHIgPSBjb250ZXh0RWxlbWVudC5nZXRB
dHRyaWJ1dGVOb2RlTlMobV9ub2RlVGVzdC5tX25hbWVzcGFjZVVSSSwgbV9ub2RlVGVzdC5tX2Rh
dGEpOwogICAgICAgICAgICAgICAgIGlmIChhdHRyICYmIGF0dHItPm5hbWVzcGFjZVVSSSgpICE9
IFhNTE5TTmFtZXM6OnhtbG5zTmFtZXNwYWNlVVJJKSB7IC8vIEluIFhQYXRoIGxhbmQsIG5hbWVz
cGFjZSBub2RlcyBhcmUgbm90IGFjY2Vzc2libGUgb24gdGhlIGF0dHJpYnV0ZSBheGlzLgogICAg
ICAgICAgICAgICAgICAgICBpZiAobm9kZU1hdGNoZXMoKmF0dHIsIEF0dHJpYnV0ZUF4aXMsIG1f
bm9kZVRlc3QpKSAvLyBTdGlsbCBuZWVkIHRvIGNoZWNrIG1lcmdlZCBwcmVkaWNhdGVzLgotICAg
ICAgICAgICAgICAgICAgICAgICAgbm9kZXMuYXBwZW5kKGF0dHIucmVsZWFzZSgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG5vZGVzLmFwcGVuZChXVEZNb3ZlKGF0dHIpKTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtMzU1
LDkgKzM1NSw5IEBAIHZvaWQgU3RlcDo6bm9kZXNJbkF4aXMoTm9kZSYgY29udGV4dCwgTm9kZVNl
dCYgbm9kZXMpIGNvbnN0CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBm
b3IgKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlIDogY29udGV4dEVsZW1lbnQuYXR0cmlidXRl
c0l0ZXJhdG9yKCkpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8QXR0cj4gYXR0ciA9IGNvbnRl
eHRFbGVtZW50LmVuc3VyZUF0dHIoYXR0cmlidXRlLm5hbWUoKSk7Ci0gICAgICAgICAgICAgICAg
aWYgKG5vZGVNYXRjaGVzKCphdHRyLCBBdHRyaWJ1dGVBeGlzLCBtX25vZGVUZXN0KSkKLSAgICAg
ICAgICAgICAgICAgICAgbm9kZXMuYXBwZW5kKGF0dHIucmVsZWFzZSgpKTsKKyAgICAgICAgICAg
ICAgICBhdXRvIGF0dHIgPSBjb250ZXh0RWxlbWVudC5lbnN1cmVBdHRyKGF0dHJpYnV0ZS5uYW1l
KCkpOworICAgICAgICAgICAgICAgIGlmIChub2RlTWF0Y2hlcyhhdHRyLmdldCgpLCBBdHRyaWJ1
dGVBeGlzLCBtX25vZGVUZXN0KSkKKyAgICAgICAgICAgICAgICAgICAgbm9kZXMuYXBwZW5kKFdU
Rk1vdmUoYXR0cikpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCmluZGV4IDA4ZWEx
Njc2ZWM2NmNmNGY1NmFkMThiNWM0ZjQ5ZGRkYjc5ZmNhNmIuLmE2NTUwZGExYWViZWY2NGI3YWNk
MWViMmMyNjMwMGI2NzhiOTFjMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9T
dG9yYWdlQXJlYUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlQXJl
YUltcGwuY3BwCkBAIC0xMzksOSArMTM5LDkgQEAgdm9pZCBTdG9yYWdlQXJlYUltcGw6OnNldEl0
ZW0oRnJhbWUqIHNvdXJjZUZyYW1lLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW4KICAg
ICBibG9ja1VudGlsSW1wb3J0Q29tcGxldGUoKTsKIAogICAgIFN0cmluZyBvbGRWYWx1ZTsKLSAg
ICBSZWZQdHI8U3RvcmFnZU1hcD4gbmV3TWFwID0gbV9zdG9yYWdlTWFwLT5zZXRJdGVtKGtleSwg
dmFsdWUsIG9sZFZhbHVlLCBxdW90YUV4Y2VwdGlvbik7CisgICAgYXV0byBuZXdNYXAgPSBtX3N0
b3JhZ2VNYXAtPnNldEl0ZW0oa2V5LCB2YWx1ZSwgb2xkVmFsdWUsIHF1b3RhRXhjZXB0aW9uKTsK
ICAgICBpZiAobmV3TWFwKQotICAgICAgICBtX3N0b3JhZ2VNYXAgPSBuZXdNYXAucmVsZWFzZSgp
OworICAgICAgICBtX3N0b3JhZ2VNYXAgPSBXVEZNb3ZlKG5ld01hcCk7CiAKICAgICBpZiAocXVv
dGFFeGNlcHRpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTE2MSw5ICsxNjEsOSBAQCB2b2lkIFN0
b3JhZ2VBcmVhSW1wbDo6cmVtb3ZlSXRlbShGcmFtZSogc291cmNlRnJhbWUsIGNvbnN0IFN0cmlu
ZyYga2V5KQogICAgIGJsb2NrVW50aWxJbXBvcnRDb21wbGV0ZSgpOwogCiAgICAgU3RyaW5nIG9s
ZFZhbHVlOwotICAgIFJlZlB0cjxTdG9yYWdlTWFwPiBuZXdNYXAgPSBtX3N0b3JhZ2VNYXAtPnJl
bW92ZUl0ZW0oa2V5LCBvbGRWYWx1ZSk7CisgICAgYXV0byBuZXdNYXAgPSBtX3N0b3JhZ2VNYXAt
PnJlbW92ZUl0ZW0oa2V5LCBvbGRWYWx1ZSk7CiAgICAgaWYgKG5ld01hcCkKLSAgICAgICAgbV9z
dG9yYWdlTWFwID0gbmV3TWFwLnJlbGVhc2UoKTsKKyAgICAgICAgbV9zdG9yYWdlTWFwID0gV1RG
TW92ZShuZXdNYXApOwogCiAgICAgaWYgKG9sZFZhbHVlLmlzTnVsbCgpKQogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkhvc3RNYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQv
TmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbQppbmRleCBkNDllZjZlZTFiZDMxN2IyNmZmYjY4
YzgyMGU5MmMyZDc3YmM1NWJiLi5lNGI3Yzg5OWE2NWEyNDM4YjhiMzZhZDQzODc4ZDhhOGI1ZDhl
NWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkhvc3RNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9z
dGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0KQEAgLTI3Miw3ICsyNzIsNyBAQCBQYXNz
UmVmUHRyPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eT4gTmV0c2NhcGVQbHVnaW5Ib3N0TWFu
YWdlcjo6aW5zdGFudGlhdGVQbAogICAgIGluc3RhbmNlLT5zZXRSZW5kZXJDb250ZXh0SUQocmVw
bHktPm1fcmVuZGVyQ29udGV4dElEKTsKICAgICBpbnN0YW5jZS0+c2V0UmVuZGVyZXJUeXBlKHJl
cGx5LT5tX3JlbmRlcmVyVHlwZSk7CiAKLSAgICByZXR1cm4gaW5zdGFuY2UucmVsZWFzZSgpOwor
ICAgIHJldHVybiBXVEZNb3ZlKGluc3RhbmNlKTsKIH0KIAogdm9pZCBOZXRzY2FwZVBsdWdpbkhv
c3RNYW5hZ2VyOjpjcmVhdGVQcm9wZXJ0eUxpc3RGaWxlKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0
aCwgY3B1X3R5cGVfdCBwbHVnaW5BcmNoaXRlY3R1cmUsIGNvbnN0IFN0cmluZyYgYnVuZGxlSWRl
bnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05l
dHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMv
SG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQppbmRleCA5ODRjMjNkYjYxZmZl
ZDBhMGQ0OGI2YjVkOWYyYWJkZTZmMmYzMDA4Li5lZWQyNzc5ODFjMGY4ZjU4ZGIwNjc3NDFlZjli
MWU3NjBhMjJhMDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3Rl
ZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCkBAIC0yNDgsOSAr
MjQ4LDkgQEAgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpOZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveHkoTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkKIAogUGFzc1JlZlB0cjxOZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHk+IE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Y3JlYXRlKE5l
dHNjYXBlUGx1Z2luSG9zdFByb3h5KiBwbHVnaW5Ib3N0UHJveHksIFdlYkhvc3RlZE5ldHNjYXBl
UGx1Z2luVmlldyAqcGx1Z2luVmlldywgYm9vbCBmdWxsRnJhbWVQbHVnaW4pCiB7Ci0gICAgUmVm
UHRyPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eT4gcHJveHkgPSBhZG9wdFJlZihuZXcgTmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5KHBsdWdpbkhvc3RQcm94eSwgcGx1Z2luVmlldywgZnVs
bEZyYW1lUGx1Z2luKSk7Ci0gICAgcGx1Z2luSG9zdFByb3h5LT5hZGRQbHVnaW5JbnN0YW5jZShw
cm94eS5nZXQoKSk7Ci0gICAgcmV0dXJuIHByb3h5LnJlbGVhc2UoKTsKKyAgICBhdXRvIHByb3h5
ID0gYWRvcHRSZWYoKm5ldyBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkocGx1Z2luSG9zdFBy
b3h5LCBwbHVnaW5WaWV3LCBmdWxsRnJhbWVQbHVnaW4pKTsKKyAgICBwbHVnaW5Ib3N0UHJveHkt
PmFkZFBsdWdpbkluc3RhbmNlKHByb3h5LnB0cigpKTsKKyAgICByZXR1cm4gV1RGTW92ZShwcm94
eSk7CiB9CiAKIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6fk5ldHNjYXBlUGx1Z2luSW5z
dGFuY2VQcm94eSgpCkBAIC04MDEsOCArODAxLDggQEAgTlBFcnJvciBOZXRzY2FwZVBsdWdpbklu
c3RhbmNlUHJveHk6OmxvYWRSZXF1ZXN0KE5TVVJMUmVxdWVzdCAqcmVxdWVzdCwgY29uc3QgY2gK
ICAgICAgICAgICAgIHJldHVybiBOUEVSUl9JTlZBTElEX1BBUkFNOwogICAgICAgICB9CiAKLSAg
ICAgICAgUmVmUHRyPFBsdWdpblJlcXVlc3Q+IHBsdWdpblJlcXVlc3QgPSBQbHVnaW5SZXF1ZXN0
OjpjcmVhdGUocmVxdWVzdElELCByZXF1ZXN0LCB0YXJnZXQsIGFsbG93UG9wdXBzKTsKLSAgICAg
ICAgbV9wbHVnaW5SZXF1ZXN0cy5hcHBlbmQocGx1Z2luUmVxdWVzdC5yZWxlYXNlKCkpOworICAg
ICAgICBhdXRvIHBsdWdpblJlcXVlc3QgPSBQbHVnaW5SZXF1ZXN0OjpjcmVhdGUocmVxdWVzdElE
LCByZXF1ZXN0LCB0YXJnZXQsIGFsbG93UG9wdXBzKTsKKyAgICAgICAgbV9wbHVnaW5SZXF1ZXN0
cy5hcHBlbmQoV1RGTW92ZShwbHVnaW5SZXF1ZXN0KSk7CiAgICAgICAgIG1fcmVxdWVzdFRpbWVy
LnN0YXJ0T25lU2hvdCgwKTsKICAgICB9IGVsc2UgewogICAgICAgICBSZWZQdHI8SG9zdGVkTmV0
c2NhcGVQbHVnaW5TdHJlYW0+IHN0cmVhbSA9IEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpj
cmVhdGUodGhpcywgcmVxdWVzdElELCByZXF1ZXN0KTsKQEAgLTEzNzIsMTEgKzEzNzIsMTEgQEAg
Ym9vbCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmRlbWFyc2hhbFZhbHVlRnJvbUFycmF5
KEV4ZWNTdGF0ZSogZXhlYywgTlNBcnIKICAgICAgICAgICAgIGlmICghZnJhbWUtPnNjcmlwdCgp
LmNhbkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgICAgIFJlZlB0cjxSb290T2JqZWN0PiByb290
T2JqZWN0ID0gZnJhbWUtPnNjcmlwdCgpLmNyZWF0ZVJvb3RPYmplY3QobV9wbHVnaW5WaWV3KTsK
KyAgICAgICAgICAgIGF1dG8gcm9vdE9iamVjdCA9IGZyYW1lLT5zY3JpcHQoKS5jcmVhdGVSb290
T2JqZWN0KG1fcGx1Z2luVmlldyk7CiAgICAgICAgICAgICBpZiAoIXJvb3RPYmplY3QpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgCi0gICAgICAgICAgICByZXN1
bHQgPSBQcm94eUluc3RhbmNlOjpjcmVhdGUocm9vdE9iamVjdC5yZWxlYXNlKCksIHRoaXMsIG9i
amVjdElEKS0+Y3JlYXRlUnVudGltZU9iamVjdChleGVjKTsKKyAgICAgICAgICAgIHJlc3VsdCA9
IFByb3h5SW5zdGFuY2U6OmNyZWF0ZShXVEZNb3ZlKHJvb3RPYmplY3QpLCB0aGlzLCBvYmplY3RJ
RCktPmNyZWF0ZVJ1bnRpbWVPYmplY3QoZXhlYyk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCBmZmVmYzE5
MGJjYjc1NjQxNWIzZjMyZTFiMmE1MmIxMTBhNThmMzM1Li44OWJhMDdjZjcxMTE5NDEyMDZlZTQ0
YThjZGYwM2EyMTkxMGUyNWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMjM0OCw3ICsyMzQ4LDcg
QEAgLSAodm9pZClkZWFsbG9jCiAKIC0gKHZvaWQpcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbjooUG9s
aWN5QWN0aW9uKWFjdGlvbgogewotICAgIFJlZlB0cjxGcmFtZT4gZnJhbWUgPSBfZnJhbWUucmVs
ZWFzZSgpOworICAgIGF1dG8gZnJhbWUgPSBXVEZNb3ZlKF9mcmFtZSk7CiAgICAgaWYgKCFmcmFt
ZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCmluZGV4IGM2Zjg1ZGU3ZDQ3NjQ3NzBkYWVh
MzE2NzgzOTYzNGJhMmIzMTBiNDYuLmEzZGJmNGE3YjM5MGYxOWFjZGVmYzE0YmZhODI1NzQ5NTVi
NTNkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNl
Y3VyaXR5T3JpZ2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlNlY3VyaXR5T3JpZ2luLm1tCkBAIC01NCw4ICs1NCw4IEBAIC0gKGlkKWluaXRXaXRoVVJMOihO
U1VSTCAqKXVybAogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIFJl
ZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShVUkwo
W3VybCBhYnNvbHV0ZVVSTF0pKTsKLSAgICBTZWN1cml0eU9yaWdpbiogcmF3T3JpZ2luID0gb3Jp
Z2luLnJlbGVhc2UoKS5sZWFrUmVmKCk7CisgICAgYXV0byBvcmlnaW4gPSBTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKFVSTChbdXJsIGFic29sdXRlVVJMXSkpOworICAgIFNlY3VyaXR5T3JpZ2luKiBy
YXdPcmlnaW4gPSAmb3JpZ2luLmxlYWtSZWYoKTsKICAgICBfcHJpdmF0ZSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8V2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlICo+KHJhd09yaWdpbik7CiAKICAgICByZXR1
cm4gc2VsZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViQXJjaGl2
ZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViQXJjaGl2ZS5tbQppbmRleCAzNDhl
OGYwOGNhMmY0OTc2NjllZTNhYWNiZWMyY2Y2NTY3MThkYThmLi5lOTZjNjA3Y2ZiODRjODVhMWVi
ZmFhYmRjMzFjZWJhMDRlYTVjM2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkFyY2hpdmUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJBcmNo
aXZlLm1tCkBAIC0xNzUsNyArMTc1LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTWFpblJl
c291cmNlOihXZWJSZXNvdXJjZSAqKW1haW5SZXNvdXJjZSBzdWJyZXNvdXJjZXM6KE4KICAgICAg
ICAgcmV0dXJuIG5pbDsKICAgICB9CiAgICAgCi0gICAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4g
Y29yZU1haW5SZXNvdXJjZSA9IG1haW5SZXNvdXJjZSA/IFttYWluUmVzb3VyY2UgX2NvcmVSZXNv
dXJjZV0gOiAwOworICAgIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNvcmVNYWluUmVzb3VyY2Ug
PSBtYWluUmVzb3VyY2UgPyBbbWFpblJlc291cmNlIF9jb3JlUmVzb3VyY2VdIDogbnVsbHB0cjsK
IAogICAgIFZlY3RvcjxSZWZQdHI8QXJjaGl2ZVJlc291cmNlPj4gY29yZVJlc291cmNlczsKICAg
ICBmb3IgKFdlYlJlc291cmNlICpzdWJyZXNvdXJjZSBpbiBzdWJyZXNvdXJjZXMpCkBAIC0xODUs
MTMgKzE4NSwxMyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhNYWluUmVzb3VyY2U6KFdlYlJl
c291cmNlICopbWFpblJlc291cmNlIHN1YnJlc291cmNlczooTgogICAgIGZvciAoV2ViQXJjaGl2
ZSAqc3ViZnJhbWVBcmNoaXZlIGluIHN1YmZyYW1lQXJjaGl2ZXMpCiAgICAgICAgIGNvcmVBcmNo
aXZlcy5hcHBlbmQoW3N1YmZyYW1lQXJjaGl2ZS0+X3ByaXZhdGUgY29yZUFyY2hpdmVdKTsKIAot
ICAgIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjb3JlQXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hp
dmU6OmNyZWF0ZShjb3JlTWFpblJlc291cmNlLnJlbGVhc2UoKSwgV1RGTW92ZShjb3JlUmVzb3Vy
Y2VzKSwgV1RGTW92ZShjb3JlQXJjaGl2ZXMpKTsKKyAgICBhdXRvIGNvcmVBcmNoaXZlID0gTGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFdURk1vdmUoY29yZU1haW5SZXNvdXJjZSksIFdURk1vdmUo
Y29yZVJlc291cmNlcyksIFdURk1vdmUoY29yZUFyY2hpdmVzKSk7CiAgICAgaWYgKCFjb3JlQXJj
aGl2ZSkgewogICAgICAgICBbc2VsZiByZWxlYXNlXTsKICAgICAgICAgcmV0dXJuIG5pbDsKICAg
ICB9CiAKLSAgICBbX3ByaXZhdGUgc2V0Q29yZUFyY2hpdmU6Y29yZUFyY2hpdmUucmVsZWFzZSgp
XTsKKyAgICBbX3ByaXZhdGUgc2V0Q29yZUFyY2hpdmU6V1RGTW92ZShjb3JlQXJjaGl2ZSldOwog
CiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0yMDksMTMgKzIwOSwxMyBAQCAtIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhEYXRhOihOU0RhdGEgKilkYXRhCiAjZW5kaWYKIAogICAgIF9wcml2YXRlID0g
W1tXZWJBcmNoaXZlUHJpdmF0ZSBhbGxvY10gaW5pdF07Ci0gICAgUmVmUHRyPExlZ2FjeVdlYkFy
Y2hpdmU+IGNvcmVBcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZl
cjo6d3JhcE5TRGF0YShkYXRhKSk7CisgICAgYXV0byBjb3JlQXJjaGl2ZSA9IExlZ2FjeVdlYkFy
Y2hpdmU6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OndyYXBOU0RhdGEoZGF0YSkpOwogICAgIGlmICgh
Y29yZUFyY2hpdmUpIHsKICAgICAgICAgW3NlbGYgcmVsZWFzZV07CiAgICAgICAgIHJldHVybiBu
aWw7CiAgICAgfQogICAgICAgICAKLSAgICBbX3ByaXZhdGUgc2V0Q29yZUFyY2hpdmU6Y29yZUFy
Y2hpdmUucmVsZWFzZSgpXTsKKyAgICBbX3ByaXZhdGUgc2V0Q29yZUFyY2hpdmU6V1RGTW92ZShj
b3JlQXJjaGl2ZSldOwogICAgICAgICAKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgQ0ZBYnNvbHV0
ZVRpbWUgZW5kID0gQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXggODAzZDNhOGU0OWU1OWE3OTU0MDMwNmQ0
MTgxNWFmOWM0Y2UwODgwMS4uNjA2NDcyMmE1NjM2MTQ4NTg0MmNmNTdmZDkzMGY3NTU4OGQ2ZThm
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQpAQCAtNTE4
LDggKzUxOCw4IEBAIC0gKFdlYkFyY2hpdmUgKil3ZWJBcmNoaXZlCiAKIC0gKFdlYlJlc291cmNl
ICopbWFpblJlc291cmNlCiB7Ci0gICAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY29yZVJlc291
cmNlID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5tYWluUmVzb3VyY2UoKTsKLSAgICBy
ZXR1cm4gW1tbV2ViUmVzb3VyY2UgYWxsb2NdIF9pbml0V2l0aENvcmVSZXNvdXJjZTpjb3JlUmVz
b3VyY2UucmVsZWFzZSgpXSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBjb3JlUmVzb3VyY2UgPSB0
b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPm1haW5SZXNvdXJjZSgpOworICAgIHJldHVybiBb
W1tXZWJSZXNvdXJjZSBhbGxvY10gX2luaXRXaXRoQ29yZVJlc291cmNlOldURk1vdmUoY29yZVJl
c291cmNlKV0gYXV0b3JlbGVhc2VdOwogfQogCiAtIChOU0FycmF5ICopc3VicmVzb3VyY2VzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCBiMGRjZDlhOWFhNmFlZmY0Y2Rm
NmFkZGUwNGVmN2NmMjlhZTQxODc2Li45Y2JmMzA5MTMzMzljMjY2NGJiNzZhNmI1NDJiOWViZTUy
NjEzMDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTkxMSw3ICs5
MTEsNyBAQCAtIChET01Eb2N1bWVudEZyYWdtZW50ICopX2RvY3VtZW50RnJhZ21lbnRXaXRoTm9k
ZXNBc1BhcmFncmFwaHM6KE5TQXJyYXkgKilub2RlcwogICAgIHdoaWxlICgobm9kZSA9IFtub2Rl
RW51bSBuZXh0T2JqZWN0XSkpCiAgICAgICAgIG5vZGVzVmVjdG9yLmFwcGVuZChjb3JlKG5vZGUp
KTsKIAotICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGRvY3VtZW50LT5j
cmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CisgICAgYXV0byBmcmFnbWVudCA9IGRvY3VtZW50LT5j
cmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CiAKICAgICBmb3IgKGF1dG8qIG5vZGUgOiBub2Rlc1Zl
Y3RvcikgewogICAgICAgICBhdXRvIGVsZW1lbnQgPSBjcmVhdGVEZWZhdWx0UGFyYWdyYXBoRWxl
bWVudCgqZG9jdW1lbnQpOwpAQCAtOTE5LDcgKzkxOSw3IEBAIC0gKERPTURvY3VtZW50RnJhZ21l
bnQgKilfZG9jdW1lbnRGcmFnbWVudFdpdGhOb2Rlc0FzUGFyYWdyYXBoczooTlNBcnJheSAqKW5v
ZGVzCiAgICAgICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChlbGVtZW50KTsKICAgICB9CiAKLSAg
ICByZXR1cm4ga2l0KGZyYWdtZW50LnJlbGVhc2UoKS5nZXQoKSk7CisgICAgcmV0dXJuIGtpdChm
cmFnbWVudC5wdHIoKSk7CiB9CiAKIC0gKHZvaWQpX3JlcGxhY2VTZWxlY3Rpb25XaXRoTm9kZToo
RE9NTm9kZSAqKW5vZGUgc2VsZWN0UmVwbGFjZW1lbnQ6KEJPT0wpc2VsZWN0UmVwbGFjZW1lbnQg
c21hcnRSZXBsYWNlOihCT09MKXNtYXJ0UmVwbGFjZSBtYXRjaFN0eWxlOihCT09MKW1hdGNoU3R5
bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVBy
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vz
cy5jcHAKaW5kZXggYWY4NmFkOGJmMzM0MzcxYjc5Njc3MWNkMjBhMDEzZDhkNjk2MWIzZC4uM2Vl
NjI0N2U4ZGE4ODA5YjdjNDJmMDA1NTQ2ODVjNjNhYTk0YzA1YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAKQEAgLTE4Miw4ICsx
ODIsOCBAQCB2b2lkIERhdGFiYXNlUHJvY2Vzczo6Y3JlYXRlRGF0YWJhc2VUb1dlYlByb2Nlc3ND
b25uZWN0aW9uKCkKICAgICBtYWNoX3BvcnRfYWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwgTUFD
SF9QT1JUX1JJR0hUX1JFQ0VJVkUsICZsaXN0ZW5pbmdQb3J0KTsKIAogICAgIC8vIENyZWF0ZSBh
IGxpc3RlbmluZyBjb25uZWN0aW9uLgotICAgIFJlZlB0cjxEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nv
bm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNy
ZWF0ZShJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCkpOwotICAgIG1f
ZGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQoY29ubmVjdGlvbi5yZWxlYXNl
KCkpOworICAgIGF1dG8gY29ubmVjdGlvbiA9IERhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlv
bjo6Y3JlYXRlKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihsaXN0ZW5pbmdQb3J0KSk7Cisg
ICAgbV9kYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChXVEZNb3ZlKGNvbm5l
Y3Rpb24pKTsKIAogICAgIElQQzo6QXR0YWNobWVudCBjbGllbnRQb3J0KGxpc3RlbmluZ1BvcnQs
IE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKTsKICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpEYXRhYmFzZVByb2Nlc3NQcm94eTo6RGlkQ3JlYXRlRGF0YWJhc2VU
b1dlYlByb2Nlc3NDb25uZWN0aW9uKGNsaWVudFBvcnQpLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBmMTU4YWFjN2VkZjRh
M2Q3N2I1NzkzZjA1ZDE5OWNjMGNmYzhmYmNiLi5mMWNlMzFmZjY1NWYyMDZjMTgyYTE4MjFlYzZm
ZTI2MjJkN2JmYzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCkBAIC0yNTQsOCArMjU0LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQogI2lmIFVTRShVTklYX0RPTUFJ
Tl9TT0NLRVRTKQogICAgIElQQzo6Q29ubmVjdGlvbjo6U29ja2V0UGFpciBzb2NrZXRQYWlyID0g
SVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKIAotICAgIFJlZlB0
cjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gY29ubmVjdGlvbiA9IE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoc29ja2V0UGFpci5zZXJ2ZXIpOwotICAgIG1fd2Vi
UHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7CisgICAgYXV0
byBjb25uZWN0aW9uID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShzb2Nr
ZXRQYWlyLnNlcnZlcik7CisgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKFdURk1v
dmUoY29ubmVjdGlvbikpOwogCiAgICAgSVBDOjpBdHRhY2htZW50IGNsaWVudFNvY2tldChzb2Nr
ZXRQYWlyLmNsaWVudCk7CiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MoY2xpZW50U29ja2V0KSwgMCk7CkBAIC0yNjUsOCArMjY1LDggQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQogICAgIG1h
Y2hfcG9ydF9hbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBNQUNIX1BPUlRfUklHSFRfUkVDRUlW
RSwgJmxpc3RlbmluZ1BvcnQpOwogCiAgICAgLy8gQ3JlYXRlIGEgbGlzdGVuaW5nIGNvbm5lY3Rp
b24uCi0gICAgUmVmUHRyPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBjb25uZWN0aW9u
ID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShJUEM6OkNvbm5lY3Rpb246
OklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCkpOwotICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25z
LmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7CisgICAgYXV0byBjb25uZWN0aW9uID0gTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShJUEM6OkNvbm5lY3Rpb246OklkZW50
aWZpZXIobGlzdGVuaW5nUG9ydCkpOworICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVu
ZChXVEZNb3ZlKGNvbm5lY3Rpb24pKTsKIAogICAgIElQQzo6QXR0YWNobWVudCBjbGllbnRQb3J0
KGxpc3RlbmluZ1BvcnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKTsKICAgICBwYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRD
cmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhjbGllbnRQb3J0KSwgMCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKaW5kZXggYTQxZDBhYjdlMTYyMGNlNTY2OWJlYzgwMDQx
MTlhZTYzNTZlOGEwMS4uMGYxNmRmNDk2NzhmODUxYmVjMTVjMzE0MjRkMTE5YmM2MjhlYzgyMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcApAQCAtMTI3LDggKzEyNyw4IEBAIGJvb2wg
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2Rl
ciYgZGVjb2RlciwgTmV0d29yCiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVxdWVzdEJv
ZHlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlcykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9u
SGFuZGxlcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKFJlZlB0cjxTYW5kYm94RXh0
ZW5zaW9uPiBleHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUocmVxdWVzdEJvZHlT
YW5kYm94RXh0ZW5zaW9uSGFuZGxlc1tpXSkpCi0gICAgICAgICAgICAgICAgcmVzdWx0LnJlcXVl
c3RCb2R5U2FuZGJveEV4dGVuc2lvbnMuYXBwZW5kKGV4dGVuc2lvbi5yZWxlYXNlKCkpOworICAg
ICAgICAgICAgaWYgKGF1dG8gZXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKHJl
cXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbkhhbmRsZXNbaV0pKQorICAgICAgICAgICAgICAgIHJl
c3VsdC5yZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25zLmFwcGVuZChXVEZNb3ZlKGV4dGVuc2lv
bikpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKaW5kZXggYjk3OGI5OTkz
MzhiMzc4NmMxZTEyMWRjMGVlNzc4ZDViZmFkNjkxZS4uMjMwNjhhNjkyYmYzNjBlY2U0ZjZlMDU4
MDA3NTQ5N2EwNTg2Zjk2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcApAQCAtMTQ1LDEyICsxNDUsMTEg
QEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBFbnRyeTo6ZGVjb2RlU3RvcmFnZVJlY29yZChjb25z
dCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2UKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNF
KQogdm9pZCBFbnRyeTo6aW5pdGlhbGl6ZVNoYXJlYWJsZVJlc291cmNlSGFuZGxlRnJvbVN0b3Jh
Z2VSZWNvcmQoKSBjb25zdAogewotICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9y
eSA9IG1fc291cmNlU3RvcmFnZVJlY29yZC5ib2R5LnRyeUNyZWF0ZVNoYXJlZE1lbW9yeSgpOwor
ICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gbV9zb3VyY2VTdG9yYWdlUmVjb3JkLmJvZHkudHJ5Q3Jl
YXRlU2hhcmVkTWVtb3J5KCk7CiAgICAgaWYgKCFzaGFyZWRNZW1vcnkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFJlZlB0cjxTaGFyZWFibGVSZXNvdXJjZT4gc2hhcmVhYmxlUmVzb3VyY2UgPSBT
aGFyZWFibGVSZXNvdXJjZTo6Y3JlYXRlKHNoYXJlZE1lbW9yeS5yZWxlYXNlKCksIDAsIG1fc291
cmNlU3RvcmFnZVJlY29yZC5ib2R5LnNpemUoKSk7Ci0gICAgQVNTRVJUKHNoYXJlYWJsZVJlc291
cmNlKTsKKyAgICBhdXRvIHNoYXJlYWJsZVJlc291cmNlID0gU2hhcmVhYmxlUmVzb3VyY2U6OmNy
ZWF0ZShXVEZNb3ZlKHNoYXJlZE1lbW9yeSksIDAsIG1fc291cmNlU3RvcmFnZVJlY29yZC5ib2R5
LnNpemUoKSk7CiAgICAgc2hhcmVhYmxlUmVzb3VyY2UtPmNyZWF0ZUhhbmRsZShtX3NoYXJlYWJs
ZVJlc291cmNlSGFuZGxlKTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vbWFjL1NoYXJlZE1lbW9yeU1hYy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9tYWMvU2hhcmVkTWVtb3J5TWFjLmNwcAppbmRleCBjYWY0ZmI0OWI1NDZmYjk0YTIxNGFkNWEx
ZTJhODA5MTJlMDcyYTVjLi4wODBjNTI4NDI2OTc5MWZkOWU5MDQxZDI5OTJmOGZmMDQzNzg3YWY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvU2hhcmVkTWVtb3J5TWFj
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvU2hhcmVkTWVtb3J5TWFjLmNw
cApAQCAtMTEwLDEzICsxMTAsMTMgQEAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5
OjphbGxvY2F0ZShzaXplX3Qgc2l6ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
Ci0gICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5ID0gYWRvcHRSZWYoKm5ldyBT
aGFyZWRNZW1vcnkpOworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gYWRvcHRSZWYoKm5ldyBTaGFy
ZWRNZW1vcnkpOwogICAgIHNoYXJlZE1lbW9yeS0+bV9zaXplID0gc2l6ZTsKICAgICBzaGFyZWRN
ZW1vcnktPm1fZGF0YSA9IHRvUG9pbnRlcihhZGRyZXNzKTsKICAgICBzaGFyZWRNZW1vcnktPm1f
cG9ydCA9IE1BQ0hfUE9SVF9OVUxMOwogICAgIHNoYXJlZE1lbW9yeS0+bV9wcm90ZWN0aW9uID0g
UHJvdGVjdGlvbjo6UmVhZFdyaXRlOwogCi0gICAgcmV0dXJuIHNoYXJlZE1lbW9yeTsKKyAgICBy
ZXR1cm4gV1RGTW92ZShzaGFyZWRNZW1vcnkpOwogfQogCiBzdGF0aWMgaW5saW5lIHZtX3Byb3Rf
dCBtYWNoUHJvdGVjdGlvbihTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gcHJvdGVjdGlvbikKQEAg
LTE1NiwxMyArMTU2LDEzIEBAIFJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y3Jl
YXRlKHZvaWQqIGRhdGEsIHNpemVfdCBzaXplLCBQcm90ZWN0aW9uIHByCiAgICAgaWYgKCFzZW5k
UmlnaHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPFNoYXJlZE1lbW9y
eT4gc2hhcmVkTWVtb3J5KGFkb3B0UmVmKG5ldyBTaGFyZWRNZW1vcnkpKTsKKyAgICBhdXRvIHNo
YXJlZE1lbW9yeShhZG9wdFJlZigqbmV3IFNoYXJlZE1lbW9yeSkpOwogICAgIHNoYXJlZE1lbW9y
eS0+bV9zaXplID0gc2l6ZTsKICAgICBzaGFyZWRNZW1vcnktPm1fZGF0YSA9IG51bGxwdHI7CiAg
ICAgc2hhcmVkTWVtb3J5LT5tX3BvcnQgPSBzZW5kUmlnaHQubGVha1NlbmRSaWdodCgpOwogICAg
IHNoYXJlZE1lbW9yeS0+bV9wcm90ZWN0aW9uID0gcHJvdGVjdGlvbjsKIAotICAgIHJldHVybiBz
aGFyZWRNZW1vcnkucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKHNoYXJlZE1lbW9yeSk7
CiB9CiAKIFJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6bWFwKGNvbnN0IEhhbmRs
ZSYgaGFuZGxlLCBQcm90ZWN0aW9uIHByb3RlY3Rpb24pCkBAIC0xNzgsMTMgKzE3OCwxMyBAQCBS
ZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6Om1hcChjb25zdCBIYW5kbGUmIGhhbmRs
ZSwgUHJvdGVjdGlvbiBwcm90ZWN0aQogICAgIGlmIChrciAhPSBLRVJOX1NVQ0NFU1MpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVt
b3J5KGFkb3B0UmVmKG5ldyBTaGFyZWRNZW1vcnkpKTsKKyAgICBhdXRvIHNoYXJlZE1lbW9yeShh
ZG9wdFJlZigqbmV3IFNoYXJlZE1lbW9yeSkpOwogICAgIHNoYXJlZE1lbW9yeS0+bV9zaXplID0g
aGFuZGxlLm1fc2l6ZTsKICAgICBzaGFyZWRNZW1vcnktPm1fZGF0YSA9IHRvUG9pbnRlcihtYXBw
ZWRBZGRyZXNzKTsKICAgICBzaGFyZWRNZW1vcnktPm1fcG9ydCA9IE1BQ0hfUE9SVF9OVUxMOwog
ICAgIHNoYXJlZE1lbW9yeS0+bV9wcm90ZWN0aW9uID0gcHJvdGVjdGlvbjsKIAotICAgIHJldHVy
biBzaGFyZWRNZW1vcnk7CisgICAgcmV0dXJuIFdURk1vdmUoc2hhcmVkTWVtb3J5KTsKIH0KIAog
U2hhcmVkTWVtb3J5Ojp+U2hhcmVkTWVtb3J5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Q
cm9jZXNzL1BsdWdpblByb2Nlc3MuY3BwCmluZGV4IDI3MDBjYTIyNTU1YTY4ZTljMmYyMDZhMjFm
YTE3NWFjYTZkZjQxYjIuLjc1NTU3MDJhMjdiODU1MTlhMmFhMmEyNTE2MDEzYmNiNDZhYjEyZGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcApA
QCAtMTUxLDggKzE1MSw4IEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6Y3JlYXRlV2ViUHJvY2Vzc0Nv
bm5lY3Rpb24oKQogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgIElQQzo6Q29ubmVj
dGlvbjo6U29ja2V0UGFpciBzb2NrZXRQYWlyID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0
Zm9ybUNvbm5lY3Rpb24oKTsKIAotICAgIFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gY29u
bmVjdGlvbiA9IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoc29ja2V0UGFpci5zZXJ2ZXIp
OwotICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2Uo
KSk7CisgICAgYXV0byBjb25uZWN0aW9uID0gV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShz
b2NrZXRQYWlyLnNlcnZlcik7CisgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKFdU
Rk1vdmUoY29ubmVjdGlvbikpOwogCiAgICAgSVBDOjpBdHRhY2htZW50IGNsaWVudFNvY2tldChz
b2NrZXRQYWlyLmNsaWVudCk7CiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlv
bihjbGllbnRTb2NrZXQsIG1fc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlv
biksIDApOwpAQCAtMTYyLDcgKzE2Miw3IEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6Y3JlYXRlV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24oKQogICAgIG1hY2hfcG9ydF9hbGxvY2F0ZShtYWNoX3Rhc2tfc2Vs
ZigpLCBNQUNIX1BPUlRfUklHSFRfUkVDRUlWRSwgJmxpc3RlbmluZ1BvcnQpOwogCiAgICAgLy8g
Q3JlYXRlIGEgbGlzdGVuaW5nIGNvbm5lY3Rpb24uCi0gICAgUmVmUHRyPFdlYlByb2Nlc3NDb25u
ZWN0aW9uPiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShJUEM6OkNv
bm5lY3Rpb246OklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCkpOworICAgIGF1dG8gY29ubmVjdGlv
biA9IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoSVBDOjpDb25uZWN0aW9uOjpJZGVudGlm
aWVyKGxpc3RlbmluZ1BvcnQpKTsKIAogICAgIGlmIChtX2F1ZGlvSGFyZHdhcmVMaXN0ZW5lcikg
ewogICAgICAgICBpZiAobV9hdWRpb0hhcmR3YXJlTGlzdGVuZXItPmhhcmR3YXJlQWN0aXZpdHko
KSA9PSBXZWJDb3JlOjpBdWRpb0hhcmR3YXJlQWN0aXZpdHlUeXBlOjpJc0FjdGl2ZSkKQEAgLTE3
MSw3ICsxNzEsNyBAQCB2b2lkIFBsdWdpblByb2Nlc3M6OmNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0
aW9uKCkKICAgICAgICAgICAgIGNvbm5lY3Rpb24tPmF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVJbmFj
dGl2ZSgpOwogICAgIH0KIAotICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25u
ZWN0aW9uLnJlbGVhc2UoKSk7CisgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKFdU
Rk1vdmUoY29ubmVjdGlvbikpOwogCiAgICAgSVBDOjpBdHRhY2htZW50IGNsaWVudFBvcnQobGlz
dGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpOwogICAgIHBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpblByb2Nlc3NQcm94eTo6RGlkQ3JlYXRl
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY2xpZW50UG9ydCwgbV9zdXBwb3J0c0FzeW5jaHJvbm91c1Bs
dWdpbkluaXRpYWxpemF0aW9uKSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0KaW5kZXggMmEyOTczODE5ODljMWQ3
YTcwNDFkYTZlZGE4Yjg5MzFkYjA0ZDg4NC4uOWRmMmFiMGRiZTJkNTc2OTkyZmEzM2MxYzU3NjM0
OWU5ZmZiZDM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9X
S1JlbW90ZU9iamVjdENvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQ29j
b2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQpAQCAtMTA4LDkgKzEwOCw5IEBAIHN0YXRpYyB2b2lk
IGVuY29kZVRvT2JqZWN0U3RyZWFtKFdLUmVtb3RlT2JqZWN0RW5jb2RlciAqZW5jb2RlciwgaWQg
dmFsdWUpCiAgICAgc2l6ZV90IHBvc2l0aW9uID0gZW5jb2Rlci0+X29iamVjdFN0cmVhbS0+c2l6
ZSgpOwogICAgIGVuY29kZXItPl9vYmplY3RTdHJlYW0tPmVsZW1lbnRzKCkuYXBwZW5kKG51bGxw
dHIpOwogCi0gICAgUmVmUHRyPEFQSTo6RGljdGlvbmFyeT4gZW5jb2RlZE9iamVjdCA9IGNyZWF0
ZUVuY29kZWRPYmplY3QoZW5jb2RlciwgdmFsdWUpOworICAgIGF1dG8gZW5jb2RlZE9iamVjdCA9
IGNyZWF0ZUVuY29kZWRPYmplY3QoZW5jb2RlciwgdmFsdWUpOwogICAgIEFTU0VSVCghZW5jb2Rl
ci0+X29iamVjdFN0cmVhbS0+ZWxlbWVudHMoKVtwb3NpdGlvbl0pOwotICAgIGVuY29kZXItPl9v
YmplY3RTdHJlYW0tPmVsZW1lbnRzKClbcG9zaXRpb25dID0gZW5jb2RlZE9iamVjdC5yZWxlYXNl
KCk7CisgICAgZW5jb2Rlci0+X29iamVjdFN0cmVhbS0+ZWxlbWVudHMoKVtwb3NpdGlvbl0gPSBX
VEZNb3ZlKGVuY29kZWRPYmplY3QpOwogfQogCiBzdGF0aWMgdm9pZCBlbmNvZGVJbnZvY2F0aW9u
QXJndW1lbnRzKFdLUmVtb3RlT2JqZWN0RW5jb2RlciAqZW5jb2RlciwgTlNJbnZvY2F0aW9uICpp
bnZvY2F0aW9uLCBOU1VJbnRlZ2VyIGZpcnN0QXJndW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJL2MvV0tJbWFnZS5jcHAKaW5kZXggMjMyNzhiM2E3ZjUzNDAwYjM2ZDg1YzgxODdlMDRiYWUy
MWNhYzA4YS4uMjc0MTE5OWUyMjBkMDQ1ZTA3NzIzZDUxODBhODMyNzFjMmFiZDMyOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLSW1hZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0ltYWdlLmNwcApAQCAtMzgsOCArMzgsOCBAQCBXS1R5
cGVJRCBXS0ltYWdlR2V0VHlwZUlEKCkKIAogV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlKFdLU2l6
ZSBzaXplLCBXS0ltYWdlT3B0aW9ucyBvcHRpb25zKQogewotICAgIFJlZlB0cjxXZWJJbWFnZT4g
d2ViSW1hZ2UgPSBXZWJJbWFnZTo6Y3JlYXRlKHRvSW50U2l6ZShzaXplKSwgdG9JbWFnZU9wdGlv
bnMob3B0aW9ucykpOwotICAgIHJldHVybiB0b0FQSSh3ZWJJbWFnZS5yZWxlYXNlKCkubGVha1Jl
ZigpKTsKKyAgICBhdXRvIHdlYkltYWdlID0gV2ViSW1hZ2U6OmNyZWF0ZSh0b0ludFNpemUoc2l6
ZSksIHRvSW1hZ2VPcHRpb25zKG9wdGlvbnMpKTsKKyAgICByZXR1cm4gdG9BUEkod2ViSW1hZ2Uu
bGVha1JlZigpKTsKIH0KIAogV0tTaXplIFdLSW1hZ2VHZXRTaXplKFdLSW1hZ2VSZWYgaW1hZ2VS
ZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tOdW1iZXIuY3Bw
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLTnVtYmVyLmNwcAppbmRleCAxMTMwMDYz
MmNmMGZiZTI0ZGEyMDE1NGU4MzJiYjgzYmQyYTQ5NDI4Li40MThlMDI5ZWE2N2RiZjNhNmExZmVj
YzA3NTM4N2NjNmEyMTc0ZDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L2MvV0tOdW1iZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS051bWJl
ci5jcHAKQEAgLTM4LDggKzM4LDggQEAgV0tUeXBlSUQgV0tCb29sZWFuR2V0VHlwZUlEKCkKIAog
V0tCb29sZWFuUmVmIFdLQm9vbGVhbkNyZWF0ZShib29sIHZhbHVlKQogewotICAgIFJlZlB0cjxB
UEk6OkJvb2xlYW4+IGJvb2xlYW5PYmplY3QgPSBBUEk6OkJvb2xlYW46OmNyZWF0ZSh2YWx1ZSk7
Ci0gICAgcmV0dXJuIHRvQVBJKGJvb2xlYW5PYmplY3QucmVsZWFzZSgpLmxlYWtSZWYoKSk7Cisg
ICAgYXV0byBib29sZWFuT2JqZWN0ID0gQVBJOjpCb29sZWFuOjpjcmVhdGUodmFsdWUpOworICAg
IHJldHVybiB0b0FQSSgmYm9vbGVhbk9iamVjdC5sZWFrUmVmKCkpOwogfQogCiBib29sIFdLQm9v
bGVhbkdldFZhbHVlKFdLQm9vbGVhblJlZiBib29sZWFuUmVmKQpAQCAtNTQsOCArNTQsOCBAQCBX
S1R5cGVJRCBXS0RvdWJsZUdldFR5cGVJRCgpCiAKIFdLRG91YmxlUmVmIFdLRG91YmxlQ3JlYXRl
KGRvdWJsZSB2YWx1ZSkKIHsKLSAgICBSZWZQdHI8QVBJOjpEb3VibGU+IGRvdWJsZU9iamVjdCA9
IEFQSTo6RG91YmxlOjpjcmVhdGUodmFsdWUpOwotICAgIHJldHVybiB0b0FQSShkb3VibGVPYmpl
Y3QucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgYXV0byBkb3VibGVPYmplY3QgPSBBUEk6OkRv
dWJsZTo6Y3JlYXRlKHZhbHVlKTsKKyAgICByZXR1cm4gdG9BUEkoJmRvdWJsZU9iamVjdC5sZWFr
UmVmKCkpOwogfQogCiBkb3VibGUgV0tEb3VibGVHZXRWYWx1ZShXS0RvdWJsZVJlZiBkb3VibGVS
ZWYpCkBAIC03MCw4ICs3MCw4IEBAIFdLVHlwZUlEIFdLVUludDY0R2V0VHlwZUlEKCkKIAogV0tV
SW50NjRSZWYgV0tVSW50NjRDcmVhdGUodWludDY0X3QgdmFsdWUpCiB7Ci0gICAgUmVmUHRyPEFQ
STo6VUludDY0PiB1aW50NjRPYmplY3QgPSBBUEk6OlVJbnQ2NDo6Y3JlYXRlKHZhbHVlKTsKLSAg
ICByZXR1cm4gdG9BUEkodWludDY0T2JqZWN0LnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgIGF1
dG8gdWludDY0T2JqZWN0ID0gQVBJOjpVSW50NjQ6OmNyZWF0ZSh2YWx1ZSk7CisgICAgcmV0dXJu
IHRvQVBJKCZ1aW50NjRPYmplY3QubGVha1JlZigpKTsKIH0KIAogdWludDY0X3QgV0tVSW50NjRH
ZXRWYWx1ZShXS1VJbnQ2NFJlZiB1aW50NjRSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAKaW5kZXggODgyODY3ZjgwYjViZWNj
NWUyOTM0ODE4NjUyYzkwZmUxZmMxNmEyZi4uNDhjYzBiMjIyYWJjNDYzMTllNTljOTNjYjBmNjEz
OWU1NmVlMDI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLU2Vj
dXJpdHlPcmlnaW5SZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1Nl
Y3VyaXR5T3JpZ2luUmVmLmNwcApAQCAtNDgsOCArNDgsOCBAQCBXS1NlY3VyaXR5T3JpZ2luUmVm
IFdLU2VjdXJpdHlPcmlnaW5DcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKFdLU3RyaW5nUmVm
IGlkZQogCiBXS1NlY3VyaXR5T3JpZ2luUmVmIFdLU2VjdXJpdHlPcmlnaW5DcmVhdGUoV0tTdHJp
bmdSZWYgcHJvdG9jb2wsIFdLU3RyaW5nUmVmIGhvc3QsIGludCBwb3J0KQogewotICAgIFJlZlB0
cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmln
aW46OmNyZWF0ZSh0b0ltcGwocHJvdG9jb2wpLT5zdHJpbmcoKSwgdG9JbXBsKGhvc3QpLT5zdHJp
bmcoKSwgcG9ydCk7Ci0gICAgcmV0dXJuIHRvQVBJKHNlY3VyaXR5T3JpZ2luLnJlbGVhc2UoKS5s
ZWFrUmVmKCkpOworICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGUodG9JbXBsKHByb3RvY29sKS0+c3RyaW5nKCksIHRvSW1wbChob3N0KS0+c3RyaW5n
KCksIHBvcnQpOworICAgIHJldHVybiB0b0FQSShzZWN1cml0eU9yaWdpbi5sZWFrUmVmKCkpOwog
fQogCiBXS1N0cmluZ1JlZiBXS1NlY3VyaXR5T3JpZ2luQ29weURhdGFiYXNlSWRlbnRpZmllcihX
S1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9jL1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggZWMy
YWQ5NmY1MGZlNmI0NWY1MTBhZTNlOGI5MGEwNmVkMjQ4MzJlNC4uODYyZmQ3ZjYwYTg1NWQyOWFi
MjY4YjJmMTYyYjJlMDI1MTE2NDczZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSS9jL1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvV0tTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0zOSwxNCArMzksMTQg
QEAgV0tUeXBlSUQgV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVHZXRUeXBlSUQoKQogCiBXS1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZVJlZiBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNyZWF0ZShKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQog
ewotICAgIFJlZlB0cjxBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVl
ID0gQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShjb250ZXh0LCB2YWx1ZSwgZXhj
ZXB0aW9uKTsKLSAgICByZXR1cm4gdG9BUEkoc2VyaWFsaXplZFZhbHVlLnJlbGVhc2UoKS5sZWFr
UmVmKCkpOworICAgIGF1dG8gc2VyaWFsaXplZFZhbHVlID0gQVBJOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmNyZWF0ZShjb250ZXh0LCB2YWx1ZSwgZXhjZXB0aW9uKTsKKyAgICByZXR1cm4gdG9B
UEkoc2VyaWFsaXplZFZhbHVlLmxlYWtSZWYoKSk7CiB9CiAKIFdLU2VyaWFsaXplZFNjcmlwdFZh
bHVlUmVmIFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlQ3JlYXRlV2l0aEludGVybmFsUmVwcmVzZW50
YXRpb24odm9pZCogaW50ZXJuYWxSZXByZXNlbnRhdGlvbikKIHsKLSAgICBSZWZQdHI8QVBJOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSA9IEFQSTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpjcmVhdGUoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlKj4oaW50ZXJuYWxSZXByZXNlbnRhdGlvbikpOwotICAgIHJldHVybiB0b0FQSShzZXJpYWxp
emVkVmFsdWUucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgYXV0byBzZXJpYWxpemVkVmFsdWUg
PSBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0YXRpY19jYXN0PFdlYkNvcmU6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSo+KGludGVybmFsUmVwcmVzZW50YXRpb24pKTsKKyAgICBy
ZXR1cm4gdG9BUEkoJnNlcmlhbGl6ZWRWYWx1ZS5sZWFrUmVmKCkpOwogfQogCiBKU1ZhbHVlUmVm
IFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlRGVzZXJpYWxpemUoV0tTZXJpYWxpemVkU2NyaXB0VmFs
dWVSZWYgc2NyaXB0VmFsdWVSZWYsIEpTQ29udGV4dFJlZiBjb250ZXh0UmVmLCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2Fp
cm8vV0tJbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jYWlyby9X
S0ltYWdlQ2Fpcm8uY3BwCmluZGV4IGFmYjQ5OTMyYjE3ODFlNTA5MDZkYjkzNjRhMDNkZDlhZWM0
OTViODYuLjg1Yjk5Mzg0NDI3YjRmYWQ3MGJmMjBiNDlhZjIzNWU2YTMyNjQ0MWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwCkBA
IC00NSw3ICs0NSw3IEBAIGNhaXJvX3N1cmZhY2VfdCogV0tJbWFnZUNyZWF0ZUNhaXJvU3VyZmFj
ZShXS0ltYWdlUmVmIGltYWdlUmVmKQogV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlRnJvbUNhaXJv
U3VyZmFjZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIFdLSW1hZ2VPcHRpb25zIG9wdGlvbnMp
CiB7CiAgICAgSW50U2l6ZSBpbWFnZVNpemUoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgo
c3VyZmFjZSksIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlKSk7Ci0gICAg
UmVmUHRyPFdlYkltYWdlPiB3ZWJJbWFnZSA9IFdlYkltYWdlOjpjcmVhdGUoaW1hZ2VTaXplLCB0
b0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7CisgICAgYXV0byB3ZWJJbWFnZSA9IFdlYkltYWdlOjpj
cmVhdGUoaW1hZ2VTaXplLCB0b0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7CiAgICAgYXV0byBncmFw
aGljc0NvbnRleHQgPSB3ZWJJbWFnZS0+Yml0bWFwKCktPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgp
OwogCiAgICAgY2Fpcm9fdCogY3IgPSBncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgp
LT5jcigpOwpAQCAtNTQsNSArNTQsNSBAQCBXS0ltYWdlUmVmIFdLSW1hZ2VDcmVhdGVGcm9tQ2Fp
cm9TdXJmYWNlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgV0tJbWFnZU9wdGlvbgogICAgIGNh
aXJvX3JlY3RhbmdsZShjciwgMCwgMCwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWln
aHQoKSk7CiAgICAgY2Fpcm9fZmlsbChjcik7CiAKLSAgICByZXR1cm4gdG9BUEkod2ViSW1hZ2Uu
cmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKHdlYkltYWdlLmxlYWtSZWYo
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2cvV0tJbWFn
ZUNHLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCmlu
ZGV4IGJjYWI2MGI1Y2RmOTdlZjBkYjIxYTAyNTMxYTgwOGM3MjEyNGI1ZDEuLmM2MjM0M2Q5NTFi
Y2YwNjcyOTg4NWRlZjc3ODhmY2NlYTk1OGNiOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCkBAIC01MCw3ICs1MCw3IEBAIFdLSW1hZ2VSZWYgV0tJ
bWFnZUNyZWF0ZUZyb21DR0ltYWdlKENHSW1hZ2VSZWYgaW1hZ2VSZWYsIFdLSW1hZ2VPcHRpb25z
IG9wdGlvbnMpCiAgICAgICAgIHJldHVybiAwOwogICAgIAogICAgIEludFNpemUgaW1hZ2VTaXpl
KENHSW1hZ2VHZXRXaWR0aChpbWFnZVJlZiksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2VSZWYpKTsK
LSAgICBSZWZQdHI8V2ViSW1hZ2U+IHdlYkltYWdlID0gV2ViSW1hZ2U6OmNyZWF0ZShpbWFnZVNp
emUsIHRvSW1hZ2VPcHRpb25zKG9wdGlvbnMpKTsKKyAgICBhdXRvIHdlYkltYWdlID0gV2ViSW1h
Z2U6OmNyZWF0ZShpbWFnZVNpemUsIHRvSW1hZ2VPcHRpb25zKG9wdGlvbnMpKTsKICAgICBpZiAo
IXdlYkltYWdlLT5iaXRtYXAoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTU4LDUgKzU4LDUg
QEAgV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlRnJvbUNHSW1hZ2UoQ0dJbWFnZVJlZiBpbWFnZVJl
ZiwgV0tJbWFnZU9wdGlvbnMgb3B0aW9ucykKICAgICBGbG9hdFJlY3QgcmVjdChGbG9hdFBvaW50
KDAsIDApLCBpbWFnZVNpemUpOwogICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJSZWN0KHJlY3Qp
OwogICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlUmVmLCBpbWFnZVNp
emUsIHJlY3QsIHJlY3QpOwotICAgIHJldHVybiB0b0FQSSh3ZWJJbWFnZS5yZWxlYXNlKCkubGVh
a1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkod2ViSW1hZ2UubGVha1JlZigpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tDZXJ0aWZpY2F0ZUluZm9N
YWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFjL1dLQ2VydGlmaWNhdGVJbmZv
TWFjLm1tCmluZGV4IGM0NDBiNDY3MGE5NTgxYjVlZTZmMmZmNmY4YTc3YTEwNmFlZTZjMjMuLmE4
ODNiN2QzOTQzNWFiMzc2NTQzYWU2MjIxZGVjZjY3ODZkMDExOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tDZXJ0aWZpY2F0ZUluZm9NYWMubW0KKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL21hYy9XS0NlcnRpZmljYXRlSW5mb01hYy5tbQpA
QCAtMzUsNyArMzUsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogV0tDZXJ0aWZpY2F0ZUlu
Zm9SZWYgV0tDZXJ0aWZpY2F0ZUluZm9DcmVhdGVXaXRoQ2VydGZpY2F0ZUNoYWluKENGQXJyYXlS
ZWYgY2VydGlmaWNhdGVDaGFpbikKIHsKICAgICBSZWZQdHI8V2ViQ2VydGlmaWNhdGVJbmZvPiBj
ZXJ0aWZpY2F0ZUluZm8gPSBXZWJDZXJ0aWZpY2F0ZUluZm86OmNyZWF0ZShDZXJ0aWZpY2F0ZUlu
Zm8oY2VydGlmaWNhdGVDaGFpbikpOwotICAgIHJldHVybiB0b0FQSShjZXJ0aWZpY2F0ZUluZm8u
cmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKGNlcnRpZmljYXRlSW5mby5s
ZWFrUmVmKCkpOwogfQogCiBDRkFycmF5UmVmIFdLQ2VydGlmaWNhdGVJbmZvR2V0Q2VydGlmaWNh
dGVDaGFpbihXS0NlcnRpZmljYXRlSW5mb1JlZiBjZXJ0aWZpY2F0ZUluZm9SZWYpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFjL1dLT2JqQ1R5cGVXcmFwcGVyUmVm
Lm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL21hYy9XS09iakNUeXBlV3JhcHBlclJl
Zi5tbQppbmRleCBlZTAxMjViYTFlYWI0OWZhOWQ0M2ZmZDZhZGY2MDk4NmViYTY2YWQzLi5jZmNi
OTAyZTE1NWNkZjcxMWQ0ZWZjYWY0ZGYwODgwODA3NjMwMTUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFjL1dLT2JqQ1R5cGVXcmFwcGVyUmVmLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tPYmpDVHlwZVdyYXBwZXJSZWYubW0KQEAg
LTM4LDggKzM4LDggQEAgV0tUeXBlSUQgV0tPYmpDVHlwZVdyYXBwZXJHZXRUeXBlSUQoKQogCiBX
S09iakNUeXBlV3JhcHBlclJlZiBXS09iakNUeXBlV3JhcHBlckNyZWF0ZShpZCBvYmplY3QpCiB7
Ci0gICAgUmVmUHRyPE9iakNPYmplY3RHcmFwaD4gb2JqZWN0V3JhcHBlciA9IE9iakNPYmplY3RH
cmFwaDo6Y3JlYXRlKG9iamVjdCk7Ci0gICAgcmV0dXJuIHRvQVBJKG9iamVjdFdyYXBwZXIucmVs
ZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgYXV0byBvYmplY3RXcmFwcGVyID0gT2JqQ09iamVjdEdy
YXBoOjpjcmVhdGUob2JqZWN0KTsKKyAgICByZXR1cm4gdG9BUEkoJm9iamVjdFdyYXBwZXIubGVh
a1JlZigpKTsKIH0KIAogaWQgV0tPYmpDVHlwZVdyYXBwZXJHZXRPYmplY3QoV0tPYmpDVHlwZVdy
YXBwZXJSZWYgd3JhcHBlclJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9tYWMvV0tXZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9t
YWMvV0tXZWJBcmNoaXZlLmNwcAppbmRleCA4Njc2Y2M2ZTIzMzI3YzM5MjY0ZjA3MzYzMGRlZjA4
ZmNkMjE5YWZiLi5lNmFhMjRlNTZjMTg1ZTEwMDdkMzIxYzRkMDgyZGFhYmIzMjBkNzU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFjL1dLV2ViQXJjaGl2ZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL21hYy9XS1dlYkFyY2hpdmUuY3BwCkBA
IC00MywzOCArNDMsMzggQEAgV0tUeXBlSUQgV0tXZWJBcmNoaXZlR2V0VHlwZUlEKCkKIAogV0tX
ZWJBcmNoaXZlUmVmIFdLV2ViQXJjaGl2ZUNyZWF0ZShXS1dlYkFyY2hpdmVSZXNvdXJjZVJlZiBt
YWluUmVzb3VyY2VSZWYsIFdLQXJyYXlSZWYgc3VicmVzb3VyY2VzUmVmLCBXS0FycmF5UmVmIHN1
YmZyYW1lQXJjaGl2ZXNSZWYpCiB7Ci0gICAgUmVmUHRyPEFQSTo6V2ViQXJjaGl2ZT4gd2ViQXJj
aGl2ZSA9IEFQSTo6V2ViQXJjaGl2ZTo6Y3JlYXRlKHRvSW1wbChtYWluUmVzb3VyY2VSZWYpLCB0
b0ltcGwoc3VicmVzb3VyY2VzUmVmKSwgdG9JbXBsKHN1YmZyYW1lQXJjaGl2ZXNSZWYpKTsKLSAg
ICByZXR1cm4gdG9BUEkod2ViQXJjaGl2ZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICBhdXRv
IHdlYkFyY2hpdmUgPSBBUEk6OldlYkFyY2hpdmU6OmNyZWF0ZSh0b0ltcGwobWFpblJlc291cmNl
UmVmKSwgdG9JbXBsKHN1YnJlc291cmNlc1JlZiksIHRvSW1wbChzdWJmcmFtZUFyY2hpdmVzUmVm
KSk7CisgICAgcmV0dXJuIHRvQVBJKCZ3ZWJBcmNoaXZlLmxlYWtSZWYoKSk7CiB9CiAKIFdLV2Vi
QXJjaGl2ZVJlZiBXS1dlYkFyY2hpdmVDcmVhdGVXaXRoRGF0YShXS0RhdGFSZWYgZGF0YVJlZikK
IHsKLSAgICBSZWZQdHI8QVBJOjpXZWJBcmNoaXZlPiB3ZWJBcmNoaXZlID0gQVBJOjpXZWJBcmNo
aXZlOjpjcmVhdGUodG9JbXBsKGRhdGFSZWYpKTsKLSAgICByZXR1cm4gdG9BUEkod2ViQXJjaGl2
ZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICBhdXRvIHdlYkFyY2hpdmUgPSBBUEk6OldlYkFy
Y2hpdmU6OmNyZWF0ZSh0b0ltcGwoZGF0YVJlZikpOworICAgIHJldHVybiB0b0FQSSgmd2ViQXJj
aGl2ZS5sZWFrUmVmKCkpOwogfQogCiBXS1dlYkFyY2hpdmVSZWYgV0tXZWJBcmNoaXZlQ3JlYXRl
RnJvbVJhbmdlKFdLQnVuZGxlUmFuZ2VIYW5kbGVSZWYgcmFuZ2VIYW5kbGVSZWYpCiB7Ci0gICAg
UmVmUHRyPEFQSTo6V2ViQXJjaGl2ZT4gd2ViQXJjaGl2ZSA9IEFQSTo6V2ViQXJjaGl2ZTo6Y3Jl
YXRlKHRvSW1wbChyYW5nZUhhbmRsZVJlZiktPmNvcmVSYW5nZSgpKTsKLSAgICByZXR1cm4gdG9B
UEkod2ViQXJjaGl2ZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICBhdXRvIHdlYkFyY2hpdmUg
PSBBUEk6OldlYkFyY2hpdmU6OmNyZWF0ZSh0b0ltcGwocmFuZ2VIYW5kbGVSZWYpLT5jb3JlUmFu
Z2UoKSk7CisgICAgcmV0dXJuIHRvQVBJKCZ3ZWJBcmNoaXZlLmxlYWtSZWYoKSk7CiB9CiAKIFdL
V2ViQXJjaGl2ZVJlc291cmNlUmVmIFdLV2ViQXJjaGl2ZUNvcHlNYWluUmVzb3VyY2UoV0tXZWJB
cmNoaXZlUmVmIHdlYkFyY2hpdmVSZWYpCiB7CiAgICAgUmVmUHRyPEFQSTo6V2ViQXJjaGl2ZVJl
c291cmNlPiBtYWluUmVzb3VyY2UgPSB0b0ltcGwod2ViQXJjaGl2ZVJlZiktPm1haW5SZXNvdXJj
ZSgpOwotICAgIHJldHVybiB0b0FQSShtYWluUmVzb3VyY2UucmVsZWFzZSgpLmxlYWtSZWYoKSk7
CisgICAgcmV0dXJuIHRvQVBJKG1haW5SZXNvdXJjZS5sZWFrUmVmKCkpOwogfQogCiBXS0FycmF5
UmVmIFdLV2ViQXJjaGl2ZUNvcHlTdWJyZXNvdXJjZXMoV0tXZWJBcmNoaXZlUmVmIHdlYkFyY2hp
dmVSZWYpCiB7CiAgICAgUmVmUHRyPEFQSTo6QXJyYXk+IHN1YnJlc291cmNlcyA9IHRvSW1wbCh3
ZWJBcmNoaXZlUmVmKS0+c3VicmVzb3VyY2VzKCk7Ci0gICAgcmV0dXJuIHRvQVBJKHN1YnJlc291
cmNlcy5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkoc3VicmVzb3VyY2Vz
LmxlYWtSZWYoKSk7CiB9CiAKIFdLQXJyYXlSZWYgV0tXZWJBcmNoaXZlQ29weVN1YmZyYW1lQXJj
aGl2ZXMoV0tXZWJBcmNoaXZlUmVmIHdlYkFyY2hpdmVSZWYpCiB7CiAgICAgUmVmUHRyPEFQSTo6
QXJyYXk+IHN1YmZyYW1lQXJjaGl2ZXMgPSB0b0ltcGwod2ViQXJjaGl2ZVJlZiktPnN1YmZyYW1l
QXJjaGl2ZXMoKTsKLSAgICByZXR1cm4gdG9BUEkoc3ViZnJhbWVBcmNoaXZlcy5yZWxlYXNlKCku
bGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkoc3ViZnJhbWVBcmNoaXZlcy5sZWFrUmVmKCkp
OwogfQogCiBXS0RhdGFSZWYgV0tXZWJBcmNoaXZlQ29weURhdGEoV0tXZWJBcmNoaXZlUmVmIHdl
YkFyY2hpdmVSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFj
L1dLV2ViQXJjaGl2ZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9t
YWMvV0tXZWJBcmNoaXZlUmVzb3VyY2UuY3BwCmluZGV4IDg0MzJkOWViNTcxOGEwNDQxYTMxNjc3
Y2UyMWQyMzE5N2ZmZWVlNDQuLmM4MTljMDIxNjhiOTNkMTEzY2IwZTA2NjQzNTk1YjY5OTQ0M2Zj
NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tXZWJBcmNo
aXZlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tX
ZWJBcmNoaXZlUmVzb3VyY2UuY3BwCkBAIC0zOSw4ICszOSw4IEBAIFdLVHlwZUlEIFdLV2ViQXJj
aGl2ZVJlc291cmNlR2V0VHlwZUlEKCkKIAogV0tXZWJBcmNoaXZlUmVzb3VyY2VSZWYgV0tXZWJB
cmNoaXZlUmVzb3VyY2VDcmVhdGUoV0tEYXRhUmVmIGRhdGFSZWYsIFdLVVJMUmVmIFVSTFJlZiwg
V0tTdHJpbmdSZWYgTUlNRVR5cGVSZWYsIFdLU3RyaW5nUmVmIHRleHRFbmNvZGluZ1JlZikKIHsK
LSAgICBSZWZQdHI8QVBJOjpXZWJBcmNoaXZlUmVzb3VyY2U+IHdlYkFyY2hpdmVSZXNvdXJjZSA9
IEFQSTo6V2ViQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUodG9JbXBsKGRhdGFSZWYpLCB0b1dURlN0
cmluZyhVUkxSZWYpLCB0b1dURlN0cmluZyhNSU1FVHlwZVJlZiksIHRvV1RGU3RyaW5nKHRleHRF
bmNvZGluZ1JlZikpOwotICAgIHJldHVybiB0b0FQSSh3ZWJBcmNoaXZlUmVzb3VyY2UucmVsZWFz
ZSgpLmxlYWtSZWYoKSk7CisgICAgYXV0byB3ZWJBcmNoaXZlUmVzb3VyY2UgPSBBUEk6OldlYkFy
Y2hpdmVSZXNvdXJjZTo6Y3JlYXRlKHRvSW1wbChkYXRhUmVmKSwgdG9XVEZTdHJpbmcoVVJMUmVm
KSwgdG9XVEZTdHJpbmcoTUlNRVR5cGVSZWYpLCB0b1dURlN0cmluZyh0ZXh0RW5jb2RpbmdSZWYp
KTsKKyAgICByZXR1cm4gdG9BUEkoJndlYkFyY2hpdmVSZXNvdXJjZS5sZWFrUmVmKCkpOwogfQog
CiBXS0RhdGFSZWYgV0tXZWJBcmNoaXZlUmVzb3VyY2VDb3B5RGF0YShXS1dlYkFyY2hpdmVSZXNv
dXJjZVJlZiB3ZWJBcmNoaXZlUmVzb3VyY2VSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJV2ViQXJjaGl2ZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElXZWJB
cmNoaXZlLm1tCmluZGV4IDhlMTdlNWJiNTY4YWRjZDk1ZDM2YzNjOGYzOGQ2OGNjYzI2MDE2YjAu
LjkyOTAzYjM0N2E0OWZjZWNmYTZjMzVjNTllMmY2ZDY5MTZkOTgyZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUElXZWJBcmNoaXZlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUElXZWJBcmNoaXZlLm1tCkBAIC04Miw3ICs4Miw3IEBAIFdlYkFyY2hpdmU6Oldl
YkFyY2hpdmUoV2ViQXJjaGl2ZVJlc291cmNlKiBtYWluUmVzb3VyY2UsIFBhc3NSZWZQdHI8QVBJ
OjpBcnJheT4KICAgICAgICAgY29yZVN1YmZyYW1lTGVnYWN5V2ViQXJjaGl2ZXMudW5jaGVja2Vk
QXBwZW5kKHN1YmZyYW1lV2ViQXJjaGl2ZS0+Y29yZUxlZ2FjeVdlYkFyY2hpdmUoKSk7CiAgICAg
fQogCi0gICAgbV9sZWdhY3lXZWJBcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNv
cmVNYWluUmVzb3VyY2UucmVsZWFzZSgpLCBXVEZNb3ZlKGNvcmVBcmNoaXZlUmVzb3VyY2VzKSwg
V1RGTW92ZShjb3JlU3ViZnJhbWVMZWdhY3lXZWJBcmNoaXZlcykpOworICAgIG1fbGVnYWN5V2Vi
QXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShXVEZNb3ZlKGNvcmVNYWluUmVzb3Vy
Y2UpLCBXVEZNb3ZlKGNvcmVBcmNoaXZlUmVzb3VyY2VzKSwgV1RGTW92ZShjb3JlU3ViZnJhbWVM
ZWdhY3lXZWJBcmNoaXZlcykpOwogfQogCiBXZWJBcmNoaXZlOjpXZWJBcmNoaXZlKEFQSTo6RGF0
YSogZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcAppbmRleCBlYmY5NzQxMTNhYzEw
YzE5YWE1NWE0YjMyYmFjZTI0NzRhZGFmYjY5Li5hZDcwNjNiMjRmNmYwOGVhZTJiNjAzNzI2MjZk
ZGJkMGFmYmQzNDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwCkBAIC0xNDUsMTMg
KzE0NSwxMyBAQCBQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z2luTW9kdWxlPiBOZXRzY2FwZVBsdWdp
bk1vZHVsZTo6Z2V0T3JDcmVhdGUoY29uc3QgU3RyaW5nJgogICAgICAgICAgICAgcmV0dXJuIHBs
dWdpbk1vZHVsZTsKICAgICB9CiAKLSAgICBSZWZQdHI8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+IHBs
dWdpbk1vZHVsZShhZG9wdFJlZihuZXcgTmV0c2NhcGVQbHVnaW5Nb2R1bGUocGx1Z2luUGF0aCkp
KTsKKyAgICBhdXRvIHBsdWdpbk1vZHVsZShhZG9wdFJlZigqbmV3IE5ldHNjYXBlUGx1Z2luTW9k
dWxlKHBsdWdpblBhdGgpKSk7CiAgICAgCiAgICAgLy8gVHJ5IHRvIGxvYWQgYW5kIGluaXRpYWxp
emUgdGhlIHBsdWctaW4gbW9kdWxlLgogICAgIGlmICghcGx1Z2luTW9kdWxlLT5sb2FkKCkpCi0g
ICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKLSAgICByZXR1
cm4gcGx1Z2luTW9kdWxlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92ZShwbHVnaW5Nb2R1
bGUpOwogfQogCiB2b2lkIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjppbmNyZW1lbnRMb2FkQ291bnQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcAppbmRleCA0ZWVjYmNj
OTk3NzQyOTRkMzQ5ZGQxOWNkYjMwMjhiMDQ5YzFiYjU3Li43ZTBkY2I2MzUxMTMwNWJkYmIwYjUw
NTUyMzg4MDA0MDFmMjMxMTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hh
cmVhYmxlQml0bWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0
bWFwLmNwcApAQCAtOTksMTEgKzk5LDExIEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdzCiBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBIYW5kbGUm
IGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uIHByb3RlY3Rpb24pCiB7CiAgICAgLy8g
Q3JlYXRlIHRoZSBzaGFyZWQgbWVtb3J5LgotICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJl
ZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6bWFwKGhhbmRsZS5tX2hhbmRsZSwgcHJvdGVjdGlvbik7
CisgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6Om1hcChoYW5kbGUubV9oYW5k
bGUsIHByb3RlY3Rpb24pOwogICAgIGlmICghc2hhcmVkTWVtb3J5KQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiBjcmVhdGUoaGFuZGxlLm1fc2l6ZSwgaGFuZGxlLm1fZmxh
Z3MsIHNoYXJlZE1lbW9yeS5yZWxlYXNlKCkpOworICAgIHJldHVybiBjcmVhdGUoaGFuZGxlLm1f
c2l6ZSwgaGFuZGxlLm1fZmxhZ3MsIFdURk1vdmUoc2hhcmVkTWVtb3J5KSk7CiB9CiAKIGJvb2wg
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVIYW5kbGUoSGFuZGxlJiBoYW5kbGUsIFNoYXJlZE1lbW9y
eTo6UHJvdGVjdGlvbiBwcm90ZWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFi
bGVSZXNvdXJjZS5jcHAKaW5kZXggN2Y5MTI3M2VkYzMwOTRiMGI5YjllNjkzNzUzN2ZkMzkzZTk1
ZDMzMy4uNzRhZmQ0YzY2NzY2YzEwNzY5YzkwMWY5YmZmOWE5YzdjN2MyOWE0OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCkBAIC0xMTQsMTEgKzExNCwx
MSBAQCBSZWY8U2hhcmVhYmxlUmVzb3VyY2U+IFNoYXJlYWJsZVJlc291cmNlOjpjcmVhdGUoUGFz
c1JlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZAogCiBQYXNzUmVmUHRyPFNoYXJlYWJsZVJlc291
cmNlPiBTaGFyZWFibGVSZXNvdXJjZTo6bWFwKGNvbnN0IEhhbmRsZSYgaGFuZGxlKQogewotICAg
IFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6bWFwKGhh
bmRsZS5tX2hhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAg
YXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6Om1hcChoYW5kbGUubV9oYW5kbGUsIFNo
YXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgIGlmICghc2hhcmVkTWVtb3J5
KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBjcmVhdGUoc2hhcmVkTWVtb3J5LnJl
bGVhc2UoKSwgaGFuZGxlLm1fb2Zmc2V0LCBoYW5kbGUubV9zaXplKTsKKyAgICByZXR1cm4gY3Jl
YXRlKFdURk1vdmUoc2hhcmVkTWVtb3J5KSwgaGFuZGxlLm1fb2Zmc2V0LCBoYW5kbGUubV9zaXpl
KTsKIH0KIAogU2hhcmVhYmxlUmVzb3VyY2U6OlNoYXJlYWJsZVJlc291cmNlKFBhc3NSZWZQdHI8
U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnksIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgc2l6
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNH
dGsuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAK
aW5kZXggNTAxZDZmMTM3MDkwYzkzNDZhMmZlNGQxMTlmMDQwMWE1NDI0M2NkZS4uN2EyZDZjNGFh
ZWRlMjJlNjdkYWJjOTdlYWY4YWRjZjY3ZGU2MjlhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKQEAgLTIyOSw3ICsyMjksNyBAQCBib29s
IEFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVy
LCBEcmFnRGF0YSYgZHJhZ0RhdAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAot
ICAgIGRyYWdEYXRhID0gRHJhZ0RhdGEocGxhdGZvcm1EYXRhLnJlbGVhc2UoKS5sZWFrUmVmKCks
IGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgc3RhdGljX2Nhc3Q8RHJhZ09wZXJhdGlv
bj4oc291cmNlT3BlcmF0aW9uTWFzayksCisgICAgZHJhZ0RhdGEgPSBEcmFnRGF0YShwbGF0Zm9y
bURhdGEubGVha1JlZigpLCBjbGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIHN0YXRpY19j
YXN0PERyYWdPcGVyYXRpb24+KHNvdXJjZU9wZXJhdGlvbk1hc2spLAogICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+KGZsYWdzKSk7CiAKICAg
ICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9Db29yZGluYXRlZEdyYXBoaWNzL1dLVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS1ZpZXcuY3BwCmluZGV4IGMxYWIyMmZhMWEz
NTVmMjNlMmJmNzA5MjIxYmZmZjQ0NWE4OTMyOTQuLjg1ZTc5YWE0OWZhMDdjMzE4YjI4MmFhYzhk
NzgzOGRhODEzNzRhNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9Db29yZGluYXRlZEdyYXBoaWNzL1dLVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tWaWV3LmNwcApAQCAtMzIsOCArMzIs
OCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBXS1ZpZXdSZWYgV0tWaWV3Q3JlYXRlKFdL
UGFnZUNvbmZpZ3VyYXRpb25SZWYgcGFnZUNvbmZpZ3VyYXRpb24pCiB7Ci0gICAgUmVmUHRyPFdl
YlZpZXc+IHdlYlZpZXcgPSBXZWJWaWV3OjpjcmVhdGUoKnRvSW1wbChwYWdlQ29uZmlndXJhdGlv
bikpOwotICAgIHJldHVybiB0b0FQSSh3ZWJWaWV3LnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAg
IGF1dG8gd2ViVmlldyA9IFdlYlZpZXc6OmNyZWF0ZSgqdG9JbXBsKHBhZ2VDb25maWd1cmF0aW9u
KSk7CisgICAgcmV0dXJuIHRvQVBJKCZ3ZWJWaWV3LmxlYWtSZWYoKSk7CiB9CiAKIFdLU2l6ZSBX
S1ZpZXdHZXRTaXplKFdLVmlld1JlZiB2aWV3UmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLQmF0dGVyeVN0YXR1cy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tCYXR0ZXJ5U3RhdHVzLmNwcAppbmRleCA5NTM4NTBkOGJjMmMyN2Ri
MTAzYTU0MGM0OGZjNTlmNWQ2YWUwMzU2Li4wOWY4Y2M3Njk5NjlhZGQxZjJiYWE3N2ZiOWI4MGNk
NmMwZDNkYzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tC
YXR0ZXJ5U3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tC
YXR0ZXJ5U3RhdHVzLmNwcApAQCAtNDYsOCArNDYsOCBAQCBXS1R5cGVJRCBXS0JhdHRlcnlTdGF0
dXNHZXRUeXBlSUQoKQogV0tCYXR0ZXJ5U3RhdHVzUmVmIFdLQmF0dGVyeVN0YXR1c0NyZWF0ZShi
b29sIGlzQ2hhcmdpbmcsIGRvdWJsZSBjaGFyZ2luZ1RpbWUsIGRvdWJsZSBkaXNjaGFyZ2luZ1Rp
bWUsIGRvdWJsZSBsZXZlbCkKIHsKICNpZiBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpCi0gICAgUmVm
UHRyPFdlYkJhdHRlcnlTdGF0dXM+IHN0YXR1cyA9IFdlYkJhdHRlcnlTdGF0dXM6OmNyZWF0ZShp
c0NoYXJnaW5nLCBjaGFyZ2luZ1RpbWUsIGRpc2NoYXJnaW5nVGltZSwgbGV2ZWwpOwotICAgIHJl
dHVybiB0b0FQSShzdGF0dXMucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgYXV0byBzdGF0dXMg
PSBXZWJCYXR0ZXJ5U3RhdHVzOjpjcmVhdGUoaXNDaGFyZ2luZywgY2hhcmdpbmdUaW1lLCBkaXNj
aGFyZ2luZ1RpbWUsIGxldmVsKTsKKyAgICByZXR1cm4gdG9BUEkoJnN0YXR1cy5sZWFrUmVmKCkp
OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaXNDaGFyZ2luZyk7CiAgICAgVU5VU0VEX1BBUkFN
KGNoYXJnaW5nVGltZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tHZW9sb2NhdGlvblBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS0dlb2xvY2F0aW9uUG9zaXRpb24uY3BwCmluZGV4IDVkOTRmM2U4NjJiYTI5YjljY2Nm
ZjllZTUwNjBkMTY3ZWE2MDFjNzguLjhiNGM1YjY1MDVhYTFkYTI3ZmRlY2U1ZjdiODU1ZDM2OGI0
MTRiZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xv
Y2F0aW9uUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S0dlb2xvY2F0aW9uUG9zaXRpb24uY3BwCkBAIC00Myw2ICs0Myw2IEBAIFdLR2VvbG9jYXRpb25Q
b3NpdGlvblJlZiBXS0dlb2xvY2F0aW9uUG9zaXRpb25DcmVhdGUoZG91YmxlIHRpbWVzdGFtcCwg
ZG91YmxlIGxhCiAKIFdLR2VvbG9jYXRpb25Qb3NpdGlvblJlZiBXS0dlb2xvY2F0aW9uUG9zaXRp
b25DcmVhdGVfYihkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25n
aXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3VibGUgYWx0
aXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1
cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3ZpZGVz
U3BlZWQsIGRvdWJsZSBzcGVlZCkKIHsKLSAgICBSZWZQdHI8V2ViR2VvbG9jYXRpb25Qb3NpdGlv
bj4gcG9zaXRpb24gPSBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUodGltZXN0YW1wLCBs
YXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSwgcHJvdmlkZXNBbHRpdHVkZSwgYWx0aXR1ZGUs
IHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwgYWx0aXR1ZGVBY2N1cmFjeSwgcHJvdmlkZXNIZWFk
aW5nLCBoZWFkaW5nLCBwcm92aWRlc1NwZWVkLCBzcGVlZCk7Ci0gICAgcmV0dXJuIHRvQVBJKHBv
c2l0aW9uLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgIGF1dG8gcG9zaXRpb24gPSBXZWJHZW9s
b2NhdGlvblBvc2l0aW9uOjpjcmVhdGUodGltZXN0YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBh
Y2N1cmFjeSwgcHJvdmlkZXNBbHRpdHVkZSwgYWx0aXR1ZGUsIHByb3ZpZGVzQWx0aXR1ZGVBY2N1
cmFjeSwgYWx0aXR1ZGVBY2N1cmFjeSwgcHJvdmlkZXNIZWFkaW5nLCBoZWFkaW5nLCBwcm92aWRl
c1NwZWVkLCBzcGVlZCk7CisgICAgcmV0dXJuIHRvQVBJKHBvc2l0aW9uLmxlYWtSZWYoKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tHcmFtbWFyRGV0
YWlsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0dyYW1tYXJEZXRhaWwu
Y3BwCmluZGV4IDA2NWY5OWJhNzUwYTlhZDk4NTQzYmJkYWI0NGJiZWY1N2E4Yjc0MDcuLmFmZDk4
OTVkZGUzZGY0ZTNkNjE3ODcyNDdhNDNiNjFhOGU5ZjdlY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0dyYW1tYXJEZXRhaWwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0dyYW1tYXJEZXRhaWwuY3BwCkBAIC00MCw4ICs0MCw4
IEBAIFdLVHlwZUlEIFdLR3JhbW1hckRldGFpbEdldFR5cGVJRCgpCiAKIFdLR3JhbW1hckRldGFp
bFJlZiBXS0dyYW1tYXJEZXRhaWxDcmVhdGUoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoLCBXS0Fy
cmF5UmVmIGd1ZXNzZXMsIFdLU3RyaW5nUmVmIHVzZXJEZXNjcmlwdGlvbikKIHsKLSAgICBSZWZQ
dHI8V2ViR3JhbW1hckRldGFpbD4gZGV0YWlsID0gV2ViR3JhbW1hckRldGFpbDo6Y3JlYXRlKGxv
Y2F0aW9uLCBsZW5ndGgsIHRvSW1wbChndWVzc2VzKSwgdG9XVEZTdHJpbmcodXNlckRlc2NyaXB0
aW9uKSk7Ci0gICAgcmV0dXJuIHRvQVBJKGRldGFpbC5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAg
ICBhdXRvIGRldGFpbCA9IFdlYkdyYW1tYXJEZXRhaWw6OmNyZWF0ZShsb2NhdGlvbiwgbGVuZ3Ro
LCB0b0ltcGwoZ3Vlc3NlcyksIHRvV1RGU3RyaW5nKHVzZXJEZXNjcmlwdGlvbikpOworICAgIHJl
dHVybiB0b0FQSShkZXRhaWwubGVha1JlZigpKTsKIH0KIAogaW50IFdLR3JhbW1hckRldGFpbEdl
dExvY2F0aW9uKFdLR3JhbW1hckRldGFpbFJlZiBncmFtbWFyRGV0YWlsUmVmKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCA4ZTMwMzNlMzA5ZWQ0MjU4YzJl
NzQ2NWE4ZjYzYzQ2YmI2NDI5YmI1Li4xMGQwODgyMzQ0NGYyMWZhOGE1NDQ3ODRiM2Y2MmExMzJm
NTNkMGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAt
NDM5LDcgKzQzOSw3IEBAIFdLVHlwZVJlZiBXS1BhZ2VDb3B5U2Vzc2lvblN0YXRlKFdLUGFnZVJl
ZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VTZXNzaW9uCiAgICAgfSk7CiAKICAgICBp
ZiAoc2hvdWxkUmV0dXJuRGF0YSkKLSAgICAgICAgcmV0dXJuIHRvQVBJKGVuY29kZUxlZ2FjeVNl
c3Npb25TdGF0ZShzZXNzaW9uU3RhdGUpLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgICAgICBy
ZXR1cm4gdG9BUEkoZW5jb2RlTGVnYWN5U2Vzc2lvblN0YXRlKHNlc3Npb25TdGF0ZSkubGVha1Jl
ZigpKTsKIAogICAgIHJldHVybiB0b0FQSSgmQVBJOjpTZXNzaW9uU3RhdGU6OmNyZWF0ZShXVEZN
b3ZlKHNlc3Npb25TdGF0ZSkpLmxlYWtSZWYoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcAppbmRleCAzY2M2MDk1NGQ4Y2RmOTlhMmE4NzA5
YTRlMmQ3ZTFlZjViNzcxZWNkLi40ZTIxNzcxOGE1NjRhOWMxMmU1ZjQ1OTJhNGU0Y2E5MjE4N2Vl
YmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3Jv
dXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5j
cHAKQEAgLTQxLDggKzQxLDggQEAgV0tUeXBlSUQgV0tQYWdlR3JvdXBHZXRUeXBlSUQoKQogCiBX
S1BhZ2VHcm91cFJlZiBXS1BhZ2VHcm91cENyZWF0ZVdpdGhJZGVudGlmaWVyKFdLU3RyaW5nUmVm
IGlkZW50aWZpZXIpCiB7Ci0gICAgUmVmUHRyPFdlYlBhZ2VHcm91cD4gcGFnZUdyb3VwID0gV2Vi
UGFnZUdyb3VwOjpjcmVhdGUodG9XVEZTdHJpbmcoaWRlbnRpZmllcikpOwotICAgIHJldHVybiB0
b0FQSShwYWdlR3JvdXAucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgYXV0byBwYWdlR3JvdXAg
PSBXZWJQYWdlR3JvdXA6OmNyZWF0ZSh0b1dURlN0cmluZyhpZGVudGlmaWVyKSk7CisgICAgcmV0
dXJuIHRvQVBJKHBhZ2VHcm91cC5sZWFrUmVmKCkpOwogfQogCiBXS1N0cmluZ1JlZiBXS1BhZ2VH
cm91cENvcHlJZGVudGlmaWVyKFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAppbmRleCA2MDUz
MjRkNTZlNTIzYTZlYjEwNjFjZWUzZmZiMmFjMzJlZmI0NGNjLi5lOWQwZjE0NTg4OTViY2NmNTgy
ZTRlMDFlNzhlOTU1NjdjNDllZGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCkBAIC00NiwyMCArNDYsMjAgQEAgV0tUeXBlSUQgV0tQ
cmVmZXJlbmNlc0dldFR5cGVJRCgpCiAKIFdLUHJlZmVyZW5jZXNSZWYgV0tQcmVmZXJlbmNlc0Ny
ZWF0ZSgpCiB7Ci0gICAgUmVmUHRyPFdlYlByZWZlcmVuY2VzPiBwcmVmZXJlbmNlcyA9IFdlYlBy
ZWZlcmVuY2VzOjpjcmVhdGVXaXRoTGVnYWN5RGVmYXVsdHMoU3RyaW5nKCksICJXZWJLaXQyLiIs
ICJXZWJLaXQyLiIpOwotICAgIHJldHVybiB0b0FQSShwcmVmZXJlbmNlcy5yZWxlYXNlKCkubGVh
a1JlZigpKTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZVdp
dGhMZWdhY3lEZWZhdWx0cyhTdHJpbmcoKSwgIldlYktpdDIuIiwgIldlYktpdDIuIik7CisgICAg
cmV0dXJuIHRvQVBJKHByZWZlcmVuY2VzLmxlYWtSZWYoKSk7CiB9CiAKIFdLUHJlZmVyZW5jZXNS
ZWYgV0tQcmVmZXJlbmNlc0NyZWF0ZVdpdGhJZGVudGlmaWVyKFdLU3RyaW5nUmVmIGlkZW50aWZp
ZXJSZWYpCiB7Ci0gICAgUmVmUHRyPFdlYlByZWZlcmVuY2VzPiBwcmVmZXJlbmNlcyA9IFdlYlBy
ZWZlcmVuY2VzOjpjcmVhdGVXaXRoTGVnYWN5RGVmYXVsdHModG9XVEZTdHJpbmcoaWRlbnRpZmll
clJlZiksICJXZWJLaXQyLiIsICJXZWJLaXQyLiIpOwotICAgIHJldHVybiB0b0FQSShwcmVmZXJl
bmNlcy5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gV2ViUHJl
ZmVyZW5jZXM6OmNyZWF0ZVdpdGhMZWdhY3lEZWZhdWx0cyh0b1dURlN0cmluZyhpZGVudGlmaWVy
UmVmKSwgIldlYktpdDIuIiwgIldlYktpdDIuIik7CisgICAgcmV0dXJuIHRvQVBJKHByZWZlcmVu
Y2VzLmxlYWtSZWYoKSk7CiB9CiAKIFdLUHJlZmVyZW5jZXNSZWYgV0tQcmVmZXJlbmNlc0NyZWF0
ZUNvcHkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZikKIHsKLSAgICBSZWZQdHI8V2Vi
UHJlZmVyZW5jZXM+IHByZWZlcmVuY2VzID0gdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+Y29weSgp
OwotICAgIHJldHVybiB0b0FQSShwcmVmZXJlbmNlcy5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAg
ICBhdXRvIHByZWZlcmVuY2VzID0gdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+Y29weSgpOworICAg
IHJldHVybiB0b0FQSShwcmVmZXJlbmNlcy5sZWFrUmVmKCkpOwogfQogCiB2b2lkIFdLUHJlZmVy
ZW5jZXNFbmFibGVBbGxFeHBlcmltZW50YWxGZWF0dXJlcyhXS1ByZWZlcmVuY2VzUmVmIHByZWZl
cmVuY2VzUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
U2Vzc2lvblJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tTZXNzaW9u
UmVmLmNwcAppbmRleCBhOTM1NzkwODcyNTQ2ZTE3N2U5MGMxM2U2ZTM1OGQ3MTZmZGM1YTBjLi5m
ZWRjMGU4YTc4OWRlZTU3NmViZWJkNmJmOTYxNzUxNzdjNDU0N2VjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tTZXNzaW9uUmVmLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tTZXNzaW9uUmVmLmNwcApAQCAtMzcsOCArMzcsOCBA
QCBXS1Nlc3Npb25SZWYgV0tTZXNzaW9uQ3JlYXRlKGJvb2wgaXNFcGhlbWVyYWwpCiAgICAgaWYg
KCFpc0VwaGVtZXJhbCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8QVBJ
OjpTZXNzaW9uPiBzZXNzaW9uID0gQVBJOjpTZXNzaW9uOjpjcmVhdGVFcGhlbWVyYWwoKTsKLSAg
ICByZXR1cm4gdG9BUEkoc2Vzc2lvbi5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICBhdXRvIHNl
c3Npb24gPSBBUEk6OlNlc3Npb246OmNyZWF0ZUVwaGVtZXJhbCgpOworICAgIHJldHVybiB0b0FQ
SSgmc2Vzc2lvbi5sZWFrUmVmKCkpOwogfQogCiBXS1R5cGVJRCBXS1Nlc3Npb25HZXRUeXBlSUQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLU2Vzc2lvblN0
YXRlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Nlc3Npb25TdGF0
ZVJlZi5jcHAKaW5kZXggOThlNzE3NTE5ZDU2YTI3NWE1MDQxMTVmY2Q4NmZhZWY0NTVjMGQ2NS4u
YzkzOGY1MTRjYTM4ZTIyNDQwZWNmMmFiMGIyNGU2ZGNhYjFkNTlkYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLU2Vzc2lvblN0YXRlUmVmLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tTZXNzaW9uU3RhdGVSZWYuY3BwCkBAIC00
OCw1ICs0OCw1IEBAIFdLU2Vzc2lvblN0YXRlUmVmIFdLU2Vzc2lvblN0YXRlQ3JlYXRlRnJvbURh
dGEoV0tEYXRhUmVmIGRhdGEpCiAKIFdLRGF0YVJlZiBXS1Nlc3Npb25TdGF0ZUNvcHlEYXRhKFdL
U2Vzc2lvblN0YXRlUmVmIHNlc3Npb25TdGF0ZSkKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b0FQ
SShXZWJLaXQ6OmVuY29kZUxlZ2FjeVNlc3Npb25TdGF0ZShXZWJLaXQ6OnRvSW1wbChzZXNzaW9u
U3RhdGUpLT5zZXNzaW9uU3RhdGUoKSkucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJu
IFdlYktpdDo6dG9BUEkoV2ViS2l0OjplbmNvZGVMZWdhY3lTZXNzaW9uU3RhdGUoV2ViS2l0Ojp0
b0ltcGwoc2Vzc2lvblN0YXRlKS0+c2Vzc2lvblN0YXRlKCkpLmxlYWtSZWYoKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZh
dGVNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFBy
aXZhdGVNYWMubW0KaW5kZXggNGMxOTJiNmQ0YTZlOGM1NzcyZjYwMzA1ZjY2ZWYyMThhYTBjMmIx
ZS4uYTU4OTEwNGIxMmE5OGNkN2Q3ZjYxZGFhOGY5NmY0ZGNkNWY5YzJmNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0
ZU1hYy5tbQpAQCAtNzMsOCArNzMsOCBAQCBXS0RpY3Rpb25hcnlSZWYgV0tDb250ZXh0Q29weVBs
dWdJbkluZm9Gb3JCdW5kbGVJZGVudGlmaWVyKFdLQ29udGV4dFJlZiBjb250ZXh0UgogICAgIGlm
IChwbHVnaW4ucGF0aC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8
QVBJOjpEaWN0aW9uYXJ5PiBkaWN0aW9uYXJ5ID0gY3JlYXRlUGx1Z2luSW5mb3JtYXRpb25EaWN0
aW9uYXJ5KHBsdWdpbik7Ci0gICAgcmV0dXJuIHRvQVBJKGRpY3Rpb25hcnkucmVsZWFzZSgpLmxl
YWtSZWYoKSk7CisgICAgYXV0byBkaWN0aW9uYXJ5ID0gY3JlYXRlUGx1Z2luSW5mb3JtYXRpb25E
aWN0aW9uYXJ5KHBsdWdpbik7CisgICAgcmV0dXJuIHRvQVBJKCZkaWN0aW9uYXJ5LmxlYWtSZWYo
KSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDMwMWNiY2U5NDhkMmIxNGY5MDM5
ZGExNDZkNjJkOTcxODBhYjMxNmMuLjYwMDAwODhiZDQxMzYzZmIyN2QxMzgwYzdkYmUyZmYzM2Fh
MjJjOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCkBAIC02NjEsNyArNjYxLDcgQEAgLSAoV0tOYXZpZ2F0aW9uICopbG9hZFJlcXVlc3Q6
KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKICAgICBpZiAoIW5hdmlnYXRpb24pCiAgICAgICAgIHJl
dHVybiBuaWw7CiAKLSAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ucmVsZWFzZSgpLmxl
YWtSZWYoKSkgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBbd3JhcHBlcigqbmF2aWdhdGlvbi5s
ZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAoV0tOYXZpZ2F0aW9uICopbG9hZEZpbGVV
Ukw6KE5TVVJMICopVVJMIGFsbG93aW5nUmVhZEFjY2Vzc1RvVVJMOihOU1VSTCAqKXJlYWRBY2Nl
c3NVUkwKQEAgLTY3Niw3ICs2NzYsNyBAQCAtIChXS05hdmlnYXRpb24gKilsb2FkRmlsZVVSTDoo
TlNVUkwgKilVUkwgYWxsb3dpbmdSZWFkQWNjZXNzVG9VUkw6KE5TVVJMICopcmVhZAogICAgIGlm
ICghbmF2aWdhdGlvbikKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiBbd3JhcHBl
cigqbmF2aWdhdGlvbi5yZWxlYXNlKCkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CisgICAgcmV0
dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOwogfQogCiAt
IChXS05hdmlnYXRpb24gKilsb2FkSFRNTFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgYmFzZVVS
TDooTlNVUkwgKiliYXNlVVJMCkBAIC02OTIsNyArNjkyLDcgQEAgLSAoV0tOYXZpZ2F0aW9uICop
bG9hZERhdGE6KE5TRGF0YSAqKWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5cGUgY2hh
cmFjdGUKICAgICBpZiAoIW5hdmlnYXRpb24pCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBy
ZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ucmVsZWFzZSgpLmxlYWtSZWYoKSkgYXV0b3JlbGVh
c2VdOworICAgIHJldHVybiBbd3JhcHBlcigqbmF2aWdhdGlvbi5sZWFrUmVmKCkpIGF1dG9yZWxl
YXNlXTsKIH0KIAogLSAoV0tOYXZpZ2F0aW9uICopZ29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW06KFdL
QmFja0ZvcndhcmRMaXN0SXRlbSAqKWl0ZW0KQEAgLTcwMSw3ICs3MDEsNyBAQCAtIChXS05hdmln
YXRpb24gKilnb1RvQmFja0ZvcndhcmRMaXN0SXRlbTooV0tCYWNrRm9yd2FyZExpc3RJdGVtICop
aXRlbQogICAgIGlmICghbmF2aWdhdGlvbikKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJl
dHVybiBbd3JhcHBlcigqbmF2aWdhdGlvbi5yZWxlYXNlKCkubGVha1JlZigpKSBhdXRvcmVsZWFz
ZV07CisgICAgcmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLmxlYWtSZWYoKSkgYXV0b3JlbGVh
c2VdOwogfQogCiAtIChOU1N0cmluZyAqKXRpdGxlCkBAIC03NTgsNyArNzU4LDcgQEAgLSAoV0tO
YXZpZ2F0aW9uICopZ29CYWNrCiAgICAgaWYgKCFuYXZpZ2F0aW9uKQogICAgICAgICByZXR1cm4g
bmlsOwogIAotICAgIHJldHVybiBbd3JhcHBlcigqbmF2aWdhdGlvbi5yZWxlYXNlKCkubGVha1Jl
ZigpKSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLmxlYWtS
ZWYoKSkgYXV0b3JlbGVhc2VdOwogfQogCiAtIChXS05hdmlnYXRpb24gKilnb0ZvcndhcmQKQEAg
LTc2Nyw3ICs3NjcsNyBAQCAtIChXS05hdmlnYXRpb24gKilnb0ZvcndhcmQKICAgICBpZiAoIW5h
dmlnYXRpb24pCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICByZXR1cm4gW3dyYXBwZXIoKm5h
dmlnYXRpb24ucmVsZWFzZSgpLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBb
d3JhcHBlcigqbmF2aWdhdGlvbi5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAoV0tO
YXZpZ2F0aW9uICopcmVsb2FkCkBAIC03NzgsNyArNzc4LDcgQEAgLSAoV0tOYXZpZ2F0aW9uICop
cmVsb2FkCiAgICAgaWYgKCFuYXZpZ2F0aW9uKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAg
cmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLnJlbGVhc2UoKS5sZWFrUmVmKCkpIGF1dG9yZWxl
YXNlXTsKKyAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ubGVha1JlZigpKSBhdXRvcmVs
ZWFzZV07CiB9CiAKIC0gKFdLTmF2aWdhdGlvbiAqKXJlbG9hZEZyb21PcmlnaW4KQEAgLTc4OSw3
ICs3ODksNyBAQCAtIChXS05hdmlnYXRpb24gKilyZWxvYWRGcm9tT3JpZ2luCiAgICAgaWYgKCFu
YXZpZ2F0aW9uKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIFt3cmFwcGVyKCpu
YXZpZ2F0aW9uLnJlbGVhc2UoKS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4g
W3dyYXBwZXIoKm5hdmlnYXRpb24ubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKHZv
aWQpc3RvcExvYWRpbmcKQEAgLTMxNzcsNyArMzE3Nyw3IEBAIC0gKFdLTmF2aWdhdGlvbiAqKV9s
b2FkRGF0YTooTlNEYXRhICopZGF0YSBNSU1FVHlwZTooTlNTdHJpbmcgKilNSU1FVHlwZSBjaGFy
YWN0CiAgICAgaWYgKCFuYXZpZ2F0aW9uKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0
dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLnJlbGVhc2UoKS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNl
XTsKKyAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ubGVha1JlZigpKSBhdXRvcmVsZWFz
ZV07CiB9CiAKIC0gKE5TQXJyYXkgKilfY2VydGlmaWNhdGVDaGFpbgpAQCAtMzI1OCw3ICszMjU4
LDcgQEAgLSAoV0tOYXZpZ2F0aW9uICopX3JlbG9hZFdpdGhvdXRDb250ZW50QmxvY2tlcnMKICAg
ICBpZiAoIW5hdmlnYXRpb24pCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCi0gICAgcmV0dXJu
IFt3cmFwcGVyKCpuYXZpZ2F0aW9uLnJlbGVhc2UoKS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsK
KyAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ubGVha1JlZigpKSBhdXRvcmVsZWFzZV07
CiB9CiAKIC0gKHZvaWQpX2tpbGxXZWJDb250ZW50UHJvY2Vzc0FuZFJlc2V0U3RhdGUKQEAgLTMz
MzksNyArMzMzOSw3IEBAIC0gKE5TRGF0YSAqKV9zZXNzaW9uU3RhdGVEYXRhCiAgICAgV2ViS2l0
OjpTZXNzaW9uU3RhdGUgc2Vzc2lvblN0YXRlID0gX3BhZ2UtPnNlc3Npb25TdGF0ZSgpOwogCiAg
ICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIG5vdCB1c2UgdGhlIGxlZ2FjeSBzZXNzaW9uIHN0YXRl
IGVuY29kZXIuCi0gICAgcmV0dXJuIFt3cmFwcGVyKCpXZWJLaXQ6OmVuY29kZUxlZ2FjeVNlc3Np
b25TdGF0ZShzZXNzaW9uU3RhdGUpLnJlbGVhc2UoKS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsK
KyAgICByZXR1cm4gW3dyYXBwZXIoKldlYktpdDo6ZW5jb2RlTGVnYWN5U2Vzc2lvblN0YXRlKHNl
c3Npb25TdGF0ZSkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKF9XS1Nlc3Npb25T
dGF0ZSAqKV9zZXNzaW9uU3RhdGUKQEAgLTMzNjMsNyArMzM2Myw3IEBAIC0gKFdLTmF2aWdhdGlv
biAqKV9yZXN0b3JlU2Vzc2lvblN0YXRlOihfV0tTZXNzaW9uU3RhdGUgKilzZXNzaW9uU3RhdGUg
YW5kTmF2aWdhCiAgICAgaWYgKCFuYXZpZ2F0aW9uKQogICAgICAgICByZXR1cm4gbmlsOwogCi0g
ICAgcmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLnJlbGVhc2UoKS5sZWFrUmVmKCkpIGF1dG9y
ZWxlYXNlXTsKKyAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ubGVha1JlZigpKSBhdXRv
cmVsZWFzZV07CiB9CiAKIC0gKHZvaWQpX2Nsb3NlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZGF0YWJhc2VfbWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZGF0YWJhc2VfbWFuYWdlci5jcHAKaW5kZXggZGFj
Zjc4ZmE5NDg3MGE3MWJiYTU2MDRkMzNjOWJhYjUyMWU3MmRjMi4uNDE3NzcyYWNkNWQyZmVkYWU3
MWQxM2ZmZDJmYzUyMTczOGVkYjU2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2RhdGFiYXNlX21hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19kYXRhYmFzZV9tYW5hZ2VyLmNwcApAQCAtNzAsMTIgKzcw
LDEyIEBAIEVpbmFfTGlzdCogRXdrRGF0YWJhc2VNYW5hZ2VyOjpjcmVhdGVPcmlnaW5MaXN0KFdL
QXJyYXlSZWYgb3JpZ2lucykgY29uc3QKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVu
Z3RoOyArK2kpIHsKICAgICAgICAgV0tTZWN1cml0eU9yaWdpblJlZiB3a09yaWdpblJlZiA9IHN0
YXRpY19jYXN0PFdLU2VjdXJpdHlPcmlnaW5SZWY+KFdLQXJyYXlHZXRJdGVtQXRJbmRleChvcmln
aW5zLCBpKSk7Ci0gICAgICAgIFJlZlB0cjxFd2tTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gbV93
cmFwcGVyQ2FjaGUuZ2V0KHdrT3JpZ2luUmVmKTsKKyAgICAgICAgYXV0byBvcmlnaW4gPSBtX3dy
YXBwZXJDYWNoZS5nZXQod2tPcmlnaW5SZWYpOwogICAgICAgICBpZiAoIW9yaWdpbikgewogICAg
ICAgICAgICAgb3JpZ2luID0gRXdrU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh3a09yaWdpblJlZik7
CiAgICAgICAgICAgICBtX3dyYXBwZXJDYWNoZS5zZXQod2tPcmlnaW5SZWYsIG9yaWdpbik7CiAg
ICAgICAgIH0KLSAgICAgICAgb3JpZ2luTGlzdCA9IGVpbmFfbGlzdF9hcHBlbmQob3JpZ2luTGlz
dCwgb3JpZ2luLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgICAgICBvcmlnaW5MaXN0ID0gZWlu
YV9saXN0X2FwcGVuZChvcmlnaW5MaXN0LCBvcmlnaW4ubGVha1JlZigpKTsKICAgICB9CiAKICAg
ICByZXR1cm4gb3JpZ2luTGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19zdG9yYWdlX21hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3N0b3JhZ2VfbWFuYWdlci5jcHAKaW5kZXggNWQzZWRiMGEyNjk2YjIx
NTFjZjYwODVmN2Q2NTUwZWM0MmYwODQ4My4uNzNmYWQzOTdkMzFlY2Q1OGQwYmZkNDBlYTdhNzQw
MDQ1NjQ4ZTgxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3N0b3JhZ2VfbWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3N0b3JhZ2VfbWFuYWdlci5jcHAKQEAgLTUzLDEyICs1MywxMiBAQCBFaW5hX0xp
c3QqIEV3a1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVPcmlnaW5MaXN0KFdLQXJyYXlSZWYgb3JpZ2lu
cykgY29uc3QKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAg
ICAgICAgV0tTZWN1cml0eU9yaWdpblJlZiB3a09yaWdpblJlZiA9IHN0YXRpY19jYXN0PFdLU2Vj
dXJpdHlPcmlnaW5SZWY+KFdLQXJyYXlHZXRJdGVtQXRJbmRleChvcmlnaW5zLCBpKSk7Ci0gICAg
ICAgIFJlZlB0cjxFd2tTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gbV93cmFwcGVyQ2FjaGUuZ2V0
KHdrT3JpZ2luUmVmKTsKKyAgICAgICAgYXV0byBvcmlnaW4gPSBtX3dyYXBwZXJDYWNoZS5nZXQo
d2tPcmlnaW5SZWYpOwogICAgICAgICBpZiAoIW9yaWdpbikgewogICAgICAgICAgICAgb3JpZ2lu
ID0gRXdrU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh3a09yaWdpblJlZik7CiAgICAgICAgICAgICBt
X3dyYXBwZXJDYWNoZS5zZXQod2tPcmlnaW5SZWYsIG9yaWdpbik7CiAgICAgICAgIH0KLSAgICAg
ICAgb3JpZ2luTGlzdCA9IGVpbmFfbGlzdF9hcHBlbmQob3JpZ2luTGlzdCwgb3JpZ2luLnJlbGVh
c2UoKS5sZWFrUmVmKCkpOworICAgICAgICBvcmlnaW5MaXN0ID0gZWluYV9saXN0X2FwcGVuZChv
cmlnaW5MaXN0LCBvcmlnaW4ubGVha1JlZigpKTsKICAgICB9CiAKICAgICByZXR1cm4gb3JpZ2lu
TGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlldy5jcHAKaW5kZXggOTZmZTFmYzI5YTY1ZDJiNmU1OTgwZTBmMTA4NTA0MGE3NjAxNGQzMi4u
NDE0ODA2Y2U0YzIyOGNmOTc1ZTUwYTZlMWU1MjVkNWU4ZmI4OGU1MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTE4Mzcs
NyArMTgzNyw3IEBAIFdlYlBhZ2VQcm94eSogd2Via2l0V2ViVmlld0NyZWF0ZU5ld1BhZ2UoV2Vi
S2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgV2luZG93RmVhCiAgICAgd2Via2l0V2luZG93UHJv
cGVydGllc1VwZGF0ZUZyb21XZWJXaW5kb3dGZWF0dXJlcyhuZXdXZWJWaWV3LT5wcml2LT53aW5k
b3dQcm9wZXJ0aWVzLmdldCgpLCB3aW5kb3dGZWF0dXJlcyk7CiAKICAgICBSZWZQdHI8V2ViUGFn
ZVByb3h5PiBuZXdQYWdlID0gZ2V0UGFnZShuZXdXZWJWaWV3KTsKLSAgICByZXR1cm4gbmV3UGFn
ZS5yZWxlYXNlKCkubGVha1JlZigpOworICAgIHJldHVybiBuZXdQYWdlLmxlYWtSZWYoKTsKIH0K
IAogdm9pZCB3ZWJraXRXZWJWaWV3UmVhZHlUb1Nob3dQYWdlKFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcpCkBAIC0xOTI1LDcgKzE5MjUsNyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdNb3VzZVRhcmdldENo
YW5nZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgV2ViSGl0VGVzdFJlcwogCiB2b2lk
IHdlYmtpdFdlYlZpZXdQcmludEZyYW1lKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYkZyYW1l
UHJveHkqIGZyYW1lKQogewotICAgIEdSZWZQdHI8V2ViS2l0UHJpbnRPcGVyYXRpb24+IHByaW50
T3BlcmF0aW9uID0gYWRvcHRHUmVmKHdlYmtpdF9wcmludF9vcGVyYXRpb25fbmV3KHdlYlZpZXcp
KTsKKyAgICBhdXRvIHByaW50T3BlcmF0aW9uID0gYWRvcHRHUmVmKHdlYmtpdF9wcmludF9vcGVy
YXRpb25fbmV3KHdlYlZpZXcpKTsKICAgICB3ZWJraXRQcmludE9wZXJhdGlvblNldFByaW50TW9k
ZShwcmludE9wZXJhdGlvbi5nZXQoKSwgUHJpbnRJbmZvOjpQcmludE1vZGVTeW5jKTsKICAgICBn
Ym9vbGVhbiByZXR1cm5WYWx1ZTsKICAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNb
UFJJTlRdLCAwLCBwcmludE9wZXJhdGlvbi5nZXQoKSwgJnJldHVyblZhbHVlKTsKQEAgLTMyMDQs
NyArMzIwNCw3IEBAIHN0YXRpYyB2b2lkIGZpbGVSZXBsYWNlQ29udGVudHNDYWxsYmFjayhHT2Jq
ZWN0KiBvYmplY3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBnCiAKIHN0YXRpYyB2b2lkIGdldENv
bnRlbnRzQXNNSFRNTERhdGFDYWxsYmFjayhBUEk6OkRhdGEqIHdrRGF0YSwgR1Rhc2sqIHRhc2tQ
dHIpCiB7Ci0gICAgR1JlZlB0cjxHVGFzaz4gdGFzayA9IGFkb3B0R1JlZih0YXNrUHRyKTsKKyAg
ICBhdXRvIHRhc2sgPSBhZG9wdEdSZWYodGFza1B0cik7CiAgICAgaWYgKGdfdGFza19yZXR1cm5f
ZXJyb3JfaWZfY2FuY2VsbGVkKHRhc2suZ2V0KCkpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9TZXNzaW9uU3RhdGVDb2Rpbmcu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvU2Vzc2lvblN0YXRlQ29kaW5nLm1t
CmluZGV4IDNlZDQxOWRjZDUzOTc0MTE4NjQwOGZiYjgwYjBkZDg1ZTEwYjQwMWEuLjYyM2JhNDYw
YTIwOGFiN2Q3MzYxMjdjZWFhODQ0MTRmY2EwNDUwM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9TZXNzaW9uU3RhdGVDb2RpbmcubW0KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL1Nlc3Npb25TdGF0ZUNvZGluZy5tbQpAQCAtMzQsNyArMzQs
NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIFJldGFpblB0cjxOU0RhdGE+IGVuY29kZVNlc3Npb25T
dGF0ZShjb25zdCBTZXNzaW9uU3RhdGUmIHNlc3Npb25TdGF0ZSkKIHsKICNpZiBXS19BUElfRU5B
QkxFRAotICAgIHJldHVybiBbd3JhcHBlcigqV2ViS2l0OjplbmNvZGVMZWdhY3lTZXNzaW9uU3Rh
dGUoc2Vzc2lvblN0YXRlKS5yZWxlYXNlKCkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CisgICAg
cmV0dXJuIFt3cmFwcGVyKCpXZWJLaXQ6OmVuY29kZUxlZ2FjeVNlc3Npb25TdGF0ZShzZXNzaW9u
U3RhdGUpLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOwogI2Vsc2UKICAgICByZXR1cm4gbnVsbHB0
cjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlbmVyaWND
YWxsYmFjay5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCmlu
ZGV4IDFkMjA1MzlhMTg3Mzg5ZDEyZjAwMTJkNzA2OTcyYjY3YTBkYWQwNjkuLjFiNjdlOTM4NDY3
OTc5ZDEyOWNjN2ZjMmZhYmNkNWRmZTA3ZmU0NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvR2VuZXJpY0NhbGxiYWNrLmgKQEAgLTIwMCwxMSArMjAwLDExIEBAIHB1YmxpYzoKICAgICB0
ZW1wbGF0ZTxjbGFzcyBUPgogICAgIFJlZlB0cjxUPiB0YWtlKHVpbnQ2NF90IGNhbGxiYWNrSUQp
CiAgICAgewotICAgICAgICBSZWZQdHI8Q2FsbGJhY2tCYXNlPiBiYXNlID0gbV9tYXAudGFrZShj
YWxsYmFja0lEKTsKKyAgICAgICAgYXV0byBiYXNlID0gbV9tYXAudGFrZShjYWxsYmFja0lEKTsK
ICAgICAgICAgaWYgKCFiYXNlKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKGJhc2UucmVsZWFzZSgpLmxlYWtSZWYoKS0+YXM8VD4oKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihiYXNlLmxlYWtSZWYoKS0+YXM8VD4oKSk7CiAgICAgfQog
CiAgICAgdm9pZCBpbnZhbGlkYXRlKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKaW5kZXggMjA1YTBmMDZjOWUzYzRlZTlm
NmQ1YTgwYTBmMWQyM2U1MzczZDY2Mi4uMGNmNzA0NTExODBhNWNjYWNjOWJhZjFjYWRhYjFiNDFi
MzNhZGZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcApAQCAt
NDcsOSArNDcsOSBAQCB2b2lkIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHk6OmludmFsaWRhdGVSZXF1ZXN0cygpCiAKIFBhc3NSZWZQdHI8R2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdFByb3h5PiBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
OjpjcmVhdGVSZXF1ZXN0KHVpbnQ2NF90IGdlb2xvY2F0aW9uSUQpCiB7Ci0gICAgUmVmUHRyPEdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eT4gcmVxdWVzdCA9IEdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RQcm94eTo6Y3JlYXRlKHRoaXMsIGdlb2xvY2F0aW9uSUQpOwotICAgIG1f
cGVuZGluZ1JlcXVlc3RzLmFkZChnZW9sb2NhdGlvbklELCByZXF1ZXN0LmdldCgpKTsKLSAgICBy
ZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CisgICAgYXV0byByZXF1ZXN0ID0gR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpjcmVhdGUodGhpcywgZ2VvbG9jYXRpb25JRCk7CisgICAg
bV9wZW5kaW5nUmVxdWVzdHMuYWRkKGdlb2xvY2F0aW9uSUQsIHJlcXVlc3QucHRyKCkpOworICAg
IHJldHVybiBXVEZNb3ZlKHJlcXVlc3QpOwogfQogCiB2b2lkIEdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVHZW9sb2NhdGlvblBlcm1pc3Npb25EZWNp
c2lvbih1aW50NjRfdCBnZW9sb2NhdGlvbklELCBib29sIGFsbG93ZWQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
CmluZGV4IGI0MjY2MGZlNjFiZTQ1ZDUwMTZkZWRmNmVmMzczNDQ1NGI3NDczZTguLmQ3ZDM1MDk5
ODdiYzRmZDY3MjhhODczNzNlMmJjNjExM2I2OWVhOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0y
NDksOCArMjQ5LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW4KICAgICBXZWJQYWdlUHJveHkq
IHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZUlEKTsKICAgICBNRVNTQUdFX0NI
RUNLKHBhZ2UpOwogCi0gICAgUmVmUHRyPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+IGF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTo6Y3Jl
YXRlKGNvcmVDaGFsbGVuZ2UsIGNoYWxsZW5nZUlELCBjb25uZWN0aW9uKCkpOwotICAgIHBhZ2Ut
PmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KGZyYW1lSUQsIGF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLnJlbGVhc2UoKSk7CisgICAgYXV0byBhdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk6OmNyZWF0ZShjb3JlQ2hhbGxlbmdl
LCBjaGFsbGVuZ2VJRCwgY29ubmVjdGlvbigpKTsKKyAgICBwYWdlLT5kaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VQcm94eShmcmFtZUlELCBXVEZNb3ZlKGF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkRmV0Y2hXZWJzaXRl
RGF0YSh1aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBXZWJzaXRlRGF0YSYgd2Vic2l0ZURhdGEp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eS5jcHAKaW5kZXggMGIyYTYzMjk3OGRiN2NiNGUzYWM1ZTgxODQzMTg5MmNjMTY5
NTRlNC4uODE4YTUyNTQxNjA3YTNjZTlhMjNkYzg3OGYxOGJmYTEzN2MwZGFlMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5LmNwcApAQCAtNDgsOSArNDgsOSBAQCB2b2lkIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByb3h5OjppbnZhbGlkYXRlUmVxdWVzdHMoKQogCiBQYXNzUmVmUHRyPE5vdGlm
aWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0PiBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eTo6Y3JlYXRlUmVxdWVzdCh1aW50NjRfdCBub3RpZmljYXRpb25JRCkKIHsKLSAg
ICBSZWZQdHI8Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q+IHJlcXVlc3QgPSBOb3RpZmlj
YXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6Y3JlYXRlKHRoaXMsIG5vdGlmaWNhdGlvbklEKTsKLSAg
ICBtX3BlbmRpbmdSZXF1ZXN0cy5hZGQobm90aWZpY2F0aW9uSUQsIHJlcXVlc3QuZ2V0KCkpOwot
ICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKKyAgICBhdXRvIHJlcXVlc3QgPSBOb3RpZmlj
YXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6Y3JlYXRlKHRoaXMsIG5vdGlmaWNhdGlvbklEKTsKKyAg
ICBtX3BlbmRpbmdSZXF1ZXN0cy5hZGQobm90aWZpY2F0aW9uSUQsIHJlcXVlc3QucHRyKCkpOwor
ICAgIHJldHVybiBXVEZNb3ZlKHJlcXVlc3QpOwogfQogCiB2b2lkIE5vdGlmaWNhdGlvblBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpkaWRSZWNlaXZlTm90aWZpY2F0aW9uUGVybWlzc2lv
bkRlY2lzaW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklELCBib29sIGFsbG93KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFn
ZXIuY3BwCmluZGV4IGJkMDBiZGM4Mzc0MWZhNmNiZjEwZDI0MWY4MzM1ODBkYWJhMTViNDUuLmZm
YTBhN2U4NjI3OWYxNTVjOTRmNjRlNzZlZmQzZTFlZDFlZmJiZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5j
cHAKQEAgLTEyNSwxMCArMTI1LDEwIEBAIFBsdWdpblByb2Nlc3NQcm94eSogUGx1Z2luUHJvY2Vz
c01hbmFnZXI6OmdldE9yQ3JlYXRlUGx1Z2luUHJvY2Vzcyh1aW50NjRfdCBwbHVnCiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX3BsdWdpblByb2Nlc3NUb2tlbnMuc2l6ZSgpOyArK2kpIHsK
ICAgICAgICAgYXV0byYgYXR0cmlidXRlc0FuZFRva2VuID0gbV9wbHVnaW5Qcm9jZXNzVG9rZW5z
W2ldOwogICAgICAgICBpZiAoYXR0cmlidXRlc0FuZFRva2VuLnNlY29uZCA9PSBwbHVnaW5Qcm9j
ZXNzVG9rZW4pIHsKLSAgICAgICAgICAgIFJlZlB0cjxQbHVnaW5Qcm9jZXNzUHJveHk+IHBsdWdp
blByb2Nlc3MgPSBQbHVnaW5Qcm9jZXNzUHJveHk6OmNyZWF0ZSh0aGlzLCBhdHRyaWJ1dGVzQW5k
VG9rZW4uZmlyc3QsIGF0dHJpYnV0ZXNBbmRUb2tlbi5zZWNvbmQpOwotICAgICAgICAgICAgUGx1
Z2luUHJvY2Vzc1Byb3h5KiBwbHVnaW5Qcm9jZXNzUHRyID0gcGx1Z2luUHJvY2Vzcy5nZXQoKTsK
KyAgICAgICAgICAgIGF1dG8gcGx1Z2luUHJvY2VzcyA9IFBsdWdpblByb2Nlc3NQcm94eTo6Y3Jl
YXRlKHRoaXMsIGF0dHJpYnV0ZXNBbmRUb2tlbi5maXJzdCwgYXR0cmlidXRlc0FuZFRva2VuLnNl
Y29uZCk7CisgICAgICAgICAgICBQbHVnaW5Qcm9jZXNzUHJveHkqIHBsdWdpblByb2Nlc3NQdHIg
PSBwbHVnaW5Qcm9jZXNzLnB0cigpOwogCi0gICAgICAgICAgICBtX3BsdWdpblByb2Nlc3Nlcy5h
cHBlbmQocGx1Z2luUHJvY2Vzcy5yZWxlYXNlKCkpOworICAgICAgICAgICAgbV9wbHVnaW5Qcm9j
ZXNzZXMuYXBwZW5kKFdURk1vdmUocGx1Z2luUHJvY2VzcykpOwogICAgICAgICAgICAgcmV0dXJu
IHBsdWdpblByb2Nlc3NQdHI7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggYjRjYTUzNDk5
NjgwNzllYzQyYzc0ODI4NDg2NmRkN2JlMzc4NjVhYy4uMTVjOThlYWM5YmVhMDg3MjBlNjdiMzhi
NWY1ZDZmM2QyYTkzZWQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0
b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9T
dG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtMjE5LDkgKzIxOSw5IEBAIHZvaWQgU3RvcmFn
ZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjpzZXRJdGVtKElQQzo6Q29ubmVjdGlvbiogc291cmNlQ29u
bmVjdGlvbiwgdWluCiAKICAgICBTdHJpbmcgb2xkVmFsdWU7CiAKLSAgICBSZWZQdHI8U3RvcmFn
ZU1hcD4gbmV3U3RvcmFnZU1hcCA9IG1fc3RvcmFnZU1hcC0+c2V0SXRlbShrZXksIHZhbHVlLCBv
bGRWYWx1ZSwgcXVvdGFFeGNlcHRpb24pOworICAgIGF1dG8gbmV3U3RvcmFnZU1hcCA9IG1fc3Rv
cmFnZU1hcC0+c2V0SXRlbShrZXksIHZhbHVlLCBvbGRWYWx1ZSwgcXVvdGFFeGNlcHRpb24pOwog
ICAgIGlmIChuZXdTdG9yYWdlTWFwKQotICAgICAgICBtX3N0b3JhZ2VNYXAgPSBuZXdTdG9yYWdl
TWFwLnJlbGVhc2UoKTsKKyAgICAgICAgbV9zdG9yYWdlTWFwID0gV1RGTW92ZShuZXdTdG9yYWdl
TWFwKTsKIAogICAgIGlmIChxdW90YUV4Y2VwdGlvbikKICAgICAgICAgcmV0dXJuOwpAQCAtMjM3
LDkgKzIzNyw5IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjpyZW1vdmVJdGVt
KElQQzo6Q29ubmVjdGlvbiogc291cmNlQ29ubmVjdGlvbiwKICAgICBvcGVuRGF0YWJhc2VBbmRJ
bXBvcnRJdGVtc0lmTmVlZGVkKCk7CiAKICAgICBTdHJpbmcgb2xkVmFsdWU7Ci0gICAgUmVmUHRy
PFN0b3JhZ2VNYXA+IG5ld1N0b3JhZ2VNYXAgPSBtX3N0b3JhZ2VNYXAtPnJlbW92ZUl0ZW0oa2V5
LCBvbGRWYWx1ZSk7CisgICAgYXV0byBuZXdTdG9yYWdlTWFwID0gbV9zdG9yYWdlTWFwLT5yZW1v
dmVJdGVtKGtleSwgb2xkVmFsdWUpOwogICAgIGlmIChuZXdTdG9yYWdlTWFwKQotICAgICAgICBt
X3N0b3JhZ2VNYXAgPSBuZXdTdG9yYWdlTWFwLnJlbGVhc2UoKTsKKyAgICAgICAgbV9zdG9yYWdl
TWFwID0gV1RGTW92ZShuZXdTdG9yYWdlTWFwKTsKIAogICAgIGlmIChvbGRWYWx1ZS5pc051bGwo
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjg2LDEwICs2ODYsMTAgQEAgdm9pZCBTdG9yYWdlTWFu
YWdlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTWFwKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
dWludDY0X3QKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgYSBtZXNzYWdlIGNoZWNrLgog
ICAgIEFTU0VSVChsb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOwogCi0gICAgUmVmUHRyPFN0b3JhZ2VB
cmVhPiBzdG9yYWdlQXJlYSA9IGxvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Z2V0T3JDcmVhdGVTdG9y
YWdlQXJlYShzZWN1cml0eU9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKSk7CisgICAgYXV0byBz
dG9yYWdlQXJlYSA9IGxvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Z2V0T3JDcmVhdGVTdG9yYWdlQXJl
YShzZWN1cml0eU9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKSk7CiAgICAgc3RvcmFnZUFyZWEt
PmFkZExpc3RlbmVyKGNvbm5lY3Rpb24sIHN0b3JhZ2VNYXBJRCk7CiAKLSAgICByZXN1bHQuaXRl
cmF0b3ItPnZhbHVlID0gc3RvcmFnZUFyZWEucmVsZWFzZSgpOworICAgIHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUgPSBXVEZNb3ZlKHN0b3JhZ2VBcmVhKTsKIH0KIAogdm9pZCBTdG9yYWdlTWFuYWdl
cjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTWFwKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgdWludDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQs
IGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wTGV2ZWxPcmlnaW5EYXRhLCBjb25zdCBTZWN1
cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKaW5kZXggMjczNDMxMjMyYjJjYjU0Mjgz
N2YyMjFjNmYxZWRmNWEzZjkyODA3MC4uMGY3MTNhOWQwNDI4NGU2Y2RmZDVlZTAxNjYwZTM3NWM5
YTc4ZGYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3
YXJkTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJk
TGlzdC5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdDo6YWRk
SXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBuZXdJdGVtKQogICAgICAgICByZW1vdmVkSXRl
bXMucmVzZXJ2ZUNhcGFjaXR5KG1fZW50cmllcy5zaXplKCkgLSB0YXJnZXRTaXplKTsKICAgICAg
ICAgd2hpbGUgKG1fZW50cmllcy5zaXplKCkgPiB0YXJnZXRTaXplKSB7CiAgICAgICAgICAgICBk
aWRSZW1vdmVJdGVtKCptX2VudHJpZXMubGFzdCgpKTsKLSAgICAgICAgICAgIHJlbW92ZWRJdGVt
cy5hcHBlbmQobV9lbnRyaWVzLmxhc3QoKS5yZWxlYXNlKCkpOworICAgICAgICAgICAgcmVtb3Zl
ZEl0ZW1zLmFwcGVuZChXVEZNb3ZlKG1fZW50cmllcy5sYXN0KCkpKTsKICAgICAgICAgICAgIG1f
ZW50cmllcy5yZW1vdmVMYXN0KCk7CiAgICAgICAgIH0KIApAQCAtMTA4LDcgKzEwOCw3IEBAIHZv
aWQgV2ViQmFja0ZvcndhcmRMaXN0OjphZGRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIG5l
d0l0ZW0pCiAgICAgICAgIC8vIChvciBldmVuIGlmIHdlIGFyZSwgaWYgd2Ugb25seSB3YW50IDEg
ZW50cnkpLgogICAgICAgICBpZiAobV9lbnRyaWVzLnNpemUoKSA9PSBtX2NhcGFjaXR5ICYmICht
X2N1cnJlbnRJbmRleCB8fCBtX2NhcGFjaXR5ID09IDEpKSB7CiAgICAgICAgICAgICBkaWRSZW1v
dmVJdGVtKCptX2VudHJpZXNbMF0pOwotICAgICAgICAgICAgcmVtb3ZlZEl0ZW1zLmFwcGVuZCht
X2VudHJpZXNbMF0ucmVsZWFzZSgpKTsKKyAgICAgICAgICAgIHJlbW92ZWRJdGVtcy5hcHBlbmQo
V1RGTW92ZShtX2VudHJpZXNbMF0pKTsKICAgICAgICAgICAgIG1fZW50cmllcy5yZW1vdmUoMCk7
CiAKICAgICAgICAgICAgIGlmIChtX2VudHJpZXMuaXNFbXB0eSgpKQpAQCAtMTI3LDcgKzEyNyw3
IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0OjphZGRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0qIG5ld0l0ZW0pCiAgICAgICAgICAgICBpZiAoIW1fZW50cmllc1tpXSkKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGRpZFJlbW92ZUl0ZW0oKm1fZW50cmllc1tpXSk7
Ci0gICAgICAgICAgICByZW1vdmVkSXRlbXMuYXBwZW5kKG1fZW50cmllc1tpXS5yZWxlYXNlKCkp
OworICAgICAgICAgICAgcmVtb3ZlZEl0ZW1zLmFwcGVuZChXVEZNb3ZlKG1fZW50cmllc1tpXSkp
OwogICAgICAgICB9CiAgICAgICAgIG1fZW50cmllcy5jbGVhcigpOwogICAgIH0KQEAgLTM1Nyw3
ICszNTcsNyBAQCB2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdDo6Y2xlYXIoKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBkaWRSZW1vdmVJdGVtKCptX2VudHJpZXNbaV0p
OwotICAgICAgICAgICAgcmVtb3ZlZEl0ZW1zLmFwcGVuZChtX2VudHJpZXNbaV0ucmVsZWFzZSgp
KTsKKyAgICAgICAgICAgIHJlbW92ZWRJdGVtcy5hcHBlbmQoV1RGTW92ZShtX2VudHJpZXNbaV0p
KTsKICAgICAgICAgfQogCiAgICAgICAgIG1fZW50cmllcy5jbGVhcigpOwpAQCAtMzc2LDE0ICsz
NzYsMTQgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZExpc3Q6OmNsZWFyKCkKICAgICByZW1vdmVkSXRl
bXMucmVzZXJ2ZUNhcGFjaXR5KHNpemUgLSAxKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHNpemU7ICsraSkgewogICAgICAgICBpZiAoaSAhPSBtX2N1cnJlbnRJbmRleCAmJiBtX2hhc0N1
cnJlbnRJbmRleCAmJiBtX2VudHJpZXNbaV0pCi0gICAgICAgICAgICByZW1vdmVkSXRlbXMuYXBw
ZW5kKG1fZW50cmllc1tpXS5yZWxlYXNlKCkpOworICAgICAgICAgICAgcmVtb3ZlZEl0ZW1zLmFw
cGVuZChXVEZNb3ZlKG1fZW50cmllc1tpXSkpOwogICAgIH0KIAogICAgIG1fY3VycmVudEluZGV4
ID0gMDsKIAogICAgIGlmIChjdXJyZW50SXRlbSkgewogICAgICAgICBtX2VudHJpZXMuc2hyaW5r
KDEpOwotICAgICAgICBtX2VudHJpZXNbMF0gPSBjdXJyZW50SXRlbS5yZWxlYXNlKCk7CisgICAg
ICAgIG1fZW50cmllc1swXSA9IFdURk1vdmUoY3VycmVudEl0ZW0pOwogICAgIH0gZWxzZSB7CiAg
ICAgICAgIG1fZW50cmllcy5jbGVhcigpOwogICAgICAgICBtX2hhc0N1cnJlbnRJbmRleCA9IGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFn
ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclBy
b3h5LmNwcAppbmRleCAyYzMwZDY0MDQ1MzJjNmE0NGYyMmJhYmNmOTAzY2RiY2UyNGRlZGRjLi5j
NmZmOTM2MDNlZGE5ZDA4MWI4NTY0MDRjOTQ4N2YxM2Q3ZWViNDljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcApAQCAtOTUsOSAr
OTUsOSBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVyZWZXZWJDb250ZXh0U3VwcGxl
bWVudCgpCiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIb3N0bmFtZXNXaXRoQ29v
a2llcyhzdGQ6OmZ1bmN0aW9uPHZvaWQgKEFQSTo6QXJyYXkqLCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4gY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICBSZWZQdHI8QXJyYXlDYWxsYmFjaz4gY2FsbGJh
Y2sgPSBBcnJheUNhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7Cisg
ICAgYXV0byBjYWxsYmFjayA9IEFycmF5Q2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pKTsKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNr
SUQoKTsKLSAgICBtX2FycmF5Q2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBjYWxsYmFjay5yZWxl
YXNlKCkpOworICAgIG1fYXJyYXlDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2Fs
bGJhY2spKTsKIAogICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVs
YXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6R2V0SG9zdG5h
bWVzV2l0aENvb2tpZXMoY2FsbGJhY2tJRCkpOwogfQpAQCAtMTY3LDEwICsxNjcsMTAgQEAgdm9p
ZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENv
b2tpZUFjY2VwdFBvbGljeSBwb2wKIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhU
VFBDb29raWVBY2NlcHRQb2xpY3koc3RkOjpmdW5jdGlvbjx2b2lkIChIVFRQQ29va2llQWNjZXB0
UG9saWN5LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICBS
ZWZQdHI8SFRUUENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrPiBjYWxsYmFjayA9IEhUVFBDb29r
aWVBY2NlcHRQb2xpY3lDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikp
OworICAgIGF1dG8gY2FsbGJhY2sgPSBIVFRQQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2s6OmNy
ZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKIAogICAgIHVpbnQ2NF90IGNhbGxiYWNr
SUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwotICAgIG1faHR0cENvb2tpZUFjY2VwdFBvbGlj
eUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgY2FsbGJhY2sucmVsZWFzZSgpKTsKKyAgICBtX2h0
dHBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2Fs
bGJhY2spKTsKIAogICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVs
YXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6R2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeShjYWxsYmFja0lEKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGQ0M2RkMTZmYTRiZDg3ODRiNTc3YjhhYzFhMDA5N2Qy
MjcwNGNiNTQuLjRkYmFmNjliN2ZkMDM5N2ZmNGU3ZGYxNWI5NDg4YzU5OGI4M2NkMGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC02MTY4LDExICs2MTY4
LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjppbnN0YWxsVmlld1N0YXRlQ2hhbmdlQ29tcGxldGlv
bkhhbmRsZXIodm9pZCAoXmNvbXBsZXRpb25IYW5kCiAgICAgfQogCiAgICAgYXV0byBjb3BpZWRD
b21wbGV0aW9uSGFuZGxlciA9IEJsb2NrX2NvcHkoY29tcGxldGlvbkhhbmRsZXIpOwotICAgIFJl
ZlB0cjxWb2lkQ2FsbGJhY2s+IHZvaWRDYWxsYmFjayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFtj
b3BpZWRDb21wbGV0aW9uSGFuZGxlcl0gKENhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAgICBhdXRv
IHZvaWRDYWxsYmFjayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFtjb3BpZWRDb21wbGV0aW9uSGFu
ZGxlcl0gKENhbGxiYWNrQmFzZTo6RXJyb3IpIHsKICAgICAgICAgY29waWVkQ29tcGxldGlvbkhh
bmRsZXIoKTsKICAgICAgICAgQmxvY2tfcmVsZWFzZShjb3BpZWRDb21wbGV0aW9uSGFuZGxlcik7
CiAgICAgfSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigp
KTsKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KHZvaWRDYWxsYmFj
ay5yZWxlYXNlKCkpOworICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQo
V1RGTW92ZSh2b2lkQ2FsbGJhY2spKTsKICAgICBtX25leHRWaWV3U3RhdGVDaGFuZ2VDYWxsYmFj
a3MuYXBwZW5kKGNhbGxiYWNrSUQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlByZWZlcmVuY2VzLmNwcAppbmRleCA0NGIzNjMzZmNjMWU2M2ZkNmRmODc2MWUxOTBmMTAwMmM4
NTNmNGZiLi44MDlhYTgzNjE5MzM0ODk2NDY2ZDAwNWRmNWYwM2QzNWZiYWYyNWExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5jcHAKQEAgLTQ1LDE0ICs0NSwx
NCBAQCBSZWY8V2ViUHJlZmVyZW5jZXM+IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoY29uc3QgU3Ry
aW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbgogCiBQYXNzUmVmUHRyPFdlYlByZWZlcmVuY2Vz
PiBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlV2l0aExlZ2FjeURlZmF1bHRzKGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBrZXlQcmVmaXgsIGNvbnN0IFN0cmluZyYgZ2xvYmFs
RGVidWdLZXlQcmVmaXgpCiB7Ci0gICAgUmVmUHRyPFdlYlByZWZlcmVuY2VzPiBwcmVmZXJlbmNl
cyA9IGFkb3B0UmVmKG5ldyBXZWJQcmVmZXJlbmNlcyhpZGVudGlmaWVyLCBrZXlQcmVmaXgsIGds
b2JhbERlYnVnS2V5UHJlZml4KSk7CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVu
Y2VzOjpjcmVhdGUoaWRlbnRpZmllciwga2V5UHJlZml4LCBnbG9iYWxEZWJ1Z0tleVByZWZpeCk7
CiAgICAgLy8gRklYTUU6IFRoZSByZWdpc3RlckRlZmF1bHQuLi5WYWx1ZUZvcktleSBtYWNoaW5l
cnkgaXMgdW5uZWNlc3NhcmlseSBoZWF2eXdlaWdodCBhbmQgY29tcGxpY2F0ZWQuCiAgICAgLy8g
V2UgY2FuIGp1c3QgY29tcHV0ZSBkaWZmZXJlbnQgZGVmYXVsdHMgZm9yIG1vZGVybiBhbmQgbGVn
YWN5IEFQSXMgaW4gV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oIG1hY3Jvcy4KICAgICBwcmVm
ZXJlbmNlcy0+cmVnaXN0ZXJEZWZhdWx0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5
OjpqYXZhRW5hYmxlZEtleSgpLCB0cnVlKTsKICAgICBwcmVmZXJlbmNlcy0+cmVnaXN0ZXJEZWZh
dWx0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpqYXZhRW5hYmxlZEZvckxvY2Fs
RmlsZXNLZXkoKSwgdHJ1ZSk7CiAgICAgcHJlZmVyZW5jZXMtPnJlZ2lzdGVyRGVmYXVsdEJvb2xW
YWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6cGx1Z2luc0VuYWJsZWRLZXkoKSwgdHJ1ZSk7
CiAgICAgcHJlZmVyZW5jZXMtPnJlZ2lzdGVyRGVmYXVsdFVJbnQzMlZhbHVlRm9yS2V5KFdlYlBy
ZWZlcmVuY2VzS2V5OjpzdG9yYWdlQmxvY2tpbmdQb2xpY3lLZXkoKSwgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW46OkFsbG93QWxsU3RvcmFnZSk7Ci0gICAgcmV0dXJuIHByZWZlcmVuY2VzLnJlbGVh
c2UoKTsKKyAgICByZXR1cm4gV1RGTW92ZShwcmVmZXJlbmNlcyk7CiB9CiAKIFdlYlByZWZlcmVu
Y2VzOjpXZWJQcmVmZXJlbmNlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYga2V5UHJlZml4LCBjb25zdCBTdHJpbmcmIGdsb2JhbERlYnVnS2V5UHJlZml4KQpAQCAtNzgs
NyArNzgsNyBAQCBXZWJQcmVmZXJlbmNlczo6fldlYlByZWZlcmVuY2VzKCkKIAogUGFzc1JlZlB0
cjxXZWJQcmVmZXJlbmNlcz4gV2ViUHJlZmVyZW5jZXM6OmNvcHkoKSBjb25zdAogewotICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgV2ViUHJlZmVyZW5jZXMoKnRoaXMpKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBXZWJQcmVmZXJlbmNlcygqdGhpcykpOwogfQogCiB2b2lkIFdlYlByZWZlcmVu
Y2VzOjphZGRQYWdlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggOGM2MjA1MzY1ZDhjZGYwZDJlMTAw
OTRlODRiNjE0MzZhNTdkMmIwOS4uYTdlMDM0NmYwM2Q5ZjE4OTAxNGE2ZTlkNDVjOTgwYmUwOWQy
ZTAyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBA
IC0yMzgsNyArMjM4LDcgQEAgV2ViUHJvY2Vzc1Bvb2w6On5XZWJQcm9jZXNzUG9vbCgpCiAKICAg
ICBtX2ljb25EYXRhYmFzZS0+aW52YWxpZGF0ZSgpOwogICAgIG1faWNvbkRhdGFiYXNlLT5jbGVh
clByb2Nlc3NQb29sKCk7Ci0gICAgV2ViSWNvbkRhdGFiYXNlKiByYXdJY29uRGF0YWJhc2UgPSBt
X2ljb25EYXRhYmFzZS5yZWxlYXNlKCkubGVha1JlZigpOworICAgIFdlYkljb25EYXRhYmFzZSog
cmF3SWNvbkRhdGFiYXNlID0gbV9pY29uRGF0YWJhc2UubGVha1JlZigpOwogICAgIHJhd0ljb25E
YXRhYmFzZS0+ZGVyZWZXaGVuQXBwcm9wcmlhdGUoKTsKIAogICAgIGludmFsaWRhdGVDYWxsYmFj
a01hcChtX2RpY3Rpb25hcnlDYWxsYmFja3MsIENhbGxiYWNrQmFzZTo6RXJyb3I6Ok93bmVyV2Fz
SW52YWxpZGF0ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9W
aWV3U25hcHNob3RTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld1Nu
YXBzaG90U3RvcmUubW0KaW5kZXggM2Y4ZmNmZjFhNDFlMWNkNGU4NGUwOGQyZmZjZGMxNTUwZDFm
ZDgyYi4uZDE5Mzg2YzA2YzZlYTljY2QzODY3ZjdiNDkzNDVmZTdmZDhhNjMyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdTbmFwc2hvdFN0b3JlLm1tCkBAIC0x
MTQsNyArMTE0LDcgQEAgdm9pZCBWaWV3U25hcHNob3RTdG9yZTo6cmVjb3JkU25hcHNob3QoV2Vi
UGFnZVByb3h5JiB3ZWJQYWdlUHJveHksIFdlYkJhY2tGb3J3YXIKIAogICAgIHdlYlBhZ2VQcm94
eS53aWxsUmVjb3JkTmF2aWdhdGlvblNuYXBzaG90KGl0ZW0pOwogCi0gICAgUmVmUHRyPFZpZXdT
bmFwc2hvdD4gc25hcHNob3QgPSB3ZWJQYWdlUHJveHkudGFrZVZpZXdTbmFwc2hvdCgpOworICAg
IGF1dG8gc25hcHNob3QgPSB3ZWJQYWdlUHJveHkudGFrZVZpZXdTbmFwc2hvdCgpOwogICAgIGlm
ICghc25hcHNob3QpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQg
Vmlld1NuYXBzaG90U3RvcmU6OnJlY29yZFNuYXBzaG90KFdlYlBhZ2VQcm94eSYgd2ViUGFnZVBy
b3h5LCBXZWJCYWNrRm9yd2FyCiAgICAgc25hcHNob3QtPnNldERldmljZVNjYWxlRmFjdG9yKHdl
YlBhZ2VQcm94eS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICBzbmFwc2hvdC0+c2V0QmFja2dy
b3VuZENvbG9yKHdlYlBhZ2VQcm94eS5wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IoKSk7CiAK
LSAgICBpdGVtLnNldFNuYXBzaG90KHNuYXBzaG90LnJlbGVhc2UoKSk7CisgICAgaXRlbS5zZXRT
bmFwc2hvdChXVEZNb3ZlKHNuYXBzaG90KSk7CiB9CiAKIHZvaWQgVmlld1NuYXBzaG90U3RvcmU6
OmRpc2NhcmRTbmFwc2hvdEltYWdlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCmluZGV4IGZhYTE1
NDMwOTI2ODM0MWE5NWVmOGFlMzYyNTI3YmU0ZTY4Yzc2YzYuLmYyZDdhOTI3ZjZjOTYyNzE5MGRi
MjhmNDQxYTNjMWE4Y2JiMDEzNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCkBAIC0yNjMsNyAr
MjYzLDcgQEAgLSAoUGFzc1JlZlB0cjxBUEk6OkhpdFRlc3RSZXN1bHQ+KV93ZWJIaXRUZXN0UmVz
dWx0CiAgICAgZWxzZQogICAgICAgICBoaXRUZXN0UmVzdWx0ID0gX3BhZ2UtPmxhc3RNb3VzZU1v
dmVIaXRUZXN0UmVzdWx0KCk7CiAKLSAgICByZXR1cm4gaGl0VGVzdFJlc3VsdC5yZWxlYXNlKCk7
CisgICAgcmV0dXJuIFdURk1vdmUoaGl0VGVzdFJlc3VsdCk7CiB9CiAKICNwcmFnbWEgbWFyayBJ
bW1lZGlhdGUgYWN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9XS1ByaW50aW5nVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tQcmlu
dGluZ1ZpZXcubW0KaW5kZXggN2I5ZDg4OWIxZDRhNzVjYzZkOGRlN2YyNzMwZGNhOTJkNWE3MTli
My4uM2IxMGNlNzVmMTVlYzZiMzlmMTFlNjBhNDYxYjg2Y2Y3ODVhZTQ0ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tCkBAIC0zNDAsNyArMzQw
LDcgQEAgLSAoQk9PTClfYXNrUGFnZVRvQ29tcHV0ZVBhZ2VSZWN0cwogICAgIEFTU0VSVCghX2V4
cGVjdGVkQ29tcHV0ZWRQYWdlc0NhbGxiYWNrKTsKIAogICAgIElQQ0NhbGxiYWNrQ29udGV4dCog
Y29udGV4dCA9IG5ldyBJUENDYWxsYmFja0NvbnRleHQ7Ci0gICAgUmVmUHRyPENvbXB1dGVkUGFn
ZXNDYWxsYmFjaz4gY2FsbGJhY2sgPSBDb21wdXRlZFBhZ2VzQ2FsbGJhY2s6OmNyZWF0ZShbY29u
dGV4dF0oY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBwYWdlUmVjdHMsIGRvdWJsZSB0
b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikg
eworICAgIGF1dG8gY2FsbGJhY2sgPSBDb21wdXRlZFBhZ2VzQ2FsbGJhY2s6OmNyZWF0ZShbY29u
dGV4dF0oY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBwYWdlUmVjdHMsIGRvdWJsZSB0
b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikg
ewogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SVBDQ2FsbGJhY2tDb250ZXh0PiBjb250ZXh0RGVs
ZXRlcihjb250ZXh0KTsKICAgICAgICAgcGFnZURpZENvbXB1dGVQYWdlUmVjdHMocGFnZVJlY3Rz
LCB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIGNvbnRleHQpOwogICAgIH0pOwpAQCAtMzQ4
LDcgKzM0OCw3IEBAIC0gKEJPT0wpX2Fza1BhZ2VUb0NvbXB1dGVQYWdlUmVjdHMKICAgICBjb250
ZXh0LT52aWV3ID0gc2VsZjsKICAgICBjb250ZXh0LT5jYWxsYmFja0lEID0gX2V4cGVjdGVkQ29t
cHV0ZWRQYWdlc0NhbGxiYWNrOwogCi0gICAgX3dlYkZyYW1lLT5wYWdlKCktPmNvbXB1dGVQYWdl
c0ZvclByaW50aW5nKF93ZWJGcmFtZS5nZXQoKSwgUHJpbnRJbmZvKFtfcHJpbnRPcGVyYXRpb24g
cHJpbnRJbmZvXSksIGNhbGxiYWNrLnJlbGVhc2UoKSk7CisgICAgX3dlYkZyYW1lLT5wYWdlKCkt
PmNvbXB1dGVQYWdlc0ZvclByaW50aW5nKF93ZWJGcmFtZS5nZXQoKSwgUHJpbnRJbmZvKFtfcHJp
bnRPcGVyYXRpb24gcHJpbnRJbmZvXSksIFdURk1vdmUoY2FsbGJhY2spKTsKICAgICByZXR1cm4g
WUVTOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBh
Z2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5
TWFjLm1tCmluZGV4IDQzZmE2ZjIwNjVkMGMxMjllZGZmMTJhMzdhZTI5MWNjZDQyZGYyZGQuLjk1
ZDAzYzkyNDBlZmU1OWQ1OGEyZWYwYzUyMjFhMjgwZWIzY2RjZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC0yNzEsOCArMjcxLDgg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGUKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogdm9p
ZCBXZWJQYWdlUHJveHk6OnNldERyYWdJbWFnZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2xp
ZW50UG9zaXRpb24sIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBkcmFnSW1hZ2VIYW5k
bGUsIGJvb2wgaXNMaW5rRHJhZykKIHsKLSAgICBpZiAoUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4g
ZHJhZ0ltYWdlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoZHJhZ0ltYWdlSGFuZGxlKSkKLSAg
ICAgICAgbV9wYWdlQ2xpZW50LnNldERyYWdJbWFnZShjbGllbnRQb3NpdGlvbiwgZHJhZ0ltYWdl
LnJlbGVhc2UoKSwgaXNMaW5rRHJhZyk7CisgICAgaWYgKGF1dG8gZHJhZ0ltYWdlID0gU2hhcmVh
YmxlQml0bWFwOjpjcmVhdGUoZHJhZ0ltYWdlSGFuZGxlKSkKKyAgICAgICAgbV9wYWdlQ2xpZW50
LnNldERyYWdJbWFnZShjbGllbnRQb3NpdGlvbiwgV1RGTW92ZShkcmFnSW1hZ2UpLCBpc0xpbmtE
cmFnKTsKIAogICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRTdGFydERy
YWcoKSwgbV9wYWdlSUQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUubW0gYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlBy
b2Nlc3NQbHVnSW5GcmFtZS5tbQppbmRleCBmZGFmNjc1OGQ2YTVmZDQzNDhjNjRkNzQ0M2ZmODQ1
OTljNWJiMTM4Li4zMmQ4ZGM3NDhiNTJmNWI3ZjNkZGY5NTJiNmI0ZmJlNzJmNTYwNjk3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2Nv
YS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5tbQpA
QCAtNzEsOCArNzEsOCBAQCAtIChKU0NvbnRleHQgKilqc0NvbnRleHRGb3JXb3JsZDooV0tXZWJQ
cm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgKil3b3JsZAogCiAtIChXS1dlYlByb2Nlc3NQbHVnSW5I
aXRUZXN0UmVzdWx0ICopaGl0VGVzdDooQ0dQb2ludClwb2ludAogewotICAgIFJlZlB0cjxJbmpl
Y3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ+IGhpdFRlc3RSZXN1bHQgPSBfZnJhbWUtPmhpdFRlc3Qo
V2ViQ29yZTo6SW50UG9pbnQocG9pbnQpKTsKLSAgICByZXR1cm4gW3dyYXBwZXIoKmhpdFRlc3RS
ZXN1bHQucmVsZWFzZSgpLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOworICAgIGF1dG8gaGl0VGVz
dFJlc3VsdCA9IF9mcmFtZS0+aGl0VGVzdChXZWJDb3JlOjpJbnRQb2ludChwb2ludCkpOworICAg
IHJldHVybiBbd3JhcHBlcigqaGl0VGVzdFJlc3VsdC5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsK
IH0KIAogLSAoSlNWYWx1ZSAqKWpzTm9kZUZvck5vZGVIYW5kbGU6KFdLV2ViUHJvY2Vzc1BsdWdJ
bk5vZGVIYW5kbGUgKilub2RlSGFuZGxlIGluV29ybGQ6KFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlw
dFdvcmxkICopd29ybGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHQubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dl
YlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0Lm1tCmluZGV4IDUxZGVlYTgxNTM5ODZlYTAzMWFh
MDIxODkzYWMyODQ1MGM5NGQ5M2YuLjdlYTg2YzkxMWU0ZDY0MmU1ZmM2MzI1NjI0M2QyMmE1YzFk
YTMyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHQubW0KKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9j
ZXNzUGx1Z0luSGl0VGVzdFJlc3VsdC5tbQpAQCAtNDQsOCArNDQsOCBAQCAtICh2b2lkKWRlYWxs
b2MKIAogLSAoV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZSAqKW5vZGVIYW5kbGUKIHsKLSAg
ICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBub2RlSGFuZGxlID0gX2hpdFRlc3RS
ZXN1bHQtPm5vZGVIYW5kbGUoKTsKLSAgICByZXR1cm4gbm9kZUhhbmRsZSA/IFt3cmFwcGVyKCpu
b2RlSGFuZGxlLnJlbGVhc2UoKS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXSA6IG5pbDsKKyAgICBh
dXRvIG5vZGVIYW5kbGUgPSBfaGl0VGVzdFJlc3VsdC0+bm9kZUhhbmRsZSgpOworICAgIHJldHVy
biBub2RlSGFuZGxlID8gW3dyYXBwZXIoKm5vZGVIYW5kbGUubGVha1JlZigpKSBhdXRvcmVsZWFz
ZV0gOiBuaWw7CiB9CiAKICNwcmFnbWEgbWFyayBXS09iamVjdCBwcm90b2NvbCBpbXBsZW1lbnRh
dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5tbSBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJ
bk5vZGVIYW5kbGUubW0KaW5kZXggMGIxZGZkZmZlMTU3N2IyOWVjZjYyYzNiMTUyYzhjMTk3N2Qy
MDM0Ny4uN2IyODdmYzc1NGRjMmNiOGRjMTQ0YmNiYjc0MWNhNGJjMTZmMWQ1NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tX
ZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxl
Lm1tCkBAIC00OCwyMCArNDgsMjAgQEAgKyAoV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZSAq
KW5vZGVIYW5kbGVXaXRoSlNWYWx1ZTooSlNWYWx1ZSAqKXZhbHVlIGluQ29udGUKIHsKICAgICBK
U0NvbnRleHRSZWYgY29udGV4dFJlZiA9IFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl07CiAg
ICAgSlNPYmplY3RSZWYgb2JqZWN0UmVmID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHRSZWYsIFt2
YWx1ZSBKU1ZhbHVlUmVmXSwgMCk7Ci0gICAgUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRs
ZT4gbm9kZUhhbmRsZSA9IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6Z2V0T3JDcmVhdGUoY29u
dGV4dFJlZiwgb2JqZWN0UmVmKTsKKyAgICBhdXRvIG5vZGVIYW5kbGUgPSBJbmplY3RlZEJ1bmRs
ZU5vZGVIYW5kbGU6OmdldE9yQ3JlYXRlKGNvbnRleHRSZWYsIG9iamVjdFJlZik7CiAgICAgaWYg
KCFub2RlSGFuZGxlKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIFt3cmFwcGVy
KCpub2RlSGFuZGxlLnJlbGVhc2UoKS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1
cm4gW3dyYXBwZXIoKm5vZGVIYW5kbGUubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CiB9CiAKIC0g
KFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lICopaHRtbElGcmFtZUVsZW1lbnRDb250ZW50RnJhbWUK
IHsKLSAgICBSZWZQdHI8V2ViRnJhbWU+IGZyYW1lID0gX25vZGVIYW5kbGUtPmh0bWxJRnJhbWVF
bGVtZW50Q29udGVudEZyYW1lKCk7CisgICAgYXV0byBmcmFtZSA9IF9ub2RlSGFuZGxlLT5odG1s
SUZyYW1lRWxlbWVudENvbnRlbnRGcmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJl
dHVybiBuaWw7CiAKLSAgICByZXR1cm4gW3dyYXBwZXIoKmZyYW1lLnJlbGVhc2UoKS5sZWFrUmVm
KCkpIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gW3dyYXBwZXIoKmZyYW1lLmxlYWtSZWYoKSkg
YXV0b3JlbGVhc2VdOwogfQogCiAjaWYgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNz
UGx1Z0luU2NyaXB0V29ybGQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZC5tbQppbmRleCA2
YzEwNjFkZDgwMzQ5MWY0N2VlOTMzZTBhOTc0ZDNkMmRjZjMyZWRmLi4xYWVjMGI5MjJlZTNlZWQ5
YjRhMjFkZDc1NjI2YTZmODU4YzQ2MTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRX
b3JsZC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZC5tbQpAQCAtMzYsOCArMzYsOCBA
QCBAaW1wbGVtZW50YXRpb24gV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgewogCiArIChX
S1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZCAqKXdvcmxkCiB7Ci0gICAgUmVmUHRyPEluamVj
dGVkQnVuZGxlU2NyaXB0V29ybGQ+IHNjcmlwdFdvcmxkID0gSW5qZWN0ZWRCdW5kbGVTY3JpcHRX
b3JsZDo6Y3JlYXRlKCk7Ci0gICAgcmV0dXJuIFt3cmFwcGVyKCpzY3JpcHRXb3JsZC5yZWxlYXNl
KCkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBzY3JpcHRXb3JsZCA9IEluamVj
dGVkQnVuZGxlU2NyaXB0V29ybGQ6OmNyZWF0ZSgpOworICAgIHJldHVybiBbd3JhcHBlcihzY3Jp
cHRXb3JsZC5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKIH0KIAogKyAoV0tXZWJQcm9jZXNzUGx1
Z0luU2NyaXB0V29ybGQgKilub3JtYWxXb3JsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcAppbmRleCA4
NWI4ZjkyMmYxZWMwYzEyZWNkNDMwMWU0YTA4YmVlZTViNDBmN2YyLi5lODg1M2RiZDA2MjdiNjlk
YzQ5ODQ5MGZjZWM1YmQ4ZDM3MTBjNTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcApAQCAtNjIs
NyArNjIsNyBAQCB2b2lkIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShXS0J1bmRsZVJl
ZiBidW5kbGVSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYQogICAgIFJlZlB0cjxBUEk6Ok9iamVj
dD4gcmV0dXJuRGF0YTsKICAgICB0b0ltcGwoYnVuZGxlUmVmKS0+cG9zdFN5bmNocm9ub3VzTWVz
c2FnZSh0b1dURlN0cmluZyhtZXNzYWdlTmFtZVJlZiksIHRvSW1wbChtZXNzYWdlQm9keVJlZiks
IHJldHVybkRhdGEpOwogICAgIGlmIChyZXR1cm5EYXRhUmVmKQotICAgICAgICAqcmV0dXJuRGF0
YVJlZiA9IHRvQVBJKHJldHVybkRhdGEucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgICAgICpy
ZXR1cm5EYXRhUmVmID0gdG9BUEkocmV0dXJuRGF0YS5sZWFrUmVmKCkpOwogfQogCiBXS0Nvbm5l
Y3Rpb25SZWYgV0tCdW5kbGVHZXRBcHBsaWNhdGlvbkNvbm5lY3Rpb24oV0tCdW5kbGVSZWYgYnVu
ZGxlUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRE9NV2luZG93RXh0ZW5z
aW9uLmNwcAppbmRleCBiNjYwZTgxNWZiNTc1YWQ3ZTRjNmE1MTgzYzgzOWNlZTU3NTg1NDc5Li5m
YzM4MWY0NmE2NDFmYTA3NzVjM2U1NDY0ODYwZDllMDRmNDgzZTJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRE9NV2lu
ZG93RXh0ZW5zaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcApAQCAtNDEsNyArNDEs
NyBAQCBXS1R5cGVJRCBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbkdldFR5cGVJRCgpCiBXS0J1
bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZiBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbkNyZWF0
ZShXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIHdvcmxkKQog
ewogICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbj4gZXh0ZW5zaW9u
ID0gSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb246OmNyZWF0ZSh0b0ltcGwoZnJhbWUp
LCB0b0ltcGwod29ybGQpKTsKLSAgICByZXR1cm4gdG9BUEkoZXh0ZW5zaW9uLnJlbGVhc2UoKS5s
ZWFrUmVmKCkpOworICAgIHJldHVybiB0b0FQSShleHRlbnNpb24ubGVha1JlZigpKTsKIH0KIAog
V0tCdW5kbGVGcmFtZVJlZiBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbkdldEZyYW1lKFdLQnVu
ZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmIGV4dGVuc2lvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVIaXRUZXN0UmVz
dWx0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcAppbmRleCA0NmY2OTk5MjZhMjE1YTg3ZGFjMTE4YWVm
ZTA1NjRlNmJhMjc3NGY1Li4yZTRhN2I2MzFkMTMxY2ExNzZkYzRkMWIxODE1ZDg4MTlmNjA5Njgw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUhpdFRlc3RSZXN1bHQuY3BwCkBAIC00
MiwxMyArNDIsMTMgQEAgV0tUeXBlSUQgV0tCdW5kbGVIaXRUZXN0UmVzdWx0R2V0VHlwZUlEKCkK
IFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBXS0J1bmRsZUhpdFRlc3RSZXN1bHRDb3B5Tm9kZUhhbmRs
ZShXS0J1bmRsZUhpdFRlc3RSZXN1bHRSZWYgaGl0VGVzdFJlc3VsdFJlZikKIHsKICAgICBSZWZQ
dHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBub2RlSGFuZGxlID0gdG9JbXBsKGhpdFRlc3RS
ZXN1bHRSZWYpLT5ub2RlSGFuZGxlKCk7Ci0gICAgcmV0dXJuIHRvQVBJKG5vZGVIYW5kbGUucmVs
ZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKG5vZGVIYW5kbGUubGVha1JlZigp
KTsKIH0KIAogV0tCdW5kbGVOb2RlSGFuZGxlUmVmIFdLQnVuZGxlSGl0VGVzdFJlc3VsdENvcHlV
UkxFbGVtZW50SGFuZGxlKFdLQnVuZGxlSGl0VGVzdFJlc3VsdFJlZiBoaXRUZXN0UmVzdWx0UmVm
KQogewogICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+IHVybEVsZW1lbnROb2Rl
SGFuZGxlID0gdG9JbXBsKGhpdFRlc3RSZXN1bHRSZWYpLT51cmxFbGVtZW50SGFuZGxlKCk7Ci0g
ICAgcmV0dXJuIHRvQVBJKHVybEVsZW1lbnROb2RlSGFuZGxlLnJlbGVhc2UoKS5sZWFrUmVmKCkp
OworICAgIHJldHVybiB0b0FQSSh1cmxFbGVtZW50Tm9kZUhhbmRsZS5sZWFrUmVmKCkpOwogfQog
CiBXS0J1bmRsZUZyYW1lUmVmIFdLQnVuZGxlSGl0VGVzdFJlc3VsdEdldEZyYW1lKFdLQnVuZGxl
SGl0VGVzdFJlc3VsdFJlZiBoaXRUZXN0UmVzdWx0UmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5hdmlnYXRpb25B
Y3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwCmluZGV4IGVlODk4MjczZmNkM2FmMjk1ZDIy
YTRiNmU1ZTk0ZjllNDdmNGZlMDUuLmEzYzM2M2UxOTQyY2VjMDQ3OTU1ZjkyYjAzMjcwYTk1NmRh
ZmU5N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTmF2aWdhdGlvbkFjdGlv
bi5jcHAKQEAgLTU4LDEzICs1OCwxMyBAQCBXS0V2ZW50TW91c2VCdXR0b24gV0tCdW5kbGVOYXZp
Z2F0aW9uQWN0aW9uR2V0RXZlbnRNb3VzZUJ1dHRvbihXS0J1bmRsZU5hdmlnYXRpbwogV0tCdW5k
bGVIaXRUZXN0UmVzdWx0UmVmIFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbkNvcHlIaXRUZXN0UmVz
dWx0KFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvblJlZiBuYXZpZ2F0aW9uQWN0aW9uUmVmKQogewog
ICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ+IGhpdFRlc3RSZXN1bHQgPSB0
b0ltcGwobmF2aWdhdGlvbkFjdGlvblJlZiktPmhpdFRlc3RSZXN1bHQoKTsKLSAgICByZXR1cm4g
dG9BUEkoaGl0VGVzdFJlc3VsdC5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9B
UEkoaGl0VGVzdFJlc3VsdC5sZWFrUmVmKCkpOwogfQogCiBXS0J1bmRsZU5vZGVIYW5kbGVSZWYg
V0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uQ29weUZvcm1FbGVtZW50KFdLQnVuZGxlTmF2aWdhdGlv
bkFjdGlvblJlZiBuYXZpZ2F0aW9uQWN0aW9uUmVmKQogewogICAgIFJlZlB0cjxJbmplY3RlZEJ1
bmRsZU5vZGVIYW5kbGU+IGZvcm1FbGVtZW50ID0gdG9JbXBsKG5hdmlnYXRpb25BY3Rpb25SZWYp
LT5mb3JtRWxlbWVudCgpOwotICAgIHJldHVybiB0b0FQSShmb3JtRWxlbWVudC5yZWxlYXNlKCku
bGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkoZm9ybUVsZW1lbnQubGVha1JlZigpKTsKIH0K
IAogYm9vbCBXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb25HZXRTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
KFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvblJlZiBuYXZpZ2F0aW9uQWN0aW9uUmVmKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZU5vZGVIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZU5vZGVIYW5kbGUuY3BwCmluZGV4IGVlNGYzNjIyNDU0YjkxNzUw
MzczY2Y4NGVkNjQwNTc0MjkzOWE3Y2YuLjQ2Y2ZhMzRhMDgwZWU1YWY0ZWUwODg3M2ViNGMzODg3
NzMyNDNiM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTm9kZUhhbmRsZS5jcHAKQEAg
LTU5LDEzICs1OSwxMyBAQCBXS1R5cGVJRCBXS0J1bmRsZU5vZGVIYW5kbGVHZXRUeXBlSUQoKQog
V0tCdW5kbGVOb2RlSGFuZGxlUmVmIFdLQnVuZGxlTm9kZUhhbmRsZUNyZWF0ZShKU0NvbnRleHRS
ZWYgY29udGV4dFJlZiwgSlNPYmplY3RSZWYgb2JqZWN0UmVmKQogewogICAgIFJlZlB0cjxJbmpl
Y3RlZEJ1bmRsZU5vZGVIYW5kbGU+IG5vZGVIYW5kbGUgPSBJbmplY3RlZEJ1bmRsZU5vZGVIYW5k
bGU6OmdldE9yQ3JlYXRlKGNvbnRleHRSZWYsIG9iamVjdFJlZik7Ci0gICAgcmV0dXJuIHRvQVBJ
KG5vZGVIYW5kbGUucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKG5vZGVI
YW5kbGUubGVha1JlZigpKTsKIH0KIAogV0tCdW5kbGVOb2RlSGFuZGxlUmVmIFdLQnVuZGxlTm9k
ZUhhbmRsZUNvcHlEb2N1bWVudChXS0J1bmRsZU5vZGVIYW5kbGVSZWYgbm9kZUhhbmRsZVJlZikK
IHsKICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBub2RlSGFuZGxlID0gdG9J
bXBsKG5vZGVIYW5kbGVSZWYpLT5kb2N1bWVudCgpOwotICAgIHJldHVybiB0b0FQSShub2RlSGFu
ZGxlLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgIHJldHVybiB0b0FQSShub2RlSGFuZGxlLmxl
YWtSZWYoKSk7CiB9CiAKIFdLUmVjdCBXS0J1bmRsZU5vZGVIYW5kbGVHZXRSZW5kZXJSZWN0KFdL
QnVuZGxlTm9kZUhhbmRsZVJlZiBub2RlSGFuZGxlUmVmLCBib29sKiBpc1JlcGxhY2VkKQpAQCAt
NzYsMTMgKzc2LDEzIEBAIFdLUmVjdCBXS0J1bmRsZU5vZGVIYW5kbGVHZXRSZW5kZXJSZWN0KFdL
QnVuZGxlTm9kZUhhbmRsZVJlZiBub2RlSGFuZGxlUmVmLCBib29sCiBXS0ltYWdlUmVmIFdLQnVu
ZGxlTm9kZUhhbmRsZUNvcHlTbmFwc2hvdFdpdGhPcHRpb25zKFdLQnVuZGxlTm9kZUhhbmRsZVJl
ZiBub2RlSGFuZGxlUmVmLCBXS1NuYXBzaG90T3B0aW9ucyBvcHRpb25zKQogewogICAgIFJlZlB0
cjxXZWJJbWFnZT4gaW1hZ2UgPSB0b0ltcGwobm9kZUhhbmRsZVJlZiktPnJlbmRlcmVkSW1hZ2Uo
dG9TbmFwc2hvdE9wdGlvbnMob3B0aW9ucykpOwotICAgIHJldHVybiB0b0FQSShpbWFnZS5yZWxl
YXNlKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkoaW1hZ2UubGVha1JlZigpKTsKIH0K
IAogV0tCdW5kbGVSYW5nZUhhbmRsZVJlZiBXS0J1bmRsZU5vZGVIYW5kbGVDb3B5VmlzaWJsZVJh
bmdlKFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBub2RlSGFuZGxlUmVmKQogewogICAgIFJlZlB0cjxJ
bmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPiByYW5nZUhhbmRsZSA9IHRvSW1wbChub2RlSGFuZGxl
UmVmKS0+dmlzaWJsZVJhbmdlKCk7Ci0gICAgcmV0dXJuIHRvQVBJKHJhbmdlSGFuZGxlLnJlbGVh
c2UoKS5sZWFrUmVmKCkpOworICAgIHJldHVybiB0b0FQSShyYW5nZUhhbmRsZS5sZWFrUmVmKCkp
OwogfQogCiBXS1JlY3QgV0tCdW5kbGVOb2RlSGFuZGxlR2V0RWxlbWVudEJvdW5kcyhXS0J1bmRs
ZU5vZGVIYW5kbGVSZWYgZWxlbWVudEhhbmRsZVJlZikKQEAgLTEzOCwyNSArMTM4LDI1IEBAIGJv
b2wgV0tCdW5kbGVOb2RlSGFuZGxlR2V0SFRNTFRleHRBcmVhRWxlbWVudExhc3RDaGFuZ2VXYXNV
c2VyRWRpdChXS0J1bmRsZU5vZGVICiBXS0J1bmRsZU5vZGVIYW5kbGVSZWYgV0tCdW5kbGVOb2Rl
SGFuZGxlQ29weUhUTUxUYWJsZUNlbGxFbGVtZW50Q2VsbEFib3ZlKFdLQnVuZGxlTm9kZUhhbmRs
ZVJlZiBodG1sVGFibGVDZWxsRWxlbWVudEhhbmRsZVJlZikKIHsKICAgICBSZWZQdHI8SW5qZWN0
ZWRCdW5kbGVOb2RlSGFuZGxlPiBub2RlSGFuZGxlID0gdG9JbXBsKGh0bWxUYWJsZUNlbGxFbGVt
ZW50SGFuZGxlUmVmKS0+aHRtbFRhYmxlQ2VsbEVsZW1lbnRDZWxsQWJvdmUoKTsKLSAgICByZXR1
cm4gdG9BUEkobm9kZUhhbmRsZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9B
UEkobm9kZUhhbmRsZS5sZWFrUmVmKCkpOwogfQogCiBXS0J1bmRsZUZyYW1lUmVmIFdLQnVuZGxl
Tm9kZUhhbmRsZUNvcHlEb2N1bWVudEZyYW1lKFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBkb2N1bWVu
dEhhbmRsZVJlZikKIHsKICAgICBSZWZQdHI8V2ViRnJhbWU+IGZyYW1lID0gdG9JbXBsKGRvY3Vt
ZW50SGFuZGxlUmVmKS0+ZG9jdW1lbnRGcmFtZSgpOwotICAgIHJldHVybiB0b0FQSShmcmFtZS5y
ZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkoZnJhbWUubGVha1JlZigpKTsK
IH0KIAogV0tCdW5kbGVGcmFtZVJlZiBXS0J1bmRsZU5vZGVIYW5kbGVDb3B5SFRNTEZyYW1lRWxl
bWVudENvbnRlbnRGcmFtZShXS0J1bmRsZU5vZGVIYW5kbGVSZWYgaHRtbEZyYW1lRWxlbWVudEhh
bmRsZVJlZikKIHsKICAgICBSZWZQdHI8V2ViRnJhbWU+IGZyYW1lID0gdG9JbXBsKGh0bWxGcmFt
ZUVsZW1lbnRIYW5kbGVSZWYpLT5odG1sRnJhbWVFbGVtZW50Q29udGVudEZyYW1lKCk7Ci0gICAg
cmV0dXJuIHRvQVBJKGZyYW1lLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgIHJldHVybiB0b0FQ
SShmcmFtZS5sZWFrUmVmKCkpOwogfQogCiBXS0J1bmRsZUZyYW1lUmVmIFdLQnVuZGxlTm9kZUhh
bmRsZUNvcHlIVE1MSUZyYW1lRWxlbWVudENvbnRlbnRGcmFtZShXS0J1bmRsZU5vZGVIYW5kbGVS
ZWYgaHRtbElGcmFtZUVsZW1lbnRIYW5kbGVSZWYpCiB7CiAgICAgUmVmUHRyPFdlYkZyYW1lPiBm
cmFtZSA9IHRvSW1wbChodG1sSUZyYW1lRWxlbWVudEhhbmRsZVJlZiktPmh0bWxJRnJhbWVFbGVt
ZW50Q29udGVudEZyYW1lKCk7Ci0gICAgcmV0dXJuIHRvQVBJKGZyYW1lLnJlbGVhc2UoKS5sZWFr
UmVmKCkpOworICAgIHJldHVybiB0b0FQSShmcmFtZS5sZWFrUmVmKCkpOwogfQogCiAvLyBEZXBy
ZWNhdGVkIC0gdXNlIFdLQnVuZGxlTm9kZUhhbmRsZUdldEhUTUxJbnB1dEVsZW1lbnRBdXRvRmls
bGVkKFdLQnVuZGxlTm9kZUhhbmRsZVJlZikuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAK
aW5kZXggMTdlMjFhZmMzM2I2OGVmZTNkODc1ODMwOGJkODFjNjBjM2Y4MDk1NS4uZTE4ZGE5MTRm
YzIwZGVlZGVhNmMxZjk2N2Q4ZjM0OTA0Nzc0MDY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQ
YWdlLmNwcApAQCAtNDM0LDcgKzQzNCw3IEBAIGJvb2wgV0tCdW5kbGVQYWdlRmluZFN0cmluZyhX
S0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgdGFyZ2V0LCBXS0ZpbmRPCiBXS0lt
YWdlUmVmIFdLQnVuZGxlUGFnZUNyZWF0ZVNuYXBzaG90V2l0aE9wdGlvbnMoV0tCdW5kbGVQYWdl
UmVmIHBhZ2VSZWYsIFdLUmVjdCByZWN0LCBXS1NuYXBzaG90T3B0aW9ucyBvcHRpb25zKQogewog
ICAgIFJlZlB0cjxXZWJJbWFnZT4gd2ViSW1hZ2UgPSB0b0ltcGwocGFnZVJlZiktPnNjYWxlZFNu
YXBzaG90V2l0aE9wdGlvbnModG9JbnRSZWN0KHJlY3QpLCAxLCB0b1NuYXBzaG90T3B0aW9ucyhv
cHRpb25zKSk7Ci0gICAgcmV0dXJuIHRvQVBJKHdlYkltYWdlLnJlbGVhc2UoKS5sZWFrUmVmKCkp
OworICAgIHJldHVybiB0b0FQSSh3ZWJJbWFnZS5sZWFrUmVmKCkpOwogfQogCiBXS0ltYWdlUmVm
IFdLQnVuZGxlUGFnZUNyZWF0ZVNuYXBzaG90SW5WaWV3Q29vcmRpbmF0ZXMoV0tCdW5kbGVQYWdl
UmVmIHBhZ2VSZWYsIFdLUmVjdCByZWN0LCBXS0ltYWdlT3B0aW9ucyBvcHRpb25zKQpAQCAtNDQy
LDE5ICs0NDIsMTkgQEAgV0tJbWFnZVJlZiBXS0J1bmRsZVBhZ2VDcmVhdGVTbmFwc2hvdEluVmll
d0Nvb3JkaW5hdGVzKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLAogICAgIFNuYXBzaG90T3B0aW9u
cyBzbmFwc2hvdE9wdGlvbnMgPSBzbmFwc2hvdE9wdGlvbnNGcm9tSW1hZ2VPcHRpb25zKG9wdGlv
bnMpOwogICAgIHNuYXBzaG90T3B0aW9ucyB8PSBTbmFwc2hvdE9wdGlvbnNJblZpZXdDb29yZGlu
YXRlczsKICAgICBSZWZQdHI8V2ViSW1hZ2U+IHdlYkltYWdlID0gdG9JbXBsKHBhZ2VSZWYpLT5z
Y2FsZWRTbmFwc2hvdFdpdGhPcHRpb25zKHRvSW50UmVjdChyZWN0KSwgMSwgc25hcHNob3RPcHRp
b25zKTsKLSAgICByZXR1cm4gdG9BUEkod2ViSW1hZ2UucmVsZWFzZSgpLmxlYWtSZWYoKSk7Cisg
ICAgcmV0dXJuIHRvQVBJKHdlYkltYWdlLmxlYWtSZWYoKSk7CiB9CiAKIFdLSW1hZ2VSZWYgV0tC
dW5kbGVQYWdlQ3JlYXRlU25hcHNob3RJbkRvY3VtZW50Q29vcmRpbmF0ZXMoV0tCdW5kbGVQYWdl
UmVmIHBhZ2VSZWYsIFdLUmVjdCByZWN0LCBXS0ltYWdlT3B0aW9ucyBvcHRpb25zKQogewogICAg
IFJlZlB0cjxXZWJJbWFnZT4gd2ViSW1hZ2UgPSB0b0ltcGwocGFnZVJlZiktPnNjYWxlZFNuYXBz
aG90V2l0aE9wdGlvbnModG9JbnRSZWN0KHJlY3QpLCAxLCBzbmFwc2hvdE9wdGlvbnNGcm9tSW1h
Z2VPcHRpb25zKG9wdGlvbnMpKTsKLSAgICByZXR1cm4gdG9BUEkod2ViSW1hZ2UucmVsZWFzZSgp
LmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKHdlYkltYWdlLmxlYWtSZWYoKSk7CiB9CiAK
IFdLSW1hZ2VSZWYgV0tCdW5kbGVQYWdlQ3JlYXRlU2NhbGVkU25hcHNob3RJbkRvY3VtZW50Q29v
cmRpbmF0ZXMoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLUmVjdCByZWN0LCBkb3VibGUgc2Nh
bGVGYWN0b3IsIFdLSW1hZ2VPcHRpb25zIG9wdGlvbnMpCiB7CiAgICAgUmVmUHRyPFdlYkltYWdl
PiB3ZWJJbWFnZSA9IHRvSW1wbChwYWdlUmVmKS0+c2NhbGVkU25hcHNob3RXaXRoT3B0aW9ucyh0
b0ludFJlY3QocmVjdCksIHNjYWxlRmFjdG9yLCBzbmFwc2hvdE9wdGlvbnNGcm9tSW1hZ2VPcHRp
b25zKG9wdGlvbnMpKTsKLSAgICByZXR1cm4gdG9BUEkod2ViSW1hZ2UucmVsZWFzZSgpLmxlYWtS
ZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKHdlYkltYWdlLmxlYWtSZWYoKSk7CiB9CiAKIGRvdWJs
ZSBXS0J1bmRsZVBhZ2VHZXRCYWNraW5nU2NhbGVGYWN0b3IoV0tCdW5kbGVQYWdlUmVmIHBhZ2VS
ZWYpCkBAIC02MjQsNyArNjI0LDcgQEAgdm9pZCBXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNN
ZXNzYWdlRm9yVGVzdGluZyhXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tTdHIKICAgICBSZWZQ
dHI8QVBJOjpPYmplY3Q+IHJldHVybkRhdGE7CiAgICAgcGFnZS0+cG9zdFN5bmNocm9ub3VzTWVz
c2FnZUZvclRlc3RpbmcodG9XVEZTdHJpbmcobWVzc2FnZU5hbWVSZWYpLCB0b0ltcGwobWVzc2Fn
ZUJvZHlSZWYpLCByZXR1cm5EYXRhKTsKICAgICBpZiAocmV0dXJuRGF0YVJlZikKLSAgICAgICAg
KnJldHVybkRhdGFSZWYgPSB0b0FQSShyZXR1cm5EYXRhLnJlbGVhc2UoKS5sZWFrUmVmKCkpOwor
ICAgICAgICAqcmV0dXJuRGF0YVJlZiA9IHRvQVBJKHJldHVybkRhdGEubGVha1JlZigpKTsKIH0K
IAogdm9pZCBXS0J1bmRsZVBhZ2VBZGRVc2VyU2NyaXB0KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVm
LCBXS1N0cmluZ1JlZiBzb3VyY2UsIF9XS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlv
blRpbWUsIFdLVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVSYW5nZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCmluZGV4IDczYjg4YzEzNDA2MzNj
NjkwODE4ZDQ4YzM0MWVhNTY5OWE4MTdlYzAuLjQzNzE3YzkxNWQwNjJiM2Q0YTRiN2RmMGVmMzFj
M2Y1NjYxZTU0OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVSYW5nZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVJhbmdlSGFuZGxlLmNw
cApAQCAtNDMsNyArNDMsNyBAQCBXS1R5cGVJRCBXS0J1bmRsZVJhbmdlSGFuZGxlR2V0VHlwZUlE
KCkKIFdLQnVuZGxlUmFuZ2VIYW5kbGVSZWYgV0tCdW5kbGVSYW5nZUhhbmRsZUNyZWF0ZShKU0Nv
bnRleHRSZWYgY29udGV4dFJlZiwgSlNPYmplY3RSZWYgb2JqZWN0UmVmKQogewogICAgIFJlZlB0
cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPiByYW5nZUhhbmRsZSA9IEluamVjdGVkQnVuZGxl
UmFuZ2VIYW5kbGU6OmdldE9yQ3JlYXRlKGNvbnRleHRSZWYsIG9iamVjdFJlZik7Ci0gICAgcmV0
dXJuIHRvQVBJKHJhbmdlSGFuZGxlLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgIHJldHVybiB0
b0FQSShyYW5nZUhhbmRsZS5sZWFrUmVmKCkpOwogfQogCiBXS1JlY3QgV0tCdW5kbGVSYW5nZUhh
bmRsZUdldEJvdW5kaW5nUmVjdEluV2luZG93Q29vcmRpbmF0ZXMoV0tCdW5kbGVSYW5nZUhhbmRs
ZVJlZiByYW5nZUhhbmRsZVJlZikKQEAgLTU1LDUgKzU1LDUgQEAgV0tSZWN0IFdLQnVuZGxlUmFu
Z2VIYW5kbGVHZXRCb3VuZGluZ1JlY3RJbldpbmRvd0Nvb3JkaW5hdGVzKFdLQnVuZGxlUmFuZ2VI
YW5kbGUKIFdLSW1hZ2VSZWYgV0tCdW5kbGVSYW5nZUhhbmRsZUNvcHlTbmFwc2hvdFdpdGhPcHRp
b25zKFdLQnVuZGxlUmFuZ2VIYW5kbGVSZWYgcmFuZ2VIYW5kbGVSZWYsIFdLU25hcHNob3RPcHRp
b25zIG9wdGlvbnMpCiB7CiAgICAgUmVmUHRyPFdlYkltYWdlPiBpbWFnZSA9IHRvSW1wbChyYW5n
ZUhhbmRsZVJlZiktPnJlbmRlcmVkSW1hZ2UodG9TbmFwc2hvdE9wdGlvbnMob3B0aW9ucykpOwot
ICAgIHJldHVybiB0b0FQSShpbWFnZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4g
dG9BUEkoaW1hZ2UubGVha1JlZigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVTY3JpcHRXb3JsZC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlU2Ny
aXB0V29ybGQuY3BwCmluZGV4IDZkYTBjYzBlNjc1ZmNlMzQ1Y2I0MjcyNDA4YTY4MjJkMDg3ZWYz
YTQuLmI3YmQ4YjMwMmIzMTcyZTFmZTNiYzhjYmM1MzliOGFmOTA2MjRhZTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVT
Y3JpcHRXb3JsZC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZVNjcmlwdFdvcmxkLmNwcApAQCAtNDAsNyArNDAsNyBAQCBXS1R5
cGVJRCBXS0J1bmRsZVNjcmlwdFdvcmxkR2V0VHlwZUlEKCkKIFdLQnVuZGxlU2NyaXB0V29ybGRS
ZWYgV0tCdW5kbGVTY3JpcHRXb3JsZENyZWF0ZVdvcmxkKCkKIHsKICAgICBSZWZQdHI8SW5qZWN0
ZWRCdW5kbGVTY3JpcHRXb3JsZD4gd29ybGQgPSBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpj
cmVhdGUoKTsKLSAgICByZXR1cm4gdG9BUEkod29ybGQucmVsZWFzZSgpLmxlYWtSZWYoKSk7Cisg
ICAgcmV0dXJuIHRvQVBJKHdvcmxkLmxlYWtSZWYoKSk7CiB9CiAKIFdLQnVuZGxlU2NyaXB0V29y
bGRSZWYgV0tCdW5kbGVTY3JpcHRXb3JsZE5vcm1hbFdvcmxkKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTU5vZGUubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01O
b2RlLm1tCmluZGV4IDcxMjJjM2ZkOTdkNjM4YTkwZjYyMDdkZDJiZDdlNWU5MjdjYTdhOTIuLjQ5
YjRjYjljYWViYjlkZjAxNDI2Zjk1Zjk3ZTYzNjliZmIyMmFjZmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTU5vZGUubW0K
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dL
RE9NTm9kZS5tbQpAQCAtMTI5LDggKzEyOSw4IEBAIEBpbXBsZW1lbnRhdGlvbiBXS0RPTU5vZGUg
KFdLUHJpdmF0ZSkKIAogLSAoV0tCdW5kbGVOb2RlSGFuZGxlUmVmKV9jb3B5QnVuZGxlTm9kZUhh
bmRsZVJlZgogewotICAgIFJlZlB0cjxXZWJLaXQ6OkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4g
bm9kZUhhbmRsZSA9IFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpnZXRPckNyZWF0
ZShfaW1wbC5nZXQoKSk7Ci0gICAgcmV0dXJuIHRvQVBJKG5vZGVIYW5kbGUucmVsZWFzZSgpLmxl
YWtSZWYoKSk7CisgICAgYXV0byBub2RlSGFuZGxlID0gV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5v
ZGVIYW5kbGU6OmdldE9yQ3JlYXRlKF9pbXBsLmdldCgpKTsKKyAgICByZXR1cm4gdG9BUEkobm9k
ZUhhbmRsZS5sZWFrUmVmKCkpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01SYW5nZS5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1t
CmluZGV4IDE2NWRhMDY0MzQzMjE1ZGM2YjlmMDAxY2U2MDU1NzEwZWVmNmNiNjcuLjBmMDhkODQ4
MTAxODg5YTUwYjVmMTExNjg5YTU3NmYxNTgxZDUxNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVJh
bmdlLm1tCkBAIC0xNTYsOCArMTU2LDggQEAgQGltcGxlbWVudGF0aW9uIFdLRE9NUmFuZ2UgKFdL
UHJpdmF0ZSkKIAogLSAoV0tCdW5kbGVSYW5nZUhhbmRsZVJlZilfY29weUJ1bmRsZVJhbmdlSGFu
ZGxlUmVmCiB7Ci0gICAgUmVmUHRyPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4g
cmFuZ2VIYW5kbGUgPSBXZWJLaXQ6OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmdldE9yQ3Jl
YXRlKF9pbXBsLmdldCgpKTsKLSAgICByZXR1cm4gdG9BUEkocmFuZ2VIYW5kbGUucmVsZWFzZSgp
LmxlYWtSZWYoKSk7CisgICAgYXV0byByYW5nZUhhbmRsZSA9IFdlYktpdDo6SW5qZWN0ZWRCdW5k
bGVSYW5nZUhhbmRsZTo6Z2V0T3JDcmVhdGUoX2ltcGwuZ2V0KCkpOworICAgIHJldHVybiB0b0FQ
SShyYW5nZUhhbmRsZS5sZWFrUmVmKCkpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZUNTU1N0
eWxlRGVjbGFyYXRpb25IYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uSGFuZGxlLmNw
cAppbmRleCBhYzExZDExYTc4NjY0MmFmNzM5OWZmNTA5ZThmN2M1Y2QxZTY4Y2UyLi4yYThmMTdh
NGFjZjg2YjI3NzkyZGJkZTM3ZDczZmIwNWI1YjYwNzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZUNTU1N0eWxl
RGVjbGFyYXRpb25IYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZS5j
cHAKQEAgLTUxLDkgKzUxLDkgQEAgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZUNTU1N0eWxlRGVj
bGFyYXRpb25IYW5kbGU+IEluamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXIKICAgICBpZiAoIXJl
c3VsdC5pc05ld0VudHJ5KQogICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRs
ZUNTU1N0eWxlRGVjbGFyYXRpb25IYW5kbGU+KHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwogCi0g
ICAgUmVmUHRyPEluamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZT4gc3R5bGVE
ZWNsYXJhdGlvbkhhbmRsZSA9IGFkb3B0UmVmKG5ldyBJbmplY3RlZEJ1bmRsZUNTU1N0eWxlRGVj
bGFyYXRpb25IYW5kbGUoKnN0eWxlRGVjbGFyYXRpb24pKTsKLSAgICByZXN1bHQuaXRlcmF0b3It
PnZhbHVlID0gc3R5bGVEZWNsYXJhdGlvbkhhbmRsZS5nZXQoKTsKLSAgICByZXR1cm4gc3R5bGVE
ZWNsYXJhdGlvbkhhbmRsZS5yZWxlYXNlKCk7CisgICAgYXV0byBzdHlsZURlY2xhcmF0aW9uSGFu
ZGxlID0gYWRvcHRSZWYoKm5ldyBJbmplY3RlZEJ1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25IYW5k
bGUoKnN0eWxlRGVjbGFyYXRpb24pKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3R5
bGVEZWNsYXJhdGlvbkhhbmRsZS5wdHIoKTsKKyAgICByZXR1cm4gV1RGTW92ZShzdHlsZURlY2xh
cmF0aW9uSGFuZGxlKTsKIH0KIAogSW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uSGFu
ZGxlOjpJbmplY3RlZEJ1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25IYW5kbGUoQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgc3R5bGVEZWNsYXJhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1
bmRsZU5vZGVIYW5kbGUuY3BwCmluZGV4IDJlYjJkYjNiMjk3ZWU2MmE5MzRhOTdmZGZjOWM4MzVi
OGRkNmM2NjkuLmNmZTk5MDY0MjcxZGRmNzhkNWM2OTMyNGM2MjllN2UxZTI1YjljYTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVj
dGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcApAQCAtMTQwLDcg
KzE0MCw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkltYWdlPiBpbWFnZUZvclJlY3QoRnJhbWVW
aWV3KiBmcmFtZVZpZXcsIGNvbnN0IEludFJlY3QmIHJlCiAgICAgZmxvYXQgc2NhbGVGYWN0b3Ig
PSBmcmFtZVZpZXctPmZyYW1lKCkucGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwogICAgIGJp
dG1hcFNpemUuc2NhbGUoc2NhbGVGYWN0b3IpOwogCi0gICAgUmVmUHRyPFdlYkltYWdlPiBzbmFw
c2hvdCA9IFdlYkltYWdlOjpjcmVhdGUoYml0bWFwU2l6ZSwgc25hcHNob3RPcHRpb25zVG9JbWFn
ZU9wdGlvbnMob3B0aW9ucykpOworICAgIGF1dG8gc25hcHNob3QgPSBXZWJJbWFnZTo6Y3JlYXRl
KGJpdG1hcFNpemUsIHNuYXBzaG90T3B0aW9uc1RvSW1hZ2VPcHRpb25zKG9wdGlvbnMpKTsKICAg
ICBpZiAoIXNuYXBzaG90LT5iaXRtYXAoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTE2NCw3
ICsxNjQsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxXZWJJbWFnZT4gaW1hZ2VGb3JSZWN0KEZyYW1l
VmlldyogZnJhbWVWaWV3LCBjb25zdCBJbnRSZWN0JiByZQogICAgIGZyYW1lVmlldy0+cGFpbnRD
b250ZW50c0ZvclNuYXBzaG90KCpncmFwaGljc0NvbnRleHQuZ2V0KCksIHJlY3QsIHNob3VsZFBh
aW50U2VsZWN0aW9uLCBGcmFtZVZpZXc6OkRvY3VtZW50Q29vcmRpbmF0ZXMpOwogICAgIGZyYW1l
Vmlldy0+c2V0UGFpbnRCZWhhdmlvcihvbGRQYWludEJlaGF2aW9yKTsKIAotICAgIHJldHVybiBz
bmFwc2hvdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHNuYXBzaG90OwogfQogCiBQYXNzUmVmUHRy
PFdlYkltYWdlPiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OnJlbmRlcmVkSW1hZ2UoU25hcHNo
b3RPcHRpb25zIG9wdGlvbnMpCkBAIC0xODcsMTAgKzE4NywxMCBAQCBQYXNzUmVmUHRyPFdlYklt
YWdlPiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OnJlbmRlcmVkSW1hZ2UoU25hcHNob3RPcHRp
b25zIG9wdAogICAgIEludFJlY3QgcGFpbnRpbmdSZWN0ID0gc25hcHBlZEludFJlY3QocmVuZGVy
ZXItPnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0KSk7CiAKICAgICBmcmFtZVZpZXctPnNl
dE5vZGVUb0RyYXcobV9ub2RlLnB0cigpKTsKLSAgICBSZWZQdHI8V2ViSW1hZ2U+IGltYWdlID0g
aW1hZ2VGb3JSZWN0KGZyYW1lVmlldywgcGFpbnRpbmdSZWN0LCBvcHRpb25zKTsKKyAgICBhdXRv
IGltYWdlID0gaW1hZ2VGb3JSZWN0KGZyYW1lVmlldywgcGFpbnRpbmdSZWN0LCBvcHRpb25zKTsK
ICAgICBmcmFtZVZpZXctPnNldE5vZGVUb0RyYXcoMCk7CiAKLSAgICByZXR1cm4gaW1hZ2UucmVs
ZWFzZSgpOworICAgIHJldHVybiBpbWFnZTsKIH0KIAogUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRs
ZVJhbmdlSGFuZGxlPiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OnZpc2libGVSYW5nZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9J
bmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCmluZGV4IDhh
OTQ1MTQ5YjhlOWI4MjQyZGQzNTZkNDIyMzkyY2M0NDE1MGU3YzkuLmM5YmVmNWE2ZThiNjNhZmU5
NjI1ZDhkZGZlOTQzMjc4ZDkwMWEzMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVk
QnVuZGxlUmFuZ2VIYW5kbGUuY3BwCkBAIC03MCw5ICs3MCw5IEBAIFBhc3NSZWZQdHI8SW5qZWN0
ZWRCdW5kbGVSYW5nZUhhbmRsZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Z2V0T3JDcmVh
dGUoUmFuCiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuIFBhc3NS
ZWZQdHI8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4ocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7
CiAKLSAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gcmFuZ2VIYW5kbGUgPSBJ
bmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpjcmVhdGUocmFuZ2UpOwotICAgIHJlc3VsdC5pdGVy
YXRvci0+dmFsdWUgPSByYW5nZUhhbmRsZS5nZXQoKTsKLSAgICByZXR1cm4gcmFuZ2VIYW5kbGUu
cmVsZWFzZSgpOworICAgIGF1dG8gcmFuZ2VIYW5kbGUgPSBJbmplY3RlZEJ1bmRsZVJhbmdlSGFu
ZGxlOjpjcmVhdGUocmFuZ2UpOworICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSByYW5nZUhh
bmRsZS5wdHIoKTsKKyAgICByZXR1cm4gV1RGTW92ZShyYW5nZUhhbmRsZSk7CiB9CiAKIFJlZjxJ
bmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpjcmVh
dGUoUmFuZ2UqIHJhbmdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCA2OWE0ZmY4MDlmOTcw
YzM1YWRkMTVjNDgxMmQxZTlkNTQ1YmZhYTI1Li4yODNhOTY3MDBmNWUxZmQ2MzhiMmVjNTIzMjRk
MzdlNzBlOGIwMDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtOTAsMTMgKzkwLDEzIEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlPiBJbmplY3Rl
ZEJ1bmRsZTo6Y3JlYXRlKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMsIEFQSTo6T2JqZWN0KiBpbml0aWFsaXphdGlvblVzZXJEYXRhKQogewotICAgIFJlZlB0
cjxJbmplY3RlZEJ1bmRsZT4gYnVuZGxlID0gYWRvcHRSZWYobmV3IEluamVjdGVkQnVuZGxlKHBh
cmFtZXRlcnMpKTsKKyAgICBhdXRvIGJ1bmRsZSA9IGFkb3B0UmVmKCpuZXcgSW5qZWN0ZWRCdW5k
bGUocGFyYW1ldGVycykpOwogCiAgICAgYnVuZGxlLT5tX3NhbmRib3hFeHRlbnNpb24gPSBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGUocGFyYW1ldGVycy5pbmplY3RlZEJ1bmRsZVBhdGhFeHRlbnNp
b25IYW5kbGUpOwogICAgIGlmICghYnVuZGxlLT5pbml0aWFsaXplKHBhcmFtZXRlcnMsIGluaXRp
YWxpemF0aW9uVXNlckRhdGEpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVy
biBidW5kbGUucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKGJ1bmRsZSk7CiB9CiAKIElu
amVjdGVkQnVuZGxlOjpJbmplY3RlZEJ1bmRsZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKaW5kZXggMzE1MWUx
NGViNWU5NWU0NmIwNmYwZDdjZjEwOTg1Y2EyNGY2MmY0Zi4uOGYxNWQzNTI0NjhiMTExZGFiNThi
ZTc4ZDI2ZjkxZjg1YzUyZjFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCkBAIC0xNjks
MTAgKzE2OSwxMCBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luOjpsb2FkVVJMKGNvbnN0IFN0cmluZyYg
bWV0aG9kLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29ucwogCiAgICAgaWYgKHRhcmdldC5p
c051bGwoKSkgewogICAgICAgICAvLyBUaGUgYnJvd3NlciBpcyBnb2luZyB0byBzZW5kIHRoZSBk
YXRhIGluIGEgc3RyZWFtLCBjcmVhdGUgYSBwbHVnLWluIHN0cmVhbS4KLSAgICAgICAgUmVmUHRy
PE5ldHNjYXBlUGx1Z2luU3RyZWFtPiBwbHVnaW5TdHJlYW0gPSBOZXRzY2FwZVBsdWdpblN0cmVh
bTo6Y3JlYXRlKHRoaXMsIHJlcXVlc3RJRCwgdXJsU3RyaW5nLCBzZW5kTm90aWZpY2F0aW9uLCBu
b3RpZmljYXRpb25EYXRhKTsKKyAgICAgICAgYXV0byBwbHVnaW5TdHJlYW0gPSBOZXRzY2FwZVBs
dWdpblN0cmVhbTo6Y3JlYXRlKHRoaXMsIHJlcXVlc3RJRCwgdXJsU3RyaW5nLCBzZW5kTm90aWZp
Y2F0aW9uLCBub3RpZmljYXRpb25EYXRhKTsKICAgICAgICAgQVNTRVJUKCFtX3N0cmVhbXMuY29u
dGFpbnMocmVxdWVzdElEKSk7CiAKLSAgICAgICAgbV9zdHJlYW1zLnNldChyZXF1ZXN0SUQsIHBs
dWdpblN0cmVhbS5yZWxlYXNlKCkpOworICAgICAgICBtX3N0cmVhbXMuc2V0KHJlcXVlc3RJRCwg
V1RGTW92ZShwbHVnaW5TdHJlYW0pKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9EZXByZWNhdGVkUERG
UGx1Z2luLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9EZXByZWNh
dGVkUERGUGx1Z2luLm1tCmluZGV4IDFjNDcxN2NhNzE4NDNmNGU0YzAxNmVmYjc2Y2YzOWMzYTBj
ZWIzZWIuLjEyMjNmNDljNTA4NDQwN2E0ZDA4ZmMzNTExY2E0NjI1ZDIwN2ViMDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBERlBs
dWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0RlcHJl
Y2F0ZWRQREZQbHVnaW4ubW0KQEAgLTY1MSw3ICs2NTEsNyBAQCBjb25zdCBQbHVnaW5WaWV3KiBQ
REZQbHVnaW46OnBsdWdpblZpZXcoKSBjb25zdAogCiBQYXNzUmVmUHRyPFNjcm9sbGJhcj4gUERG
UGx1Z2luOjpjcmVhdGVTY3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24p
CiB7Ci0gICAgUmVmUHRyPFNjcm9sbGJhcj4gd2lkZ2V0ID0gU2Nyb2xsYmFyOjpjcmVhdGVOYXRp
dmVTY3JvbGxiYXIoKnRoaXMsIG9yaWVudGF0aW9uLCBSZWd1bGFyU2Nyb2xsYmFyKTsKKyAgICBh
dXRvIHdpZGdldCA9IFNjcm9sbGJhcjo6Y3JlYXRlTmF0aXZlU2Nyb2xsYmFyKCp0aGlzLCBvcmll
bnRhdGlvbiwgUmVndWxhclNjcm9sbGJhcik7CiAgICAgaWYgKG9yaWVudGF0aW9uID09IEhvcml6
b250YWxTY3JvbGxiYXIpIHsKICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIgPSBh
ZG9wdE5TKFtbV0tQREZQbHVnaW5TY3JvbGxiYXJMYXllciBhbGxvY10gaW5pdFdpdGhQREZQbHVn
aW46dGhpc10pOwogICAgICAgICBbbV9jb250YWluZXJMYXllciBhZGRTdWJsYXllcjptX2hvcml6
b250YWxTY3JvbGxiYXJMYXllci5nZXQoKV07CkBAIC02NjcsNyArNjY3LDcgQEAgUGFzc1JlZlB0
cjxTY3JvbGxiYXI+IFBERlBsdWdpbjo6Y3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0
aW9uIG9yaWVudGF0aW8KICAgICAgICAgfQogICAgIH0KICAgICBwbHVnaW5WaWV3KCktPmZyYW1l
KCktPnZpZXcoKS0+YWRkQ2hpbGQod2lkZ2V0LmdldCgpKTsKLSAgICByZXR1cm4gd2lkZ2V0LnJl
bGVhc2UoKTsKKyAgICByZXR1cm4gd2lkZ2V0OwogfQogCiB2b2lkIFBERlBsdWdpbjo6ZGVzdHJv
eVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCmluZGV4
IDZiMjRjZjQ3MzIyMmZkMGMzMjY4YTVkNzUxMTQ5MTA2YzY1N2Y2MDkuLmEwY2M4YjliMjQ0ZjI1
M2RjMTFkNmJlOGE1ZGNkNjllN2Y4NzAzMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcApAQCAtMjYyLDcgKzI2Miw3IEBA
IHZvaWQgU3RvcmFnZUFyZWFNYXA6OmFwcGx5Q2hhbmdlKGNvbnN0IFN0cmluZyYga2V5LCBjb25z
dCBTdHJpbmcmIG5ld1ZhbHVlKQogCiAgICAgaWYgKCFrZXkpIHsKICAgICAgICAgLy8gQSBudWxs
IGtleSBtZWFucyBjbGVhci4KLSAgICAgICAgUmVmUHRyPFN0b3JhZ2VNYXA+IG5ld1N0b3JhZ2VN
YXAgPSBTdG9yYWdlTWFwOjpjcmVhdGUobV9xdW90YUluQnl0ZXMpOworICAgICAgICBhdXRvIG5l
d1N0b3JhZ2VNYXAgPSBTdG9yYWdlTWFwOjpjcmVhdGUobV9xdW90YUluQnl0ZXMpOwogCiAgICAg
ICAgIC8vIEFueSBjaGFuZ2VzIHRoYXQgd2VyZSBtYWRlIGxvY2FsbHkgYWZ0ZXIgdGhlIGNsZWFy
IG11c3Qgc3RpbGwgYmUga2VwdCBhcm91bmQgaW4gdGhlIG5ldyBtYXAuCiAgICAgICAgIGZvciAo
YXV0byBpdCA9IG1fcGVuZGluZ1ZhbHVlQ2hhbmdlcy5iZWdpbigpLmtleXMoKSwgZW5kID0gbV9w
ZW5kaW5nVmFsdWVDaGFuZ2VzLmVuZCgpLmtleXMoKTsgaXQgIT0gZW5kOyArK2l0KSB7CkBAIC0y
NzgsNyArMjc4LDcgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6YXBwbHlDaGFuZ2UoY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUpCiAgICAgICAgICAgICBuZXdTdG9yYWdl
TWFwLT5zZXRJdGVtSWdub3JpbmdRdW90YShrZXksIG9sZFZhbHVlKTsKICAgICAgICAgfQogCi0g
ICAgICAgIG1fc3RvcmFnZU1hcCA9IG5ld1N0b3JhZ2VNYXAucmVsZWFzZSgpOworICAgICAgICBt
X3N0b3JhZ2VNYXAgPSBXVEZNb3ZlKG5ld1N0b3JhZ2VNYXApOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcAppbmRleCAxNTFjOTAw
NmZjMmI0ZjkwODEwZTYyZDZkMzM3ZDE4OWI3NjM3MjU1Li4xY2E3ZjQ0OTdhNzk4YjNlNWRlZDRh
ZWViMThlYWNjMmYxOWFhNzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5j
cHAKQEAgLTEyMyw3ICsxMjMsNyBAQCBQYWdlU3RhdGUgdG9QYWdlU3RhdGUoY29uc3QgV2ViQ29y
ZTo6SGlzdG9yeUl0ZW0mIGhpc3RvcnlJdGVtKQogCiBzdGF0aWMgUGFzc1JlZlB0cjxGb3JtRGF0
YT4gdG9Gb3JtRGF0YShjb25zdCBIVFRQQm9keSYgaHR0cEJvZHkpCiB7Ci0gICAgUmVmUHRyPEZv
cm1EYXRhPiBmb3JtRGF0YSA9IEZvcm1EYXRhOjpjcmVhdGUoKTsKKyAgICBhdXRvIGZvcm1EYXRh
ID0gRm9ybURhdGE6OmNyZWF0ZSgpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDog
aHR0cEJvZHkuZWxlbWVudHMpIHsKICAgICAgICAgc3dpdGNoIChlbGVtZW50LnR5cGUpIHsKQEAg
LTE0MSw3ICsxNDEsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxGb3JtRGF0YT4gdG9Gb3JtRGF0YShj
b25zdCBIVFRQQm9keSYgaHR0cEJvZHkpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4g
Zm9ybURhdGEucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKGZvcm1EYXRhKTsKIH0KIAog
c3RhdGljIHZvaWQgYXBwbHlGcmFtZVN0YXRlKEhpc3RvcnlJdGVtJiBoaXN0b3J5SXRlbSwgY29u
c3QgRnJhbWVTdGF0ZSYgZnJhbWVTdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAKaW5kZXggYTE0N2YyMGRmOGY5N2NiNWRhM2JhZjY5M2UzMzQwNGQxNTAwOGU3ZS4uZjFhZTU1
NDMxMDQ0YmY4OWViNTYwMDk1MjQ0Nzg0ZGZkODBiZWNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKQEAgLTE0MzUsMTEgKzE0MzUsMTEgQEAgUmVmUHRyPFdpZGdldD4gV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJ
bkVsZW0KICNlbmRpZgogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgUmVm
UHRyPFBsdWdpbj4gcGx1Z2luID0gbV9mcmFtZS0+cGFnZSgpLT5jcmVhdGVQbHVnaW4obV9mcmFt
ZSwgcGx1Z2luRWxlbWVudCwgcGFyYW1ldGVycywgcGFyYW1ldGVycy5taW1lVHlwZSk7CisgICAg
YXV0byBwbHVnaW4gPSBtX2ZyYW1lLT5wYWdlKCktPmNyZWF0ZVBsdWdpbihtX2ZyYW1lLCBwbHVn
aW5FbGVtZW50LCBwYXJhbWV0ZXJzLCBwYXJhbWV0ZXJzLm1pbWVUeXBlKTsKICAgICBpZiAoIXBs
dWdpbikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gUGx1Z2luVmlldzo6
Y3JlYXRlKHBsdWdpbkVsZW1lbnQsIHBsdWdpbi5yZWxlYXNlKCksIHBhcmFtZXRlcnMpOworICAg
IHJldHVybiBQbHVnaW5WaWV3OjpjcmVhdGUocGx1Z2luRWxlbWVudCwgV1RGTW92ZShwbHVnaW4p
LCBwYXJhbWV0ZXJzKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBsdWdpbkVsZW1lbnQpOwog
ICAgIHJldHVybiBudWxscHRyOwpAQCAtMTQ1NCw4ICsxNDU0LDggQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6cmVjcmVhdGVQbHVnaW4oV2lkZ2V0KiB3aWRnZXQpCiAKICAgICBQbHVnaW5W
aWV3KiBwbHVnaW5WaWV3ID0gc3RhdGljX2Nhc3Q8UGx1Z2luVmlldyo+KHdpZGdldCk7CiAgICAg
U3RyaW5nIG5ld01JTUVUeXBlOwotICAgIFJlZlB0cjxQbHVnaW4+IHBsdWdpbiA9IG1fZnJhbWUt
PnBhZ2UoKS0+Y3JlYXRlUGx1Z2luKG1fZnJhbWUsIHBsdWdpblZpZXctPnBsdWdpbkVsZW1lbnQo
KSwgcGx1Z2luVmlldy0+aW5pdGlhbFBhcmFtZXRlcnMoKSwgbmV3TUlNRVR5cGUpOwotICAgIHBs
dWdpblZpZXctPnJlY3JlYXRlQW5kSW5pdGlhbGl6ZShwbHVnaW4ucmVsZWFzZSgpKTsKKyAgICBh
dXRvIHBsdWdpbiA9IG1fZnJhbWUtPnBhZ2UoKS0+Y3JlYXRlUGx1Z2luKG1fZnJhbWUsIHBsdWdp
blZpZXctPnBsdWdpbkVsZW1lbnQoKSwgcGx1Z2luVmlldy0+aW5pdGlhbFBhcmFtZXRlcnMoKSwg
bmV3TUlNRVR5cGUpOworICAgIHBsdWdpblZpZXctPnJlY3JlYXRlQW5kSW5pdGlhbGl6ZShXVEZN
b3ZlKHBsdWdpbikpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0od2lkZ2V0KTsKICNlbmRpZgpA
QCAtMTQ4OCw3ICsxNDg4LDcgQEAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpyZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoY29uc3QgU3QKIFBhc3NSZWZQdHI8
V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25z
dCBJbnRTaXplJiBwbHVnaW5TaXplLCBIVE1MQXBwbGV0RWxlbWVudCogYXBwbGV0RWxlbWVudCwg
Y29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwYXJhbVZhbHVlcykKIHsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQ
SSkKLSAgICBSZWZQdHI8V2lkZ2V0PiBwbHVnaW4gPSBjcmVhdGVQbHVnaW4ocGx1Z2luU2l6ZSwg
YXBwbGV0RWxlbWVudCwgVVJMKCksIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzLCBhcHBsZXRFbGVt
ZW50LT5zZXJ2aWNlVHlwZSgpLCBmYWxzZSk7CisgICAgYXV0byBwbHVnaW4gPSBjcmVhdGVQbHVn
aW4ocGx1Z2luU2l6ZSwgYXBwbGV0RWxlbWVudCwgVVJMKCksIHBhcmFtTmFtZXMsIHBhcmFtVmFs
dWVzLCBhcHBsZXRFbGVtZW50LT5zZXJ2aWNlVHlwZSgpLCBmYWxzZSk7CiAgICAgaWYgKCFwbHVn
aW4pIHsKICAgICAgICAgaWYgKFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpIHsK
ICAgICAgICAgICAgIFN0cmluZyBmcmFtZVVSTFN0cmluZyA9IG1fZnJhbWUtPmNvcmVGcmFtZSgp
LT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZVVSTCgpLnN0cmluZygpOwpAQCAt
MTQ5Niw3ICsxNDk2LDcgQEAgUGFzc1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmIHAKICAgICAgICAgICAgIHdl
YlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmFpbFRvSW5pdGlhbGl6ZVBs
dWdpbihhcHBsZXRFbGVtZW50LT5zZXJ2aWNlVHlwZSgpLCBmcmFtZVVSTFN0cmluZywgcGFnZVVS
TFN0cmluZykpOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBwbHVnaW4ucmVsZWFzZSgp
OworICAgIHJldHVybiBXVEZNb3ZlKHBsdWdpbik7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShw
bHVnaW5TaXplKTsKICAgICBVTlVTRURfUEFSQU0oYXBwbGV0RWxlbWVudCk7CkBAIC0xNzAxLDgg
KzE3MDEsOCBAQCBib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRGb3JjZVVuaXZlcnNh
bEFjY2Vzc0Zyb21Mb2NhbFVSTChjb25zdCBXZWJDb3JlOgogCiBQYXNzUmVmUHRyPEZyYW1lTmV0
d29ya2luZ0NvbnRleHQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVOZXR3b3JraW5nQ29u
dGV4dCgpCiB7Ci0gICAgUmVmUHRyPFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IGNvbnRleHQg
PSBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpjcmVhdGUobV9mcmFtZSk7Ci0gICAgcmV0dXJu
IGNvbnRleHQucmVsZWFzZSgpOworICAgIGF1dG8gY29udGV4dCA9IFdlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ6OmNyZWF0ZShtX2ZyYW1lKTsKKyAgICByZXR1cm4gV1RGTW92ZShjb250ZXh0KTsK
IH0KIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50LmNwcAppbmRleCAwMjFhYmZhNTAwOTI1MDBlMWQ1YzFjM2MwZTI1MjdlODQ3Yjc2ZjM4Li45
Njg5MjlmZGEzNDc5YWFkMmJlNGExMGEwYjQ1OTZhZTE3NTU2ZDUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQuY3BwCkBAIC0xMDcsOSArMTA3LDkgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGll
bnQ6OmhpZ2hsaWdodCgpCiB7CiAjaWYgIVBMQVRGT1JNKElPUykKICAgICBpZiAoIW1faGlnaGxp
Z2h0T3ZlcmxheSkgewotICAgICAgICBSZWZQdHI8UGFnZU92ZXJsYXk+IGhpZ2hsaWdodE92ZXJs
YXkgPSBQYWdlT3ZlcmxheTo6Y3JlYXRlKCp0aGlzKTsKLSAgICAgICAgbV9oaWdobGlnaHRPdmVy
bGF5ID0gaGlnaGxpZ2h0T3ZlcmxheS5nZXQoKTsKLSAgICAgICAgbV9wYWdlLT5tYWluRnJhbWUo
KS0+cGFnZU92ZXJsYXlDb250cm9sbGVyKCkuaW5zdGFsbFBhZ2VPdmVybGF5KGhpZ2hsaWdodE92
ZXJsYXkucmVsZWFzZSgpLCBQYWdlT3ZlcmxheTo6RmFkZU1vZGU6OkZhZGUpOworICAgICAgICBh
dXRvIGhpZ2hsaWdodE92ZXJsYXkgPSBQYWdlT3ZlcmxheTo6Y3JlYXRlKCp0aGlzKTsKKyAgICAg
ICAgbV9oaWdobGlnaHRPdmVybGF5ID0gaGlnaGxpZ2h0T3ZlcmxheS5wdHIoKTsKKyAgICAgICAg
bV9wYWdlLT5tYWluRnJhbWUoKS0+cGFnZU92ZXJsYXlDb250cm9sbGVyKCkuaW5zdGFsbFBhZ2VP
dmVybGF5KFdURk1vdmUoaGlnaGxpZ2h0T3ZlcmxheSksIFBhZ2VPdmVybGF5OjpGYWRlTW9kZTo6
RmFkZSk7CiAgICAgICAgIG1faGlnaGxpZ2h0T3ZlcmxheS0+c2V0TmVlZHNEaXNwbGF5KCk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgbV9oaWdobGlnaHRPdmVybGF5LT5zdG9wRmFkZU91dEFuaW1h
dGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KaW5kZXggNWEwMzg1OWJmMTI3
OTYwNmZmNzAzYzk3MTg3MDVlMGU0ZDc1ZGU2Ny4uMGJkMjU4NzRmZjViZjA4MTdkNzkxZjQ4NzMx
MGVmNjBjNTdhNTMyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCkBAIC01Niw3
ICs1Niw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IGNvbnZlcnRJbWFnZVRvQml0bWFwKE5TSW1hZ2UgKmltYWdlLCBjb25zdCBJbnRT
aXplJiBzaXplKQogewotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHNpemUsIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9y
dHNBbHBoYSk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJl
YWJsZShzaXplLCBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpOwogICAgIGlmICghYml0
bWFwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtNzIsNyArNzIsNyBAQCBzdGF0aWMg
UGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNvbnZlcnRJbWFnZVRvQml0bWFwKE5TSW1hZ2Ug
KmltYWdlLCBjb25zdCBJbgogCiAgICAgW05TR3JhcGhpY3NDb250ZXh0IHNldEN1cnJlbnRDb250
ZXh0OnNhdmVkQ29udGV4dC5nZXQoKV07CiAKLSAgICByZXR1cm4gYml0bWFwLnJlbGVhc2UoKTsK
KyAgICByZXR1cm4gV1RGTW92ZShiaXRtYXApOwogfQogCiB2b2lkIFdlYkRyYWdDbGllbnQ6OnN0
YXJ0RHJhZyhSZXRhaW5QdHI8TlNJbWFnZT4gaW1hZ2UsIGNvbnN0IEludFBvaW50JiBwb2ludCwg
Y29uc3QgSW50UG9pbnQmLCBEYXRhVHJhbnNmZXImLCBGcmFtZSYgZnJhbWUsIGJvb2wgbGlua0Ry
YWcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250
cm9sbGVyLmNwcAppbmRleCA5ZjExOTNmNDkzMjc5MzI3OTkwMDU0MDM4NjhlYWRjMGQ2MjQ4ODZk
Li4xZTBjZWY0NjUxYjkzYmY4MGZiNzA1NjY1YzZmNjE1ZmVhYmMyYTg5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKQEAg
LTE5Miw5ICsxOTIsOSBAQCB2b2lkIEZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kVUlBZnRlclBh
Z2VTY3JvbGwoYm9vbCBmb3VuZCwgY29uc3QgU3RyaW5nJiBzdHJpbgogICAgICAgICAgICAgbV93
ZWJQYWdlLT5tYWluRnJhbWUoKS0+cGFnZU92ZXJsYXlDb250cm9sbGVyKCkudW5pbnN0YWxsUGFn
ZU92ZXJsYXkobV9maW5kUGFnZU92ZXJsYXksIFBhZ2VPdmVybGF5OjpGYWRlTW9kZTo6RmFkZSk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFtX2ZpbmRQYWdlT3ZlcmxheSkgewotICAgICAg
ICAgICAgUmVmUHRyPFBhZ2VPdmVybGF5PiBmaW5kUGFnZU92ZXJsYXkgPSBQYWdlT3ZlcmxheTo6
Y3JlYXRlKCp0aGlzLCBQYWdlT3ZlcmxheTo6T3ZlcmxheVR5cGU6OkRvY3VtZW50KTsKLSAgICAg
ICAgICAgIG1fZmluZFBhZ2VPdmVybGF5ID0gZmluZFBhZ2VPdmVybGF5LmdldCgpOwotICAgICAg
ICAgICAgbV93ZWJQYWdlLT5tYWluRnJhbWUoKS0+cGFnZU92ZXJsYXlDb250cm9sbGVyKCkuaW5z
dGFsbFBhZ2VPdmVybGF5KGZpbmRQYWdlT3ZlcmxheS5yZWxlYXNlKCksIFBhZ2VPdmVybGF5OjpG
YWRlTW9kZTo6RmFkZSk7CisgICAgICAgICAgICBhdXRvIGZpbmRQYWdlT3ZlcmxheSA9IFBhZ2VP
dmVybGF5OjpjcmVhdGUoKnRoaXMsIFBhZ2VPdmVybGF5OjpPdmVybGF5VHlwZTo6RG9jdW1lbnQp
OworICAgICAgICAgICAgbV9maW5kUGFnZU92ZXJsYXkgPSBmaW5kUGFnZU92ZXJsYXkucHRyKCk7
CisgICAgICAgICAgICBtX3dlYlBhZ2UtPm1haW5GcmFtZSgpLT5wYWdlT3ZlcmxheUNvbnRyb2xs
ZXIoKS5pbnN0YWxsUGFnZU92ZXJsYXkoV1RGTW92ZShmaW5kUGFnZU92ZXJsYXkpLCBQYWdlT3Zl
cmxheTo6RmFkZU1vZGU6OkZhZGUpOwogICAgICAgICB9CiAgICAgICAgIG1fZmluZFBhZ2VPdmVy
bGF5LT5zZXROZWVkc0Rpc3BsYXkoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVy
LmNwcAppbmRleCA4ZTIyZjZlYTU4YTE2NTI5NGEwM2JkZDFmMmExZmJlNzlhYmNmYWEyLi4xYTM5
ZTNlMTA3ZGMxZmRhYjMyY2QzNjI3ZTU0Y2YyODVmNmQwYzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxl
Q29udHJvbGxlci5jcHAKQEAgLTUwLDEwICs1MCwxMCBAQCBQYXNzUmVmUHRyPFZpc2l0ZWRMaW5r
VGFibGVDb250cm9sbGVyPiBWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlcjo6Z2V0T3JDcmVhdGUo
dQogICAgIGlmICh2aXNpdGVkTGlua1RhYmxlQ29udHJvbGxlclB0cikKICAgICAgICAgcmV0dXJu
IHZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyUHRyOwogCi0gICAgUmVmUHRyPFZpc2l0ZWRMaW5r
VGFibGVDb250cm9sbGVyPiB2aXNpdGVkTGlua1RhYmxlQ29udHJvbGxlciA9IGFkb3B0UmVmKG5l
dyBWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlcihpZGVudGlmaWVyKSk7Ci0gICAgdmlzaXRlZExp
bmtUYWJsZUNvbnRyb2xsZXJQdHIgPSB2aXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5nZXQoKTsK
KyAgICBhdXRvIHZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyID0gYWRvcHRSZWYoKm5ldyBWaXNp
dGVkTGlua1RhYmxlQ29udHJvbGxlcihpZGVudGlmaWVyKSk7CisgICAgdmlzaXRlZExpbmtUYWJs
ZUNvbnRyb2xsZXJQdHIgPSB2aXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5wdHIoKTsKIAotICAg
IHJldHVybiB2aXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5yZWxlYXNlKCk7CisgICAgcmV0dXJu
IFdURk1vdmUodmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIpOwogfQogCiBWaXNpdGVkTGlua1Rh
YmxlQ29udHJvbGxlcjo6VmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIodWludDY0X3QgaWRlbnRp
ZmllcikKQEAgLTkwLDExICs5MCwxMSBAQCB2b2lkIFZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVy
OjphZGRWaXNpdGVkTGluayhQYWdlJiBwYWdlLCBMaW5rSGFzaCBsaW5rSGFzaCkKIAogdm9pZCBW
aXNpdGVkTGlua1RhYmxlQ29udHJvbGxlcjo6c2V0VmlzaXRlZExpbmtUYWJsZShjb25zdCBTaGFy
ZWRNZW1vcnk6OkhhbmRsZSYgaGFuZGxlKQogewotICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNo
YXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6bWFwKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90
ZWN0aW9uOjpSZWFkT25seSk7CisgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6
Om1hcChoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgIGlm
ICghc2hhcmVkTWVtb3J5KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Zpc2l0ZWRMaW5rVGFi
bGUuc2V0U2hhcmVkTWVtb3J5KHNoYXJlZE1lbW9yeS5yZWxlYXNlKCkpOworICAgIG1fdmlzaXRl
ZExpbmtUYWJsZS5zZXRTaGFyZWRNZW1vcnkoV1RGTW92ZShzaGFyZWRNZW1vcnkpKTsKIAogICAg
IGludmFsaWRhdGVTdHlsZXNGb3JBbGxMaW5rcygpOwogICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9u
KCkubWFya1BhZ2VzRm9yVmlzaXRlZExpbmtTdHlsZVJlY2FsYygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggMmI1NTQwZGY3YTUxMTk2
ODYyMTliNWQ1OWYwNTNmZjM1MjZjOGFlZi4uOWVjMjY0NTdjYzI0Mzk0MzI1ZGZlNGQyZWI1NzJl
YzNkZDFiZDQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuY3BwCkBAIC0xMTAsMTggKzExMCwxOCBAQCBzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVM
aXN0ZW5lcklEKCkKIAogUGFzc1JlZlB0cjxXZWJGcmFtZT4gV2ViRnJhbWU6OmNyZWF0ZVdpdGhD
b3JlTWFpbkZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkNvcmU6OkZyYW1lKiBjb3JlRnJhbWUpCiB7
Ci0gICAgUmVmUHRyPFdlYkZyYW1lPiBmcmFtZSA9IGNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8V2Vi
RnJhbWVMb2FkZXJDbGllbnQ+KHN0YXRpY19jYXN0PFdlYkZyYW1lTG9hZGVyQ2xpZW50Kj4oJmNv
cmVGcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkpKSk7CisgICAgYXV0byBmcmFtZSA9IGNyZWF0ZShz
dGQ6OnVuaXF1ZV9wdHI8V2ViRnJhbWVMb2FkZXJDbGllbnQ+KHN0YXRpY19jYXN0PFdlYkZyYW1l
TG9hZGVyQ2xpZW50Kj4oJmNvcmVGcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkpKSk7CiAgICAgcGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDcmVhdGVNYWluRnJhbWUoZnJhbWUt
PmZyYW1lSUQoKSksIHBhZ2UtPnBhZ2VJRCgpLCBJUEM6OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVu
V2FpdGluZ0ZvclN5bmNSZXBseSk7CiAKICAgICBmcmFtZS0+bV9jb3JlRnJhbWUgPSBjb3JlRnJh
bWU7CiAgICAgZnJhbWUtPm1fY29yZUZyYW1lLT50cmVlKCkuc2V0TmFtZShTdHJpbmcoKSk7CiAg
ICAgZnJhbWUtPm1fY29yZUZyYW1lLT5pbml0KCk7Ci0gICAgcmV0dXJuIGZyYW1lLnJlbGVhc2Uo
KTsKKyAgICByZXR1cm4gZnJhbWU7CiB9CiAKIFBhc3NSZWZQdHI8V2ViRnJhbWU+IFdlYkZyYW1l
OjpjcmVhdGVTdWJmcmFtZShXZWJQYWdlKiBwYWdlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwg
SFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQpCiB7Ci0gICAgUmVmUHRyPFdlYkZy
YW1lPiBmcmFtZSA9IGNyZWF0ZShzdGQ6Om1ha2VfdW5pcXVlPFdlYkZyYW1lTG9hZGVyQ2xpZW50
PigpKTsKKyAgICBhdXRvIGZyYW1lID0gY3JlYXRlKHN0ZDo6bWFrZV91bmlxdWU8V2ViRnJhbWVM
b2FkZXJDbGllbnQ+KCkpOwogICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGlkQ3JlYXRlU3ViZnJhbWUoZnJhbWUtPmZyYW1lSUQoKSksIHBhZ2UtPnBhZ2VJRCgpLCBJUEM6
OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CiAKICAgICBSZWY8
V2ViQ29yZTo6RnJhbWU+IGNvcmVGcmFtZSA9IEZyYW1lOjpjcmVhdGUocGFnZS0+Y29yZVBhZ2Uo
KSwgb3duZXJFbGVtZW50LCBmcmFtZS0+bV9mcmFtZUxvYWRlckNsaWVudC5nZXQoKSk7CkBAIC0x
MzIsMTcgKzEzMiwxNyBAQCBQYXNzUmVmUHRyPFdlYkZyYW1lPiBXZWJGcmFtZTo6Y3JlYXRlU3Vi
ZnJhbWUoV2ViUGFnZSogcGFnZSwgY29uc3QgU3RyaW5nJiBmcmFtZQogICAgICAgICBvd25lckVs
ZW1lbnQtPmRvY3VtZW50KCkuZnJhbWUoKS0+dHJlZSgpLmFwcGVuZENoaWxkKFdURk1vdmUoY29y
ZUZyYW1lKSk7CiAgICAgfQogICAgIGZyYW1lLT5tX2NvcmVGcmFtZS0+aW5pdCgpOwotICAgIHJl
dHVybiBmcmFtZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGZyYW1lOwogfQogCiBQYXNzUmVmUHRy
PFdlYkZyYW1lPiBXZWJGcmFtZTo6Y3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxXZWJGcmFtZUxvYWRl
ckNsaWVudD4gZnJhbWVMb2FkZXJDbGllbnQpCiB7Ci0gICAgUmVmUHRyPFdlYkZyYW1lPiBmcmFt
ZSA9IGFkb3B0UmVmKG5ldyBXZWJGcmFtZShXVEZNb3ZlKGZyYW1lTG9hZGVyQ2xpZW50KSkpOwor
ICAgIGF1dG8gZnJhbWUgPSBhZG9wdFJlZigqbmV3IFdlYkZyYW1lKFdURk1vdmUoZnJhbWVMb2Fk
ZXJDbGllbnQpKSk7CiAKICAgICAvLyBBZGQgZXhwbGljdCByZWYoKSB0aGF0IHdpbGwgYmUgYmFs
YW5jZWQgaW4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZyYW1lTG9hZGVyRGVzdHJveWVkKCkuCiAg
ICAgZnJhbWUtPnJlZigpOwogCi0gICAgcmV0dXJuIGZyYW1lLnJlbGVhc2UoKTsKKyAgICByZXR1
cm4gV1RGTW92ZShmcmFtZSk7CiB9CiAKIFdlYkZyYW1lOjpXZWJGcmFtZShzdGQ6OnVuaXF1ZV9w
dHI8V2ViRnJhbWVMb2FkZXJDbGllbnQ+IGZyYW1lTG9hZGVyQ2xpZW50KQpAQCAtODE4LDcgKzgx
OCw3IEBAIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBXZWJGcmFtZTo6Y3JlYXRlU2VsZWN0
aW9uU25hcHNob3QoKSBjb25zdAogICAgIGlmICghc25hcHNob3QpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc2hhcmVkU25hcHNob3QgPSBT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzbmFwc2hvdC0+aW50ZXJuYWxTaXplKCks
IFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CisgICAgYXV0byBzaGFyZWRTbmFwc2hv
dCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHNuYXBzaG90LT5pbnRlcm5hbFNp
emUoKSwgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKTsKICAgICBpZiAoIXNoYXJlZFNu
YXBzaG90KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtODI5LDcgKzgyOSw3IEBAIFBh
c3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBXZWJGcmFtZTo6Y3JlYXRlU2VsZWN0aW9uU25hcHNo
b3QoKSBjb25zdAogICAgIGdyYXBoaWNzQ29udGV4dC0+c2NhbGUoRmxvYXRTaXplKGRldmljZVNj
YWxlRmFjdG9yLCBkZXZpY2VTY2FsZUZhY3RvcikpOwogICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJh
d0NvbnN1bWluZ0ltYWdlQnVmZmVyKFdURk1vdmUoc25hcHNob3QpLCBGbG9hdFBvaW50KCkpOwog
Ci0gICAgcmV0dXJuIHNoYXJlZFNuYXBzaG90LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92
ZShzaGFyZWRTbmFwc2hvdCk7CiB9CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA2MjUyODdl
ZTc1YjIxMmI0OGM1NmZiODJiZDBlOGY3YTBiN2UxZjMyLi42ODk0MzQzNWVhMWE5YjIwOGQ2ZGY0
ZmI5YWNkOTI5ZmRkZDhmOTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC03NTQsOCArNzU0LDggQEAgUGFzc1JlZlB0cjxQbHVnaW4+IFdl
YlBhZ2U6OmNyZWF0ZVBsdWdpbihXZWJGcmFtZSogZnJhbWUsIEhUTUxQbHVnSW5FbGVtZW50KiBw
bHUKICNpZiBFTkFCTEUoUERGS0lUX1BMVUdJTikKICAgICAgICAgU3RyaW5nIHBhdGggPSBwYXJh
bWV0ZXJzLnVybC5wYXRoKCk7CiAgICAgICAgIGlmIChzaG91bGRVc2VQREZQbHVnaW4oKSAmJiAo
TUlNRVR5cGVSZWdpc3RyeTo6aXNQREZPclBvc3RTY3JpcHRNSU1FVHlwZShwYXJhbWV0ZXJzLm1p
bWVUeXBlKSB8fCAocGFyYW1ldGVycy5taW1lVHlwZS5pc0VtcHR5KCkgJiYgKHBhdGguZW5kc1dp
dGgoIi5wZGYiLCBmYWxzZSkgfHwgcGF0aC5lbmRzV2l0aCgiLnBzIiwgZmFsc2UpKSkpKSB7Ci0g
ICAgICAgICAgICBSZWZQdHI8UERGUGx1Z2luPiBwZGZQbHVnaW4gPSBQREZQbHVnaW46OmNyZWF0
ZShmcmFtZSk7Ci0gICAgICAgICAgICByZXR1cm4gcGRmUGx1Z2luLnJlbGVhc2UoKTsKKyAgICAg
ICAgICAgIGF1dG8gcGRmUGx1Z2luID0gUERGUGx1Z2luOjpjcmVhdGUoZnJhbWUpOworICAgICAg
ICAgICAgcmV0dXJuIFdURk1vdmUocGRmUGx1Z2luKTsKICAgICAgICAgfQogI2Vsc2UKICAgICAg
ICAgVU5VU0VEX1BBUkFNKGZyYW1lKTsKQEAgLTE4NzAsNyArMTg3MCw3IEBAIFBhc3NSZWZQdHI8
V2ViSW1hZ2U+IFdlYlBhZ2U6OnNuYXBzaG90QXRTaXplKGNvbnN0IEludFJlY3QmIHJlY3QsIGNv
bnN0IEludFNpemUmCiAgICAgZmxvYXQgdmVydGljYWxTY2FsZUZhY3RvciA9IHN0YXRpY19jYXN0
PGZsb2F0PihiaXRtYXBTaXplLmhlaWdodCgpKSAvIHJlY3QuaGVpZ2h0KCk7CiAgICAgZmxvYXQg
c2NhbGVGYWN0b3IgPSBzdGQ6Om1heChob3Jpem9udGFsU2NhbGVGYWN0b3IsIHZlcnRpY2FsU2Nh
bGVGYWN0b3IpOwogCi0gICAgUmVmUHRyPFdlYkltYWdlPiBzbmFwc2hvdCA9IFdlYkltYWdlOjpj
cmVhdGUoYml0bWFwU2l6ZSwgc25hcHNob3RPcHRpb25zVG9JbWFnZU9wdGlvbnMob3B0aW9ucykp
OworICAgIGF1dG8gc25hcHNob3QgPSBXZWJJbWFnZTo6Y3JlYXRlKGJpdG1hcFNpemUsIHNuYXBz
aG90T3B0aW9uc1RvSW1hZ2VPcHRpb25zKG9wdGlvbnMpKTsKICAgICBpZiAoIXNuYXBzaG90LT5i
aXRtYXAoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTE4NzgsNyArMTg3OCw3IEBA
IFBhc3NSZWZQdHI8V2ViSW1hZ2U+IFdlYlBhZ2U6OnNuYXBzaG90QXRTaXplKGNvbnN0IEludFJl
Y3QmIHJlY3QsIGNvbnN0IEludFNpemUmCiAKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0
aW9uc1ByaW50aW5nKSB7CiAgICAgICAgIFByaW50Q29udGV4dDo6c3Bvb2xBbGxQYWdlc1dpdGhC
b3VuZGFyaWVzKCpjb3JlRnJhbWUsICpncmFwaGljc0NvbnRleHQsIHNuYXBzaG90UmVjdC5zaXpl
KCkpOwotICAgICAgICByZXR1cm4gc25hcHNob3QucmVsZWFzZSgpOworICAgICAgICByZXR1cm4g
c25hcHNob3Q7CiAgICAgfQogCiAgICAgQ29sb3IgZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IgPSBm
cmFtZVZpZXctPmRvY3VtZW50QmFja2dyb3VuZENvbG9yKCk7CkBAIC0xOTEwLDcgKzE5MTAsNyBA
QCBQYXNzUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFwc2hvdEF0U2l6ZShjb25zdCBJbnRS
ZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJgogICAgICAgICBncmFwaGljc0NvbnRleHQtPnN0cm9r
ZVJlY3Qoc2VsZWN0aW9uUmVjdGFuZ2xlLCAxKTsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIHNu
YXBzaG90LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gc25hcHNob3Q7CiB9CiAKIFBhc3NSZWZQdHI8
V2ViSW1hZ2U+IFdlYlBhZ2U6OnNuYXBzaG90Tm9kZShXZWJDb3JlOjpOb2RlJiBub2RlLCBTbmFw
c2hvdE9wdGlvbnMgb3B0aW9ucywgdW5zaWduZWQgbWF4aW11bVBpeGVsQ291bnQpCkBAIC0xOTM5
LDcgKzE5MzksNyBAQCBQYXNzUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFwc2hvdE5vZGUo
V2ViQ29yZTo6Tm9kZSYgbm9kZSwgU25hcHNob3RPcHRpb25zCiAgICAgICAgIHNuYXBzaG90U2l6
ZSA9IEludFNpemUoc25hcHNob3RTaXplLndpZHRoKCkgKiBzY2FsZUZhY3RvciwgbWF4aW11bUhl
aWdodCk7CiAgICAgfQogCi0gICAgUmVmUHRyPFdlYkltYWdlPiBzbmFwc2hvdCA9IFdlYkltYWdl
OjpjcmVhdGUoc25hcHNob3RTaXplLCBzbmFwc2hvdE9wdGlvbnNUb0ltYWdlT3B0aW9ucyhvcHRp
b25zKSk7CisgICAgYXV0byBzbmFwc2hvdCA9IFdlYkltYWdlOjpjcmVhdGUoc25hcHNob3RTaXpl
LCBzbmFwc2hvdE9wdGlvbnNUb0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7CiAgICAgaWYgKCFzbmFw
c2hvdC0+Yml0bWFwKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0xOTYzLDcgKzE5
NjMsNyBAQCBQYXNzUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFwc2hvdE5vZGUoV2ViQ29y
ZTo6Tm9kZSYgbm9kZSwgU25hcHNob3RPcHRpb25zCiAgICAgZnJhbWVWaWV3LT5zZXRCYXNlQmFj
a2dyb3VuZENvbG9yKHNhdmVkQmFja2dyb3VuZENvbG9yKTsKICAgICBmcmFtZVZpZXctPnNldE5v
ZGVUb0RyYXcobnVsbHB0cik7CiAKLSAgICByZXR1cm4gc25hcHNob3QucmVsZWFzZSgpOworICAg
IHJldHVybiBzbmFwc2hvdDsKIH0KIAogdm9pZCBXZWJQYWdlOjpwYWdlRGlkU2Nyb2xsKCkKQEAg
LTM0MTksNyArMzQxOSw3IEBAIHZvaWQgV2ViUGFnZTo6ZHJhZ0VuZGVkKFdlYkNvcmU6OkludFBv
aW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iCiAKIHZvaWQgV2ViUGFn
ZTo6d2lsbFBlcmZvcm1Mb2FkRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkKIHsKLSAgICBtX3NhbmRi
b3hFeHRlbnNpb25UcmFja2VyLndpbGxQZXJmb3JtTG9hZERyYWdEZXN0aW5hdGlvbkFjdGlvbiht
X3BlbmRpbmdEcm9wU2FuZGJveEV4dGVuc2lvbi5yZWxlYXNlKCkpOworICAgIG1fc2FuZGJveEV4
dGVuc2lvblRyYWNrZXIud2lsbFBlcmZvcm1Mb2FkRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKFdURk1v
dmUobV9wZW5kaW5nRHJvcFNhbmRib3hFeHRlbnNpb24pKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpt
YXlQZXJmb3JtVXBsb2FkRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkKQEAgLTM5NzIsNyArMzk3Miw3
IEBAIHZvaWQgV2ViUGFnZTo6U2FuZGJveEV4dGVuc2lvblRyYWNrZXI6OmRpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkKFdlYkZyYW1lKiBmcmFtZSkKIAogICAgIEFTU0VSVCghbV9wcm92aXNpb25hbFNh
bmRib3hFeHRlbnNpb24pOwogCi0gICAgbV9wcm92aXNpb25hbFNhbmRib3hFeHRlbnNpb24gPSBt
X3BlbmRpbmdQcm92aXNpb25hbFNhbmRib3hFeHRlbnNpb24ucmVsZWFzZSgpOworICAgIG1fcHJv
dmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uID0gV1RGTW92ZShtX3BlbmRpbmdQcm92aXNpb25hbFNh
bmRib3hFeHRlbnNpb24pOwogICAgIGlmICghbV9wcm92aXNpb25hbFNhbmRib3hFeHRlbnNpb24p
CiAgICAgICAgIHJldHVybjsKIApAQCAtMzk4OSw3ICszOTg5LDcgQEAgdm9pZCBXZWJQYWdlOjpT
YW5kYm94RXh0ZW5zaW9uVHJhY2tlcjo6ZGlkQ29tbWl0UHJvdmlzaW9uYWxMb2FkKFdlYkZyYW1l
KiBmcmFtZSkKICAgICBpZiAobV9jb21taXR0ZWRTYW5kYm94RXh0ZW5zaW9uKQogICAgICAgICBt
X2NvbW1pdHRlZFNhbmRib3hFeHRlbnNpb24tPnJldm9rZSgpOwogCi0gICAgbV9jb21taXR0ZWRT
YW5kYm94RXh0ZW5zaW9uID0gbV9wcm92aXNpb25hbFNhbmRib3hFeHRlbnNpb24ucmVsZWFzZSgp
OworICAgIG1fY29tbWl0dGVkU2FuZGJveEV4dGVuc2lvbiA9IFdURk1vdmUobV9wcm92aXNpb25h
bFNhbmRib3hFeHRlbnNpb24pOwogCiAgICAgLy8gV2UgY2FuIGFsc28gaGF2ZSBhIG5vbi1udWxs
IG1fcGVuZGluZ1Byb3Zpc2lvbmFsU2FuZGJveEV4dGVuc2lvbiBpZiBhIG5ldyBsb2FkIGlzIGJl
aW5nIHN0YXJ0ZWQuCiAgICAgLy8gVGhpcyBleHRlbnNpb24gaXMgbm90IGNsZWFyZWQsIGJlY2F1
c2UgaXQgZG9lcyBub3QgcGVydGFpbiB0byB0aGUgZmFpbGVkIGxvYWQsIGFuZCB3aWxsIGJlIG5l
ZWRlZC4KQEAgLTQxNDgsNyArNDE0OCw3IEBAIHZvaWQgV2ViUGFnZTo6ZHJhd1JlY3RUb0ltYWdl
KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBjb25zCiAgICAg
ICAgIEFTU0VSVChjb3JlRnJhbWUtPmRvY3VtZW50KCktPnByaW50aW5nKCkpOwogI2VuZGlmCiAK
LSAgICAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGVTaGFyZWFibGUoaW1hZ2VTaXplLCBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxw
aGEpOworICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVh
YmxlKGltYWdlU2l6ZSwgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKTsKICAgICAgICAg
YXV0byBncmFwaGljc0NvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwog
CiAgICAgICAgIGZsb2F0IHByaW50aW5nU2NhbGUgPSBzdGF0aWNfY2FzdDxmbG9hdD4oaW1hZ2VT
aXplLndpZHRoKCkpIC8gcmVjdC53aWR0aCgpOwpAQCAtNDE2Niw3ICs0MTY2LDcgQEAgdm9pZCBX
ZWJQYWdlOjpkcmF3UmVjdFRvSW1hZ2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZv
JiBwcmludEluZm8sIGNvbnMKICAgICAgICAgICAgIG1fcHJpbnRDb250ZXh0LT5zcG9vbFJlY3Qo
KmdyYXBoaWNzQ29udGV4dCwgcmVjdCk7CiAgICAgICAgIH0KIAotICAgICAgICBpbWFnZSA9IFdl
YkltYWdlOjpjcmVhdGUoYml0bWFwLnJlbGVhc2UoKSk7CisgICAgICAgIGltYWdlID0gV2ViSW1h
Z2U6OmNyZWF0ZShXVEZNb3ZlKGJpdG1hcCkpOwogICAgIH0KICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5LmNw
cAppbmRleCBmOWE4NjMwOGY1OGM5OTcwYzY0ZGM0ZTcyZTc0YTk2MjA0YWU5YWRjLi5jNmZiNzIx
OTY0NGFkNmQ0NWVmOTM2ZDVkZWZiYmY3OTRjZWIxYTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94eS5jcHAKQEAgLTM3
LDEyICszNywxMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogUGFzc1JlZlB0cjxXZWJQYWdlR3Jv
dXBQcm94eT4gV2ViUGFnZUdyb3VwUHJveHk6OmNyZWF0ZShjb25zdCBXZWJQYWdlR3JvdXBEYXRh
JiBkYXRhKQogewotICAgIFJlZlB0cjxXZWJQYWdlR3JvdXBQcm94eT4gcGFnZUdyb3VwID0gYWRv
cHRSZWYobmV3IFdlYlBhZ2VHcm91cFByb3h5KGRhdGEpKTsKLSAgICAKKyAgICBhdXRvIHBhZ2VH
cm91cCA9IGFkb3B0UmVmKCpuZXcgV2ViUGFnZUdyb3VwUHJveHkoZGF0YSkpOworCiAgICAgaWYg
KHBhZ2VHcm91cC0+aXNWaXNpYmxlVG9JbmplY3RlZEJ1bmRsZSgpICYmIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmluamVjdGVkQnVuZGxlKCkpCi0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmluamVjdGVkQnVuZGxlKCktPmRpZEluaXRpYWxpemVQYWdlR3JvdXAocGFnZUdyb3VwLmdl
dCgpKTsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuaW5qZWN0ZWRCdW5kbGUoKS0+
ZGlkSW5pdGlhbGl6ZVBhZ2VHcm91cChwYWdlR3JvdXAucHRyKCkpOwogCi0gICAgcmV0dXJuIHBh
Z2VHcm91cC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1vdmUocGFnZUdyb3VwKTsKIH0KIAog
V2ViUGFnZUdyb3VwUHJveHk6OldlYlBhZ2VHcm91cFByb3h5KGNvbnN0IFdlYlBhZ2VHcm91cERh
dGEmIGRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUubW0KaW5kZXggNmE4NmYx
NzFjMmIyMDZjYTI2MDMxMmVhZDQ4ZGNjMzE4ZmIxNDNhZi4uNTgxNWNmZTYxMGZkZDQ2YzA0MDVk
ZWJkNDRiYWM4YTBlMTgzOTE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZS5t
bQpAQCAtMjk0LDcgKzI5NCw3IEBAIGJvb2wgUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6UHJv
cGVydGllczo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyCiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIHBy
b3BlcnRpZXMudGltaW5nRnVuY3Rpb25zLnVuY2hlY2tlZEFwcGVuZCh0aW1pbmdGdW5jdGlvbi5y
ZWxlYXNlKCkpOworICAgICAgICAgICAgcHJvcGVydGllcy50aW1pbmdGdW5jdGlvbnMudW5jaGVj
a2VkQXBwZW5kKFdURk1vdmUodGltaW5nRnVuY3Rpb24pKTsKICAgICAgICAgfQogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9y
bUNBTGF5ZXJSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCmluZGV4IDIxOWU4M2MxMTQwNzlhNTBmYmNiMDRk
NjExMTc3YThhZjdmNzhkYzguLjI0NzY4MjUzMjdlNjRjZTE5YjgzMDk4YTRkOWU5OTg1ZWQ0ODM4
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxh
dGZvcm1DQUxheWVyUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgUGFz
c1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6Y3Jl
YXRlKExheWVyVHlwZSBsYXllclQKIAogICAgIGNvbnRleHQubGF5ZXJXYXNDcmVhdGVkKCpsYXll
ciwgbGF5ZXJUeXBlKTsKIAotICAgIHJldHVybiBsYXllci5yZWxlYXNlKCk7CisgICAgcmV0dXJu
IFdURk1vdmUobGF5ZXIpOwogfQogCiBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllclJlbW90ZT4g
UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjcmVhdGUoUGxhdGZvcm1MYXllciAqcGxhdGZvcm1MYXll
ciwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lciwgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYg
Y29udGV4dCkKQEAgLTY2LDExICs2NiwxMSBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllclJl
bW90ZT4gUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjcmVhdGUoUGxhdGZvcm1MYXllciAqcAogCiBQ
YXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllclJlbW90ZT4gUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpj
cmVhdGUoY29uc3QgUGxhdGZvcm1DQUxheWVyUmVtb3RlJiBvdGhlciwgV2ViQ29yZTo6UGxhdGZv
cm1DQUxheWVyQ2xpZW50KiBvd25lciwgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYgY29udGV4dCkK
IHsKLSAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyUmVtb3RlPiBsYXllciA9IGFkb3B0UmVmKG5l
dyBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUob3RoZXIsIG93bmVyLCBjb250ZXh0KSk7CisgICAgYXV0
byBsYXllciA9IGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1DQUxheWVyUmVtb3RlKG90aGVyLCBvd25l
ciwgY29udGV4dCkpOwogCi0gICAgY29udGV4dC5sYXllcldhc0NyZWF0ZWQoKmxheWVyLCBvdGhl
ci5sYXllclR5cGUoKSk7CisgICAgY29udGV4dC5sYXllcldhc0NyZWF0ZWQobGF5ZXIuZ2V0KCks
IG90aGVyLmxheWVyVHlwZSgpKTsKIAotICAgIHJldHVybiBsYXllci5yZWxlYXNlKCk7CisgICAg
cmV0dXJuIFdURk1vdmUobGF5ZXIpOwogfQogCiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OlBsYXRm
b3JtQ0FMYXllclJlbW90ZShMYXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJDbGll
bnQqIG93bmVyLCBSZW1vdGVMYXllclRyZWVDb250ZXh0JiBjb250ZXh0KQpAQCAtOTUsMTIgKzk1
LDEyIEBAIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6UGxhdGZvcm1DQUxheWVyUmVtb3RlKGNvbnN0
IFBsYXRmb3JtQ0FMYXllclJlbW90ZSYgb3RoZXIsCiAKIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxh
eWVyPiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNsb25lKFBsYXRmb3JtQ0FMYXllckNsaWVudCog
b3duZXIpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllclJlbW90ZT4gY2xvbmUg
PSBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNyZWF0ZSgqdGhpcywgb3duZXIsICptX2NvbnRleHQp
OworICAgIGF1dG8gY2xvbmUgPSBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNyZWF0ZSgqdGhpcywg
b3duZXIsICptX2NvbnRleHQpOwogCiAgICAgdXBkYXRlQ2xvbmVkTGF5ZXJQcm9wZXJ0aWVzKCpj
bG9uZSk7CiAKICAgICBjbG9uZS0+c2V0Q2xvbmVkTGF5ZXIodGhpcyk7Ci0gICAgcmV0dXJuIGNs
b25lLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92ZShjbG9uZSk7CiB9CiAKIFBsYXRmb3Jt
Q0FMYXllclJlbW90ZTo6flBsYXRmb3JtQ0FMYXllclJlbW90ZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1
c3RvbS5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1D
QUxheWVyUmVtb3RlQ3VzdG9tLm1tCmluZGV4IDE1NDJhNmJmYjQxNjljMzFhZTlmOGJlNjFmNDky
YjRlNzY2NDJiYzcuLjU3YjNjYzExMTIyNDlmNzA4NjkwYjUzNWM2OTQxOTZiNTQ0ZDM0ZmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1D
QUxheWVyUmVtb3RlQ3VzdG9tLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tCkBAIC00OCwxMCArNDgsMTAg
QEAgc3RhdGljIE5TU3RyaW5nICogY29uc3QgcGxhdGZvcm1DQUxheWVyUG9pbnRlciA9IEAiV0tQ
bGF0Zm9ybUNBTGF5ZXIiOwogCiBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllclJlbW90ZT4gUGxh
dGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpjcmVhdGUoUGxhdGZvcm1MYXllciAqcGxhdGZvcm1M
YXllciwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lciwgUmVtb3RlTGF5ZXJUcmVlQ29udGV4
dCYgY29udGV4dCkKIHsKLSAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyUmVtb3RlPiBsYXllciA9
IGFkb3B0UmVmKG5ldyBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20oUGxhdGZvcm1DQUxheWVy
Q29jb2E6OmxheWVyVHlwZUZvclBsYXRmb3JtTGF5ZXIocGxhdGZvcm1MYXllciksIHBsYXRmb3Jt
TGF5ZXIsIG93bmVyLCBjb250ZXh0KSk7Ci0gICAgY29udGV4dC5sYXllcldhc0NyZWF0ZWQoKmxh
eWVyLCBsYXllci0+bGF5ZXJUeXBlKCkpOworICAgIGF1dG8gbGF5ZXIgPSBhZG9wdFJlZigqbmV3
IFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbShQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6bGF5ZXJU
eXBlRm9yUGxhdGZvcm1MYXllcihwbGF0Zm9ybUxheWVyKSwgcGxhdGZvcm1MYXllciwgb3duZXIs
IGNvbnRleHQpKTsKKyAgICBjb250ZXh0LmxheWVyV2FzQ3JlYXRlZChsYXllci5nZXQoKSwgbGF5
ZXItPmxheWVyVHlwZSgpKTsKIAotICAgIHJldHVybiBsYXllci5yZWxlYXNlKCk7CisgICAgcmV0
dXJuIFdURk1vdmUobGF5ZXIpOwogfQogCiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OlBs
YXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbShMYXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUxh
eWVyICogY3VzdG9tTGF5ZXIsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIsIFJlbW90ZUxh
eWVyVHJlZUNvbnRleHQmIGNvbnRleHQpCkBAIC0xMjcsMTMgKzEyNywxMyBAQCBQYXNzUmVmUHRy
PFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcj4gUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpj
bG9uZShQbGF0Zm9ybQogICAgICAgICBjb3B5Q29udGVudHMgPSBmYWxzZTsKICAgICB9CiAKLSAg
ICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyUmVtb3RlPiBjbG9uZSA9IGFkb3B0UmVmKG5ldyBQbGF0
Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20obGF5ZXJUeXBlKCksIGNsb25lZExheWVyLmdldCgpLCBv
d25lciwgKmNvbnRleHQoKSkpOwotICAgIGNvbnRleHQoKS0+bGF5ZXJXYXNDcmVhdGVkKCpjbG9u
ZSwgY2xvbmUtPmxheWVyVHlwZSgpKTsKKyAgICBhdXRvIGNsb25lID0gYWRvcHRSZWYoKm5ldyBQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20obGF5ZXJUeXBlKCksIGNsb25lZExheWVyLmdldCgp
LCBvd25lciwgKmNvbnRleHQoKSkpOworICAgIGNvbnRleHQoKS0+bGF5ZXJXYXNDcmVhdGVkKGNs
b25lLmdldCgpLCBjbG9uZS0+bGF5ZXJUeXBlKCkpOwogCi0gICAgdXBkYXRlQ2xvbmVkTGF5ZXJQ
cm9wZXJ0aWVzKCpjbG9uZSwgY29weUNvbnRlbnRzKTsKKyAgICB1cGRhdGVDbG9uZWRMYXllclBy
b3BlcnRpZXMoY2xvbmUuZ2V0KCksIGNvcHlDb250ZW50cyk7CiAKICAgICBjbG9uZS0+c2V0Q2xv
bmVkTGF5ZXIodGhpcyk7Ci0gICAgcmV0dXJuIGNsb25lLnJlbGVhc2UoKTsKKyAgICByZXR1cm4g
V1RGTW92ZShjbG9uZSk7CiB9CiAKIENGVHlwZVJlZiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0
b206OmNvbnRlbnRzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1t
CmluZGV4IGZmZThjY2Y0ODIyZjNhZTY3OTczODRkNTQzNDcxYzQ4NjM5Mzg2M2YuLjk2Y2U3Mzdm
MTJjMzM0ZDlhNTMyZTVmMWZlOWEwNzM5ODliMDhiMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0K
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYS5tbQpAQCAtMTExLDkgKzExMSw5IEBAIEdyYXBoaWNzTGF5ZXJGYWN0b3J5
KiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6Z3JhcGhpY3NMYXllckZhY3RvcnkoKQogCiBS
ZWZQdHI8RGlzcGxheVJlZnJlc2hNb25pdG9yPiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6
Y3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkK
IHsKLSAgICBSZWZQdHI8UmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yPiBtb25p
dG9yID0gUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yOjpjcmVhdGUoZGlzcGxh
eUlELCAqdGhpcyk7Ci0gICAgbV9kaXNwbGF5UmVmcmVzaE1vbml0b3JzLmFkZChtb25pdG9yLmdl
dCgpKTsKLSAgICByZXR1cm4gbW9uaXRvci5yZWxlYXNlKCk7CisgICAgYXV0byBtb25pdG9yID0g
UmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yOjpjcmVhdGUoZGlzcGxheUlELCAq
dGhpcyk7CisgICAgbV9kaXNwbGF5UmVmcmVzaE1vbml0b3JzLmFkZChtb25pdG9yLnB0cigpKTsK
KyAgICByZXR1cm4gV1RGTW92ZShtb25pdG9yKTsKIH0KIAogdm9pZCBSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYTo6d2lsbERlc3Ryb3lEaXNwbGF5UmVmcmVzaE1vbml0b3IoRGlzcGxheVJlZnJl
c2hNb25pdG9yKiBtb25pdG9yKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IDY1ZTBlZTIxMTY2NGEzOGZkNzMzYmM2Zjc4YmQyMWNjNTRmNmUxNWUu
LjFhYzc4OWZiNjE0OTk3OTYzMjhlNzkwNzhiZjQ1NTJiY2ZmODZlYmMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAx
Ni0wNi0xNiAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVt
b3ZlIFJlZlB0cjo6cmVsZWFzZSgpIGFuZCBjaGFuZ2UgY2FsbHMgc2l0ZXMgdG8gdXNlIFdURk1v
dmUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4
MzY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVm
UHRyOjpyZWxlYXNlKCkgcmVsZWFzZXMgaXRzIG1hbmFnZWQgcG9pbnRlciBhd2t3YXJkbHkuIEl0
J3MgbW9yZQorICAgICAgICBkaXJlY3QgYW5kIGNsZWFyZXIgdG8gdXNlIFdURk1vdmUgdG8gdHJh
bnNmZXIgb3duZXJzaGlwIG9mIHRoZSBtYW5hZ2VkCisgICAgICAgIHBvaW50ZXIuCisKKyAgICAg
ICAgQXMgcGFydCBvZiB0aGlzIGNsZWFudXAsIGFsc28gY2hhbmdlIGEgbG90IG9mIGV4cGxpY2l0
IGRhdGEgdHlwZXMgdG8KKyAgICAgICAgJ2F1dG8nLgorCisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvbWFjL1BpeGVsRHVtcFN1cHBvcnRNYWMubW06CisgICAgICAgIChjcmVhdGVCaXRtYXBDb250
ZXh0RnJvbVdlYlZpZXcpOgorICAgICAgICAoY3JlYXRlUGFnZWRCaXRtYXBDb250ZXh0KToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbToKKyAgICAgICAgKFRl
c3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9IYXNoQ291bnRlZFNldC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoTWFwLmNw
cDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE2LTA2LTE2ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBv
dXQgcjIwMjAwMiBhbmQgcjIwMjExMS4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9QaXhlbER1bXBTdXBwb3J0TWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Bp
eGVsRHVtcFN1cHBvcnRNYWMubW0KaW5kZXggZTMzMzRlZmU1MzI5MGMzZGRkYzVmNWFlYTU0ODg3
MWE3NmRmYWJmMS4uOWY5OTZkMzJjMTBiYWE4OTc1OGMyOGIxODhjMjgwODQxMDliZjIxMCAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1BpeGVsRHVtcFN1cHBvcnRNYWMubW0K
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1BpeGVsRHVtcFN1cHBvcnRNYWMubW0KQEAg
LTEyMCw3ICsxMjAsNyBAQCBQYXNzUmVmUHRyPEJpdG1hcENvbnRleHQ+IGNyZWF0ZUJpdG1hcENv
bnRleHRGcm9tV2ViVmlldyhib29sIG9uc2NyZWVuLCBib29sIGluYwogICAgIHNpemVfdCBwaXhl
bHNIaWdoID0gc3RhdGljX2Nhc3Q8c2l6ZV90Pih3ZWJWaWV3U2l6ZS5oZWlnaHQgKiBkZXZpY2VT
Y2FsZUZhY3Rvcik7CiAgICAgc2l6ZV90IHJvd0J5dGVzID0gMDsKICAgICB2b2lkKiBidWZmZXIg
PSBudWxscHRyOwotICAgIFJlZlB0cjxCaXRtYXBDb250ZXh0PiBiaXRtYXBDb250ZXh0ID0gY3Jl
YXRlQml0bWFwQ29udGV4dChwaXhlbHNXaWRlLCBwaXhlbHNIaWdoLCByb3dCeXRlcywgYnVmZmVy
KTsKKyAgICBhdXRvIGJpdG1hcENvbnRleHQgPSBjcmVhdGVCaXRtYXBDb250ZXh0KHBpeGVsc1dp
ZGUsIHBpeGVsc0hpZ2gsIHJvd0J5dGVzLCBidWZmZXIpOwogICAgIGlmICghYml0bWFwQ29udGV4
dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBi
aXRtYXBDb250ZXh0LT5jZ0NvbnRleHQoKTsKQEAgLTE5NCw3ICsxOTQsNyBAQCBQYXNzUmVmUHRy
PEJpdG1hcENvbnRleHQ+IGNyZWF0ZUJpdG1hcENvbnRleHRGcm9tV2ViVmlldyhib29sIG9uc2Ny
ZWVuLCBib29sIGluYwogICAgICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOwog
ICAgIH0KICAgICAKLSAgICByZXR1cm4gYml0bWFwQ29udGV4dC5yZWxlYXNlKCk7CisgICAgcmV0
dXJuIGJpdG1hcENvbnRleHQ7CiB9CiAKIFBhc3NSZWZQdHI8Qml0bWFwQ29udGV4dD4gY3JlYXRl
UGFnZWRCaXRtYXBDb250ZXh0KCkKQEAgLTIwNywxMCArMjA3LDEwIEBAIFBhc3NSZWZQdHI8Qml0
bWFwQ29udGV4dD4gY3JlYXRlUGFnZWRCaXRtYXBDb250ZXh0KCkKIAogICAgIGludCB0b3RhbEhl
aWdodCA9IG51bWJlck9mUGFnZXMgKiAocGFnZUhlaWdodEluUGl4ZWxzICsgMSkgLSAxOwogCi0g
ICAgUmVmUHRyPEJpdG1hcENvbnRleHQ+IGJpdG1hcENvbnRleHQgPSBjcmVhdGVCaXRtYXBDb250
ZXh0KHBhZ2VXaWR0aEluUGl4ZWxzLCB0b3RhbEhlaWdodCwgcm93Qnl0ZXMsIGJ1ZmZlcik7Cisg
ICAgYXV0byBiaXRtYXBDb250ZXh0ID0gY3JlYXRlQml0bWFwQ29udGV4dChwYWdlV2lkdGhJblBp
eGVscywgdG90YWxIZWlnaHQsIHJvd0J5dGVzLCBidWZmZXIpOwogICAgIENHQ29udGV4dFJlZiBj
b250ZXh0ID0gYml0bWFwQ29udGV4dC0+Y2dDb250ZXh0KCk7CiAgICAgQ0dDb250ZXh0VHJhbnNs
YXRlQ1RNKGNvbnRleHQsIDAsIHRvdGFsSGVpZ2h0KTsKICAgICBDR0NvbnRleHRTY2FsZUNUTShj
b250ZXh0LCAxLCAtMSk7CiAgICAgW21haW5GcmFtZSBwcmludFRvQ0dDb250ZXh0OmNvbnRleHQg
cGFnZVdpZHRoOnBhZ2VXaWR0aEluUGl4ZWxzIHBhZ2VIZWlnaHQ6cGFnZUhlaWdodEluUGl4ZWxz
XTsKLSAgICByZXR1cm4gYml0bWFwQ29udGV4dC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGJpdG1h
cENvbnRleHQ7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1
bm5lck1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCmlu
ZGV4IGU0ZjUyNDgyODkzYWY0MjdjZWQxOTY5ZjcxZjM4MTYzZjI5OGQxN2EuLjQ0NWY0NDk0OWY5
OTNmYjIwNmEyMTBiMTQyNjZjYTUyZjM2Y2E5NjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9UZXN0UnVubmVyTWFjLm1tCkBAIC00MjcsOCArNDI3LDggQEAgdm9pZCBUZXN0UnVubmVyOjpz
ZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1
ZGUsIGQKICAgICAgICAgLy8gVGVzdCB0aGUgZXhwb3NlZCBBUEkuCiAgICAgICAgIHBvc2l0aW9u
ID0gW1tXZWJHZW9sb2NhdGlvblBvc2l0aW9uIGFsbG9jXSBpbml0V2l0aFRpbWVzdGFtcDpjdXJy
ZW50VGltZSgpIGxhdGl0dWRlOmxhdGl0dWRlIGxvbmdpdHVkZTpsb25naXR1ZGUgYWNjdXJhY3k6
YWNjdXJhY3ldOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFJlZlB0cjxXZWJDb3JlOjpHZW9sb2Nh
dGlvblBvc2l0aW9uPiBjb3JlR2VvbG9jYXRpb25Qb3NpdGlvbiA9IFdlYkNvcmU6Okdlb2xvY2F0
aW9uUG9zaXRpb246OmNyZWF0ZShjdXJyZW50VGltZSgpLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBh
Y2N1cmFjeSwgcHJvdmlkZXNBbHRpdHVkZSwgYWx0aXR1ZGUsIHByb3ZpZGVzQWx0aXR1ZGVBY2N1
cmFjeSwgYWx0aXR1ZGVBY2N1cmFjeSwgcHJvdmlkZXNIZWFkaW5nLCBoZWFkaW5nLCBwcm92aWRl
c1NwZWVkLCBzcGVlZCk7Ci0gICAgICAgIHBvc2l0aW9uID0gW1tXZWJHZW9sb2NhdGlvblBvc2l0
aW9uIGFsbG9jXSBpbml0V2l0aEdlb2xvY2F0aW9uUG9zaXRpb246KGNvcmVHZW9sb2NhdGlvblBv
c2l0aW9uLnJlbGVhc2UoKSldOworICAgICAgICBhdXRvIGNvcmVHZW9sb2NhdGlvblBvc2l0aW9u
ID0gV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKGN1cnJlbnRUaW1lKCksIGxh
dGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5LCBwcm92aWRlc0FsdGl0dWRlLCBhbHRpdHVkZSwg
cHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBhbHRpdHVkZUFjY3VyYWN5LCBwcm92aWRlc0hlYWRp
bmcsIGhlYWRpbmcsIHByb3ZpZGVzU3BlZWQsIHNwZWVkKTsKKyAgICAgICAgcG9zaXRpb24gPSBb
W1dlYkdlb2xvY2F0aW9uUG9zaXRpb24gYWxsb2NdIGluaXRXaXRoR2VvbG9jYXRpb25Qb3NpdGlv
bjooV1RGTW92ZShjb3JlR2VvbG9jYXRpb25Qb3NpdGlvbikpXTsKICAgICB9CiAgICAgW1tNb2Nr
R2VvbG9jYXRpb25Qcm92aWRlciBzaGFyZWRdIHNldFBvc2l0aW9uOnBvc2l0aW9uXTsKICAgICBb
cG9zaXRpb24gcmVsZWFzZV07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9IYXNoQ291bnRlZFNldC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9I
YXNoQ291bnRlZFNldC5jcHAKaW5kZXggNGMxYWZkMTA1YmYxZjcwMjMwNzNmNjYyYzI2ZmFiODVj
YjgzODVmMy4uNmE3YmIxOWI1NTM5ODJiMzM1MzkwZWZjYmY3M2M0N2I5YWRmYTk1OSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaENvdW50ZWRTZXQuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hDb3VudGVkU2V0LmNwcApAQCAt
MzcwLDcgKzM3MCw3IEBAIFRFU1QoV1RGX0hhc2hDb3VudGVkU2V0LCBSZWZQdHJLZXlfQWRkVXNp
bmdSZWxlYXNlKQogICAgIAogICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOwogICAgIFJlZlB0
cjxSZWZMb2dnZXI+IHB0cigmYSk7Ci0gICAgaGFzaENvdW50ZWRTZXQuYWRkKHB0ci5yZWxlYXNl
KCkpOworICAgIGhhc2hDb3VudGVkU2V0LmFkZChXVEZNb3ZlKHB0cikpOwogICAgIAogICAgIEVY
UEVDVF9TVFJFUSgicmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIH0KQEAgLTQzNiw3
ICs0MzYsNyBAQCBURVNUKFdURl9IYXNoQ291bnRlZFNldCwgUmVmUHRyS2V5X0FkZFVzaW5nUmVs
ZWFzZUtleUFscmVhZHlQcmVzZW50KQogICAgIAogICAgIHsKICAgICAgICAgUmVmUHRyPFJlZkxv
Z2dlcj4gcHRyMigmYSk7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gaGFzaENvdW50ZWRTZXQu
YWRkKHB0cjIucmVsZWFzZSgpKTsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBoYXNoQ291bnRl
ZFNldC5hZGQoV1RGTW92ZShwdHIyKSk7CiAgICAgICAgIEVYUEVDVF9GQUxTRShhZGRSZXN1bHQu
aXNOZXdFbnRyeSk7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9I
YXNoTWFwLmNwcAppbmRleCAyZjA2NjIzYzRhNDhhZmI3NDMwMTE3OWRjMjZiODY1NDRmNmZmZDg1
Li4wOGE0MTRkYmUwMzExMTM3OGRhMjllZWY0MTdhZjhlMTY4MDMwODM1IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoTWFwLmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoTWFwLmNwcApAQCAtMzA5LDcgKzMwOSw3IEBAIFRFU1Qo
V1RGX0hhc2hNYXAsIFJlZlB0cktleV9BZGRVc2luZ1JlbGVhc2UpCiAKICAgICBEZXJpdmVkUmVm
TG9nZ2VyIGEoImEiKTsKICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwdHIoJmEpOwotICAgIG1hcC5h
ZGQocHRyLnJlbGVhc2UoKSwgMCk7CisgICAgbWFwLmFkZChXVEZNb3ZlKHB0ciksIDApOwogCiAg
ICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogfQpAQCAt
MzczLDcgKzM3Myw3IEBAIFRFU1QoV1RGX0hhc2hNYXAsIFJlZlB0cktleV9BZGRVc2luZ1JlbGVh
c2VLZXlBbHJlYWR5UHJlc2VudCkKIAogICAgIHsKICAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4g
cHRyMigmYSk7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbWFwLmFkZChwdHIyLnJlbGVhc2Uo
KSwgMCk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbWFwLmFkZChXVEZNb3ZlKHB0cjIpLCAw
KTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICAgICB9CiAK
QEAgLTQxOSw3ICs0MTksNyBAQCBURVNUKFdURl9IYXNoTWFwLCBSZWZQdHJLZXlfU2V0VXNpbmdS
ZWxlYXNlKQogCiAgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CiAgICAgUmVmUHRyPFJlZkxv
Z2dlcj4gcHRyKCZhKTsKLSAgICBtYXAuc2V0KHB0ci5yZWxlYXNlKCksIDApOworICAgIG1hcC5z
ZXQoV1RGTW92ZShwdHIpLCAwKTsKIAogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpICIsIHRha2VM
b2dTdHIoKS5jX3N0cigpKTsKIH0KQEAgLTQ4MSw3ICs0ODEsNyBAQCBURVNUKFdURl9IYXNoTWFw
LCBSZWZQdHJLZXlfU2V0VXNpbmdSZWxlYXNlS2V5QWxyZWFkeVByZXNlbnQpCiAKICAgICB7CiAg
ICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+IHB0cjIoJmEpOwotICAgICAgICBhdXRvIGFkZFJlc3Vs
dCA9IG1hcC5zZXQocHRyMi5yZWxlYXNlKCksIDEpOworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9
IG1hcC5zZXQoV1RGTW92ZShwdHIyKSwgMSk7CiAgICAgICAgIEVYUEVDVF9GQUxTRShhZGRSZXN1
bHQuaXNOZXdFbnRyeSk7CiAgICAgICAgIEVYUEVDVF9FUSgxLCBtYXAuZ2V0KHB0ci5nZXQoKSkp
OwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281579</attachid>
            <date>2016-06-17 13:08:00 -0700</date>
            <delta_ts>2016-06-17 13:43:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158369-20160617130757.patch</filename>
            <type>text/plain</type>
            <size>296378</size>
            <attacher name="Keith Rollin">krollin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyMTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
YzQyYWM2NmJlMzA5NzZjMDExZGE3NjIzNmM0NWRkMTY4MDZiNmMzLi5mYmNiYWZjMTQ0MDc5NTYw
NjhmZTJlZjVkMzM2ZmU2MjM2NjQ0MmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NSBAQAorMjAxNi0wNi0xNiAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVtb3ZlIFJlZlB0cjo6cmVsZWFzZSgpIGFuZCBjaGFuZ2UgY2FsbHMgc2l0
ZXMgdG8gdXNlIFdURk1vdmUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU4MzY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmVmUHRyOjpyZWxlYXNlKCkgcmVsZWFzZXMgaXRzIG1hbmFnZWQgcG9pbnRl
ciBhd2t3YXJkbHkuIEl0J3MgbW9yZQorICAgICAgICBkaXJlY3QgYW5kIGNsZWFyZXIgdG8gdXNl
IFdURk1vdmUgdG8gdHJhbnNmZXIgb3duZXJzaGlwIG9mIHRoZSBtYW5hZ2VkCisgICAgICAgIHBv
aW50ZXIuCisKKyAgICAgICAgQXMgcGFydCBvZiB0aGlzIGNsZWFudXAsIGFsc28gY2hhbmdlIGEg
bG90IG9mIGV4cGxpY2l0IGRhdGEgdHlwZXMgdG8KKyAgICAgICAgJ2F1dG8nLgorCisgICAgICAg
ICogQVBJL0pTT2JqZWN0UmVmLmNwcDoKKyAgICAgICAgKEpTQ2xhc3NDcmVhdGUpOgorICAgICAg
ICAqIEFQSS9KU1NjcmlwdFJlZi5jcHA6CisgICAgICAgICogQVBJL0pTVmFsdWVSZWYuY3BwOgor
ICAgICAgICAoSlNWYWx1ZVRvU3RyaW5nQ29weSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL1N0
YXRpY1Byb3BlcnR5QW5hbHl6ZXIuaDoKKyAgICAgICAgKEpTQzo6U3RhdGljUHJvcGVydHlBbmFs
eXplcjo6bmV3T2JqZWN0KToKKyAgICAgICAgKEpTQzo6U3RhdGljUHJvcGVydHlBbmFseXplcjo6
bW92KToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHA6CisgICAgICAg
IChKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lOjppbnZhbGlkYXRlKToKKyAgICAgICAgKiBkZmcvREZH
SklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxl
KToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcDoKKyAgICAgICAgKEluc3BlY3Rv
cjo6SW5zcGVjdG9yVmFsdWU6OnBhcnNlSlNPTik6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50
OjphY3RpdmF0ZUV4dHJhRG9tYWluKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdl
bnQ6OmFjdGl2YXRlRXh0cmFEb21haW5zKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uUHJvYmUpOgorICAgICAgICAqIGluc3BlY3Rv
ci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3I6OnJlY2VpdmVkU2V0dXBNZXNzYWdlKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5j
cHA6CisgICAgICAgIChKU0M6OmxpbmtQb2x5bW9ycGhpY0NhbGwpOgorICAgICAgICAqIHJ1bnRp
bWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgICog
cnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25z
dHJ1Y3RBcnJheUJ1ZmZlcik6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5o
OgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU5hbWVBcnJheTo6cmVsZWFzZURhdGEpOgorICAgICAg
ICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b1N0
cnVjdHVyZVNoYXBlKToKKyAgICAgICAgKiBydW50aW1lL1R5cGVTZXQuY3BwOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmVTaGFwZTo6bWVyZ2UpOgorICAgICAgICAqIHRvb2xzL0Z1bmN0aW9uT3Zl
cnJpZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6ZU92ZXJyaWRlSW5mbyk6CisKIDIw
MTYtMDYtMTYgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBj
b2xsZWN0aW5nIG9mIExMSU5UIHNsb3cgcGF0aCBzdGF0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhYjQ3NDBh
MmU1NGZlMjRmOGNjNzI1YWU4ZGI0NzBhNTFlZDEzYWM4Li42Y2ZjMTZkZWEzNzRkZjNhNTc4Nzc5
ZGU0ODdkNjZkNjRlNDYyY2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIwIEBACisyMDE2LTA2
LTE2ICBLZWl0aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUg
UmVmUHRyOjpyZWxlYXNlKCkgYW5kIGNoYW5nZSBjYWxscyBzaXRlcyB0byB1c2UgV1RGTW92ZSgp
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgzNjkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZQdHI6
OnJlbGVhc2UoKSByZWxlYXNlcyBpdHMgbWFuYWdlZCBwb2ludGVyIGF3a3dhcmRseS4gSXQncyBt
b3JlCisgICAgICAgIGRpcmVjdCBhbmQgY2xlYXJlciB0byB1c2UgV1RGTW92ZSB0byB0cmFuc2Zl
ciBvd25lcnNoaXAgb2YgdGhlIG1hbmFnZWQKKyAgICAgICAgcG9pbnRlci4KKworICAgICAgICBB
cyBwYXJ0IG9mIHRoaXMgY2xlYW51cCwgYWxzbyBjaGFuZ2UgYSBsb3Qgb2YgZXhwbGljaXQgZGF0
YSB0eXBlcyB0bworICAgICAgICAnYXV0bycuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzOiB0aGVy
ZSdzIG5vIG5ldyBmdW5jdGlvbmFsaXR5LCBqdXN0IGEgcmVmYWN0b3Jpbmcgb2YKKyAgICAgICAg
ZXhpc3RpbmcgY29kZS4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVm
ZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZVNhbXBsZXNGcm9tVHJhY2tCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpwcm92aWRlTWVkaWFEYXRhKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6c3RhcnQpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6On5E
YXRhYmFzZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxDYWxsYmFja1dyYXBw
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTENhbGxiYWNrV3JhcHBlcjo6Y2xlYXIpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmhhbmRsZVBvc3RNZXNzYWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hpc3RvcnlD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIaXN0b3J5OjpwdXNoU3RhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNIaXN0b3J5OjpyZXBsYWNlU3RhdGUpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZVBv
c3RNZXNzYWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFu
Y2VGb3JXaWRnZXQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZFRlcm1pbmFs
KToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmNvcHlQcm9wZXJ0aWVzSW5TZXQp
OgorICAgICAgICAqIGNzcy9TVkdDU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyOjpwYXJzZVNWR1ZhbHVlKToKKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ29udmVy
dGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRT
aGFwZVZhbHVlKToKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlUHJvcGVydGllczo6Y29weVByb3BlcnRpZXNJblNldCk6CisgICAgICAg
ICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZl
cjo6bG9hZFBlbmRpbmdJbWFnZXMpOgorICAgICAgICAqIGRvbS9JbmxpbmVTdHlsZVNoZWV0T3du
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lU3R5bGVTaGVldE93bmVyOjpjbGVhclNo
ZWV0KToKKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjphcHBseUlubGluZVN0eWxlVG9Ob2RlUmFuZ2Up
OgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlbW92ZUNoaWxkcmVuSW5SYW5nZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVtb3ZlTm9kZUFuZFBydW5l
QW5jZXN0b3JzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjpwcnVu
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVwbGFjZVNlbGVj
dGVkVGV4dEluTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6
cmViYWxhbmNlV2hpdGVzcGFjZU9uVGV4dFN1YnN0cmluZyk6CisgICAgICAgICogZWRpdGluZy9D
cmVhdGVMaW5rQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcmVhdGVMaW5rQ29tbWFu
ZDo6ZG9BcHBseSk6CisgICAgICAgICogZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjptZXJnZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRpbmdTdHlsZTo6bWVyZ2VTdHlsZUZyb21SdWxlc0ZvclNlcmlhbGl6YXRpb24pOgorICAg
ICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsZWFyVGV4dENv
bW1hbmQ6OkNyZWF0ZUFuZEFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya0Fs
bE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyk6CisgICAgICAgICogZWRpdGluZy9F
ZGl0b3JDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVJbnNlcnROb2RlKToK
KyAgICAgICAgKiBlZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc2VydFRleHRDb21tYW5kOjpwZXJmb3JtT3ZlcndyaXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc2VydFRleHRDb21tYW5kOjppbnNlcnRUYWIpOgorICAgICAgICAqIGVkaXRpbmcvUmVt
b3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICAq
IGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVwbGFjZW1lbnRGcmFnbWVudDo6cmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6bW92ZU5vZGVPdXRPZkFuY2Vz
dG9yKToKKyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0
ZSk6CisgICAgICAgICogaHRtbC9IVE1MRm9udEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEZvbnRFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUp
OgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxGb3JtRWxlbWVudDo6cHJlcGFyZUZvclN1Ym1pc3Npb24pOgorICAgICAgICAqIGh0bWwv
SFRNTFRhYmxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsZWFrQm9yZGVyU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6bGVha0dyb3VwQm9yZGVyU3R5bGUpOgorICAgICAgICAqIGh0
bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RG9jdW1lbnRQYXJzZXI6OnJ1blNjcmlwdHNGb3JQYXVzZWRUcmVlQnVpbGRlcik6CisgICAgICAg
ICogaHRtbC90cmFjay9JbmJhbmREYXRhVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkluYmFuZERhdGFUZXh0VHJhY2s6OmFkZERhdGFDdWUpOgorICAgICAgICAqIGh0bWwvdHJhY2sv
SW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5l
cmljVGV4dFRyYWNrOjpuZXdDdWVzUGFyc2VkKToKKyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFu
ZFdlYlZUVFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRXZWJWVFRUZXh0
VHJhY2s6Om5ld0N1ZXNQYXJzZWQpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3Vl
TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVMaXN0OjphZGQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0SW5saW5lU3R5bGVzRm9yTm9kZSk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRPTUFnZW50OjpwdXNoQ2hpbGROb2Rlc1RvRnJvbnRlbmQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3Rvck5ldHdvcmtBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3
b3JrQWdlbnQ6OmxvYWRSZXNvdXJjZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0
eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6YnVp
bGRPYmplY3RGb3JTZWxlY3Rvckxpc3QpOgorICAgICAgICAqIGxvYWRlci9Gb3JtU3VibWlzc2lv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtU3VibWlzc2lvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OmxvYWRVUkxJbnRvQ2hpbGRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6bG9hZFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1
ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlByb2dyZXNzVHJhY2tlcjo6ZmluYWxQcm9ncmVzc0NvbXBsZXRlKToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlzYXNzb2NpYXRlRG9jdW1lbnRMb2FkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2Fk
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2hlY2tJZkxv
YWRJc0NvbXBsZXRlKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OmxvYWRDYWNoZUdyb3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpjYWNoZUdyb3VwRm9yVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlOjpmYWxsYmFja0NhY2hlR3JvdXBGb3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSk6CisgICAgICAgICogbG9hZGVyL2Fy
Y2hpdmUvQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
cmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOjpwb3BTdWJmcmFtZUFyY2hpdmUpOgorICAgICAgICAq
IGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lX
ZWJBcmNoaXZlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6
Y3JlYXRlRnJvbVNlbGVjdGlvbik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjcmVhdGVJbWFnZSk6CisgICAg
ICAgICogbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklj
b25EYXRhYmFzZTo6c2V0SWNvbkRhdGFGb3JJY29uVVJMKToKKyAgICAgICAgKFdlYkNvcmU6Oklj
b25EYXRhYmFzZTo6Z2V0T3JDcmVhdGVJY29uUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6Oklj
b25EYXRhYmFzZTo6cmVhZEZyb21EYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0
YWJhc2U6OmdldEltYWdlRGF0YUZvckljb25VUkxGcm9tU1FMRGF0YWJhc2UpOgorICAgICAgICAq
IHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6c2Vzc2lv
blN0b3JhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpsb2NhbFN0b3JhZ2UpOgor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3ApOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0Nv
bXBvc2l0ZUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVBbmltYXRp
b246OnVwZGF0ZVRyYW5zaXRpb25zKToKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5Ojpy
ZXBvcnRWaW9sYXRpb24pOgorICAgICAgICAqIHBhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRy
b2xsZXIubW06CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpj
cmVhdGVPdmVybGF5SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNPdmVybGF5
Q29udHJvbGxlcjo6ZGV0ZXJtaW5lQWN0aXZlSGlnaGxpZ2h0KToKKyAgICAgICAgKiBwYWdlL3Nj
cm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpB
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZWxlYXNlU2Nyb2xsaW5nVHJlZSk6CisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6Y2xvbmVBbmRSZXNldCk6CisgICAgICAgICogcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGluZ1N0YXRlVHJlZTo6YXR0YWNoTm9kZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJU
RkVsZXZhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRDb25jYXRlbmF0ZWRJbXB1bHNl
UmVzcG9uc2VzRm9yU3ViamVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxh
eVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVm
cmVzaE1vbml0b3JNYW5hZ2VyOjpjcmVhdGVNb25pdG9yRm9yQ2xpZW50KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRDYXNjYWRlRm9udHM6OmdseXBoRGF0YUZvclN5c3RlbUZhbGxiYWNrKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Ri5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9j
ZXNzQXR0cmlidXRlZFN0cmluZ3MpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9NZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDOjp1cGRhdGVPcHRpb25zKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpw
cm9jZXNzQ29kZWRGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhp
Y3NMYXllckNBLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNB
TGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpjcmVhdGVDb21w
YXRpYmxlTGF5ZXJPclRha2VGcm9tUG9vbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJE
YXRhOjpnZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ckVmZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmFzVW5tdWx0aXBs
aWVkSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojphc1ByZW11bHRpcGxp
ZWRJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUZvckN1cnJl
bnRHTENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50
UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjpjcmVhdGVNZWRpYVN0cmVhbSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6dmFsaWRh
dGVSZXF1ZXN0Q29uc3RyYWludHMpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXI6OmNyZWF0ZU1lZGlhU3RyZWFtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlZ2lz
dHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZWdpc3Ry
eUltcGw6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1D
Rk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmb3JtQ3JlYXRlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpZGlDb250ZXh0
Ojpjb3B5U3RhY2tSZW1vdmluZ1VuaWNvZGVFbWJlZGRpbmdDb250ZXh0cyk6CisgICAgICAgICog
cmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZp
bHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjcmVhdGVTY3JvbGxiYXIp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxpc3RCb3g6OmNyZWF0ZVNjcm9sbGJhcik6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlck1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFJlbmRlck1lbnVMaXN0OjpjcmVhdGVTY3Jv
bGxiYXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTZWFyY2hGaWVsZDo6Y3JlYXRlU2Nyb2xsYmFyKToKKyAgICAg
ICAgKiByZXBsYXkvUmVwbGF5Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXBs
YXlDb250cm9sbGVyOjp1bmxvYWRTZWdtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRkVEaWZmdXNl
TGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1l
bnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdMaXN0UHJvcGVydHkuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3RQcm9wZXJ0eTo6Z2V0SXRlbVZhbHVlc0FuZFdyYXBw
ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3RQcm9wZXJ0eTo6aW5zZXJ0SXRlbUJlZm9y
ZVZhbHVlc0FuZFdyYXBwZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3RQcm9wZXJ0eTo6
cmVtb3ZlSXRlbVZhbHVlc0FuZFdyYXBwZXJzKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclRo
cmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OndvcmtlclRocmVhZCk6
CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhN
TEh0dHBSZXF1ZXN0OjppbnRlcm5hbEFib3J0KToKKyAgICAgICAgKiB4bWwvWFBhdGhTdGVwLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpTdGVwOjpub2Rlc0luQXhpcyk6CisKIDIwMTYt
MDYtMTYgIEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24uY29tPgogCiAg
ICAgICAgIFdlYlJUQzogQ2hlY2sgdHlwZSBvZiB0aGlzIGluIFJUQ1BlZXJDb25uZWN0aW9uIEpT
IGJ1aWx0LWluIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2MjgyYWMwMDYxMWMwODRmMTEyNDI4YzMw
NjVlYzZlZDMwOGUyZDMxLi4yOWJiZjg3ZDMyNDVjYTQ4NGQ2ZTY5YzhkODBkNDY0ZmE1NDY4OWM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE2LTA2LTE2ICBLZWl0aCBSb2xsaW4gIDxr
cm9sbGluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgUmVmUHRyOjpyZWxlYXNlKCkgYW5k
IGNoYW5nZSBjYWxscyBzaXRlcyB0byB1c2UgV1RGTW92ZSgpCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgzNjkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZQdHI6OnJlbGVhc2UoKSByZWxlYXNlcyBp
dHMgbWFuYWdlZCBwb2ludGVyIGF3a3dhcmRseS4gSXQncyBtb3JlCisgICAgICAgIGRpcmVjdCBh
bmQgY2xlYXJlciB0byB1c2UgV1RGTW92ZSB0byB0cmFuc2ZlciBvd25lcnNoaXAgb2YgdGhlIG1h
bmFnZWQKKyAgICAgICAgcG9pbnRlci4KKworICAgICAgICBBcyBwYXJ0IG9mIHRoaXMgY2xlYW51
cCwgYWxzbyBjaGFuZ2UgYSBsb3Qgb2YgZXhwbGljaXQgZGF0YSB0eXBlcyB0bworICAgICAgICAn
YXV0bycuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdG9yYWdlQXJlYUltcGw6OnNldEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6
U3RvcmFnZUFyZWFJbXBsOjpyZW1vdmVJdGVtKToKKwogMjAxNi0wNi0xMyAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBXZWJTb2NrZXRQ
cm92aWRlciBzdHViCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggNzU3ZDJhMDQyMzU3NmQ4NDEzNDgyYTc1
YjM1ZTA4ZGM2OTlmMmU1Mi4uYjRhMjMxMmY4Y2JlZTAwYjExNzk2YWU3OWZkYjRmNTFiM2JlYmJk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE2LTA2LTE2ICBLZWl0aCBS
b2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgUmVmUHRyOjpyZWxl
YXNlKCkgYW5kIGNoYW5nZSBjYWxscyBzaXRlcyB0byB1c2UgV1RGTW92ZSgpCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgzNjkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZQdHI6OnJlbGVhc2UoKSBy
ZWxlYXNlcyBpdHMgbWFuYWdlZCBwb2ludGVyIGF3a3dhcmRseS4gSXQncyBtb3JlCisgICAgICAg
IGRpcmVjdCBhbmQgY2xlYXJlciB0byB1c2UgV1RGTW92ZSB0byB0cmFuc2ZlciBvd25lcnNoaXAg
b2YgdGhlIG1hbmFnZWQKKyAgICAgICAgcG9pbnRlci4KKworICAgICAgICBBcyBwYXJ0IG9mIHRo
aXMgY2xlYW51cCwgYWxzbyBjaGFuZ2UgYSBsb3Qgb2YgZXhwbGljaXQgZGF0YSB0eXBlcyB0bwor
ICAgICAgICAnYXV0bycuCisKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdp
bkhvc3RNYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkhvc3RNYW5h
Z2VyOjppbnN0YW50aWF0ZVBsdWdpbik6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHk6OmRlbWFyc2hhbFZhbHVlRnJvbUFycmF5KToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKC1bV2ViRnJh
bWVQb2xpY3lMaXN0ZW5lciByZWNlaXZlZFBvbGljeURlY2lzaW9uOl0pOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tOgorICAgICAgICAoLVtXZWJTZWN1cml0
eU9yaWdpbiBpbml0V2l0aFVSTDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkFyY2hpdmUubW06
CisgICAgICAgICgtW1dlYkFyY2hpdmUgaW5pdFdpdGhNYWluUmVzb3VyY2U6c3VicmVzb3VyY2Vz
OnN1YmZyYW1lQXJjaGl2ZXM6XSk6CisgICAgICAgICgtW1dlYkFyY2hpdmUgaW5pdFdpdGhEYXRh
Ol0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbToKKyAgICAgICAgKC1bV2Vi
RGF0YVNvdXJjZSBtYWluUmVzb3VyY2VdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1t
OgorICAgICAgICAoLVtXZWJGcmFtZSBfZG9jdW1lbnRGcmFnbWVudFdpdGhOb2Rlc0FzUGFyYWdy
YXBoczpdKToKKwogMjAxNi0wNi0xNSAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNv
bT4KIAogICAgICAgICArW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBzdXBwb3J0ZWRNSU1FVHlwZXNd
IGxlYWtzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggZGZiY2M5Y2Y2NzYzMDhhZGI1YjhhZTcyMjQ3YWY0MWQ0M2Rk
NmM1Ni4uNDIxMGZhNWVmNDBmMjUwNzM1ZWJhNThkMGJkZjgyYjhiZjM2NWNmMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI1MSBAQAorMjAxNi0wNi0xNiAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFJlZlB0cjo6cmVsZWFzZSgpIGFuZCBjaGFuZ2Ug
Y2FsbHMgc2l0ZXMgdG8gdXNlIFdURk1vdmUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MzY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmVmUHRyOjpyZWxlYXNlKCkgcmVsZWFzZXMgaXRzIG1hbmFn
ZWQgcG9pbnRlciBhd2t3YXJkbHkuIEl0J3MgbW9yZQorICAgICAgICBkaXJlY3QgYW5kIGNsZWFy
ZXIgdG8gdXNlIFdURk1vdmUgdG8gdHJhbnNmZXIgb3duZXJzaGlwIG9mIHRoZSBtYW5hZ2VkCisg
ICAgICAgIHBvaW50ZXIuCisKKyAgICAgICAgQXMgcGFydCBvZiB0aGlzIGNsZWFudXAsIGFsc28g
Y2hhbmdlIGEgbG90IG9mIGV4cGxpY2l0IGRhdGEgdHlwZXMgdG8KKyAgICAgICAgJ2F1dG8nLgor
CisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzczo6Y3JlYXRlRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25u
ZWN0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6Omlu
aXRpYWxpemVTaGFyZWFibGVSZXNvdXJjZUhhbmRsZUZyb21TdG9yYWdlUmVjb3JkKToKKyAgICAg
ICAgKiBQbGF0Zm9ybS9tYWMvU2hhcmVkTWVtb3J5TWFjLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
U2hhcmVkTWVtb3J5OjphbGxvY2F0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5OjptYXApOgorICAgICAgICAq
IFBsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdp
blByb2Nlc3M6OmNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKiBTaGFyZWQv
QVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW06CisgICAgICAgIChlbmNvZGVUb09iamVj
dFN0cmVhbSk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLSW1hZ2UuY3BwOgorICAgICAgICAo
V0tJbWFnZUNyZWF0ZSk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLTnVtYmVyLmNwcDoKKyAg
ICAgICAgKFdLQm9vbGVhbkNyZWF0ZSk6CisgICAgICAgIChXS0RvdWJsZUNyZWF0ZSk6CisgICAg
ICAgIChXS1VJbnQ2NENyZWF0ZSk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLU2VjdXJpdHlP
cmlnaW5SZWYuY3BwOgorICAgICAgICAoV0tTZWN1cml0eU9yaWdpbkNyZWF0ZSk6CisgICAgICAg
ICogU2hhcmVkL0FQSS9jL1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdL
U2VyaWFsaXplZFNjcmlwdFZhbHVlQ3JlYXRlKToKKyAgICAgICAgKFdLU2VyaWFsaXplZFNjcmlw
dFZhbHVlQ3JlYXRlV2l0aEludGVybmFsUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFNoYXJl
ZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwOgorICAgICAgICAoV0tJbWFnZUNyZWF0ZUZy
b21DYWlyb1N1cmZhY2UpOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3Bw
OgorICAgICAgICAoV0tJbWFnZUNyZWF0ZUZyb21DR0ltYWdlKToKKyAgICAgICAgKiBTaGFyZWQv
QVBJL2MvbWFjL1dLQ2VydGlmaWNhdGVJbmZvTWFjLm1tOgorICAgICAgICAoV0tDZXJ0aWZpY2F0
ZUluZm9DcmVhdGVXaXRoQ2VydGZpY2F0ZUNoYWluKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2Mv
bWFjL1dLT2JqQ1R5cGVXcmFwcGVyUmVmLm1tOgorICAgICAgICAoV0tPYmpDVHlwZVdyYXBwZXJD
cmVhdGUpOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9tYWMvV0tXZWJBcmNoaXZlLmNwcDoKKyAg
ICAgICAgKFdLV2ViQXJjaGl2ZUNyZWF0ZSk6CisgICAgICAgIChXS1dlYkFyY2hpdmVDcmVhdGVX
aXRoRGF0YSk6CisgICAgICAgIChXS1dlYkFyY2hpdmVDcmVhdGVGcm9tUmFuZ2UpOgorICAgICAg
ICAoV0tXZWJBcmNoaXZlQ29weU1haW5SZXNvdXJjZSk6CisgICAgICAgIChXS1dlYkFyY2hpdmVD
b3B5U3VicmVzb3VyY2VzKToKKyAgICAgICAgKFdLV2ViQXJjaGl2ZUNvcHlTdWJmcmFtZUFyY2hp
dmVzKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvbWFjL1dLV2ViQXJjaGl2ZVJlc291cmNlLmNw
cDoKKyAgICAgICAgKFdLV2ViQXJjaGl2ZVJlc291cmNlQ3JlYXRlKToKKyAgICAgICAgKiBTaGFy
ZWQvQVBJV2ViQXJjaGl2ZS5tbToKKyAgICAgICAgKEFQSTo6V2ViQXJjaGl2ZTo6V2ViQXJjaGl2
ZSk6CisgICAgICAgICogU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1
bGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0T3JDcmVh
dGUpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZSk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJs
ZVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6Om1hcCk6
CisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHA6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+OjpkZWNvZGUpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9Db29yZGluYXRlZEdyYXBoaWNzL1dLVmlldy5jcHA6CisgICAgICAgIChXS1ZpZXdD
cmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0JhdHRlcnlTdGF0dXMuY3BwOgor
ICAgICAgICAoV0tCYXR0ZXJ5U3RhdHVzQ3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tHZW9sb2NhdGlvblBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdLR2VvbG9jYXRpb25Qb3Np
dGlvbkNyZWF0ZV9iKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tHcmFtbWFyRGV0YWls
LmNwcDoKKyAgICAgICAgKFdLR3JhbW1hckRldGFpbENyZWF0ZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VDb3B5U2Vzc2lvblN0YXRlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwOgorICAgICAgICAoV0tQ
YWdlR3JvdXBDcmVhdGVXaXRoSWRlbnRpZmllcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV0tQcmVmZXJlbmNlc0NyZWF0ZSk6CisgICAg
ICAgIChXS1ByZWZlcmVuY2VzQ3JlYXRlV2l0aElkZW50aWZpZXIpOgorICAgICAgICAoV0tQcmVm
ZXJlbmNlc0NyZWF0ZUNvcHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1Nlc3Npb25S
ZWYuY3BwOgorICAgICAgICAoV0tTZXNzaW9uQ3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tTZXNzaW9uU3RhdGVSZWYuY3BwOgorICAgICAgICAoV0tTZXNzaW9uU3RhdGVDb3B5
RGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFj
Lm1tOgorICAgICAgICAoV0tDb250ZXh0Q29weVBsdWdJbkluZm9Gb3JCdW5kbGVJZGVudGlmaWVy
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IGxvYWRSZXF1ZXN0Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgbG9hZEZp
bGVVUkw6YWxsb3dpbmdSZWFkQWNjZXNzVG9VUkw6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBs
b2FkRGF0YTpNSU1FVHlwZTpjaGFyYWN0ZXJFbmNvZGluZ05hbWU6YmFzZVVSTDpdKToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IGdvVG9CYWNrRm9yd2FyZExpc3RJdGVtOl0pOgorICAgICAgICAoLVtX
S1dlYlZpZXcgZ29CYWNrXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBnb0ZvcndhcmRdKToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IHJlbG9hZF0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgcmVsb2Fk
RnJvbU9yaWdpbl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2xvYWREYXRhOk1JTUVUeXBlOmNo
YXJhY3RlckVuY29kaW5nTmFtZTpiYXNlVVJMOnVzZXJEYXRhOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX3JlbG9hZFdpdGhvdXRDb250ZW50QmxvY2tlcnNdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF9zZXNzaW9uU3RhdGVEYXRhXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVzdG9yZVNl
c3Npb25TdGF0ZTphbmROYXZpZ2F0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfZGF0YWJhc2VfbWFuYWdlci5jcHA6CisgICAgICAgIChFd2tEYXRhYmFzZU1hbmFnZXI6OmNy
ZWF0ZU9yaWdpbkxpc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19zdG9yYWdl
X21hbmFnZXIuY3BwOgorICAgICAgICAoRXdrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZU9yaWdpbkxp
c3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOgorICAg
ICAgICAod2Via2l0V2ViVmlld0NyZWF0ZU5ld1BhZ2UpOgorICAgICAgICAod2Via2l0V2ViVmll
d1ByaW50RnJhbWUpOgorICAgICAgICAoZ2V0Q29udGVudHNBc01IVE1MRGF0YUNhbGxiYWNrKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvU2Vzc2lvblN0YXRlQ29kaW5nLm1tOgorICAgICAg
ICAoV2ViS2l0OjplbmNvZGVTZXNzaW9uU3RhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9HZW5l
cmljQ2FsbGJhY2suaDoKKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tNYXA6OnRha2UpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eTo6Y3JlYXRlUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eTo6Y3JlYXRlUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJvY2Vzc01hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNz
TWFuYWdlcjo6Z2V0T3JDcmVhdGVQbHVnaW5Qcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
U3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5h
Z2VyOjpTdG9yYWdlQXJlYTo6c2V0SXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5h
Z2VyOjpTdG9yYWdlQXJlYTo6cmVtb3ZlSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VN
YW5hZ2VyOjpjcmVhdGVMb2NhbFN0b3JhZ2VNYXApOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJC
YWNrRm9yd2FyZExpc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6
OmFkZEl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6OmNsZWFyKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENvb2tpZUFj
Y2VwdFBvbGljeSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5zdGFsbFZpZXdTdGF0ZUNoYW5nZUNvbXBsZXRp
b25IYW5kbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcmVmZXJlbmNlczo6Y3JlYXRlV2l0aExlZ2FjeURlZmF1bHRzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJlZmVyZW5jZXM6OmNvcHkpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
Ojp+V2ViUHJvY2Vzc1Bvb2wpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90
U3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdFN0b3JlOjpyZWNvcmRTbmFw
c2hvdCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xs
ZXIubW06CisgICAgICAgICgtW1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciBfd2ViSGl0VGVz
dFJlc3VsdF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcubW06Cisg
ICAgICAgICgtW1dLUHJpbnRpbmdWaWV3IF9hc2tQYWdlVG9Db21wdXRlUGFnZVJlY3RzXSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2V0RHJhZ0ltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5tbToKKyAgICAg
ICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUgaGl0VGVzdDpdKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0
UmVzdWx0Lm1tOgorICAgICAgICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0IG5v
ZGVIYW5kbGVdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2Nv
YS9XS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tOgorICAgICAgICAoK1tXS1dlYlByb2Nl
c3NQbHVnSW5Ob2RlSGFuZGxlIG5vZGVIYW5kbGVXaXRoSlNWYWx1ZTppbkNvbnRleHQ6XSk6Cisg
ICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUgaHRtbElGcmFtZUVsZW1lbnRD
b250ZW50RnJhbWVdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9D
b2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZC5tbToKKyAgICAgICAgKCtbV0tXZWJQ
cm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgd29ybGRdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUG9zdFN5
bmNocm9ub3VzTWVzc2FnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5jcHA6CisgICAgICAgIChXS0J1bmRsZURP
TVdpbmRvd0V4dGVuc2lvbkNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZUhpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV0tCdW5kbGVI
aXRUZXN0UmVzdWx0Q29weU5vZGVIYW5kbGUpOgorICAgICAgICAoV0tCdW5kbGVIaXRUZXN0UmVz
dWx0Q29weVVSTEVsZW1lbnRIYW5kbGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcDoKKyAgICAgICAgKFdLQnVu
ZGxlTmF2aWdhdGlvbkFjdGlvbkNvcHlIaXRUZXN0UmVzdWx0KToKKyAgICAgICAgKFdLQnVuZGxl
TmF2aWdhdGlvbkFjdGlvbkNvcHlGb3JtRWxlbWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5vZGVIYW5kbGUuY3BwOgorICAgICAgICAoV0tC
dW5kbGVOb2RlSGFuZGxlQ3JlYXRlKToKKyAgICAgICAgKFdLQnVuZGxlTm9kZUhhbmRsZUNvcHlE
b2N1bWVudCk6CisgICAgICAgIChXS0J1bmRsZU5vZGVIYW5kbGVDb3B5U25hcHNob3RXaXRoT3B0
aW9ucyk6CisgICAgICAgIChXS0J1bmRsZU5vZGVIYW5kbGVDb3B5VmlzaWJsZVJhbmdlKToKKyAg
ICAgICAgKFdLQnVuZGxlTm9kZUhhbmRsZUNvcHlIVE1MVGFibGVDZWxsRWxlbWVudENlbGxBYm92
ZSk6CisgICAgICAgIChXS0J1bmRsZU5vZGVIYW5kbGVDb3B5RG9jdW1lbnRGcmFtZSk6CisgICAg
ICAgIChXS0J1bmRsZU5vZGVIYW5kbGVDb3B5SFRNTEZyYW1lRWxlbWVudENvbnRlbnRGcmFtZSk6
CisgICAgICAgIChXS0J1bmRsZU5vZGVIYW5kbGVDb3B5SFRNTElGcmFtZUVsZW1lbnRDb250ZW50
RnJhbWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVQYWdlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUGFnZUNyZWF0ZVNuYXBzaG90V2l0aE9wdGlv
bnMpOgorICAgICAgICAoV0tCdW5kbGVQYWdlQ3JlYXRlU25hcHNob3RJblZpZXdDb29yZGluYXRl
cyk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VDcmVhdGVTbmFwc2hvdEluRG9jdW1lbnRDb29yZGlu
YXRlcyk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VDcmVhdGVTY2FsZWRTbmFwc2hvdEluRG9jdW1l
bnRDb29yZGluYXRlcyk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNz
YWdlRm9yVGVzdGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZVJhbmdlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUmFuZ2VIYW5kbGVD
cmVhdGUpOgorICAgICAgICAoV0tCdW5kbGVSYW5nZUhhbmRsZUNvcHlTbmFwc2hvdFdpdGhPcHRp
b25zKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
U2NyaXB0V29ybGQuY3BwOgorICAgICAgICAoV0tCdW5kbGVTY3JpcHRXb3JsZENyZWF0ZVdvcmxk
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Ob2Rl
Lm1tOgorICAgICAgICAoLVtXS0RPTU5vZGUgX2NvcHlCdW5kbGVOb2RlSGFuZGxlUmVmXSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW06
CisgICAgICAgICgtW1dLRE9NUmFuZ2UgX2NvcHlCdW5kbGVSYW5nZUhhbmRsZVJlZl0pOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5
bGVEZWNsYXJhdGlvbkhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxl
Q1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZTo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OmltYWdlRm9yUmVjdCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVk
QnVuZGxlTm9kZUhhbmRsZTo6cmVuZGVyZWRJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmdldE9yQ3JlYXRlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0c2NhcGVQbHVnaW46OmxvYWRVUkwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvRGVwcmVjYXRlZFBERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpj
cmVhdGVTY3JvbGxiYXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlQXJl
YU1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjphcHBseUNoYW5nZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJz
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6dG9Gb3JtRGF0YSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6cmVjcmVhdGVQbHVnaW4pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVOZXR3b3JraW5nQ29udGV4
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JDbGllbnQ6OmhpZ2hsaWdodCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1h
Yy5tbToKKyAgICAgICAgKFdlYktpdDo6Y29udmVydEltYWdlVG9CaXRtYXApOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kVUlBZnRlclBhZ2VTY3JvbGwpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyOjpnZXRPckNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyOjpzZXRWaXNpdGVkTGlu
a1RhYmxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6Y3JlYXRlV2l0aENvcmVNYWluRnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJGcmFtZTo6Y3JlYXRlU3ViZnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGcmFtZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNyZWF0ZVNlbGVj
dGlvblNuYXBzaG90KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNyZWF0ZVBsdWdpbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnNuYXBzaG90QXRTaXplKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
c25hcHNob3ROb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6d2lsbFBlcmZvcm1Mb2Fk
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6U2FuZGJv
eEV4dGVuc2lvblRyYWNrZXI6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6U2FuZGJveEV4dGVuc2lvblRyYWNrZXI6OmRpZENvbW1pdFByb3Zpc2lv
bmFsTG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZUdyb3VwUHJveHk6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tOgorICAgICAgICAo
V2ViS2l0OjpQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpQcm9wZXJ0aWVzOjpkZWNvZGUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNsb25lKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbToKKyAg
ICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OmNsb25lKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1t
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6Y3JlYXRlRGlz
cGxheVJlZnJlc2hNb25pdG9yKToKKwogMjAxNi0wNi0xNSAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TIFdLMl0gT24gaVBhZCwgaW5kaXJlY3Qg
Zm9jdXNzaW5nIG9mIGEgdGV4dCBmaWVsZCBkb2Vzbid0IGFsd2F5cyBzY3JvbGwgdG8gdGhlIGNv
cnJlY3QgbG9jYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNP
YmplY3RSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAK
aW5kZXggMzdjZDY1NzMyMzcwMDg1MWIyNTc5ZDY0MzZiNDEzNTMzNTNlOGQyZS4uYzFkZGMzMjcx
Zjc4NTI0ZDc3MWE2NGQxYjVjZDZmZDE4OWM4OTFjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU09iamVjdFJlZi5jcHAKQEAgLTY2LDExICs2NiwxMSBAQCB1c2luZyBuYW1lc3BhY2Ug
SlNDOwogSlNDbGFzc1JlZiBKU0NsYXNzQ3JlYXRlKGNvbnN0IEpTQ2xhc3NEZWZpbml0aW9uKiBk
ZWZpbml0aW9uKQogewogICAgIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKLSAgICBSZWZQdHI8T3Bh
cXVlSlNDbGFzcz4ganNDbGFzcyA9IChkZWZpbml0aW9uLT5hdHRyaWJ1dGVzICYga0pTQ2xhc3NB
dHRyaWJ1dGVOb0F1dG9tYXRpY1Byb3RvdHlwZSkKKyAgICBhdXRvIGpzQ2xhc3MgPSAoZGVmaW5p
dGlvbi0+YXR0cmlidXRlcyAmIGtKU0NsYXNzQXR0cmlidXRlTm9BdXRvbWF0aWNQcm90b3R5cGUp
CiAgICAgICAgID8gT3BhcXVlSlNDbGFzczo6Y3JlYXRlTm9BdXRvbWF0aWNQcm90b3R5cGUoZGVm
aW5pdGlvbikKICAgICAgICAgOiBPcGFxdWVKU0NsYXNzOjpjcmVhdGUoZGVmaW5pdGlvbik7CiAg
ICAgCi0gICAgcmV0dXJuIGpzQ2xhc3MucmVsZWFzZSgpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4g
JmpzQ2xhc3MubGVha1JlZigpOwogfQogCiBKU0NsYXNzUmVmIEpTQ2xhc3NSZXRhaW4oSlNDbGFz
c1JlZiBqc0NsYXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1Nj
cmlwdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcApp
bmRleCA2MGJkZTYwNGUzNTg1MTZmMWVmNmNhYTIzZDgxMjQ4OTJjY2ZhOTU1Li44M2QxZmU2MmYx
MGEyZDA5MjkzMTBiZjM4YWVmMjYyZGJiZTJjM2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTU2NyaXB0UmVmLmNwcApAQCAtOTMsNyArOTMsNyBAQCBKU1NjcmlwdFJlZiBKU1Njcmlw
dENyZWF0ZVJlZmVyZW5jaW5nSW1tb3J0YWxBU0NJSVRleHQoSlNDb250ZXh0R3JvdXBSZWYgY29u
dGV4dAogCiAgICAgc3RhcnRpbmdMaW5lTnVtYmVyID0gc3RkOjptYXgoMSwgc3RhcnRpbmdMaW5l
TnVtYmVyKTsKIAotICAgIFJlZlB0cjxPcGFxdWVKU1NjcmlwdD4gcmVzdWx0ID0gT3BhcXVlSlNT
Y3JpcHQ6OmNyZWF0ZSh2bSwgdXJsID8gdXJsLT5zdHJpbmcoKSA6IFN0cmluZygpLCBzdGFydGlu
Z0xpbmVOdW1iZXIsIFN0cmluZyhTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbChzb3VyY2Us
IGxlbmd0aCkpKTsKKyAgICBhdXRvIHJlc3VsdCA9IE9wYXF1ZUpTU2NyaXB0OjpjcmVhdGUodm0s
IHVybCA/IHVybC0+c3RyaW5nKCkgOiBTdHJpbmcoKSwgc3RhcnRpbmdMaW5lTnVtYmVyLCBTdHJp
bmcoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoc291cmNlLCBsZW5ndGgpKSk7CiAKICAg
ICBQYXJzZXJFcnJvciBlcnJvcjsKICAgICBpZiAoIXBhcnNlU2NyaXB0KHZtLCBTb3VyY2VDb2Rl
KHJlc3VsdCksIGVycm9yKSkgewpAQCAtMTA0LDcgKzEwNCw3IEBAIEpTU2NyaXB0UmVmIEpTU2Ny
aXB0Q3JlYXRlUmVmZXJlbmNpbmdJbW1vcnRhbEFTQ0lJVGV4dChKU0NvbnRleHRHcm91cFJlZiBj
b250ZXh0CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiByZXN1
bHQucmVsZWFzZSgpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gcmVzdWx0LmxlYWtSZWYoKTsKIH0K
IAogSlNTY3JpcHRSZWYgSlNTY3JpcHRDcmVhdGVGcm9tU3RyaW5nKEpTQ29udGV4dEdyb3VwUmVm
IGNvbnRleHRHcm91cCwgSlNTdHJpbmdSZWYgdXJsLCBpbnQgc3RhcnRpbmdMaW5lTnVtYmVyLCBK
U1N0cmluZ1JlZiBzb3VyY2UsIEpTU3RyaW5nUmVmKiBlcnJvck1lc3NhZ2UsIGludCogZXJyb3JM
aW5lKQpAQCAtMTE0LDcgKzExNCw3IEBAIEpTU2NyaXB0UmVmIEpTU2NyaXB0Q3JlYXRlRnJvbVN0
cmluZyhKU0NvbnRleHRHcm91cFJlZiBjb250ZXh0R3JvdXAsIEpTU3RyaW5nUmVmCiAKICAgICBz
dGFydGluZ0xpbmVOdW1iZXIgPSBzdGQ6Om1heCgxLCBzdGFydGluZ0xpbmVOdW1iZXIpOwogCi0g
ICAgUmVmUHRyPE9wYXF1ZUpTU2NyaXB0PiByZXN1bHQgPSBPcGFxdWVKU1NjcmlwdDo6Y3JlYXRl
KHZtLCB1cmwgPyB1cmwtPnN0cmluZygpIDogU3RyaW5nKCksIHN0YXJ0aW5nTGluZU51bWJlciwg
c291cmNlLT5zdHJpbmcoKSk7CisgICAgYXV0byByZXN1bHQgPSBPcGFxdWVKU1NjcmlwdDo6Y3Jl
YXRlKHZtLCB1cmwgPyB1cmwtPnN0cmluZygpIDogU3RyaW5nKCksIHN0YXJ0aW5nTGluZU51bWJl
ciwgc291cmNlLT5zdHJpbmcoKSk7CiAKICAgICBQYXJzZXJFcnJvciBlcnJvcjsKICAgICBpZiAo
IXBhcnNlU2NyaXB0KHZtLCBTb3VyY2VDb2RlKHJlc3VsdCksIGVycm9yKSkgewpAQCAtMTI1LDcg
KzEyNSw3IEBAIEpTU2NyaXB0UmVmIEpTU2NyaXB0Q3JlYXRlRnJvbVN0cmluZyhKU0NvbnRleHRH
cm91cFJlZiBjb250ZXh0R3JvdXAsIEpTU3RyaW5nUmVmCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIAotICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpLmxlYWtSZWYoKTsKKyAgICBy
ZXR1cm4gcmVzdWx0LmxlYWtSZWYoKTsKIH0KIAogdm9pZCBKU1NjcmlwdFJldGFpbihKU1Njcmlw
dFJlZiBzY3JpcHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFs
dWVSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAppbmRl
eCAwZDNiZWYwMjE5ZGJjZjFjMDc1NjViYTY0Y2YzZmUwYzYxNmE3YjViLi40Mjg0MzUwZmE3MTVj
NjVjMjI3MDcyY2ZiZTg2OWMzNzdiM2MzOWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNWYWx1ZVJlZi5jcHAKQEAgLTQwMSwxMCArNDAxLDEwIEBAIEpTU3RyaW5nUmVmIEpTVmFsdWVU
b1N0cmluZ0NvcHkoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJl
ZioKIAogICAgIEpTVmFsdWUganNWYWx1ZSA9IHRvSlMoZXhlYywgdmFsdWUpOwogICAgIAotICAg
IFJlZlB0cjxPcGFxdWVKU1N0cmluZz4gc3RyaW5nUmVmKE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUo
anNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICBhdXRvIHN0cmluZ1Jl
ZihPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKGpzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpKSk7CiAgICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKGV4ZWMsIGV4Y2VwdGlvbikg
PT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKICAgICAgICAgc3RyaW5nUmVmID0gbnVsbHB0
cjsKLSAgICByZXR1cm4gc3RyaW5nUmVmLnJlbGVhc2UoKS5sZWFrUmVmKCk7CisgICAgcmV0dXJu
IHN0cmluZ1JlZi5sZWFrUmVmKCk7CiB9CiAKIEpTT2JqZWN0UmVmIEpTVmFsdWVUb09iamVjdChK
U0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1N0YXRpY1By
b3BlcnR5QW5hbHl6ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvU3Rh
dGljUHJvcGVydHlBbmFseXplci5oCmluZGV4IGU2M2ZlZjg2YTEwN2M4ZTQ4MDhmYmIwMDAwZmQz
ZWQ1N2E4MzhhOGUuLjFlYzEyOWU4OTg1YzdhNjBlOWFhYmNlOGM3NTFjYWFhNTViN2Y2MDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvU3RhdGljUHJvcGVy
dHlBbmFseXplci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvU3Rh
dGljUHJvcGVydHlBbmFseXplci5oCkBAIC03Miw3ICs3Miw3IEBAIGlubGluZSB2b2lkIFN0YXRp
Y1Byb3BlcnR5QW5hbHl6ZXI6Om5ld09iamVjdChpbnQgZHN0LCB1bnNpZ25lZCBvZmZzZXRPZklu
bGluZUNhCiAgICAgQW5hbHlzaXNNYXA6OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBtX2FuYWx5c2Vz
LmFkZChkc3QsIGFuYWx5c2lzKTsKICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KSB7CiAg
ICAgICAgIGtpbGwoYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKSk7Ci0gICAgICAgIGFk
ZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBhbmFseXNpcy5yZWxlYXNlKCk7CisgICAgICAgIGFk
ZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBXVEZNb3ZlKGFuYWx5c2lzKTsKICAgICB9CiB9CiAK
QEAgLTk1LDcgKzk1LDcgQEAgaW5saW5lIHZvaWQgU3RhdGljUHJvcGVydHlBbmFseXplcjo6bW92
KGludCBkc3QsIGludCBzcmMpCiAgICAgQW5hbHlzaXNNYXA6OkFkZFJlc3VsdCBhZGRSZXN1bHQg
PSBtX2FuYWx5c2VzLmFkZChkc3QsIGFuYWx5c2lzKTsKICAgICBpZiAoIWFkZFJlc3VsdC5pc05l
d0VudHJ5KSB7CiAgICAgICAgIGtpbGwoYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKSk7
Ci0gICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBhbmFseXNpcy5yZWxlYXNlKCk7
CisgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBXVEZNb3ZlKGFuYWx5c2lzKTsK
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlckNhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJDYWxsRnJhbWUuY3BwCmluZGV4IGE4YzU1N2M3NDczMWYyYjZhMzMzMTc1MTYwY2EzMzQ4
ZDIxNTIyYmIuLmZiODYzNjhhMzk0OGI2ZjhlMzVhMWVkNDZiNTM4MzFhYzNiMWVkZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1l
LmNwcApAQCAtMjc4LDcgKzI3OCw3IEBAIHZvaWQgRGVidWdnZXJDYWxsRnJhbWU6OmludmFsaWRh
dGUoKQogICAgICAgICAgICAgZnJhbWUtPm1fc2NvcGUtPmludmFsaWRhdGVDaGFpbigpOwogICAg
ICAgICAgICAgZnJhbWUtPm1fc2NvcGUuY2xlYXIoKTsKICAgICAgICAgfQotICAgICAgICBmcmFt
ZSA9IGZyYW1lLT5tX2NhbGxlci5yZWxlYXNlKCk7CisgICAgICAgIGZyYW1lID0gV1RGTW92ZShm
cmFtZS0+bV9jYWxsZXIpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmNwcAppbmRleCAxN2M2YTBiODUyYTIyMWVlYTY4ODMxZTYwZDMzM2U5
MTZiOTg5YjI0Li45MDA2MzA4YTQzMTY3ZTIxNjAzMjkyZmYxOGY1NDk1ODcxMDllOGQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcApAQCAtMzgxLDcg
KzM4MSw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQogICAgIGRpc2Fzc2VtYmxlKCps
aW5rQnVmZmVyKTsKICAgICAKICAgICBtX2dyYXBoLm1fcGxhbi5maW5hbGl6ZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEpJVEZpbmFsaXplcj4oCi0gICAgICAgIG1fZ3JhcGgubV9wbGFuLCBtX2ppdENv
ZGUucmVsZWFzZSgpLCBXVEZNb3ZlKGxpbmtCdWZmZXIpKTsKKyAgICAgICAgbV9ncmFwaC5tX3Bs
YW4sIFdURk1vdmUobV9qaXRDb2RlKSwgV1RGTW92ZShsaW5rQnVmZmVyKSk7CiB9CiAKIHZvaWQg
SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCkBAIC00NzgsNyArNDc4LDcgQEAgdm9pZCBK
SVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIg
d2l0aEFyaXR5Q2hlY2sgPSBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKG1fYXJpdHlDaGVjayk7CiAK
ICAgICBtX2dyYXBoLm1fcGxhbi5maW5hbGl6ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEpJVEZpbmFs
aXplcj4oCi0gICAgICAgIG1fZ3JhcGgubV9wbGFuLCBtX2ppdENvZGUucmVsZWFzZSgpLCBXVEZN
b3ZlKGxpbmtCdWZmZXIpLCB3aXRoQXJpdHlDaGVjayk7CisgICAgICAgIG1fZ3JhcGgubV9wbGFu
LCBXVEZNb3ZlKG1faml0Q29kZSksIFdURk1vdmUobGlua0J1ZmZlciksIHdpdGhBcml0eUNoZWNr
KTsKIH0KIAogdm9pZCBKSVRDb21waWxlcjo6ZGlzYXNzZW1ibGUoTGlua0J1ZmZlciYgbGlua0J1
ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yVmFsdWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
VmFsdWVzLmNwcAppbmRleCBjNWMxMTYzNGJmNjI4MTUyNDUzNzNmMzBjNjE0NWYyZmEzOTFjMjI1
Li41Njk0OGZhMzEzZjJlNmM4ZTA5ZmFlNGQ3NWNmOTkyOTQ2OGY4MTlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCkBAIC00
NTksNyArNDU5LDcgQEAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBidWlsZFZhbHVlKGNvbnN0IFVD
aGFyKiBzdGFydCwgY29uc3QgVUNoYXIqIGVuZCwgY29uc3QgVUMKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogICAgICp2YWx1ZVRva2VuRW5kID0gdG9rZW5FbmQ7Ci0gICAgcmV0dXJu
IHJlc3VsdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogaW5saW5lIGJvb2wg
ZXNjYXBlQ2hhcihVQ2hhciBjLCBTdHJpbmdCdWlsZGVyJiBkc3QpCkBAIC01NTEsMTEgKzU1MSwx
MSBAQCBib29sIEluc3BlY3RvclZhbHVlOjpwYXJzZUpTT04oY29uc3QgU3RyaW5nJiBqc29uSW5w
dXQsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4mCiAgICAgY29uc3QgVUNoYXIqIHN0YXJ0ID0gY2hh
cmFjdGVyczsKICAgICBjb25zdCBVQ2hhciogZW5kID0gc3RhcnQgKyBqc29uSW5wdXQubGVuZ3Ro
KCk7CiAgICAgY29uc3QgVUNoYXIqIHRva2VuRW5kOwotICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1
ZT4gcmVzdWx0ID0gYnVpbGRWYWx1ZShzdGFydCwgZW5kLCAmdG9rZW5FbmQsIDApOworICAgIGF1
dG8gcmVzdWx0ID0gYnVpbGRWYWx1ZShzdGFydCwgZW5kLCAmdG9rZW5FbmQsIDApOwogICAgIGlm
ICghcmVzdWx0IHx8IHRva2VuRW5kICE9IGVuZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgb3V0cHV0ID0gcmVzdWx0LnJlbGVhc2UoKTsKKyAgICBvdXRwdXQgPSBXVEZNb3ZlKHJlc3Vs
dCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcAppbmRleCAzMTJlNWQ5
YjRiMWNmODllNzc0MGZhZDY2NTI3MjEzZDBiZTNlNDFmLi5mNjRiYWYzZDMwNzc3YmY3OTZmMzU3
NGFmYjRkODg4MWFiYWUwNTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwCkBAIC0xMjEsNyArMTIxLDcg
QEAgdm9pZCBJbnNwZWN0b3JBZ2VudDo6YWN0aXZhdGVFeHRyYURvbWFpbihjb25zdCBTdHJpbmcm
IGRvbWFpbk5hbWUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWY8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gZG9tYWluTmFtZXMgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICBhdXRvIGRvbWFpbk5hbWVzID0gSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgZG9tYWluTmFt
ZXMtPmFkZEl0ZW0oZG9tYWluTmFtZSk7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmFjdGl2
YXRlRXh0cmFEb21haW5zKFdURk1vdmUoZG9tYWluTmFtZXMpKTsKIH0KQEAgLTEzMSwxNCArMTMx
LDE0IEBAIHZvaWQgSW5zcGVjdG9yQWdlbnQ6OmFjdGl2YXRlRXh0cmFEb21haW5zKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBleHRyYURvbWFpbnMpCiAgICAgaWYgKGV4dHJhRG9tYWlucy5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxTdHJpbmc+PiBkb21haW5OYW1lcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0
cmluZz46OmNyZWF0ZSgpOworICAgIGF1dG8gZG9tYWluTmFtZXMgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKICAgICBmb3IgKGF1dG8gZG9tYWluTmFtZSA6
IGV4dHJhRG9tYWlucykKICAgICAgICAgZG9tYWluTmFtZXMtPmFkZEl0ZW0oZG9tYWluTmFtZSk7
CiAKICAgICBpZiAoIW1fZW5hYmxlZCkKLSAgICAgICAgbV9wZW5kaW5nRXh0cmFEb21haW5zRGF0
YSA9IGRvbWFpbk5hbWVzLnJlbGVhc2UoKTsKKyAgICAgICAgbV9wZW5kaW5nRXh0cmFEb21haW5z
RGF0YSA9IFdURk1vdmUoZG9tYWluTmFtZXMpOwogICAgIGVsc2UKLSAgICAgICAgbV9mcm9udGVu
ZERpc3BhdGNoZXItPmFjdGl2YXRlRXh0cmFEb21haW5zKGRvbWFpbk5hbWVzLnJlbGVhc2UoKSk7
CisgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5hY3RpdmF0ZUV4dHJhRG9tYWlucyhXVEZN
b3ZlKGRvbWFpbk5hbWVzKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50LmNwcAppbmRleCA3M2NmYjZmMzczYjJmNWQ4ZWQxYTNiMDM2NGFmMGE2OGM1NTYxZDc3Li4x
MzRlMjI0Zjc0MGE2NTAyYmYxNzIwZTQ5NjhmNTEzZjg5YjUwOWE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtNzUwLDcgKzc1MCw3IEBAIHZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvblByb2JlKEpTQzo6RXhlY1N0YXRlJiBzY3JpcHRT
dGF0ZSwKICAgICAgICAgLnNldEJhdGNoSWQoYmF0Y2hJZCkKICAgICAgICAgLnNldFNhbXBsZUlk
KHNhbXBsZUlkKQogICAgICAgICAuc2V0VGltZXN0YW1wKG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
Lmluc3BlY3RvckVudmlyb25tZW50KCkuZXhlY3V0aW9uU3RvcHdhdGNoKCktPmVsYXBzZWRUaW1l
KCkpCi0gICAgICAgIC5zZXRQYXlsb2FkKHBheWxvYWQucmVsZWFzZSgpKQorICAgICAgICAuc2V0
UGF5bG9hZChXVEZNb3ZlKHBheWxvYWQpKQogICAgICAgICAucmVsZWFzZSgpOwogICAgIG1fZnJv
bnRlbmREaXNwYXRjaGVyLT5kaWRTYW1wbGVQcm9iZShXVEZNb3ZlKHJlc3VsdCkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5z
cGVjdG9yLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3Rl
SW5zcGVjdG9yLm1tCmluZGV4IDcyYmZjNmU4NzgwZjc5OTAwOGY4MzJiZWE3Y2EzZWQ3OWVhZWEy
YWUuLmYzYWVlMWM5NzQxMTE0YWJjZjhhYjBkNjZkODdhY2JmOWVhMWNjNWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5t
bQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNw
ZWN0b3IubW0KQEAgLTYyOSw3ICs2MjksNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2
ZWRTZXR1cE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKIAogICAgIC8vIEF0dGVtcHQg
dG8gY3JlYXRlIGEgY29ubmVjdGlvbi4gVGhpcyBtYXkgZmFpbCBpZiB0aGUgcGFnZSBhbHJlYWR5
IGhhcyBhbiBpbnNwZWN0b3Igb3IgaWYgaXQgZGlzYWxsb3dzIGluc3BlY3Rpb24uCiAgICAgUmVt
b3RlQ29udHJvbGxhYmxlVGFyZ2V0KiB0YXJnZXQgPSBmaW5kUmVzdWx0LT52YWx1ZTsKLSAgICBS
ZWZQdHI8UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0PiBjb25uZWN0aW9uVG9UYXJnZXQgPSBhZG9w
dFJlZihuZXcgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0KHRhcmdldCwgY29ubmVjdGlvbklkZW50
aWZpZXIsIHNlbmRlcikpOworICAgIGF1dG8gY29ubmVjdGlvblRvVGFyZ2V0ID0gYWRvcHRSZWYo
Km5ldyBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQodGFyZ2V0LCBjb25uZWN0aW9uSWRlbnRpZmll
ciwgc2VuZGVyKSk7CiAKICAgICBpZiAoaXM8UmVtb3RlSW5zcGVjdGlvblRhcmdldD4odGFyZ2V0
KSkgewogICAgICAgICBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbiA9IG1fYXV0b21hdGljSW5z
cGVjdGlvbkNhbmRpZGF0ZVRhcmdldElkZW50aWZpZXIgPT0gdGFyZ2V0LT50YXJnZXRJZGVudGlm
aWVyKCk7CkBAIC02MzksMTQgKzYzOSwxNCBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2
ZWRTZXR1cE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKICAgICAgICAgICAgIGNvbm5l
Y3Rpb25Ub1RhcmdldC0+Y2xvc2UoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQot
ICAgICAgICBtX3RhcmdldENvbm5lY3Rpb25NYXAuc2V0KHRhcmdldElkZW50aWZpZXIsIGNvbm5l
Y3Rpb25Ub1RhcmdldC5yZWxlYXNlKCkpOworICAgICAgICBtX3RhcmdldENvbm5lY3Rpb25NYXAu
c2V0KHRhcmdldElkZW50aWZpZXIsIFdURk1vdmUoY29ubmVjdGlvblRvVGFyZ2V0KSk7CiAgICAg
ICAgIHVwZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbigpOwogICAgIH0gZWxzZSBpZiAoaXM8UmVt
b3RlQXV0b21hdGlvblRhcmdldD4odGFyZ2V0KSkgewogICAgICAgICBpZiAoIWNvbm5lY3Rpb25U
b1RhcmdldC0+c2V0dXAoKSkgewogICAgICAgICAgICAgY29ubmVjdGlvblRvVGFyZ2V0LT5jbG9z
ZSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIG1fdGFyZ2V0Q29u
bmVjdGlvbk1hcC5zZXQodGFyZ2V0SWRlbnRpZmllciwgY29ubmVjdGlvblRvVGFyZ2V0LnJlbGVh
c2UoKSk7CisgICAgICAgIG1fdGFyZ2V0Q29ubmVjdGlvbk1hcC5zZXQodGFyZ2V0SWRlbnRpZmll
ciwgV1RGTW92ZShjb25uZWN0aW9uVG9UYXJnZXQpKTsKICAgICAgICAgdXBkYXRlSGFzQWN0aXZl
RGVidWdTZXNzaW9uKCk7CiAgICAgfSBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggODI5ODQ1MzNhNjZiNzVm
N2E3YWIzZjk1OWFiMDAyNTcxNGNhMzI2NS4uMDA4OGM0ZjJiMmRkYmY2MGI4MWFkNzA4YjIyMTgz
Njc2Y2I0YzkwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC05NDMs
NyArOTQzLDcgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKAogICAgICAgICBwYXRjaEJ1ZmZl
ci5saW5rKGRvbmUsIGNhbGxMaW5rSW5mby5ob3RQYXRoT3RoZXIoKS5sYWJlbEF0T2Zmc2V0KDAp
KTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKHNsb3csIENvZGVMb2NhdGlvbkxhYmVsKHZtLT5nZXRD
VElTdHViKGxpbmtQb2x5bW9ycGhpY0NhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpKSk7CiAgICAg
Ci0gICAgUmVmUHRyPFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lPiBzdHViUm91dGluZSA9IGFk
b3B0UmVmKG5ldyBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSgKKyAgICBhdXRvIHN0dWJSb3V0
aW5lID0gYWRvcHRSZWYoKm5ldyBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSgKICAgICAgICAg
RklOQUxJWkVfQ09ERV9GT1IoCiAgICAgICAgICAgICBjYWxsZXJDb2RlQmxvY2ssIHBhdGNoQnVm
ZmVyLAogICAgICAgICAgICAgKCJQb2x5bW9ycGhpYyBjYWxsIHN0dWIgZm9yICVzLCByZXR1cm4g
cG9pbnQgJXAsIHRhcmdldHMgJXMiLApAQCAtOTYyLDcgKzk2Miw3IEBAIHZvaWQgbGlua1BvbHlt
b3JwaGljQ2FsbCgKICAgICAKICAgICAvLyBJZiB0aGVyZSBoYWQgYmVlbiBhIHByZXZpb3VzIHN0
dWIgcm91dGluZSwgdGhhdCBvbmUgd2lsbCBkaWUgYXMgc29vbiBhcyB0aGUgR0MgcnVucyBhbmQg
c2VlcwogICAgIC8vIHRoYXQgaXQncyBubyBsb25nZXIgb24gc3RhY2suCi0gICAgY2FsbExpbmtJ
bmZvLnNldFN0dWIoc3R1YlJvdXRpbmUucmVsZWFzZSgpKTsKKyAgICBjYWxsTGlua0luZm8uc2V0
U3R1YihXVEZNb3ZlKHN0dWJSb3V0aW5lKSk7CiAgICAgCiAgICAgLy8gVGhlIGNhbGwgbGluayBp
bmZvIG5vIGxvbmdlciBoYXMgYSBjYWxsIGNhY2hlIGFwYXJ0IGZyb20gdGhlIGp1bXAgdG8gdGhl
IHBvbHltb3JwaGljIGNhbGwKICAgICAvLyBzdHViLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmlu
ZGV4IGE4NzM3ZWVlMTgwNmNhOGQzODY0MDkxMTZmMmQyZGQzNjYxZTM2ODguLjE0MjlkMDU0Y2I0
ZWQxMWM2MTVmNjk2ZDZjOTY2NGM0MjJhMjY4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgK
QEAgLTQ1LDcgKzQ1LDcgQEAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4g
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUodW4KICAgICBhdXRvIGJ1ZmZl
ciA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSkpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICByZXR1cm4gY3JlYXRlKGJ1ZmZlci5yZWxlYXNlKCksIDAsIGxlbmd0aCk7CisgICAgcmV0dXJu
IGNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGxlbmd0aCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIEFkYXB0b3I+CkBAIC02Nyw3ICs2Nyw3IEBAIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBHZW5lcmljVHlwZWRBcnJheVZpZXcoYnVmZmVyLnJlbGVhc2UoKSwgYnl0ZU9mZnNldCwgbGVu
Z3RoKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHZW5lcmljVHlwZWRBcnJheVZpZXcoV1RG
TW92ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgQWRhcHRvcj4KQEAgLTc4LDcgKzc4LDcgQEAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKICAgICAgICAgQXJyYXlC
dWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRh
cHRvcjo6VHlwZSkpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICByZXR1cm4gY3JlYXRlKGJ1ZmZlci5yZWxlYXNlKCksIDAsIGxlbmd0aCk7CisgICAgcmV0
dXJuIGNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGxlbmd0aCk7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIEFkYXB0b3I+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmNwcAppbmRleCAyYmUwM2Y4OGI5YWU1ODU0
YTRkMDQ0Zjk1MWUwMDJhOWZkMzg4ODU5Li42YmM4ZTQzNzljNTllZmMwZmM1NDc1YjllNjU4NGUx
OGNkZGU5MjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0QXJyYXlCdWZmZXIoRXhlY1N0
YXRlKiBleGVjKQogICAgIFN0cnVjdHVyZSogYXJyYXlCdWZmZXJTdHJ1Y3R1cmUgPSBJbnRlcm5h
bEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBleGVjLT5uZXdUYXJnZXQo
KSwgY29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLT5hcnJheUJ1ZmZlclN0cnVjdHVyZSgpKTsK
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSlNWYWx1ZSgpKTsKLSAgICBKU0FycmF5QnVmZmVyKiByZXN1bHQgPSBKU0FycmF5QnVm
ZmVyOjpjcmVhdGUoZXhlYy0+dm0oKSwgYXJyYXlCdWZmZXJTdHJ1Y3R1cmUsIGJ1ZmZlci5yZWxl
YXNlKCkpOworICAgIEpTQXJyYXlCdWZmZXIqIHJlc3VsdCA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0
ZShleGVjLT52bSgpLCBhcnJheUJ1ZmZlclN0cnVjdHVyZSwgV1RGTW92ZShidWZmZXIpKTsKICAg
ICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaAppbmRleCBhODA0Yjll
ZGE3Yzg3YWJhNDljYjU2NDEzODFhMzEyZWJlZGFmM2IzLi4wNGMxZWQxM2FiMTk5Yzk3YWMwMTQ2
MGUxNTVkNzAzODE0NzU1MDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5TmFtZUFycmF5LmgKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCBzZXREYXRhKFBhc3NSZWZQdHI8UHJvcGVydHlOYW1lQXJyYXlEYXRhPiBkYXRhKSB7IG1f
ZGF0YSA9IGRhdGE7IH0KICAgICBQcm9wZXJ0eU5hbWVBcnJheURhdGEqIGRhdGEoKSB7IHJldHVy
biBtX2RhdGEuZ2V0KCk7IH0KLSAgICBQYXNzUmVmUHRyPFByb3BlcnR5TmFtZUFycmF5RGF0YT4g
cmVsZWFzZURhdGEoKSB7IHJldHVybiBtX2RhdGEucmVsZWFzZSgpOyB9CisgICAgUGFzc1JlZlB0
cjxQcm9wZXJ0eU5hbWVBcnJheURhdGE+IHJlbGVhc2VEYXRhKCkgeyByZXR1cm4gV1RGTW92ZSht
X2RhdGEpOyB9CiAKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZXNlIGZ1bmN0aW9ucy4KICAgICBi
b29sIGNhbkFkZEtub3duVW5pcXVlRm9yU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
LT5wcm9wZXJ0eU5hbWVWZWN0b3IoKS5pc0VtcHR5KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IDZkN2ZiODE3Yjk1Zjk3YjRmYzQ1ZDA3MmEy
OWRkOTEyMTA3MjlhOWMuLjI3ZmZhNTE3ODA3NjhjNmM0MTczM2RiNjA4NTdmODcyZDdlNmU4NWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtMTE5
NywxNiArMTE5NywxNiBAQCBQYXNzUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiBTdHJ1Y3R1cmU6OnRv
U3RydWN0dXJlU2hhcGUoSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgY3VyU2hhcGUtPm1hcmtBc0Zp
bmFsKCk7CiAKICAgICAgICAgaWYgKGN1clN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlU3RydWN0
dXJlKCkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gbmV3U2hhcGUgPSBT
dHJ1Y3R1cmVTaGFwZTo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICBjdXJTaGFwZS0+c2V0UHJvdG8o
bmV3U2hhcGUpOwotICAgICAgICAgICAgY3VyU2hhcGUgPSBuZXdTaGFwZS5yZWxlYXNlKCk7Cisg
ICAgICAgICAgICBhdXRvIG5ld1NoYXBlID0gU3RydWN0dXJlU2hhcGU6OmNyZWF0ZSgpOworICAg
ICAgICAgICAgY3VyU2hhcGUtPnNldFByb3RvKG5ld1NoYXBlLnB0cigpKTsKKyAgICAgICAgICAg
IGN1clNoYXBlID0gV1RGTW92ZShuZXdTaGFwZSk7CiAgICAgICAgICAgICBjdXJWYWx1ZSA9IGN1
clN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlKCk7CiAgICAgICAgIH0KIAogICAgICAgICBjdXJT
dHJ1Y3R1cmUgPSBjdXJTdHJ1Y3R1cmUtPnN0b3JlZFByb3RvdHlwZVN0cnVjdHVyZSgpOwogICAg
IH0KICAgICAKLSAgICByZXR1cm4gYmFzZVNoYXBlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RG
TW92ZShiYXNlU2hhcGUpOwogfQogCiBib29sIFN0cnVjdHVyZTo6Y2FuVXNlRm9yQWxsb2NhdGlv
bnNPZihTdHJ1Y3R1cmUqIG90aGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVHlwZVNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBl
U2V0LmNwcAppbmRleCAwNjdmMTI2YjYwZmFlOTg1MmZmZjVhNjlhNDQ1NDQ2ODkzZWFkMGRiLi41
OGNlMmMzZDE3M2E4ZTI2YjgyYzY2YWNhNTU2NjllZDU5MDJjODA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcApAQCAtNTQ4LDcgKzU0OCw3IEBAIFBhc3NSZWZQ
dHI8U3RydWN0dXJlU2hhcGU+IFN0cnVjdHVyZVNoYXBlOjptZXJnZShjb25zdCBQYXNzUmVmUHRy
PFN0cnVjdHVyZVNoYXBlCiAgICAgUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiBiID0gcHJwQjsKICAg
ICBBU1NFUlQoYS0+aGFzU2FtZVByb3RvdHlwZUNoYWluKGIpKTsKIAotICAgIFJlZlB0cjxTdHJ1
Y3R1cmVTaGFwZT4gbWVyZ2VkID0gU3RydWN0dXJlU2hhcGU6OmNyZWF0ZSgpOworICAgIGF1dG8g
bWVyZ2VkID0gU3RydWN0dXJlU2hhcGU6OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byBmaWVsZCA6
IGEtPm1fZmllbGRzKSB7CiAgICAgICAgIGlmIChiLT5tX2ZpZWxkcy5jb250YWlucyhmaWVsZCkp
CiAgICAgICAgICAgICBtZXJnZWQtPm1fZmllbGRzLmFkZChmaWVsZCk7CkBAIC01NzgsNyArNTc4
LDcgQEAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gU3RydWN0dXJlU2hhcGU6Om1lcmdlKGNv
bnN0IFBhc3NSZWZQdHI8U3RydWN0dXJlU2hhcGUKIAogICAgIG1lcmdlZC0+bWFya0FzRmluYWwo
KTsKIAotICAgIHJldHVybiBtZXJnZWQucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKG1l
cmdlZCk7CiB9CiAKIHZvaWQgU3RydWN0dXJlU2hhcGU6OmVudGVyRGljdGlvbmFyeU1vZGUoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5jdGlvbk92ZXJyaWRlcy5jcHAK
aW5kZXggMmUzMjhjMTY3NGIyNzE3NmI3ODFkMTE4NjRhYjliMDEzOTBkMDAzMy4uOWFlM2E4N2Qy
YzgyZDBlODllOGZkYjczNDlkNjc2Zjg2MDY3NGJiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAg
c3RhdGljIHZvaWQgaW5pdGlhbGl6ZU92ZXJyaWRlSW5mbyhjb25zdCBTb3VyY2VDb2RlJiBvcmln
Q29kZSwgY29uc3QgU3RyaW5nJiBuZXcKICAgICBuZXdQcm92aWRlclN0ci5hcHBlbmQob3JpZ0hl
YWRlcik7CiAgICAgbmV3UHJvdmlkZXJTdHIuYXBwZW5kKG5ld0JvZHkpOwogCi0gICAgUmVmUHRy
PFNvdXJjZVByb3ZpZGVyPiBuZXdQcm92aWRlciA9IFN0cmluZ1NvdXJjZVByb3ZpZGVyOjpjcmVh
dGUobmV3UHJvdmlkZXJTdHIsICI8b3ZlcnJpZGRlbj4iKTsKKyAgICBhdXRvIG5ld1Byb3ZpZGVy
ID0gU3RyaW5nU291cmNlUHJvdmlkZXI6OmNyZWF0ZShuZXdQcm92aWRlclN0ciwgIjxvdmVycmlk
ZGVuPiIpOwogCiAgICAgaW5mby5maXJzdExpbmUgPSAxOwogICAgIGluZm8ubGluZUNvdW50ID0g
MTsgLy8gRmFraW5nIGl0LiBUaGlzIGRvZXNuJ3QgcmVhbGx5IG1hdHRlciBmb3Igbm93LgpAQCAt
MTI3LDcgKzEyNyw3IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVPdmVycmlkZUluZm8oY29uc3Qg
U291cmNlQ29kZSYgb3JpZ0NvZGUsIGNvbnN0IFN0cmluZyYgbmV3CiAgICAgaW5mby50eXBlUHJv
ZmlsaW5nRW5kT2Zmc2V0ID0gbmV3UHJvdmlkZXJTdHIubGVuZ3RoKCkgLSAxOwogCiAgICAgaW5m
by5zb3VyY2VDb2RlID0KLSAgICAgICAgU291cmNlQ29kZShuZXdQcm92aWRlci5yZWxlYXNlKCks
IGluZm8udHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0LCBpbmZvLnR5cGVQcm9maWxpbmdFbmRPZmZz
ZXQgKyAxLCAxLCAxKTsKKyAgICAgICAgU291cmNlQ29kZShXVEZNb3ZlKG5ld1Byb3ZpZGVyKSwg
aW5mby50eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQsIGluZm8udHlwZVByb2ZpbGluZ0VuZE9mZnNl
dCArIDEsIDEsIDEpOwogfQogICAgIAogYm9vbCBGdW5jdGlvbk92ZXJyaWRlczo6aW5pdGlhbGl6
ZU92ZXJyaWRlRm9yKGNvbnN0IFNvdXJjZUNvZGUmIG9yaWdDb2RlLCBGdW5jdGlvbk92ZXJyaWRl
czo6T3ZlcnJpZGVJbmZvJiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKaW5kZXggZWI1MjQ3YTlmMDdkOWJiZDhjODZi
OGY1NjlmODQ2NDlmYTU2YzE4YS4uZGIzYjk1NDI4ZThlN2ZmMTgxYzVlZTBlM2UyM2UyNDE2NjQy
N2RiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3Vy
Y2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291
cmNlQnVmZmVyLmNwcApAQCAtNjYzLDcgKzY2Myw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFRpbWVS
YW5nZXM+IHJlbW92ZVNhbXBsZXNGcm9tVHJhY2tCdWZmZXIoY29uc3QgRGVjb2RlT3JkZXJTYW1w
CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CiAjZW5kaWYKIAotICAgIFJlZlB0cjxUaW1lUmFu
Z2VzPiBlcmFzZWRSYW5nZXMgPSBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKKyAgICBhdXRvIGVyYXNl
ZFJhbmdlcyA9IFRpbWVSYW5nZXM6OmNyZWF0ZSgpOwogICAgIE1lZGlhVGltZSBtaWNyb3NlY29u
ZCgxLCAxMDAwMDAwKTsKICAgICBmb3IgKGF1dG8gc2FtcGxlSXQgOiBzYW1wbGVzKSB7CiAgICAg
ICAgIGNvbnN0IERlY29kZU9yZGVyU2FtcGxlTWFwOjpLZXlUeXBlJiBkZWNvZGVLZXkgPSBzYW1w
bGVJdC5maXJzdDsKQEAgLTY5OCw3ICs2OTgsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxUaW1lUmFu
Z2VzPiByZW1vdmVTYW1wbGVzRnJvbVRyYWNrQnVmZmVyKGNvbnN0IERlY29kZU9yZGVyU2FtcAog
ICAgICAgICBMT0coTWVkaWFTb3VyY2UsICJTb3VyY2VCdWZmZXI6OiVzKCVwKSByZW1vdmVkICV6
dSBieXRlcywgc3RhcnQoJWxmKSwgZW5kKCVsZikiLCBsb2dQcmVmaXgsIGJ1ZmZlciwgYnl0ZXNS
ZW1vdmVkLCBlYXJsaWVzdFNhbXBsZSwgbGF0ZXN0U2FtcGxlKTsKICNlbmRpZgogCi0gICAgcmV0
dXJuIGVyYXNlZFJhbmdlcy5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1vdmUoZXJhc2VkUmFu
Z2VzKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXI6OnJlbW92ZUNvZGVkRnJhbWVzKGNvbnN0IE1l
ZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kKQpAQCAtMTc1MSw3ICsxNzUxLDcg
QEAgdm9pZCBTb3VyY2VCdWZmZXI6OnByb3ZpZGVNZWRpYURhdGEoVHJhY2tCdWZmZXImIHRyYWNr
QnVmZmVyLCBBdG9taWNTdHJpbmcgdHJhY2sKICAgICAgICAgLy8gRklYTUUocmRhcjovL3Byb2Js
ZW0vMjA2MzU5NjkpOiBSZW1vdmUgdGhpcyByZS1lbnRyYW5jeSBwcm90ZWN0aW9uIHdoZW4gdGhl
IGFmb3JlbWVudGlvbmVkIHJhZGFyIGlzIHJlc29sdmVkOyBwcm90ZWN0aW5nCiAgICAgICAgIC8v
IGFnYWluc3QgcmUtZW50cmFuY3kgaW50cm9kdWNlcyBhIHNtYWxsIGluZWZmaWNlbmN5IHdoZW4g
cmVtb3ZpbmcgYXBwZW5kZWQgc2FtcGxlcyBmcm9tIHRoZSBkZWNvZGUgcXVldWUgb25lIGF0IGEg
dGltZQogICAgICAgICAvLyByYXRoZXIgdGhhbiB3aGVuIGFsbCBzYW1wbGVzIGhhdmUgYmVlbiBl
bnF1ZXVlZC4KLSAgICAgICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBzYW1wbGUgPSB0cmFja0J1ZmZl
ci5kZWNvZGVRdWV1ZS5iZWdpbigpLT5zZWNvbmQ7CisgICAgICAgIGF1dG8gc2FtcGxlID0gdHJh
Y2tCdWZmZXIuZGVjb2RlUXVldWUuYmVnaW4oKS0+c2Vjb25kOwogICAgICAgICB0cmFja0J1ZmZl
ci5kZWNvZGVRdWV1ZS5lcmFzZSh0cmFja0J1ZmZlci5kZWNvZGVRdWV1ZS5iZWdpbigpKTsKIAog
ICAgICAgICAvLyBEbyBub3QgZW5xdWV1ZSBzYW1wbGVzIHNwYW5uaW5nIGEgc2lnbmlmaWNhbnQg
dW5idWZmZXJlZCBnYXAuCkBAIC0xNzY3LDcgKzE3NjcsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6
cHJvdmlkZU1lZGlhRGF0YShUcmFja0J1ZmZlciYgdHJhY2tCdWZmZXIsIEF0b21pY1N0cmluZyB0
cmFjawogCiAgICAgICAgIHRyYWNrQnVmZmVyLmxhc3RFbnF1ZXVlZFByZXNlbnRhdGlvblRpbWUg
PSBzYW1wbGUtPnByZXNlbnRhdGlvblRpbWUoKTsKICAgICAgICAgdHJhY2tCdWZmZXIubGFzdEVu
cXVldWVkRGVjb2RlRW5kVGltZSA9IHNhbXBsZS0+ZGVjb2RlVGltZSgpICsgc2FtcGxlLT5kdXJh
dGlvbigpOwotICAgICAgICBtX3ByaXZhdGUtPmVucXVldWVTYW1wbGUoc2FtcGxlLnJlbGVhc2Uo
KSwgdHJhY2tJRCk7CisgICAgICAgIG1fcHJpdmF0ZS0+ZW5xdWV1ZVNhbXBsZShXVEZNb3ZlKHNh
bXBsZSksIHRyYWNrSUQpOwogI2lmICFMT0dfRElTQUJMRUQKICAgICAgICAgKytlbnF1ZXVlZFNh
bXBsZXM7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCmluZGV4IDllNWE5YzI0NGVmNjNhMTdiZmE4ZDlj
N2NjZTVjNjEzYWVhMzlhYzYuLmI5NmI3YTBiMzUxOTExYTg3NjlhOTUyZDI5ZmU4ZWFiMGIxZTIy
ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1l
ZGlhUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9V
c2VyTWVkaWFSZXF1ZXN0LmNwcApAQCAtODAsMTUgKzgwLDE1IEBAIHZvaWQgVXNlck1lZGlhUmVx
dWVzdDo6c3RhcnQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25z
LCBNZWRpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8TWVkaWFDb25zdHJh
aW50cz4gYXVkaW9Db25zdHJhaW50cyA9IHBhcnNlT3B0aW9ucyhvcHRpb25zLCBBdG9taWNTdHJp
bmcoImF1ZGlvIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIFJl
ZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiB2aWRlb0NvbnN0cmFpbnRzID0gcGFyc2VPcHRpb25zKG9w
dGlvbnMsIEF0b21pY1N0cmluZygidmlkZW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKSk7CisgICAgYXV0byBhdWRpb0NvbnN0cmFpbnRzID0gcGFyc2VPcHRpb25zKG9wdGlv
bnMsIEF0b21pY1N0cmluZygiYXVkaW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgYXV0byB2aWRlb0NvbnN0cmFpbnRzID0gcGFyc2VPcHRpb25zKG9wdGlvbnMs
IEF0b21pY1N0cmluZygidmlkZW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7CiAKICAgICBpZiAoIWF1ZGlvQ29uc3RyYWludHMgJiYgIXZpZGVvQ29uc3RyYWludHMpIHsK
ICAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIFJlZjxVc2VyTWVkaWFSZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHRSZWYoKm5ldyBVc2Vy
TWVkaWFSZXF1ZXN0KGRvY3VtZW50LCB1c2VyTWVkaWEsIGF1ZGlvQ29uc3RyYWludHMucmVsZWFz
ZSgpLCB2aWRlb0NvbnN0cmFpbnRzLnJlbGVhc2UoKSwgV1RGTW92ZShwcm9taXNlKSkpOworICAg
IGF1dG8gcmVxdWVzdCA9IGFkb3B0UmVmKCpuZXcgVXNlck1lZGlhUmVxdWVzdChkb2N1bWVudCwg
dXNlck1lZGlhLCBXVEZNb3ZlKGF1ZGlvQ29uc3RyYWludHMpLCBXVEZNb3ZlKHZpZGVvQ29uc3Ry
YWludHMpLCBXVEZNb3ZlKHByb21pc2UpKSk7CiAgICAgcmVxdWVzdC0+c3RhcnQoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAppbmRl
eCBkYTM4ZTFjZmY4OTE2MDUwMDlhZjc1NWM0NzJkZDBlNDQ3YWYxNTYzLi5iNWZkZmFlZjBlYTI1
YjhhZWM2ZDkyMTdkZDJjZDVkZTcyOTc2YjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcApAQCAtMjQ2LDcgKzI0Niw3IEBAIERhdGFiYXNl
Ojp+RGF0YWJhc2UoKQogICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRl
eHRUaHJlYWQoKSkgewogICAgICAgICAvLyBHcmFiIGEgcG9pbnRlciB0byB0aGUgc2NyaXB0IGV4
ZWN1dGlvbiBoZXJlIGJlY2F1c2Ugd2UncmUgcmVsZWFzaW5nIGl0IHdoZW4gd2UgcGFzcyBpdCB0
bwogICAgICAgICAvLyBEZXJlZkNvbnRleHRUYXNrOjpjcmVhdGUuCi0gICAgICAgIFBhc3NSZWZQ
dHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gcGFzc2VkQ29udGV4dCA9IG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5yZWxlYXNlKCk7CisgICAgICAgIFBhc3NSZWZQdHI8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dD4gcGFzc2VkQ29udGV4dCA9IFdURk1vdmUobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
KTsKICAgICAgICAgcGFzc2VkQ29udGV4dC0+cG9zdFRhc2soe1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2s6OkNsZWFudXBUYXNrLCBbcGFzc2VkQ29udGV4dF0gKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgJmNv
bnRleHQgPT0gcGFzc2VkQ29udGV4dCk7CiAgICAgICAgICAgICBSZWZQdHI8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dD4gc2NyaXB0RXhlY3V0aW9uQ29udGV4dChwYXNzZWRDb250ZXh0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMQ2FsbGJhY2tXcmFw
cGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTENhbGxiYWNrV3Jh
cHBlci5oCmluZGV4IGNhNjY1ODEwYmE2MGQxNmNjNzQxZTE4ZGU0NTg2Y2U4NDcwNDkyN2IuLmI2
NDU0ODIwZjczNzU2MWYzMGJjYWE1MGIwYTYyODFiMjM5ZGNmODAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMQ2FsbGJhY2tXcmFwcGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxDYWxsYmFja1dyYXBwZXIuaApA
QCAtNjgsOCArNjgsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0ID0gbnVsbHB0cjsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0UHRyID0gbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LnJlbGVhc2UoKS5sZWFrUmVmKCk7Ci0gICAgICAgICAgICBjYWxsYmFjayA9
IG1fY2FsbGJhY2sucmVsZWFzZSgpLmxlYWtSZWYoKTsKKyAgICAgICAgICAgIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRQdHIgPSBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQubGVha1JlZigpOworICAg
ICAgICAgICAgY2FsbGJhY2sgPSBtX2NhbGxiYWNrLmxlYWtSZWYoKTsKICAgICAgICAgfQogICAg
ICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0UHRyLT5wb3N0VGFzayh7CiAgICAgICAgICAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrOjpDbGVhbnVwVGFzaywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCA4ZmI0ZTk5Y2E2
NTg2NjRiNGRhZWNkNTdkNjMyNDBjMmU3MjdiMTk2Li4zMzBkNmIyODE5NGZiNmNkMjc4OTU2NjFk
YTE5OWM0YTk2NjY0ZGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uY3BwCkBAIC01MzksOSArNTM5LDcgQEAgc3RhdGljIEpTVmFsdWUgaGFu
ZGxlUG9zdE1lc3NhZ2UoRE9NV2luZG93JiBpbXBsLCBFeGVjU3RhdGUmIHN0YXRlKQogICAgIGlm
IChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAK
LSAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlID0gU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpjcmVhdGUoJnN0YXRlLCBzdGF0ZS5hcmd1bWVudCgwKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmbWVzc2FnZVBvcnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhcnJheUJ1ZmZlcnMpOworICAg
IGF1dG8gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCZzdGF0ZSwgc3Rh
dGUuYXJndW1lbnQoMCksICZtZXNzYWdlUG9ydHMsICZhcnJheUJ1ZmZlcnMpOwogCiAgICAgaWYg
KHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAg
LTU1MSw3ICs1NDksNyBAQCBzdGF0aWMgSlNWYWx1ZSBoYW5kbGVQb3N0TWVzc2FnZShET01XaW5k
b3cmIGltcGwsIEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbC5wb3N0TWVzc2FnZShtZXNz
YWdlLnJlbGVhc2UoKSwgJm1lc3NhZ2VQb3J0cywgdGFyZ2V0T3JpZ2luLCBjYWxsZXJET01XaW5k
b3coJnN0YXRlKSwgZWMpOworICAgIGltcGwucG9zdE1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSwg
Jm1lc3NhZ2VQb3J0cywgdGFyZ2V0T3JpZ2luLCBjYWxsZXJET01XaW5kb3coJnN0YXRlKSwgZWMp
OwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIaXN0b3J5
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3RvbS5j
cHAKaW5kZXggZjQ5Nzk2NWFlNTZkYjk0NzEyNDhmMGY5MDQ2YWY0M2I3NmI0MmRhMy4uN2E0ZTg2
ZWZhNzBlOGMxZTUwYWFmZmU3OGQ2OWE1ZDhmMzYwODQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0b20uY3BwCkBAIC01NSw3ICs1NSw3IEBAIEpTVmFs
dWUgSlNIaXN0b3J5OjpzdGF0ZShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogCiBKU1ZhbHVlIEpT
SGlzdG9yeTo6cHVzaFN0YXRlKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gaGlzdG9yeVN0YXRlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpj
cmVhdGUoJnN0YXRlLCBzdGF0ZS5hcmd1bWVudCgwKSwgMCwgMCk7CisgICAgYXV0byBoaXN0b3J5
U3RhdGUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgmc3RhdGUsIHN0YXRlLmFyZ3Vt
ZW50KDApLCAwLCAwKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwogCkBAIC03MSw3ICs3MSw3IEBAIEpTVmFsdWUgSlNIaXN0b3J5
OjpwdXNoU3RhdGUoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICB9CiAKICAgICBFeGNlcHRpb25Db2Rl
V2l0aE1lc3NhZ2UgZWM7Ci0gICAgd3JhcHBlZCgpLnN0YXRlT2JqZWN0QWRkZWQoaGlzdG9yeVN0
YXRlLnJlbGVhc2UoKSwgdGl0bGUsIHVybCwgSGlzdG9yeTo6U3RhdGVPYmplY3RUeXBlOjpQdXNo
LCBlYyk7CisgICAgd3JhcHBlZCgpLnN0YXRlT2JqZWN0QWRkZWQoV1RGTW92ZShoaXN0b3J5U3Rh
dGUpLCB0aXRsZSwgdXJsLCBIaXN0b3J5OjpTdGF0ZU9iamVjdFR5cGU6OlB1c2gsIGVjKTsKICAg
ICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAKICAgICBtX3N0YXRlLmNsZWFyKCk7CkBA
IC04MSw3ICs4MSw3IEBAIEpTVmFsdWUgSlNIaXN0b3J5OjpwdXNoU3RhdGUoRXhlY1N0YXRlJiBz
dGF0ZSkKIAogSlNWYWx1ZSBKU0hpc3Rvcnk6OnJlcGxhY2VTdGF0ZShFeGVjU3RhdGUmIHN0YXRl
KQogewotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGhpc3RvcnlTdGF0ZSA9IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCZzdGF0ZSwgc3RhdGUuYXJndW1lbnQoMCksIDAs
IDApOworICAgIGF1dG8gaGlzdG9yeVN0YXRlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVh
dGUoJnN0YXRlLCBzdGF0ZS5hcmd1bWVudCgwKSwgMCwgMCk7CiAgICAgaWYgKHN0YXRlLmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIApAQCAtOTcsNyArOTcs
NyBAQCBKU1ZhbHVlIEpTSGlzdG9yeTo6cmVwbGFjZVN0YXRlKEV4ZWNTdGF0ZSYgc3RhdGUpCiAg
ICAgfQogCiAgICAgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlIGVjOwotICAgIHdyYXBwZWQoKS5z
dGF0ZU9iamVjdEFkZGVkKGhpc3RvcnlTdGF0ZS5yZWxlYXNlKCksIHRpdGxlLCB1cmwsIEhpc3Rv
cnk6OlN0YXRlT2JqZWN0VHlwZTo6UmVwbGFjZSwgZWMpOworICAgIHdyYXBwZWQoKS5zdGF0ZU9i
amVjdEFkZGVkKFdURk1vdmUoaGlzdG9yeVN0YXRlKSwgdGl0bGUsIHVybCwgSGlzdG9yeTo6U3Rh
dGVPYmplY3RUeXBlOjpSZXBsYWNlLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwg
ZWMpOwogCiAgICAgbV9zdGF0ZS5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oCmluZGV4IGZjYTdhNDBhNzk5NzFmZjM4ZGQ5Y2Vk
NjJiZjU5Y2RjNDU1ZmM4MjUuLjA2Mjk0NmI3MzFjOWM1NTYyYzk1MmVhNjYxZGVmNmQ2OGI4OTVm
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRD
dXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3Vz
dG9tLmgKQEAgLTU2LDEyICs1NiwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIE1l
c3NhZ2VQb3J0QXJyYXkgcG9ydEFycmF5OwogICAgICAgICBBcnJheUJ1ZmZlckFycmF5IGFycmF5
QnVmZmVyQXJyYXk7CiAgICAgICAgIGZpbGxNZXNzYWdlUG9ydEFycmF5KHN0YXRlLCBzdGF0ZS5h
cmd1bWVudCgxKSwgcG9ydEFycmF5LCBhcnJheUJ1ZmZlckFycmF5KTsKLSAgICAgICAgUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
Y3JlYXRlKCZzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCksICZwb3J0QXJyYXksICZh
cnJheUJ1ZmZlckFycmF5KTsKKyAgICAgICAgYXV0byBtZXNzYWdlID0gU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpjcmVhdGUoJnN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSwgJnBvcnRB
cnJheSwgJmFycmF5QnVmZmVyQXJyYXkpOwogICAgICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9u
KCkpCiAgICAgICAgICAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOwogCiAgICAgICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICBpbXBsLT5wb3N0TWVzc2FnZShtZXNzYWdlLnJl
bGVhc2UoKSwgJnBvcnRBcnJheSwgZWMpOworICAgICAgICBpbXBsLT5wb3N0TWVzc2FnZShXVEZN
b3ZlKG1lc3NhZ2UpLCAmcG9ydEFycmF5LCBlYyk7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigm
c3RhdGUsIGVjKTsKICAgICAgICAgcmV0dXJuIEpTQzo6anNVbmRlZmluZWQoKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlck1hYy5tbQpp
bmRleCA1ZmM3MmRmMDVjN2I2ODE3ZjJiOWViODEzN2IyNDI5MjNmYzAyNGJlLi5hODQ3NDUyMjM2
YTVjOTU4MjY4ODM1NjAxZjRjY2Q3NTg3MWJkYmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJNYWMubW0KQEAgLTY2LDEwICs2NiwxMCBAQCBS
ZWZQdHI8SlNDOjpCaW5kaW5nczo6SW5zdGFuY2U+IFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVNj
cmlwdEluc3RhbmNlRm9yV2lkZ2V0KAogICAgIGlmICghd2lkZ2V0VmlldykKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8Um9vdE9iamVjdD4gcm9vdE9iamVjdCA9IGNyZWF0
ZVJvb3RPYmplY3Qod2lkZ2V0Vmlldyk7CisgICAgYXV0byByb290T2JqZWN0ID0gY3JlYXRlUm9v
dE9iamVjdCh3aWRnZXRWaWV3KTsKIAogICAgIGlmIChbd2lkZ2V0VmlldyByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKGNyZWF0ZVBsdWdpbkJpbmRpbmdzSW5zdGFuY2U6KV0pCi0gICAgICAg
IHJldHVybiBbd2lkZ2V0VmlldyBjcmVhdGVQbHVnaW5CaW5kaW5nc0luc3RhbmNlOnJvb3RPYmpl
Y3QucmVsZWFzZSgpXTsKKyAgICAgICAgcmV0dXJuIFt3aWRnZXRWaWV3IGNyZWF0ZVBsdWdpbkJp
bmRpbmdzSW5zdGFuY2U6V1RGTW92ZShyb290T2JqZWN0KV07CiAgICAgICAgIAogICAgIGlmIChb
d2lkZ2V0VmlldyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG9iamVjdEZvcldlYlNjcmlw
dCldKSB7CiAgICAgICAgIGlkIG9iamVjdEZvcldlYlNjcmlwdCA9IFt3aWRnZXRWaWV3IG9iamVj
dEZvcldlYlNjcmlwdF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA2ODJjYzYyM2ZhZDdjNjk4MWY1Njg4NmZhYTNj
NTY2NDVhYWY2M2ViLi44NjliNmVhYTgwNGY3NzQ2YTAxMTBlNzUyN2RjMWQ4YWQyMjY1NjZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAKQEAgLTIzNTQsNyArMjM1NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
ZmFpbCgpOwogICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0ZShtX2V4
ZWMtPnZtKCksIG1fZ2xvYmFsT2JqZWN0LT5hcnJheUJ1ZmZlclN0cnVjdHVyZSgpLCBhcnJheUJ1
ZmZlci5yZWxlYXNlKCkpOworICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBKU0FycmF5QnVm
ZmVyOjpjcmVhdGUobV9leGVjLT52bSgpLCBtX2dsb2JhbE9iamVjdC0+YXJyYXlCdWZmZXJTdHJ1
Y3R1cmUoKSwgV1RGTW92ZShhcnJheUJ1ZmZlcikpOwogICAgICAgICAgICAgbV9nY0J1ZmZlci5h
cHBlbmQocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAK
aW5kZXggNjdkOWQ1N2ZlZjFhYzNjMGIzYzI5ZGFjZDBkNzMxOWY4NjQzMzk0NS4uM2I0Mjc3YmRi
MGI0OTVkZDNkOTEwMWM2NjEzYWVhZTU2NjNmOTMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTQwNTksOSArNDA1OSw5
IEBAIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpj
b3B5UHJvcGVydGllc0luU2V0KGNvbnN0IENTCiAgICAgVmVjdG9yPENTU1Byb3BlcnR5LCAyNTY+
IGxpc3Q7CiAgICAgbGlzdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0aCk7CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIFJlZlB0cjxDU1NW
YWx1ZT4gdmFsdWUgPSBwcm9wZXJ0eVZhbHVlKHNldFtpXSk7CisgICAgICAgIGF1dG8gdmFsdWUg
PSBwcm9wZXJ0eVZhbHVlKHNldFtpXSk7CiAgICAgICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAg
IGxpc3QuYXBwZW5kKENTU1Byb3BlcnR5KHNldFtpXSwgdmFsdWUucmVsZWFzZSgpLCBmYWxzZSkp
OworICAgICAgICAgICAgbGlzdC5hcHBlbmQoQ1NTUHJvcGVydHkoc2V0W2ldLCBXVEZNb3ZlKHZh
bHVlKSwgZmFsc2UpKTsKICAgICB9CiAgICAgcmV0dXJuIE11dGFibGVTdHlsZVByb3BlcnRpZXM6
OmNyZWF0ZShsaXN0LmRhdGEoKSwgbGlzdC5zaXplKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL1NWR0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NT
UGFyc2VyLmNwcAppbmRleCBmMGM0ODU0Y2M2MWQxYWZhMDUzYjVjZmU5ZjI4ODQ4MDhlYjBkZWQw
Li45Y2I0NzkzYmJlMTQwZTMzNDIyNWQyNDMwODIzNzY0ZWM5MDllOWI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU1ZHQ1NTUGFyc2VyLmNwcApAQCAtMjcyLDkgKzI3Miw5IEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZVNWR1ZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAg
ICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSkKICAgICAgICAgICAgIHZhbGlkX3ByaW1pdGl2ZSA9
IHRydWU7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4g
c2hhZG93VmFsdWVMaXN0ID0gcGFyc2VTaGFkb3coKm1fdmFsdWVMaXN0LCBwcm9wSWQpOworICAg
ICAgICAgICAgYXV0byBzaGFkb3dWYWx1ZUxpc3QgPSBwYXJzZVNoYWRvdygqbV92YWx1ZUxpc3Qs
IHByb3BJZCk7CiAgICAgICAgICAgICBpZiAoc2hhZG93VmFsdWVMaXN0KSB7Ci0gICAgICAgICAg
ICAgICAgYWRkUHJvcGVydHkocHJvcElkLCBzaGFkb3dWYWx1ZUxpc3QucmVsZWFzZSgpLCBpbXBv
cnRhbnQpOworICAgICAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BJZCwgV1RGTW92ZShzaGFk
b3dWYWx1ZUxpc3QpLCBpbXBvcnRhbnQpOwogICAgICAgICAgICAgICAgIG1fdmFsdWVMaXN0LT5u
ZXh0KCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CkBAIC0z
MzYsNyArMzM2LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlU1ZHVmFsdWUoQ1NTUHJvcGVydHlJ
RCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGlmICghcGFyc2VkVmFsdWUgfHwgKG1fdmFs
dWVMaXN0LT5jdXJyZW50KCkgJiYgIWluU2hvcnRoYW5kKCkpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBhZGRQcm9wZXJ0eShwcm9wSWQsIHBhcnNlZFZhbHVlLnJlbGVhc2UoKSwgaW1w
b3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShwcm9wSWQsIFdURk1vdmUocGFyc2VkVmFsdWUpLCBp
bXBvcnRhbnQpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVCdWlsZGVyQ29udmVydGVyLmgKaW5kZXggNzdhYzY1ZjI4MzhkYTYzY2VjNDg4Zjg1ZDJiYTMx
YzE3YmY2MDg5ZC4uYWY0NTcxM2RmNTgzMDFjYTMwN2MzMDZhZjQ4MTQ2Y2RhY2ZiNDA1MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaApAQCAtNzYyLDcgKzc2
Miw3IEBAIGlubGluZSBQYXNzUmVmUHRyPFNoYXBlVmFsdWU+IFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydFNoYXBlVmFsdWUoU3R5bGVSZXNvCiAgICAgfQogCiAgICAgaWYgKHNoYXBlKQot
ICAgICAgICByZXR1cm4gU2hhcGVWYWx1ZTo6Y3JlYXRlU2hhcGVWYWx1ZShzaGFwZS5yZWxlYXNl
KCksIHJlZmVyZW5jZUJveCk7CisgICAgICAgIHJldHVybiBTaGFwZVZhbHVlOjpjcmVhdGVTaGFw
ZVZhbHVlKFdURk1vdmUoc2hhcGUpLCByZWZlcmVuY2VCb3gpOwogCiAgICAgaWYgKHJlZmVyZW5j
ZUJveCAhPSBCb3hNaXNzaW5nKQogICAgICAgICByZXR1cm4gU2hhcGVWYWx1ZTo6Y3JlYXRlQm94
U2hhcGVWYWx1ZShyZWZlcmVuY2VCb3gpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUHJvcGVydGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVz
LmNwcAppbmRleCBiZmNiZmE3MmQyMDRmOWFlOWFkNWQ2NzFmMmRiY2IwNmQwNGJmY2U1Li5mN2Jj
NzMwMTVkZTBkMzU2ZWE0YzkxY2M5MzAyMTUxODc2MjFjYTY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVQcm9wZXJ0aWVzLmNwcApAQCAtMTMxMyw5ICsxMzEzLDkgQEAgUmVmPE11dGFibGVTdHls
ZVByb3BlcnRpZXM+IFN0eWxlUHJvcGVydGllczo6Y29weVByb3BlcnRpZXNJblNldChjb25zdCBD
U1NQcm9wZXIKICAgICBWZWN0b3I8Q1NTUHJvcGVydHksIDI1Nj4gbGlzdDsKICAgICBsaXN0LnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFBy
b3BlcnR5Q1NTVmFsdWVJbnRlcm5hbChzZXRbaV0pOworICAgICAgICBhdXRvIHZhbHVlID0gZ2V0
UHJvcGVydHlDU1NWYWx1ZUludGVybmFsKHNldFtpXSk7CiAgICAgICAgIGlmICh2YWx1ZSkKLSAg
ICAgICAgICAgIGxpc3QuYXBwZW5kKENTU1Byb3BlcnR5KHNldFtpXSwgdmFsdWUucmVsZWFzZSgp
LCBmYWxzZSkpOworICAgICAgICAgICAgbGlzdC5hcHBlbmQoQ1NTUHJvcGVydHkoc2V0W2ldLCBX
VEZNb3ZlKHZhbHVlKSwgZmFsc2UpKTsKICAgICB9CiAgICAgcmV0dXJuIE11dGFibGVTdHlsZVBy
b3BlcnRpZXM6OmNyZWF0ZShsaXN0LmRhdGEoKSwgbGlzdC5zaXplKCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGMxN2FhZmE5NjQ1OGUzYWZmMjE1NjY0YWE2NDI2
OWIyY2EyYTUwZDkuLmFiNmRmMjc2YjQ2OTk1NzA3NDFlODFiZmVkZDQ5YzY3YWJjZWZhMmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTIxOTMsOCArMjE5Myw4IEBAIHZv
aWQgU3R5bGVSZXNvbHZlcjo6bG9hZFBlbmRpbmdJbWFnZXMoKQogICAgICAgICAgICAgICAgIGlm
IChpczxJbWFnZUNvbnRlbnREYXRhPigqY29udGVudERhdGEpKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGF1dG8mIHN0eWxlSW1hZ2UgPSBkb3duY2FzdDxJbWFnZUNvbnRlbnREYXRhPigqY29udGVu
dERhdGEpLmltYWdlKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChpczxTdHlsZVBlbmRpbmdJ
bWFnZT4oc3R5bGVJbWFnZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSZWZQdHI8
U3R5bGVJbWFnZT4gbG9hZGVkSW1hZ2UgPSBsb2FkUGVuZGluZ0ltYWdlKGRvd25jYXN0PFN0eWxl
UGVuZGluZ0ltYWdlPihzdHlsZUltYWdlKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZG93bmNhc3Q8SW1hZ2VDb250ZW50RGF0YT4oKmNvbnRlbnREYXRhKS5zZXRJbWFnZShsb2FkZWRJ
bWFnZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8gbG9hZGVk
SW1hZ2UgPSBsb2FkUGVuZGluZ0ltYWdlKGRvd25jYXN0PFN0eWxlUGVuZGluZ0ltYWdlPihzdHls
ZUltYWdlKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG93bmNhc3Q8SW1hZ2VDb250
ZW50RGF0YT4oKmNvbnRlbnREYXRhKS5zZXRJbWFnZShXVEZNb3ZlKGxvYWRlZEltYWdlKSk7CiAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBA
IC0yMjI4LDggKzIyMjgsOCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmxvYWRQZW5kaW5nSW1hZ2Vz
KCkKICAgICAgICAgICAgICAgICBjb25zdCBOaW5lUGllY2VJbWFnZSYgbWFza0ltYWdlID0gcmVm
bGVjdGlvbi0+bWFzaygpOwogICAgICAgICAgICAgICAgIGF1dG8qIHN0eWxlSW1hZ2UgPSBtYXNr
SW1hZ2UuaW1hZ2UoKTsKICAgICAgICAgICAgICAgICBpZiAoaXM8U3R5bGVQZW5kaW5nSW1hZ2U+
KHN0eWxlSW1hZ2UpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlZlB0cjxTdHlsZUltYWdlPiBs
b2FkZWRJbWFnZSA9IGxvYWRQZW5kaW5nSW1hZ2UoZG93bmNhc3Q8U3R5bGVQZW5kaW5nSW1hZ2U+
KCpzdHlsZUltYWdlKSk7Ci0gICAgICAgICAgICAgICAgICAgIHJlZmxlY3Rpb24tPnNldE1hc2so
TmluZVBpZWNlSW1hZ2UobG9hZGVkSW1hZ2UucmVsZWFzZSgpLCBtYXNrSW1hZ2UuaW1hZ2VTbGlj
ZXMoKSwgbWFza0ltYWdlLmZpbGwoKSwgbWFza0ltYWdlLmJvcmRlclNsaWNlcygpLCBtYXNrSW1h
Z2Uub3V0c2V0KCksIG1hc2tJbWFnZS5ob3Jpem9udGFsUnVsZSgpLCBtYXNrSW1hZ2UudmVydGlj
YWxSdWxlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBsb2FkZWRJbWFnZSA9IGxvYWRQ
ZW5kaW5nSW1hZ2UoZG93bmNhc3Q8U3R5bGVQZW5kaW5nSW1hZ2U+KCpzdHlsZUltYWdlKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHJlZmxlY3Rpb24tPnNldE1hc2soTmluZVBpZWNlSW1hZ2UoV1RG
TW92ZShsb2FkZWRJbWFnZSksIG1hc2tJbWFnZS5pbWFnZVNsaWNlcygpLCBtYXNrSW1hZ2UuZmls
bCgpLCBtYXNrSW1hZ2UuYm9yZGVyU2xpY2VzKCksIG1hc2tJbWFnZS5vdXRzZXQoKSwgbWFza0lt
YWdlLmhvcml6b250YWxSdWxlKCksIG1hc2tJbWFnZS52ZXJ0aWNhbFJ1bGUoKSkpOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAppbmRleCA5ZmM0MjZkMWI4Mzhl
MmQzZTIxZDgzMmQ0N2JiNjIxODllYTE5OWIzLi5lMDA2YjgxYTZjMWUyYzU0MGMzMTg1YTE3Y2Zi
ZTU5NTM5ZjJmMDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVT
aGVldE93bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93
bmVyLmNwcApAQCAtMTA5LDcgKzEwOSw4IEBAIHZvaWQgSW5saW5lU3R5bGVTaGVldE93bmVyOjpj
cmVhdGVTaGVldEZyb21UZXh0Q29udGVudHMoRWxlbWVudCYgZWxlbWVudCkKIHZvaWQgSW5saW5l
U3R5bGVTaGVldE93bmVyOjpjbGVhclNoZWV0KCkKIHsKICAgICBBU1NFUlQobV9zaGVldCk7Ci0g
ICAgbV9zaGVldC5yZWxlYXNlKCktPmNsZWFyT3duZXJOb2RlKCk7CisgICAgYXV0byBzaGVldCA9
IFdURk1vdmUobV9zaGVldCk7CisgICAgc2hlZXQtPmNsZWFyT3duZXJOb2RlKCk7CiB9CiAKIGlu
bGluZSBib29sIGlzVmFsaWRDU1NDb250ZW50VHlwZShFbGVtZW50JiBlbGVtZW50LCBjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Fw
cGx5U3R5bGVDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNv
bW1hbmQuY3BwCmluZGV4IGEwNTk5ZGUzMjRjNTU5MTJkZTE5NDEwMTI2NjVhMzgzYWI4ZmZlZDUu
LjI2N2Y5NTA1YzUxYzQ3ZWVkMWRlYWQwMDBkZDhkODhmMDlmYTdiYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCkBAIC04NDAsNyArODQwLDcgQEAg
dm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlJbmxpbmVTdHlsZVRvTm9kZVJhbmdlKEVkaXRp
bmdTdHlsZSogc3R5bGUsIFBhc3NSZWYKICAgICAgICAgaWYgKHJ1bi5kdW1teUVsZW1lbnQpCiAg
ICAgICAgICAgICByZW1vdmVOb2RlKHJ1bi5kdW1teUVsZW1lbnQpOwogICAgICAgICBpZiAocnVu
LnN0YXJ0QW5kRW5kQXJlU3RpbGxJbkRvY3VtZW50KCkpCi0gICAgICAgICAgICBhcHBseUlubGlu
ZVN0eWxlQ2hhbmdlKHJ1bi5zdGFydC5yZWxlYXNlKCksIHJ1bi5lbmQucmVsZWFzZSgpLCBydW4u
Y2hhbmdlLCBBZGRTdHlsZWRFbGVtZW50KTsKKyAgICAgICAgICAgIGFwcGx5SW5saW5lU3R5bGVD
aGFuZ2UoV1RGTW92ZShydW4uc3RhcnQpLCBXVEZNb3ZlKHJ1bi5lbmQpLCBydW4uY2hhbmdlLCBB
ZGRTdHlsZWRFbGVtZW50KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKaW5kZXggYjkwNDJmYTRkZjc4OWE1NmE2OGU5Mjkz
M2Q3NTA5ZGUyMjZjYmY0ZS4uOTE3OTdhMWJmY2FmOTAyNzI1NjUxMjNkZWU0ZTU5MjE5MTRkNzlk
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFu
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5j
cHAKQEAgLTUyMiw3ICs1MjIsNyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZW1vdmVD
aGlsZHJlbkluUmFuZ2UoUGFzc1JlZlB0cjxOb2RlPiBub2RlLCB1bnNpZ25lZAogICAgICAgICBj
aGlsZHJlbi5hcHBlbmQoY2hpbGQpOwogCiAgICAgZm9yIChhdXRvJiBjaGlsZCA6IGNoaWxkcmVu
KQotICAgICAgICByZW1vdmVOb2RlKGNoaWxkLnJlbGVhc2UoKSk7CisgICAgICAgIHJlbW92ZU5v
ZGUoV1RGTW92ZShjaGlsZCkpOwogfQogCiB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZW1v
dmVOb2RlKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSwgU2hvdWxkQXNzdW1lQ29udGVudElzQWx3YXlz
RWRpdGFibGUgc2hvdWxkQXNzdW1lQ29udGVudElzQWx3YXlzRWRpdGFibGUpCkBAIC01NDEsNyAr
NTQxLDcgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVtb3ZlTm9kZUFuZFBydW5lQW5j
ZXN0b3JzKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSkKIHsKICAgICBSZWZQdHI8Q29udGFpbmVyTm9k
ZT4gcGFyZW50ID0gbm9kZS0+cGFyZW50Tm9kZSgpOwogICAgIHJlbW92ZU5vZGUobm9kZSk7Ci0g
ICAgcHJ1bmUocGFyZW50LnJlbGVhc2UoKSk7CisgICAgcHJ1bmUoV1RGTW92ZShwYXJlbnQpKTsK
IH0KIAogdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVJlbWFpbmluZ1NpYmxpbmdzVG9O
ZXdQYXJlbnQoTm9kZSogbm9kZSwgTm9kZSogcGFzdExhc3ROb2RlVG9Nb3ZlLCBQYXNzUmVmUHRy
PEVsZW1lbnQ+IHBycE5ld1BhcmVudCkKQEAgLTU4Myw3ICs1ODMsNyBAQCBIVE1MRWxlbWVudCog
Q29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlcGxhY2VFbGVtZW50V2l0aFNwYW5QcmVzZXJ2aW5nQ2hp
bGRyZW5BbmRBdAogdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cHJ1bmUoUGFzc1JlZlB0cjxO
b2RlPiBub2RlKQogewogICAgIGlmIChSZWZQdHI8Tm9kZT4gaGlnaGVzdE5vZGVUb1JlbW92ZSA9
IGhpZ2hlc3ROb2RlVG9SZW1vdmVJblBydW5pbmcobm9kZS5nZXQoKSkpCi0gICAgICAgIHJlbW92
ZU5vZGUoaGlnaGVzdE5vZGVUb1JlbW92ZS5yZWxlYXNlKCkpOworICAgICAgICByZW1vdmVOb2Rl
KFdURk1vdmUoaGlnaGVzdE5vZGVUb1JlbW92ZSkpOwogfQogCiB2b2lkIENvbXBvc2l0ZUVkaXRD
b21tYW5kOjpzcGxpdFRleHROb2RlKFBhc3NSZWZQdHI8VGV4dD4gbm9kZSwgdW5zaWduZWQgb2Zm
c2V0KQpAQCAtNjg4LDcgKzY4OCw3IEBAIFBvc2l0aW9uIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpy
ZXBsYWNlU2VsZWN0ZWRUZXh0SW5Ob2RlKGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICBSZWZQdHI8
VGV4dD4gdGV4dE5vZGUgPSBzdGFydC5jb250YWluZXJUZXh0KCk7CiAgICAgcmVwbGFjZVRleHRJ
bk5vZGUodGV4dE5vZGUsIHN0YXJ0Lm9mZnNldEluQ29udGFpbmVyTm9kZSgpLCBlbmQub2Zmc2V0
SW5Db250YWluZXJOb2RlKCkgLSBzdGFydC5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSwgdGV4dCk7
CiAKLSAgICByZXR1cm4gUG9zaXRpb24odGV4dE5vZGUucmVsZWFzZSgpLCBzdGFydC5vZmZzZXRJ
bkNvbnRhaW5lck5vZGUoKSArIHRleHQubGVuZ3RoKCkpOworICAgIHJldHVybiBQb3NpdGlvbihX
VEZNb3ZlKHRleHROb2RlKSwgc3RhcnQub2Zmc2V0SW5Db250YWluZXJOb2RlKCkgKyB0ZXh0Lmxl
bmd0aCgpKTsKIH0KIAogc3RhdGljIFZlY3RvcjxSZW5kZXJlZERvY3VtZW50TWFya2VyPiBjb3B5
TWFya2Vycyhjb25zdCBWZWN0b3I8UmVuZGVyZWREb2N1bWVudE1hcmtlcio+JiBtYXJrZXJQb2lu
dGVycykKQEAgLTg3Miw3ICs4NzIsNyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZWJh
bGFuY2VXaGl0ZXNwYWNlT25UZXh0U3Vic3RyaW5nKFBhc3NSZWZQdHI8VGV4dD4gcAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlz
RW5kT2ZQYXJhZ3JhcGgodmlzaWJsZURvd25zdHJlYW1Qb3MpIHx8ICh1bnNpZ25lZClkb3duc3Ry
ZWFtID09IHRleHQubGVuZ3RoKCkpOwogICAgIAogICAgIGlmIChzdHJpbmcgIT0gcmViYWxhbmNl
ZFN0cmluZykKLSAgICAgICAgcmVwbGFjZVRleHRJbk5vZGVQcmVzZXJ2aW5nTWFya2Vycyh0ZXh0
Tm9kZS5yZWxlYXNlKCksIHVwc3RyZWFtLCBsZW5ndGgsIHJlYmFsYW5jZWRTdHJpbmcpOworICAg
ICAgICByZXBsYWNlVGV4dEluTm9kZVByZXNlcnZpbmdNYXJrZXJzKFdURk1vdmUodGV4dE5vZGUp
LCB1cHN0cmVhbSwgbGVuZ3RoLCByZWJhbGFuY2VkU3RyaW5nKTsKIH0KIAogdm9pZCBDb21wb3Np
dGVFZGl0Q29tbWFuZDo6cHJlcGFyZVdoaXRlc3BhY2VBdFBvc2l0aW9uRm9yU3BsaXQoUG9zaXRp
b24mIHBvc2l0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9DcmVhdGVM
aW5rQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NyZWF0ZUxpbmtDb21tYW5k
LmNwcAppbmRleCBhM2VlN2U1MDU4NDI4ZWY4MzEwNTM5OThiODIxYjJkNDdmYjZhYThmLi4zYTA1
MjA4NzNiNDRmZTY0YTJlZDUyMmUzMzdkZmI3NGUxMmE2MjI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0NyZWF0ZUxpbmtDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0NyZWF0ZUxpbmtDb21tYW5kLmNwcApAQCAtNDMsMTYgKzQzLDE2IEBAIHZvaWQg
Q3JlYXRlTGlua0NvbW1hbmQ6OmRvQXBwbHkoKQogICAgIGlmIChlbmRpbmdTZWxlY3Rpb24oKS5p
c05vbmUoKSkKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICBSZWZQdHI8SFRNTEFuY2hv
ckVsZW1lbnQ+IGFuY2hvckVsZW1lbnQgPSBIVE1MQW5jaG9yRWxlbWVudDo6Y3JlYXRlKGRvY3Vt
ZW50KCkpOworICAgIGF1dG8gYW5jaG9yRWxlbWVudCA9IEhUTUxBbmNob3JFbGVtZW50OjpjcmVh
dGUoZG9jdW1lbnQoKSk7CiAgICAgYW5jaG9yRWxlbWVudC0+c2V0SHJlZihtX3VybCk7CiAgICAg
CiAgICAgaWYgKGVuZGluZ1NlbGVjdGlvbigpLmlzUmFuZ2UoKSkKLSAgICAgICAgYXBwbHlTdHls
ZWRFbGVtZW50KGFuY2hvckVsZW1lbnQucmVsZWFzZSgpKTsKKyAgICAgICAgYXBwbHlTdHlsZWRF
bGVtZW50KFdURk1vdmUoYW5jaG9yRWxlbWVudCkpOwogICAgIGVsc2UgewotICAgICAgICBpbnNl
cnROb2RlQXQoYW5jaG9yRWxlbWVudC5nZXQoKSwgZW5kaW5nU2VsZWN0aW9uKCkuc3RhcnQoKSk7
Ci0gICAgICAgIFJlZlB0cjxUZXh0PiB0ZXh0Tm9kZSA9IFRleHQ6OmNyZWF0ZShkb2N1bWVudCgp
LCBtX3VybCk7Ci0gICAgICAgIGFwcGVuZE5vZGUodGV4dE5vZGUucmVsZWFzZSgpLCBhbmNob3JF
bGVtZW50LmdldCgpKTsKLSAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rp
b24ocG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUoYW5jaG9yRWxlbWVudC5nZXQoKSksIHBvc2l0
aW9uSW5QYXJlbnRBZnRlck5vZGUoYW5jaG9yRWxlbWVudC5nZXQoKSksIERPV05TVFJFQU0sIGVu
ZGluZ1NlbGVjdGlvbigpLmlzRGlyZWN0aW9uYWwoKSkpOworICAgICAgICBpbnNlcnROb2RlQXQo
YW5jaG9yRWxlbWVudC5wdHIoKSwgZW5kaW5nU2VsZWN0aW9uKCkuc3RhcnQoKSk7CisgICAgICAg
IGF1dG8gdGV4dE5vZGUgPSBUZXh0OjpjcmVhdGUoZG9jdW1lbnQoKSwgbV91cmwpOworICAgICAg
ICBhcHBlbmROb2RlKFdURk1vdmUodGV4dE5vZGUpLCBhbmNob3JFbGVtZW50LnB0cigpKTsKKyAg
ICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocG9zaXRpb25JblBhcmVu
dEJlZm9yZU5vZGUoYW5jaG9yRWxlbWVudC5wdHIoKSksIHBvc2l0aW9uSW5QYXJlbnRBZnRlck5v
ZGUoYW5jaG9yRWxlbWVudC5wdHIoKSksIERPV05TVFJFQU0sIGVuZGluZ1NlbGVjdGlvbigpLmlz
RGlyZWN0aW9uYWwoKSkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5n
U3R5bGUuY3BwCmluZGV4IDI5MTRmNjI3MTJiNzJkMTE4YWViZDIxNjUyMTA5ZGJmNTRmY2IyZmEu
LmVjN2U3ZWI3NzJhNzFkMjliOWRiODFmMTNmODA5YTIyMWQyZjcxN2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKQEAgLTEyNDgsOSArMTI0OCw5IEBAIHZvaWQgRWRp
dGluZ1N0eWxlOjptZXJnZVN0eWxlKGNvbnN0IFN0eWxlUHJvcGVydGllcyogc3R5bGUsIENTU1By
b3BlcnR5T3ZlcnJpZGVNCiAgICAgICAgIGlmICgocHJvcGVydHkuaWQoKSA9PSBDU1NQcm9wZXJ0
eVRleHREZWNvcmF0aW9uIHx8IHByb3BlcnR5LmlkKCkgPT0gQ1NTUHJvcGVydHlXZWJraXRUZXh0
RGVjb3JhdGlvbnNJbkVmZmVjdCkKICAgICAgICAgICAgICYmIGlzPENTU1ZhbHVlTGlzdD4oKnBy
b3BlcnR5LnZhbHVlKCkpICYmIHZhbHVlKSB7CiAgICAgICAgICAgICBpZiAoaXM8Q1NTVmFsdWVM
aXN0PigqdmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbmV3
VmFsdWUgPSBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KCp2YWx1ZSkuY29weSgpOwotICAgICAgICAg
ICAgICAgIG1lcmdlVGV4dERlY29yYXRpb25WYWx1ZXMoKm5ld1ZhbHVlLCBkb3duY2FzdDxDU1NW
YWx1ZUxpc3Q+KCpwcm9wZXJ0eS52YWx1ZSgpKSk7Ci0gICAgICAgICAgICAgICAgbV9tdXRhYmxl
U3R5bGUtPnNldFByb3BlcnR5KHByb3BlcnR5LmlkKCksIG5ld1ZhbHVlLnJlbGVhc2UoKSwgcHJv
cGVydHkuaXNJbXBvcnRhbnQoKSk7CisgICAgICAgICAgICAgICAgYXV0byBuZXdWYWx1ZSA9IGRv
d25jYXN0PENTU1ZhbHVlTGlzdD4oKnZhbHVlKS5jb3B5KCk7CisgICAgICAgICAgICAgICAgbWVy
Z2VUZXh0RGVjb3JhdGlvblZhbHVlcyhuZXdWYWx1ZSwgZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pigq
cHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICAgICAgICAgIG1fbXV0YWJsZVN0eWxlLT5zZXRQ
cm9wZXJ0eShwcm9wZXJ0eS5pZCgpLCBXVEZNb3ZlKG5ld1ZhbHVlKSwgcHJvcGVydHkuaXNJbXBv
cnRhbnQoKSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB2YWx1ZSA9IG51bGxwdHI7IC8vIHRleHQtZGVjb3JhdGlvbjogbm9uZSBpcyBlcXVp
dmFsZW50IHRvIG5vdCBoYXZpbmcgdGhlIHByb3BlcnR5LgpAQCAtMTMwNyw4ICsxMzA3LDggQEAg
dm9pZCBFZGl0aW5nU3R5bGU6Om1lcmdlU3R5bGVGcm9tUnVsZXNGb3JTZXJpYWxpemF0aW9uKFN0
eWxlZEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgICAgICAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZh
bHVlPigqdmFsdWUpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYg
KGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLmlzUGVyY2VudGFnZSgpKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKFJlZlB0cjxDU1NWYWx1ZT4gY29tcHV0ZWRQcm9wZXJ0eVZhbHVl
ID0gY29tcHV0ZWRTdHlsZS5wcm9wZXJ0eVZhbHVlKHByb3BlcnR5LmlkKCkpKQotICAgICAgICAg
ICAgICAgICAgICBmcm9tQ29tcHV0ZWRTdHlsZS0+YWRkUGFyc2VkUHJvcGVydHkoQ1NTUHJvcGVy
dHkocHJvcGVydHkuaWQoKSwgY29tcHV0ZWRQcm9wZXJ0eVZhbHVlLnJlbGVhc2UoKSkpOworICAg
ICAgICAgICAgICAgIGlmIChhdXRvIGNvbXB1dGVkUHJvcGVydHlWYWx1ZSA9IGNvbXB1dGVkU3R5
bGUucHJvcGVydHlWYWx1ZShwcm9wZXJ0eS5pZCgpKSkKKyAgICAgICAgICAgICAgICAgICAgZnJv
bUNvbXB1dGVkU3R5bGUtPmFkZFBhcnNlZFByb3BlcnR5KENTU1Byb3BlcnR5KHByb3BlcnR5Lmlk
KCksIFdURk1vdmUoY29tcHV0ZWRQcm9wZXJ0eVZhbHVlKSkpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDM0Y2RjZTk5ZjNi
ZmYzMmQ0NjlmNDUxNjk3ZDRkNTlkYTcwOGM1ZmEuLmY2NjYzMzAxNjQzMDMxMzU4NTQwZmI3NGMx
MjUwNzg2ZjdjNzUzNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTEzNiw5ICsx
MzYsOSBAQCB2b2lkIENsZWFyVGV4dENvbW1hbmQ6OkNyZWF0ZUFuZEFwcGx5KGNvbnN0IFJlZlB0
cjxGcmFtZT4gZnJhbWUpCiAgICAgCiAgICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiBvbGRTZWxl
Y3Rpb24gPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CiAgICAgZnJhbWUtPnNlbGVj
dGlvbigpLnNlbGVjdEFsbCgpOwotICAgIFJlZlB0cjxDbGVhclRleHRDb21tYW5kPiBjbGVhckNv
bW1hbmQgPSBhZG9wdFJlZihuZXcgQ2xlYXJUZXh0Q29tbWFuZCgqZnJhbWUtPmRvY3VtZW50KCkp
KTsKKyAgICBhdXRvIGNsZWFyQ29tbWFuZCA9IGFkb3B0UmVmKCpuZXcgQ2xlYXJUZXh0Q29tbWFu
ZCgqZnJhbWUtPmRvY3VtZW50KCkpKTsKICAgICBjbGVhckNvbW1hbmQtPnNldFN0YXJ0aW5nU2Vs
ZWN0aW9uKG9sZFNlbGVjdGlvbik7Ci0gICAgYXBwbHlDb21tYW5kKGNsZWFyQ29tbWFuZC5yZWxl
YXNlKCkpOworICAgIGFwcGx5Q29tbWFuZChXVEZNb3ZlKGNsZWFyQ29tbWFuZCkpOwogfQogCiB1
c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMjQzMywxNiArMjQzMywxNiBAQCB2b2lkIEVk
aXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tp
bmdUeXBlTWFzayB0ZXh0QwogICAgIGJvb2wgYXN5bmNocm9ub3VzID0gbV9mcmFtZS5zZXR0aW5n
cygpLmFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgJiYgIXNob3VsZFNob3dDb3Jy
ZWN0aW9uUGFuZWw7CiAKICAgICAvLyBJbiBhc3luY2hyb25vdXMgbW9kZSwgd2UgaW50ZW50aW9u
YWxseSBjaGVjayBwYXJhZ3JhcGgtd2lkZSBzZW50ZW5jZS4KLSAgICBSZWZQdHI8U3BlbGxDaGVj
a1JlcXVlc3Q+IHJlcXVlc3QgPSBTcGVsbENoZWNrUmVxdWVzdDo6Y3JlYXRlKHJlc29sdmVUZXh0
Q2hlY2tpbmdUeXBlTWFzayh0ZXh0Q2hlY2tpbmdPcHRpb25zKSwgVGV4dENoZWNraW5nUHJvY2Vz
c0luY3JlbWVudGFsLCBhc3luY2hyb25vdXMgPyBwYXJhZ3JhcGhSYW5nZSA6IHJhbmdlVG9DaGVj
aywgcGFyYWdyYXBoUmFuZ2UpOworICAgIGF1dG8gcmVxdWVzdCA9IFNwZWxsQ2hlY2tSZXF1ZXN0
OjpjcmVhdGUocmVzb2x2ZVRleHRDaGVja2luZ1R5cGVNYXNrKHRleHRDaGVja2luZ09wdGlvbnMp
LCBUZXh0Q2hlY2tpbmdQcm9jZXNzSW5jcmVtZW50YWwsIGFzeW5jaHJvbm91cyA/IHBhcmFncmFw
aFJhbmdlIDogcmFuZ2VUb0NoZWNrLCBwYXJhZ3JhcGhSYW5nZSk7CiAKICAgICBpZiAoYXN5bmNo
cm9ub3VzKSB7Ci0gICAgICAgIG1fc3BlbGxDaGVja2VyLT5yZXF1ZXN0Q2hlY2tpbmdGb3IocmVx
dWVzdC5yZWxlYXNlKCkpOworICAgICAgICBtX3NwZWxsQ2hlY2tlci0+cmVxdWVzdENoZWNraW5n
Rm9yKFdURk1vdmUocmVxdWVzdCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgVmVj
dG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gcmVzdWx0czsKICAgICBjaGVja1RleHRPZlBhcmFncmFw
aCgqdGV4dENoZWNrZXIoKSwgcGFyYWdyYXBoVG9DaGVjay50ZXh0KCksIHJlc29sdmVUZXh0Q2hl
Y2tpbmdUeXBlTWFzayh0ZXh0Q2hlY2tpbmdPcHRpb25zKSwgcmVzdWx0cywgbV9mcmFtZS5zZWxl
Y3Rpb24oKS5zZWxlY3Rpb24oKSk7Ci0gICAgbWFya0FuZFJlcGxhY2VGb3IocmVxdWVzdC5yZWxl
YXNlKCksIHJlc3VsdHMpOworICAgIG1hcmtBbmRSZXBsYWNlRm9yKFdURk1vdmUocmVxdWVzdCks
IHJlc3VsdHMpOwogfQogCiBzdGF0aWMgYm9vbCBpc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudFR5
cGUoVGV4dENoZWNraW5nVHlwZSB0eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3JDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29t
bWFuZC5jcHAKaW5kZXggYTkzNTgwZTc2N2ZmY2IwZjQzYmFkMWY2ZDk4NWNhNmIzYTA3ZGZkOS4u
ZGRmMTk0YzcyYTczYjdmZmJkMThlYzYzZjJlYTU0YTg0OTc0MmQ4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCkBAIC0xNjUsMTIgKzE2NSwxMiBAQCBzdGF0aWMg
Ym9vbCBleGVjdXRlSW5zZXJ0RnJhZ21lbnQoRnJhbWUmIGZyYW1lLCBQYXNzUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IGZyYQogCiBzdGF0aWMgYm9vbCBleGVjdXRlSW5zZXJ0Tm9kZShGcmFtZSYg
ZnJhbWUsIFJlZjxOb2RlPiYmIGNvbnRlbnQpCiB7Ci0gICAgUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IGZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgp
KTsKKyAgICBhdXRvIGZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKCpmcmFtZS5k
b2N1bWVudCgpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBmcmFnbWVudC0+YXBw
ZW5kQ2hpbGQoY29udGVudCwgZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIHJldHVybiBleGVjdXRlSW5zZXJ0RnJhZ21lbnQoZnJhbWUsIGZyYWdtZW50LnJlbGVh
c2UoKSk7CisgICAgcmV0dXJuIGV4ZWN1dGVJbnNlcnRGcmFnbWVudChmcmFtZSwgV1RGTW92ZShm
cmFnbWVudCkpOwogfQogCiBzdGF0aWMgYm9vbCBleHBhbmRTZWxlY3Rpb25Ub0dyYW51bGFyaXR5
KEZyYW1lJiBmcmFtZSwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcAppbmRleCA5Yjk0NDhjYzY2ZDAwN2E4
ZWMyOTRiYzNiOWVmNWM4MTU2MjFiMTdiLi4xMDM5ODdhZDdlZGE5ODBmODBlNjEyOTZhNjM3YWEx
NGQ5OTcwODM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRD
b21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5k
LmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIGJvb2wgSW5zZXJ0VGV4dENvbW1hbmQ6OnBlcmZvcm1P
dmVyd3JpdGUoY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIHNlbGVjdEluc2VydGVkCiAKICAgICBy
ZXBsYWNlVGV4dEluTm9kZSh0ZXh0Tm9kZSwgc3RhcnQub2Zmc2V0SW5Db250YWluZXJOb2RlKCks
IGNvdW50LCB0ZXh0KTsKIAotICAgIFBvc2l0aW9uIGVuZFBvc2l0aW9uID0gUG9zaXRpb24odGV4
dE5vZGUucmVsZWFzZSgpLCBzdGFydC5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSArIHRleHQubGVu
Z3RoKCkpOworICAgIFBvc2l0aW9uIGVuZFBvc2l0aW9uID0gUG9zaXRpb24oV1RGTW92ZSh0ZXh0
Tm9kZSksIHN0YXJ0Lm9mZnNldEluQ29udGFpbmVyTm9kZSgpICsgdGV4dC5sZW5ndGgoKSk7CiAg
ICAgc2V0RW5kaW5nU2VsZWN0aW9uV2l0aG91dFZhbGlkYXRpb24oc3RhcnQsIGVuZFBvc2l0aW9u
KTsKICAgICBpZiAoIXNlbGVjdEluc2VydGVkVGV4dCkKICAgICAgICAgc2V0RW5kaW5nU2VsZWN0
aW9uKFZpc2libGVTZWxlY3Rpb24oZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpLCBlbmRp
bmdTZWxlY3Rpb24oKS5pc0RpcmVjdGlvbmFsKCkpKTsKQEAgLTI0NSw3ICsyNDUsNyBAQCBQb3Np
dGlvbiBJbnNlcnRUZXh0Q29tbWFuZDo6aW5zZXJ0VGFiKGNvbnN0IFBvc2l0aW9uJiBwb3MpCiAg
ICAgaWYgKGlzVGFiU3BhblRleHROb2RlKG5vZGUpKSB7CiAgICAgICAgIFJlZlB0cjxUZXh0PiB0
ZXh0Tm9kZSA9IGRvd25jYXN0PFRleHQ+KG5vZGUpOwogICAgICAgICBpbnNlcnRUZXh0SW50b05v
ZGUodGV4dE5vZGUsIG9mZnNldCwgIlx0Iik7Ci0gICAgICAgIHJldHVybiBQb3NpdGlvbih0ZXh0
Tm9kZS5yZWxlYXNlKCksIG9mZnNldCArIDEpOworICAgICAgICByZXR1cm4gUG9zaXRpb24oV1RG
TW92ZSh0ZXh0Tm9kZSksIG9mZnNldCArIDEpOwogICAgIH0KICAgICAKICAgICAvLyBjcmVhdGUg
bmV3IHRhYiBzcGFuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5v
ZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwCmluZGV4IGI2MWUyZmZhYWNl
NDI5NGFkM2QyMzZjYjJjZDYyMDRhOTdkZmJjYjMuLjE2ZjBmNjMxMDgwOGQ0MDk2MjYwNGY3MTk2
ZDNmNjdjYTE2NmI3NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3Zl
Tm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwCkBAIC00Nyw5ICs0
Nyw5IEBAIHZvaWQgUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQ6OmRvQXBwbHko
KQogCiAgICAgc2l6ZV90IHNpemUgPSBjaGlsZHJlbi5zaXplKCk7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgUmVmUHRyPE5vZGU+IGNoaWxkID0gV1RG
TW92ZShjaGlsZHJlbltpXSk7CisgICAgICAgIGF1dG8gY2hpbGQgPSBXVEZNb3ZlKGNoaWxkcmVu
W2ldKTsKICAgICAgICAgcmVtb3ZlTm9kZShjaGlsZCwgbV9zaG91bGRBc3N1bWVDb250ZW50SXNB
bHdheXNFZGl0YWJsZSk7Ci0gICAgICAgIGluc2VydE5vZGVCZWZvcmUoY2hpbGQucmVsZWFzZSgp
LCBtX25vZGUsIG1fc2hvdWxkQXNzdW1lQ29udGVudElzQWx3YXlzRWRpdGFibGUpOworICAgICAg
ICBpbnNlcnROb2RlQmVmb3JlKFdURk1vdmUoY2hpbGQpLCBtX25vZGUsIG1fc2hvdWxkQXNzdW1l
Q29udGVudElzQWx3YXlzRWRpdGFibGUpOwogICAgIH0KICAgICByZW1vdmVOb2RlKG1fbm9kZSwg
bV9zaG91bGRBc3N1bWVDb250ZW50SXNBbHdheXNFZGl0YWJsZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IGVkZTg3
ZGIzZmZlOWU1YzI4MTAzMWUxMmFmOGY0YWU4ZGUyZjUyNTYuLjQ5NDQwNWUyNDJmYTc4NmE1N2Qy
MWQyYzcxZmNhYzgyN2RhNTU1OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC0yMjksOSArMjI5LDkgQEAgdm9pZCBSZXBs
YWNlbWVudEZyYWdtZW50OjpyZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuKFBhc3NSZWZQdHI8
Tm9kZT4gbm9kZSkKIAogICAgIHdoaWxlIChSZWZQdHI8Tm9kZT4gbiA9IG5vZGUtPmZpcnN0Q2hp
bGQoKSkgewogICAgICAgICByZW1vdmVOb2RlKG4pOwotICAgICAgICBpbnNlcnROb2RlQmVmb3Jl
KG4ucmVsZWFzZSgpLCBub2RlLmdldCgpKTsKKyAgICAgICAgaW5zZXJ0Tm9kZUJlZm9yZShXVEZN
b3ZlKG4pLCBub2RlLmdldCgpKTsKICAgICB9Ci0gICAgcmVtb3ZlTm9kZShub2RlKTsKKyAgICBy
ZW1vdmVOb2RlKFdURk1vdmUobm9kZSkpOwogfQogCiB2b2lkIFJlcGxhY2VtZW50RnJhZ21lbnQ6
OnJlbW92ZU5vZGUoUGFzc1JlZlB0cjxOb2RlPiBub2RlKQpAQCAtNjc4LDcgKzY3OCw3IEBAIHZv
aWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Om1vdmVOb2RlT3V0T2ZBbmNlc3RvcihQYXNzUmVm
UHRyPE5vZGU+IHBycE5vZGUsIFBhCiAgICAgfQogICAgIGlmICghYW5jZXN0b3ItPmZpcnN0Q2hp
bGQoKSkgewogICAgICAgICBpbnNlcnRlZE5vZGVzLndpbGxSZW1vdmVOb2RlKGFuY2VzdG9yLmdl
dCgpKTsKLSAgICAgICAgcmVtb3ZlTm9kZShhbmNlc3Rvci5yZWxlYXNlKCkpOworICAgICAgICBy
ZW1vdmVOb2RlKFdURk1vdmUoYW5jZXN0b3IpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXggNDdlMWFhN2U5ZDdhMTM3ZTgz
YzA3ZWM0NzBhNTAyNDQxNDI2ZDJlYy4uN2RlM2Q4MDczMGI2MzMyYTUzOGUwZjBmZTUwNzY1OGE0
YzRlMzM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5j
cHAKQEAgLTI4MCw3ICsyODAsNyBAQCBzdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKFNldHRpbmdzKiBzZXR0aW5ncwogICAgIAogYm9v
bCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUoKQogewot
ICAgIHN0YXRpYyBTaGFyZWRCdWZmZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRhID0gY3JlYXRlVGVt
cGxhdGVEb2N1bWVudERhdGEoZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSkucmVsZWFzZSgpLmxlYWtS
ZWYoKTsKKyAgICBzdGF0aWMgU2hhcmVkQnVmZmVyKiB0ZW1wbGF0ZURvY3VtZW50RGF0YSA9IGNy
ZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGRvY3VtZW50KCktPnNldHRpbmdzKCkpLmxlYWtSZWYo
KTsKICAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiBzdG9yaW5nIHRoZSBkYXRhLCBpdCB3b3VsZCBi
ZSBtb3JlIGVmZmljaWVudCBpZiB3ZSBjb3VsZCBwYXJzZSB0aGUgdGVtcGxhdGUgZGF0YSBpbnRv
IHRoZQogICAgIC8vIHRlbXBsYXRlIERvY3VtZW50IG9uY2UsIHN0b3JlIHRoYXQgZG9jdW1lbnQs
IHRoZW4gImNvcHkiIGl0IHdoZW5ldmVyIHdlIGdldCBhbiBGVFAgZGlyZWN0b3J5IGxpc3Rpbmcu
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5jcHAKaW5kZXggMzk4ZDE0
NTdhNTk5YWZiZDUxMWRiMGFkMTY5OTVjZjZhYmViNWM1OS4uYWFiNGQ5NDYxM2Q0NGZkY2Q4NWZl
OGY5ZDBhNDE0MDM2YmRlNDYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9udEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50
LmNwcApAQCAtMTk0LDggKzE5NCw4IEBAIHZvaWQgSFRNTEZvbnRFbGVtZW50Ojpjb2xsZWN0U3R5
bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYKICAgICB9IGVs
c2UgaWYgKG5hbWUgPT0gY29sb3JBdHRyKQogICAgICAgICBhZGRIVE1MQ29sb3JUb1N0eWxlKHN0
eWxlLCBDU1NQcm9wZXJ0eUNvbG9yLCB2YWx1ZSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBmYWNl
QXR0cikgewotICAgICAgICBpZiAoUmVmUHRyPENTU1ZhbHVlTGlzdD4gZm9udEZhY2VWYWx1ZSA9
IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlRm9udEZhY2VWYWx1ZSh2YWx1ZSkpCi0g
ICAgICAgICAgICBzdHlsZS5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRG
YW1pbHksIGZvbnRGYWNlVmFsdWUucmVsZWFzZSgpKSk7CisgICAgICAgIGlmIChhdXRvIGZvbnRG
YWNlVmFsdWUgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUZvbnRGYWNlVmFsdWUo
dmFsdWUpKQorICAgICAgICAgICAgc3R5bGUuc2V0UHJvcGVydHkoQ1NTUHJvcGVydHkoQ1NTUHJv
cGVydHlGb250RmFtaWx5LCBXVEZNb3ZlKGZvbnRGYWNlVmFsdWUpKSk7CiAgICAgfSBlbHNlCiAg
ICAgICAgIEhUTUxFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUo
bmFtZSwgdmFsdWUsIHN0eWxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50
LmNwcAppbmRleCBhYzkyNzI4MWM1MmRkNWViYTRjZTllODkxMmJhN2Y4MThhZDkzYWIzLi42MTNm
ZjJkZjlmZWY1MWFhMTI0MWNkNWQyNTM3NmZjNDcxOTg4M2I0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC0yODQsOCArMjg0LDggQEAgdm9pZCBIVE1MRm9ybUVs
ZW1lbnQ6OnByZXBhcmVGb3JTdWJtaXNzaW9uKEV2ZW50KiBldmVudCkKIAogICAgIFN0cmluZ1Bh
aXJWZWN0b3IgY29udHJvbE5hbWVzQW5kVmFsdWVzOwogICAgIGdldFRleHRGaWVsZFZhbHVlcyhj
b250cm9sTmFtZXNBbmRWYWx1ZXMpOwotICAgIFJlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSA9
IEZvcm1TdGF0ZTo6Y3JlYXRlKHRoaXMsIGNvbnRyb2xOYW1lc0FuZFZhbHVlcywgJmRvY3VtZW50
KCksIE5vdFN1Ym1pdHRlZEJ5SmF2YVNjcmlwdCk7Ci0gICAgZnJhbWUtPmxvYWRlcigpLmNsaWVu
dCgpLmRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChmb3JtU3RhdGUucmVsZWFzZSgpKTsKKyAg
ICBhdXRvIGZvcm1TdGF0ZSA9IEZvcm1TdGF0ZTo6Y3JlYXRlKHRoaXMsIGNvbnRyb2xOYW1lc0Fu
ZFZhbHVlcywgJmRvY3VtZW50KCksIE5vdFN1Ym1pdHRlZEJ5SmF2YVNjcmlwdCk7CisgICAgZnJh
bWUtPmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChXVEZNb3Zl
KGZvcm1TdGF0ZSkpOwogCiAgICAgUmVmPEhUTUxGb3JtRWxlbWVudD4gcHJvdGVjdGVkVGhpcygq
dGhpcyk7CiAgICAgLy8gRXZlbnQgaGFuZGxpbmcgY2FuIHJlc3VsdCBpbiBtX3Nob3VsZFN1Ym1p
dCBiZWNvbWluZyB0cnVlLCByZWdhcmRsZXNzIG9mIGRpc3BhdGNoRXZlbnQoKSByZXR1cm4gdmFs
dWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAppbmRleCAxZjUyNGZk
ZThiN2FmNTAxZTg2ZDk2MDk0NDU5OTVmMTZkNTI3MmE2Li44N2YyYjc2MWY4NzE5YWViNWU2N2Vi
OGFkZTU1ODEwMGMxOGRkNmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVu
dC5jcHAKQEAgLTQzNSwxMiArNDM1LDEyIEBAIHZvaWQgSFRNTFRhYmxlRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyCiAKIHN0
YXRpYyBTdHlsZVByb3BlcnRpZXMqIGxlYWtCb3JkZXJTdHlsZShDU1NWYWx1ZUlEIHZhbHVlKQog
ewotICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHls
ZVByb3BlcnRpZXM6OmNyZWF0ZSgpOworICAgIGF1dG8gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzOjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCb3Jk
ZXJUb3BTdHlsZSwgdmFsdWUpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJv
cmRlckJvdHRvbVN0eWxlLCB2YWx1ZSk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3Bl
cnR5Qm9yZGVyTGVmdFN0eWxlLCB2YWx1ZSk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1By
b3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgdmFsdWUpOwotICAgIHJldHVybiBzdHlsZS5yZWxlYXNl
KCkubGVha1JlZigpOworICAgIHJldHVybiAmc3R5bGUubGVha1JlZigpOwogfQogCiBjb25zdCBT
dHlsZVByb3BlcnRpZXMqIEhUTUxUYWJsZUVsZW1lbnQ6OmFkZGl0aW9uYWxQcmVzZW50YXRpb25B
dHRyaWJ1dGVTdHlsZSgpIGNvbnN0CkBAIC01MzksNyArNTM5LDcgQEAgY29uc3QgU3R5bGVQcm9w
ZXJ0aWVzKiBIVE1MVGFibGVFbGVtZW50OjphZGRpdGlvbmFsQ2VsbFN0eWxlKCkKIAogc3RhdGlj
IFN0eWxlUHJvcGVydGllcyogbGVha0dyb3VwQm9yZGVyU3R5bGUoaW50IHJvd3MpCiB7Ci0gICAg
UmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVy
dGllczo6Y3JlYXRlKCk7CisgICAgYXV0byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6
OmNyZWF0ZSgpOwogICAgIGlmIChyb3dzKSB7CiAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShD
U1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBDU1NWYWx1ZVRoaW4pOwogICAgICAgICBzdHlsZS0+
c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgQ1NTVmFsdWVUaGluKTsK
QEAgLTU1MSw3ICs1NTEsNyBAQCBzdGF0aWMgU3R5bGVQcm9wZXJ0aWVzKiBsZWFrR3JvdXBCb3Jk
ZXJTdHlsZShpbnQgcm93cykKICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5
Qm9yZGVyTGVmdFN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKICAgICAgICAgc3R5bGUtPnNldFByb3Bl
cnR5KENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgQ1NTVmFsdWVTb2xpZCk7CiAgICAgfQot
ICAgIHJldHVybiBzdHlsZS5yZWxlYXNlKCkubGVha1JlZigpOworICAgIHJldHVybiAmc3R5bGUu
bGVha1JlZigpOwogfQogCiBjb25zdCBTdHlsZVByb3BlcnRpZXMqIEhUTUxUYWJsZUVsZW1lbnQ6
OmFkZGl0aW9uYWxHcm91cFN0eWxlKGJvb2wgcm93cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDNhYWQ5YjY1NTI1NTJkZjA1
ZGQyMDZhZWJmNDJhNmRiZjVkNGFlYTQuLmU2MjJkMGRmYzM5MmI1ZWNhMmM0NGIxZjIzOTFlNGZh
YTdjNDkyNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1
bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3Vt
ZW50UGFyc2VyLmNwcApAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2Vy
OjpydW5TY3JpcHRzRm9yUGF1c2VkVHJlZUJ1aWxkZXIoKQogICAgICAgICBBU1NFUlQoIW1fdHJl
ZUJ1aWxkZXItPmhhc1BhcnNlckJsb2NraW5nU2NyaXB0V29yaygpKTsKICAgICAgICAgLy8gV2Ug
d2lsbCBub3QgaGF2ZSBhIHNjcmlwdFJ1bm5lciB3aGVuIHBhcnNpbmcgYSBEb2N1bWVudEZyYWdt
ZW50LgogICAgICAgICBpZiAobV9zY3JpcHRSdW5uZXIpCi0gICAgICAgICAgICBtX3NjcmlwdFJ1
bm5lci0+ZXhlY3V0ZShzY3JpcHRFbGVtZW50LnJlbGVhc2UoKSwgc2NyaXB0U3RhcnRQb3NpdGlv
bik7CisgICAgICAgICAgICBtX3NjcmlwdFJ1bm5lci0+ZXhlY3V0ZShXVEZNb3ZlKHNjcmlwdEVs
ZW1lbnQpLCBzY3JpcHRTdGFydFBvc2l0aW9uKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRUcmFjay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZERhdGFUZXh0VHJhY2suY3BwCmluZGV4IDEzYWNhZDEx
YWVhMDIyYjhlNTBhN2M4MjlhYmY2ZjQ5MWI0ZWNiMGMuLjdiZjI3YWUyMDA2ZDc5Mzg2Nzg4ZTY3
M2RhNjgyMGZlZTA5Yjk4ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
SW5iYW5kRGF0YVRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9J
bmJhbmREYXRhVGV4dFRyYWNrLmNwcApAQCAtNTQsOCArNTQsOCBAQCBJbmJhbmREYXRhVGV4dFRy
YWNrOjp+SW5iYW5kRGF0YVRleHRUcmFjaygpCiAKIHZvaWQgSW5iYW5kRGF0YVRleHRUcmFjazo6
YWRkRGF0YUN1ZShJbmJhbmRUZXh0VHJhY2tQcml2YXRlKiwgY29uc3QgTWVkaWFUaW1lJiBzdGFy
dCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCkKIHsKLSAgICBSZWZQdHI8RGF0YUN1ZT4gY3VlID0gRGF0YUN1ZTo6Y3JlYXRlKCpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksIHN0YXJ0LCBlbmQsIGRhdGEsIGxlbmd0aCk7Ci0gICAgYWRkQ3Vl
KGN1ZS5yZWxlYXNlKCksIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIGF1dG8gY3VlID0gRGF0
YUN1ZTo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHN0YXJ0LCBlbmQsIGRhdGEs
IGxlbmd0aCk7CisgICAgYWRkQ3VlKFdURk1vdmUoY3VlKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7
CiB9CiAKICNpZiBFTkFCTEUoREFUQUNVRV9WQUxVRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwCmluZGV4IDI0OWYxY2NhNGQ4
ZDg0ZTYzZmVlMzFjYzFhNDVlZDJiMzQ2YzI2NWYuLjdkYzAyN2M1NzkyNmNmMDFhN2JlYjhiZTk1
OTFiYWJlNTJjNWQ1ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5i
YW5kR2VuZXJpY1RleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9J
bmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcApAQCAtMjIxLDEzICsyMjEsMTMgQEAgdm9pZCBJbmJh
bmRHZW5lcmljVGV4dFRyYWNrOjpuZXdDdWVzUGFyc2VkKCkKICAgICBwYXJzZXIoKS5nZXROZXdD
dWVzKGN1ZXMpOwogCiAgICAgZm9yIChhdXRvJiBjdWVEYXRhIDogY3VlcykgewotICAgICAgICBS
ZWZQdHI8VlRUQ3VlPiB2dHRDdWUgPSBWVFRDdWU6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCAqY3VlRGF0YSk7CisgICAgICAgIGF1dG8gdnR0Q3VlID0gVlRUQ3VlOjpjcmVhdGUo
KnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKmN1ZURhdGEpOwogCi0gICAgICAgIGlmIChoYXND
dWUodnR0Q3VlLmdldCgpLCBUZXh0VHJhY2tDdWU6Oklnbm9yZUR1cmF0aW9uKSkgeworICAgICAg
ICBpZiAoaGFzQ3VlKHZ0dEN1ZS5wdHIoKSwgVGV4dFRyYWNrQ3VlOjpJZ25vcmVEdXJhdGlvbikp
IHsKICAgICAgICAgICAgIExPRyhNZWRpYSwgIkluYmFuZEdlbmVyaWNUZXh0VHJhY2s6Om5ld0N1
ZXNQYXJzZWQgaWdub3JpbmcgYWxyZWFkeSBhZGRlZCBjdWU6IHN0YXJ0PSUuMmYsIGVuZD0lLjJm
LCBjb250ZW50PVwiJXNcIlxuIiwgdnR0Q3VlLT5zdGFydFRpbWUoKSwgdnR0Q3VlLT5lbmRUaW1l
KCksIHZ0dEN1ZS0+dGV4dCgpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9Ci0gICAgICAgIGFkZEN1ZSh2dHRDdWUucmVsZWFzZSgpLCBBU1NFUlRfTk9fRVhD
RVBUSU9OKTsKKyAgICAgICAgYWRkQ3VlKFdURk1vdmUodnR0Q3VlKSwgQVNTRVJUX05PX0VYQ0VQ
VElPTik7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0lu
YmFuZFdlYlZUVFRleHRUcmFjay5jcHAKaW5kZXggMDlhZWVkNGUxZTU4YWE4OGJhYTU4MDcyY2E5
ZTMxYmU2ZDhhZjI4NC4uOTliNDk0NTg4MTcyMDM2ODNhNThlNThiZjIyM2VlYjY1M2YwMjg4YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJh
Y2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRy
YWNrLmNwcApAQCAtNzYsMTMgKzc2LDEzIEBAIHZvaWQgSW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpu
ZXdDdWVzUGFyc2VkKCkKICAgICBwYXJzZXIoKS5nZXROZXdDdWVzKGN1ZXMpOwogCiAgICAgZm9y
IChhdXRvJiBjdWVEYXRhIDogY3VlcykgewotICAgICAgICBSZWZQdHI8VlRUQ3VlPiB2dHRDdWUg
PSBWVFRDdWU6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqY3VlRGF0YSk7Cisg
ICAgICAgIGF1dG8gdnR0Q3VlID0gVlRUQ3VlOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgKmN1ZURhdGEpOwogCi0gICAgICAgIGlmIChoYXNDdWUodnR0Q3VlLmdldCgpLCBUZXh0
VHJhY2tDdWU6Oklnbm9yZUR1cmF0aW9uKSkgeworICAgICAgICBpZiAoaGFzQ3VlKHZ0dEN1ZS5w
dHIoKSwgVGV4dFRyYWNrQ3VlOjpJZ25vcmVEdXJhdGlvbikpIHsKICAgICAgICAgICAgIExPRyhN
ZWRpYSwgIkluYmFuZFdlYlZUVFRleHRUcmFjazo6bmV3Q3Vlc1BhcnNlZCBpZ25vcmluZyBhbHJl
YWR5IGFkZGVkIGN1ZTogc3RhcnQ9JS4yZiwgZW5kPSUuMmYsIGNvbnRlbnQ9XCIlc1wiXG4iLCB2
dHRDdWUtPnN0YXJ0VGltZSgpLCB2dHRDdWUtPmVuZFRpbWUoKSwgdnR0Q3VlLT50ZXh0KCkudXRm
OCgpLmRhdGEoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgYWRk
Q3VlKHZ0dEN1ZS5yZWxlYXNlKCksIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgICAgICBhZGRD
dWUoV1RGTW92ZSh2dHRDdWUpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICB9CiB9CiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUxpc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVMaXN0LmNwcAppbmRl
eCA2YjM5Mjk5ZGQzOTBhNGI3YzZkNGZiMTNlMDc2MjkwZjJiODFkNjRhLi5mZmQ4ZWFlNGQ5OTM2
NDgwYTZhNWJjMzU5MmZlMDgwYjcxNmUxM2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RleHRUcmFja0N1ZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVGV4dFRyYWNrQ3VlTGlzdC5jcHAKQEAgLTEwMSw5ICsxMDEsOSBAQCBib29sIFRleHRU
cmFja0N1ZUxpc3Q6OmFkZChQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4gcHJwQ3VlLCBzaXplX3Qg
c3RhcnQsIHNpemVfdAogCiAgICAgc2l6ZV90IGluZGV4ID0gKHN0YXJ0ICsgZW5kKSAvIDI7CiAg
ICAgaWYgKGN1ZS0+aXNPcmRlcmVkQmVmb3JlKG1fbGlzdFtpbmRleF0uZ2V0KCkpKQotICAgICAg
ICByZXR1cm4gYWRkKGN1ZS5yZWxlYXNlKCksIHN0YXJ0LCBpbmRleCk7CisgICAgICAgIHJldHVy
biBhZGQoV1RGTW92ZShjdWUpLCBzdGFydCwgaW5kZXgpOwogCi0gICAgcmV0dXJuIGFkZChjdWUu
cmVsZWFzZSgpLCBpbmRleCArIDEsIGVuZCk7CisgICAgcmV0dXJuIGFkZChXVEZNb3ZlKGN1ZSks
IGluZGV4ICsgMSwgZW5kKTsKIH0KIAogYm9vbCBUZXh0VHJhY2tDdWVMaXN0OjpyZW1vdmUoVGV4
dFRyYWNrQ3VlKiBjdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmNwcAppbmRleCAwNTQ4MGNhMjAzYjM4OGQ5YTk1YmQzNDdjODUzYzViNmE0NWJmNjRj
Li5jN2M2ZDZmNGU2OTcwZWFhMWRlYTM1OWYxYjdjZTg2OGIxNWE1OWYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTYzMSw4ICs2MzEs
MTAgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0SW5saW5lU3R5bGVzRm9yTm9kZShFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2QKICAgICAgICAgcmV0dXJuOwogCiAgICAgaW5s
aW5lU3R5bGUgPSBzdHlsZVNoZWV0LT5idWlsZE9iamVjdEZvclN0eWxlKGVsZW1lbnQtPmNzc29t
U3R5bGUoKSk7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+
IGF0dHJpYnV0ZXMgPSBidWlsZE9iamVjdEZvckF0dHJpYnV0ZXNTdHlsZShlbGVtZW50KTsKLSAg
ICBhdHRyaWJ1dGVzU3R5bGUgPSBhdHRyaWJ1dGVzID8gYXR0cmlidXRlcy5yZWxlYXNlKCkgOiBu
dWxscHRyOworICAgIGlmIChhdXRvIGF0dHJpYnV0ZXMgPSBidWlsZE9iamVjdEZvckF0dHJpYnV0
ZXNTdHlsZShlbGVtZW50KSkKKyAgICAgICAgYXR0cmlidXRlc1N0eWxlID0gV1RGTW92ZShhdHRy
aWJ1dGVzKTsKKyAgICBlbHNlCisgICAgICAgIGF0dHJpYnV0ZXNTdHlsZSA9IG51bGxwdHI7CiB9
CiAKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldENvbXB1dGVkU3R5bGVGb3JOb2RlKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3Bl
cnR5Pj4mIHN0eWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5jcHAKaW5kZXggZDBjM2RhMTdhNmM5Y2NkMGQxZDgyOTEyZmMyNTU3NmY2OTgzMTY3Yi4u
ODdkMDJhY2ZjN2ZlMmE1YzI4YjkxMDQ0YTM2ZGU4ZDdlYjAzOWRjNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC00NjIsOCArNDYyLDgg
QEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cHVzaENoaWxkTm9kZXNUb0Zyb250ZW5kKGludCBu
b2RlSWQsIGludCBkZXB0aCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+
PiBjaGlsZHJlbiA9IGJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihub2RlLCBkZXB0aCwg
bm9kZU1hcCk7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnNldENoaWxkTm9kZXMobm9kZUlk
LCBjaGlsZHJlbi5yZWxlYXNlKCkpOworICAgIGF1dG8gY2hpbGRyZW4gPSBidWlsZEFycmF5Rm9y
Q29udGFpbmVyQ2hpbGRyZW4obm9kZSwgZGVwdGgsIG5vZGVNYXApOworICAgIG1fZnJvbnRlbmRE
aXNwYXRjaGVyLT5zZXRDaGlsZE5vZGVzKG5vZGVJZCwgV1RGTW92ZShjaGlsZHJlbikpOwogfQog
CiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaXNjYXJkQmluZGluZ3MoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKaW5kZXgg
ZWJlZGU5ZGY5YTA1MzcwMTY4ZWE0NGNhZTJmMDRjZTg3OGJlZmE3OS4uMzM3MDU0NjdjM2I1YzBh
MTc5NDZkZmUxNjk2NGViZDdmYTUzNDgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCkBAIC0zMzAsNyArMzMwLDcgQEAg
c3RhdGljIFJlZlB0cjxJREJLZXk+IGlkYktleUZyb21JbnNwZWN0b3JPYmplY3QoSW5zcGVjdG9y
T2JqZWN0KiBrZXkpCiAgICAgfSBlbHNlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
cmV0dXJuIGlkYktleS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGlkYktleTsKIH0KIAogc3RhdGlj
IFJlZlB0cjxJREJLZXlSYW5nZT4gaWRiS2V5UmFuZ2VGcm9tS2V5UmFuZ2UoY29uc3QgSW5zcGVj
dG9yT2JqZWN0KiBrZXlSYW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggNDMxNTRiMzk3NGRhN2E5NzlhMjZkMTgyOWM3
MWQ0MTliNjI3Y2Q3NS4uOTE4Njg2ZWEzMmVmMGZlMGJjNDE4NWRiYjgyYjhmMDcxZjhjNDZlZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5jcHAKQEAgLTY4Miw3ICs2ODIsNyBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6bG9h
ZFJlc291cmNlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJgogICAgIC8v
IEluc3BlY3RvclRocmVhZGFibGVMb2FkZXJDbGllbnQgZGVsZXRlcyBpdHNlbGYgd2hlbiB0aGUg
bG9hZCBjb21wbGV0ZXMuCiAgICAgSW5zcGVjdG9yVGhyZWFkYWJsZUxvYWRlckNsaWVudCogaW5z
cGVjdG9yVGhyZWFkYWJsZUxvYWRlckNsaWVudCA9IG5ldyBJbnNwZWN0b3JUaHJlYWRhYmxlTG9h
ZGVyQ2xpZW50KGNhbGxiYWNrLmNvcHlSZWYoKSk7CiAKLSAgICBSZWZQdHI8RG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyPiBsb2FkZXIgPSBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSgq
ZG9jdW1lbnQsICppbnNwZWN0b3JUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LCByZXF1ZXN0LCBvcHRp
b25zKTsKKyAgICBhdXRvIGxvYWRlciA9IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRl
KCpkb2N1bWVudCwgKmluc3BlY3RvclRocmVhZGFibGVMb2FkZXJDbGllbnQsIHJlcXVlc3QsIG9w
dGlvbnMpOwogICAgIGlmICghbG9hZGVyKSB7CiAgICAgICAgIGluc3BlY3RvclRocmVhZGFibGVM
b2FkZXJDbGllbnQtPmRpZEZhaWxMb2FkZXJDcmVhdGlvbigpOwogICAgICAgICByZXR1cm47CkBA
IC02OTIsNyArNjkyLDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmxvYWRSZXNvdXJj
ZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYKICAgICBpZiAoIWNhbGxi
YWNrLT5pc0FjdGl2ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpbnNwZWN0b3JUaHJlYWRh
YmxlTG9hZGVyQ2xpZW50LT5zZXRMb2FkZXIobG9hZGVyLnJlbGVhc2UoKSk7CisgICAgaW5zcGVj
dG9yVGhyZWFkYWJsZUxvYWRlckNsaWVudC0+c2V0TG9hZGVyKFdURk1vdmUobG9hZGVyKSk7CiB9
CiAKIHN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0PiBi
dWlsZE9iamVjdEZvclNlYXJjaFJlc3VsdChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3Qg
U3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCwgaW50IG1hdGNoZXNDb3VudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRl
eCA2ZDU3M2NlOWMxMWZjNWQyM2ZlNzc4ZDU2ZjczNDEzM2E0MjU4YjMzLi43ZGU5OGFhZDI5ODhi
NzZhNmU1NjZiNDAwZWMxZGIwNDc1NWI5ZTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC05MjUsNyArOTI1LDcgQEAgUmVmPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U2VsZWN0b3JMaXN0PiBJbnNwZWN0b3JTdHlsZVNoZWV0
OjpidWlsZE9iamVjdEZvclMKICAgICAgICAgICAgIHNlbGVjdG9ycy0+YWRkSXRlbShidWlsZE9i
amVjdEZvclNlbGVjdG9yKHNlbGVjdG9yLCBlbGVtZW50KSk7CiAgICAgfQogICAgIGF1dG8gcmVz
dWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTZWxlY3Rvckxpc3Q6OmNyZWF0ZSgpCi0g
ICAgICAgIC5zZXRTZWxlY3RvcnMoc2VsZWN0b3JzLnJlbGVhc2UoKSkKKyAgICAgICAgLnNldFNl
bGVjdG9ycyhXVEZNb3ZlKHNlbGVjdG9ycykpCiAgICAgICAgIC5zZXRUZXh0KHNlbGVjdG9yVGV4
dCkKICAgICAgICAgLnJlbGVhc2UoKTsKICAgICBpZiAoc291cmNlRGF0YSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCmluZGV4IGJlYzEyMjNkNzY2Y2EyYjczMGQ4ZTkw
MWM4NWI2MzJmMDMwMGQ2ZTMuLjQxMjA2MDk4MzBkNDM1ZjY0NThkODZmMGEyY2Y3OWNmNjY3YTY0
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcApAQCAtMjM4LDgg
KzIzOCw4IEBAIFJlZjxGb3JtU3VibWlzc2lvbj4gRm9ybVN1Ym1pc3Npb246OmNyZWF0ZShIVE1M
Rm9ybUVsZW1lbnQqIGZvcm0sIGNvbnN0IEF0dHJpYnV0CiAgICAgZm9ybURhdGEtPnNldElkZW50
aWZpZXIoZ2VuZXJhdGVGb3JtRGF0YUlkZW50aWZpZXIoKSk7CiAgICAgZm9ybURhdGEtPnNldENv
bnRhaW5zUGFzc3dvcmREYXRhKGNvbnRhaW5zUGFzc3dvcmREYXRhKTsKICAgICBTdHJpbmcgdGFy
Z2V0T3JCYXNlVGFyZ2V0ID0gY29waWVkQXR0cmlidXRlcy50YXJnZXQoKS5pc0VtcHR5KCkgPyBk
b2N1bWVudC5iYXNlVGFyZ2V0KCkgOiBjb3BpZWRBdHRyaWJ1dGVzLnRhcmdldCgpOwotICAgIFJl
ZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSA9IEZvcm1TdGF0ZTo6Y3JlYXRlKGZvcm0sIGZvcm1W
YWx1ZXMsICZkb2N1bWVudCwgdHJpZ2dlcik7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9y
bVN1Ym1pc3Npb24oY29waWVkQXR0cmlidXRlcy5tZXRob2QoKSwgYWN0aW9uVVJMLCB0YXJnZXRP
ckJhc2VUYXJnZXQsIGVuY29kaW5nVHlwZSwgZm9ybVN0YXRlLnJlbGVhc2UoKSwgZm9ybURhdGEu
cmVsZWFzZSgpLCBib3VuZGFyeSwgbG9ja0hpc3RvcnksIGV2ZW50KSk7CisgICAgYXV0byBmb3Jt
U3RhdGUgPSBGb3JtU3RhdGU6OmNyZWF0ZShmb3JtLCBmb3JtVmFsdWVzLCAmZG9jdW1lbnQsIHRy
aWdnZXIpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvcm1TdWJtaXNzaW9uKGNvcGllZEF0
dHJpYnV0ZXMubWV0aG9kKCksIGFjdGlvblVSTCwgdGFyZ2V0T3JCYXNlVGFyZ2V0LCBlbmNvZGlu
Z1R5cGUsIFdURk1vdmUoZm9ybVN0YXRlKSwgV1RGTW92ZShmb3JtRGF0YSksIGJvdW5kYXJ5LCBs
b2NrSGlzdG9yeSwgZXZlbnQpKTsKIH0KIAogVVJMIEZvcm1TdWJtaXNzaW9uOjpyZXF1ZXN0VVJM
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGQ4NmE0NDU1
YmY3ZjFmZjNjNjM4YWY2ZTc0YjRhOTZjNTg4NGM2NWUuLmQyYmUyMzJlMDZkZmExZTc4YWNlYzA4
NDNjZGFlZWU0Njg2ZDRhZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApA
QCAtODc0LDkgKzg3NCw5IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkxJbnRvQ2hpbGRGcmFt
ZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcmVyLCBGCiAgICAgQVNTRVJUKGNo
aWxkRnJhbWUpOwogCiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCi0g
ICAgUmVmUHRyPEFyY2hpdmU+IHN1YmZyYW1lQXJjaGl2ZSA9IGFjdGl2ZURvY3VtZW50TG9hZGVy
KCktPnBvcEFyY2hpdmVGb3JTdWJmcmFtZShjaGlsZEZyYW1lLT50cmVlKCkudW5pcXVlTmFtZSgp
LCB1cmwpOworICAgIGF1dG8gc3ViZnJhbWVBcmNoaXZlID0gYWN0aXZlRG9jdW1lbnRMb2FkZXIo
KS0+cG9wQXJjaGl2ZUZvclN1YmZyYW1lKGNoaWxkRnJhbWUtPnRyZWUoKS51bmlxdWVOYW1lKCks
IHVybCk7CiAgICAgaWYgKHN1YmZyYW1lQXJjaGl2ZSkgewotICAgICAgICBjaGlsZEZyYW1lLT5s
b2FkZXIoKS5sb2FkQXJjaGl2ZShzdWJmcmFtZUFyY2hpdmUucmVsZWFzZSgpKTsKKyAgICAgICAg
Y2hpbGRGcmFtZS0+bG9hZGVyKCkubG9hZEFyY2hpdmUoV1RGTW92ZShzdWJmcmFtZUFyY2hpdmUp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FSQ0hJVkUp
CkBAIC0xMjE0LDcgKzEyMTQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMKGNvbnN0IEZy
YW1lTG9hZFJlcXVlc3QmIGZyYW1lTG9hZFJlcXVlc3QsIGNvbnN0IFN0cmluZwogICAgIGlmICh0
YXJnZXRGcmFtZSAmJiB0YXJnZXRGcmFtZSAhPSAmbV9mcmFtZSkgewogICAgICAgICBGcmFtZUxv
YWRSZXF1ZXN0IG5ld0ZyYW1lTG9hZFJlcXVlc3QoZnJhbWVMb2FkUmVxdWVzdCk7CiAgICAgICAg
IG5ld0ZyYW1lTG9hZFJlcXVlc3Quc2V0RnJhbWVOYW1lKCJfc2VsZiIpOwotICAgICAgICB0YXJn
ZXRGcmFtZS0+bG9hZGVyKCkubG9hZFVSTChuZXdGcmFtZUxvYWRSZXF1ZXN0LCByZWZlcnJlciwg
bmV3TG9hZFR5cGUsIGV2ZW50LCBmb3JtU3RhdGUucmVsZWFzZSgpKTsKKyAgICAgICAgdGFyZ2V0
RnJhbWUtPmxvYWRlcigpLmxvYWRVUkwobmV3RnJhbWVMb2FkUmVxdWVzdCwgcmVmZXJyZXIsIG5l
d0xvYWRUeXBlLCBldmVudCwgV1RGTW92ZShmb3JtU3RhdGUpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtMTIyNSw3ICsxMjI1LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTChj
b25zdCBGcmFtZUxvYWRSZXF1ZXN0JiBmcmFtZUxvYWRSZXF1ZXN0LCBjb25zdCBTdHJpbmcKIAog
ICAgIGlmICghdGFyZ2V0RnJhbWUgJiYgIWZyYW1lTmFtZS5pc0VtcHR5KCkpIHsKICAgICAgICAg
YWN0aW9uID0gYWN0aW9uLmNvcHlXaXRoU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeShzaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9BcHBseShtX2ZyYW1lLCBmcmFtZUxvYWRSZXF1ZXN0
LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSkpOwotICAgICAgICBwb2xpY3lDaGVja2Vy
KCkuY2hlY2tOZXdXaW5kb3dQb2xpY3koYWN0aW9uLCByZXF1ZXN0LCBmb3JtU3RhdGUucmVsZWFz
ZSgpLCBmcmFtZU5hbWUsIFt0aGlzLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIG9wZW5l
clBvbGljeV0oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1T
dGF0ZT4gZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgTmF2aWdhdGlv
bkFjdGlvbiYgYWN0aW9uLCBib29sIHNob3VsZENvbnRpbnVlKSB7CisgICAgICAgIHBvbGljeUNo
ZWNrZXIoKS5jaGVja05ld1dpbmRvd1BvbGljeShhY3Rpb24sIHJlcXVlc3QsIFdURk1vdmUoZm9y
bVN0YXRlKSwgZnJhbWVOYW1lLCBbdGhpcywgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBv
cGVuZXJQb2xpY3ldKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFzc1JlZlB0cjxG
b3JtU3RhdGU+IGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IE5hdmln
YXRpb25BY3Rpb24mIGFjdGlvbiwgYm9vbCBzaG91bGRDb250aW51ZSkgewogICAgICAgICAgICAg
Y29udGludWVMb2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3kocmVxdWVzdCwgZm9ybVN0YXRlLCBmcmFt
ZU5hbWUsIGFjdGlvbiwgc2hvdWxkQ29udGludWUsIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVS
TCwgb3BlbmVyUG9saWN5KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKQEAgLTEyNDQs
NyArMTI0NCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwoY29uc3QgRnJhbWVMb2FkUmVx
dWVzdCYgZnJhbWVMb2FkUmVxdWVzdCwgY29uc3QgU3RyaW5nCiAgICAgICAgIG9sZERvY3VtZW50
TG9hZGVyLT5zZXRMYXN0Q2hlY2tlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KCkpOwogICAgICAg
ICBwb2xpY3lDaGVja2VyKCkuc3RvcENoZWNrKCk7CiAgICAgICAgIHBvbGljeUNoZWNrZXIoKS5z
ZXRMb2FkVHlwZShuZXdMb2FkVHlwZSk7Ci0gICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05h
dmlnYXRpb25Qb2xpY3kocmVxdWVzdCwgZmFsc2UgLyogZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9u
c2UgKi8sIG9sZERvY3VtZW50TG9hZGVyLmdldCgpLCBmb3JtU3RhdGUucmVsZWFzZSgpLCBbdGhp
c10oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4s
IGJvb2wgc2hvdWxkQ29udGludWUpIHsKKyAgICAgICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmF2
aWdhdGlvblBvbGljeShyZXF1ZXN0LCBmYWxzZSAvKiBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25z
ZSAqLywgb2xkRG9jdW1lbnRMb2FkZXIuZ2V0KCksIFdURk1vdmUoZm9ybVN0YXRlKSwgW3RoaXNd
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBi
b29sIHNob3VsZENvbnRpbnVlKSB7CiAgICAgICAgICAgICBjb250aW51ZUZyYWdtZW50U2Nyb2xs
QWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KHJlcXVlc3QsIHNob3VsZENvbnRpbnVlKTsKICAgICAgICAg
fSk7CiAgICAgICAgIHJldHVybjsKQEAgLTEyNTIsNyArMTI1Miw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OmxvYWRVUkwoY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVMb2FkUmVxdWVzdCwgY29u
c3QgU3RyaW5nCiAKICAgICAvLyBtdXN0IGdyYWIgdGhpcyBub3csIHNpbmNlIHRoaXMgbG9hZCBt
YXkgc3RvcCB0aGUgcHJldmlvdXMgbG9hZCBhbmQgY2xlYXIgdGhpcyBmbGFnCiAgICAgYm9vbCBp
c1JlZGlyZWN0ID0gbV9xdWlja1JlZGlyZWN0Q29taW5nOwotICAgIGxvYWRXaXRoTmF2aWdhdGlv
bkFjdGlvbihyZXF1ZXN0LCBhY3Rpb24sIGxvY2tIaXN0b3J5LCBuZXdMb2FkVHlwZSwgZm9ybVN0
YXRlLnJlbGVhc2UoKSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKKyAgICBsb2FkV2l0
aE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdCwgYWN0aW9uLCBsb2NrSGlzdG9yeSwgbmV3TG9hZFR5
cGUsIFdURk1vdmUoZm9ybVN0YXRlKSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKICAg
ICBpZiAoaXNSZWRpcmVjdCkgewogICAgICAgICBtX3F1aWNrUmVkaXJlY3RDb21pbmcgPSBmYWxz
ZTsKICAgICAgICAgaWYgKG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcikKQEAgLTI3MDIsMTEg
KzI3MDIsMTEgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KGNvbnN0IEZyYW1l
TG9hZFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYKICAgICBpZiAoIWZyYW1lTmFtZS5p
c0VtcHR5KCkpIHsKICAgICAgICAgLy8gVGhlIHNlYXJjaCBmb3IgYSB0YXJnZXQgZnJhbWUgaXMg
ZG9uZSBlYXJsaWVyIGluIHRoZSBjYXNlIG9mIGZvcm0gc3VibWlzc2lvbi4KICAgICAgICAgaWYg
KEZyYW1lKiB0YXJnZXRGcmFtZSA9IGZvcm1TdGF0ZSA/IDAgOiBmaW5kRnJhbWVGb3JOYXZpZ2F0
aW9uKGZyYW1lTmFtZSkpIHsKLSAgICAgICAgICAgIHRhcmdldEZyYW1lLT5sb2FkZXIoKS5sb2Fk
V2l0aE5hdmlnYXRpb25BY3Rpb24od29ya2luZ1Jlc291cmNlUmVxdWVzdCwgYWN0aW9uLCBsb2Nr
SGlzdG9yeSwgbG9hZFR5cGUsIGZvcm1TdGF0ZS5yZWxlYXNlKCksIGFsbG93TmF2aWdhdGlvblRv
SW52YWxpZFVSTCk7CisgICAgICAgICAgICB0YXJnZXRGcmFtZS0+bG9hZGVyKCkubG9hZFdpdGhO
YXZpZ2F0aW9uQWN0aW9uKHdvcmtpbmdSZXNvdXJjZVJlcXVlc3QsIGFjdGlvbiwgbG9ja0hpc3Rv
cnksIGxvYWRUeXBlLCBXVEZNb3ZlKGZvcm1TdGF0ZSksIGFsbG93TmF2aWdhdGlvblRvSW52YWxp
ZFVSTCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBwb2xpY3lD
aGVja2VyKCkuY2hlY2tOZXdXaW5kb3dQb2xpY3koYWN0aW9uLCB3b3JraW5nUmVzb3VyY2VSZXF1
ZXN0LCBmb3JtU3RhdGUucmVsZWFzZSgpLCBmcmFtZU5hbWUsIFt0aGlzLCBhbGxvd05hdmlnYXRp
b25Ub0ludmFsaWRVUkwsIG9wZW5lclBvbGljeV0oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1l
TmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBib29sIHNob3VsZENvbnRpbnVl
KSB7CisgICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05ld1dpbmRvd1BvbGljeShhY3Rpb24s
IHdvcmtpbmdSZXNvdXJjZVJlcXVlc3QsIFdURk1vdmUoZm9ybVN0YXRlKSwgZnJhbWVOYW1lLCBb
dGhpcywgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBvcGVuZXJQb2xpY3ldKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSwg
Y29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwg
Ym9vbCBzaG91bGRDb250aW51ZSkgewogICAgICAgICAgICAgY29udGludWVMb2FkQWZ0ZXJOZXdX
aW5kb3dQb2xpY3kocmVxdWVzdCwgZm9ybVN0YXRlLCBmcmFtZU5hbWUsIGFjdGlvbiwgc2hvdWxk
Q29udGludWUsIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgb3BlbmVyUG9saWN5KTsKICAg
ICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKQEAgLTI3MTQsNyArMjcxNCw3IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdChjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBTdHJpbmcmCiAKICAgICAvLyBtdXN0IGdyYWIgdGhpcyBub3csIHNpbmNlIHRoaXMg
bG9hZCBtYXkgc3RvcCB0aGUgcHJldmlvdXMgbG9hZCBhbmQgY2xlYXIgdGhpcyBmbGFnCiAgICAg
Ym9vbCBpc1JlZGlyZWN0ID0gbV9xdWlja1JlZGlyZWN0Q29taW5nOwotICAgIGxvYWRXaXRoTmF2
aWdhdGlvbkFjdGlvbih3b3JraW5nUmVzb3VyY2VSZXF1ZXN0LCBhY3Rpb24sIGxvY2tIaXN0b3J5
LCBsb2FkVHlwZSwgZm9ybVN0YXRlLnJlbGVhc2UoKSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlk
VVJMKTsKKyAgICBsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24od29ya2luZ1Jlc291cmNlUmVxdWVz
dCwgYWN0aW9uLCBsb2NrSGlzdG9yeSwgbG9hZFR5cGUsIFdURk1vdmUoZm9ybVN0YXRlKSwgYWxs
b3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKICAgICBpZiAoaXNSZWRpcmVjdCkgewogICAgICAg
ICBtX3F1aWNrUmVkaXJlY3RDb21pbmcgPSBmYWxzZTsKICAgICAgICAgaWYgKG1fcHJvdmlzaW9u
YWxEb2N1bWVudExvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9n
cmVzc1RyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5j
cHAKaW5kZXggZDU2Y2EwNWRiOTkwYjMwYTZiMDdkMTJmYjJjMDllOTk2Yjc5NzIwZi4uNzUyZWVm
YzM3ODA2ODRkM2I1NWM2NDllMzAwYjYzOGQ4NjNjZDIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIFByb2dyZXNz
VHJhY2tlcjo6ZmluYWxQcm9ncmVzc0NvbXBsZXRlKCkKIHsKICAgICBMT0coUHJvZ3Jlc3MsICJG
aW5hbCBwcm9ncmVzcyBjb21wbGV0ZSAoJXApIiwgdGhpcyk7CiAgICAgCi0gICAgUmVmUHRyPEZy
YW1lPiBmcmFtZSA9IG1fb3JpZ2luYXRpbmdQcm9ncmVzc0ZyYW1lLnJlbGVhc2UoKTsKKyAgICBh
dXRvIGZyYW1lID0gV1RGTW92ZShtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZSk7CiAgICAgCiAg
ICAgLy8gQmVmb3JlIHJlc2V0dGluZyBwcm9ncmVzcyB2YWx1ZSBiZSBzdXJlIHRvIHNlbmQgY2xp
ZW50IGEgbGVhc3Qgb25lIG5vdGlmaWNhdGlvbgogICAgIC8vIHdpdGggZmluYWwgcHJvZ3Jlc3Mg
dmFsdWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDU5NGNjZTZjYTYzYTdhOTU1M2YwYTEzY2I4NzU1
NmYwNTlhYWY3NGEuLjM3YWM3NWRiZjUwMWM0OGI2NmQwNWJlNDU5NTNhNTYxN2NmOTJlMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
R3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlR3JvdXAuY3BwCkBAIC0zNjksNyArMzY5LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hl
R3JvdXA6OmRpc2Fzc29jaWF0ZURvY3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVyKiBsb2FkZXIp
CiAKICAgICAvLyBSZWxlYXNlIG91ciByZWZlcmVuY2UgdG8gdGhlIG5ld2VzdCBjYWNoZS4gVGhp
cyBjb3VsZCBjYXVzZSB1cyB0byBiZSBkZWxldGVkLgogICAgIC8vIEFueSBvbmdvaW5nIHVwZGF0
ZXMgd2lsbCBiZSBzdG9wcGVkIGZyb20gZGVzdHJ1Y3Rvci4KLSAgICBtX25ld2VzdENhY2hlLnJl
bGVhc2UoKTsKKyAgICBtX25ld2VzdENhY2hlID0gbnVsbHB0cjsKIH0KIAogdm9pZCBBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OmNhY2hlRGVzdHJveWVkKEFwcGxpY2F0aW9uQ2FjaGUqIGNhY2hlKQpA
QCAtNTk0LDcgKzU5NCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hM
b2FkaW5nKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGRvdWJsZSBmaW5pCiAgICAgCiAgICAgQVNT
RVJUKG1fY2FjaGVCZWluZ1VwZGF0ZWQpOwogCi0gICAgbV9jYWNoZUJlaW5nVXBkYXRlZC0+YWRk
UmVzb3VyY2UobV9jdXJyZW50UmVzb3VyY2UucmVsZWFzZSgpKTsKKyAgICBtX2NhY2hlQmVpbmdV
cGRhdGVkLT5hZGRSZXNvdXJjZShXVEZNb3ZlKG1fY3VycmVudFJlc291cmNlKSk7CiAgICAgbV9j
dXJyZW50SGFuZGxlID0gbnVsbHB0cjsKIAogICAgIC8vIFdoaWxlIGRvd25sb2FkaW5nIGNoZWNr
IHRvIHNlZSBpZiB3ZSBoYXZlIGV4Y2VlZGVkIHRoZSBhdmFpbGFibGUgcXVvdGEuCkBAIC04Njgs
NyArODY4LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNoZWNrSWZMb2FkSXNDb21w
bGV0ZSgpCiAKICAgICAgICAgQVNTRVJUKG1fY2FjaGVCZWluZ1VwZGF0ZWQpOwogICAgICAgICBp
ZiAobV9tYW5pZmVzdFJlc291cmNlKQotICAgICAgICAgICAgbV9jYWNoZUJlaW5nVXBkYXRlZC0+
c2V0TWFuaWZlc3RSZXNvdXJjZShtX21hbmlmZXN0UmVzb3VyY2UucmVsZWFzZSgpKTsKKyAgICAg
ICAgICAgIG1fY2FjaGVCZWluZ1VwZGF0ZWQtPnNldE1hbmlmZXN0UmVzb3VyY2UoV1RGTW92ZSht
X21hbmlmZXN0UmVzb3VyY2UpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvLyBXZSBj
YW4gZ2V0IGhlcmUgYXMgYSByZXN1bHQgb2YgcmV0cnlpbmcgdGhlIENvbXBsZXRlIHN0ZXAsIGZv
bGxvd2luZwogICAgICAgICAgICAgLy8gYSBmYWlsdXJlIG9mIHRoZSBjYWNoZSBzdG9yYWdlIHRv
IHNhdmUgdGhlIG5ld2VzdCBjYWNoZSBkdWUgdG8gaGl0dGluZwpAQCAtODg4LDcgKzg4OCw3IEBA
IHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpjaGVja0lmTG9hZElzQ29tcGxldGUoKQogICAg
ICAgICAgICAgZGlkUmVhY2hPcmlnaW5RdW90YSh0b3RhbFNwYWNlTmVlZGVkKTsKIAogICAgICAg
ICBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6RmFpbHVyZVJlYXNvbiBmYWlsdXJlUmVhc29uOwot
ICAgICAgICBzZXROZXdlc3RDYWNoZShtX2NhY2hlQmVpbmdVcGRhdGVkLnJlbGVhc2UoKSk7Cisg
ICAgICAgIHNldE5ld2VzdENhY2hlKFdURk1vdmUobV9jYWNoZUJlaW5nVXBkYXRlZCkpOwogICAg
ICAgICBpZiAobV9zdG9yYWdlLT5zdG9yZU5ld2VzdENhY2hlKHRoaXMsIG9sZE5ld2VzdENhY2hl
LmdldCgpLCBmYWlsdXJlUmVhc29uKSkgewogICAgICAgICAgICAgLy8gTmV3IGNhY2hlIHN0b3Jl
ZCwgbm93IHJlbW92ZSB0aGUgb2xkIGNhY2hlLgogICAgICAgICAgICAgaWYgKG9sZE5ld2VzdENh
Y2hlKQpAQCAtOTE5LDEwICs5MTksMTAgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNo
ZWNrSWZMb2FkSXNDb21wbGV0ZSgpCiAgICAgICAgICAgICAgICAgLy8gc2F2ZSB0aGUgbmV3IGNh
Y2hlLgogCiAgICAgICAgICAgICAgICAgLy8gU2F2ZSBhIHJlZmVyZW5jZSB0byB0aGUgbmV3IGNh
Y2hlLgotICAgICAgICAgICAgICAgIG1fY2FjaGVCZWluZ1VwZGF0ZWQgPSBtX25ld2VzdENhY2hl
LnJlbGVhc2UoKTsKKyAgICAgICAgICAgICAgICBtX2NhY2hlQmVpbmdVcGRhdGVkID0gV1RGTW92
ZShtX25ld2VzdENhY2hlKTsKICAgICAgICAgICAgICAgICBpZiAob2xkTmV3ZXN0Q2FjaGUpIHsK
ICAgICAgICAgICAgICAgICAgICAgLy8gUmVpbnN0YXRlIHRoZSBvbGROZXdlc3RDYWNoZS4KLSAg
ICAgICAgICAgICAgICAgICAgc2V0TmV3ZXN0Q2FjaGUob2xkTmV3ZXN0Q2FjaGUucmVsZWFzZSgp
KTsKKyAgICAgICAgICAgICAgICAgICAgc2V0TmV3ZXN0Q2FjaGUoV1RGTW92ZShvbGROZXdlc3RD
YWNoZSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBzY2hlZHVsZVJlYWNo
ZWRNYXhBcHBDYWNoZVNpemVDYWxsYmFjaygpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAg
LTk0NSw3ICs5NDUsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2hlY2tJZkxvYWRJ
c0NvbXBsZXRlKCkKICAgICAgICAgICAgIC8vIFJlaW5zdGF0ZSB0aGUgb2xkTmV3ZXN0Q2FjaGUs
IGlmIHRoZXJlIHdhcyBvbmUuCiAgICAgICAgICAgICBpZiAob2xkTmV3ZXN0Q2FjaGUpIHsKICAg
ICAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgZGlzY2FyZCB0aGUgZmFpbGVkIG5ldyBjYWNoZS4K
LSAgICAgICAgICAgICAgICBzZXROZXdlc3RDYWNoZShvbGROZXdlc3RDYWNoZS5yZWxlYXNlKCkp
OworICAgICAgICAgICAgICAgIHNldE5ld2VzdENhY2hlKFdURk1vdmUob2xkTmV3ZXN0Q2FjaGUp
KTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gV2UgbXVzdCBoYXZl
IGJlZW4gZGVsZXRlZCBieSB0aGUgbGFzdCBjYWxsIHRvIGRpc2Fzc29jaWF0ZURvY3VtZW50TG9h
ZGVyKCkuCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXgg
NTA0ZGE3ZmZjNGM1ZmNlZDY1YWQ5MjE4NDVlMzc5ZGM0ODY1NDEyYy4uMGRkYTU2NDVkYWFmNDdi
NzEyZjA0MGZmM2JlYmZmOWI3ZGM1YmU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC0xMjEs
MTQgKzEyMSwxNCBAQCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpsb2FkQ2FjaGVHcm91cChjb25zdCBVUkwmIG1hbmlmZQogICAgIAogICAgIHVuc2lnbmVk
IG5ld2VzdENhY2hlU3RvcmFnZUlEID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXRlbWVudC5n
ZXRDb2x1bW5JbnQ2NCgyKSk7CiAKLSAgICBSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gY2FjaGUg
PSBsb2FkQ2FjaGUobmV3ZXN0Q2FjaGVTdG9yYWdlSUQpOworICAgIGF1dG8gY2FjaGUgPSBsb2Fk
Q2FjaGUobmV3ZXN0Q2FjaGVTdG9yYWdlSUQpOwogICAgIGlmICghY2FjaGUpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgICAgICAKICAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGdyb3Vw
ID0gbmV3IEFwcGxpY2F0aW9uQ2FjaGVHcm91cCgqdGhpcywgbWFuaWZlc3RVUkwpOwogICAgICAg
CiAgICAgZ3JvdXAtPnNldFN0b3JhZ2VJRChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhdGVtZW50
LmdldENvbHVtbkludDY0KDApKSk7Ci0gICAgZ3JvdXAtPnNldE5ld2VzdENhY2hlKGNhY2hlLnJl
bGVhc2UoKSk7CisgICAgZ3JvdXAtPnNldE5ld2VzdENhY2hlKFdURk1vdmUoY2FjaGUpKTsKIAog
ICAgIHJldHVybiBncm91cDsKIH0gICAgCkBAIC0yMzksNyArMjM5LDcgQEAgQXBwbGljYXRpb25D
YWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FjaGVHcm91cEZvclVSTChjb25z
dCBVUkwmIHVybCkKICAgICAgICAgLy8gV2UgZm91bmQgYSBjYWNoZSBncm91cCB0aGF0IG1hdGNo
ZXMuIE5vdyBjaGVjayBpZiB0aGUgbmV3ZXN0IGNhY2hlIGhhcyBhIHJlc291cmNlIHdpdGgKICAg
ICAgICAgLy8gYSBtYXRjaGluZyBVUkwuCiAgICAgICAgIHVuc2lnbmVkIG5ld2VzdENhY2hlSUQg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhdGVtZW50LmdldENvbHVtbkludDY0KDIpKTsKLSAg
ICAgICAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IGNhY2hlID0gbG9hZENhY2hlKG5ld2VzdENh
Y2hlSUQpOworICAgICAgICBhdXRvIGNhY2hlID0gbG9hZENhY2hlKG5ld2VzdENhY2hlSUQpOwog
ICAgICAgICBpZiAoIWNhY2hlKQogICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTI1Miw3ICsy
NTIsNyBAQCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpj
YWNoZUdyb3VwRm9yVVJMKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICBBcHBsaWNhdGlvbkNhY2hl
R3JvdXAqIGdyb3VwID0gbmV3IEFwcGxpY2F0aW9uQ2FjaGVHcm91cCgqdGhpcywgbWFuaWZlc3RV
UkwpOwogICAgICAgICAKICAgICAgICAgZ3JvdXAtPnNldFN0b3JhZ2VJRChzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oc3RhdGVtZW50LmdldENvbHVtbkludDY0KDApKSk7Ci0gICAgICAgIGdyb3VwLT5z
ZXROZXdlc3RDYWNoZShjYWNoZS5yZWxlYXNlKCkpOworICAgICAgICBncm91cC0+c2V0TmV3ZXN0
Q2FjaGUoV1RGTW92ZShjYWNoZSkpOwogICAgICAgICAKICAgICAgICAgbV9jYWNoZXNJbk1lbW9y
eS5zZXQoZ3JvdXAtPm1hbmlmZXN0VVJMKCksIGdyb3VwKTsKICAgICAgICAgCkBAIC0zMDksNyAr
MzA5LDcgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
ZmFsbGJhY2tDYWNoZUdyb3VwRm9yVVJMKGNvbnN0IFUKICAgICAgICAgLy8gV2UgZm91bmQgYSBj
YWNoZSBncm91cCB0aGF0IG1hdGNoZXMuIE5vdyBjaGVjayBpZiB0aGUgbmV3ZXN0IGNhY2hlIGhh
cyBhIHJlc291cmNlIHdpdGgKICAgICAgICAgLy8gYSBtYXRjaGluZyBmYWxsYmFjayBuYW1lc3Bh
Y2UuCiAgICAgICAgIHVuc2lnbmVkIG5ld2VzdENhY2hlSUQgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oc3RhdGVtZW50LmdldENvbHVtbkludDY0KDIpKTsKLSAgICAgICAgUmVmUHRyPEFwcGxpY2F0
aW9uQ2FjaGU+IGNhY2hlID0gbG9hZENhY2hlKG5ld2VzdENhY2hlSUQpOworICAgICAgICBhdXRv
IGNhY2hlID0gbG9hZENhY2hlKG5ld2VzdENhY2hlSUQpOwogCiAgICAgICAgIFVSTCBmYWxsYmFj
a1VSTDsKICAgICAgICAgaWYgKGNhY2hlLT5pc1VSTEluT25saW5lV2hpdGVsaXN0KHVybCkpCkBA
IC0zMjIsNyArMzIyLDcgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6ZmFsbGJhY2tDYWNoZUdyb3VwRm9yVVJMKGNvbnN0IFUKICAgICAgICAgQXBwbGlj
YXRpb25DYWNoZUdyb3VwKiBncm91cCA9IG5ldyBBcHBsaWNhdGlvbkNhY2hlR3JvdXAoKnRoaXMs
IG1hbmlmZXN0VVJMKTsKICAgICAgICAgCiAgICAgICAgIGdyb3VwLT5zZXRTdG9yYWdlSUQoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXRlbWVudC5nZXRDb2x1bW5JbnQ2NCgwKSkpOwotICAgICAg
ICBncm91cC0+c2V0TmV3ZXN0Q2FjaGUoY2FjaGUucmVsZWFzZSgpKTsKKyAgICAgICAgZ3JvdXAt
PnNldE5ld2VzdENhY2hlKFdURk1vdmUoY2FjaGUpKTsKICAgICAgICAgCiAgICAgICAgIG1fY2Fj
aGVzSW5NZW1vcnkuc2V0KGdyb3VwLT5tYW5pZmVzdFVSTCgpLCBncm91cCk7CiAgICAgICAgIApA
QCAtMTExOSw3ICsxMTE5LDcgQEAgUGFzc1JlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2UKICAgICAKICAgICBj
YWNoZVN0YXRlbWVudC5iaW5kSW50NjQoMSwgc3RvcmFnZUlEKTsKIAotICAgIFJlZlB0cjxBcHBs
aWNhdGlvbkNhY2hlPiBjYWNoZSA9IEFwcGxpY2F0aW9uQ2FjaGU6OmNyZWF0ZSgpOworICAgIGF1
dG8gY2FjaGUgPSBBcHBsaWNhdGlvbkNhY2hlOjpjcmVhdGUoKTsKIAogICAgIFN0cmluZyBmbGF0
RmlsZURpcmVjdG9yeSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2NhY2hlRGlyZWN0b3J5
LCBtX2ZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7CiAKQEAgLTExMzQsNyArMTEzNCw3IEBAIFBh
c3NSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRD
YWNoZSh1bnNpZ25lZCBzdG9yYWdlCiAgICAgICAgIFZlY3RvcjxjaGFyPiBibG9iOwogICAgICAg
ICBjYWNoZVN0YXRlbWVudC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoNiwgYmxvYik7CiAgICAgICAg
IAotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhID0gU2hhcmVkQnVmZmVyOjphZG9w
dFZlY3RvcihibG9iKTsKKyAgICAgICAgYXV0byBkYXRhID0gU2hhcmVkQnVmZmVyOjphZG9wdFZl
Y3RvcihibG9iKTsKICAgICAgICAgCiAgICAgICAgIFN0cmluZyBwYXRoID0gY2FjaGVTdGF0ZW1l
bnQuZ2V0Q29sdW1uVGV4dCg3KTsKICAgICAgICAgbG9uZyBsb25nIHNpemUgPSAwOwpAQCAtMTE1
NCwxMiArMTE1NCwxMiBAQCBQYXNzUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IEFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUodW5zaWduZWQgc3RvcmFnZQogICAgICAgICBTdHJpbmcg
aGVhZGVycyA9IGNhY2hlU3RhdGVtZW50LmdldENvbHVtblRleHQoNSk7CiAgICAgICAgIHBhcnNl
SGVhZGVycyhoZWFkZXJzLCByZXNwb25zZSk7CiAgICAgICAgIAotICAgICAgICBSZWZQdHI8QXBw
bGljYXRpb25DYWNoZVJlc291cmNlPiByZXNvdXJjZSA9IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZTo6Y3JlYXRlKHVybCwgcmVzcG9uc2UsIHR5cGUsIGRhdGEucmVsZWFzZSgpLCBwYXRoKTsKKyAg
ICAgICAgYXV0byByZXNvdXJjZSA9IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKHVy
bCwgcmVzcG9uc2UsIHR5cGUsIFdURk1vdmUoZGF0YSksIHBhdGgpOwogCiAgICAgICAgIGlmICh0
eXBlICYgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpNYW5pZmVzdCkKLSAgICAgICAgICAgIGNh
Y2hlLT5zZXRNYW5pZmVzdFJlc291cmNlKHJlc291cmNlLnJlbGVhc2UoKSk7CisgICAgICAgICAg
ICBjYWNoZS0+c2V0TWFuaWZlc3RSZXNvdXJjZShXVEZNb3ZlKHJlc291cmNlKSk7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIGNhY2hlLT5hZGRSZXNvdXJjZShyZXNvdXJjZS5yZWxlYXNlKCkp
OworICAgICAgICAgICAgY2FjaGUtPmFkZFJlc291cmNlKFdURk1vdmUocmVzb3VyY2UpKTsKICAg
ICB9CiAKICAgICBpZiAocmVzdWx0ICE9IFNRTElURV9ET05FKQpAQCAtMTIxNyw3ICsxMjE3LDcg
QEAgUGFzc1JlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
bG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2UKICAgICAKICAgICBjYWNoZS0+c2V0U3RvcmFnZUlE
KHN0b3JhZ2VJRCk7CiAKLSAgICByZXR1cm4gY2FjaGUucmVsZWFzZSgpOworICAgIHJldHVybiBX
VEZNb3ZlKGNhY2hlKTsKIH0gICAgCiAgICAgCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjpyZW1vdmUoQXBwbGljYXRpb25DYWNoZSogY2FjaGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uY3BwCmlu
ZGV4IDdlZWU3ODM2MGM5OTU4NDU3ODRhMTAzOWZhNWQ4YzYzOTAwYjEzMTYuLjk4ZjZjMWUyZmEx
ZDRhNTA5MTMwMGQ1ODc4MDQ0MjExZDhmN2IyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uY3BwCkBA
IC03Niw5ICs3Niw5IEBAIEFyY2hpdmVSZXNvdXJjZSogQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlv
bjo6YXJjaGl2ZVJlc291cmNlRm9yVVJMKGNvbnN0IFVSTCYgdXJsCiAKIFBhc3NSZWZQdHI8QXJj
aGl2ZT4gQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjo6cG9wU3ViZnJhbWVBcmNoaXZlKGNvbnN0
IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBVUkwmIHVybCkKIHsKLSAgICBSZWZQdHI8QXJjaGl2
ZT4gYXJjaGl2ZSA9IG1fc3ViZnJhbWVzLnRha2UoZnJhbWVOYW1lKTsKKyAgICBhdXRvIGFyY2hp
dmUgPSBtX3N1YmZyYW1lcy50YWtlKGZyYW1lTmFtZSk7CiAgICAgaWYgKGFyY2hpdmUpCi0gICAg
ICAgIHJldHVybiBhcmNoaXZlLnJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoYXJj
aGl2ZSk7CiAKICAgICByZXR1cm4gbV9zdWJmcmFtZXMudGFrZSh1cmwuc3RyaW5nKCkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJj
aGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNo
aXZlLmNwcAppbmRleCA2ZjVmZWZlZGRkNDBhOTJlMTQ1ZmRkMWQxMmNmNWFjNzM5ZDdjOWNhLi5l
MDQ5MDYzMDA4MWEwMTJhNDMzMzI2YmUyNDIzMTgyN2RkZmNlOTcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAt
MzM0LDggKzMzNCw4IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25h
cnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChSZWZQdHI8QXJjaGl2ZVJlc291
cmNlPiBzdWJyZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHN1YnJlc291cmNlRGljdCkpCi0gICAg
ICAgICAgICAgICAgYWRkU3VicmVzb3VyY2Uoc3VicmVzb3VyY2UucmVsZWFzZSgpKTsKKyAgICAg
ICAgICAgIGlmIChhdXRvIHN1YnJlc291cmNlID0gY3JlYXRlUmVzb3VyY2Uoc3VicmVzb3VyY2VE
aWN0KSkKKyAgICAgICAgICAgICAgICBhZGRTdWJyZXNvdXJjZShXVEZNb3ZlKHN1YnJlc291cmNl
KSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCkBAIC0zNTQsOSArMzU0LDkgQEAgYm9vbCBMZWdh
Y3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAg
ICAgICAgICAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IHN1YmZyYW1lQXJjaGl2ZSA9IGNyZWF0
ZSgpOworICAgICAgICAgICAgYXV0byBzdWJmcmFtZUFyY2hpdmUgPSBjcmVhdGUoKTsKICAgICAg
ICAgICAgIGlmIChzdWJmcmFtZUFyY2hpdmUtPmV4dHJhY3Qoc3ViZnJhbWVEaWN0KSkKLSAgICAg
ICAgICAgICAgICBhZGRTdWJmcmFtZUFyY2hpdmUoc3ViZnJhbWVBcmNoaXZlLnJlbGVhc2UoKSk7
CisgICAgICAgICAgICAgICAgYWRkU3ViZnJhbWVBcmNoaXZlKFdURk1vdmUoc3ViZnJhbWVBcmNo
aXZlKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAi
TGVnYWN5V2ViQXJjaGl2ZSAtIEludmFsaWQgc3ViZnJhbWUgYXJjaGl2ZSBza2lwcGVkIik7CiAg
ICAgICAgIH0KQEAgLTU0Nyw4ICs1NDcsOCBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5nLCBGcgogICAg
ICAgICBjb25zdCBTdHJpbmcmIGljb25VUkwgPSBpY29uRGF0YWJhc2UoKS5zeW5jaHJvbm91c0lj
b25VUkxGb3JQYWdlVVJMKHJlc3BvbnNlVVJMKTsKICAgICAgICAgaWYgKCFpY29uVVJMLmlzRW1w
dHkoKSAmJiBpY29uRGF0YWJhc2UoKS5zeW5jaHJvbm91c0ljb25EYXRhS25vd25Gb3JJY29uVVJM
KGljb25VUkwpKSB7CiAgICAgICAgICAgICBpZiAoSW1hZ2UqIGljb25JbWFnZSA9IGljb25EYXRh
YmFzZSgpLnN5bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwocmVzcG9uc2VVUkwsIEludFNpemUoMTYs
IDE2KSkpIHsKLSAgICAgICAgICAgICAgICBpZiAoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gcmVz
b3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShpY29uSW1hZ2UtPmRhdGEoKSwgVVJMKFBh
cnNlZFVSTFN0cmluZywgaWNvblVSTCksICJpbWFnZS94LWljb24iLCAiIiwgIiIpKQotICAgICAg
ICAgICAgICAgICAgICBzdWJyZXNvdXJjZXMuYXBwZW5kKHJlc291cmNlLnJlbGVhc2UoKSk7Cisg
ICAgICAgICAgICAgICAgaWYgKGF1dG8gcmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0
ZShpY29uSW1hZ2UtPmRhdGEoKSwgVVJMKFBhcnNlZFVSTFN0cmluZywgaWNvblVSTCksICJpbWFn
ZS94LWljb24iLCAiIiwgIiIpKQorICAgICAgICAgICAgICAgICAgICBzdWJyZXNvdXJjZXMuYXBw
ZW5kKFdURk1vdmUocmVzb3VyY2UpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
QEAgLTU4Miw5ICs1ODIsOSBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJj
aGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiAgICAgLy8gV3JhcCB0aGUg
ZnJhbWVzZXQgZG9jdW1lbnQgaW4gYW4gaWZyYW1lIHNvIGl0IGNhbiBiZSBwYXN0ZWQgaW50bwog
ICAgIC8vIGFub3RoZXIgZG9jdW1lbnQgKHdoaWNoIHdpbGwgaGF2ZSBhIGJvZHkgb3IgZnJhbWVz
ZXQgb2YgaXRzIG93bikuIAogICAgIFN0cmluZyBpZnJhbWVNYXJrdXAgPSAiPGlmcmFtZSBmcmFt
ZWJvcmRlcj1cIm5vXCIgbWFyZ2lud2lkdGg9XCIwXCIgbWFyZ2luaGVpZ2h0PVwiMFwiIHdpZHRo
PVwiOTglJVwiIGhlaWdodD1cIjk4JSVcIiBzcmM9XCIiICsgZnJhbWUtPmxvYWRlcigpLmRvY3Vt
ZW50TG9hZGVyKCktPnJlc3BvbnNlKCkudXJsKCkuc3RyaW5nKCkgKyAiXCI+PC9pZnJhbWU+IjsK
LSAgICBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBpZnJhbWVSZXNvdXJjZSA9IEFyY2hpdmVSZXNv
dXJjZTo6Y3JlYXRlKHV0ZjhCdWZmZXIoaWZyYW1lTWFya3VwKSwgYmxhbmtVUkwoKSwgInRleHQv
aHRtbCIsICJVVEYtOCIsIFN0cmluZygpKTsKKyAgICBhdXRvIGlmcmFtZVJlc291cmNlID0gQXJj
aGl2ZVJlc291cmNlOjpjcmVhdGUodXRmOEJ1ZmZlcihpZnJhbWVNYXJrdXApLCBibGFua1VSTCgp
LCAidGV4dC9odG1sIiwgIlVURi04IiwgU3RyaW5nKCkpOwogCi0gICAgcmV0dXJuIGNyZWF0ZShp
ZnJhbWVSZXNvdXJjZS5yZWxlYXNlKCksIFZlY3RvcjxSZWZQdHI8QXJjaGl2ZVJlc291cmNlPj4o
KSwgVmVjdG9yPFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPj4geyBhcmNoaXZlIH0pOworICAgIHJl
dHVybiBjcmVhdGUoV1RGTW92ZShpZnJhbWVSZXNvdXJjZSksIFZlY3RvcjxSZWZQdHI8QXJjaGl2
ZVJlc291cmNlPj4oKSwgVmVjdG9yPFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPj4geyBhcmNoaXZl
IH0pOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNw
cAppbmRleCA0ZjU0NTI1NGRjODkyNDYxZDkyYWNkZDQ2MmY3NjQzZDlkNjRlZTc1Li45NmVlZjdm
ZTk3MGJlMTlhNWRlZDA4N2ZlOWZlN2ZiNWZkMzg5YTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTMzNCw5ICszMzQsOSBAQCBpbmxpbmUgdm9p
ZCBDYWNoZWRJbWFnZTo6Y3JlYXRlSW1hZ2UoKQogICAgICAgICBtX2ltYWdlID0gUERGRG9jdW1l
bnRJbWFnZTo6Y3JlYXRlKHRoaXMpOwogI2VuZGlmCiAgICAgZWxzZSBpZiAobV9yZXNwb25zZS5t
aW1lVHlwZSgpID09ICJpbWFnZS9zdmcreG1sIikgewotICAgICAgICBSZWZQdHI8U1ZHSW1hZ2U+
IHN2Z0ltYWdlID0gU1ZHSW1hZ2U6OmNyZWF0ZSgqdGhpcywgdXJsKCkpOwotICAgICAgICBtX3N2
Z0ltYWdlQ2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0ltYWdlQ2FjaGU+KHN2Z0ltYWdlLmdl
dCgpKTsKLSAgICAgICAgbV9pbWFnZSA9IHN2Z0ltYWdlLnJlbGVhc2UoKTsKKyAgICAgICAgYXV0
byBzdmdJbWFnZSA9IFNWR0ltYWdlOjpjcmVhdGUoKnRoaXMsIHVybCgpKTsKKyAgICAgICAgbV9z
dmdJbWFnZUNhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdJbWFnZUNhY2hlPihzdmdJbWFnZS5w
dHIoKSk7CisgICAgICAgIG1faW1hZ2UgPSBXVEZNb3ZlKHN2Z0ltYWdlKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBtX2ltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSh0aGlzKTsKICAgICAgICAg
ZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCptX2ltYWdlKS5zZXRBbGxvd1N1YnNhbXBsaW5nKG1fbG9h
ZGVyICYmIG1fbG9hZGVyLT5mcmFtZUxvYWRlcigpLT5mcmFtZSgpLnNldHRpbmdzKCkuaW1hZ2VT
dWJzYW1wbGluZ0VuYWJsZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aWNvbi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRh
dGFiYXNlLmNwcAppbmRleCBlMWVkYTVjYWExZDAwNWMwY2RlYTExM2M2NWIwNTk4Mzk1MzRmMDcy
Li5lZTQzN2U4NjI4ZWJmNGU4NjMyN2NjNzcwMzBmNWY2OTRlMzBiYjJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKQEAgLTU1OCw3ICs1NTgsNyBAQCB2
b2lkIEljb25EYXRhYmFzZTo6c2V0SWNvbkRhdGFGb3JJY29uVVJMKFBhc3NSZWZQdHI8U2hhcmVk
QnVmZmVyPiBkYXRhT3JpZ2luYWwsCiAgICAgICAgICAgICBpY29uID0gZ2V0T3JDcmVhdGVJY29u
UmVjb3JkKGljb25VUkwpOwogICAgIAogICAgICAgICAvLyBVcGRhdGUgdGhlIGRhdGEgYW5kIHNl
dCB0aGUgdGltZSBzdGFtcAotICAgICAgICBpY29uLT5zZXRJbWFnZURhdGEoZGF0YS5yZWxlYXNl
KCkpOworICAgICAgICBpY29uLT5zZXRJbWFnZURhdGEoV1RGTW92ZShkYXRhKSk7CiAgICAgICAg
IGljb24tPnNldFRpbWVzdGFtcCgoaW50KWN1cnJlbnRUaW1lKCkpOwogICAgICAgICAKICAgICAg
ICAgLy8gQ29weSB0aGUgY3VycmVudCByZXRhaW5pbmcgcGFnZVVSTHMgLSBpZiBhbnkgLSB0byBu
b3RpZnkgdGhlbSBvZiB0aGUgY2hhbmdlCkBAIC04OTMsMTAgKzg5MywxMCBAQCBQYXNzUmVmUHRy
PEljb25SZWNvcmQ+IEljb25EYXRhYmFzZTo6Z2V0T3JDcmVhdGVJY29uUmVjb3JkKGNvbnN0IFN0
cmluZyYgaWNvblVSTAogICAgIGlmIChJY29uUmVjb3JkKiBpY29uID0gbV9pY29uVVJMVG9SZWNv
cmRNYXAuZ2V0KGljb25VUkwpKQogICAgICAgICByZXR1cm4gaWNvbjsKIAotICAgIFJlZlB0cjxJ
Y29uUmVjb3JkPiBuZXdJY29uID0gSWNvblJlY29yZDo6Y3JlYXRlKGljb25VUkwpOwotICAgIG1f
aWNvblVSTFRvUmVjb3JkTWFwLnNldChpY29uVVJMLCBuZXdJY29uLmdldCgpKTsKKyAgICBhdXRv
IG5ld0ljb24gPSBJY29uUmVjb3JkOjpjcmVhdGUoaWNvblVSTCk7CisgICAgbV9pY29uVVJMVG9S
ZWNvcmRNYXAuc2V0KGljb25VUkwsIG5ld0ljb24ucHRyKCkpOwogCi0gICAgcmV0dXJuIG5ld0lj
b24ucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKG5ld0ljb24pOwogfQogCiAvLyBUaGlz
IG1ldGhvZCByZXRyaWV2ZXMgdGhlIGV4aXN0aW5nIFBhZ2VVUkxSZWNvcmQsIG9yIGNyZWF0ZXMg
YSBuZXcgb25lIGFuZCBtYXJrcyBpdCBhcyAiaW50ZXJlc3RlZCBpbiB0aGUgaW1wb3J0IiBmb3Ig
bGF0ZXIgbm90aWZpY2F0aW9uCkBAIC0xNDkzLDcgKzE0OTMsNyBAQCBib29sIEljb25EYXRhYmFz
ZTo6cmVhZEZyb21EYXRhYmFzZSgpCiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGljb25zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGRpZEFueVdvcmsgPSB0cnVlOwotICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZURhdGEgPSBnZXRJbWFnZURhdGFGb3JJY29uVVJM
RnJvbVNRTERhdGFiYXNlKGljb25zW2ldLT5pY29uVVJMKCkpOworICAgICAgICBhdXRvIGltYWdl
RGF0YSA9IGdldEltYWdlRGF0YUZvckljb25VUkxGcm9tU1FMRGF0YWJhc2UoaWNvbnNbaV0tPmlj
b25VUkwoKSk7CiAKICAgICAgICAgLy8gVmVyaWZ5IHRoaXMgaWNvbiBzdGlsbCB3YW50cyB0byBi
ZSByZWFkIGZyb20gZGlzawogICAgICAgICB7CkBAIC0xNTAzLDcgKzE1MDMsNyBAQCBib29sIElj
b25EYXRhYmFzZTo6cmVhZEZyb21EYXRhYmFzZSgpCiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgaWYgKG1faWNvbnNQZW5kaW5nUmVhZGluZy5jb250YWlucyhpY29uc1tpXSkpIHsK
ICAgICAgICAgICAgICAgICAgICAgLy8gU2V0IHRoZSBuZXcgZGF0YQotICAgICAgICAgICAgICAg
ICAgICBpY29uc1tpXS0+c2V0SW1hZ2VEYXRhKGltYWdlRGF0YS5yZWxlYXNlKCkpOworICAgICAg
ICAgICAgICAgICAgICBpY29uc1tpXS0+c2V0SW1hZ2VEYXRhKFdURk1vdmUoaW1hZ2VEYXRhKSk7
CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAvLyBSZW1vdmUgdGhp
cyBpY29uIGZyb20gdGhlIHNldCB0aGF0IG5lZWRzIHRvIGJlIHJlYWQKICAgICAgICAgICAgICAg
ICAgICAgbV9pY29uc1BlbmRpbmdSZWFkaW5nLnJlbW92ZShpY29uc1tpXSk7CkBAIC0xOTM2LDcg
KzE5MzYsNyBAQCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSWNvbkRhdGFiYXNlOjpnZXRJbWFn
ZURhdGFGb3JJY29uVVJMRnJvbVNRTERhdGFiYXNlKGNvbgogCiAgICAgbV9nZXRJbWFnZURhdGFG
b3JJY29uVVJMU3RhdGVtZW50LT5yZXNldCgpOwogICAgIAotICAgIHJldHVybiBpbWFnZURhdGEu
cmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKGltYWdlRGF0YSk7CiB9CiAKIHZvaWQgSWNv
bkRhdGFiYXNlOjpyZW1vdmVJY29uRnJvbVNRTERhdGFiYXNlKGNvbnN0IFN0cmluZyYgaWNvblVS
TCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCAxMTliZDQ2YTBkNmZjM2QzNTMyYTk4
MjRkNzQ1Y2FmNDIxYTdkOTViLi5lYTlhZDQyMDlhYTcyZDgyNTAyNzlhNzE0ZWUwNDc3NjY3NTM0
MDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC04MTIsMTMgKzgxMiwxMyBAQCBT
dG9yYWdlKiBET01XaW5kb3c6OnNlc3Npb25TdG9yYWdlKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25z
dAogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8U3RvcmFn
ZUFyZWE+IHN0b3JhZ2VBcmVhID0gcGFnZS0+c2Vzc2lvblN0b3JhZ2UoKS0+c3RvcmFnZUFyZWEo
ZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpOworICAgIGF1dG8gc3RvcmFnZUFyZWEgPSBwYWdl
LT5zZXNzaW9uU3RvcmFnZSgpLT5zdG9yYWdlQXJlYShkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4o
KSk7CiAgICAgaWYgKCFzdG9yYWdlQXJlYS0+Y2FuQWNjZXNzU3RvcmFnZShtX2ZyYW1lKSkgewog
ICAgICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0g
ICAgbV9zZXNzaW9uU3RvcmFnZSA9IFN0b3JhZ2U6OmNyZWF0ZShtX2ZyYW1lLCBzdG9yYWdlQXJl
YS5yZWxlYXNlKCkpOworICAgIG1fc2Vzc2lvblN0b3JhZ2UgPSBTdG9yYWdlOjpjcmVhdGUobV9m
cmFtZSwgV1RGTW92ZShzdG9yYWdlQXJlYSkpOwogICAgIHJldHVybiBtX3Nlc3Npb25TdG9yYWdl
LmdldCgpOwogfQogCkBAIC04NTgsMTQgKzg1OCwxNCBAQCBTdG9yYWdlKiBET01XaW5kb3c6Omxv
Y2FsU3RvcmFnZShFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKICAgICBpZiAoIXBhZ2UtPnNldHRp
bmdzKCkubG9jYWxTdG9yYWdlRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIFJlZlB0cjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEgPSBwYWdlLT5zdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXIoKS5sb2NhbFN0b3JhZ2VBcmVhKCpkb2N1bWVudCk7CisgICAgYXV0byBzdG9y
YWdlQXJlYSA9IHBhZ2UtPnN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigpLmxvY2FsU3RvcmFnZUFy
ZWEoKmRvY3VtZW50KTsKIAogICAgIGlmICghc3RvcmFnZUFyZWEtPmNhbkFjY2Vzc1N0b3JhZ2Uo
bV9mcmFtZSkpIHsKICAgICAgICAgZWMgPSBTRUNVUklUWV9FUlI7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAotICAgIG1fbG9jYWxTdG9yYWdlID0gU3RvcmFnZTo6Y3JlYXRlKG1f
ZnJhbWUsIHN0b3JhZ2VBcmVhLnJlbGVhc2UoKSk7CisgICAgbV9sb2NhbFN0b3JhZ2UgPSBTdG9y
YWdlOjpjcmVhdGUobV9mcmFtZSwgV1RGTW92ZShzdG9yYWdlQXJlYSkpOwogICAgIHJldHVybiBt
X2xvY2FsU3RvcmFnZS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CmluZGV4IDIxMTU1MzE4NGNlYzY3ZTBlNTllOTcyYjUzZDYxOGJkN2M5ZDJhZDQuLmVmZGVlZDEz
NzJlZjA4ODY5NjNlZTU0ZmMyZDY2YjZiZWNmMzc3YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5jcHAKQEAgLTIyNzgsNyArMjI3OCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjp1cGRh
dGVEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBEYXRhVHJhbnNm
CiAgICAgICAgICAgICBtX3Nob3VsZE9ubHlGaXJlRHJhZ092ZXJFdmVudCA9IGZhbHNlOwogICAg
ICAgICB9CiAgICAgfQotICAgIG1fZHJhZ1RhcmdldCA9IG5ld1RhcmdldC5yZWxlYXNlKCk7Cisg
ICAgbV9kcmFnVGFyZ2V0ID0gV1RGTW92ZShuZXdUYXJnZXQpOwogICAgIHJldHVybiBhY2NlcHQ7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0
ZUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVB
bmltYXRpb24uY3BwCmluZGV4IGVkMTliNjEzOWMzYTkxMmFlODg4NzQwYWExMzBhNzI0MTY4ZTA0
NjAuLjJmN2IxYWQwYTVkZjYxOWFjNGUzNzBmYjk1M2Y2ODk0ODU1MGFkNWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcApA
QCAtMTY4LDkgKzE2OCw5IEBAIHZvaWQgQ29tcG9zaXRlQW5pbWF0aW9uOjp1cGRhdGVUcmFuc2l0
aW9ucyhSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgUmVuZGVyCiAgICAgICAgICAgICAg
ICAgLy8gPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDc4Nz4KICAg
ICAgICAgICAgICAgICBpZiAoIWVxdWFsICYmIGlzQWN0aXZlVHJhbnNpdGlvbikgewogICAgICAg
ICAgICAgICAgICAgICAvLyBBZGQgdGhlIG5ldyB0cmFuc2l0aW9uCi0gICAgICAgICAgICAgICAg
ICAgIFJlZlB0cjxJbXBsaWNpdEFuaW1hdGlvbj4gaW1wbGljaXRBbmltYXRpb24gPSBJbXBsaWNp
dEFuaW1hdGlvbjo6Y3JlYXRlKGFuaW1hdGlvbiwgcHJvcCwgcmVuZGVyZXIsIHRoaXMsIG1vZGlm
aWVkQ3VycmVudFN0eWxlID8gbW9kaWZpZWRDdXJyZW50U3R5bGUuZ2V0KCkgOiBmcm9tU3R5bGUp
OwotICAgICAgICAgICAgICAgICAgICBMT0coQW5pbWF0aW9ucywgIkNyZWF0ZWQgSW1wbGljaXRB
bmltYXRpb24gJXAgb24gcmVuZGVyZXIgJXAgZm9yIHByb3BlcnR5ICVzIGR1cmF0aW9uICUuMmYg
ZGVsYXkgJS4yZiIsIGltcGxpY2l0QW5pbWF0aW9uLmdldCgpLCByZW5kZXJlciwgZ2V0UHJvcGVy
dHlOYW1lKHByb3ApLCBhbmltYXRpb24uZHVyYXRpb24oKSwgYW5pbWF0aW9uLmRlbGF5KCkpOwot
ICAgICAgICAgICAgICAgICAgICBtX3RyYW5zaXRpb25zLnNldChwcm9wLCBpbXBsaWNpdEFuaW1h
dGlvbi5yZWxlYXNlKCkpOworICAgICAgICAgICAgICAgICAgICBhdXRvIGltcGxpY2l0QW5pbWF0
aW9uID0gSW1wbGljaXRBbmltYXRpb246OmNyZWF0ZShhbmltYXRpb24sIHByb3AsIHJlbmRlcmVy
LCB0aGlzLCBtb2RpZmllZEN1cnJlbnRTdHlsZSA/IG1vZGlmaWVkQ3VycmVudFN0eWxlLmdldCgp
IDogZnJvbVN0eWxlKTsKKyAgICAgICAgICAgICAgICAgICAgTE9HKEFuaW1hdGlvbnMsICJDcmVh
dGVkIEltcGxpY2l0QW5pbWF0aW9uICVwIG9uIHJlbmRlcmVyICVwIGZvciBwcm9wZXJ0eSAlcyBk
dXJhdGlvbiAlLjJmIGRlbGF5ICUuMmYiLCBpbXBsaWNpdEFuaW1hdGlvbi5wdHIoKSwgcmVuZGVy
ZXIsIGdldFByb3BlcnR5TmFtZShwcm9wKSwgYW5pbWF0aW9uLmR1cmF0aW9uKCksIGFuaW1hdGlv
bi5kZWxheSgpKTsKKyAgICAgICAgICAgICAgICAgICAgbV90cmFuc2l0aW9ucy5zZXQocHJvcCwg
V1RGTW92ZShpbXBsaWNpdEFuaW1hdGlvbikpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IG5lZWQgb25lIHBhc3MgZm9yIHRo
ZSBzaW5nbGUgcHJvcCBjYXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5LmNwcAppbmRleCA5OWM3NmFiMmMxNDYxYTRiY2IxZjBhMjFlNDQ2OTAw
OTliYTQwZDViLi5lOThmYzc0NjI5ZTliYWM3MDdmZGFkNWFlNmRkNWQ4Yjc4MDJkYWU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAK
QEAgLTYyOCw3ICs2MjgsNyBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0Vmlv
bGF0aW9uKGNvbnN0IFN0cmluZyYgZWZmZWN0aXZlVmlvbGF0ZWREaXJlYwogICAgIC8vIHNlbnQg
ZXhwbGljaXRseS4gQXMgZm9yIHdoaWNoIGRpcmVjdGl2ZSB3YXMgdmlvbGF0ZWQsIHRoYXQncyBw
cmV0dHkKICAgICAvLyBoYXJtbGVzcyBpbmZvcm1hdGlvbi4KIAotICAgIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IGNzcFJlcG9ydCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAgYXV0
byBjc3BSZXBvcnQgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGNzcFJlcG9ydC0+
c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgiZG9jdW1lbnQtdXJpIiksIGRvY3VtZW50VVJJKTsKICAg
ICBjc3BSZXBvcnQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInJlZmVycmVyIiksIHJlZmVycmVy
KTsKICAgICBjc3BSZXBvcnQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInZpb2xhdGVkLWRpcmVj
dGl2ZSIpLCB2aW9sYXRlZERpcmVjdGl2ZVRleHQpOwpAQCAtNjQzLDcgKzY0Myw3IEBAIHZvaWQg
Q29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBlZmZl
Y3RpdmVWaW9sYXRlZERpcmVjCiAgICAgfQogCiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
cmVwb3J0T2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICByZXBvcnRPYmpl
Y3QtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoImNzcC1yZXBvcnQiKSwgY3NwUmVwb3J0LnJlbGVh
c2UoKSk7CisgICAgcmVwb3J0T2JqZWN0LT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJjc3AtcmVw
b3J0IiksIFdURk1vdmUoY3NwUmVwb3J0KSk7CiAKICAgICBSZWZQdHI8Rm9ybURhdGE+IHJlcG9y
dCA9IEZvcm1EYXRhOjpjcmVhdGUocmVwb3J0T2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCkp
OwogICAgIGZvciAoY29uc3QgYXV0byYgdXJsIDogcmVwb3J0VVJJcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tCmluZGV4IGIx
NjdjZTIwMTlkMjk0OGE3YWU5MzFkOTZhNWZjNzRjMzhiNzZmODAuLmIxNjVlYTQ3NmJhMmQ1YWE1
NzhjNGYyYWFhZjM4NTQ5MTYzNzg1MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
bWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbQpAQCAtNjIwLDkgKzYyMCw5IEBAIHZv
aWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6Y3JlYXRlT3ZlcmxheUlmTmVlZGVkKCkKICAg
ICBpZiAoIW1fbWFpbkZyYW1lLnNldHRpbmdzKCkuc2VydmljZUNvbnRyb2xzRW5hYmxlZCgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8UGFnZU92ZXJsYXk+IG92ZXJsYXkgPSBQYWdl
T3ZlcmxheTo6Y3JlYXRlKCp0aGlzLCBQYWdlT3ZlcmxheTo6T3ZlcmxheVR5cGU6OkRvY3VtZW50
KTsKLSAgICBtX3NlcnZpY2VzT3ZlcmxheSA9IG92ZXJsYXkuZ2V0KCk7Ci0gICAgbV9tYWluRnJh
bWUucGFnZU92ZXJsYXlDb250cm9sbGVyKCkuaW5zdGFsbFBhZ2VPdmVybGF5KG92ZXJsYXkucmVs
ZWFzZSgpLCBQYWdlT3ZlcmxheTo6RmFkZU1vZGU6OkRvTm90RmFkZSk7CisgICAgYXV0byBvdmVy
bGF5ID0gUGFnZU92ZXJsYXk6OmNyZWF0ZSgqdGhpcywgUGFnZU92ZXJsYXk6Ok92ZXJsYXlUeXBl
OjpEb2N1bWVudCk7CisgICAgbV9zZXJ2aWNlc092ZXJsYXkgPSBvdmVybGF5LnB0cigpOworICAg
IG1fbWFpbkZyYW1lLnBhZ2VPdmVybGF5Q29udHJvbGxlcigpLmluc3RhbGxQYWdlT3ZlcmxheShX
VEZNb3ZlKG92ZXJsYXkpLCBQYWdlT3ZlcmxheTo6RmFkZU1vZGU6OkRvTm90RmFkZSk7CiB9CiAK
IFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjp0ZWxlcGhv
bmVOdW1iZXJSYW5nZXNGb3JGb2N1c2VkRnJhbWUoKQpAQCAtNzM5LDcgKzczOSw3IEBAIHZvaWQg
U2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6ZGV0ZXJtaW5lQWN0aXZlSGlnaGxpZ2h0KGJvb2wm
IG1vdXNlSXNPdmVyQWN0aXZlCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICBtX2FjdGl2ZUhpZ2hsaWdodCA9IG1fbmV4dEFjdGl2ZUhpZ2hsaWdodC5yZWxlYXNlKCk7
CisgICAgICAgIG1fYWN0aXZlSGlnaGxpZ2h0ID0gV1RGTW92ZShtX25leHRBY3RpdmVIaWdobGln
aHQpOwogCiAgICAgICAgIGlmIChtX2FjdGl2ZUhpZ2hsaWdodCkgewogICAgICAgICAgICAgbV9z
ZXJ2aWNlc092ZXJsYXktPmxheWVyKCkuYWRkQ2hpbGQobV9hY3RpdmVIaWdobGlnaHQtPmxheWVy
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3Jv
bGxpbmdDb29yZGluYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNT
Y3JvbGxpbmdDb29yZGluYXRvci5oCmluZGV4IGQwOTY4YmIzMzgwNjg3ZGQzYmVmMzQzMTIwMTli
ZjMzM2JhN2YwNmEuLjYzMTYyY2FkODY1Mjk3YmRjNzQ0M2FjNDQ5MzM3NzliYzBkYmM0ZDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29v
cmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9s
bGluZ0Nvb3JkaW5hdG9yLmgKQEAgLTczLDcgKzczLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgU2Ny
b2xsaW5nU3RhdGVUcmVlKiBzY3JvbGxpbmdTdGF0ZVRyZWUoKSB7IHJldHVybiBtX3Njcm9sbGlu
Z1N0YXRlVHJlZS5nZXQoKTsgfQogCi0gICAgUGFzc1JlZlB0cjxTY3JvbGxpbmdUcmVlPiByZWxl
YXNlU2Nyb2xsaW5nVHJlZSgpIHsgcmV0dXJuIG1fc2Nyb2xsaW5nVHJlZS5yZWxlYXNlKCk7IH0K
KyAgICBQYXNzUmVmUHRyPFNjcm9sbGluZ1RyZWU+IHJlbGVhc2VTY3JvbGxpbmdUcmVlKCkgeyBy
ZXR1cm4gV1RGTW92ZShtX3Njcm9sbGluZ1RyZWUpOyB9CiAKICAgICB2b2lkIHVwZGF0ZVNjcm9s
bFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbChTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IEZsb2F0UG9p
bnQmLCBib29sIHByb2dyYW1tYXRpY1Njcm9sbCwgU2V0T3JTeW5jU2Nyb2xsaW5nTGF5ZXJQb3Np
dGlvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1N0YXRlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdTdGF0ZU5vZGUuY3BwCmluZGV4IGRmZDUyODU3YWY2ZDAzYTJlODcwMzQ1MmI4MzJmNjAyNjQy
NjQwMjQuLjg5YWVjYTBmNjk1NjllODY1NWNkZDAwMDU2NzFlMTkzMWI1NDhhYjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmNw
cApAQCAtNzQsMTMgKzc0LDEzIEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVOb2RlOjpzZXRQcm9wZXJ0
eUNoYW5nZWQodW5zaWduZWQgcHJvcGVydHlCaXQpCiAKIFBhc3NSZWZQdHI8U2Nyb2xsaW5nU3Rh
dGVOb2RlPiBTY3JvbGxpbmdTdGF0ZU5vZGU6OmNsb25lQW5kUmVzZXQoU2Nyb2xsaW5nU3RhdGVU
cmVlJiBhZG9wdGl2ZVRyZWUpCiB7Ci0gICAgUmVmUHRyPFNjcm9sbGluZ1N0YXRlTm9kZT4gY2xv
bmUgPSB0aGlzLT5jbG9uZShhZG9wdGl2ZVRyZWUpOworICAgIGF1dG8gY2xvbmUgPSB0aGlzLT5j
bG9uZShhZG9wdGl2ZVRyZWUpOwogCiAgICAgLy8gTm93IHRoYXQgdGhpcyBub2RlIGlzIGNsb25l
ZCwgcmVzZXQgb3VyIGNoYW5nZSBwcm9wZXJ0aWVzLgogICAgIHJlc2V0Q2hhbmdlZFByb3BlcnRp
ZXMoKTsKIAotICAgIGNsb25lQW5kUmVzZXRDaGlsZHJlbigqY2xvbmUsIGFkb3B0aXZlVHJlZSk7
Ci0gICAgcmV0dXJuIGNsb25lLnJlbGVhc2UoKTsKKyAgICBjbG9uZUFuZFJlc2V0Q2hpbGRyZW4o
Y2xvbmUuZ2V0KCksIGFkb3B0aXZlVHJlZSk7CisgICAgcmV0dXJuIFdURk1vdmUoY2xvbmUpOwog
fQogCiB2b2lkIFNjcm9sbGluZ1N0YXRlTm9kZTo6Y2xvbmVBbmRSZXNldENoaWxkcmVuKFNjcm9s
bGluZ1N0YXRlTm9kZSYgY2xvbmUsIFNjcm9sbGluZ1N0YXRlVHJlZSYgYWRvcHRpdmVUcmVlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVU
cmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJl
ZS5jcHAKaW5kZXggM2JlYzQzNjBjNGQxNTQ5Njc2MWZhYTQ3NDFmMjkwMzZjMTc5NmY5NC4uMTFj
ZWM1ZjVkZTdhMjFjNmFmMWE2ZWMwNjFhOWY1ZmJkOTRhZTU3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwCkBAIC0xMTUs
MTYgKzExNSwxNiBAQCBTY3JvbGxpbmdOb2RlSUQgU2Nyb2xsaW5nU3RhdGVUcmVlOjphdHRhY2hO
b2RlKFNjcm9sbGluZ05vZGVUeXBlIG5vZGVUeXBlLCBTY3JvbAogICAgICAgICAgICAgcmV0dXJu
IDA7CiAKICAgICAgICAgaWYgKG5vZGVUeXBlID09IEZyYW1lU2Nyb2xsaW5nTm9kZSAmJiBwYXJl
bnRJRCkgewotICAgICAgICAgICAgaWYgKFJlZlB0cjxTY3JvbGxpbmdTdGF0ZU5vZGU+IG9ycGhh
bmVkTm9kZSA9IG1fb3JwaGFuZWRTdWJmcmFtZU5vZGVzLnRha2UobmV3Tm9kZUlEKSkgeworICAg
ICAgICAgICAgaWYgKGF1dG8gb3JwaGFuZWROb2RlID0gbV9vcnBoYW5lZFN1YmZyYW1lTm9kZXMu
dGFrZShuZXdOb2RlSUQpKSB7CiAgICAgICAgICAgICAgICAgbmV3Tm9kZSA9IG9ycGhhbmVkTm9k
ZS5nZXQoKTsKLSAgICAgICAgICAgICAgICBwYXJlbnQtPmFwcGVuZENoaWxkKG9ycGhhbmVkTm9k
ZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgICAgIHBhcmVudC0+YXBwZW5kQ2hpbGQoV1RGTW92
ZShvcnBoYW5lZE5vZGUpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGlm
ICghbmV3Tm9kZSkgewotICAgICAgICAgICAgUmVmUHRyPFNjcm9sbGluZ1N0YXRlTm9kZT4gc3Rh
dGVOb2RlID0gY3JlYXRlTm9kZShub2RlVHlwZSwgbmV3Tm9kZUlEKTsKKyAgICAgICAgICAgIGF1
dG8gc3RhdGVOb2RlID0gY3JlYXRlTm9kZShub2RlVHlwZSwgbmV3Tm9kZUlEKTsKICAgICAgICAg
ICAgIG5ld05vZGUgPSBzdGF0ZU5vZGUuZ2V0KCk7Ci0gICAgICAgICAgICBwYXJlbnQtPmFwcGVu
ZENoaWxkKHN0YXRlTm9kZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgcGFyZW50LT5hcHBlbmRD
aGlsZChXVEZNb3ZlKHN0YXRlTm9kZSkpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCmluZGV4IGVhMzNlZmMx
ZDNiZjAwM2Y3NjZhOTg5ZjA0YzZhNTMwMjk4NjQ1N2YuLmY2NWNkZTNjMWFmZjQ1ZjY2ZDVmMjIz
NjM2NzE5MmYwY2IzMDdhMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0hSVEZFbGV2YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0hSVEZFbGV2YXRpb24uY3BwCkBAIC03NCwxMiArNzQsMTIgQEAgc3RhdGljIEF1ZGlvQnVzKiBn
ZXRDb25jYXRlbmF0ZWRJbXB1bHNlUmVzcG9uc2VzRm9yU3ViamVjdChjb25zdCBTdHJpbmcmIHN1
YmplY3QKICAgICBBdWRpb0J1cyogYnVzOwogICAgIEF1ZGlvQnVzTWFwOjppdGVyYXRvciBpdGVy
YXRvciA9IGF1ZGlvQnVzTWFwLmdldCgpLmZpbmQoc3ViamVjdE5hbWUpOwogICAgIGlmIChpdGVy
YXRvciA9PSBhdWRpb0J1c01hcC5nZXQoKS5lbmQoKSkgewotICAgICAgICBSZWZQdHI8QXVkaW9C
dXM+IGNvbmNhdGVuYXRlZEltcHVsc2VSZXNwb25zZXMgPSBBdWRpb0J1czo6bG9hZFBsYXRmb3Jt
UmVzb3VyY2Uoc3ViamVjdE5hbWUudXRmOCgpLmRhdGEoKSwgUmVzcG9uc2VTYW1wbGVSYXRlKTsK
KyAgICAgICAgYXV0byBjb25jYXRlbmF0ZWRJbXB1bHNlUmVzcG9uc2VzID0gQXVkaW9CdXM6Omxv
YWRQbGF0Zm9ybVJlc291cmNlKHN1YmplY3ROYW1lLnV0ZjgoKS5kYXRhKCksIFJlc3BvbnNlU2Ft
cGxlUmF0ZSk7CiAgICAgICAgIEFTU0VSVChjb25jYXRlbmF0ZWRJbXB1bHNlUmVzcG9uc2VzKTsK
ICAgICAgICAgaWYgKCFjb25jYXRlbmF0ZWRJbXB1bHNlUmVzcG9uc2VzKQogICAgICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICAgICAgYnVzID0gY29uY2F0ZW5hdGVkSW1wdWxzZVJlc3BvbnNlcy5y
ZWxlYXNlKCkubGVha1JlZigpOworICAgICAgICBidXMgPSBjb25jYXRlbmF0ZWRJbXB1bHNlUmVz
cG9uc2VzLmxlYWtSZWYoKTsKICAgICAgICAgYXVkaW9CdXNNYXAuZ2V0KCkuc2V0KHN1YmplY3RO
YW1lLCBidXMpOwogICAgIH0gZWxzZQogICAgICAgICBidXMgPSBpdGVyYXRvci0+dmFsdWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVz
aE1vbml0b3JNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rp
c3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwCmluZGV4IDk3ODJkMjg0NjBjYThmZDA5YzU4
ZTcxYTVkN2NjOGJlNTRkNDVjMDYuLmYwOGFlYmU3MmU3ZTI5NGFiNDlmZGQ1YWQ3MDNiZTVkMjYx
ZjJiOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3Bs
YXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwCkBAIC01NCwxMyArNTQs
MTMgQEAgRGlzcGxheVJlZnJlc2hNb25pdG9yKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2Vy
OjpjcmVhdGVNb25pdG9yRm9yQ2xpZW50KERpc3AKICAgICAgICAgcmV0dXJuIG1vbml0b3IuZ2V0
KCk7CiAgICAgfQogCi0gICAgUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9uaXRvcj4gbW9uaXRvciA9
IERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6Y3JlYXRlKGNsaWVudCk7CisgICAgYXV0byBtb25pdG9y
ID0gRGlzcGxheVJlZnJlc2hNb25pdG9yOjpjcmVhdGUoY2xpZW50KTsKICAgICBpZiAoIW1vbml0
b3IpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgbW9uaXRvci0+YWRkQ2xpZW50KGNs
aWVudCk7CiAgICAgRGlzcGxheVJlZnJlc2hNb25pdG9yKiByZXN1bHQgPSBtb25pdG9yLmdldCgp
OwotICAgIG1fbW9uaXRvcnMuYXBwZW5kKG1vbml0b3IucmVsZWFzZSgpKTsKKyAgICBtX21vbml0
b3JzLmFwcGVuZChXVEZNb3ZlKG1vbml0b3IpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZv
bnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9u
dHMuY3BwCmluZGV4IGMzZjIzMjYwMWE4MDBiMjVmZGQwOWI5NGMyMDUxNGQxYjJlZWMwNTcuLmQz
NmVkMDkyNzRlM2I3ZGE4NTJiZWEyY2FmOTQ4MmJkNGUxYzhlZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuY3BwCkBAIC0z
MjQsNyArMzI0LDcgQEAgR2x5cGhEYXRhIEZvbnRDYXNjYWRlRm9udHM6OmdseXBoRGF0YUZvclN5
c3RlbUZhbGxiYWNrKFVDaGFyMzIgYywgY29uc3QgRm9udENhc2MKICAgICBpZiAoIW9yaWdpbmFs
Rm9udCkKICAgICAgICAgb3JpZ2luYWxGb250ID0gJnByaW1hcnlSYW5nZXMuZm9udEZvckZpcnN0
UmFuZ2UoKTsKIAotICAgIFJlZlB0cjxGb250PiBzeXN0ZW1GYWxsYmFja0ZvbnQgPSBvcmlnaW5h
bEZvbnQtPnN5c3RlbUZhbGxiYWNrRm9udEZvckNoYXJhY3RlcihjLCBkZXNjcmlwdGlvbiwgbV9p
c0ZvclBsYXRmb3JtRm9udCk7CisgICAgYXV0byBzeXN0ZW1GYWxsYmFja0ZvbnQgPSBvcmlnaW5h
bEZvbnQtPnN5c3RlbUZhbGxiYWNrRm9udEZvckNoYXJhY3RlcihjLCBkZXNjcmlwdGlvbiwgbV9p
c0ZvclBsYXRmb3JtRm9udCk7CiAgICAgaWYgKCFzeXN0ZW1GYWxsYmFja0ZvbnQpCiAgICAgICAg
IHJldHVybiBHbHlwaERhdGEoKTsKIApAQCAtMzQ4LDcgKzM0OCw3IEBAIEdseXBoRGF0YSBGb250
Q2FzY2FkZUZvbnRzOjpnbHlwaERhdGFGb3JTeXN0ZW1GYWxsYmFjayhVQ2hhcjMyIGMsIGNvbnN0
IEZvbnRDYXNjCiAKICAgICAvLyBLZWVwIHRoZSBzeXN0ZW0gZmFsbGJhY2sgZm9udHMgd2UgdXNl
IGFsaXZlLgogICAgIGlmIChmYWxsYmFja0dseXBoRGF0YS5nbHlwaCkKLSAgICAgICAgbV9zeXN0
ZW1GYWxsYmFja0ZvbnRTZXQuYWRkKHN5c3RlbUZhbGxiYWNrRm9udC5yZWxlYXNlKCkpOworICAg
ICAgICBtX3N5c3RlbUZhbGxiYWNrRm9udFNldC5hZGQoV1RGTW92ZShzeXN0ZW1GYWxsYmFja0Zv
bnQpKTsKIAogICAgIHJldHVybiBmYWxsYmFja0dseXBoRGF0YTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAppbmRleCBiOWI5MjMxOTBjNWYz
MjVlMTMyZGViNjVmZDc3NWFjNjk5YTQxZjU1Li40ZjJmYjViYjVkMjk1NjQwOGM3MzNiMDk5N2Vh
NzM5Y2NiNTE3YTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1By
aXZhdGVBVkYuY3BwCkBAIC00MDUsNyArNDA1LDcgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGOjpwcm9jZXNzQXR0cmlidXRlZFN0cmluZ3MoQ0ZBcnJheVJlZiBhdHRyaWJ1dGVkU3QK
ICAgICAgICAgCiAgICAgICAgIExPRyhNZWRpYSwgIkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6
OnByb2Nlc3NDdWUoJXApIC0gYWRkaW5nIGN1ZSBcIiVzXCIgZm9yIHRpbWUgPSAlLjJmLCBlbmQg
PSAlLjJmLCBwb3NpdGlvbiA9ICAlLjJmLCBsaW5lID0gICUuMmYiLCB0aGlzLCBjdWVEYXRhLT5j
b250ZW50KCkudXRmOCgpLmRhdGEoKSwgY3VlRGF0YS0+c3RhcnRUaW1lKCkudG9Eb3VibGUoKSwg
Y3VlRGF0YS0+ZW5kVGltZSgpLnRvRG91YmxlKCksIGN1ZURhdGEtPnBvc2l0aW9uKCksIGN1ZURh
dGEtPmxpbmUoKSk7CiAKLSAgICAgICAgY2xpZW50KCktPmFkZEdlbmVyaWNDdWUodGhpcywgY3Vl
RGF0YS5yZWxlYXNlKCkpOworICAgICAgICBjbGllbnQoKS0+YWRkR2VuZXJpY0N1ZSh0aGlzLCBX
VEZNb3ZlKGN1ZURhdGEpKTsKICAgICB9CiAKICAgICBtX3BlbmRpbmdDdWVTdGF0dXMgPSBzZWVr
aW5nKCkgPyBEZWxpdmVyZWREdXJpbmdTZWVrIDogVmFsaWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFTZWxlY3Rpb25Hcm91
cEFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMubW0KaW5kZXggZDEzNmQ4NzM2OTMzMmNjN2E5
NzNkMDE0OWQ0NmI4YjYzOGFmY2NmMy4uMTBkMmIyMTU0ZmZhOTc0YTFhNzkxMzA3OWVhNGVhNmRk
ODQ3OTljMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNlbGVjdGlvbkdyb3VwQVZG
T2JqQy5tbQpAQCAtMTI5LDEwICsxMjksMTAgQEAgdm9pZCBNZWRpYVNlbGVjdGlvbkdyb3VwQVZG
T2JqQzo6dXBkYXRlT3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgY2hhcmFjdGVyaXMKICAg
ICBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uKiBzZWxlY3RlZE9wdGlvbiA9IFttX3BsYXllckl0ZW0g
c2VsZWN0ZWRNZWRpYU9wdGlvbkluTWVkaWFTZWxlY3Rpb25Hcm91cDptX21lZGlhU2VsZWN0aW9u
R3JvdXAuZ2V0KCldOwogCiAgICAgZm9yIChBVk1lZGlhU2VsZWN0aW9uT3B0aW9uKiBhZGRlZEFW
T3B0aW9uIGluIGFkZGVkQVZPcHRpb25zLmdldCgpKSB7Ci0gICAgICAgIFJlZlB0cjxNZWRpYVNl
bGVjdGlvbk9wdGlvbkFWRk9iakM+IGFkZGVkT3B0aW9uID0gTWVkaWFTZWxlY3Rpb25PcHRpb25B
VkZPYmpDOjpjcmVhdGUoKnRoaXMsIGFkZGVkQVZPcHRpb24pOworICAgICAgICBhdXRvIGFkZGVk
T3B0aW9uID0gTWVkaWFTZWxlY3Rpb25PcHRpb25BVkZPYmpDOjpjcmVhdGUoKnRoaXMsIGFkZGVk
QVZPcHRpb24pOwogICAgICAgICBpZiAoYWRkZWRBVk9wdGlvbiA9PSBzZWxlY3RlZE9wdGlvbikK
ICAgICAgICAgICAgIG1fc2VsZWN0ZWRPcHRpb24gPSBhZGRlZE9wdGlvbi5nZXQoKTsKLSAgICAg
ICAgbV9vcHRpb25zLnNldChhZGRlZEFWT3B0aW9uLCBhZGRlZE9wdGlvbi5yZWxlYXNlKCkpOwor
ICAgICAgICBtX29wdGlvbnMuc2V0KGFkZGVkQVZPcHRpb24sIFdURk1vdmUoYWRkZWRPcHRpb24p
KTsKICAgICB9CiAKICAgICBpZiAoIW1fc2hvdWxkU2VsZWN0T3B0aW9uQXV0b21hdGljYWxseSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMubW0KaW5kZXggZjhmNmIyNTE1NGQ3NjVmMWQwYWJmNjdlOTRhZWI0ZDdiNmZlNzY5Yi4uYTlk
NTc4ZmE4YWEyZGVhYTMxYTNmMjBlNWRmODE3OThhYjA3MDdjZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAgLTY5Niw3
ICs2OTYsNyBAQCBib29sIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpwcm9jZXNzQ29kZWRG
cmFtZShpbnQgdHJhY2tJRCwgQ01TYW1wbGVCdWZmZXJSZQogICAgIGlmIChtX2NsaWVudCkgewog
ICAgICAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IG1lZGlhU2FtcGxlID0gTWVkaWFTYW1wbGVBVkZP
YmpDOjpjcmVhdGUoc2FtcGxlQnVmZmVyLCB0cmFja0lEKTsKICAgICAgICAgTE9HKE1lZGlhU291
cmNlU2FtcGxlcywgIlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpwcm9jZXNzQ29kZWRGcmFt
ZSglcCkgLSBzYW1wbGUoJXMpIiwgdGhpcywgdG9TdHJpbmcoKm1lZGlhU2FtcGxlKS51dGY4KCku
ZGF0YSgpKTsKLSAgICAgICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZl
U2FtcGxlKHRoaXMsIG1lZGlhU2FtcGxlLnJlbGVhc2UoKSk7CisgICAgICAgIG1fY2xpZW50LT5z
b3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZVNhbXBsZSh0aGlzLCBXVEZNb3ZlKG1lZGlhU2Ft
cGxlKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCA0ZGE2
N2YyYjFmNzY2MTJjZWFjZjM1Y2QyODYyNjc5ZjYwMjQxYjkzLi44ODM3M2M4ZWNiNjkyZWY2Njgy
Y2EzZTMxMzk1NmE5NzkxY2EyMWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTM4MTUsOCArMzgxNSw4
IEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmZldGNoQ2xv
bmVMYXllcnMoR3JhcGhpY3NMYXllciogcmVwCiAKICAgICAgICAgZm9yIChhdXRvKiBjaGlsZExh
eWVyIDogY2hpbGRMYXllcnMpIHsKICAgICAgICAgICAgIEdyYXBoaWNzTGF5ZXJDQSYgY2hpbGRM
YXllckNBID0gZG93bmNhc3Q8R3JhcGhpY3NMYXllckNBPigqY2hpbGRMYXllcik7Ci0gICAgICAg
ICAgICBpZiAoUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gcGxhdGZvcm1MYXllciA9IGNoaWxkTGF5
ZXJDQS5mZXRjaENsb25lTGF5ZXJzKHJlcGxpY2FSb290LCByZXBsaWNhU3RhdGUsIEludGVybWVk
aWF0ZUNsb25lTGV2ZWwpKQotICAgICAgICAgICAgICAgIGNsb25hbFN1YmxheWVycy5hcHBlbmQo
cGxhdGZvcm1MYXllci5yZWxlYXNlKCkpOworICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1M
YXllciA9IGNoaWxkTGF5ZXJDQS5mZXRjaENsb25lTGF5ZXJzKHJlcGxpY2FSb290LCByZXBsaWNh
U3RhdGUsIEludGVybWVkaWF0ZUNsb25lTGV2ZWwpKQorICAgICAgICAgICAgICAgIGNsb25hbFN1
YmxheWVycy5hcHBlbmQoV1RGTW92ZShwbGF0Zm9ybUxheWVyKSk7CiAgICAgICAgIH0KIAogICAg
ICAgICByZXBsaWNhU3RhdGUucG9wKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcAppbmRleCA0YzlkNzE1MmQ5ODIx
NDBkZWRjZDUwNGNmZWE0MGM4NDU4NGI4NzBhLi4wMGEyNTczYWZmMTJlZjg5ZGIyYTUxMDgxM2Jm
ZTBjOWUzYWQxMTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAKQEAgLTEzNSwxMyArMTM1LDEzIEBAIFBhc3NS
ZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBQbGF0Zm9ybUNBTGF5ZXI6OmNyZWF0ZUNvbXBhdGlibGVM
YXllck9yVGFrZUZyb21Qb29sCiAKICAgICBpZiAoKGxheWVyID0gbGF5ZXJQb29sKCkudGFrZUxh
eWVyV2l0aFNpemUoc2l6ZSkpKSB7CiAgICAgICAgIGxheWVyLT5zZXRPd25lcihjbGllbnQpOwot
ICAgICAgICByZXR1cm4gbGF5ZXIucmVsZWFzZSgpOworICAgICAgICByZXR1cm4gV1RGTW92ZShs
YXllcik7CiAgICAgfQogCiAgICAgbGF5ZXIgPSBjcmVhdGVDb21wYXRpYmxlTGF5ZXIobGF5ZXJU
eXBlLCBjbGllbnQpOwogICAgIGxheWVyLT5zZXRCb3VuZHMoRmxvYXRSZWN0KEZsb2F0UG9pbnQo
KSwgc2l6ZSkpOwogICAgIAotICAgIHJldHVybiBsYXllci5yZWxlYXNlKCk7CisgICAgcmV0dXJu
IFdURk1vdmUobGF5ZXIpOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6bW92ZVRvTGF5ZXJQ
b29sKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVyRGF0YUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyRGF0YUNHLmNwcAppbmRleCBmYTYzNGM4NmM0MzQ1YmUxYmU3ZWI1NjU3MDhk
NjQ3YWEwYTlkYzI0Li41ZjUwZjljYzAxMjVjY2ZhYzZiZjYyN2Y1M2Q2MGM1ZDEyYTUxZTFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckRhdGFDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJEYXRhQ0cuY3BwCkBAIC05Niw3ICs5Niw3IEBAIFJlZlB0cjxVaW50OENsYW1wZWRB
cnJheT4gSW1hZ2VCdWZmZXJEYXRhOjpnZXREYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0
IEluCiAgICAgaWYgKGFyZWEuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gcmVzdWx0ID0gVWludDhDbGFtcGVk
QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoYXJlYS51bnNhZmVHZXQoKSk7CisgICAgYXV0byBy
ZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZChhcmVhLnVuc2Fm
ZUdldCgpKTsKICAgICB1bnNpZ25lZCBjaGFyKiByZXN1bHREYXRhID0gcmVzdWx0LT5kYXRhKCk7
CiAgICAgaWYgKCFyZXN1bHREYXRhKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiSW1hZ2VCdWZm
ZXJEYXRhOiBVbmFibGUgdG8gY3JlYXRlIGJ1ZmZlci4gUmVxdWVzdGVkIHNpemUgd2FzICVkIHgg
JWQgPSAldVxuIiwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpLCBhcmVhLnVuc2FmZUdldCgp
KTsKQEAgLTEzOSw3ICsxMzksNyBAQCBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVm
ZmVyRGF0YTo6Z2V0RGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbgogICAgIENoZWNr
ZWQ8aW50PiBoZWlnaHQgPSBlbmR5IC0gb3JpZ2lueTsKICAgICAKICAgICBpZiAod2lkdGgudW5z
YWZlR2V0KCkgPD0gMCB8fCBoZWlnaHQudW5zYWZlR2V0KCkgPD0gMCkKLSAgICAgICAgcmV0dXJu
IHJlc3VsdC5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgCiAgICAgdW5z
aWduZWQgZGVzdEJ5dGVzUGVyUm93ID0gNCAqIHJlY3Qud2lkdGgoKTsKICAgICB1bnNpZ25lZCBj
aGFyKiBkZXN0Um93cyA9IHJlc3VsdERhdGEgKyBkZXN0eSAqIGRlc3RCeXRlc1BlclJvdyArIGRl
c3R4ICogNDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAppbmRleCBjYmU1MTI4ZjllNjI2NzJiYTFjZmUyN2Iw
NWNlMzI2MzA0ZGEyNjdkLi41ZTQ3YTQwNjhkODJjM2M1MGU4MzU5ZGUwNjc2ZDM4ODdlMDhmMDkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlckVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBAIC0yMzcsOSArMjM3LDkgQEAgUGFzc1JlZlB0cjxVaW50
OENsYW1wZWRBcnJheT4gRmlsdGVyRWZmZWN0Ojphc1VubXVsdGlwbGllZEltYWdlKGNvbnN0IElu
dFJlY3QmIHIKICAgICBJbnRTaXplIHNjYWxlZFNpemUocmVjdC5zaXplKCkpOwogICAgIEFTU0VS
VCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHNjYWxlZFNpemUpKTsKICAgICBzY2Fs
ZWRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRlclNjYWxlKCkpOwotICAgIFJlZlB0cjxVaW50OENs
YW1wZWRBcnJheT4gaW1hZ2VEYXRhID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlh
bGl6ZWQoc2NhbGVkU2l6ZS53aWR0aCgpICogc2NhbGVkU2l6ZS5oZWlnaHQoKSAqIDQpOworICAg
IGF1dG8gaW1hZ2VEYXRhID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQo
c2NhbGVkU2l6ZS53aWR0aCgpICogc2NhbGVkU2l6ZS5oZWlnaHQoKSAqIDQpOwogICAgIGNvcHlV
bm11bHRpcGxpZWRJbWFnZShpbWFnZURhdGEuZ2V0KCksIHJlY3QpOwotICAgIHJldHVybiBpbWFn
ZURhdGEucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKGltYWdlRGF0YSk7CiB9CiAKIFBh
c3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6YXNQcmVtdWx0aXBsaWVk
SW1hZ2UoY29uc3QgSW50UmVjdCYgcmVjdCkKQEAgLTI0Nyw5ICsyNDcsOSBAQCBQYXNzUmVmUHRy
PFVpbnQ4Q2xhbXBlZEFycmF5PiBGaWx0ZXJFZmZlY3Q6OmFzUHJlbXVsdGlwbGllZEltYWdlKGNv
bnN0IEludFJlY3QmCiAgICAgSW50U2l6ZSBzY2FsZWRTaXplKHJlY3Quc2l6ZSgpKTsKICAgICBB
U1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhzY2FsZWRTaXplKSk7CiAgICAg
c2NhbGVkU2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKLSAgICBSZWZQdHI8VWlu
dDhDbGFtcGVkQXJyYXk+IGltYWdlRGF0YSA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmlu
aXRpYWxpemVkKHNjYWxlZFNpemUud2lkdGgoKSAqIHNjYWxlZFNpemUuaGVpZ2h0KCkgKiA0KTsK
KyAgICBhdXRvIGltYWdlRGF0YSA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxp
emVkKHNjYWxlZFNpemUud2lkdGgoKSAqIHNjYWxlZFNpemUuaGVpZ2h0KCkgKiA0KTsKICAgICBj
b3B5UHJlbXVsdGlwbGllZEltYWdlKGltYWdlRGF0YS5nZXQoKSwgcmVjdCk7Ci0gICAgcmV0dXJu
IGltYWdlRGF0YS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1vdmUoaW1hZ2VEYXRhKTsKIH0K
IAogaW5saW5lIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5SW1hZ2VCeXRlcyhVaW50OENsYW1wZWRB
cnJheSogc291cmNlLCBVaW50OENsYW1wZWRBcnJheSogZGVzdGluYXRpb24sIGNvbnN0IEludFJl
Y3QmIHJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvSW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1h
Z2VNYWMubW0KaW5kZXggZmEwMTFhYTg4MTYzMDMwMDA5NDQ5OGViYzBmZmNhOWZiOWMzMDM0Yi4u
MDFlYjZkZDMwMDQzYTIyNTI5MTc2ZmQ5MTIxMTdkYzU3NzZjMTdiYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQpAQCAtNjgsOSArNjgs
OSBAQCBQYXNzUmVmUHRyPEltYWdlPiBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3Qg
Y2hhciAqbmFtZSkKICAgICBOU1N0cmluZyAqaW1hZ2VQYXRoID0gW2J1bmRsZSBwYXRoRm9yUmVz
b3VyY2U6W05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOm5hbWVdIG9mVHlwZTpAInBuZyJd
OwogICAgIE5TRGF0YSAqbmFtZWRJbWFnZURhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNP
ZkZpbGU6aW1hZ2VQYXRoXTsKICAgICBpZiAobmFtZWRJbWFnZURhdGEpIHsKLSAgICAgICAgUmVm
UHRyPEltYWdlPiBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKKyAgICAgICAgYXV0byBp
bWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAgICAgICAgaW1hZ2UtPnNldERhdGEoU2hh
cmVkQnVmZmVyOjp3cmFwTlNEYXRhKG5hbWVkSW1hZ2VEYXRhKSwgdHJ1ZSk7Ci0gICAgICAgIHJl
dHVybiBpbWFnZS5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBXVEZNb3ZlKGltYWdlKTsKICAg
ICB9CiAKICAgICAvLyBXZSBoYXZlIHJlcG9ydHMgaW5kaWNhdGluZyByZXNvdXJjZSBsb2FkcyBh
cmUgZmFpbGluZywgYnV0IHdlIGRvbid0IHlldCBrbm93IHRoZSByb290IGNhdXNlKHMpLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKaW5kZXggMDQ4OTUz
NmQzYmQwY2JiZjdiMmJkYjA3YTZiYzJkYjg1Yjk0OTllNy4uYTQ4NTkyYTgxMGFmMDc0OWY0ZmU5
ODEwMWY3ZDFiMTZhYzZhOTI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RP
cGVuR0xDb21tb24uY3BwCkBAIC0xMzIsOCArMTMyLDEwIEBAIHN0YXRpYyB1aW50NjRfdCBuYW1l
SGFzaEZvclNoYWRlcihjb25zdCBjaGFyKiBuYW1lLCBzaXplX3QgbGVuZ3RoKQogCiBQYXNzUmVm
UHRyPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlRm9yQ3VycmVu
dEdMQ29udGV4dCgpCiB7Ci0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0g
YWRvcHRSZWYobmV3IEdyYXBoaWNzQ29udGV4dDNEKEF0dHJpYnV0ZXMoKSwgMCwgR3JhcGhpY3ND
b250ZXh0M0Q6OlJlbmRlclRvQ3VycmVudEdMQ29udGV4dCkpOwotICAgIHJldHVybiBjb250ZXh0
LT5tX3ByaXZhdGUgPyBjb250ZXh0LnJlbGVhc2UoKSA6IDA7CisgICAgYXV0byBjb250ZXh0ID0g
YWRvcHRSZWYoKm5ldyBHcmFwaGljc0NvbnRleHQzRChBdHRyaWJ1dGVzKCksIDAsIEdyYXBoaWNz
Q29udGV4dDNEOjpSZW5kZXJUb0N1cnJlbnRHTENvbnRleHQpKTsKKyAgICBpZiAoIWNvbnRleHQt
Pm1fcHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIFdURk1vdmUo
Y29udGV4dCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZhbGlkYXRlRGVwdGhTdGVu
Y2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikKQEAgLTIwNSw3ICsy
MDcsNyBAQCBQYXNzUmVmUHRyPEltYWdlRGF0YT4gR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50UmVu
ZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkKICAgICBpZiAobV9hdHRycy5wcmVtdWx0aXBsaWVk
QWxwaGEpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPEltYWdlRGF0YT4gaW1hZ2VE
YXRhID0gSW1hZ2VEYXRhOjpjcmVhdGUoSW50U2l6ZShtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50
SGVpZ2h0KSk7CisgICAgYXV0byBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShJbnRTaXpl
KG1fY3VycmVudFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQpKTsKICAgICB1bnNpZ25lZCBjaGFyKiBw
aXhlbHMgPSBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpOwogICAgIGludCB0b3RhbEJ5dGVzID0g
NCAqIG1fY3VycmVudFdpZHRoICogbV9jdXJyZW50SGVpZ2h0OwogCkBAIC0yMTUsNyArMjE3LDcg
QEAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFJlbmRlcmlu
Z1Jlc3VsdHNUb0ltYWdlRGF0YSgpCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0b3RhbEJ5dGVz
OyBpICs9IDQpCiAgICAgICAgIHN0ZDo6c3dhcChwaXhlbHNbaV0sIHBpeGVsc1tpICsgMl0pOwog
Ci0gICAgcmV0dXJuIGltYWdlRGF0YS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1vdmUoaW1h
Z2VEYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cHJlcGFyZVRleHR1cmUoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwCmluZGV4IGRlYTdh
N2MyOTc0ZTNkOGE5ZTBkYjgxNzdkOTZiOWU0ZTJmMThjMGQuLjlhMWIyZDY5NmM3Y2YwOWI5NTdm
NGNmMjk4NGEyMGUzODFjODY3MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlck1hYy5jcHAKQEAgLTExNiwxMCArMTE2LDEwIEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlck1hYzo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNy
ZWF0CiAgICAgICAgIH0KICAgICAgICAgLy8gRklYTUU6IENvbnNpZGVyIHRoZSBjb25zdHJhaW50
cyB3aGVuIGNob29zaW5nIGFtb25nIG11bHRpcGxlIGRldmljZXMuIEZvciBub3cganVzdCBzZWxl
Y3QgdGhlIGZpcnN0IGF2YWlsYWJsZQogICAgICAgICAvLyBkZXZpY2Ugb2YgdGhlIGFwcHJvcHJp
YXRlIHR5cGUuCi0gICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBhdWRpb1NvdXJj
ZSA9IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpLmJlc3RTb3VyY2VzRm9yVHlw
ZUFuZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBhdWRpb0NvbnN0cmFp
bnRzLmdldCgpKS5hdCgwKTsKKyAgICAgICAgYXV0byBhdWRpb1NvdXJjZSA9IEFWQ2FwdHVyZURl
dmljZU1hbmFnZXI6OnNpbmdsZXRvbigpLmJlc3RTb3VyY2VzRm9yVHlwZUFuZENvbnN0cmFpbnRz
KFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBhdWRpb0NvbnN0cmFpbnRzLmdldCgpKS5hdCgw
KTsKICAgICAgICAgQVNTRVJUKGF1ZGlvU291cmNlKTsKICAgICAgICAgCi0gICAgICAgIGF1ZGlv
U291cmNlcy5hcHBlbmQoYXVkaW9Tb3VyY2UucmVsZWFzZSgpKTsKKyAgICAgICAgYXVkaW9Tb3Vy
Y2VzLmFwcGVuZChXVEZNb3ZlKGF1ZGlvU291cmNlKSk7CiAgICAgfQogICAgIAogICAgIGlmICh2
aWRlb0NvbnN0cmFpbnRzKSB7CkBAIC0xMzEsMTAgKzEzMSwxMCBAQCB2b2lkIFJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXJNYWM6OmNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJl
YW1DcmVhdAogICAgICAgICB9CiAgICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciB0aGUgY29uc3Ry
YWludHMgd2hlbiBjaG9vc2luZyBhbW9uZyBtdWx0aXBsZSBkZXZpY2VzLiBGb3Igbm93IGp1c3Qg
c2VsZWN0IHRoZSBmaXJzdCBhdmFpbGFibGUKICAgICAgICAgLy8gZGV2aWNlIG9mIHRoZSBhcHBy
b3ByaWF0ZSB0eXBlLgotICAgICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gdmlkZW9T
b3VyY2UgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5iZXN0U291cmNlc0Zv
clR5cGVBbmRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywgdmlkZW9Db25z
dHJhaW50cy5nZXQoKSkuYXQoMCk7CisgICAgICAgIGF1dG8gdmlkZW9Tb3VyY2UgPSBBVkNhcHR1
cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5iZXN0U291cmNlc0ZvclR5cGVBbmRDb25zdHJh
aW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywgdmlkZW9Db25zdHJhaW50cy5nZXQoKSku
YXQoMCk7CiAgICAgICAgIEFTU0VSVCh2aWRlb1NvdXJjZSk7CiAgICAgICAgIAotICAgICAgICB2
aWRlb1NvdXJjZXMuYXBwZW5kKHZpZGVvU291cmNlLnJlbGVhc2UoKSk7CisgICAgICAgIHZpZGVv
U291cmNlcy5hcHBlbmQoV1RGTW92ZSh2aWRlb1NvdXJjZSkpOwogICAgIH0KICAgICAKICAgICBj
bGllbnQtPmRpZENyZWF0ZVN0cmVhbShNZWRpYVN0cmVhbVByaXZhdGU6OmNyZWF0ZShhdWRpb1Nv
dXJjZXMsIHZpZGVvU291cmNlcykpOwpAQCAtMTQ3LDE0ICsxNDcsMTQgQEAgdm9pZCBSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyTWFjOjpjcmVhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbUNyZWF0
aW9uQ2xpZW50KgogICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+IHZpZGVv
U291cmNlczsKIAogICAgIGlmICghYXVkaW9EZXZpY2VJRC5pc0VtcHR5KCkpIHsKLSAgICAgICAg
UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IGF1ZGlvU291cmNlID0gQVZDYXB0dXJlRGV2aWNl
TWFuYWdlcjo6c2luZ2xldG9uKCkuc291cmNlV2l0aFVJRChhdWRpb0RldmljZUlELCBSZWFsdGlt
ZU1lZGlhU291cmNlOjpBdWRpbywgbnVsbHB0cik7CisgICAgICAgIGF1dG8gYXVkaW9Tb3VyY2Ug
PSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5zb3VyY2VXaXRoVUlEKGF1ZGlv
RGV2aWNlSUQsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBudWxscHRyKTsKICAgICAgICAg
aWYgKGF1ZGlvU291cmNlKQotICAgICAgICAgICAgYXVkaW9Tb3VyY2VzLmFwcGVuZChhdWRpb1Nv
dXJjZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgYXVkaW9Tb3VyY2VzLmFwcGVuZChXVEZNb3Zl
KGF1ZGlvU291cmNlKSk7CiAgICAgfQogICAgIGlmICghdmlkZW9EZXZpY2VJRC5pc0VtcHR5KCkp
IHsKLSAgICAgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IHZpZGVvU291cmNlID0gQVZD
YXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuc291cmNlV2l0aFVJRCh2aWRlb0Rldmlj
ZUlELCBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywgbnVsbHB0cik7CisgICAgICAgIGF1dG8g
dmlkZW9Tb3VyY2UgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5zb3VyY2VX
aXRoVUlEKHZpZGVvRGV2aWNlSUQsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvLCBudWxscHRy
KTsKICAgICAgICAgaWYgKHZpZGVvU291cmNlKQotICAgICAgICAgICAgdmlkZW9Tb3VyY2VzLmFw
cGVuZCh2aWRlb1NvdXJjZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgdmlkZW9Tb3VyY2VzLmFw
cGVuZChXVEZNb3ZlKHZpZGVvU291cmNlKSk7CiAgICAgfQogCiAgICAgY2xpZW50LT5kaWRDcmVh
dGVTdHJlYW0oTWVkaWFTdHJlYW1Qcml2YXRlOjpjcmVhdGUoYXVkaW9Tb3VyY2VzLCB2aWRlb1Nv
dXJjZXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKaW5kZXggYWFlODA4MzkxMTVmZjli
YWZiOTQ4YzgyNTZmMzgzNGI0OGI4NmVlZS4uOGNjNmYwZjMzNTJjMjMzMzhiNWUyOTA1MTJjZWU0
ZWZlZmM0YWI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKQEAgLTgxLDggKzgxLDgg
QEAgdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6dmFsaWRhdGVSZXF1ZXN0Q29u
c3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBhdWRpb1NvdXJjZSA9IE1v
Y2tSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGUoKTsKLSAgICAgICAgYXVkaW9Tb3VyY2VzLmFw
cGVuZChhdWRpb1NvdXJjZS5yZWxlYXNlKCkpOworICAgICAgICBhdXRvIGF1ZGlvU291cmNlID0g
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZSgpOworICAgICAgICBhdWRpb1NvdXJjZXMu
YXBwZW5kKFdURk1vdmUoYXVkaW9Tb3VyY2UpKTsKICAgICB9CiAKICAgICBpZiAodmlkZW9Db25z
dHJhaW50cykgewpAQCAtOTIsOCArOTIsOCBAQCB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFJlYWx0aW1lTWVk
aWFTb3VyY2U+IHZpZGVvU291cmNlID0gTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmNyZWF0ZSgp
OwotICAgICAgICB2aWRlb1NvdXJjZXMuYXBwZW5kKHZpZGVvU291cmNlLnJlbGVhc2UoKSk7Cisg
ICAgICAgIGF1dG8gdmlkZW9Tb3VyY2UgPSBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRl
KCk7CisgICAgICAgIHZpZGVvU291cmNlcy5hcHBlbmQoV1RGTW92ZSh2aWRlb1NvdXJjZSkpOwog
ICAgIH0KIAogICAgIGNsaWVudC0+Y29uc3RyYWludHNWYWxpZGF0ZWQoYXVkaW9Tb3VyY2VzLCB2
aWRlb1NvdXJjZXMpOwpAQCAtMTE1LDggKzExNSw4IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXI6OmNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVh
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8UmVhbHRp
bWVNZWRpYVNvdXJjZT4gYXVkaW9Tb3VyY2UgPSBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6Y3Jl
YXRlKCk7Ci0gICAgICAgIGF1ZGlvU291cmNlcy5hcHBlbmQoYXVkaW9Tb3VyY2UucmVsZWFzZSgp
KTsKKyAgICAgICAgYXV0byBhdWRpb1NvdXJjZSA9IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpj
cmVhdGUoKTsKKyAgICAgICAgYXVkaW9Tb3VyY2VzLmFwcGVuZChXVEZNb3ZlKGF1ZGlvU291cmNl
KSk7CiAgICAgfQogCiAgICAgaWYgKHZpZGVvQ29uc3RyYWludHMpIHsKQEAgLTEyNiw4ICsxMjYs
OCBAQCB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpjcmVhdGVNZWRpYVN0cmVh
bShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IHZpZGVvU291cmNlID0g
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmNyZWF0ZSgpOwotICAgICAgICB2aWRlb1NvdXJjZXMu
YXBwZW5kKHZpZGVvU291cmNlLnJlbGVhc2UoKSk7CisgICAgICAgIGF1dG8gdmlkZW9Tb3VyY2Ug
PSBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRlKCk7CisgICAgICAgIHZpZGVvU291cmNl
cy5hcHBlbmQoV1RGTW92ZSh2aWRlb1NvdXJjZSkpOwogICAgIH0KICAgICAKICAgICBjbGllbnQt
PmRpZENyZWF0ZVN0cmVhbShNZWRpYVN0cmVhbVByaXZhdGU6OmNyZWF0ZShhdWRpb1NvdXJjZXMs
IHZpZGVvU291cmNlcykpOwpAQCAtMTQwLDEyICsxNDAsMTIgQEAgdm9pZCBNb2NrUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlcjo6Y3JlYXRlTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1DcmVhdGlvbkNs
aWVudCoKICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiB2aWRlb1NvdXJj
ZXM7CiAKICAgICBpZiAoIWF1ZGlvRGV2aWNlSUQuaXNFbXB0eSgpICYmIGF1ZGlvRGV2aWNlSUQg
PT0gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6Om1vY2tBdWRpb1NvdXJjZVBlcnNpc3RlbnRJRCgp
KSB7Ci0gICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBhdWRpb1NvdXJjZSA9IE1v
Y2tSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGUoKTsKLSAgICAgICAgYXVkaW9Tb3VyY2VzLmFw
cGVuZChhdWRpb1NvdXJjZS5yZWxlYXNlKCkpOworICAgICAgICBhdXRvIGF1ZGlvU291cmNlID0g
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZSgpOworICAgICAgICBhdWRpb1NvdXJjZXMu
YXBwZW5kKFdURk1vdmUoYXVkaW9Tb3VyY2UpKTsKICAgICB9CiAgICAgaWYgKCF2aWRlb0Rldmlj
ZUlELmlzRW1wdHkoKSAmJiB2aWRlb0RldmljZUlEID09IE1vY2tSZWFsdGltZU1lZGlhU291cmNl
Ojptb2NrVmlkZW9Tb3VyY2VQZXJzaXN0ZW50SUQoKSkgewotICAgICAgICBSZWZQdHI8UmVhbHRp
bWVNZWRpYVNvdXJjZT4gdmlkZW9Tb3VyY2UgPSBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3Jl
YXRlKCk7Ci0gICAgICAgIHZpZGVvU291cmNlcy5hcHBlbmQodmlkZW9Tb3VyY2UucmVsZWFzZSgp
KTsKKyAgICAgICAgYXV0byB2aWRlb1NvdXJjZSA9IE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpj
cmVhdGUoKTsKKyAgICAgICAgdmlkZW9Tb3VyY2VzLmFwcGVuZChXVEZNb3ZlKHZpZGVvU291cmNl
KSk7CiAgICAgfQogCiAgICAgY2xpZW50LT5kaWRDcmVhdGVTdHJlYW0oTWVkaWFTdHJlYW1Qcml2
YXRlOjpjcmVhdGUoYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCmluZGV4IDcy
MGVmYzg3MWJmZDFlNGI0NTczNTA3ODdlNzNmODM2MzdiYTkxNTMuLjY4MDYwMzU0ZTdlNTBlYmQ4
NjdiMWQwODA5ZDNkMjdjM2U1MTRiYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIHZv
aWQgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBWZWN0
b3I8QmxvYlBhcnQ+IGJsb2JQYXJ0CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBy
ZWdpc3RlckJsb2JSZXNvdXJjZUhhbmRsZUNvbnN0cnVjdG9yKCk7CiAKLSAgICBSZWZQdHI8Qmxv
YkRhdGE+IGJsb2JEYXRhID0gQmxvYkRhdGE6OmNyZWF0ZShjb250ZW50VHlwZSk7CisgICAgYXV0
byBibG9iRGF0YSA9IEJsb2JEYXRhOjpjcmVhdGUoY29udGVudFR5cGUpOwogCiAgICAgLy8gVGhl
IGJsb2IgZGF0YSBpcyBzdG9yZWQgaW4gdGhlICJjYW5vbmljYWwiIHdheS4gVGhhdCBpcywgaXQg
b25seSBjb250YWlucyBhIGxpc3Qgb2YgRGF0YSBhbmQgRmlsZSBpdGVtcy4KICAgICAvLyAxKSBU
aGUgRGF0YSBpdGVtIGlzIGRlbm90ZWQgYnkgdGhlIHJhdyBkYXRhIGFuZCB0aGUgcmFuZ2UuCkBA
IC0xNTEsNyArMTUxLDcgQEAgdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkwo
Y29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4gYmxvYlBhcnQKICAgICAgICAgfQogICAg
IH0KIAotICAgIG1fYmxvYnMuc2V0KHVybC5zdHJpbmcoKSwgYmxvYkRhdGEucmVsZWFzZSgpKTsK
KyAgICBtX2Jsb2JzLnNldCh1cmwuc3RyaW5nKCksIFdURk1vdmUoYmxvYkRhdGEpKTsKIH0KIAog
dm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFVSTCYgc3JjVVJMKQpAQCAtMjA4LDExICsyMDgsMTEgQEAgdm9pZCBCbG9iUmVnaXN0cnlJ
bXBsOjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBz
cmNVUkwKICAgICAgICAgZW5kID0gb3JpZ2luYWxTaXplOwogCiAgICAgdW5zaWduZWQgbG9uZyBs
b25nIG5ld0xlbmd0aCA9IGVuZCAtIHN0YXJ0OwotICAgIFJlZlB0cjxCbG9iRGF0YT4gbmV3RGF0
YSA9IEJsb2JEYXRhOjpjcmVhdGUob3JpZ2luYWxEYXRhLT5jb250ZW50VHlwZSgpKTsKKyAgICBh
dXRvIG5ld0RhdGEgPSBCbG9iRGF0YTo6Y3JlYXRlKG9yaWdpbmFsRGF0YS0+Y29udGVudFR5cGUo
KSk7CiAKLSAgICBhcHBlbmRTdG9yYWdlSXRlbXMobmV3RGF0YS5nZXQoKSwgb3JpZ2luYWxEYXRh
LT5pdGVtcygpLCBzdGFydCwgbmV3TGVuZ3RoKTsKKyAgICBhcHBlbmRTdG9yYWdlSXRlbXMobmV3
RGF0YS5wdHIoKSwgb3JpZ2luYWxEYXRhLT5pdGVtcygpLCBzdGFydCwgbmV3TGVuZ3RoKTsKIAot
ICAgIG1fYmxvYnMuc2V0KHVybC5zdHJpbmcoKSwgbmV3RGF0YS5yZWxlYXNlKCkpOworICAgIG1f
YmxvYnMuc2V0KHVybC5zdHJpbmcoKSwgV1RGTW92ZShuZXdEYXRhKSk7CiB9CiAKIHZvaWQgQmxv
YlJlZ2lzdHJ5SW1wbDo6dW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCmluZGV4
IGJjZTZiYTk3MzFiZjE5NDAxMTc2Y2NiZjZiZGQ3MGZkN2VlZjUyMmYuLmI2YzY3YjdjZGUyNmE3
NTNjOGFiMmUxY2MyMDE0OGJjYzc4ZmIwZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCkBAIC05MywxMyArOTMsMTMgQEAgUmVm
UHRyPFJlc291cmNlSGFuZGxlPiBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlKE5ldHdvcmtpbmdDb250
ZXh0KiBjb250ZXh0LCBjb25zdAogICAgIGlmIChwcm90b2NvbE1hcEl0ZW0gIT0gYnVpbHRpblJl
c291cmNlSGFuZGxlQ29uc3RydWN0b3JNYXAoKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHByb3Rv
Y29sTWFwSXRlbS0+dmFsdWUocmVxdWVzdCwgY2xpZW50KTsKIAotICAgIFJlZlB0cjxSZXNvdXJj
ZUhhbmRsZT4gbmV3SGFuZGxlKGFkb3B0UmVmKG5ldyBSZXNvdXJjZUhhbmRsZShjb250ZXh0LCBy
ZXF1ZXN0LCBjbGllbnQsIGRlZmVyc0xvYWRpbmcsIHNob3VsZENvbnRlbnRTbmlmZikpKTsKKyAg
ICBhdXRvIG5ld0hhbmRsZSA9IGFkb3B0UmVmKCpuZXcgUmVzb3VyY2VIYW5kbGUoY29udGV4dCwg
cmVxdWVzdCwgY2xpZW50LCBkZWZlcnNMb2FkaW5nLCBzaG91bGRDb250ZW50U25pZmYpKTsKIAog
ICAgIGlmIChuZXdIYW5kbGUtPmQtPm1fc2NoZWR1bGVkRmFpbHVyZVR5cGUgIT0gTm9GYWlsdXJl
KQotICAgICAgICByZXR1cm4gbmV3SGFuZGxlLnJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJuIFdU
Rk1vdmUobmV3SGFuZGxlKTsKIAogICAgIGlmIChuZXdIYW5kbGUtPnN0YXJ0KCkpCi0gICAgICAg
IHJldHVybiBuZXdIYW5kbGUucmVsZWFzZSgpOworICAgICAgICByZXR1cm4gV1RGTW92ZShuZXdI
YW5kbGUpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAppbmRl
eCA0ODYxMzNjYzg5Yzk5ZDZiMjQwNjUzMzFhNzJjNWQ5YTRkMDhkNmQ1Li40MGViZjRkNjkwNjc1
MjU1YWEzNjk0OTZhMzJmNDljYmU3NTkzNjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKQEAgLTIw
MCw3ICsyMDAsNyBAQCBzdGF0aWMgdm9pZCogZm9ybUNyZWF0ZShDRlJlYWRTdHJlYW1SZWYgc3Ry
ZWFtLCB2b2lkKiBjb250ZXh0KQogICAgIEZvcm1DcmVhdGlvbkNvbnRleHQqIGZvcm1Db250ZXh0
ID0gc3RhdGljX2Nhc3Q8Rm9ybUNyZWF0aW9uQ29udGV4dCo+KGNvbnRleHQpOwogCiAgICAgRm9y
bVN0cmVhbUZpZWxkcyogbmV3SW5mbyA9IG5ldyBGb3JtU3RyZWFtRmllbGRzOwotICAgIG5ld0lu
Zm8tPmZvcm1EYXRhID0gZm9ybUNvbnRleHQtPmZvcm1EYXRhLnJlbGVhc2UoKTsKKyAgICBuZXdJ
bmZvLT5mb3JtRGF0YSA9IFdURk1vdmUoZm9ybUNvbnRleHQtPmZvcm1EYXRhKTsKICAgICBuZXdJ
bmZvLT5jdXJyZW50U3RyZWFtID0gMDsKICAgICBuZXdJbmZvLT5jdXJyZW50U3RyZWFtUmFuZ2VM
ZW5ndGggPSBCbG9iRGF0YUl0ZW06OnRvRW5kT2ZGaWxlOwogICAgIG5ld0luZm8tPmZvcm1TdHJl
YW0gPSBzdHJlYW07IC8vIERvbid0IHJldGFpbi4gVGhhdCB3b3VsZCBjcmVhdGUgYSByZWZlcmVu
Y2UgY3ljbGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaUNvbnRleHQuY3Bw
CmluZGV4IGU3ZTZlY2ZlY2VjMGFiYjhlMTJiY2M0ZWIyOGY2NGQ1ZmFhNDZmMzYuLjk3N2RiZmQ3
OTdkNTc4NTdmNDdlNDgxMTZiMTNkNDFjYWEzODg2ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvQmlkaUNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvQmlkaUNvbnRleHQuY3BwCkBAIC05Miw3ICs5Miw3IEBAIFBhc3NSZWZQdHI8
QmlkaUNvbnRleHQ+IEJpZGlDb250ZXh0Ojpjb3B5U3RhY2tSZW1vdmluZ1VuaWNvZGVFbWJlZGRp
bmdDb250ZXh0cygpCiAgICAgZm9yIChpbnQgaSA9IGNvbnRleHRzLnNpemUoKSAtIDE7IGkgPiAw
OyAtLWkpCiAgICAgICAgIHRvcENvbnRleHQgPSBjb3B5Q29udGV4dEFuZFJlYmFzZWxpbmVMZXZl
bChjb250ZXh0c1tpIC0gMV0sIHRvcENvbnRleHQuZ2V0KCkpOwogCi0gICAgcmV0dXJuIHRvcENv
bnRleHQucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKHRvcENvbnRleHQpOwogfQogCiBi
b29sIG9wZXJhdG9yPT0oY29uc3QgQmlkaUNvbnRleHQmIGMxLCBjb25zdCBCaWRpQ29udGV4dCYg
YzIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVu
ZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVy
LmNwcAppbmRleCBmNDdiM2JhNjE2MzdjYzI1NGVhYWYwOTNmMjc0MWNlNGExZDExYjliLi5iYTUx
MWNjYTZhOTgzYjBiMTE0YTEyZjk1YjQxNjJjOTU5MmFhZTY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKQEAgLTI4OCw3ICsyODgs
NyBAQCBib29sIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZChSZW5kZXJFbGVtZW50KiByZW5k
ZXJlciwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucwogICAgICAgICAgICAgICAgIGVmZmVjdC0+aW5w
dXRFZmZlY3RzKCkuYXBwZW5kKHByZXZpb3VzRWZmZWN0KTsKICAgICAgICAgICAgICAgICBtX2Vm
ZmVjdHMuYXBwZW5kKGVmZmVjdCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBwcmV2aW91
c0VmZmVjdCA9IGVmZmVjdC5yZWxlYXNlKCk7CisgICAgICAgICAgICBwcmV2aW91c0VmZmVjdCA9
IFdURk1vdmUoZWZmZWN0KTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggNmE2ZjExNjQ5OGQxODk1MzYyYTA3OGE4ZjliMDUx
NmQxZTMxMGZiMC4uOTI5MDE0Y2U5YmZkNjMyZjU2ZTE3ZGI0NDU2MDQ5M2ZhMzRjMWU1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0zMTE2LDcgKzMxMTYs
NyBAQCBQYXNzUmVmUHRyPFNjcm9sbGJhcj4gUmVuZGVyTGF5ZXI6OmNyZWF0ZVNjcm9sbGJhcihT
Y3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdAogICAgICAgICB9CiAgICAgfQogICAgIHJlbmRl
cmVyKCkudmlldygpLmZyYW1lVmlldygpLmFkZENoaWxkKHdpZGdldC5nZXQoKSk7Ci0gICAgcmV0
dXJuIHdpZGdldC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1vdmUod2lkZ2V0KTsKIH0KIAog
dm9pZCBSZW5kZXJMYXllcjo6ZGVzdHJveVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbiBv
cmllbnRhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApp
bmRleCAyMzdjNmVhMjcyNDQxZGNkZjAyZTA5OGY2OTNjOTYxYjgwMGUzMDBhLi41ZGFhNmY5NDM5
ZWMzYzI1NmVhNzA5MzQwZmU1YTYzODQ5Mjk5ZTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpc3RCb3guY3BwCkBAIC05MTEsNyArOTExLDcgQEAgUGFzc1JlZlB0cjxTY3Jv
bGxiYXI+IFJlbmRlckxpc3RCb3g6OmNyZWF0ZVNjcm9sbGJhcigpCiAgICAgICAgIH0KICAgICB9
CiAgICAgdmlldygpLmZyYW1lVmlldygpLmFkZENoaWxkKHdpZGdldC5nZXQoKSk7Ci0gICAgcmV0
dXJuIHdpZGdldC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1vdmUod2lkZ2V0KTsKIH0KIAog
dm9pZCBSZW5kZXJMaXN0Qm94OjpkZXN0cm95U2Nyb2xsYmFyKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCmluZGV4IDRkYjMzYTAwODFhMzA1MTU5NzhhNGRm
OTJhZWMxNzVhNGYwMTNkYTkuLmI4MDA5NDljZDc0NzAyZGZkMTE5NGM1MWI1NDZkZTkxYmNkMmYy
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcApAQCAt
NTc4LDcgKzU3OCw3IEBAIFBhc3NSZWZQdHI8U2Nyb2xsYmFyPiBSZW5kZXJNZW51TGlzdDo6Y3Jl
YXRlU2Nyb2xsYmFyKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlCiAgICAgICAgIHdpZGdldCA9
IFJlbmRlclNjcm9sbGJhcjo6Y3JlYXRlQ3VzdG9tU2Nyb2xsYmFyKHNjcm9sbGFibGVBcmVhLCBv
cmllbnRhdGlvbiwgJnNlbGVjdEVsZW1lbnQoKSk7CiAgICAgZWxzZQogICAgICAgICB3aWRnZXQg
PSBTY3JvbGxiYXI6OmNyZWF0ZU5hdGl2ZVNjcm9sbGJhcihzY3JvbGxhYmxlQXJlYSwgb3JpZW50
YXRpb24sIGNvbnRyb2xTaXplKTsKLSAgICByZXR1cm4gd2lkZ2V0LnJlbGVhc2UoKTsKKyAgICBy
ZXR1cm4gV1RGTW92ZSh3aWRnZXQpOwogfQogCiBpbnQgUmVuZGVyTWVudUxpc3Q6OmNsaWVudElu
c2V0TGVmdCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU2VhcmNoRmllbGQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJj
aEZpZWxkLmNwcAppbmRleCAzZjVkMDNkYWNmMzA5NzE5MDQwNmUzMGE4YmE4OWU2MDkwZWRmNjMy
Li5mNWM2MjU5YWMwZTlkZTljMGZhYjJkYzNhZTc3YjU0ZGE1ZWMzZDczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAKQEAgLTM1NCw3ICszNTQs
NyBAQCBQYXNzUmVmUHRyPFNjcm9sbGJhcj4gUmVuZGVyU2VhcmNoRmllbGQ6OmNyZWF0ZVNjcm9s
bGJhcihTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYQogICAgICAgICB3aWRnZXQgPSBSZW5kZXJTY3Jv
bGxiYXI6OmNyZWF0ZUN1c3RvbVNjcm9sbGJhcihzY3JvbGxhYmxlQXJlYSwgb3JpZW50YXRpb24s
ICZpbnB1dEVsZW1lbnQoKSk7CiAgICAgZWxzZQogICAgICAgICB3aWRnZXQgPSBTY3JvbGxiYXI6
OmNyZWF0ZU5hdGl2ZVNjcm9sbGJhcihzY3JvbGxhYmxlQXJlYSwgb3JpZW50YXRpb24sIGNvbnRy
b2xTaXplKTsKLSAgICByZXR1cm4gd2lkZ2V0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92
ZSh3aWRnZXQpOwogfQogCiBMYXlvdXRVbml0IFJlbmRlclNlYXJjaEZpZWxkOjpjb21wdXRlTG9n
aWNhbEhlaWdodExpbWl0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlcGxh
eS9SZXBsYXlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlDb250
cm9sbGVyLmNwcAppbmRleCA5MWEyOTUxNGE5NTg0MTIzNzNkNGQ3OWEyNDk2ZTEwMjBmODg5YTQy
Li5kMTA1MDFhMjZmNWUzZDYxMTBkNzA0MGZmOTdhMjQ5MDdiOWI3MjNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuY3BwCkBAIC0yODQsNyArMjg0LDcgQEAgdm9p
ZCBSZXBsYXlDb250cm9sbGVyOjp1bmxvYWRTZWdtZW50KGJvb2wgc3VwcHJlc3NOb3RpZmljYXRp
b25zKQogICAgIExPRyhXZWJSZXBsYXksICIlLTIwcyBDbGVhcmluZyBpbnB1dCBjdXJzb3JzIGZv
ciBwYWdlOiAlcFxuIiwgIlJlcGxheUNvbnRyb2xsZXIiLCAmbV9wYWdlKTsKIAogICAgIG1fYWN0
aXZlQ3Vyc29yID0gbnVsbHB0cjsKLSAgICBSZWZQdHI8UmVwbGF5U2Vzc2lvblNlZ21lbnQ+IHVu
bG9hZGVkU2VnbWVudCA9IG1fbG9hZGVkU2VnbWVudC5yZWxlYXNlKCk7CisgICAgYXV0byB1bmxv
YWRlZFNlZ21lbnQgPSBXVEZNb3ZlKG1fbG9hZGVkU2VnbWVudCk7CiAgICAgZm9yIChGcmFtZSog
ZnJhbWUgPSAmbV9wYWdlLm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgp
LnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGZyYW1lLT5zY3JpcHQoKS5nbG9iYWxPYmplY3Qo
bWFpblRocmVhZE5vcm1hbFdvcmxkKCkpLT5zZXRJbnB1dEN1cnNvcihtX2VtcHR5Q3Vyc29yLmNv
cHlSZWYoKSk7CiAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5zZXRJbnB1dEN1cnNvcihtX2Vt
cHR5Q3Vyc29yLmNvcHlSZWYoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCmluZGV4IDEyZmEwYmI3YzAxYTY1Mzk4YTQ0OTljYjE5
ZjlmYzJmNGU5NTQ3YTYuLjFhMjA3MjA4YjNiYmVjMzM3OWRmOTFjZjQxYjcwOTNkNDYyZDM4YjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQuY3BwCkBAIC0xNzksNyArMTc5LDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEaWZm
dXNlTGlnaHRpbmdFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXIKICAgICBp
ZiAoIWlucHV0MSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8TGlnaHRT
b3VyY2U+IGxpZ2h0U291cmNlID0gU1ZHRkVMaWdodEVsZW1lbnQ6OmZpbmRMaWdodFNvdXJjZSh0
aGlzKTsKKyAgICBhdXRvIGxpZ2h0U291cmNlID0gU1ZHRkVMaWdodEVsZW1lbnQ6OmZpbmRMaWdo
dFNvdXJjZSh0aGlzKTsKICAgICBpZiAoIWxpZ2h0U291cmNlKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIApAQCAtMTkwLDcgKzE5MCw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRGlm
ZnVzZUxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyCiAgICAg
Q29sb3IgY29sb3IgPSByZW5kZXJlci0+c3R5bGUoKS5zdmdTdHlsZSgpLmxpZ2h0aW5nQ29sb3Io
KTsKIAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFRGlmZnVzZUxpZ2h0aW5n
OjpjcmVhdGUoZmlsdGVyLCBjb2xvciwgc3VyZmFjZVNjYWxlKCksIGRpZmZ1c2VDb25zdGFudCgp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIGxpZ2h0
U291cmNlLnJlbGVhc2UoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsVW5pdExlbmd0aFgoKSwga2VybmVsVW5p
dExlbmd0aFkoKSwgV1RGTW92ZShsaWdodFNvdXJjZSkpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZl
Y3RzKCkuYXBwZW5kKGlucHV0MSk7CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAppbmRleCAx
OWY1ZDM4OTQ1Y2E5NjNlOWZlZmQ5OGFhNDQwMjlmMzdjNDk1YWFiLi42M2Y4NmUxZGJlYTIxMWNh
Y2JjYjdkYTQ0MjQ2MjA1ZDRhODU3NTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC0xOTAsNyArMTkwLDcgQEAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZH
RmlsdGVyQnVpbGRlciogZmlsdGUKICAgICBpZiAoIWlucHV0MSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBSZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNlID0gU1ZHRkVMaWdo
dEVsZW1lbnQ6OmZpbmRMaWdodFNvdXJjZSh0aGlzKTsKKyAgICBhdXRvIGxpZ2h0U291cmNlID0g
U1ZHRkVMaWdodEVsZW1lbnQ6OmZpbmRMaWdodFNvdXJjZSh0aGlzKTsKICAgICBpZiAoIWxpZ2h0
U291cmNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMjAxLDcgKzIwMSw3IEBAIFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKFNW
R0ZpbHRlckJ1aWxkZXIqIGZpbHRlCiAgICAgQ29sb3IgY29sb3IgPSByZW5kZXJlci0+c3R5bGUo
KS5zdmdTdHlsZSgpLmxpZ2h0aW5nQ29sb3IoKTsKIAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IGVmZmVjdCA9IEZFU3BlY3VsYXJMaWdodGluZzo6Y3JlYXRlKGZpbHRlciwgY29sb3IsIHN1cmZh
Y2VTY2FsZSgpLCBzcGVjdWxhckNvbnN0YW50KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzcGVjdWxhckV4cG9uZW50KCksIGtlcm5lbFVuaXRMZW5ndGhYKCks
IGtlcm5lbFVuaXRMZW5ndGhZKCksIGxpZ2h0U291cmNlLnJlbGVhc2UoKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjdWxhckV4cG9uZW50KCksIGtlcm5l
bFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIFdURk1vdmUobGlnaHRTb3VyY2Up
KTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwogICAgIHJldHVy
biBlZmZlY3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdMaXN0UHJvcGVydHkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQ
cm9wZXJ0eS5oCmluZGV4IDc3Nzg4ZTEwMjI0OGQ1MDI1MmM4MDE0Zjc3YTA2NWQxYmFkOTU5ZGIu
LjVkNDFlOTYwYjdlNDFiNzk4MWZiOTNkOThmNmY4MWE2ZTI1OGNhNGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eS5oCkBAIC0yMDMsNyArMjAz
LDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV93cmFwcGVycy0+YXQoaW5kZXgpID0gd3JhcHBl
cjsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiB3cmFwcGVyLnJlbGVhc2UoKTsKKyAgICAg
ICAgcmV0dXJuIFdURk1vdmUod3JhcHBlcik7CiAgICAgfQogCiAgICAgLy8gU1ZHTGlzdDo6aW5z
ZXJ0SXRlbUJlZm9yZSgpCkBAIC0yNTAsNyArMjUwLDcgQEAgcHVibGljOgogCiAgICAgICAgIC8v
IFNwZWM6IElmIG5ld0l0ZW0gaXMgYWxyZWFkeSBpbiBhIGxpc3QsIGl0IGlzIHJlbW92ZWQgZnJv
bSBpdHMgcHJldmlvdXMgbGlzdCBiZWZvcmUgaXQgaXMgaW5zZXJ0ZWQgaW50byB0aGlzIGxpc3Qu
CiAgICAgICAgIGlmICghcHJvY2Vzc0luY29taW5nTGlzdEl0ZW1XcmFwcGVyKG5ld0l0ZW0sICZp
bmRleCkpCi0gICAgICAgICAgICByZXR1cm4gbmV3SXRlbS5yZWxlYXNlKCk7CisgICAgICAgICAg
ICByZXR1cm4gV1RGTW92ZShuZXdJdGVtKTsKIAogICAgICAgICAvLyBTcGVjOiBJbnNlcnRzIGEg
bmV3IGl0ZW0gaW50byB0aGUgbGlzdCBhdCB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLiBUaGUgaW5k
ZXggb2YgdGhlIGl0ZW0gYmVmb3JlIHdoaWNoIHRoZSBuZXcgaXRlbSBpcyB0byBiZQogICAgICAg
ICAvLyBpbnNlcnRlZC4gVGhlIGZpcnN0IGl0ZW0gaXMgbnVtYmVyIDAuIElmIHRoZSBpbmRleCBp
cyBlcXVhbCB0byAwLCB0aGVuIHRoZSBuZXcgaXRlbSBpcyBpbnNlcnRlZCBhdCB0aGUgZnJvbnQg
b2YgdGhlIGxpc3QuCkBAIC0yNjAsNyArMjYwLDcgQEAgcHVibGljOgogICAgICAgICBtX3dyYXBw
ZXJzLT5pbnNlcnQoaW5kZXgsIG5ld0l0ZW0pOwogCiAgICAgICAgIGNvbW1pdENoYW5nZSgpOwot
ICAgICAgICByZXR1cm4gbmV3SXRlbTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUobmV3SXRlbSk7
CiAgICAgfQogCiAgICAgLy8gU1ZHTGlzdDo6cmVwbGFjZUl0ZW0oKQpAQCAtMzg1LDcgKzM4NSw3
IEBAIHB1YmxpYzoKICAgICAgICAgbV92YWx1ZXMtPnJlbW92ZShpbmRleCk7CiAKICAgICAgICAg
Y29tbWl0Q2hhbmdlKCk7Ci0gICAgICAgIHJldHVybiBvbGRJdGVtLnJlbGVhc2UoKTsKKyAgICAg
ICAgcmV0dXJuIFdURk1vdmUob2xkSXRlbSk7CiAgICAgfQogCiAgICAgLy8gU1ZHTGlzdDo6YXBw
ZW5kSXRlbSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVh
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKaW5kZXggZDY4
ODJkYjJjMTc3ZmRlMTcyN2YyMzEwZTI5MjBmZGJhZGZiN2Y0Ni4uZjZmNWE0ZGYxNDBlOGM3MjNi
ZjE4MzVmYTYxNTk2YTY3MDlmZTY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhy
ZWFkLmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgV29ya2VyVGhyZWFkOjp3b3JrZXJUaHJl
YWQoKQogCiAgICAgewogICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV90aHJlYWRDcmVhdGlvbk11
dGV4KTsKLSAgICAgICAgbV93b3JrZXJHbG9iYWxTY29wZSA9IGNyZWF0ZVdvcmtlckdsb2JhbFNj
b3BlKG1fc3RhcnR1cERhdGEtPm1fc2NyaXB0VVJMLCBtX3N0YXJ0dXBEYXRhLT5tX3VzZXJBZ2Vu
dCwgbV9zdGFydHVwRGF0YS0+bV9jb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMs
IG1fc3RhcnR1cERhdGEtPm1fc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9s
aWN5LCBtX3N0YXJ0dXBEYXRhLT5tX3RvcE9yaWdpbi5yZWxlYXNlKCkpOworICAgICAgICBtX3dv
cmtlckdsb2JhbFNjb3BlID0gY3JlYXRlV29ya2VyR2xvYmFsU2NvcGUobV9zdGFydHVwRGF0YS0+
bV9zY3JpcHRVUkwsIG1fc3RhcnR1cERhdGEtPm1fdXNlckFnZW50LCBtX3N0YXJ0dXBEYXRhLT5t
X2NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycywgbV9zdGFydHVwRGF0YS0+bV9z
aG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFdURk1vdmUobV9zdGFy
dHVwRGF0YS0+bV90b3BPcmlnaW4pKTsKIAogICAgICAgICBpZiAobV9ydW5Mb29wLnRlcm1pbmF0
ZWQoKSkgewogICAgICAgICAgICAgLy8gVGhlIHdvcmtlciB3YXMgdGVybWluYXRlZCBiZWZvcmUg
dGhlIHRocmVhZCBoYWQgYSBjaGFuY2UgdG8gcnVuLiBTaW5jZSB0aGUgY29udGV4dCBkaWRuJ3Qg
ZXhpc3QgeWV0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggZTVlYTc0
MDViY2U5YjA2ZGQ3Y2M3MTE3M2FiNDRjYTVmNzc1OWQ0Mi4uODdjZGZhN2IxYTI4ZjM2MTU0OGYw
YzEzYWRhZDhlNjdhNjIxOTBkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3Bw
CkBAIC03OTgsNyArNzk4LDcgQEAgYm9vbCBYTUxIdHRwUmVxdWVzdDo6aW50ZXJuYWxBYm9ydCgp
CiAgICAgLy8gQ2FuY2VsbGluZyBtX2xvYWRlciBtYXkgdHJpZ2dlciBhIHdpbmRvdy5vbmxvYWQg
Y2FsbGJhY2sgd2hpY2ggY2FuIGNhbGwgb3BlbigpIG9uIHRoZSBzYW1lIHhoci4KICAgICAvLyBU
aGlzIHdvdWxkIGNyZWF0ZSBpbnRlcm5hbEFib3J0IHJlZW50cmFudCBjYWxsLgogICAgIC8vIG1f
bG9hZGVyIGlzIHNldCB0byBudWxsIGJlZm9yZSBiZWluZyBjYW5jZWxsZWQgdG8gZXhpdCBlYXJs
eSBpbiBhbnkgcmVlbnRyYW50IGludGVybmFsQWJvcnQoKSBjYWxsLgotICAgIFJlZlB0cjxUaHJl
YWRhYmxlTG9hZGVyPiBsb2FkZXIgPSBtX2xvYWRlci5yZWxlYXNlKCk7CisgICAgYXV0byBsb2Fk
ZXIgPSBXVEZNb3ZlKG1fbG9hZGVyKTsKICAgICBsb2FkZXItPmNhbmNlbCgpOwogCiAgICAgLy8g
SWYgd2luZG93Lm9ubG9hZCBjYWxsYmFjayBjYWxscyBvcGVuKCkgYW5kIHNlbmQoKSBvbiB0aGUg
c2FtZSB4aHIsIG1fbG9hZGVyIGlzIG5vdyBzZXQgdG8gYSBuZXcgdmFsdWUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhTdGVwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
UGF0aFN0ZXAuY3BwCmluZGV4IDBhZTM0MDM2MDdjZjQ3ODYwMDZkNjk3ODRiMmFkYmM3MjJmYjNm
ZmYuLmM1NTdlMTM2ZTg3YWRiYWQwNTE4ODFhYjE3NTcwMjM5YWZhNDllMzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFN0ZXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YUGF0aFN0ZXAuY3BwCkBAIC0zNDMsMTAgKzM0MywxMCBAQCB2b2lkIFN0ZXA6Om5vZGVzSW5B
eGlzKE5vZGUmIGNvbnRleHQsIE5vZGVTZXQmIG5vZGVzKSBjb25zdAogCiAgICAgICAgICAgICAv
LyBBdm9pZCBsYXppbHkgY3JlYXRpbmcgYXR0cmlidXRlIG5vZGVzIGZvciBhdHRyaWJ1dGVzIHRo
YXQgd2UgZG8gbm90IG5lZWQgYW55d2F5LgogICAgICAgICAgICAgaWYgKG1fbm9kZVRlc3QubV9r
aW5kID09IE5vZGVUZXN0OjpOYW1lVGVzdCAmJiBtX25vZGVUZXN0Lm1fZGF0YSAhPSBzdGFyQXRv
bSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxBdHRyPiBhdHRyID0gY29udGV4dEVsZW1lbnQu
Z2V0QXR0cmlidXRlTm9kZU5TKG1fbm9kZVRlc3QubV9uYW1lc3BhY2VVUkksIG1fbm9kZVRlc3Qu
bV9kYXRhKTsKKyAgICAgICAgICAgICAgICBhdXRvIGF0dHIgPSBjb250ZXh0RWxlbWVudC5nZXRB
dHRyaWJ1dGVOb2RlTlMobV9ub2RlVGVzdC5tX25hbWVzcGFjZVVSSSwgbV9ub2RlVGVzdC5tX2Rh
dGEpOwogICAgICAgICAgICAgICAgIGlmIChhdHRyICYmIGF0dHItPm5hbWVzcGFjZVVSSSgpICE9
IFhNTE5TTmFtZXM6OnhtbG5zTmFtZXNwYWNlVVJJKSB7IC8vIEluIFhQYXRoIGxhbmQsIG5hbWVz
cGFjZSBub2RlcyBhcmUgbm90IGFjY2Vzc2libGUgb24gdGhlIGF0dHJpYnV0ZSBheGlzLgogICAg
ICAgICAgICAgICAgICAgICBpZiAobm9kZU1hdGNoZXMoKmF0dHIsIEF0dHJpYnV0ZUF4aXMsIG1f
bm9kZVRlc3QpKSAvLyBTdGlsbCBuZWVkIHRvIGNoZWNrIG1lcmdlZCBwcmVkaWNhdGVzLgotICAg
ICAgICAgICAgICAgICAgICAgICAgbm9kZXMuYXBwZW5kKGF0dHIucmVsZWFzZSgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG5vZGVzLmFwcGVuZChXVEZNb3ZlKGF0dHIpKTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtMzU1
LDkgKzM1NSw5IEBAIHZvaWQgU3RlcDo6bm9kZXNJbkF4aXMoTm9kZSYgY29udGV4dCwgTm9kZVNl
dCYgbm9kZXMpIGNvbnN0CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBm
b3IgKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlIDogY29udGV4dEVsZW1lbnQuYXR0cmlidXRl
c0l0ZXJhdG9yKCkpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8QXR0cj4gYXR0ciA9IGNvbnRl
eHRFbGVtZW50LmVuc3VyZUF0dHIoYXR0cmlidXRlLm5hbWUoKSk7Ci0gICAgICAgICAgICAgICAg
aWYgKG5vZGVNYXRjaGVzKCphdHRyLCBBdHRyaWJ1dGVBeGlzLCBtX25vZGVUZXN0KSkKLSAgICAg
ICAgICAgICAgICAgICAgbm9kZXMuYXBwZW5kKGF0dHIucmVsZWFzZSgpKTsKKyAgICAgICAgICAg
ICAgICBhdXRvIGF0dHIgPSBjb250ZXh0RWxlbWVudC5lbnN1cmVBdHRyKGF0dHJpYnV0ZS5uYW1l
KCkpOworICAgICAgICAgICAgICAgIGlmIChub2RlTWF0Y2hlcyhhdHRyLmdldCgpLCBBdHRyaWJ1
dGVBeGlzLCBtX25vZGVUZXN0KSkKKyAgICAgICAgICAgICAgICAgICAgbm9kZXMuYXBwZW5kKFdU
Rk1vdmUoYXR0cikpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCmluZGV4IDA4ZWEx
Njc2ZWM2NmNmNGY1NmFkMThiNWM0ZjQ5ZGRkYjc5ZmNhNmIuLmE2NTUwZGExYWViZWY2NGI3YWNk
MWViMmMyNjMwMGI2NzhiOTFjMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9T
dG9yYWdlQXJlYUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlQXJl
YUltcGwuY3BwCkBAIC0xMzksOSArMTM5LDkgQEAgdm9pZCBTdG9yYWdlQXJlYUltcGw6OnNldEl0
ZW0oRnJhbWUqIHNvdXJjZUZyYW1lLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW4KICAg
ICBibG9ja1VudGlsSW1wb3J0Q29tcGxldGUoKTsKIAogICAgIFN0cmluZyBvbGRWYWx1ZTsKLSAg
ICBSZWZQdHI8U3RvcmFnZU1hcD4gbmV3TWFwID0gbV9zdG9yYWdlTWFwLT5zZXRJdGVtKGtleSwg
dmFsdWUsIG9sZFZhbHVlLCBxdW90YUV4Y2VwdGlvbik7CisgICAgYXV0byBuZXdNYXAgPSBtX3N0
b3JhZ2VNYXAtPnNldEl0ZW0oa2V5LCB2YWx1ZSwgb2xkVmFsdWUsIHF1b3RhRXhjZXB0aW9uKTsK
ICAgICBpZiAobmV3TWFwKQotICAgICAgICBtX3N0b3JhZ2VNYXAgPSBuZXdNYXAucmVsZWFzZSgp
OworICAgICAgICBtX3N0b3JhZ2VNYXAgPSBXVEZNb3ZlKG5ld01hcCk7CiAKICAgICBpZiAocXVv
dGFFeGNlcHRpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTE2MSw5ICsxNjEsOSBAQCB2b2lkIFN0
b3JhZ2VBcmVhSW1wbDo6cmVtb3ZlSXRlbShGcmFtZSogc291cmNlRnJhbWUsIGNvbnN0IFN0cmlu
ZyYga2V5KQogICAgIGJsb2NrVW50aWxJbXBvcnRDb21wbGV0ZSgpOwogCiAgICAgU3RyaW5nIG9s
ZFZhbHVlOwotICAgIFJlZlB0cjxTdG9yYWdlTWFwPiBuZXdNYXAgPSBtX3N0b3JhZ2VNYXAtPnJl
bW92ZUl0ZW0oa2V5LCBvbGRWYWx1ZSk7CisgICAgYXV0byBuZXdNYXAgPSBtX3N0b3JhZ2VNYXAt
PnJlbW92ZUl0ZW0oa2V5LCBvbGRWYWx1ZSk7CiAgICAgaWYgKG5ld01hcCkKLSAgICAgICAgbV9z
dG9yYWdlTWFwID0gbmV3TWFwLnJlbGVhc2UoKTsKKyAgICAgICAgbV9zdG9yYWdlTWFwID0gV1RG
TW92ZShuZXdNYXApOwogCiAgICAgaWYgKG9sZFZhbHVlLmlzTnVsbCgpKQogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkhvc3RNYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQv
TmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbQppbmRleCBkNDllZjZlZTFiZDMxN2IyNmZmYjY4
YzgyMGU5MmMyZDc3YmM1NWJiLi5lNGI3Yzg5OWE2NWEyNDM4YjhiMzZhZDQzODc4ZDhhOGI1ZDhl
NWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkhvc3RNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9z
dGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0KQEAgLTI3Miw3ICsyNzIsNyBAQCBQYXNz
UmVmUHRyPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eT4gTmV0c2NhcGVQbHVnaW5Ib3N0TWFu
YWdlcjo6aW5zdGFudGlhdGVQbAogICAgIGluc3RhbmNlLT5zZXRSZW5kZXJDb250ZXh0SUQocmVw
bHktPm1fcmVuZGVyQ29udGV4dElEKTsKICAgICBpbnN0YW5jZS0+c2V0UmVuZGVyZXJUeXBlKHJl
cGx5LT5tX3JlbmRlcmVyVHlwZSk7CiAKLSAgICByZXR1cm4gaW5zdGFuY2UucmVsZWFzZSgpOwor
ICAgIHJldHVybiBXVEZNb3ZlKGluc3RhbmNlKTsKIH0KIAogdm9pZCBOZXRzY2FwZVBsdWdpbkhv
c3RNYW5hZ2VyOjpjcmVhdGVQcm9wZXJ0eUxpc3RGaWxlKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0
aCwgY3B1X3R5cGVfdCBwbHVnaW5BcmNoaXRlY3R1cmUsIGNvbnN0IFN0cmluZyYgYnVuZGxlSWRl
bnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05l
dHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMv
SG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQppbmRleCA5ODRjMjNkYjYxZmZl
ZDBhMGQ0OGI2YjVkOWYyYWJkZTZmMmYzMDA4Li5lZWQyNzc5ODFjMGY4ZjU4ZGIwNjc3NDFlZjli
MWU3NjBhMjJhMDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3Rl
ZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCkBAIC0yNDgsOSAr
MjQ4LDkgQEAgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpOZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveHkoTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkKIAogUGFzc1JlZlB0cjxOZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHk+IE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Y3JlYXRlKE5l
dHNjYXBlUGx1Z2luSG9zdFByb3h5KiBwbHVnaW5Ib3N0UHJveHksIFdlYkhvc3RlZE5ldHNjYXBl
UGx1Z2luVmlldyAqcGx1Z2luVmlldywgYm9vbCBmdWxsRnJhbWVQbHVnaW4pCiB7Ci0gICAgUmVm
UHRyPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eT4gcHJveHkgPSBhZG9wdFJlZihuZXcgTmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5KHBsdWdpbkhvc3RQcm94eSwgcGx1Z2luVmlldywgZnVs
bEZyYW1lUGx1Z2luKSk7Ci0gICAgcGx1Z2luSG9zdFByb3h5LT5hZGRQbHVnaW5JbnN0YW5jZShw
cm94eS5nZXQoKSk7Ci0gICAgcmV0dXJuIHByb3h5LnJlbGVhc2UoKTsKKyAgICBhdXRvIHByb3h5
ID0gYWRvcHRSZWYoKm5ldyBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkocGx1Z2luSG9zdFBy
b3h5LCBwbHVnaW5WaWV3LCBmdWxsRnJhbWVQbHVnaW4pKTsKKyAgICBwbHVnaW5Ib3N0UHJveHkt
PmFkZFBsdWdpbkluc3RhbmNlKHByb3h5LnB0cigpKTsKKyAgICByZXR1cm4gV1RGTW92ZShwcm94
eSk7CiB9CiAKIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6fk5ldHNjYXBlUGx1Z2luSW5z
dGFuY2VQcm94eSgpCkBAIC04MDEsOCArODAxLDggQEAgTlBFcnJvciBOZXRzY2FwZVBsdWdpbklu
c3RhbmNlUHJveHk6OmxvYWRSZXF1ZXN0KE5TVVJMUmVxdWVzdCAqcmVxdWVzdCwgY29uc3QgY2gK
ICAgICAgICAgICAgIHJldHVybiBOUEVSUl9JTlZBTElEX1BBUkFNOwogICAgICAgICB9CiAKLSAg
ICAgICAgUmVmUHRyPFBsdWdpblJlcXVlc3Q+IHBsdWdpblJlcXVlc3QgPSBQbHVnaW5SZXF1ZXN0
OjpjcmVhdGUocmVxdWVzdElELCByZXF1ZXN0LCB0YXJnZXQsIGFsbG93UG9wdXBzKTsKLSAgICAg
ICAgbV9wbHVnaW5SZXF1ZXN0cy5hcHBlbmQocGx1Z2luUmVxdWVzdC5yZWxlYXNlKCkpOworICAg
ICAgICBhdXRvIHBsdWdpblJlcXVlc3QgPSBQbHVnaW5SZXF1ZXN0OjpjcmVhdGUocmVxdWVzdElE
LCByZXF1ZXN0LCB0YXJnZXQsIGFsbG93UG9wdXBzKTsKKyAgICAgICAgbV9wbHVnaW5SZXF1ZXN0
cy5hcHBlbmQoV1RGTW92ZShwbHVnaW5SZXF1ZXN0KSk7CiAgICAgICAgIG1fcmVxdWVzdFRpbWVy
LnN0YXJ0T25lU2hvdCgwKTsKICAgICB9IGVsc2UgewogICAgICAgICBSZWZQdHI8SG9zdGVkTmV0
c2NhcGVQbHVnaW5TdHJlYW0+IHN0cmVhbSA9IEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpj
cmVhdGUodGhpcywgcmVxdWVzdElELCByZXF1ZXN0KTsKQEAgLTEzNzIsMTEgKzEzNzIsMTEgQEAg
Ym9vbCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmRlbWFyc2hhbFZhbHVlRnJvbUFycmF5
KEV4ZWNTdGF0ZSogZXhlYywgTlNBcnIKICAgICAgICAgICAgIGlmICghZnJhbWUtPnNjcmlwdCgp
LmNhbkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgICAgIFJlZlB0cjxSb290T2JqZWN0PiByb290
T2JqZWN0ID0gZnJhbWUtPnNjcmlwdCgpLmNyZWF0ZVJvb3RPYmplY3QobV9wbHVnaW5WaWV3KTsK
KyAgICAgICAgICAgIGF1dG8gcm9vdE9iamVjdCA9IGZyYW1lLT5zY3JpcHQoKS5jcmVhdGVSb290
T2JqZWN0KG1fcGx1Z2luVmlldyk7CiAgICAgICAgICAgICBpZiAoIXJvb3RPYmplY3QpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgCi0gICAgICAgICAgICByZXN1
bHQgPSBQcm94eUluc3RhbmNlOjpjcmVhdGUocm9vdE9iamVjdC5yZWxlYXNlKCksIHRoaXMsIG9i
amVjdElEKS0+Y3JlYXRlUnVudGltZU9iamVjdChleGVjKTsKKyAgICAgICAgICAgIHJlc3VsdCA9
IFByb3h5SW5zdGFuY2U6OmNyZWF0ZShXVEZNb3ZlKHJvb3RPYmplY3QpLCB0aGlzLCBvYmplY3RJ
RCktPmNyZWF0ZVJ1bnRpbWVPYmplY3QoZXhlYyk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCBmZmVmYzE5
MGJjYjc1NjQxNWIzZjMyZTFiMmE1MmIxMTBhNThmMzM1Li44OWJhMDdjZjcxMTE5NDEyMDZlZTQ0
YThjZGYwM2EyMTkxMGUyNWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMjM0OCw3ICsyMzQ4LDcg
QEAgLSAodm9pZClkZWFsbG9jCiAKIC0gKHZvaWQpcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbjooUG9s
aWN5QWN0aW9uKWFjdGlvbgogewotICAgIFJlZlB0cjxGcmFtZT4gZnJhbWUgPSBfZnJhbWUucmVs
ZWFzZSgpOworICAgIGF1dG8gZnJhbWUgPSBXVEZNb3ZlKF9mcmFtZSk7CiAgICAgaWYgKCFmcmFt
ZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCmluZGV4IGM2Zjg1ZGU3ZDQ3NjQ3NzBkYWVh
MzE2NzgzOTYzNGJhMmIzMTBiNDYuLmEzZGJmNGE3YjM5MGYxOWFjZGVmYzE0YmZhODI1NzQ5NTVi
NTNkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNl
Y3VyaXR5T3JpZ2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlNlY3VyaXR5T3JpZ2luLm1tCkBAIC01NCw4ICs1NCw4IEBAIC0gKGlkKWluaXRXaXRoVVJMOihO
U1VSTCAqKXVybAogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIFJl
ZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShVUkwo
W3VybCBhYnNvbHV0ZVVSTF0pKTsKLSAgICBTZWN1cml0eU9yaWdpbiogcmF3T3JpZ2luID0gb3Jp
Z2luLnJlbGVhc2UoKS5sZWFrUmVmKCk7CisgICAgYXV0byBvcmlnaW4gPSBTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKFVSTChbdXJsIGFic29sdXRlVVJMXSkpOworICAgIFNlY3VyaXR5T3JpZ2luKiBy
YXdPcmlnaW4gPSAmb3JpZ2luLmxlYWtSZWYoKTsKICAgICBfcHJpdmF0ZSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8V2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlICo+KHJhd09yaWdpbik7CiAKICAgICByZXR1
cm4gc2VsZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViQXJjaGl2
ZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViQXJjaGl2ZS5tbQppbmRleCAzNDhl
OGYwOGNhMmY0OTc2NjllZTNhYWNiZWMyY2Y2NTY3MThkYThmLi5lOTZjNjA3Y2ZiODRjODVhMWVi
ZmFhYmRjMzFjZWJhMDRlYTVjM2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkFyY2hpdmUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJBcmNo
aXZlLm1tCkBAIC0xNzUsNyArMTc1LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTWFpblJl
c291cmNlOihXZWJSZXNvdXJjZSAqKW1haW5SZXNvdXJjZSBzdWJyZXNvdXJjZXM6KE4KICAgICAg
ICAgcmV0dXJuIG5pbDsKICAgICB9CiAgICAgCi0gICAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4g
Y29yZU1haW5SZXNvdXJjZSA9IG1haW5SZXNvdXJjZSA/IFttYWluUmVzb3VyY2UgX2NvcmVSZXNv
dXJjZV0gOiAwOworICAgIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNvcmVNYWluUmVzb3VyY2Ug
PSBtYWluUmVzb3VyY2UgPyBbbWFpblJlc291cmNlIF9jb3JlUmVzb3VyY2VdIDogbnVsbHB0cjsK
IAogICAgIFZlY3RvcjxSZWZQdHI8QXJjaGl2ZVJlc291cmNlPj4gY29yZVJlc291cmNlczsKICAg
ICBmb3IgKFdlYlJlc291cmNlICpzdWJyZXNvdXJjZSBpbiBzdWJyZXNvdXJjZXMpCkBAIC0xODUs
MTMgKzE4NSwxMyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhNYWluUmVzb3VyY2U6KFdlYlJl
c291cmNlICopbWFpblJlc291cmNlIHN1YnJlc291cmNlczooTgogICAgIGZvciAoV2ViQXJjaGl2
ZSAqc3ViZnJhbWVBcmNoaXZlIGluIHN1YmZyYW1lQXJjaGl2ZXMpCiAgICAgICAgIGNvcmVBcmNo
aXZlcy5hcHBlbmQoW3N1YmZyYW1lQXJjaGl2ZS0+X3ByaXZhdGUgY29yZUFyY2hpdmVdKTsKIAot
ICAgIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjb3JlQXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hp
dmU6OmNyZWF0ZShjb3JlTWFpblJlc291cmNlLnJlbGVhc2UoKSwgV1RGTW92ZShjb3JlUmVzb3Vy
Y2VzKSwgV1RGTW92ZShjb3JlQXJjaGl2ZXMpKTsKKyAgICBhdXRvIGNvcmVBcmNoaXZlID0gTGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFdURk1vdmUoY29yZU1haW5SZXNvdXJjZSksIFdURk1vdmUo
Y29yZVJlc291cmNlcyksIFdURk1vdmUoY29yZUFyY2hpdmVzKSk7CiAgICAgaWYgKCFjb3JlQXJj
aGl2ZSkgewogICAgICAgICBbc2VsZiByZWxlYXNlXTsKICAgICAgICAgcmV0dXJuIG5pbDsKICAg
ICB9CiAKLSAgICBbX3ByaXZhdGUgc2V0Q29yZUFyY2hpdmU6Y29yZUFyY2hpdmUucmVsZWFzZSgp
XTsKKyAgICBbX3ByaXZhdGUgc2V0Q29yZUFyY2hpdmU6V1RGTW92ZShjb3JlQXJjaGl2ZSldOwog
CiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0yMDksMTMgKzIwOSwxMyBAQCAtIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhEYXRhOihOU0RhdGEgKilkYXRhCiAjZW5kaWYKIAogICAgIF9wcml2YXRlID0g
W1tXZWJBcmNoaXZlUHJpdmF0ZSBhbGxvY10gaW5pdF07Ci0gICAgUmVmUHRyPExlZ2FjeVdlYkFy
Y2hpdmU+IGNvcmVBcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZl
cjo6d3JhcE5TRGF0YShkYXRhKSk7CisgICAgYXV0byBjb3JlQXJjaGl2ZSA9IExlZ2FjeVdlYkFy
Y2hpdmU6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OndyYXBOU0RhdGEoZGF0YSkpOwogICAgIGlmICgh
Y29yZUFyY2hpdmUpIHsKICAgICAgICAgW3NlbGYgcmVsZWFzZV07CiAgICAgICAgIHJldHVybiBu
aWw7CiAgICAgfQogICAgICAgICAKLSAgICBbX3ByaXZhdGUgc2V0Q29yZUFyY2hpdmU6Y29yZUFy
Y2hpdmUucmVsZWFzZSgpXTsKKyAgICBbX3ByaXZhdGUgc2V0Q29yZUFyY2hpdmU6V1RGTW92ZShj
b3JlQXJjaGl2ZSldOwogICAgICAgICAKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgQ0ZBYnNvbHV0
ZVRpbWUgZW5kID0gQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXggODAzZDNhOGU0OWU1OWE3OTU0MDMwNmQ0
MTgxNWFmOWM0Y2UwODgwMS4uNjA2NDcyMmE1NjM2MTQ4NTg0MmNmNTdmZDkzMGY3NTU4OGQ2ZThm
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQpAQCAtNTE4
LDggKzUxOCw4IEBAIC0gKFdlYkFyY2hpdmUgKil3ZWJBcmNoaXZlCiAKIC0gKFdlYlJlc291cmNl
ICopbWFpblJlc291cmNlCiB7Ci0gICAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY29yZVJlc291
cmNlID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5tYWluUmVzb3VyY2UoKTsKLSAgICBy
ZXR1cm4gW1tbV2ViUmVzb3VyY2UgYWxsb2NdIF9pbml0V2l0aENvcmVSZXNvdXJjZTpjb3JlUmVz
b3VyY2UucmVsZWFzZSgpXSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBjb3JlUmVzb3VyY2UgPSB0
b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPm1haW5SZXNvdXJjZSgpOworICAgIHJldHVybiBb
W1tXZWJSZXNvdXJjZSBhbGxvY10gX2luaXRXaXRoQ29yZVJlc291cmNlOldURk1vdmUoY29yZVJl
c291cmNlKV0gYXV0b3JlbGVhc2VdOwogfQogCiAtIChOU0FycmF5ICopc3VicmVzb3VyY2VzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCBiMGRjZDlhOWFhNmFlZmY0Y2Rm
NmFkZGUwNGVmN2NmMjlhZTQxODc2Li45Y2JmMzA5MTMzMzljMjY2NGJiNzZhNmI1NDJiOWViZTUy
NjEzMDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTkxMSw3ICs5
MTEsNyBAQCAtIChET01Eb2N1bWVudEZyYWdtZW50ICopX2RvY3VtZW50RnJhZ21lbnRXaXRoTm9k
ZXNBc1BhcmFncmFwaHM6KE5TQXJyYXkgKilub2RlcwogICAgIHdoaWxlICgobm9kZSA9IFtub2Rl
RW51bSBuZXh0T2JqZWN0XSkpCiAgICAgICAgIG5vZGVzVmVjdG9yLmFwcGVuZChjb3JlKG5vZGUp
KTsKIAotICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGRvY3VtZW50LT5j
cmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CisgICAgYXV0byBmcmFnbWVudCA9IGRvY3VtZW50LT5j
cmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CiAKICAgICBmb3IgKGF1dG8qIG5vZGUgOiBub2Rlc1Zl
Y3RvcikgewogICAgICAgICBhdXRvIGVsZW1lbnQgPSBjcmVhdGVEZWZhdWx0UGFyYWdyYXBoRWxl
bWVudCgqZG9jdW1lbnQpOwpAQCAtOTE5LDcgKzkxOSw3IEBAIC0gKERPTURvY3VtZW50RnJhZ21l
bnQgKilfZG9jdW1lbnRGcmFnbWVudFdpdGhOb2Rlc0FzUGFyYWdyYXBoczooTlNBcnJheSAqKW5v
ZGVzCiAgICAgICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChlbGVtZW50KTsKICAgICB9CiAKLSAg
ICByZXR1cm4ga2l0KGZyYWdtZW50LnJlbGVhc2UoKS5nZXQoKSk7CisgICAgcmV0dXJuIGtpdChm
cmFnbWVudC5wdHIoKSk7CiB9CiAKIC0gKHZvaWQpX3JlcGxhY2VTZWxlY3Rpb25XaXRoTm9kZToo
RE9NTm9kZSAqKW5vZGUgc2VsZWN0UmVwbGFjZW1lbnQ6KEJPT0wpc2VsZWN0UmVwbGFjZW1lbnQg
c21hcnRSZXBsYWNlOihCT09MKXNtYXJ0UmVwbGFjZSBtYXRjaFN0eWxlOihCT09MKW1hdGNoU3R5
bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVBy
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vz
cy5jcHAKaW5kZXggYWY4NmFkOGJmMzM0MzcxYjc5Njc3MWNkMjBhMDEzZDhkNjk2MWIzZC4uM2Vl
NjI0N2U4ZGE4ODA5YjdjNDJmMDA1NTQ2ODVjNjNhYTk0YzA1YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAKQEAgLTE4Miw4ICsx
ODIsOCBAQCB2b2lkIERhdGFiYXNlUHJvY2Vzczo6Y3JlYXRlRGF0YWJhc2VUb1dlYlByb2Nlc3ND
b25uZWN0aW9uKCkKICAgICBtYWNoX3BvcnRfYWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwgTUFD
SF9QT1JUX1JJR0hUX1JFQ0VJVkUsICZsaXN0ZW5pbmdQb3J0KTsKIAogICAgIC8vIENyZWF0ZSBh
IGxpc3RlbmluZyBjb25uZWN0aW9uLgotICAgIFJlZlB0cjxEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nv
bm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNy
ZWF0ZShJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCkpOwotICAgIG1f
ZGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQoY29ubmVjdGlvbi5yZWxlYXNl
KCkpOworICAgIGF1dG8gY29ubmVjdGlvbiA9IERhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlv
bjo6Y3JlYXRlKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihsaXN0ZW5pbmdQb3J0KSk7Cisg
ICAgbV9kYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChXVEZNb3ZlKGNvbm5l
Y3Rpb24pKTsKIAogICAgIElQQzo6QXR0YWNobWVudCBjbGllbnRQb3J0KGxpc3RlbmluZ1BvcnQs
IE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKTsKICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpEYXRhYmFzZVByb2Nlc3NQcm94eTo6RGlkQ3JlYXRlRGF0YWJhc2VU
b1dlYlByb2Nlc3NDb25uZWN0aW9uKGNsaWVudFBvcnQpLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBmMTU4YWFjN2VkZjRh
M2Q3N2I1NzkzZjA1ZDE5OWNjMGNmYzhmYmNiLi5mMWNlMzFmZjY1NWYyMDZjMTgyYTE4MjFlYzZm
ZTI2MjJkN2JmYzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCkBAIC0yNTQsOCArMjU0LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQogI2lmIFVTRShVTklYX0RPTUFJ
Tl9TT0NLRVRTKQogICAgIElQQzo6Q29ubmVjdGlvbjo6U29ja2V0UGFpciBzb2NrZXRQYWlyID0g
SVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKIAotICAgIFJlZlB0
cjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gY29ubmVjdGlvbiA9IE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoc29ja2V0UGFpci5zZXJ2ZXIpOwotICAgIG1fd2Vi
UHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7CisgICAgYXV0
byBjb25uZWN0aW9uID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShzb2Nr
ZXRQYWlyLnNlcnZlcik7CisgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKFdURk1v
dmUoY29ubmVjdGlvbikpOwogCiAgICAgSVBDOjpBdHRhY2htZW50IGNsaWVudFNvY2tldChzb2Nr
ZXRQYWlyLmNsaWVudCk7CiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MoY2xpZW50U29ja2V0KSwgMCk7CkBAIC0yNjUsOCArMjY1LDggQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQogICAgIG1h
Y2hfcG9ydF9hbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBNQUNIX1BPUlRfUklHSFRfUkVDRUlW
RSwgJmxpc3RlbmluZ1BvcnQpOwogCiAgICAgLy8gQ3JlYXRlIGEgbGlzdGVuaW5nIGNvbm5lY3Rp
b24uCi0gICAgUmVmUHRyPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBjb25uZWN0aW9u
ID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShJUEM6OkNvbm5lY3Rpb246
OklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCkpOwotICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25z
LmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7CisgICAgYXV0byBjb25uZWN0aW9uID0gTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShJUEM6OkNvbm5lY3Rpb246OklkZW50
aWZpZXIobGlzdGVuaW5nUG9ydCkpOworICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVu
ZChXVEZNb3ZlKGNvbm5lY3Rpb24pKTsKIAogICAgIElQQzo6QXR0YWNobWVudCBjbGllbnRQb3J0
KGxpc3RlbmluZ1BvcnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKTsKICAgICBwYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRD
cmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhjbGllbnRQb3J0KSwgMCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKaW5kZXggYTQxZDBhYjdlMTYyMGNlNTY2OWJlYzgwMDQx
MTlhZTYzNTZlOGEwMS4uMGYxNmRmNDk2NzhmODUxYmVjMTVjMzE0MjRkMTE5YmM2MjhlYzgyMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcApAQCAtMTI3LDggKzEyNyw4IEBAIGJvb2wg
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2Rl
ciYgZGVjb2RlciwgTmV0d29yCiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVxdWVzdEJv
ZHlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlcykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9u
SGFuZGxlcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKFJlZlB0cjxTYW5kYm94RXh0
ZW5zaW9uPiBleHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUocmVxdWVzdEJvZHlT
YW5kYm94RXh0ZW5zaW9uSGFuZGxlc1tpXSkpCi0gICAgICAgICAgICAgICAgcmVzdWx0LnJlcXVl
c3RCb2R5U2FuZGJveEV4dGVuc2lvbnMuYXBwZW5kKGV4dGVuc2lvbi5yZWxlYXNlKCkpOworICAg
ICAgICAgICAgaWYgKGF1dG8gZXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKHJl
cXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbkhhbmRsZXNbaV0pKQorICAgICAgICAgICAgICAgIHJl
c3VsdC5yZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25zLmFwcGVuZChXVEZNb3ZlKGV4dGVuc2lv
bikpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKaW5kZXggYjk3OGI5OTkz
MzhiMzc4NmMxZTEyMWRjMGVlNzc4ZDViZmFkNjkxZS4uMjMwNjhhNjkyYmYzNjBlY2U0ZjZlMDU4
MDA3NTQ5N2EwNTg2Zjk2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcApAQCAtMTQ1LDEyICsxNDUsMTEg
QEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBFbnRyeTo6ZGVjb2RlU3RvcmFnZVJlY29yZChjb25z
dCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2UKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNF
KQogdm9pZCBFbnRyeTo6aW5pdGlhbGl6ZVNoYXJlYWJsZVJlc291cmNlSGFuZGxlRnJvbVN0b3Jh
Z2VSZWNvcmQoKSBjb25zdAogewotICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9y
eSA9IG1fc291cmNlU3RvcmFnZVJlY29yZC5ib2R5LnRyeUNyZWF0ZVNoYXJlZE1lbW9yeSgpOwor
ICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gbV9zb3VyY2VTdG9yYWdlUmVjb3JkLmJvZHkudHJ5Q3Jl
YXRlU2hhcmVkTWVtb3J5KCk7CiAgICAgaWYgKCFzaGFyZWRNZW1vcnkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFJlZlB0cjxTaGFyZWFibGVSZXNvdXJjZT4gc2hhcmVhYmxlUmVzb3VyY2UgPSBT
aGFyZWFibGVSZXNvdXJjZTo6Y3JlYXRlKHNoYXJlZE1lbW9yeS5yZWxlYXNlKCksIDAsIG1fc291
cmNlU3RvcmFnZVJlY29yZC5ib2R5LnNpemUoKSk7Ci0gICAgQVNTRVJUKHNoYXJlYWJsZVJlc291
cmNlKTsKKyAgICBhdXRvIHNoYXJlYWJsZVJlc291cmNlID0gU2hhcmVhYmxlUmVzb3VyY2U6OmNy
ZWF0ZShXVEZNb3ZlKHNoYXJlZE1lbW9yeSksIDAsIG1fc291cmNlU3RvcmFnZVJlY29yZC5ib2R5
LnNpemUoKSk7CiAgICAgc2hhcmVhYmxlUmVzb3VyY2UtPmNyZWF0ZUhhbmRsZShtX3NoYXJlYWJs
ZVJlc291cmNlSGFuZGxlKTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vbWFjL1NoYXJlZE1lbW9yeU1hYy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9tYWMvU2hhcmVkTWVtb3J5TWFjLmNwcAppbmRleCBjYWY0ZmI0OWI1NDZmYjk0YTIxNGFkNWEx
ZTJhODA5MTJlMDcyYTVjLi4wODBjNTI4NDI2OTc5MWZkOWU5MDQxZDI5OTJmOGZmMDQzNzg3YWY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvU2hhcmVkTWVtb3J5TWFj
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvU2hhcmVkTWVtb3J5TWFjLmNw
cApAQCAtMTEwLDEzICsxMTAsMTMgQEAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5
OjphbGxvY2F0ZShzaXplX3Qgc2l6ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
Ci0gICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5ID0gYWRvcHRSZWYoKm5ldyBT
aGFyZWRNZW1vcnkpOworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gYWRvcHRSZWYoKm5ldyBTaGFy
ZWRNZW1vcnkpOwogICAgIHNoYXJlZE1lbW9yeS0+bV9zaXplID0gc2l6ZTsKICAgICBzaGFyZWRN
ZW1vcnktPm1fZGF0YSA9IHRvUG9pbnRlcihhZGRyZXNzKTsKICAgICBzaGFyZWRNZW1vcnktPm1f
cG9ydCA9IE1BQ0hfUE9SVF9OVUxMOwogICAgIHNoYXJlZE1lbW9yeS0+bV9wcm90ZWN0aW9uID0g
UHJvdGVjdGlvbjo6UmVhZFdyaXRlOwogCi0gICAgcmV0dXJuIHNoYXJlZE1lbW9yeTsKKyAgICBy
ZXR1cm4gV1RGTW92ZShzaGFyZWRNZW1vcnkpOwogfQogCiBzdGF0aWMgaW5saW5lIHZtX3Byb3Rf
dCBtYWNoUHJvdGVjdGlvbihTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gcHJvdGVjdGlvbikKQEAg
LTE1NiwxMyArMTU2LDEzIEBAIFJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y3Jl
YXRlKHZvaWQqIGRhdGEsIHNpemVfdCBzaXplLCBQcm90ZWN0aW9uIHByCiAgICAgaWYgKCFzZW5k
UmlnaHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPFNoYXJlZE1lbW9y
eT4gc2hhcmVkTWVtb3J5KGFkb3B0UmVmKG5ldyBTaGFyZWRNZW1vcnkpKTsKKyAgICBhdXRvIHNo
YXJlZE1lbW9yeShhZG9wdFJlZigqbmV3IFNoYXJlZE1lbW9yeSkpOwogICAgIHNoYXJlZE1lbW9y
eS0+bV9zaXplID0gc2l6ZTsKICAgICBzaGFyZWRNZW1vcnktPm1fZGF0YSA9IG51bGxwdHI7CiAg
ICAgc2hhcmVkTWVtb3J5LT5tX3BvcnQgPSBzZW5kUmlnaHQubGVha1NlbmRSaWdodCgpOwogICAg
IHNoYXJlZE1lbW9yeS0+bV9wcm90ZWN0aW9uID0gcHJvdGVjdGlvbjsKIAotICAgIHJldHVybiBz
aGFyZWRNZW1vcnkucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKHNoYXJlZE1lbW9yeSk7
CiB9CiAKIFJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6bWFwKGNvbnN0IEhhbmRs
ZSYgaGFuZGxlLCBQcm90ZWN0aW9uIHByb3RlY3Rpb24pCkBAIC0xNzgsMTMgKzE3OCwxMyBAQCBS
ZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6Om1hcChjb25zdCBIYW5kbGUmIGhhbmRs
ZSwgUHJvdGVjdGlvbiBwcm90ZWN0aQogICAgIGlmIChrciAhPSBLRVJOX1NVQ0NFU1MpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVt
b3J5KGFkb3B0UmVmKG5ldyBTaGFyZWRNZW1vcnkpKTsKKyAgICBhdXRvIHNoYXJlZE1lbW9yeShh
ZG9wdFJlZigqbmV3IFNoYXJlZE1lbW9yeSkpOwogICAgIHNoYXJlZE1lbW9yeS0+bV9zaXplID0g
aGFuZGxlLm1fc2l6ZTsKICAgICBzaGFyZWRNZW1vcnktPm1fZGF0YSA9IHRvUG9pbnRlcihtYXBw
ZWRBZGRyZXNzKTsKICAgICBzaGFyZWRNZW1vcnktPm1fcG9ydCA9IE1BQ0hfUE9SVF9OVUxMOwog
ICAgIHNoYXJlZE1lbW9yeS0+bV9wcm90ZWN0aW9uID0gcHJvdGVjdGlvbjsKIAotICAgIHJldHVy
biBzaGFyZWRNZW1vcnk7CisgICAgcmV0dXJuIFdURk1vdmUoc2hhcmVkTWVtb3J5KTsKIH0KIAog
U2hhcmVkTWVtb3J5Ojp+U2hhcmVkTWVtb3J5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Q
cm9jZXNzL1BsdWdpblByb2Nlc3MuY3BwCmluZGV4IDI3MDBjYTIyNTU1YTY4ZTljMmYyMDZhMjFm
YTE3NWFjYTZkZjQxYjIuLjc1NTU3MDJhMjdiODU1MTlhMmFhMmEyNTE2MDEzYmNiNDZhYjEyZGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcApA
QCAtMTUxLDggKzE1MSw4IEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6Y3JlYXRlV2ViUHJvY2Vzc0Nv
bm5lY3Rpb24oKQogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgIElQQzo6Q29ubmVj
dGlvbjo6U29ja2V0UGFpciBzb2NrZXRQYWlyID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0
Zm9ybUNvbm5lY3Rpb24oKTsKIAotICAgIFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gY29u
bmVjdGlvbiA9IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoc29ja2V0UGFpci5zZXJ2ZXIp
OwotICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2Uo
KSk7CisgICAgYXV0byBjb25uZWN0aW9uID0gV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShz
b2NrZXRQYWlyLnNlcnZlcik7CisgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKFdU
Rk1vdmUoY29ubmVjdGlvbikpOwogCiAgICAgSVBDOjpBdHRhY2htZW50IGNsaWVudFNvY2tldChz
b2NrZXRQYWlyLmNsaWVudCk7CiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlv
bihjbGllbnRTb2NrZXQsIG1fc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlv
biksIDApOwpAQCAtMTYyLDcgKzE2Miw3IEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6Y3JlYXRlV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24oKQogICAgIG1hY2hfcG9ydF9hbGxvY2F0ZShtYWNoX3Rhc2tfc2Vs
ZigpLCBNQUNIX1BPUlRfUklHSFRfUkVDRUlWRSwgJmxpc3RlbmluZ1BvcnQpOwogCiAgICAgLy8g
Q3JlYXRlIGEgbGlzdGVuaW5nIGNvbm5lY3Rpb24uCi0gICAgUmVmUHRyPFdlYlByb2Nlc3NDb25u
ZWN0aW9uPiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShJUEM6OkNv
bm5lY3Rpb246OklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCkpOworICAgIGF1dG8gY29ubmVjdGlv
biA9IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoSVBDOjpDb25uZWN0aW9uOjpJZGVudGlm
aWVyKGxpc3RlbmluZ1BvcnQpKTsKIAogICAgIGlmIChtX2F1ZGlvSGFyZHdhcmVMaXN0ZW5lcikg
ewogICAgICAgICBpZiAobV9hdWRpb0hhcmR3YXJlTGlzdGVuZXItPmhhcmR3YXJlQWN0aXZpdHko
KSA9PSBXZWJDb3JlOjpBdWRpb0hhcmR3YXJlQWN0aXZpdHlUeXBlOjpJc0FjdGl2ZSkKQEAgLTE3
MSw3ICsxNzEsNyBAQCB2b2lkIFBsdWdpblByb2Nlc3M6OmNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0
aW9uKCkKICAgICAgICAgICAgIGNvbm5lY3Rpb24tPmF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVJbmFj
dGl2ZSgpOwogICAgIH0KIAotICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25u
ZWN0aW9uLnJlbGVhc2UoKSk7CisgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKFdU
Rk1vdmUoY29ubmVjdGlvbikpOwogCiAgICAgSVBDOjpBdHRhY2htZW50IGNsaWVudFBvcnQobGlz
dGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpOwogICAgIHBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpblByb2Nlc3NQcm94eTo6RGlkQ3JlYXRl
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY2xpZW50UG9ydCwgbV9zdXBwb3J0c0FzeW5jaHJvbm91c1Bs
dWdpbkluaXRpYWxpemF0aW9uKSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0KaW5kZXggMmEyOTczODE5ODljMWQ3
YTcwNDFkYTZlZGE4Yjg5MzFkYjA0ZDg4NC4uOWRmMmFiMGRiZTJkNTc2OTkyZmEzM2MxYzU3NjM0
OWU5ZmZiZDM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9X
S1JlbW90ZU9iamVjdENvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQ29j
b2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQpAQCAtMTA4LDkgKzEwOCw5IEBAIHN0YXRpYyB2b2lk
IGVuY29kZVRvT2JqZWN0U3RyZWFtKFdLUmVtb3RlT2JqZWN0RW5jb2RlciAqZW5jb2RlciwgaWQg
dmFsdWUpCiAgICAgc2l6ZV90IHBvc2l0aW9uID0gZW5jb2Rlci0+X29iamVjdFN0cmVhbS0+c2l6
ZSgpOwogICAgIGVuY29kZXItPl9vYmplY3RTdHJlYW0tPmVsZW1lbnRzKCkuYXBwZW5kKG51bGxw
dHIpOwogCi0gICAgUmVmUHRyPEFQSTo6RGljdGlvbmFyeT4gZW5jb2RlZE9iamVjdCA9IGNyZWF0
ZUVuY29kZWRPYmplY3QoZW5jb2RlciwgdmFsdWUpOworICAgIGF1dG8gZW5jb2RlZE9iamVjdCA9
IGNyZWF0ZUVuY29kZWRPYmplY3QoZW5jb2RlciwgdmFsdWUpOwogICAgIEFTU0VSVCghZW5jb2Rl
ci0+X29iamVjdFN0cmVhbS0+ZWxlbWVudHMoKVtwb3NpdGlvbl0pOwotICAgIGVuY29kZXItPl9v
YmplY3RTdHJlYW0tPmVsZW1lbnRzKClbcG9zaXRpb25dID0gZW5jb2RlZE9iamVjdC5yZWxlYXNl
KCk7CisgICAgZW5jb2Rlci0+X29iamVjdFN0cmVhbS0+ZWxlbWVudHMoKVtwb3NpdGlvbl0gPSBX
VEZNb3ZlKGVuY29kZWRPYmplY3QpOwogfQogCiBzdGF0aWMgdm9pZCBlbmNvZGVJbnZvY2F0aW9u
QXJndW1lbnRzKFdLUmVtb3RlT2JqZWN0RW5jb2RlciAqZW5jb2RlciwgTlNJbnZvY2F0aW9uICpp
bnZvY2F0aW9uLCBOU1VJbnRlZ2VyIGZpcnN0QXJndW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJL2MvV0tJbWFnZS5jcHAKaW5kZXggMjMyNzhiM2E3ZjUzNDAwYjM2ZDg1YzgxODdlMDRiYWUy
MWNhYzA4YS4uMjc0MTE5OWUyMjBkMDQ1ZTA3NzIzZDUxODBhODMyNzFjMmFiZDMyOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLSW1hZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0ltYWdlLmNwcApAQCAtMzgsOCArMzgsOCBAQCBXS1R5
cGVJRCBXS0ltYWdlR2V0VHlwZUlEKCkKIAogV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlKFdLU2l6
ZSBzaXplLCBXS0ltYWdlT3B0aW9ucyBvcHRpb25zKQogewotICAgIFJlZlB0cjxXZWJJbWFnZT4g
d2ViSW1hZ2UgPSBXZWJJbWFnZTo6Y3JlYXRlKHRvSW50U2l6ZShzaXplKSwgdG9JbWFnZU9wdGlv
bnMob3B0aW9ucykpOwotICAgIHJldHVybiB0b0FQSSh3ZWJJbWFnZS5yZWxlYXNlKCkubGVha1Jl
ZigpKTsKKyAgICBhdXRvIHdlYkltYWdlID0gV2ViSW1hZ2U6OmNyZWF0ZSh0b0ludFNpemUoc2l6
ZSksIHRvSW1hZ2VPcHRpb25zKG9wdGlvbnMpKTsKKyAgICByZXR1cm4gdG9BUEkod2ViSW1hZ2Uu
bGVha1JlZigpKTsKIH0KIAogV0tTaXplIFdLSW1hZ2VHZXRTaXplKFdLSW1hZ2VSZWYgaW1hZ2VS
ZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tOdW1iZXIuY3Bw
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLTnVtYmVyLmNwcAppbmRleCAxMTMwMDYz
MmNmMGZiZTI0ZGEyMDE1NGU4MzJiYjgzYmQyYTQ5NDI4Li40MThlMDI5ZWE2N2RiZjNhNmExZmVj
YzA3NTM4N2NjNmEyMTc0ZDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L2MvV0tOdW1iZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS051bWJl
ci5jcHAKQEAgLTM4LDggKzM4LDggQEAgV0tUeXBlSUQgV0tCb29sZWFuR2V0VHlwZUlEKCkKIAog
V0tCb29sZWFuUmVmIFdLQm9vbGVhbkNyZWF0ZShib29sIHZhbHVlKQogewotICAgIFJlZlB0cjxB
UEk6OkJvb2xlYW4+IGJvb2xlYW5PYmplY3QgPSBBUEk6OkJvb2xlYW46OmNyZWF0ZSh2YWx1ZSk7
Ci0gICAgcmV0dXJuIHRvQVBJKGJvb2xlYW5PYmplY3QucmVsZWFzZSgpLmxlYWtSZWYoKSk7Cisg
ICAgYXV0byBib29sZWFuT2JqZWN0ID0gQVBJOjpCb29sZWFuOjpjcmVhdGUodmFsdWUpOworICAg
IHJldHVybiB0b0FQSSgmYm9vbGVhbk9iamVjdC5sZWFrUmVmKCkpOwogfQogCiBib29sIFdLQm9v
bGVhbkdldFZhbHVlKFdLQm9vbGVhblJlZiBib29sZWFuUmVmKQpAQCAtNTQsOCArNTQsOCBAQCBX
S1R5cGVJRCBXS0RvdWJsZUdldFR5cGVJRCgpCiAKIFdLRG91YmxlUmVmIFdLRG91YmxlQ3JlYXRl
KGRvdWJsZSB2YWx1ZSkKIHsKLSAgICBSZWZQdHI8QVBJOjpEb3VibGU+IGRvdWJsZU9iamVjdCA9
IEFQSTo6RG91YmxlOjpjcmVhdGUodmFsdWUpOwotICAgIHJldHVybiB0b0FQSShkb3VibGVPYmpl
Y3QucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgYXV0byBkb3VibGVPYmplY3QgPSBBUEk6OkRv
dWJsZTo6Y3JlYXRlKHZhbHVlKTsKKyAgICByZXR1cm4gdG9BUEkoJmRvdWJsZU9iamVjdC5sZWFr
UmVmKCkpOwogfQogCiBkb3VibGUgV0tEb3VibGVHZXRWYWx1ZShXS0RvdWJsZVJlZiBkb3VibGVS
ZWYpCkBAIC03MCw4ICs3MCw4IEBAIFdLVHlwZUlEIFdLVUludDY0R2V0VHlwZUlEKCkKIAogV0tV
SW50NjRSZWYgV0tVSW50NjRDcmVhdGUodWludDY0X3QgdmFsdWUpCiB7Ci0gICAgUmVmUHRyPEFQ
STo6VUludDY0PiB1aW50NjRPYmplY3QgPSBBUEk6OlVJbnQ2NDo6Y3JlYXRlKHZhbHVlKTsKLSAg
ICByZXR1cm4gdG9BUEkodWludDY0T2JqZWN0LnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgIGF1
dG8gdWludDY0T2JqZWN0ID0gQVBJOjpVSW50NjQ6OmNyZWF0ZSh2YWx1ZSk7CisgICAgcmV0dXJu
IHRvQVBJKCZ1aW50NjRPYmplY3QubGVha1JlZigpKTsKIH0KIAogdWludDY0X3QgV0tVSW50NjRH
ZXRWYWx1ZShXS1VJbnQ2NFJlZiB1aW50NjRSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAKaW5kZXggODgyODY3ZjgwYjViZWNj
NWUyOTM0ODE4NjUyYzkwZmUxZmMxNmEyZi4uNDhjYzBiMjIyYWJjNDYzMTllNTljOTNjYjBmNjEz
OWU1NmVlMDI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLU2Vj
dXJpdHlPcmlnaW5SZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1Nl
Y3VyaXR5T3JpZ2luUmVmLmNwcApAQCAtNDgsOCArNDgsOCBAQCBXS1NlY3VyaXR5T3JpZ2luUmVm
IFdLU2VjdXJpdHlPcmlnaW5DcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKFdLU3RyaW5nUmVm
IGlkZQogCiBXS1NlY3VyaXR5T3JpZ2luUmVmIFdLU2VjdXJpdHlPcmlnaW5DcmVhdGUoV0tTdHJp
bmdSZWYgcHJvdG9jb2wsIFdLU3RyaW5nUmVmIGhvc3QsIGludCBwb3J0KQogewotICAgIFJlZlB0
cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmln
aW46OmNyZWF0ZSh0b0ltcGwocHJvdG9jb2wpLT5zdHJpbmcoKSwgdG9JbXBsKGhvc3QpLT5zdHJp
bmcoKSwgcG9ydCk7Ci0gICAgcmV0dXJuIHRvQVBJKHNlY3VyaXR5T3JpZ2luLnJlbGVhc2UoKS5s
ZWFrUmVmKCkpOworICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGUodG9JbXBsKHByb3RvY29sKS0+c3RyaW5nKCksIHRvSW1wbChob3N0KS0+c3RyaW5n
KCksIHBvcnQpOworICAgIHJldHVybiB0b0FQSShzZWN1cml0eU9yaWdpbi5sZWFrUmVmKCkpOwog
fQogCiBXS1N0cmluZ1JlZiBXS1NlY3VyaXR5T3JpZ2luQ29weURhdGFiYXNlSWRlbnRpZmllcihX
S1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9jL1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggZWMy
YWQ5NmY1MGZlNmI0NWY1MTBhZTNlOGI5MGEwNmVkMjQ4MzJlNC4uODYyZmQ3ZjYwYTg1NWQyOWFi
MjY4YjJmMTYyYjJlMDI1MTE2NDczZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSS9jL1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvV0tTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0zOSwxNCArMzksMTQg
QEAgV0tUeXBlSUQgV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVHZXRUeXBlSUQoKQogCiBXS1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZVJlZiBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNyZWF0ZShKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQog
ewotICAgIFJlZlB0cjxBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVl
ID0gQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShjb250ZXh0LCB2YWx1ZSwgZXhj
ZXB0aW9uKTsKLSAgICByZXR1cm4gdG9BUEkoc2VyaWFsaXplZFZhbHVlLnJlbGVhc2UoKS5sZWFr
UmVmKCkpOworICAgIGF1dG8gc2VyaWFsaXplZFZhbHVlID0gQVBJOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmNyZWF0ZShjb250ZXh0LCB2YWx1ZSwgZXhjZXB0aW9uKTsKKyAgICByZXR1cm4gdG9B
UEkoc2VyaWFsaXplZFZhbHVlLmxlYWtSZWYoKSk7CiB9CiAKIFdLU2VyaWFsaXplZFNjcmlwdFZh
bHVlUmVmIFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlQ3JlYXRlV2l0aEludGVybmFsUmVwcmVzZW50
YXRpb24odm9pZCogaW50ZXJuYWxSZXByZXNlbnRhdGlvbikKIHsKLSAgICBSZWZQdHI8QVBJOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSA9IEFQSTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpjcmVhdGUoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlKj4oaW50ZXJuYWxSZXByZXNlbnRhdGlvbikpOwotICAgIHJldHVybiB0b0FQSShzZXJpYWxp
emVkVmFsdWUucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgYXV0byBzZXJpYWxpemVkVmFsdWUg
PSBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0YXRpY19jYXN0PFdlYkNvcmU6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSo+KGludGVybmFsUmVwcmVzZW50YXRpb24pKTsKKyAgICBy
ZXR1cm4gdG9BUEkoJnNlcmlhbGl6ZWRWYWx1ZS5sZWFrUmVmKCkpOwogfQogCiBKU1ZhbHVlUmVm
IFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlRGVzZXJpYWxpemUoV0tTZXJpYWxpemVkU2NyaXB0VmFs
dWVSZWYgc2NyaXB0VmFsdWVSZWYsIEpTQ29udGV4dFJlZiBjb250ZXh0UmVmLCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2Fp
cm8vV0tJbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jYWlyby9X
S0ltYWdlQ2Fpcm8uY3BwCmluZGV4IGFmYjQ5OTMyYjE3ODFlNTA5MDZkYjkzNjRhMDNkZDlhZWM0
OTViODYuLjg1Yjk5Mzg0NDI3YjRmYWQ3MGJmMjBiNDlhZjIzNWU2YTMyNjQ0MWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwCkBA
IC00NSw3ICs0NSw3IEBAIGNhaXJvX3N1cmZhY2VfdCogV0tJbWFnZUNyZWF0ZUNhaXJvU3VyZmFj
ZShXS0ltYWdlUmVmIGltYWdlUmVmKQogV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlRnJvbUNhaXJv
U3VyZmFjZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIFdLSW1hZ2VPcHRpb25zIG9wdGlvbnMp
CiB7CiAgICAgSW50U2l6ZSBpbWFnZVNpemUoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgo
c3VyZmFjZSksIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlKSk7Ci0gICAg
UmVmUHRyPFdlYkltYWdlPiB3ZWJJbWFnZSA9IFdlYkltYWdlOjpjcmVhdGUoaW1hZ2VTaXplLCB0
b0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7CisgICAgYXV0byB3ZWJJbWFnZSA9IFdlYkltYWdlOjpj
cmVhdGUoaW1hZ2VTaXplLCB0b0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7CiAgICAgYXV0byBncmFw
aGljc0NvbnRleHQgPSB3ZWJJbWFnZS0+Yml0bWFwKCktPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgp
OwogCiAgICAgY2Fpcm9fdCogY3IgPSBncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgp
LT5jcigpOwpAQCAtNTQsNSArNTQsNSBAQCBXS0ltYWdlUmVmIFdLSW1hZ2VDcmVhdGVGcm9tQ2Fp
cm9TdXJmYWNlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgV0tJbWFnZU9wdGlvbgogICAgIGNh
aXJvX3JlY3RhbmdsZShjciwgMCwgMCwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWln
aHQoKSk7CiAgICAgY2Fpcm9fZmlsbChjcik7CiAKLSAgICByZXR1cm4gdG9BUEkod2ViSW1hZ2Uu
cmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKHdlYkltYWdlLmxlYWtSZWYo
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2cvV0tJbWFn
ZUNHLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCmlu
ZGV4IGJjYWI2MGI1Y2RmOTdlZjBkYjIxYTAyNTMxYTgwOGM3MjEyNGI1ZDEuLmM2MjM0M2Q5NTFi
Y2YwNjcyOTg4NWRlZjc3ODhmY2NlYTk1OGNiOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCkBAIC01MCw3ICs1MCw3IEBAIFdLSW1hZ2VSZWYgV0tJ
bWFnZUNyZWF0ZUZyb21DR0ltYWdlKENHSW1hZ2VSZWYgaW1hZ2VSZWYsIFdLSW1hZ2VPcHRpb25z
IG9wdGlvbnMpCiAgICAgICAgIHJldHVybiAwOwogICAgIAogICAgIEludFNpemUgaW1hZ2VTaXpl
KENHSW1hZ2VHZXRXaWR0aChpbWFnZVJlZiksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2VSZWYpKTsK
LSAgICBSZWZQdHI8V2ViSW1hZ2U+IHdlYkltYWdlID0gV2ViSW1hZ2U6OmNyZWF0ZShpbWFnZVNp
emUsIHRvSW1hZ2VPcHRpb25zKG9wdGlvbnMpKTsKKyAgICBhdXRvIHdlYkltYWdlID0gV2ViSW1h
Z2U6OmNyZWF0ZShpbWFnZVNpemUsIHRvSW1hZ2VPcHRpb25zKG9wdGlvbnMpKTsKICAgICBpZiAo
IXdlYkltYWdlLT5iaXRtYXAoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTU4LDUgKzU4LDUg
QEAgV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlRnJvbUNHSW1hZ2UoQ0dJbWFnZVJlZiBpbWFnZVJl
ZiwgV0tJbWFnZU9wdGlvbnMgb3B0aW9ucykKICAgICBGbG9hdFJlY3QgcmVjdChGbG9hdFBvaW50
KDAsIDApLCBpbWFnZVNpemUpOwogICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJSZWN0KHJlY3Qp
OwogICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlUmVmLCBpbWFnZVNp
emUsIHJlY3QsIHJlY3QpOwotICAgIHJldHVybiB0b0FQSSh3ZWJJbWFnZS5yZWxlYXNlKCkubGVh
a1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkod2ViSW1hZ2UubGVha1JlZigpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tDZXJ0aWZpY2F0ZUluZm9N
YWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFjL1dLQ2VydGlmaWNhdGVJbmZv
TWFjLm1tCmluZGV4IGM0NDBiNDY3MGE5NTgxYjVlZTZmMmZmNmY4YTc3YTEwNmFlZTZjMjMuLmE4
ODNiN2QzOTQzNWFiMzc2NTQzYWU2MjIxZGVjZjY3ODZkMDExOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tDZXJ0aWZpY2F0ZUluZm9NYWMubW0KKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL21hYy9XS0NlcnRpZmljYXRlSW5mb01hYy5tbQpA
QCAtMzUsNyArMzUsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogV0tDZXJ0aWZpY2F0ZUlu
Zm9SZWYgV0tDZXJ0aWZpY2F0ZUluZm9DcmVhdGVXaXRoQ2VydGZpY2F0ZUNoYWluKENGQXJyYXlS
ZWYgY2VydGlmaWNhdGVDaGFpbikKIHsKICAgICBSZWZQdHI8V2ViQ2VydGlmaWNhdGVJbmZvPiBj
ZXJ0aWZpY2F0ZUluZm8gPSBXZWJDZXJ0aWZpY2F0ZUluZm86OmNyZWF0ZShDZXJ0aWZpY2F0ZUlu
Zm8oY2VydGlmaWNhdGVDaGFpbikpOwotICAgIHJldHVybiB0b0FQSShjZXJ0aWZpY2F0ZUluZm8u
cmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKGNlcnRpZmljYXRlSW5mby5s
ZWFrUmVmKCkpOwogfQogCiBDRkFycmF5UmVmIFdLQ2VydGlmaWNhdGVJbmZvR2V0Q2VydGlmaWNh
dGVDaGFpbihXS0NlcnRpZmljYXRlSW5mb1JlZiBjZXJ0aWZpY2F0ZUluZm9SZWYpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFjL1dLT2JqQ1R5cGVXcmFwcGVyUmVm
Lm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL21hYy9XS09iakNUeXBlV3JhcHBlclJl
Zi5tbQppbmRleCBlZTAxMjViYTFlYWI0OWZhOWQ0M2ZmZDZhZGY2MDk4NmViYTY2YWQzLi5jZmNi
OTAyZTE1NWNkZjcxMWQ0ZWZjYWY0ZGYwODgwODA3NjMwMTUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFjL1dLT2JqQ1R5cGVXcmFwcGVyUmVmLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tPYmpDVHlwZVdyYXBwZXJSZWYubW0KQEAg
LTM4LDggKzM4LDggQEAgV0tUeXBlSUQgV0tPYmpDVHlwZVdyYXBwZXJHZXRUeXBlSUQoKQogCiBX
S09iakNUeXBlV3JhcHBlclJlZiBXS09iakNUeXBlV3JhcHBlckNyZWF0ZShpZCBvYmplY3QpCiB7
Ci0gICAgUmVmUHRyPE9iakNPYmplY3RHcmFwaD4gb2JqZWN0V3JhcHBlciA9IE9iakNPYmplY3RH
cmFwaDo6Y3JlYXRlKG9iamVjdCk7Ci0gICAgcmV0dXJuIHRvQVBJKG9iamVjdFdyYXBwZXIucmVs
ZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgYXV0byBvYmplY3RXcmFwcGVyID0gT2JqQ09iamVjdEdy
YXBoOjpjcmVhdGUob2JqZWN0KTsKKyAgICByZXR1cm4gdG9BUEkoJm9iamVjdFdyYXBwZXIubGVh
a1JlZigpKTsKIH0KIAogaWQgV0tPYmpDVHlwZVdyYXBwZXJHZXRPYmplY3QoV0tPYmpDVHlwZVdy
YXBwZXJSZWYgd3JhcHBlclJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9tYWMvV0tXZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9t
YWMvV0tXZWJBcmNoaXZlLmNwcAppbmRleCA4Njc2Y2M2ZTIzMzI3YzM5MjY0ZjA3MzYzMGRlZjA4
ZmNkMjE5YWZiLi5lNmFhMjRlNTZjMTg1ZTEwMDdkMzIxYzRkMDgyZGFhYmIzMjBkNzU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFjL1dLV2ViQXJjaGl2ZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL21hYy9XS1dlYkFyY2hpdmUuY3BwCkBA
IC00MywzOCArNDMsMzggQEAgV0tUeXBlSUQgV0tXZWJBcmNoaXZlR2V0VHlwZUlEKCkKIAogV0tX
ZWJBcmNoaXZlUmVmIFdLV2ViQXJjaGl2ZUNyZWF0ZShXS1dlYkFyY2hpdmVSZXNvdXJjZVJlZiBt
YWluUmVzb3VyY2VSZWYsIFdLQXJyYXlSZWYgc3VicmVzb3VyY2VzUmVmLCBXS0FycmF5UmVmIHN1
YmZyYW1lQXJjaGl2ZXNSZWYpCiB7Ci0gICAgUmVmUHRyPEFQSTo6V2ViQXJjaGl2ZT4gd2ViQXJj
aGl2ZSA9IEFQSTo6V2ViQXJjaGl2ZTo6Y3JlYXRlKHRvSW1wbChtYWluUmVzb3VyY2VSZWYpLCB0
b0ltcGwoc3VicmVzb3VyY2VzUmVmKSwgdG9JbXBsKHN1YmZyYW1lQXJjaGl2ZXNSZWYpKTsKLSAg
ICByZXR1cm4gdG9BUEkod2ViQXJjaGl2ZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICBhdXRv
IHdlYkFyY2hpdmUgPSBBUEk6OldlYkFyY2hpdmU6OmNyZWF0ZSh0b0ltcGwobWFpblJlc291cmNl
UmVmKSwgdG9JbXBsKHN1YnJlc291cmNlc1JlZiksIHRvSW1wbChzdWJmcmFtZUFyY2hpdmVzUmVm
KSk7CisgICAgcmV0dXJuIHRvQVBJKCZ3ZWJBcmNoaXZlLmxlYWtSZWYoKSk7CiB9CiAKIFdLV2Vi
QXJjaGl2ZVJlZiBXS1dlYkFyY2hpdmVDcmVhdGVXaXRoRGF0YShXS0RhdGFSZWYgZGF0YVJlZikK
IHsKLSAgICBSZWZQdHI8QVBJOjpXZWJBcmNoaXZlPiB3ZWJBcmNoaXZlID0gQVBJOjpXZWJBcmNo
aXZlOjpjcmVhdGUodG9JbXBsKGRhdGFSZWYpKTsKLSAgICByZXR1cm4gdG9BUEkod2ViQXJjaGl2
ZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICBhdXRvIHdlYkFyY2hpdmUgPSBBUEk6OldlYkFy
Y2hpdmU6OmNyZWF0ZSh0b0ltcGwoZGF0YVJlZikpOworICAgIHJldHVybiB0b0FQSSgmd2ViQXJj
aGl2ZS5sZWFrUmVmKCkpOwogfQogCiBXS1dlYkFyY2hpdmVSZWYgV0tXZWJBcmNoaXZlQ3JlYXRl
RnJvbVJhbmdlKFdLQnVuZGxlUmFuZ2VIYW5kbGVSZWYgcmFuZ2VIYW5kbGVSZWYpCiB7Ci0gICAg
UmVmUHRyPEFQSTo6V2ViQXJjaGl2ZT4gd2ViQXJjaGl2ZSA9IEFQSTo6V2ViQXJjaGl2ZTo6Y3Jl
YXRlKHRvSW1wbChyYW5nZUhhbmRsZVJlZiktPmNvcmVSYW5nZSgpKTsKLSAgICByZXR1cm4gdG9B
UEkod2ViQXJjaGl2ZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICBhdXRvIHdlYkFyY2hpdmUg
PSBBUEk6OldlYkFyY2hpdmU6OmNyZWF0ZSh0b0ltcGwocmFuZ2VIYW5kbGVSZWYpLT5jb3JlUmFu
Z2UoKSk7CisgICAgcmV0dXJuIHRvQVBJKCZ3ZWJBcmNoaXZlLmxlYWtSZWYoKSk7CiB9CiAKIFdL
V2ViQXJjaGl2ZVJlc291cmNlUmVmIFdLV2ViQXJjaGl2ZUNvcHlNYWluUmVzb3VyY2UoV0tXZWJB
cmNoaXZlUmVmIHdlYkFyY2hpdmVSZWYpCiB7CiAgICAgUmVmUHRyPEFQSTo6V2ViQXJjaGl2ZVJl
c291cmNlPiBtYWluUmVzb3VyY2UgPSB0b0ltcGwod2ViQXJjaGl2ZVJlZiktPm1haW5SZXNvdXJj
ZSgpOwotICAgIHJldHVybiB0b0FQSShtYWluUmVzb3VyY2UucmVsZWFzZSgpLmxlYWtSZWYoKSk7
CisgICAgcmV0dXJuIHRvQVBJKG1haW5SZXNvdXJjZS5sZWFrUmVmKCkpOwogfQogCiBXS0FycmF5
UmVmIFdLV2ViQXJjaGl2ZUNvcHlTdWJyZXNvdXJjZXMoV0tXZWJBcmNoaXZlUmVmIHdlYkFyY2hp
dmVSZWYpCiB7CiAgICAgUmVmUHRyPEFQSTo6QXJyYXk+IHN1YnJlc291cmNlcyA9IHRvSW1wbCh3
ZWJBcmNoaXZlUmVmKS0+c3VicmVzb3VyY2VzKCk7Ci0gICAgcmV0dXJuIHRvQVBJKHN1YnJlc291
cmNlcy5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkoc3VicmVzb3VyY2Vz
LmxlYWtSZWYoKSk7CiB9CiAKIFdLQXJyYXlSZWYgV0tXZWJBcmNoaXZlQ29weVN1YmZyYW1lQXJj
aGl2ZXMoV0tXZWJBcmNoaXZlUmVmIHdlYkFyY2hpdmVSZWYpCiB7CiAgICAgUmVmUHRyPEFQSTo6
QXJyYXk+IHN1YmZyYW1lQXJjaGl2ZXMgPSB0b0ltcGwod2ViQXJjaGl2ZVJlZiktPnN1YmZyYW1l
QXJjaGl2ZXMoKTsKLSAgICByZXR1cm4gdG9BUEkoc3ViZnJhbWVBcmNoaXZlcy5yZWxlYXNlKCku
bGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkoc3ViZnJhbWVBcmNoaXZlcy5sZWFrUmVmKCkp
OwogfQogCiBXS0RhdGFSZWYgV0tXZWJBcmNoaXZlQ29weURhdGEoV0tXZWJBcmNoaXZlUmVmIHdl
YkFyY2hpdmVSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFj
L1dLV2ViQXJjaGl2ZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9t
YWMvV0tXZWJBcmNoaXZlUmVzb3VyY2UuY3BwCmluZGV4IDg0MzJkOWViNTcxOGEwNDQxYTMxNjc3
Y2UyMWQyMzE5N2ZmZWVlNDQuLmM4MTljMDIxNjhiOTNkMTEzY2IwZTA2NjQzNTk1YjY5OTQ0M2Zj
NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tXZWJBcmNo
aXZlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tX
ZWJBcmNoaXZlUmVzb3VyY2UuY3BwCkBAIC0zOSw4ICszOSw4IEBAIFdLVHlwZUlEIFdLV2ViQXJj
aGl2ZVJlc291cmNlR2V0VHlwZUlEKCkKIAogV0tXZWJBcmNoaXZlUmVzb3VyY2VSZWYgV0tXZWJB
cmNoaXZlUmVzb3VyY2VDcmVhdGUoV0tEYXRhUmVmIGRhdGFSZWYsIFdLVVJMUmVmIFVSTFJlZiwg
V0tTdHJpbmdSZWYgTUlNRVR5cGVSZWYsIFdLU3RyaW5nUmVmIHRleHRFbmNvZGluZ1JlZikKIHsK
LSAgICBSZWZQdHI8QVBJOjpXZWJBcmNoaXZlUmVzb3VyY2U+IHdlYkFyY2hpdmVSZXNvdXJjZSA9
IEFQSTo6V2ViQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUodG9JbXBsKGRhdGFSZWYpLCB0b1dURlN0
cmluZyhVUkxSZWYpLCB0b1dURlN0cmluZyhNSU1FVHlwZVJlZiksIHRvV1RGU3RyaW5nKHRleHRF
bmNvZGluZ1JlZikpOwotICAgIHJldHVybiB0b0FQSSh3ZWJBcmNoaXZlUmVzb3VyY2UucmVsZWFz
ZSgpLmxlYWtSZWYoKSk7CisgICAgYXV0byB3ZWJBcmNoaXZlUmVzb3VyY2UgPSBBUEk6OldlYkFy
Y2hpdmVSZXNvdXJjZTo6Y3JlYXRlKHRvSW1wbChkYXRhUmVmKSwgdG9XVEZTdHJpbmcoVVJMUmVm
KSwgdG9XVEZTdHJpbmcoTUlNRVR5cGVSZWYpLCB0b1dURlN0cmluZyh0ZXh0RW5jb2RpbmdSZWYp
KTsKKyAgICByZXR1cm4gdG9BUEkoJndlYkFyY2hpdmVSZXNvdXJjZS5sZWFrUmVmKCkpOwogfQog
CiBXS0RhdGFSZWYgV0tXZWJBcmNoaXZlUmVzb3VyY2VDb3B5RGF0YShXS1dlYkFyY2hpdmVSZXNv
dXJjZVJlZiB3ZWJBcmNoaXZlUmVzb3VyY2VSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJV2ViQXJjaGl2ZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElXZWJB
cmNoaXZlLm1tCmluZGV4IDhlMTdlNWJiNTY4YWRjZDk1ZDM2YzNjOGYzOGQ2OGNjYzI2MDE2YjAu
LjkyOTAzYjM0N2E0OWZjZWNmYTZjMzVjNTllMmY2ZDY5MTZkOTgyZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUElXZWJBcmNoaXZlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUElXZWJBcmNoaXZlLm1tCkBAIC04Miw3ICs4Miw3IEBAIFdlYkFyY2hpdmU6Oldl
YkFyY2hpdmUoV2ViQXJjaGl2ZVJlc291cmNlKiBtYWluUmVzb3VyY2UsIFBhc3NSZWZQdHI8QVBJ
OjpBcnJheT4KICAgICAgICAgY29yZVN1YmZyYW1lTGVnYWN5V2ViQXJjaGl2ZXMudW5jaGVja2Vk
QXBwZW5kKHN1YmZyYW1lV2ViQXJjaGl2ZS0+Y29yZUxlZ2FjeVdlYkFyY2hpdmUoKSk7CiAgICAg
fQogCi0gICAgbV9sZWdhY3lXZWJBcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNv
cmVNYWluUmVzb3VyY2UucmVsZWFzZSgpLCBXVEZNb3ZlKGNvcmVBcmNoaXZlUmVzb3VyY2VzKSwg
V1RGTW92ZShjb3JlU3ViZnJhbWVMZWdhY3lXZWJBcmNoaXZlcykpOworICAgIG1fbGVnYWN5V2Vi
QXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShXVEZNb3ZlKGNvcmVNYWluUmVzb3Vy
Y2UpLCBXVEZNb3ZlKGNvcmVBcmNoaXZlUmVzb3VyY2VzKSwgV1RGTW92ZShjb3JlU3ViZnJhbWVM
ZWdhY3lXZWJBcmNoaXZlcykpOwogfQogCiBXZWJBcmNoaXZlOjpXZWJBcmNoaXZlKEFQSTo6RGF0
YSogZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcAppbmRleCBlYmY5NzQxMTNhYzEw
YzE5YWE1NWE0YjMyYmFjZTI0NzRhZGFmYjY5Li5hZDcwNjNiMjRmNmYwOGVhZTJiNjAzNzI2MjZk
ZGJkMGFmYmQzNDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwCkBAIC0xNDUsMTMg
KzE0NSwxMyBAQCBQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z2luTW9kdWxlPiBOZXRzY2FwZVBsdWdp
bk1vZHVsZTo6Z2V0T3JDcmVhdGUoY29uc3QgU3RyaW5nJgogICAgICAgICAgICAgcmV0dXJuIHBs
dWdpbk1vZHVsZTsKICAgICB9CiAKLSAgICBSZWZQdHI8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+IHBs
dWdpbk1vZHVsZShhZG9wdFJlZihuZXcgTmV0c2NhcGVQbHVnaW5Nb2R1bGUocGx1Z2luUGF0aCkp
KTsKKyAgICBhdXRvIHBsdWdpbk1vZHVsZShhZG9wdFJlZigqbmV3IE5ldHNjYXBlUGx1Z2luTW9k
dWxlKHBsdWdpblBhdGgpKSk7CiAgICAgCiAgICAgLy8gVHJ5IHRvIGxvYWQgYW5kIGluaXRpYWxp
emUgdGhlIHBsdWctaW4gbW9kdWxlLgogICAgIGlmICghcGx1Z2luTW9kdWxlLT5sb2FkKCkpCi0g
ICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKLSAgICByZXR1
cm4gcGx1Z2luTW9kdWxlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92ZShwbHVnaW5Nb2R1
bGUpOwogfQogCiB2b2lkIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjppbmNyZW1lbnRMb2FkQ291bnQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcAppbmRleCA0ZWVjYmNj
OTk3NzQyOTRkMzQ5ZGQxOWNkYjMwMjhiMDQ5YzFiYjU3Li43ZTBkY2I2MzUxMTMwNWJkYmIwYjUw
NTUyMzg4MDA0MDFmMjMxMTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hh
cmVhYmxlQml0bWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0
bWFwLmNwcApAQCAtOTksMTEgKzk5LDExIEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdzCiBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBIYW5kbGUm
IGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uIHByb3RlY3Rpb24pCiB7CiAgICAgLy8g
Q3JlYXRlIHRoZSBzaGFyZWQgbWVtb3J5LgotICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJl
ZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6bWFwKGhhbmRsZS5tX2hhbmRsZSwgcHJvdGVjdGlvbik7
CisgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6Om1hcChoYW5kbGUubV9oYW5k
bGUsIHByb3RlY3Rpb24pOwogICAgIGlmICghc2hhcmVkTWVtb3J5KQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiBjcmVhdGUoaGFuZGxlLm1fc2l6ZSwgaGFuZGxlLm1fZmxh
Z3MsIHNoYXJlZE1lbW9yeS5yZWxlYXNlKCkpOworICAgIHJldHVybiBjcmVhdGUoaGFuZGxlLm1f
c2l6ZSwgaGFuZGxlLm1fZmxhZ3MsIFdURk1vdmUoc2hhcmVkTWVtb3J5KSk7CiB9CiAKIGJvb2wg
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVIYW5kbGUoSGFuZGxlJiBoYW5kbGUsIFNoYXJlZE1lbW9y
eTo6UHJvdGVjdGlvbiBwcm90ZWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFi
bGVSZXNvdXJjZS5jcHAKaW5kZXggN2Y5MTI3M2VkYzMwOTRiMGI5YjllNjkzNzUzN2ZkMzkzZTk1
ZDMzMy4uNzRhZmQ0YzY2NzY2YzEwNzY5YzkwMWY5YmZmOWE5YzdjN2MyOWE0OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCkBAIC0xMTQsMTEgKzExNCwx
MSBAQCBSZWY8U2hhcmVhYmxlUmVzb3VyY2U+IFNoYXJlYWJsZVJlc291cmNlOjpjcmVhdGUoUGFz
c1JlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZAogCiBQYXNzUmVmUHRyPFNoYXJlYWJsZVJlc291
cmNlPiBTaGFyZWFibGVSZXNvdXJjZTo6bWFwKGNvbnN0IEhhbmRsZSYgaGFuZGxlKQogewotICAg
IFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6bWFwKGhh
bmRsZS5tX2hhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAg
YXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6Om1hcChoYW5kbGUubV9oYW5kbGUsIFNo
YXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgIGlmICghc2hhcmVkTWVtb3J5
KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBjcmVhdGUoc2hhcmVkTWVtb3J5LnJl
bGVhc2UoKSwgaGFuZGxlLm1fb2Zmc2V0LCBoYW5kbGUubV9zaXplKTsKKyAgICByZXR1cm4gY3Jl
YXRlKFdURk1vdmUoc2hhcmVkTWVtb3J5KSwgaGFuZGxlLm1fb2Zmc2V0LCBoYW5kbGUubV9zaXpl
KTsKIH0KIAogU2hhcmVhYmxlUmVzb3VyY2U6OlNoYXJlYWJsZVJlc291cmNlKFBhc3NSZWZQdHI8
U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnksIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgc2l6
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNH
dGsuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAK
aW5kZXggNTAxZDZmMTM3MDkwYzkzNDZhMmZlNGQxMTlmMDQwMWE1NDI0M2NkZS4uN2EyZDZjNGFh
ZWRlMjJlNjdkYWJjOTdlYWY4YWRjZjY3ZGU2MjlhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKQEAgLTIyOSw3ICsyMjksNyBAQCBib29s
IEFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVy
LCBEcmFnRGF0YSYgZHJhZ0RhdAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAot
ICAgIGRyYWdEYXRhID0gRHJhZ0RhdGEocGxhdGZvcm1EYXRhLnJlbGVhc2UoKS5sZWFrUmVmKCks
IGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgc3RhdGljX2Nhc3Q8RHJhZ09wZXJhdGlv
bj4oc291cmNlT3BlcmF0aW9uTWFzayksCisgICAgZHJhZ0RhdGEgPSBEcmFnRGF0YShwbGF0Zm9y
bURhdGEubGVha1JlZigpLCBjbGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIHN0YXRpY19j
YXN0PERyYWdPcGVyYXRpb24+KHNvdXJjZU9wZXJhdGlvbk1hc2spLAogICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+KGZsYWdzKSk7CiAKICAg
ICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9Db29yZGluYXRlZEdyYXBoaWNzL1dLVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS1ZpZXcuY3BwCmluZGV4IGMxYWIyMmZhMWEz
NTVmMjNlMmJmNzA5MjIxYmZmZjQ0NWE4OTMyOTQuLjg1ZTc5YWE0OWZhMDdjMzE4YjI4MmFhYzhk
NzgzOGRhODEzNzRhNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9Db29yZGluYXRlZEdyYXBoaWNzL1dLVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tWaWV3LmNwcApAQCAtMzIsOCArMzIs
OCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBXS1ZpZXdSZWYgV0tWaWV3Q3JlYXRlKFdL
UGFnZUNvbmZpZ3VyYXRpb25SZWYgcGFnZUNvbmZpZ3VyYXRpb24pCiB7Ci0gICAgUmVmUHRyPFdl
YlZpZXc+IHdlYlZpZXcgPSBXZWJWaWV3OjpjcmVhdGUoKnRvSW1wbChwYWdlQ29uZmlndXJhdGlv
bikpOwotICAgIHJldHVybiB0b0FQSSh3ZWJWaWV3LnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAg
IGF1dG8gd2ViVmlldyA9IFdlYlZpZXc6OmNyZWF0ZSgqdG9JbXBsKHBhZ2VDb25maWd1cmF0aW9u
KSk7CisgICAgcmV0dXJuIHRvQVBJKCZ3ZWJWaWV3LmxlYWtSZWYoKSk7CiB9CiAKIFdLU2l6ZSBX
S1ZpZXdHZXRTaXplKFdLVmlld1JlZiB2aWV3UmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLQmF0dGVyeVN0YXR1cy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tCYXR0ZXJ5U3RhdHVzLmNwcAppbmRleCA5NTM4NTBkOGJjMmMyN2Ri
MTAzYTU0MGM0OGZjNTlmNWQ2YWUwMzU2Li4wOWY4Y2M3Njk5NjlhZGQxZjJiYWE3N2ZiOWI4MGNk
NmMwZDNkYzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tC
YXR0ZXJ5U3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tC
YXR0ZXJ5U3RhdHVzLmNwcApAQCAtNDYsOCArNDYsOCBAQCBXS1R5cGVJRCBXS0JhdHRlcnlTdGF0
dXNHZXRUeXBlSUQoKQogV0tCYXR0ZXJ5U3RhdHVzUmVmIFdLQmF0dGVyeVN0YXR1c0NyZWF0ZShi
b29sIGlzQ2hhcmdpbmcsIGRvdWJsZSBjaGFyZ2luZ1RpbWUsIGRvdWJsZSBkaXNjaGFyZ2luZ1Rp
bWUsIGRvdWJsZSBsZXZlbCkKIHsKICNpZiBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpCi0gICAgUmVm
UHRyPFdlYkJhdHRlcnlTdGF0dXM+IHN0YXR1cyA9IFdlYkJhdHRlcnlTdGF0dXM6OmNyZWF0ZShp
c0NoYXJnaW5nLCBjaGFyZ2luZ1RpbWUsIGRpc2NoYXJnaW5nVGltZSwgbGV2ZWwpOwotICAgIHJl
dHVybiB0b0FQSShzdGF0dXMucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgYXV0byBzdGF0dXMg
PSBXZWJCYXR0ZXJ5U3RhdHVzOjpjcmVhdGUoaXNDaGFyZ2luZywgY2hhcmdpbmdUaW1lLCBkaXNj
aGFyZ2luZ1RpbWUsIGxldmVsKTsKKyAgICByZXR1cm4gdG9BUEkoJnN0YXR1cy5sZWFrUmVmKCkp
OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaXNDaGFyZ2luZyk7CiAgICAgVU5VU0VEX1BBUkFN
KGNoYXJnaW5nVGltZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tHZW9sb2NhdGlvblBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS0dlb2xvY2F0aW9uUG9zaXRpb24uY3BwCmluZGV4IDVkOTRmM2U4NjJiYTI5YjljY2Nm
ZjllZTUwNjBkMTY3ZWE2MDFjNzguLjhiNGM1YjY1MDVhYTFkYTI3ZmRlY2U1ZjdiODU1ZDM2OGI0
MTRiZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xv
Y2F0aW9uUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S0dlb2xvY2F0aW9uUG9zaXRpb24uY3BwCkBAIC00Myw2ICs0Myw2IEBAIFdLR2VvbG9jYXRpb25Q
b3NpdGlvblJlZiBXS0dlb2xvY2F0aW9uUG9zaXRpb25DcmVhdGUoZG91YmxlIHRpbWVzdGFtcCwg
ZG91YmxlIGxhCiAKIFdLR2VvbG9jYXRpb25Qb3NpdGlvblJlZiBXS0dlb2xvY2F0aW9uUG9zaXRp
b25DcmVhdGVfYihkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25n
aXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3VibGUgYWx0
aXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1
cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3ZpZGVz
U3BlZWQsIGRvdWJsZSBzcGVlZCkKIHsKLSAgICBSZWZQdHI8V2ViR2VvbG9jYXRpb25Qb3NpdGlv
bj4gcG9zaXRpb24gPSBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUodGltZXN0YW1wLCBs
YXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSwgcHJvdmlkZXNBbHRpdHVkZSwgYWx0aXR1ZGUs
IHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwgYWx0aXR1ZGVBY2N1cmFjeSwgcHJvdmlkZXNIZWFk
aW5nLCBoZWFkaW5nLCBwcm92aWRlc1NwZWVkLCBzcGVlZCk7Ci0gICAgcmV0dXJuIHRvQVBJKHBv
c2l0aW9uLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgIGF1dG8gcG9zaXRpb24gPSBXZWJHZW9s
b2NhdGlvblBvc2l0aW9uOjpjcmVhdGUodGltZXN0YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBh
Y2N1cmFjeSwgcHJvdmlkZXNBbHRpdHVkZSwgYWx0aXR1ZGUsIHByb3ZpZGVzQWx0aXR1ZGVBY2N1
cmFjeSwgYWx0aXR1ZGVBY2N1cmFjeSwgcHJvdmlkZXNIZWFkaW5nLCBoZWFkaW5nLCBwcm92aWRl
c1NwZWVkLCBzcGVlZCk7CisgICAgcmV0dXJuIHRvQVBJKHBvc2l0aW9uLmxlYWtSZWYoKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tHcmFtbWFyRGV0
YWlsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0dyYW1tYXJEZXRhaWwu
Y3BwCmluZGV4IDA2NWY5OWJhNzUwYTlhZDk4NTQzYmJkYWI0NGJiZWY1N2E4Yjc0MDcuLmFmZDk4
OTVkZGUzZGY0ZTNkNjE3ODcyNDdhNDNiNjFhOGU5ZjdlY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0dyYW1tYXJEZXRhaWwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0dyYW1tYXJEZXRhaWwuY3BwCkBAIC00MCw4ICs0MCw4
IEBAIFdLVHlwZUlEIFdLR3JhbW1hckRldGFpbEdldFR5cGVJRCgpCiAKIFdLR3JhbW1hckRldGFp
bFJlZiBXS0dyYW1tYXJEZXRhaWxDcmVhdGUoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoLCBXS0Fy
cmF5UmVmIGd1ZXNzZXMsIFdLU3RyaW5nUmVmIHVzZXJEZXNjcmlwdGlvbikKIHsKLSAgICBSZWZQ
dHI8V2ViR3JhbW1hckRldGFpbD4gZGV0YWlsID0gV2ViR3JhbW1hckRldGFpbDo6Y3JlYXRlKGxv
Y2F0aW9uLCBsZW5ndGgsIHRvSW1wbChndWVzc2VzKSwgdG9XVEZTdHJpbmcodXNlckRlc2NyaXB0
aW9uKSk7Ci0gICAgcmV0dXJuIHRvQVBJKGRldGFpbC5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAg
ICBhdXRvIGRldGFpbCA9IFdlYkdyYW1tYXJEZXRhaWw6OmNyZWF0ZShsb2NhdGlvbiwgbGVuZ3Ro
LCB0b0ltcGwoZ3Vlc3NlcyksIHRvV1RGU3RyaW5nKHVzZXJEZXNjcmlwdGlvbikpOworICAgIHJl
dHVybiB0b0FQSShkZXRhaWwubGVha1JlZigpKTsKIH0KIAogaW50IFdLR3JhbW1hckRldGFpbEdl
dExvY2F0aW9uKFdLR3JhbW1hckRldGFpbFJlZiBncmFtbWFyRGV0YWlsUmVmKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCA4ZTMwMzNlMzA5ZWQ0MjU4YzJl
NzQ2NWE4ZjYzYzQ2YmI2NDI5YmI1Li4xMGQwODgyMzQ0NGYyMWZhOGE1NDQ3ODRiM2Y2MmExMzJm
NTNkMGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAt
NDM5LDcgKzQzOSw3IEBAIFdLVHlwZVJlZiBXS1BhZ2VDb3B5U2Vzc2lvblN0YXRlKFdLUGFnZVJl
ZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VTZXNzaW9uCiAgICAgfSk7CiAKICAgICBp
ZiAoc2hvdWxkUmV0dXJuRGF0YSkKLSAgICAgICAgcmV0dXJuIHRvQVBJKGVuY29kZUxlZ2FjeVNl
c3Npb25TdGF0ZShzZXNzaW9uU3RhdGUpLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgICAgICBy
ZXR1cm4gdG9BUEkoZW5jb2RlTGVnYWN5U2Vzc2lvblN0YXRlKHNlc3Npb25TdGF0ZSkubGVha1Jl
ZigpKTsKIAogICAgIHJldHVybiB0b0FQSSgmQVBJOjpTZXNzaW9uU3RhdGU6OmNyZWF0ZShXVEZN
b3ZlKHNlc3Npb25TdGF0ZSkpLmxlYWtSZWYoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcAppbmRleCAzY2M2MDk1NGQ4Y2RmOTlhMmE4NzA5
YTRlMmQ3ZTFlZjViNzcxZWNkLi40ZTIxNzcxOGE1NjRhOWMxMmU1ZjQ1OTJhNGU0Y2E5MjE4N2Vl
YmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3Jv
dXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5j
cHAKQEAgLTQxLDggKzQxLDggQEAgV0tUeXBlSUQgV0tQYWdlR3JvdXBHZXRUeXBlSUQoKQogCiBX
S1BhZ2VHcm91cFJlZiBXS1BhZ2VHcm91cENyZWF0ZVdpdGhJZGVudGlmaWVyKFdLU3RyaW5nUmVm
IGlkZW50aWZpZXIpCiB7Ci0gICAgUmVmUHRyPFdlYlBhZ2VHcm91cD4gcGFnZUdyb3VwID0gV2Vi
UGFnZUdyb3VwOjpjcmVhdGUodG9XVEZTdHJpbmcoaWRlbnRpZmllcikpOwotICAgIHJldHVybiB0
b0FQSShwYWdlR3JvdXAucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgYXV0byBwYWdlR3JvdXAg
PSBXZWJQYWdlR3JvdXA6OmNyZWF0ZSh0b1dURlN0cmluZyhpZGVudGlmaWVyKSk7CisgICAgcmV0
dXJuIHRvQVBJKHBhZ2VHcm91cC5sZWFrUmVmKCkpOwogfQogCiBXS1N0cmluZ1JlZiBXS1BhZ2VH
cm91cENvcHlJZGVudGlmaWVyKFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAppbmRleCA2MDUz
MjRkNTZlNTIzYTZlYjEwNjFjZWUzZmZiMmFjMzJlZmI0NGNjLi5lOWQwZjE0NTg4OTViY2NmNTgy
ZTRlMDFlNzhlOTU1NjdjNDllZGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCkBAIC00NiwyMCArNDYsMjAgQEAgV0tUeXBlSUQgV0tQ
cmVmZXJlbmNlc0dldFR5cGVJRCgpCiAKIFdLUHJlZmVyZW5jZXNSZWYgV0tQcmVmZXJlbmNlc0Ny
ZWF0ZSgpCiB7Ci0gICAgUmVmUHRyPFdlYlByZWZlcmVuY2VzPiBwcmVmZXJlbmNlcyA9IFdlYlBy
ZWZlcmVuY2VzOjpjcmVhdGVXaXRoTGVnYWN5RGVmYXVsdHMoU3RyaW5nKCksICJXZWJLaXQyLiIs
ICJXZWJLaXQyLiIpOwotICAgIHJldHVybiB0b0FQSShwcmVmZXJlbmNlcy5yZWxlYXNlKCkubGVh
a1JlZigpKTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZVdp
dGhMZWdhY3lEZWZhdWx0cyhTdHJpbmcoKSwgIldlYktpdDIuIiwgIldlYktpdDIuIik7CisgICAg
cmV0dXJuIHRvQVBJKHByZWZlcmVuY2VzLmxlYWtSZWYoKSk7CiB9CiAKIFdLUHJlZmVyZW5jZXNS
ZWYgV0tQcmVmZXJlbmNlc0NyZWF0ZVdpdGhJZGVudGlmaWVyKFdLU3RyaW5nUmVmIGlkZW50aWZp
ZXJSZWYpCiB7Ci0gICAgUmVmUHRyPFdlYlByZWZlcmVuY2VzPiBwcmVmZXJlbmNlcyA9IFdlYlBy
ZWZlcmVuY2VzOjpjcmVhdGVXaXRoTGVnYWN5RGVmYXVsdHModG9XVEZTdHJpbmcoaWRlbnRpZmll
clJlZiksICJXZWJLaXQyLiIsICJXZWJLaXQyLiIpOwotICAgIHJldHVybiB0b0FQSShwcmVmZXJl
bmNlcy5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gV2ViUHJl
ZmVyZW5jZXM6OmNyZWF0ZVdpdGhMZWdhY3lEZWZhdWx0cyh0b1dURlN0cmluZyhpZGVudGlmaWVy
UmVmKSwgIldlYktpdDIuIiwgIldlYktpdDIuIik7CisgICAgcmV0dXJuIHRvQVBJKHByZWZlcmVu
Y2VzLmxlYWtSZWYoKSk7CiB9CiAKIFdLUHJlZmVyZW5jZXNSZWYgV0tQcmVmZXJlbmNlc0NyZWF0
ZUNvcHkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZikKIHsKLSAgICBSZWZQdHI8V2Vi
UHJlZmVyZW5jZXM+IHByZWZlcmVuY2VzID0gdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+Y29weSgp
OwotICAgIHJldHVybiB0b0FQSShwcmVmZXJlbmNlcy5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAg
ICBhdXRvIHByZWZlcmVuY2VzID0gdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+Y29weSgpOworICAg
IHJldHVybiB0b0FQSShwcmVmZXJlbmNlcy5sZWFrUmVmKCkpOwogfQogCiB2b2lkIFdLUHJlZmVy
ZW5jZXNFbmFibGVBbGxFeHBlcmltZW50YWxGZWF0dXJlcyhXS1ByZWZlcmVuY2VzUmVmIHByZWZl
cmVuY2VzUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
U2Vzc2lvblJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tTZXNzaW9u
UmVmLmNwcAppbmRleCBhOTM1NzkwODcyNTQ2ZTE3N2U5MGMxM2U2ZTM1OGQ3MTZmZGM1YTBjLi5m
ZWRjMGU4YTc4OWRlZTU3NmViZWJkNmJmOTYxNzUxNzdjNDU0N2VjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tTZXNzaW9uUmVmLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tTZXNzaW9uUmVmLmNwcApAQCAtMzcsOCArMzcsOCBA
QCBXS1Nlc3Npb25SZWYgV0tTZXNzaW9uQ3JlYXRlKGJvb2wgaXNFcGhlbWVyYWwpCiAgICAgaWYg
KCFpc0VwaGVtZXJhbCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8QVBJ
OjpTZXNzaW9uPiBzZXNzaW9uID0gQVBJOjpTZXNzaW9uOjpjcmVhdGVFcGhlbWVyYWwoKTsKLSAg
ICByZXR1cm4gdG9BUEkoc2Vzc2lvbi5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICBhdXRvIHNl
c3Npb24gPSBBUEk6OlNlc3Npb246OmNyZWF0ZUVwaGVtZXJhbCgpOworICAgIHJldHVybiB0b0FQ
SSgmc2Vzc2lvbi5sZWFrUmVmKCkpOwogfQogCiBXS1R5cGVJRCBXS1Nlc3Npb25HZXRUeXBlSUQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLU2Vzc2lvblN0
YXRlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Nlc3Npb25TdGF0
ZVJlZi5jcHAKaW5kZXggOThlNzE3NTE5ZDU2YTI3NWE1MDQxMTVmY2Q4NmZhZWY0NTVjMGQ2NS4u
YzkzOGY1MTRjYTM4ZTIyNDQwZWNmMmFiMGIyNGU2ZGNhYjFkNTlkYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLU2Vzc2lvblN0YXRlUmVmLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tTZXNzaW9uU3RhdGVSZWYuY3BwCkBAIC00
OCw1ICs0OCw1IEBAIFdLU2Vzc2lvblN0YXRlUmVmIFdLU2Vzc2lvblN0YXRlQ3JlYXRlRnJvbURh
dGEoV0tEYXRhUmVmIGRhdGEpCiAKIFdLRGF0YVJlZiBXS1Nlc3Npb25TdGF0ZUNvcHlEYXRhKFdL
U2Vzc2lvblN0YXRlUmVmIHNlc3Npb25TdGF0ZSkKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b0FQ
SShXZWJLaXQ6OmVuY29kZUxlZ2FjeVNlc3Npb25TdGF0ZShXZWJLaXQ6OnRvSW1wbChzZXNzaW9u
U3RhdGUpLT5zZXNzaW9uU3RhdGUoKSkucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJu
IFdlYktpdDo6dG9BUEkoV2ViS2l0OjplbmNvZGVMZWdhY3lTZXNzaW9uU3RhdGUoV2ViS2l0Ojp0
b0ltcGwoc2Vzc2lvblN0YXRlKS0+c2Vzc2lvblN0YXRlKCkpLmxlYWtSZWYoKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZh
dGVNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFBy
aXZhdGVNYWMubW0KaW5kZXggNGMxOTJiNmQ0YTZlOGM1NzcyZjYwMzA1ZjY2ZWYyMThhYTBjMmIx
ZS4uYTU4OTEwNGIxMmE5OGNkN2Q3ZjYxZGFhOGY5NmY0ZGNkNWY5YzJmNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0
ZU1hYy5tbQpAQCAtNzMsOCArNzMsOCBAQCBXS0RpY3Rpb25hcnlSZWYgV0tDb250ZXh0Q29weVBs
dWdJbkluZm9Gb3JCdW5kbGVJZGVudGlmaWVyKFdLQ29udGV4dFJlZiBjb250ZXh0UgogICAgIGlm
IChwbHVnaW4ucGF0aC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8
QVBJOjpEaWN0aW9uYXJ5PiBkaWN0aW9uYXJ5ID0gY3JlYXRlUGx1Z2luSW5mb3JtYXRpb25EaWN0
aW9uYXJ5KHBsdWdpbik7Ci0gICAgcmV0dXJuIHRvQVBJKGRpY3Rpb25hcnkucmVsZWFzZSgpLmxl
YWtSZWYoKSk7CisgICAgYXV0byBkaWN0aW9uYXJ5ID0gY3JlYXRlUGx1Z2luSW5mb3JtYXRpb25E
aWN0aW9uYXJ5KHBsdWdpbik7CisgICAgcmV0dXJuIHRvQVBJKCZkaWN0aW9uYXJ5LmxlYWtSZWYo
KSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDMwMWNiY2U5NDhkMmIxNGY5MDM5
ZGExNDZkNjJkOTcxODBhYjMxNmMuLjYwMDAwODhiZDQxMzYzZmIyN2QxMzgwYzdkYmUyZmYzM2Fh
MjJjOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCkBAIC02NjEsNyArNjYxLDcgQEAgLSAoV0tOYXZpZ2F0aW9uICopbG9hZFJlcXVlc3Q6
KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKICAgICBpZiAoIW5hdmlnYXRpb24pCiAgICAgICAgIHJl
dHVybiBuaWw7CiAKLSAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ucmVsZWFzZSgpLmxl
YWtSZWYoKSkgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBbd3JhcHBlcigqbmF2aWdhdGlvbi5s
ZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAoV0tOYXZpZ2F0aW9uICopbG9hZEZpbGVV
Ukw6KE5TVVJMICopVVJMIGFsbG93aW5nUmVhZEFjY2Vzc1RvVVJMOihOU1VSTCAqKXJlYWRBY2Nl
c3NVUkwKQEAgLTY3Niw3ICs2NzYsNyBAQCAtIChXS05hdmlnYXRpb24gKilsb2FkRmlsZVVSTDoo
TlNVUkwgKilVUkwgYWxsb3dpbmdSZWFkQWNjZXNzVG9VUkw6KE5TVVJMICopcmVhZAogICAgIGlm
ICghbmF2aWdhdGlvbikKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiBbd3JhcHBl
cigqbmF2aWdhdGlvbi5yZWxlYXNlKCkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CisgICAgcmV0
dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOwogfQogCiAt
IChXS05hdmlnYXRpb24gKilsb2FkSFRNTFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgYmFzZVVS
TDooTlNVUkwgKiliYXNlVVJMCkBAIC02OTIsNyArNjkyLDcgQEAgLSAoV0tOYXZpZ2F0aW9uICop
bG9hZERhdGE6KE5TRGF0YSAqKWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5cGUgY2hh
cmFjdGUKICAgICBpZiAoIW5hdmlnYXRpb24pCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBy
ZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ucmVsZWFzZSgpLmxlYWtSZWYoKSkgYXV0b3JlbGVh
c2VdOworICAgIHJldHVybiBbd3JhcHBlcigqbmF2aWdhdGlvbi5sZWFrUmVmKCkpIGF1dG9yZWxl
YXNlXTsKIH0KIAogLSAoV0tOYXZpZ2F0aW9uICopZ29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW06KFdL
QmFja0ZvcndhcmRMaXN0SXRlbSAqKWl0ZW0KQEAgLTcwMSw3ICs3MDEsNyBAQCAtIChXS05hdmln
YXRpb24gKilnb1RvQmFja0ZvcndhcmRMaXN0SXRlbTooV0tCYWNrRm9yd2FyZExpc3RJdGVtICop
aXRlbQogICAgIGlmICghbmF2aWdhdGlvbikKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJl
dHVybiBbd3JhcHBlcigqbmF2aWdhdGlvbi5yZWxlYXNlKCkubGVha1JlZigpKSBhdXRvcmVsZWFz
ZV07CisgICAgcmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLmxlYWtSZWYoKSkgYXV0b3JlbGVh
c2VdOwogfQogCiAtIChOU1N0cmluZyAqKXRpdGxlCkBAIC03NTgsNyArNzU4LDcgQEAgLSAoV0tO
YXZpZ2F0aW9uICopZ29CYWNrCiAgICAgaWYgKCFuYXZpZ2F0aW9uKQogICAgICAgICByZXR1cm4g
bmlsOwogIAotICAgIHJldHVybiBbd3JhcHBlcigqbmF2aWdhdGlvbi5yZWxlYXNlKCkubGVha1Jl
ZigpKSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLmxlYWtS
ZWYoKSkgYXV0b3JlbGVhc2VdOwogfQogCiAtIChXS05hdmlnYXRpb24gKilnb0ZvcndhcmQKQEAg
LTc2Nyw3ICs3NjcsNyBAQCAtIChXS05hdmlnYXRpb24gKilnb0ZvcndhcmQKICAgICBpZiAoIW5h
dmlnYXRpb24pCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICByZXR1cm4gW3dyYXBwZXIoKm5h
dmlnYXRpb24ucmVsZWFzZSgpLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBb
d3JhcHBlcigqbmF2aWdhdGlvbi5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAoV0tO
YXZpZ2F0aW9uICopcmVsb2FkCkBAIC03NzgsNyArNzc4LDcgQEAgLSAoV0tOYXZpZ2F0aW9uICop
cmVsb2FkCiAgICAgaWYgKCFuYXZpZ2F0aW9uKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAg
cmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLnJlbGVhc2UoKS5sZWFrUmVmKCkpIGF1dG9yZWxl
YXNlXTsKKyAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ubGVha1JlZigpKSBhdXRvcmVs
ZWFzZV07CiB9CiAKIC0gKFdLTmF2aWdhdGlvbiAqKXJlbG9hZEZyb21PcmlnaW4KQEAgLTc4OSw3
ICs3ODksNyBAQCAtIChXS05hdmlnYXRpb24gKilyZWxvYWRGcm9tT3JpZ2luCiAgICAgaWYgKCFu
YXZpZ2F0aW9uKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIFt3cmFwcGVyKCpu
YXZpZ2F0aW9uLnJlbGVhc2UoKS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4g
W3dyYXBwZXIoKm5hdmlnYXRpb24ubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKHZv
aWQpc3RvcExvYWRpbmcKQEAgLTMxNzcsNyArMzE3Nyw3IEBAIC0gKFdLTmF2aWdhdGlvbiAqKV9s
b2FkRGF0YTooTlNEYXRhICopZGF0YSBNSU1FVHlwZTooTlNTdHJpbmcgKilNSU1FVHlwZSBjaGFy
YWN0CiAgICAgaWYgKCFuYXZpZ2F0aW9uKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0
dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLnJlbGVhc2UoKS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNl
XTsKKyAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ubGVha1JlZigpKSBhdXRvcmVsZWFz
ZV07CiB9CiAKIC0gKE5TQXJyYXkgKilfY2VydGlmaWNhdGVDaGFpbgpAQCAtMzI1OCw3ICszMjU4
LDcgQEAgLSAoV0tOYXZpZ2F0aW9uICopX3JlbG9hZFdpdGhvdXRDb250ZW50QmxvY2tlcnMKICAg
ICBpZiAoIW5hdmlnYXRpb24pCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCi0gICAgcmV0dXJu
IFt3cmFwcGVyKCpuYXZpZ2F0aW9uLnJlbGVhc2UoKS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsK
KyAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ubGVha1JlZigpKSBhdXRvcmVsZWFzZV07
CiB9CiAKIC0gKHZvaWQpX2tpbGxXZWJDb250ZW50UHJvY2Vzc0FuZFJlc2V0U3RhdGUKQEAgLTMz
MzksNyArMzMzOSw3IEBAIC0gKE5TRGF0YSAqKV9zZXNzaW9uU3RhdGVEYXRhCiAgICAgV2ViS2l0
OjpTZXNzaW9uU3RhdGUgc2Vzc2lvblN0YXRlID0gX3BhZ2UtPnNlc3Npb25TdGF0ZSgpOwogCiAg
ICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIG5vdCB1c2UgdGhlIGxlZ2FjeSBzZXNzaW9uIHN0YXRl
IGVuY29kZXIuCi0gICAgcmV0dXJuIFt3cmFwcGVyKCpXZWJLaXQ6OmVuY29kZUxlZ2FjeVNlc3Np
b25TdGF0ZShzZXNzaW9uU3RhdGUpLnJlbGVhc2UoKS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsK
KyAgICByZXR1cm4gW3dyYXBwZXIoKldlYktpdDo6ZW5jb2RlTGVnYWN5U2Vzc2lvblN0YXRlKHNl
c3Npb25TdGF0ZSkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKF9XS1Nlc3Npb25T
dGF0ZSAqKV9zZXNzaW9uU3RhdGUKQEAgLTMzNjMsNyArMzM2Myw3IEBAIC0gKFdLTmF2aWdhdGlv
biAqKV9yZXN0b3JlU2Vzc2lvblN0YXRlOihfV0tTZXNzaW9uU3RhdGUgKilzZXNzaW9uU3RhdGUg
YW5kTmF2aWdhCiAgICAgaWYgKCFuYXZpZ2F0aW9uKQogICAgICAgICByZXR1cm4gbmlsOwogCi0g
ICAgcmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLnJlbGVhc2UoKS5sZWFrUmVmKCkpIGF1dG9y
ZWxlYXNlXTsKKyAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ubGVha1JlZigpKSBhdXRv
cmVsZWFzZV07CiB9CiAKIC0gKHZvaWQpX2Nsb3NlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZGF0YWJhc2VfbWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZGF0YWJhc2VfbWFuYWdlci5jcHAKaW5kZXggZGFj
Zjc4ZmE5NDg3MGE3MWJiYTU2MDRkMzNjOWJhYjUyMWU3MmRjMi4uNzZmY2QxOTY3OGY1ZWU2M2E3
NWFiNTIwYmZjYmE5MDJhNTMxMmRkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2RhdGFiYXNlX21hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19kYXRhYmFzZV9tYW5hZ2VyLmNwcApAQCAtNzUsNyArNzUs
NyBAQCBFaW5hX0xpc3QqIEV3a0RhdGFiYXNlTWFuYWdlcjo6Y3JlYXRlT3JpZ2luTGlzdChXS0Fy
cmF5UmVmIG9yaWdpbnMpIGNvbnN0CiAgICAgICAgICAgICBvcmlnaW4gPSBFd2tTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlKHdrT3JpZ2luUmVmKTsKICAgICAgICAgICAgIG1fd3JhcHBlckNhY2hlLnNl
dCh3a09yaWdpblJlZiwgb3JpZ2luKTsKICAgICAgICAgfQotICAgICAgICBvcmlnaW5MaXN0ID0g
ZWluYV9saXN0X2FwcGVuZChvcmlnaW5MaXN0LCBvcmlnaW4ucmVsZWFzZSgpLmxlYWtSZWYoKSk7
CisgICAgICAgIG9yaWdpbkxpc3QgPSBlaW5hX2xpc3RfYXBwZW5kKG9yaWdpbkxpc3QsIG9yaWdp
bi5sZWFrUmVmKCkpOwogICAgIH0KIAogICAgIHJldHVybiBvcmlnaW5MaXN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3N0b3JhZ2VfbWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfc3RvcmFnZV9tYW5hZ2Vy
LmNwcAppbmRleCA1ZDNlZGIwYTI2OTZiMjE1MWNmNjA4NWY3ZDY1NTBlYzQyZjA4NDgzLi43M2Zh
ZDM5N2QzMWVjZDU4ZDBiZmQ0MGVhN2E3NDAwNDU2NDhlODE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfc3RvcmFnZV9tYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfc3RvcmFnZV9tYW5hZ2VyLmNwcApA
QCAtNTMsMTIgKzUzLDEyIEBAIEVpbmFfTGlzdCogRXdrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZU9y
aWdpbkxpc3QoV0tBcnJheVJlZiBvcmlnaW5zKSBjb25zdAogCiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICBXS1NlY3VyaXR5T3JpZ2luUmVmIHdrT3Jp
Z2luUmVmID0gc3RhdGljX2Nhc3Q8V0tTZWN1cml0eU9yaWdpblJlZj4oV0tBcnJheUdldEl0ZW1B
dEluZGV4KG9yaWdpbnMsIGkpKTsKLSAgICAgICAgUmVmUHRyPEV3a1NlY3VyaXR5T3JpZ2luPiBv
cmlnaW4gPSBtX3dyYXBwZXJDYWNoZS5nZXQod2tPcmlnaW5SZWYpOworICAgICAgICBhdXRvIG9y
aWdpbiA9IG1fd3JhcHBlckNhY2hlLmdldCh3a09yaWdpblJlZik7CiAgICAgICAgIGlmICghb3Jp
Z2luKSB7CiAgICAgICAgICAgICBvcmlnaW4gPSBFd2tTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHdr
T3JpZ2luUmVmKTsKICAgICAgICAgICAgIG1fd3JhcHBlckNhY2hlLnNldCh3a09yaWdpblJlZiwg
b3JpZ2luKTsKICAgICAgICAgfQotICAgICAgICBvcmlnaW5MaXN0ID0gZWluYV9saXN0X2FwcGVu
ZChvcmlnaW5MaXN0LCBvcmlnaW4ucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgICAgIG9yaWdp
bkxpc3QgPSBlaW5hX2xpc3RfYXBwZW5kKG9yaWdpbkxpc3QsIG9yaWdpbi5sZWFrUmVmKCkpOwog
ICAgIH0KIAogICAgIHJldHVybiBvcmlnaW5MaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCA5NmZlMWZjMjlhNjVkMmI2
ZTU5ODBlMGYxMDg1MDQwYTc2MDE0ZDMyLi40MTQ4MDZjZTRjMjI4Y2Y5NzVlNTBhNmUxZTUyNWQ1
ZThmYjg4ZTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3LmNwcApAQCAtMTgzNyw3ICsxODM3LDcgQEAgV2ViUGFnZVByb3h5KiB3ZWJr
aXRXZWJWaWV3Q3JlYXRlTmV3UGFnZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBXaW5k
b3dGZWEKICAgICB3ZWJraXRXaW5kb3dQcm9wZXJ0aWVzVXBkYXRlRnJvbVdlYldpbmRvd0ZlYXR1
cmVzKG5ld1dlYlZpZXctPnByaXYtPndpbmRvd1Byb3BlcnRpZXMuZ2V0KCksIHdpbmRvd0ZlYXR1
cmVzKTsKIAogICAgIFJlZlB0cjxXZWJQYWdlUHJveHk+IG5ld1BhZ2UgPSBnZXRQYWdlKG5ld1dl
YlZpZXcpOwotICAgIHJldHVybiBuZXdQYWdlLnJlbGVhc2UoKS5sZWFrUmVmKCk7CisgICAgcmV0
dXJuIG5ld1BhZ2UubGVha1JlZigpOwogfQogCiB2b2lkIHdlYmtpdFdlYlZpZXdSZWFkeVRvU2hv
d1BhZ2UoV2ViS2l0V2ViVmlldyogd2ViVmlldykKQEAgLTE5MjUsNyArMTkyNSw3IEBAIHZvaWQg
d2Via2l0V2ViVmlld01vdXNlVGFyZ2V0Q2hhbmdlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBj
b25zdCBXZWJIaXRUZXN0UmVzCiAKIHZvaWQgd2Via2l0V2ViVmlld1ByaW50RnJhbWUoV2ViS2l0
V2ViVmlldyogd2ViVmlldywgV2ViRnJhbWVQcm94eSogZnJhbWUpCiB7Ci0gICAgR1JlZlB0cjxX
ZWJLaXRQcmludE9wZXJhdGlvbj4gcHJpbnRPcGVyYXRpb24gPSBhZG9wdEdSZWYod2Via2l0X3By
aW50X29wZXJhdGlvbl9uZXcod2ViVmlldykpOworICAgIGF1dG8gcHJpbnRPcGVyYXRpb24gPSBh
ZG9wdEdSZWYod2Via2l0X3ByaW50X29wZXJhdGlvbl9uZXcod2ViVmlldykpOwogICAgIHdlYmtp
dFByaW50T3BlcmF0aW9uU2V0UHJpbnRNb2RlKHByaW50T3BlcmF0aW9uLmdldCgpLCBQcmludElu
Zm86OlByaW50TW9kZVN5bmMpOwogICAgIGdib29sZWFuIHJldHVyblZhbHVlOwogICAgIGdfc2ln
bmFsX2VtaXQod2ViVmlldywgc2lnbmFsc1tQUklOVF0sIDAsIHByaW50T3BlcmF0aW9uLmdldCgp
LCAmcmV0dXJuVmFsdWUpOwpAQCAtMzIwNCw3ICszMjA0LDcgQEAgc3RhdGljIHZvaWQgZmlsZVJl
cGxhY2VDb250ZW50c0NhbGxiYWNrKEdPYmplY3QqIG9iamVjdCwgR0FzeW5jUmVzdWx0KiByZXN1
bHQsIGcKIAogc3RhdGljIHZvaWQgZ2V0Q29udGVudHNBc01IVE1MRGF0YUNhbGxiYWNrKEFQSTo6
RGF0YSogd2tEYXRhLCBHVGFzayogdGFza1B0cikKIHsKLSAgICBHUmVmUHRyPEdUYXNrPiB0YXNr
ID0gYWRvcHRHUmVmKHRhc2tQdHIpOworICAgIGF1dG8gdGFzayA9IGFkb3B0R1JlZih0YXNrUHRy
KTsKICAgICBpZiAoZ190YXNrX3JldHVybl9lcnJvcl9pZl9jYW5jZWxsZWQodGFzay5nZXQoKSkp
CiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0NvY29hL1Nlc3Npb25TdGF0ZUNvZGluZy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b2NvYS9TZXNzaW9uU3RhdGVDb2RpbmcubW0KaW5kZXggM2VkNDE5ZGNkNTM5NzQxMTg2NDA4ZmJi
ODBiMGRkODVlMTBiNDAxYS4uNjIzYmE0NjBhMjA4YWI3ZDczNjEyN2NlYWE4NDQxNGZjYTA0NTAz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1Nlc3Npb25TdGF0
ZUNvZGluZy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvU2Vzc2lvblN0
YXRlQ29kaW5nLm1tCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogUmV0YWlu
UHRyPE5TRGF0YT4gZW5jb2RlU2Vzc2lvblN0YXRlKGNvbnN0IFNlc3Npb25TdGF0ZSYgc2Vzc2lv
blN0YXRlKQogewogI2lmIFdLX0FQSV9FTkFCTEVECi0gICAgcmV0dXJuIFt3cmFwcGVyKCpXZWJL
aXQ6OmVuY29kZUxlZ2FjeVNlc3Npb25TdGF0ZShzZXNzaW9uU3RhdGUpLnJlbGVhc2UoKS5sZWFr
UmVmKCkpIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gW3dyYXBwZXIoKldlYktpdDo6ZW5jb2Rl
TGVnYWN5U2Vzc2lvblN0YXRlKHNlc3Npb25TdGF0ZSkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07
CiAjZWxzZQogICAgIHJldHVybiBudWxscHRyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKaW5kZXggMWQyMDUzOWExODczODlkMTJmMDAxMmQ3MDY5
NzJiNjdhMGRhZDA2OS4uMWI2N2U5Mzg0Njc5NzlkMTI5Y2M3ZmMyZmFiY2Q1ZGZlMDdmZTQ0YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2suaApAQCAtMjAwLDEx
ICsyMDAsMTEgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIFQ+CiAgICAgUmVmUHRyPFQ+
IHRha2UodWludDY0X3QgY2FsbGJhY2tJRCkKICAgICB7Ci0gICAgICAgIFJlZlB0cjxDYWxsYmFj
a0Jhc2U+IGJhc2UgPSBtX21hcC50YWtlKGNhbGxiYWNrSUQpOworICAgICAgICBhdXRvIGJhc2Ug
PSBtX21hcC50YWtlKGNhbGxiYWNrSUQpOwogICAgICAgICBpZiAoIWJhc2UpCiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICByZXR1cm4gYWRvcHRSZWYoYmFzZS5yZWxlYXNl
KCkubGVha1JlZigpLT5hczxUPigpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKGJhc2UubGVh
a1JlZigpLT5hczxUPigpKTsKICAgICB9CiAKICAgICB2b2lkIGludmFsaWRhdGUoQ2FsbGJhY2tC
YXNlOjpFcnJvciBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9H
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNw
cAppbmRleCAyMDVhMGYwNmM5ZTNjNGVlOWY2ZDVhODBhMGYxZDIzZTUzNzNkNjYyLi4wY2Y3MDQ1
MTE4MGE1Y2NhY2M5YmFmMWNhZGFiMWI0MWIzM2FkZmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkuY3BwCkBAIC00Nyw5ICs0Nyw5IEBAIHZvaWQgR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6aW52YWxpZGF0ZVJlcXVlc3RzKCkKIAogUGFz
c1JlZlB0cjxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHk+IEdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNyZWF0ZVJlcXVlc3QodWludDY0X3QgZ2VvbG9j
YXRpb25JRCkKIHsKLSAgICBSZWZQdHI8R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5
PiByZXF1ZXN0ID0gR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpjcmVhdGUodGhp
cywgZ2VvbG9jYXRpb25JRCk7Ci0gICAgbV9wZW5kaW5nUmVxdWVzdHMuYWRkKGdlb2xvY2F0aW9u
SUQsIHJlcXVlc3QuZ2V0KCkpOwotICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKKyAgICBh
dXRvIHJlcXVlc3QgPSBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OmNyZWF0ZSh0
aGlzLCBnZW9sb2NhdGlvbklEKTsKKyAgICBtX3BlbmRpbmdSZXF1ZXN0cy5hZGQoZ2VvbG9jYXRp
b25JRCwgcmVxdWVzdC5wdHIoKSk7CisgICAgcmV0dXJuIFdURk1vdmUocmVxdWVzdCk7CiB9CiAK
IHZvaWQgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2
ZUdlb2xvY2F0aW9uUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90IGdlb2xvY2F0aW9uSUQsIGJv
b2wgYWxsb3dlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggYjQyNjYwZmU2MWJlNDVkNTAxNmRlZGY2
ZWYzNzM0NDU0Yjc0NzNlOC4uZDdkMzUwOTk4N2JjNGZkNjcyOGE4NzM3M2UyYmM2MTEzYjY5ZWE5
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTI0OSw4ICsyNDksOCBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdl
SUQsIHVpbgogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFn
ZShwYWdlSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0socGFnZSk7CiAKLSAgICBSZWZQdHI8QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VQcm94eT4gYXV0aGVudGljYXRpb25DaGFsbGVuZ2UgPSBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVByb3h5OjpjcmVhdGUoY29yZUNoYWxsZW5nZSwgY2hhbGxlbmdlSUQs
IGNvbm5lY3Rpb24oKSk7Ci0gICAgcGFnZS0+ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUHJveHkoZnJhbWVJRCwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UucmVsZWFzZSgpKTsKKyAg
ICBhdXRvIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQ
cm94eTo6Y3JlYXRlKGNvcmVDaGFsbGVuZ2UsIGNoYWxsZW5nZUlELCBjb25uZWN0aW9uKCkpOwor
ICAgIHBhZ2UtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KGZyYW1lSUQs
IFdURk1vdmUoYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpkaWRGZXRjaFdlYnNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0
IFdlYnNpdGVEYXRhJiB3ZWJzaXRlRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlm
aWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAppbmRleCAwYjJhNjMyOTc4
ZGI3Y2I0ZTNhYzVlODE4NDMxODkyY2MxNjk1NGU0Li44MThhNTI1NDE2MDdhM2NlOWEyM2RjODc4
ZjE4YmZhMTM3YzBkYWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCkBAIC00OCw5ICs0OCw5IEBAIHZvaWQg
Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmludmFsaWRhdGVSZXF1
ZXN0cygpCiAKIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q+IE5vdGlm
aWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpjcmVhdGVSZXF1ZXN0KHVpbnQ2
NF90IG5vdGlmaWNhdGlvbklEKQogewotICAgIFJlZlB0cjxOb3RpZmljYXRpb25QZXJtaXNzaW9u
UmVxdWVzdD4gcmVxdWVzdCA9IE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUo
dGhpcywgbm90aWZpY2F0aW9uSUQpOwotICAgIG1fcGVuZGluZ1JlcXVlc3RzLmFkZChub3RpZmlj
YXRpb25JRCwgcmVxdWVzdC5nZXQoKSk7Ci0gICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOwor
ICAgIGF1dG8gcmVxdWVzdCA9IE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUo
dGhpcywgbm90aWZpY2F0aW9uSUQpOworICAgIG1fcGVuZGluZ1JlcXVlc3RzLmFkZChub3RpZmlj
YXRpb25JRCwgcmVxdWVzdC5wdHIoKSk7CisgICAgcmV0dXJuIFdURk1vdmUocmVxdWVzdCk7CiB9
CiAKIHZvaWQgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmRpZFJl
Y2VpdmVOb3RpZmljYXRpb25QZXJtaXNzaW9uRGVjaXNpb24odWludDY0X3Qgbm90aWZpY2F0aW9u
SUQsIGJvb2wgYWxsb3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5jcHAKaW5kZXggYmQwMGJkYzgzNzQxZmE2Y2Jm
MTBkMjQxZjgzMzU4MGRhYmExNWI0NS4uZmZhMGE3ZTg2Mjc5ZjE1NWM5NGY2NGU3NmVmZDNlMWVk
MWVmYmJkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc01hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmNwcApAQCAtMTI1LDEwICsxMjUsMTAgQEAgUGx1Z2lu
UHJvY2Vzc1Byb3h5KiBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6Z2V0T3JDcmVhdGVQbHVnaW5Qcm9j
ZXNzKHVpbnQ2NF90IHBsdWcKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcGx1Z2luUHJv
Y2Vzc1Rva2Vucy5zaXplKCk7ICsraSkgewogICAgICAgICBhdXRvJiBhdHRyaWJ1dGVzQW5kVG9r
ZW4gPSBtX3BsdWdpblByb2Nlc3NUb2tlbnNbaV07CiAgICAgICAgIGlmIChhdHRyaWJ1dGVzQW5k
VG9rZW4uc2Vjb25kID09IHBsdWdpblByb2Nlc3NUb2tlbikgewotICAgICAgICAgICAgUmVmUHRy
PFBsdWdpblByb2Nlc3NQcm94eT4gcGx1Z2luUHJvY2VzcyA9IFBsdWdpblByb2Nlc3NQcm94eTo6
Y3JlYXRlKHRoaXMsIGF0dHJpYnV0ZXNBbmRUb2tlbi5maXJzdCwgYXR0cmlidXRlc0FuZFRva2Vu
LnNlY29uZCk7Ci0gICAgICAgICAgICBQbHVnaW5Qcm9jZXNzUHJveHkqIHBsdWdpblByb2Nlc3NQ
dHIgPSBwbHVnaW5Qcm9jZXNzLmdldCgpOworICAgICAgICAgICAgYXV0byBwbHVnaW5Qcm9jZXNz
ID0gUGx1Z2luUHJvY2Vzc1Byb3h5OjpjcmVhdGUodGhpcywgYXR0cmlidXRlc0FuZFRva2VuLmZp
cnN0LCBhdHRyaWJ1dGVzQW5kVG9rZW4uc2Vjb25kKTsKKyAgICAgICAgICAgIFBsdWdpblByb2Nl
c3NQcm94eSogcGx1Z2luUHJvY2Vzc1B0ciA9IHBsdWdpblByb2Nlc3MucHRyKCk7CiAKLSAgICAg
ICAgICAgIG1fcGx1Z2luUHJvY2Vzc2VzLmFwcGVuZChwbHVnaW5Qcm9jZXNzLnJlbGVhc2UoKSk7
CisgICAgICAgICAgICBtX3BsdWdpblByb2Nlc3Nlcy5hcHBlbmQoV1RGTW92ZShwbHVnaW5Qcm9j
ZXNzKSk7CiAgICAgICAgICAgICByZXR1cm4gcGx1Z2luUHJvY2Vzc1B0cjsKICAgICAgICAgfQog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3Jh
Z2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VN
YW5hZ2VyLmNwcAppbmRleCBiNGNhNTM0OTk2ODA3OWVjNDJjNzQ4Mjg0ODY2ZGQ3YmUzNzg2NWFj
Li4xNWM5OGVhYzliZWEwODcyMGU2N2IzOGI1ZjVkNmYzZDJhOTNlZDk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0y
MTksOSArMjE5LDkgQEAgdm9pZCBTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6OnNldEl0ZW0o
SVBDOjpDb25uZWN0aW9uKiBzb3VyY2VDb25uZWN0aW9uLCB1aW4KIAogICAgIFN0cmluZyBvbGRW
YWx1ZTsKIAotICAgIFJlZlB0cjxTdG9yYWdlTWFwPiBuZXdTdG9yYWdlTWFwID0gbV9zdG9yYWdl
TWFwLT5zZXRJdGVtKGtleSwgdmFsdWUsIG9sZFZhbHVlLCBxdW90YUV4Y2VwdGlvbik7CisgICAg
YXV0byBuZXdTdG9yYWdlTWFwID0gbV9zdG9yYWdlTWFwLT5zZXRJdGVtKGtleSwgdmFsdWUsIG9s
ZFZhbHVlLCBxdW90YUV4Y2VwdGlvbik7CiAgICAgaWYgKG5ld1N0b3JhZ2VNYXApCi0gICAgICAg
IG1fc3RvcmFnZU1hcCA9IG5ld1N0b3JhZ2VNYXAucmVsZWFzZSgpOworICAgICAgICBtX3N0b3Jh
Z2VNYXAgPSBXVEZNb3ZlKG5ld1N0b3JhZ2VNYXApOwogCiAgICAgaWYgKHF1b3RhRXhjZXB0aW9u
KQogICAgICAgICByZXR1cm47CkBAIC0yMzcsOSArMjM3LDkgQEAgdm9pZCBTdG9yYWdlTWFuYWdl
cjo6U3RvcmFnZUFyZWE6OnJlbW92ZUl0ZW0oSVBDOjpDb25uZWN0aW9uKiBzb3VyY2VDb25uZWN0
aW9uLAogICAgIG9wZW5EYXRhYmFzZUFuZEltcG9ydEl0ZW1zSWZOZWVkZWQoKTsKIAogICAgIFN0
cmluZyBvbGRWYWx1ZTsKLSAgICBSZWZQdHI8U3RvcmFnZU1hcD4gbmV3U3RvcmFnZU1hcCA9IG1f
c3RvcmFnZU1hcC0+cmVtb3ZlSXRlbShrZXksIG9sZFZhbHVlKTsKKyAgICBhdXRvIG5ld1N0b3Jh
Z2VNYXAgPSBtX3N0b3JhZ2VNYXAtPnJlbW92ZUl0ZW0oa2V5LCBvbGRWYWx1ZSk7CiAgICAgaWYg
KG5ld1N0b3JhZ2VNYXApCi0gICAgICAgIG1fc3RvcmFnZU1hcCA9IG5ld1N0b3JhZ2VNYXAucmVs
ZWFzZSgpOworICAgICAgICBtX3N0b3JhZ2VNYXAgPSBXVEZNb3ZlKG5ld1N0b3JhZ2VNYXApOwog
CiAgICAgaWYgKG9sZFZhbHVlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CkBAIC02ODYsMTAg
KzY4NiwxMCBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVMb2NhbFN0b3JhZ2VNYXAoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdAogICAgIC8vIEZJWE1FOiBUaGlzIHNo
b3VsZCBiZSBhIG1lc3NhZ2UgY2hlY2suCiAgICAgQVNTRVJUKGxvY2FsU3RvcmFnZU5hbWVzcGFj
ZSk7CiAKLSAgICBSZWZQdHI8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhID0gbG9jYWxTdG9yYWdl
TmFtZXNwYWNlLT5nZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKHNlY3VyaXR5T3JpZ2luRGF0YS5zZWN1
cml0eU9yaWdpbigpKTsKKyAgICBhdXRvIHN0b3JhZ2VBcmVhID0gbG9jYWxTdG9yYWdlTmFtZXNw
YWNlLT5nZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKHNlY3VyaXR5T3JpZ2luRGF0YS5zZWN1cml0eU9y
aWdpbigpKTsKICAgICBzdG9yYWdlQXJlYS0+YWRkTGlzdGVuZXIoY29ubmVjdGlvbiwgc3RvcmFn
ZU1hcElEKTsKIAotICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdG9yYWdlQXJlYS5yZWxl
YXNlKCk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IFdURk1vdmUoc3RvcmFnZUFyZWEp
OwogfQogCiB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VN
YXAoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVp
bnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BM
ZXZlbE9yaWdpbkRhdGEsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW5E
YXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJk
TGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNw
cAppbmRleCAyNzM0MzEyMzJiMmNiNTQyODM3ZjIyMWM2ZjFlZGY1YTNmOTI4MDcwLi4wZjcxM2E5
ZDA0Mjg0ZTZjZGZkNWVlMDE2NjBlMzc1YzlhNzhkZjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZv
aWQgV2ViQmFja0ZvcndhcmRMaXN0OjphZGRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIG5l
d0l0ZW0pCiAgICAgICAgIHJlbW92ZWRJdGVtcy5yZXNlcnZlQ2FwYWNpdHkobV9lbnRyaWVzLnNp
emUoKSAtIHRhcmdldFNpemUpOwogICAgICAgICB3aGlsZSAobV9lbnRyaWVzLnNpemUoKSA+IHRh
cmdldFNpemUpIHsKICAgICAgICAgICAgIGRpZFJlbW92ZUl0ZW0oKm1fZW50cmllcy5sYXN0KCkp
OwotICAgICAgICAgICAgcmVtb3ZlZEl0ZW1zLmFwcGVuZChtX2VudHJpZXMubGFzdCgpLnJlbGVh
c2UoKSk7CisgICAgICAgICAgICByZW1vdmVkSXRlbXMuYXBwZW5kKFdURk1vdmUobV9lbnRyaWVz
Lmxhc3QoKSkpOwogICAgICAgICAgICAgbV9lbnRyaWVzLnJlbW92ZUxhc3QoKTsKICAgICAgICAg
fQogCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZExpc3Q6OmFkZEl0ZW0o
V2ViQmFja0ZvcndhcmRMaXN0SXRlbSogbmV3SXRlbSkKICAgICAgICAgLy8gKG9yIGV2ZW4gaWYg
d2UgYXJlLCBpZiB3ZSBvbmx5IHdhbnQgMSBlbnRyeSkuCiAgICAgICAgIGlmIChtX2VudHJpZXMu
c2l6ZSgpID09IG1fY2FwYWNpdHkgJiYgKG1fY3VycmVudEluZGV4IHx8IG1fY2FwYWNpdHkgPT0g
MSkpIHsKICAgICAgICAgICAgIGRpZFJlbW92ZUl0ZW0oKm1fZW50cmllc1swXSk7Ci0gICAgICAg
ICAgICByZW1vdmVkSXRlbXMuYXBwZW5kKG1fZW50cmllc1swXS5yZWxlYXNlKCkpOworICAgICAg
ICAgICAgcmVtb3ZlZEl0ZW1zLmFwcGVuZChXVEZNb3ZlKG1fZW50cmllc1swXSkpOwogICAgICAg
ICAgICAgbV9lbnRyaWVzLnJlbW92ZSgwKTsKIAogICAgICAgICAgICAgaWYgKG1fZW50cmllcy5p
c0VtcHR5KCkpCkBAIC0xMjcsNyArMTI3LDcgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZExpc3Q6OmFk
ZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogbmV3SXRlbSkKICAgICAgICAgICAgIGlmICgh
bV9lbnRyaWVzW2ldKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgZGlk
UmVtb3ZlSXRlbSgqbV9lbnRyaWVzW2ldKTsKLSAgICAgICAgICAgIHJlbW92ZWRJdGVtcy5hcHBl
bmQobV9lbnRyaWVzW2ldLnJlbGVhc2UoKSk7CisgICAgICAgICAgICByZW1vdmVkSXRlbXMuYXBw
ZW5kKFdURk1vdmUobV9lbnRyaWVzW2ldKSk7CiAgICAgICAgIH0KICAgICAgICAgbV9lbnRyaWVz
LmNsZWFyKCk7CiAgICAgfQpAQCAtMzU3LDcgKzM1Nyw3IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRM
aXN0OjpjbGVhcigpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIGRp
ZFJlbW92ZUl0ZW0oKm1fZW50cmllc1tpXSk7Ci0gICAgICAgICAgICByZW1vdmVkSXRlbXMuYXBw
ZW5kKG1fZW50cmllc1tpXS5yZWxlYXNlKCkpOworICAgICAgICAgICAgcmVtb3ZlZEl0ZW1zLmFw
cGVuZChXVEZNb3ZlKG1fZW50cmllc1tpXSkpOwogICAgICAgICB9CiAKICAgICAgICAgbV9lbnRy
aWVzLmNsZWFyKCk7CkBAIC0zNzYsMTQgKzM3NiwxNCBAQCB2b2lkIFdlYkJhY2tGb3J3YXJkTGlz
dDo6Y2xlYXIoKQogICAgIHJlbW92ZWRJdGVtcy5yZXNlcnZlQ2FwYWNpdHkoc2l6ZSAtIDEpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIGlmIChpICE9
IG1fY3VycmVudEluZGV4ICYmIG1faGFzQ3VycmVudEluZGV4ICYmIG1fZW50cmllc1tpXSkKLSAg
ICAgICAgICAgIHJlbW92ZWRJdGVtcy5hcHBlbmQobV9lbnRyaWVzW2ldLnJlbGVhc2UoKSk7Cisg
ICAgICAgICAgICByZW1vdmVkSXRlbXMuYXBwZW5kKFdURk1vdmUobV9lbnRyaWVzW2ldKSk7CiAg
ICAgfQogCiAgICAgbV9jdXJyZW50SW5kZXggPSAwOwogCiAgICAgaWYgKGN1cnJlbnRJdGVtKSB7
CiAgICAgICAgIG1fZW50cmllcy5zaHJpbmsoMSk7Ci0gICAgICAgIG1fZW50cmllc1swXSA9IGN1
cnJlbnRJdGVtLnJlbGVhc2UoKTsKKyAgICAgICAgbV9lbnRyaWVzWzBdID0gV1RGTW92ZShjdXJy
ZW50SXRlbSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9lbnRyaWVzLmNsZWFyKCk7CiAgICAg
ICAgIG1faGFzQ3VycmVudEluZGV4ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDJjMzBkNjQwNDUzMmM2YTQ0
ZjIyYmFiY2Y5MDNjZGJjZTI0ZGVkZGMuLmM2ZmY5MzYwM2VkYTlkMDgxYjg1NjQwNGM5NDg3ZjEz
ZDdlZWI0OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVN
YW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVN
YW5hZ2VyUHJveHkuY3BwCkBAIC05NSw5ICs5NSw5IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclBy
b3h5OjpkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKIAogdm9pZCBXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKHN0ZDo6ZnVuY3Rpb248dm9pZCAoQVBJOjpB
cnJheSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQogewotICAgIFJl
ZlB0cjxBcnJheUNhbGxiYWNrPiBjYWxsYmFjayA9IEFycmF5Q2FsbGJhY2s6OmNyZWF0ZShXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKKyAgICBhdXRvIGNhbGxiYWNrID0gQXJyYXlDYWxsYmFj
azo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogICAgIHVpbnQ2NF90IGNhbGxi
YWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwotICAgIG1fYXJyYXlDYWxsYmFja3Muc2V0
KGNhbGxiYWNrSUQsIGNhbGxiYWNrLnJlbGVhc2UoKSk7CisgICAgbV9hcnJheUNhbGxiYWNrcy5z
ZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwogCiAgICAgcHJvY2Vzc1Bvb2woKS0+
c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpX
ZWJDb29raWVNYW5hZ2VyOjpHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjYWxsYmFja0lEKSk7CiB9
CkBAIC0xNjcsMTAgKzE2NywxMCBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbAogCiB2b2lkIFdl
YkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShzdGQ6OmZ1bmN0
aW9uPHZvaWQgKEhUVFBDb29raWVBY2NlcHRQb2xpY3ksIENhbGxiYWNrQmFzZTo6RXJyb3IpPiBj
YWxsYmFja0Z1bmN0aW9uKQogewotICAgIFJlZlB0cjxIVFRQQ29va2llQWNjZXB0UG9saWN5Q2Fs
bGJhY2s+IGNhbGxiYWNrID0gSFRUUENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrOjpjcmVhdGUo
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CisgICAgYXV0byBjYWxsYmFjayA9IEhUVFBDb29r
aWVBY2NlcHRQb2xpY3lDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikp
OwogCiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7Ci0g
ICAgbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBjYWxs
YmFjay5yZWxlYXNlKCkpOworICAgIG1faHR0cENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrcy5z
ZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwogCiAgICAgcHJvY2Vzc1Bvb2woKS0+
c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpX
ZWJDb29raWVNYW5hZ2VyOjpHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGNhbGxiYWNrSUQpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZDQzZGQx
NmZhNGJkODc4NGI1NzdiOGFjMWEwMDk3ZDIyNzA0Y2I1NC4uNGRiYWY2OWI3ZmQwMzk3ZmY0ZTdk
ZjE1Yjk0ODhjNTk4YjgzY2QwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKQEAgLTYxNjgsMTEgKzYxNjgsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omluc3Rh
bGxWaWV3U3RhdGVDaGFuZ2VDb21wbGV0aW9uSGFuZGxlcih2b2lkICheY29tcGxldGlvbkhhbmQK
ICAgICB9CiAKICAgICBhdXRvIGNvcGllZENvbXBsZXRpb25IYW5kbGVyID0gQmxvY2tfY29weShj
b21wbGV0aW9uSGFuZGxlcik7Ci0gICAgUmVmUHRyPFZvaWRDYWxsYmFjaz4gdm9pZENhbGxiYWNr
ID0gVm9pZENhbGxiYWNrOjpjcmVhdGUoW2NvcGllZENvbXBsZXRpb25IYW5kbGVyXSAoQ2FsbGJh
Y2tCYXNlOjpFcnJvcikgeworICAgIGF1dG8gdm9pZENhbGxiYWNrID0gVm9pZENhbGxiYWNrOjpj
cmVhdGUoW2NvcGllZENvbXBsZXRpb25IYW5kbGVyXSAoQ2FsbGJhY2tCYXNlOjpFcnJvcikgewog
ICAgICAgICBjb3BpZWRDb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICBCbG9ja19yZWxlYXNl
KGNvcGllZENvbXBsZXRpb25IYW5kbGVyKTsKICAgICB9LCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBt
X2NhbGxiYWNrcy5wdXQodm9pZENhbGxiYWNrLnJlbGVhc2UoKSk7CisgICAgdWludDY0X3QgY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKHZvaWRDYWxsYmFjaykpOwogICAgIG1f
bmV4dFZpZXdTdGF0ZUNoYW5nZUNhbGxiYWNrcy5hcHBlbmQoY2FsbGJhY2tJRCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuY3BwCmluZGV4IDQ0YjM2MzNm
Y2MxZTYzZmQ2ZGY4NzYxZTE5MGYxMDAyYzg1M2Y0ZmIuLjgwOWFhODM2MTkzMzQ4OTY0NjZkMDA1
ZGY1ZjAzZDM1ZmJhZjI1YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByZWZl
cmVuY2VzLmNwcApAQCAtNDUsMTQgKzQ1LDE0IEBAIFJlZjxXZWJQcmVmZXJlbmNlcz4gV2ViUHJl
ZmVyZW5jZXM6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluCiAK
IFBhc3NSZWZQdHI8V2ViUHJlZmVyZW5jZXM+IFdlYlByZWZlcmVuY2VzOjpjcmVhdGVXaXRoTGVn
YWN5RGVmYXVsdHMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGtleVBy
ZWZpeCwgY29uc3QgU3RyaW5nJiBnbG9iYWxEZWJ1Z0tleVByZWZpeCkKIHsKLSAgICBSZWZQdHI8
V2ViUHJlZmVyZW5jZXM+IHByZWZlcmVuY2VzID0gYWRvcHRSZWYobmV3IFdlYlByZWZlcmVuY2Vz
KGlkZW50aWZpZXIsIGtleVByZWZpeCwgZ2xvYmFsRGVidWdLZXlQcmVmaXgpKTsKKyAgICBhdXRv
IHByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShpZGVudGlmaWVyLCBrZXlQcmVm
aXgsIGdsb2JhbERlYnVnS2V5UHJlZml4KTsKICAgICAvLyBGSVhNRTogVGhlIHJlZ2lzdGVyRGVm
YXVsdC4uLlZhbHVlRm9yS2V5IG1hY2hpbmVyeSBpcyB1bm5lY2Vzc2FyaWx5IGhlYXZ5d2VpZ2h0
IGFuZCBjb21wbGljYXRlZC4KICAgICAvLyBXZSBjYW4ganVzdCBjb21wdXRlIGRpZmZlcmVudCBk
ZWZhdWx0cyBmb3IgbW9kZXJuIGFuZCBsZWdhY3kgQVBJcyBpbiBXZWJQcmVmZXJlbmNlc0RlZmlu
aXRpb25zLmggbWFjcm9zLgogICAgIHByZWZlcmVuY2VzLT5yZWdpc3RlckRlZmF1bHRCb29sVmFs
dWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmphdmFFbmFibGVkS2V5KCksIHRydWUpOwogICAg
IHByZWZlcmVuY2VzLT5yZWdpc3RlckRlZmF1bHRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5j
ZXNLZXk6OmphdmFFbmFibGVkRm9yTG9jYWxGaWxlc0tleSgpLCB0cnVlKTsKICAgICBwcmVmZXJl
bmNlcy0+cmVnaXN0ZXJEZWZhdWx0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojpw
bHVnaW5zRW5hYmxlZEtleSgpLCB0cnVlKTsKICAgICBwcmVmZXJlbmNlcy0+cmVnaXN0ZXJEZWZh
dWx0VUludDMyVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnN0b3JhZ2VCbG9ja2luZ1Bv
bGljeUtleSgpLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6QWxsb3dBbGxTdG9yYWdlKTsKLSAg
ICByZXR1cm4gcHJlZmVyZW5jZXMucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKHByZWZl
cmVuY2VzKTsKIH0KIAogV2ViUHJlZmVyZW5jZXM6OldlYlByZWZlcmVuY2VzKGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBrZXlQcmVmaXgsIGNvbnN0IFN0cmluZyYgZ2xv
YmFsRGVidWdLZXlQcmVmaXgpCkBAIC03OCw3ICs3OCw3IEBAIFdlYlByZWZlcmVuY2VzOjp+V2Vi
UHJlZmVyZW5jZXMoKQogCiBQYXNzUmVmUHRyPFdlYlByZWZlcmVuY2VzPiBXZWJQcmVmZXJlbmNl
czo6Y29weSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJQcmVmZXJlbmNl
cygqdGhpcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlByZWZlcmVuY2VzKCp0aGlz
KSk7CiB9CiAKIHZvaWQgV2ViUHJlZmVyZW5jZXM6OmFkZFBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQ
YWdlUHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApp
bmRleCA4YzYyMDUzNjVkOGNkZjBkMmUxMDA5NGU4NGI2MTQzNmE1N2QyYjA5Li5hN2UwMzQ2ZjAz
ZDlmMTg5MDE0YTZlOWQ0NWM5ODBiZTA5ZDJlMDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTIzOCw3ICsyMzgsNyBAQCBXZWJQcm9jZXNzUG9v
bDo6fldlYlByb2Nlc3NQb29sKCkKIAogICAgIG1faWNvbkRhdGFiYXNlLT5pbnZhbGlkYXRlKCk7
CiAgICAgbV9pY29uRGF0YWJhc2UtPmNsZWFyUHJvY2Vzc1Bvb2woKTsKLSAgICBXZWJJY29uRGF0
YWJhc2UqIHJhd0ljb25EYXRhYmFzZSA9IG1faWNvbkRhdGFiYXNlLnJlbGVhc2UoKS5sZWFrUmVm
KCk7CisgICAgV2ViSWNvbkRhdGFiYXNlKiByYXdJY29uRGF0YWJhc2UgPSBtX2ljb25EYXRhYmFz
ZS5sZWFrUmVmKCk7CiAgICAgcmF3SWNvbkRhdGFiYXNlLT5kZXJlZldoZW5BcHByb3ByaWF0ZSgp
OwogCiAgICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1fZGljdGlvbmFyeUNhbGxiYWNrcywgQ2Fs
bGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdTbmFwc2hvdFN0b3JlLm1tIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZS5tbQppbmRleCAzZjhmY2ZmMWE0
MWUxY2Q0ZTg0ZTA4ZDJmZmNkYzE1NTBkMWZkODJiLi5kMTkzODZjMDZjNmVhOWNjZDM4NjdmN2I0
OTM0NWZlN2ZkOGE2MzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1ZpZXdTbmFwc2hvdFN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
Vmlld1NuYXBzaG90U3RvcmUubW0KQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIFZpZXdTbmFwc2hv
dFN0b3JlOjpyZWNvcmRTbmFwc2hvdChXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgV2ViQmFj
a0ZvcndhcgogCiAgICAgd2ViUGFnZVByb3h5LndpbGxSZWNvcmROYXZpZ2F0aW9uU25hcHNob3Qo
aXRlbSk7CiAKLSAgICBSZWZQdHI8Vmlld1NuYXBzaG90PiBzbmFwc2hvdCA9IHdlYlBhZ2VQcm94
eS50YWtlVmlld1NuYXBzaG90KCk7CisgICAgYXV0byBzbmFwc2hvdCA9IHdlYlBhZ2VQcm94eS50
YWtlVmlld1NuYXBzaG90KCk7CiAgICAgaWYgKCFzbmFwc2hvdCkKICAgICAgICAgcmV0dXJuOwog
CkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBWaWV3U25hcHNob3RTdG9yZTo6cmVjb3JkU25hcHNo
b3QoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHksIFdlYkJhY2tGb3J3YXIKICAgICBzbmFwc2hv
dC0+c2V0RGV2aWNlU2NhbGVGYWN0b3Iod2ViUGFnZVByb3h5LmRldmljZVNjYWxlRmFjdG9yKCkp
OwogICAgIHNuYXBzaG90LT5zZXRCYWNrZ3JvdW5kQ29sb3Iod2ViUGFnZVByb3h5LnBhZ2VFeHRl
bmRlZEJhY2tncm91bmRDb2xvcigpKTsKIAotICAgIGl0ZW0uc2V0U25hcHNob3Qoc25hcHNob3Qu
cmVsZWFzZSgpKTsKKyAgICBpdGVtLnNldFNuYXBzaG90KFdURk1vdmUoc25hcHNob3QpKTsKIH0K
IAogdm9pZCBWaWV3U25hcHNob3RTdG9yZTo6ZGlzY2FyZFNuYXBzaG90SW1hZ2VzKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250
cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlv
bkNvbnRyb2xsZXIubW0KaW5kZXggZmFhMTU0MzA5MjY4MzQxYTk1ZWY4YWUzNjI1MjdiZTRlNjhj
NzZjNi4uZjJkN2E5MjdmNmM5NjI3MTkwZGIyOGY0NDFhM2MxYThjYmIwMTM2YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xs
ZXIubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlv
bkNvbnRyb2xsZXIubW0KQEAgLTI2Myw3ICsyNjMsNyBAQCAtIChQYXNzUmVmUHRyPEFQSTo6SGl0
VGVzdFJlc3VsdD4pX3dlYkhpdFRlc3RSZXN1bHQKICAgICBlbHNlCiAgICAgICAgIGhpdFRlc3RS
ZXN1bHQgPSBfcGFnZS0+bGFzdE1vdXNlTW92ZUhpdFRlc3RSZXN1bHQoKTsKIAotICAgIHJldHVy
biBoaXRUZXN0UmVzdWx0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92ZShoaXRUZXN0UmVz
dWx0KTsKIH0KIAogI3ByYWdtYSBtYXJrIEltbWVkaWF0ZSBhY3Rpb25zCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbQppbmRleCA3YjlkODg5YjFkNGE3
NWNjNmQ4ZGU3ZjI3MzBkY2E5MmQ1YTcxOWIzLi4zYjEwY2U3NWYxNWVjNmIzOWYxMWU2MGE0NjFi
ODZjZjc4NWFlNDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dL
UHJpbnRpbmdWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tQcmlu
dGluZ1ZpZXcubW0KQEAgLTM0MCw3ICszNDAsNyBAQCAtIChCT09MKV9hc2tQYWdlVG9Db21wdXRl
UGFnZVJlY3RzCiAgICAgQVNTRVJUKCFfZXhwZWN0ZWRDb21wdXRlZFBhZ2VzQ2FsbGJhY2spOwog
CiAgICAgSVBDQ2FsbGJhY2tDb250ZXh0KiBjb250ZXh0ID0gbmV3IElQQ0NhbGxiYWNrQ29udGV4
dDsKLSAgICBSZWZQdHI8Q29tcHV0ZWRQYWdlc0NhbGxiYWNrPiBjYWxsYmFjayA9IENvbXB1dGVk
UGFnZXNDYWxsYmFjazo6Y3JlYXRlKFtjb250ZXh0XShjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50
UmVjdD4mIHBhZ2VSZWN0cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgV2Vi
S2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7CisgICAgYXV0byBjYWxsYmFjayA9IENvbXB1dGVk
UGFnZXNDYWxsYmFjazo6Y3JlYXRlKFtjb250ZXh0XShjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50
UmVjdD4mIHBhZ2VSZWN0cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgV2Vi
S2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJUEND
YWxsYmFja0NvbnRleHQ+IGNvbnRleHREZWxldGVyKGNvbnRleHQpOwogICAgICAgICBwYWdlRGlk
Q29tcHV0ZVBhZ2VSZWN0cyhwYWdlUmVjdHMsIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywg
Y29udGV4dCk7CiAgICAgfSk7CkBAIC0zNDgsNyArMzQ4LDcgQEAgLSAoQk9PTClfYXNrUGFnZVRv
Q29tcHV0ZVBhZ2VSZWN0cwogICAgIGNvbnRleHQtPnZpZXcgPSBzZWxmOwogICAgIGNvbnRleHQt
PmNhbGxiYWNrSUQgPSBfZXhwZWN0ZWRDb21wdXRlZFBhZ2VzQ2FsbGJhY2s7CiAKLSAgICBfd2Vi
RnJhbWUtPnBhZ2UoKS0+Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoX3dlYkZyYW1lLmdldCgpLCBQ
cmludEluZm8oW19wcmludE9wZXJhdGlvbiBwcmludEluZm9dKSwgY2FsbGJhY2sucmVsZWFzZSgp
KTsKKyAgICBfd2ViRnJhbWUtPnBhZ2UoKS0+Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoX3dlYkZy
YW1lLmdldCgpLCBQcmludEluZm8oW19wcmludE9wZXJhdGlvbiBwcmludEluZm9dKSwgV1RGTW92
ZShjYWxsYmFjaykpOwogICAgIHJldHVybiBZRVM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggNDNmYTZmMjA2NWQwYzEyOWVk
ZmYxMmEzN2FlMjkxY2NkNDJkZjJkZC4uOTVkMDNjOTI0MGVmZTU5ZDU4YTJlZjBjNTIyMWEyODBl
YjNjZGNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJv
eHlNYWMubW0KQEAgLTI3MSw4ICsyNzEsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVwbGFjZVNl
bGVjdGlvbldpdGhQYXN0ZWJvYXJkRGF0YShjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZQogI2lm
IEVOQUJMRShEUkFHX1NVUFBPUlQpCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RHJhZ0ltYWdlKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgU2hhcmVhYmxlQml0
bWFwOjpIYW5kbGUmIGRyYWdJbWFnZUhhbmRsZSwgYm9vbCBpc0xpbmtEcmFnKQogewotICAgIGlm
IChSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBkcmFnSW1hZ2UgPSBTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZShkcmFnSW1hZ2VIYW5kbGUpKQotICAgICAgICBtX3BhZ2VDbGllbnQuc2V0RHJhZ0ltYWdl
KGNsaWVudFBvc2l0aW9uLCBkcmFnSW1hZ2UucmVsZWFzZSgpLCBpc0xpbmtEcmFnKTsKKyAgICBp
ZiAoYXV0byBkcmFnSW1hZ2UgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShkcmFnSW1hZ2VIYW5k
bGUpKQorICAgICAgICBtX3BhZ2VDbGllbnQuc2V0RHJhZ0ltYWdlKGNsaWVudFBvc2l0aW9uLCBX
VEZNb3ZlKGRyYWdJbWFnZSksIGlzTGlua0RyYWcpOwogCiAgICAgcHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkRpZFN0YXJ0RHJhZygpLCBtX3BhZ2VJRCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dl
YlByb2Nlc3NQbHVnSW5GcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLm1tCmluZGV4IGZkYWY2
NzU4ZDZhNWZkNDM0OGM2NGQ3NDQzZmY4NDU5OWM1YmIxMzguLjMyZDhkYzc0OGI1MmY1YjdmM2Rk
Zjk1MmI2YjRmYmU3MmY1NjA2OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dL
V2ViUHJvY2Vzc1BsdWdJbkZyYW1lLm1tCkBAIC03MSw4ICs3MSw4IEBAIC0gKEpTQ29udGV4dCAq
KWpzQ29udGV4dEZvcldvcmxkOihXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZCAqKXdvcmxk
CiAKIC0gKFdLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHQgKiloaXRUZXN0OihDR1BvaW50
KXBvaW50CiB7Ci0gICAgUmVmUHRyPEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdD4gaGl0VGVz
dFJlc3VsdCA9IF9mcmFtZS0+aGl0VGVzdChXZWJDb3JlOjpJbnRQb2ludChwb2ludCkpOwotICAg
IHJldHVybiBbd3JhcHBlcigqaGl0VGVzdFJlc3VsdC5yZWxlYXNlKCkubGVha1JlZigpKSBhdXRv
cmVsZWFzZV07CisgICAgYXV0byBoaXRUZXN0UmVzdWx0ID0gX2ZyYW1lLT5oaXRUZXN0KFdlYkNv
cmU6OkludFBvaW50KHBvaW50KSk7CisgICAgcmV0dXJuIFt3cmFwcGVyKCpoaXRUZXN0UmVzdWx0
LmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOwogfQogCiAtIChKU1ZhbHVlICopanNOb2RlRm9yTm9k
ZUhhbmRsZTooV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZSAqKW5vZGVIYW5kbGUgaW5Xb3Js
ZDooV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgKil3b3JsZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9j
ZXNzUGx1Z0luSGl0VGVzdFJlc3VsdC5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHQubW0K
aW5kZXggNTFkZWVhODE1Mzk4NmVhMDMxYWEwMjE4OTNhYzI4NDUwYzk0ZDkzZi4uN2VhODZjOTEx
ZTRkNjQyZTVmYzYzMjU2MjQzZDIyYTVjMWRhMzJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0lu
SGl0VGVzdFJlc3VsdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0Lm1tCkBAIC00
NCw4ICs0NCw4IEBAIC0gKHZvaWQpZGVhbGxvYwogCiAtIChXS1dlYlByb2Nlc3NQbHVnSW5Ob2Rl
SGFuZGxlICopbm9kZUhhbmRsZQogewotICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5k
bGU+IG5vZGVIYW5kbGUgPSBfaGl0VGVzdFJlc3VsdC0+bm9kZUhhbmRsZSgpOwotICAgIHJldHVy
biBub2RlSGFuZGxlID8gW3dyYXBwZXIoKm5vZGVIYW5kbGUucmVsZWFzZSgpLmxlYWtSZWYoKSkg
YXV0b3JlbGVhc2VdIDogbmlsOworICAgIGF1dG8gbm9kZUhhbmRsZSA9IF9oaXRUZXN0UmVzdWx0
LT5ub2RlSGFuZGxlKCk7CisgICAgcmV0dXJuIG5vZGVIYW5kbGUgPyBbd3JhcHBlcigqbm9kZUhh
bmRsZS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXSA6IG5pbDsKIH0KIAogI3ByYWdtYSBtYXJrIFdL
T2JqZWN0IHByb3RvY29sIGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5O
b2RlSGFuZGxlLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5tbQppbmRleCAwYjFkZmRmZmUx
NTc3YjI5ZWNmNjJjM2IxNTJjOGMxOTc3ZDIwMzQ3Li43YjI4N2ZjNzU0ZGMyY2I4ZGMxNDRiY2Ji
NzQxY2E0YmMxNmYxZDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dL
V2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUubW0KQEAgLTQ4LDIwICs0OCwyMCBAQCArIChXS1dl
YlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlICopbm9kZUhhbmRsZVdpdGhKU1ZhbHVlOihKU1ZhbHVl
ICopdmFsdWUgaW5Db250ZQogewogICAgIEpTQ29udGV4dFJlZiBjb250ZXh0UmVmID0gW2NvbnRl
eHQgSlNHbG9iYWxDb250ZXh0UmVmXTsKICAgICBKU09iamVjdFJlZiBvYmplY3RSZWYgPSBKU1Zh
bHVlVG9PYmplY3QoY29udGV4dFJlZiwgW3ZhbHVlIEpTVmFsdWVSZWZdLCAwKTsKLSAgICBSZWZQ
dHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBub2RlSGFuZGxlID0gSW5qZWN0ZWRCdW5kbGVO
b2RlSGFuZGxlOjpnZXRPckNyZWF0ZShjb250ZXh0UmVmLCBvYmplY3RSZWYpOworICAgIGF1dG8g
bm9kZUhhbmRsZSA9IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6Z2V0T3JDcmVhdGUoY29udGV4
dFJlZiwgb2JqZWN0UmVmKTsKICAgICBpZiAoIW5vZGVIYW5kbGUpCiAgICAgICAgIHJldHVybiBu
aWw7CiAKLSAgICByZXR1cm4gW3dyYXBwZXIoKm5vZGVIYW5kbGUucmVsZWFzZSgpLmxlYWtSZWYo
KSkgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBbd3JhcHBlcigqbm9kZUhhbmRsZS5sZWFrUmVm
KCkpIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAoV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUgKilodG1s
SUZyYW1lRWxlbWVudENvbnRlbnRGcmFtZQogewotICAgIFJlZlB0cjxXZWJGcmFtZT4gZnJhbWUg
PSBfbm9kZUhhbmRsZS0+aHRtbElGcmFtZUVsZW1lbnRDb250ZW50RnJhbWUoKTsKKyAgICBhdXRv
IGZyYW1lID0gX25vZGVIYW5kbGUtPmh0bWxJRnJhbWVFbGVtZW50Q29udGVudEZyYW1lKCk7CiAg
ICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiBbd3JhcHBl
cigqZnJhbWUucmVsZWFzZSgpLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBb
d3JhcHBlcigqZnJhbWUubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CiB9CiAKICNpZiBQTEFURk9S
TShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZC5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1Bs
dWdJblNjcmlwdFdvcmxkLm1tCmluZGV4IDZjMTA2MWRkODAzNDkxZjQ3ZWU5MzNlMGE5NzRkM2Qy
ZGNmMzJlZGYuLjFhZWMwYjkyMmVlM2VlZDliNGEyMWRkNzU2MjZhNmY4NThjNDYxNWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29h
L1dLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJblNjcmlw
dFdvcmxkLm1tCkBAIC0zNiw4ICszNiw4IEBAIEBpbXBsZW1lbnRhdGlvbiBXS1dlYlByb2Nlc3NQ
bHVnSW5TY3JpcHRXb3JsZCB7CiAKICsgKFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkICop
d29ybGQKIHsKLSAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZD4gc2NyaXB0V29y
bGQgPSBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpjcmVhdGUoKTsKLSAgICByZXR1cm4gW3dy
YXBwZXIoKnNjcmlwdFdvcmxkLnJlbGVhc2UoKS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKKyAg
ICBhdXRvIHNjcmlwdFdvcmxkID0gSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6Y3JlYXRlKCk7
CisgICAgcmV0dXJuIFt3cmFwcGVyKHNjcmlwdFdvcmxkLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2Vd
OwogfQogCiArIChXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZCAqKW5vcm1hbFdvcmxkCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGUuY3BwCmluZGV4IDg1YjhmOTIyZjFlYzBjMTJlY2Q0MzAxZTRhMDhiZWVl
NWI0MGY3ZjIuLmU4ODUzZGJkMDYyN2I2OWRjNDk4NDkwZmNlYzViZDhkMzcxMGM1M2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGUuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgV0tCdW5kbGVQb3N0U3lu
Y2hyb25vdXNNZXNzYWdlKFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwgV0tTdHJpbmdSZWYgbWVzc2Fn
ZU5hCiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiByZXR1cm5EYXRhOwogICAgIHRvSW1wbChidW5k
bGVSZWYpLT5wb3N0U3luY2hyb25vdXNNZXNzYWdlKHRvV1RGU3RyaW5nKG1lc3NhZ2VOYW1lUmVm
KSwgdG9JbXBsKG1lc3NhZ2VCb2R5UmVmKSwgcmV0dXJuRGF0YSk7CiAgICAgaWYgKHJldHVybkRh
dGFSZWYpCi0gICAgICAgICpyZXR1cm5EYXRhUmVmID0gdG9BUEkocmV0dXJuRGF0YS5yZWxlYXNl
KCkubGVha1JlZigpKTsKKyAgICAgICAgKnJldHVybkRhdGFSZWYgPSB0b0FQSShyZXR1cm5EYXRh
LmxlYWtSZWYoKSk7CiB9CiAKIFdLQ29ubmVjdGlvblJlZiBXS0J1bmRsZUdldEFwcGxpY2F0aW9u
Q29ubmVjdGlvbihXS0J1bmRsZVJlZiBidW5kbGVSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRE9NV2luZG93RXh0
ZW5zaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwCmluZGV4IGI2NjBlODE1ZmI1NzVhZDdl
NGM2YTUxODNjODM5Y2VlNTc1ODU0NzkuLmZjMzgxZjQ2YTY0MWZhMDc3NWMzZTU0NjQ4NjBkOWUw
NGY0ODNlMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVET01XaW5kb3dF
eHRlbnNpb24uY3BwCkBAIC00MSw3ICs0MSw3IEBAIFdLVHlwZUlEIFdLQnVuZGxlRE9NV2luZG93
RXh0ZW5zaW9uR2V0VHlwZUlEKCkKIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmIFdLQnVu
ZGxlRE9NV2luZG93RXh0ZW5zaW9uQ3JlYXRlKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLQnVu
ZGxlU2NyaXB0V29ybGRSZWYgd29ybGQpCiB7CiAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlRE9N
V2luZG93RXh0ZW5zaW9uPiBleHRlbnNpb24gPSBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVu
c2lvbjo6Y3JlYXRlKHRvSW1wbChmcmFtZSksIHRvSW1wbCh3b3JsZCkpOwotICAgIHJldHVybiB0
b0FQSShleHRlbnNpb24ucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKGV4
dGVuc2lvbi5sZWFrUmVmKCkpOwogfQogCiBXS0J1bmRsZUZyYW1lUmVmIFdLQnVuZGxlRE9NV2lu
ZG93RXh0ZW5zaW9uR2V0RnJhbWUoV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYgZXh0ZW5z
aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZUhpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUhpdFRlc3RSZXN1bHQuY3BwCmluZGV4
IDQ2ZjY5OTkyNmEyMTVhODdkYWMxMThhZWZlMDU2NGU2YmEyNzc0ZjUuLjJlNGE3YjYzMWQxMzFj
YTE3NmRjNGQxYjE4MTVkODgxOWY2MDk2ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCBXS1R5cGVJRCBXS0J1bmRs
ZUhpdFRlc3RSZXN1bHRHZXRUeXBlSUQoKQogV0tCdW5kbGVOb2RlSGFuZGxlUmVmIFdLQnVuZGxl
SGl0VGVzdFJlc3VsdENvcHlOb2RlSGFuZGxlKFdLQnVuZGxlSGl0VGVzdFJlc3VsdFJlZiBoaXRU
ZXN0UmVzdWx0UmVmKQogewogICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+IG5v
ZGVIYW5kbGUgPSB0b0ltcGwoaGl0VGVzdFJlc3VsdFJlZiktPm5vZGVIYW5kbGUoKTsKLSAgICBy
ZXR1cm4gdG9BUEkobm9kZUhhbmRsZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4g
dG9BUEkobm9kZUhhbmRsZS5sZWFrUmVmKCkpOwogfQogCiBXS0J1bmRsZU5vZGVIYW5kbGVSZWYg
V0tCdW5kbGVIaXRUZXN0UmVzdWx0Q29weVVSTEVsZW1lbnRIYW5kbGUoV0tCdW5kbGVIaXRUZXN0
UmVzdWx0UmVmIGhpdFRlc3RSZXN1bHRSZWYpCiB7CiAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxl
Tm9kZUhhbmRsZT4gdXJsRWxlbWVudE5vZGVIYW5kbGUgPSB0b0ltcGwoaGl0VGVzdFJlc3VsdFJl
ZiktPnVybEVsZW1lbnRIYW5kbGUoKTsKLSAgICByZXR1cm4gdG9BUEkodXJsRWxlbWVudE5vZGVI
YW5kbGUucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKHVybEVsZW1lbnRO
b2RlSGFuZGxlLmxlYWtSZWYoKSk7CiB9CiAKIFdLQnVuZGxlRnJhbWVSZWYgV0tCdW5kbGVIaXRU
ZXN0UmVzdWx0R2V0RnJhbWUoV0tCdW5kbGVIaXRUZXN0UmVzdWx0UmVmIGhpdFRlc3RSZXN1bHRS
ZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAK
aW5kZXggZWU4OTgyNzNmY2QzYWYyOTVkMjJhNGI2ZTVlOTRmOWU0N2Y0ZmUwNS4uYTNjMzYzZTE5
NDJjZWMwNDc5NTVmOTJiMDMyNzBhOTU2ZGFmZTk3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5hdmlnYXRpb25BY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcApAQCAtNTgsMTMgKzU4LDEzIEBAIFdLRXZl
bnRNb3VzZUJ1dHRvbiBXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb25HZXRFdmVudE1vdXNlQnV0dG9u
KFdLQnVuZGxlTmF2aWdhdGlvCiBXS0J1bmRsZUhpdFRlc3RSZXN1bHRSZWYgV0tCdW5kbGVOYXZp
Z2F0aW9uQWN0aW9uQ29weUhpdFRlc3RSZXN1bHQoV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uUmVm
IG5hdmlnYXRpb25BY3Rpb25SZWYpCiB7CiAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlSGl0VGVz
dFJlc3VsdD4gaGl0VGVzdFJlc3VsdCA9IHRvSW1wbChuYXZpZ2F0aW9uQWN0aW9uUmVmKS0+aGl0
VGVzdFJlc3VsdCgpOwotICAgIHJldHVybiB0b0FQSShoaXRUZXN0UmVzdWx0LnJlbGVhc2UoKS5s
ZWFrUmVmKCkpOworICAgIHJldHVybiB0b0FQSShoaXRUZXN0UmVzdWx0LmxlYWtSZWYoKSk7CiB9
CiAKIFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb25Db3B5Rm9y
bUVsZW1lbnQoV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uUmVmIG5hdmlnYXRpb25BY3Rpb25SZWYp
CiB7CiAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gZm9ybUVsZW1lbnQgPSB0
b0ltcGwobmF2aWdhdGlvbkFjdGlvblJlZiktPmZvcm1FbGVtZW50KCk7Ci0gICAgcmV0dXJuIHRv
QVBJKGZvcm1FbGVtZW50LnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgIHJldHVybiB0b0FQSShm
b3JtRWxlbWVudC5sZWFrUmVmKCkpOwogfQogCiBib29sIFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlv
bkdldFNob3VsZE9wZW5FeHRlcm5hbFVSTHMoV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uUmVmIG5h
dmlnYXRpb25BY3Rpb25SZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTm9kZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTm9kZUhhbmRsZS5j
cHAKaW5kZXggZWU0ZjM2MjI0NTRiOTE3NTAzNzNjZjg0ZWQ2NDA1NzQyOTM5YTdjZi4uNDZjZmEz
NGEwODBlZTVhZjRlZTA4ODczZWI0YzM4ODc3MzI0M2IzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5vZGVIYW5kbGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVOb2RlSGFuZGxlLmNwcApAQCAtNTksMTMgKzU5LDEzIEBAIFdLVHlwZUlEIFdLQnVu
ZGxlTm9kZUhhbmRsZUdldFR5cGVJRCgpCiBXS0J1bmRsZU5vZGVIYW5kbGVSZWYgV0tCdW5kbGVO
b2RlSGFuZGxlQ3JlYXRlKEpTQ29udGV4dFJlZiBjb250ZXh0UmVmLCBKU09iamVjdFJlZiBvYmpl
Y3RSZWYpCiB7CiAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gbm9kZUhhbmRs
ZSA9IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6Z2V0T3JDcmVhdGUoY29udGV4dFJlZiwgb2Jq
ZWN0UmVmKTsKLSAgICByZXR1cm4gdG9BUEkobm9kZUhhbmRsZS5yZWxlYXNlKCkubGVha1JlZigp
KTsKKyAgICByZXR1cm4gdG9BUEkobm9kZUhhbmRsZS5sZWFrUmVmKCkpOwogfQogCiBXS0J1bmRs
ZU5vZGVIYW5kbGVSZWYgV0tCdW5kbGVOb2RlSGFuZGxlQ29weURvY3VtZW50KFdLQnVuZGxlTm9k
ZUhhbmRsZVJlZiBub2RlSGFuZGxlUmVmKQogewogICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZU5v
ZGVIYW5kbGU+IG5vZGVIYW5kbGUgPSB0b0ltcGwobm9kZUhhbmRsZVJlZiktPmRvY3VtZW50KCk7
Ci0gICAgcmV0dXJuIHRvQVBJKG5vZGVIYW5kbGUucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAg
cmV0dXJuIHRvQVBJKG5vZGVIYW5kbGUubGVha1JlZigpKTsKIH0KIAogV0tSZWN0IFdLQnVuZGxl
Tm9kZUhhbmRsZUdldFJlbmRlclJlY3QoV0tCdW5kbGVOb2RlSGFuZGxlUmVmIG5vZGVIYW5kbGVS
ZWYsIGJvb2wqIGlzUmVwbGFjZWQpCkBAIC03NiwxMyArNzYsMTMgQEAgV0tSZWN0IFdLQnVuZGxl
Tm9kZUhhbmRsZUdldFJlbmRlclJlY3QoV0tCdW5kbGVOb2RlSGFuZGxlUmVmIG5vZGVIYW5kbGVS
ZWYsIGJvb2wKIFdLSW1hZ2VSZWYgV0tCdW5kbGVOb2RlSGFuZGxlQ29weVNuYXBzaG90V2l0aE9w
dGlvbnMoV0tCdW5kbGVOb2RlSGFuZGxlUmVmIG5vZGVIYW5kbGVSZWYsIFdLU25hcHNob3RPcHRp
b25zIG9wdGlvbnMpCiB7CiAgICAgUmVmUHRyPFdlYkltYWdlPiBpbWFnZSA9IHRvSW1wbChub2Rl
SGFuZGxlUmVmKS0+cmVuZGVyZWRJbWFnZSh0b1NuYXBzaG90T3B0aW9ucyhvcHRpb25zKSk7Ci0g
ICAgcmV0dXJuIHRvQVBJKGltYWdlLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgIHJldHVybiB0
b0FQSShpbWFnZS5sZWFrUmVmKCkpOwogfQogCiBXS0J1bmRsZVJhbmdlSGFuZGxlUmVmIFdLQnVu
ZGxlTm9kZUhhbmRsZUNvcHlWaXNpYmxlUmFuZ2UoV0tCdW5kbGVOb2RlSGFuZGxlUmVmIG5vZGVI
YW5kbGVSZWYpCiB7CiAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IHJhbmdl
SGFuZGxlID0gdG9JbXBsKG5vZGVIYW5kbGVSZWYpLT52aXNpYmxlUmFuZ2UoKTsKLSAgICByZXR1
cm4gdG9BUEkocmFuZ2VIYW5kbGUucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRv
QVBJKHJhbmdlSGFuZGxlLmxlYWtSZWYoKSk7CiB9CiAKIFdLUmVjdCBXS0J1bmRsZU5vZGVIYW5k
bGVHZXRFbGVtZW50Qm91bmRzKFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBlbGVtZW50SGFuZGxlUmVm
KQpAQCAtMTM4LDI1ICsxMzgsMjUgQEAgYm9vbCBXS0J1bmRsZU5vZGVIYW5kbGVHZXRIVE1MVGV4
dEFyZWFFbGVtZW50TGFzdENoYW5nZVdhc1VzZXJFZGl0KFdLQnVuZGxlTm9kZUgKIFdLQnVuZGxl
Tm9kZUhhbmRsZVJlZiBXS0J1bmRsZU5vZGVIYW5kbGVDb3B5SFRNTFRhYmxlQ2VsbEVsZW1lbnRD
ZWxsQWJvdmUoV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGh0bWxUYWJsZUNlbGxFbGVtZW50SGFuZGxl
UmVmKQogewogICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+IG5vZGVIYW5kbGUg
PSB0b0ltcGwoaHRtbFRhYmxlQ2VsbEVsZW1lbnRIYW5kbGVSZWYpLT5odG1sVGFibGVDZWxsRWxl
bWVudENlbGxBYm92ZSgpOwotICAgIHJldHVybiB0b0FQSShub2RlSGFuZGxlLnJlbGVhc2UoKS5s
ZWFrUmVmKCkpOworICAgIHJldHVybiB0b0FQSShub2RlSGFuZGxlLmxlYWtSZWYoKSk7CiB9CiAK
IFdLQnVuZGxlRnJhbWVSZWYgV0tCdW5kbGVOb2RlSGFuZGxlQ29weURvY3VtZW50RnJhbWUoV0tC
dW5kbGVOb2RlSGFuZGxlUmVmIGRvY3VtZW50SGFuZGxlUmVmKQogewogICAgIFJlZlB0cjxXZWJG
cmFtZT4gZnJhbWUgPSB0b0ltcGwoZG9jdW1lbnRIYW5kbGVSZWYpLT5kb2N1bWVudEZyYW1lKCk7
Ci0gICAgcmV0dXJuIHRvQVBJKGZyYW1lLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgIHJldHVy
biB0b0FQSShmcmFtZS5sZWFrUmVmKCkpOwogfQogCiBXS0J1bmRsZUZyYW1lUmVmIFdLQnVuZGxl
Tm9kZUhhbmRsZUNvcHlIVE1MRnJhbWVFbGVtZW50Q29udGVudEZyYW1lKFdLQnVuZGxlTm9kZUhh
bmRsZVJlZiBodG1sRnJhbWVFbGVtZW50SGFuZGxlUmVmKQogewogICAgIFJlZlB0cjxXZWJGcmFt
ZT4gZnJhbWUgPSB0b0ltcGwoaHRtbEZyYW1lRWxlbWVudEhhbmRsZVJlZiktPmh0bWxGcmFtZUVs
ZW1lbnRDb250ZW50RnJhbWUoKTsKLSAgICByZXR1cm4gdG9BUEkoZnJhbWUucmVsZWFzZSgpLmxl
YWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKGZyYW1lLmxlYWtSZWYoKSk7CiB9CiAKIFdLQnVu
ZGxlRnJhbWVSZWYgV0tCdW5kbGVOb2RlSGFuZGxlQ29weUhUTUxJRnJhbWVFbGVtZW50Q29udGVu
dEZyYW1lKFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBodG1sSUZyYW1lRWxlbWVudEhhbmRsZVJlZikK
IHsKICAgICBSZWZQdHI8V2ViRnJhbWU+IGZyYW1lID0gdG9JbXBsKGh0bWxJRnJhbWVFbGVtZW50
SGFuZGxlUmVmKS0+aHRtbElGcmFtZUVsZW1lbnRDb250ZW50RnJhbWUoKTsKLSAgICByZXR1cm4g
dG9BUEkoZnJhbWUucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKGZyYW1l
LmxlYWtSZWYoKSk7CiB9CiAKIC8vIERlcHJlY2F0ZWQgLSB1c2UgV0tCdW5kbGVOb2RlSGFuZGxl
R2V0SFRNTElucHV0RWxlbWVudEF1dG9GaWxsZWQoV0tCdW5kbGVOb2RlSGFuZGxlUmVmKS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAppbmRleCAxN2UyMWFmYzMzYjY4ZWZlM2Q4NzU4MzA4
YmQ4MWM2MGMzZjgwOTU1Li5lMThkYTkxNGZjMjBkZWVkZWE2YzFmOTY3ZDhmMzQ5MDQ3NzQwNjli
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCkBAIC00MzQsNyArNDM0LDcgQEAgYm9v
bCBXS0J1bmRsZVBhZ2VGaW5kU3RyaW5nKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmlu
Z1JlZiB0YXJnZXQsIFdLRmluZE8KIFdLSW1hZ2VSZWYgV0tCdW5kbGVQYWdlQ3JlYXRlU25hcHNo
b3RXaXRoT3B0aW9ucyhXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tSZWN0IHJlY3QsIFdLU25h
cHNob3RPcHRpb25zIG9wdGlvbnMpCiB7CiAgICAgUmVmUHRyPFdlYkltYWdlPiB3ZWJJbWFnZSA9
IHRvSW1wbChwYWdlUmVmKS0+c2NhbGVkU25hcHNob3RXaXRoT3B0aW9ucyh0b0ludFJlY3QocmVj
dCksIDEsIHRvU25hcHNob3RPcHRpb25zKG9wdGlvbnMpKTsKLSAgICByZXR1cm4gdG9BUEkod2Vi
SW1hZ2UucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKHdlYkltYWdlLmxl
YWtSZWYoKSk7CiB9CiAKIFdLSW1hZ2VSZWYgV0tCdW5kbGVQYWdlQ3JlYXRlU25hcHNob3RJblZp
ZXdDb29yZGluYXRlcyhXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tSZWN0IHJlY3QsIFdLSW1h
Z2VPcHRpb25zIG9wdGlvbnMpCkBAIC00NDIsMTkgKzQ0MiwxOSBAQCBXS0ltYWdlUmVmIFdLQnVu
ZGxlUGFnZUNyZWF0ZVNuYXBzaG90SW5WaWV3Q29vcmRpbmF0ZXMoV0tCdW5kbGVQYWdlUmVmIHBh
Z2VSZWYsCiAgICAgU25hcHNob3RPcHRpb25zIHNuYXBzaG90T3B0aW9ucyA9IHNuYXBzaG90T3B0
aW9uc0Zyb21JbWFnZU9wdGlvbnMob3B0aW9ucyk7CiAgICAgc25hcHNob3RPcHRpb25zIHw9IFNu
YXBzaG90T3B0aW9uc0luVmlld0Nvb3JkaW5hdGVzOwogICAgIFJlZlB0cjxXZWJJbWFnZT4gd2Vi
SW1hZ2UgPSB0b0ltcGwocGFnZVJlZiktPnNjYWxlZFNuYXBzaG90V2l0aE9wdGlvbnModG9JbnRS
ZWN0KHJlY3QpLCAxLCBzbmFwc2hvdE9wdGlvbnMpOwotICAgIHJldHVybiB0b0FQSSh3ZWJJbWFn
ZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkod2ViSW1hZ2UubGVha1Jl
ZigpKTsKIH0KIAogV0tJbWFnZVJlZiBXS0J1bmRsZVBhZ2VDcmVhdGVTbmFwc2hvdEluRG9jdW1l
bnRDb29yZGluYXRlcyhXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tSZWN0IHJlY3QsIFdLSW1h
Z2VPcHRpb25zIG9wdGlvbnMpCiB7CiAgICAgUmVmUHRyPFdlYkltYWdlPiB3ZWJJbWFnZSA9IHRv
SW1wbChwYWdlUmVmKS0+c2NhbGVkU25hcHNob3RXaXRoT3B0aW9ucyh0b0ludFJlY3QocmVjdCks
IDEsIHNuYXBzaG90T3B0aW9uc0Zyb21JbWFnZU9wdGlvbnMob3B0aW9ucykpOwotICAgIHJldHVy
biB0b0FQSSh3ZWJJbWFnZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEko
d2ViSW1hZ2UubGVha1JlZigpKTsKIH0KIAogV0tJbWFnZVJlZiBXS0J1bmRsZVBhZ2VDcmVhdGVT
Y2FsZWRTbmFwc2hvdEluRG9jdW1lbnRDb29yZGluYXRlcyhXS0J1bmRsZVBhZ2VSZWYgcGFnZVJl
ZiwgV0tSZWN0IHJlY3QsIGRvdWJsZSBzY2FsZUZhY3RvciwgV0tJbWFnZU9wdGlvbnMgb3B0aW9u
cykKIHsKICAgICBSZWZQdHI8V2ViSW1hZ2U+IHdlYkltYWdlID0gdG9JbXBsKHBhZ2VSZWYpLT5z
Y2FsZWRTbmFwc2hvdFdpdGhPcHRpb25zKHRvSW50UmVjdChyZWN0KSwgc2NhbGVGYWN0b3IsIHNu
YXBzaG90T3B0aW9uc0Zyb21JbWFnZU9wdGlvbnMob3B0aW9ucykpOwotICAgIHJldHVybiB0b0FQ
SSh3ZWJJbWFnZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkod2ViSW1h
Z2UubGVha1JlZigpKTsKIH0KIAogZG91YmxlIFdLQnVuZGxlUGFnZUdldEJhY2tpbmdTY2FsZUZh
Y3RvcihXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZikKQEAgLTYyNCw3ICs2MjQsNyBAQCB2b2lkIFdL
QnVuZGxlUGFnZVBvc3RTeW5jaHJvbm91c01lc3NhZ2VGb3JUZXN0aW5nKFdLQnVuZGxlUGFnZVJl
ZiBwYWdlUmVmLCBXS1N0cgogICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gcmV0dXJuRGF0YTsKICAg
ICBwYWdlLT5wb3N0U3luY2hyb25vdXNNZXNzYWdlRm9yVGVzdGluZyh0b1dURlN0cmluZyhtZXNz
YWdlTmFtZVJlZiksIHRvSW1wbChtZXNzYWdlQm9keVJlZiksIHJldHVybkRhdGEpOwogICAgIGlm
IChyZXR1cm5EYXRhUmVmKQotICAgICAgICAqcmV0dXJuRGF0YVJlZiA9IHRvQVBJKHJldHVybkRh
dGEucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgICAgICpyZXR1cm5EYXRhUmVmID0gdG9BUEko
cmV0dXJuRGF0YS5sZWFrUmVmKCkpOwogfQogCiB2b2lkIFdLQnVuZGxlUGFnZUFkZFVzZXJTY3Jp
cHQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHNvdXJjZSwgX1dLVXNlclNj
cmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9uVGltZSwgV0tVc2VyQ29udGVudEluamVjdGVkRnJh
bWVzIGluamVjdGVkRnJhbWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVJhbmdlSGFuZGxlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVSYW5nZUhhbmRs
ZS5jcHAKaW5kZXggNzNiODhjMTM0MDYzM2M2OTA4MThkNDhjMzQxZWE1Njk5YTgxN2VjMC4uNDM3
MTdjOTE1ZDA2MmIzZDRhNGI3ZGYwZWYzMWMzZjU2NjFlNTQ5OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVJhbmdlSGFu
ZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCkBAIC00Myw3ICs0Myw3IEBAIFdLVHlwZUlEIFdL
QnVuZGxlUmFuZ2VIYW5kbGVHZXRUeXBlSUQoKQogV0tCdW5kbGVSYW5nZUhhbmRsZVJlZiBXS0J1
bmRsZVJhbmdlSGFuZGxlQ3JlYXRlKEpTQ29udGV4dFJlZiBjb250ZXh0UmVmLCBKU09iamVjdFJl
ZiBvYmplY3RSZWYpCiB7CiAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IHJh
bmdlSGFuZGxlID0gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Z2V0T3JDcmVhdGUoY29udGV4
dFJlZiwgb2JqZWN0UmVmKTsKLSAgICByZXR1cm4gdG9BUEkocmFuZ2VIYW5kbGUucmVsZWFzZSgp
LmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKHJhbmdlSGFuZGxlLmxlYWtSZWYoKSk7CiB9
CiAKIFdLUmVjdCBXS0J1bmRsZVJhbmdlSGFuZGxlR2V0Qm91bmRpbmdSZWN0SW5XaW5kb3dDb29y
ZGluYXRlcyhXS0J1bmRsZVJhbmdlSGFuZGxlUmVmIHJhbmdlSGFuZGxlUmVmKQpAQCAtNTUsNSAr
NTUsNSBAQCBXS1JlY3QgV0tCdW5kbGVSYW5nZUhhbmRsZUdldEJvdW5kaW5nUmVjdEluV2luZG93
Q29vcmRpbmF0ZXMoV0tCdW5kbGVSYW5nZUhhbmRsZQogV0tJbWFnZVJlZiBXS0J1bmRsZVJhbmdl
SGFuZGxlQ29weVNuYXBzaG90V2l0aE9wdGlvbnMoV0tCdW5kbGVSYW5nZUhhbmRsZVJlZiByYW5n
ZUhhbmRsZVJlZiwgV0tTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucykKIHsKICAgICBSZWZQdHI8V2Vi
SW1hZ2U+IGltYWdlID0gdG9JbXBsKHJhbmdlSGFuZGxlUmVmKS0+cmVuZGVyZWRJbWFnZSh0b1Nu
YXBzaG90T3B0aW9ucyhvcHRpb25zKSk7Ci0gICAgcmV0dXJuIHRvQVBJKGltYWdlLnJlbGVhc2Uo
KS5sZWFrUmVmKCkpOworICAgIHJldHVybiB0b0FQSShpbWFnZS5sZWFrUmVmKCkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZVNjcmlwdFdvcmxkLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVTY3JpcHRXb3JsZC5jcHAKaW5kZXggNmRhMGNjMGU2NzVm
Y2UzNDVjYjQyNzI0MDhhNjgyMmQwODdlZjNhNC4uYjdiZDhiMzAyYjMxNzJlMWZlM2JjOGNiYzUz
OWI4YWY5MDYyNGFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVNjcmlwdFdvcmxkLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlU2NyaXB0V29ybGQu
Y3BwCkBAIC00MCw3ICs0MCw3IEBAIFdLVHlwZUlEIFdLQnVuZGxlU2NyaXB0V29ybGRHZXRUeXBl
SUQoKQogV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiBXS0J1bmRsZVNjcmlwdFdvcmxkQ3JlYXRlV29y
bGQoKQogewogICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkPiB3b3JsZCA9IElu
amVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6OmNyZWF0ZSgpOwotICAgIHJldHVybiB0b0FQSSh3b3Js
ZC5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkod29ybGQubGVha1JlZigp
KTsKIH0KIAogV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiBXS0J1bmRsZVNjcmlwdFdvcmxkTm9ybWFs
V29ybGQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvbWFjL1dLRE9NTm9kZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTU5vZGUubW0KaW5kZXggNzEyMmMzZmQ5N2Q2MzhhOTBm
NjIwN2RkMmJkN2U1ZTkyN2NhN2E5Mi4uNDliNGNiOWNhZWJiOWRmMDE0MjZmOTVmOTdlNjM2OWJm
YjIyYWNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvbWFjL1dLRE9NTm9kZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Ob2RlLm1tCkBAIC0xMjksOCArMTI5LDggQEAg
QGltcGxlbWVudGF0aW9uIFdLRE9NTm9kZSAoV0tQcml2YXRlKQogCiAtIChXS0J1bmRsZU5vZGVI
YW5kbGVSZWYpX2NvcHlCdW5kbGVOb2RlSGFuZGxlUmVmCiB7Ci0gICAgUmVmUHRyPFdlYktpdDo6
SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBub2RlSGFuZGxlID0gV2ViS2l0OjpJbmplY3RlZEJ1
bmRsZU5vZGVIYW5kbGU6OmdldE9yQ3JlYXRlKF9pbXBsLmdldCgpKTsKLSAgICByZXR1cm4gdG9B
UEkobm9kZUhhbmRsZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICBhdXRvIG5vZGVIYW5kbGUg
PSBXZWJLaXQ6OkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6Z2V0T3JDcmVhdGUoX2ltcGwuZ2V0
KCkpOworICAgIHJldHVybiB0b0FQSShub2RlSGFuZGxlLmxlYWtSZWYoKSk7CiB9CiAKIEBlbmQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L21hYy9XS0RPTVJhbmdlLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW0KaW5kZXggMTY1ZGEwNjQzNDMyMTVkYzZiOWYwMDFj
ZTYwNTU3MTBlZWY2Y2I2Ny4uMGYwOGQ4NDgxMDE4ODlhNTBiNWYxMTE2ODlhNTc2ZjE1ODFkNTE2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvbWFjL1dLRE9NUmFuZ2UubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW0KQEAgLTE1Niw4ICsxNTYsOCBAQCBAaW1w
bGVtZW50YXRpb24gV0tET01SYW5nZSAoV0tQcml2YXRlKQogCiAtIChXS0J1bmRsZVJhbmdlSGFu
ZGxlUmVmKV9jb3B5QnVuZGxlUmFuZ2VIYW5kbGVSZWYKIHsKLSAgICBSZWZQdHI8V2ViS2l0OjpJ
bmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPiByYW5nZUhhbmRsZSA9IFdlYktpdDo6SW5qZWN0ZWRC
dW5kbGVSYW5nZUhhbmRsZTo6Z2V0T3JDcmVhdGUoX2ltcGwuZ2V0KCkpOwotICAgIHJldHVybiB0
b0FQSShyYW5nZUhhbmRsZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICBhdXRvIHJhbmdlSGFu
ZGxlID0gV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpnZXRPckNyZWF0ZShfaW1w
bC5nZXQoKSk7CisgICAgcmV0dXJuIHRvQVBJKHJhbmdlSGFuZGxlLmxlYWtSZWYoKSk7CiB9CiAK
IEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZUNT
U1N0eWxlRGVjbGFyYXRpb25IYW5kbGUuY3BwCmluZGV4IGFjMTFkMTFhNzg2NjQyYWY3Mzk5ZmY1
MDllOGY3YzVjZDFlNjhjZTIuLjJhOGYxN2E0YWNmODZiMjc3OTJkYmRlMzdkNzNmYjA1YjViNjA3
NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
RE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVD
U1NTdHlsZURlY2xhcmF0aW9uSGFuZGxlLmNwcApAQCAtNTEsOSArNTEsOSBAQCBQYXNzUmVmUHRy
PEluamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZT4gSW5qZWN0ZWRCdW5kbGVD
U1NTdHlsZURlY2xhcgogICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVy
biBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZT4ocmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZSk7CiAKLSAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVDU1NTdHls
ZURlY2xhcmF0aW9uSGFuZGxlPiBzdHlsZURlY2xhcmF0aW9uSGFuZGxlID0gYWRvcHRSZWYobmV3
IEluamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZSgqc3R5bGVEZWNsYXJhdGlv
bikpOwotICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdHlsZURlY2xhcmF0aW9uSGFuZGxl
LmdldCgpOwotICAgIHJldHVybiBzdHlsZURlY2xhcmF0aW9uSGFuZGxlLnJlbGVhc2UoKTsKKyAg
ICBhdXRvIHN0eWxlRGVjbGFyYXRpb25IYW5kbGUgPSBhZG9wdFJlZigqbmV3IEluamVjdGVkQnVu
ZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZSgqc3R5bGVEZWNsYXJhdGlvbikpOworICAgIHJl
c3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdHlsZURlY2xhcmF0aW9uSGFuZGxlLnB0cigpOworICAg
IHJldHVybiBXVEZNb3ZlKHN0eWxlRGVjbGFyYXRpb25IYW5kbGUpOwogfQogCiBJbmplY3RlZEJ1
bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25IYW5kbGU6OkluamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNs
YXJhdGlvbkhhbmRsZShDU1NTdHlsZURlY2xhcmF0aW9uJiBzdHlsZURlY2xhcmF0aW9uKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5q
ZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKaW5kZXggMmViMmRi
M2IyOTdlZTYyYTkzNGE5N2ZkZmM5YzgzNWI4ZGQ2YzY2OS4uY2ZlOTkwNjQyNzFkZGY3OGQ1YzY5
MzI0YzYyOWU3ZTFlMjViOWNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRs
ZU5vZGVIYW5kbGUuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8V2Vi
SW1hZ2U+IGltYWdlRm9yUmVjdChGcmFtZVZpZXcqIGZyYW1lVmlldywgY29uc3QgSW50UmVjdCYg
cmUKICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IGZyYW1lVmlldy0+ZnJhbWUoKS5wYWdlKCktPmRl
dmljZVNjYWxlRmFjdG9yKCk7CiAgICAgYml0bWFwU2l6ZS5zY2FsZShzY2FsZUZhY3Rvcik7CiAK
LSAgICBSZWZQdHI8V2ViSW1hZ2U+IHNuYXBzaG90ID0gV2ViSW1hZ2U6OmNyZWF0ZShiaXRtYXBT
aXplLCBzbmFwc2hvdE9wdGlvbnNUb0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7CisgICAgYXV0byBz
bmFwc2hvdCA9IFdlYkltYWdlOjpjcmVhdGUoYml0bWFwU2l6ZSwgc25hcHNob3RPcHRpb25zVG9J
bWFnZU9wdGlvbnMob3B0aW9ucykpOwogICAgIGlmICghc25hcHNob3QtPmJpdG1hcCgpKQogICAg
ICAgICByZXR1cm4gMDsKIApAQCAtMTY0LDcgKzE2NCw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFdl
YkltYWdlPiBpbWFnZUZvclJlY3QoRnJhbWVWaWV3KiBmcmFtZVZpZXcsIGNvbnN0IEludFJlY3Qm
IHJlCiAgICAgZnJhbWVWaWV3LT5wYWludENvbnRlbnRzRm9yU25hcHNob3QoKmdyYXBoaWNzQ29u
dGV4dC5nZXQoKSwgcmVjdCwgc2hvdWxkUGFpbnRTZWxlY3Rpb24sIEZyYW1lVmlldzo6RG9jdW1l
bnRDb29yZGluYXRlcyk7CiAgICAgZnJhbWVWaWV3LT5zZXRQYWludEJlaGF2aW9yKG9sZFBhaW50
QmVoYXZpb3IpOwogCi0gICAgcmV0dXJuIHNuYXBzaG90LnJlbGVhc2UoKTsKKyAgICByZXR1cm4g
c25hcHNob3Q7CiB9CiAKIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlTm9kZUhh
bmRsZTo6cmVuZGVyZWRJbWFnZShTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucykKQEAgLTE4NywxMCAr
MTg3LDEwIEBAIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6
cmVuZGVyZWRJbWFnZShTbmFwc2hvdE9wdGlvbnMgb3B0CiAgICAgSW50UmVjdCBwYWludGluZ1Jl
Y3QgPSBzbmFwcGVkSW50UmVjdChyZW5kZXJlci0+cGFpbnRpbmdSb290UmVjdCh0b3BMZXZlbFJl
Y3QpKTsKIAogICAgIGZyYW1lVmlldy0+c2V0Tm9kZVRvRHJhdyhtX25vZGUucHRyKCkpOwotICAg
IFJlZlB0cjxXZWJJbWFnZT4gaW1hZ2UgPSBpbWFnZUZvclJlY3QoZnJhbWVWaWV3LCBwYWludGlu
Z1JlY3QsIG9wdGlvbnMpOworICAgIGF1dG8gaW1hZ2UgPSBpbWFnZUZvclJlY3QoZnJhbWVWaWV3
LCBwYWludGluZ1JlY3QsIG9wdGlvbnMpOwogICAgIGZyYW1lVmlldy0+c2V0Tm9kZVRvRHJhdygw
KTsKIAotICAgIHJldHVybiBpbWFnZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGltYWdlOwogfQog
CiBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IEluamVjdGVkQnVuZGxlTm9k
ZUhhbmRsZTo6dmlzaWJsZVJhbmdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5k
bGVSYW5nZUhhbmRsZS5jcHAKaW5kZXggOGE5NDUxNDliOGU5YjgyNDJkZDM1NmQ0MjIzOTJjYzQ0
MTUwZTdjOS4uYzliZWY1YTZlOGI2M2FmZTk2MjVkOGRkZmU5NDMyNzhkOTAxYTMyMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0
ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKQEAgLTcwLDkg
KzcwLDkgQEAgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPiBJbmplY3RlZEJ1
bmRsZVJhbmdlSGFuZGxlOjpnZXRPckNyZWF0ZShSYW4KICAgICBpZiAoIXJlc3VsdC5pc05ld0Vu
dHJ5KQogICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxl
PihyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKIAotICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZVJh
bmdlSGFuZGxlPiByYW5nZUhhbmRsZSA9IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmNyZWF0
ZShyYW5nZSk7Ci0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHJhbmdlSGFuZGxlLmdldCgp
OwotICAgIHJldHVybiByYW5nZUhhbmRsZS5yZWxlYXNlKCk7CisgICAgYXV0byByYW5nZUhhbmRs
ZSA9IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmNyZWF0ZShyYW5nZSk7CisgICAgcmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZSA9IHJhbmdlSGFuZGxlLnB0cigpOworICAgIHJldHVybiBXVEZNb3Zl
KHJhbmdlSGFuZGxlKTsKIH0KIAogUmVmPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IEluamVj
dGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmNyZWF0ZShSYW5nZSogcmFuZ2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGUuY3BwCmluZGV4IDY5YTRmZjgwOWY5NzBjMzVhZGQxNWM0ODEyZDFlOWQ1NDViZmFhMjUuLjI4
M2E5NjcwMGY1ZTFmZDYzOGIyZWM1MjMyNGQzN2U3MGU4YjAwNzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGUuY3BwCkBAIC05MCwxMyArOTAsMTMgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIFBhc3NSZWZQ
dHI8SW5qZWN0ZWRCdW5kbGU+IEluamVjdGVkQnVuZGxlOjpjcmVhdGUoY29uc3QgV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycywgQVBJOjpPYmplY3QqIGluaXRpYWxpemF0
aW9uVXNlckRhdGEpCiB7Ci0gICAgUmVmUHRyPEluamVjdGVkQnVuZGxlPiBidW5kbGUgPSBhZG9w
dFJlZihuZXcgSW5qZWN0ZWRCdW5kbGUocGFyYW1ldGVycykpOworICAgIGF1dG8gYnVuZGxlID0g
YWRvcHRSZWYoKm5ldyBJbmplY3RlZEJ1bmRsZShwYXJhbWV0ZXJzKSk7CiAKICAgICBidW5kbGUt
Pm1fc2FuZGJveEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShwYXJhbWV0ZXJz
LmluamVjdGVkQnVuZGxlUGF0aEV4dGVuc2lvbkhhbmRsZSk7CiAgICAgaWYgKCFidW5kbGUtPmlu
aXRpYWxpemUocGFyYW1ldGVycywgaW5pdGlhbGl6YXRpb25Vc2VyRGF0YSkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGJ1bmRsZS5yZWxlYXNlKCk7CisgICAgcmV0dXJu
IFdURk1vdmUoYnVuZGxlKTsKIH0KIAogSW5qZWN0ZWRCdW5kbGU6OkluamVjdGVkQnVuZGxlKGNv
bnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlUGx1Z2luLmNwcAppbmRleCAzMTUxZTE0ZWI1ZTk1ZTQ2YjA2ZjBkN2NmMTA5ODVjYTI0ZjYy
ZjRmLi44ZjE1ZDM1MjQ2OGIxMTFkYWI1OGJlNzhkMjZmOTFmODVjNTJmMWRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpbi5jcHAKQEAgLTE2OSwxMCArMTY5LDEwIEBAIHZvaWQgTmV0c2NhcGVQbHVn
aW46OmxvYWRVUkwoY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5n
LCBjb25zCiAKICAgICBpZiAodGFyZ2V0LmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIFRoZSBicm93
c2VyIGlzIGdvaW5nIHRvIHNlbmQgdGhlIGRhdGEgaW4gYSBzdHJlYW0sIGNyZWF0ZSBhIHBsdWct
aW4gc3RyZWFtLgotICAgICAgICBSZWZQdHI8TmV0c2NhcGVQbHVnaW5TdHJlYW0+IHBsdWdpblN0
cmVhbSA9IE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpjcmVhdGUodGhpcywgcmVxdWVzdElELCB1cmxT
dHJpbmcsIHNlbmROb3RpZmljYXRpb24sIG5vdGlmaWNhdGlvbkRhdGEpOworICAgICAgICBhdXRv
IHBsdWdpblN0cmVhbSA9IE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpjcmVhdGUodGhpcywgcmVxdWVz
dElELCB1cmxTdHJpbmcsIHNlbmROb3RpZmljYXRpb24sIG5vdGlmaWNhdGlvbkRhdGEpOwogICAg
ICAgICBBU1NFUlQoIW1fc3RyZWFtcy5jb250YWlucyhyZXF1ZXN0SUQpKTsKIAotICAgICAgICBt
X3N0cmVhbXMuc2V0KHJlcXVlc3RJRCwgcGx1Z2luU3RyZWFtLnJlbGVhc2UoKSk7CisgICAgICAg
IG1fc3RyZWFtcy5zZXQocmVxdWVzdElELCBXVEZNb3ZlKHBsdWdpblN0cmVhbSkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL0RlcHJlY2F0ZWRQREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL0RlcHJlY2F0ZWRQREZQbHVnaW4ubW0KaW5kZXggMWM0NzE3Y2E3
MTg0M2Y0ZTRjMDE2ZWZiNzZjZjM5YzNhMGNlYjNlYi4uMTIyM2Y0OWM1MDg0NDA3YTRkMDhmYzM1
MTFjYTQ2MjVkMjA3ZWIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9EZXByZWNhdGVkUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBERlBsdWdpbi5tbQpAQCAtNjUxLDcgKzY1
MSw3IEBAIGNvbnN0IFBsdWdpblZpZXcqIFBERlBsdWdpbjo6cGx1Z2luVmlldygpIGNvbnN0CiAK
IFBhc3NSZWZQdHI8U2Nyb2xsYmFyPiBQREZQbHVnaW46OmNyZWF0ZVNjcm9sbGJhcihTY3JvbGxi
YXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKLSAgICBSZWZQdHI8U2Nyb2xsYmFyPiB3aWRn
ZXQgPSBTY3JvbGxiYXI6OmNyZWF0ZU5hdGl2ZVNjcm9sbGJhcigqdGhpcywgb3JpZW50YXRpb24s
IFJlZ3VsYXJTY3JvbGxiYXIpOworICAgIGF1dG8gd2lkZ2V0ID0gU2Nyb2xsYmFyOjpjcmVhdGVO
YXRpdmVTY3JvbGxiYXIoKnRoaXMsIG9yaWVudGF0aW9uLCBSZWd1bGFyU2Nyb2xsYmFyKTsKICAg
ICBpZiAob3JpZW50YXRpb24gPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgewogICAgICAgICBtX2hv
cml6b250YWxTY3JvbGxiYXJMYXllciA9IGFkb3B0TlMoW1tXS1BERlBsdWdpblNjcm9sbGJhckxh
eWVyIGFsbG9jXSBpbml0V2l0aFBERlBsdWdpbjp0aGlzXSk7CiAgICAgICAgIFttX2NvbnRhaW5l
ckxheWVyIGFkZFN1YmxheWVyOm1faG9yaXpvbnRhbFNjcm9sbGJhckxheWVyLmdldCgpXTsKQEAg
LTY2Nyw3ICs2NjcsNyBAQCBQYXNzUmVmUHRyPFNjcm9sbGJhcj4gUERGUGx1Z2luOjpjcmVhdGVT
Y3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpbwogICAgICAgICB9CiAgICAg
fQogICAgIHBsdWdpblZpZXcoKS0+ZnJhbWUoKS0+dmlldygpLT5hZGRDaGlsZCh3aWRnZXQuZ2V0
KCkpOwotICAgIHJldHVybiB3aWRnZXQucmVsZWFzZSgpOworICAgIHJldHVybiB3aWRnZXQ7CiB9
CiAKIHZvaWQgUERGUGx1Z2luOjpkZXN0cm95U2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9u
IG9yaWVudGF0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9y
YWdlL1N0b3JhZ2VBcmVhTWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFn
ZS9TdG9yYWdlQXJlYU1hcC5jcHAKaW5kZXggNmIyNGNmNDczMjIyZmQwYzMyNjhhNWQ3NTExNDkx
MDZjNjU3ZjYwOS4uYTBjYzhiOWIyNDRmMjUzZGMxMWQ2YmU4YTVkY2Q2OWU3Zjg3MDMxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VBcmVhTWFw
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZUFyZWFN
YXAuY3BwCkBAIC0yNjIsNyArMjYyLDcgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6YXBwbHlDaGFu
Z2UoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUpCiAKICAgICBpZiAo
IWtleSkgewogICAgICAgICAvLyBBIG51bGwga2V5IG1lYW5zIGNsZWFyLgotICAgICAgICBSZWZQ
dHI8U3RvcmFnZU1hcD4gbmV3U3RvcmFnZU1hcCA9IFN0b3JhZ2VNYXA6OmNyZWF0ZShtX3F1b3Rh
SW5CeXRlcyk7CisgICAgICAgIGF1dG8gbmV3U3RvcmFnZU1hcCA9IFN0b3JhZ2VNYXA6OmNyZWF0
ZShtX3F1b3RhSW5CeXRlcyk7CiAKICAgICAgICAgLy8gQW55IGNoYW5nZXMgdGhhdCB3ZXJlIG1h
ZGUgbG9jYWxseSBhZnRlciB0aGUgY2xlYXIgbXVzdCBzdGlsbCBiZSBrZXB0IGFyb3VuZCBpbiB0
aGUgbmV3IG1hcC4KICAgICAgICAgZm9yIChhdXRvIGl0ID0gbV9wZW5kaW5nVmFsdWVDaGFuZ2Vz
LmJlZ2luKCkua2V5cygpLCBlbmQgPSBtX3BlbmRpbmdWYWx1ZUNoYW5nZXMuZW5kKCkua2V5cygp
OyBpdCAhPSBlbmQ7ICsraXQpIHsKQEAgLTI3OCw3ICsyNzgsNyBAQCB2b2lkIFN0b3JhZ2VBcmVh
TWFwOjphcHBseUNoYW5nZShjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1
ZSkKICAgICAgICAgICAgIG5ld1N0b3JhZ2VNYXAtPnNldEl0ZW1JZ25vcmluZ1F1b3RhKGtleSwg
b2xkVmFsdWUpOwogICAgICAgICB9CiAKLSAgICAgICAgbV9zdG9yYWdlTWFwID0gbmV3U3RvcmFn
ZU1hcC5yZWxlYXNlKCk7CisgICAgICAgIG1fc3RvcmFnZU1hcCA9IFdURk1vdmUobmV3U3RvcmFn
ZU1hcCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNv
bnZlcnNpb24uY3BwCmluZGV4IDE1MWM5MDA2ZmMyYjRmOTA4MTBlNjJkNmQzMzdkMTg5Yjc2Mzcy
NTUuLjFjYTdmNDQ5N2E3OThiM2U1ZGVkNGFlZWIxOGVhY2MyZjE5YWE3NzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29u
dmVyc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIFBhZ2VTdGF0
ZSB0b1BhZ2VTdGF0ZShjb25zdCBXZWJDb3JlOjpIaXN0b3J5SXRlbSYgaGlzdG9yeUl0ZW0pCiAK
IHN0YXRpYyBQYXNzUmVmUHRyPEZvcm1EYXRhPiB0b0Zvcm1EYXRhKGNvbnN0IEhUVFBCb2R5JiBo
dHRwQm9keSkKIHsKLSAgICBSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhID0gRm9ybURhdGE6OmNy
ZWF0ZSgpOworICAgIGF1dG8gZm9ybURhdGEgPSBGb3JtRGF0YTo6Y3JlYXRlKCk7CiAKICAgICBm
b3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBodHRwQm9keS5lbGVtZW50cykgewogICAgICAgICBz
d2l0Y2ggKGVsZW1lbnQudHlwZSkgewpAQCAtMTQxLDcgKzE0MSw3IEBAIHN0YXRpYyBQYXNzUmVm
UHRyPEZvcm1EYXRhPiB0b0Zvcm1EYXRhKGNvbnN0IEhUVFBCb2R5JiBodHRwQm9keSkKICAgICAg
ICAgfQogICAgIH0KIAotICAgIHJldHVybiBmb3JtRGF0YS5yZWxlYXNlKCk7CisgICAgcmV0dXJu
IFdURk1vdmUoZm9ybURhdGEpOwogfQogCiBzdGF0aWMgdm9pZCBhcHBseUZyYW1lU3RhdGUoSGlz
dG9yeUl0ZW0mIGhpc3RvcnlJdGVtLCBjb25zdCBGcmFtZVN0YXRlJiBmcmFtZVN0YXRlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCBhMTQ3ZjIwZGY4Zjk3Y2I1ZGEzYmFm
NjkzZTMzNDA0ZDE1MDA4ZTdlLi5mMWFlNTU0MzEwNDRiZjg5ZWI1NjAwOTUyNDQ3ODRkZmQ4MGJl
Y2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTQzNSwxMSArMTQz
NSwxMSBAQCBSZWZQdHI8V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2lu
KGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbQogI2VuZGlmCiAKICNpZiBFTkFCTEUoTkVU
U0NBUEVfUExVR0lOX0FQSSkKLSAgICBSZWZQdHI8UGx1Z2luPiBwbHVnaW4gPSBtX2ZyYW1lLT5w
YWdlKCktPmNyZWF0ZVBsdWdpbihtX2ZyYW1lLCBwbHVnaW5FbGVtZW50LCBwYXJhbWV0ZXJzLCBw
YXJhbWV0ZXJzLm1pbWVUeXBlKTsKKyAgICBhdXRvIHBsdWdpbiA9IG1fZnJhbWUtPnBhZ2UoKS0+
Y3JlYXRlUGx1Z2luKG1fZnJhbWUsIHBsdWdpbkVsZW1lbnQsIHBhcmFtZXRlcnMsIHBhcmFtZXRl
cnMubWltZVR5cGUpOwogICAgIGlmICghcGx1Z2luKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIHJldHVybiBQbHVnaW5WaWV3OjpjcmVhdGUocGx1Z2luRWxlbWVudCwgcGx1Z2luLnJl
bGVhc2UoKSwgcGFyYW1ldGVycyk7CisgICAgcmV0dXJuIFBsdWdpblZpZXc6OmNyZWF0ZShwbHVn
aW5FbGVtZW50LCBXVEZNb3ZlKHBsdWdpbiksIHBhcmFtZXRlcnMpOwogI2Vsc2UKICAgICBVTlVT
RURfUEFSQU0ocGx1Z2luRWxlbWVudCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNDU0LDgg
KzE0NTQsOCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpyZWNyZWF0ZVBsdWdpbihXaWRn
ZXQqIHdpZGdldCkKIAogICAgIFBsdWdpblZpZXcqIHBsdWdpblZpZXcgPSBzdGF0aWNfY2FzdDxQ
bHVnaW5WaWV3Kj4od2lkZ2V0KTsKICAgICBTdHJpbmcgbmV3TUlNRVR5cGU7Ci0gICAgUmVmUHRy
PFBsdWdpbj4gcGx1Z2luID0gbV9mcmFtZS0+cGFnZSgpLT5jcmVhdGVQbHVnaW4obV9mcmFtZSwg
cGx1Z2luVmlldy0+cGx1Z2luRWxlbWVudCgpLCBwbHVnaW5WaWV3LT5pbml0aWFsUGFyYW1ldGVy
cygpLCBuZXdNSU1FVHlwZSk7Ci0gICAgcGx1Z2luVmlldy0+cmVjcmVhdGVBbmRJbml0aWFsaXpl
KHBsdWdpbi5yZWxlYXNlKCkpOworICAgIGF1dG8gcGx1Z2luID0gbV9mcmFtZS0+cGFnZSgpLT5j
cmVhdGVQbHVnaW4obV9mcmFtZSwgcGx1Z2luVmlldy0+cGx1Z2luRWxlbWVudCgpLCBwbHVnaW5W
aWV3LT5pbml0aWFsUGFyYW1ldGVycygpLCBuZXdNSU1FVHlwZSk7CisgICAgcGx1Z2luVmlldy0+
cmVjcmVhdGVBbmRJbml0aWFsaXplKFdURk1vdmUocGx1Z2luKSk7CiAjZWxzZQogICAgIFVOVVNF
RF9QQVJBTSh3aWRnZXQpOwogI2VuZGlmCkBAIC0xNDg4LDcgKzE0ODgsNyBAQCBXZWJDb3JlOjpX
ZWJHTExvYWRQb2xpY3kgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnJlc29sdmVXZWJHTFBvbGljeUZv
clVSTChjb25zdCBTdAogUGFzc1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpj
cmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIEhUTUxBcHBs
ZXRFbGVtZW50KiBhcHBsZXRFbGVtZW50LCBjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKQogewogI2lm
IEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIFJlZlB0cjxXaWRnZXQ+IHBsdWdpbiA9
IGNyZWF0ZVBsdWdpbihwbHVnaW5TaXplLCBhcHBsZXRFbGVtZW50LCBVUkwoKSwgcGFyYW1OYW1l
cywgcGFyYW1WYWx1ZXMsIGFwcGxldEVsZW1lbnQtPnNlcnZpY2VUeXBlKCksIGZhbHNlKTsKKyAg
ICBhdXRvIHBsdWdpbiA9IGNyZWF0ZVBsdWdpbihwbHVnaW5TaXplLCBhcHBsZXRFbGVtZW50LCBV
UkwoKSwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMsIGFwcGxldEVsZW1lbnQtPnNlcnZpY2VUeXBl
KCksIGZhbHNlKTsKICAgICBpZiAoIXBsdWdpbikgewogICAgICAgICBpZiAoV2ViUGFnZSogd2Vi
UGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkgewogICAgICAgICAgICAgU3RyaW5nIGZyYW1lVVJMU3Ry
aW5nID0gbV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJl
c3BvbnNlVVJMKCkuc3RyaW5nKCk7CkBAIC0xNDk2LDcgKzE0OTYsNyBAQCBQYXNzUmVmUHRyPFdp
ZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3Qg
SW50U2l6ZSYgcAogICAgICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEaWRGYWlsVG9Jbml0aWFsaXplUGx1Z2luKGFwcGxldEVsZW1lbnQtPnNlcnZpY2VUeXBl
KCksIGZyYW1lVVJMU3RyaW5nLCBwYWdlVVJMU3RyaW5nKSk7CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgcmV0dXJuIHBsdWdpbi5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1vdmUocGx1Z2luKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBsdWdpblNpemUpOwogICAgIFVOVVNFRF9QQVJBTShh
cHBsZXRFbGVtZW50KTsKQEAgLTE3MDEsOCArMTcwMSw4IEBAIGJvb2wgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OnNob3VsZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMKGNvbnN0IFdlYkNv
cmU6CiAKIFBhc3NSZWZQdHI8RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCkKIHsKLSAgICBSZWZQdHI8V2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dD4gY29udGV4dCA9IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmNy
ZWF0ZShtX2ZyYW1lKTsKLSAgICByZXR1cm4gY29udGV4dC5yZWxlYXNlKCk7CisgICAgYXV0byBj
b250ZXh0ID0gV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6Y3JlYXRlKG1fZnJhbWUpOworICAg
IHJldHVybiBXVEZNb3ZlKGNvbnRleHQpOwogfQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IDAyMWFiZmE1MDA5MjUwMGUx
ZDVjMWMzYzBlMjUyN2U4NDdiNzZmMzguLjk2ODkyOWZkYTM0NzlhYWQyYmU0YTEwYTBiNDU5NmFl
MTc1NTZkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKQEAgLTEwNyw5ICsxMDcs
OSBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6aGlnaGxpZ2h0KCkKIHsKICNpZiAhUExBVEZP
Uk0oSU9TKQogICAgIGlmICghbV9oaWdobGlnaHRPdmVybGF5KSB7Ci0gICAgICAgIFJlZlB0cjxQ
YWdlT3ZlcmxheT4gaGlnaGxpZ2h0T3ZlcmxheSA9IFBhZ2VPdmVybGF5OjpjcmVhdGUoKnRoaXMp
OwotICAgICAgICBtX2hpZ2hsaWdodE92ZXJsYXkgPSBoaWdobGlnaHRPdmVybGF5LmdldCgpOwot
ICAgICAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT5wYWdlT3ZlcmxheUNvbnRyb2xsZXIoKS5pbnN0
YWxsUGFnZU92ZXJsYXkoaGlnaGxpZ2h0T3ZlcmxheS5yZWxlYXNlKCksIFBhZ2VPdmVybGF5OjpG
YWRlTW9kZTo6RmFkZSk7CisgICAgICAgIGF1dG8gaGlnaGxpZ2h0T3ZlcmxheSA9IFBhZ2VPdmVy
bGF5OjpjcmVhdGUoKnRoaXMpOworICAgICAgICBtX2hpZ2hsaWdodE92ZXJsYXkgPSBoaWdobGln
aHRPdmVybGF5LnB0cigpOworICAgICAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT5wYWdlT3Zlcmxh
eUNvbnRyb2xsZXIoKS5pbnN0YWxsUGFnZU92ZXJsYXkoV1RGTW92ZShoaWdobGlnaHRPdmVybGF5
KSwgUGFnZU92ZXJsYXk6OkZhZGVNb2RlOjpGYWRlKTsKICAgICAgICAgbV9oaWdobGlnaHRPdmVy
bGF5LT5zZXROZWVkc0Rpc3BsYXkoKTsKICAgICB9IGVsc2UgewogICAgICAgICBtX2hpZ2hsaWdo
dE92ZXJsYXktPnN0b3BGYWRlT3V0QW5pbWF0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVu
dE1hYy5tbQppbmRleCA1YTAzODU5YmYxMjc5NjA2ZmY3MDNjOTcxODcwNWUwZTRkNzVkZTY3Li4w
YmQyNTg3NGZmNWJmMDgxN2Q3OTFmNDg3MzEwZWY2MGM1N2E1MzIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YkRyYWdDbGllbnRNYWMubW0KQEAgLTU2LDcgKzU2LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAK
IHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY29udmVydEltYWdlVG9CaXRtYXAo
TlNJbWFnZSAqaW1hZ2UsIGNvbnN0IEludFNpemUmIHNpemUpCiB7Ci0gICAgUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc2l6
ZSwgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKTsKKyAgICBhdXRvIGJpdG1hcCA9IFNo
YXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHNpemUsIFNoYXJlYWJsZUJpdG1hcDo6U3Vw
cG9ydHNBbHBoYSk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CkBAIC03Miw3ICs3Miw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY29u
dmVydEltYWdlVG9CaXRtYXAoTlNJbWFnZSAqaW1hZ2UsIGNvbnN0IEluCiAKICAgICBbTlNHcmFw
aGljc0NvbnRleHQgc2V0Q3VycmVudENvbnRleHQ6c2F2ZWRDb250ZXh0LmdldCgpXTsKIAotICAg
IHJldHVybiBiaXRtYXAucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKGJpdG1hcCk7CiB9
CiAKIHZvaWQgV2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnKFJldGFpblB0cjxOU0ltYWdlPiBpbWFn
ZSwgY29uc3QgSW50UG9pbnQmIHBvaW50LCBjb25zdCBJbnRQb2ludCYsIERhdGFUcmFuc2ZlciYs
IEZyYW1lJiBmcmFtZSwgYm9vbCBsaW5rRHJhZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCmluZGV4IDlmMTE5M2Y0OTMyNzkz
Mjc5OTAwNTQwMzg2OGVhZGMwZDYyNDg4NmQuLjFlMGNlZjQ2NTFiOTNiZjgwZmI3MDU2NjVjNmY2
MTVmZWFiYzJhODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9GaW5kQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0ZpbmRDb250cm9sbGVyLmNwcApAQCAtMTkyLDkgKzE5Miw5IEBAIHZvaWQgRmluZENvbnRy
b2xsZXI6OnVwZGF0ZUZpbmRVSUFmdGVyUGFnZVNjcm9sbChib29sIGZvdW5kLCBjb25zdCBTdHJp
bmcmIHN0cmluCiAgICAgICAgICAgICBtX3dlYlBhZ2UtPm1haW5GcmFtZSgpLT5wYWdlT3Zlcmxh
eUNvbnRyb2xsZXIoKS51bmluc3RhbGxQYWdlT3ZlcmxheShtX2ZpbmRQYWdlT3ZlcmxheSwgUGFn
ZU92ZXJsYXk6OkZhZGVNb2RlOjpGYWRlKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoIW1f
ZmluZFBhZ2VPdmVybGF5KSB7Ci0gICAgICAgICAgICBSZWZQdHI8UGFnZU92ZXJsYXk+IGZpbmRQ
YWdlT3ZlcmxheSA9IFBhZ2VPdmVybGF5OjpjcmVhdGUoKnRoaXMsIFBhZ2VPdmVybGF5OjpPdmVy
bGF5VHlwZTo6RG9jdW1lbnQpOwotICAgICAgICAgICAgbV9maW5kUGFnZU92ZXJsYXkgPSBmaW5k
UGFnZU92ZXJsYXkuZ2V0KCk7Ci0gICAgICAgICAgICBtX3dlYlBhZ2UtPm1haW5GcmFtZSgpLT5w
YWdlT3ZlcmxheUNvbnRyb2xsZXIoKS5pbnN0YWxsUGFnZU92ZXJsYXkoZmluZFBhZ2VPdmVybGF5
LnJlbGVhc2UoKSwgUGFnZU92ZXJsYXk6OkZhZGVNb2RlOjpGYWRlKTsKKyAgICAgICAgICAgIGF1
dG8gZmluZFBhZ2VPdmVybGF5ID0gUGFnZU92ZXJsYXk6OmNyZWF0ZSgqdGhpcywgUGFnZU92ZXJs
YXk6Ok92ZXJsYXlUeXBlOjpEb2N1bWVudCk7CisgICAgICAgICAgICBtX2ZpbmRQYWdlT3Zlcmxh
eSA9IGZpbmRQYWdlT3ZlcmxheS5wdHIoKTsKKyAgICAgICAgICAgIG1fd2ViUGFnZS0+bWFpbkZy
YW1lKCktPnBhZ2VPdmVybGF5Q29udHJvbGxlcigpLmluc3RhbGxQYWdlT3ZlcmxheShXVEZNb3Zl
KGZpbmRQYWdlT3ZlcmxheSksIFBhZ2VPdmVybGF5OjpGYWRlTW9kZTo6RmFkZSk7CiAgICAgICAg
IH0KICAgICAgICAgbV9maW5kUGFnZU92ZXJsYXktPnNldE5lZWRzRGlzcGxheSgpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlu
a1RhYmxlQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
VmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIuY3BwCmluZGV4IDhlMjJmNmVhNThhMTY1Mjk0YTAz
YmRkMWYyYTFmYmU3OWFiY2ZhYTIuLjFhMzllM2UxMDdkYzFmZGFiMzJjZDM2MjdlNTRjZjI4NWY2
ZDBjNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaXNp
dGVkTGlua1RhYmxlQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyLmNwcApAQCAtNTAsMTAgKzUwLDEw
IEBAIFBhc3NSZWZQdHI8VmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXI+IFZpc2l0ZWRMaW5rVGFi
bGVDb250cm9sbGVyOjpnZXRPckNyZWF0ZSh1CiAgICAgaWYgKHZpc2l0ZWRMaW5rVGFibGVDb250
cm9sbGVyUHRyKQogICAgICAgICByZXR1cm4gdmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXJQdHI7
CiAKLSAgICBSZWZQdHI8VmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXI+IHZpc2l0ZWRMaW5rVGFi
bGVDb250cm9sbGVyID0gYWRvcHRSZWYobmV3IFZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyKGlk
ZW50aWZpZXIpKTsKLSAgICB2aXNpdGVkTGlua1RhYmxlQ29udHJvbGxlclB0ciA9IHZpc2l0ZWRM
aW5rVGFibGVDb250cm9sbGVyLmdldCgpOworICAgIGF1dG8gdmlzaXRlZExpbmtUYWJsZUNvbnRy
b2xsZXIgPSBhZG9wdFJlZigqbmV3IFZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyKGlkZW50aWZp
ZXIpKTsKKyAgICB2aXNpdGVkTGlua1RhYmxlQ29udHJvbGxlclB0ciA9IHZpc2l0ZWRMaW5rVGFi
bGVDb250cm9sbGVyLnB0cigpOwogCi0gICAgcmV0dXJuIHZpc2l0ZWRMaW5rVGFibGVDb250cm9s
bGVyLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92ZSh2aXNpdGVkTGlua1RhYmxlQ29udHJv
bGxlcik7CiB9CiAKIFZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyOjpWaXNpdGVkTGlua1RhYmxl
Q29udHJvbGxlcih1aW50NjRfdCBpZGVudGlmaWVyKQpAQCAtOTAsMTEgKzkwLDExIEBAIHZvaWQg
VmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXI6OmFkZFZpc2l0ZWRMaW5rKFBhZ2UmIHBhZ2UsIExp
bmtIYXNoIGxpbmtIYXNoKQogCiB2b2lkIFZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyOjpzZXRW
aXNpdGVkTGlua1RhYmxlKGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiBoYW5kbGUpCiB7Ci0g
ICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5OjptYXAo
aGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICBhdXRvIHNo
YXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6bWFwKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90
ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgaWYgKCFzaGFyZWRNZW1vcnkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1fdmlzaXRlZExpbmtUYWJsZS5zZXRTaGFyZWRNZW1vcnkoc2hhcmVkTWVtb3J5
LnJlbGVhc2UoKSk7CisgICAgbV92aXNpdGVkTGlua1RhYmxlLnNldFNoYXJlZE1lbW9yeShXVEZN
b3ZlKHNoYXJlZE1lbW9yeSkpOwogCiAgICAgaW52YWxpZGF0ZVN0eWxlc0ZvckFsbExpbmtzKCk7
CiAgICAgUGFnZUNhY2hlOjpzaW5nbGV0b24oKS5tYXJrUGFnZXNGb3JWaXNpdGVkTGlua1N0eWxl
UmVjYWxjKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcAppbmRleCAyYjU1NDBkZjdhNTExOTY4NjIxOWI1ZDU5ZjA1M2ZmMzUyNmM4YWVmLi45ZWMy
NjQ1N2NjMjQzOTQzMjVkZmU0ZDJlYjU3MmVjM2RkMWJkNDVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTExMCwxOCArMTEwLDE4IEBA
IHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUxpc3RlbmVySUQoKQogCiBQYXNzUmVmUHRyPFdlYkZy
YW1lPiBXZWJGcmFtZTo6Y3JlYXRlV2l0aENvcmVNYWluRnJhbWUoV2ViUGFnZSogcGFnZSwgV2Vi
Q29yZTo6RnJhbWUqIGNvcmVGcmFtZSkKIHsKLSAgICBSZWZQdHI8V2ViRnJhbWU+IGZyYW1lID0g
Y3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxXZWJGcmFtZUxvYWRlckNsaWVudD4oc3RhdGljX2Nhc3Q8
V2ViRnJhbWVMb2FkZXJDbGllbnQqPigmY29yZUZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKSkpKTsK
KyAgICBhdXRvIGZyYW1lID0gY3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxXZWJGcmFtZUxvYWRlckNs
aWVudD4oc3RhdGljX2Nhc3Q8V2ViRnJhbWVMb2FkZXJDbGllbnQqPigmY29yZUZyYW1lLT5sb2Fk
ZXIoKS5jbGllbnQoKSkpKTsKICAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRpZENyZWF0ZU1haW5GcmFtZShmcmFtZS0+ZnJhbWVJRCgpKSwgcGFnZS0+cGFnZUlEKCksIElQ
Qzo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKIAogICAgIGZy
YW1lLT5tX2NvcmVGcmFtZSA9IGNvcmVGcmFtZTsKICAgICBmcmFtZS0+bV9jb3JlRnJhbWUtPnRy
ZWUoKS5zZXROYW1lKFN0cmluZygpKTsKICAgICBmcmFtZS0+bV9jb3JlRnJhbWUtPmluaXQoKTsK
LSAgICByZXR1cm4gZnJhbWUucmVsZWFzZSgpOworICAgIHJldHVybiBmcmFtZTsKIH0KIAogUGFz
c1JlZlB0cjxXZWJGcmFtZT4gV2ViRnJhbWU6OmNyZWF0ZVN1YmZyYW1lKFdlYlBhZ2UqIHBhZ2Us
IGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxl
bWVudCkKIHsKLSAgICBSZWZQdHI8V2ViRnJhbWU+IGZyYW1lID0gY3JlYXRlKHN0ZDo6bWFrZV91
bmlxdWU8V2ViRnJhbWVMb2FkZXJDbGllbnQ+KCkpOworICAgIGF1dG8gZnJhbWUgPSBjcmVhdGUo
c3RkOjptYWtlX3VuaXF1ZTxXZWJGcmFtZUxvYWRlckNsaWVudD4oKSk7CiAgICAgcGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDcmVhdGVTdWJmcmFtZShmcmFtZS0+ZnJhbWVJ
RCgpKSwgcGFnZS0+cGFnZUlEKCksIElQQzo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5n
Rm9yU3luY1JlcGx5KTsKIAogICAgIFJlZjxXZWJDb3JlOjpGcmFtZT4gY29yZUZyYW1lID0gRnJh
bWU6OmNyZWF0ZShwYWdlLT5jb3JlUGFnZSgpLCBvd25lckVsZW1lbnQsIGZyYW1lLT5tX2ZyYW1l
TG9hZGVyQ2xpZW50LmdldCgpKTsKQEAgLTEzMiwxNyArMTMyLDE3IEBAIFBhc3NSZWZQdHI8V2Vi
RnJhbWU+IFdlYkZyYW1lOjpjcmVhdGVTdWJmcmFtZShXZWJQYWdlKiBwYWdlLCBjb25zdCBTdHJp
bmcmIGZyYW1lCiAgICAgICAgIG93bmVyRWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFtZSgpLT50cmVl
KCkuYXBwZW5kQ2hpbGQoV1RGTW92ZShjb3JlRnJhbWUpKTsKICAgICB9CiAgICAgZnJhbWUtPm1f
Y29yZUZyYW1lLT5pbml0KCk7Ci0gICAgcmV0dXJuIGZyYW1lLnJlbGVhc2UoKTsKKyAgICByZXR1
cm4gZnJhbWU7CiB9CiAKIFBhc3NSZWZQdHI8V2ViRnJhbWU+IFdlYkZyYW1lOjpjcmVhdGUoc3Rk
Ojp1bmlxdWVfcHRyPFdlYkZyYW1lTG9hZGVyQ2xpZW50PiBmcmFtZUxvYWRlckNsaWVudCkKIHsK
LSAgICBSZWZQdHI8V2ViRnJhbWU+IGZyYW1lID0gYWRvcHRSZWYobmV3IFdlYkZyYW1lKFdURk1v
dmUoZnJhbWVMb2FkZXJDbGllbnQpKSk7CisgICAgYXV0byBmcmFtZSA9IGFkb3B0UmVmKCpuZXcg
V2ViRnJhbWUoV1RGTW92ZShmcmFtZUxvYWRlckNsaWVudCkpKTsKIAogICAgIC8vIEFkZCBleHBs
aWN0IHJlZigpIHRoYXQgd2lsbCBiZSBiYWxhbmNlZCBpbiBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZnJhbWVMb2FkZXJEZXN0cm95ZWQoKS4KICAgICBmcmFtZS0+cmVmKCk7CiAKLSAgICByZXR1cm4g
ZnJhbWUucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKGZyYW1lKTsKIH0KIAogV2ViRnJh
bWU6OldlYkZyYW1lKHN0ZDo6dW5pcXVlX3B0cjxXZWJGcmFtZUxvYWRlckNsaWVudD4gZnJhbWVM
b2FkZXJDbGllbnQpCkBAIC04MTgsNyArODE4LDcgQEAgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRt
YXA+IFdlYkZyYW1lOjpjcmVhdGVTZWxlY3Rpb25TbmFwc2hvdCgpIGNvbnN0CiAgICAgaWYgKCFz
bmFwc2hvdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8U2hhcmVhYmxl
Qml0bWFwPiBzaGFyZWRTbmFwc2hvdCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxl
KHNuYXBzaG90LT5pbnRlcm5hbFNpemUoKSwgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhh
KTsKKyAgICBhdXRvIHNoYXJlZFNuYXBzaG90ID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFy
ZWFibGUoc25hcHNob3QtPmludGVybmFsU2l6ZSgpLCBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRz
QWxwaGEpOwogICAgIGlmICghc2hhcmVkU25hcHNob3QpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCkBAIC04MjksNyArODI5LDcgQEAgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFdlYkZy
YW1lOjpjcmVhdGVTZWxlY3Rpb25TbmFwc2hvdCgpIGNvbnN0CiAgICAgZ3JhcGhpY3NDb250ZXh0
LT5zY2FsZShGbG9hdFNpemUoZGV2aWNlU2NhbGVGYWN0b3IsIGRldmljZVNjYWxlRmFjdG9yKSk7
CiAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoV1RGTW92ZShz
bmFwc2hvdCksIEZsb2F0UG9pbnQoKSk7CiAKLSAgICByZXR1cm4gc2hhcmVkU25hcHNob3QucmVs
ZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKHNoYXJlZFNuYXBzaG90KTsKIH0KICAgICAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCmluZGV4IDYyNTI4N2VlNzViMjEyYjQ4YzU2ZmI4MmJkMGU4ZjdhMGI3ZTFm
MzIuLjY4OTQzNDM1ZWExYTliMjA4ZDZkZjRmYjlhY2Q5MjlmZGRkOGY5MDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTc1NCw4ICs3NTQs
OCBAQCBQYXNzUmVmUHRyPFBsdWdpbj4gV2ViUGFnZTo6Y3JlYXRlUGx1Z2luKFdlYkZyYW1lKiBm
cmFtZSwgSFRNTFBsdWdJbkVsZW1lbnQqIHBsdQogI2lmIEVOQUJMRShQREZLSVRfUExVR0lOKQog
ICAgICAgICBTdHJpbmcgcGF0aCA9IHBhcmFtZXRlcnMudXJsLnBhdGgoKTsKICAgICAgICAgaWYg
KHNob3VsZFVzZVBERlBsdWdpbigpICYmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1BERk9yUG9zdFNj
cmlwdE1JTUVUeXBlKHBhcmFtZXRlcnMubWltZVR5cGUpIHx8IChwYXJhbWV0ZXJzLm1pbWVUeXBl
LmlzRW1wdHkoKSAmJiAocGF0aC5lbmRzV2l0aCgiLnBkZiIsIGZhbHNlKSB8fCBwYXRoLmVuZHNX
aXRoKCIucHMiLCBmYWxzZSkpKSkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxQREZQbHVnaW4+IHBk
ZlBsdWdpbiA9IFBERlBsdWdpbjo6Y3JlYXRlKGZyYW1lKTsKLSAgICAgICAgICAgIHJldHVybiBw
ZGZQbHVnaW4ucmVsZWFzZSgpOworICAgICAgICAgICAgYXV0byBwZGZQbHVnaW4gPSBQREZQbHVn
aW46OmNyZWF0ZShmcmFtZSk7CisgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShwZGZQbHVnaW4p
OwogICAgICAgICB9CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0oZnJhbWUpOwpAQCAtMTg3
MCw3ICsxODcwLDcgQEAgUGFzc1JlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNob3RBdFNp
emUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYKICAgICBmbG9hdCB2ZXJ0aWNh
bFNjYWxlRmFjdG9yID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGJpdG1hcFNpemUuaGVpZ2h0KCkpIC8g
cmVjdC5oZWlnaHQoKTsKICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHN0ZDo6bWF4KGhvcml6b250
YWxTY2FsZUZhY3RvciwgdmVydGljYWxTY2FsZUZhY3Rvcik7CiAKLSAgICBSZWZQdHI8V2ViSW1h
Z2U+IHNuYXBzaG90ID0gV2ViSW1hZ2U6OmNyZWF0ZShiaXRtYXBTaXplLCBzbmFwc2hvdE9wdGlv
bnNUb0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7CisgICAgYXV0byBzbmFwc2hvdCA9IFdlYkltYWdl
OjpjcmVhdGUoYml0bWFwU2l6ZSwgc25hcHNob3RPcHRpb25zVG9JbWFnZU9wdGlvbnMob3B0aW9u
cykpOwogICAgIGlmICghc25hcHNob3QtPmJpdG1hcCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIApAQCAtMTg3OCw3ICsxODc4LDcgQEAgUGFzc1JlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6
c25hcHNob3RBdFNpemUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYKIAogICAg
IGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zUHJpbnRpbmcpIHsKICAgICAgICAgUHJpbnRD
b250ZXh0OjpzcG9vbEFsbFBhZ2VzV2l0aEJvdW5kYXJpZXMoKmNvcmVGcmFtZSwgKmdyYXBoaWNz
Q29udGV4dCwgc25hcHNob3RSZWN0LnNpemUoKSk7Ci0gICAgICAgIHJldHVybiBzbmFwc2hvdC5y
ZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBzbmFwc2hvdDsKICAgICB9CiAKICAgICBDb2xvciBk
b2N1bWVudEJhY2tncm91bmRDb2xvciA9IGZyYW1lVmlldy0+ZG9jdW1lbnRCYWNrZ3JvdW5kQ29s
b3IoKTsKQEAgLTE5MTAsNyArMTkxMCw3IEBAIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IFdlYlBhZ2U6
OnNuYXBzaG90QXRTaXplKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmCiAgICAg
ICAgIGdyYXBoaWNzQ29udGV4dC0+c3Ryb2tlUmVjdChzZWxlY3Rpb25SZWN0YW5nbGUsIDEpOwog
ICAgIH0KICAgICAKLSAgICByZXR1cm4gc25hcHNob3QucmVsZWFzZSgpOworICAgIHJldHVybiBz
bmFwc2hvdDsKIH0KIAogUGFzc1JlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNob3ROb2Rl
KFdlYkNvcmU6Ok5vZGUmIG5vZGUsIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBt
YXhpbXVtUGl4ZWxDb3VudCkKQEAgLTE5MzksNyArMTkzOSw3IEBAIFBhc3NSZWZQdHI8V2ViSW1h
Z2U+IFdlYlBhZ2U6OnNuYXBzaG90Tm9kZShXZWJDb3JlOjpOb2RlJiBub2RlLCBTbmFwc2hvdE9w
dGlvbnMKICAgICAgICAgc25hcHNob3RTaXplID0gSW50U2l6ZShzbmFwc2hvdFNpemUud2lkdGgo
KSAqIHNjYWxlRmFjdG9yLCBtYXhpbXVtSGVpZ2h0KTsKICAgICB9CiAKLSAgICBSZWZQdHI8V2Vi
SW1hZ2U+IHNuYXBzaG90ID0gV2ViSW1hZ2U6OmNyZWF0ZShzbmFwc2hvdFNpemUsIHNuYXBzaG90
T3B0aW9uc1RvSW1hZ2VPcHRpb25zKG9wdGlvbnMpKTsKKyAgICBhdXRvIHNuYXBzaG90ID0gV2Vi
SW1hZ2U6OmNyZWF0ZShzbmFwc2hvdFNpemUsIHNuYXBzaG90T3B0aW9uc1RvSW1hZ2VPcHRpb25z
KG9wdGlvbnMpKTsKICAgICBpZiAoIXNuYXBzaG90LT5iaXRtYXAoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKQEAgLTE5NjMsNyArMTk2Myw3IEBAIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IFdl
YlBhZ2U6OnNuYXBzaG90Tm9kZShXZWJDb3JlOjpOb2RlJiBub2RlLCBTbmFwc2hvdE9wdGlvbnMK
ICAgICBmcmFtZVZpZXctPnNldEJhc2VCYWNrZ3JvdW5kQ29sb3Ioc2F2ZWRCYWNrZ3JvdW5kQ29s
b3IpOwogICAgIGZyYW1lVmlldy0+c2V0Tm9kZVRvRHJhdyhudWxscHRyKTsKIAotICAgIHJldHVy
biBzbmFwc2hvdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHNuYXBzaG90OwogfQogCiB2b2lkIFdl
YlBhZ2U6OnBhZ2VEaWRTY3JvbGwoKQpAQCAtMzQxOSw3ICszNDE5LDcgQEAgdm9pZCBXZWJQYWdl
OjpkcmFnRW5kZWQoV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6Oklu
dFBvaW50IGdsb2IKIAogdm9pZCBXZWJQYWdlOjp3aWxsUGVyZm9ybUxvYWREcmFnRGVzdGluYXRp
b25BY3Rpb24oKQogewotICAgIG1fc2FuZGJveEV4dGVuc2lvblRyYWNrZXIud2lsbFBlcmZvcm1M
b2FkRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKG1fcGVuZGluZ0Ryb3BTYW5kYm94RXh0ZW5zaW9uLnJl
bGVhc2UoKSk7CisgICAgbV9zYW5kYm94RXh0ZW5zaW9uVHJhY2tlci53aWxsUGVyZm9ybUxvYWRE
cmFnRGVzdGluYXRpb25BY3Rpb24oV1RGTW92ZShtX3BlbmRpbmdEcm9wU2FuZGJveEV4dGVuc2lv
bikpOwogfQogCiB2b2lkIFdlYlBhZ2U6Om1heVBlcmZvcm1VcGxvYWREcmFnRGVzdGluYXRpb25B
Y3Rpb24oKQpAQCAtMzk3Miw3ICszOTcyLDcgQEAgdm9pZCBXZWJQYWdlOjpTYW5kYm94RXh0ZW5z
aW9uVHJhY2tlcjo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWQoV2ViRnJhbWUqIGZyYW1lKQogCiAg
ICAgQVNTRVJUKCFtX3Byb3Zpc2lvbmFsU2FuZGJveEV4dGVuc2lvbik7CiAKLSAgICBtX3Byb3Zp
c2lvbmFsU2FuZGJveEV4dGVuc2lvbiA9IG1fcGVuZGluZ1Byb3Zpc2lvbmFsU2FuZGJveEV4dGVu
c2lvbi5yZWxlYXNlKCk7CisgICAgbV9wcm92aXNpb25hbFNhbmRib3hFeHRlbnNpb24gPSBXVEZN
b3ZlKG1fcGVuZGluZ1Byb3Zpc2lvbmFsU2FuZGJveEV4dGVuc2lvbik7CiAgICAgaWYgKCFtX3By
b3Zpc2lvbmFsU2FuZGJveEV4dGVuc2lvbikKICAgICAgICAgcmV0dXJuOwogCkBAIC0zOTg5LDcg
KzM5ODksNyBAQCB2b2lkIFdlYlBhZ2U6OlNhbmRib3hFeHRlbnNpb25UcmFja2VyOjpkaWRDb21t
aXRQcm92aXNpb25hbExvYWQoV2ViRnJhbWUqIGZyYW1lKQogICAgIGlmIChtX2NvbW1pdHRlZFNh
bmRib3hFeHRlbnNpb24pCiAgICAgICAgIG1fY29tbWl0dGVkU2FuZGJveEV4dGVuc2lvbi0+cmV2
b2tlKCk7CiAKLSAgICBtX2NvbW1pdHRlZFNhbmRib3hFeHRlbnNpb24gPSBtX3Byb3Zpc2lvbmFs
U2FuZGJveEV4dGVuc2lvbi5yZWxlYXNlKCk7CisgICAgbV9jb21taXR0ZWRTYW5kYm94RXh0ZW5z
aW9uID0gV1RGTW92ZShtX3Byb3Zpc2lvbmFsU2FuZGJveEV4dGVuc2lvbik7CiAKICAgICAvLyBX
ZSBjYW4gYWxzbyBoYXZlIGEgbm9uLW51bGwgbV9wZW5kaW5nUHJvdmlzaW9uYWxTYW5kYm94RXh0
ZW5zaW9uIGlmIGEgbmV3IGxvYWQgaXMgYmVpbmcgc3RhcnRlZC4KICAgICAvLyBUaGlzIGV4dGVu
c2lvbiBpcyBub3QgY2xlYXJlZCwgYmVjYXVzZSBpdCBkb2VzIG5vdCBwZXJ0YWluIHRvIHRoZSBm
YWlsZWQgbG9hZCwgYW5kIHdpbGwgYmUgbmVlZGVkLgpAQCAtNDE0OCw3ICs0MTQ4LDcgQEAgdm9p
ZCBXZWJQYWdlOjpkcmF3UmVjdFRvSW1hZ2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJ
bmZvJiBwcmludEluZm8sIGNvbnMKICAgICAgICAgQVNTRVJUKGNvcmVGcmFtZS0+ZG9jdW1lbnQo
KS0+cHJpbnRpbmcoKSk7CiAjZW5kaWYKIAotICAgICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShpbWFnZVNpemUsIFNo
YXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CisgICAgICAgIGF1dG8gYml0bWFwID0gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoaW1hZ2VTaXplLCBTaGFyZWFibGVCaXRtYXA6
OlN1cHBvcnRzQWxwaGEpOwogICAgICAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IGJpdG1hcC0+
Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAKICAgICAgICAgZmxvYXQgcHJpbnRpbmdTY2FsZSA9
IHN0YXRpY19jYXN0PGZsb2F0PihpbWFnZVNpemUud2lkdGgoKSkgLyByZWN0LndpZHRoKCk7CkBA
IC00MTY2LDcgKzQxNjYsNyBAQCB2b2lkIFdlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZSh1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgY29ucwogICAgICAgICAgICAg
bV9wcmludENvbnRleHQtPnNwb29sUmVjdCgqZ3JhcGhpY3NDb250ZXh0LCByZWN0KTsKICAgICAg
ICAgfQogCi0gICAgICAgIGltYWdlID0gV2ViSW1hZ2U6OmNyZWF0ZShiaXRtYXAucmVsZWFzZSgp
KTsKKyAgICAgICAgaW1hZ2UgPSBXZWJJbWFnZTo6Y3JlYXRlKFdURk1vdmUoYml0bWFwKSk7CiAg
ICAgfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlR3JvdXBQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZUdyb3VwUHJveHkuY3BwCmluZGV4IGY5YTg2MzA4ZjU4Yzk5NzBjNjRkYzRl
NzJlNzRhOTYyMDRhZTlhZGMuLmM2ZmI3MjE5NjQ0YWQ2ZDQ1ZWY5MzZkNWRlZmJiZjc5NGNlYjFh
NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
R3JvdXBQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2VHcm91cFByb3h5LmNwcApAQCAtMzcsMTIgKzM3LDEyIEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBQYXNzUmVmUHRyPFdlYlBhZ2VHcm91cFByb3h5PiBXZWJQYWdlR3JvdXBQcm94eTo6Y3Jl
YXRlKGNvbnN0IFdlYlBhZ2VHcm91cERhdGEmIGRhdGEpCiB7Ci0gICAgUmVmUHRyPFdlYlBhZ2VH
cm91cFByb3h5PiBwYWdlR3JvdXAgPSBhZG9wdFJlZihuZXcgV2ViUGFnZUdyb3VwUHJveHkoZGF0
YSkpOwotICAgIAorICAgIGF1dG8gcGFnZUdyb3VwID0gYWRvcHRSZWYoKm5ldyBXZWJQYWdlR3Jv
dXBQcm94eShkYXRhKSk7CisKICAgICBpZiAocGFnZUdyb3VwLT5pc1Zpc2libGVUb0luamVjdGVk
QnVuZGxlKCkgJiYgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuaW5qZWN0ZWRCdW5kbGUoKSkKLSAg
ICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuaW5qZWN0ZWRCdW5kbGUoKS0+ZGlkSW5pdGlh
bGl6ZVBhZ2VHcm91cChwYWdlR3JvdXAuZ2V0KCkpOworICAgICAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5pbmplY3RlZEJ1bmRsZSgpLT5kaWRJbml0aWFsaXplUGFnZUdyb3VwKHBhZ2VHcm91
cC5wdHIoKSk7CiAKLSAgICByZXR1cm4gcGFnZUdyb3VwLnJlbGVhc2UoKTsKKyAgICByZXR1cm4g
V1RGTW92ZShwYWdlR3JvdXApOwogfQogCiBXZWJQYWdlR3JvdXBQcm94eTo6V2ViUGFnZUdyb3Vw
UHJveHkoY29uc3QgV2ViUGFnZUdyb3VwRGF0YSYgZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZS5t
bSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1h
dGlvblJlbW90ZS5tbQppbmRleCA2YTg2ZjE3MWMyYjIwNmNhMjYwMzEyZWFkNDhkY2MzMThmYjE0
M2FmLi41ODE1Y2ZlNjEwZmRkNDZjMDQwNWRlYmQ0NGJhYzhhMGUxODM5MTU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FBbmltYXRp
b25SZW1vdGUubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9Q
bGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tCkBAIC0yOTQsNyArMjk0LDcgQEAgYm9vbCBQbGF0
Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpQcm9wZXJ0aWVzOjpkZWNvZGUoSVBDOjpBcmd1bWVudERl
Y29kZXImIGRlY29kZXIKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIAotICAgICAgICAgICAgcHJvcGVydGllcy50aW1pbmdGdW5jdGlvbnMudW5jaGVj
a2VkQXBwZW5kKHRpbWluZ0Z1bmN0aW9uLnJlbGVhc2UoKSk7CisgICAgICAgICAgICBwcm9wZXJ0
aWVzLnRpbWluZ0Z1bmN0aW9ucy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZSh0aW1pbmdGdW5jdGlv
bikpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKaW5k
ZXggMjE5ZTgzYzExNDA3OWE1MGZiY2IwNGQ2MTExNzdhOGFmN2Y3OGRjOC4uMjQ3NjgyNTMyN2U2
NGNlMTliODMwOThhNGQ5ZTk5ODVlZDQ4Mzg1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3Rl
LmNwcApAQCAtNTYsNyArNTYsNyBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllclJlbW90ZT4g
UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjcmVhdGUoTGF5ZXJUeXBlIGxheWVyVAogCiAgICAgY29u
dGV4dC5sYXllcldhc0NyZWF0ZWQoKmxheWVyLCBsYXllclR5cGUpOwogCi0gICAgcmV0dXJuIGxh
eWVyLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92ZShsYXllcik7CiB9CiAKIFBhc3NSZWZQ
dHI8UGxhdGZvcm1DQUxheWVyUmVtb3RlPiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNyZWF0ZShQ
bGF0Zm9ybUxheWVyICpwbGF0Zm9ybUxheWVyLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVy
LCBSZW1vdGVMYXllclRyZWVDb250ZXh0JiBjb250ZXh0KQpAQCAtNjYsMTEgKzY2LDExIEBAIFBh
c3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyUmVtb3RlPiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNy
ZWF0ZShQbGF0Zm9ybUxheWVyICpwCiAKIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyUmVtb3Rl
PiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNyZWF0ZShjb25zdCBQbGF0Zm9ybUNBTGF5ZXJSZW1v
dGUmIG90aGVyLCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyLCBSZW1vdGVM
YXllclRyZWVDb250ZXh0JiBjb250ZXh0KQogewotICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGU+IGxheWVyID0gYWRvcHRSZWYobmV3IFBsYXRmb3JtQ0FMYXllclJlbW90ZShvdGhlciwg
b3duZXIsIGNvbnRleHQpKTsKKyAgICBhdXRvIGxheWVyID0gYWRvcHRSZWYoKm5ldyBQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGUob3RoZXIsIG93bmVyLCBjb250ZXh0KSk7CiAKLSAgICBjb250ZXh0Lmxh
eWVyV2FzQ3JlYXRlZCgqbGF5ZXIsIG90aGVyLmxheWVyVHlwZSgpKTsKKyAgICBjb250ZXh0Lmxh
eWVyV2FzQ3JlYXRlZChsYXllci5nZXQoKSwgb3RoZXIubGF5ZXJUeXBlKCkpOwogCi0gICAgcmV0
dXJuIGxheWVyLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92ZShsYXllcik7CiB9CiAKIFBs
YXRmb3JtQ0FMYXllclJlbW90ZTo6UGxhdGZvcm1DQUxheWVyUmVtb3RlKExheWVyVHlwZSBsYXll
clR5cGUsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRl
eHQmIGNvbnRleHQpCkBAIC05NSwxMiArOTUsMTIgQEAgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGUoY29uc3QgUGxhdGZvcm1DQUxheWVyUmVtb3RlJiBvdGhlciwK
IAogUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6Y2xv
bmUoUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcikgY29uc3QKIHsKLSAgICBSZWZQdHI8UGxh
dGZvcm1DQUxheWVyUmVtb3RlPiBjbG9uZSA9IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6Y3JlYXRl
KCp0aGlzLCBvd25lciwgKm1fY29udGV4dCk7CisgICAgYXV0byBjbG9uZSA9IFBsYXRmb3JtQ0FM
YXllclJlbW90ZTo6Y3JlYXRlKCp0aGlzLCBvd25lciwgKm1fY29udGV4dCk7CiAKICAgICB1cGRh
dGVDbG9uZWRMYXllclByb3BlcnRpZXMoKmNsb25lKTsKIAogICAgIGNsb25lLT5zZXRDbG9uZWRM
YXllcih0aGlzKTsKLSAgICByZXR1cm4gY2xvbmUucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZN
b3ZlKGNsb25lKTsKIH0KIAogUGxhdGZvcm1DQUxheWVyUmVtb3RlOjp+UGxhdGZvcm1DQUxheWVy
UmVtb3RlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0KaW5kZXggMTU0
MmE2YmZiNDE2OWMzMWFlOWY4YmU2MWY0OTJiNGU3NjY0MmJjNy4uNTdiM2NjMTExMjI0OWY3MDg2
OTBiNTM1YzY5NDE5NmI1NDRkMzRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0KKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVD
dXN0b20ubW0KQEAgLTQ4LDEwICs0OCwxMCBAQCBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBwbGF0
Zm9ybUNBTGF5ZXJQb2ludGVyID0gQCJXS1BsYXRmb3JtQ0FMYXllciI7CiAKIFBhc3NSZWZQdHI8
UGxhdGZvcm1DQUxheWVyUmVtb3RlPiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OmNyZWF0
ZShQbGF0Zm9ybUxheWVyICpwbGF0Zm9ybUxheWVyLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93
bmVyLCBSZW1vdGVMYXllclRyZWVDb250ZXh0JiBjb250ZXh0KQogewotICAgIFJlZlB0cjxQbGF0
Zm9ybUNBTGF5ZXJSZW1vdGU+IGxheWVyID0gYWRvcHRSZWYobmV3IFBsYXRmb3JtQ0FMYXllclJl
bW90ZUN1c3RvbShQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXll
cihwbGF0Zm9ybUxheWVyKSwgcGxhdGZvcm1MYXllciwgb3duZXIsIGNvbnRleHQpKTsKLSAgICBj
b250ZXh0LmxheWVyV2FzQ3JlYXRlZCgqbGF5ZXIsIGxheWVyLT5sYXllclR5cGUoKSk7CisgICAg
YXV0byBsYXllciA9IGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tKFBs
YXRmb3JtQ0FMYXllckNvY29hOjpsYXllclR5cGVGb3JQbGF0Zm9ybUxheWVyKHBsYXRmb3JtTGF5
ZXIpLCBwbGF0Zm9ybUxheWVyLCBvd25lciwgY29udGV4dCkpOworICAgIGNvbnRleHQubGF5ZXJX
YXNDcmVhdGVkKGxheWVyLmdldCgpLCBsYXllci0+bGF5ZXJUeXBlKCkpOwogCi0gICAgcmV0dXJu
IGxheWVyLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92ZShsYXllcik7CiB9CiAKIFBsYXRm
b3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tKExheWVy
VHlwZSBsYXllclR5cGUsIFBsYXRmb3JtTGF5ZXIgKiBjdXN0b21MYXllciwgUGxhdGZvcm1DQUxh
eWVyQ2xpZW50KiBvd25lciwgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYgY29udGV4dCkKQEAgLTEy
NywxMyArMTI3LDEzIEBAIFBhc3NSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyPiBQbGF0
Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OmNsb25lKFBsYXRmb3JtCiAgICAgICAgIGNvcHlDb250
ZW50cyA9IGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+
IGNsb25lID0gYWRvcHRSZWYobmV3IFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbShsYXllclR5
cGUoKSwgY2xvbmVkTGF5ZXIuZ2V0KCksIG93bmVyLCAqY29udGV4dCgpKSk7Ci0gICAgY29udGV4
dCgpLT5sYXllcldhc0NyZWF0ZWQoKmNsb25lLCBjbG9uZS0+bGF5ZXJUeXBlKCkpOworICAgIGF1
dG8gY2xvbmUgPSBhZG9wdFJlZigqbmV3IFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbShsYXll
clR5cGUoKSwgY2xvbmVkTGF5ZXIuZ2V0KCksIG93bmVyLCAqY29udGV4dCgpKSk7CisgICAgY29u
dGV4dCgpLT5sYXllcldhc0NyZWF0ZWQoY2xvbmUuZ2V0KCksIGNsb25lLT5sYXllclR5cGUoKSk7
CiAKLSAgICB1cGRhdGVDbG9uZWRMYXllclByb3BlcnRpZXMoKmNsb25lLCBjb3B5Q29udGVudHMp
OworICAgIHVwZGF0ZUNsb25lZExheWVyUHJvcGVydGllcyhjbG9uZS5nZXQoKSwgY29weUNvbnRl
bnRzKTsKIAogICAgIGNsb25lLT5zZXRDbG9uZWRMYXllcih0aGlzKTsKLSAgICByZXR1cm4gY2xv
bmUucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKGNsb25lKTsKIH0KIAogQ0ZUeXBlUmVm
IFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6Y29udGVudHMoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KaW5kZXggZmZlOGNjZjQ4MjJmM2FlNjc5NzM4NGQ1
NDM0NzFjNDg2MzkzODYzZi4uOTZjZTczN2YxMmMzMzRkOWE1MzJlNWYxZmU5YTA3Mzk4OWIwOGIy
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCkBAIC0xMTEsOSArMTEx
LDkgQEAgR3JhcGhpY3NMYXllckZhY3RvcnkqIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpn
cmFwaGljc0xheWVyRmFjdG9yeSgpCiAKIFJlZlB0cjxEaXNwbGF5UmVmcmVzaE1vbml0b3I+IFJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpjcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3IoUGxh
dGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQogewotICAgIFJlZlB0cjxSZW1vdGVMYXllclRyZWVE
aXNwbGF5UmVmcmVzaE1vbml0b3I+IG1vbml0b3IgPSBSZW1vdGVMYXllclRyZWVEaXNwbGF5UmVm
cmVzaE1vbml0b3I6OmNyZWF0ZShkaXNwbGF5SUQsICp0aGlzKTsKLSAgICBtX2Rpc3BsYXlSZWZy
ZXNoTW9uaXRvcnMuYWRkKG1vbml0b3IuZ2V0KCkpOwotICAgIHJldHVybiBtb25pdG9yLnJlbGVh
c2UoKTsKKyAgICBhdXRvIG1vbml0b3IgPSBSZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1v
bml0b3I6OmNyZWF0ZShkaXNwbGF5SUQsICp0aGlzKTsKKyAgICBtX2Rpc3BsYXlSZWZyZXNoTW9u
aXRvcnMuYWRkKG1vbml0b3IucHRyKCkpOworICAgIHJldHVybiBXVEZNb3ZlKG1vbml0b3IpOwog
fQogCiB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjp3aWxsRGVzdHJveURpc3BsYXlS
ZWZyZXNoTW9uaXRvcihEaXNwbGF5UmVmcmVzaE1vbml0b3IqIG1vbml0b3IpCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjVlMGVlMjExNjY0YTM4
ZmQ3MzNiYzZmNzhiZDIxY2M1NGY2ZTE1ZS4uMWFjNzg5ZmI2MTQ5OTc5NjMyOGU3OTA3OGJmNDU1
MmJjZmY4NmViYyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE2LTA2LTE2ICBLZWl0aCBSb2xsaW4gIDxrcm9sbGlu
QGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgUmVmUHRyOjpyZWxlYXNlKCkgYW5kIGNoYW5n
ZSBjYWxscyBzaXRlcyB0byB1c2UgV1RGTW92ZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgzNjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZWZQdHI6OnJlbGVhc2UoKSByZWxlYXNlcyBpdHMgbWFu
YWdlZCBwb2ludGVyIGF3a3dhcmRseS4gSXQncyBtb3JlCisgICAgICAgIGRpcmVjdCBhbmQgY2xl
YXJlciB0byB1c2UgV1RGTW92ZSB0byB0cmFuc2ZlciBvd25lcnNoaXAgb2YgdGhlIG1hbmFnZWQK
KyAgICAgICAgcG9pbnRlci4KKworICAgICAgICBBcyBwYXJ0IG9mIHRoaXMgY2xlYW51cCwgYWxz
byBjaGFuZ2UgYSBsb3Qgb2YgZXhwbGljaXQgZGF0YSB0eXBlcyB0bworICAgICAgICAnYXV0bycu
CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvUGl4ZWxEdW1wU3VwcG9ydE1hYy5tbToK
KyAgICAgICAgKGNyZWF0ZUJpdG1hcENvbnRleHRGcm9tV2ViVmlldyk6CisgICAgICAgIChjcmVh
dGVQYWdlZEJpdG1hcENvbnRleHQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXN0
UnVubmVyTWFjLm1tOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9z
aXRpb24pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hDb3VudGVkU2V0
LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVT
VCk6CisKIDIwMTYtMDYtMTYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjAyMDAyIGFuZCByMjAyMTExLgpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1BpeGVsRHVtcFN1cHBvcnRNYWMubW0gYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUGl4ZWxEdW1wU3VwcG9ydE1hYy5tbQppbmRleCBlMzMz
NGVmZTUzMjkwYzNkZGRjNWY1YWVhNTQ4ODcxYTc2ZGZhYmYxLi45Zjk5NmQzMmMxMGJhYTg5NzU4
YzI4YjE4OGMyODA4NDEwOWJmMjEwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvUGl4ZWxEdW1wU3VwcG9ydE1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
UGl4ZWxEdW1wU3VwcG9ydE1hYy5tbQpAQCAtMTIwLDcgKzEyMCw3IEBAIFBhc3NSZWZQdHI8Qml0
bWFwQ29udGV4dD4gY3JlYXRlQml0bWFwQ29udGV4dEZyb21XZWJWaWV3KGJvb2wgb25zY3JlZW4s
IGJvb2wgaW5jCiAgICAgc2l6ZV90IHBpeGVsc0hpZ2ggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHdl
YlZpZXdTaXplLmhlaWdodCAqIGRldmljZVNjYWxlRmFjdG9yKTsKICAgICBzaXplX3Qgcm93Qnl0
ZXMgPSAwOwogICAgIHZvaWQqIGJ1ZmZlciA9IG51bGxwdHI7Ci0gICAgUmVmUHRyPEJpdG1hcENv
bnRleHQ+IGJpdG1hcENvbnRleHQgPSBjcmVhdGVCaXRtYXBDb250ZXh0KHBpeGVsc1dpZGUsIHBp
eGVsc0hpZ2gsIHJvd0J5dGVzLCBidWZmZXIpOworICAgIGF1dG8gYml0bWFwQ29udGV4dCA9IGNy
ZWF0ZUJpdG1hcENvbnRleHQocGl4ZWxzV2lkZSwgcGl4ZWxzSGlnaCwgcm93Qnl0ZXMsIGJ1ZmZl
cik7CiAgICAgaWYgKCFiaXRtYXBDb250ZXh0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICBDR0NvbnRleHRSZWYgY29udGV4dCA9IGJpdG1hcENvbnRleHQtPmNnQ29udGV4dCgpOwpAQCAt
MTk0LDcgKzE5NCw3IEBAIFBhc3NSZWZQdHI8Qml0bWFwQ29udGV4dD4gY3JlYXRlQml0bWFwQ29u
dGV4dEZyb21XZWJWaWV3KGJvb2wgb25zY3JlZW4sIGJvb2wgaW5jCiAgICAgICAgIENHQ29udGV4
dFJlc3RvcmVHU3RhdGUoY29udGV4dCk7CiAgICAgfQogICAgIAotICAgIHJldHVybiBiaXRtYXBD
b250ZXh0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gYml0bWFwQ29udGV4dDsKIH0KIAogUGFzc1Jl
ZlB0cjxCaXRtYXBDb250ZXh0PiBjcmVhdGVQYWdlZEJpdG1hcENvbnRleHQoKQpAQCAtMjA3LDEw
ICsyMDcsMTAgQEAgUGFzc1JlZlB0cjxCaXRtYXBDb250ZXh0PiBjcmVhdGVQYWdlZEJpdG1hcENv
bnRleHQoKQogCiAgICAgaW50IHRvdGFsSGVpZ2h0ID0gbnVtYmVyT2ZQYWdlcyAqIChwYWdlSGVp
Z2h0SW5QaXhlbHMgKyAxKSAtIDE7CiAKLSAgICBSZWZQdHI8Qml0bWFwQ29udGV4dD4gYml0bWFw
Q29udGV4dCA9IGNyZWF0ZUJpdG1hcENvbnRleHQocGFnZVdpZHRoSW5QaXhlbHMsIHRvdGFsSGVp
Z2h0LCByb3dCeXRlcywgYnVmZmVyKTsKKyAgICBhdXRvIGJpdG1hcENvbnRleHQgPSBjcmVhdGVC
aXRtYXBDb250ZXh0KHBhZ2VXaWR0aEluUGl4ZWxzLCB0b3RhbEhlaWdodCwgcm93Qnl0ZXMsIGJ1
ZmZlcik7CiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBiaXRtYXBDb250ZXh0LT5jZ0NvbnRl
eHQoKTsKICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgMCwgdG90YWxIZWlnaHQp
OwogICAgIENHQ29udGV4dFNjYWxlQ1RNKGNvbnRleHQsIDEsIC0xKTsKICAgICBbbWFpbkZyYW1l
IHByaW50VG9DR0NvbnRleHQ6Y29udGV4dCBwYWdlV2lkdGg6cGFnZVdpZHRoSW5QaXhlbHMgcGFn
ZUhlaWdodDpwYWdlSGVpZ2h0SW5QaXhlbHNdOwotICAgIHJldHVybiBiaXRtYXBDb250ZXh0LnJl
bGVhc2UoKTsKKyAgICByZXR1cm4gYml0bWFwQ29udGV4dDsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KaW5kZXggZTRmNTI0ODI4OTNhZjQyN2NlZDE5NjlmNzFm
MzgxNjNmMjk4ZDE3YS4uNDQ1ZjQ0OTQ5Zjk5M2ZiMjA2YTIxMGIxNDI2NmNhNTJmMzZjYTk2MSAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KQEAgLTQyNyw4ICs0
MjcsOCBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJs
ZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZAogICAgICAgICAvLyBUZXN0IHRoZSBleHBv
c2VkIEFQSS4KICAgICAgICAgcG9zaXRpb24gPSBbW1dlYkdlb2xvY2F0aW9uUG9zaXRpb24gYWxs
b2NdIGluaXRXaXRoVGltZXN0YW1wOmN1cnJlbnRUaW1lKCkgbGF0aXR1ZGU6bGF0aXR1ZGUgbG9u
Z2l0dWRlOmxvbmdpdHVkZSBhY2N1cmFjeTphY2N1cmFjeV07CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgUmVmUHRyPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24+IGNvcmVHZW9sb2NhdGlvblBv
c2l0aW9uID0gV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKGN1cnJlbnRUaW1l
KCksIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5LCBwcm92aWRlc0FsdGl0dWRlLCBhbHRp
dHVkZSwgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBhbHRpdHVkZUFjY3VyYWN5LCBwcm92aWRl
c0hlYWRpbmcsIGhlYWRpbmcsIHByb3ZpZGVzU3BlZWQsIHNwZWVkKTsKLSAgICAgICAgcG9zaXRp
b24gPSBbW1dlYkdlb2xvY2F0aW9uUG9zaXRpb24gYWxsb2NdIGluaXRXaXRoR2VvbG9jYXRpb25Q
b3NpdGlvbjooY29yZUdlb2xvY2F0aW9uUG9zaXRpb24ucmVsZWFzZSgpKV07CisgICAgICAgIGF1
dG8gY29yZUdlb2xvY2F0aW9uUG9zaXRpb24gPSBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9u
OjpjcmVhdGUoY3VycmVudFRpbWUoKSwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3ksIHBy
b3ZpZGVzQWx0aXR1ZGUsIGFsdGl0dWRlLCBwcm92aWRlc0FsdGl0dWRlQWNjdXJhY3ksIGFsdGl0
dWRlQWNjdXJhY3ksIHByb3ZpZGVzSGVhZGluZywgaGVhZGluZywgcHJvdmlkZXNTcGVlZCwgc3Bl
ZWQpOworICAgICAgICBwb3NpdGlvbiA9IFtbV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiBhbGxvY10g
aW5pdFdpdGhHZW9sb2NhdGlvblBvc2l0aW9uOihXVEZNb3ZlKGNvcmVHZW9sb2NhdGlvblBvc2l0
aW9uKSldOwogICAgIH0KICAgICBbW01vY2tHZW9sb2NhdGlvblByb3ZpZGVyIHNoYXJlZF0gc2V0
UG9zaXRpb246cG9zaXRpb25dOwogICAgIFtwb3NpdGlvbiByZWxlYXNlXTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hDb3VudGVkU2V0LmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hDb3VudGVkU2V0LmNwcAppbmRleCA0YzFhZmQx
MDViZjFmNzAyMzA3M2Y2NjJjMjZmYWI4NWNiODM4NWYzLi42YTdiYjE5YjU1Mzk4MmIzMzUzOTBl
ZmNiZjczYzQ3YjlhZGZhOTU5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9IYXNoQ291bnRlZFNldC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvSGFzaENvdW50ZWRTZXQuY3BwCkBAIC0zNzAsNyArMzcwLDcgQEAgVEVTVChXVEZfSGFzaENv
dW50ZWRTZXQsIFJlZlB0cktleV9BZGRVc2luZ1JlbGVhc2UpCiAgICAgCiAgICAgRGVyaXZlZFJl
ZkxvZ2dlciBhKCJhIik7CiAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcHRyKCZhKTsKLSAgICBoYXNo
Q291bnRlZFNldC5hZGQocHRyLnJlbGVhc2UoKSk7CisgICAgaGFzaENvdW50ZWRTZXQuYWRkKFdU
Rk1vdmUocHRyKSk7CiAgICAgCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgIiwgdGFrZUxvZ1N0
cigpLmNfc3RyKCkpOwogfQpAQCAtNDM2LDcgKzQzNiw3IEBAIFRFU1QoV1RGX0hhc2hDb3VudGVk
U2V0LCBSZWZQdHJLZXlfQWRkVXNpbmdSZWxlYXNlS2V5QWxyZWFkeVByZXNlbnQpCiAgICAgCiAg
ICAgewogICAgICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwdHIyKCZhKTsKLSAgICAgICAgYXV0byBh
ZGRSZXN1bHQgPSBoYXNoQ291bnRlZFNldC5hZGQocHRyMi5yZWxlYXNlKCkpOworICAgICAgICBh
dXRvIGFkZFJlc3VsdCA9IGhhc2hDb3VudGVkU2V0LmFkZChXVEZNb3ZlKHB0cjIpKTsKICAgICAg
ICAgRVhQRUNUX0ZBTFNFKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICAgICB9CiAgICAgCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoTWFwLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwCmluZGV4IDJmMDY2MjNjNGE0OGFm
Yjc0MzAxMTc5ZGMyNmI4NjU0NGY2ZmZkODUuLjA4YTQxNGRiZTAzMTExMzc4ZGEyOWVlZjQxN2Fm
OGUxNjgwMzA4MzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hh
c2hNYXAuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3Bw
CkBAIC0zMDksNyArMzA5LDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgUmVmUHRyS2V5X0FkZFVzaW5n
UmVsZWFzZSkKIAogICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOwogICAgIFJlZlB0cjxSZWZM
b2dnZXI+IHB0cigmYSk7Ci0gICAgbWFwLmFkZChwdHIucmVsZWFzZSgpLCAwKTsKKyAgICBtYXAu
YWRkKFdURk1vdmUocHRyKSwgMCk7CiAKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSAiLCB0YWtl
TG9nU3RyKCkuY19zdHIoKSk7CiB9CkBAIC0zNzMsNyArMzczLDcgQEAgVEVTVChXVEZfSGFzaE1h
cCwgUmVmUHRyS2V5X0FkZFVzaW5nUmVsZWFzZUtleUFscmVhZHlQcmVzZW50KQogCiAgICAgewog
ICAgICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwdHIyKCZhKTsKLSAgICAgICAgYXV0byBhZGRSZXN1
bHQgPSBtYXAuYWRkKHB0cjIucmVsZWFzZSgpLCAwKTsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQg
PSBtYXAuYWRkKFdURk1vdmUocHRyMiksIDApOwogICAgICAgICBFWFBFQ1RfRkFMU0UoYWRkUmVz
dWx0LmlzTmV3RW50cnkpOwogICAgIH0KIApAQCAtNDE5LDcgKzQxOSw3IEBAIFRFU1QoV1RGX0hh
c2hNYXAsIFJlZlB0cktleV9TZXRVc2luZ1JlbGVhc2UpCiAKICAgICBEZXJpdmVkUmVmTG9nZ2Vy
IGEoImEiKTsKICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwdHIoJmEpOwotICAgIG1hcC5zZXQocHRy
LnJlbGVhc2UoKSwgMCk7CisgICAgbWFwLnNldChXVEZNb3ZlKHB0ciksIDApOwogCiAgICAgRVhQ
RUNUX1NUUkVRKCJyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogfQpAQCAtNDgxLDcg
KzQ4MSw3IEBAIFRFU1QoV1RGX0hhc2hNYXAsIFJlZlB0cktleV9TZXRVc2luZ1JlbGVhc2VLZXlB
bHJlYWR5UHJlc2VudCkKIAogICAgIHsKICAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcHRyMigm
YSk7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbWFwLnNldChwdHIyLnJlbGVhc2UoKSwgMSk7
CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbWFwLnNldChXVEZNb3ZlKHB0cjIpLCAxKTsKICAg
ICAgICAgRVhQRUNUX0ZBTFNFKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICAgICAgICAgRVhQRUNU
X0VRKDEsIG1hcC5nZXQocHRyLmdldCgpKSk7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281584</attachid>
            <date>2016-06-17 13:43:14 -0700</date>
            <delta_ts>2016-06-20 12:26:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158369-20160617134311.patch</filename>
            <type>text/plain</type>
            <size>296062</size>
            <attacher name="Keith Rollin">krollin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyMTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
YzQyYWM2NmJlMzA5NzZjMDExZGE3NjIzNmM0NWRkMTY4MDZiNmMzLi5mYmNiYWZjMTQ0MDc5NTYw
NjhmZTJlZjVkMzM2ZmU2MjM2NjQ0MmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NSBAQAorMjAxNi0wNi0xNiAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVtb3ZlIFJlZlB0cjo6cmVsZWFzZSgpIGFuZCBjaGFuZ2UgY2FsbHMgc2l0
ZXMgdG8gdXNlIFdURk1vdmUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU4MzY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmVmUHRyOjpyZWxlYXNlKCkgcmVsZWFzZXMgaXRzIG1hbmFnZWQgcG9pbnRl
ciBhd2t3YXJkbHkuIEl0J3MgbW9yZQorICAgICAgICBkaXJlY3QgYW5kIGNsZWFyZXIgdG8gdXNl
IFdURk1vdmUgdG8gdHJhbnNmZXIgb3duZXJzaGlwIG9mIHRoZSBtYW5hZ2VkCisgICAgICAgIHBv
aW50ZXIuCisKKyAgICAgICAgQXMgcGFydCBvZiB0aGlzIGNsZWFudXAsIGFsc28gY2hhbmdlIGEg
bG90IG9mIGV4cGxpY2l0IGRhdGEgdHlwZXMgdG8KKyAgICAgICAgJ2F1dG8nLgorCisgICAgICAg
ICogQVBJL0pTT2JqZWN0UmVmLmNwcDoKKyAgICAgICAgKEpTQ2xhc3NDcmVhdGUpOgorICAgICAg
ICAqIEFQSS9KU1NjcmlwdFJlZi5jcHA6CisgICAgICAgICogQVBJL0pTVmFsdWVSZWYuY3BwOgor
ICAgICAgICAoSlNWYWx1ZVRvU3RyaW5nQ29weSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL1N0
YXRpY1Byb3BlcnR5QW5hbHl6ZXIuaDoKKyAgICAgICAgKEpTQzo6U3RhdGljUHJvcGVydHlBbmFs
eXplcjo6bmV3T2JqZWN0KToKKyAgICAgICAgKEpTQzo6U3RhdGljUHJvcGVydHlBbmFseXplcjo6
bW92KToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHA6CisgICAgICAg
IChKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lOjppbnZhbGlkYXRlKToKKyAgICAgICAgKiBkZmcvREZH
SklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxl
KToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcDoKKyAgICAgICAgKEluc3BlY3Rv
cjo6SW5zcGVjdG9yVmFsdWU6OnBhcnNlSlNPTik6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50
OjphY3RpdmF0ZUV4dHJhRG9tYWluKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdl
bnQ6OmFjdGl2YXRlRXh0cmFEb21haW5zKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uUHJvYmUpOgorICAgICAgICAqIGluc3BlY3Rv
ci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3I6OnJlY2VpdmVkU2V0dXBNZXNzYWdlKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5j
cHA6CisgICAgICAgIChKU0M6OmxpbmtQb2x5bW9ycGhpY0NhbGwpOgorICAgICAgICAqIHJ1bnRp
bWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgICog
cnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25z
dHJ1Y3RBcnJheUJ1ZmZlcik6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5o
OgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU5hbWVBcnJheTo6cmVsZWFzZURhdGEpOgorICAgICAg
ICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b1N0
cnVjdHVyZVNoYXBlKToKKyAgICAgICAgKiBydW50aW1lL1R5cGVTZXQuY3BwOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmVTaGFwZTo6bWVyZ2UpOgorICAgICAgICAqIHRvb2xzL0Z1bmN0aW9uT3Zl
cnJpZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6ZU92ZXJyaWRlSW5mbyk6CisKIDIw
MTYtMDYtMTYgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBj
b2xsZWN0aW5nIG9mIExMSU5UIHNsb3cgcGF0aCBzdGF0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhYjQ3NDBh
MmU1NGZlMjRmOGNjNzI1YWU4ZGI0NzBhNTFlZDEzYWM4Li42Y2ZjMTZkZWEzNzRkZjNhNTc4Nzc5
ZGU0ODdkNjZkNjRlNDYyY2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIwIEBACisyMDE2LTA2
LTE2ICBLZWl0aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUg
UmVmUHRyOjpyZWxlYXNlKCkgYW5kIGNoYW5nZSBjYWxscyBzaXRlcyB0byB1c2UgV1RGTW92ZSgp
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgzNjkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZQdHI6
OnJlbGVhc2UoKSByZWxlYXNlcyBpdHMgbWFuYWdlZCBwb2ludGVyIGF3a3dhcmRseS4gSXQncyBt
b3JlCisgICAgICAgIGRpcmVjdCBhbmQgY2xlYXJlciB0byB1c2UgV1RGTW92ZSB0byB0cmFuc2Zl
ciBvd25lcnNoaXAgb2YgdGhlIG1hbmFnZWQKKyAgICAgICAgcG9pbnRlci4KKworICAgICAgICBB
cyBwYXJ0IG9mIHRoaXMgY2xlYW51cCwgYWxzbyBjaGFuZ2UgYSBsb3Qgb2YgZXhwbGljaXQgZGF0
YSB0eXBlcyB0bworICAgICAgICAnYXV0bycuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzOiB0aGVy
ZSdzIG5vIG5ldyBmdW5jdGlvbmFsaXR5LCBqdXN0IGEgcmVmYWN0b3Jpbmcgb2YKKyAgICAgICAg
ZXhpc3RpbmcgY29kZS4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVm
ZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZVNhbXBsZXNGcm9tVHJhY2tCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpwcm92aWRlTWVkaWFEYXRhKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6c3RhcnQpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6On5E
YXRhYmFzZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxDYWxsYmFja1dyYXBw
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTENhbGxiYWNrV3JhcHBlcjo6Y2xlYXIpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmhhbmRsZVBvc3RNZXNzYWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hpc3RvcnlD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIaXN0b3J5OjpwdXNoU3RhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNIaXN0b3J5OjpyZXBsYWNlU3RhdGUpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZVBv
c3RNZXNzYWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFu
Y2VGb3JXaWRnZXQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZFRlcm1pbmFs
KToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmNvcHlQcm9wZXJ0aWVzSW5TZXQp
OgorICAgICAgICAqIGNzcy9TVkdDU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyOjpwYXJzZVNWR1ZhbHVlKToKKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ29udmVy
dGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRT
aGFwZVZhbHVlKToKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlUHJvcGVydGllczo6Y29weVByb3BlcnRpZXNJblNldCk6CisgICAgICAg
ICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZl
cjo6bG9hZFBlbmRpbmdJbWFnZXMpOgorICAgICAgICAqIGRvbS9JbmxpbmVTdHlsZVNoZWV0T3du
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lU3R5bGVTaGVldE93bmVyOjpjbGVhclNo
ZWV0KToKKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjphcHBseUlubGluZVN0eWxlVG9Ob2RlUmFuZ2Up
OgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlbW92ZUNoaWxkcmVuSW5SYW5nZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVtb3ZlTm9kZUFuZFBydW5l
QW5jZXN0b3JzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjpwcnVu
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVwbGFjZVNlbGVj
dGVkVGV4dEluTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6
cmViYWxhbmNlV2hpdGVzcGFjZU9uVGV4dFN1YnN0cmluZyk6CisgICAgICAgICogZWRpdGluZy9D
cmVhdGVMaW5rQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcmVhdGVMaW5rQ29tbWFu
ZDo6ZG9BcHBseSk6CisgICAgICAgICogZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjptZXJnZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRpbmdTdHlsZTo6bWVyZ2VTdHlsZUZyb21SdWxlc0ZvclNlcmlhbGl6YXRpb24pOgorICAg
ICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsZWFyVGV4dENv
bW1hbmQ6OkNyZWF0ZUFuZEFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya0Fs
bE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyk6CisgICAgICAgICogZWRpdGluZy9F
ZGl0b3JDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVJbnNlcnROb2RlKToK
KyAgICAgICAgKiBlZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc2VydFRleHRDb21tYW5kOjpwZXJmb3JtT3ZlcndyaXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc2VydFRleHRDb21tYW5kOjppbnNlcnRUYWIpOgorICAgICAgICAqIGVkaXRpbmcvUmVt
b3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICAq
IGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVwbGFjZW1lbnRGcmFnbWVudDo6cmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6bW92ZU5vZGVPdXRPZkFuY2Vz
dG9yKToKKyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0
ZSk6CisgICAgICAgICogaHRtbC9IVE1MRm9udEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEZvbnRFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUp
OgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxGb3JtRWxlbWVudDo6cHJlcGFyZUZvclN1Ym1pc3Npb24pOgorICAgICAgICAqIGh0bWwv
SFRNTFRhYmxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsZWFrQm9yZGVyU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6bGVha0dyb3VwQm9yZGVyU3R5bGUpOgorICAgICAgICAqIGh0
bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RG9jdW1lbnRQYXJzZXI6OnJ1blNjcmlwdHNGb3JQYXVzZWRUcmVlQnVpbGRlcik6CisgICAgICAg
ICogaHRtbC90cmFjay9JbmJhbmREYXRhVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkluYmFuZERhdGFUZXh0VHJhY2s6OmFkZERhdGFDdWUpOgorICAgICAgICAqIGh0bWwvdHJhY2sv
SW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5l
cmljVGV4dFRyYWNrOjpuZXdDdWVzUGFyc2VkKToKKyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFu
ZFdlYlZUVFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRXZWJWVFRUZXh0
VHJhY2s6Om5ld0N1ZXNQYXJzZWQpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3Vl
TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVMaXN0OjphZGQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0SW5saW5lU3R5bGVzRm9yTm9kZSk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRPTUFnZW50OjpwdXNoQ2hpbGROb2Rlc1RvRnJvbnRlbmQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3Rvck5ldHdvcmtBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3
b3JrQWdlbnQ6OmxvYWRSZXNvdXJjZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0
eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6YnVp
bGRPYmplY3RGb3JTZWxlY3Rvckxpc3QpOgorICAgICAgICAqIGxvYWRlci9Gb3JtU3VibWlzc2lv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtU3VibWlzc2lvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OmxvYWRVUkxJbnRvQ2hpbGRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6bG9hZFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1
ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlByb2dyZXNzVHJhY2tlcjo6ZmluYWxQcm9ncmVzc0NvbXBsZXRlKToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlzYXNzb2NpYXRlRG9jdW1lbnRMb2FkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2Fk
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2hlY2tJZkxv
YWRJc0NvbXBsZXRlKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OmxvYWRDYWNoZUdyb3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpjYWNoZUdyb3VwRm9yVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlOjpmYWxsYmFja0NhY2hlR3JvdXBGb3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSk6CisgICAgICAgICogbG9hZGVyL2Fy
Y2hpdmUvQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
cmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOjpwb3BTdWJmcmFtZUFyY2hpdmUpOgorICAgICAgICAq
IGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lX
ZWJBcmNoaXZlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6
Y3JlYXRlRnJvbVNlbGVjdGlvbik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjcmVhdGVJbWFnZSk6CisgICAg
ICAgICogbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklj
b25EYXRhYmFzZTo6c2V0SWNvbkRhdGFGb3JJY29uVVJMKToKKyAgICAgICAgKFdlYkNvcmU6Oklj
b25EYXRhYmFzZTo6Z2V0T3JDcmVhdGVJY29uUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6Oklj
b25EYXRhYmFzZTo6cmVhZEZyb21EYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0
YWJhc2U6OmdldEltYWdlRGF0YUZvckljb25VUkxGcm9tU1FMRGF0YWJhc2UpOgorICAgICAgICAq
IHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6c2Vzc2lv
blN0b3JhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpsb2NhbFN0b3JhZ2UpOgor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3ApOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0Nv
bXBvc2l0ZUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVBbmltYXRp
b246OnVwZGF0ZVRyYW5zaXRpb25zKToKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5Ojpy
ZXBvcnRWaW9sYXRpb24pOgorICAgICAgICAqIHBhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRy
b2xsZXIubW06CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpj
cmVhdGVPdmVybGF5SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNPdmVybGF5
Q29udHJvbGxlcjo6ZGV0ZXJtaW5lQWN0aXZlSGlnaGxpZ2h0KToKKyAgICAgICAgKiBwYWdlL3Nj
cm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpB
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZWxlYXNlU2Nyb2xsaW5nVHJlZSk6CisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6Y2xvbmVBbmRSZXNldCk6CisgICAgICAgICogcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGluZ1N0YXRlVHJlZTo6YXR0YWNoTm9kZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJU
RkVsZXZhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRDb25jYXRlbmF0ZWRJbXB1bHNl
UmVzcG9uc2VzRm9yU3ViamVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxh
eVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVm
cmVzaE1vbml0b3JNYW5hZ2VyOjpjcmVhdGVNb25pdG9yRm9yQ2xpZW50KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRDYXNjYWRlRm9udHM6OmdseXBoRGF0YUZvclN5c3RlbUZhbGxiYWNrKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Ri5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9j
ZXNzQXR0cmlidXRlZFN0cmluZ3MpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9NZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDOjp1cGRhdGVPcHRpb25zKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpw
cm9jZXNzQ29kZWRGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhp
Y3NMYXllckNBLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNB
TGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpjcmVhdGVDb21w
YXRpYmxlTGF5ZXJPclRha2VGcm9tUG9vbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJE
YXRhOjpnZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ckVmZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmFzVW5tdWx0aXBs
aWVkSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojphc1ByZW11bHRpcGxp
ZWRJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUZvckN1cnJl
bnRHTENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50
UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjpjcmVhdGVNZWRpYVN0cmVhbSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6dmFsaWRh
dGVSZXF1ZXN0Q29uc3RyYWludHMpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXI6OmNyZWF0ZU1lZGlhU3RyZWFtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlZ2lz
dHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZWdpc3Ry
eUltcGw6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1D
Rk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmb3JtQ3JlYXRlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpZGlDb250ZXh0
Ojpjb3B5U3RhY2tSZW1vdmluZ1VuaWNvZGVFbWJlZGRpbmdDb250ZXh0cyk6CisgICAgICAgICog
cmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZp
bHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjcmVhdGVTY3JvbGxiYXIp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxpc3RCb3g6OmNyZWF0ZVNjcm9sbGJhcik6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlck1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFJlbmRlck1lbnVMaXN0OjpjcmVhdGVTY3Jv
bGxiYXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTZWFyY2hGaWVsZDo6Y3JlYXRlU2Nyb2xsYmFyKToKKyAgICAg
ICAgKiByZXBsYXkvUmVwbGF5Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXBs
YXlDb250cm9sbGVyOjp1bmxvYWRTZWdtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRkVEaWZmdXNl
TGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1l
bnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdMaXN0UHJvcGVydHkuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3RQcm9wZXJ0eTo6Z2V0SXRlbVZhbHVlc0FuZFdyYXBw
ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3RQcm9wZXJ0eTo6aW5zZXJ0SXRlbUJlZm9y
ZVZhbHVlc0FuZFdyYXBwZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3RQcm9wZXJ0eTo6
cmVtb3ZlSXRlbVZhbHVlc0FuZFdyYXBwZXJzKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclRo
cmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OndvcmtlclRocmVhZCk6
CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhN
TEh0dHBSZXF1ZXN0OjppbnRlcm5hbEFib3J0KToKKyAgICAgICAgKiB4bWwvWFBhdGhTdGVwLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpTdGVwOjpub2Rlc0luQXhpcyk6CisKIDIwMTYt
MDYtMTYgIEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24uY29tPgogCiAg
ICAgICAgIFdlYlJUQzogQ2hlY2sgdHlwZSBvZiB0aGlzIGluIFJUQ1BlZXJDb25uZWN0aW9uIEpT
IGJ1aWx0LWluIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2MjgyYWMwMDYxMWMwODRmMTEyNDI4YzMw
NjVlYzZlZDMwOGUyZDMxLi4yOWJiZjg3ZDMyNDVjYTQ4NGQ2ZTY5YzhkODBkNDY0ZmE1NDY4OWM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE2LTA2LTE2ICBLZWl0aCBSb2xsaW4gIDxr
cm9sbGluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgUmVmUHRyOjpyZWxlYXNlKCkgYW5k
IGNoYW5nZSBjYWxscyBzaXRlcyB0byB1c2UgV1RGTW92ZSgpCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgzNjkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZQdHI6OnJlbGVhc2UoKSByZWxlYXNlcyBp
dHMgbWFuYWdlZCBwb2ludGVyIGF3a3dhcmRseS4gSXQncyBtb3JlCisgICAgICAgIGRpcmVjdCBh
bmQgY2xlYXJlciB0byB1c2UgV1RGTW92ZSB0byB0cmFuc2ZlciBvd25lcnNoaXAgb2YgdGhlIG1h
bmFnZWQKKyAgICAgICAgcG9pbnRlci4KKworICAgICAgICBBcyBwYXJ0IG9mIHRoaXMgY2xlYW51
cCwgYWxzbyBjaGFuZ2UgYSBsb3Qgb2YgZXhwbGljaXQgZGF0YSB0eXBlcyB0bworICAgICAgICAn
YXV0bycuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdG9yYWdlQXJlYUltcGw6OnNldEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6
U3RvcmFnZUFyZWFJbXBsOjpyZW1vdmVJdGVtKToKKwogMjAxNi0wNi0xMyAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBXZWJTb2NrZXRQ
cm92aWRlciBzdHViCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggNzU3ZDJhMDQyMzU3NmQ4NDEzNDgyYTc1
YjM1ZTA4ZGM2OTlmMmU1Mi4uYjRhMjMxMmY4Y2JlZTAwYjExNzk2YWU3OWZkYjRmNTFiM2JlYmJk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE2LTA2LTE2ICBLZWl0aCBS
b2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgUmVmUHRyOjpyZWxl
YXNlKCkgYW5kIGNoYW5nZSBjYWxscyBzaXRlcyB0byB1c2UgV1RGTW92ZSgpCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgzNjkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZQdHI6OnJlbGVhc2UoKSBy
ZWxlYXNlcyBpdHMgbWFuYWdlZCBwb2ludGVyIGF3a3dhcmRseS4gSXQncyBtb3JlCisgICAgICAg
IGRpcmVjdCBhbmQgY2xlYXJlciB0byB1c2UgV1RGTW92ZSB0byB0cmFuc2ZlciBvd25lcnNoaXAg
b2YgdGhlIG1hbmFnZWQKKyAgICAgICAgcG9pbnRlci4KKworICAgICAgICBBcyBwYXJ0IG9mIHRo
aXMgY2xlYW51cCwgYWxzbyBjaGFuZ2UgYSBsb3Qgb2YgZXhwbGljaXQgZGF0YSB0eXBlcyB0bwor
ICAgICAgICAnYXV0bycuCisKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdp
bkhvc3RNYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkhvc3RNYW5h
Z2VyOjppbnN0YW50aWF0ZVBsdWdpbik6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHk6OmRlbWFyc2hhbFZhbHVlRnJvbUFycmF5KToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKC1bV2ViRnJh
bWVQb2xpY3lMaXN0ZW5lciByZWNlaXZlZFBvbGljeURlY2lzaW9uOl0pOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tOgorICAgICAgICAoLVtXZWJTZWN1cml0
eU9yaWdpbiBpbml0V2l0aFVSTDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkFyY2hpdmUubW06
CisgICAgICAgICgtW1dlYkFyY2hpdmUgaW5pdFdpdGhNYWluUmVzb3VyY2U6c3VicmVzb3VyY2Vz
OnN1YmZyYW1lQXJjaGl2ZXM6XSk6CisgICAgICAgICgtW1dlYkFyY2hpdmUgaW5pdFdpdGhEYXRh
Ol0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbToKKyAgICAgICAgKC1bV2Vi
RGF0YVNvdXJjZSBtYWluUmVzb3VyY2VdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1t
OgorICAgICAgICAoLVtXZWJGcmFtZSBfZG9jdW1lbnRGcmFnbWVudFdpdGhOb2Rlc0FzUGFyYWdy
YXBoczpdKToKKwogMjAxNi0wNi0xNSAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNv
bT4KIAogICAgICAgICArW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBzdXBwb3J0ZWRNSU1FVHlwZXNd
IGxlYWtzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggZGZiY2M5Y2Y2NzYzMDhhZGI1YjhhZTcyMjQ3YWY0MWQ0M2Rk
NmM1Ni4uNDIxMGZhNWVmNDBmMjUwNzM1ZWJhNThkMGJkZjgyYjhiZjM2NWNmMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI1MSBAQAorMjAxNi0wNi0xNiAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFJlZlB0cjo6cmVsZWFzZSgpIGFuZCBjaGFuZ2Ug
Y2FsbHMgc2l0ZXMgdG8gdXNlIFdURk1vdmUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MzY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmVmUHRyOjpyZWxlYXNlKCkgcmVsZWFzZXMgaXRzIG1hbmFn
ZWQgcG9pbnRlciBhd2t3YXJkbHkuIEl0J3MgbW9yZQorICAgICAgICBkaXJlY3QgYW5kIGNsZWFy
ZXIgdG8gdXNlIFdURk1vdmUgdG8gdHJhbnNmZXIgb3duZXJzaGlwIG9mIHRoZSBtYW5hZ2VkCisg
ICAgICAgIHBvaW50ZXIuCisKKyAgICAgICAgQXMgcGFydCBvZiB0aGlzIGNsZWFudXAsIGFsc28g
Y2hhbmdlIGEgbG90IG9mIGV4cGxpY2l0IGRhdGEgdHlwZXMgdG8KKyAgICAgICAgJ2F1dG8nLgor
CisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzczo6Y3JlYXRlRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25u
ZWN0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6Omlu
aXRpYWxpemVTaGFyZWFibGVSZXNvdXJjZUhhbmRsZUZyb21TdG9yYWdlUmVjb3JkKToKKyAgICAg
ICAgKiBQbGF0Zm9ybS9tYWMvU2hhcmVkTWVtb3J5TWFjLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
U2hhcmVkTWVtb3J5OjphbGxvY2F0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5OjptYXApOgorICAgICAgICAq
IFBsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdp
blByb2Nlc3M6OmNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKiBTaGFyZWQv
QVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW06CisgICAgICAgIChlbmNvZGVUb09iamVj
dFN0cmVhbSk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLSW1hZ2UuY3BwOgorICAgICAgICAo
V0tJbWFnZUNyZWF0ZSk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLTnVtYmVyLmNwcDoKKyAg
ICAgICAgKFdLQm9vbGVhbkNyZWF0ZSk6CisgICAgICAgIChXS0RvdWJsZUNyZWF0ZSk6CisgICAg
ICAgIChXS1VJbnQ2NENyZWF0ZSk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLU2VjdXJpdHlP
cmlnaW5SZWYuY3BwOgorICAgICAgICAoV0tTZWN1cml0eU9yaWdpbkNyZWF0ZSk6CisgICAgICAg
ICogU2hhcmVkL0FQSS9jL1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdL
U2VyaWFsaXplZFNjcmlwdFZhbHVlQ3JlYXRlKToKKyAgICAgICAgKFdLU2VyaWFsaXplZFNjcmlw
dFZhbHVlQ3JlYXRlV2l0aEludGVybmFsUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFNoYXJl
ZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwOgorICAgICAgICAoV0tJbWFnZUNyZWF0ZUZy
b21DYWlyb1N1cmZhY2UpOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3Bw
OgorICAgICAgICAoV0tJbWFnZUNyZWF0ZUZyb21DR0ltYWdlKToKKyAgICAgICAgKiBTaGFyZWQv
QVBJL2MvbWFjL1dLQ2VydGlmaWNhdGVJbmZvTWFjLm1tOgorICAgICAgICAoV0tDZXJ0aWZpY2F0
ZUluZm9DcmVhdGVXaXRoQ2VydGZpY2F0ZUNoYWluKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2Mv
bWFjL1dLT2JqQ1R5cGVXcmFwcGVyUmVmLm1tOgorICAgICAgICAoV0tPYmpDVHlwZVdyYXBwZXJD
cmVhdGUpOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9tYWMvV0tXZWJBcmNoaXZlLmNwcDoKKyAg
ICAgICAgKFdLV2ViQXJjaGl2ZUNyZWF0ZSk6CisgICAgICAgIChXS1dlYkFyY2hpdmVDcmVhdGVX
aXRoRGF0YSk6CisgICAgICAgIChXS1dlYkFyY2hpdmVDcmVhdGVGcm9tUmFuZ2UpOgorICAgICAg
ICAoV0tXZWJBcmNoaXZlQ29weU1haW5SZXNvdXJjZSk6CisgICAgICAgIChXS1dlYkFyY2hpdmVD
b3B5U3VicmVzb3VyY2VzKToKKyAgICAgICAgKFdLV2ViQXJjaGl2ZUNvcHlTdWJmcmFtZUFyY2hp
dmVzKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvbWFjL1dLV2ViQXJjaGl2ZVJlc291cmNlLmNw
cDoKKyAgICAgICAgKFdLV2ViQXJjaGl2ZVJlc291cmNlQ3JlYXRlKToKKyAgICAgICAgKiBTaGFy
ZWQvQVBJV2ViQXJjaGl2ZS5tbToKKyAgICAgICAgKEFQSTo6V2ViQXJjaGl2ZTo6V2ViQXJjaGl2
ZSk6CisgICAgICAgICogU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1
bGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0T3JDcmVh
dGUpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZSk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJs
ZVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6Om1hcCk6
CisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHA6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+OjpkZWNvZGUpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9Db29yZGluYXRlZEdyYXBoaWNzL1dLVmlldy5jcHA6CisgICAgICAgIChXS1ZpZXdD
cmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0JhdHRlcnlTdGF0dXMuY3BwOgor
ICAgICAgICAoV0tCYXR0ZXJ5U3RhdHVzQ3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tHZW9sb2NhdGlvblBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdLR2VvbG9jYXRpb25Qb3Np
dGlvbkNyZWF0ZV9iKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tHcmFtbWFyRGV0YWls
LmNwcDoKKyAgICAgICAgKFdLR3JhbW1hckRldGFpbENyZWF0ZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VDb3B5U2Vzc2lvblN0YXRlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwOgorICAgICAgICAoV0tQ
YWdlR3JvdXBDcmVhdGVXaXRoSWRlbnRpZmllcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV0tQcmVmZXJlbmNlc0NyZWF0ZSk6CisgICAg
ICAgIChXS1ByZWZlcmVuY2VzQ3JlYXRlV2l0aElkZW50aWZpZXIpOgorICAgICAgICAoV0tQcmVm
ZXJlbmNlc0NyZWF0ZUNvcHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1Nlc3Npb25S
ZWYuY3BwOgorICAgICAgICAoV0tTZXNzaW9uQ3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tTZXNzaW9uU3RhdGVSZWYuY3BwOgorICAgICAgICAoV0tTZXNzaW9uU3RhdGVDb3B5
RGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFj
Lm1tOgorICAgICAgICAoV0tDb250ZXh0Q29weVBsdWdJbkluZm9Gb3JCdW5kbGVJZGVudGlmaWVy
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IGxvYWRSZXF1ZXN0Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgbG9hZEZp
bGVVUkw6YWxsb3dpbmdSZWFkQWNjZXNzVG9VUkw6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBs
b2FkRGF0YTpNSU1FVHlwZTpjaGFyYWN0ZXJFbmNvZGluZ05hbWU6YmFzZVVSTDpdKToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IGdvVG9CYWNrRm9yd2FyZExpc3RJdGVtOl0pOgorICAgICAgICAoLVtX
S1dlYlZpZXcgZ29CYWNrXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBnb0ZvcndhcmRdKToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IHJlbG9hZF0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgcmVsb2Fk
RnJvbU9yaWdpbl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2xvYWREYXRhOk1JTUVUeXBlOmNo
YXJhY3RlckVuY29kaW5nTmFtZTpiYXNlVVJMOnVzZXJEYXRhOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX3JlbG9hZFdpdGhvdXRDb250ZW50QmxvY2tlcnNdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF9zZXNzaW9uU3RhdGVEYXRhXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVzdG9yZVNl
c3Npb25TdGF0ZTphbmROYXZpZ2F0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfZGF0YWJhc2VfbWFuYWdlci5jcHA6CisgICAgICAgIChFd2tEYXRhYmFzZU1hbmFnZXI6OmNy
ZWF0ZU9yaWdpbkxpc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19zdG9yYWdl
X21hbmFnZXIuY3BwOgorICAgICAgICAoRXdrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZU9yaWdpbkxp
c3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOgorICAg
ICAgICAod2Via2l0V2ViVmlld0NyZWF0ZU5ld1BhZ2UpOgorICAgICAgICAod2Via2l0V2ViVmll
d1ByaW50RnJhbWUpOgorICAgICAgICAoZ2V0Q29udGVudHNBc01IVE1MRGF0YUNhbGxiYWNrKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvU2Vzc2lvblN0YXRlQ29kaW5nLm1tOgorICAgICAg
ICAoV2ViS2l0OjplbmNvZGVTZXNzaW9uU3RhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9HZW5l
cmljQ2FsbGJhY2suaDoKKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tNYXA6OnRha2UpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eTo6Y3JlYXRlUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eTo6Y3JlYXRlUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJvY2Vzc01hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNz
TWFuYWdlcjo6Z2V0T3JDcmVhdGVQbHVnaW5Qcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
U3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5h
Z2VyOjpTdG9yYWdlQXJlYTo6c2V0SXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5h
Z2VyOjpTdG9yYWdlQXJlYTo6cmVtb3ZlSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VN
YW5hZ2VyOjpjcmVhdGVMb2NhbFN0b3JhZ2VNYXApOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJC
YWNrRm9yd2FyZExpc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6
OmFkZEl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6OmNsZWFyKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENvb2tpZUFj
Y2VwdFBvbGljeSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5zdGFsbFZpZXdTdGF0ZUNoYW5nZUNvbXBsZXRp
b25IYW5kbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcmVmZXJlbmNlczo6Y3JlYXRlV2l0aExlZ2FjeURlZmF1bHRzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJlZmVyZW5jZXM6OmNvcHkpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
Ojp+V2ViUHJvY2Vzc1Bvb2wpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90
U3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdFN0b3JlOjpyZWNvcmRTbmFw
c2hvdCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xs
ZXIubW06CisgICAgICAgICgtW1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciBfd2ViSGl0VGVz
dFJlc3VsdF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcubW06Cisg
ICAgICAgICgtW1dLUHJpbnRpbmdWaWV3IF9hc2tQYWdlVG9Db21wdXRlUGFnZVJlY3RzXSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2V0RHJhZ0ltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5tbToKKyAgICAg
ICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUgaGl0VGVzdDpdKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0
UmVzdWx0Lm1tOgorICAgICAgICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0IG5v
ZGVIYW5kbGVdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2Nv
YS9XS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tOgorICAgICAgICAoK1tXS1dlYlByb2Nl
c3NQbHVnSW5Ob2RlSGFuZGxlIG5vZGVIYW5kbGVXaXRoSlNWYWx1ZTppbkNvbnRleHQ6XSk6Cisg
ICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUgaHRtbElGcmFtZUVsZW1lbnRD
b250ZW50RnJhbWVdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9D
b2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZC5tbToKKyAgICAgICAgKCtbV0tXZWJQ
cm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgd29ybGRdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUG9zdFN5
bmNocm9ub3VzTWVzc2FnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5jcHA6CisgICAgICAgIChXS0J1bmRsZURP
TVdpbmRvd0V4dGVuc2lvbkNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZUhpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV0tCdW5kbGVI
aXRUZXN0UmVzdWx0Q29weU5vZGVIYW5kbGUpOgorICAgICAgICAoV0tCdW5kbGVIaXRUZXN0UmVz
dWx0Q29weVVSTEVsZW1lbnRIYW5kbGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcDoKKyAgICAgICAgKFdLQnVu
ZGxlTmF2aWdhdGlvbkFjdGlvbkNvcHlIaXRUZXN0UmVzdWx0KToKKyAgICAgICAgKFdLQnVuZGxl
TmF2aWdhdGlvbkFjdGlvbkNvcHlGb3JtRWxlbWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5vZGVIYW5kbGUuY3BwOgorICAgICAgICAoV0tC
dW5kbGVOb2RlSGFuZGxlQ3JlYXRlKToKKyAgICAgICAgKFdLQnVuZGxlTm9kZUhhbmRsZUNvcHlE
b2N1bWVudCk6CisgICAgICAgIChXS0J1bmRsZU5vZGVIYW5kbGVDb3B5U25hcHNob3RXaXRoT3B0
aW9ucyk6CisgICAgICAgIChXS0J1bmRsZU5vZGVIYW5kbGVDb3B5VmlzaWJsZVJhbmdlKToKKyAg
ICAgICAgKFdLQnVuZGxlTm9kZUhhbmRsZUNvcHlIVE1MVGFibGVDZWxsRWxlbWVudENlbGxBYm92
ZSk6CisgICAgICAgIChXS0J1bmRsZU5vZGVIYW5kbGVDb3B5RG9jdW1lbnRGcmFtZSk6CisgICAg
ICAgIChXS0J1bmRsZU5vZGVIYW5kbGVDb3B5SFRNTEZyYW1lRWxlbWVudENvbnRlbnRGcmFtZSk6
CisgICAgICAgIChXS0J1bmRsZU5vZGVIYW5kbGVDb3B5SFRNTElGcmFtZUVsZW1lbnRDb250ZW50
RnJhbWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVQYWdlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUGFnZUNyZWF0ZVNuYXBzaG90V2l0aE9wdGlv
bnMpOgorICAgICAgICAoV0tCdW5kbGVQYWdlQ3JlYXRlU25hcHNob3RJblZpZXdDb29yZGluYXRl
cyk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VDcmVhdGVTbmFwc2hvdEluRG9jdW1lbnRDb29yZGlu
YXRlcyk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VDcmVhdGVTY2FsZWRTbmFwc2hvdEluRG9jdW1l
bnRDb29yZGluYXRlcyk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNz
YWdlRm9yVGVzdGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZVJhbmdlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUmFuZ2VIYW5kbGVD
cmVhdGUpOgorICAgICAgICAoV0tCdW5kbGVSYW5nZUhhbmRsZUNvcHlTbmFwc2hvdFdpdGhPcHRp
b25zKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
U2NyaXB0V29ybGQuY3BwOgorICAgICAgICAoV0tCdW5kbGVTY3JpcHRXb3JsZENyZWF0ZVdvcmxk
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Ob2Rl
Lm1tOgorICAgICAgICAoLVtXS0RPTU5vZGUgX2NvcHlCdW5kbGVOb2RlSGFuZGxlUmVmXSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW06
CisgICAgICAgICgtW1dLRE9NUmFuZ2UgX2NvcHlCdW5kbGVSYW5nZUhhbmRsZVJlZl0pOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5
bGVEZWNsYXJhdGlvbkhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxl
Q1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZTo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OmltYWdlRm9yUmVjdCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVk
QnVuZGxlTm9kZUhhbmRsZTo6cmVuZGVyZWRJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmdldE9yQ3JlYXRlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0c2NhcGVQbHVnaW46OmxvYWRVUkwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvRGVwcmVjYXRlZFBERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpj
cmVhdGVTY3JvbGxiYXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlQXJl
YU1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjphcHBseUNoYW5nZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJz
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6dG9Gb3JtRGF0YSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6cmVjcmVhdGVQbHVnaW4pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVOZXR3b3JraW5nQ29udGV4
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JDbGllbnQ6OmhpZ2hsaWdodCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1h
Yy5tbToKKyAgICAgICAgKFdlYktpdDo6Y29udmVydEltYWdlVG9CaXRtYXApOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kVUlBZnRlclBhZ2VTY3JvbGwpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyOjpnZXRPckNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyOjpzZXRWaXNpdGVkTGlu
a1RhYmxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6Y3JlYXRlV2l0aENvcmVNYWluRnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJGcmFtZTo6Y3JlYXRlU3ViZnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGcmFtZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNyZWF0ZVNlbGVj
dGlvblNuYXBzaG90KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNyZWF0ZVBsdWdpbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnNuYXBzaG90QXRTaXplKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
c25hcHNob3ROb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6d2lsbFBlcmZvcm1Mb2Fk
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6U2FuZGJv
eEV4dGVuc2lvblRyYWNrZXI6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6U2FuZGJveEV4dGVuc2lvblRyYWNrZXI6OmRpZENvbW1pdFByb3Zpc2lv
bmFsTG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZUdyb3VwUHJveHk6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tOgorICAgICAgICAo
V2ViS2l0OjpQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpQcm9wZXJ0aWVzOjpkZWNvZGUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNsb25lKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbToKKyAg
ICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OmNsb25lKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1t
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6Y3JlYXRlRGlz
cGxheVJlZnJlc2hNb25pdG9yKToKKwogMjAxNi0wNi0xNSAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TIFdLMl0gT24gaVBhZCwgaW5kaXJlY3Qg
Zm9jdXNzaW5nIG9mIGEgdGV4dCBmaWVsZCBkb2Vzbid0IGFsd2F5cyBzY3JvbGwgdG8gdGhlIGNv
cnJlY3QgbG9jYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNP
YmplY3RSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAK
aW5kZXggMzdjZDY1NzMyMzcwMDg1MWIyNTc5ZDY0MzZiNDEzNTMzNTNlOGQyZS4uYzFkZGMzMjcx
Zjc4NTI0ZDc3MWE2NGQxYjVjZDZmZDE4OWM4OTFjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU09iamVjdFJlZi5jcHAKQEAgLTY2LDExICs2NiwxMSBAQCB1c2luZyBuYW1lc3BhY2Ug
SlNDOwogSlNDbGFzc1JlZiBKU0NsYXNzQ3JlYXRlKGNvbnN0IEpTQ2xhc3NEZWZpbml0aW9uKiBk
ZWZpbml0aW9uKQogewogICAgIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKLSAgICBSZWZQdHI8T3Bh
cXVlSlNDbGFzcz4ganNDbGFzcyA9IChkZWZpbml0aW9uLT5hdHRyaWJ1dGVzICYga0pTQ2xhc3NB
dHRyaWJ1dGVOb0F1dG9tYXRpY1Byb3RvdHlwZSkKKyAgICBhdXRvIGpzQ2xhc3MgPSAoZGVmaW5p
dGlvbi0+YXR0cmlidXRlcyAmIGtKU0NsYXNzQXR0cmlidXRlTm9BdXRvbWF0aWNQcm90b3R5cGUp
CiAgICAgICAgID8gT3BhcXVlSlNDbGFzczo6Y3JlYXRlTm9BdXRvbWF0aWNQcm90b3R5cGUoZGVm
aW5pdGlvbikKICAgICAgICAgOiBPcGFxdWVKU0NsYXNzOjpjcmVhdGUoZGVmaW5pdGlvbik7CiAg
ICAgCi0gICAgcmV0dXJuIGpzQ2xhc3MucmVsZWFzZSgpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4g
JmpzQ2xhc3MubGVha1JlZigpOwogfQogCiBKU0NsYXNzUmVmIEpTQ2xhc3NSZXRhaW4oSlNDbGFz
c1JlZiBqc0NsYXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1Nj
cmlwdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcApp
bmRleCA2MGJkZTYwNGUzNTg1MTZmMWVmNmNhYTIzZDgxMjQ4OTJjY2ZhOTU1Li44M2QxZmU2MmYx
MGEyZDA5MjkzMTBiZjM4YWVmMjYyZGJiZTJjM2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTU2NyaXB0UmVmLmNwcApAQCAtOTMsNyArOTMsNyBAQCBKU1NjcmlwdFJlZiBKU1Njcmlw
dENyZWF0ZVJlZmVyZW5jaW5nSW1tb3J0YWxBU0NJSVRleHQoSlNDb250ZXh0R3JvdXBSZWYgY29u
dGV4dAogCiAgICAgc3RhcnRpbmdMaW5lTnVtYmVyID0gc3RkOjptYXgoMSwgc3RhcnRpbmdMaW5l
TnVtYmVyKTsKIAotICAgIFJlZlB0cjxPcGFxdWVKU1NjcmlwdD4gcmVzdWx0ID0gT3BhcXVlSlNT
Y3JpcHQ6OmNyZWF0ZSh2bSwgdXJsID8gdXJsLT5zdHJpbmcoKSA6IFN0cmluZygpLCBzdGFydGlu
Z0xpbmVOdW1iZXIsIFN0cmluZyhTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbChzb3VyY2Us
IGxlbmd0aCkpKTsKKyAgICBhdXRvIHJlc3VsdCA9IE9wYXF1ZUpTU2NyaXB0OjpjcmVhdGUodm0s
IHVybCA/IHVybC0+c3RyaW5nKCkgOiBTdHJpbmcoKSwgc3RhcnRpbmdMaW5lTnVtYmVyLCBTdHJp
bmcoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoc291cmNlLCBsZW5ndGgpKSk7CiAKICAg
ICBQYXJzZXJFcnJvciBlcnJvcjsKICAgICBpZiAoIXBhcnNlU2NyaXB0KHZtLCBTb3VyY2VDb2Rl
KHJlc3VsdCksIGVycm9yKSkgewpAQCAtMTA0LDcgKzEwNCw3IEBAIEpTU2NyaXB0UmVmIEpTU2Ny
aXB0Q3JlYXRlUmVmZXJlbmNpbmdJbW1vcnRhbEFTQ0lJVGV4dChKU0NvbnRleHRHcm91cFJlZiBj
b250ZXh0CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiByZXN1
bHQucmVsZWFzZSgpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gcmVzdWx0LmxlYWtSZWYoKTsKIH0K
IAogSlNTY3JpcHRSZWYgSlNTY3JpcHRDcmVhdGVGcm9tU3RyaW5nKEpTQ29udGV4dEdyb3VwUmVm
IGNvbnRleHRHcm91cCwgSlNTdHJpbmdSZWYgdXJsLCBpbnQgc3RhcnRpbmdMaW5lTnVtYmVyLCBK
U1N0cmluZ1JlZiBzb3VyY2UsIEpTU3RyaW5nUmVmKiBlcnJvck1lc3NhZ2UsIGludCogZXJyb3JM
aW5lKQpAQCAtMTE0LDcgKzExNCw3IEBAIEpTU2NyaXB0UmVmIEpTU2NyaXB0Q3JlYXRlRnJvbVN0
cmluZyhKU0NvbnRleHRHcm91cFJlZiBjb250ZXh0R3JvdXAsIEpTU3RyaW5nUmVmCiAKICAgICBz
dGFydGluZ0xpbmVOdW1iZXIgPSBzdGQ6Om1heCgxLCBzdGFydGluZ0xpbmVOdW1iZXIpOwogCi0g
ICAgUmVmUHRyPE9wYXF1ZUpTU2NyaXB0PiByZXN1bHQgPSBPcGFxdWVKU1NjcmlwdDo6Y3JlYXRl
KHZtLCB1cmwgPyB1cmwtPnN0cmluZygpIDogU3RyaW5nKCksIHN0YXJ0aW5nTGluZU51bWJlciwg
c291cmNlLT5zdHJpbmcoKSk7CisgICAgYXV0byByZXN1bHQgPSBPcGFxdWVKU1NjcmlwdDo6Y3Jl
YXRlKHZtLCB1cmwgPyB1cmwtPnN0cmluZygpIDogU3RyaW5nKCksIHN0YXJ0aW5nTGluZU51bWJl
ciwgc291cmNlLT5zdHJpbmcoKSk7CiAKICAgICBQYXJzZXJFcnJvciBlcnJvcjsKICAgICBpZiAo
IXBhcnNlU2NyaXB0KHZtLCBTb3VyY2VDb2RlKHJlc3VsdCksIGVycm9yKSkgewpAQCAtMTI1LDcg
KzEyNSw3IEBAIEpTU2NyaXB0UmVmIEpTU2NyaXB0Q3JlYXRlRnJvbVN0cmluZyhKU0NvbnRleHRH
cm91cFJlZiBjb250ZXh0R3JvdXAsIEpTU3RyaW5nUmVmCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIAotICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpLmxlYWtSZWYoKTsKKyAgICBy
ZXR1cm4gcmVzdWx0LmxlYWtSZWYoKTsKIH0KIAogdm9pZCBKU1NjcmlwdFJldGFpbihKU1Njcmlw
dFJlZiBzY3JpcHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFs
dWVSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAppbmRl
eCAwZDNiZWYwMjE5ZGJjZjFjMDc1NjViYTY0Y2YzZmUwYzYxNmE3YjViLi40Mjg0MzUwZmE3MTVj
NjVjMjI3MDcyY2ZiZTg2OWMzNzdiM2MzOWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNWYWx1ZVJlZi5jcHAKQEAgLTQwMSwxMCArNDAxLDEwIEBAIEpTU3RyaW5nUmVmIEpTVmFsdWVU
b1N0cmluZ0NvcHkoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJl
ZioKIAogICAgIEpTVmFsdWUganNWYWx1ZSA9IHRvSlMoZXhlYywgdmFsdWUpOwogICAgIAotICAg
IFJlZlB0cjxPcGFxdWVKU1N0cmluZz4gc3RyaW5nUmVmKE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUo
anNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICBhdXRvIHN0cmluZ1Jl
ZihPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKGpzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpKSk7CiAgICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKGV4ZWMsIGV4Y2VwdGlvbikg
PT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKICAgICAgICAgc3RyaW5nUmVmID0gbnVsbHB0
cjsKLSAgICByZXR1cm4gc3RyaW5nUmVmLnJlbGVhc2UoKS5sZWFrUmVmKCk7CisgICAgcmV0dXJu
IHN0cmluZ1JlZi5sZWFrUmVmKCk7CiB9CiAKIEpTT2JqZWN0UmVmIEpTVmFsdWVUb09iamVjdChK
U0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1N0YXRpY1By
b3BlcnR5QW5hbHl6ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvU3Rh
dGljUHJvcGVydHlBbmFseXplci5oCmluZGV4IGU2M2ZlZjg2YTEwN2M4ZTQ4MDhmYmIwMDAwZmQz
ZWQ1N2E4MzhhOGUuLjFlYzEyOWU4OTg1YzdhNjBlOWFhYmNlOGM3NTFjYWFhNTViN2Y2MDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvU3RhdGljUHJvcGVy
dHlBbmFseXplci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvU3Rh
dGljUHJvcGVydHlBbmFseXplci5oCkBAIC03Miw3ICs3Miw3IEBAIGlubGluZSB2b2lkIFN0YXRp
Y1Byb3BlcnR5QW5hbHl6ZXI6Om5ld09iamVjdChpbnQgZHN0LCB1bnNpZ25lZCBvZmZzZXRPZklu
bGluZUNhCiAgICAgQW5hbHlzaXNNYXA6OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBtX2FuYWx5c2Vz
LmFkZChkc3QsIGFuYWx5c2lzKTsKICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KSB7CiAg
ICAgICAgIGtpbGwoYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKSk7Ci0gICAgICAgIGFk
ZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBhbmFseXNpcy5yZWxlYXNlKCk7CisgICAgICAgIGFk
ZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBXVEZNb3ZlKGFuYWx5c2lzKTsKICAgICB9CiB9CiAK
QEAgLTk1LDcgKzk1LDcgQEAgaW5saW5lIHZvaWQgU3RhdGljUHJvcGVydHlBbmFseXplcjo6bW92
KGludCBkc3QsIGludCBzcmMpCiAgICAgQW5hbHlzaXNNYXA6OkFkZFJlc3VsdCBhZGRSZXN1bHQg
PSBtX2FuYWx5c2VzLmFkZChkc3QsIGFuYWx5c2lzKTsKICAgICBpZiAoIWFkZFJlc3VsdC5pc05l
d0VudHJ5KSB7CiAgICAgICAgIGtpbGwoYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKSk7
Ci0gICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBhbmFseXNpcy5yZWxlYXNlKCk7
CisgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBXVEZNb3ZlKGFuYWx5c2lzKTsK
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlckNhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJDYWxsRnJhbWUuY3BwCmluZGV4IGE4YzU1N2M3NDczMWYyYjZhMzMzMTc1MTYwY2EzMzQ4
ZDIxNTIyYmIuLmZiODYzNjhhMzk0OGI2ZjhlMzVhMWVkNDZiNTM4MzFhYzNiMWVkZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1l
LmNwcApAQCAtMjc4LDcgKzI3OCw3IEBAIHZvaWQgRGVidWdnZXJDYWxsRnJhbWU6OmludmFsaWRh
dGUoKQogICAgICAgICAgICAgZnJhbWUtPm1fc2NvcGUtPmludmFsaWRhdGVDaGFpbigpOwogICAg
ICAgICAgICAgZnJhbWUtPm1fc2NvcGUuY2xlYXIoKTsKICAgICAgICAgfQotICAgICAgICBmcmFt
ZSA9IGZyYW1lLT5tX2NhbGxlci5yZWxlYXNlKCk7CisgICAgICAgIGZyYW1lID0gV1RGTW92ZShm
cmFtZS0+bV9jYWxsZXIpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmNwcAppbmRleCAxN2M2YTBiODUyYTIyMWVlYTY4ODMxZTYwZDMzM2U5
MTZiOTg5YjI0Li45MDA2MzA4YTQzMTY3ZTIxNjAzMjkyZmYxOGY1NDk1ODcxMDllOGQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcApAQCAtMzgxLDcg
KzM4MSw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQogICAgIGRpc2Fzc2VtYmxlKCps
aW5rQnVmZmVyKTsKICAgICAKICAgICBtX2dyYXBoLm1fcGxhbi5maW5hbGl6ZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEpJVEZpbmFsaXplcj4oCi0gICAgICAgIG1fZ3JhcGgubV9wbGFuLCBtX2ppdENv
ZGUucmVsZWFzZSgpLCBXVEZNb3ZlKGxpbmtCdWZmZXIpKTsKKyAgICAgICAgbV9ncmFwaC5tX3Bs
YW4sIFdURk1vdmUobV9qaXRDb2RlKSwgV1RGTW92ZShsaW5rQnVmZmVyKSk7CiB9CiAKIHZvaWQg
SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCkBAIC00NzgsNyArNDc4LDcgQEAgdm9pZCBK
SVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIg
d2l0aEFyaXR5Q2hlY2sgPSBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKG1fYXJpdHlDaGVjayk7CiAK
ICAgICBtX2dyYXBoLm1fcGxhbi5maW5hbGl6ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEpJVEZpbmFs
aXplcj4oCi0gICAgICAgIG1fZ3JhcGgubV9wbGFuLCBtX2ppdENvZGUucmVsZWFzZSgpLCBXVEZN
b3ZlKGxpbmtCdWZmZXIpLCB3aXRoQXJpdHlDaGVjayk7CisgICAgICAgIG1fZ3JhcGgubV9wbGFu
LCBXVEZNb3ZlKG1faml0Q29kZSksIFdURk1vdmUobGlua0J1ZmZlciksIHdpdGhBcml0eUNoZWNr
KTsKIH0KIAogdm9pZCBKSVRDb21waWxlcjo6ZGlzYXNzZW1ibGUoTGlua0J1ZmZlciYgbGlua0J1
ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yVmFsdWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
VmFsdWVzLmNwcAppbmRleCBjNWMxMTYzNGJmNjI4MTUyNDUzNzNmMzBjNjE0NWYyZmEzOTFjMjI1
Li41Njk0OGZhMzEzZjJlNmM4ZTA5ZmFlNGQ3NWNmOTkyOTQ2OGY4MTlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCkBAIC00
NTksNyArNDU5LDcgQEAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBidWlsZFZhbHVlKGNvbnN0IFVD
aGFyKiBzdGFydCwgY29uc3QgVUNoYXIqIGVuZCwgY29uc3QgVUMKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogICAgICp2YWx1ZVRva2VuRW5kID0gdG9rZW5FbmQ7Ci0gICAgcmV0dXJu
IHJlc3VsdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogaW5saW5lIGJvb2wg
ZXNjYXBlQ2hhcihVQ2hhciBjLCBTdHJpbmdCdWlsZGVyJiBkc3QpCkBAIC01NTEsMTEgKzU1MSwx
MSBAQCBib29sIEluc3BlY3RvclZhbHVlOjpwYXJzZUpTT04oY29uc3QgU3RyaW5nJiBqc29uSW5w
dXQsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4mCiAgICAgY29uc3QgVUNoYXIqIHN0YXJ0ID0gY2hh
cmFjdGVyczsKICAgICBjb25zdCBVQ2hhciogZW5kID0gc3RhcnQgKyBqc29uSW5wdXQubGVuZ3Ro
KCk7CiAgICAgY29uc3QgVUNoYXIqIHRva2VuRW5kOwotICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1
ZT4gcmVzdWx0ID0gYnVpbGRWYWx1ZShzdGFydCwgZW5kLCAmdG9rZW5FbmQsIDApOworICAgIGF1
dG8gcmVzdWx0ID0gYnVpbGRWYWx1ZShzdGFydCwgZW5kLCAmdG9rZW5FbmQsIDApOwogICAgIGlm
ICghcmVzdWx0IHx8IHRva2VuRW5kICE9IGVuZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgb3V0cHV0ID0gcmVzdWx0LnJlbGVhc2UoKTsKKyAgICBvdXRwdXQgPSBXVEZNb3ZlKHJlc3Vs
dCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcAppbmRleCAzMTJlNWQ5
YjRiMWNmODllNzc0MGZhZDY2NTI3MjEzZDBiZTNlNDFmLi5mNjRiYWYzZDMwNzc3YmY3OTZmMzU3
NGFmYjRkODg4MWFiYWUwNTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwCkBAIC0xMjEsNyArMTIxLDcg
QEAgdm9pZCBJbnNwZWN0b3JBZ2VudDo6YWN0aXZhdGVFeHRyYURvbWFpbihjb25zdCBTdHJpbmcm
IGRvbWFpbk5hbWUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWY8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gZG9tYWluTmFtZXMgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICBhdXRvIGRvbWFpbk5hbWVzID0gSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgZG9tYWluTmFt
ZXMtPmFkZEl0ZW0oZG9tYWluTmFtZSk7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmFjdGl2
YXRlRXh0cmFEb21haW5zKFdURk1vdmUoZG9tYWluTmFtZXMpKTsKIH0KQEAgLTEzMSwxNCArMTMx
LDE0IEBAIHZvaWQgSW5zcGVjdG9yQWdlbnQ6OmFjdGl2YXRlRXh0cmFEb21haW5zKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBleHRyYURvbWFpbnMpCiAgICAgaWYgKGV4dHJhRG9tYWlucy5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxTdHJpbmc+PiBkb21haW5OYW1lcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0
cmluZz46OmNyZWF0ZSgpOworICAgIGF1dG8gZG9tYWluTmFtZXMgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKICAgICBmb3IgKGF1dG8gZG9tYWluTmFtZSA6
IGV4dHJhRG9tYWlucykKICAgICAgICAgZG9tYWluTmFtZXMtPmFkZEl0ZW0oZG9tYWluTmFtZSk7
CiAKICAgICBpZiAoIW1fZW5hYmxlZCkKLSAgICAgICAgbV9wZW5kaW5nRXh0cmFEb21haW5zRGF0
YSA9IGRvbWFpbk5hbWVzLnJlbGVhc2UoKTsKKyAgICAgICAgbV9wZW5kaW5nRXh0cmFEb21haW5z
RGF0YSA9IFdURk1vdmUoZG9tYWluTmFtZXMpOwogICAgIGVsc2UKLSAgICAgICAgbV9mcm9udGVu
ZERpc3BhdGNoZXItPmFjdGl2YXRlRXh0cmFEb21haW5zKGRvbWFpbk5hbWVzLnJlbGVhc2UoKSk7
CisgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5hY3RpdmF0ZUV4dHJhRG9tYWlucyhXVEZN
b3ZlKGRvbWFpbk5hbWVzKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50LmNwcAppbmRleCA3M2NmYjZmMzczYjJmNWQ4ZWQxYTNiMDM2NGFmMGE2OGM1NTYxZDc3Li4x
MzRlMjI0Zjc0MGE2NTAyYmYxNzIwZTQ5NjhmNTEzZjg5YjUwOWE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtNzUwLDcgKzc1MCw3IEBAIHZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvblByb2JlKEpTQzo6RXhlY1N0YXRlJiBzY3JpcHRT
dGF0ZSwKICAgICAgICAgLnNldEJhdGNoSWQoYmF0Y2hJZCkKICAgICAgICAgLnNldFNhbXBsZUlk
KHNhbXBsZUlkKQogICAgICAgICAuc2V0VGltZXN0YW1wKG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
Lmluc3BlY3RvckVudmlyb25tZW50KCkuZXhlY3V0aW9uU3RvcHdhdGNoKCktPmVsYXBzZWRUaW1l
KCkpCi0gICAgICAgIC5zZXRQYXlsb2FkKHBheWxvYWQucmVsZWFzZSgpKQorICAgICAgICAuc2V0
UGF5bG9hZChXVEZNb3ZlKHBheWxvYWQpKQogICAgICAgICAucmVsZWFzZSgpOwogICAgIG1fZnJv
bnRlbmREaXNwYXRjaGVyLT5kaWRTYW1wbGVQcm9iZShXVEZNb3ZlKHJlc3VsdCkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5z
cGVjdG9yLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3Rl
SW5zcGVjdG9yLm1tCmluZGV4IDcyYmZjNmU4NzgwZjc5OTAwOGY4MzJiZWE3Y2EzZWQ3OWVhZWEy
YWUuLmYzYWVlMWM5NzQxMTE0YWJjZjhhYjBkNjZkODdhY2JmOWVhMWNjNWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5t
bQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNw
ZWN0b3IubW0KQEAgLTYyOSw3ICs2MjksNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2
ZWRTZXR1cE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKIAogICAgIC8vIEF0dGVtcHQg
dG8gY3JlYXRlIGEgY29ubmVjdGlvbi4gVGhpcyBtYXkgZmFpbCBpZiB0aGUgcGFnZSBhbHJlYWR5
IGhhcyBhbiBpbnNwZWN0b3Igb3IgaWYgaXQgZGlzYWxsb3dzIGluc3BlY3Rpb24uCiAgICAgUmVt
b3RlQ29udHJvbGxhYmxlVGFyZ2V0KiB0YXJnZXQgPSBmaW5kUmVzdWx0LT52YWx1ZTsKLSAgICBS
ZWZQdHI8UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0PiBjb25uZWN0aW9uVG9UYXJnZXQgPSBhZG9w
dFJlZihuZXcgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0KHRhcmdldCwgY29ubmVjdGlvbklkZW50
aWZpZXIsIHNlbmRlcikpOworICAgIGF1dG8gY29ubmVjdGlvblRvVGFyZ2V0ID0gYWRvcHRSZWYo
Km5ldyBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQodGFyZ2V0LCBjb25uZWN0aW9uSWRlbnRpZmll
ciwgc2VuZGVyKSk7CiAKICAgICBpZiAoaXM8UmVtb3RlSW5zcGVjdGlvblRhcmdldD4odGFyZ2V0
KSkgewogICAgICAgICBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbiA9IG1fYXV0b21hdGljSW5z
cGVjdGlvbkNhbmRpZGF0ZVRhcmdldElkZW50aWZpZXIgPT0gdGFyZ2V0LT50YXJnZXRJZGVudGlm
aWVyKCk7CkBAIC02MzksMTQgKzYzOSwxNCBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2
ZWRTZXR1cE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKICAgICAgICAgICAgIGNvbm5l
Y3Rpb25Ub1RhcmdldC0+Y2xvc2UoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQot
ICAgICAgICBtX3RhcmdldENvbm5lY3Rpb25NYXAuc2V0KHRhcmdldElkZW50aWZpZXIsIGNvbm5l
Y3Rpb25Ub1RhcmdldC5yZWxlYXNlKCkpOworICAgICAgICBtX3RhcmdldENvbm5lY3Rpb25NYXAu
c2V0KHRhcmdldElkZW50aWZpZXIsIFdURk1vdmUoY29ubmVjdGlvblRvVGFyZ2V0KSk7CiAgICAg
ICAgIHVwZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbigpOwogICAgIH0gZWxzZSBpZiAoaXM8UmVt
b3RlQXV0b21hdGlvblRhcmdldD4odGFyZ2V0KSkgewogICAgICAgICBpZiAoIWNvbm5lY3Rpb25U
b1RhcmdldC0+c2V0dXAoKSkgewogICAgICAgICAgICAgY29ubmVjdGlvblRvVGFyZ2V0LT5jbG9z
ZSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIG1fdGFyZ2V0Q29u
bmVjdGlvbk1hcC5zZXQodGFyZ2V0SWRlbnRpZmllciwgY29ubmVjdGlvblRvVGFyZ2V0LnJlbGVh
c2UoKSk7CisgICAgICAgIG1fdGFyZ2V0Q29ubmVjdGlvbk1hcC5zZXQodGFyZ2V0SWRlbnRpZmll
ciwgV1RGTW92ZShjb25uZWN0aW9uVG9UYXJnZXQpKTsKICAgICAgICAgdXBkYXRlSGFzQWN0aXZl
RGVidWdTZXNzaW9uKCk7CiAgICAgfSBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggODI5ODQ1MzNhNjZiNzVm
N2E3YWIzZjk1OWFiMDAyNTcxNGNhMzI2NS4uMDA4OGM0ZjJiMmRkYmY2MGI4MWFkNzA4YjIyMTgz
Njc2Y2I0YzkwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC05NDMs
NyArOTQzLDcgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKAogICAgICAgICBwYXRjaEJ1ZmZl
ci5saW5rKGRvbmUsIGNhbGxMaW5rSW5mby5ob3RQYXRoT3RoZXIoKS5sYWJlbEF0T2Zmc2V0KDAp
KTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKHNsb3csIENvZGVMb2NhdGlvbkxhYmVsKHZtLT5nZXRD
VElTdHViKGxpbmtQb2x5bW9ycGhpY0NhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpKSk7CiAgICAg
Ci0gICAgUmVmUHRyPFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lPiBzdHViUm91dGluZSA9IGFk
b3B0UmVmKG5ldyBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSgKKyAgICBhdXRvIHN0dWJSb3V0
aW5lID0gYWRvcHRSZWYoKm5ldyBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSgKICAgICAgICAg
RklOQUxJWkVfQ09ERV9GT1IoCiAgICAgICAgICAgICBjYWxsZXJDb2RlQmxvY2ssIHBhdGNoQnVm
ZmVyLAogICAgICAgICAgICAgKCJQb2x5bW9ycGhpYyBjYWxsIHN0dWIgZm9yICVzLCByZXR1cm4g
cG9pbnQgJXAsIHRhcmdldHMgJXMiLApAQCAtOTYyLDcgKzk2Miw3IEBAIHZvaWQgbGlua1BvbHlt
b3JwaGljQ2FsbCgKICAgICAKICAgICAvLyBJZiB0aGVyZSBoYWQgYmVlbiBhIHByZXZpb3VzIHN0
dWIgcm91dGluZSwgdGhhdCBvbmUgd2lsbCBkaWUgYXMgc29vbiBhcyB0aGUgR0MgcnVucyBhbmQg
c2VlcwogICAgIC8vIHRoYXQgaXQncyBubyBsb25nZXIgb24gc3RhY2suCi0gICAgY2FsbExpbmtJ
bmZvLnNldFN0dWIoc3R1YlJvdXRpbmUucmVsZWFzZSgpKTsKKyAgICBjYWxsTGlua0luZm8uc2V0
U3R1YihXVEZNb3ZlKHN0dWJSb3V0aW5lKSk7CiAgICAgCiAgICAgLy8gVGhlIGNhbGwgbGluayBp
bmZvIG5vIGxvbmdlciBoYXMgYSBjYWxsIGNhY2hlIGFwYXJ0IGZyb20gdGhlIGp1bXAgdG8gdGhl
IHBvbHltb3JwaGljIGNhbGwKICAgICAvLyBzdHViLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmlu
ZGV4IGE4NzM3ZWVlMTgwNmNhOGQzODY0MDkxMTZmMmQyZGQzNjYxZTM2ODguLjE0MjlkMDU0Y2I0
ZWQxMWM2MTVmNjk2ZDZjOTY2NGM0MjJhMjY4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgK
QEAgLTQ1LDcgKzQ1LDcgQEAgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4g
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUodW4KICAgICBhdXRvIGJ1ZmZl
ciA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRv
cjo6VHlwZSkpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICByZXR1cm4gY3JlYXRlKGJ1ZmZlci5yZWxlYXNlKCksIDAsIGxlbmd0aCk7CisgICAgcmV0dXJu
IGNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGxlbmd0aCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIEFkYXB0b3I+CkBAIC02Nyw3ICs2Nyw3IEBAIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBHZW5lcmljVHlwZWRBcnJheVZpZXcoYnVmZmVyLnJlbGVhc2UoKSwgYnl0ZU9mZnNldCwgbGVu
Z3RoKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHZW5lcmljVHlwZWRBcnJheVZpZXcoV1RG
TW92ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgQWRhcHRvcj4KQEAgLTc4LDcgKzc4LDcgQEAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKICAgICAgICAgQXJyYXlC
dWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRh
cHRvcjo6VHlwZSkpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICByZXR1cm4gY3JlYXRlKGJ1ZmZlci5yZWxlYXNlKCksIDAsIGxlbmd0aCk7CisgICAgcmV0
dXJuIGNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGxlbmd0aCk7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIEFkYXB0b3I+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmNwcAppbmRleCAyYmUwM2Y4OGI5YWU1ODU0
YTRkMDQ0Zjk1MWUwMDJhOWZkMzg4ODU5Li42YmM4ZTQzNzljNTllZmMwZmM1NDc1YjllNjU4NGUx
OGNkZGU5MjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0QXJyYXlCdWZmZXIoRXhlY1N0
YXRlKiBleGVjKQogICAgIFN0cnVjdHVyZSogYXJyYXlCdWZmZXJTdHJ1Y3R1cmUgPSBJbnRlcm5h
bEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBleGVjLT5uZXdUYXJnZXQo
KSwgY29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLT5hcnJheUJ1ZmZlclN0cnVjdHVyZSgpKTsK
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSlNWYWx1ZSgpKTsKLSAgICBKU0FycmF5QnVmZmVyKiByZXN1bHQgPSBKU0FycmF5QnVm
ZmVyOjpjcmVhdGUoZXhlYy0+dm0oKSwgYXJyYXlCdWZmZXJTdHJ1Y3R1cmUsIGJ1ZmZlci5yZWxl
YXNlKCkpOworICAgIEpTQXJyYXlCdWZmZXIqIHJlc3VsdCA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0
ZShleGVjLT52bSgpLCBhcnJheUJ1ZmZlclN0cnVjdHVyZSwgV1RGTW92ZShidWZmZXIpKTsKICAg
ICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaAppbmRleCBhODA0Yjll
ZGE3Yzg3YWJhNDljYjU2NDEzODFhMzEyZWJlZGFmM2IzLi4wNGMxZWQxM2FiMTk5Yzk3YWMwMTQ2
MGUxNTVkNzAzODE0NzU1MDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5TmFtZUFycmF5LmgKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCBzZXREYXRhKFBhc3NSZWZQdHI8UHJvcGVydHlOYW1lQXJyYXlEYXRhPiBkYXRhKSB7IG1f
ZGF0YSA9IGRhdGE7IH0KICAgICBQcm9wZXJ0eU5hbWVBcnJheURhdGEqIGRhdGEoKSB7IHJldHVy
biBtX2RhdGEuZ2V0KCk7IH0KLSAgICBQYXNzUmVmUHRyPFByb3BlcnR5TmFtZUFycmF5RGF0YT4g
cmVsZWFzZURhdGEoKSB7IHJldHVybiBtX2RhdGEucmVsZWFzZSgpOyB9CisgICAgUGFzc1JlZlB0
cjxQcm9wZXJ0eU5hbWVBcnJheURhdGE+IHJlbGVhc2VEYXRhKCkgeyByZXR1cm4gV1RGTW92ZSht
X2RhdGEpOyB9CiAKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZXNlIGZ1bmN0aW9ucy4KICAgICBi
b29sIGNhbkFkZEtub3duVW5pcXVlRm9yU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
LT5wcm9wZXJ0eU5hbWVWZWN0b3IoKS5pc0VtcHR5KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IDZkN2ZiODE3Yjk1Zjk3YjRmYzQ1ZDA3MmEy
OWRkOTEyMTA3MjlhOWMuLjI3ZmZhNTE3ODA3NjhjNmM0MTczM2RiNjA4NTdmODcyZDdlNmU4NWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtMTE5
NywxNiArMTE5NywxNiBAQCBQYXNzUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiBTdHJ1Y3R1cmU6OnRv
U3RydWN0dXJlU2hhcGUoSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgY3VyU2hhcGUtPm1hcmtBc0Zp
bmFsKCk7CiAKICAgICAgICAgaWYgKGN1clN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlU3RydWN0
dXJlKCkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gbmV3U2hhcGUgPSBT
dHJ1Y3R1cmVTaGFwZTo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICBjdXJTaGFwZS0+c2V0UHJvdG8o
bmV3U2hhcGUpOwotICAgICAgICAgICAgY3VyU2hhcGUgPSBuZXdTaGFwZS5yZWxlYXNlKCk7Cisg
ICAgICAgICAgICBhdXRvIG5ld1NoYXBlID0gU3RydWN0dXJlU2hhcGU6OmNyZWF0ZSgpOworICAg
ICAgICAgICAgY3VyU2hhcGUtPnNldFByb3RvKG5ld1NoYXBlLnB0cigpKTsKKyAgICAgICAgICAg
IGN1clNoYXBlID0gV1RGTW92ZShuZXdTaGFwZSk7CiAgICAgICAgICAgICBjdXJWYWx1ZSA9IGN1
clN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlKCk7CiAgICAgICAgIH0KIAogICAgICAgICBjdXJT
dHJ1Y3R1cmUgPSBjdXJTdHJ1Y3R1cmUtPnN0b3JlZFByb3RvdHlwZVN0cnVjdHVyZSgpOwogICAg
IH0KICAgICAKLSAgICByZXR1cm4gYmFzZVNoYXBlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RG
TW92ZShiYXNlU2hhcGUpOwogfQogCiBib29sIFN0cnVjdHVyZTo6Y2FuVXNlRm9yQWxsb2NhdGlv
bnNPZihTdHJ1Y3R1cmUqIG90aGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVHlwZVNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBl
U2V0LmNwcAppbmRleCAwNjdmMTI2YjYwZmFlOTg1MmZmZjVhNjlhNDQ1NDQ2ODkzZWFkMGRiLi41
OGNlMmMzZDE3M2E4ZTI2YjgyYzY2YWNhNTU2NjllZDU5MDJjODA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcApAQCAtNTQ4LDcgKzU0OCw3IEBAIFBhc3NSZWZQ
dHI8U3RydWN0dXJlU2hhcGU+IFN0cnVjdHVyZVNoYXBlOjptZXJnZShjb25zdCBQYXNzUmVmUHRy
PFN0cnVjdHVyZVNoYXBlCiAgICAgUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiBiID0gcHJwQjsKICAg
ICBBU1NFUlQoYS0+aGFzU2FtZVByb3RvdHlwZUNoYWluKGIpKTsKIAotICAgIFJlZlB0cjxTdHJ1
Y3R1cmVTaGFwZT4gbWVyZ2VkID0gU3RydWN0dXJlU2hhcGU6OmNyZWF0ZSgpOworICAgIGF1dG8g
bWVyZ2VkID0gU3RydWN0dXJlU2hhcGU6OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byBmaWVsZCA6
IGEtPm1fZmllbGRzKSB7CiAgICAgICAgIGlmIChiLT5tX2ZpZWxkcy5jb250YWlucyhmaWVsZCkp
CiAgICAgICAgICAgICBtZXJnZWQtPm1fZmllbGRzLmFkZChmaWVsZCk7CkBAIC01NzgsNyArNTc4
LDcgQEAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gU3RydWN0dXJlU2hhcGU6Om1lcmdlKGNv
bnN0IFBhc3NSZWZQdHI8U3RydWN0dXJlU2hhcGUKIAogICAgIG1lcmdlZC0+bWFya0FzRmluYWwo
KTsKIAotICAgIHJldHVybiBtZXJnZWQucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKG1l
cmdlZCk7CiB9CiAKIHZvaWQgU3RydWN0dXJlU2hhcGU6OmVudGVyRGljdGlvbmFyeU1vZGUoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5jdGlvbk92ZXJyaWRlcy5jcHAK
aW5kZXggMmUzMjhjMTY3NGIyNzE3NmI3ODFkMTE4NjRhYjliMDEzOTBkMDAzMy4uOWFlM2E4N2Qy
YzgyZDBlODllOGZkYjczNDlkNjc2Zjg2MDY3NGJiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAg
c3RhdGljIHZvaWQgaW5pdGlhbGl6ZU92ZXJyaWRlSW5mbyhjb25zdCBTb3VyY2VDb2RlJiBvcmln
Q29kZSwgY29uc3QgU3RyaW5nJiBuZXcKICAgICBuZXdQcm92aWRlclN0ci5hcHBlbmQob3JpZ0hl
YWRlcik7CiAgICAgbmV3UHJvdmlkZXJTdHIuYXBwZW5kKG5ld0JvZHkpOwogCi0gICAgUmVmUHRy
PFNvdXJjZVByb3ZpZGVyPiBuZXdQcm92aWRlciA9IFN0cmluZ1NvdXJjZVByb3ZpZGVyOjpjcmVh
dGUobmV3UHJvdmlkZXJTdHIsICI8b3ZlcnJpZGRlbj4iKTsKKyAgICBhdXRvIG5ld1Byb3ZpZGVy
ID0gU3RyaW5nU291cmNlUHJvdmlkZXI6OmNyZWF0ZShuZXdQcm92aWRlclN0ciwgIjxvdmVycmlk
ZGVuPiIpOwogCiAgICAgaW5mby5maXJzdExpbmUgPSAxOwogICAgIGluZm8ubGluZUNvdW50ID0g
MTsgLy8gRmFraW5nIGl0LiBUaGlzIGRvZXNuJ3QgcmVhbGx5IG1hdHRlciBmb3Igbm93LgpAQCAt
MTI3LDcgKzEyNyw3IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVPdmVycmlkZUluZm8oY29uc3Qg
U291cmNlQ29kZSYgb3JpZ0NvZGUsIGNvbnN0IFN0cmluZyYgbmV3CiAgICAgaW5mby50eXBlUHJv
ZmlsaW5nRW5kT2Zmc2V0ID0gbmV3UHJvdmlkZXJTdHIubGVuZ3RoKCkgLSAxOwogCiAgICAgaW5m
by5zb3VyY2VDb2RlID0KLSAgICAgICAgU291cmNlQ29kZShuZXdQcm92aWRlci5yZWxlYXNlKCks
IGluZm8udHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0LCBpbmZvLnR5cGVQcm9maWxpbmdFbmRPZmZz
ZXQgKyAxLCAxLCAxKTsKKyAgICAgICAgU291cmNlQ29kZShXVEZNb3ZlKG5ld1Byb3ZpZGVyKSwg
aW5mby50eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQsIGluZm8udHlwZVByb2ZpbGluZ0VuZE9mZnNl
dCArIDEsIDEsIDEpOwogfQogICAgIAogYm9vbCBGdW5jdGlvbk92ZXJyaWRlczo6aW5pdGlhbGl6
ZU92ZXJyaWRlRm9yKGNvbnN0IFNvdXJjZUNvZGUmIG9yaWdDb2RlLCBGdW5jdGlvbk92ZXJyaWRl
czo6T3ZlcnJpZGVJbmZvJiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKaW5kZXggZWI1MjQ3YTlmMDdkOWJiZDhjODZi
OGY1NjlmODQ2NDlmYTU2YzE4YS4uZGIzYjk1NDI4ZThlN2ZmMTgxYzVlZTBlM2UyM2UyNDE2NjQy
N2RiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3Vy
Y2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291
cmNlQnVmZmVyLmNwcApAQCAtNjYzLDcgKzY2Myw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFRpbWVS
YW5nZXM+IHJlbW92ZVNhbXBsZXNGcm9tVHJhY2tCdWZmZXIoY29uc3QgRGVjb2RlT3JkZXJTYW1w
CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CiAjZW5kaWYKIAotICAgIFJlZlB0cjxUaW1lUmFu
Z2VzPiBlcmFzZWRSYW5nZXMgPSBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKKyAgICBhdXRvIGVyYXNl
ZFJhbmdlcyA9IFRpbWVSYW5nZXM6OmNyZWF0ZSgpOwogICAgIE1lZGlhVGltZSBtaWNyb3NlY29u
ZCgxLCAxMDAwMDAwKTsKICAgICBmb3IgKGF1dG8gc2FtcGxlSXQgOiBzYW1wbGVzKSB7CiAgICAg
ICAgIGNvbnN0IERlY29kZU9yZGVyU2FtcGxlTWFwOjpLZXlUeXBlJiBkZWNvZGVLZXkgPSBzYW1w
bGVJdC5maXJzdDsKQEAgLTY5OCw3ICs2OTgsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxUaW1lUmFu
Z2VzPiByZW1vdmVTYW1wbGVzRnJvbVRyYWNrQnVmZmVyKGNvbnN0IERlY29kZU9yZGVyU2FtcAog
ICAgICAgICBMT0coTWVkaWFTb3VyY2UsICJTb3VyY2VCdWZmZXI6OiVzKCVwKSByZW1vdmVkICV6
dSBieXRlcywgc3RhcnQoJWxmKSwgZW5kKCVsZikiLCBsb2dQcmVmaXgsIGJ1ZmZlciwgYnl0ZXNS
ZW1vdmVkLCBlYXJsaWVzdFNhbXBsZSwgbGF0ZXN0U2FtcGxlKTsKICNlbmRpZgogCi0gICAgcmV0
dXJuIGVyYXNlZFJhbmdlcy5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1vdmUoZXJhc2VkUmFu
Z2VzKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXI6OnJlbW92ZUNvZGVkRnJhbWVzKGNvbnN0IE1l
ZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kKQpAQCAtMTc1MSw3ICsxNzUxLDcg
QEAgdm9pZCBTb3VyY2VCdWZmZXI6OnByb3ZpZGVNZWRpYURhdGEoVHJhY2tCdWZmZXImIHRyYWNr
QnVmZmVyLCBBdG9taWNTdHJpbmcgdHJhY2sKICAgICAgICAgLy8gRklYTUUocmRhcjovL3Byb2Js
ZW0vMjA2MzU5NjkpOiBSZW1vdmUgdGhpcyByZS1lbnRyYW5jeSBwcm90ZWN0aW9uIHdoZW4gdGhl
IGFmb3JlbWVudGlvbmVkIHJhZGFyIGlzIHJlc29sdmVkOyBwcm90ZWN0aW5nCiAgICAgICAgIC8v
IGFnYWluc3QgcmUtZW50cmFuY3kgaW50cm9kdWNlcyBhIHNtYWxsIGluZWZmaWNlbmN5IHdoZW4g
cmVtb3ZpbmcgYXBwZW5kZWQgc2FtcGxlcyBmcm9tIHRoZSBkZWNvZGUgcXVldWUgb25lIGF0IGEg
dGltZQogICAgICAgICAvLyByYXRoZXIgdGhhbiB3aGVuIGFsbCBzYW1wbGVzIGhhdmUgYmVlbiBl
bnF1ZXVlZC4KLSAgICAgICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBzYW1wbGUgPSB0cmFja0J1ZmZl
ci5kZWNvZGVRdWV1ZS5iZWdpbigpLT5zZWNvbmQ7CisgICAgICAgIGF1dG8gc2FtcGxlID0gdHJh
Y2tCdWZmZXIuZGVjb2RlUXVldWUuYmVnaW4oKS0+c2Vjb25kOwogICAgICAgICB0cmFja0J1ZmZl
ci5kZWNvZGVRdWV1ZS5lcmFzZSh0cmFja0J1ZmZlci5kZWNvZGVRdWV1ZS5iZWdpbigpKTsKIAog
ICAgICAgICAvLyBEbyBub3QgZW5xdWV1ZSBzYW1wbGVzIHNwYW5uaW5nIGEgc2lnbmlmaWNhbnQg
dW5idWZmZXJlZCBnYXAuCkBAIC0xNzY3LDcgKzE3NjcsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6
cHJvdmlkZU1lZGlhRGF0YShUcmFja0J1ZmZlciYgdHJhY2tCdWZmZXIsIEF0b21pY1N0cmluZyB0
cmFjawogCiAgICAgICAgIHRyYWNrQnVmZmVyLmxhc3RFbnF1ZXVlZFByZXNlbnRhdGlvblRpbWUg
PSBzYW1wbGUtPnByZXNlbnRhdGlvblRpbWUoKTsKICAgICAgICAgdHJhY2tCdWZmZXIubGFzdEVu
cXVldWVkRGVjb2RlRW5kVGltZSA9IHNhbXBsZS0+ZGVjb2RlVGltZSgpICsgc2FtcGxlLT5kdXJh
dGlvbigpOwotICAgICAgICBtX3ByaXZhdGUtPmVucXVldWVTYW1wbGUoc2FtcGxlLnJlbGVhc2Uo
KSwgdHJhY2tJRCk7CisgICAgICAgIG1fcHJpdmF0ZS0+ZW5xdWV1ZVNhbXBsZShXVEZNb3ZlKHNh
bXBsZSksIHRyYWNrSUQpOwogI2lmICFMT0dfRElTQUJMRUQKICAgICAgICAgKytlbnF1ZXVlZFNh
bXBsZXM7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCmluZGV4IDllNWE5YzI0NGVmNjNhMTdiZmE4ZDlj
N2NjZTVjNjEzYWVhMzlhYzYuLmI5NmI3YTBiMzUxOTExYTg3NjlhOTUyZDI5ZmU4ZWFiMGIxZTIy
ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1l
ZGlhUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9V
c2VyTWVkaWFSZXF1ZXN0LmNwcApAQCAtODAsMTUgKzgwLDE1IEBAIHZvaWQgVXNlck1lZGlhUmVx
dWVzdDo6c3RhcnQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25z
LCBNZWRpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8TWVkaWFDb25zdHJh
aW50cz4gYXVkaW9Db25zdHJhaW50cyA9IHBhcnNlT3B0aW9ucyhvcHRpb25zLCBBdG9taWNTdHJp
bmcoImF1ZGlvIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIFJl
ZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiB2aWRlb0NvbnN0cmFpbnRzID0gcGFyc2VPcHRpb25zKG9w
dGlvbnMsIEF0b21pY1N0cmluZygidmlkZW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKSk7CisgICAgYXV0byBhdWRpb0NvbnN0cmFpbnRzID0gcGFyc2VPcHRpb25zKG9wdGlv
bnMsIEF0b21pY1N0cmluZygiYXVkaW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgYXV0byB2aWRlb0NvbnN0cmFpbnRzID0gcGFyc2VPcHRpb25zKG9wdGlvbnMs
IEF0b21pY1N0cmluZygidmlkZW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7CiAKICAgICBpZiAoIWF1ZGlvQ29uc3RyYWludHMgJiYgIXZpZGVvQ29uc3RyYWludHMpIHsK
ICAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIFJlZjxVc2VyTWVkaWFSZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHRSZWYoKm5ldyBVc2Vy
TWVkaWFSZXF1ZXN0KGRvY3VtZW50LCB1c2VyTWVkaWEsIGF1ZGlvQ29uc3RyYWludHMucmVsZWFz
ZSgpLCB2aWRlb0NvbnN0cmFpbnRzLnJlbGVhc2UoKSwgV1RGTW92ZShwcm9taXNlKSkpOworICAg
IGF1dG8gcmVxdWVzdCA9IGFkb3B0UmVmKCpuZXcgVXNlck1lZGlhUmVxdWVzdChkb2N1bWVudCwg
dXNlck1lZGlhLCBXVEZNb3ZlKGF1ZGlvQ29uc3RyYWludHMpLCBXVEZNb3ZlKHZpZGVvQ29uc3Ry
YWludHMpLCBXVEZNb3ZlKHByb21pc2UpKSk7CiAgICAgcmVxdWVzdC0+c3RhcnQoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAppbmRl
eCBkYTM4ZTFjZmY4OTE2MDUwMDlhZjc1NWM0NzJkZDBlNDQ3YWYxNTYzLi5iNWZkZmFlZjBlYTI1
YjhhZWM2ZDkyMTdkZDJjZDVkZTcyOTc2YjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcApAQCAtMjQ2LDcgKzI0Niw3IEBAIERhdGFiYXNl
Ojp+RGF0YWJhc2UoKQogICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRl
eHRUaHJlYWQoKSkgewogICAgICAgICAvLyBHcmFiIGEgcG9pbnRlciB0byB0aGUgc2NyaXB0IGV4
ZWN1dGlvbiBoZXJlIGJlY2F1c2Ugd2UncmUgcmVsZWFzaW5nIGl0IHdoZW4gd2UgcGFzcyBpdCB0
bwogICAgICAgICAvLyBEZXJlZkNvbnRleHRUYXNrOjpjcmVhdGUuCi0gICAgICAgIFBhc3NSZWZQ
dHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gcGFzc2VkQ29udGV4dCA9IG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5yZWxlYXNlKCk7CisgICAgICAgIFBhc3NSZWZQdHI8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dD4gcGFzc2VkQ29udGV4dCA9IFdURk1vdmUobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
KTsKICAgICAgICAgcGFzc2VkQ29udGV4dC0+cG9zdFRhc2soe1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2s6OkNsZWFudXBUYXNrLCBbcGFzc2VkQ29udGV4dF0gKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgJmNv
bnRleHQgPT0gcGFzc2VkQ29udGV4dCk7CiAgICAgICAgICAgICBSZWZQdHI8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dD4gc2NyaXB0RXhlY3V0aW9uQ29udGV4dChwYXNzZWRDb250ZXh0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMQ2FsbGJhY2tXcmFw
cGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTENhbGxiYWNrV3Jh
cHBlci5oCmluZGV4IGNhNjY1ODEwYmE2MGQxNmNjNzQxZTE4ZGU0NTg2Y2U4NDcwNDkyN2IuLmI2
NDU0ODIwZjczNzU2MWYzMGJjYWE1MGIwYTYyODFiMjM5ZGNmODAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMQ2FsbGJhY2tXcmFwcGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxDYWxsYmFja1dyYXBwZXIuaApA
QCAtNjgsOCArNjgsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0ID0gbnVsbHB0cjsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0UHRyID0gbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LnJlbGVhc2UoKS5sZWFrUmVmKCk7Ci0gICAgICAgICAgICBjYWxsYmFjayA9
IG1fY2FsbGJhY2sucmVsZWFzZSgpLmxlYWtSZWYoKTsKKyAgICAgICAgICAgIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRQdHIgPSBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQubGVha1JlZigpOworICAg
ICAgICAgICAgY2FsbGJhY2sgPSBtX2NhbGxiYWNrLmxlYWtSZWYoKTsKICAgICAgICAgfQogICAg
ICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0UHRyLT5wb3N0VGFzayh7CiAgICAgICAgICAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrOjpDbGVhbnVwVGFzaywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCA4ZmI0ZTk5Y2E2
NTg2NjRiNGRhZWNkNTdkNjMyNDBjMmU3MjdiMTk2Li4zMzBkNmIyODE5NGZiNmNkMjc4OTU2NjFk
YTE5OWM0YTk2NjY0ZGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uY3BwCkBAIC01MzksOSArNTM5LDcgQEAgc3RhdGljIEpTVmFsdWUgaGFu
ZGxlUG9zdE1lc3NhZ2UoRE9NV2luZG93JiBpbXBsLCBFeGVjU3RhdGUmIHN0YXRlKQogICAgIGlm
IChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAK
LSAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlID0gU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpjcmVhdGUoJnN0YXRlLCBzdGF0ZS5hcmd1bWVudCgwKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmbWVzc2FnZVBvcnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhcnJheUJ1ZmZlcnMpOworICAg
IGF1dG8gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCZzdGF0ZSwgc3Rh
dGUuYXJndW1lbnQoMCksICZtZXNzYWdlUG9ydHMsICZhcnJheUJ1ZmZlcnMpOwogCiAgICAgaWYg
KHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAg
LTU1MSw3ICs1NDksNyBAQCBzdGF0aWMgSlNWYWx1ZSBoYW5kbGVQb3N0TWVzc2FnZShET01XaW5k
b3cmIGltcGwsIEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbC5wb3N0TWVzc2FnZShtZXNz
YWdlLnJlbGVhc2UoKSwgJm1lc3NhZ2VQb3J0cywgdGFyZ2V0T3JpZ2luLCBjYWxsZXJET01XaW5k
b3coJnN0YXRlKSwgZWMpOworICAgIGltcGwucG9zdE1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSwg
Jm1lc3NhZ2VQb3J0cywgdGFyZ2V0T3JpZ2luLCBjYWxsZXJET01XaW5kb3coJnN0YXRlKSwgZWMp
OwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIaXN0b3J5
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3RvbS5j
cHAKaW5kZXggZjQ5Nzk2NWFlNTZkYjk0NzEyNDhmMGY5MDQ2YWY0M2I3NmI0MmRhMy4uN2E0ZTg2
ZWZhNzBlOGMxZTUwYWFmZmU3OGQ2OWE1ZDhmMzYwODQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0b20uY3BwCkBAIC01NSw3ICs1NSw3IEBAIEpTVmFs
dWUgSlNIaXN0b3J5OjpzdGF0ZShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogCiBKU1ZhbHVlIEpT
SGlzdG9yeTo6cHVzaFN0YXRlKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gaGlzdG9yeVN0YXRlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpj
cmVhdGUoJnN0YXRlLCBzdGF0ZS5hcmd1bWVudCgwKSwgMCwgMCk7CisgICAgYXV0byBoaXN0b3J5
U3RhdGUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgmc3RhdGUsIHN0YXRlLmFyZ3Vt
ZW50KDApLCAwLCAwKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwogCkBAIC03MSw3ICs3MSw3IEBAIEpTVmFsdWUgSlNIaXN0b3J5
OjpwdXNoU3RhdGUoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICB9CiAKICAgICBFeGNlcHRpb25Db2Rl
V2l0aE1lc3NhZ2UgZWM7Ci0gICAgd3JhcHBlZCgpLnN0YXRlT2JqZWN0QWRkZWQoaGlzdG9yeVN0
YXRlLnJlbGVhc2UoKSwgdGl0bGUsIHVybCwgSGlzdG9yeTo6U3RhdGVPYmplY3RUeXBlOjpQdXNo
LCBlYyk7CisgICAgd3JhcHBlZCgpLnN0YXRlT2JqZWN0QWRkZWQoV1RGTW92ZShoaXN0b3J5U3Rh
dGUpLCB0aXRsZSwgdXJsLCBIaXN0b3J5OjpTdGF0ZU9iamVjdFR5cGU6OlB1c2gsIGVjKTsKICAg
ICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAKICAgICBtX3N0YXRlLmNsZWFyKCk7CkBA
IC04MSw3ICs4MSw3IEBAIEpTVmFsdWUgSlNIaXN0b3J5OjpwdXNoU3RhdGUoRXhlY1N0YXRlJiBz
dGF0ZSkKIAogSlNWYWx1ZSBKU0hpc3Rvcnk6OnJlcGxhY2VTdGF0ZShFeGVjU3RhdGUmIHN0YXRl
KQogewotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGhpc3RvcnlTdGF0ZSA9IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCZzdGF0ZSwgc3RhdGUuYXJndW1lbnQoMCksIDAs
IDApOworICAgIGF1dG8gaGlzdG9yeVN0YXRlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVh
dGUoJnN0YXRlLCBzdGF0ZS5hcmd1bWVudCgwKSwgMCwgMCk7CiAgICAgaWYgKHN0YXRlLmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIApAQCAtOTcsNyArOTcs
NyBAQCBKU1ZhbHVlIEpTSGlzdG9yeTo6cmVwbGFjZVN0YXRlKEV4ZWNTdGF0ZSYgc3RhdGUpCiAg
ICAgfQogCiAgICAgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlIGVjOwotICAgIHdyYXBwZWQoKS5z
dGF0ZU9iamVjdEFkZGVkKGhpc3RvcnlTdGF0ZS5yZWxlYXNlKCksIHRpdGxlLCB1cmwsIEhpc3Rv
cnk6OlN0YXRlT2JqZWN0VHlwZTo6UmVwbGFjZSwgZWMpOworICAgIHdyYXBwZWQoKS5zdGF0ZU9i
amVjdEFkZGVkKFdURk1vdmUoaGlzdG9yeVN0YXRlKSwgdGl0bGUsIHVybCwgSGlzdG9yeTo6U3Rh
dGVPYmplY3RUeXBlOjpSZXBsYWNlLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwg
ZWMpOwogCiAgICAgbV9zdGF0ZS5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oCmluZGV4IGZjYTdhNDBhNzk5NzFmZjM4ZGQ5Y2Vk
NjJiZjU5Y2RjNDU1ZmM4MjUuLjA2Mjk0NmI3MzFjOWM1NTYyYzk1MmVhNjYxZGVmNmQ2OGI4OTVm
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRD
dXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3Vz
dG9tLmgKQEAgLTU2LDEyICs1NiwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIE1l
c3NhZ2VQb3J0QXJyYXkgcG9ydEFycmF5OwogICAgICAgICBBcnJheUJ1ZmZlckFycmF5IGFycmF5
QnVmZmVyQXJyYXk7CiAgICAgICAgIGZpbGxNZXNzYWdlUG9ydEFycmF5KHN0YXRlLCBzdGF0ZS5h
cmd1bWVudCgxKSwgcG9ydEFycmF5LCBhcnJheUJ1ZmZlckFycmF5KTsKLSAgICAgICAgUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
Y3JlYXRlKCZzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCksICZwb3J0QXJyYXksICZh
cnJheUJ1ZmZlckFycmF5KTsKKyAgICAgICAgYXV0byBtZXNzYWdlID0gU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpjcmVhdGUoJnN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSwgJnBvcnRB
cnJheSwgJmFycmF5QnVmZmVyQXJyYXkpOwogICAgICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9u
KCkpCiAgICAgICAgICAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOwogCiAgICAgICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICBpbXBsLT5wb3N0TWVzc2FnZShtZXNzYWdlLnJl
bGVhc2UoKSwgJnBvcnRBcnJheSwgZWMpOworICAgICAgICBpbXBsLT5wb3N0TWVzc2FnZShXVEZN
b3ZlKG1lc3NhZ2UpLCAmcG9ydEFycmF5LCBlYyk7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigm
c3RhdGUsIGVjKTsKICAgICAgICAgcmV0dXJuIEpTQzo6anNVbmRlZmluZWQoKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlck1hYy5tbQpp
bmRleCA1ZmM3MmRmMDVjN2I2ODE3ZjJiOWViODEzN2IyNDI5MjNmYzAyNGJlLi5hODQ3NDUyMjM2
YTVjOTU4MjY4ODM1NjAxZjRjY2Q3NTg3MWJkYmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJNYWMubW0KQEAgLTY2LDEwICs2NiwxMCBAQCBS
ZWZQdHI8SlNDOjpCaW5kaW5nczo6SW5zdGFuY2U+IFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVNj
cmlwdEluc3RhbmNlRm9yV2lkZ2V0KAogICAgIGlmICghd2lkZ2V0VmlldykKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8Um9vdE9iamVjdD4gcm9vdE9iamVjdCA9IGNyZWF0
ZVJvb3RPYmplY3Qod2lkZ2V0Vmlldyk7CisgICAgYXV0byByb290T2JqZWN0ID0gY3JlYXRlUm9v
dE9iamVjdCh3aWRnZXRWaWV3KTsKIAogICAgIGlmIChbd2lkZ2V0VmlldyByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKGNyZWF0ZVBsdWdpbkJpbmRpbmdzSW5zdGFuY2U6KV0pCi0gICAgICAg
IHJldHVybiBbd2lkZ2V0VmlldyBjcmVhdGVQbHVnaW5CaW5kaW5nc0luc3RhbmNlOnJvb3RPYmpl
Y3QucmVsZWFzZSgpXTsKKyAgICAgICAgcmV0dXJuIFt3aWRnZXRWaWV3IGNyZWF0ZVBsdWdpbkJp
bmRpbmdzSW5zdGFuY2U6V1RGTW92ZShyb290T2JqZWN0KV07CiAgICAgICAgIAogICAgIGlmIChb
d2lkZ2V0VmlldyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG9iamVjdEZvcldlYlNjcmlw
dCldKSB7CiAgICAgICAgIGlkIG9iamVjdEZvcldlYlNjcmlwdCA9IFt3aWRnZXRWaWV3IG9iamVj
dEZvcldlYlNjcmlwdF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA2ODJjYzYyM2ZhZDdjNjk4MWY1Njg4NmZhYTNj
NTY2NDVhYWY2M2ViLi44NjliNmVhYTgwNGY3NzQ2YTAxMTBlNzUyN2RjMWQ4YWQyMjY1NjZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAKQEAgLTIzNTQsNyArMjM1NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
ZmFpbCgpOwogICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0ZShtX2V4
ZWMtPnZtKCksIG1fZ2xvYmFsT2JqZWN0LT5hcnJheUJ1ZmZlclN0cnVjdHVyZSgpLCBhcnJheUJ1
ZmZlci5yZWxlYXNlKCkpOworICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBKU0FycmF5QnVm
ZmVyOjpjcmVhdGUobV9leGVjLT52bSgpLCBtX2dsb2JhbE9iamVjdC0+YXJyYXlCdWZmZXJTdHJ1
Y3R1cmUoKSwgV1RGTW92ZShhcnJheUJ1ZmZlcikpOwogICAgICAgICAgICAgbV9nY0J1ZmZlci5h
cHBlbmQocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAK
aW5kZXggNjdkOWQ1N2ZlZjFhYzNjMGIzYzI5ZGFjZDBkNzMxOWY4NjQzMzk0NS4uM2I0Mjc3YmRi
MGI0OTVkZDNkOTEwMWM2NjEzYWVhZTU2NjNmOTMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTQwNTksOSArNDA1OSw5
IEBAIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpj
b3B5UHJvcGVydGllc0luU2V0KGNvbnN0IENTCiAgICAgVmVjdG9yPENTU1Byb3BlcnR5LCAyNTY+
IGxpc3Q7CiAgICAgbGlzdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0aCk7CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIFJlZlB0cjxDU1NW
YWx1ZT4gdmFsdWUgPSBwcm9wZXJ0eVZhbHVlKHNldFtpXSk7CisgICAgICAgIGF1dG8gdmFsdWUg
PSBwcm9wZXJ0eVZhbHVlKHNldFtpXSk7CiAgICAgICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAg
IGxpc3QuYXBwZW5kKENTU1Byb3BlcnR5KHNldFtpXSwgdmFsdWUucmVsZWFzZSgpLCBmYWxzZSkp
OworICAgICAgICAgICAgbGlzdC5hcHBlbmQoQ1NTUHJvcGVydHkoc2V0W2ldLCBXVEZNb3ZlKHZh
bHVlKSwgZmFsc2UpKTsKICAgICB9CiAgICAgcmV0dXJuIE11dGFibGVTdHlsZVByb3BlcnRpZXM6
OmNyZWF0ZShsaXN0LmRhdGEoKSwgbGlzdC5zaXplKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL1NWR0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NT
UGFyc2VyLmNwcAppbmRleCBmMGM0ODU0Y2M2MWQxYWZhMDUzYjVjZmU5ZjI4ODQ4MDhlYjBkZWQw
Li45Y2I0NzkzYmJlMTQwZTMzNDIyNWQyNDMwODIzNzY0ZWM5MDllOWI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU1ZHQ1NTUGFyc2VyLmNwcApAQCAtMjcyLDkgKzI3Miw5IEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZVNWR1ZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAg
ICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSkKICAgICAgICAgICAgIHZhbGlkX3ByaW1pdGl2ZSA9
IHRydWU7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4g
c2hhZG93VmFsdWVMaXN0ID0gcGFyc2VTaGFkb3coKm1fdmFsdWVMaXN0LCBwcm9wSWQpOworICAg
ICAgICAgICAgYXV0byBzaGFkb3dWYWx1ZUxpc3QgPSBwYXJzZVNoYWRvdygqbV92YWx1ZUxpc3Qs
IHByb3BJZCk7CiAgICAgICAgICAgICBpZiAoc2hhZG93VmFsdWVMaXN0KSB7Ci0gICAgICAgICAg
ICAgICAgYWRkUHJvcGVydHkocHJvcElkLCBzaGFkb3dWYWx1ZUxpc3QucmVsZWFzZSgpLCBpbXBv
cnRhbnQpOworICAgICAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BJZCwgV1RGTW92ZShzaGFk
b3dWYWx1ZUxpc3QpLCBpbXBvcnRhbnQpOwogICAgICAgICAgICAgICAgIG1fdmFsdWVMaXN0LT5u
ZXh0KCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CkBAIC0z
MzYsNyArMzM2LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlU1ZHVmFsdWUoQ1NTUHJvcGVydHlJ
RCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGlmICghcGFyc2VkVmFsdWUgfHwgKG1fdmFs
dWVMaXN0LT5jdXJyZW50KCkgJiYgIWluU2hvcnRoYW5kKCkpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBhZGRQcm9wZXJ0eShwcm9wSWQsIHBhcnNlZFZhbHVlLnJlbGVhc2UoKSwgaW1w
b3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShwcm9wSWQsIFdURk1vdmUocGFyc2VkVmFsdWUpLCBp
bXBvcnRhbnQpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVCdWlsZGVyQ29udmVydGVyLmgKaW5kZXggNzdhYzY1ZjI4MzhkYTYzY2VjNDg4Zjg1ZDJiYTMx
YzE3YmY2MDg5ZC4uYWY0NTcxM2RmNTgzMDFjYTMwN2MzMDZhZjQ4MTQ2Y2RhY2ZiNDA1MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaApAQCAtNzYyLDcgKzc2
Miw3IEBAIGlubGluZSBQYXNzUmVmUHRyPFNoYXBlVmFsdWU+IFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydFNoYXBlVmFsdWUoU3R5bGVSZXNvCiAgICAgfQogCiAgICAgaWYgKHNoYXBlKQot
ICAgICAgICByZXR1cm4gU2hhcGVWYWx1ZTo6Y3JlYXRlU2hhcGVWYWx1ZShzaGFwZS5yZWxlYXNl
KCksIHJlZmVyZW5jZUJveCk7CisgICAgICAgIHJldHVybiBTaGFwZVZhbHVlOjpjcmVhdGVTaGFw
ZVZhbHVlKFdURk1vdmUoc2hhcGUpLCByZWZlcmVuY2VCb3gpOwogCiAgICAgaWYgKHJlZmVyZW5j
ZUJveCAhPSBCb3hNaXNzaW5nKQogICAgICAgICByZXR1cm4gU2hhcGVWYWx1ZTo6Y3JlYXRlQm94
U2hhcGVWYWx1ZShyZWZlcmVuY2VCb3gpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUHJvcGVydGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVz
LmNwcAppbmRleCBiZmNiZmE3MmQyMDRmOWFlOWFkNWQ2NzFmMmRiY2IwNmQwNGJmY2U1Li5mN2Jj
NzMwMTVkZTBkMzU2ZWE0YzkxY2M5MzAyMTUxODc2MjFjYTY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVQcm9wZXJ0aWVzLmNwcApAQCAtMTMxMyw5ICsxMzEzLDkgQEAgUmVmPE11dGFibGVTdHls
ZVByb3BlcnRpZXM+IFN0eWxlUHJvcGVydGllczo6Y29weVByb3BlcnRpZXNJblNldChjb25zdCBD
U1NQcm9wZXIKICAgICBWZWN0b3I8Q1NTUHJvcGVydHksIDI1Nj4gbGlzdDsKICAgICBsaXN0LnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFBy
b3BlcnR5Q1NTVmFsdWVJbnRlcm5hbChzZXRbaV0pOworICAgICAgICBhdXRvIHZhbHVlID0gZ2V0
UHJvcGVydHlDU1NWYWx1ZUludGVybmFsKHNldFtpXSk7CiAgICAgICAgIGlmICh2YWx1ZSkKLSAg
ICAgICAgICAgIGxpc3QuYXBwZW5kKENTU1Byb3BlcnR5KHNldFtpXSwgdmFsdWUucmVsZWFzZSgp
LCBmYWxzZSkpOworICAgICAgICAgICAgbGlzdC5hcHBlbmQoQ1NTUHJvcGVydHkoc2V0W2ldLCBX
VEZNb3ZlKHZhbHVlKSwgZmFsc2UpKTsKICAgICB9CiAgICAgcmV0dXJuIE11dGFibGVTdHlsZVBy
b3BlcnRpZXM6OmNyZWF0ZShsaXN0LmRhdGEoKSwgbGlzdC5zaXplKCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGMxN2FhZmE5NjQ1OGUzYWZmMjE1NjY0YWE2NDI2
OWIyY2EyYTUwZDkuLmFiNmRmMjc2YjQ2OTk1NzA3NDFlODFiZmVkZDQ5YzY3YWJjZWZhMmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTIxOTMsOCArMjE5Myw4IEBAIHZv
aWQgU3R5bGVSZXNvbHZlcjo6bG9hZFBlbmRpbmdJbWFnZXMoKQogICAgICAgICAgICAgICAgIGlm
IChpczxJbWFnZUNvbnRlbnREYXRhPigqY29udGVudERhdGEpKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGF1dG8mIHN0eWxlSW1hZ2UgPSBkb3duY2FzdDxJbWFnZUNvbnRlbnREYXRhPigqY29udGVu
dERhdGEpLmltYWdlKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChpczxTdHlsZVBlbmRpbmdJ
bWFnZT4oc3R5bGVJbWFnZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSZWZQdHI8
U3R5bGVJbWFnZT4gbG9hZGVkSW1hZ2UgPSBsb2FkUGVuZGluZ0ltYWdlKGRvd25jYXN0PFN0eWxl
UGVuZGluZ0ltYWdlPihzdHlsZUltYWdlKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZG93bmNhc3Q8SW1hZ2VDb250ZW50RGF0YT4oKmNvbnRlbnREYXRhKS5zZXRJbWFnZShsb2FkZWRJ
bWFnZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8gbG9hZGVk
SW1hZ2UgPSBsb2FkUGVuZGluZ0ltYWdlKGRvd25jYXN0PFN0eWxlUGVuZGluZ0ltYWdlPihzdHls
ZUltYWdlKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG93bmNhc3Q8SW1hZ2VDb250
ZW50RGF0YT4oKmNvbnRlbnREYXRhKS5zZXRJbWFnZShXVEZNb3ZlKGxvYWRlZEltYWdlKSk7CiAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBA
IC0yMjI4LDggKzIyMjgsOCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmxvYWRQZW5kaW5nSW1hZ2Vz
KCkKICAgICAgICAgICAgICAgICBjb25zdCBOaW5lUGllY2VJbWFnZSYgbWFza0ltYWdlID0gcmVm
bGVjdGlvbi0+bWFzaygpOwogICAgICAgICAgICAgICAgIGF1dG8qIHN0eWxlSW1hZ2UgPSBtYXNr
SW1hZ2UuaW1hZ2UoKTsKICAgICAgICAgICAgICAgICBpZiAoaXM8U3R5bGVQZW5kaW5nSW1hZ2U+
KHN0eWxlSW1hZ2UpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlZlB0cjxTdHlsZUltYWdlPiBs
b2FkZWRJbWFnZSA9IGxvYWRQZW5kaW5nSW1hZ2UoZG93bmNhc3Q8U3R5bGVQZW5kaW5nSW1hZ2U+
KCpzdHlsZUltYWdlKSk7Ci0gICAgICAgICAgICAgICAgICAgIHJlZmxlY3Rpb24tPnNldE1hc2so
TmluZVBpZWNlSW1hZ2UobG9hZGVkSW1hZ2UucmVsZWFzZSgpLCBtYXNrSW1hZ2UuaW1hZ2VTbGlj
ZXMoKSwgbWFza0ltYWdlLmZpbGwoKSwgbWFza0ltYWdlLmJvcmRlclNsaWNlcygpLCBtYXNrSW1h
Z2Uub3V0c2V0KCksIG1hc2tJbWFnZS5ob3Jpem9udGFsUnVsZSgpLCBtYXNrSW1hZ2UudmVydGlj
YWxSdWxlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBsb2FkZWRJbWFnZSA9IGxvYWRQ
ZW5kaW5nSW1hZ2UoZG93bmNhc3Q8U3R5bGVQZW5kaW5nSW1hZ2U+KCpzdHlsZUltYWdlKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHJlZmxlY3Rpb24tPnNldE1hc2soTmluZVBpZWNlSW1hZ2UoV1RG
TW92ZShsb2FkZWRJbWFnZSksIG1hc2tJbWFnZS5pbWFnZVNsaWNlcygpLCBtYXNrSW1hZ2UuZmls
bCgpLCBtYXNrSW1hZ2UuYm9yZGVyU2xpY2VzKCksIG1hc2tJbWFnZS5vdXRzZXQoKSwgbWFza0lt
YWdlLmhvcml6b250YWxSdWxlKCksIG1hc2tJbWFnZS52ZXJ0aWNhbFJ1bGUoKSkpOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAppbmRleCA5ZmM0MjZkMWI4Mzhl
MmQzZTIxZDgzMmQ0N2JiNjIxODllYTE5OWIzLi5lMDA2YjgxYTZjMWUyYzU0MGMzMTg1YTE3Y2Zi
ZTU5NTM5ZjJmMDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVT
aGVldE93bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93
bmVyLmNwcApAQCAtMTA5LDcgKzEwOSw4IEBAIHZvaWQgSW5saW5lU3R5bGVTaGVldE93bmVyOjpj
cmVhdGVTaGVldEZyb21UZXh0Q29udGVudHMoRWxlbWVudCYgZWxlbWVudCkKIHZvaWQgSW5saW5l
U3R5bGVTaGVldE93bmVyOjpjbGVhclNoZWV0KCkKIHsKICAgICBBU1NFUlQobV9zaGVldCk7Ci0g
ICAgbV9zaGVldC5yZWxlYXNlKCktPmNsZWFyT3duZXJOb2RlKCk7CisgICAgYXV0byBzaGVldCA9
IFdURk1vdmUobV9zaGVldCk7CisgICAgc2hlZXQtPmNsZWFyT3duZXJOb2RlKCk7CiB9CiAKIGlu
bGluZSBib29sIGlzVmFsaWRDU1NDb250ZW50VHlwZShFbGVtZW50JiBlbGVtZW50LCBjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Fw
cGx5U3R5bGVDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNv
bW1hbmQuY3BwCmluZGV4IGEwNTk5ZGUzMjRjNTU5MTJkZTE5NDEwMTI2NjVhMzgzYWI4ZmZlZDUu
LjI2N2Y5NTA1YzUxYzQ3ZWVkMWRlYWQwMDBkZDhkODhmMDlmYTdiYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCkBAIC04NDAsNyArODQwLDcgQEAg
dm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlJbmxpbmVTdHlsZVRvTm9kZVJhbmdlKEVkaXRp
bmdTdHlsZSogc3R5bGUsIFBhc3NSZWYKICAgICAgICAgaWYgKHJ1bi5kdW1teUVsZW1lbnQpCiAg
ICAgICAgICAgICByZW1vdmVOb2RlKHJ1bi5kdW1teUVsZW1lbnQpOwogICAgICAgICBpZiAocnVu
LnN0YXJ0QW5kRW5kQXJlU3RpbGxJbkRvY3VtZW50KCkpCi0gICAgICAgICAgICBhcHBseUlubGlu
ZVN0eWxlQ2hhbmdlKHJ1bi5zdGFydC5yZWxlYXNlKCksIHJ1bi5lbmQucmVsZWFzZSgpLCBydW4u
Y2hhbmdlLCBBZGRTdHlsZWRFbGVtZW50KTsKKyAgICAgICAgICAgIGFwcGx5SW5saW5lU3R5bGVD
aGFuZ2UoV1RGTW92ZShydW4uc3RhcnQpLCBXVEZNb3ZlKHJ1bi5lbmQpLCBydW4uY2hhbmdlLCBB
ZGRTdHlsZWRFbGVtZW50KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKaW5kZXggYjkwNDJmYTRkZjc4OWE1NmE2OGU5Mjkz
M2Q3NTA5ZGUyMjZjYmY0ZS4uOTE3OTdhMWJmY2FmOTAyNzI1NjUxMjNkZWU0ZTU5MjE5MTRkNzlk
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFu
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5j
cHAKQEAgLTUyMiw3ICs1MjIsNyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZW1vdmVD
aGlsZHJlbkluUmFuZ2UoUGFzc1JlZlB0cjxOb2RlPiBub2RlLCB1bnNpZ25lZAogICAgICAgICBj
aGlsZHJlbi5hcHBlbmQoY2hpbGQpOwogCiAgICAgZm9yIChhdXRvJiBjaGlsZCA6IGNoaWxkcmVu
KQotICAgICAgICByZW1vdmVOb2RlKGNoaWxkLnJlbGVhc2UoKSk7CisgICAgICAgIHJlbW92ZU5v
ZGUoV1RGTW92ZShjaGlsZCkpOwogfQogCiB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZW1v
dmVOb2RlKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSwgU2hvdWxkQXNzdW1lQ29udGVudElzQWx3YXlz
RWRpdGFibGUgc2hvdWxkQXNzdW1lQ29udGVudElzQWx3YXlzRWRpdGFibGUpCkBAIC01NDEsNyAr
NTQxLDcgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVtb3ZlTm9kZUFuZFBydW5lQW5j
ZXN0b3JzKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSkKIHsKICAgICBSZWZQdHI8Q29udGFpbmVyTm9k
ZT4gcGFyZW50ID0gbm9kZS0+cGFyZW50Tm9kZSgpOwogICAgIHJlbW92ZU5vZGUobm9kZSk7Ci0g
ICAgcHJ1bmUocGFyZW50LnJlbGVhc2UoKSk7CisgICAgcHJ1bmUoV1RGTW92ZShwYXJlbnQpKTsK
IH0KIAogdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVJlbWFpbmluZ1NpYmxpbmdzVG9O
ZXdQYXJlbnQoTm9kZSogbm9kZSwgTm9kZSogcGFzdExhc3ROb2RlVG9Nb3ZlLCBQYXNzUmVmUHRy
PEVsZW1lbnQ+IHBycE5ld1BhcmVudCkKQEAgLTU4Myw3ICs1ODMsNyBAQCBIVE1MRWxlbWVudCog
Q29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlcGxhY2VFbGVtZW50V2l0aFNwYW5QcmVzZXJ2aW5nQ2hp
bGRyZW5BbmRBdAogdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cHJ1bmUoUGFzc1JlZlB0cjxO
b2RlPiBub2RlKQogewogICAgIGlmIChSZWZQdHI8Tm9kZT4gaGlnaGVzdE5vZGVUb1JlbW92ZSA9
IGhpZ2hlc3ROb2RlVG9SZW1vdmVJblBydW5pbmcobm9kZS5nZXQoKSkpCi0gICAgICAgIHJlbW92
ZU5vZGUoaGlnaGVzdE5vZGVUb1JlbW92ZS5yZWxlYXNlKCkpOworICAgICAgICByZW1vdmVOb2Rl
KFdURk1vdmUoaGlnaGVzdE5vZGVUb1JlbW92ZSkpOwogfQogCiB2b2lkIENvbXBvc2l0ZUVkaXRD
b21tYW5kOjpzcGxpdFRleHROb2RlKFBhc3NSZWZQdHI8VGV4dD4gbm9kZSwgdW5zaWduZWQgb2Zm
c2V0KQpAQCAtNjg4LDcgKzY4OCw3IEBAIFBvc2l0aW9uIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpy
ZXBsYWNlU2VsZWN0ZWRUZXh0SW5Ob2RlKGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICBSZWZQdHI8
VGV4dD4gdGV4dE5vZGUgPSBzdGFydC5jb250YWluZXJUZXh0KCk7CiAgICAgcmVwbGFjZVRleHRJ
bk5vZGUodGV4dE5vZGUsIHN0YXJ0Lm9mZnNldEluQ29udGFpbmVyTm9kZSgpLCBlbmQub2Zmc2V0
SW5Db250YWluZXJOb2RlKCkgLSBzdGFydC5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSwgdGV4dCk7
CiAKLSAgICByZXR1cm4gUG9zaXRpb24odGV4dE5vZGUucmVsZWFzZSgpLCBzdGFydC5vZmZzZXRJ
bkNvbnRhaW5lck5vZGUoKSArIHRleHQubGVuZ3RoKCkpOworICAgIHJldHVybiBQb3NpdGlvbihX
VEZNb3ZlKHRleHROb2RlKSwgc3RhcnQub2Zmc2V0SW5Db250YWluZXJOb2RlKCkgKyB0ZXh0Lmxl
bmd0aCgpKTsKIH0KIAogc3RhdGljIFZlY3RvcjxSZW5kZXJlZERvY3VtZW50TWFya2VyPiBjb3B5
TWFya2Vycyhjb25zdCBWZWN0b3I8UmVuZGVyZWREb2N1bWVudE1hcmtlcio+JiBtYXJrZXJQb2lu
dGVycykKQEAgLTg3Miw3ICs4NzIsNyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZWJh
bGFuY2VXaGl0ZXNwYWNlT25UZXh0U3Vic3RyaW5nKFBhc3NSZWZQdHI8VGV4dD4gcAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlz
RW5kT2ZQYXJhZ3JhcGgodmlzaWJsZURvd25zdHJlYW1Qb3MpIHx8ICh1bnNpZ25lZClkb3duc3Ry
ZWFtID09IHRleHQubGVuZ3RoKCkpOwogICAgIAogICAgIGlmIChzdHJpbmcgIT0gcmViYWxhbmNl
ZFN0cmluZykKLSAgICAgICAgcmVwbGFjZVRleHRJbk5vZGVQcmVzZXJ2aW5nTWFya2Vycyh0ZXh0
Tm9kZS5yZWxlYXNlKCksIHVwc3RyZWFtLCBsZW5ndGgsIHJlYmFsYW5jZWRTdHJpbmcpOworICAg
ICAgICByZXBsYWNlVGV4dEluTm9kZVByZXNlcnZpbmdNYXJrZXJzKFdURk1vdmUodGV4dE5vZGUp
LCB1cHN0cmVhbSwgbGVuZ3RoLCByZWJhbGFuY2VkU3RyaW5nKTsKIH0KIAogdm9pZCBDb21wb3Np
dGVFZGl0Q29tbWFuZDo6cHJlcGFyZVdoaXRlc3BhY2VBdFBvc2l0aW9uRm9yU3BsaXQoUG9zaXRp
b24mIHBvc2l0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9DcmVhdGVM
aW5rQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NyZWF0ZUxpbmtDb21tYW5k
LmNwcAppbmRleCBhM2VlN2U1MDU4NDI4ZWY4MzEwNTM5OThiODIxYjJkNDdmYjZhYThmLi4zYTA1
MjA4NzNiNDRmZTY0YTJlZDUyMmUzMzdkZmI3NGUxMmE2MjI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0NyZWF0ZUxpbmtDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0NyZWF0ZUxpbmtDb21tYW5kLmNwcApAQCAtNDMsMTYgKzQzLDE2IEBAIHZvaWQg
Q3JlYXRlTGlua0NvbW1hbmQ6OmRvQXBwbHkoKQogICAgIGlmIChlbmRpbmdTZWxlY3Rpb24oKS5p
c05vbmUoKSkKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICBSZWZQdHI8SFRNTEFuY2hv
ckVsZW1lbnQ+IGFuY2hvckVsZW1lbnQgPSBIVE1MQW5jaG9yRWxlbWVudDo6Y3JlYXRlKGRvY3Vt
ZW50KCkpOworICAgIGF1dG8gYW5jaG9yRWxlbWVudCA9IEhUTUxBbmNob3JFbGVtZW50OjpjcmVh
dGUoZG9jdW1lbnQoKSk7CiAgICAgYW5jaG9yRWxlbWVudC0+c2V0SHJlZihtX3VybCk7CiAgICAg
CiAgICAgaWYgKGVuZGluZ1NlbGVjdGlvbigpLmlzUmFuZ2UoKSkKLSAgICAgICAgYXBwbHlTdHls
ZWRFbGVtZW50KGFuY2hvckVsZW1lbnQucmVsZWFzZSgpKTsKKyAgICAgICAgYXBwbHlTdHlsZWRF
bGVtZW50KFdURk1vdmUoYW5jaG9yRWxlbWVudCkpOwogICAgIGVsc2UgewotICAgICAgICBpbnNl
cnROb2RlQXQoYW5jaG9yRWxlbWVudC5nZXQoKSwgZW5kaW5nU2VsZWN0aW9uKCkuc3RhcnQoKSk7
Ci0gICAgICAgIFJlZlB0cjxUZXh0PiB0ZXh0Tm9kZSA9IFRleHQ6OmNyZWF0ZShkb2N1bWVudCgp
LCBtX3VybCk7Ci0gICAgICAgIGFwcGVuZE5vZGUodGV4dE5vZGUucmVsZWFzZSgpLCBhbmNob3JF
bGVtZW50LmdldCgpKTsKLSAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rp
b24ocG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUoYW5jaG9yRWxlbWVudC5nZXQoKSksIHBvc2l0
aW9uSW5QYXJlbnRBZnRlck5vZGUoYW5jaG9yRWxlbWVudC5nZXQoKSksIERPV05TVFJFQU0sIGVu
ZGluZ1NlbGVjdGlvbigpLmlzRGlyZWN0aW9uYWwoKSkpOworICAgICAgICBpbnNlcnROb2RlQXQo
YW5jaG9yRWxlbWVudC5wdHIoKSwgZW5kaW5nU2VsZWN0aW9uKCkuc3RhcnQoKSk7CisgICAgICAg
IGF1dG8gdGV4dE5vZGUgPSBUZXh0OjpjcmVhdGUoZG9jdW1lbnQoKSwgbV91cmwpOworICAgICAg
ICBhcHBlbmROb2RlKFdURk1vdmUodGV4dE5vZGUpLCBhbmNob3JFbGVtZW50LnB0cigpKTsKKyAg
ICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocG9zaXRpb25JblBhcmVu
dEJlZm9yZU5vZGUoYW5jaG9yRWxlbWVudC5wdHIoKSksIHBvc2l0aW9uSW5QYXJlbnRBZnRlck5v
ZGUoYW5jaG9yRWxlbWVudC5wdHIoKSksIERPV05TVFJFQU0sIGVuZGluZ1NlbGVjdGlvbigpLmlz
RGlyZWN0aW9uYWwoKSkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5n
U3R5bGUuY3BwCmluZGV4IDI5MTRmNjI3MTJiNzJkMTE4YWViZDIxNjUyMTA5ZGJmNTRmY2IyZmEu
LmVjN2U3ZWI3NzJhNzFkMjliOWRiODFmMTNmODA5YTIyMWQyZjcxN2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKQEAgLTEyNDgsOSArMTI0OCw5IEBAIHZvaWQgRWRp
dGluZ1N0eWxlOjptZXJnZVN0eWxlKGNvbnN0IFN0eWxlUHJvcGVydGllcyogc3R5bGUsIENTU1By
b3BlcnR5T3ZlcnJpZGVNCiAgICAgICAgIGlmICgocHJvcGVydHkuaWQoKSA9PSBDU1NQcm9wZXJ0
eVRleHREZWNvcmF0aW9uIHx8IHByb3BlcnR5LmlkKCkgPT0gQ1NTUHJvcGVydHlXZWJraXRUZXh0
RGVjb3JhdGlvbnNJbkVmZmVjdCkKICAgICAgICAgICAgICYmIGlzPENTU1ZhbHVlTGlzdD4oKnBy
b3BlcnR5LnZhbHVlKCkpICYmIHZhbHVlKSB7CiAgICAgICAgICAgICBpZiAoaXM8Q1NTVmFsdWVM
aXN0PigqdmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbmV3
VmFsdWUgPSBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KCp2YWx1ZSkuY29weSgpOwotICAgICAgICAg
ICAgICAgIG1lcmdlVGV4dERlY29yYXRpb25WYWx1ZXMoKm5ld1ZhbHVlLCBkb3duY2FzdDxDU1NW
YWx1ZUxpc3Q+KCpwcm9wZXJ0eS52YWx1ZSgpKSk7Ci0gICAgICAgICAgICAgICAgbV9tdXRhYmxl
U3R5bGUtPnNldFByb3BlcnR5KHByb3BlcnR5LmlkKCksIG5ld1ZhbHVlLnJlbGVhc2UoKSwgcHJv
cGVydHkuaXNJbXBvcnRhbnQoKSk7CisgICAgICAgICAgICAgICAgYXV0byBuZXdWYWx1ZSA9IGRv
d25jYXN0PENTU1ZhbHVlTGlzdD4oKnZhbHVlKS5jb3B5KCk7CisgICAgICAgICAgICAgICAgbWVy
Z2VUZXh0RGVjb3JhdGlvblZhbHVlcyhuZXdWYWx1ZSwgZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pigq
cHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICAgICAgICAgIG1fbXV0YWJsZVN0eWxlLT5zZXRQ
cm9wZXJ0eShwcm9wZXJ0eS5pZCgpLCBXVEZNb3ZlKG5ld1ZhbHVlKSwgcHJvcGVydHkuaXNJbXBv
cnRhbnQoKSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB2YWx1ZSA9IG51bGxwdHI7IC8vIHRleHQtZGVjb3JhdGlvbjogbm9uZSBpcyBlcXVp
dmFsZW50IHRvIG5vdCBoYXZpbmcgdGhlIHByb3BlcnR5LgpAQCAtMTMwNyw4ICsxMzA3LDggQEAg
dm9pZCBFZGl0aW5nU3R5bGU6Om1lcmdlU3R5bGVGcm9tUnVsZXNGb3JTZXJpYWxpemF0aW9uKFN0
eWxlZEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgICAgICAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZh
bHVlPigqdmFsdWUpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYg
KGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLmlzUGVyY2VudGFnZSgpKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKFJlZlB0cjxDU1NWYWx1ZT4gY29tcHV0ZWRQcm9wZXJ0eVZhbHVl
ID0gY29tcHV0ZWRTdHlsZS5wcm9wZXJ0eVZhbHVlKHByb3BlcnR5LmlkKCkpKQotICAgICAgICAg
ICAgICAgICAgICBmcm9tQ29tcHV0ZWRTdHlsZS0+YWRkUGFyc2VkUHJvcGVydHkoQ1NTUHJvcGVy
dHkocHJvcGVydHkuaWQoKSwgY29tcHV0ZWRQcm9wZXJ0eVZhbHVlLnJlbGVhc2UoKSkpOworICAg
ICAgICAgICAgICAgIGlmIChhdXRvIGNvbXB1dGVkUHJvcGVydHlWYWx1ZSA9IGNvbXB1dGVkU3R5
bGUucHJvcGVydHlWYWx1ZShwcm9wZXJ0eS5pZCgpKSkKKyAgICAgICAgICAgICAgICAgICAgZnJv
bUNvbXB1dGVkU3R5bGUtPmFkZFBhcnNlZFByb3BlcnR5KENTU1Byb3BlcnR5KHByb3BlcnR5Lmlk
KCksIFdURk1vdmUoY29tcHV0ZWRQcm9wZXJ0eVZhbHVlKSkpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDM0Y2RjZTk5ZjNi
ZmYzMmQ0NjlmNDUxNjk3ZDRkNTlkYTcwOGM1ZmEuLmY2NjYzMzAxNjQzMDMxMzU4NTQwZmI3NGMx
MjUwNzg2ZjdjNzUzNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTEzNiw5ICsx
MzYsOSBAQCB2b2lkIENsZWFyVGV4dENvbW1hbmQ6OkNyZWF0ZUFuZEFwcGx5KGNvbnN0IFJlZlB0
cjxGcmFtZT4gZnJhbWUpCiAgICAgCiAgICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiBvbGRTZWxl
Y3Rpb24gPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CiAgICAgZnJhbWUtPnNlbGVj
dGlvbigpLnNlbGVjdEFsbCgpOwotICAgIFJlZlB0cjxDbGVhclRleHRDb21tYW5kPiBjbGVhckNv
bW1hbmQgPSBhZG9wdFJlZihuZXcgQ2xlYXJUZXh0Q29tbWFuZCgqZnJhbWUtPmRvY3VtZW50KCkp
KTsKKyAgICBhdXRvIGNsZWFyQ29tbWFuZCA9IGFkb3B0UmVmKCpuZXcgQ2xlYXJUZXh0Q29tbWFu
ZCgqZnJhbWUtPmRvY3VtZW50KCkpKTsKICAgICBjbGVhckNvbW1hbmQtPnNldFN0YXJ0aW5nU2Vs
ZWN0aW9uKG9sZFNlbGVjdGlvbik7Ci0gICAgYXBwbHlDb21tYW5kKGNsZWFyQ29tbWFuZC5yZWxl
YXNlKCkpOworICAgIGFwcGx5Q29tbWFuZChXVEZNb3ZlKGNsZWFyQ29tbWFuZCkpOwogfQogCiB1
c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMjQzMywxNiArMjQzMywxNiBAQCB2b2lkIEVk
aXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tp
bmdUeXBlTWFzayB0ZXh0QwogICAgIGJvb2wgYXN5bmNocm9ub3VzID0gbV9mcmFtZS5zZXR0aW5n
cygpLmFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgJiYgIXNob3VsZFNob3dDb3Jy
ZWN0aW9uUGFuZWw7CiAKICAgICAvLyBJbiBhc3luY2hyb25vdXMgbW9kZSwgd2UgaW50ZW50aW9u
YWxseSBjaGVjayBwYXJhZ3JhcGgtd2lkZSBzZW50ZW5jZS4KLSAgICBSZWZQdHI8U3BlbGxDaGVj
a1JlcXVlc3Q+IHJlcXVlc3QgPSBTcGVsbENoZWNrUmVxdWVzdDo6Y3JlYXRlKHJlc29sdmVUZXh0
Q2hlY2tpbmdUeXBlTWFzayh0ZXh0Q2hlY2tpbmdPcHRpb25zKSwgVGV4dENoZWNraW5nUHJvY2Vz
c0luY3JlbWVudGFsLCBhc3luY2hyb25vdXMgPyBwYXJhZ3JhcGhSYW5nZSA6IHJhbmdlVG9DaGVj
aywgcGFyYWdyYXBoUmFuZ2UpOworICAgIGF1dG8gcmVxdWVzdCA9IFNwZWxsQ2hlY2tSZXF1ZXN0
OjpjcmVhdGUocmVzb2x2ZVRleHRDaGVja2luZ1R5cGVNYXNrKHRleHRDaGVja2luZ09wdGlvbnMp
LCBUZXh0Q2hlY2tpbmdQcm9jZXNzSW5jcmVtZW50YWwsIGFzeW5jaHJvbm91cyA/IHBhcmFncmFw
aFJhbmdlIDogcmFuZ2VUb0NoZWNrLCBwYXJhZ3JhcGhSYW5nZSk7CiAKICAgICBpZiAoYXN5bmNo
cm9ub3VzKSB7Ci0gICAgICAgIG1fc3BlbGxDaGVja2VyLT5yZXF1ZXN0Q2hlY2tpbmdGb3IocmVx
dWVzdC5yZWxlYXNlKCkpOworICAgICAgICBtX3NwZWxsQ2hlY2tlci0+cmVxdWVzdENoZWNraW5n
Rm9yKFdURk1vdmUocmVxdWVzdCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgVmVj
dG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gcmVzdWx0czsKICAgICBjaGVja1RleHRPZlBhcmFncmFw
aCgqdGV4dENoZWNrZXIoKSwgcGFyYWdyYXBoVG9DaGVjay50ZXh0KCksIHJlc29sdmVUZXh0Q2hl
Y2tpbmdUeXBlTWFzayh0ZXh0Q2hlY2tpbmdPcHRpb25zKSwgcmVzdWx0cywgbV9mcmFtZS5zZWxl
Y3Rpb24oKS5zZWxlY3Rpb24oKSk7Ci0gICAgbWFya0FuZFJlcGxhY2VGb3IocmVxdWVzdC5yZWxl
YXNlKCksIHJlc3VsdHMpOworICAgIG1hcmtBbmRSZXBsYWNlRm9yKFdURk1vdmUocmVxdWVzdCks
IHJlc3VsdHMpOwogfQogCiBzdGF0aWMgYm9vbCBpc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudFR5
cGUoVGV4dENoZWNraW5nVHlwZSB0eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3JDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29t
bWFuZC5jcHAKaW5kZXggYTkzNTgwZTc2N2ZmY2IwZjQzYmFkMWY2ZDk4NWNhNmIzYTA3ZGZkOS4u
ZGRmMTk0YzcyYTczYjdmZmJkMThlYzYzZjJlYTU0YTg0OTc0MmQ4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCkBAIC0xNjUsMTIgKzE2NSwxMiBAQCBzdGF0aWMg
Ym9vbCBleGVjdXRlSW5zZXJ0RnJhZ21lbnQoRnJhbWUmIGZyYW1lLCBQYXNzUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IGZyYQogCiBzdGF0aWMgYm9vbCBleGVjdXRlSW5zZXJ0Tm9kZShGcmFtZSYg
ZnJhbWUsIFJlZjxOb2RlPiYmIGNvbnRlbnQpCiB7Ci0gICAgUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IGZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgp
KTsKKyAgICBhdXRvIGZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKCpmcmFtZS5k
b2N1bWVudCgpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBmcmFnbWVudC0+YXBw
ZW5kQ2hpbGQoY29udGVudCwgZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIHJldHVybiBleGVjdXRlSW5zZXJ0RnJhZ21lbnQoZnJhbWUsIGZyYWdtZW50LnJlbGVh
c2UoKSk7CisgICAgcmV0dXJuIGV4ZWN1dGVJbnNlcnRGcmFnbWVudChmcmFtZSwgV1RGTW92ZShm
cmFnbWVudCkpOwogfQogCiBzdGF0aWMgYm9vbCBleHBhbmRTZWxlY3Rpb25Ub0dyYW51bGFyaXR5
KEZyYW1lJiBmcmFtZSwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcAppbmRleCA5Yjk0NDhjYzY2ZDAwN2E4
ZWMyOTRiYzNiOWVmNWM4MTU2MjFiMTdiLi4xMDM5ODdhZDdlZGE5ODBmODBlNjEyOTZhNjM3YWEx
NGQ5OTcwODM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRD
b21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5k
LmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIGJvb2wgSW5zZXJ0VGV4dENvbW1hbmQ6OnBlcmZvcm1P
dmVyd3JpdGUoY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIHNlbGVjdEluc2VydGVkCiAKICAgICBy
ZXBsYWNlVGV4dEluTm9kZSh0ZXh0Tm9kZSwgc3RhcnQub2Zmc2V0SW5Db250YWluZXJOb2RlKCks
IGNvdW50LCB0ZXh0KTsKIAotICAgIFBvc2l0aW9uIGVuZFBvc2l0aW9uID0gUG9zaXRpb24odGV4
dE5vZGUucmVsZWFzZSgpLCBzdGFydC5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSArIHRleHQubGVu
Z3RoKCkpOworICAgIFBvc2l0aW9uIGVuZFBvc2l0aW9uID0gUG9zaXRpb24oV1RGTW92ZSh0ZXh0
Tm9kZSksIHN0YXJ0Lm9mZnNldEluQ29udGFpbmVyTm9kZSgpICsgdGV4dC5sZW5ndGgoKSk7CiAg
ICAgc2V0RW5kaW5nU2VsZWN0aW9uV2l0aG91dFZhbGlkYXRpb24oc3RhcnQsIGVuZFBvc2l0aW9u
KTsKICAgICBpZiAoIXNlbGVjdEluc2VydGVkVGV4dCkKICAgICAgICAgc2V0RW5kaW5nU2VsZWN0
aW9uKFZpc2libGVTZWxlY3Rpb24oZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpLCBlbmRp
bmdTZWxlY3Rpb24oKS5pc0RpcmVjdGlvbmFsKCkpKTsKQEAgLTI0NSw3ICsyNDUsNyBAQCBQb3Np
dGlvbiBJbnNlcnRUZXh0Q29tbWFuZDo6aW5zZXJ0VGFiKGNvbnN0IFBvc2l0aW9uJiBwb3MpCiAg
ICAgaWYgKGlzVGFiU3BhblRleHROb2RlKG5vZGUpKSB7CiAgICAgICAgIFJlZlB0cjxUZXh0PiB0
ZXh0Tm9kZSA9IGRvd25jYXN0PFRleHQ+KG5vZGUpOwogICAgICAgICBpbnNlcnRUZXh0SW50b05v
ZGUodGV4dE5vZGUsIG9mZnNldCwgIlx0Iik7Ci0gICAgICAgIHJldHVybiBQb3NpdGlvbih0ZXh0
Tm9kZS5yZWxlYXNlKCksIG9mZnNldCArIDEpOworICAgICAgICByZXR1cm4gUG9zaXRpb24oV1RG
TW92ZSh0ZXh0Tm9kZSksIG9mZnNldCArIDEpOwogICAgIH0KICAgICAKICAgICAvLyBjcmVhdGUg
bmV3IHRhYiBzcGFuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5v
ZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwCmluZGV4IGI2MWUyZmZhYWNl
NDI5NGFkM2QyMzZjYjJjZDYyMDRhOTdkZmJjYjMuLjE2ZjBmNjMxMDgwOGQ0MDk2MjYwNGY3MTk2
ZDNmNjdjYTE2NmI3NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3Zl
Tm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwCkBAIC00Nyw5ICs0
Nyw5IEBAIHZvaWQgUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQ6OmRvQXBwbHko
KQogCiAgICAgc2l6ZV90IHNpemUgPSBjaGlsZHJlbi5zaXplKCk7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgUmVmUHRyPE5vZGU+IGNoaWxkID0gV1RG
TW92ZShjaGlsZHJlbltpXSk7CisgICAgICAgIGF1dG8gY2hpbGQgPSBXVEZNb3ZlKGNoaWxkcmVu
W2ldKTsKICAgICAgICAgcmVtb3ZlTm9kZShjaGlsZCwgbV9zaG91bGRBc3N1bWVDb250ZW50SXNB
bHdheXNFZGl0YWJsZSk7Ci0gICAgICAgIGluc2VydE5vZGVCZWZvcmUoY2hpbGQucmVsZWFzZSgp
LCBtX25vZGUsIG1fc2hvdWxkQXNzdW1lQ29udGVudElzQWx3YXlzRWRpdGFibGUpOworICAgICAg
ICBpbnNlcnROb2RlQmVmb3JlKFdURk1vdmUoY2hpbGQpLCBtX25vZGUsIG1fc2hvdWxkQXNzdW1l
Q29udGVudElzQWx3YXlzRWRpdGFibGUpOwogICAgIH0KICAgICByZW1vdmVOb2RlKG1fbm9kZSwg
bV9zaG91bGRBc3N1bWVDb250ZW50SXNBbHdheXNFZGl0YWJsZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IGVkZTg3
ZGIzZmZlOWU1YzI4MTAzMWUxMmFmOGY0YWU4ZGUyZjUyNTYuLjQ5NDQwNWUyNDJmYTc4NmE1N2Qy
MWQyYzcxZmNhYzgyN2RhNTU1OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC0yMjksOSArMjI5LDkgQEAgdm9pZCBSZXBs
YWNlbWVudEZyYWdtZW50OjpyZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuKFBhc3NSZWZQdHI8
Tm9kZT4gbm9kZSkKIAogICAgIHdoaWxlIChSZWZQdHI8Tm9kZT4gbiA9IG5vZGUtPmZpcnN0Q2hp
bGQoKSkgewogICAgICAgICByZW1vdmVOb2RlKG4pOwotICAgICAgICBpbnNlcnROb2RlQmVmb3Jl
KG4ucmVsZWFzZSgpLCBub2RlLmdldCgpKTsKKyAgICAgICAgaW5zZXJ0Tm9kZUJlZm9yZShXVEZN
b3ZlKG4pLCBub2RlLmdldCgpKTsKICAgICB9Ci0gICAgcmVtb3ZlTm9kZShub2RlKTsKKyAgICBy
ZW1vdmVOb2RlKFdURk1vdmUobm9kZSkpOwogfQogCiB2b2lkIFJlcGxhY2VtZW50RnJhZ21lbnQ6
OnJlbW92ZU5vZGUoUGFzc1JlZlB0cjxOb2RlPiBub2RlKQpAQCAtNjc4LDcgKzY3OCw3IEBAIHZv
aWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Om1vdmVOb2RlT3V0T2ZBbmNlc3RvcihQYXNzUmVm
UHRyPE5vZGU+IHBycE5vZGUsIFBhCiAgICAgfQogICAgIGlmICghYW5jZXN0b3ItPmZpcnN0Q2hp
bGQoKSkgewogICAgICAgICBpbnNlcnRlZE5vZGVzLndpbGxSZW1vdmVOb2RlKGFuY2VzdG9yLmdl
dCgpKTsKLSAgICAgICAgcmVtb3ZlTm9kZShhbmNlc3Rvci5yZWxlYXNlKCkpOworICAgICAgICBy
ZW1vdmVOb2RlKFdURk1vdmUoYW5jZXN0b3IpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXggNDdlMWFhN2U5ZDdhMTM3ZTgz
YzA3ZWM0NzBhNTAyNDQxNDI2ZDJlYy4uN2RlM2Q4MDczMGI2MzMyYTUzOGUwZjBmZTUwNzY1OGE0
YzRlMzM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5j
cHAKQEAgLTI4MCw3ICsyODAsNyBAQCBzdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKFNldHRpbmdzKiBzZXR0aW5ncwogICAgIAogYm9v
bCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUoKQogewot
ICAgIHN0YXRpYyBTaGFyZWRCdWZmZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRhID0gY3JlYXRlVGVt
cGxhdGVEb2N1bWVudERhdGEoZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSkucmVsZWFzZSgpLmxlYWtS
ZWYoKTsKKyAgICBzdGF0aWMgU2hhcmVkQnVmZmVyKiB0ZW1wbGF0ZURvY3VtZW50RGF0YSA9IGNy
ZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGRvY3VtZW50KCktPnNldHRpbmdzKCkpLmxlYWtSZWYo
KTsKICAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiBzdG9yaW5nIHRoZSBkYXRhLCBpdCB3b3VsZCBi
ZSBtb3JlIGVmZmljaWVudCBpZiB3ZSBjb3VsZCBwYXJzZSB0aGUgdGVtcGxhdGUgZGF0YSBpbnRv
IHRoZQogICAgIC8vIHRlbXBsYXRlIERvY3VtZW50IG9uY2UsIHN0b3JlIHRoYXQgZG9jdW1lbnQs
IHRoZW4gImNvcHkiIGl0IHdoZW5ldmVyIHdlIGdldCBhbiBGVFAgZGlyZWN0b3J5IGxpc3Rpbmcu
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5jcHAKaW5kZXggMzk4ZDE0
NTdhNTk5YWZiZDUxMWRiMGFkMTY5OTVjZjZhYmViNWM1OS4uYWFiNGQ5NDYxM2Q0NGZkY2Q4NWZl
OGY5ZDBhNDE0MDM2YmRlNDYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9udEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50
LmNwcApAQCAtMTk0LDggKzE5NCw4IEBAIHZvaWQgSFRNTEZvbnRFbGVtZW50Ojpjb2xsZWN0U3R5
bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYKICAgICB9IGVs
c2UgaWYgKG5hbWUgPT0gY29sb3JBdHRyKQogICAgICAgICBhZGRIVE1MQ29sb3JUb1N0eWxlKHN0
eWxlLCBDU1NQcm9wZXJ0eUNvbG9yLCB2YWx1ZSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBmYWNl
QXR0cikgewotICAgICAgICBpZiAoUmVmUHRyPENTU1ZhbHVlTGlzdD4gZm9udEZhY2VWYWx1ZSA9
IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlRm9udEZhY2VWYWx1ZSh2YWx1ZSkpCi0g
ICAgICAgICAgICBzdHlsZS5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRG
YW1pbHksIGZvbnRGYWNlVmFsdWUucmVsZWFzZSgpKSk7CisgICAgICAgIGlmIChhdXRvIGZvbnRG
YWNlVmFsdWUgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUZvbnRGYWNlVmFsdWUo
dmFsdWUpKQorICAgICAgICAgICAgc3R5bGUuc2V0UHJvcGVydHkoQ1NTUHJvcGVydHkoQ1NTUHJv
cGVydHlGb250RmFtaWx5LCBXVEZNb3ZlKGZvbnRGYWNlVmFsdWUpKSk7CiAgICAgfSBlbHNlCiAg
ICAgICAgIEhUTUxFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUo
bmFtZSwgdmFsdWUsIHN0eWxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50
LmNwcAppbmRleCBhYzkyNzI4MWM1MmRkNWViYTRjZTllODkxMmJhN2Y4MThhZDkzYWIzLi42MTNm
ZjJkZjlmZWY1MWFhMTI0MWNkNWQyNTM3NmZjNDcxOTg4M2I0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC0yODQsOCArMjg0LDggQEAgdm9pZCBIVE1MRm9ybUVs
ZW1lbnQ6OnByZXBhcmVGb3JTdWJtaXNzaW9uKEV2ZW50KiBldmVudCkKIAogICAgIFN0cmluZ1Bh
aXJWZWN0b3IgY29udHJvbE5hbWVzQW5kVmFsdWVzOwogICAgIGdldFRleHRGaWVsZFZhbHVlcyhj
b250cm9sTmFtZXNBbmRWYWx1ZXMpOwotICAgIFJlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSA9
IEZvcm1TdGF0ZTo6Y3JlYXRlKHRoaXMsIGNvbnRyb2xOYW1lc0FuZFZhbHVlcywgJmRvY3VtZW50
KCksIE5vdFN1Ym1pdHRlZEJ5SmF2YVNjcmlwdCk7Ci0gICAgZnJhbWUtPmxvYWRlcigpLmNsaWVu
dCgpLmRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChmb3JtU3RhdGUucmVsZWFzZSgpKTsKKyAg
ICBhdXRvIGZvcm1TdGF0ZSA9IEZvcm1TdGF0ZTo6Y3JlYXRlKHRoaXMsIGNvbnRyb2xOYW1lc0Fu
ZFZhbHVlcywgJmRvY3VtZW50KCksIE5vdFN1Ym1pdHRlZEJ5SmF2YVNjcmlwdCk7CisgICAgZnJh
bWUtPmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChXVEZNb3Zl
KGZvcm1TdGF0ZSkpOwogCiAgICAgUmVmPEhUTUxGb3JtRWxlbWVudD4gcHJvdGVjdGVkVGhpcygq
dGhpcyk7CiAgICAgLy8gRXZlbnQgaGFuZGxpbmcgY2FuIHJlc3VsdCBpbiBtX3Nob3VsZFN1Ym1p
dCBiZWNvbWluZyB0cnVlLCByZWdhcmRsZXNzIG9mIGRpc3BhdGNoRXZlbnQoKSByZXR1cm4gdmFs
dWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAppbmRleCAxZjUyNGZk
ZThiN2FmNTAxZTg2ZDk2MDk0NDU5OTVmMTZkNTI3MmE2Li44N2YyYjc2MWY4NzE5YWViNWU2N2Vi
OGFkZTU1ODEwMGMxOGRkNmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVu
dC5jcHAKQEAgLTQzNSwxMiArNDM1LDEyIEBAIHZvaWQgSFRNTFRhYmxlRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyCiAKIHN0
YXRpYyBTdHlsZVByb3BlcnRpZXMqIGxlYWtCb3JkZXJTdHlsZShDU1NWYWx1ZUlEIHZhbHVlKQog
ewotICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHls
ZVByb3BlcnRpZXM6OmNyZWF0ZSgpOworICAgIGF1dG8gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzOjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCb3Jk
ZXJUb3BTdHlsZSwgdmFsdWUpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJv
cmRlckJvdHRvbVN0eWxlLCB2YWx1ZSk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3Bl
cnR5Qm9yZGVyTGVmdFN0eWxlLCB2YWx1ZSk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1By
b3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgdmFsdWUpOwotICAgIHJldHVybiBzdHlsZS5yZWxlYXNl
KCkubGVha1JlZigpOworICAgIHJldHVybiAmc3R5bGUubGVha1JlZigpOwogfQogCiBjb25zdCBT
dHlsZVByb3BlcnRpZXMqIEhUTUxUYWJsZUVsZW1lbnQ6OmFkZGl0aW9uYWxQcmVzZW50YXRpb25B
dHRyaWJ1dGVTdHlsZSgpIGNvbnN0CkBAIC01MzksNyArNTM5LDcgQEAgY29uc3QgU3R5bGVQcm9w
ZXJ0aWVzKiBIVE1MVGFibGVFbGVtZW50OjphZGRpdGlvbmFsQ2VsbFN0eWxlKCkKIAogc3RhdGlj
IFN0eWxlUHJvcGVydGllcyogbGVha0dyb3VwQm9yZGVyU3R5bGUoaW50IHJvd3MpCiB7Ci0gICAg
UmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVy
dGllczo6Y3JlYXRlKCk7CisgICAgYXV0byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6
OmNyZWF0ZSgpOwogICAgIGlmIChyb3dzKSB7CiAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShD
U1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBDU1NWYWx1ZVRoaW4pOwogICAgICAgICBzdHlsZS0+
c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgQ1NTVmFsdWVUaGluKTsK
QEAgLTU1MSw3ICs1NTEsNyBAQCBzdGF0aWMgU3R5bGVQcm9wZXJ0aWVzKiBsZWFrR3JvdXBCb3Jk
ZXJTdHlsZShpbnQgcm93cykKICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5
Qm9yZGVyTGVmdFN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKICAgICAgICAgc3R5bGUtPnNldFByb3Bl
cnR5KENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgQ1NTVmFsdWVTb2xpZCk7CiAgICAgfQot
ICAgIHJldHVybiBzdHlsZS5yZWxlYXNlKCkubGVha1JlZigpOworICAgIHJldHVybiAmc3R5bGUu
bGVha1JlZigpOwogfQogCiBjb25zdCBTdHlsZVByb3BlcnRpZXMqIEhUTUxUYWJsZUVsZW1lbnQ6
OmFkZGl0aW9uYWxHcm91cFN0eWxlKGJvb2wgcm93cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDNhYWQ5YjY1NTI1NTJkZjA1
ZGQyMDZhZWJmNDJhNmRiZjVkNGFlYTQuLmU2MjJkMGRmYzM5MmI1ZWNhMmM0NGIxZjIzOTFlNGZh
YTdjNDkyNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1
bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3Vt
ZW50UGFyc2VyLmNwcApAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2Vy
OjpydW5TY3JpcHRzRm9yUGF1c2VkVHJlZUJ1aWxkZXIoKQogICAgICAgICBBU1NFUlQoIW1fdHJl
ZUJ1aWxkZXItPmhhc1BhcnNlckJsb2NraW5nU2NyaXB0V29yaygpKTsKICAgICAgICAgLy8gV2Ug
d2lsbCBub3QgaGF2ZSBhIHNjcmlwdFJ1bm5lciB3aGVuIHBhcnNpbmcgYSBEb2N1bWVudEZyYWdt
ZW50LgogICAgICAgICBpZiAobV9zY3JpcHRSdW5uZXIpCi0gICAgICAgICAgICBtX3NjcmlwdFJ1
bm5lci0+ZXhlY3V0ZShzY3JpcHRFbGVtZW50LnJlbGVhc2UoKSwgc2NyaXB0U3RhcnRQb3NpdGlv
bik7CisgICAgICAgICAgICBtX3NjcmlwdFJ1bm5lci0+ZXhlY3V0ZShXVEZNb3ZlKHNjcmlwdEVs
ZW1lbnQpLCBzY3JpcHRTdGFydFBvc2l0aW9uKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRUcmFjay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZERhdGFUZXh0VHJhY2suY3BwCmluZGV4IDEzYWNhZDEx
YWVhMDIyYjhlNTBhN2M4MjlhYmY2ZjQ5MWI0ZWNiMGMuLjdiZjI3YWUyMDA2ZDc5Mzg2Nzg4ZTY3
M2RhNjgyMGZlZTA5Yjk4ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
SW5iYW5kRGF0YVRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9J
bmJhbmREYXRhVGV4dFRyYWNrLmNwcApAQCAtNTQsOCArNTQsOCBAQCBJbmJhbmREYXRhVGV4dFRy
YWNrOjp+SW5iYW5kRGF0YVRleHRUcmFjaygpCiAKIHZvaWQgSW5iYW5kRGF0YVRleHRUcmFjazo6
YWRkRGF0YUN1ZShJbmJhbmRUZXh0VHJhY2tQcml2YXRlKiwgY29uc3QgTWVkaWFUaW1lJiBzdGFy
dCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCkKIHsKLSAgICBSZWZQdHI8RGF0YUN1ZT4gY3VlID0gRGF0YUN1ZTo6Y3JlYXRlKCpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksIHN0YXJ0LCBlbmQsIGRhdGEsIGxlbmd0aCk7Ci0gICAgYWRkQ3Vl
KGN1ZS5yZWxlYXNlKCksIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIGF1dG8gY3VlID0gRGF0
YUN1ZTo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHN0YXJ0LCBlbmQsIGRhdGEs
IGxlbmd0aCk7CisgICAgYWRkQ3VlKFdURk1vdmUoY3VlKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7
CiB9CiAKICNpZiBFTkFCTEUoREFUQUNVRV9WQUxVRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwCmluZGV4IDI0OWYxY2NhNGQ4
ZDg0ZTYzZmVlMzFjYzFhNDVlZDJiMzQ2YzI2NWYuLjdkYzAyN2M1NzkyNmNmMDFhN2JlYjhiZTk1
OTFiYWJlNTJjNWQ1ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5i
YW5kR2VuZXJpY1RleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9J
bmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcApAQCAtMjIxLDEzICsyMjEsMTMgQEAgdm9pZCBJbmJh
bmRHZW5lcmljVGV4dFRyYWNrOjpuZXdDdWVzUGFyc2VkKCkKICAgICBwYXJzZXIoKS5nZXROZXdD
dWVzKGN1ZXMpOwogCiAgICAgZm9yIChhdXRvJiBjdWVEYXRhIDogY3VlcykgewotICAgICAgICBS
ZWZQdHI8VlRUQ3VlPiB2dHRDdWUgPSBWVFRDdWU6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCAqY3VlRGF0YSk7CisgICAgICAgIGF1dG8gdnR0Q3VlID0gVlRUQ3VlOjpjcmVhdGUo
KnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKmN1ZURhdGEpOwogCi0gICAgICAgIGlmIChoYXND
dWUodnR0Q3VlLmdldCgpLCBUZXh0VHJhY2tDdWU6Oklnbm9yZUR1cmF0aW9uKSkgeworICAgICAg
ICBpZiAoaGFzQ3VlKHZ0dEN1ZS5wdHIoKSwgVGV4dFRyYWNrQ3VlOjpJZ25vcmVEdXJhdGlvbikp
IHsKICAgICAgICAgICAgIExPRyhNZWRpYSwgIkluYmFuZEdlbmVyaWNUZXh0VHJhY2s6Om5ld0N1
ZXNQYXJzZWQgaWdub3JpbmcgYWxyZWFkeSBhZGRlZCBjdWU6IHN0YXJ0PSUuMmYsIGVuZD0lLjJm
LCBjb250ZW50PVwiJXNcIlxuIiwgdnR0Q3VlLT5zdGFydFRpbWUoKSwgdnR0Q3VlLT5lbmRUaW1l
KCksIHZ0dEN1ZS0+dGV4dCgpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9Ci0gICAgICAgIGFkZEN1ZSh2dHRDdWUucmVsZWFzZSgpLCBBU1NFUlRfTk9fRVhD
RVBUSU9OKTsKKyAgICAgICAgYWRkQ3VlKFdURk1vdmUodnR0Q3VlKSwgQVNTRVJUX05PX0VYQ0VQ
VElPTik7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0lu
YmFuZFdlYlZUVFRleHRUcmFjay5jcHAKaW5kZXggMDlhZWVkNGUxZTU4YWE4OGJhYTU4MDcyY2E5
ZTMxYmU2ZDhhZjI4NC4uOTliNDk0NTg4MTcyMDM2ODNhNThlNThiZjIyM2VlYjY1M2YwMjg4YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJh
Y2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRy
YWNrLmNwcApAQCAtNzYsMTMgKzc2LDEzIEBAIHZvaWQgSW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpu
ZXdDdWVzUGFyc2VkKCkKICAgICBwYXJzZXIoKS5nZXROZXdDdWVzKGN1ZXMpOwogCiAgICAgZm9y
IChhdXRvJiBjdWVEYXRhIDogY3VlcykgewotICAgICAgICBSZWZQdHI8VlRUQ3VlPiB2dHRDdWUg
PSBWVFRDdWU6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqY3VlRGF0YSk7Cisg
ICAgICAgIGF1dG8gdnR0Q3VlID0gVlRUQ3VlOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgKmN1ZURhdGEpOwogCi0gICAgICAgIGlmIChoYXNDdWUodnR0Q3VlLmdldCgpLCBUZXh0
VHJhY2tDdWU6Oklnbm9yZUR1cmF0aW9uKSkgeworICAgICAgICBpZiAoaGFzQ3VlKHZ0dEN1ZS5w
dHIoKSwgVGV4dFRyYWNrQ3VlOjpJZ25vcmVEdXJhdGlvbikpIHsKICAgICAgICAgICAgIExPRyhN
ZWRpYSwgIkluYmFuZFdlYlZUVFRleHRUcmFjazo6bmV3Q3Vlc1BhcnNlZCBpZ25vcmluZyBhbHJl
YWR5IGFkZGVkIGN1ZTogc3RhcnQ9JS4yZiwgZW5kPSUuMmYsIGNvbnRlbnQ9XCIlc1wiXG4iLCB2
dHRDdWUtPnN0YXJ0VGltZSgpLCB2dHRDdWUtPmVuZFRpbWUoKSwgdnR0Q3VlLT50ZXh0KCkudXRm
OCgpLmRhdGEoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgYWRk
Q3VlKHZ0dEN1ZS5yZWxlYXNlKCksIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgICAgICBhZGRD
dWUoV1RGTW92ZSh2dHRDdWUpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICB9CiB9CiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUxpc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVMaXN0LmNwcAppbmRl
eCA2YjM5Mjk5ZGQzOTBhNGI3YzZkNGZiMTNlMDc2MjkwZjJiODFkNjRhLi5mZmQ4ZWFlNGQ5OTM2
NDgwYTZhNWJjMzU5MmZlMDgwYjcxNmUxM2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RleHRUcmFja0N1ZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVGV4dFRyYWNrQ3VlTGlzdC5jcHAKQEAgLTEwMSw5ICsxMDEsOSBAQCBib29sIFRleHRU
cmFja0N1ZUxpc3Q6OmFkZChQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4gcHJwQ3VlLCBzaXplX3Qg
c3RhcnQsIHNpemVfdAogCiAgICAgc2l6ZV90IGluZGV4ID0gKHN0YXJ0ICsgZW5kKSAvIDI7CiAg
ICAgaWYgKGN1ZS0+aXNPcmRlcmVkQmVmb3JlKG1fbGlzdFtpbmRleF0uZ2V0KCkpKQotICAgICAg
ICByZXR1cm4gYWRkKGN1ZS5yZWxlYXNlKCksIHN0YXJ0LCBpbmRleCk7CisgICAgICAgIHJldHVy
biBhZGQoV1RGTW92ZShjdWUpLCBzdGFydCwgaW5kZXgpOwogCi0gICAgcmV0dXJuIGFkZChjdWUu
cmVsZWFzZSgpLCBpbmRleCArIDEsIGVuZCk7CisgICAgcmV0dXJuIGFkZChXVEZNb3ZlKGN1ZSks
IGluZGV4ICsgMSwgZW5kKTsKIH0KIAogYm9vbCBUZXh0VHJhY2tDdWVMaXN0OjpyZW1vdmUoVGV4
dFRyYWNrQ3VlKiBjdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmNwcAppbmRleCAwNTQ4MGNhMjAzYjM4OGQ5YTk1YmQzNDdjODUzYzViNmE0NWJmNjRj
Li5jN2M2ZDZmNGU2OTcwZWFhMWRlYTM1OWYxYjdjZTg2OGIxNWE1OWYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTYzMSw4ICs2MzEs
MTAgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0SW5saW5lU3R5bGVzRm9yTm9kZShFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2QKICAgICAgICAgcmV0dXJuOwogCiAgICAgaW5s
aW5lU3R5bGUgPSBzdHlsZVNoZWV0LT5idWlsZE9iamVjdEZvclN0eWxlKGVsZW1lbnQtPmNzc29t
U3R5bGUoKSk7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+
IGF0dHJpYnV0ZXMgPSBidWlsZE9iamVjdEZvckF0dHJpYnV0ZXNTdHlsZShlbGVtZW50KTsKLSAg
ICBhdHRyaWJ1dGVzU3R5bGUgPSBhdHRyaWJ1dGVzID8gYXR0cmlidXRlcy5yZWxlYXNlKCkgOiBu
dWxscHRyOworICAgIGlmIChhdXRvIGF0dHJpYnV0ZXMgPSBidWlsZE9iamVjdEZvckF0dHJpYnV0
ZXNTdHlsZShlbGVtZW50KSkKKyAgICAgICAgYXR0cmlidXRlc1N0eWxlID0gV1RGTW92ZShhdHRy
aWJ1dGVzKTsKKyAgICBlbHNlCisgICAgICAgIGF0dHJpYnV0ZXNTdHlsZSA9IG51bGxwdHI7CiB9
CiAKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldENvbXB1dGVkU3R5bGVGb3JOb2RlKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3Bl
cnR5Pj4mIHN0eWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5jcHAKaW5kZXggZDBjM2RhMTdhNmM5Y2NkMGQxZDgyOTEyZmMyNTU3NmY2OTgzMTY3Yi4u
ODdkMDJhY2ZjN2ZlMmE1YzI4YjkxMDQ0YTM2ZGU4ZDdlYjAzOWRjNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC00NjIsOCArNDYyLDgg
QEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cHVzaENoaWxkTm9kZXNUb0Zyb250ZW5kKGludCBu
b2RlSWQsIGludCBkZXB0aCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+
PiBjaGlsZHJlbiA9IGJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihub2RlLCBkZXB0aCwg
bm9kZU1hcCk7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnNldENoaWxkTm9kZXMobm9kZUlk
LCBjaGlsZHJlbi5yZWxlYXNlKCkpOworICAgIGF1dG8gY2hpbGRyZW4gPSBidWlsZEFycmF5Rm9y
Q29udGFpbmVyQ2hpbGRyZW4obm9kZSwgZGVwdGgsIG5vZGVNYXApOworICAgIG1fZnJvbnRlbmRE
aXNwYXRjaGVyLT5zZXRDaGlsZE5vZGVzKG5vZGVJZCwgV1RGTW92ZShjaGlsZHJlbikpOwogfQog
CiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaXNjYXJkQmluZGluZ3MoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKaW5kZXgg
ZWJlZGU5ZGY5YTA1MzcwMTY4ZWE0NGNhZTJmMDRjZTg3OGJlZmE3OS4uMzM3MDU0NjdjM2I1YzBh
MTc5NDZkZmUxNjk2NGViZDdmYTUzNDgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCkBAIC0zMzAsNyArMzMwLDcgQEAg
c3RhdGljIFJlZlB0cjxJREJLZXk+IGlkYktleUZyb21JbnNwZWN0b3JPYmplY3QoSW5zcGVjdG9y
T2JqZWN0KiBrZXkpCiAgICAgfSBlbHNlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
cmV0dXJuIGlkYktleS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGlkYktleTsKIH0KIAogc3RhdGlj
IFJlZlB0cjxJREJLZXlSYW5nZT4gaWRiS2V5UmFuZ2VGcm9tS2V5UmFuZ2UoY29uc3QgSW5zcGVj
dG9yT2JqZWN0KiBrZXlSYW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggNDMxNTRiMzk3NGRhN2E5NzlhMjZkMTgyOWM3
MWQ0MTliNjI3Y2Q3NS4uOTE4Njg2ZWEzMmVmMGZlMGJjNDE4NWRiYjgyYjhmMDcxZjhjNDZlZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5jcHAKQEAgLTY4Miw3ICs2ODIsNyBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6bG9h
ZFJlc291cmNlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJgogICAgIC8v
IEluc3BlY3RvclRocmVhZGFibGVMb2FkZXJDbGllbnQgZGVsZXRlcyBpdHNlbGYgd2hlbiB0aGUg
bG9hZCBjb21wbGV0ZXMuCiAgICAgSW5zcGVjdG9yVGhyZWFkYWJsZUxvYWRlckNsaWVudCogaW5z
cGVjdG9yVGhyZWFkYWJsZUxvYWRlckNsaWVudCA9IG5ldyBJbnNwZWN0b3JUaHJlYWRhYmxlTG9h
ZGVyQ2xpZW50KGNhbGxiYWNrLmNvcHlSZWYoKSk7CiAKLSAgICBSZWZQdHI8RG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyPiBsb2FkZXIgPSBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSgq
ZG9jdW1lbnQsICppbnNwZWN0b3JUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LCByZXF1ZXN0LCBvcHRp
b25zKTsKKyAgICBhdXRvIGxvYWRlciA9IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRl
KCpkb2N1bWVudCwgKmluc3BlY3RvclRocmVhZGFibGVMb2FkZXJDbGllbnQsIHJlcXVlc3QsIG9w
dGlvbnMpOwogICAgIGlmICghbG9hZGVyKSB7CiAgICAgICAgIGluc3BlY3RvclRocmVhZGFibGVM
b2FkZXJDbGllbnQtPmRpZEZhaWxMb2FkZXJDcmVhdGlvbigpOwogICAgICAgICByZXR1cm47CkBA
IC02OTIsNyArNjkyLDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmxvYWRSZXNvdXJj
ZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYKICAgICBpZiAoIWNhbGxi
YWNrLT5pc0FjdGl2ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpbnNwZWN0b3JUaHJlYWRh
YmxlTG9hZGVyQ2xpZW50LT5zZXRMb2FkZXIobG9hZGVyLnJlbGVhc2UoKSk7CisgICAgaW5zcGVj
dG9yVGhyZWFkYWJsZUxvYWRlckNsaWVudC0+c2V0TG9hZGVyKFdURk1vdmUobG9hZGVyKSk7CiB9
CiAKIHN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0PiBi
dWlsZE9iamVjdEZvclNlYXJjaFJlc3VsdChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3Qg
U3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCwgaW50IG1hdGNoZXNDb3VudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRl
eCA2ZDU3M2NlOWMxMWZjNWQyM2ZlNzc4ZDU2ZjczNDEzM2E0MjU4YjMzLi43ZGU5OGFhZDI5ODhi
NzZhNmU1NjZiNDAwZWMxZGIwNDc1NWI5ZTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC05MjUsNyArOTI1LDcgQEAgUmVmPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U2VsZWN0b3JMaXN0PiBJbnNwZWN0b3JTdHlsZVNoZWV0
OjpidWlsZE9iamVjdEZvclMKICAgICAgICAgICAgIHNlbGVjdG9ycy0+YWRkSXRlbShidWlsZE9i
amVjdEZvclNlbGVjdG9yKHNlbGVjdG9yLCBlbGVtZW50KSk7CiAgICAgfQogICAgIGF1dG8gcmVz
dWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTZWxlY3Rvckxpc3Q6OmNyZWF0ZSgpCi0g
ICAgICAgIC5zZXRTZWxlY3RvcnMoc2VsZWN0b3JzLnJlbGVhc2UoKSkKKyAgICAgICAgLnNldFNl
bGVjdG9ycyhXVEZNb3ZlKHNlbGVjdG9ycykpCiAgICAgICAgIC5zZXRUZXh0KHNlbGVjdG9yVGV4
dCkKICAgICAgICAgLnJlbGVhc2UoKTsKICAgICBpZiAoc291cmNlRGF0YSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCmluZGV4IGJlYzEyMjNkNzY2Y2EyYjczMGQ4ZTkw
MWM4NWI2MzJmMDMwMGQ2ZTMuLjQxMjA2MDk4MzBkNDM1ZjY0NThkODZmMGEyY2Y3OWNmNjY3YTY0
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcApAQCAtMjM4LDgg
KzIzOCw4IEBAIFJlZjxGb3JtU3VibWlzc2lvbj4gRm9ybVN1Ym1pc3Npb246OmNyZWF0ZShIVE1M
Rm9ybUVsZW1lbnQqIGZvcm0sIGNvbnN0IEF0dHJpYnV0CiAgICAgZm9ybURhdGEtPnNldElkZW50
aWZpZXIoZ2VuZXJhdGVGb3JtRGF0YUlkZW50aWZpZXIoKSk7CiAgICAgZm9ybURhdGEtPnNldENv
bnRhaW5zUGFzc3dvcmREYXRhKGNvbnRhaW5zUGFzc3dvcmREYXRhKTsKICAgICBTdHJpbmcgdGFy
Z2V0T3JCYXNlVGFyZ2V0ID0gY29waWVkQXR0cmlidXRlcy50YXJnZXQoKS5pc0VtcHR5KCkgPyBk
b2N1bWVudC5iYXNlVGFyZ2V0KCkgOiBjb3BpZWRBdHRyaWJ1dGVzLnRhcmdldCgpOwotICAgIFJl
ZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSA9IEZvcm1TdGF0ZTo6Y3JlYXRlKGZvcm0sIGZvcm1W
YWx1ZXMsICZkb2N1bWVudCwgdHJpZ2dlcik7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9y
bVN1Ym1pc3Npb24oY29waWVkQXR0cmlidXRlcy5tZXRob2QoKSwgYWN0aW9uVVJMLCB0YXJnZXRP
ckJhc2VUYXJnZXQsIGVuY29kaW5nVHlwZSwgZm9ybVN0YXRlLnJlbGVhc2UoKSwgZm9ybURhdGEu
cmVsZWFzZSgpLCBib3VuZGFyeSwgbG9ja0hpc3RvcnksIGV2ZW50KSk7CisgICAgYXV0byBmb3Jt
U3RhdGUgPSBGb3JtU3RhdGU6OmNyZWF0ZShmb3JtLCBmb3JtVmFsdWVzLCAmZG9jdW1lbnQsIHRy
aWdnZXIpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvcm1TdWJtaXNzaW9uKGNvcGllZEF0
dHJpYnV0ZXMubWV0aG9kKCksIGFjdGlvblVSTCwgdGFyZ2V0T3JCYXNlVGFyZ2V0LCBlbmNvZGlu
Z1R5cGUsIFdURk1vdmUoZm9ybVN0YXRlKSwgV1RGTW92ZShmb3JtRGF0YSksIGJvdW5kYXJ5LCBs
b2NrSGlzdG9yeSwgZXZlbnQpKTsKIH0KIAogVVJMIEZvcm1TdWJtaXNzaW9uOjpyZXF1ZXN0VVJM
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGQ4NmE0NDU1
YmY3ZjFmZjNjNjM4YWY2ZTc0YjRhOTZjNTg4NGM2NWUuLmQyYmUyMzJlMDZkZmExZTc4YWNlYzA4
NDNjZGFlZWU0Njg2ZDRhZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApA
QCAtODc0LDkgKzg3NCw5IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkxJbnRvQ2hpbGRGcmFt
ZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcmVyLCBGCiAgICAgQVNTRVJUKGNo
aWxkRnJhbWUpOwogCiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCi0g
ICAgUmVmUHRyPEFyY2hpdmU+IHN1YmZyYW1lQXJjaGl2ZSA9IGFjdGl2ZURvY3VtZW50TG9hZGVy
KCktPnBvcEFyY2hpdmVGb3JTdWJmcmFtZShjaGlsZEZyYW1lLT50cmVlKCkudW5pcXVlTmFtZSgp
LCB1cmwpOworICAgIGF1dG8gc3ViZnJhbWVBcmNoaXZlID0gYWN0aXZlRG9jdW1lbnRMb2FkZXIo
KS0+cG9wQXJjaGl2ZUZvclN1YmZyYW1lKGNoaWxkRnJhbWUtPnRyZWUoKS51bmlxdWVOYW1lKCks
IHVybCk7CiAgICAgaWYgKHN1YmZyYW1lQXJjaGl2ZSkgewotICAgICAgICBjaGlsZEZyYW1lLT5s
b2FkZXIoKS5sb2FkQXJjaGl2ZShzdWJmcmFtZUFyY2hpdmUucmVsZWFzZSgpKTsKKyAgICAgICAg
Y2hpbGRGcmFtZS0+bG9hZGVyKCkubG9hZEFyY2hpdmUoV1RGTW92ZShzdWJmcmFtZUFyY2hpdmUp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FSQ0hJVkUp
CkBAIC0xMjE0LDcgKzEyMTQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMKGNvbnN0IEZy
YW1lTG9hZFJlcXVlc3QmIGZyYW1lTG9hZFJlcXVlc3QsIGNvbnN0IFN0cmluZwogICAgIGlmICh0
YXJnZXRGcmFtZSAmJiB0YXJnZXRGcmFtZSAhPSAmbV9mcmFtZSkgewogICAgICAgICBGcmFtZUxv
YWRSZXF1ZXN0IG5ld0ZyYW1lTG9hZFJlcXVlc3QoZnJhbWVMb2FkUmVxdWVzdCk7CiAgICAgICAg
IG5ld0ZyYW1lTG9hZFJlcXVlc3Quc2V0RnJhbWVOYW1lKCJfc2VsZiIpOwotICAgICAgICB0YXJn
ZXRGcmFtZS0+bG9hZGVyKCkubG9hZFVSTChuZXdGcmFtZUxvYWRSZXF1ZXN0LCByZWZlcnJlciwg
bmV3TG9hZFR5cGUsIGV2ZW50LCBmb3JtU3RhdGUucmVsZWFzZSgpKTsKKyAgICAgICAgdGFyZ2V0
RnJhbWUtPmxvYWRlcigpLmxvYWRVUkwobmV3RnJhbWVMb2FkUmVxdWVzdCwgcmVmZXJyZXIsIG5l
d0xvYWRUeXBlLCBldmVudCwgV1RGTW92ZShmb3JtU3RhdGUpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtMTIyNSw3ICsxMjI1LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTChj
b25zdCBGcmFtZUxvYWRSZXF1ZXN0JiBmcmFtZUxvYWRSZXF1ZXN0LCBjb25zdCBTdHJpbmcKIAog
ICAgIGlmICghdGFyZ2V0RnJhbWUgJiYgIWZyYW1lTmFtZS5pc0VtcHR5KCkpIHsKICAgICAgICAg
YWN0aW9uID0gYWN0aW9uLmNvcHlXaXRoU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeShzaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9BcHBseShtX2ZyYW1lLCBmcmFtZUxvYWRSZXF1ZXN0
LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSkpOwotICAgICAgICBwb2xpY3lDaGVja2Vy
KCkuY2hlY2tOZXdXaW5kb3dQb2xpY3koYWN0aW9uLCByZXF1ZXN0LCBmb3JtU3RhdGUucmVsZWFz
ZSgpLCBmcmFtZU5hbWUsIFt0aGlzLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIG9wZW5l
clBvbGljeV0oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1T
dGF0ZT4gZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgTmF2aWdhdGlv
bkFjdGlvbiYgYWN0aW9uLCBib29sIHNob3VsZENvbnRpbnVlKSB7CisgICAgICAgIHBvbGljeUNo
ZWNrZXIoKS5jaGVja05ld1dpbmRvd1BvbGljeShhY3Rpb24sIHJlcXVlc3QsIFdURk1vdmUoZm9y
bVN0YXRlKSwgZnJhbWVOYW1lLCBbdGhpcywgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBv
cGVuZXJQb2xpY3ldKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFzc1JlZlB0cjxG
b3JtU3RhdGU+IGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IE5hdmln
YXRpb25BY3Rpb24mIGFjdGlvbiwgYm9vbCBzaG91bGRDb250aW51ZSkgewogICAgICAgICAgICAg
Y29udGludWVMb2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3kocmVxdWVzdCwgZm9ybVN0YXRlLCBmcmFt
ZU5hbWUsIGFjdGlvbiwgc2hvdWxkQ29udGludWUsIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVS
TCwgb3BlbmVyUG9saWN5KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKQEAgLTEyNDQs
NyArMTI0NCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwoY29uc3QgRnJhbWVMb2FkUmVx
dWVzdCYgZnJhbWVMb2FkUmVxdWVzdCwgY29uc3QgU3RyaW5nCiAgICAgICAgIG9sZERvY3VtZW50
TG9hZGVyLT5zZXRMYXN0Q2hlY2tlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KCkpOwogICAgICAg
ICBwb2xpY3lDaGVja2VyKCkuc3RvcENoZWNrKCk7CiAgICAgICAgIHBvbGljeUNoZWNrZXIoKS5z
ZXRMb2FkVHlwZShuZXdMb2FkVHlwZSk7Ci0gICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05h
dmlnYXRpb25Qb2xpY3kocmVxdWVzdCwgZmFsc2UgLyogZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9u
c2UgKi8sIG9sZERvY3VtZW50TG9hZGVyLmdldCgpLCBmb3JtU3RhdGUucmVsZWFzZSgpLCBbdGhp
c10oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4s
IGJvb2wgc2hvdWxkQ29udGludWUpIHsKKyAgICAgICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmF2
aWdhdGlvblBvbGljeShyZXF1ZXN0LCBmYWxzZSAvKiBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25z
ZSAqLywgb2xkRG9jdW1lbnRMb2FkZXIuZ2V0KCksIFdURk1vdmUoZm9ybVN0YXRlKSwgW3RoaXNd
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBi
b29sIHNob3VsZENvbnRpbnVlKSB7CiAgICAgICAgICAgICBjb250aW51ZUZyYWdtZW50U2Nyb2xs
QWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KHJlcXVlc3QsIHNob3VsZENvbnRpbnVlKTsKICAgICAgICAg
fSk7CiAgICAgICAgIHJldHVybjsKQEAgLTEyNTIsNyArMTI1Miw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OmxvYWRVUkwoY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVMb2FkUmVxdWVzdCwgY29u
c3QgU3RyaW5nCiAKICAgICAvLyBtdXN0IGdyYWIgdGhpcyBub3csIHNpbmNlIHRoaXMgbG9hZCBt
YXkgc3RvcCB0aGUgcHJldmlvdXMgbG9hZCBhbmQgY2xlYXIgdGhpcyBmbGFnCiAgICAgYm9vbCBp
c1JlZGlyZWN0ID0gbV9xdWlja1JlZGlyZWN0Q29taW5nOwotICAgIGxvYWRXaXRoTmF2aWdhdGlv
bkFjdGlvbihyZXF1ZXN0LCBhY3Rpb24sIGxvY2tIaXN0b3J5LCBuZXdMb2FkVHlwZSwgZm9ybVN0
YXRlLnJlbGVhc2UoKSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKKyAgICBsb2FkV2l0
aE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdCwgYWN0aW9uLCBsb2NrSGlzdG9yeSwgbmV3TG9hZFR5
cGUsIFdURk1vdmUoZm9ybVN0YXRlKSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKICAg
ICBpZiAoaXNSZWRpcmVjdCkgewogICAgICAgICBtX3F1aWNrUmVkaXJlY3RDb21pbmcgPSBmYWxz
ZTsKICAgICAgICAgaWYgKG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcikKQEAgLTI3MDIsMTEg
KzI3MDIsMTEgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KGNvbnN0IEZyYW1l
TG9hZFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYKICAgICBpZiAoIWZyYW1lTmFtZS5p
c0VtcHR5KCkpIHsKICAgICAgICAgLy8gVGhlIHNlYXJjaCBmb3IgYSB0YXJnZXQgZnJhbWUgaXMg
ZG9uZSBlYXJsaWVyIGluIHRoZSBjYXNlIG9mIGZvcm0gc3VibWlzc2lvbi4KICAgICAgICAgaWYg
KEZyYW1lKiB0YXJnZXRGcmFtZSA9IGZvcm1TdGF0ZSA/IDAgOiBmaW5kRnJhbWVGb3JOYXZpZ2F0
aW9uKGZyYW1lTmFtZSkpIHsKLSAgICAgICAgICAgIHRhcmdldEZyYW1lLT5sb2FkZXIoKS5sb2Fk
V2l0aE5hdmlnYXRpb25BY3Rpb24od29ya2luZ1Jlc291cmNlUmVxdWVzdCwgYWN0aW9uLCBsb2Nr
SGlzdG9yeSwgbG9hZFR5cGUsIGZvcm1TdGF0ZS5yZWxlYXNlKCksIGFsbG93TmF2aWdhdGlvblRv
SW52YWxpZFVSTCk7CisgICAgICAgICAgICB0YXJnZXRGcmFtZS0+bG9hZGVyKCkubG9hZFdpdGhO
YXZpZ2F0aW9uQWN0aW9uKHdvcmtpbmdSZXNvdXJjZVJlcXVlc3QsIGFjdGlvbiwgbG9ja0hpc3Rv
cnksIGxvYWRUeXBlLCBXVEZNb3ZlKGZvcm1TdGF0ZSksIGFsbG93TmF2aWdhdGlvblRvSW52YWxp
ZFVSTCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBwb2xpY3lD
aGVja2VyKCkuY2hlY2tOZXdXaW5kb3dQb2xpY3koYWN0aW9uLCB3b3JraW5nUmVzb3VyY2VSZXF1
ZXN0LCBmb3JtU3RhdGUucmVsZWFzZSgpLCBmcmFtZU5hbWUsIFt0aGlzLCBhbGxvd05hdmlnYXRp
b25Ub0ludmFsaWRVUkwsIG9wZW5lclBvbGljeV0oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1l
TmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBib29sIHNob3VsZENvbnRpbnVl
KSB7CisgICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05ld1dpbmRvd1BvbGljeShhY3Rpb24s
IHdvcmtpbmdSZXNvdXJjZVJlcXVlc3QsIFdURk1vdmUoZm9ybVN0YXRlKSwgZnJhbWVOYW1lLCBb
dGhpcywgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBvcGVuZXJQb2xpY3ldKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSwg
Y29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwg
Ym9vbCBzaG91bGRDb250aW51ZSkgewogICAgICAgICAgICAgY29udGludWVMb2FkQWZ0ZXJOZXdX
aW5kb3dQb2xpY3kocmVxdWVzdCwgZm9ybVN0YXRlLCBmcmFtZU5hbWUsIGFjdGlvbiwgc2hvdWxk
Q29udGludWUsIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgb3BlbmVyUG9saWN5KTsKICAg
ICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKQEAgLTI3MTQsNyArMjcxNCw3IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdChjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBTdHJpbmcmCiAKICAgICAvLyBtdXN0IGdyYWIgdGhpcyBub3csIHNpbmNlIHRoaXMg
bG9hZCBtYXkgc3RvcCB0aGUgcHJldmlvdXMgbG9hZCBhbmQgY2xlYXIgdGhpcyBmbGFnCiAgICAg
Ym9vbCBpc1JlZGlyZWN0ID0gbV9xdWlja1JlZGlyZWN0Q29taW5nOwotICAgIGxvYWRXaXRoTmF2
aWdhdGlvbkFjdGlvbih3b3JraW5nUmVzb3VyY2VSZXF1ZXN0LCBhY3Rpb24sIGxvY2tIaXN0b3J5
LCBsb2FkVHlwZSwgZm9ybVN0YXRlLnJlbGVhc2UoKSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlk
VVJMKTsKKyAgICBsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24od29ya2luZ1Jlc291cmNlUmVxdWVz
dCwgYWN0aW9uLCBsb2NrSGlzdG9yeSwgbG9hZFR5cGUsIFdURk1vdmUoZm9ybVN0YXRlKSwgYWxs
b3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKICAgICBpZiAoaXNSZWRpcmVjdCkgewogICAgICAg
ICBtX3F1aWNrUmVkaXJlY3RDb21pbmcgPSBmYWxzZTsKICAgICAgICAgaWYgKG1fcHJvdmlzaW9u
YWxEb2N1bWVudExvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9n
cmVzc1RyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5j
cHAKaW5kZXggZDU2Y2EwNWRiOTkwYjMwYTZiMDdkMTJmYjJjMDllOTk2Yjc5NzIwZi4uNzUyZWVm
YzM3ODA2ODRkM2I1NWM2NDllMzAwYjYzOGQ4NjNjZDIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIFByb2dyZXNz
VHJhY2tlcjo6ZmluYWxQcm9ncmVzc0NvbXBsZXRlKCkKIHsKICAgICBMT0coUHJvZ3Jlc3MsICJG
aW5hbCBwcm9ncmVzcyBjb21wbGV0ZSAoJXApIiwgdGhpcyk7CiAgICAgCi0gICAgUmVmUHRyPEZy
YW1lPiBmcmFtZSA9IG1fb3JpZ2luYXRpbmdQcm9ncmVzc0ZyYW1lLnJlbGVhc2UoKTsKKyAgICBh
dXRvIGZyYW1lID0gV1RGTW92ZShtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZSk7CiAgICAgCiAg
ICAgLy8gQmVmb3JlIHJlc2V0dGluZyBwcm9ncmVzcyB2YWx1ZSBiZSBzdXJlIHRvIHNlbmQgY2xp
ZW50IGEgbGVhc3Qgb25lIG5vdGlmaWNhdGlvbgogICAgIC8vIHdpdGggZmluYWwgcHJvZ3Jlc3Mg
dmFsdWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDU5NGNjZTZjYTYzYTdhOTU1M2YwYTEzY2I4NzU1
NmYwNTlhYWY3NGEuLjM3YWM3NWRiZjUwMWM0OGI2NmQwNWJlNDU5NTNhNTYxN2NmOTJlMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
R3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlR3JvdXAuY3BwCkBAIC0zNjksNyArMzY5LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hl
R3JvdXA6OmRpc2Fzc29jaWF0ZURvY3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVyKiBsb2FkZXIp
CiAKICAgICAvLyBSZWxlYXNlIG91ciByZWZlcmVuY2UgdG8gdGhlIG5ld2VzdCBjYWNoZS4gVGhp
cyBjb3VsZCBjYXVzZSB1cyB0byBiZSBkZWxldGVkLgogICAgIC8vIEFueSBvbmdvaW5nIHVwZGF0
ZXMgd2lsbCBiZSBzdG9wcGVkIGZyb20gZGVzdHJ1Y3Rvci4KLSAgICBtX25ld2VzdENhY2hlLnJl
bGVhc2UoKTsKKyAgICBtX25ld2VzdENhY2hlID0gbnVsbHB0cjsKIH0KIAogdm9pZCBBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OmNhY2hlRGVzdHJveWVkKEFwcGxpY2F0aW9uQ2FjaGUqIGNhY2hlKQpA
QCAtNTk0LDcgKzU5NCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hM
b2FkaW5nKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGRvdWJsZSBmaW5pCiAgICAgCiAgICAgQVNT
RVJUKG1fY2FjaGVCZWluZ1VwZGF0ZWQpOwogCi0gICAgbV9jYWNoZUJlaW5nVXBkYXRlZC0+YWRk
UmVzb3VyY2UobV9jdXJyZW50UmVzb3VyY2UucmVsZWFzZSgpKTsKKyAgICBtX2NhY2hlQmVpbmdV
cGRhdGVkLT5hZGRSZXNvdXJjZShXVEZNb3ZlKG1fY3VycmVudFJlc291cmNlKSk7CiAgICAgbV9j
dXJyZW50SGFuZGxlID0gbnVsbHB0cjsKIAogICAgIC8vIFdoaWxlIGRvd25sb2FkaW5nIGNoZWNr
IHRvIHNlZSBpZiB3ZSBoYXZlIGV4Y2VlZGVkIHRoZSBhdmFpbGFibGUgcXVvdGEuCkBAIC04Njgs
NyArODY4LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNoZWNrSWZMb2FkSXNDb21w
bGV0ZSgpCiAKICAgICAgICAgQVNTRVJUKG1fY2FjaGVCZWluZ1VwZGF0ZWQpOwogICAgICAgICBp
ZiAobV9tYW5pZmVzdFJlc291cmNlKQotICAgICAgICAgICAgbV9jYWNoZUJlaW5nVXBkYXRlZC0+
c2V0TWFuaWZlc3RSZXNvdXJjZShtX21hbmlmZXN0UmVzb3VyY2UucmVsZWFzZSgpKTsKKyAgICAg
ICAgICAgIG1fY2FjaGVCZWluZ1VwZGF0ZWQtPnNldE1hbmlmZXN0UmVzb3VyY2UoV1RGTW92ZSht
X21hbmlmZXN0UmVzb3VyY2UpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvLyBXZSBj
YW4gZ2V0IGhlcmUgYXMgYSByZXN1bHQgb2YgcmV0cnlpbmcgdGhlIENvbXBsZXRlIHN0ZXAsIGZv
bGxvd2luZwogICAgICAgICAgICAgLy8gYSBmYWlsdXJlIG9mIHRoZSBjYWNoZSBzdG9yYWdlIHRv
IHNhdmUgdGhlIG5ld2VzdCBjYWNoZSBkdWUgdG8gaGl0dGluZwpAQCAtODg4LDcgKzg4OCw3IEBA
IHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpjaGVja0lmTG9hZElzQ29tcGxldGUoKQogICAg
ICAgICAgICAgZGlkUmVhY2hPcmlnaW5RdW90YSh0b3RhbFNwYWNlTmVlZGVkKTsKIAogICAgICAg
ICBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6RmFpbHVyZVJlYXNvbiBmYWlsdXJlUmVhc29uOwot
ICAgICAgICBzZXROZXdlc3RDYWNoZShtX2NhY2hlQmVpbmdVcGRhdGVkLnJlbGVhc2UoKSk7Cisg
ICAgICAgIHNldE5ld2VzdENhY2hlKFdURk1vdmUobV9jYWNoZUJlaW5nVXBkYXRlZCkpOwogICAg
ICAgICBpZiAobV9zdG9yYWdlLT5zdG9yZU5ld2VzdENhY2hlKHRoaXMsIG9sZE5ld2VzdENhY2hl
LmdldCgpLCBmYWlsdXJlUmVhc29uKSkgewogICAgICAgICAgICAgLy8gTmV3IGNhY2hlIHN0b3Jl
ZCwgbm93IHJlbW92ZSB0aGUgb2xkIGNhY2hlLgogICAgICAgICAgICAgaWYgKG9sZE5ld2VzdENh
Y2hlKQpAQCAtOTE5LDEwICs5MTksMTAgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNo
ZWNrSWZMb2FkSXNDb21wbGV0ZSgpCiAgICAgICAgICAgICAgICAgLy8gc2F2ZSB0aGUgbmV3IGNh
Y2hlLgogCiAgICAgICAgICAgICAgICAgLy8gU2F2ZSBhIHJlZmVyZW5jZSB0byB0aGUgbmV3IGNh
Y2hlLgotICAgICAgICAgICAgICAgIG1fY2FjaGVCZWluZ1VwZGF0ZWQgPSBtX25ld2VzdENhY2hl
LnJlbGVhc2UoKTsKKyAgICAgICAgICAgICAgICBtX2NhY2hlQmVpbmdVcGRhdGVkID0gV1RGTW92
ZShtX25ld2VzdENhY2hlKTsKICAgICAgICAgICAgICAgICBpZiAob2xkTmV3ZXN0Q2FjaGUpIHsK
ICAgICAgICAgICAgICAgICAgICAgLy8gUmVpbnN0YXRlIHRoZSBvbGROZXdlc3RDYWNoZS4KLSAg
ICAgICAgICAgICAgICAgICAgc2V0TmV3ZXN0Q2FjaGUob2xkTmV3ZXN0Q2FjaGUucmVsZWFzZSgp
KTsKKyAgICAgICAgICAgICAgICAgICAgc2V0TmV3ZXN0Q2FjaGUoV1RGTW92ZShvbGROZXdlc3RD
YWNoZSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBzY2hlZHVsZVJlYWNo
ZWRNYXhBcHBDYWNoZVNpemVDYWxsYmFjaygpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAg
LTk0NSw3ICs5NDUsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2hlY2tJZkxvYWRJ
c0NvbXBsZXRlKCkKICAgICAgICAgICAgIC8vIFJlaW5zdGF0ZSB0aGUgb2xkTmV3ZXN0Q2FjaGUs
IGlmIHRoZXJlIHdhcyBvbmUuCiAgICAgICAgICAgICBpZiAob2xkTmV3ZXN0Q2FjaGUpIHsKICAg
ICAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgZGlzY2FyZCB0aGUgZmFpbGVkIG5ldyBjYWNoZS4K
LSAgICAgICAgICAgICAgICBzZXROZXdlc3RDYWNoZShvbGROZXdlc3RDYWNoZS5yZWxlYXNlKCkp
OworICAgICAgICAgICAgICAgIHNldE5ld2VzdENhY2hlKFdURk1vdmUob2xkTmV3ZXN0Q2FjaGUp
KTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gV2UgbXVzdCBoYXZl
IGJlZW4gZGVsZXRlZCBieSB0aGUgbGFzdCBjYWxsIHRvIGRpc2Fzc29jaWF0ZURvY3VtZW50TG9h
ZGVyKCkuCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXgg
NTA0ZGE3ZmZjNGM1ZmNlZDY1YWQ5MjE4NDVlMzc5ZGM0ODY1NDEyYy4uMGRkYTU2NDVkYWFmNDdi
NzEyZjA0MGZmM2JlYmZmOWI3ZGM1YmU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC0xMjEs
MTQgKzEyMSwxNCBAQCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpsb2FkQ2FjaGVHcm91cChjb25zdCBVUkwmIG1hbmlmZQogICAgIAogICAgIHVuc2lnbmVk
IG5ld2VzdENhY2hlU3RvcmFnZUlEID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXRlbWVudC5n
ZXRDb2x1bW5JbnQ2NCgyKSk7CiAKLSAgICBSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gY2FjaGUg
PSBsb2FkQ2FjaGUobmV3ZXN0Q2FjaGVTdG9yYWdlSUQpOworICAgIGF1dG8gY2FjaGUgPSBsb2Fk
Q2FjaGUobmV3ZXN0Q2FjaGVTdG9yYWdlSUQpOwogICAgIGlmICghY2FjaGUpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgICAgICAKICAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGdyb3Vw
ID0gbmV3IEFwcGxpY2F0aW9uQ2FjaGVHcm91cCgqdGhpcywgbWFuaWZlc3RVUkwpOwogICAgICAg
CiAgICAgZ3JvdXAtPnNldFN0b3JhZ2VJRChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhdGVtZW50
LmdldENvbHVtbkludDY0KDApKSk7Ci0gICAgZ3JvdXAtPnNldE5ld2VzdENhY2hlKGNhY2hlLnJl
bGVhc2UoKSk7CisgICAgZ3JvdXAtPnNldE5ld2VzdENhY2hlKFdURk1vdmUoY2FjaGUpKTsKIAog
ICAgIHJldHVybiBncm91cDsKIH0gICAgCkBAIC0yMzksNyArMjM5LDcgQEAgQXBwbGljYXRpb25D
YWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FjaGVHcm91cEZvclVSTChjb25z
dCBVUkwmIHVybCkKICAgICAgICAgLy8gV2UgZm91bmQgYSBjYWNoZSBncm91cCB0aGF0IG1hdGNo
ZXMuIE5vdyBjaGVjayBpZiB0aGUgbmV3ZXN0IGNhY2hlIGhhcyBhIHJlc291cmNlIHdpdGgKICAg
ICAgICAgLy8gYSBtYXRjaGluZyBVUkwuCiAgICAgICAgIHVuc2lnbmVkIG5ld2VzdENhY2hlSUQg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhdGVtZW50LmdldENvbHVtbkludDY0KDIpKTsKLSAg
ICAgICAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IGNhY2hlID0gbG9hZENhY2hlKG5ld2VzdENh
Y2hlSUQpOworICAgICAgICBhdXRvIGNhY2hlID0gbG9hZENhY2hlKG5ld2VzdENhY2hlSUQpOwog
ICAgICAgICBpZiAoIWNhY2hlKQogICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTI1Miw3ICsy
NTIsNyBAQCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpj
YWNoZUdyb3VwRm9yVVJMKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICBBcHBsaWNhdGlvbkNhY2hl
R3JvdXAqIGdyb3VwID0gbmV3IEFwcGxpY2F0aW9uQ2FjaGVHcm91cCgqdGhpcywgbWFuaWZlc3RV
UkwpOwogICAgICAgICAKICAgICAgICAgZ3JvdXAtPnNldFN0b3JhZ2VJRChzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oc3RhdGVtZW50LmdldENvbHVtbkludDY0KDApKSk7Ci0gICAgICAgIGdyb3VwLT5z
ZXROZXdlc3RDYWNoZShjYWNoZS5yZWxlYXNlKCkpOworICAgICAgICBncm91cC0+c2V0TmV3ZXN0
Q2FjaGUoV1RGTW92ZShjYWNoZSkpOwogICAgICAgICAKICAgICAgICAgbV9jYWNoZXNJbk1lbW9y
eS5zZXQoZ3JvdXAtPm1hbmlmZXN0VVJMKCksIGdyb3VwKTsKICAgICAgICAgCkBAIC0zMDksNyAr
MzA5LDcgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
ZmFsbGJhY2tDYWNoZUdyb3VwRm9yVVJMKGNvbnN0IFUKICAgICAgICAgLy8gV2UgZm91bmQgYSBj
YWNoZSBncm91cCB0aGF0IG1hdGNoZXMuIE5vdyBjaGVjayBpZiB0aGUgbmV3ZXN0IGNhY2hlIGhh
cyBhIHJlc291cmNlIHdpdGgKICAgICAgICAgLy8gYSBtYXRjaGluZyBmYWxsYmFjayBuYW1lc3Bh
Y2UuCiAgICAgICAgIHVuc2lnbmVkIG5ld2VzdENhY2hlSUQgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oc3RhdGVtZW50LmdldENvbHVtbkludDY0KDIpKTsKLSAgICAgICAgUmVmUHRyPEFwcGxpY2F0
aW9uQ2FjaGU+IGNhY2hlID0gbG9hZENhY2hlKG5ld2VzdENhY2hlSUQpOworICAgICAgICBhdXRv
IGNhY2hlID0gbG9hZENhY2hlKG5ld2VzdENhY2hlSUQpOwogCiAgICAgICAgIFVSTCBmYWxsYmFj
a1VSTDsKICAgICAgICAgaWYgKGNhY2hlLT5pc1VSTEluT25saW5lV2hpdGVsaXN0KHVybCkpCkBA
IC0zMjIsNyArMzIyLDcgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6ZmFsbGJhY2tDYWNoZUdyb3VwRm9yVVJMKGNvbnN0IFUKICAgICAgICAgQXBwbGlj
YXRpb25DYWNoZUdyb3VwKiBncm91cCA9IG5ldyBBcHBsaWNhdGlvbkNhY2hlR3JvdXAoKnRoaXMs
IG1hbmlmZXN0VVJMKTsKICAgICAgICAgCiAgICAgICAgIGdyb3VwLT5zZXRTdG9yYWdlSUQoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXRlbWVudC5nZXRDb2x1bW5JbnQ2NCgwKSkpOwotICAgICAg
ICBncm91cC0+c2V0TmV3ZXN0Q2FjaGUoY2FjaGUucmVsZWFzZSgpKTsKKyAgICAgICAgZ3JvdXAt
PnNldE5ld2VzdENhY2hlKFdURk1vdmUoY2FjaGUpKTsKICAgICAgICAgCiAgICAgICAgIG1fY2Fj
aGVzSW5NZW1vcnkuc2V0KGdyb3VwLT5tYW5pZmVzdFVSTCgpLCBncm91cCk7CiAgICAgICAgIApA
QCAtMTExOSw3ICsxMTE5LDcgQEAgUGFzc1JlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2UKICAgICAKICAgICBj
YWNoZVN0YXRlbWVudC5iaW5kSW50NjQoMSwgc3RvcmFnZUlEKTsKIAotICAgIFJlZlB0cjxBcHBs
aWNhdGlvbkNhY2hlPiBjYWNoZSA9IEFwcGxpY2F0aW9uQ2FjaGU6OmNyZWF0ZSgpOworICAgIGF1
dG8gY2FjaGUgPSBBcHBsaWNhdGlvbkNhY2hlOjpjcmVhdGUoKTsKIAogICAgIFN0cmluZyBmbGF0
RmlsZURpcmVjdG9yeSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2NhY2hlRGlyZWN0b3J5
LCBtX2ZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7CiAKQEAgLTExMzQsNyArMTEzNCw3IEBAIFBh
c3NSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRD
YWNoZSh1bnNpZ25lZCBzdG9yYWdlCiAgICAgICAgIFZlY3RvcjxjaGFyPiBibG9iOwogICAgICAg
ICBjYWNoZVN0YXRlbWVudC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoNiwgYmxvYik7CiAgICAgICAg
IAotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhID0gU2hhcmVkQnVmZmVyOjphZG9w
dFZlY3RvcihibG9iKTsKKyAgICAgICAgYXV0byBkYXRhID0gU2hhcmVkQnVmZmVyOjphZG9wdFZl
Y3RvcihibG9iKTsKICAgICAgICAgCiAgICAgICAgIFN0cmluZyBwYXRoID0gY2FjaGVTdGF0ZW1l
bnQuZ2V0Q29sdW1uVGV4dCg3KTsKICAgICAgICAgbG9uZyBsb25nIHNpemUgPSAwOwpAQCAtMTE1
NCwxMiArMTE1NCwxMiBAQCBQYXNzUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IEFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUodW5zaWduZWQgc3RvcmFnZQogICAgICAgICBTdHJpbmcg
aGVhZGVycyA9IGNhY2hlU3RhdGVtZW50LmdldENvbHVtblRleHQoNSk7CiAgICAgICAgIHBhcnNl
SGVhZGVycyhoZWFkZXJzLCByZXNwb25zZSk7CiAgICAgICAgIAotICAgICAgICBSZWZQdHI8QXBw
bGljYXRpb25DYWNoZVJlc291cmNlPiByZXNvdXJjZSA9IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZTo6Y3JlYXRlKHVybCwgcmVzcG9uc2UsIHR5cGUsIGRhdGEucmVsZWFzZSgpLCBwYXRoKTsKKyAg
ICAgICAgYXV0byByZXNvdXJjZSA9IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKHVy
bCwgcmVzcG9uc2UsIHR5cGUsIFdURk1vdmUoZGF0YSksIHBhdGgpOwogCiAgICAgICAgIGlmICh0
eXBlICYgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpNYW5pZmVzdCkKLSAgICAgICAgICAgIGNh
Y2hlLT5zZXRNYW5pZmVzdFJlc291cmNlKHJlc291cmNlLnJlbGVhc2UoKSk7CisgICAgICAgICAg
ICBjYWNoZS0+c2V0TWFuaWZlc3RSZXNvdXJjZShXVEZNb3ZlKHJlc291cmNlKSk7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIGNhY2hlLT5hZGRSZXNvdXJjZShyZXNvdXJjZS5yZWxlYXNlKCkp
OworICAgICAgICAgICAgY2FjaGUtPmFkZFJlc291cmNlKFdURk1vdmUocmVzb3VyY2UpKTsKICAg
ICB9CiAKICAgICBpZiAocmVzdWx0ICE9IFNRTElURV9ET05FKQpAQCAtMTIxNyw3ICsxMjE3LDcg
QEAgUGFzc1JlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
bG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2UKICAgICAKICAgICBjYWNoZS0+c2V0U3RvcmFnZUlE
KHN0b3JhZ2VJRCk7CiAKLSAgICByZXR1cm4gY2FjaGUucmVsZWFzZSgpOworICAgIHJldHVybiBX
VEZNb3ZlKGNhY2hlKTsKIH0gICAgCiAgICAgCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjpyZW1vdmUoQXBwbGljYXRpb25DYWNoZSogY2FjaGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uY3BwCmlu
ZGV4IDdlZWU3ODM2MGM5OTU4NDU3ODRhMTAzOWZhNWQ4YzYzOTAwYjEzMTYuLjk4ZjZjMWUyZmEx
ZDRhNTA5MTMwMGQ1ODc4MDQ0MjExZDhmN2IyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uY3BwCkBA
IC03Niw5ICs3Niw5IEBAIEFyY2hpdmVSZXNvdXJjZSogQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlv
bjo6YXJjaGl2ZVJlc291cmNlRm9yVVJMKGNvbnN0IFVSTCYgdXJsCiAKIFBhc3NSZWZQdHI8QXJj
aGl2ZT4gQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjo6cG9wU3ViZnJhbWVBcmNoaXZlKGNvbnN0
IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBVUkwmIHVybCkKIHsKLSAgICBSZWZQdHI8QXJjaGl2
ZT4gYXJjaGl2ZSA9IG1fc3ViZnJhbWVzLnRha2UoZnJhbWVOYW1lKTsKKyAgICBhdXRvIGFyY2hp
dmUgPSBtX3N1YmZyYW1lcy50YWtlKGZyYW1lTmFtZSk7CiAgICAgaWYgKGFyY2hpdmUpCi0gICAg
ICAgIHJldHVybiBhcmNoaXZlLnJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoYXJj
aGl2ZSk7CiAKICAgICByZXR1cm4gbV9zdWJmcmFtZXMudGFrZSh1cmwuc3RyaW5nKCkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJj
aGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNo
aXZlLmNwcAppbmRleCA2ZjVmZWZlZGRkNDBhOTJlMTQ1ZmRkMWQxMmNmNWFjNzM5ZDdjOWNhLi5l
MDQ5MDYzMDA4MWEwMTJhNDMzMzI2YmUyNDIzMTgyN2RkZmNlOTcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAt
MzM0LDggKzMzNCw4IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25h
cnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChSZWZQdHI8QXJjaGl2ZVJlc291
cmNlPiBzdWJyZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHN1YnJlc291cmNlRGljdCkpCi0gICAg
ICAgICAgICAgICAgYWRkU3VicmVzb3VyY2Uoc3VicmVzb3VyY2UucmVsZWFzZSgpKTsKKyAgICAg
ICAgICAgIGlmIChhdXRvIHN1YnJlc291cmNlID0gY3JlYXRlUmVzb3VyY2Uoc3VicmVzb3VyY2VE
aWN0KSkKKyAgICAgICAgICAgICAgICBhZGRTdWJyZXNvdXJjZShXVEZNb3ZlKHN1YnJlc291cmNl
KSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCkBAIC0zNTQsOSArMzU0LDkgQEAgYm9vbCBMZWdh
Y3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAg
ICAgICAgICAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IHN1YmZyYW1lQXJjaGl2ZSA9IGNyZWF0
ZSgpOworICAgICAgICAgICAgYXV0byBzdWJmcmFtZUFyY2hpdmUgPSBjcmVhdGUoKTsKICAgICAg
ICAgICAgIGlmIChzdWJmcmFtZUFyY2hpdmUtPmV4dHJhY3Qoc3ViZnJhbWVEaWN0KSkKLSAgICAg
ICAgICAgICAgICBhZGRTdWJmcmFtZUFyY2hpdmUoc3ViZnJhbWVBcmNoaXZlLnJlbGVhc2UoKSk7
CisgICAgICAgICAgICAgICAgYWRkU3ViZnJhbWVBcmNoaXZlKFdURk1vdmUoc3ViZnJhbWVBcmNo
aXZlKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAi
TGVnYWN5V2ViQXJjaGl2ZSAtIEludmFsaWQgc3ViZnJhbWUgYXJjaGl2ZSBza2lwcGVkIik7CiAg
ICAgICAgIH0KQEAgLTU0Nyw4ICs1NDcsOCBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5nLCBGcgogICAg
ICAgICBjb25zdCBTdHJpbmcmIGljb25VUkwgPSBpY29uRGF0YWJhc2UoKS5zeW5jaHJvbm91c0lj
b25VUkxGb3JQYWdlVVJMKHJlc3BvbnNlVVJMKTsKICAgICAgICAgaWYgKCFpY29uVVJMLmlzRW1w
dHkoKSAmJiBpY29uRGF0YWJhc2UoKS5zeW5jaHJvbm91c0ljb25EYXRhS25vd25Gb3JJY29uVVJM
KGljb25VUkwpKSB7CiAgICAgICAgICAgICBpZiAoSW1hZ2UqIGljb25JbWFnZSA9IGljb25EYXRh
YmFzZSgpLnN5bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwocmVzcG9uc2VVUkwsIEludFNpemUoMTYs
IDE2KSkpIHsKLSAgICAgICAgICAgICAgICBpZiAoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gcmVz
b3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShpY29uSW1hZ2UtPmRhdGEoKSwgVVJMKFBh
cnNlZFVSTFN0cmluZywgaWNvblVSTCksICJpbWFnZS94LWljb24iLCAiIiwgIiIpKQotICAgICAg
ICAgICAgICAgICAgICBzdWJyZXNvdXJjZXMuYXBwZW5kKHJlc291cmNlLnJlbGVhc2UoKSk7Cisg
ICAgICAgICAgICAgICAgaWYgKGF1dG8gcmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0
ZShpY29uSW1hZ2UtPmRhdGEoKSwgVVJMKFBhcnNlZFVSTFN0cmluZywgaWNvblVSTCksICJpbWFn
ZS94LWljb24iLCAiIiwgIiIpKQorICAgICAgICAgICAgICAgICAgICBzdWJyZXNvdXJjZXMuYXBw
ZW5kKFdURk1vdmUocmVzb3VyY2UpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
QEAgLTU4Miw5ICs1ODIsOSBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJj
aGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiAgICAgLy8gV3JhcCB0aGUg
ZnJhbWVzZXQgZG9jdW1lbnQgaW4gYW4gaWZyYW1lIHNvIGl0IGNhbiBiZSBwYXN0ZWQgaW50bwog
ICAgIC8vIGFub3RoZXIgZG9jdW1lbnQgKHdoaWNoIHdpbGwgaGF2ZSBhIGJvZHkgb3IgZnJhbWVz
ZXQgb2YgaXRzIG93bikuIAogICAgIFN0cmluZyBpZnJhbWVNYXJrdXAgPSAiPGlmcmFtZSBmcmFt
ZWJvcmRlcj1cIm5vXCIgbWFyZ2lud2lkdGg9XCIwXCIgbWFyZ2luaGVpZ2h0PVwiMFwiIHdpZHRo
PVwiOTglJVwiIGhlaWdodD1cIjk4JSVcIiBzcmM9XCIiICsgZnJhbWUtPmxvYWRlcigpLmRvY3Vt
ZW50TG9hZGVyKCktPnJlc3BvbnNlKCkudXJsKCkuc3RyaW5nKCkgKyAiXCI+PC9pZnJhbWU+IjsK
LSAgICBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBpZnJhbWVSZXNvdXJjZSA9IEFyY2hpdmVSZXNv
dXJjZTo6Y3JlYXRlKHV0ZjhCdWZmZXIoaWZyYW1lTWFya3VwKSwgYmxhbmtVUkwoKSwgInRleHQv
aHRtbCIsICJVVEYtOCIsIFN0cmluZygpKTsKKyAgICBhdXRvIGlmcmFtZVJlc291cmNlID0gQXJj
aGl2ZVJlc291cmNlOjpjcmVhdGUodXRmOEJ1ZmZlcihpZnJhbWVNYXJrdXApLCBibGFua1VSTCgp
LCAidGV4dC9odG1sIiwgIlVURi04IiwgU3RyaW5nKCkpOwogCi0gICAgcmV0dXJuIGNyZWF0ZShp
ZnJhbWVSZXNvdXJjZS5yZWxlYXNlKCksIFZlY3RvcjxSZWZQdHI8QXJjaGl2ZVJlc291cmNlPj4o
KSwgVmVjdG9yPFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPj4geyBhcmNoaXZlIH0pOworICAgIHJl
dHVybiBjcmVhdGUoV1RGTW92ZShpZnJhbWVSZXNvdXJjZSksIFZlY3RvcjxSZWZQdHI8QXJjaGl2
ZVJlc291cmNlPj4oKSwgVmVjdG9yPFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPj4geyBhcmNoaXZl
IH0pOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNw
cAppbmRleCA0ZjU0NTI1NGRjODkyNDYxZDkyYWNkZDQ2MmY3NjQzZDlkNjRlZTc1Li45NmVlZjdm
ZTk3MGJlMTlhNWRlZDA4N2ZlOWZlN2ZiNWZkMzg5YTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTMzNCw5ICszMzQsOSBAQCBpbmxpbmUgdm9p
ZCBDYWNoZWRJbWFnZTo6Y3JlYXRlSW1hZ2UoKQogICAgICAgICBtX2ltYWdlID0gUERGRG9jdW1l
bnRJbWFnZTo6Y3JlYXRlKHRoaXMpOwogI2VuZGlmCiAgICAgZWxzZSBpZiAobV9yZXNwb25zZS5t
aW1lVHlwZSgpID09ICJpbWFnZS9zdmcreG1sIikgewotICAgICAgICBSZWZQdHI8U1ZHSW1hZ2U+
IHN2Z0ltYWdlID0gU1ZHSW1hZ2U6OmNyZWF0ZSgqdGhpcywgdXJsKCkpOwotICAgICAgICBtX3N2
Z0ltYWdlQ2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0ltYWdlQ2FjaGU+KHN2Z0ltYWdlLmdl
dCgpKTsKLSAgICAgICAgbV9pbWFnZSA9IHN2Z0ltYWdlLnJlbGVhc2UoKTsKKyAgICAgICAgYXV0
byBzdmdJbWFnZSA9IFNWR0ltYWdlOjpjcmVhdGUoKnRoaXMsIHVybCgpKTsKKyAgICAgICAgbV9z
dmdJbWFnZUNhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdJbWFnZUNhY2hlPihzdmdJbWFnZS5w
dHIoKSk7CisgICAgICAgIG1faW1hZ2UgPSBXVEZNb3ZlKHN2Z0ltYWdlKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBtX2ltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSh0aGlzKTsKICAgICAgICAg
ZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCptX2ltYWdlKS5zZXRBbGxvd1N1YnNhbXBsaW5nKG1fbG9h
ZGVyICYmIG1fbG9hZGVyLT5mcmFtZUxvYWRlcigpLT5mcmFtZSgpLnNldHRpbmdzKCkuaW1hZ2VT
dWJzYW1wbGluZ0VuYWJsZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aWNvbi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRh
dGFiYXNlLmNwcAppbmRleCBlMWVkYTVjYWExZDAwNWMwY2RlYTExM2M2NWIwNTk4Mzk1MzRmMDcy
Li5lZTQzN2U4NjI4ZWJmNGU4NjMyN2NjNzcwMzBmNWY2OTRlMzBiYjJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKQEAgLTU1OCw3ICs1NTgsNyBAQCB2
b2lkIEljb25EYXRhYmFzZTo6c2V0SWNvbkRhdGFGb3JJY29uVVJMKFBhc3NSZWZQdHI8U2hhcmVk
QnVmZmVyPiBkYXRhT3JpZ2luYWwsCiAgICAgICAgICAgICBpY29uID0gZ2V0T3JDcmVhdGVJY29u
UmVjb3JkKGljb25VUkwpOwogICAgIAogICAgICAgICAvLyBVcGRhdGUgdGhlIGRhdGEgYW5kIHNl
dCB0aGUgdGltZSBzdGFtcAotICAgICAgICBpY29uLT5zZXRJbWFnZURhdGEoZGF0YS5yZWxlYXNl
KCkpOworICAgICAgICBpY29uLT5zZXRJbWFnZURhdGEoV1RGTW92ZShkYXRhKSk7CiAgICAgICAg
IGljb24tPnNldFRpbWVzdGFtcCgoaW50KWN1cnJlbnRUaW1lKCkpOwogICAgICAgICAKICAgICAg
ICAgLy8gQ29weSB0aGUgY3VycmVudCByZXRhaW5pbmcgcGFnZVVSTHMgLSBpZiBhbnkgLSB0byBu
b3RpZnkgdGhlbSBvZiB0aGUgY2hhbmdlCkBAIC04OTMsMTAgKzg5MywxMCBAQCBQYXNzUmVmUHRy
PEljb25SZWNvcmQ+IEljb25EYXRhYmFzZTo6Z2V0T3JDcmVhdGVJY29uUmVjb3JkKGNvbnN0IFN0
cmluZyYgaWNvblVSTAogICAgIGlmIChJY29uUmVjb3JkKiBpY29uID0gbV9pY29uVVJMVG9SZWNv
cmRNYXAuZ2V0KGljb25VUkwpKQogICAgICAgICByZXR1cm4gaWNvbjsKIAotICAgIFJlZlB0cjxJ
Y29uUmVjb3JkPiBuZXdJY29uID0gSWNvblJlY29yZDo6Y3JlYXRlKGljb25VUkwpOwotICAgIG1f
aWNvblVSTFRvUmVjb3JkTWFwLnNldChpY29uVVJMLCBuZXdJY29uLmdldCgpKTsKKyAgICBhdXRv
IG5ld0ljb24gPSBJY29uUmVjb3JkOjpjcmVhdGUoaWNvblVSTCk7CisgICAgbV9pY29uVVJMVG9S
ZWNvcmRNYXAuc2V0KGljb25VUkwsIG5ld0ljb24ucHRyKCkpOwogCi0gICAgcmV0dXJuIG5ld0lj
b24ucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKG5ld0ljb24pOwogfQogCiAvLyBUaGlz
IG1ldGhvZCByZXRyaWV2ZXMgdGhlIGV4aXN0aW5nIFBhZ2VVUkxSZWNvcmQsIG9yIGNyZWF0ZXMg
YSBuZXcgb25lIGFuZCBtYXJrcyBpdCBhcyAiaW50ZXJlc3RlZCBpbiB0aGUgaW1wb3J0IiBmb3Ig
bGF0ZXIgbm90aWZpY2F0aW9uCkBAIC0xNDkzLDcgKzE0OTMsNyBAQCBib29sIEljb25EYXRhYmFz
ZTo6cmVhZEZyb21EYXRhYmFzZSgpCiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGljb25zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGRpZEFueVdvcmsgPSB0cnVlOwotICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZURhdGEgPSBnZXRJbWFnZURhdGFGb3JJY29uVVJM
RnJvbVNRTERhdGFiYXNlKGljb25zW2ldLT5pY29uVVJMKCkpOworICAgICAgICBhdXRvIGltYWdl
RGF0YSA9IGdldEltYWdlRGF0YUZvckljb25VUkxGcm9tU1FMRGF0YWJhc2UoaWNvbnNbaV0tPmlj
b25VUkwoKSk7CiAKICAgICAgICAgLy8gVmVyaWZ5IHRoaXMgaWNvbiBzdGlsbCB3YW50cyB0byBi
ZSByZWFkIGZyb20gZGlzawogICAgICAgICB7CkBAIC0xNTAzLDcgKzE1MDMsNyBAQCBib29sIElj
b25EYXRhYmFzZTo6cmVhZEZyb21EYXRhYmFzZSgpCiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgaWYgKG1faWNvbnNQZW5kaW5nUmVhZGluZy5jb250YWlucyhpY29uc1tpXSkpIHsK
ICAgICAgICAgICAgICAgICAgICAgLy8gU2V0IHRoZSBuZXcgZGF0YQotICAgICAgICAgICAgICAg
ICAgICBpY29uc1tpXS0+c2V0SW1hZ2VEYXRhKGltYWdlRGF0YS5yZWxlYXNlKCkpOworICAgICAg
ICAgICAgICAgICAgICBpY29uc1tpXS0+c2V0SW1hZ2VEYXRhKFdURk1vdmUoaW1hZ2VEYXRhKSk7
CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAvLyBSZW1vdmUgdGhp
cyBpY29uIGZyb20gdGhlIHNldCB0aGF0IG5lZWRzIHRvIGJlIHJlYWQKICAgICAgICAgICAgICAg
ICAgICAgbV9pY29uc1BlbmRpbmdSZWFkaW5nLnJlbW92ZShpY29uc1tpXSk7CkBAIC0xOTM2LDcg
KzE5MzYsNyBAQCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSWNvbkRhdGFiYXNlOjpnZXRJbWFn
ZURhdGFGb3JJY29uVVJMRnJvbVNRTERhdGFiYXNlKGNvbgogCiAgICAgbV9nZXRJbWFnZURhdGFG
b3JJY29uVVJMU3RhdGVtZW50LT5yZXNldCgpOwogICAgIAotICAgIHJldHVybiBpbWFnZURhdGEu
cmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKGltYWdlRGF0YSk7CiB9CiAKIHZvaWQgSWNv
bkRhdGFiYXNlOjpyZW1vdmVJY29uRnJvbVNRTERhdGFiYXNlKGNvbnN0IFN0cmluZyYgaWNvblVS
TCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCAxMTliZDQ2YTBkNmZjM2QzNTMyYTk4
MjRkNzQ1Y2FmNDIxYTdkOTViLi5lYTlhZDQyMDlhYTcyZDgyNTAyNzlhNzE0ZWUwNDc3NjY3NTM0
MDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC04MTIsMTMgKzgxMiwxMyBAQCBT
dG9yYWdlKiBET01XaW5kb3c6OnNlc3Npb25TdG9yYWdlKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25z
dAogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8U3RvcmFn
ZUFyZWE+IHN0b3JhZ2VBcmVhID0gcGFnZS0+c2Vzc2lvblN0b3JhZ2UoKS0+c3RvcmFnZUFyZWEo
ZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpOworICAgIGF1dG8gc3RvcmFnZUFyZWEgPSBwYWdl
LT5zZXNzaW9uU3RvcmFnZSgpLT5zdG9yYWdlQXJlYShkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4o
KSk7CiAgICAgaWYgKCFzdG9yYWdlQXJlYS0+Y2FuQWNjZXNzU3RvcmFnZShtX2ZyYW1lKSkgewog
ICAgICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0g
ICAgbV9zZXNzaW9uU3RvcmFnZSA9IFN0b3JhZ2U6OmNyZWF0ZShtX2ZyYW1lLCBzdG9yYWdlQXJl
YS5yZWxlYXNlKCkpOworICAgIG1fc2Vzc2lvblN0b3JhZ2UgPSBTdG9yYWdlOjpjcmVhdGUobV9m
cmFtZSwgV1RGTW92ZShzdG9yYWdlQXJlYSkpOwogICAgIHJldHVybiBtX3Nlc3Npb25TdG9yYWdl
LmdldCgpOwogfQogCkBAIC04NTgsMTQgKzg1OCwxNCBAQCBTdG9yYWdlKiBET01XaW5kb3c6Omxv
Y2FsU3RvcmFnZShFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKICAgICBpZiAoIXBhZ2UtPnNldHRp
bmdzKCkubG9jYWxTdG9yYWdlRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIFJlZlB0cjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEgPSBwYWdlLT5zdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXIoKS5sb2NhbFN0b3JhZ2VBcmVhKCpkb2N1bWVudCk7CisgICAgYXV0byBzdG9y
YWdlQXJlYSA9IHBhZ2UtPnN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigpLmxvY2FsU3RvcmFnZUFy
ZWEoKmRvY3VtZW50KTsKIAogICAgIGlmICghc3RvcmFnZUFyZWEtPmNhbkFjY2Vzc1N0b3JhZ2Uo
bV9mcmFtZSkpIHsKICAgICAgICAgZWMgPSBTRUNVUklUWV9FUlI7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAotICAgIG1fbG9jYWxTdG9yYWdlID0gU3RvcmFnZTo6Y3JlYXRlKG1f
ZnJhbWUsIHN0b3JhZ2VBcmVhLnJlbGVhc2UoKSk7CisgICAgbV9sb2NhbFN0b3JhZ2UgPSBTdG9y
YWdlOjpjcmVhdGUobV9mcmFtZSwgV1RGTW92ZShzdG9yYWdlQXJlYSkpOwogICAgIHJldHVybiBt
X2xvY2FsU3RvcmFnZS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CmluZGV4IDIxMTU1MzE4NGNlYzY3ZTBlNTllOTcyYjUzZDYxOGJkN2M5ZDJhZDQuLmVmZGVlZDEz
NzJlZjA4ODY5NjNlZTU0ZmMyZDY2YjZiZWNmMzc3YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5jcHAKQEAgLTIyNzgsNyArMjI3OCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjp1cGRh
dGVEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBEYXRhVHJhbnNm
CiAgICAgICAgICAgICBtX3Nob3VsZE9ubHlGaXJlRHJhZ092ZXJFdmVudCA9IGZhbHNlOwogICAg
ICAgICB9CiAgICAgfQotICAgIG1fZHJhZ1RhcmdldCA9IG5ld1RhcmdldC5yZWxlYXNlKCk7Cisg
ICAgbV9kcmFnVGFyZ2V0ID0gV1RGTW92ZShuZXdUYXJnZXQpOwogICAgIHJldHVybiBhY2NlcHQ7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0
ZUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVB
bmltYXRpb24uY3BwCmluZGV4IGVkMTliNjEzOWMzYTkxMmFlODg4NzQwYWExMzBhNzI0MTY4ZTA0
NjAuLjJmN2IxYWQwYTVkZjYxOWFjNGUzNzBmYjk1M2Y2ODk0ODU1MGFkNWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcApA
QCAtMTY4LDkgKzE2OCw5IEBAIHZvaWQgQ29tcG9zaXRlQW5pbWF0aW9uOjp1cGRhdGVUcmFuc2l0
aW9ucyhSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgUmVuZGVyCiAgICAgICAgICAgICAg
ICAgLy8gPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDc4Nz4KICAg
ICAgICAgICAgICAgICBpZiAoIWVxdWFsICYmIGlzQWN0aXZlVHJhbnNpdGlvbikgewogICAgICAg
ICAgICAgICAgICAgICAvLyBBZGQgdGhlIG5ldyB0cmFuc2l0aW9uCi0gICAgICAgICAgICAgICAg
ICAgIFJlZlB0cjxJbXBsaWNpdEFuaW1hdGlvbj4gaW1wbGljaXRBbmltYXRpb24gPSBJbXBsaWNp
dEFuaW1hdGlvbjo6Y3JlYXRlKGFuaW1hdGlvbiwgcHJvcCwgcmVuZGVyZXIsIHRoaXMsIG1vZGlm
aWVkQ3VycmVudFN0eWxlID8gbW9kaWZpZWRDdXJyZW50U3R5bGUuZ2V0KCkgOiBmcm9tU3R5bGUp
OwotICAgICAgICAgICAgICAgICAgICBMT0coQW5pbWF0aW9ucywgIkNyZWF0ZWQgSW1wbGljaXRB
bmltYXRpb24gJXAgb24gcmVuZGVyZXIgJXAgZm9yIHByb3BlcnR5ICVzIGR1cmF0aW9uICUuMmYg
ZGVsYXkgJS4yZiIsIGltcGxpY2l0QW5pbWF0aW9uLmdldCgpLCByZW5kZXJlciwgZ2V0UHJvcGVy
dHlOYW1lKHByb3ApLCBhbmltYXRpb24uZHVyYXRpb24oKSwgYW5pbWF0aW9uLmRlbGF5KCkpOwot
ICAgICAgICAgICAgICAgICAgICBtX3RyYW5zaXRpb25zLnNldChwcm9wLCBpbXBsaWNpdEFuaW1h
dGlvbi5yZWxlYXNlKCkpOworICAgICAgICAgICAgICAgICAgICBhdXRvIGltcGxpY2l0QW5pbWF0
aW9uID0gSW1wbGljaXRBbmltYXRpb246OmNyZWF0ZShhbmltYXRpb24sIHByb3AsIHJlbmRlcmVy
LCB0aGlzLCBtb2RpZmllZEN1cnJlbnRTdHlsZSA/IG1vZGlmaWVkQ3VycmVudFN0eWxlLmdldCgp
IDogZnJvbVN0eWxlKTsKKyAgICAgICAgICAgICAgICAgICAgTE9HKEFuaW1hdGlvbnMsICJDcmVh
dGVkIEltcGxpY2l0QW5pbWF0aW9uICVwIG9uIHJlbmRlcmVyICVwIGZvciBwcm9wZXJ0eSAlcyBk
dXJhdGlvbiAlLjJmIGRlbGF5ICUuMmYiLCBpbXBsaWNpdEFuaW1hdGlvbi5wdHIoKSwgcmVuZGVy
ZXIsIGdldFByb3BlcnR5TmFtZShwcm9wKSwgYW5pbWF0aW9uLmR1cmF0aW9uKCksIGFuaW1hdGlv
bi5kZWxheSgpKTsKKyAgICAgICAgICAgICAgICAgICAgbV90cmFuc2l0aW9ucy5zZXQocHJvcCwg
V1RGTW92ZShpbXBsaWNpdEFuaW1hdGlvbikpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IG5lZWQgb25lIHBhc3MgZm9yIHRo
ZSBzaW5nbGUgcHJvcCBjYXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5LmNwcAppbmRleCA5OWM3NmFiMmMxNDYxYTRiY2IxZjBhMjFlNDQ2OTAw
OTliYTQwZDViLi5lOThmYzc0NjI5ZTliYWM3MDdmZGFkNWFlNmRkNWQ4Yjc4MDJkYWU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAK
QEAgLTYyOCw3ICs2MjgsNyBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0Vmlv
bGF0aW9uKGNvbnN0IFN0cmluZyYgZWZmZWN0aXZlVmlvbGF0ZWREaXJlYwogICAgIC8vIHNlbnQg
ZXhwbGljaXRseS4gQXMgZm9yIHdoaWNoIGRpcmVjdGl2ZSB3YXMgdmlvbGF0ZWQsIHRoYXQncyBw
cmV0dHkKICAgICAvLyBoYXJtbGVzcyBpbmZvcm1hdGlvbi4KIAotICAgIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IGNzcFJlcG9ydCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAgYXV0
byBjc3BSZXBvcnQgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGNzcFJlcG9ydC0+
c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgiZG9jdW1lbnQtdXJpIiksIGRvY3VtZW50VVJJKTsKICAg
ICBjc3BSZXBvcnQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInJlZmVycmVyIiksIHJlZmVycmVy
KTsKICAgICBjc3BSZXBvcnQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInZpb2xhdGVkLWRpcmVj
dGl2ZSIpLCB2aW9sYXRlZERpcmVjdGl2ZVRleHQpOwpAQCAtNjQzLDcgKzY0Myw3IEBAIHZvaWQg
Q29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBlZmZl
Y3RpdmVWaW9sYXRlZERpcmVjCiAgICAgfQogCiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
cmVwb3J0T2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICByZXBvcnRPYmpl
Y3QtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoImNzcC1yZXBvcnQiKSwgY3NwUmVwb3J0LnJlbGVh
c2UoKSk7CisgICAgcmVwb3J0T2JqZWN0LT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJjc3AtcmVw
b3J0IiksIFdURk1vdmUoY3NwUmVwb3J0KSk7CiAKICAgICBSZWZQdHI8Rm9ybURhdGE+IHJlcG9y
dCA9IEZvcm1EYXRhOjpjcmVhdGUocmVwb3J0T2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCkp
OwogICAgIGZvciAoY29uc3QgYXV0byYgdXJsIDogcmVwb3J0VVJJcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tCmluZGV4IGIx
NjdjZTIwMTlkMjk0OGE3YWU5MzFkOTZhNWZjNzRjMzhiNzZmODAuLmIxNjVlYTQ3NmJhMmQ1YWE1
NzhjNGYyYWFhZjM4NTQ5MTYzNzg1MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
bWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbQpAQCAtNjIwLDkgKzYyMCw5IEBAIHZv
aWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6Y3JlYXRlT3ZlcmxheUlmTmVlZGVkKCkKICAg
ICBpZiAoIW1fbWFpbkZyYW1lLnNldHRpbmdzKCkuc2VydmljZUNvbnRyb2xzRW5hYmxlZCgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8UGFnZU92ZXJsYXk+IG92ZXJsYXkgPSBQYWdl
T3ZlcmxheTo6Y3JlYXRlKCp0aGlzLCBQYWdlT3ZlcmxheTo6T3ZlcmxheVR5cGU6OkRvY3VtZW50
KTsKLSAgICBtX3NlcnZpY2VzT3ZlcmxheSA9IG92ZXJsYXkuZ2V0KCk7Ci0gICAgbV9tYWluRnJh
bWUucGFnZU92ZXJsYXlDb250cm9sbGVyKCkuaW5zdGFsbFBhZ2VPdmVybGF5KG92ZXJsYXkucmVs
ZWFzZSgpLCBQYWdlT3ZlcmxheTo6RmFkZU1vZGU6OkRvTm90RmFkZSk7CisgICAgYXV0byBvdmVy
bGF5ID0gUGFnZU92ZXJsYXk6OmNyZWF0ZSgqdGhpcywgUGFnZU92ZXJsYXk6Ok92ZXJsYXlUeXBl
OjpEb2N1bWVudCk7CisgICAgbV9zZXJ2aWNlc092ZXJsYXkgPSBvdmVybGF5LnB0cigpOworICAg
IG1fbWFpbkZyYW1lLnBhZ2VPdmVybGF5Q29udHJvbGxlcigpLmluc3RhbGxQYWdlT3ZlcmxheShX
VEZNb3ZlKG92ZXJsYXkpLCBQYWdlT3ZlcmxheTo6RmFkZU1vZGU6OkRvTm90RmFkZSk7CiB9CiAK
IFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjp0ZWxlcGhv
bmVOdW1iZXJSYW5nZXNGb3JGb2N1c2VkRnJhbWUoKQpAQCAtNzM5LDcgKzczOSw3IEBAIHZvaWQg
U2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6ZGV0ZXJtaW5lQWN0aXZlSGlnaGxpZ2h0KGJvb2wm
IG1vdXNlSXNPdmVyQWN0aXZlCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICBtX2FjdGl2ZUhpZ2hsaWdodCA9IG1fbmV4dEFjdGl2ZUhpZ2hsaWdodC5yZWxlYXNlKCk7
CisgICAgICAgIG1fYWN0aXZlSGlnaGxpZ2h0ID0gV1RGTW92ZShtX25leHRBY3RpdmVIaWdobGln
aHQpOwogCiAgICAgICAgIGlmIChtX2FjdGl2ZUhpZ2hsaWdodCkgewogICAgICAgICAgICAgbV9z
ZXJ2aWNlc092ZXJsYXktPmxheWVyKCkuYWRkQ2hpbGQobV9hY3RpdmVIaWdobGlnaHQtPmxheWVy
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3Jv
bGxpbmdDb29yZGluYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNT
Y3JvbGxpbmdDb29yZGluYXRvci5oCmluZGV4IGQwOTY4YmIzMzgwNjg3ZGQzYmVmMzQzMTIwMTli
ZjMzM2JhN2YwNmEuLjYzMTYyY2FkODY1Mjk3YmRjNzQ0M2FjNDQ5MzM3NzliYzBkYmM0ZDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29v
cmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9s
bGluZ0Nvb3JkaW5hdG9yLmgKQEAgLTczLDcgKzczLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgU2Ny
b2xsaW5nU3RhdGVUcmVlKiBzY3JvbGxpbmdTdGF0ZVRyZWUoKSB7IHJldHVybiBtX3Njcm9sbGlu
Z1N0YXRlVHJlZS5nZXQoKTsgfQogCi0gICAgUGFzc1JlZlB0cjxTY3JvbGxpbmdUcmVlPiByZWxl
YXNlU2Nyb2xsaW5nVHJlZSgpIHsgcmV0dXJuIG1fc2Nyb2xsaW5nVHJlZS5yZWxlYXNlKCk7IH0K
KyAgICBQYXNzUmVmUHRyPFNjcm9sbGluZ1RyZWU+IHJlbGVhc2VTY3JvbGxpbmdUcmVlKCkgeyBy
ZXR1cm4gV1RGTW92ZShtX3Njcm9sbGluZ1RyZWUpOyB9CiAKICAgICB2b2lkIHVwZGF0ZVNjcm9s
bFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbChTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IEZsb2F0UG9p
bnQmLCBib29sIHByb2dyYW1tYXRpY1Njcm9sbCwgU2V0T3JTeW5jU2Nyb2xsaW5nTGF5ZXJQb3Np
dGlvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1N0YXRlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdTdGF0ZU5vZGUuY3BwCmluZGV4IGRmZDUyODU3YWY2ZDAzYTJlODcwMzQ1MmI4MzJmNjAyNjQy
NjQwMjQuLjg5YWVjYTBmNjk1NjllODY1NWNkZDAwMDU2NzFlMTkzMWI1NDhhYjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmNw
cApAQCAtNzQsMTMgKzc0LDEzIEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVOb2RlOjpzZXRQcm9wZXJ0
eUNoYW5nZWQodW5zaWduZWQgcHJvcGVydHlCaXQpCiAKIFBhc3NSZWZQdHI8U2Nyb2xsaW5nU3Rh
dGVOb2RlPiBTY3JvbGxpbmdTdGF0ZU5vZGU6OmNsb25lQW5kUmVzZXQoU2Nyb2xsaW5nU3RhdGVU
cmVlJiBhZG9wdGl2ZVRyZWUpCiB7Ci0gICAgUmVmUHRyPFNjcm9sbGluZ1N0YXRlTm9kZT4gY2xv
bmUgPSB0aGlzLT5jbG9uZShhZG9wdGl2ZVRyZWUpOworICAgIGF1dG8gY2xvbmUgPSB0aGlzLT5j
bG9uZShhZG9wdGl2ZVRyZWUpOwogCiAgICAgLy8gTm93IHRoYXQgdGhpcyBub2RlIGlzIGNsb25l
ZCwgcmVzZXQgb3VyIGNoYW5nZSBwcm9wZXJ0aWVzLgogICAgIHJlc2V0Q2hhbmdlZFByb3BlcnRp
ZXMoKTsKIAotICAgIGNsb25lQW5kUmVzZXRDaGlsZHJlbigqY2xvbmUsIGFkb3B0aXZlVHJlZSk7
Ci0gICAgcmV0dXJuIGNsb25lLnJlbGVhc2UoKTsKKyAgICBjbG9uZUFuZFJlc2V0Q2hpbGRyZW4o
Y2xvbmUuZ2V0KCksIGFkb3B0aXZlVHJlZSk7CisgICAgcmV0dXJuIFdURk1vdmUoY2xvbmUpOwog
fQogCiB2b2lkIFNjcm9sbGluZ1N0YXRlTm9kZTo6Y2xvbmVBbmRSZXNldENoaWxkcmVuKFNjcm9s
bGluZ1N0YXRlTm9kZSYgY2xvbmUsIFNjcm9sbGluZ1N0YXRlVHJlZSYgYWRvcHRpdmVUcmVlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVU
cmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJl
ZS5jcHAKaW5kZXggM2JlYzQzNjBjNGQxNTQ5Njc2MWZhYTQ3NDFmMjkwMzZjMTc5NmY5NC4uMTFj
ZWM1ZjVkZTdhMjFjNmFmMWE2ZWMwNjFhOWY1ZmJkOTRhZTU3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwCkBAIC0xMTUs
MTYgKzExNSwxNiBAQCBTY3JvbGxpbmdOb2RlSUQgU2Nyb2xsaW5nU3RhdGVUcmVlOjphdHRhY2hO
b2RlKFNjcm9sbGluZ05vZGVUeXBlIG5vZGVUeXBlLCBTY3JvbAogICAgICAgICAgICAgcmV0dXJu
IDA7CiAKICAgICAgICAgaWYgKG5vZGVUeXBlID09IEZyYW1lU2Nyb2xsaW5nTm9kZSAmJiBwYXJl
bnRJRCkgewotICAgICAgICAgICAgaWYgKFJlZlB0cjxTY3JvbGxpbmdTdGF0ZU5vZGU+IG9ycGhh
bmVkTm9kZSA9IG1fb3JwaGFuZWRTdWJmcmFtZU5vZGVzLnRha2UobmV3Tm9kZUlEKSkgeworICAg
ICAgICAgICAgaWYgKGF1dG8gb3JwaGFuZWROb2RlID0gbV9vcnBoYW5lZFN1YmZyYW1lTm9kZXMu
dGFrZShuZXdOb2RlSUQpKSB7CiAgICAgICAgICAgICAgICAgbmV3Tm9kZSA9IG9ycGhhbmVkTm9k
ZS5nZXQoKTsKLSAgICAgICAgICAgICAgICBwYXJlbnQtPmFwcGVuZENoaWxkKG9ycGhhbmVkTm9k
ZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgICAgIHBhcmVudC0+YXBwZW5kQ2hpbGQoV1RGTW92
ZShvcnBoYW5lZE5vZGUpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGlm
ICghbmV3Tm9kZSkgewotICAgICAgICAgICAgUmVmUHRyPFNjcm9sbGluZ1N0YXRlTm9kZT4gc3Rh
dGVOb2RlID0gY3JlYXRlTm9kZShub2RlVHlwZSwgbmV3Tm9kZUlEKTsKKyAgICAgICAgICAgIGF1
dG8gc3RhdGVOb2RlID0gY3JlYXRlTm9kZShub2RlVHlwZSwgbmV3Tm9kZUlEKTsKICAgICAgICAg
ICAgIG5ld05vZGUgPSBzdGF0ZU5vZGUuZ2V0KCk7Ci0gICAgICAgICAgICBwYXJlbnQtPmFwcGVu
ZENoaWxkKHN0YXRlTm9kZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgcGFyZW50LT5hcHBlbmRD
aGlsZChXVEZNb3ZlKHN0YXRlTm9kZSkpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCmluZGV4IGVhMzNlZmMx
ZDNiZjAwM2Y3NjZhOTg5ZjA0YzZhNTMwMjk4NjQ1N2YuLmY2NWNkZTNjMWFmZjQ1ZjY2ZDVmMjIz
NjM2NzE5MmYwY2IzMDdhMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0hSVEZFbGV2YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0hSVEZFbGV2YXRpb24uY3BwCkBAIC03NCwxMiArNzQsMTIgQEAgc3RhdGljIEF1ZGlvQnVzKiBn
ZXRDb25jYXRlbmF0ZWRJbXB1bHNlUmVzcG9uc2VzRm9yU3ViamVjdChjb25zdCBTdHJpbmcmIHN1
YmplY3QKICAgICBBdWRpb0J1cyogYnVzOwogICAgIEF1ZGlvQnVzTWFwOjppdGVyYXRvciBpdGVy
YXRvciA9IGF1ZGlvQnVzTWFwLmdldCgpLmZpbmQoc3ViamVjdE5hbWUpOwogICAgIGlmIChpdGVy
YXRvciA9PSBhdWRpb0J1c01hcC5nZXQoKS5lbmQoKSkgewotICAgICAgICBSZWZQdHI8QXVkaW9C
dXM+IGNvbmNhdGVuYXRlZEltcHVsc2VSZXNwb25zZXMgPSBBdWRpb0J1czo6bG9hZFBsYXRmb3Jt
UmVzb3VyY2Uoc3ViamVjdE5hbWUudXRmOCgpLmRhdGEoKSwgUmVzcG9uc2VTYW1wbGVSYXRlKTsK
KyAgICAgICAgYXV0byBjb25jYXRlbmF0ZWRJbXB1bHNlUmVzcG9uc2VzID0gQXVkaW9CdXM6Omxv
YWRQbGF0Zm9ybVJlc291cmNlKHN1YmplY3ROYW1lLnV0ZjgoKS5kYXRhKCksIFJlc3BvbnNlU2Ft
cGxlUmF0ZSk7CiAgICAgICAgIEFTU0VSVChjb25jYXRlbmF0ZWRJbXB1bHNlUmVzcG9uc2VzKTsK
ICAgICAgICAgaWYgKCFjb25jYXRlbmF0ZWRJbXB1bHNlUmVzcG9uc2VzKQogICAgICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICAgICAgYnVzID0gY29uY2F0ZW5hdGVkSW1wdWxzZVJlc3BvbnNlcy5y
ZWxlYXNlKCkubGVha1JlZigpOworICAgICAgICBidXMgPSBjb25jYXRlbmF0ZWRJbXB1bHNlUmVz
cG9uc2VzLmxlYWtSZWYoKTsKICAgICAgICAgYXVkaW9CdXNNYXAuZ2V0KCkuc2V0KHN1YmplY3RO
YW1lLCBidXMpOwogICAgIH0gZWxzZQogICAgICAgICBidXMgPSBpdGVyYXRvci0+dmFsdWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVz
aE1vbml0b3JNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rp
c3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwCmluZGV4IDk3ODJkMjg0NjBjYThmZDA5YzU4
ZTcxYTVkN2NjOGJlNTRkNDVjMDYuLmYwOGFlYmU3MmU3ZTI5NGFiNDlmZGQ1YWQ3MDNiZTVkMjYx
ZjJiOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3Bs
YXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwCkBAIC01NCwxMyArNTQs
MTMgQEAgRGlzcGxheVJlZnJlc2hNb25pdG9yKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2Vy
OjpjcmVhdGVNb25pdG9yRm9yQ2xpZW50KERpc3AKICAgICAgICAgcmV0dXJuIG1vbml0b3IuZ2V0
KCk7CiAgICAgfQogCi0gICAgUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9uaXRvcj4gbW9uaXRvciA9
IERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6Y3JlYXRlKGNsaWVudCk7CisgICAgYXV0byBtb25pdG9y
ID0gRGlzcGxheVJlZnJlc2hNb25pdG9yOjpjcmVhdGUoY2xpZW50KTsKICAgICBpZiAoIW1vbml0
b3IpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgbW9uaXRvci0+YWRkQ2xpZW50KGNs
aWVudCk7CiAgICAgRGlzcGxheVJlZnJlc2hNb25pdG9yKiByZXN1bHQgPSBtb25pdG9yLmdldCgp
OwotICAgIG1fbW9uaXRvcnMuYXBwZW5kKG1vbml0b3IucmVsZWFzZSgpKTsKKyAgICBtX21vbml0
b3JzLmFwcGVuZChXVEZNb3ZlKG1vbml0b3IpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZv
bnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9u
dHMuY3BwCmluZGV4IGMzZjIzMjYwMWE4MDBiMjVmZGQwOWI5NGMyMDUxNGQxYjJlZWMwNTcuLmQz
NmVkMDkyNzRlM2I3ZGE4NTJiZWEyY2FmOTQ4MmJkNGUxYzhlZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuY3BwCkBAIC0z
MjQsNyArMzI0LDcgQEAgR2x5cGhEYXRhIEZvbnRDYXNjYWRlRm9udHM6OmdseXBoRGF0YUZvclN5
c3RlbUZhbGxiYWNrKFVDaGFyMzIgYywgY29uc3QgRm9udENhc2MKICAgICBpZiAoIW9yaWdpbmFs
Rm9udCkKICAgICAgICAgb3JpZ2luYWxGb250ID0gJnByaW1hcnlSYW5nZXMuZm9udEZvckZpcnN0
UmFuZ2UoKTsKIAotICAgIFJlZlB0cjxGb250PiBzeXN0ZW1GYWxsYmFja0ZvbnQgPSBvcmlnaW5h
bEZvbnQtPnN5c3RlbUZhbGxiYWNrRm9udEZvckNoYXJhY3RlcihjLCBkZXNjcmlwdGlvbiwgbV9p
c0ZvclBsYXRmb3JtRm9udCk7CisgICAgYXV0byBzeXN0ZW1GYWxsYmFja0ZvbnQgPSBvcmlnaW5h
bEZvbnQtPnN5c3RlbUZhbGxiYWNrRm9udEZvckNoYXJhY3RlcihjLCBkZXNjcmlwdGlvbiwgbV9p
c0ZvclBsYXRmb3JtRm9udCk7CiAgICAgaWYgKCFzeXN0ZW1GYWxsYmFja0ZvbnQpCiAgICAgICAg
IHJldHVybiBHbHlwaERhdGEoKTsKIApAQCAtMzQ4LDcgKzM0OCw3IEBAIEdseXBoRGF0YSBGb250
Q2FzY2FkZUZvbnRzOjpnbHlwaERhdGFGb3JTeXN0ZW1GYWxsYmFjayhVQ2hhcjMyIGMsIGNvbnN0
IEZvbnRDYXNjCiAKICAgICAvLyBLZWVwIHRoZSBzeXN0ZW0gZmFsbGJhY2sgZm9udHMgd2UgdXNl
IGFsaXZlLgogICAgIGlmIChmYWxsYmFja0dseXBoRGF0YS5nbHlwaCkKLSAgICAgICAgbV9zeXN0
ZW1GYWxsYmFja0ZvbnRTZXQuYWRkKHN5c3RlbUZhbGxiYWNrRm9udC5yZWxlYXNlKCkpOworICAg
ICAgICBtX3N5c3RlbUZhbGxiYWNrRm9udFNldC5hZGQoV1RGTW92ZShzeXN0ZW1GYWxsYmFja0Zv
bnQpKTsKIAogICAgIHJldHVybiBmYWxsYmFja0dseXBoRGF0YTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAppbmRleCBiOWI5MjMxOTBjNWYz
MjVlMTMyZGViNjVmZDc3NWFjNjk5YTQxZjU1Li40ZjJmYjViYjVkMjk1NjQwOGM3MzNiMDk5N2Vh
NzM5Y2NiNTE3YTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1By
aXZhdGVBVkYuY3BwCkBAIC00MDUsNyArNDA1LDcgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGOjpwcm9jZXNzQXR0cmlidXRlZFN0cmluZ3MoQ0ZBcnJheVJlZiBhdHRyaWJ1dGVkU3QK
ICAgICAgICAgCiAgICAgICAgIExPRyhNZWRpYSwgIkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6
OnByb2Nlc3NDdWUoJXApIC0gYWRkaW5nIGN1ZSBcIiVzXCIgZm9yIHRpbWUgPSAlLjJmLCBlbmQg
PSAlLjJmLCBwb3NpdGlvbiA9ICAlLjJmLCBsaW5lID0gICUuMmYiLCB0aGlzLCBjdWVEYXRhLT5j
b250ZW50KCkudXRmOCgpLmRhdGEoKSwgY3VlRGF0YS0+c3RhcnRUaW1lKCkudG9Eb3VibGUoKSwg
Y3VlRGF0YS0+ZW5kVGltZSgpLnRvRG91YmxlKCksIGN1ZURhdGEtPnBvc2l0aW9uKCksIGN1ZURh
dGEtPmxpbmUoKSk7CiAKLSAgICAgICAgY2xpZW50KCktPmFkZEdlbmVyaWNDdWUodGhpcywgY3Vl
RGF0YS5yZWxlYXNlKCkpOworICAgICAgICBjbGllbnQoKS0+YWRkR2VuZXJpY0N1ZSh0aGlzLCBX
VEZNb3ZlKGN1ZURhdGEpKTsKICAgICB9CiAKICAgICBtX3BlbmRpbmdDdWVTdGF0dXMgPSBzZWVr
aW5nKCkgPyBEZWxpdmVyZWREdXJpbmdTZWVrIDogVmFsaWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFTZWxlY3Rpb25Hcm91
cEFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMubW0KaW5kZXggZDEzNmQ4NzM2OTMzMmNjN2E5
NzNkMDE0OWQ0NmI4YjYzOGFmY2NmMy4uMTBkMmIyMTU0ZmZhOTc0YTFhNzkxMzA3OWVhNGVhNmRk
ODQ3OTljMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNlbGVjdGlvbkdyb3VwQVZG
T2JqQy5tbQpAQCAtMTI5LDEwICsxMjksMTAgQEAgdm9pZCBNZWRpYVNlbGVjdGlvbkdyb3VwQVZG
T2JqQzo6dXBkYXRlT3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgY2hhcmFjdGVyaXMKICAg
ICBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uKiBzZWxlY3RlZE9wdGlvbiA9IFttX3BsYXllckl0ZW0g
c2VsZWN0ZWRNZWRpYU9wdGlvbkluTWVkaWFTZWxlY3Rpb25Hcm91cDptX21lZGlhU2VsZWN0aW9u
R3JvdXAuZ2V0KCldOwogCiAgICAgZm9yIChBVk1lZGlhU2VsZWN0aW9uT3B0aW9uKiBhZGRlZEFW
T3B0aW9uIGluIGFkZGVkQVZPcHRpb25zLmdldCgpKSB7Ci0gICAgICAgIFJlZlB0cjxNZWRpYVNl
bGVjdGlvbk9wdGlvbkFWRk9iakM+IGFkZGVkT3B0aW9uID0gTWVkaWFTZWxlY3Rpb25PcHRpb25B
VkZPYmpDOjpjcmVhdGUoKnRoaXMsIGFkZGVkQVZPcHRpb24pOworICAgICAgICBhdXRvIGFkZGVk
T3B0aW9uID0gTWVkaWFTZWxlY3Rpb25PcHRpb25BVkZPYmpDOjpjcmVhdGUoKnRoaXMsIGFkZGVk
QVZPcHRpb24pOwogICAgICAgICBpZiAoYWRkZWRBVk9wdGlvbiA9PSBzZWxlY3RlZE9wdGlvbikK
ICAgICAgICAgICAgIG1fc2VsZWN0ZWRPcHRpb24gPSBhZGRlZE9wdGlvbi5nZXQoKTsKLSAgICAg
ICAgbV9vcHRpb25zLnNldChhZGRlZEFWT3B0aW9uLCBhZGRlZE9wdGlvbi5yZWxlYXNlKCkpOwor
ICAgICAgICBtX29wdGlvbnMuc2V0KGFkZGVkQVZPcHRpb24sIFdURk1vdmUoYWRkZWRPcHRpb24p
KTsKICAgICB9CiAKICAgICBpZiAoIW1fc2hvdWxkU2VsZWN0T3B0aW9uQXV0b21hdGljYWxseSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMubW0KaW5kZXggZjhmNmIyNTE1NGQ3NjVmMWQwYWJmNjdlOTRhZWI0ZDdiNmZlNzY5Yi4uYTlk
NTc4ZmE4YWEyZGVhYTMxYTNmMjBlNWRmODE3OThhYjA3MDdjZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAgLTY5Niw3
ICs2OTYsNyBAQCBib29sIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpwcm9jZXNzQ29kZWRG
cmFtZShpbnQgdHJhY2tJRCwgQ01TYW1wbGVCdWZmZXJSZQogICAgIGlmIChtX2NsaWVudCkgewog
ICAgICAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IG1lZGlhU2FtcGxlID0gTWVkaWFTYW1wbGVBVkZP
YmpDOjpjcmVhdGUoc2FtcGxlQnVmZmVyLCB0cmFja0lEKTsKICAgICAgICAgTE9HKE1lZGlhU291
cmNlU2FtcGxlcywgIlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpwcm9jZXNzQ29kZWRGcmFt
ZSglcCkgLSBzYW1wbGUoJXMpIiwgdGhpcywgdG9TdHJpbmcoKm1lZGlhU2FtcGxlKS51dGY4KCku
ZGF0YSgpKTsKLSAgICAgICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZl
U2FtcGxlKHRoaXMsIG1lZGlhU2FtcGxlLnJlbGVhc2UoKSk7CisgICAgICAgIG1fY2xpZW50LT5z
b3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZVNhbXBsZSh0aGlzLCBXVEZNb3ZlKG1lZGlhU2Ft
cGxlKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCA0ZGE2
N2YyYjFmNzY2MTJjZWFjZjM1Y2QyODYyNjc5ZjYwMjQxYjkzLi44ODM3M2M4ZWNiNjkyZWY2Njgy
Y2EzZTMxMzk1NmE5NzkxY2EyMWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTM4MTUsOCArMzgxNSw4
IEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmZldGNoQ2xv
bmVMYXllcnMoR3JhcGhpY3NMYXllciogcmVwCiAKICAgICAgICAgZm9yIChhdXRvKiBjaGlsZExh
eWVyIDogY2hpbGRMYXllcnMpIHsKICAgICAgICAgICAgIEdyYXBoaWNzTGF5ZXJDQSYgY2hpbGRM
YXllckNBID0gZG93bmNhc3Q8R3JhcGhpY3NMYXllckNBPigqY2hpbGRMYXllcik7Ci0gICAgICAg
ICAgICBpZiAoUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gcGxhdGZvcm1MYXllciA9IGNoaWxkTGF5
ZXJDQS5mZXRjaENsb25lTGF5ZXJzKHJlcGxpY2FSb290LCByZXBsaWNhU3RhdGUsIEludGVybWVk
aWF0ZUNsb25lTGV2ZWwpKQotICAgICAgICAgICAgICAgIGNsb25hbFN1YmxheWVycy5hcHBlbmQo
cGxhdGZvcm1MYXllci5yZWxlYXNlKCkpOworICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1M
YXllciA9IGNoaWxkTGF5ZXJDQS5mZXRjaENsb25lTGF5ZXJzKHJlcGxpY2FSb290LCByZXBsaWNh
U3RhdGUsIEludGVybWVkaWF0ZUNsb25lTGV2ZWwpKQorICAgICAgICAgICAgICAgIGNsb25hbFN1
YmxheWVycy5hcHBlbmQoV1RGTW92ZShwbGF0Zm9ybUxheWVyKSk7CiAgICAgICAgIH0KIAogICAg
ICAgICByZXBsaWNhU3RhdGUucG9wKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcAppbmRleCA0YzlkNzE1MmQ5ODIx
NDBkZWRjZDUwNGNmZWE0MGM4NDU4NGI4NzBhLi4wMGEyNTczYWZmMTJlZjg5ZGIyYTUxMDgxM2Jm
ZTBjOWUzYWQxMTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAKQEAgLTEzNSwxMyArMTM1LDEzIEBAIFBhc3NS
ZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBQbGF0Zm9ybUNBTGF5ZXI6OmNyZWF0ZUNvbXBhdGlibGVM
YXllck9yVGFrZUZyb21Qb29sCiAKICAgICBpZiAoKGxheWVyID0gbGF5ZXJQb29sKCkudGFrZUxh
eWVyV2l0aFNpemUoc2l6ZSkpKSB7CiAgICAgICAgIGxheWVyLT5zZXRPd25lcihjbGllbnQpOwot
ICAgICAgICByZXR1cm4gbGF5ZXIucmVsZWFzZSgpOworICAgICAgICByZXR1cm4gV1RGTW92ZShs
YXllcik7CiAgICAgfQogCiAgICAgbGF5ZXIgPSBjcmVhdGVDb21wYXRpYmxlTGF5ZXIobGF5ZXJU
eXBlLCBjbGllbnQpOwogICAgIGxheWVyLT5zZXRCb3VuZHMoRmxvYXRSZWN0KEZsb2F0UG9pbnQo
KSwgc2l6ZSkpOwogICAgIAotICAgIHJldHVybiBsYXllci5yZWxlYXNlKCk7CisgICAgcmV0dXJu
IFdURk1vdmUobGF5ZXIpOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6bW92ZVRvTGF5ZXJQ
b29sKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVyRGF0YUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyRGF0YUNHLmNwcAppbmRleCBmYTYzNGM4NmM0MzQ1YmUxYmU3ZWI1NjU3MDhk
NjQ3YWEwYTlkYzI0Li41ZjUwZjljYzAxMjVjY2ZhYzZiZjYyN2Y1M2Q2MGM1ZDEyYTUxZTFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckRhdGFDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJEYXRhQ0cuY3BwCkBAIC05Niw3ICs5Niw3IEBAIFJlZlB0cjxVaW50OENsYW1wZWRB
cnJheT4gSW1hZ2VCdWZmZXJEYXRhOjpnZXREYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0
IEluCiAgICAgaWYgKGFyZWEuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gcmVzdWx0ID0gVWludDhDbGFtcGVk
QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoYXJlYS51bnNhZmVHZXQoKSk7CisgICAgYXV0byBy
ZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZChhcmVhLnVuc2Fm
ZUdldCgpKTsKICAgICB1bnNpZ25lZCBjaGFyKiByZXN1bHREYXRhID0gcmVzdWx0LT5kYXRhKCk7
CiAgICAgaWYgKCFyZXN1bHREYXRhKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiSW1hZ2VCdWZm
ZXJEYXRhOiBVbmFibGUgdG8gY3JlYXRlIGJ1ZmZlci4gUmVxdWVzdGVkIHNpemUgd2FzICVkIHgg
JWQgPSAldVxuIiwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpLCBhcmVhLnVuc2FmZUdldCgp
KTsKQEAgLTEzOSw3ICsxMzksNyBAQCBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVm
ZmVyRGF0YTo6Z2V0RGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbgogICAgIENoZWNr
ZWQ8aW50PiBoZWlnaHQgPSBlbmR5IC0gb3JpZ2lueTsKICAgICAKICAgICBpZiAod2lkdGgudW5z
YWZlR2V0KCkgPD0gMCB8fCBoZWlnaHQudW5zYWZlR2V0KCkgPD0gMCkKLSAgICAgICAgcmV0dXJu
IHJlc3VsdC5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgCiAgICAgdW5z
aWduZWQgZGVzdEJ5dGVzUGVyUm93ID0gNCAqIHJlY3Qud2lkdGgoKTsKICAgICB1bnNpZ25lZCBj
aGFyKiBkZXN0Um93cyA9IHJlc3VsdERhdGEgKyBkZXN0eSAqIGRlc3RCeXRlc1BlclJvdyArIGRl
c3R4ICogNDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAppbmRleCBjYmU1MTI4ZjllNjI2NzJiYTFjZmUyN2Iw
NWNlMzI2MzA0ZGEyNjdkLi41ZTQ3YTQwNjhkODJjM2M1MGU4MzU5ZGUwNjc2ZDM4ODdlMDhmMDkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlckVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBAIC0yMzcsOSArMjM3LDkgQEAgUGFzc1JlZlB0cjxVaW50
OENsYW1wZWRBcnJheT4gRmlsdGVyRWZmZWN0Ojphc1VubXVsdGlwbGllZEltYWdlKGNvbnN0IElu
dFJlY3QmIHIKICAgICBJbnRTaXplIHNjYWxlZFNpemUocmVjdC5zaXplKCkpOwogICAgIEFTU0VS
VCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHNjYWxlZFNpemUpKTsKICAgICBzY2Fs
ZWRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRlclNjYWxlKCkpOwotICAgIFJlZlB0cjxVaW50OENs
YW1wZWRBcnJheT4gaW1hZ2VEYXRhID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlh
bGl6ZWQoc2NhbGVkU2l6ZS53aWR0aCgpICogc2NhbGVkU2l6ZS5oZWlnaHQoKSAqIDQpOworICAg
IGF1dG8gaW1hZ2VEYXRhID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQo
c2NhbGVkU2l6ZS53aWR0aCgpICogc2NhbGVkU2l6ZS5oZWlnaHQoKSAqIDQpOwogICAgIGNvcHlV
bm11bHRpcGxpZWRJbWFnZShpbWFnZURhdGEuZ2V0KCksIHJlY3QpOwotICAgIHJldHVybiBpbWFn
ZURhdGEucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKGltYWdlRGF0YSk7CiB9CiAKIFBh
c3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6YXNQcmVtdWx0aXBsaWVk
SW1hZ2UoY29uc3QgSW50UmVjdCYgcmVjdCkKQEAgLTI0Nyw5ICsyNDcsOSBAQCBQYXNzUmVmUHRy
PFVpbnQ4Q2xhbXBlZEFycmF5PiBGaWx0ZXJFZmZlY3Q6OmFzUHJlbXVsdGlwbGllZEltYWdlKGNv
bnN0IEludFJlY3QmCiAgICAgSW50U2l6ZSBzY2FsZWRTaXplKHJlY3Quc2l6ZSgpKTsKICAgICBB
U1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhzY2FsZWRTaXplKSk7CiAgICAg
c2NhbGVkU2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKLSAgICBSZWZQdHI8VWlu
dDhDbGFtcGVkQXJyYXk+IGltYWdlRGF0YSA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmlu
aXRpYWxpemVkKHNjYWxlZFNpemUud2lkdGgoKSAqIHNjYWxlZFNpemUuaGVpZ2h0KCkgKiA0KTsK
KyAgICBhdXRvIGltYWdlRGF0YSA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxp
emVkKHNjYWxlZFNpemUud2lkdGgoKSAqIHNjYWxlZFNpemUuaGVpZ2h0KCkgKiA0KTsKICAgICBj
b3B5UHJlbXVsdGlwbGllZEltYWdlKGltYWdlRGF0YS5nZXQoKSwgcmVjdCk7Ci0gICAgcmV0dXJu
IGltYWdlRGF0YS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1vdmUoaW1hZ2VEYXRhKTsKIH0K
IAogaW5saW5lIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5SW1hZ2VCeXRlcyhVaW50OENsYW1wZWRB
cnJheSogc291cmNlLCBVaW50OENsYW1wZWRBcnJheSogZGVzdGluYXRpb24sIGNvbnN0IEludFJl
Y3QmIHJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvSW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1h
Z2VNYWMubW0KaW5kZXggZmEwMTFhYTg4MTYzMDMwMDA5NDQ5OGViYzBmZmNhOWZiOWMzMDM0Yi4u
MDFlYjZkZDMwMDQzYTIyNTI5MTc2ZmQ5MTIxMTdkYzU3NzZjMTdiYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQpAQCAtNjgsOSArNjgs
OSBAQCBQYXNzUmVmUHRyPEltYWdlPiBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3Qg
Y2hhciAqbmFtZSkKICAgICBOU1N0cmluZyAqaW1hZ2VQYXRoID0gW2J1bmRsZSBwYXRoRm9yUmVz
b3VyY2U6W05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOm5hbWVdIG9mVHlwZTpAInBuZyJd
OwogICAgIE5TRGF0YSAqbmFtZWRJbWFnZURhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNP
ZkZpbGU6aW1hZ2VQYXRoXTsKICAgICBpZiAobmFtZWRJbWFnZURhdGEpIHsKLSAgICAgICAgUmVm
UHRyPEltYWdlPiBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKKyAgICAgICAgYXV0byBp
bWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAgICAgICAgaW1hZ2UtPnNldERhdGEoU2hh
cmVkQnVmZmVyOjp3cmFwTlNEYXRhKG5hbWVkSW1hZ2VEYXRhKSwgdHJ1ZSk7Ci0gICAgICAgIHJl
dHVybiBpbWFnZS5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBXVEZNb3ZlKGltYWdlKTsKICAg
ICB9CiAKICAgICAvLyBXZSBoYXZlIHJlcG9ydHMgaW5kaWNhdGluZyByZXNvdXJjZSBsb2FkcyBh
cmUgZmFpbGluZywgYnV0IHdlIGRvbid0IHlldCBrbm93IHRoZSByb290IGNhdXNlKHMpLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKaW5kZXggMDQ4OTUz
NmQzYmQwY2JiZjdiMmJkYjA3YTZiYzJkYjg1Yjk0OTllNy4uYTQ4NTkyYTgxMGFmMDc0OWY0ZmU5
ODEwMWY3ZDFiMTZhYzZhOTI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RP
cGVuR0xDb21tb24uY3BwCkBAIC0xMzIsOCArMTMyLDEwIEBAIHN0YXRpYyB1aW50NjRfdCBuYW1l
SGFzaEZvclNoYWRlcihjb25zdCBjaGFyKiBuYW1lLCBzaXplX3QgbGVuZ3RoKQogCiBQYXNzUmVm
UHRyPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlRm9yQ3VycmVu
dEdMQ29udGV4dCgpCiB7Ci0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0g
YWRvcHRSZWYobmV3IEdyYXBoaWNzQ29udGV4dDNEKEF0dHJpYnV0ZXMoKSwgMCwgR3JhcGhpY3ND
b250ZXh0M0Q6OlJlbmRlclRvQ3VycmVudEdMQ29udGV4dCkpOwotICAgIHJldHVybiBjb250ZXh0
LT5tX3ByaXZhdGUgPyBjb250ZXh0LnJlbGVhc2UoKSA6IDA7CisgICAgYXV0byBjb250ZXh0ID0g
YWRvcHRSZWYoKm5ldyBHcmFwaGljc0NvbnRleHQzRChBdHRyaWJ1dGVzKCksIDAsIEdyYXBoaWNz
Q29udGV4dDNEOjpSZW5kZXJUb0N1cnJlbnRHTENvbnRleHQpKTsKKyAgICBpZiAoIWNvbnRleHQt
Pm1fcHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIFdURk1vdmUo
Y29udGV4dCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZhbGlkYXRlRGVwdGhTdGVu
Y2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikKQEAgLTIwNSw3ICsy
MDcsNyBAQCBQYXNzUmVmUHRyPEltYWdlRGF0YT4gR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50UmVu
ZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkKICAgICBpZiAobV9hdHRycy5wcmVtdWx0aXBsaWVk
QWxwaGEpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPEltYWdlRGF0YT4gaW1hZ2VE
YXRhID0gSW1hZ2VEYXRhOjpjcmVhdGUoSW50U2l6ZShtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50
SGVpZ2h0KSk7CisgICAgYXV0byBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShJbnRTaXpl
KG1fY3VycmVudFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQpKTsKICAgICB1bnNpZ25lZCBjaGFyKiBw
aXhlbHMgPSBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpOwogICAgIGludCB0b3RhbEJ5dGVzID0g
NCAqIG1fY3VycmVudFdpZHRoICogbV9jdXJyZW50SGVpZ2h0OwogCkBAIC0yMTUsNyArMjE3LDcg
QEAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFJlbmRlcmlu
Z1Jlc3VsdHNUb0ltYWdlRGF0YSgpCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0b3RhbEJ5dGVz
OyBpICs9IDQpCiAgICAgICAgIHN0ZDo6c3dhcChwaXhlbHNbaV0sIHBpeGVsc1tpICsgMl0pOwog
Ci0gICAgcmV0dXJuIGltYWdlRGF0YS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1vdmUoaW1h
Z2VEYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cHJlcGFyZVRleHR1cmUoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwCmluZGV4IGRlYTdh
N2MyOTc0ZTNkOGE5ZTBkYjgxNzdkOTZiOWU0ZTJmMThjMGQuLjlhMWIyZDY5NmM3Y2YwOWI5NTdm
NGNmMjk4NGEyMGUzODFjODY3MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlck1hYy5jcHAKQEAgLTExNiwxMCArMTE2LDEwIEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlck1hYzo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNy
ZWF0CiAgICAgICAgIH0KICAgICAgICAgLy8gRklYTUU6IENvbnNpZGVyIHRoZSBjb25zdHJhaW50
cyB3aGVuIGNob29zaW5nIGFtb25nIG11bHRpcGxlIGRldmljZXMuIEZvciBub3cganVzdCBzZWxl
Y3QgdGhlIGZpcnN0IGF2YWlsYWJsZQogICAgICAgICAvLyBkZXZpY2Ugb2YgdGhlIGFwcHJvcHJp
YXRlIHR5cGUuCi0gICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBhdWRpb1NvdXJj
ZSA9IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpLmJlc3RTb3VyY2VzRm9yVHlw
ZUFuZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBhdWRpb0NvbnN0cmFp
bnRzLmdldCgpKS5hdCgwKTsKKyAgICAgICAgYXV0byBhdWRpb1NvdXJjZSA9IEFWQ2FwdHVyZURl
dmljZU1hbmFnZXI6OnNpbmdsZXRvbigpLmJlc3RTb3VyY2VzRm9yVHlwZUFuZENvbnN0cmFpbnRz
KFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBhdWRpb0NvbnN0cmFpbnRzLmdldCgpKS5hdCgw
KTsKICAgICAgICAgQVNTRVJUKGF1ZGlvU291cmNlKTsKICAgICAgICAgCi0gICAgICAgIGF1ZGlv
U291cmNlcy5hcHBlbmQoYXVkaW9Tb3VyY2UucmVsZWFzZSgpKTsKKyAgICAgICAgYXVkaW9Tb3Vy
Y2VzLmFwcGVuZChXVEZNb3ZlKGF1ZGlvU291cmNlKSk7CiAgICAgfQogICAgIAogICAgIGlmICh2
aWRlb0NvbnN0cmFpbnRzKSB7CkBAIC0xMzEsMTAgKzEzMSwxMCBAQCB2b2lkIFJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXJNYWM6OmNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJl
YW1DcmVhdAogICAgICAgICB9CiAgICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciB0aGUgY29uc3Ry
YWludHMgd2hlbiBjaG9vc2luZyBhbW9uZyBtdWx0aXBsZSBkZXZpY2VzLiBGb3Igbm93IGp1c3Qg
c2VsZWN0IHRoZSBmaXJzdCBhdmFpbGFibGUKICAgICAgICAgLy8gZGV2aWNlIG9mIHRoZSBhcHBy
b3ByaWF0ZSB0eXBlLgotICAgICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gdmlkZW9T
b3VyY2UgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5iZXN0U291cmNlc0Zv
clR5cGVBbmRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywgdmlkZW9Db25z
dHJhaW50cy5nZXQoKSkuYXQoMCk7CisgICAgICAgIGF1dG8gdmlkZW9Tb3VyY2UgPSBBVkNhcHR1
cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5iZXN0U291cmNlc0ZvclR5cGVBbmRDb25zdHJh
aW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywgdmlkZW9Db25zdHJhaW50cy5nZXQoKSku
YXQoMCk7CiAgICAgICAgIEFTU0VSVCh2aWRlb1NvdXJjZSk7CiAgICAgICAgIAotICAgICAgICB2
aWRlb1NvdXJjZXMuYXBwZW5kKHZpZGVvU291cmNlLnJlbGVhc2UoKSk7CisgICAgICAgIHZpZGVv
U291cmNlcy5hcHBlbmQoV1RGTW92ZSh2aWRlb1NvdXJjZSkpOwogICAgIH0KICAgICAKICAgICBj
bGllbnQtPmRpZENyZWF0ZVN0cmVhbShNZWRpYVN0cmVhbVByaXZhdGU6OmNyZWF0ZShhdWRpb1Nv
dXJjZXMsIHZpZGVvU291cmNlcykpOwpAQCAtMTQ3LDE0ICsxNDcsMTQgQEAgdm9pZCBSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyTWFjOjpjcmVhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbUNyZWF0
aW9uQ2xpZW50KgogICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+IHZpZGVv
U291cmNlczsKIAogICAgIGlmICghYXVkaW9EZXZpY2VJRC5pc0VtcHR5KCkpIHsKLSAgICAgICAg
UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IGF1ZGlvU291cmNlID0gQVZDYXB0dXJlRGV2aWNl
TWFuYWdlcjo6c2luZ2xldG9uKCkuc291cmNlV2l0aFVJRChhdWRpb0RldmljZUlELCBSZWFsdGlt
ZU1lZGlhU291cmNlOjpBdWRpbywgbnVsbHB0cik7CisgICAgICAgIGF1dG8gYXVkaW9Tb3VyY2Ug
PSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5zb3VyY2VXaXRoVUlEKGF1ZGlv
RGV2aWNlSUQsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBudWxscHRyKTsKICAgICAgICAg
aWYgKGF1ZGlvU291cmNlKQotICAgICAgICAgICAgYXVkaW9Tb3VyY2VzLmFwcGVuZChhdWRpb1Nv
dXJjZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgYXVkaW9Tb3VyY2VzLmFwcGVuZChXVEZNb3Zl
KGF1ZGlvU291cmNlKSk7CiAgICAgfQogICAgIGlmICghdmlkZW9EZXZpY2VJRC5pc0VtcHR5KCkp
IHsKLSAgICAgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IHZpZGVvU291cmNlID0gQVZD
YXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuc291cmNlV2l0aFVJRCh2aWRlb0Rldmlj
ZUlELCBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywgbnVsbHB0cik7CisgICAgICAgIGF1dG8g
dmlkZW9Tb3VyY2UgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5zb3VyY2VX
aXRoVUlEKHZpZGVvRGV2aWNlSUQsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvLCBudWxscHRy
KTsKICAgICAgICAgaWYgKHZpZGVvU291cmNlKQotICAgICAgICAgICAgdmlkZW9Tb3VyY2VzLmFw
cGVuZCh2aWRlb1NvdXJjZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgdmlkZW9Tb3VyY2VzLmFw
cGVuZChXVEZNb3ZlKHZpZGVvU291cmNlKSk7CiAgICAgfQogCiAgICAgY2xpZW50LT5kaWRDcmVh
dGVTdHJlYW0oTWVkaWFTdHJlYW1Qcml2YXRlOjpjcmVhdGUoYXVkaW9Tb3VyY2VzLCB2aWRlb1Nv
dXJjZXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKaW5kZXggYWFlODA4MzkxMTVmZjli
YWZiOTQ4YzgyNTZmMzgzNGI0OGI4NmVlZS4uOGNjNmYwZjMzNTJjMjMzMzhiNWUyOTA1MTJjZWU0
ZWZlZmM0YWI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKQEAgLTgxLDggKzgxLDgg
QEAgdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6dmFsaWRhdGVSZXF1ZXN0Q29u
c3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBhdWRpb1NvdXJjZSA9IE1v
Y2tSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGUoKTsKLSAgICAgICAgYXVkaW9Tb3VyY2VzLmFw
cGVuZChhdWRpb1NvdXJjZS5yZWxlYXNlKCkpOworICAgICAgICBhdXRvIGF1ZGlvU291cmNlID0g
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZSgpOworICAgICAgICBhdWRpb1NvdXJjZXMu
YXBwZW5kKFdURk1vdmUoYXVkaW9Tb3VyY2UpKTsKICAgICB9CiAKICAgICBpZiAodmlkZW9Db25z
dHJhaW50cykgewpAQCAtOTIsOCArOTIsOCBAQCB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFJlYWx0aW1lTWVk
aWFTb3VyY2U+IHZpZGVvU291cmNlID0gTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmNyZWF0ZSgp
OwotICAgICAgICB2aWRlb1NvdXJjZXMuYXBwZW5kKHZpZGVvU291cmNlLnJlbGVhc2UoKSk7Cisg
ICAgICAgIGF1dG8gdmlkZW9Tb3VyY2UgPSBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRl
KCk7CisgICAgICAgIHZpZGVvU291cmNlcy5hcHBlbmQoV1RGTW92ZSh2aWRlb1NvdXJjZSkpOwog
ICAgIH0KIAogICAgIGNsaWVudC0+Y29uc3RyYWludHNWYWxpZGF0ZWQoYXVkaW9Tb3VyY2VzLCB2
aWRlb1NvdXJjZXMpOwpAQCAtMTE1LDggKzExNSw4IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXI6OmNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVh
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8UmVhbHRp
bWVNZWRpYVNvdXJjZT4gYXVkaW9Tb3VyY2UgPSBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6Y3Jl
YXRlKCk7Ci0gICAgICAgIGF1ZGlvU291cmNlcy5hcHBlbmQoYXVkaW9Tb3VyY2UucmVsZWFzZSgp
KTsKKyAgICAgICAgYXV0byBhdWRpb1NvdXJjZSA9IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpj
cmVhdGUoKTsKKyAgICAgICAgYXVkaW9Tb3VyY2VzLmFwcGVuZChXVEZNb3ZlKGF1ZGlvU291cmNl
KSk7CiAgICAgfQogCiAgICAgaWYgKHZpZGVvQ29uc3RyYWludHMpIHsKQEAgLTEyNiw4ICsxMjYs
OCBAQCB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpjcmVhdGVNZWRpYVN0cmVh
bShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IHZpZGVvU291cmNlID0g
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmNyZWF0ZSgpOwotICAgICAgICB2aWRlb1NvdXJjZXMu
YXBwZW5kKHZpZGVvU291cmNlLnJlbGVhc2UoKSk7CisgICAgICAgIGF1dG8gdmlkZW9Tb3VyY2Ug
PSBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRlKCk7CisgICAgICAgIHZpZGVvU291cmNl
cy5hcHBlbmQoV1RGTW92ZSh2aWRlb1NvdXJjZSkpOwogICAgIH0KICAgICAKICAgICBjbGllbnQt
PmRpZENyZWF0ZVN0cmVhbShNZWRpYVN0cmVhbVByaXZhdGU6OmNyZWF0ZShhdWRpb1NvdXJjZXMs
IHZpZGVvU291cmNlcykpOwpAQCAtMTQwLDEyICsxNDAsMTIgQEAgdm9pZCBNb2NrUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlcjo6Y3JlYXRlTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1DcmVhdGlvbkNs
aWVudCoKICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiB2aWRlb1NvdXJj
ZXM7CiAKICAgICBpZiAoIWF1ZGlvRGV2aWNlSUQuaXNFbXB0eSgpICYmIGF1ZGlvRGV2aWNlSUQg
PT0gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6Om1vY2tBdWRpb1NvdXJjZVBlcnNpc3RlbnRJRCgp
KSB7Ci0gICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBhdWRpb1NvdXJjZSA9IE1v
Y2tSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGUoKTsKLSAgICAgICAgYXVkaW9Tb3VyY2VzLmFw
cGVuZChhdWRpb1NvdXJjZS5yZWxlYXNlKCkpOworICAgICAgICBhdXRvIGF1ZGlvU291cmNlID0g
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZSgpOworICAgICAgICBhdWRpb1NvdXJjZXMu
YXBwZW5kKFdURk1vdmUoYXVkaW9Tb3VyY2UpKTsKICAgICB9CiAgICAgaWYgKCF2aWRlb0Rldmlj
ZUlELmlzRW1wdHkoKSAmJiB2aWRlb0RldmljZUlEID09IE1vY2tSZWFsdGltZU1lZGlhU291cmNl
Ojptb2NrVmlkZW9Tb3VyY2VQZXJzaXN0ZW50SUQoKSkgewotICAgICAgICBSZWZQdHI8UmVhbHRp
bWVNZWRpYVNvdXJjZT4gdmlkZW9Tb3VyY2UgPSBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3Jl
YXRlKCk7Ci0gICAgICAgIHZpZGVvU291cmNlcy5hcHBlbmQodmlkZW9Tb3VyY2UucmVsZWFzZSgp
KTsKKyAgICAgICAgYXV0byB2aWRlb1NvdXJjZSA9IE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpj
cmVhdGUoKTsKKyAgICAgICAgdmlkZW9Tb3VyY2VzLmFwcGVuZChXVEZNb3ZlKHZpZGVvU291cmNl
KSk7CiAgICAgfQogCiAgICAgY2xpZW50LT5kaWRDcmVhdGVTdHJlYW0oTWVkaWFTdHJlYW1Qcml2
YXRlOjpjcmVhdGUoYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCmluZGV4IDcy
MGVmYzg3MWJmZDFlNGI0NTczNTA3ODdlNzNmODM2MzdiYTkxNTMuLjY4MDYwMzU0ZTdlNTBlYmQ4
NjdiMWQwODA5ZDNkMjdjM2U1MTRiYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIHZv
aWQgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBWZWN0
b3I8QmxvYlBhcnQ+IGJsb2JQYXJ0CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBy
ZWdpc3RlckJsb2JSZXNvdXJjZUhhbmRsZUNvbnN0cnVjdG9yKCk7CiAKLSAgICBSZWZQdHI8Qmxv
YkRhdGE+IGJsb2JEYXRhID0gQmxvYkRhdGE6OmNyZWF0ZShjb250ZW50VHlwZSk7CisgICAgYXV0
byBibG9iRGF0YSA9IEJsb2JEYXRhOjpjcmVhdGUoY29udGVudFR5cGUpOwogCiAgICAgLy8gVGhl
IGJsb2IgZGF0YSBpcyBzdG9yZWQgaW4gdGhlICJjYW5vbmljYWwiIHdheS4gVGhhdCBpcywgaXQg
b25seSBjb250YWlucyBhIGxpc3Qgb2YgRGF0YSBhbmQgRmlsZSBpdGVtcy4KICAgICAvLyAxKSBU
aGUgRGF0YSBpdGVtIGlzIGRlbm90ZWQgYnkgdGhlIHJhdyBkYXRhIGFuZCB0aGUgcmFuZ2UuCkBA
IC0xNTEsNyArMTUxLDcgQEAgdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkwo
Y29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4gYmxvYlBhcnQKICAgICAgICAgfQogICAg
IH0KIAotICAgIG1fYmxvYnMuc2V0KHVybC5zdHJpbmcoKSwgYmxvYkRhdGEucmVsZWFzZSgpKTsK
KyAgICBtX2Jsb2JzLnNldCh1cmwuc3RyaW5nKCksIFdURk1vdmUoYmxvYkRhdGEpKTsKIH0KIAog
dm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFVSTCYgc3JjVVJMKQpAQCAtMjA4LDExICsyMDgsMTEgQEAgdm9pZCBCbG9iUmVnaXN0cnlJ
bXBsOjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBz
cmNVUkwKICAgICAgICAgZW5kID0gb3JpZ2luYWxTaXplOwogCiAgICAgdW5zaWduZWQgbG9uZyBs
b25nIG5ld0xlbmd0aCA9IGVuZCAtIHN0YXJ0OwotICAgIFJlZlB0cjxCbG9iRGF0YT4gbmV3RGF0
YSA9IEJsb2JEYXRhOjpjcmVhdGUob3JpZ2luYWxEYXRhLT5jb250ZW50VHlwZSgpKTsKKyAgICBh
dXRvIG5ld0RhdGEgPSBCbG9iRGF0YTo6Y3JlYXRlKG9yaWdpbmFsRGF0YS0+Y29udGVudFR5cGUo
KSk7CiAKLSAgICBhcHBlbmRTdG9yYWdlSXRlbXMobmV3RGF0YS5nZXQoKSwgb3JpZ2luYWxEYXRh
LT5pdGVtcygpLCBzdGFydCwgbmV3TGVuZ3RoKTsKKyAgICBhcHBlbmRTdG9yYWdlSXRlbXMobmV3
RGF0YS5wdHIoKSwgb3JpZ2luYWxEYXRhLT5pdGVtcygpLCBzdGFydCwgbmV3TGVuZ3RoKTsKIAot
ICAgIG1fYmxvYnMuc2V0KHVybC5zdHJpbmcoKSwgbmV3RGF0YS5yZWxlYXNlKCkpOworICAgIG1f
YmxvYnMuc2V0KHVybC5zdHJpbmcoKSwgV1RGTW92ZShuZXdEYXRhKSk7CiB9CiAKIHZvaWQgQmxv
YlJlZ2lzdHJ5SW1wbDo6dW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCmluZGV4
IGJjZTZiYTk3MzFiZjE5NDAxMTc2Y2NiZjZiZGQ3MGZkN2VlZjUyMmYuLmI2YzY3YjdjZGUyNmE3
NTNjOGFiMmUxY2MyMDE0OGJjYzc4ZmIwZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCkBAIC05MywxMyArOTMsMTMgQEAgUmVm
UHRyPFJlc291cmNlSGFuZGxlPiBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlKE5ldHdvcmtpbmdDb250
ZXh0KiBjb250ZXh0LCBjb25zdAogICAgIGlmIChwcm90b2NvbE1hcEl0ZW0gIT0gYnVpbHRpblJl
c291cmNlSGFuZGxlQ29uc3RydWN0b3JNYXAoKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHByb3Rv
Y29sTWFwSXRlbS0+dmFsdWUocmVxdWVzdCwgY2xpZW50KTsKIAotICAgIFJlZlB0cjxSZXNvdXJj
ZUhhbmRsZT4gbmV3SGFuZGxlKGFkb3B0UmVmKG5ldyBSZXNvdXJjZUhhbmRsZShjb250ZXh0LCBy
ZXF1ZXN0LCBjbGllbnQsIGRlZmVyc0xvYWRpbmcsIHNob3VsZENvbnRlbnRTbmlmZikpKTsKKyAg
ICBhdXRvIG5ld0hhbmRsZSA9IGFkb3B0UmVmKCpuZXcgUmVzb3VyY2VIYW5kbGUoY29udGV4dCwg
cmVxdWVzdCwgY2xpZW50LCBkZWZlcnNMb2FkaW5nLCBzaG91bGRDb250ZW50U25pZmYpKTsKIAog
ICAgIGlmIChuZXdIYW5kbGUtPmQtPm1fc2NoZWR1bGVkRmFpbHVyZVR5cGUgIT0gTm9GYWlsdXJl
KQotICAgICAgICByZXR1cm4gbmV3SGFuZGxlLnJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJuIFdU
Rk1vdmUobmV3SGFuZGxlKTsKIAogICAgIGlmIChuZXdIYW5kbGUtPnN0YXJ0KCkpCi0gICAgICAg
IHJldHVybiBuZXdIYW5kbGUucmVsZWFzZSgpOworICAgICAgICByZXR1cm4gV1RGTW92ZShuZXdI
YW5kbGUpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAppbmRl
eCA0ODYxMzNjYzg5Yzk5ZDZiMjQwNjUzMzFhNzJjNWQ5YTRkMDhkNmQ1Li40MGViZjRkNjkwNjc1
MjU1YWEzNjk0OTZhMzJmNDljYmU3NTkzNjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKQEAgLTIw
MCw3ICsyMDAsNyBAQCBzdGF0aWMgdm9pZCogZm9ybUNyZWF0ZShDRlJlYWRTdHJlYW1SZWYgc3Ry
ZWFtLCB2b2lkKiBjb250ZXh0KQogICAgIEZvcm1DcmVhdGlvbkNvbnRleHQqIGZvcm1Db250ZXh0
ID0gc3RhdGljX2Nhc3Q8Rm9ybUNyZWF0aW9uQ29udGV4dCo+KGNvbnRleHQpOwogCiAgICAgRm9y
bVN0cmVhbUZpZWxkcyogbmV3SW5mbyA9IG5ldyBGb3JtU3RyZWFtRmllbGRzOwotICAgIG5ld0lu
Zm8tPmZvcm1EYXRhID0gZm9ybUNvbnRleHQtPmZvcm1EYXRhLnJlbGVhc2UoKTsKKyAgICBuZXdJ
bmZvLT5mb3JtRGF0YSA9IFdURk1vdmUoZm9ybUNvbnRleHQtPmZvcm1EYXRhKTsKICAgICBuZXdJ
bmZvLT5jdXJyZW50U3RyZWFtID0gMDsKICAgICBuZXdJbmZvLT5jdXJyZW50U3RyZWFtUmFuZ2VM
ZW5ndGggPSBCbG9iRGF0YUl0ZW06OnRvRW5kT2ZGaWxlOwogICAgIG5ld0luZm8tPmZvcm1TdHJl
YW0gPSBzdHJlYW07IC8vIERvbid0IHJldGFpbi4gVGhhdCB3b3VsZCBjcmVhdGUgYSByZWZlcmVu
Y2UgY3ljbGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaUNvbnRleHQuY3Bw
CmluZGV4IGU3ZTZlY2ZlY2VjMGFiYjhlMTJiY2M0ZWIyOGY2NGQ1ZmFhNDZmMzYuLjk3N2RiZmQ3
OTdkNTc4NTdmNDdlNDgxMTZiMTNkNDFjYWEzODg2ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvQmlkaUNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvQmlkaUNvbnRleHQuY3BwCkBAIC05Miw3ICs5Miw3IEBAIFBhc3NSZWZQdHI8
QmlkaUNvbnRleHQ+IEJpZGlDb250ZXh0Ojpjb3B5U3RhY2tSZW1vdmluZ1VuaWNvZGVFbWJlZGRp
bmdDb250ZXh0cygpCiAgICAgZm9yIChpbnQgaSA9IGNvbnRleHRzLnNpemUoKSAtIDE7IGkgPiAw
OyAtLWkpCiAgICAgICAgIHRvcENvbnRleHQgPSBjb3B5Q29udGV4dEFuZFJlYmFzZWxpbmVMZXZl
bChjb250ZXh0c1tpIC0gMV0sIHRvcENvbnRleHQuZ2V0KCkpOwogCi0gICAgcmV0dXJuIHRvcENv
bnRleHQucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKHRvcENvbnRleHQpOwogfQogCiBi
b29sIG9wZXJhdG9yPT0oY29uc3QgQmlkaUNvbnRleHQmIGMxLCBjb25zdCBCaWRpQ29udGV4dCYg
YzIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVu
ZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVy
LmNwcAppbmRleCBmNDdiM2JhNjE2MzdjYzI1NGVhYWYwOTNmMjc0MWNlNGExZDExYjliLi5iYTUx
MWNjYTZhOTgzYjBiMTE0YTEyZjk1YjQxNjJjOTU5MmFhZTY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKQEAgLTI4OCw3ICsyODgs
NyBAQCBib29sIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZChSZW5kZXJFbGVtZW50KiByZW5k
ZXJlciwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucwogICAgICAgICAgICAgICAgIGVmZmVjdC0+aW5w
dXRFZmZlY3RzKCkuYXBwZW5kKHByZXZpb3VzRWZmZWN0KTsKICAgICAgICAgICAgICAgICBtX2Vm
ZmVjdHMuYXBwZW5kKGVmZmVjdCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBwcmV2aW91
c0VmZmVjdCA9IGVmZmVjdC5yZWxlYXNlKCk7CisgICAgICAgICAgICBwcmV2aW91c0VmZmVjdCA9
IFdURk1vdmUoZWZmZWN0KTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggNmE2ZjExNjQ5OGQxODk1MzYyYTA3OGE4ZjliMDUx
NmQxZTMxMGZiMC4uOTI5MDE0Y2U5YmZkNjMyZjU2ZTE3ZGI0NDU2MDQ5M2ZhMzRjMWU1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0zMTE2LDcgKzMxMTYs
NyBAQCBQYXNzUmVmUHRyPFNjcm9sbGJhcj4gUmVuZGVyTGF5ZXI6OmNyZWF0ZVNjcm9sbGJhcihT
Y3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdAogICAgICAgICB9CiAgICAgfQogICAgIHJlbmRl
cmVyKCkudmlldygpLmZyYW1lVmlldygpLmFkZENoaWxkKHdpZGdldC5nZXQoKSk7Ci0gICAgcmV0
dXJuIHdpZGdldC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1vdmUod2lkZ2V0KTsKIH0KIAog
dm9pZCBSZW5kZXJMYXllcjo6ZGVzdHJveVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbiBv
cmllbnRhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApp
bmRleCAyMzdjNmVhMjcyNDQxZGNkZjAyZTA5OGY2OTNjOTYxYjgwMGUzMDBhLi41ZGFhNmY5NDM5
ZWMzYzI1NmVhNzA5MzQwZmU1YTYzODQ5Mjk5ZTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpc3RCb3guY3BwCkBAIC05MTEsNyArOTExLDcgQEAgUGFzc1JlZlB0cjxTY3Jv
bGxiYXI+IFJlbmRlckxpc3RCb3g6OmNyZWF0ZVNjcm9sbGJhcigpCiAgICAgICAgIH0KICAgICB9
CiAgICAgdmlldygpLmZyYW1lVmlldygpLmFkZENoaWxkKHdpZGdldC5nZXQoKSk7Ci0gICAgcmV0
dXJuIHdpZGdldC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1vdmUod2lkZ2V0KTsKIH0KIAog
dm9pZCBSZW5kZXJMaXN0Qm94OjpkZXN0cm95U2Nyb2xsYmFyKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCmluZGV4IDRkYjMzYTAwODFhMzA1MTU5NzhhNGRm
OTJhZWMxNzVhNGYwMTNkYTkuLmI4MDA5NDljZDc0NzAyZGZkMTE5NGM1MWI1NDZkZTkxYmNkMmYy
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcApAQCAt
NTc4LDcgKzU3OCw3IEBAIFBhc3NSZWZQdHI8U2Nyb2xsYmFyPiBSZW5kZXJNZW51TGlzdDo6Y3Jl
YXRlU2Nyb2xsYmFyKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlCiAgICAgICAgIHdpZGdldCA9
IFJlbmRlclNjcm9sbGJhcjo6Y3JlYXRlQ3VzdG9tU2Nyb2xsYmFyKHNjcm9sbGFibGVBcmVhLCBv
cmllbnRhdGlvbiwgJnNlbGVjdEVsZW1lbnQoKSk7CiAgICAgZWxzZQogICAgICAgICB3aWRnZXQg
PSBTY3JvbGxiYXI6OmNyZWF0ZU5hdGl2ZVNjcm9sbGJhcihzY3JvbGxhYmxlQXJlYSwgb3JpZW50
YXRpb24sIGNvbnRyb2xTaXplKTsKLSAgICByZXR1cm4gd2lkZ2V0LnJlbGVhc2UoKTsKKyAgICBy
ZXR1cm4gV1RGTW92ZSh3aWRnZXQpOwogfQogCiBpbnQgUmVuZGVyTWVudUxpc3Q6OmNsaWVudElu
c2V0TGVmdCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU2VhcmNoRmllbGQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJj
aEZpZWxkLmNwcAppbmRleCAzZjVkMDNkYWNmMzA5NzE5MDQwNmUzMGE4YmE4OWU2MDkwZWRmNjMy
Li5mNWM2MjU5YWMwZTlkZTljMGZhYjJkYzNhZTc3YjU0ZGE1ZWMzZDczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAKQEAgLTM1NCw3ICszNTQs
NyBAQCBQYXNzUmVmUHRyPFNjcm9sbGJhcj4gUmVuZGVyU2VhcmNoRmllbGQ6OmNyZWF0ZVNjcm9s
bGJhcihTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYQogICAgICAgICB3aWRnZXQgPSBSZW5kZXJTY3Jv
bGxiYXI6OmNyZWF0ZUN1c3RvbVNjcm9sbGJhcihzY3JvbGxhYmxlQXJlYSwgb3JpZW50YXRpb24s
ICZpbnB1dEVsZW1lbnQoKSk7CiAgICAgZWxzZQogICAgICAgICB3aWRnZXQgPSBTY3JvbGxiYXI6
OmNyZWF0ZU5hdGl2ZVNjcm9sbGJhcihzY3JvbGxhYmxlQXJlYSwgb3JpZW50YXRpb24sIGNvbnRy
b2xTaXplKTsKLSAgICByZXR1cm4gd2lkZ2V0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92
ZSh3aWRnZXQpOwogfQogCiBMYXlvdXRVbml0IFJlbmRlclNlYXJjaEZpZWxkOjpjb21wdXRlTG9n
aWNhbEhlaWdodExpbWl0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlcGxh
eS9SZXBsYXlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlDb250
cm9sbGVyLmNwcAppbmRleCA5MWEyOTUxNGE5NTg0MTIzNzNkNGQ3OWEyNDk2ZTEwMjBmODg5YTQy
Li5kMTA1MDFhMjZmNWUzZDYxMTBkNzA0MGZmOTdhMjQ5MDdiOWI3MjNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuY3BwCkBAIC0yODQsNyArMjg0LDcgQEAgdm9p
ZCBSZXBsYXlDb250cm9sbGVyOjp1bmxvYWRTZWdtZW50KGJvb2wgc3VwcHJlc3NOb3RpZmljYXRp
b25zKQogICAgIExPRyhXZWJSZXBsYXksICIlLTIwcyBDbGVhcmluZyBpbnB1dCBjdXJzb3JzIGZv
ciBwYWdlOiAlcFxuIiwgIlJlcGxheUNvbnRyb2xsZXIiLCAmbV9wYWdlKTsKIAogICAgIG1fYWN0
aXZlQ3Vyc29yID0gbnVsbHB0cjsKLSAgICBSZWZQdHI8UmVwbGF5U2Vzc2lvblNlZ21lbnQ+IHVu
bG9hZGVkU2VnbWVudCA9IG1fbG9hZGVkU2VnbWVudC5yZWxlYXNlKCk7CisgICAgYXV0byB1bmxv
YWRlZFNlZ21lbnQgPSBXVEZNb3ZlKG1fbG9hZGVkU2VnbWVudCk7CiAgICAgZm9yIChGcmFtZSog
ZnJhbWUgPSAmbV9wYWdlLm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgp
LnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGZyYW1lLT5zY3JpcHQoKS5nbG9iYWxPYmplY3Qo
bWFpblRocmVhZE5vcm1hbFdvcmxkKCkpLT5zZXRJbnB1dEN1cnNvcihtX2VtcHR5Q3Vyc29yLmNv
cHlSZWYoKSk7CiAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5zZXRJbnB1dEN1cnNvcihtX2Vt
cHR5Q3Vyc29yLmNvcHlSZWYoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCmluZGV4IDEyZmEwYmI3YzAxYTY1Mzk4YTQ0OTljYjE5
ZjlmYzJmNGU5NTQ3YTYuLjFhMjA3MjA4YjNiYmVjMzM3OWRmOTFjZjQxYjcwOTNkNDYyZDM4YjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQuY3BwCkBAIC0xNzksNyArMTc5LDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEaWZm
dXNlTGlnaHRpbmdFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXIKICAgICBp
ZiAoIWlucHV0MSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8TGlnaHRT
b3VyY2U+IGxpZ2h0U291cmNlID0gU1ZHRkVMaWdodEVsZW1lbnQ6OmZpbmRMaWdodFNvdXJjZSh0
aGlzKTsKKyAgICBhdXRvIGxpZ2h0U291cmNlID0gU1ZHRkVMaWdodEVsZW1lbnQ6OmZpbmRMaWdo
dFNvdXJjZSh0aGlzKTsKICAgICBpZiAoIWxpZ2h0U291cmNlKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIApAQCAtMTkwLDcgKzE5MCw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRGlm
ZnVzZUxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyCiAgICAg
Q29sb3IgY29sb3IgPSByZW5kZXJlci0+c3R5bGUoKS5zdmdTdHlsZSgpLmxpZ2h0aW5nQ29sb3Io
KTsKIAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFRGlmZnVzZUxpZ2h0aW5n
OjpjcmVhdGUoZmlsdGVyLCBjb2xvciwgc3VyZmFjZVNjYWxlKCksIGRpZmZ1c2VDb25zdGFudCgp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIGxpZ2h0
U291cmNlLnJlbGVhc2UoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsVW5pdExlbmd0aFgoKSwga2VybmVsVW5p
dExlbmd0aFkoKSwgV1RGTW92ZShsaWdodFNvdXJjZSkpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZl
Y3RzKCkuYXBwZW5kKGlucHV0MSk7CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAppbmRleCAx
OWY1ZDM4OTQ1Y2E5NjNlOWZlZmQ5OGFhNDQwMjlmMzdjNDk1YWFiLi42M2Y4NmUxZGJlYTIxMWNh
Y2JjYjdkYTQ0MjQ2MjA1ZDRhODU3NTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC0xOTAsNyArMTkwLDcgQEAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZH
RmlsdGVyQnVpbGRlciogZmlsdGUKICAgICBpZiAoIWlucHV0MSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBSZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNlID0gU1ZHRkVMaWdo
dEVsZW1lbnQ6OmZpbmRMaWdodFNvdXJjZSh0aGlzKTsKKyAgICBhdXRvIGxpZ2h0U291cmNlID0g
U1ZHRkVMaWdodEVsZW1lbnQ6OmZpbmRMaWdodFNvdXJjZSh0aGlzKTsKICAgICBpZiAoIWxpZ2h0
U291cmNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMjAxLDcgKzIwMSw3IEBAIFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKFNW
R0ZpbHRlckJ1aWxkZXIqIGZpbHRlCiAgICAgQ29sb3IgY29sb3IgPSByZW5kZXJlci0+c3R5bGUo
KS5zdmdTdHlsZSgpLmxpZ2h0aW5nQ29sb3IoKTsKIAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IGVmZmVjdCA9IEZFU3BlY3VsYXJMaWdodGluZzo6Y3JlYXRlKGZpbHRlciwgY29sb3IsIHN1cmZh
Y2VTY2FsZSgpLCBzcGVjdWxhckNvbnN0YW50KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzcGVjdWxhckV4cG9uZW50KCksIGtlcm5lbFVuaXRMZW5ndGhYKCks
IGtlcm5lbFVuaXRMZW5ndGhZKCksIGxpZ2h0U291cmNlLnJlbGVhc2UoKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjdWxhckV4cG9uZW50KCksIGtlcm5l
bFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIFdURk1vdmUobGlnaHRTb3VyY2Up
KTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwogICAgIHJldHVy
biBlZmZlY3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdMaXN0UHJvcGVydHkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQ
cm9wZXJ0eS5oCmluZGV4IDc3Nzg4ZTEwMjI0OGQ1MDI1MmM4MDE0Zjc3YTA2NWQxYmFkOTU5ZGIu
LjVkNDFlOTYwYjdlNDFiNzk4MWZiOTNkOThmNmY4MWE2ZTI1OGNhNGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eS5oCkBAIC0yMDMsNyArMjAz
LDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV93cmFwcGVycy0+YXQoaW5kZXgpID0gd3JhcHBl
cjsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiB3cmFwcGVyLnJlbGVhc2UoKTsKKyAgICAg
ICAgcmV0dXJuIFdURk1vdmUod3JhcHBlcik7CiAgICAgfQogCiAgICAgLy8gU1ZHTGlzdDo6aW5z
ZXJ0SXRlbUJlZm9yZSgpCkBAIC0yNTAsNyArMjUwLDcgQEAgcHVibGljOgogCiAgICAgICAgIC8v
IFNwZWM6IElmIG5ld0l0ZW0gaXMgYWxyZWFkeSBpbiBhIGxpc3QsIGl0IGlzIHJlbW92ZWQgZnJv
bSBpdHMgcHJldmlvdXMgbGlzdCBiZWZvcmUgaXQgaXMgaW5zZXJ0ZWQgaW50byB0aGlzIGxpc3Qu
CiAgICAgICAgIGlmICghcHJvY2Vzc0luY29taW5nTGlzdEl0ZW1XcmFwcGVyKG5ld0l0ZW0sICZp
bmRleCkpCi0gICAgICAgICAgICByZXR1cm4gbmV3SXRlbS5yZWxlYXNlKCk7CisgICAgICAgICAg
ICByZXR1cm4gV1RGTW92ZShuZXdJdGVtKTsKIAogICAgICAgICAvLyBTcGVjOiBJbnNlcnRzIGEg
bmV3IGl0ZW0gaW50byB0aGUgbGlzdCBhdCB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLiBUaGUgaW5k
ZXggb2YgdGhlIGl0ZW0gYmVmb3JlIHdoaWNoIHRoZSBuZXcgaXRlbSBpcyB0byBiZQogICAgICAg
ICAvLyBpbnNlcnRlZC4gVGhlIGZpcnN0IGl0ZW0gaXMgbnVtYmVyIDAuIElmIHRoZSBpbmRleCBp
cyBlcXVhbCB0byAwLCB0aGVuIHRoZSBuZXcgaXRlbSBpcyBpbnNlcnRlZCBhdCB0aGUgZnJvbnQg
b2YgdGhlIGxpc3QuCkBAIC0yNjAsNyArMjYwLDcgQEAgcHVibGljOgogICAgICAgICBtX3dyYXBw
ZXJzLT5pbnNlcnQoaW5kZXgsIG5ld0l0ZW0pOwogCiAgICAgICAgIGNvbW1pdENoYW5nZSgpOwot
ICAgICAgICByZXR1cm4gbmV3SXRlbTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUobmV3SXRlbSk7
CiAgICAgfQogCiAgICAgLy8gU1ZHTGlzdDo6cmVwbGFjZUl0ZW0oKQpAQCAtMzg1LDcgKzM4NSw3
IEBAIHB1YmxpYzoKICAgICAgICAgbV92YWx1ZXMtPnJlbW92ZShpbmRleCk7CiAKICAgICAgICAg
Y29tbWl0Q2hhbmdlKCk7Ci0gICAgICAgIHJldHVybiBvbGRJdGVtLnJlbGVhc2UoKTsKKyAgICAg
ICAgcmV0dXJuIFdURk1vdmUob2xkSXRlbSk7CiAgICAgfQogCiAgICAgLy8gU1ZHTGlzdDo6YXBw
ZW5kSXRlbSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVh
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKaW5kZXggZDY4
ODJkYjJjMTc3ZmRlMTcyN2YyMzEwZTI5MjBmZGJhZGZiN2Y0Ni4uZjZmNWE0ZGYxNDBlOGM3MjNi
ZjE4MzVmYTYxNTk2YTY3MDlmZTY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhy
ZWFkLmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgV29ya2VyVGhyZWFkOjp3b3JrZXJUaHJl
YWQoKQogCiAgICAgewogICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV90aHJlYWRDcmVhdGlvbk11
dGV4KTsKLSAgICAgICAgbV93b3JrZXJHbG9iYWxTY29wZSA9IGNyZWF0ZVdvcmtlckdsb2JhbFNj
b3BlKG1fc3RhcnR1cERhdGEtPm1fc2NyaXB0VVJMLCBtX3N0YXJ0dXBEYXRhLT5tX3VzZXJBZ2Vu
dCwgbV9zdGFydHVwRGF0YS0+bV9jb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMs
IG1fc3RhcnR1cERhdGEtPm1fc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9s
aWN5LCBtX3N0YXJ0dXBEYXRhLT5tX3RvcE9yaWdpbi5yZWxlYXNlKCkpOworICAgICAgICBtX3dv
cmtlckdsb2JhbFNjb3BlID0gY3JlYXRlV29ya2VyR2xvYmFsU2NvcGUobV9zdGFydHVwRGF0YS0+
bV9zY3JpcHRVUkwsIG1fc3RhcnR1cERhdGEtPm1fdXNlckFnZW50LCBtX3N0YXJ0dXBEYXRhLT5t
X2NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycywgbV9zdGFydHVwRGF0YS0+bV9z
aG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFdURk1vdmUobV9zdGFy
dHVwRGF0YS0+bV90b3BPcmlnaW4pKTsKIAogICAgICAgICBpZiAobV9ydW5Mb29wLnRlcm1pbmF0
ZWQoKSkgewogICAgICAgICAgICAgLy8gVGhlIHdvcmtlciB3YXMgdGVybWluYXRlZCBiZWZvcmUg
dGhlIHRocmVhZCBoYWQgYSBjaGFuY2UgdG8gcnVuLiBTaW5jZSB0aGUgY29udGV4dCBkaWRuJ3Qg
ZXhpc3QgeWV0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggZTVlYTc0
MDViY2U5YjA2ZGQ3Y2M3MTE3M2FiNDRjYTVmNzc1OWQ0Mi4uODdjZGZhN2IxYTI4ZjM2MTU0OGYw
YzEzYWRhZDhlNjdhNjIxOTBkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3Bw
CkBAIC03OTgsNyArNzk4LDcgQEAgYm9vbCBYTUxIdHRwUmVxdWVzdDo6aW50ZXJuYWxBYm9ydCgp
CiAgICAgLy8gQ2FuY2VsbGluZyBtX2xvYWRlciBtYXkgdHJpZ2dlciBhIHdpbmRvdy5vbmxvYWQg
Y2FsbGJhY2sgd2hpY2ggY2FuIGNhbGwgb3BlbigpIG9uIHRoZSBzYW1lIHhoci4KICAgICAvLyBU
aGlzIHdvdWxkIGNyZWF0ZSBpbnRlcm5hbEFib3J0IHJlZW50cmFudCBjYWxsLgogICAgIC8vIG1f
bG9hZGVyIGlzIHNldCB0byBudWxsIGJlZm9yZSBiZWluZyBjYW5jZWxsZWQgdG8gZXhpdCBlYXJs
eSBpbiBhbnkgcmVlbnRyYW50IGludGVybmFsQWJvcnQoKSBjYWxsLgotICAgIFJlZlB0cjxUaHJl
YWRhYmxlTG9hZGVyPiBsb2FkZXIgPSBtX2xvYWRlci5yZWxlYXNlKCk7CisgICAgYXV0byBsb2Fk
ZXIgPSBXVEZNb3ZlKG1fbG9hZGVyKTsKICAgICBsb2FkZXItPmNhbmNlbCgpOwogCiAgICAgLy8g
SWYgd2luZG93Lm9ubG9hZCBjYWxsYmFjayBjYWxscyBvcGVuKCkgYW5kIHNlbmQoKSBvbiB0aGUg
c2FtZSB4aHIsIG1fbG9hZGVyIGlzIG5vdyBzZXQgdG8gYSBuZXcgdmFsdWUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhTdGVwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
UGF0aFN0ZXAuY3BwCmluZGV4IDBhZTM0MDM2MDdjZjQ3ODYwMDZkNjk3ODRiMmFkYmM3MjJmYjNm
ZmYuLmM1NTdlMTM2ZTg3YWRiYWQwNTE4ODFhYjE3NTcwMjM5YWZhNDllMzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFN0ZXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YUGF0aFN0ZXAuY3BwCkBAIC0zNDMsMTAgKzM0MywxMCBAQCB2b2lkIFN0ZXA6Om5vZGVzSW5B
eGlzKE5vZGUmIGNvbnRleHQsIE5vZGVTZXQmIG5vZGVzKSBjb25zdAogCiAgICAgICAgICAgICAv
LyBBdm9pZCBsYXppbHkgY3JlYXRpbmcgYXR0cmlidXRlIG5vZGVzIGZvciBhdHRyaWJ1dGVzIHRo
YXQgd2UgZG8gbm90IG5lZWQgYW55d2F5LgogICAgICAgICAgICAgaWYgKG1fbm9kZVRlc3QubV9r
aW5kID09IE5vZGVUZXN0OjpOYW1lVGVzdCAmJiBtX25vZGVUZXN0Lm1fZGF0YSAhPSBzdGFyQXRv
bSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxBdHRyPiBhdHRyID0gY29udGV4dEVsZW1lbnQu
Z2V0QXR0cmlidXRlTm9kZU5TKG1fbm9kZVRlc3QubV9uYW1lc3BhY2VVUkksIG1fbm9kZVRlc3Qu
bV9kYXRhKTsKKyAgICAgICAgICAgICAgICBhdXRvIGF0dHIgPSBjb250ZXh0RWxlbWVudC5nZXRB
dHRyaWJ1dGVOb2RlTlMobV9ub2RlVGVzdC5tX25hbWVzcGFjZVVSSSwgbV9ub2RlVGVzdC5tX2Rh
dGEpOwogICAgICAgICAgICAgICAgIGlmIChhdHRyICYmIGF0dHItPm5hbWVzcGFjZVVSSSgpICE9
IFhNTE5TTmFtZXM6OnhtbG5zTmFtZXNwYWNlVVJJKSB7IC8vIEluIFhQYXRoIGxhbmQsIG5hbWVz
cGFjZSBub2RlcyBhcmUgbm90IGFjY2Vzc2libGUgb24gdGhlIGF0dHJpYnV0ZSBheGlzLgogICAg
ICAgICAgICAgICAgICAgICBpZiAobm9kZU1hdGNoZXMoKmF0dHIsIEF0dHJpYnV0ZUF4aXMsIG1f
bm9kZVRlc3QpKSAvLyBTdGlsbCBuZWVkIHRvIGNoZWNrIG1lcmdlZCBwcmVkaWNhdGVzLgotICAg
ICAgICAgICAgICAgICAgICAgICAgbm9kZXMuYXBwZW5kKGF0dHIucmVsZWFzZSgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG5vZGVzLmFwcGVuZChXVEZNb3ZlKGF0dHIpKTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtMzU1
LDkgKzM1NSw5IEBAIHZvaWQgU3RlcDo6bm9kZXNJbkF4aXMoTm9kZSYgY29udGV4dCwgTm9kZVNl
dCYgbm9kZXMpIGNvbnN0CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBm
b3IgKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlIDogY29udGV4dEVsZW1lbnQuYXR0cmlidXRl
c0l0ZXJhdG9yKCkpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8QXR0cj4gYXR0ciA9IGNvbnRl
eHRFbGVtZW50LmVuc3VyZUF0dHIoYXR0cmlidXRlLm5hbWUoKSk7Ci0gICAgICAgICAgICAgICAg
aWYgKG5vZGVNYXRjaGVzKCphdHRyLCBBdHRyaWJ1dGVBeGlzLCBtX25vZGVUZXN0KSkKLSAgICAg
ICAgICAgICAgICAgICAgbm9kZXMuYXBwZW5kKGF0dHIucmVsZWFzZSgpKTsKKyAgICAgICAgICAg
ICAgICBhdXRvIGF0dHIgPSBjb250ZXh0RWxlbWVudC5lbnN1cmVBdHRyKGF0dHJpYnV0ZS5uYW1l
KCkpOworICAgICAgICAgICAgICAgIGlmIChub2RlTWF0Y2hlcyhhdHRyLmdldCgpLCBBdHRyaWJ1
dGVBeGlzLCBtX25vZGVUZXN0KSkKKyAgICAgICAgICAgICAgICAgICAgbm9kZXMuYXBwZW5kKFdU
Rk1vdmUoYXR0cikpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCmluZGV4IDA4ZWEx
Njc2ZWM2NmNmNGY1NmFkMThiNWM0ZjQ5ZGRkYjc5ZmNhNmIuLmE2NTUwZGExYWViZWY2NGI3YWNk
MWViMmMyNjMwMGI2NzhiOTFjMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9T
dG9yYWdlQXJlYUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlQXJl
YUltcGwuY3BwCkBAIC0xMzksOSArMTM5LDkgQEAgdm9pZCBTdG9yYWdlQXJlYUltcGw6OnNldEl0
ZW0oRnJhbWUqIHNvdXJjZUZyYW1lLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW4KICAg
ICBibG9ja1VudGlsSW1wb3J0Q29tcGxldGUoKTsKIAogICAgIFN0cmluZyBvbGRWYWx1ZTsKLSAg
ICBSZWZQdHI8U3RvcmFnZU1hcD4gbmV3TWFwID0gbV9zdG9yYWdlTWFwLT5zZXRJdGVtKGtleSwg
dmFsdWUsIG9sZFZhbHVlLCBxdW90YUV4Y2VwdGlvbik7CisgICAgYXV0byBuZXdNYXAgPSBtX3N0
b3JhZ2VNYXAtPnNldEl0ZW0oa2V5LCB2YWx1ZSwgb2xkVmFsdWUsIHF1b3RhRXhjZXB0aW9uKTsK
ICAgICBpZiAobmV3TWFwKQotICAgICAgICBtX3N0b3JhZ2VNYXAgPSBuZXdNYXAucmVsZWFzZSgp
OworICAgICAgICBtX3N0b3JhZ2VNYXAgPSBXVEZNb3ZlKG5ld01hcCk7CiAKICAgICBpZiAocXVv
dGFFeGNlcHRpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTE2MSw5ICsxNjEsOSBAQCB2b2lkIFN0
b3JhZ2VBcmVhSW1wbDo6cmVtb3ZlSXRlbShGcmFtZSogc291cmNlRnJhbWUsIGNvbnN0IFN0cmlu
ZyYga2V5KQogICAgIGJsb2NrVW50aWxJbXBvcnRDb21wbGV0ZSgpOwogCiAgICAgU3RyaW5nIG9s
ZFZhbHVlOwotICAgIFJlZlB0cjxTdG9yYWdlTWFwPiBuZXdNYXAgPSBtX3N0b3JhZ2VNYXAtPnJl
bW92ZUl0ZW0oa2V5LCBvbGRWYWx1ZSk7CisgICAgYXV0byBuZXdNYXAgPSBtX3N0b3JhZ2VNYXAt
PnJlbW92ZUl0ZW0oa2V5LCBvbGRWYWx1ZSk7CiAgICAgaWYgKG5ld01hcCkKLSAgICAgICAgbV9z
dG9yYWdlTWFwID0gbmV3TWFwLnJlbGVhc2UoKTsKKyAgICAgICAgbV9zdG9yYWdlTWFwID0gV1RG
TW92ZShuZXdNYXApOwogCiAgICAgaWYgKG9sZFZhbHVlLmlzTnVsbCgpKQogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkhvc3RNYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQv
TmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbQppbmRleCBkNDllZjZlZTFiZDMxN2IyNmZmYjY4
YzgyMGU5MmMyZDc3YmM1NWJiLi5lNGI3Yzg5OWE2NWEyNDM4YjhiMzZhZDQzODc4ZDhhOGI1ZDhl
NWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkhvc3RNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9z
dGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0KQEAgLTI3Miw3ICsyNzIsNyBAQCBQYXNz
UmVmUHRyPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eT4gTmV0c2NhcGVQbHVnaW5Ib3N0TWFu
YWdlcjo6aW5zdGFudGlhdGVQbAogICAgIGluc3RhbmNlLT5zZXRSZW5kZXJDb250ZXh0SUQocmVw
bHktPm1fcmVuZGVyQ29udGV4dElEKTsKICAgICBpbnN0YW5jZS0+c2V0UmVuZGVyZXJUeXBlKHJl
cGx5LT5tX3JlbmRlcmVyVHlwZSk7CiAKLSAgICByZXR1cm4gaW5zdGFuY2UucmVsZWFzZSgpOwor
ICAgIHJldHVybiBXVEZNb3ZlKGluc3RhbmNlKTsKIH0KIAogdm9pZCBOZXRzY2FwZVBsdWdpbkhv
c3RNYW5hZ2VyOjpjcmVhdGVQcm9wZXJ0eUxpc3RGaWxlKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0
aCwgY3B1X3R5cGVfdCBwbHVnaW5BcmNoaXRlY3R1cmUsIGNvbnN0IFN0cmluZyYgYnVuZGxlSWRl
bnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05l
dHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMv
SG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQppbmRleCA5ODRjMjNkYjYxZmZl
ZDBhMGQ0OGI2YjVkOWYyYWJkZTZmMmYzMDA4Li5lZWQyNzc5ODFjMGY4ZjU4ZGIwNjc3NDFlZjli
MWU3NjBhMjJhMDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3Rl
ZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCkBAIC0yNDgsOSAr
MjQ4LDkgQEAgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpOZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveHkoTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkKIAogUGFzc1JlZlB0cjxOZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHk+IE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Y3JlYXRlKE5l
dHNjYXBlUGx1Z2luSG9zdFByb3h5KiBwbHVnaW5Ib3N0UHJveHksIFdlYkhvc3RlZE5ldHNjYXBl
UGx1Z2luVmlldyAqcGx1Z2luVmlldywgYm9vbCBmdWxsRnJhbWVQbHVnaW4pCiB7Ci0gICAgUmVm
UHRyPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eT4gcHJveHkgPSBhZG9wdFJlZihuZXcgTmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5KHBsdWdpbkhvc3RQcm94eSwgcGx1Z2luVmlldywgZnVs
bEZyYW1lUGx1Z2luKSk7Ci0gICAgcGx1Z2luSG9zdFByb3h5LT5hZGRQbHVnaW5JbnN0YW5jZShw
cm94eS5nZXQoKSk7Ci0gICAgcmV0dXJuIHByb3h5LnJlbGVhc2UoKTsKKyAgICBhdXRvIHByb3h5
ID0gYWRvcHRSZWYoKm5ldyBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkocGx1Z2luSG9zdFBy
b3h5LCBwbHVnaW5WaWV3LCBmdWxsRnJhbWVQbHVnaW4pKTsKKyAgICBwbHVnaW5Ib3N0UHJveHkt
PmFkZFBsdWdpbkluc3RhbmNlKHByb3h5LnB0cigpKTsKKyAgICByZXR1cm4gV1RGTW92ZShwcm94
eSk7CiB9CiAKIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6fk5ldHNjYXBlUGx1Z2luSW5z
dGFuY2VQcm94eSgpCkBAIC04MDEsOCArODAxLDggQEAgTlBFcnJvciBOZXRzY2FwZVBsdWdpbklu
c3RhbmNlUHJveHk6OmxvYWRSZXF1ZXN0KE5TVVJMUmVxdWVzdCAqcmVxdWVzdCwgY29uc3QgY2gK
ICAgICAgICAgICAgIHJldHVybiBOUEVSUl9JTlZBTElEX1BBUkFNOwogICAgICAgICB9CiAKLSAg
ICAgICAgUmVmUHRyPFBsdWdpblJlcXVlc3Q+IHBsdWdpblJlcXVlc3QgPSBQbHVnaW5SZXF1ZXN0
OjpjcmVhdGUocmVxdWVzdElELCByZXF1ZXN0LCB0YXJnZXQsIGFsbG93UG9wdXBzKTsKLSAgICAg
ICAgbV9wbHVnaW5SZXF1ZXN0cy5hcHBlbmQocGx1Z2luUmVxdWVzdC5yZWxlYXNlKCkpOworICAg
ICAgICBhdXRvIHBsdWdpblJlcXVlc3QgPSBQbHVnaW5SZXF1ZXN0OjpjcmVhdGUocmVxdWVzdElE
LCByZXF1ZXN0LCB0YXJnZXQsIGFsbG93UG9wdXBzKTsKKyAgICAgICAgbV9wbHVnaW5SZXF1ZXN0
cy5hcHBlbmQoV1RGTW92ZShwbHVnaW5SZXF1ZXN0KSk7CiAgICAgICAgIG1fcmVxdWVzdFRpbWVy
LnN0YXJ0T25lU2hvdCgwKTsKICAgICB9IGVsc2UgewogICAgICAgICBSZWZQdHI8SG9zdGVkTmV0
c2NhcGVQbHVnaW5TdHJlYW0+IHN0cmVhbSA9IEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpj
cmVhdGUodGhpcywgcmVxdWVzdElELCByZXF1ZXN0KTsKQEAgLTEzNzIsMTEgKzEzNzIsMTEgQEAg
Ym9vbCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmRlbWFyc2hhbFZhbHVlRnJvbUFycmF5
KEV4ZWNTdGF0ZSogZXhlYywgTlNBcnIKICAgICAgICAgICAgIGlmICghZnJhbWUtPnNjcmlwdCgp
LmNhbkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgICAgIFJlZlB0cjxSb290T2JqZWN0PiByb290
T2JqZWN0ID0gZnJhbWUtPnNjcmlwdCgpLmNyZWF0ZVJvb3RPYmplY3QobV9wbHVnaW5WaWV3KTsK
KyAgICAgICAgICAgIGF1dG8gcm9vdE9iamVjdCA9IGZyYW1lLT5zY3JpcHQoKS5jcmVhdGVSb290
T2JqZWN0KG1fcGx1Z2luVmlldyk7CiAgICAgICAgICAgICBpZiAoIXJvb3RPYmplY3QpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgCi0gICAgICAgICAgICByZXN1
bHQgPSBQcm94eUluc3RhbmNlOjpjcmVhdGUocm9vdE9iamVjdC5yZWxlYXNlKCksIHRoaXMsIG9i
amVjdElEKS0+Y3JlYXRlUnVudGltZU9iamVjdChleGVjKTsKKyAgICAgICAgICAgIHJlc3VsdCA9
IFByb3h5SW5zdGFuY2U6OmNyZWF0ZShXVEZNb3ZlKHJvb3RPYmplY3QpLCB0aGlzLCBvYmplY3RJ
RCktPmNyZWF0ZVJ1bnRpbWVPYmplY3QoZXhlYyk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCBmZmVmYzE5
MGJjYjc1NjQxNWIzZjMyZTFiMmE1MmIxMTBhNThmMzM1Li44OWJhMDdjZjcxMTE5NDEyMDZlZTQ0
YThjZGYwM2EyMTkxMGUyNWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMjM0OCw3ICsyMzQ4LDcg
QEAgLSAodm9pZClkZWFsbG9jCiAKIC0gKHZvaWQpcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbjooUG9s
aWN5QWN0aW9uKWFjdGlvbgogewotICAgIFJlZlB0cjxGcmFtZT4gZnJhbWUgPSBfZnJhbWUucmVs
ZWFzZSgpOworICAgIGF1dG8gZnJhbWUgPSBXVEZNb3ZlKF9mcmFtZSk7CiAgICAgaWYgKCFmcmFt
ZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCmluZGV4IGM2Zjg1ZGU3ZDQ3NjQ3NzBkYWVh
MzE2NzgzOTYzNGJhMmIzMTBiNDYuLmEzZGJmNGE3YjM5MGYxOWFjZGVmYzE0YmZhODI1NzQ5NTVi
NTNkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNl
Y3VyaXR5T3JpZ2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlNlY3VyaXR5T3JpZ2luLm1tCkBAIC01NCw4ICs1NCw4IEBAIC0gKGlkKWluaXRXaXRoVVJMOihO
U1VSTCAqKXVybAogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIFJl
ZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShVUkwo
W3VybCBhYnNvbHV0ZVVSTF0pKTsKLSAgICBTZWN1cml0eU9yaWdpbiogcmF3T3JpZ2luID0gb3Jp
Z2luLnJlbGVhc2UoKS5sZWFrUmVmKCk7CisgICAgYXV0byBvcmlnaW4gPSBTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKFVSTChbdXJsIGFic29sdXRlVVJMXSkpOworICAgIFNlY3VyaXR5T3JpZ2luKiBy
YXdPcmlnaW4gPSAmb3JpZ2luLmxlYWtSZWYoKTsKICAgICBfcHJpdmF0ZSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8V2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlICo+KHJhd09yaWdpbik7CiAKICAgICByZXR1
cm4gc2VsZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViQXJjaGl2
ZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViQXJjaGl2ZS5tbQppbmRleCAzNDhl
OGYwOGNhMmY0OTc2NjllZTNhYWNiZWMyY2Y2NTY3MThkYThmLi5lOTZjNjA3Y2ZiODRjODVhMWVi
ZmFhYmRjMzFjZWJhMDRlYTVjM2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkFyY2hpdmUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJBcmNo
aXZlLm1tCkBAIC0xNzUsNyArMTc1LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTWFpblJl
c291cmNlOihXZWJSZXNvdXJjZSAqKW1haW5SZXNvdXJjZSBzdWJyZXNvdXJjZXM6KE4KICAgICAg
ICAgcmV0dXJuIG5pbDsKICAgICB9CiAgICAgCi0gICAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4g
Y29yZU1haW5SZXNvdXJjZSA9IG1haW5SZXNvdXJjZSA/IFttYWluUmVzb3VyY2UgX2NvcmVSZXNv
dXJjZV0gOiAwOworICAgIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNvcmVNYWluUmVzb3VyY2Ug
PSBtYWluUmVzb3VyY2UgPyBbbWFpblJlc291cmNlIF9jb3JlUmVzb3VyY2VdIDogbnVsbHB0cjsK
IAogICAgIFZlY3RvcjxSZWZQdHI8QXJjaGl2ZVJlc291cmNlPj4gY29yZVJlc291cmNlczsKICAg
ICBmb3IgKFdlYlJlc291cmNlICpzdWJyZXNvdXJjZSBpbiBzdWJyZXNvdXJjZXMpCkBAIC0xODUs
MTMgKzE4NSwxMyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhNYWluUmVzb3VyY2U6KFdlYlJl
c291cmNlICopbWFpblJlc291cmNlIHN1YnJlc291cmNlczooTgogICAgIGZvciAoV2ViQXJjaGl2
ZSAqc3ViZnJhbWVBcmNoaXZlIGluIHN1YmZyYW1lQXJjaGl2ZXMpCiAgICAgICAgIGNvcmVBcmNo
aXZlcy5hcHBlbmQoW3N1YmZyYW1lQXJjaGl2ZS0+X3ByaXZhdGUgY29yZUFyY2hpdmVdKTsKIAot
ICAgIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjb3JlQXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hp
dmU6OmNyZWF0ZShjb3JlTWFpblJlc291cmNlLnJlbGVhc2UoKSwgV1RGTW92ZShjb3JlUmVzb3Vy
Y2VzKSwgV1RGTW92ZShjb3JlQXJjaGl2ZXMpKTsKKyAgICBhdXRvIGNvcmVBcmNoaXZlID0gTGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFdURk1vdmUoY29yZU1haW5SZXNvdXJjZSksIFdURk1vdmUo
Y29yZVJlc291cmNlcyksIFdURk1vdmUoY29yZUFyY2hpdmVzKSk7CiAgICAgaWYgKCFjb3JlQXJj
aGl2ZSkgewogICAgICAgICBbc2VsZiByZWxlYXNlXTsKICAgICAgICAgcmV0dXJuIG5pbDsKICAg
ICB9CiAKLSAgICBbX3ByaXZhdGUgc2V0Q29yZUFyY2hpdmU6Y29yZUFyY2hpdmUucmVsZWFzZSgp
XTsKKyAgICBbX3ByaXZhdGUgc2V0Q29yZUFyY2hpdmU6V1RGTW92ZShjb3JlQXJjaGl2ZSldOwog
CiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0yMDksMTMgKzIwOSwxMyBAQCAtIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhEYXRhOihOU0RhdGEgKilkYXRhCiAjZW5kaWYKIAogICAgIF9wcml2YXRlID0g
W1tXZWJBcmNoaXZlUHJpdmF0ZSBhbGxvY10gaW5pdF07Ci0gICAgUmVmUHRyPExlZ2FjeVdlYkFy
Y2hpdmU+IGNvcmVBcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZl
cjo6d3JhcE5TRGF0YShkYXRhKSk7CisgICAgYXV0byBjb3JlQXJjaGl2ZSA9IExlZ2FjeVdlYkFy
Y2hpdmU6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OndyYXBOU0RhdGEoZGF0YSkpOwogICAgIGlmICgh
Y29yZUFyY2hpdmUpIHsKICAgICAgICAgW3NlbGYgcmVsZWFzZV07CiAgICAgICAgIHJldHVybiBu
aWw7CiAgICAgfQogICAgICAgICAKLSAgICBbX3ByaXZhdGUgc2V0Q29yZUFyY2hpdmU6Y29yZUFy
Y2hpdmUucmVsZWFzZSgpXTsKKyAgICBbX3ByaXZhdGUgc2V0Q29yZUFyY2hpdmU6V1RGTW92ZShj
b3JlQXJjaGl2ZSldOwogICAgICAgICAKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgQ0ZBYnNvbHV0
ZVRpbWUgZW5kID0gQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXggODAzZDNhOGU0OWU1OWE3OTU0MDMwNmQ0
MTgxNWFmOWM0Y2UwODgwMS4uNjA2NDcyMmE1NjM2MTQ4NTg0MmNmNTdmZDkzMGY3NTU4OGQ2ZThm
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQpAQCAtNTE4
LDggKzUxOCw4IEBAIC0gKFdlYkFyY2hpdmUgKil3ZWJBcmNoaXZlCiAKIC0gKFdlYlJlc291cmNl
ICopbWFpblJlc291cmNlCiB7Ci0gICAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY29yZVJlc291
cmNlID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5tYWluUmVzb3VyY2UoKTsKLSAgICBy
ZXR1cm4gW1tbV2ViUmVzb3VyY2UgYWxsb2NdIF9pbml0V2l0aENvcmVSZXNvdXJjZTpjb3JlUmVz
b3VyY2UucmVsZWFzZSgpXSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBjb3JlUmVzb3VyY2UgPSB0
b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPm1haW5SZXNvdXJjZSgpOworICAgIHJldHVybiBb
W1tXZWJSZXNvdXJjZSBhbGxvY10gX2luaXRXaXRoQ29yZVJlc291cmNlOldURk1vdmUoY29yZVJl
c291cmNlKV0gYXV0b3JlbGVhc2VdOwogfQogCiAtIChOU0FycmF5ICopc3VicmVzb3VyY2VzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCBiMGRjZDlhOWFhNmFlZmY0Y2Rm
NmFkZGUwNGVmN2NmMjlhZTQxODc2Li45Y2JmMzA5MTMzMzljMjY2NGJiNzZhNmI1NDJiOWViZTUy
NjEzMDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTkxMSw3ICs5
MTEsNyBAQCAtIChET01Eb2N1bWVudEZyYWdtZW50ICopX2RvY3VtZW50RnJhZ21lbnRXaXRoTm9k
ZXNBc1BhcmFncmFwaHM6KE5TQXJyYXkgKilub2RlcwogICAgIHdoaWxlICgobm9kZSA9IFtub2Rl
RW51bSBuZXh0T2JqZWN0XSkpCiAgICAgICAgIG5vZGVzVmVjdG9yLmFwcGVuZChjb3JlKG5vZGUp
KTsKIAotICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGRvY3VtZW50LT5j
cmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CisgICAgYXV0byBmcmFnbWVudCA9IGRvY3VtZW50LT5j
cmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CiAKICAgICBmb3IgKGF1dG8qIG5vZGUgOiBub2Rlc1Zl
Y3RvcikgewogICAgICAgICBhdXRvIGVsZW1lbnQgPSBjcmVhdGVEZWZhdWx0UGFyYWdyYXBoRWxl
bWVudCgqZG9jdW1lbnQpOwpAQCAtOTE5LDcgKzkxOSw3IEBAIC0gKERPTURvY3VtZW50RnJhZ21l
bnQgKilfZG9jdW1lbnRGcmFnbWVudFdpdGhOb2Rlc0FzUGFyYWdyYXBoczooTlNBcnJheSAqKW5v
ZGVzCiAgICAgICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChlbGVtZW50KTsKICAgICB9CiAKLSAg
ICByZXR1cm4ga2l0KGZyYWdtZW50LnJlbGVhc2UoKS5nZXQoKSk7CisgICAgcmV0dXJuIGtpdChm
cmFnbWVudC5wdHIoKSk7CiB9CiAKIC0gKHZvaWQpX3JlcGxhY2VTZWxlY3Rpb25XaXRoTm9kZToo
RE9NTm9kZSAqKW5vZGUgc2VsZWN0UmVwbGFjZW1lbnQ6KEJPT0wpc2VsZWN0UmVwbGFjZW1lbnQg
c21hcnRSZXBsYWNlOihCT09MKXNtYXJ0UmVwbGFjZSBtYXRjaFN0eWxlOihCT09MKW1hdGNoU3R5
bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVBy
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vz
cy5jcHAKaW5kZXggYWY4NmFkOGJmMzM0MzcxYjc5Njc3MWNkMjBhMDEzZDhkNjk2MWIzZC4uM2Vl
NjI0N2U4ZGE4ODA5YjdjNDJmMDA1NTQ2ODVjNjNhYTk0YzA1YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAKQEAgLTE4Miw4ICsx
ODIsOCBAQCB2b2lkIERhdGFiYXNlUHJvY2Vzczo6Y3JlYXRlRGF0YWJhc2VUb1dlYlByb2Nlc3ND
b25uZWN0aW9uKCkKICAgICBtYWNoX3BvcnRfYWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwgTUFD
SF9QT1JUX1JJR0hUX1JFQ0VJVkUsICZsaXN0ZW5pbmdQb3J0KTsKIAogICAgIC8vIENyZWF0ZSBh
IGxpc3RlbmluZyBjb25uZWN0aW9uLgotICAgIFJlZlB0cjxEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nv
bm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNy
ZWF0ZShJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCkpOwotICAgIG1f
ZGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQoY29ubmVjdGlvbi5yZWxlYXNl
KCkpOworICAgIGF1dG8gY29ubmVjdGlvbiA9IERhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlv
bjo6Y3JlYXRlKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihsaXN0ZW5pbmdQb3J0KSk7Cisg
ICAgbV9kYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChXVEZNb3ZlKGNvbm5l
Y3Rpb24pKTsKIAogICAgIElQQzo6QXR0YWNobWVudCBjbGllbnRQb3J0KGxpc3RlbmluZ1BvcnQs
IE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKTsKICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpEYXRhYmFzZVByb2Nlc3NQcm94eTo6RGlkQ3JlYXRlRGF0YWJhc2VU
b1dlYlByb2Nlc3NDb25uZWN0aW9uKGNsaWVudFBvcnQpLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBmMTU4YWFjN2VkZjRh
M2Q3N2I1NzkzZjA1ZDE5OWNjMGNmYzhmYmNiLi5mMWNlMzFmZjY1NWYyMDZjMTgyYTE4MjFlYzZm
ZTI2MjJkN2JmYzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCkBAIC0yNTQsOCArMjU0LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQogI2lmIFVTRShVTklYX0RPTUFJ
Tl9TT0NLRVRTKQogICAgIElQQzo6Q29ubmVjdGlvbjo6U29ja2V0UGFpciBzb2NrZXRQYWlyID0g
SVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKIAotICAgIFJlZlB0
cjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gY29ubmVjdGlvbiA9IE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoc29ja2V0UGFpci5zZXJ2ZXIpOwotICAgIG1fd2Vi
UHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7CisgICAgYXV0
byBjb25uZWN0aW9uID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShzb2Nr
ZXRQYWlyLnNlcnZlcik7CisgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKFdURk1v
dmUoY29ubmVjdGlvbikpOwogCiAgICAgSVBDOjpBdHRhY2htZW50IGNsaWVudFNvY2tldChzb2Nr
ZXRQYWlyLmNsaWVudCk7CiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MoY2xpZW50U29ja2V0KSwgMCk7CkBAIC0yNjUsOCArMjY1LDggQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQogICAgIG1h
Y2hfcG9ydF9hbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBNQUNIX1BPUlRfUklHSFRfUkVDRUlW
RSwgJmxpc3RlbmluZ1BvcnQpOwogCiAgICAgLy8gQ3JlYXRlIGEgbGlzdGVuaW5nIGNvbm5lY3Rp
b24uCi0gICAgUmVmUHRyPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBjb25uZWN0aW9u
ID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShJUEM6OkNvbm5lY3Rpb246
OklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCkpOwotICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25z
LmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7CisgICAgYXV0byBjb25uZWN0aW9uID0gTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShJUEM6OkNvbm5lY3Rpb246OklkZW50
aWZpZXIobGlzdGVuaW5nUG9ydCkpOworICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVu
ZChXVEZNb3ZlKGNvbm5lY3Rpb24pKTsKIAogICAgIElQQzo6QXR0YWNobWVudCBjbGllbnRQb3J0
KGxpc3RlbmluZ1BvcnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKTsKICAgICBwYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRD
cmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhjbGllbnRQb3J0KSwgMCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKaW5kZXggYTQxZDBhYjdlMTYyMGNlNTY2OWJlYzgwMDQx
MTlhZTYzNTZlOGEwMS4uMGYxNmRmNDk2NzhmODUxYmVjMTVjMzE0MjRkMTE5YmM2MjhlYzgyMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcApAQCAtMTI3LDggKzEyNyw4IEBAIGJvb2wg
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2Rl
ciYgZGVjb2RlciwgTmV0d29yCiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVxdWVzdEJv
ZHlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlcykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9u
SGFuZGxlcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKFJlZlB0cjxTYW5kYm94RXh0
ZW5zaW9uPiBleHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUocmVxdWVzdEJvZHlT
YW5kYm94RXh0ZW5zaW9uSGFuZGxlc1tpXSkpCi0gICAgICAgICAgICAgICAgcmVzdWx0LnJlcXVl
c3RCb2R5U2FuZGJveEV4dGVuc2lvbnMuYXBwZW5kKGV4dGVuc2lvbi5yZWxlYXNlKCkpOworICAg
ICAgICAgICAgaWYgKGF1dG8gZXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKHJl
cXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbkhhbmRsZXNbaV0pKQorICAgICAgICAgICAgICAgIHJl
c3VsdC5yZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25zLmFwcGVuZChXVEZNb3ZlKGV4dGVuc2lv
bikpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKaW5kZXggYjk3OGI5OTkz
MzhiMzc4NmMxZTEyMWRjMGVlNzc4ZDViZmFkNjkxZS4uMjMwNjhhNjkyYmYzNjBlY2U0ZjZlMDU4
MDA3NTQ5N2EwNTg2Zjk2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcApAQCAtMTQ1LDEyICsxNDUsMTEg
QEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBFbnRyeTo6ZGVjb2RlU3RvcmFnZVJlY29yZChjb25z
dCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2UKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNF
KQogdm9pZCBFbnRyeTo6aW5pdGlhbGl6ZVNoYXJlYWJsZVJlc291cmNlSGFuZGxlRnJvbVN0b3Jh
Z2VSZWNvcmQoKSBjb25zdAogewotICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9y
eSA9IG1fc291cmNlU3RvcmFnZVJlY29yZC5ib2R5LnRyeUNyZWF0ZVNoYXJlZE1lbW9yeSgpOwor
ICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gbV9zb3VyY2VTdG9yYWdlUmVjb3JkLmJvZHkudHJ5Q3Jl
YXRlU2hhcmVkTWVtb3J5KCk7CiAgICAgaWYgKCFzaGFyZWRNZW1vcnkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFJlZlB0cjxTaGFyZWFibGVSZXNvdXJjZT4gc2hhcmVhYmxlUmVzb3VyY2UgPSBT
aGFyZWFibGVSZXNvdXJjZTo6Y3JlYXRlKHNoYXJlZE1lbW9yeS5yZWxlYXNlKCksIDAsIG1fc291
cmNlU3RvcmFnZVJlY29yZC5ib2R5LnNpemUoKSk7Ci0gICAgQVNTRVJUKHNoYXJlYWJsZVJlc291
cmNlKTsKKyAgICBhdXRvIHNoYXJlYWJsZVJlc291cmNlID0gU2hhcmVhYmxlUmVzb3VyY2U6OmNy
ZWF0ZShXVEZNb3ZlKHNoYXJlZE1lbW9yeSksIDAsIG1fc291cmNlU3RvcmFnZVJlY29yZC5ib2R5
LnNpemUoKSk7CiAgICAgc2hhcmVhYmxlUmVzb3VyY2UtPmNyZWF0ZUhhbmRsZShtX3NoYXJlYWJs
ZVJlc291cmNlSGFuZGxlKTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vbWFjL1NoYXJlZE1lbW9yeU1hYy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9tYWMvU2hhcmVkTWVtb3J5TWFjLmNwcAppbmRleCBjYWY0ZmI0OWI1NDZmYjk0YTIxNGFkNWEx
ZTJhODA5MTJlMDcyYTVjLi4wODBjNTI4NDI2OTc5MWZkOWU5MDQxZDI5OTJmOGZmMDQzNzg3YWY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvU2hhcmVkTWVtb3J5TWFj
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvU2hhcmVkTWVtb3J5TWFjLmNw
cApAQCAtMTEwLDEzICsxMTAsMTMgQEAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5
OjphbGxvY2F0ZShzaXplX3Qgc2l6ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
Ci0gICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5ID0gYWRvcHRSZWYoKm5ldyBT
aGFyZWRNZW1vcnkpOworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gYWRvcHRSZWYoKm5ldyBTaGFy
ZWRNZW1vcnkpOwogICAgIHNoYXJlZE1lbW9yeS0+bV9zaXplID0gc2l6ZTsKICAgICBzaGFyZWRN
ZW1vcnktPm1fZGF0YSA9IHRvUG9pbnRlcihhZGRyZXNzKTsKICAgICBzaGFyZWRNZW1vcnktPm1f
cG9ydCA9IE1BQ0hfUE9SVF9OVUxMOwogICAgIHNoYXJlZE1lbW9yeS0+bV9wcm90ZWN0aW9uID0g
UHJvdGVjdGlvbjo6UmVhZFdyaXRlOwogCi0gICAgcmV0dXJuIHNoYXJlZE1lbW9yeTsKKyAgICBy
ZXR1cm4gV1RGTW92ZShzaGFyZWRNZW1vcnkpOwogfQogCiBzdGF0aWMgaW5saW5lIHZtX3Byb3Rf
dCBtYWNoUHJvdGVjdGlvbihTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gcHJvdGVjdGlvbikKQEAg
LTE1NiwxMyArMTU2LDEzIEBAIFJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y3Jl
YXRlKHZvaWQqIGRhdGEsIHNpemVfdCBzaXplLCBQcm90ZWN0aW9uIHByCiAgICAgaWYgKCFzZW5k
UmlnaHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPFNoYXJlZE1lbW9y
eT4gc2hhcmVkTWVtb3J5KGFkb3B0UmVmKG5ldyBTaGFyZWRNZW1vcnkpKTsKKyAgICBhdXRvIHNo
YXJlZE1lbW9yeShhZG9wdFJlZigqbmV3IFNoYXJlZE1lbW9yeSkpOwogICAgIHNoYXJlZE1lbW9y
eS0+bV9zaXplID0gc2l6ZTsKICAgICBzaGFyZWRNZW1vcnktPm1fZGF0YSA9IG51bGxwdHI7CiAg
ICAgc2hhcmVkTWVtb3J5LT5tX3BvcnQgPSBzZW5kUmlnaHQubGVha1NlbmRSaWdodCgpOwogICAg
IHNoYXJlZE1lbW9yeS0+bV9wcm90ZWN0aW9uID0gcHJvdGVjdGlvbjsKIAotICAgIHJldHVybiBz
aGFyZWRNZW1vcnkucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKHNoYXJlZE1lbW9yeSk7
CiB9CiAKIFJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6bWFwKGNvbnN0IEhhbmRs
ZSYgaGFuZGxlLCBQcm90ZWN0aW9uIHByb3RlY3Rpb24pCkBAIC0xNzgsMTMgKzE3OCwxMyBAQCBS
ZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6Om1hcChjb25zdCBIYW5kbGUmIGhhbmRs
ZSwgUHJvdGVjdGlvbiBwcm90ZWN0aQogICAgIGlmIChrciAhPSBLRVJOX1NVQ0NFU1MpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVt
b3J5KGFkb3B0UmVmKG5ldyBTaGFyZWRNZW1vcnkpKTsKKyAgICBhdXRvIHNoYXJlZE1lbW9yeShh
ZG9wdFJlZigqbmV3IFNoYXJlZE1lbW9yeSkpOwogICAgIHNoYXJlZE1lbW9yeS0+bV9zaXplID0g
aGFuZGxlLm1fc2l6ZTsKICAgICBzaGFyZWRNZW1vcnktPm1fZGF0YSA9IHRvUG9pbnRlcihtYXBw
ZWRBZGRyZXNzKTsKICAgICBzaGFyZWRNZW1vcnktPm1fcG9ydCA9IE1BQ0hfUE9SVF9OVUxMOwog
ICAgIHNoYXJlZE1lbW9yeS0+bV9wcm90ZWN0aW9uID0gcHJvdGVjdGlvbjsKIAotICAgIHJldHVy
biBzaGFyZWRNZW1vcnk7CisgICAgcmV0dXJuIFdURk1vdmUoc2hhcmVkTWVtb3J5KTsKIH0KIAog
U2hhcmVkTWVtb3J5Ojp+U2hhcmVkTWVtb3J5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Q
cm9jZXNzL1BsdWdpblByb2Nlc3MuY3BwCmluZGV4IDI3MDBjYTIyNTU1YTY4ZTljMmYyMDZhMjFm
YTE3NWFjYTZkZjQxYjIuLjc1NTU3MDJhMjdiODU1MTlhMmFhMmEyNTE2MDEzYmNiNDZhYjEyZGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcApA
QCAtMTUxLDggKzE1MSw4IEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6Y3JlYXRlV2ViUHJvY2Vzc0Nv
bm5lY3Rpb24oKQogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgIElQQzo6Q29ubmVj
dGlvbjo6U29ja2V0UGFpciBzb2NrZXRQYWlyID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0
Zm9ybUNvbm5lY3Rpb24oKTsKIAotICAgIFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gY29u
bmVjdGlvbiA9IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoc29ja2V0UGFpci5zZXJ2ZXIp
OwotICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2Uo
KSk7CisgICAgYXV0byBjb25uZWN0aW9uID0gV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShz
b2NrZXRQYWlyLnNlcnZlcik7CisgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKFdU
Rk1vdmUoY29ubmVjdGlvbikpOwogCiAgICAgSVBDOjpBdHRhY2htZW50IGNsaWVudFNvY2tldChz
b2NrZXRQYWlyLmNsaWVudCk7CiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlv
bihjbGllbnRTb2NrZXQsIG1fc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlv
biksIDApOwpAQCAtMTYyLDcgKzE2Miw3IEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6Y3JlYXRlV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24oKQogICAgIG1hY2hfcG9ydF9hbGxvY2F0ZShtYWNoX3Rhc2tfc2Vs
ZigpLCBNQUNIX1BPUlRfUklHSFRfUkVDRUlWRSwgJmxpc3RlbmluZ1BvcnQpOwogCiAgICAgLy8g
Q3JlYXRlIGEgbGlzdGVuaW5nIGNvbm5lY3Rpb24uCi0gICAgUmVmUHRyPFdlYlByb2Nlc3NDb25u
ZWN0aW9uPiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShJUEM6OkNv
bm5lY3Rpb246OklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCkpOworICAgIGF1dG8gY29ubmVjdGlv
biA9IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoSVBDOjpDb25uZWN0aW9uOjpJZGVudGlm
aWVyKGxpc3RlbmluZ1BvcnQpKTsKIAogICAgIGlmIChtX2F1ZGlvSGFyZHdhcmVMaXN0ZW5lcikg
ewogICAgICAgICBpZiAobV9hdWRpb0hhcmR3YXJlTGlzdGVuZXItPmhhcmR3YXJlQWN0aXZpdHko
KSA9PSBXZWJDb3JlOjpBdWRpb0hhcmR3YXJlQWN0aXZpdHlUeXBlOjpJc0FjdGl2ZSkKQEAgLTE3
MSw3ICsxNzEsNyBAQCB2b2lkIFBsdWdpblByb2Nlc3M6OmNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0
aW9uKCkKICAgICAgICAgICAgIGNvbm5lY3Rpb24tPmF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVJbmFj
dGl2ZSgpOwogICAgIH0KIAotICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25u
ZWN0aW9uLnJlbGVhc2UoKSk7CisgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKFdU
Rk1vdmUoY29ubmVjdGlvbikpOwogCiAgICAgSVBDOjpBdHRhY2htZW50IGNsaWVudFBvcnQobGlz
dGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpOwogICAgIHBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpblByb2Nlc3NQcm94eTo6RGlkQ3JlYXRl
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY2xpZW50UG9ydCwgbV9zdXBwb3J0c0FzeW5jaHJvbm91c1Bs
dWdpbkluaXRpYWxpemF0aW9uKSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0KaW5kZXggMmEyOTczODE5ODljMWQ3
YTcwNDFkYTZlZGE4Yjg5MzFkYjA0ZDg4NC4uOWRmMmFiMGRiZTJkNTc2OTkyZmEzM2MxYzU3NjM0
OWU5ZmZiZDM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9X
S1JlbW90ZU9iamVjdENvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQ29j
b2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQpAQCAtMTA4LDkgKzEwOCw5IEBAIHN0YXRpYyB2b2lk
IGVuY29kZVRvT2JqZWN0U3RyZWFtKFdLUmVtb3RlT2JqZWN0RW5jb2RlciAqZW5jb2RlciwgaWQg
dmFsdWUpCiAgICAgc2l6ZV90IHBvc2l0aW9uID0gZW5jb2Rlci0+X29iamVjdFN0cmVhbS0+c2l6
ZSgpOwogICAgIGVuY29kZXItPl9vYmplY3RTdHJlYW0tPmVsZW1lbnRzKCkuYXBwZW5kKG51bGxw
dHIpOwogCi0gICAgUmVmUHRyPEFQSTo6RGljdGlvbmFyeT4gZW5jb2RlZE9iamVjdCA9IGNyZWF0
ZUVuY29kZWRPYmplY3QoZW5jb2RlciwgdmFsdWUpOworICAgIGF1dG8gZW5jb2RlZE9iamVjdCA9
IGNyZWF0ZUVuY29kZWRPYmplY3QoZW5jb2RlciwgdmFsdWUpOwogICAgIEFTU0VSVCghZW5jb2Rl
ci0+X29iamVjdFN0cmVhbS0+ZWxlbWVudHMoKVtwb3NpdGlvbl0pOwotICAgIGVuY29kZXItPl9v
YmplY3RTdHJlYW0tPmVsZW1lbnRzKClbcG9zaXRpb25dID0gZW5jb2RlZE9iamVjdC5yZWxlYXNl
KCk7CisgICAgZW5jb2Rlci0+X29iamVjdFN0cmVhbS0+ZWxlbWVudHMoKVtwb3NpdGlvbl0gPSBX
VEZNb3ZlKGVuY29kZWRPYmplY3QpOwogfQogCiBzdGF0aWMgdm9pZCBlbmNvZGVJbnZvY2F0aW9u
QXJndW1lbnRzKFdLUmVtb3RlT2JqZWN0RW5jb2RlciAqZW5jb2RlciwgTlNJbnZvY2F0aW9uICpp
bnZvY2F0aW9uLCBOU1VJbnRlZ2VyIGZpcnN0QXJndW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJL2MvV0tJbWFnZS5jcHAKaW5kZXggMjMyNzhiM2E3ZjUzNDAwYjM2ZDg1YzgxODdlMDRiYWUy
MWNhYzA4YS4uMjc0MTE5OWUyMjBkMDQ1ZTA3NzIzZDUxODBhODMyNzFjMmFiZDMyOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLSW1hZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0ltYWdlLmNwcApAQCAtMzgsOCArMzgsOCBAQCBXS1R5
cGVJRCBXS0ltYWdlR2V0VHlwZUlEKCkKIAogV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlKFdLU2l6
ZSBzaXplLCBXS0ltYWdlT3B0aW9ucyBvcHRpb25zKQogewotICAgIFJlZlB0cjxXZWJJbWFnZT4g
d2ViSW1hZ2UgPSBXZWJJbWFnZTo6Y3JlYXRlKHRvSW50U2l6ZShzaXplKSwgdG9JbWFnZU9wdGlv
bnMob3B0aW9ucykpOwotICAgIHJldHVybiB0b0FQSSh3ZWJJbWFnZS5yZWxlYXNlKCkubGVha1Jl
ZigpKTsKKyAgICBhdXRvIHdlYkltYWdlID0gV2ViSW1hZ2U6OmNyZWF0ZSh0b0ludFNpemUoc2l6
ZSksIHRvSW1hZ2VPcHRpb25zKG9wdGlvbnMpKTsKKyAgICByZXR1cm4gdG9BUEkod2ViSW1hZ2Uu
bGVha1JlZigpKTsKIH0KIAogV0tTaXplIFdLSW1hZ2VHZXRTaXplKFdLSW1hZ2VSZWYgaW1hZ2VS
ZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tOdW1iZXIuY3Bw
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLTnVtYmVyLmNwcAppbmRleCAxMTMwMDYz
MmNmMGZiZTI0ZGEyMDE1NGU4MzJiYjgzYmQyYTQ5NDI4Li40MThlMDI5ZWE2N2RiZjNhNmExZmVj
YzA3NTM4N2NjNmEyMTc0ZDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L2MvV0tOdW1iZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS051bWJl
ci5jcHAKQEAgLTM4LDggKzM4LDggQEAgV0tUeXBlSUQgV0tCb29sZWFuR2V0VHlwZUlEKCkKIAog
V0tCb29sZWFuUmVmIFdLQm9vbGVhbkNyZWF0ZShib29sIHZhbHVlKQogewotICAgIFJlZlB0cjxB
UEk6OkJvb2xlYW4+IGJvb2xlYW5PYmplY3QgPSBBUEk6OkJvb2xlYW46OmNyZWF0ZSh2YWx1ZSk7
Ci0gICAgcmV0dXJuIHRvQVBJKGJvb2xlYW5PYmplY3QucmVsZWFzZSgpLmxlYWtSZWYoKSk7Cisg
ICAgYXV0byBib29sZWFuT2JqZWN0ID0gQVBJOjpCb29sZWFuOjpjcmVhdGUodmFsdWUpOworICAg
IHJldHVybiB0b0FQSSgmYm9vbGVhbk9iamVjdC5sZWFrUmVmKCkpOwogfQogCiBib29sIFdLQm9v
bGVhbkdldFZhbHVlKFdLQm9vbGVhblJlZiBib29sZWFuUmVmKQpAQCAtNTQsOCArNTQsOCBAQCBX
S1R5cGVJRCBXS0RvdWJsZUdldFR5cGVJRCgpCiAKIFdLRG91YmxlUmVmIFdLRG91YmxlQ3JlYXRl
KGRvdWJsZSB2YWx1ZSkKIHsKLSAgICBSZWZQdHI8QVBJOjpEb3VibGU+IGRvdWJsZU9iamVjdCA9
IEFQSTo6RG91YmxlOjpjcmVhdGUodmFsdWUpOwotICAgIHJldHVybiB0b0FQSShkb3VibGVPYmpl
Y3QucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgYXV0byBkb3VibGVPYmplY3QgPSBBUEk6OkRv
dWJsZTo6Y3JlYXRlKHZhbHVlKTsKKyAgICByZXR1cm4gdG9BUEkoJmRvdWJsZU9iamVjdC5sZWFr
UmVmKCkpOwogfQogCiBkb3VibGUgV0tEb3VibGVHZXRWYWx1ZShXS0RvdWJsZVJlZiBkb3VibGVS
ZWYpCkBAIC03MCw4ICs3MCw4IEBAIFdLVHlwZUlEIFdLVUludDY0R2V0VHlwZUlEKCkKIAogV0tV
SW50NjRSZWYgV0tVSW50NjRDcmVhdGUodWludDY0X3QgdmFsdWUpCiB7Ci0gICAgUmVmUHRyPEFQ
STo6VUludDY0PiB1aW50NjRPYmplY3QgPSBBUEk6OlVJbnQ2NDo6Y3JlYXRlKHZhbHVlKTsKLSAg
ICByZXR1cm4gdG9BUEkodWludDY0T2JqZWN0LnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgIGF1
dG8gdWludDY0T2JqZWN0ID0gQVBJOjpVSW50NjQ6OmNyZWF0ZSh2YWx1ZSk7CisgICAgcmV0dXJu
IHRvQVBJKCZ1aW50NjRPYmplY3QubGVha1JlZigpKTsKIH0KIAogdWludDY0X3QgV0tVSW50NjRH
ZXRWYWx1ZShXS1VJbnQ2NFJlZiB1aW50NjRSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAKaW5kZXggODgyODY3ZjgwYjViZWNj
NWUyOTM0ODE4NjUyYzkwZmUxZmMxNmEyZi4uNDhjYzBiMjIyYWJjNDYzMTllNTljOTNjYjBmNjEz
OWU1NmVlMDI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLU2Vj
dXJpdHlPcmlnaW5SZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1Nl
Y3VyaXR5T3JpZ2luUmVmLmNwcApAQCAtNDgsOCArNDgsOCBAQCBXS1NlY3VyaXR5T3JpZ2luUmVm
IFdLU2VjdXJpdHlPcmlnaW5DcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKFdLU3RyaW5nUmVm
IGlkZQogCiBXS1NlY3VyaXR5T3JpZ2luUmVmIFdLU2VjdXJpdHlPcmlnaW5DcmVhdGUoV0tTdHJp
bmdSZWYgcHJvdG9jb2wsIFdLU3RyaW5nUmVmIGhvc3QsIGludCBwb3J0KQogewotICAgIFJlZlB0
cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmln
aW46OmNyZWF0ZSh0b0ltcGwocHJvdG9jb2wpLT5zdHJpbmcoKSwgdG9JbXBsKGhvc3QpLT5zdHJp
bmcoKSwgcG9ydCk7Ci0gICAgcmV0dXJuIHRvQVBJKHNlY3VyaXR5T3JpZ2luLnJlbGVhc2UoKS5s
ZWFrUmVmKCkpOworICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGUodG9JbXBsKHByb3RvY29sKS0+c3RyaW5nKCksIHRvSW1wbChob3N0KS0+c3RyaW5n
KCksIHBvcnQpOworICAgIHJldHVybiB0b0FQSShzZWN1cml0eU9yaWdpbi5sZWFrUmVmKCkpOwog
fQogCiBXS1N0cmluZ1JlZiBXS1NlY3VyaXR5T3JpZ2luQ29weURhdGFiYXNlSWRlbnRpZmllcihX
S1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9jL1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggZWMy
YWQ5NmY1MGZlNmI0NWY1MTBhZTNlOGI5MGEwNmVkMjQ4MzJlNC4uODYyZmQ3ZjYwYTg1NWQyOWFi
MjY4YjJmMTYyYjJlMDI1MTE2NDczZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSS9jL1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvV0tTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0zOSwxNCArMzksMTQg
QEAgV0tUeXBlSUQgV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVHZXRUeXBlSUQoKQogCiBXS1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZVJlZiBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNyZWF0ZShKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQog
ewotICAgIFJlZlB0cjxBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVl
ID0gQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShjb250ZXh0LCB2YWx1ZSwgZXhj
ZXB0aW9uKTsKLSAgICByZXR1cm4gdG9BUEkoc2VyaWFsaXplZFZhbHVlLnJlbGVhc2UoKS5sZWFr
UmVmKCkpOworICAgIGF1dG8gc2VyaWFsaXplZFZhbHVlID0gQVBJOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmNyZWF0ZShjb250ZXh0LCB2YWx1ZSwgZXhjZXB0aW9uKTsKKyAgICByZXR1cm4gdG9B
UEkoc2VyaWFsaXplZFZhbHVlLmxlYWtSZWYoKSk7CiB9CiAKIFdLU2VyaWFsaXplZFNjcmlwdFZh
bHVlUmVmIFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlQ3JlYXRlV2l0aEludGVybmFsUmVwcmVzZW50
YXRpb24odm9pZCogaW50ZXJuYWxSZXByZXNlbnRhdGlvbikKIHsKLSAgICBSZWZQdHI8QVBJOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSA9IEFQSTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpjcmVhdGUoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlKj4oaW50ZXJuYWxSZXByZXNlbnRhdGlvbikpOwotICAgIHJldHVybiB0b0FQSShzZXJpYWxp
emVkVmFsdWUucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgYXV0byBzZXJpYWxpemVkVmFsdWUg
PSBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0YXRpY19jYXN0PFdlYkNvcmU6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSo+KGludGVybmFsUmVwcmVzZW50YXRpb24pKTsKKyAgICBy
ZXR1cm4gdG9BUEkoJnNlcmlhbGl6ZWRWYWx1ZS5sZWFrUmVmKCkpOwogfQogCiBKU1ZhbHVlUmVm
IFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlRGVzZXJpYWxpemUoV0tTZXJpYWxpemVkU2NyaXB0VmFs
dWVSZWYgc2NyaXB0VmFsdWVSZWYsIEpTQ29udGV4dFJlZiBjb250ZXh0UmVmLCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2Fp
cm8vV0tJbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jYWlyby9X
S0ltYWdlQ2Fpcm8uY3BwCmluZGV4IGFmYjQ5OTMyYjE3ODFlNTA5MDZkYjkzNjRhMDNkZDlhZWM0
OTViODYuLjg1Yjk5Mzg0NDI3YjRmYWQ3MGJmMjBiNDlhZjIzNWU2YTMyNjQ0MWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwCkBA
IC00NSw3ICs0NSw3IEBAIGNhaXJvX3N1cmZhY2VfdCogV0tJbWFnZUNyZWF0ZUNhaXJvU3VyZmFj
ZShXS0ltYWdlUmVmIGltYWdlUmVmKQogV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlRnJvbUNhaXJv
U3VyZmFjZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIFdLSW1hZ2VPcHRpb25zIG9wdGlvbnMp
CiB7CiAgICAgSW50U2l6ZSBpbWFnZVNpemUoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgo
c3VyZmFjZSksIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlKSk7Ci0gICAg
UmVmUHRyPFdlYkltYWdlPiB3ZWJJbWFnZSA9IFdlYkltYWdlOjpjcmVhdGUoaW1hZ2VTaXplLCB0
b0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7CisgICAgYXV0byB3ZWJJbWFnZSA9IFdlYkltYWdlOjpj
cmVhdGUoaW1hZ2VTaXplLCB0b0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7CiAgICAgYXV0byBncmFw
aGljc0NvbnRleHQgPSB3ZWJJbWFnZS0+Yml0bWFwKCktPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgp
OwogCiAgICAgY2Fpcm9fdCogY3IgPSBncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgp
LT5jcigpOwpAQCAtNTQsNSArNTQsNSBAQCBXS0ltYWdlUmVmIFdLSW1hZ2VDcmVhdGVGcm9tQ2Fp
cm9TdXJmYWNlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgV0tJbWFnZU9wdGlvbgogICAgIGNh
aXJvX3JlY3RhbmdsZShjciwgMCwgMCwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWln
aHQoKSk7CiAgICAgY2Fpcm9fZmlsbChjcik7CiAKLSAgICByZXR1cm4gdG9BUEkod2ViSW1hZ2Uu
cmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKHdlYkltYWdlLmxlYWtSZWYo
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2cvV0tJbWFn
ZUNHLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCmlu
ZGV4IGJjYWI2MGI1Y2RmOTdlZjBkYjIxYTAyNTMxYTgwOGM3MjEyNGI1ZDEuLmM2MjM0M2Q5NTFi
Y2YwNjcyOTg4NWRlZjc3ODhmY2NlYTk1OGNiOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCkBAIC01MCw3ICs1MCw3IEBAIFdLSW1hZ2VSZWYgV0tJ
bWFnZUNyZWF0ZUZyb21DR0ltYWdlKENHSW1hZ2VSZWYgaW1hZ2VSZWYsIFdLSW1hZ2VPcHRpb25z
IG9wdGlvbnMpCiAgICAgICAgIHJldHVybiAwOwogICAgIAogICAgIEludFNpemUgaW1hZ2VTaXpl
KENHSW1hZ2VHZXRXaWR0aChpbWFnZVJlZiksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2VSZWYpKTsK
LSAgICBSZWZQdHI8V2ViSW1hZ2U+IHdlYkltYWdlID0gV2ViSW1hZ2U6OmNyZWF0ZShpbWFnZVNp
emUsIHRvSW1hZ2VPcHRpb25zKG9wdGlvbnMpKTsKKyAgICBhdXRvIHdlYkltYWdlID0gV2ViSW1h
Z2U6OmNyZWF0ZShpbWFnZVNpemUsIHRvSW1hZ2VPcHRpb25zKG9wdGlvbnMpKTsKICAgICBpZiAo
IXdlYkltYWdlLT5iaXRtYXAoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTU4LDUgKzU4LDUg
QEAgV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlRnJvbUNHSW1hZ2UoQ0dJbWFnZVJlZiBpbWFnZVJl
ZiwgV0tJbWFnZU9wdGlvbnMgb3B0aW9ucykKICAgICBGbG9hdFJlY3QgcmVjdChGbG9hdFBvaW50
KDAsIDApLCBpbWFnZVNpemUpOwogICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJSZWN0KHJlY3Qp
OwogICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlUmVmLCBpbWFnZVNp
emUsIHJlY3QsIHJlY3QpOwotICAgIHJldHVybiB0b0FQSSh3ZWJJbWFnZS5yZWxlYXNlKCkubGVh
a1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkod2ViSW1hZ2UubGVha1JlZigpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tDZXJ0aWZpY2F0ZUluZm9N
YWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFjL1dLQ2VydGlmaWNhdGVJbmZv
TWFjLm1tCmluZGV4IGM0NDBiNDY3MGE5NTgxYjVlZTZmMmZmNmY4YTc3YTEwNmFlZTZjMjMuLmE4
ODNiN2QzOTQzNWFiMzc2NTQzYWU2MjIxZGVjZjY3ODZkMDExOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tDZXJ0aWZpY2F0ZUluZm9NYWMubW0KKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL21hYy9XS0NlcnRpZmljYXRlSW5mb01hYy5tbQpA
QCAtMzUsNyArMzUsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogV0tDZXJ0aWZpY2F0ZUlu
Zm9SZWYgV0tDZXJ0aWZpY2F0ZUluZm9DcmVhdGVXaXRoQ2VydGZpY2F0ZUNoYWluKENGQXJyYXlS
ZWYgY2VydGlmaWNhdGVDaGFpbikKIHsKICAgICBSZWZQdHI8V2ViQ2VydGlmaWNhdGVJbmZvPiBj
ZXJ0aWZpY2F0ZUluZm8gPSBXZWJDZXJ0aWZpY2F0ZUluZm86OmNyZWF0ZShDZXJ0aWZpY2F0ZUlu
Zm8oY2VydGlmaWNhdGVDaGFpbikpOwotICAgIHJldHVybiB0b0FQSShjZXJ0aWZpY2F0ZUluZm8u
cmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKGNlcnRpZmljYXRlSW5mby5s
ZWFrUmVmKCkpOwogfQogCiBDRkFycmF5UmVmIFdLQ2VydGlmaWNhdGVJbmZvR2V0Q2VydGlmaWNh
dGVDaGFpbihXS0NlcnRpZmljYXRlSW5mb1JlZiBjZXJ0aWZpY2F0ZUluZm9SZWYpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFjL1dLT2JqQ1R5cGVXcmFwcGVyUmVm
Lm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL21hYy9XS09iakNUeXBlV3JhcHBlclJl
Zi5tbQppbmRleCBlZTAxMjViYTFlYWI0OWZhOWQ0M2ZmZDZhZGY2MDk4NmViYTY2YWQzLi5jZmNi
OTAyZTE1NWNkZjcxMWQ0ZWZjYWY0ZGYwODgwODA3NjMwMTUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFjL1dLT2JqQ1R5cGVXcmFwcGVyUmVmLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tPYmpDVHlwZVdyYXBwZXJSZWYubW0KQEAg
LTM4LDggKzM4LDggQEAgV0tUeXBlSUQgV0tPYmpDVHlwZVdyYXBwZXJHZXRUeXBlSUQoKQogCiBX
S09iakNUeXBlV3JhcHBlclJlZiBXS09iakNUeXBlV3JhcHBlckNyZWF0ZShpZCBvYmplY3QpCiB7
Ci0gICAgUmVmUHRyPE9iakNPYmplY3RHcmFwaD4gb2JqZWN0V3JhcHBlciA9IE9iakNPYmplY3RH
cmFwaDo6Y3JlYXRlKG9iamVjdCk7Ci0gICAgcmV0dXJuIHRvQVBJKG9iamVjdFdyYXBwZXIucmVs
ZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgYXV0byBvYmplY3RXcmFwcGVyID0gT2JqQ09iamVjdEdy
YXBoOjpjcmVhdGUob2JqZWN0KTsKKyAgICByZXR1cm4gdG9BUEkoJm9iamVjdFdyYXBwZXIubGVh
a1JlZigpKTsKIH0KIAogaWQgV0tPYmpDVHlwZVdyYXBwZXJHZXRPYmplY3QoV0tPYmpDVHlwZVdy
YXBwZXJSZWYgd3JhcHBlclJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9tYWMvV0tXZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9t
YWMvV0tXZWJBcmNoaXZlLmNwcAppbmRleCA4Njc2Y2M2ZTIzMzI3YzM5MjY0ZjA3MzYzMGRlZjA4
ZmNkMjE5YWZiLi5lNmFhMjRlNTZjMTg1ZTEwMDdkMzIxYzRkMDgyZGFhYmIzMjBkNzU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFjL1dLV2ViQXJjaGl2ZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL21hYy9XS1dlYkFyY2hpdmUuY3BwCkBA
IC00MywzOCArNDMsMzggQEAgV0tUeXBlSUQgV0tXZWJBcmNoaXZlR2V0VHlwZUlEKCkKIAogV0tX
ZWJBcmNoaXZlUmVmIFdLV2ViQXJjaGl2ZUNyZWF0ZShXS1dlYkFyY2hpdmVSZXNvdXJjZVJlZiBt
YWluUmVzb3VyY2VSZWYsIFdLQXJyYXlSZWYgc3VicmVzb3VyY2VzUmVmLCBXS0FycmF5UmVmIHN1
YmZyYW1lQXJjaGl2ZXNSZWYpCiB7Ci0gICAgUmVmUHRyPEFQSTo6V2ViQXJjaGl2ZT4gd2ViQXJj
aGl2ZSA9IEFQSTo6V2ViQXJjaGl2ZTo6Y3JlYXRlKHRvSW1wbChtYWluUmVzb3VyY2VSZWYpLCB0
b0ltcGwoc3VicmVzb3VyY2VzUmVmKSwgdG9JbXBsKHN1YmZyYW1lQXJjaGl2ZXNSZWYpKTsKLSAg
ICByZXR1cm4gdG9BUEkod2ViQXJjaGl2ZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICBhdXRv
IHdlYkFyY2hpdmUgPSBBUEk6OldlYkFyY2hpdmU6OmNyZWF0ZSh0b0ltcGwobWFpblJlc291cmNl
UmVmKSwgdG9JbXBsKHN1YnJlc291cmNlc1JlZiksIHRvSW1wbChzdWJmcmFtZUFyY2hpdmVzUmVm
KSk7CisgICAgcmV0dXJuIHRvQVBJKCZ3ZWJBcmNoaXZlLmxlYWtSZWYoKSk7CiB9CiAKIFdLV2Vi
QXJjaGl2ZVJlZiBXS1dlYkFyY2hpdmVDcmVhdGVXaXRoRGF0YShXS0RhdGFSZWYgZGF0YVJlZikK
IHsKLSAgICBSZWZQdHI8QVBJOjpXZWJBcmNoaXZlPiB3ZWJBcmNoaXZlID0gQVBJOjpXZWJBcmNo
aXZlOjpjcmVhdGUodG9JbXBsKGRhdGFSZWYpKTsKLSAgICByZXR1cm4gdG9BUEkod2ViQXJjaGl2
ZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICBhdXRvIHdlYkFyY2hpdmUgPSBBUEk6OldlYkFy
Y2hpdmU6OmNyZWF0ZSh0b0ltcGwoZGF0YVJlZikpOworICAgIHJldHVybiB0b0FQSSgmd2ViQXJj
aGl2ZS5sZWFrUmVmKCkpOwogfQogCiBXS1dlYkFyY2hpdmVSZWYgV0tXZWJBcmNoaXZlQ3JlYXRl
RnJvbVJhbmdlKFdLQnVuZGxlUmFuZ2VIYW5kbGVSZWYgcmFuZ2VIYW5kbGVSZWYpCiB7Ci0gICAg
UmVmUHRyPEFQSTo6V2ViQXJjaGl2ZT4gd2ViQXJjaGl2ZSA9IEFQSTo6V2ViQXJjaGl2ZTo6Y3Jl
YXRlKHRvSW1wbChyYW5nZUhhbmRsZVJlZiktPmNvcmVSYW5nZSgpKTsKLSAgICByZXR1cm4gdG9B
UEkod2ViQXJjaGl2ZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICBhdXRvIHdlYkFyY2hpdmUg
PSBBUEk6OldlYkFyY2hpdmU6OmNyZWF0ZSh0b0ltcGwocmFuZ2VIYW5kbGVSZWYpLT5jb3JlUmFu
Z2UoKSk7CisgICAgcmV0dXJuIHRvQVBJKCZ3ZWJBcmNoaXZlLmxlYWtSZWYoKSk7CiB9CiAKIFdL
V2ViQXJjaGl2ZVJlc291cmNlUmVmIFdLV2ViQXJjaGl2ZUNvcHlNYWluUmVzb3VyY2UoV0tXZWJB
cmNoaXZlUmVmIHdlYkFyY2hpdmVSZWYpCiB7CiAgICAgUmVmUHRyPEFQSTo6V2ViQXJjaGl2ZVJl
c291cmNlPiBtYWluUmVzb3VyY2UgPSB0b0ltcGwod2ViQXJjaGl2ZVJlZiktPm1haW5SZXNvdXJj
ZSgpOwotICAgIHJldHVybiB0b0FQSShtYWluUmVzb3VyY2UucmVsZWFzZSgpLmxlYWtSZWYoKSk7
CisgICAgcmV0dXJuIHRvQVBJKG1haW5SZXNvdXJjZS5sZWFrUmVmKCkpOwogfQogCiBXS0FycmF5
UmVmIFdLV2ViQXJjaGl2ZUNvcHlTdWJyZXNvdXJjZXMoV0tXZWJBcmNoaXZlUmVmIHdlYkFyY2hp
dmVSZWYpCiB7CiAgICAgUmVmUHRyPEFQSTo6QXJyYXk+IHN1YnJlc291cmNlcyA9IHRvSW1wbCh3
ZWJBcmNoaXZlUmVmKS0+c3VicmVzb3VyY2VzKCk7Ci0gICAgcmV0dXJuIHRvQVBJKHN1YnJlc291
cmNlcy5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkoc3VicmVzb3VyY2Vz
LmxlYWtSZWYoKSk7CiB9CiAKIFdLQXJyYXlSZWYgV0tXZWJBcmNoaXZlQ29weVN1YmZyYW1lQXJj
aGl2ZXMoV0tXZWJBcmNoaXZlUmVmIHdlYkFyY2hpdmVSZWYpCiB7CiAgICAgUmVmUHRyPEFQSTo6
QXJyYXk+IHN1YmZyYW1lQXJjaGl2ZXMgPSB0b0ltcGwod2ViQXJjaGl2ZVJlZiktPnN1YmZyYW1l
QXJjaGl2ZXMoKTsKLSAgICByZXR1cm4gdG9BUEkoc3ViZnJhbWVBcmNoaXZlcy5yZWxlYXNlKCku
bGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkoc3ViZnJhbWVBcmNoaXZlcy5sZWFrUmVmKCkp
OwogfQogCiBXS0RhdGFSZWYgV0tXZWJBcmNoaXZlQ29weURhdGEoV0tXZWJBcmNoaXZlUmVmIHdl
YkFyY2hpdmVSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFj
L1dLV2ViQXJjaGl2ZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9t
YWMvV0tXZWJBcmNoaXZlUmVzb3VyY2UuY3BwCmluZGV4IDg0MzJkOWViNTcxOGEwNDQxYTMxNjc3
Y2UyMWQyMzE5N2ZmZWVlNDQuLmM4MTljMDIxNjhiOTNkMTEzY2IwZTA2NjQzNTk1YjY5OTQ0M2Zj
NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tXZWJBcmNo
aXZlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tX
ZWJBcmNoaXZlUmVzb3VyY2UuY3BwCkBAIC0zOSw4ICszOSw4IEBAIFdLVHlwZUlEIFdLV2ViQXJj
aGl2ZVJlc291cmNlR2V0VHlwZUlEKCkKIAogV0tXZWJBcmNoaXZlUmVzb3VyY2VSZWYgV0tXZWJB
cmNoaXZlUmVzb3VyY2VDcmVhdGUoV0tEYXRhUmVmIGRhdGFSZWYsIFdLVVJMUmVmIFVSTFJlZiwg
V0tTdHJpbmdSZWYgTUlNRVR5cGVSZWYsIFdLU3RyaW5nUmVmIHRleHRFbmNvZGluZ1JlZikKIHsK
LSAgICBSZWZQdHI8QVBJOjpXZWJBcmNoaXZlUmVzb3VyY2U+IHdlYkFyY2hpdmVSZXNvdXJjZSA9
IEFQSTo6V2ViQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUodG9JbXBsKGRhdGFSZWYpLCB0b1dURlN0
cmluZyhVUkxSZWYpLCB0b1dURlN0cmluZyhNSU1FVHlwZVJlZiksIHRvV1RGU3RyaW5nKHRleHRF
bmNvZGluZ1JlZikpOwotICAgIHJldHVybiB0b0FQSSh3ZWJBcmNoaXZlUmVzb3VyY2UucmVsZWFz
ZSgpLmxlYWtSZWYoKSk7CisgICAgYXV0byB3ZWJBcmNoaXZlUmVzb3VyY2UgPSBBUEk6OldlYkFy
Y2hpdmVSZXNvdXJjZTo6Y3JlYXRlKHRvSW1wbChkYXRhUmVmKSwgdG9XVEZTdHJpbmcoVVJMUmVm
KSwgdG9XVEZTdHJpbmcoTUlNRVR5cGVSZWYpLCB0b1dURlN0cmluZyh0ZXh0RW5jb2RpbmdSZWYp
KTsKKyAgICByZXR1cm4gdG9BUEkoJndlYkFyY2hpdmVSZXNvdXJjZS5sZWFrUmVmKCkpOwogfQog
CiBXS0RhdGFSZWYgV0tXZWJBcmNoaXZlUmVzb3VyY2VDb3B5RGF0YShXS1dlYkFyY2hpdmVSZXNv
dXJjZVJlZiB3ZWJBcmNoaXZlUmVzb3VyY2VSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJV2ViQXJjaGl2ZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElXZWJB
cmNoaXZlLm1tCmluZGV4IDhlMTdlNWJiNTY4YWRjZDk1ZDM2YzNjOGYzOGQ2OGNjYzI2MDE2YjAu
LjkyOTAzYjM0N2E0OWZjZWNmYTZjMzVjNTllMmY2ZDY5MTZkOTgyZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUElXZWJBcmNoaXZlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUElXZWJBcmNoaXZlLm1tCkBAIC04Miw3ICs4Miw3IEBAIFdlYkFyY2hpdmU6Oldl
YkFyY2hpdmUoV2ViQXJjaGl2ZVJlc291cmNlKiBtYWluUmVzb3VyY2UsIFBhc3NSZWZQdHI8QVBJ
OjpBcnJheT4KICAgICAgICAgY29yZVN1YmZyYW1lTGVnYWN5V2ViQXJjaGl2ZXMudW5jaGVja2Vk
QXBwZW5kKHN1YmZyYW1lV2ViQXJjaGl2ZS0+Y29yZUxlZ2FjeVdlYkFyY2hpdmUoKSk7CiAgICAg
fQogCi0gICAgbV9sZWdhY3lXZWJBcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNv
cmVNYWluUmVzb3VyY2UucmVsZWFzZSgpLCBXVEZNb3ZlKGNvcmVBcmNoaXZlUmVzb3VyY2VzKSwg
V1RGTW92ZShjb3JlU3ViZnJhbWVMZWdhY3lXZWJBcmNoaXZlcykpOworICAgIG1fbGVnYWN5V2Vi
QXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShXVEZNb3ZlKGNvcmVNYWluUmVzb3Vy
Y2UpLCBXVEZNb3ZlKGNvcmVBcmNoaXZlUmVzb3VyY2VzKSwgV1RGTW92ZShjb3JlU3ViZnJhbWVM
ZWdhY3lXZWJBcmNoaXZlcykpOwogfQogCiBXZWJBcmNoaXZlOjpXZWJBcmNoaXZlKEFQSTo6RGF0
YSogZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcAppbmRleCBlYmY5NzQxMTNhYzEw
YzE5YWE1NWE0YjMyYmFjZTI0NzRhZGFmYjY5Li5hZDcwNjNiMjRmNmYwOGVhZTJiNjAzNzI2MjZk
ZGJkMGFmYmQzNDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwCkBAIC0xNDUsMTMg
KzE0NSwxMyBAQCBQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z2luTW9kdWxlPiBOZXRzY2FwZVBsdWdp
bk1vZHVsZTo6Z2V0T3JDcmVhdGUoY29uc3QgU3RyaW5nJgogICAgICAgICAgICAgcmV0dXJuIHBs
dWdpbk1vZHVsZTsKICAgICB9CiAKLSAgICBSZWZQdHI8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+IHBs
dWdpbk1vZHVsZShhZG9wdFJlZihuZXcgTmV0c2NhcGVQbHVnaW5Nb2R1bGUocGx1Z2luUGF0aCkp
KTsKKyAgICBhdXRvIHBsdWdpbk1vZHVsZShhZG9wdFJlZigqbmV3IE5ldHNjYXBlUGx1Z2luTW9k
dWxlKHBsdWdpblBhdGgpKSk7CiAgICAgCiAgICAgLy8gVHJ5IHRvIGxvYWQgYW5kIGluaXRpYWxp
emUgdGhlIHBsdWctaW4gbW9kdWxlLgogICAgIGlmICghcGx1Z2luTW9kdWxlLT5sb2FkKCkpCi0g
ICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKLSAgICByZXR1
cm4gcGx1Z2luTW9kdWxlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92ZShwbHVnaW5Nb2R1
bGUpOwogfQogCiB2b2lkIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjppbmNyZW1lbnRMb2FkQ291bnQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcAppbmRleCA0ZWVjYmNj
OTk3NzQyOTRkMzQ5ZGQxOWNkYjMwMjhiMDQ5YzFiYjU3Li43ZTBkY2I2MzUxMTMwNWJkYmIwYjUw
NTUyMzg4MDA0MDFmMjMxMTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hh
cmVhYmxlQml0bWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0
bWFwLmNwcApAQCAtOTksMTEgKzk5LDExIEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdzCiBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBIYW5kbGUm
IGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uIHByb3RlY3Rpb24pCiB7CiAgICAgLy8g
Q3JlYXRlIHRoZSBzaGFyZWQgbWVtb3J5LgotICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJl
ZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6bWFwKGhhbmRsZS5tX2hhbmRsZSwgcHJvdGVjdGlvbik7
CisgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6Om1hcChoYW5kbGUubV9oYW5k
bGUsIHByb3RlY3Rpb24pOwogICAgIGlmICghc2hhcmVkTWVtb3J5KQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiBjcmVhdGUoaGFuZGxlLm1fc2l6ZSwgaGFuZGxlLm1fZmxh
Z3MsIHNoYXJlZE1lbW9yeS5yZWxlYXNlKCkpOworICAgIHJldHVybiBjcmVhdGUoaGFuZGxlLm1f
c2l6ZSwgaGFuZGxlLm1fZmxhZ3MsIFdURk1vdmUoc2hhcmVkTWVtb3J5KSk7CiB9CiAKIGJvb2wg
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVIYW5kbGUoSGFuZGxlJiBoYW5kbGUsIFNoYXJlZE1lbW9y
eTo6UHJvdGVjdGlvbiBwcm90ZWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFi
bGVSZXNvdXJjZS5jcHAKaW5kZXggN2Y5MTI3M2VkYzMwOTRiMGI5YjllNjkzNzUzN2ZkMzkzZTk1
ZDMzMy4uNzRhZmQ0YzY2NzY2YzEwNzY5YzkwMWY5YmZmOWE5YzdjN2MyOWE0OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCkBAIC0xMTQsMTEgKzExNCwx
MSBAQCBSZWY8U2hhcmVhYmxlUmVzb3VyY2U+IFNoYXJlYWJsZVJlc291cmNlOjpjcmVhdGUoUGFz
c1JlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZAogCiBQYXNzUmVmUHRyPFNoYXJlYWJsZVJlc291
cmNlPiBTaGFyZWFibGVSZXNvdXJjZTo6bWFwKGNvbnN0IEhhbmRsZSYgaGFuZGxlKQogewotICAg
IFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6bWFwKGhh
bmRsZS5tX2hhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAg
YXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6Om1hcChoYW5kbGUubV9oYW5kbGUsIFNo
YXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgIGlmICghc2hhcmVkTWVtb3J5
KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBjcmVhdGUoc2hhcmVkTWVtb3J5LnJl
bGVhc2UoKSwgaGFuZGxlLm1fb2Zmc2V0LCBoYW5kbGUubV9zaXplKTsKKyAgICByZXR1cm4gY3Jl
YXRlKFdURk1vdmUoc2hhcmVkTWVtb3J5KSwgaGFuZGxlLm1fb2Zmc2V0LCBoYW5kbGUubV9zaXpl
KTsKIH0KIAogU2hhcmVhYmxlUmVzb3VyY2U6OlNoYXJlYWJsZVJlc291cmNlKFBhc3NSZWZQdHI8
U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnksIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgc2l6
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNH
dGsuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAK
aW5kZXggNTAxZDZmMTM3MDkwYzkzNDZhMmZlNGQxMTlmMDQwMWE1NDI0M2NkZS4uN2EyZDZjNGFh
ZWRlMjJlNjdkYWJjOTdlYWY4YWRjZjY3ZGU2MjlhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKQEAgLTIyOSw3ICsyMjksNyBAQCBib29s
IEFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVy
LCBEcmFnRGF0YSYgZHJhZ0RhdAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAot
ICAgIGRyYWdEYXRhID0gRHJhZ0RhdGEocGxhdGZvcm1EYXRhLnJlbGVhc2UoKS5sZWFrUmVmKCks
IGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgc3RhdGljX2Nhc3Q8RHJhZ09wZXJhdGlv
bj4oc291cmNlT3BlcmF0aW9uTWFzayksCisgICAgZHJhZ0RhdGEgPSBEcmFnRGF0YShwbGF0Zm9y
bURhdGEubGVha1JlZigpLCBjbGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIHN0YXRpY19j
YXN0PERyYWdPcGVyYXRpb24+KHNvdXJjZU9wZXJhdGlvbk1hc2spLAogICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+KGZsYWdzKSk7CiAKICAg
ICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9Db29yZGluYXRlZEdyYXBoaWNzL1dLVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS1ZpZXcuY3BwCmluZGV4IGMxYWIyMmZhMWEz
NTVmMjNlMmJmNzA5MjIxYmZmZjQ0NWE4OTMyOTQuLjg1ZTc5YWE0OWZhMDdjMzE4YjI4MmFhYzhk
NzgzOGRhODEzNzRhNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9Db29yZGluYXRlZEdyYXBoaWNzL1dLVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tWaWV3LmNwcApAQCAtMzIsOCArMzIs
OCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBXS1ZpZXdSZWYgV0tWaWV3Q3JlYXRlKFdL
UGFnZUNvbmZpZ3VyYXRpb25SZWYgcGFnZUNvbmZpZ3VyYXRpb24pCiB7Ci0gICAgUmVmUHRyPFdl
YlZpZXc+IHdlYlZpZXcgPSBXZWJWaWV3OjpjcmVhdGUoKnRvSW1wbChwYWdlQ29uZmlndXJhdGlv
bikpOwotICAgIHJldHVybiB0b0FQSSh3ZWJWaWV3LnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAg
IGF1dG8gd2ViVmlldyA9IFdlYlZpZXc6OmNyZWF0ZSgqdG9JbXBsKHBhZ2VDb25maWd1cmF0aW9u
KSk7CisgICAgcmV0dXJuIHRvQVBJKCZ3ZWJWaWV3LmxlYWtSZWYoKSk7CiB9CiAKIFdLU2l6ZSBX
S1ZpZXdHZXRTaXplKFdLVmlld1JlZiB2aWV3UmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLQmF0dGVyeVN0YXR1cy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tCYXR0ZXJ5U3RhdHVzLmNwcAppbmRleCA5NTM4NTBkOGJjMmMyN2Ri
MTAzYTU0MGM0OGZjNTlmNWQ2YWUwMzU2Li4wOWY4Y2M3Njk5NjlhZGQxZjJiYWE3N2ZiOWI4MGNk
NmMwZDNkYzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tC
YXR0ZXJ5U3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tC
YXR0ZXJ5U3RhdHVzLmNwcApAQCAtNDYsOCArNDYsOCBAQCBXS1R5cGVJRCBXS0JhdHRlcnlTdGF0
dXNHZXRUeXBlSUQoKQogV0tCYXR0ZXJ5U3RhdHVzUmVmIFdLQmF0dGVyeVN0YXR1c0NyZWF0ZShi
b29sIGlzQ2hhcmdpbmcsIGRvdWJsZSBjaGFyZ2luZ1RpbWUsIGRvdWJsZSBkaXNjaGFyZ2luZ1Rp
bWUsIGRvdWJsZSBsZXZlbCkKIHsKICNpZiBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpCi0gICAgUmVm
UHRyPFdlYkJhdHRlcnlTdGF0dXM+IHN0YXR1cyA9IFdlYkJhdHRlcnlTdGF0dXM6OmNyZWF0ZShp
c0NoYXJnaW5nLCBjaGFyZ2luZ1RpbWUsIGRpc2NoYXJnaW5nVGltZSwgbGV2ZWwpOwotICAgIHJl
dHVybiB0b0FQSShzdGF0dXMucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgYXV0byBzdGF0dXMg
PSBXZWJCYXR0ZXJ5U3RhdHVzOjpjcmVhdGUoaXNDaGFyZ2luZywgY2hhcmdpbmdUaW1lLCBkaXNj
aGFyZ2luZ1RpbWUsIGxldmVsKTsKKyAgICByZXR1cm4gdG9BUEkoJnN0YXR1cy5sZWFrUmVmKCkp
OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaXNDaGFyZ2luZyk7CiAgICAgVU5VU0VEX1BBUkFN
KGNoYXJnaW5nVGltZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tHZW9sb2NhdGlvblBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS0dlb2xvY2F0aW9uUG9zaXRpb24uY3BwCmluZGV4IDVkOTRmM2U4NjJiYTI5YjljY2Nm
ZjllZTUwNjBkMTY3ZWE2MDFjNzguLjhiNGM1YjY1MDVhYTFkYTI3ZmRlY2U1ZjdiODU1ZDM2OGI0
MTRiZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xv
Y2F0aW9uUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S0dlb2xvY2F0aW9uUG9zaXRpb24uY3BwCkBAIC00Myw2ICs0Myw2IEBAIFdLR2VvbG9jYXRpb25Q
b3NpdGlvblJlZiBXS0dlb2xvY2F0aW9uUG9zaXRpb25DcmVhdGUoZG91YmxlIHRpbWVzdGFtcCwg
ZG91YmxlIGxhCiAKIFdLR2VvbG9jYXRpb25Qb3NpdGlvblJlZiBXS0dlb2xvY2F0aW9uUG9zaXRp
b25DcmVhdGVfYihkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25n
aXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3VibGUgYWx0
aXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1
cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3ZpZGVz
U3BlZWQsIGRvdWJsZSBzcGVlZCkKIHsKLSAgICBSZWZQdHI8V2ViR2VvbG9jYXRpb25Qb3NpdGlv
bj4gcG9zaXRpb24gPSBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUodGltZXN0YW1wLCBs
YXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSwgcHJvdmlkZXNBbHRpdHVkZSwgYWx0aXR1ZGUs
IHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwgYWx0aXR1ZGVBY2N1cmFjeSwgcHJvdmlkZXNIZWFk
aW5nLCBoZWFkaW5nLCBwcm92aWRlc1NwZWVkLCBzcGVlZCk7Ci0gICAgcmV0dXJuIHRvQVBJKHBv
c2l0aW9uLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgIGF1dG8gcG9zaXRpb24gPSBXZWJHZW9s
b2NhdGlvblBvc2l0aW9uOjpjcmVhdGUodGltZXN0YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBh
Y2N1cmFjeSwgcHJvdmlkZXNBbHRpdHVkZSwgYWx0aXR1ZGUsIHByb3ZpZGVzQWx0aXR1ZGVBY2N1
cmFjeSwgYWx0aXR1ZGVBY2N1cmFjeSwgcHJvdmlkZXNIZWFkaW5nLCBoZWFkaW5nLCBwcm92aWRl
c1NwZWVkLCBzcGVlZCk7CisgICAgcmV0dXJuIHRvQVBJKHBvc2l0aW9uLmxlYWtSZWYoKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tHcmFtbWFyRGV0
YWlsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0dyYW1tYXJEZXRhaWwu
Y3BwCmluZGV4IDA2NWY5OWJhNzUwYTlhZDk4NTQzYmJkYWI0NGJiZWY1N2E4Yjc0MDcuLmFmZDk4
OTVkZGUzZGY0ZTNkNjE3ODcyNDdhNDNiNjFhOGU5ZjdlY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0dyYW1tYXJEZXRhaWwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0dyYW1tYXJEZXRhaWwuY3BwCkBAIC00MCw4ICs0MCw4
IEBAIFdLVHlwZUlEIFdLR3JhbW1hckRldGFpbEdldFR5cGVJRCgpCiAKIFdLR3JhbW1hckRldGFp
bFJlZiBXS0dyYW1tYXJEZXRhaWxDcmVhdGUoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoLCBXS0Fy
cmF5UmVmIGd1ZXNzZXMsIFdLU3RyaW5nUmVmIHVzZXJEZXNjcmlwdGlvbikKIHsKLSAgICBSZWZQ
dHI8V2ViR3JhbW1hckRldGFpbD4gZGV0YWlsID0gV2ViR3JhbW1hckRldGFpbDo6Y3JlYXRlKGxv
Y2F0aW9uLCBsZW5ndGgsIHRvSW1wbChndWVzc2VzKSwgdG9XVEZTdHJpbmcodXNlckRlc2NyaXB0
aW9uKSk7Ci0gICAgcmV0dXJuIHRvQVBJKGRldGFpbC5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAg
ICBhdXRvIGRldGFpbCA9IFdlYkdyYW1tYXJEZXRhaWw6OmNyZWF0ZShsb2NhdGlvbiwgbGVuZ3Ro
LCB0b0ltcGwoZ3Vlc3NlcyksIHRvV1RGU3RyaW5nKHVzZXJEZXNjcmlwdGlvbikpOworICAgIHJl
dHVybiB0b0FQSShkZXRhaWwubGVha1JlZigpKTsKIH0KIAogaW50IFdLR3JhbW1hckRldGFpbEdl
dExvY2F0aW9uKFdLR3JhbW1hckRldGFpbFJlZiBncmFtbWFyRGV0YWlsUmVmKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCA4ZTMwMzNlMzA5ZWQ0MjU4YzJl
NzQ2NWE4ZjYzYzQ2YmI2NDI5YmI1Li4xMGQwODgyMzQ0NGYyMWZhOGE1NDQ3ODRiM2Y2MmExMzJm
NTNkMGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAt
NDM5LDcgKzQzOSw3IEBAIFdLVHlwZVJlZiBXS1BhZ2VDb3B5U2Vzc2lvblN0YXRlKFdLUGFnZVJl
ZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VTZXNzaW9uCiAgICAgfSk7CiAKICAgICBp
ZiAoc2hvdWxkUmV0dXJuRGF0YSkKLSAgICAgICAgcmV0dXJuIHRvQVBJKGVuY29kZUxlZ2FjeVNl
c3Npb25TdGF0ZShzZXNzaW9uU3RhdGUpLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgICAgICBy
ZXR1cm4gdG9BUEkoZW5jb2RlTGVnYWN5U2Vzc2lvblN0YXRlKHNlc3Npb25TdGF0ZSkubGVha1Jl
ZigpKTsKIAogICAgIHJldHVybiB0b0FQSSgmQVBJOjpTZXNzaW9uU3RhdGU6OmNyZWF0ZShXVEZN
b3ZlKHNlc3Npb25TdGF0ZSkpLmxlYWtSZWYoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcAppbmRleCAzY2M2MDk1NGQ4Y2RmOTlhMmE4NzA5
YTRlMmQ3ZTFlZjViNzcxZWNkLi40ZTIxNzcxOGE1NjRhOWMxMmU1ZjQ1OTJhNGU0Y2E5MjE4N2Vl
YmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3Jv
dXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5j
cHAKQEAgLTQxLDggKzQxLDggQEAgV0tUeXBlSUQgV0tQYWdlR3JvdXBHZXRUeXBlSUQoKQogCiBX
S1BhZ2VHcm91cFJlZiBXS1BhZ2VHcm91cENyZWF0ZVdpdGhJZGVudGlmaWVyKFdLU3RyaW5nUmVm
IGlkZW50aWZpZXIpCiB7Ci0gICAgUmVmUHRyPFdlYlBhZ2VHcm91cD4gcGFnZUdyb3VwID0gV2Vi
UGFnZUdyb3VwOjpjcmVhdGUodG9XVEZTdHJpbmcoaWRlbnRpZmllcikpOwotICAgIHJldHVybiB0
b0FQSShwYWdlR3JvdXAucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgYXV0byBwYWdlR3JvdXAg
PSBXZWJQYWdlR3JvdXA6OmNyZWF0ZSh0b1dURlN0cmluZyhpZGVudGlmaWVyKSk7CisgICAgcmV0
dXJuIHRvQVBJKHBhZ2VHcm91cC5sZWFrUmVmKCkpOwogfQogCiBXS1N0cmluZ1JlZiBXS1BhZ2VH
cm91cENvcHlJZGVudGlmaWVyKFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAppbmRleCA2MDUz
MjRkNTZlNTIzYTZlYjEwNjFjZWUzZmZiMmFjMzJlZmI0NGNjLi5lOWQwZjE0NTg4OTViY2NmNTgy
ZTRlMDFlNzhlOTU1NjdjNDllZGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCkBAIC00NiwyMCArNDYsMjAgQEAgV0tUeXBlSUQgV0tQ
cmVmZXJlbmNlc0dldFR5cGVJRCgpCiAKIFdLUHJlZmVyZW5jZXNSZWYgV0tQcmVmZXJlbmNlc0Ny
ZWF0ZSgpCiB7Ci0gICAgUmVmUHRyPFdlYlByZWZlcmVuY2VzPiBwcmVmZXJlbmNlcyA9IFdlYlBy
ZWZlcmVuY2VzOjpjcmVhdGVXaXRoTGVnYWN5RGVmYXVsdHMoU3RyaW5nKCksICJXZWJLaXQyLiIs
ICJXZWJLaXQyLiIpOwotICAgIHJldHVybiB0b0FQSShwcmVmZXJlbmNlcy5yZWxlYXNlKCkubGVh
a1JlZigpKTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZVdp
dGhMZWdhY3lEZWZhdWx0cyhTdHJpbmcoKSwgIldlYktpdDIuIiwgIldlYktpdDIuIik7CisgICAg
cmV0dXJuIHRvQVBJKHByZWZlcmVuY2VzLmxlYWtSZWYoKSk7CiB9CiAKIFdLUHJlZmVyZW5jZXNS
ZWYgV0tQcmVmZXJlbmNlc0NyZWF0ZVdpdGhJZGVudGlmaWVyKFdLU3RyaW5nUmVmIGlkZW50aWZp
ZXJSZWYpCiB7Ci0gICAgUmVmUHRyPFdlYlByZWZlcmVuY2VzPiBwcmVmZXJlbmNlcyA9IFdlYlBy
ZWZlcmVuY2VzOjpjcmVhdGVXaXRoTGVnYWN5RGVmYXVsdHModG9XVEZTdHJpbmcoaWRlbnRpZmll
clJlZiksICJXZWJLaXQyLiIsICJXZWJLaXQyLiIpOwotICAgIHJldHVybiB0b0FQSShwcmVmZXJl
bmNlcy5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gV2ViUHJl
ZmVyZW5jZXM6OmNyZWF0ZVdpdGhMZWdhY3lEZWZhdWx0cyh0b1dURlN0cmluZyhpZGVudGlmaWVy
UmVmKSwgIldlYktpdDIuIiwgIldlYktpdDIuIik7CisgICAgcmV0dXJuIHRvQVBJKHByZWZlcmVu
Y2VzLmxlYWtSZWYoKSk7CiB9CiAKIFdLUHJlZmVyZW5jZXNSZWYgV0tQcmVmZXJlbmNlc0NyZWF0
ZUNvcHkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZikKIHsKLSAgICBSZWZQdHI8V2Vi
UHJlZmVyZW5jZXM+IHByZWZlcmVuY2VzID0gdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+Y29weSgp
OwotICAgIHJldHVybiB0b0FQSShwcmVmZXJlbmNlcy5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAg
ICBhdXRvIHByZWZlcmVuY2VzID0gdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+Y29weSgpOworICAg
IHJldHVybiB0b0FQSShwcmVmZXJlbmNlcy5sZWFrUmVmKCkpOwogfQogCiB2b2lkIFdLUHJlZmVy
ZW5jZXNFbmFibGVBbGxFeHBlcmltZW50YWxGZWF0dXJlcyhXS1ByZWZlcmVuY2VzUmVmIHByZWZl
cmVuY2VzUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
U2Vzc2lvblJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tTZXNzaW9u
UmVmLmNwcAppbmRleCBhOTM1NzkwODcyNTQ2ZTE3N2U5MGMxM2U2ZTM1OGQ3MTZmZGM1YTBjLi5m
ZWRjMGU4YTc4OWRlZTU3NmViZWJkNmJmOTYxNzUxNzdjNDU0N2VjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tTZXNzaW9uUmVmLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tTZXNzaW9uUmVmLmNwcApAQCAtMzcsOCArMzcsOCBA
QCBXS1Nlc3Npb25SZWYgV0tTZXNzaW9uQ3JlYXRlKGJvb2wgaXNFcGhlbWVyYWwpCiAgICAgaWYg
KCFpc0VwaGVtZXJhbCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8QVBJ
OjpTZXNzaW9uPiBzZXNzaW9uID0gQVBJOjpTZXNzaW9uOjpjcmVhdGVFcGhlbWVyYWwoKTsKLSAg
ICByZXR1cm4gdG9BUEkoc2Vzc2lvbi5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICBhdXRvIHNl
c3Npb24gPSBBUEk6OlNlc3Npb246OmNyZWF0ZUVwaGVtZXJhbCgpOworICAgIHJldHVybiB0b0FQ
SSgmc2Vzc2lvbi5sZWFrUmVmKCkpOwogfQogCiBXS1R5cGVJRCBXS1Nlc3Npb25HZXRUeXBlSUQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLU2Vzc2lvblN0
YXRlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Nlc3Npb25TdGF0
ZVJlZi5jcHAKaW5kZXggOThlNzE3NTE5ZDU2YTI3NWE1MDQxMTVmY2Q4NmZhZWY0NTVjMGQ2NS4u
YzkzOGY1MTRjYTM4ZTIyNDQwZWNmMmFiMGIyNGU2ZGNhYjFkNTlkYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLU2Vzc2lvblN0YXRlUmVmLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tTZXNzaW9uU3RhdGVSZWYuY3BwCkBAIC00
OCw1ICs0OCw1IEBAIFdLU2Vzc2lvblN0YXRlUmVmIFdLU2Vzc2lvblN0YXRlQ3JlYXRlRnJvbURh
dGEoV0tEYXRhUmVmIGRhdGEpCiAKIFdLRGF0YVJlZiBXS1Nlc3Npb25TdGF0ZUNvcHlEYXRhKFdL
U2Vzc2lvblN0YXRlUmVmIHNlc3Npb25TdGF0ZSkKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b0FQ
SShXZWJLaXQ6OmVuY29kZUxlZ2FjeVNlc3Npb25TdGF0ZShXZWJLaXQ6OnRvSW1wbChzZXNzaW9u
U3RhdGUpLT5zZXNzaW9uU3RhdGUoKSkucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJu
IFdlYktpdDo6dG9BUEkoV2ViS2l0OjplbmNvZGVMZWdhY3lTZXNzaW9uU3RhdGUoV2ViS2l0Ojp0
b0ltcGwoc2Vzc2lvblN0YXRlKS0+c2Vzc2lvblN0YXRlKCkpLmxlYWtSZWYoKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZh
dGVNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFBy
aXZhdGVNYWMubW0KaW5kZXggNGMxOTJiNmQ0YTZlOGM1NzcyZjYwMzA1ZjY2ZWYyMThhYTBjMmIx
ZS4uYTU4OTEwNGIxMmE5OGNkN2Q3ZjYxZGFhOGY5NmY0ZGNkNWY5YzJmNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0
ZU1hYy5tbQpAQCAtNzMsOCArNzMsOCBAQCBXS0RpY3Rpb25hcnlSZWYgV0tDb250ZXh0Q29weVBs
dWdJbkluZm9Gb3JCdW5kbGVJZGVudGlmaWVyKFdLQ29udGV4dFJlZiBjb250ZXh0UgogICAgIGlm
IChwbHVnaW4ucGF0aC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8
QVBJOjpEaWN0aW9uYXJ5PiBkaWN0aW9uYXJ5ID0gY3JlYXRlUGx1Z2luSW5mb3JtYXRpb25EaWN0
aW9uYXJ5KHBsdWdpbik7Ci0gICAgcmV0dXJuIHRvQVBJKGRpY3Rpb25hcnkucmVsZWFzZSgpLmxl
YWtSZWYoKSk7CisgICAgYXV0byBkaWN0aW9uYXJ5ID0gY3JlYXRlUGx1Z2luSW5mb3JtYXRpb25E
aWN0aW9uYXJ5KHBsdWdpbik7CisgICAgcmV0dXJuIHRvQVBJKCZkaWN0aW9uYXJ5LmxlYWtSZWYo
KSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDMwMWNiY2U5NDhkMmIxNGY5MDM5
ZGExNDZkNjJkOTcxODBhYjMxNmMuLjYwMDAwODhiZDQxMzYzZmIyN2QxMzgwYzdkYmUyZmYzM2Fh
MjJjOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCkBAIC02NjEsNyArNjYxLDcgQEAgLSAoV0tOYXZpZ2F0aW9uICopbG9hZFJlcXVlc3Q6
KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKICAgICBpZiAoIW5hdmlnYXRpb24pCiAgICAgICAgIHJl
dHVybiBuaWw7CiAKLSAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ucmVsZWFzZSgpLmxl
YWtSZWYoKSkgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBbd3JhcHBlcigqbmF2aWdhdGlvbi5s
ZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAoV0tOYXZpZ2F0aW9uICopbG9hZEZpbGVV
Ukw6KE5TVVJMICopVVJMIGFsbG93aW5nUmVhZEFjY2Vzc1RvVVJMOihOU1VSTCAqKXJlYWRBY2Nl
c3NVUkwKQEAgLTY3Niw3ICs2NzYsNyBAQCAtIChXS05hdmlnYXRpb24gKilsb2FkRmlsZVVSTDoo
TlNVUkwgKilVUkwgYWxsb3dpbmdSZWFkQWNjZXNzVG9VUkw6KE5TVVJMICopcmVhZAogICAgIGlm
ICghbmF2aWdhdGlvbikKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiBbd3JhcHBl
cigqbmF2aWdhdGlvbi5yZWxlYXNlKCkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CisgICAgcmV0
dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOwogfQogCiAt
IChXS05hdmlnYXRpb24gKilsb2FkSFRNTFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgYmFzZVVS
TDooTlNVUkwgKiliYXNlVVJMCkBAIC02OTIsNyArNjkyLDcgQEAgLSAoV0tOYXZpZ2F0aW9uICop
bG9hZERhdGE6KE5TRGF0YSAqKWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5cGUgY2hh
cmFjdGUKICAgICBpZiAoIW5hdmlnYXRpb24pCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBy
ZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ucmVsZWFzZSgpLmxlYWtSZWYoKSkgYXV0b3JlbGVh
c2VdOworICAgIHJldHVybiBbd3JhcHBlcigqbmF2aWdhdGlvbi5sZWFrUmVmKCkpIGF1dG9yZWxl
YXNlXTsKIH0KIAogLSAoV0tOYXZpZ2F0aW9uICopZ29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW06KFdL
QmFja0ZvcndhcmRMaXN0SXRlbSAqKWl0ZW0KQEAgLTcwMSw3ICs3MDEsNyBAQCAtIChXS05hdmln
YXRpb24gKilnb1RvQmFja0ZvcndhcmRMaXN0SXRlbTooV0tCYWNrRm9yd2FyZExpc3RJdGVtICop
aXRlbQogICAgIGlmICghbmF2aWdhdGlvbikKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJl
dHVybiBbd3JhcHBlcigqbmF2aWdhdGlvbi5yZWxlYXNlKCkubGVha1JlZigpKSBhdXRvcmVsZWFz
ZV07CisgICAgcmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLmxlYWtSZWYoKSkgYXV0b3JlbGVh
c2VdOwogfQogCiAtIChOU1N0cmluZyAqKXRpdGxlCkBAIC03NTgsNyArNzU4LDcgQEAgLSAoV0tO
YXZpZ2F0aW9uICopZ29CYWNrCiAgICAgaWYgKCFuYXZpZ2F0aW9uKQogICAgICAgICByZXR1cm4g
bmlsOwogIAotICAgIHJldHVybiBbd3JhcHBlcigqbmF2aWdhdGlvbi5yZWxlYXNlKCkubGVha1Jl
ZigpKSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLmxlYWtS
ZWYoKSkgYXV0b3JlbGVhc2VdOwogfQogCiAtIChXS05hdmlnYXRpb24gKilnb0ZvcndhcmQKQEAg
LTc2Nyw3ICs3NjcsNyBAQCAtIChXS05hdmlnYXRpb24gKilnb0ZvcndhcmQKICAgICBpZiAoIW5h
dmlnYXRpb24pCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICByZXR1cm4gW3dyYXBwZXIoKm5h
dmlnYXRpb24ucmVsZWFzZSgpLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBb
d3JhcHBlcigqbmF2aWdhdGlvbi5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAoV0tO
YXZpZ2F0aW9uICopcmVsb2FkCkBAIC03NzgsNyArNzc4LDcgQEAgLSAoV0tOYXZpZ2F0aW9uICop
cmVsb2FkCiAgICAgaWYgKCFuYXZpZ2F0aW9uKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAg
cmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLnJlbGVhc2UoKS5sZWFrUmVmKCkpIGF1dG9yZWxl
YXNlXTsKKyAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ubGVha1JlZigpKSBhdXRvcmVs
ZWFzZV07CiB9CiAKIC0gKFdLTmF2aWdhdGlvbiAqKXJlbG9hZEZyb21PcmlnaW4KQEAgLTc4OSw3
ICs3ODksNyBAQCAtIChXS05hdmlnYXRpb24gKilyZWxvYWRGcm9tT3JpZ2luCiAgICAgaWYgKCFu
YXZpZ2F0aW9uKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIFt3cmFwcGVyKCpu
YXZpZ2F0aW9uLnJlbGVhc2UoKS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4g
W3dyYXBwZXIoKm5hdmlnYXRpb24ubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKHZv
aWQpc3RvcExvYWRpbmcKQEAgLTMxNzcsNyArMzE3Nyw3IEBAIC0gKFdLTmF2aWdhdGlvbiAqKV9s
b2FkRGF0YTooTlNEYXRhICopZGF0YSBNSU1FVHlwZTooTlNTdHJpbmcgKilNSU1FVHlwZSBjaGFy
YWN0CiAgICAgaWYgKCFuYXZpZ2F0aW9uKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0
dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLnJlbGVhc2UoKS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNl
XTsKKyAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ubGVha1JlZigpKSBhdXRvcmVsZWFz
ZV07CiB9CiAKIC0gKE5TQXJyYXkgKilfY2VydGlmaWNhdGVDaGFpbgpAQCAtMzI1OCw3ICszMjU4
LDcgQEAgLSAoV0tOYXZpZ2F0aW9uICopX3JlbG9hZFdpdGhvdXRDb250ZW50QmxvY2tlcnMKICAg
ICBpZiAoIW5hdmlnYXRpb24pCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCi0gICAgcmV0dXJu
IFt3cmFwcGVyKCpuYXZpZ2F0aW9uLnJlbGVhc2UoKS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsK
KyAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ubGVha1JlZigpKSBhdXRvcmVsZWFzZV07
CiB9CiAKIC0gKHZvaWQpX2tpbGxXZWJDb250ZW50UHJvY2Vzc0FuZFJlc2V0U3RhdGUKQEAgLTMz
MzksNyArMzMzOSw3IEBAIC0gKE5TRGF0YSAqKV9zZXNzaW9uU3RhdGVEYXRhCiAgICAgV2ViS2l0
OjpTZXNzaW9uU3RhdGUgc2Vzc2lvblN0YXRlID0gX3BhZ2UtPnNlc3Npb25TdGF0ZSgpOwogCiAg
ICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIG5vdCB1c2UgdGhlIGxlZ2FjeSBzZXNzaW9uIHN0YXRl
IGVuY29kZXIuCi0gICAgcmV0dXJuIFt3cmFwcGVyKCpXZWJLaXQ6OmVuY29kZUxlZ2FjeVNlc3Np
b25TdGF0ZShzZXNzaW9uU3RhdGUpLnJlbGVhc2UoKS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsK
KyAgICByZXR1cm4gW3dyYXBwZXIoKldlYktpdDo6ZW5jb2RlTGVnYWN5U2Vzc2lvblN0YXRlKHNl
c3Npb25TdGF0ZSkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKF9XS1Nlc3Npb25T
dGF0ZSAqKV9zZXNzaW9uU3RhdGUKQEAgLTMzNjMsNyArMzM2Myw3IEBAIC0gKFdLTmF2aWdhdGlv
biAqKV9yZXN0b3JlU2Vzc2lvblN0YXRlOihfV0tTZXNzaW9uU3RhdGUgKilzZXNzaW9uU3RhdGUg
YW5kTmF2aWdhCiAgICAgaWYgKCFuYXZpZ2F0aW9uKQogICAgICAgICByZXR1cm4gbmlsOwogCi0g
ICAgcmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLnJlbGVhc2UoKS5sZWFrUmVmKCkpIGF1dG9y
ZWxlYXNlXTsKKyAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ubGVha1JlZigpKSBhdXRv
cmVsZWFzZV07CiB9CiAKIC0gKHZvaWQpX2Nsb3NlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZGF0YWJhc2VfbWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZGF0YWJhc2VfbWFuYWdlci5jcHAKaW5kZXggZGFj
Zjc4ZmE5NDg3MGE3MWJiYTU2MDRkMzNjOWJhYjUyMWU3MmRjMi4uNzZmY2QxOTY3OGY1ZWU2M2E3
NWFiNTIwYmZjYmE5MDJhNTMxMmRkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2RhdGFiYXNlX21hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19kYXRhYmFzZV9tYW5hZ2VyLmNwcApAQCAtNzUsNyArNzUs
NyBAQCBFaW5hX0xpc3QqIEV3a0RhdGFiYXNlTWFuYWdlcjo6Y3JlYXRlT3JpZ2luTGlzdChXS0Fy
cmF5UmVmIG9yaWdpbnMpIGNvbnN0CiAgICAgICAgICAgICBvcmlnaW4gPSBFd2tTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlKHdrT3JpZ2luUmVmKTsKICAgICAgICAgICAgIG1fd3JhcHBlckNhY2hlLnNl
dCh3a09yaWdpblJlZiwgb3JpZ2luKTsKICAgICAgICAgfQotICAgICAgICBvcmlnaW5MaXN0ID0g
ZWluYV9saXN0X2FwcGVuZChvcmlnaW5MaXN0LCBvcmlnaW4ucmVsZWFzZSgpLmxlYWtSZWYoKSk7
CisgICAgICAgIG9yaWdpbkxpc3QgPSBlaW5hX2xpc3RfYXBwZW5kKG9yaWdpbkxpc3QsIG9yaWdp
bi5sZWFrUmVmKCkpOwogICAgIH0KIAogICAgIHJldHVybiBvcmlnaW5MaXN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3N0b3JhZ2VfbWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfc3RvcmFnZV9tYW5hZ2Vy
LmNwcAppbmRleCA1ZDNlZGIwYTI2OTZiMjE1MWNmNjA4NWY3ZDY1NTBlYzQyZjA4NDgzLi4yODFi
OWNlMWMxNjE4NTA5NzA0ZDE3MWMyNTE3ZDMxZWUzMTFhNDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfc3RvcmFnZV9tYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfc3RvcmFnZV9tYW5hZ2VyLmNwcApA
QCAtNTgsNyArNTgsNyBAQCBFaW5hX0xpc3QqIEV3a1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVPcmln
aW5MaXN0KFdLQXJyYXlSZWYgb3JpZ2lucykgY29uc3QKICAgICAgICAgICAgIG9yaWdpbiA9IEV3
a1NlY3VyaXR5T3JpZ2luOjpjcmVhdGUod2tPcmlnaW5SZWYpOwogICAgICAgICAgICAgbV93cmFw
cGVyQ2FjaGUuc2V0KHdrT3JpZ2luUmVmLCBvcmlnaW4pOwogICAgICAgICB9Ci0gICAgICAgIG9y
aWdpbkxpc3QgPSBlaW5hX2xpc3RfYXBwZW5kKG9yaWdpbkxpc3QsIG9yaWdpbi5yZWxlYXNlKCku
bGVha1JlZigpKTsKKyAgICAgICAgb3JpZ2luTGlzdCA9IGVpbmFfbGlzdF9hcHBlbmQob3JpZ2lu
TGlzdCwgb3JpZ2luLmxlYWtSZWYoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG9yaWdpbkxpc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcu
Y3BwCmluZGV4IDk2ZmUxZmMyOWE2NWQyYjZlNTk4MGUwZjEwODUwNDBhNzYwMTRkMzIuLjQxNDgw
NmNlNGMyMjhjZjk3NWU1MGE2ZTFlNTI1ZDVlOGZiODhlNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCkBAIC0xODM3LDcgKzE4
MzcsNyBAQCBXZWJQYWdlUHJveHkqIHdlYmtpdFdlYlZpZXdDcmVhdGVOZXdQYWdlKFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcsIGNvbnN0IFdpbmRvd0ZlYQogICAgIHdlYmtpdFdpbmRvd1Byb3BlcnRp
ZXNVcGRhdGVGcm9tV2ViV2luZG93RmVhdHVyZXMobmV3V2ViVmlldy0+cHJpdi0+d2luZG93UHJv
cGVydGllcy5nZXQoKSwgd2luZG93RmVhdHVyZXMpOwogCiAgICAgUmVmUHRyPFdlYlBhZ2VQcm94
eT4gbmV3UGFnZSA9IGdldFBhZ2UobmV3V2ViVmlldyk7Ci0gICAgcmV0dXJuIG5ld1BhZ2UucmVs
ZWFzZSgpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gbmV3UGFnZS5sZWFrUmVmKCk7CiB9CiAKIHZv
aWQgd2Via2l0V2ViVmlld1JlYWR5VG9TaG93UGFnZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQpA
QCAtMTkyNSw3ICsxOTI1LDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3TW91c2VUYXJnZXRDaGFuZ2Vk
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IFdlYkhpdFRlc3RSZXMKIAogdm9pZCB3ZWJr
aXRXZWJWaWV3UHJpbnRGcmFtZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJGcmFtZVByb3h5
KiBmcmFtZSkKIHsKLSAgICBHUmVmUHRyPFdlYktpdFByaW50T3BlcmF0aW9uPiBwcmludE9wZXJh
dGlvbiA9IGFkb3B0R1JlZih3ZWJraXRfcHJpbnRfb3BlcmF0aW9uX25ldyh3ZWJWaWV3KSk7Cisg
ICAgYXV0byBwcmludE9wZXJhdGlvbiA9IGFkb3B0R1JlZih3ZWJraXRfcHJpbnRfb3BlcmF0aW9u
X25ldyh3ZWJWaWV3KSk7CiAgICAgd2Via2l0UHJpbnRPcGVyYXRpb25TZXRQcmludE1vZGUocHJp
bnRPcGVyYXRpb24uZ2V0KCksIFByaW50SW5mbzo6UHJpbnRNb2RlU3luYyk7CiAgICAgZ2Jvb2xl
YW4gcmV0dXJuVmFsdWU7CiAgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW1BSSU5U
XSwgMCwgcHJpbnRPcGVyYXRpb24uZ2V0KCksICZyZXR1cm5WYWx1ZSk7CkBAIC0zMjA0LDcgKzMy
MDQsNyBAQCBzdGF0aWMgdm9pZCBmaWxlUmVwbGFjZUNvbnRlbnRzQ2FsbGJhY2soR09iamVjdCog
b2JqZWN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZwogCiBzdGF0aWMgdm9pZCBnZXRDb250ZW50
c0FzTUhUTUxEYXRhQ2FsbGJhY2soQVBJOjpEYXRhKiB3a0RhdGEsIEdUYXNrKiB0YXNrUHRyKQog
ewotICAgIEdSZWZQdHI8R1Rhc2s+IHRhc2sgPSBhZG9wdEdSZWYodGFza1B0cik7CisgICAgYXV0
byB0YXNrID0gYWRvcHRHUmVmKHRhc2tQdHIpOwogICAgIGlmIChnX3Rhc2tfcmV0dXJuX2Vycm9y
X2lmX2NhbmNlbGxlZCh0YXNrLmdldCgpKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvU2Vzc2lvblN0YXRlQ29kaW5nLm1tIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1Nlc3Npb25TdGF0ZUNvZGluZy5tbQppbmRl
eCAzZWQ0MTlkY2Q1Mzk3NDExODY0MDhmYmI4MGIwZGQ4NWUxMGI0MDFhLi42MjNiYTQ2MGEyMDhh
YjdkNzM2MTI3Y2VhYTg0NDE0ZmNhMDQ1MDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29jb2EvU2Vzc2lvblN0YXRlQ29kaW5nLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9TZXNzaW9uU3RhdGVDb2RpbmcubW0KQEAgLTM0LDcgKzM0LDcgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiBSZXRhaW5QdHI8TlNEYXRhPiBlbmNvZGVTZXNzaW9uU3RhdGUo
Y29uc3QgU2Vzc2lvblN0YXRlJiBzZXNzaW9uU3RhdGUpCiB7CiAjaWYgV0tfQVBJX0VOQUJMRUQK
LSAgICByZXR1cm4gW3dyYXBwZXIoKldlYktpdDo6ZW5jb2RlTGVnYWN5U2Vzc2lvblN0YXRlKHNl
c3Npb25TdGF0ZSkucmVsZWFzZSgpLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOworICAgIHJldHVy
biBbd3JhcHBlcigqV2ViS2l0OjplbmNvZGVMZWdhY3lTZXNzaW9uU3RhdGUoc2Vzc2lvblN0YXRl
KS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKICNlbHNlCiAgICAgcmV0dXJuIG51bGxwdHI7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJh
Y2suaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2suaAppbmRleCAx
ZDIwNTM5YTE4NzM4OWQxMmYwMDEyZDcwNjk3MmI2N2EwZGFkMDY5Li4xYjY3ZTkzODQ2Nzk3OWQx
MjljYzdmYzJmYWJjZDVkZmUwN2ZlNDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dl
bmVyaWNDYWxsYmFjay5oCkBAIC0yMDAsMTEgKzIwMCwxMSBAQCBwdWJsaWM6CiAgICAgdGVtcGxh
dGU8Y2xhc3MgVD4KICAgICBSZWZQdHI8VD4gdGFrZSh1aW50NjRfdCBjYWxsYmFja0lEKQogICAg
IHsKLSAgICAgICAgUmVmUHRyPENhbGxiYWNrQmFzZT4gYmFzZSA9IG1fbWFwLnRha2UoY2FsbGJh
Y2tJRCk7CisgICAgICAgIGF1dG8gYmFzZSA9IG1fbWFwLnRha2UoY2FsbGJhY2tJRCk7CiAgICAg
ICAgIGlmICghYmFzZSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihiYXNlLnJlbGVhc2UoKS5sZWFrUmVmKCktPmFzPFQ+KCkpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoYmFzZS5sZWFrUmVmKCktPmFzPFQ+KCkpOwogICAgIH0KIAogICAg
IHZvaWQgaW52YWxpZGF0ZShDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDIwNWEwZjA2YzllM2M0ZWU5ZjZkNWE4
MGEwZjFkMjNlNTM3M2Q2NjIuLjBjZjcwNDUxMTgwYTVjY2FjYzliYWYxY2FkYWIxYjQxYjMzYWRm
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKQEAgLTQ3LDkg
KzQ3LDkgQEAgdm9pZCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojpp
bnZhbGlkYXRlUmVxdWVzdHMoKQogCiBQYXNzUmVmUHRyPEdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RQcm94eT4gR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Y3Jl
YXRlUmVxdWVzdCh1aW50NjRfdCBnZW9sb2NhdGlvbklEKQogewotICAgIFJlZlB0cjxHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHk+IHJlcXVlc3QgPSBHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0UHJveHk6OmNyZWF0ZSh0aGlzLCBnZW9sb2NhdGlvbklEKTsKLSAgICBtX3BlbmRp
bmdSZXF1ZXN0cy5hZGQoZ2VvbG9jYXRpb25JRCwgcmVxdWVzdC5nZXQoKSk7Ci0gICAgcmV0dXJu
IHJlcXVlc3QucmVsZWFzZSgpOworICAgIGF1dG8gcmVxdWVzdCA9IEdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RQcm94eTo6Y3JlYXRlKHRoaXMsIGdlb2xvY2F0aW9uSUQpOworICAgIG1fcGVu
ZGluZ1JlcXVlc3RzLmFkZChnZW9sb2NhdGlvbklELCByZXF1ZXN0LnB0cigpKTsKKyAgICByZXR1
cm4gV1RGTW92ZShyZXF1ZXN0KTsKIH0KIAogdm9pZCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByb3h5OjpkaWRSZWNlaXZlR2VvbG9jYXRpb25QZXJtaXNzaW9uRGVjaXNpb24o
dWludDY0X3QgZ2VvbG9jYXRpb25JRCwgYm9vbCBhbGxvd2VkKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRl
eCBiNDI2NjBmZTYxYmU0NWQ1MDE2ZGVkZjZlZjM3MzQ0NTRiNzQ3M2U4Li5kN2QzNTA5OTg3YmM0
ZmQ2NzI4YTg3MzczZTJiYzYxMTNiNjllYTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMjQ5LDgg
KzI0OSw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwgdWluCiAgICAgV2ViUGFnZVByb3h5KiBwYWdl
ID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhw
YWdlKTsKIAotICAgIFJlZlB0cjxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5PiBhdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk6OmNyZWF0ZShj
b3JlQ2hhbGxlbmdlLCBjaGFsbGVuZ2VJRCwgY29ubmVjdGlvbigpKTsKLSAgICBwYWdlLT5kaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eShmcmFtZUlELCBhdXRoZW50aWNhdGlv
bkNoYWxsZW5nZS5yZWxlYXNlKCkpOworICAgIGF1dG8gYXV0aGVudGljYXRpb25DaGFsbGVuZ2Ug
PSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5OjpjcmVhdGUoY29yZUNoYWxsZW5nZSwgY2hh
bGxlbmdlSUQsIGNvbm5lY3Rpb24oKSk7CisgICAgcGFnZS0+ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlUHJveHkoZnJhbWVJRCwgV1RGTW92ZShhdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSkpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZEZldGNoV2Vic2l0ZURhdGEo
dWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgV2Vic2l0ZURhdGEmIHdlYnNpdGVEYXRhKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHkuY3BwCmluZGV4IDBiMmE2MzI5NzhkYjdjYjRlM2FjNWU4MTg0MzE4OTJjYzE2OTU0ZTQu
LjgxOGE1MjU0MTYwN2EzY2U5YTIzZGM4NzhmMThiZmExMzdjMGRhZTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5j
cHAKQEAgLTQ4LDkgKzQ4LDkgQEAgdm9pZCBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eTo6aW52YWxpZGF0ZVJlcXVlc3RzKCkKIAogUGFzc1JlZlB0cjxOb3RpZmljYXRp
b25QZXJtaXNzaW9uUmVxdWVzdD4gTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHk6OmNyZWF0ZVJlcXVlc3QodWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCiB7Ci0gICAgUmVm
UHRyPE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0PiByZXF1ZXN0ID0gTm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZSh0aGlzLCBub3RpZmljYXRpb25JRCk7Ci0gICAgbV9w
ZW5kaW5nUmVxdWVzdHMuYWRkKG5vdGlmaWNhdGlvbklELCByZXF1ZXN0LmdldCgpKTsKLSAgICBy
ZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CisgICAgYXV0byByZXF1ZXN0ID0gTm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZSh0aGlzLCBub3RpZmljYXRpb25JRCk7CisgICAgbV9w
ZW5kaW5nUmVxdWVzdHMuYWRkKG5vdGlmaWNhdGlvbklELCByZXF1ZXN0LnB0cigpKTsKKyAgICBy
ZXR1cm4gV1RGTW92ZShyZXF1ZXN0KTsKIH0KIAogdm9pZCBOb3RpZmljYXRpb25QZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZU5vdGlmaWNhdGlvblBlcm1pc3Npb25EZWNp
c2lvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCwgYm9vbCBhbGxvdykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmNw
cAppbmRleCBiZDAwYmRjODM3NDFmYTZjYmYxMGQyNDFmODMzNTgwZGFiYTE1YjQ1Li5mZmEwYTdl
ODYyNzlmMTU1Yzk0ZjY0ZTc2ZWZkM2UxZWQxZWZiYmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuY3BwCkBA
IC0xMjUsMTAgKzEyNSwxMCBAQCBQbHVnaW5Qcm9jZXNzUHJveHkqIFBsdWdpblByb2Nlc3NNYW5h
Z2VyOjpnZXRPckNyZWF0ZVBsdWdpblByb2Nlc3ModWludDY0X3QgcGx1ZwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV9wbHVnaW5Qcm9jZXNzVG9rZW5zLnNpemUoKTsgKytpKSB7CiAgICAg
ICAgIGF1dG8mIGF0dHJpYnV0ZXNBbmRUb2tlbiA9IG1fcGx1Z2luUHJvY2Vzc1Rva2Vuc1tpXTsK
ICAgICAgICAgaWYgKGF0dHJpYnV0ZXNBbmRUb2tlbi5zZWNvbmQgPT0gcGx1Z2luUHJvY2Vzc1Rv
a2VuKSB7Ci0gICAgICAgICAgICBSZWZQdHI8UGx1Z2luUHJvY2Vzc1Byb3h5PiBwbHVnaW5Qcm9j
ZXNzID0gUGx1Z2luUHJvY2Vzc1Byb3h5OjpjcmVhdGUodGhpcywgYXR0cmlidXRlc0FuZFRva2Vu
LmZpcnN0LCBhdHRyaWJ1dGVzQW5kVG9rZW4uc2Vjb25kKTsKLSAgICAgICAgICAgIFBsdWdpblBy
b2Nlc3NQcm94eSogcGx1Z2luUHJvY2Vzc1B0ciA9IHBsdWdpblByb2Nlc3MuZ2V0KCk7CisgICAg
ICAgICAgICBhdXRvIHBsdWdpblByb2Nlc3MgPSBQbHVnaW5Qcm9jZXNzUHJveHk6OmNyZWF0ZSh0
aGlzLCBhdHRyaWJ1dGVzQW5kVG9rZW4uZmlyc3QsIGF0dHJpYnV0ZXNBbmRUb2tlbi5zZWNvbmQp
OworICAgICAgICAgICAgUGx1Z2luUHJvY2Vzc1Byb3h5KiBwbHVnaW5Qcm9jZXNzUHRyID0gcGx1
Z2luUHJvY2Vzcy5wdHIoKTsKIAotICAgICAgICAgICAgbV9wbHVnaW5Qcm9jZXNzZXMuYXBwZW5k
KHBsdWdpblByb2Nlc3MucmVsZWFzZSgpKTsKKyAgICAgICAgICAgIG1fcGx1Z2luUHJvY2Vzc2Vz
LmFwcGVuZChXVEZNb3ZlKHBsdWdpblByb2Nlc3MpKTsKICAgICAgICAgICAgIHJldHVybiBwbHVn
aW5Qcm9jZXNzUHRyOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IGI0Y2E1MzQ5OTY4MDc5
ZWM0MmM3NDgyODQ4NjZkZDdiZTM3ODY1YWMuLjE1Yzk4ZWFjOWJlYTA4NzIwZTY3YjM4YjVmNWQ2
ZjNkMmE5M2VkOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdl
L1N0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFn
ZS9TdG9yYWdlTWFuYWdlci5jcHAKQEAgLTIxOSw5ICsyMTksOSBAQCB2b2lkIFN0b3JhZ2VNYW5h
Z2VyOjpTdG9yYWdlQXJlYTo6c2V0SXRlbShJUEM6OkNvbm5lY3Rpb24qIHNvdXJjZUNvbm5lY3Rp
b24sIHVpbgogCiAgICAgU3RyaW5nIG9sZFZhbHVlOwogCi0gICAgUmVmUHRyPFN0b3JhZ2VNYXA+
IG5ld1N0b3JhZ2VNYXAgPSBtX3N0b3JhZ2VNYXAtPnNldEl0ZW0oa2V5LCB2YWx1ZSwgb2xkVmFs
dWUsIHF1b3RhRXhjZXB0aW9uKTsKKyAgICBhdXRvIG5ld1N0b3JhZ2VNYXAgPSBtX3N0b3JhZ2VN
YXAtPnNldEl0ZW0oa2V5LCB2YWx1ZSwgb2xkVmFsdWUsIHF1b3RhRXhjZXB0aW9uKTsKICAgICBp
ZiAobmV3U3RvcmFnZU1hcCkKLSAgICAgICAgbV9zdG9yYWdlTWFwID0gbmV3U3RvcmFnZU1hcC5y
ZWxlYXNlKCk7CisgICAgICAgIG1fc3RvcmFnZU1hcCA9IFdURk1vdmUobmV3U3RvcmFnZU1hcCk7
CiAKICAgICBpZiAocXVvdGFFeGNlcHRpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTIzNyw5ICsy
MzcsOSBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6cmVtb3ZlSXRlbShJUEM6
OkNvbm5lY3Rpb24qIHNvdXJjZUNvbm5lY3Rpb24sCiAgICAgb3BlbkRhdGFiYXNlQW5kSW1wb3J0
SXRlbXNJZk5lZWRlZCgpOwogCiAgICAgU3RyaW5nIG9sZFZhbHVlOwotICAgIFJlZlB0cjxTdG9y
YWdlTWFwPiBuZXdTdG9yYWdlTWFwID0gbV9zdG9yYWdlTWFwLT5yZW1vdmVJdGVtKGtleSwgb2xk
VmFsdWUpOworICAgIGF1dG8gbmV3U3RvcmFnZU1hcCA9IG1fc3RvcmFnZU1hcC0+cmVtb3ZlSXRl
bShrZXksIG9sZFZhbHVlKTsKICAgICBpZiAobmV3U3RvcmFnZU1hcCkKLSAgICAgICAgbV9zdG9y
YWdlTWFwID0gbmV3U3RvcmFnZU1hcC5yZWxlYXNlKCk7CisgICAgICAgIG1fc3RvcmFnZU1hcCA9
IFdURk1vdmUobmV3U3RvcmFnZU1hcCk7CiAKICAgICBpZiAob2xkVmFsdWUuaXNOdWxsKCkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTY4NiwxMCArNjg2LDEwIEBAIHZvaWQgU3RvcmFnZU1hbmFnZXI6
OmNyZWF0ZUxvY2FsU3RvcmFnZU1hcChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2
NF90CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGEgbWVzc2FnZSBjaGVjay4KICAgICBB
U1NFUlQobG9jYWxTdG9yYWdlTmFtZXNwYWNlKTsKIAotICAgIFJlZlB0cjxTdG9yYWdlQXJlYT4g
c3RvcmFnZUFyZWEgPSBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmdldE9yQ3JlYXRlU3RvcmFnZUFy
ZWEoc2VjdXJpdHlPcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCkpOworICAgIGF1dG8gc3RvcmFn
ZUFyZWEgPSBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEoc2Vj
dXJpdHlPcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCkpOwogICAgIHN0b3JhZ2VBcmVhLT5hZGRM
aXN0ZW5lcihjb25uZWN0aW9uLCBzdG9yYWdlTWFwSUQpOwogCi0gICAgcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSA9IHN0b3JhZ2VBcmVhLnJlbGVhc2UoKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlID0gV1RGTW92ZShzdG9yYWdlQXJlYSk7CiB9CiAKIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmNy
ZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU1hcChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBjb25z
dCBTZWN1cml0eU9yaWdpbkRhdGEmIHRvcExldmVsT3JpZ2luRGF0YSwgY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbkRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCmluZGV4IDI3MzQzMTIzMmIyY2I1NDI4MzdmMjIx
YzZmMWVkZjVhM2Y5MjgwNzAuLjBmNzEzYTlkMDQyODRlNmNkZmQ1ZWUwMTY2MGUzNzVjOWE3OGRm
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExp
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3Qu
Y3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZExpc3Q6OmFkZEl0ZW0o
V2ViQmFja0ZvcndhcmRMaXN0SXRlbSogbmV3SXRlbSkKICAgICAgICAgcmVtb3ZlZEl0ZW1zLnJl
c2VydmVDYXBhY2l0eShtX2VudHJpZXMuc2l6ZSgpIC0gdGFyZ2V0U2l6ZSk7CiAgICAgICAgIHdo
aWxlIChtX2VudHJpZXMuc2l6ZSgpID4gdGFyZ2V0U2l6ZSkgewogICAgICAgICAgICAgZGlkUmVt
b3ZlSXRlbSgqbV9lbnRyaWVzLmxhc3QoKSk7Ci0gICAgICAgICAgICByZW1vdmVkSXRlbXMuYXBw
ZW5kKG1fZW50cmllcy5sYXN0KCkucmVsZWFzZSgpKTsKKyAgICAgICAgICAgIHJlbW92ZWRJdGVt
cy5hcHBlbmQoV1RGTW92ZShtX2VudHJpZXMubGFzdCgpKSk7CiAgICAgICAgICAgICBtX2VudHJp
ZXMucmVtb3ZlTGFzdCgpOwogICAgICAgICB9CiAKQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIFdl
YkJhY2tGb3J3YXJkTGlzdDo6YWRkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBuZXdJdGVt
KQogICAgICAgICAvLyAob3IgZXZlbiBpZiB3ZSBhcmUsIGlmIHdlIG9ubHkgd2FudCAxIGVudHJ5
KS4KICAgICAgICAgaWYgKG1fZW50cmllcy5zaXplKCkgPT0gbV9jYXBhY2l0eSAmJiAobV9jdXJy
ZW50SW5kZXggfHwgbV9jYXBhY2l0eSA9PSAxKSkgewogICAgICAgICAgICAgZGlkUmVtb3ZlSXRl
bSgqbV9lbnRyaWVzWzBdKTsKLSAgICAgICAgICAgIHJlbW92ZWRJdGVtcy5hcHBlbmQobV9lbnRy
aWVzWzBdLnJlbGVhc2UoKSk7CisgICAgICAgICAgICByZW1vdmVkSXRlbXMuYXBwZW5kKFdURk1v
dmUobV9lbnRyaWVzWzBdKSk7CiAgICAgICAgICAgICBtX2VudHJpZXMucmVtb3ZlKDApOwogCiAg
ICAgICAgICAgICBpZiAobV9lbnRyaWVzLmlzRW1wdHkoKSkKQEAgLTEyNyw3ICsxMjcsNyBAQCB2
b2lkIFdlYkJhY2tGb3J3YXJkTGlzdDo6YWRkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBu
ZXdJdGVtKQogICAgICAgICAgICAgaWYgKCFtX2VudHJpZXNbaV0pCiAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgICAgICBkaWRSZW1vdmVJdGVtKCptX2VudHJpZXNbaV0pOwotICAg
ICAgICAgICAgcmVtb3ZlZEl0ZW1zLmFwcGVuZChtX2VudHJpZXNbaV0ucmVsZWFzZSgpKTsKKyAg
ICAgICAgICAgIHJlbW92ZWRJdGVtcy5hcHBlbmQoV1RGTW92ZShtX2VudHJpZXNbaV0pKTsKICAg
ICAgICAgfQogICAgICAgICBtX2VudHJpZXMuY2xlYXIoKTsKICAgICB9CkBAIC0zNTcsNyArMzU3
LDcgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZExpc3Q6OmNsZWFyKCkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKIAogICAgICAgICAgICAgZGlkUmVtb3ZlSXRlbSgqbV9lbnRyaWVzW2ldKTsKLSAg
ICAgICAgICAgIHJlbW92ZWRJdGVtcy5hcHBlbmQobV9lbnRyaWVzW2ldLnJlbGVhc2UoKSk7Cisg
ICAgICAgICAgICByZW1vdmVkSXRlbXMuYXBwZW5kKFdURk1vdmUobV9lbnRyaWVzW2ldKSk7CiAg
ICAgICAgIH0KIAogICAgICAgICBtX2VudHJpZXMuY2xlYXIoKTsKQEAgLTM3NiwxNCArMzc2LDE0
IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0OjpjbGVhcigpCiAgICAgcmVtb3ZlZEl0ZW1zLnJl
c2VydmVDYXBhY2l0eShzaXplIC0gMSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXpl
OyArK2kpIHsKICAgICAgICAgaWYgKGkgIT0gbV9jdXJyZW50SW5kZXggJiYgbV9oYXNDdXJyZW50
SW5kZXggJiYgbV9lbnRyaWVzW2ldKQotICAgICAgICAgICAgcmVtb3ZlZEl0ZW1zLmFwcGVuZCht
X2VudHJpZXNbaV0ucmVsZWFzZSgpKTsKKyAgICAgICAgICAgIHJlbW92ZWRJdGVtcy5hcHBlbmQo
V1RGTW92ZShtX2VudHJpZXNbaV0pKTsKICAgICB9CiAKICAgICBtX2N1cnJlbnRJbmRleCA9IDA7
CiAKICAgICBpZiAoY3VycmVudEl0ZW0pIHsKICAgICAgICAgbV9lbnRyaWVzLnNocmluaygxKTsK
LSAgICAgICAgbV9lbnRyaWVzWzBdID0gY3VycmVudEl0ZW0ucmVsZWFzZSgpOworICAgICAgICBt
X2VudHJpZXNbMF0gPSBXVEZNb3ZlKGN1cnJlbnRJdGVtKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBtX2VudHJpZXMuY2xlYXIoKTsKICAgICAgICAgbV9oYXNDdXJyZW50SW5kZXggPSBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5j
cHAKaW5kZXggMmMzMGQ2NDA0NTMyYzZhNDRmMjJiYWJjZjkwM2NkYmNlMjRkZWRkYy4uYzZmZjkz
NjAzZWRhOWQwODFiODU2NDA0Yzk0ODdmMTNkN2VlYjQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKQEAgLTk1LDkgKzk1LDkg
QEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQo
KQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMo
c3RkOjpmdW5jdGlvbjx2b2lkIChBUEk6OkFycmF5KiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNh
bGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgUmVmUHRyPEFycmF5Q2FsbGJhY2s+IGNhbGxiYWNrID0g
QXJyYXlDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOworICAgIGF1
dG8gY2FsbGJhY2sgPSBBcnJheUNhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSk7CiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7
Ci0gICAgbV9hcnJheUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgY2FsbGJhY2sucmVsZWFzZSgp
KTsKKyAgICBtX2FycmF5Q2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CiAKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNo
aW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkdldEhvc3RuYW1lc1dp
dGhDb29raWVzKGNhbGxiYWNrSUQpKTsKIH0KQEAgLTE2NywxMCArMTY3LDEwIEBAIHZvaWQgV2Vi
Q29va2llTWFuYWdlclByb3h5OjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kgcG9sCiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIVFRQQ29v
a2llQWNjZXB0UG9saWN5KHN0ZDo6ZnVuY3Rpb248dm9pZCAoSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgUmVmUHRy
PEhUVFBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFjaz4gY2FsbGJhY2sgPSBIVFRQQ29va2llQWNj
ZXB0UG9saWN5Q2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKKyAg
ICBhdXRvIGNhbGxiYWNrID0gSFRUUENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrOjpjcmVhdGUo
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiAKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0g
Y2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKLSAgICBtX2h0dHBDb29raWVBY2NlcHRQb2xpY3lDYWxs
YmFja3Muc2V0KGNhbGxiYWNrSUQsIGNhbGxiYWNrLnJlbGVhc2UoKSk7CisgICAgbV9odHRwQ29v
a2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CiAKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNo
aW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkdldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3koY2FsbGJhY2tJRCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAppbmRleCBkNDNkZDE2ZmE0YmQ4Nzg0YjU3N2I4YWMxYTAwOTdkMjI3MDRj
YjU0Li40ZGJhZjY5YjdmZDAzOTdmZjRlN2RmMTViOTQ4OGM1OThiODNjZDBkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNjE2OCwxMSArNjE2OCwxMSBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zdGFsbFZpZXdTdGF0ZUNoYW5nZUNvbXBsZXRpb25IYW5k
bGVyKHZvaWQgKF5jb21wbGV0aW9uSGFuZAogICAgIH0KIAogICAgIGF1dG8gY29waWVkQ29tcGxl
dGlvbkhhbmRsZXIgPSBCbG9ja19jb3B5KGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICBSZWZQdHI8
Vm9pZENhbGxiYWNrPiB2b2lkQ2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShbY29waWVk
Q29tcGxldGlvbkhhbmRsZXJdIChDYWxsYmFja0Jhc2U6OkVycm9yKSB7CisgICAgYXV0byB2b2lk
Q2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShbY29waWVkQ29tcGxldGlvbkhhbmRsZXJd
IChDYWxsYmFja0Jhc2U6OkVycm9yKSB7CiAgICAgICAgIGNvcGllZENvbXBsZXRpb25IYW5kbGVy
KCk7CiAgICAgICAgIEJsb2NrX3JlbGVhc2UoY29waWVkQ29tcGxldGlvbkhhbmRsZXIpOwogICAg
IH0sIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0g
ICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dCh2b2lkQ2FsbGJhY2sucmVs
ZWFzZSgpKTsKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1v
dmUodm9pZENhbGxiYWNrKSk7CiAgICAgbV9uZXh0Vmlld1N0YXRlQ2hhbmdlQ2FsbGJhY2tzLmFw
cGVuZChjYWxsYmFja0lEKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcmVm
ZXJlbmNlcy5jcHAKaW5kZXggNDRiMzYzM2ZjYzFlNjNmZDZkZjg3NjFlMTkwZjEwMDJjODUzZjRm
Yi4uODA5YWE4MzYxOTMzNDg5NjQ2NmQwMDVkZjVmMDNkMzVmYmFmMjVhMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuY3BwCkBAIC00NSwxNCArNDUsMTQgQEAg
UmVmPFdlYlByZWZlcmVuY2VzPiBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllciwgY29uc3QgU3RyaW4KIAogUGFzc1JlZlB0cjxXZWJQcmVmZXJlbmNlcz4gV2Vi
UHJlZmVyZW5jZXM6OmNyZWF0ZVdpdGhMZWdhY3lEZWZhdWx0cyhjb25zdCBTdHJpbmcmIGlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYga2V5UHJlZml4LCBjb25zdCBTdHJpbmcmIGdsb2JhbERlYnVn
S2V5UHJlZml4KQogewotICAgIFJlZlB0cjxXZWJQcmVmZXJlbmNlcz4gcHJlZmVyZW5jZXMgPSBh
ZG9wdFJlZihuZXcgV2ViUHJlZmVyZW5jZXMoaWRlbnRpZmllciwga2V5UHJlZml4LCBnbG9iYWxE
ZWJ1Z0tleVByZWZpeCkpOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6
Y3JlYXRlKGlkZW50aWZpZXIsIGtleVByZWZpeCwgZ2xvYmFsRGVidWdLZXlQcmVmaXgpOwogICAg
IC8vIEZJWE1FOiBUaGUgcmVnaXN0ZXJEZWZhdWx0Li4uVmFsdWVGb3JLZXkgbWFjaGluZXJ5IGlz
IHVubmVjZXNzYXJpbHkgaGVhdnl3ZWlnaHQgYW5kIGNvbXBsaWNhdGVkLgogICAgIC8vIFdlIGNh
biBqdXN0IGNvbXB1dGUgZGlmZmVyZW50IGRlZmF1bHRzIGZvciBtb2Rlcm4gYW5kIGxlZ2FjeSBB
UElzIGluIFdlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaCBtYWNyb3MuCiAgICAgcHJlZmVyZW5j
ZXMtPnJlZ2lzdGVyRGVmYXVsdEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6amF2
YUVuYWJsZWRLZXkoKSwgdHJ1ZSk7CiAgICAgcHJlZmVyZW5jZXMtPnJlZ2lzdGVyRGVmYXVsdEJv
b2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6amF2YUVuYWJsZWRGb3JMb2NhbEZpbGVz
S2V5KCksIHRydWUpOwogICAgIHByZWZlcmVuY2VzLT5yZWdpc3RlckRlZmF1bHRCb29sVmFsdWVG
b3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnBsdWdpbnNFbmFibGVkS2V5KCksIHRydWUpOwogICAg
IHByZWZlcmVuY2VzLT5yZWdpc3RlckRlZmF1bHRVSW50MzJWYWx1ZUZvcktleShXZWJQcmVmZXJl
bmNlc0tleTo6c3RvcmFnZUJsb2NraW5nUG9saWN5S2V5KCksIFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luOjpBbGxvd0FsbFN0b3JhZ2UpOwotICAgIHJldHVybiBwcmVmZXJlbmNlcy5yZWxlYXNlKCk7
CisgICAgcmV0dXJuIFdURk1vdmUocHJlZmVyZW5jZXMpOwogfQogCiBXZWJQcmVmZXJlbmNlczo6
V2ViUHJlZmVyZW5jZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGtl
eVByZWZpeCwgY29uc3QgU3RyaW5nJiBnbG9iYWxEZWJ1Z0tleVByZWZpeCkKQEAgLTc4LDcgKzc4
LDcgQEAgV2ViUHJlZmVyZW5jZXM6On5XZWJQcmVmZXJlbmNlcygpCiAKIFBhc3NSZWZQdHI8V2Vi
UHJlZmVyZW5jZXM+IFdlYlByZWZlcmVuY2VzOjpjb3B5KCkgY29uc3QKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFdlYlByZWZlcmVuY2VzKCp0aGlzKSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgV2ViUHJlZmVyZW5jZXMoKnRoaXMpKTsKIH0KIAogdm9pZCBXZWJQcmVmZXJlbmNlczo6
YWRkUGFnZShXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDhjNjIwNTM2NWQ4Y2RmMGQyZTEwMDk0ZTg0
YjYxNDM2YTU3ZDJiMDkuLmE3ZTAzNDZmMDNkOWYxODkwMTRhNmU5ZDQ1Yzk4MGJlMDlkMmUwMjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMjM4
LDcgKzIzOCw3IEBAIFdlYlByb2Nlc3NQb29sOjp+V2ViUHJvY2Vzc1Bvb2woKQogCiAgICAgbV9p
Y29uRGF0YWJhc2UtPmludmFsaWRhdGUoKTsKICAgICBtX2ljb25EYXRhYmFzZS0+Y2xlYXJQcm9j
ZXNzUG9vbCgpOwotICAgIFdlYkljb25EYXRhYmFzZSogcmF3SWNvbkRhdGFiYXNlID0gbV9pY29u
RGF0YWJhc2UucmVsZWFzZSgpLmxlYWtSZWYoKTsKKyAgICBXZWJJY29uRGF0YWJhc2UqIHJhd0lj
b25EYXRhYmFzZSA9IG1faWNvbkRhdGFiYXNlLmxlYWtSZWYoKTsKICAgICByYXdJY29uRGF0YWJh
c2UtPmRlcmVmV2hlbkFwcHJvcHJpYXRlKCk7CiAKICAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAo
bV9kaWN0aW9uYXJ5Q2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFs
aWRhdGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld1Nu
YXBzaG90U3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdTbmFwc2hv
dFN0b3JlLm1tCmluZGV4IDNmOGZjZmYxYTQxZTFjZDRlODRlMDhkMmZmY2RjMTU1MGQxZmQ4MmIu
LmQxOTM4NmMwNmM2ZWE5Y2NkMzg2N2Y3YjQ5MzQ1ZmU3ZmQ4YTYzMmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90U3RvcmUubW0KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZS5tbQpAQCAtMTE0LDcg
KzExNCw3IEBAIHZvaWQgVmlld1NuYXBzaG90U3RvcmU6OnJlY29yZFNuYXBzaG90KFdlYlBhZ2VQ
cm94eSYgd2ViUGFnZVByb3h5LCBXZWJCYWNrRm9yd2FyCiAKICAgICB3ZWJQYWdlUHJveHkud2ls
bFJlY29yZE5hdmlnYXRpb25TbmFwc2hvdChpdGVtKTsKIAotICAgIFJlZlB0cjxWaWV3U25hcHNo
b3Q+IHNuYXBzaG90ID0gd2ViUGFnZVByb3h5LnRha2VWaWV3U25hcHNob3QoKTsKKyAgICBhdXRv
IHNuYXBzaG90ID0gd2ViUGFnZVByb3h5LnRha2VWaWV3U25hcHNob3QoKTsKICAgICBpZiAoIXNu
YXBzaG90KQogICAgICAgICByZXR1cm47CiAKQEAgLTEyMiw3ICsxMjIsNyBAQCB2b2lkIFZpZXdT
bmFwc2hvdFN0b3JlOjpyZWNvcmRTbmFwc2hvdChXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwg
V2ViQmFja0ZvcndhcgogICAgIHNuYXBzaG90LT5zZXREZXZpY2VTY2FsZUZhY3Rvcih3ZWJQYWdl
UHJveHkuZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgc25hcHNob3QtPnNldEJhY2tncm91bmRD
b2xvcih3ZWJQYWdlUHJveHkucGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yKCkpOwogCi0gICAg
aXRlbS5zZXRTbmFwc2hvdChzbmFwc2hvdC5yZWxlYXNlKCkpOworICAgIGl0ZW0uc2V0U25hcHNo
b3QoV1RGTW92ZShzbmFwc2hvdCkpOwogfQogCiB2b2lkIFZpZXdTbmFwc2hvdFN0b3JlOjpkaXNj
YXJkU25hcHNob3RJbWFnZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQppbmRleCBmYWExNTQzMDky
NjgzNDFhOTVlZjhhZTM2MjUyN2JlNGU2OGM3NmM2Li5mMmQ3YTkyN2Y2Yzk2MjcxOTBkYjI4ZjQ0
MWEzYzFhOGNiYjAxMzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQpAQCAtMjYzLDcgKzI2Myw3
IEBAIC0gKFBhc3NSZWZQdHI8QVBJOjpIaXRUZXN0UmVzdWx0Pilfd2ViSGl0VGVzdFJlc3VsdAog
ICAgIGVsc2UKICAgICAgICAgaGl0VGVzdFJlc3VsdCA9IF9wYWdlLT5sYXN0TW91c2VNb3ZlSGl0
VGVzdFJlc3VsdCgpOwogCi0gICAgcmV0dXJuIGhpdFRlc3RSZXN1bHQucmVsZWFzZSgpOworICAg
IHJldHVybiBXVEZNb3ZlKGhpdFRlc3RSZXN1bHQpOwogfQogCiAjcHJhZ21hIG1hcmsgSW1tZWRp
YXRlIGFjdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tQ
cmludGluZ1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdW
aWV3Lm1tCmluZGV4IDdiOWQ4ODliMWQ0YTc1Y2M2ZDhkZTdmMjczMGRjYTkyZDVhNzE5YjMuLjNi
MTBjZTc1ZjE1ZWM2YjM5ZjExZTYwYTQ2MWI4NmNmNzg1YWU0NGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbQpAQCAtMzQwLDcgKzM0MCw3IEBA
IC0gKEJPT0wpX2Fza1BhZ2VUb0NvbXB1dGVQYWdlUmVjdHMKICAgICBBU1NFUlQoIV9leHBlY3Rl
ZENvbXB1dGVkUGFnZXNDYWxsYmFjayk7CiAKICAgICBJUENDYWxsYmFja0NvbnRleHQqIGNvbnRl
eHQgPSBuZXcgSVBDQ2FsbGJhY2tDb250ZXh0OwotICAgIFJlZlB0cjxDb21wdXRlZFBhZ2VzQ2Fs
bGJhY2s+IGNhbGxiYWNrID0gQ29tcHV0ZWRQYWdlc0NhbGxiYWNrOjpjcmVhdGUoW2NvbnRleHRd
KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgcGFnZVJlY3RzLCBkb3VibGUgdG90YWxT
Y2FsZUZhY3RvckZvclByaW50aW5nLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAg
ICBhdXRvIGNhbGxiYWNrID0gQ29tcHV0ZWRQYWdlc0NhbGxiYWNrOjpjcmVhdGUoW2NvbnRleHRd
KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgcGFnZVJlY3RzLCBkb3VibGUgdG90YWxT
Y2FsZUZhY3RvckZvclByaW50aW5nLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKICAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPElQQ0NhbGxiYWNrQ29udGV4dD4gY29udGV4dERlbGV0ZXIo
Y29udGV4dCk7CiAgICAgICAgIHBhZ2VEaWRDb21wdXRlUGFnZVJlY3RzKHBhZ2VSZWN0cywgdG90
YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCBjb250ZXh0KTsKICAgICB9KTsKQEAgLTM0OCw3ICsz
NDgsNyBAQCAtIChCT09MKV9hc2tQYWdlVG9Db21wdXRlUGFnZVJlY3RzCiAgICAgY29udGV4dC0+
dmlldyA9IHNlbGY7CiAgICAgY29udGV4dC0+Y2FsbGJhY2tJRCA9IF9leHBlY3RlZENvbXB1dGVk
UGFnZXNDYWxsYmFjazsKIAotICAgIF93ZWJGcmFtZS0+cGFnZSgpLT5jb21wdXRlUGFnZXNGb3JQ
cmludGluZyhfd2ViRnJhbWUuZ2V0KCksIFByaW50SW5mbyhbX3ByaW50T3BlcmF0aW9uIHByaW50
SW5mb10pLCBjYWxsYmFjay5yZWxlYXNlKCkpOworICAgIF93ZWJGcmFtZS0+cGFnZSgpLT5jb21w
dXRlUGFnZXNGb3JQcmludGluZyhfd2ViRnJhbWUuZ2V0KCksIFByaW50SW5mbyhbX3ByaW50T3Bl
cmF0aW9uIHByaW50SW5mb10pLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgcmV0dXJuIFlFUzsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJv
eHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5t
bQppbmRleCA0M2ZhNmYyMDY1ZDBjMTI5ZWRmZjEyYTM3YWUyOTFjY2Q0MmRmMmRkLi45NWQwM2M5
MjQwZWZlNTlkNThhMmVmMGM1MjIxYTI4MGViM2NkY2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMjcxLDggKzI3MSw4IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpyZXBsYWNlU2VsZWN0aW9uV2l0aFBhc3RlYm9hcmREYXRhKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiB0eXBlCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZXREcmFnSW1hZ2UoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVudFBv
c2l0aW9uLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgZHJhZ0ltYWdlSGFuZGxlLCBi
b29sIGlzTGlua0RyYWcpCiB7Ci0gICAgaWYgKFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGRyYWdJ
bWFnZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGRyYWdJbWFnZUhhbmRsZSkpCi0gICAgICAg
IG1fcGFnZUNsaWVudC5zZXREcmFnSW1hZ2UoY2xpZW50UG9zaXRpb24sIGRyYWdJbWFnZS5yZWxl
YXNlKCksIGlzTGlua0RyYWcpOworICAgIGlmIChhdXRvIGRyYWdJbWFnZSA9IFNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlKGRyYWdJbWFnZUhhbmRsZSkpCisgICAgICAgIG1fcGFnZUNsaWVudC5zZXRE
cmFnSW1hZ2UoY2xpZW50UG9zaXRpb24sIFdURk1vdmUoZHJhZ0ltYWdlKSwgaXNMaW5rRHJhZyk7
CiAKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkU3RhcnREcmFnKCks
IG1fcGFnZUlEKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLm1tIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNz
UGx1Z0luRnJhbWUubW0KaW5kZXggZmRhZjY3NThkNmE1ZmQ0MzQ4YzY0ZDc0NDNmZjg0NTk5YzVi
YjEzOC4uMzJkOGRjNzQ4YjUyZjViN2YzZGRmOTUyYjZiNGZiZTcyZjU2MDY5NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tX
ZWJQcm9jZXNzUGx1Z0luRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUubW0KQEAgLTcx
LDggKzcxLDggQEAgLSAoSlNDb250ZXh0ICopanNDb250ZXh0Rm9yV29ybGQ6KFdLV2ViUHJvY2Vz
c1BsdWdJblNjcmlwdFdvcmxkICopd29ybGQKIAogLSAoV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVz
dFJlc3VsdCAqKWhpdFRlc3Q6KENHUG9pbnQpcG9pbnQKIHsKLSAgICBSZWZQdHI8SW5qZWN0ZWRC
dW5kbGVIaXRUZXN0UmVzdWx0PiBoaXRUZXN0UmVzdWx0ID0gX2ZyYW1lLT5oaXRUZXN0KFdlYkNv
cmU6OkludFBvaW50KHBvaW50KSk7Ci0gICAgcmV0dXJuIFt3cmFwcGVyKCpoaXRUZXN0UmVzdWx0
LnJlbGVhc2UoKS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIGhpdFRlc3RSZXN1
bHQgPSBfZnJhbWUtPmhpdFRlc3QoV2ViQ29yZTo6SW50UG9pbnQocG9pbnQpKTsKKyAgICByZXR1
cm4gW3dyYXBwZXIoKmhpdFRlc3RSZXN1bHQubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CiB9CiAK
IC0gKEpTVmFsdWUgKilqc05vZGVGb3JOb2RlSGFuZGxlOihXS1dlYlByb2Nlc3NQbHVnSW5Ob2Rl
SGFuZGxlICopbm9kZUhhbmRsZSBpbldvcmxkOihXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3Js
ZCAqKXdvcmxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0Lm1tIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9j
ZXNzUGx1Z0luSGl0VGVzdFJlc3VsdC5tbQppbmRleCA1MWRlZWE4MTUzOTg2ZWEwMzFhYTAyMTg5
M2FjMjg0NTBjOTRkOTNmLi43ZWE4NmM5MTFlNGQ2NDJlNWZjNjMyNTYyNDNkMjJhNWMxZGEzMmY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1Bs
dWdJbkhpdFRlc3RSZXN1bHQubW0KQEAgLTQ0LDggKzQ0LDggQEAgLSAodm9pZClkZWFsbG9jCiAK
IC0gKFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUgKilub2RlSGFuZGxlCiB7Ci0gICAgUmVm
UHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gbm9kZUhhbmRsZSA9IF9oaXRUZXN0UmVzdWx0
LT5ub2RlSGFuZGxlKCk7Ci0gICAgcmV0dXJuIG5vZGVIYW5kbGUgPyBbd3JhcHBlcigqbm9kZUhh
bmRsZS5yZWxlYXNlKCkubGVha1JlZigpKSBhdXRvcmVsZWFzZV0gOiBuaWw7CisgICAgYXV0byBu
b2RlSGFuZGxlID0gX2hpdFRlc3RSZXN1bHQtPm5vZGVIYW5kbGUoKTsKKyAgICByZXR1cm4gbm9k
ZUhhbmRsZSA/IFt3cmFwcGVyKCpub2RlSGFuZGxlLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdIDog
bmlsOwogfQogCiAjcHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUubW0gYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5Ob2Rl
SGFuZGxlLm1tCmluZGV4IDBiMWRmZGZmZTE1NzdiMjllY2Y2MmMzYjE1MmM4YzE5NzdkMjAzNDcu
LjdiMjg3ZmM3NTRkYzJjYjhkYzE0NGJjYmI3NDFjYTRiYzE2ZjFkNTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJv
Y2Vzc1BsdWdJbk5vZGVIYW5kbGUubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5tbQpA
QCAtNDgsMjAgKzQ4LDIwIEBAICsgKFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUgKilub2Rl
SGFuZGxlV2l0aEpTVmFsdWU6KEpTVmFsdWUgKil2YWx1ZSBpbkNvbnRlCiB7CiAgICAgSlNDb250
ZXh0UmVmIGNvbnRleHRSZWYgPSBbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdOwogICAgIEpT
T2JqZWN0UmVmIG9iamVjdFJlZiA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0UmVmLCBbdmFsdWUg
SlNWYWx1ZVJlZl0sIDApOwotICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+IG5v
ZGVIYW5kbGUgPSBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmdldE9yQ3JlYXRlKGNvbnRleHRS
ZWYsIG9iamVjdFJlZik7CisgICAgYXV0byBub2RlSGFuZGxlID0gSW5qZWN0ZWRCdW5kbGVOb2Rl
SGFuZGxlOjpnZXRPckNyZWF0ZShjb250ZXh0UmVmLCBvYmplY3RSZWYpOwogICAgIGlmICghbm9k
ZUhhbmRsZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiBbd3JhcHBlcigqbm9k
ZUhhbmRsZS5yZWxlYXNlKCkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIFt3
cmFwcGVyKCpub2RlSGFuZGxlLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOwogfQogCiAtIChXS1dl
YlByb2Nlc3NQbHVnSW5GcmFtZSAqKWh0bWxJRnJhbWVFbGVtZW50Q29udGVudEZyYW1lCiB7Ci0g
ICAgUmVmUHRyPFdlYkZyYW1lPiBmcmFtZSA9IF9ub2RlSGFuZGxlLT5odG1sSUZyYW1lRWxlbWVu
dENvbnRlbnRGcmFtZSgpOworICAgIGF1dG8gZnJhbWUgPSBfbm9kZUhhbmRsZS0+aHRtbElGcmFt
ZUVsZW1lbnRDb250ZW50RnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4g
bmlsOwogCi0gICAgcmV0dXJuIFt3cmFwcGVyKCpmcmFtZS5yZWxlYXNlKCkubGVha1JlZigpKSBh
dXRvcmVsZWFzZV07CisgICAgcmV0dXJuIFt3cmFwcGVyKCpmcmFtZS5sZWFrUmVmKCkpIGF1dG9y
ZWxlYXNlXTsKIH0KIAogI2lmIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJ
blNjcmlwdFdvcmxkLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQubW0KaW5kZXggNmMxMDYx
ZGQ4MDM0OTFmNDdlZTkzM2UwYTk3NGQzZDJkY2YzMmVkZi4uMWFlYzBiOTIyZWUzZWVkOWI0YTIx
ZGQ3NTYyNmE2Zjg1OGM0NjE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29j
b2EvV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQubW0KQEAgLTM2LDggKzM2LDggQEAgQGlt
cGxlbWVudGF0aW9uIFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkIHsKIAogKyAoV0tXZWJQ
cm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgKil3b3JsZAogewotICAgIFJlZlB0cjxJbmplY3RlZEJ1
bmRsZVNjcmlwdFdvcmxkPiBzY3JpcHRXb3JsZCA9IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6
OmNyZWF0ZSgpOwotICAgIHJldHVybiBbd3JhcHBlcigqc2NyaXB0V29ybGQucmVsZWFzZSgpLmxl
YWtSZWYoKSkgYXV0b3JlbGVhc2VdOworICAgIGF1dG8gc2NyaXB0V29ybGQgPSBJbmplY3RlZEJ1
bmRsZVNjcmlwdFdvcmxkOjpjcmVhdGUoKTsKKyAgICByZXR1cm4gW3dyYXBwZXIoc2NyaXB0V29y
bGQubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CiB9CiAKICsgKFdLV2ViUHJvY2Vzc1BsdWdJblNj
cmlwdFdvcmxkICopbm9ybWFsV29ybGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKaW5kZXggODViOGY5
MjJmMWVjMGMxMmVjZDQzMDFlNGEwOGJlZWU1YjQwZjdmMi4uZTg4NTNkYmQwNjI3YjY5ZGM0OTg0
OTBmY2VjNWJkOGQzNzEwYzUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKQEAgLTYyLDcgKzYy
LDcgQEAgdm9pZCBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoV0tCdW5kbGVSZWYgYnVu
ZGxlUmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmEKICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHJl
dHVybkRhdGE7CiAgICAgdG9JbXBsKGJ1bmRsZVJlZiktPnBvc3RTeW5jaHJvbm91c01lc3NhZ2Uo
dG9XVEZTdHJpbmcobWVzc2FnZU5hbWVSZWYpLCB0b0ltcGwobWVzc2FnZUJvZHlSZWYpLCByZXR1
cm5EYXRhKTsKICAgICBpZiAocmV0dXJuRGF0YVJlZikKLSAgICAgICAgKnJldHVybkRhdGFSZWYg
PSB0b0FQSShyZXR1cm5EYXRhLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgICAgICAqcmV0dXJu
RGF0YVJlZiA9IHRvQVBJKHJldHVybkRhdGEubGVha1JlZigpKTsKIH0KIAogV0tDb25uZWN0aW9u
UmVmIFdLQnVuZGxlR2V0QXBwbGljYXRpb25Db25uZWN0aW9uKFdLQnVuZGxlUmVmIGJ1bmRsZVJl
ZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5j
cHAKaW5kZXggYjY2MGU4MTVmYjU3NWFkN2U0YzZhNTE4M2M4MzljZWU1NzU4NTQ3OS4uZmMzODFm
NDZhNjQxZmEwNzc1YzNlNTQ2NDg2MGQ5ZTA0ZjQ4M2UyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZURPTVdpbmRvd0V4
dGVuc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5jcHAKQEAgLTQxLDcgKzQxLDcgQEAg
V0tUeXBlSUQgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25HZXRUeXBlSUQoKQogV0tCdW5kbGVE
T01XaW5kb3dFeHRlbnNpb25SZWYgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25DcmVhdGUoV0tC
dW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiB3b3JsZCkKIHsKICAg
ICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24+IGV4dGVuc2lvbiA9IElu
amVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uOjpjcmVhdGUodG9JbXBsKGZyYW1lKSwgdG9J
bXBsKHdvcmxkKSk7Ci0gICAgcmV0dXJuIHRvQVBJKGV4dGVuc2lvbi5yZWxlYXNlKCkubGVha1Jl
ZigpKTsKKyAgICByZXR1cm4gdG9BUEkoZXh0ZW5zaW9uLmxlYWtSZWYoKSk7CiB9CiAKIFdLQnVu
ZGxlRnJhbWVSZWYgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25HZXRGcmFtZShXS0J1bmRsZURP
TVdpbmRvd0V4dGVuc2lvblJlZiBleHRlbnNpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSGl0VGVzdFJlc3VsdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggNDZmNjk5OTI2YTIxNWE4N2RhYzExOGFlZmUwNTY0
ZTZiYTI3NzRmNS4uMmU0YTdiNjMxZDEzMWNhMTc2ZGM0ZDFiMTgxNWQ4ODE5ZjYwOTY4MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZUhpdFRlc3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcApAQCAtNDIsMTMg
KzQyLDEzIEBAIFdLVHlwZUlEIFdLQnVuZGxlSGl0VGVzdFJlc3VsdEdldFR5cGVJRCgpCiBXS0J1
bmRsZU5vZGVIYW5kbGVSZWYgV0tCdW5kbGVIaXRUZXN0UmVzdWx0Q29weU5vZGVIYW5kbGUoV0tC
dW5kbGVIaXRUZXN0UmVzdWx0UmVmIGhpdFRlc3RSZXN1bHRSZWYpCiB7CiAgICAgUmVmUHRyPElu
amVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gbm9kZUhhbmRsZSA9IHRvSW1wbChoaXRUZXN0UmVzdWx0
UmVmKS0+bm9kZUhhbmRsZSgpOwotICAgIHJldHVybiB0b0FQSShub2RlSGFuZGxlLnJlbGVhc2Uo
KS5sZWFrUmVmKCkpOworICAgIHJldHVybiB0b0FQSShub2RlSGFuZGxlLmxlYWtSZWYoKSk7CiB9
CiAKIFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBXS0J1bmRsZUhpdFRlc3RSZXN1bHRDb3B5VVJMRWxl
bWVudEhhbmRsZShXS0J1bmRsZUhpdFRlc3RSZXN1bHRSZWYgaGl0VGVzdFJlc3VsdFJlZikKIHsK
ICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiB1cmxFbGVtZW50Tm9kZUhhbmRs
ZSA9IHRvSW1wbChoaXRUZXN0UmVzdWx0UmVmKS0+dXJsRWxlbWVudEhhbmRsZSgpOwotICAgIHJl
dHVybiB0b0FQSSh1cmxFbGVtZW50Tm9kZUhhbmRsZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAg
ICByZXR1cm4gdG9BUEkodXJsRWxlbWVudE5vZGVIYW5kbGUubGVha1JlZigpKTsKIH0KIAogV0tC
dW5kbGVGcmFtZVJlZiBXS0J1bmRsZUhpdFRlc3RSZXN1bHRHZXRGcmFtZShXS0J1bmRsZUhpdFRl
c3RSZXN1bHRSZWYgaGl0VGVzdFJlc3VsdFJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcAppbmRleCBlZTg5ODI3M2ZjZDNhZjI5NWQyMmE0YjZl
NWU5NGY5ZTQ3ZjRmZTA1Li5hM2MzNjNlMTk0MmNlYzA0Nzk1NWY5MmIwMzI3MGE5NTZkYWZlOTdi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3Bw
CkBAIC01OCwxMyArNTgsMTMgQEAgV0tFdmVudE1vdXNlQnV0dG9uIFdLQnVuZGxlTmF2aWdhdGlv
bkFjdGlvbkdldEV2ZW50TW91c2VCdXR0b24oV0tCdW5kbGVOYXZpZ2F0aW8KIFdLQnVuZGxlSGl0
VGVzdFJlc3VsdFJlZiBXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb25Db3B5SGl0VGVzdFJlc3VsdChX
S0J1bmRsZU5hdmlnYXRpb25BY3Rpb25SZWYgbmF2aWdhdGlvbkFjdGlvblJlZikKIHsKICAgICBS
ZWZQdHI8SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0PiBoaXRUZXN0UmVzdWx0ID0gdG9JbXBs
KG5hdmlnYXRpb25BY3Rpb25SZWYpLT5oaXRUZXN0UmVzdWx0KCk7Ci0gICAgcmV0dXJuIHRvQVBJ
KGhpdFRlc3RSZXN1bHQucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKGhp
dFRlc3RSZXN1bHQubGVha1JlZigpKTsKIH0KIAogV0tCdW5kbGVOb2RlSGFuZGxlUmVmIFdLQnVu
ZGxlTmF2aWdhdGlvbkFjdGlvbkNvcHlGb3JtRWxlbWVudChXS0J1bmRsZU5hdmlnYXRpb25BY3Rp
b25SZWYgbmF2aWdhdGlvbkFjdGlvblJlZikKIHsKICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVO
b2RlSGFuZGxlPiBmb3JtRWxlbWVudCA9IHRvSW1wbChuYXZpZ2F0aW9uQWN0aW9uUmVmKS0+Zm9y
bUVsZW1lbnQoKTsKLSAgICByZXR1cm4gdG9BUEkoZm9ybUVsZW1lbnQucmVsZWFzZSgpLmxlYWtS
ZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKGZvcm1FbGVtZW50LmxlYWtSZWYoKSk7CiB9CiAKIGJv
b2wgV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uR2V0U2hvdWxkT3BlbkV4dGVybmFsVVJMcyhXS0J1
bmRsZU5hdmlnYXRpb25BY3Rpb25SZWYgbmF2aWdhdGlvbkFjdGlvblJlZikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVO
b2RlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxlLmNwcAppbmRleCBlZTRmMzYyMjQ1NGI5MTc1MDM3M2Nm
ODRlZDY0MDU3NDI5MzlhN2NmLi40NmNmYTM0YTA4MGVlNWFmNGVlMDg4NzNlYjRjMzg4NzczMjQz
YjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlTm9kZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5vZGVIYW5kbGUuY3BwCkBAIC01OSwx
MyArNTksMTMgQEAgV0tUeXBlSUQgV0tCdW5kbGVOb2RlSGFuZGxlR2V0VHlwZUlEKCkKIFdLQnVu
ZGxlTm9kZUhhbmRsZVJlZiBXS0J1bmRsZU5vZGVIYW5kbGVDcmVhdGUoSlNDb250ZXh0UmVmIGNv
bnRleHRSZWYsIEpTT2JqZWN0UmVmIG9iamVjdFJlZikKIHsKICAgICBSZWZQdHI8SW5qZWN0ZWRC
dW5kbGVOb2RlSGFuZGxlPiBub2RlSGFuZGxlID0gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpn
ZXRPckNyZWF0ZShjb250ZXh0UmVmLCBvYmplY3RSZWYpOwotICAgIHJldHVybiB0b0FQSShub2Rl
SGFuZGxlLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgIHJldHVybiB0b0FQSShub2RlSGFuZGxl
LmxlYWtSZWYoKSk7CiB9CiAKIFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBXS0J1bmRsZU5vZGVIYW5k
bGVDb3B5RG9jdW1lbnQoV0tCdW5kbGVOb2RlSGFuZGxlUmVmIG5vZGVIYW5kbGVSZWYpCiB7CiAg
ICAgUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gbm9kZUhhbmRsZSA9IHRvSW1wbChu
b2RlSGFuZGxlUmVmKS0+ZG9jdW1lbnQoKTsKLSAgICByZXR1cm4gdG9BUEkobm9kZUhhbmRsZS5y
ZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkobm9kZUhhbmRsZS5sZWFrUmVm
KCkpOwogfQogCiBXS1JlY3QgV0tCdW5kbGVOb2RlSGFuZGxlR2V0UmVuZGVyUmVjdChXS0J1bmRs
ZU5vZGVIYW5kbGVSZWYgbm9kZUhhbmRsZVJlZiwgYm9vbCogaXNSZXBsYWNlZCkKQEAgLTc2LDEz
ICs3NiwxMyBAQCBXS1JlY3QgV0tCdW5kbGVOb2RlSGFuZGxlR2V0UmVuZGVyUmVjdChXS0J1bmRs
ZU5vZGVIYW5kbGVSZWYgbm9kZUhhbmRsZVJlZiwgYm9vbAogV0tJbWFnZVJlZiBXS0J1bmRsZU5v
ZGVIYW5kbGVDb3B5U25hcHNob3RXaXRoT3B0aW9ucyhXS0J1bmRsZU5vZGVIYW5kbGVSZWYgbm9k
ZUhhbmRsZVJlZiwgV0tTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucykKIHsKICAgICBSZWZQdHI8V2Vi
SW1hZ2U+IGltYWdlID0gdG9JbXBsKG5vZGVIYW5kbGVSZWYpLT5yZW5kZXJlZEltYWdlKHRvU25h
cHNob3RPcHRpb25zKG9wdGlvbnMpKTsKLSAgICByZXR1cm4gdG9BUEkoaW1hZ2UucmVsZWFzZSgp
LmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKGltYWdlLmxlYWtSZWYoKSk7CiB9CiAKIFdL
QnVuZGxlUmFuZ2VIYW5kbGVSZWYgV0tCdW5kbGVOb2RlSGFuZGxlQ29weVZpc2libGVSYW5nZShX
S0J1bmRsZU5vZGVIYW5kbGVSZWYgbm9kZUhhbmRsZVJlZikKIHsKICAgICBSZWZQdHI8SW5qZWN0
ZWRCdW5kbGVSYW5nZUhhbmRsZT4gcmFuZ2VIYW5kbGUgPSB0b0ltcGwobm9kZUhhbmRsZVJlZikt
PnZpc2libGVSYW5nZSgpOwotICAgIHJldHVybiB0b0FQSShyYW5nZUhhbmRsZS5yZWxlYXNlKCku
bGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkocmFuZ2VIYW5kbGUubGVha1JlZigpKTsKIH0K
IAogV0tSZWN0IFdLQnVuZGxlTm9kZUhhbmRsZUdldEVsZW1lbnRCb3VuZHMoV0tCdW5kbGVOb2Rl
SGFuZGxlUmVmIGVsZW1lbnRIYW5kbGVSZWYpCkBAIC0xMzgsMjUgKzEzOCwyNSBAQCBib29sIFdL
QnVuZGxlTm9kZUhhbmRsZUdldEhUTUxUZXh0QXJlYUVsZW1lbnRMYXN0Q2hhbmdlV2FzVXNlckVk
aXQoV0tCdW5kbGVOb2RlSAogV0tCdW5kbGVOb2RlSGFuZGxlUmVmIFdLQnVuZGxlTm9kZUhhbmRs
ZUNvcHlIVE1MVGFibGVDZWxsRWxlbWVudENlbGxBYm92ZShXS0J1bmRsZU5vZGVIYW5kbGVSZWYg
aHRtbFRhYmxlQ2VsbEVsZW1lbnRIYW5kbGVSZWYpCiB7CiAgICAgUmVmUHRyPEluamVjdGVkQnVu
ZGxlTm9kZUhhbmRsZT4gbm9kZUhhbmRsZSA9IHRvSW1wbChodG1sVGFibGVDZWxsRWxlbWVudEhh
bmRsZVJlZiktPmh0bWxUYWJsZUNlbGxFbGVtZW50Q2VsbEFib3ZlKCk7Ci0gICAgcmV0dXJuIHRv
QVBJKG5vZGVIYW5kbGUucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKG5v
ZGVIYW5kbGUubGVha1JlZigpKTsKIH0KIAogV0tCdW5kbGVGcmFtZVJlZiBXS0J1bmRsZU5vZGVI
YW5kbGVDb3B5RG9jdW1lbnRGcmFtZShXS0J1bmRsZU5vZGVIYW5kbGVSZWYgZG9jdW1lbnRIYW5k
bGVSZWYpCiB7CiAgICAgUmVmUHRyPFdlYkZyYW1lPiBmcmFtZSA9IHRvSW1wbChkb2N1bWVudEhh
bmRsZVJlZiktPmRvY3VtZW50RnJhbWUoKTsKLSAgICByZXR1cm4gdG9BUEkoZnJhbWUucmVsZWFz
ZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKGZyYW1lLmxlYWtSZWYoKSk7CiB9CiAK
IFdLQnVuZGxlRnJhbWVSZWYgV0tCdW5kbGVOb2RlSGFuZGxlQ29weUhUTUxGcmFtZUVsZW1lbnRD
b250ZW50RnJhbWUoV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGh0bWxGcmFtZUVsZW1lbnRIYW5kbGVS
ZWYpCiB7CiAgICAgUmVmUHRyPFdlYkZyYW1lPiBmcmFtZSA9IHRvSW1wbChodG1sRnJhbWVFbGVt
ZW50SGFuZGxlUmVmKS0+aHRtbEZyYW1lRWxlbWVudENvbnRlbnRGcmFtZSgpOwotICAgIHJldHVy
biB0b0FQSShmcmFtZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkoZnJh
bWUubGVha1JlZigpKTsKIH0KIAogV0tCdW5kbGVGcmFtZVJlZiBXS0J1bmRsZU5vZGVIYW5kbGVD
b3B5SFRNTElGcmFtZUVsZW1lbnRDb250ZW50RnJhbWUoV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGh0
bWxJRnJhbWVFbGVtZW50SGFuZGxlUmVmKQogewogICAgIFJlZlB0cjxXZWJGcmFtZT4gZnJhbWUg
PSB0b0ltcGwoaHRtbElGcmFtZUVsZW1lbnRIYW5kbGVSZWYpLT5odG1sSUZyYW1lRWxlbWVudENv
bnRlbnRGcmFtZSgpOwotICAgIHJldHVybiB0b0FQSShmcmFtZS5yZWxlYXNlKCkubGVha1JlZigp
KTsKKyAgICByZXR1cm4gdG9BUEkoZnJhbWUubGVha1JlZigpKTsKIH0KIAogLy8gRGVwcmVjYXRl
ZCAtIHVzZSBXS0J1bmRsZU5vZGVIYW5kbGVHZXRIVE1MSW5wdXRFbGVtZW50QXV0b0ZpbGxlZChX
S0J1bmRsZU5vZGVIYW5kbGVSZWYpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCmluZGV4
IDE3ZTIxYWZjMzNiNjhlZmUzZDg3NTgzMDhiZDgxYzYwYzNmODA5NTUuLmUxOGRhOTE0ZmMyMGRl
ZWRlYTZjMWY5NjdkOGYzNDkwNDc3NDA2OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5j
cHAKQEAgLTQzNCw3ICs0MzQsNyBAQCBib29sIFdLQnVuZGxlUGFnZUZpbmRTdHJpbmcoV0tCdW5k
bGVQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHRhcmdldCwgV0tGaW5kTwogV0tJbWFnZVJl
ZiBXS0J1bmRsZVBhZ2VDcmVhdGVTbmFwc2hvdFdpdGhPcHRpb25zKFdLQnVuZGxlUGFnZVJlZiBw
YWdlUmVmLCBXS1JlY3QgcmVjdCwgV0tTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucykKIHsKICAgICBS
ZWZQdHI8V2ViSW1hZ2U+IHdlYkltYWdlID0gdG9JbXBsKHBhZ2VSZWYpLT5zY2FsZWRTbmFwc2hv
dFdpdGhPcHRpb25zKHRvSW50UmVjdChyZWN0KSwgMSwgdG9TbmFwc2hvdE9wdGlvbnMob3B0aW9u
cykpOwotICAgIHJldHVybiB0b0FQSSh3ZWJJbWFnZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAg
ICByZXR1cm4gdG9BUEkod2ViSW1hZ2UubGVha1JlZigpKTsKIH0KIAogV0tJbWFnZVJlZiBXS0J1
bmRsZVBhZ2VDcmVhdGVTbmFwc2hvdEluVmlld0Nvb3JkaW5hdGVzKFdLQnVuZGxlUGFnZVJlZiBw
YWdlUmVmLCBXS1JlY3QgcmVjdCwgV0tJbWFnZU9wdGlvbnMgb3B0aW9ucykKQEAgLTQ0MiwxOSAr
NDQyLDE5IEBAIFdLSW1hZ2VSZWYgV0tCdW5kbGVQYWdlQ3JlYXRlU25hcHNob3RJblZpZXdDb29y
ZGluYXRlcyhXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwKICAgICBTbmFwc2hvdE9wdGlvbnMgc25h
cHNob3RPcHRpb25zID0gc25hcHNob3RPcHRpb25zRnJvbUltYWdlT3B0aW9ucyhvcHRpb25zKTsK
ICAgICBzbmFwc2hvdE9wdGlvbnMgfD0gU25hcHNob3RPcHRpb25zSW5WaWV3Q29vcmRpbmF0ZXM7
CiAgICAgUmVmUHRyPFdlYkltYWdlPiB3ZWJJbWFnZSA9IHRvSW1wbChwYWdlUmVmKS0+c2NhbGVk
U25hcHNob3RXaXRoT3B0aW9ucyh0b0ludFJlY3QocmVjdCksIDEsIHNuYXBzaG90T3B0aW9ucyk7
Ci0gICAgcmV0dXJuIHRvQVBJKHdlYkltYWdlLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgIHJl
dHVybiB0b0FQSSh3ZWJJbWFnZS5sZWFrUmVmKCkpOwogfQogCiBXS0ltYWdlUmVmIFdLQnVuZGxl
UGFnZUNyZWF0ZVNuYXBzaG90SW5Eb2N1bWVudENvb3JkaW5hdGVzKFdLQnVuZGxlUGFnZVJlZiBw
YWdlUmVmLCBXS1JlY3QgcmVjdCwgV0tJbWFnZU9wdGlvbnMgb3B0aW9ucykKIHsKICAgICBSZWZQ
dHI8V2ViSW1hZ2U+IHdlYkltYWdlID0gdG9JbXBsKHBhZ2VSZWYpLT5zY2FsZWRTbmFwc2hvdFdp
dGhPcHRpb25zKHRvSW50UmVjdChyZWN0KSwgMSwgc25hcHNob3RPcHRpb25zRnJvbUltYWdlT3B0
aW9ucyhvcHRpb25zKSk7Ci0gICAgcmV0dXJuIHRvQVBJKHdlYkltYWdlLnJlbGVhc2UoKS5sZWFr
UmVmKCkpOworICAgIHJldHVybiB0b0FQSSh3ZWJJbWFnZS5sZWFrUmVmKCkpOwogfQogCiBXS0lt
YWdlUmVmIFdLQnVuZGxlUGFnZUNyZWF0ZVNjYWxlZFNuYXBzaG90SW5Eb2N1bWVudENvb3JkaW5h
dGVzKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS1JlY3QgcmVjdCwgZG91YmxlIHNjYWxlRmFj
dG9yLCBXS0ltYWdlT3B0aW9ucyBvcHRpb25zKQogewogICAgIFJlZlB0cjxXZWJJbWFnZT4gd2Vi
SW1hZ2UgPSB0b0ltcGwocGFnZVJlZiktPnNjYWxlZFNuYXBzaG90V2l0aE9wdGlvbnModG9JbnRS
ZWN0KHJlY3QpLCBzY2FsZUZhY3Rvciwgc25hcHNob3RPcHRpb25zRnJvbUltYWdlT3B0aW9ucyhv
cHRpb25zKSk7Ci0gICAgcmV0dXJuIHRvQVBJKHdlYkltYWdlLnJlbGVhc2UoKS5sZWFrUmVmKCkp
OworICAgIHJldHVybiB0b0FQSSh3ZWJJbWFnZS5sZWFrUmVmKCkpOwogfQogCiBkb3VibGUgV0tC
dW5kbGVQYWdlR2V0QmFja2luZ1NjYWxlRmFjdG9yKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmKQpA
QCAtNjI0LDcgKzYyNCw3IEBAIHZvaWQgV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9ub3VzTWVzc2Fn
ZUZvclRlc3RpbmcoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyCiAgICAgUmVmUHRyPEFQ
STo6T2JqZWN0PiByZXR1cm5EYXRhOwogICAgIHBhZ2UtPnBvc3RTeW5jaHJvbm91c01lc3NhZ2VG
b3JUZXN0aW5nKHRvV1RGU3RyaW5nKG1lc3NhZ2VOYW1lUmVmKSwgdG9JbXBsKG1lc3NhZ2VCb2R5
UmVmKSwgcmV0dXJuRGF0YSk7CiAgICAgaWYgKHJldHVybkRhdGFSZWYpCi0gICAgICAgICpyZXR1
cm5EYXRhUmVmID0gdG9BUEkocmV0dXJuRGF0YS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICAg
ICAgKnJldHVybkRhdGFSZWYgPSB0b0FQSShyZXR1cm5EYXRhLmxlYWtSZWYoKSk7CiB9CiAKIHZv
aWQgV0tCdW5kbGVQYWdlQWRkVXNlclNjcmlwdChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tT
dHJpbmdSZWYgc291cmNlLCBfV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1l
LCBXS1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UmFuZ2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZVJhbmdlSGFuZGxlLmNwcAppbmRleCA3M2I4OGMxMzQwNjMzYzY5MDgx
OGQ0OGMzNDFlYTU2OTlhODE3ZWMwLi40MzcxN2M5MTVkMDYyYjNkNGE0YjdkZjBlZjMxYzNmNTY2
MWU1NDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVSYW5nZUhhbmRsZS5jcHAKQEAg
LTQzLDcgKzQzLDcgQEAgV0tUeXBlSUQgV0tCdW5kbGVSYW5nZUhhbmRsZUdldFR5cGVJRCgpCiBX
S0J1bmRsZVJhbmdlSGFuZGxlUmVmIFdLQnVuZGxlUmFuZ2VIYW5kbGVDcmVhdGUoSlNDb250ZXh0
UmVmIGNvbnRleHRSZWYsIEpTT2JqZWN0UmVmIG9iamVjdFJlZikKIHsKICAgICBSZWZQdHI8SW5q
ZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gcmFuZ2VIYW5kbGUgPSBJbmplY3RlZEJ1bmRsZVJhbmdl
SGFuZGxlOjpnZXRPckNyZWF0ZShjb250ZXh0UmVmLCBvYmplY3RSZWYpOwotICAgIHJldHVybiB0
b0FQSShyYW5nZUhhbmRsZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEko
cmFuZ2VIYW5kbGUubGVha1JlZigpKTsKIH0KIAogV0tSZWN0IFdLQnVuZGxlUmFuZ2VIYW5kbGVH
ZXRCb3VuZGluZ1JlY3RJbldpbmRvd0Nvb3JkaW5hdGVzKFdLQnVuZGxlUmFuZ2VIYW5kbGVSZWYg
cmFuZ2VIYW5kbGVSZWYpCkBAIC01NSw1ICs1NSw1IEBAIFdLUmVjdCBXS0J1bmRsZVJhbmdlSGFu
ZGxlR2V0Qm91bmRpbmdSZWN0SW5XaW5kb3dDb29yZGluYXRlcyhXS0J1bmRsZVJhbmdlSGFuZGxl
CiBXS0ltYWdlUmVmIFdLQnVuZGxlUmFuZ2VIYW5kbGVDb3B5U25hcHNob3RXaXRoT3B0aW9ucyhX
S0J1bmRsZVJhbmdlSGFuZGxlUmVmIHJhbmdlSGFuZGxlUmVmLCBXS1NuYXBzaG90T3B0aW9ucyBv
cHRpb25zKQogewogICAgIFJlZlB0cjxXZWJJbWFnZT4gaW1hZ2UgPSB0b0ltcGwocmFuZ2VIYW5k
bGVSZWYpLT5yZW5kZXJlZEltYWdlKHRvU25hcHNob3RPcHRpb25zKG9wdGlvbnMpKTsKLSAgICBy
ZXR1cm4gdG9BUEkoaW1hZ2UucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJ
KGltYWdlLmxlYWtSZWYoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlU2NyaXB0V29ybGQuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVNjcmlwdFdv
cmxkLmNwcAppbmRleCA2ZGEwY2MwZTY3NWZjZTM0NWNiNDI3MjQwOGE2ODIyZDA4N2VmM2E0Li5i
N2JkOGIzMDJiMzE3MmUxZmUzYmM4Y2JjNTM5YjhhZjkwNjI0YWUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlU2NyaXB0
V29ybGQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVTY3JpcHRXb3JsZC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgV0tUeXBlSUQg
V0tCdW5kbGVTY3JpcHRXb3JsZEdldFR5cGVJRCgpCiBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIFdL
QnVuZGxlU2NyaXB0V29ybGRDcmVhdGVXb3JsZCgpCiB7CiAgICAgUmVmUHRyPEluamVjdGVkQnVu
ZGxlU2NyaXB0V29ybGQ+IHdvcmxkID0gSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6Y3JlYXRl
KCk7Ci0gICAgcmV0dXJuIHRvQVBJKHdvcmxkLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgIHJl
dHVybiB0b0FQSSh3b3JsZC5sZWFrUmVmKCkpOwogfQogCiBXS0J1bmRsZVNjcmlwdFdvcmxkUmVm
IFdLQnVuZGxlU2NyaXB0V29ybGROb3JtYWxXb3JsZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Ob2RlLm1tIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NTm9kZS5t
bQppbmRleCA3MTIyYzNmZDk3ZDYzOGE5MGY2MjA3ZGQyYmQ3ZTVlOTI3Y2E3YTkyLi40OWI0Y2I5
Y2FlYmI5ZGYwMTQyNmY5NWY5N2U2MzY5YmZiMjJhY2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Ob2RlLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTU5v
ZGUubW0KQEAgLTEyOSw4ICsxMjksOCBAQCBAaW1wbGVtZW50YXRpb24gV0tET01Ob2RlIChXS1By
aXZhdGUpCiAKIC0gKFdLQnVuZGxlTm9kZUhhbmRsZVJlZilfY29weUJ1bmRsZU5vZGVIYW5kbGVS
ZWYKIHsKLSAgICBSZWZQdHI8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+IG5vZGVI
YW5kbGUgPSBXZWJLaXQ6OkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6Z2V0T3JDcmVhdGUoX2lt
cGwuZ2V0KCkpOwotICAgIHJldHVybiB0b0FQSShub2RlSGFuZGxlLnJlbGVhc2UoKS5sZWFrUmVm
KCkpOworICAgIGF1dG8gbm9kZUhhbmRsZSA9IFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOb2RlSGFu
ZGxlOjpnZXRPckNyZWF0ZShfaW1wbC5nZXQoKSk7CisgICAgcmV0dXJuIHRvQVBJKG5vZGVIYW5k
bGUubGVha1JlZigpKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01SYW5nZS5tbQppbmRl
eCAxNjVkYTA2NDM0MzIxNWRjNmI5ZjAwMWNlNjA1NTcxMGVlZjZjYjY3Li4wZjA4ZDg0ODEwMTg4
OWE1MGI1ZjExMTY4OWE1NzZmMTU4MWQ1MTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01SYW5nZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01SYW5nZS5t
bQpAQCAtMTU2LDggKzE1Niw4IEBAIEBpbXBsZW1lbnRhdGlvbiBXS0RPTVJhbmdlIChXS1ByaXZh
dGUpCiAKIC0gKFdLQnVuZGxlUmFuZ2VIYW5kbGVSZWYpX2NvcHlCdW5kbGVSYW5nZUhhbmRsZVJl
ZgogewotICAgIFJlZlB0cjxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IHJhbmdl
SGFuZGxlID0gV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpnZXRPckNyZWF0ZShf
aW1wbC5nZXQoKSk7Ci0gICAgcmV0dXJuIHRvQVBJKHJhbmdlSGFuZGxlLnJlbGVhc2UoKS5sZWFr
UmVmKCkpOworICAgIGF1dG8gcmFuZ2VIYW5kbGUgPSBXZWJLaXQ6OkluamVjdGVkQnVuZGxlUmFu
Z2VIYW5kbGU6OmdldE9yQ3JlYXRlKF9pbXBsLmdldCgpKTsKKyAgICByZXR1cm4gdG9BUEkocmFu
Z2VIYW5kbGUubGVha1JlZigpKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURl
Y2xhcmF0aW9uSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZS5jcHAKaW5k
ZXggYWMxMWQxMWE3ODY2NDJhZjczOTlmZjUwOWU4ZjdjNWNkMWU2OGNlMi4uMmE4ZjE3YTRhY2Y4
NmIyNzc5MmRiZGUzN2Q3M2ZiMDViNWI2MDc2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURlY2xh
cmF0aW9uSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25IYW5kbGUuY3BwCkBA
IC01MSw5ICs1MSw5IEBAIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURlY2xhcmF0
aW9uSGFuZGxlPiBJbmplY3RlZEJ1bmRsZUNTU1N0eWxlRGVjbGFyCiAgICAgaWYgKCFyZXN1bHQu
aXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVDU1NT
dHlsZURlY2xhcmF0aW9uSGFuZGxlPihyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKIAotICAgIFJl
ZlB0cjxJbmplY3RlZEJ1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25IYW5kbGU+IHN0eWxlRGVjbGFy
YXRpb25IYW5kbGUgPSBhZG9wdFJlZihuZXcgSW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURlY2xhcmF0
aW9uSGFuZGxlKCpzdHlsZURlY2xhcmF0aW9uKSk7Ci0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSA9IHN0eWxlRGVjbGFyYXRpb25IYW5kbGUuZ2V0KCk7Ci0gICAgcmV0dXJuIHN0eWxlRGVjbGFy
YXRpb25IYW5kbGUucmVsZWFzZSgpOworICAgIGF1dG8gc3R5bGVEZWNsYXJhdGlvbkhhbmRsZSA9
IGFkb3B0UmVmKCpuZXcgSW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uSGFuZGxlKCpz
dHlsZURlY2xhcmF0aW9uKSk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0eWxlRGVj
bGFyYXRpb25IYW5kbGUucHRyKCk7CisgICAgcmV0dXJuIFdURk1vdmUoc3R5bGVEZWNsYXJhdGlv
bkhhbmRsZSk7CiB9CiAKIEluamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZTo6
SW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uSGFuZGxlKENTU1N0eWxlRGVjbGFyYXRp
b24mIHN0eWxlRGVjbGFyYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVO
b2RlSGFuZGxlLmNwcAppbmRleCAyZWIyZGIzYjI5N2VlNjJhOTM0YTk3ZmRmYzljODM1YjhkZDZj
NjY5Li5jZmU5OTA2NDI3MWRkZjc4ZDVjNjkzMjRjNjI5ZTdlMWUyNWI5Y2EwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1
bmRsZU5vZGVIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKQEAgLTE0MCw3ICsxNDAs
NyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxXZWJJbWFnZT4gaW1hZ2VGb3JSZWN0KEZyYW1lVmlldyog
ZnJhbWVWaWV3LCBjb25zdCBJbnRSZWN0JiByZQogICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gZnJh
bWVWaWV3LT5mcmFtZSgpLnBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKICAgICBiaXRtYXBT
aXplLnNjYWxlKHNjYWxlRmFjdG9yKTsKIAotICAgIFJlZlB0cjxXZWJJbWFnZT4gc25hcHNob3Qg
PSBXZWJJbWFnZTo6Y3JlYXRlKGJpdG1hcFNpemUsIHNuYXBzaG90T3B0aW9uc1RvSW1hZ2VPcHRp
b25zKG9wdGlvbnMpKTsKKyAgICBhdXRvIHNuYXBzaG90ID0gV2ViSW1hZ2U6OmNyZWF0ZShiaXRt
YXBTaXplLCBzbmFwc2hvdE9wdGlvbnNUb0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7CiAgICAgaWYg
KCFzbmFwc2hvdC0+Yml0bWFwKCkpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0xNjQsNyArMTY0
LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IGltYWdlRm9yUmVjdChGcmFtZVZpZXcq
IGZyYW1lVmlldywgY29uc3QgSW50UmVjdCYgcmUKICAgICBmcmFtZVZpZXctPnBhaW50Q29udGVu
dHNGb3JTbmFwc2hvdCgqZ3JhcGhpY3NDb250ZXh0LmdldCgpLCByZWN0LCBzaG91bGRQYWludFNl
bGVjdGlvbiwgRnJhbWVWaWV3OjpEb2N1bWVudENvb3JkaW5hdGVzKTsKICAgICBmcmFtZVZpZXct
PnNldFBhaW50QmVoYXZpb3Iob2xkUGFpbnRCZWhhdmlvcik7CiAKLSAgICByZXR1cm4gc25hcHNo
b3QucmVsZWFzZSgpOworICAgIHJldHVybiBzbmFwc2hvdDsKIH0KIAogUGFzc1JlZlB0cjxXZWJJ
bWFnZT4gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpyZW5kZXJlZEltYWdlKFNuYXBzaG90T3B0
aW9ucyBvcHRpb25zKQpAQCAtMTg3LDEwICsxODcsMTAgQEAgUGFzc1JlZlB0cjxXZWJJbWFnZT4g
SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpyZW5kZXJlZEltYWdlKFNuYXBzaG90T3B0aW9ucyBv
cHQKICAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IHNuYXBwZWRJbnRSZWN0KHJlbmRlcmVyLT5w
YWludGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCkpOwogCiAgICAgZnJhbWVWaWV3LT5zZXROb2Rl
VG9EcmF3KG1fbm9kZS5wdHIoKSk7Ci0gICAgUmVmUHRyPFdlYkltYWdlPiBpbWFnZSA9IGltYWdl
Rm9yUmVjdChmcmFtZVZpZXcsIHBhaW50aW5nUmVjdCwgb3B0aW9ucyk7CisgICAgYXV0byBpbWFn
ZSA9IGltYWdlRm9yUmVjdChmcmFtZVZpZXcsIHBhaW50aW5nUmVjdCwgb3B0aW9ucyk7CiAgICAg
ZnJhbWVWaWV3LT5zZXROb2RlVG9EcmF3KDApOwogCi0gICAgcmV0dXJuIGltYWdlLnJlbGVhc2Uo
KTsKKyAgICByZXR1cm4gaW1hZ2U7CiB9CiAKIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVSYW5n
ZUhhbmRsZT4gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjp2aXNpYmxlUmFuZ2UoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0
ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAppbmRleCA4YTk0NTE0
OWI4ZTliODI0MmRkMzU2ZDQyMjM5MmNjNDQxNTBlN2M5Li5jOWJlZjVhNmU4YjYzYWZlOTYyNWQ4
ZGRmZTk0MzI3OGQ5MDFhMzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRs
ZVJhbmdlSGFuZGxlLmNwcApAQCAtNzAsOSArNzAsOSBAQCBQYXNzUmVmUHRyPEluamVjdGVkQnVu
ZGxlUmFuZ2VIYW5kbGU+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmdldE9yQ3JlYXRlKFJh
bgogICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybiBQYXNzUmVmUHRy
PEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+KHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwogCi0g
ICAgUmVmUHRyPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IHJhbmdlSGFuZGxlID0gSW5qZWN0
ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Y3JlYXRlKHJhbmdlKTsKLSAgICByZXN1bHQuaXRlcmF0b3It
PnZhbHVlID0gcmFuZ2VIYW5kbGUuZ2V0KCk7Ci0gICAgcmV0dXJuIHJhbmdlSGFuZGxlLnJlbGVh
c2UoKTsKKyAgICBhdXRvIHJhbmdlSGFuZGxlID0gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6
Y3JlYXRlKHJhbmdlKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gcmFuZ2VIYW5kbGUu
cHRyKCk7CisgICAgcmV0dXJuIFdURk1vdmUocmFuZ2VIYW5kbGUpOwogfQogCiBSZWY8SW5qZWN0
ZWRCdW5kbGVSYW5nZUhhbmRsZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Y3JlYXRlKFJh
bmdlKiByYW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggNjlhNGZmODA5Zjk3MGMzNWFk
ZDE1YzQ4MTJkMWU5ZDU0NWJmYWEyNS4uMjgzYTk2NzAwZjVlMWZkNjM4YjJlYzUyMzI0ZDM3ZTcw
ZThiMDA3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTkwLDEzICs5MCwxMyBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZT4gSW5qZWN0ZWRCdW5k
bGU6OmNyZWF0ZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
LCBBUEk6Ok9iamVjdCogaW5pdGlhbGl6YXRpb25Vc2VyRGF0YSkKIHsKLSAgICBSZWZQdHI8SW5q
ZWN0ZWRCdW5kbGU+IGJ1bmRsZSA9IGFkb3B0UmVmKG5ldyBJbmplY3RlZEJ1bmRsZShwYXJhbWV0
ZXJzKSk7CisgICAgYXV0byBidW5kbGUgPSBhZG9wdFJlZigqbmV3IEluamVjdGVkQnVuZGxlKHBh
cmFtZXRlcnMpKTsKIAogICAgIGJ1bmRsZS0+bV9zYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlKHBhcmFtZXRlcnMuaW5qZWN0ZWRCdW5kbGVQYXRoRXh0ZW5zaW9uSGFu
ZGxlKTsKICAgICBpZiAoIWJ1bmRsZS0+aW5pdGlhbGl6ZShwYXJhbWV0ZXJzLCBpbml0aWFsaXph
dGlvblVzZXJEYXRhKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYnVu
ZGxlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92ZShidW5kbGUpOwogfQogCiBJbmplY3Rl
ZEJ1bmRsZTo6SW5qZWN0ZWRCdW5kbGUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyYgcGFyYW1ldGVycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCmluZGV4IDMxNTFlMTRlYjVl
OTVlNDZiMDZmMGQ3Y2YxMDk4NWNhMjRmNjJmNGYuLjhmMTVkMzUyNDY4YjExMWRhYjU4YmU3OGQy
NmY5MWY4NWM1MmYxZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcApAQCAtMTY5LDEwICsx
NjksMTAgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6bG9hZFVSTChjb25zdCBTdHJpbmcmIG1ldGhv
ZCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnMKIAogICAgIGlmICh0YXJnZXQuaXNOdWxs
KCkpIHsKICAgICAgICAgLy8gVGhlIGJyb3dzZXIgaXMgZ29pbmcgdG8gc2VuZCB0aGUgZGF0YSBp
biBhIHN0cmVhbSwgY3JlYXRlIGEgcGx1Zy1pbiBzdHJlYW0uCi0gICAgICAgIFJlZlB0cjxOZXRz
Y2FwZVBsdWdpblN0cmVhbT4gcGx1Z2luU3RyZWFtID0gTmV0c2NhcGVQbHVnaW5TdHJlYW06OmNy
ZWF0ZSh0aGlzLCByZXF1ZXN0SUQsIHVybFN0cmluZywgc2VuZE5vdGlmaWNhdGlvbiwgbm90aWZp
Y2F0aW9uRGF0YSk7CisgICAgICAgIGF1dG8gcGx1Z2luU3RyZWFtID0gTmV0c2NhcGVQbHVnaW5T
dHJlYW06OmNyZWF0ZSh0aGlzLCByZXF1ZXN0SUQsIHVybFN0cmluZywgc2VuZE5vdGlmaWNhdGlv
biwgbm90aWZpY2F0aW9uRGF0YSk7CiAgICAgICAgIEFTU0VSVCghbV9zdHJlYW1zLmNvbnRhaW5z
KHJlcXVlc3RJRCkpOwogCi0gICAgICAgIG1fc3RyZWFtcy5zZXQocmVxdWVzdElELCBwbHVnaW5T
dHJlYW0ucmVsZWFzZSgpKTsKKyAgICAgICAgbV9zdHJlYW1zLnNldChyZXF1ZXN0SUQsIFdURk1v
dmUocGx1Z2luU3RyZWFtKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBERlBsdWdp
bi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBE
RlBsdWdpbi5tbQppbmRleCAxYzQ3MTdjYTcxODQzZjRlNGMwMTZlZmI3NmNmMzljM2EwY2ViM2Vi
Li4xMjIzZjQ5YzUwODQ0MDdhNGQwOGZjMzUxMWNhNDYyNWQyMDdlYjA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0RlcHJlY2F0ZWRQREZQbHVnaW4u
bW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9EZXByZWNhdGVk
UERGUGx1Z2luLm1tCkBAIC02NTEsNyArNjUxLDcgQEAgY29uc3QgUGx1Z2luVmlldyogUERGUGx1
Z2luOjpwbHVnaW5WaWV3KCkgY29uc3QKIAogUGFzc1JlZlB0cjxTY3JvbGxiYXI+IFBERlBsdWdp
bjo6Y3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogewot
ICAgIFJlZlB0cjxTY3JvbGxiYXI+IHdpZGdldCA9IFNjcm9sbGJhcjo6Y3JlYXRlTmF0aXZlU2Ny
b2xsYmFyKCp0aGlzLCBvcmllbnRhdGlvbiwgUmVndWxhclNjcm9sbGJhcik7CisgICAgYXV0byB3
aWRnZXQgPSBTY3JvbGxiYXI6OmNyZWF0ZU5hdGl2ZVNjcm9sbGJhcigqdGhpcywgb3JpZW50YXRp
b24sIFJlZ3VsYXJTY3JvbGxiYXIpOwogICAgIGlmIChvcmllbnRhdGlvbiA9PSBIb3Jpem9udGFs
U2Nyb2xsYmFyKSB7CiAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhckxheWVyID0gYWRvcHRO
UyhbW1dLUERGUGx1Z2luU2Nyb2xsYmFyTGF5ZXIgYWxsb2NdIGluaXRXaXRoUERGUGx1Z2luOnRo
aXNdKTsKICAgICAgICAgW21fY29udGFpbmVyTGF5ZXIgYWRkU3VibGF5ZXI6bV9ob3Jpem9udGFs
U2Nyb2xsYmFyTGF5ZXIuZ2V0KCldOwpAQCAtNjY3LDcgKzY2Nyw3IEBAIFBhc3NSZWZQdHI8U2Ny
b2xsYmFyPiBQREZQbHVnaW46OmNyZWF0ZVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbiBv
cmllbnRhdGlvCiAgICAgICAgIH0KICAgICB9CiAgICAgcGx1Z2luVmlldygpLT5mcmFtZSgpLT52
aWV3KCktPmFkZENoaWxkKHdpZGdldC5nZXQoKSk7Ci0gICAgcmV0dXJuIHdpZGdldC5yZWxlYXNl
KCk7CisgICAgcmV0dXJuIHdpZGdldDsKIH0KIAogdm9pZCBQREZQbHVnaW46OmRlc3Ryb3lTY3Jv
bGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcAppbmRleCA2YjI0
Y2Y0NzMyMjJmZDBjMzI2OGE1ZDc1MTE0OTEwNmM2NTdmNjA5Li5hMGNjOGI5YjI0NGYyNTNkYzEx
ZDZiZThhNWRjZDY5ZTdmODcwMzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1N0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKQEAgLTI2Miw3ICsyNjIsNyBAQCB2b2lk
IFN0b3JhZ2VBcmVhTWFwOjphcHBseUNoYW5nZShjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3Ry
aW5nJiBuZXdWYWx1ZSkKIAogICAgIGlmICgha2V5KSB7CiAgICAgICAgIC8vIEEgbnVsbCBrZXkg
bWVhbnMgY2xlYXIuCi0gICAgICAgIFJlZlB0cjxTdG9yYWdlTWFwPiBuZXdTdG9yYWdlTWFwID0g
U3RvcmFnZU1hcDo6Y3JlYXRlKG1fcXVvdGFJbkJ5dGVzKTsKKyAgICAgICAgYXV0byBuZXdTdG9y
YWdlTWFwID0gU3RvcmFnZU1hcDo6Y3JlYXRlKG1fcXVvdGFJbkJ5dGVzKTsKIAogICAgICAgICAv
LyBBbnkgY2hhbmdlcyB0aGF0IHdlcmUgbWFkZSBsb2NhbGx5IGFmdGVyIHRoZSBjbGVhciBtdXN0
IHN0aWxsIGJlIGtlcHQgYXJvdW5kIGluIHRoZSBuZXcgbWFwLgogICAgICAgICBmb3IgKGF1dG8g
aXQgPSBtX3BlbmRpbmdWYWx1ZUNoYW5nZXMuYmVnaW4oKS5rZXlzKCksIGVuZCA9IG1fcGVuZGlu
Z1ZhbHVlQ2hhbmdlcy5lbmQoKS5rZXlzKCk7IGl0ICE9IGVuZDsgKytpdCkgewpAQCAtMjc4LDcg
KzI3OCw3IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmFwcGx5Q2hhbmdlKGNvbnN0IFN0cmluZyYg
a2V5LCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlKQogICAgICAgICAgICAgbmV3U3RvcmFnZU1hcC0+
c2V0SXRlbUlnbm9yaW5nUXVvdGEoa2V5LCBvbGRWYWx1ZSk7CiAgICAgICAgIH0KIAotICAgICAg
ICBtX3N0b3JhZ2VNYXAgPSBuZXdTdG9yYWdlTWFwLnJlbGVhc2UoKTsKKyAgICAgICAgbV9zdG9y
YWdlTWFwID0gV1RGTW92ZShuZXdTdG9yYWdlTWFwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9T
ZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKaW5kZXggMTUxYzkwMDZmYzJi
NGY5MDgxMGU2MmQ2ZDMzN2QxODliNzYzNzI1NS4uMWNhN2Y0NDk3YTc5OGIzZTVkZWQ0YWVlYjE4
ZWFjYzJmMTlhYTc3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCkBA
IC0xMjMsNyArMTIzLDcgQEAgUGFnZVN0YXRlIHRvUGFnZVN0YXRlKGNvbnN0IFdlYkNvcmU6Okhp
c3RvcnlJdGVtJiBoaXN0b3J5SXRlbSkKIAogc3RhdGljIFBhc3NSZWZQdHI8Rm9ybURhdGE+IHRv
Rm9ybURhdGEoY29uc3QgSFRUUEJvZHkmIGh0dHBCb2R5KQogewotICAgIFJlZlB0cjxGb3JtRGF0
YT4gZm9ybURhdGEgPSBGb3JtRGF0YTo6Y3JlYXRlKCk7CisgICAgYXV0byBmb3JtRGF0YSA9IEZv
cm1EYXRhOjpjcmVhdGUoKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGh0dHBC
b2R5LmVsZW1lbnRzKSB7CiAgICAgICAgIHN3aXRjaCAoZWxlbWVudC50eXBlKSB7CkBAIC0xNDEs
NyArMTQxLDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8Rm9ybURhdGE+IHRvRm9ybURhdGEoY29uc3Qg
SFRUUEJvZHkmIGh0dHBCb2R5KQogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIGZvcm1E
YXRhLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92ZShmb3JtRGF0YSk7CiB9CiAKIHN0YXRp
YyB2b2lkIGFwcGx5RnJhbWVTdGF0ZShIaXN0b3J5SXRlbSYgaGlzdG9yeUl0ZW0sIGNvbnN0IEZy
YW1lU3RhdGUmIGZyYW1lU3RhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmlu
ZGV4IGExNDdmMjBkZjhmOTdjYjVkYTNiYWY2OTNlMzM0MDRkMTUwMDhlN2UuLmYxYWU1NTQzMTA0
NGJmODllYjU2MDA5NTI0NDc4NGRmZDgwYmVjYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCkBAIC0xNDM1LDExICsxNDM1LDExIEBAIFJlZlB0cjxXaWRnZXQ+IFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVt
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIFJlZlB0cjxQ
bHVnaW4+IHBsdWdpbiA9IG1fZnJhbWUtPnBhZ2UoKS0+Y3JlYXRlUGx1Z2luKG1fZnJhbWUsIHBs
dWdpbkVsZW1lbnQsIHBhcmFtZXRlcnMsIHBhcmFtZXRlcnMubWltZVR5cGUpOworICAgIGF1dG8g
cGx1Z2luID0gbV9mcmFtZS0+cGFnZSgpLT5jcmVhdGVQbHVnaW4obV9mcmFtZSwgcGx1Z2luRWxl
bWVudCwgcGFyYW1ldGVycywgcGFyYW1ldGVycy5taW1lVHlwZSk7CiAgICAgaWYgKCFwbHVnaW4p
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFBsdWdpblZpZXc6OmNyZWF0
ZShwbHVnaW5FbGVtZW50LCBwbHVnaW4ucmVsZWFzZSgpLCBwYXJhbWV0ZXJzKTsKKyAgICByZXR1
cm4gUGx1Z2luVmlldzo6Y3JlYXRlKHBsdWdpbkVsZW1lbnQsIFdURk1vdmUocGx1Z2luKSwgcGFy
YW1ldGVycyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShwbHVnaW5FbGVtZW50KTsKICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTE0NTQsOCArMTQ1NCw4IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OnJlY3JlYXRlUGx1Z2luKFdpZGdldCogd2lkZ2V0KQogCiAgICAgUGx1Z2luVmlldyog
cGx1Z2luVmlldyA9IHN0YXRpY19jYXN0PFBsdWdpblZpZXcqPih3aWRnZXQpOwogICAgIFN0cmlu
ZyBuZXdNSU1FVHlwZTsKLSAgICBSZWZQdHI8UGx1Z2luPiBwbHVnaW4gPSBtX2ZyYW1lLT5wYWdl
KCktPmNyZWF0ZVBsdWdpbihtX2ZyYW1lLCBwbHVnaW5WaWV3LT5wbHVnaW5FbGVtZW50KCksIHBs
dWdpblZpZXctPmluaXRpYWxQYXJhbWV0ZXJzKCksIG5ld01JTUVUeXBlKTsKLSAgICBwbHVnaW5W
aWV3LT5yZWNyZWF0ZUFuZEluaXRpYWxpemUocGx1Z2luLnJlbGVhc2UoKSk7CisgICAgYXV0byBw
bHVnaW4gPSBtX2ZyYW1lLT5wYWdlKCktPmNyZWF0ZVBsdWdpbihtX2ZyYW1lLCBwbHVnaW5WaWV3
LT5wbHVnaW5FbGVtZW50KCksIHBsdWdpblZpZXctPmluaXRpYWxQYXJhbWV0ZXJzKCksIG5ld01J
TUVUeXBlKTsKKyAgICBwbHVnaW5WaWV3LT5yZWNyZWF0ZUFuZEluaXRpYWxpemUoV1RGTW92ZShw
bHVnaW4pKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHdpZGdldCk7CiAjZW5kaWYKQEAgLTE0
ODgsNyArMTQ4OCw3IEBAIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSBXZWJGcmFtZUxvYWRlckNs
aWVudDo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFN0CiBQYXNzUmVmUHRyPFdpZGdl
dD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50
U2l6ZSYgcGx1Z2luU2l6ZSwgSFRNTEFwcGxldEVsZW1lbnQqIGFwcGxldEVsZW1lbnQsIGNvbnN0
IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgcGFyYW1WYWx1ZXMpCiB7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0g
ICAgUmVmUHRyPFdpZGdldD4gcGx1Z2luID0gY3JlYXRlUGx1Z2luKHBsdWdpblNpemUsIGFwcGxl
dEVsZW1lbnQsIFVSTCgpLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcywgYXBwbGV0RWxlbWVudC0+
c2VydmljZVR5cGUoKSwgZmFsc2UpOworICAgIGF1dG8gcGx1Z2luID0gY3JlYXRlUGx1Z2luKHBs
dWdpblNpemUsIGFwcGxldEVsZW1lbnQsIFVSTCgpLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcywg
YXBwbGV0RWxlbWVudC0+c2VydmljZVR5cGUoKSwgZmFsc2UpOwogICAgIGlmICghcGx1Z2luKSB7
CiAgICAgICAgIGlmIChXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpKSB7CiAgICAg
ICAgICAgICBTdHJpbmcgZnJhbWVVUkxTdHJpbmcgPSBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9h
ZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2VVUkwoKS5zdHJpbmcoKTsKQEAgLTE0OTYs
NyArMTQ5Niw3IEBAIFBhc3NSZWZQdHI8V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3Jl
YXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiBwCiAgICAgICAgICAgICB3ZWJQYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZhaWxUb0luaXRpYWxpemVQbHVnaW4o
YXBwbGV0RWxlbWVudC0+c2VydmljZVR5cGUoKSwgZnJhbWVVUkxTdHJpbmcsIHBhZ2VVUkxTdHJp
bmcpKTsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gcGx1Z2luLnJlbGVhc2UoKTsKKyAg
ICByZXR1cm4gV1RGTW92ZShwbHVnaW4pOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocGx1Z2lu
U2l6ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGFwcGxldEVsZW1lbnQpOwpAQCAtMTcwMSw4ICsxNzAx
LDggQEAgYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkRm9yY2VVbml2ZXJzYWxBY2Nl
c3NGcm9tTG9jYWxVUkwoY29uc3QgV2ViQ29yZToKIAogUGFzc1JlZlB0cjxGcmFtZU5ldHdvcmtp
bmdDb250ZXh0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlTmV0d29ya2luZ0NvbnRleHQo
KQogewotICAgIFJlZlB0cjxXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0PiBjb250ZXh0ID0gV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dDo6Y3JlYXRlKG1fZnJhbWUpOwotICAgIHJldHVybiBjb250
ZXh0LnJlbGVhc2UoKTsKKyAgICBhdXRvIGNvbnRleHQgPSBXZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0OjpjcmVhdGUobV9mcmFtZSk7CisgICAgcmV0dXJuIFdURk1vdmUoY29udGV4dCk7CiB9CiAK
ICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5j
cHAKaW5kZXggMDIxYWJmYTUwMDkyNTAwZTFkNWMxYzNjMGUyNTI3ZTg0N2I3NmYzOC4uOTY4OTI5
ZmRhMzQ3OWFhZDJiZTRhMTBhMGI0NTk2YWUxNzU1NmQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50LmNwcApAQCAtMTA3LDkgKzEwNyw5IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50Ojpo
aWdobGlnaHQoKQogewogI2lmICFQTEFURk9STShJT1MpCiAgICAgaWYgKCFtX2hpZ2hsaWdodE92
ZXJsYXkpIHsKLSAgICAgICAgUmVmUHRyPFBhZ2VPdmVybGF5PiBoaWdobGlnaHRPdmVybGF5ID0g
UGFnZU92ZXJsYXk6OmNyZWF0ZSgqdGhpcyk7Ci0gICAgICAgIG1faGlnaGxpZ2h0T3ZlcmxheSA9
IGhpZ2hsaWdodE92ZXJsYXkuZ2V0KCk7Ci0gICAgICAgIG1fcGFnZS0+bWFpbkZyYW1lKCktPnBh
Z2VPdmVybGF5Q29udHJvbGxlcigpLmluc3RhbGxQYWdlT3ZlcmxheShoaWdobGlnaHRPdmVybGF5
LnJlbGVhc2UoKSwgUGFnZU92ZXJsYXk6OkZhZGVNb2RlOjpGYWRlKTsKKyAgICAgICAgYXV0byBo
aWdobGlnaHRPdmVybGF5ID0gUGFnZU92ZXJsYXk6OmNyZWF0ZSgqdGhpcyk7CisgICAgICAgIG1f
aGlnaGxpZ2h0T3ZlcmxheSA9IGhpZ2hsaWdodE92ZXJsYXkucHRyKCk7CisgICAgICAgIG1fcGFn
ZS0+bWFpbkZyYW1lKCktPnBhZ2VPdmVybGF5Q29udHJvbGxlcigpLmluc3RhbGxQYWdlT3Zlcmxh
eShXVEZNb3ZlKGhpZ2hsaWdodE92ZXJsYXkpLCBQYWdlT3ZlcmxheTo6RmFkZU1vZGU6OkZhZGUp
OwogICAgICAgICBtX2hpZ2hsaWdodE92ZXJsYXktPnNldE5lZWRzRGlzcGxheSgpOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIG1faGlnaGxpZ2h0T3ZlcmxheS0+c3RvcEZhZGVPdXRBbmltYXRpb24o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYkRyYWdDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCmluZGV4IDVhMDM4NTliZjEyNzk2MDZm
ZjcwM2M5NzE4NzA1ZTBlNGQ3NWRlNjcuLjBiZDI1ODc0ZmY1YmYwODE3ZDc5MWY0ODczMTBlZjYw
YzU3YTUzMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQpAQCAtNTYsNyArNTYs
NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiBjb252ZXJ0SW1hZ2VUb0JpdG1hcChOU0ltYWdlICppbWFnZSwgY29uc3QgSW50U2l6ZSYg
c2l6ZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzaXplLCBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxw
aGEpOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUo
c2l6ZSwgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKTsKICAgICBpZiAoIWJpdG1hcCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTcyLDcgKzcyLDcgQEAgc3RhdGljIFBhc3NS
ZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0SW1hZ2VUb0JpdG1hcChOU0ltYWdlICppbWFn
ZSwgY29uc3QgSW4KIAogICAgIFtOU0dyYXBoaWNzQ29udGV4dCBzZXRDdXJyZW50Q29udGV4dDpz
YXZlZENvbnRleHQuZ2V0KCldOwogCi0gICAgcmV0dXJuIGJpdG1hcC5yZWxlYXNlKCk7CisgICAg
cmV0dXJuIFdURk1vdmUoYml0bWFwKTsKIH0KIAogdm9pZCBXZWJEcmFnQ2xpZW50OjpzdGFydERy
YWcoUmV0YWluUHRyPE5TSW1hZ2U+IGltYWdlLCBjb25zdCBJbnRQb2ludCYgcG9pbnQsIGNvbnN0
IEludFBvaW50JiwgRGF0YVRyYW5zZmVyJiwgRnJhbWUmIGZyYW1lLCBib29sIGxpbmtEcmFnKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxl
ci5jcHAKaW5kZXggOWYxMTkzZjQ5MzI3OTMyNzk5MDA1NDAzODY4ZWFkYzBkNjI0ODg2ZC4uMWUw
Y2VmNDY1MWI5M2JmODBmYjcwNTY2NWM2ZjYxNWZlYWJjMmE4OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCkBAIC0xOTIs
OSArMTkyLDkgQEAgdm9pZCBGaW5kQ29udHJvbGxlcjo6dXBkYXRlRmluZFVJQWZ0ZXJQYWdlU2Ny
b2xsKGJvb2wgZm91bmQsIGNvbnN0IFN0cmluZyYgc3RyaW4KICAgICAgICAgICAgIG1fd2ViUGFn
ZS0+bWFpbkZyYW1lKCktPnBhZ2VPdmVybGF5Q29udHJvbGxlcigpLnVuaW5zdGFsbFBhZ2VPdmVy
bGF5KG1fZmluZFBhZ2VPdmVybGF5LCBQYWdlT3ZlcmxheTo6RmFkZU1vZGU6OkZhZGUpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIGlmICghbV9maW5kUGFnZU92ZXJsYXkpIHsKLSAgICAgICAgICAg
IFJlZlB0cjxQYWdlT3ZlcmxheT4gZmluZFBhZ2VPdmVybGF5ID0gUGFnZU92ZXJsYXk6OmNyZWF0
ZSgqdGhpcywgUGFnZU92ZXJsYXk6Ok92ZXJsYXlUeXBlOjpEb2N1bWVudCk7Ci0gICAgICAgICAg
ICBtX2ZpbmRQYWdlT3ZlcmxheSA9IGZpbmRQYWdlT3ZlcmxheS5nZXQoKTsKLSAgICAgICAgICAg
IG1fd2ViUGFnZS0+bWFpbkZyYW1lKCktPnBhZ2VPdmVybGF5Q29udHJvbGxlcigpLmluc3RhbGxQ
YWdlT3ZlcmxheShmaW5kUGFnZU92ZXJsYXkucmVsZWFzZSgpLCBQYWdlT3ZlcmxheTo6RmFkZU1v
ZGU6OkZhZGUpOworICAgICAgICAgICAgYXV0byBmaW5kUGFnZU92ZXJsYXkgPSBQYWdlT3Zlcmxh
eTo6Y3JlYXRlKCp0aGlzLCBQYWdlT3ZlcmxheTo6T3ZlcmxheVR5cGU6OkRvY3VtZW50KTsKKyAg
ICAgICAgICAgIG1fZmluZFBhZ2VPdmVybGF5ID0gZmluZFBhZ2VPdmVybGF5LnB0cigpOworICAg
ICAgICAgICAgbV93ZWJQYWdlLT5tYWluRnJhbWUoKS0+cGFnZU92ZXJsYXlDb250cm9sbGVyKCku
aW5zdGFsbFBhZ2VPdmVybGF5KFdURk1vdmUoZmluZFBhZ2VPdmVybGF5KSwgUGFnZU92ZXJsYXk6
OkZhZGVNb2RlOjpGYWRlKTsKICAgICAgICAgfQogICAgICAgICBtX2ZpbmRQYWdlT3ZlcmxheS0+
c2V0TmVlZHNEaXNwbGF5KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5jcHAK
aW5kZXggOGUyMmY2ZWE1OGExNjUyOTRhMDNiZGQxZjJhMWZiZTc5YWJjZmFhMi4uMWEzOWUzZTEw
N2RjMWZkYWIzMmNkMzYyN2U1NGNmMjg1ZjZkMGM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlzaXRlZExpbmtUYWJsZUNvbnRy
b2xsZXIuY3BwCkBAIC01MCwxMCArNTAsMTAgQEAgUGFzc1JlZlB0cjxWaXNpdGVkTGlua1RhYmxl
Q29udHJvbGxlcj4gVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXI6OmdldE9yQ3JlYXRlKHUKICAg
ICBpZiAodmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXJQdHIpCiAgICAgICAgIHJldHVybiB2aXNp
dGVkTGlua1RhYmxlQ29udHJvbGxlclB0cjsKIAotICAgIFJlZlB0cjxWaXNpdGVkTGlua1RhYmxl
Q29udHJvbGxlcj4gdmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIgPSBhZG9wdFJlZihuZXcgVmlz
aXRlZExpbmtUYWJsZUNvbnRyb2xsZXIoaWRlbnRpZmllcikpOwotICAgIHZpc2l0ZWRMaW5rVGFi
bGVDb250cm9sbGVyUHRyID0gdmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIuZ2V0KCk7CisgICAg
YXV0byB2aXNpdGVkTGlua1RhYmxlQ29udHJvbGxlciA9IGFkb3B0UmVmKCpuZXcgVmlzaXRlZExp
bmtUYWJsZUNvbnRyb2xsZXIoaWRlbnRpZmllcikpOworICAgIHZpc2l0ZWRMaW5rVGFibGVDb250
cm9sbGVyUHRyID0gdmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIucHRyKCk7CiAKLSAgICByZXR1
cm4gdmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZN
b3ZlKHZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyKTsKIH0KIAogVmlzaXRlZExpbmtUYWJsZUNv
bnRyb2xsZXI6OlZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyKHVpbnQ2NF90IGlkZW50aWZpZXIp
CkBAIC05MCwxMSArOTAsMTEgQEAgdm9pZCBWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlcjo6YWRk
VmlzaXRlZExpbmsoUGFnZSYgcGFnZSwgTGlua0hhc2ggbGlua0hhc2gpCiAKIHZvaWQgVmlzaXRl
ZExpbmtUYWJsZUNvbnRyb2xsZXI6OnNldFZpc2l0ZWRMaW5rVGFibGUoY29uc3QgU2hhcmVkTWVt
b3J5OjpIYW5kbGUmIGhhbmRsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRN
ZW1vcnkgPSBTaGFyZWRNZW1vcnk6Om1hcChoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlv
bjo6UmVhZE9ubHkpOworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5OjptYXAo
aGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICBpZiAoIXNo
YXJlZE1lbW9yeSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV92aXNpdGVkTGlua1RhYmxlLnNl
dFNoYXJlZE1lbW9yeShzaGFyZWRNZW1vcnkucmVsZWFzZSgpKTsKKyAgICBtX3Zpc2l0ZWRMaW5r
VGFibGUuc2V0U2hhcmVkTWVtb3J5KFdURk1vdmUoc2hhcmVkTWVtb3J5KSk7CiAKICAgICBpbnZh
bGlkYXRlU3R5bGVzRm9yQWxsTGlua3MoKTsKICAgICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLm1h
cmtQYWdlc0ZvclZpc2l0ZWRMaW5rU3R5bGVSZWNhbGMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDJiNTU0MGRmN2E1MTE5Njg2MjE5
YjVkNTlmMDUzZmYzNTI2YzhhZWYuLjllYzI2NDU3Y2MyNDM5NDMyNWRmZTRkMmViNTcyZWMzZGQx
YmQ0NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcApAQCAtMTEwLDE4ICsxMTAsMTggQEAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlTGlzdGVu
ZXJJRCgpCiAKIFBhc3NSZWZQdHI8V2ViRnJhbWU+IFdlYkZyYW1lOjpjcmVhdGVXaXRoQ29yZU1h
aW5GcmFtZShXZWJQYWdlKiBwYWdlLCBXZWJDb3JlOjpGcmFtZSogY29yZUZyYW1lKQogewotICAg
IFJlZlB0cjxXZWJGcmFtZT4gZnJhbWUgPSBjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPFdlYkZyYW1l
TG9hZGVyQ2xpZW50PihzdGF0aWNfY2FzdDxXZWJGcmFtZUxvYWRlckNsaWVudCo+KCZjb3JlRnJh
bWUtPmxvYWRlcigpLmNsaWVudCgpKSkpOworICAgIGF1dG8gZnJhbWUgPSBjcmVhdGUoc3RkOjp1
bmlxdWVfcHRyPFdlYkZyYW1lTG9hZGVyQ2xpZW50PihzdGF0aWNfY2FzdDxXZWJGcmFtZUxvYWRl
ckNsaWVudCo+KCZjb3JlRnJhbWUtPmxvYWRlcigpLmNsaWVudCgpKSkpOwogICAgIHBhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ3JlYXRlTWFpbkZyYW1lKGZyYW1lLT5mcmFt
ZUlEKCkpLCBwYWdlLT5wYWdlSUQoKSwgSVBDOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRp
bmdGb3JTeW5jUmVwbHkpOwogCiAgICAgZnJhbWUtPm1fY29yZUZyYW1lID0gY29yZUZyYW1lOwog
ICAgIGZyYW1lLT5tX2NvcmVGcmFtZS0+dHJlZSgpLnNldE5hbWUoU3RyaW5nKCkpOwogICAgIGZy
YW1lLT5tX2NvcmVGcmFtZS0+aW5pdCgpOwotICAgIHJldHVybiBmcmFtZS5yZWxlYXNlKCk7Cisg
ICAgcmV0dXJuIGZyYW1lOwogfQogCiBQYXNzUmVmUHRyPFdlYkZyYW1lPiBXZWJGcmFtZTo6Y3Jl
YXRlU3ViZnJhbWUoV2ViUGFnZSogcGFnZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIEhUTUxG
cmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50KQogewotICAgIFJlZlB0cjxXZWJGcmFtZT4g
ZnJhbWUgPSBjcmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJGcmFtZUxvYWRlckNsaWVudD4oKSk7
CisgICAgYXV0byBmcmFtZSA9IGNyZWF0ZShzdGQ6Om1ha2VfdW5pcXVlPFdlYkZyYW1lTG9hZGVy
Q2xpZW50PigpKTsKICAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENy
ZWF0ZVN1YmZyYW1lKGZyYW1lLT5mcmFtZUlEKCkpLCBwYWdlLT5wYWdlSUQoKSwgSVBDOjpEaXNw
YXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwogCiAgICAgUmVmPFdlYkNv
cmU6OkZyYW1lPiBjb3JlRnJhbWUgPSBGcmFtZTo6Y3JlYXRlKHBhZ2UtPmNvcmVQYWdlKCksIG93
bmVyRWxlbWVudCwgZnJhbWUtPm1fZnJhbWVMb2FkZXJDbGllbnQuZ2V0KCkpOwpAQCAtMTMyLDE3
ICsxMzIsMTcgQEAgUGFzc1JlZlB0cjxXZWJGcmFtZT4gV2ViRnJhbWU6OmNyZWF0ZVN1YmZyYW1l
KFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmluZyYgZnJhbWUKICAgICAgICAgb3duZXJFbGVtZW50
LT5kb2N1bWVudCgpLmZyYW1lKCktPnRyZWUoKS5hcHBlbmRDaGlsZChXVEZNb3ZlKGNvcmVGcmFt
ZSkpOwogICAgIH0KICAgICBmcmFtZS0+bV9jb3JlRnJhbWUtPmluaXQoKTsKLSAgICByZXR1cm4g
ZnJhbWUucmVsZWFzZSgpOworICAgIHJldHVybiBmcmFtZTsKIH0KIAogUGFzc1JlZlB0cjxXZWJG
cmFtZT4gV2ViRnJhbWU6OmNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8V2ViRnJhbWVMb2FkZXJDbGll
bnQ+IGZyYW1lTG9hZGVyQ2xpZW50KQogewotICAgIFJlZlB0cjxXZWJGcmFtZT4gZnJhbWUgPSBh
ZG9wdFJlZihuZXcgV2ViRnJhbWUoV1RGTW92ZShmcmFtZUxvYWRlckNsaWVudCkpKTsKKyAgICBh
dXRvIGZyYW1lID0gYWRvcHRSZWYoKm5ldyBXZWJGcmFtZShXVEZNb3ZlKGZyYW1lTG9hZGVyQ2xp
ZW50KSkpOwogCiAgICAgLy8gQWRkIGV4cGxpY3QgcmVmKCkgdGhhdCB3aWxsIGJlIGJhbGFuY2Vk
IGluIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmcmFtZUxvYWRlckRlc3Ryb3llZCgpLgogICAgIGZy
YW1lLT5yZWYoKTsKIAotICAgIHJldHVybiBmcmFtZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdU
Rk1vdmUoZnJhbWUpOwogfQogCiBXZWJGcmFtZTo6V2ViRnJhbWUoc3RkOjp1bmlxdWVfcHRyPFdl
YkZyYW1lTG9hZGVyQ2xpZW50PiBmcmFtZUxvYWRlckNsaWVudCkKQEAgLTgxOCw3ICs4MTgsNyBA
QCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gV2ViRnJhbWU6OmNyZWF0ZVNlbGVjdGlvblNu
YXBzaG90KCkgY29uc3QKICAgICBpZiAoIXNuYXBzaG90KQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNoYXJlZFNuYXBzaG90ID0gU2hhcmVh
YmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc25hcHNob3QtPmludGVybmFsU2l6ZSgpLCBTaGFy
ZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpOworICAgIGF1dG8gc2hhcmVkU25hcHNob3QgPSBT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzbmFwc2hvdC0+aW50ZXJuYWxTaXplKCks
IFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CiAgICAgaWYgKCFzaGFyZWRTbmFwc2hv
dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTgyOSw3ICs4MjksNyBAQCBQYXNzUmVm
UHRyPFNoYXJlYWJsZUJpdG1hcD4gV2ViRnJhbWU6OmNyZWF0ZVNlbGVjdGlvblNuYXBzaG90KCkg
Y29uc3QKICAgICBncmFwaGljc0NvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShkZXZpY2VTY2FsZUZh
Y3RvciwgZGV2aWNlU2NhbGVGYWN0b3IpKTsKICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdDb25z
dW1pbmdJbWFnZUJ1ZmZlcihXVEZNb3ZlKHNuYXBzaG90KSwgRmxvYXRQb2ludCgpKTsKIAotICAg
IHJldHVybiBzaGFyZWRTbmFwc2hvdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1vdmUoc2hh
cmVkU25hcHNob3QpOwogfQogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNjI1Mjg3ZWU3NWIy
MTJiNDhjNTZmYjgyYmQwZThmN2EwYjdlMWYzMi4uNjg5NDM0MzVlYTFhOWIyMDhkNmRmNGZiOWFj
ZDkyOWZkZGQ4ZjkwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcApAQCAtNzU0LDggKzc1NCw4IEBAIFBhc3NSZWZQdHI8UGx1Z2luPiBXZWJQYWdl
OjpjcmVhdGVQbHVnaW4oV2ViRnJhbWUqIGZyYW1lLCBIVE1MUGx1Z0luRWxlbWVudCogcGx1CiAj
aWYgRU5BQkxFKFBERktJVF9QTFVHSU4pCiAgICAgICAgIFN0cmluZyBwYXRoID0gcGFyYW1ldGVy
cy51cmwucGF0aCgpOwogICAgICAgICBpZiAoc2hvdWxkVXNlUERGUGx1Z2luKCkgJiYgKE1JTUVU
eXBlUmVnaXN0cnk6OmlzUERGT3JQb3N0U2NyaXB0TUlNRVR5cGUocGFyYW1ldGVycy5taW1lVHlw
ZSkgfHwgKHBhcmFtZXRlcnMubWltZVR5cGUuaXNFbXB0eSgpICYmIChwYXRoLmVuZHNXaXRoKCIu
cGRmIiwgZmFsc2UpIHx8IHBhdGguZW5kc1dpdGgoIi5wcyIsIGZhbHNlKSkpKSkgewotICAgICAg
ICAgICAgUmVmUHRyPFBERlBsdWdpbj4gcGRmUGx1Z2luID0gUERGUGx1Z2luOjpjcmVhdGUoZnJh
bWUpOwotICAgICAgICAgICAgcmV0dXJuIHBkZlBsdWdpbi5yZWxlYXNlKCk7CisgICAgICAgICAg
ICBhdXRvIHBkZlBsdWdpbiA9IFBERlBsdWdpbjo6Y3JlYXRlKGZyYW1lKTsKKyAgICAgICAgICAg
IHJldHVybiBXVEZNb3ZlKHBkZlBsdWdpbik7CiAgICAgICAgIH0KICNlbHNlCiAgICAgICAgIFVO
VVNFRF9QQVJBTShmcmFtZSk7CkBAIC0xODcwLDcgKzE4NzAsNyBAQCBQYXNzUmVmUHRyPFdlYklt
YWdlPiBXZWJQYWdlOjpzbmFwc2hvdEF0U2l6ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJ
bnRTaXplJgogICAgIGZsb2F0IHZlcnRpY2FsU2NhbGVGYWN0b3IgPSBzdGF0aWNfY2FzdDxmbG9h
dD4oYml0bWFwU2l6ZS5oZWlnaHQoKSkgLyByZWN0LmhlaWdodCgpOwogICAgIGZsb2F0IHNjYWxl
RmFjdG9yID0gc3RkOjptYXgoaG9yaXpvbnRhbFNjYWxlRmFjdG9yLCB2ZXJ0aWNhbFNjYWxlRmFj
dG9yKTsKIAotICAgIFJlZlB0cjxXZWJJbWFnZT4gc25hcHNob3QgPSBXZWJJbWFnZTo6Y3JlYXRl
KGJpdG1hcFNpemUsIHNuYXBzaG90T3B0aW9uc1RvSW1hZ2VPcHRpb25zKG9wdGlvbnMpKTsKKyAg
ICBhdXRvIHNuYXBzaG90ID0gV2ViSW1hZ2U6OmNyZWF0ZShiaXRtYXBTaXplLCBzbmFwc2hvdE9w
dGlvbnNUb0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7CiAgICAgaWYgKCFzbmFwc2hvdC0+Yml0bWFw
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0xODc4LDcgKzE4NzgsNyBAQCBQYXNz
UmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFwc2hvdEF0U2l6ZShjb25zdCBJbnRSZWN0JiBy
ZWN0LCBjb25zdCBJbnRTaXplJgogCiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNQ
cmludGluZykgewogICAgICAgICBQcmludENvbnRleHQ6OnNwb29sQWxsUGFnZXNXaXRoQm91bmRh
cmllcygqY29yZUZyYW1lLCAqZ3JhcGhpY3NDb250ZXh0LCBzbmFwc2hvdFJlY3Quc2l6ZSgpKTsK
LSAgICAgICAgcmV0dXJuIHNuYXBzaG90LnJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJuIHNuYXBz
aG90OwogICAgIH0KIAogICAgIENvbG9yIGRvY3VtZW50QmFja2dyb3VuZENvbG9yID0gZnJhbWVW
aWV3LT5kb2N1bWVudEJhY2tncm91bmRDb2xvcigpOwpAQCAtMTkxMCw3ICsxOTEwLDcgQEAgUGFz
c1JlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNob3RBdFNpemUoY29uc3QgSW50UmVjdCYg
cmVjdCwgY29uc3QgSW50U2l6ZSYKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zdHJva2VSZWN0
KHNlbGVjdGlvblJlY3RhbmdsZSwgMSk7CiAgICAgfQogICAgIAotICAgIHJldHVybiBzbmFwc2hv
dC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHNuYXBzaG90OwogfQogCiBQYXNzUmVmUHRyPFdlYklt
YWdlPiBXZWJQYWdlOjpzbmFwc2hvdE5vZGUoV2ViQ29yZTo6Tm9kZSYgbm9kZSwgU25hcHNob3RP
cHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIG1heGltdW1QaXhlbENvdW50KQpAQCAtMTkzOSw3ICsx
OTM5LDcgQEAgUGFzc1JlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNob3ROb2RlKFdlYkNv
cmU6Ok5vZGUmIG5vZGUsIFNuYXBzaG90T3B0aW9ucwogICAgICAgICBzbmFwc2hvdFNpemUgPSBJ
bnRTaXplKHNuYXBzaG90U2l6ZS53aWR0aCgpICogc2NhbGVGYWN0b3IsIG1heGltdW1IZWlnaHQp
OwogICAgIH0KIAotICAgIFJlZlB0cjxXZWJJbWFnZT4gc25hcHNob3QgPSBXZWJJbWFnZTo6Y3Jl
YXRlKHNuYXBzaG90U2l6ZSwgc25hcHNob3RPcHRpb25zVG9JbWFnZU9wdGlvbnMob3B0aW9ucykp
OworICAgIGF1dG8gc25hcHNob3QgPSBXZWJJbWFnZTo6Y3JlYXRlKHNuYXBzaG90U2l6ZSwgc25h
cHNob3RPcHRpb25zVG9JbWFnZU9wdGlvbnMob3B0aW9ucykpOwogICAgIGlmICghc25hcHNob3Qt
PmJpdG1hcCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTk2Myw3ICsxOTYzLDcg
QEAgUGFzc1JlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNob3ROb2RlKFdlYkNvcmU6Ok5v
ZGUmIG5vZGUsIFNuYXBzaG90T3B0aW9ucwogICAgIGZyYW1lVmlldy0+c2V0QmFzZUJhY2tncm91
bmRDb2xvcihzYXZlZEJhY2tncm91bmRDb2xvcik7CiAgICAgZnJhbWVWaWV3LT5zZXROb2RlVG9E
cmF3KG51bGxwdHIpOwogCi0gICAgcmV0dXJuIHNuYXBzaG90LnJlbGVhc2UoKTsKKyAgICByZXR1
cm4gc25hcHNob3Q7CiB9CiAKIHZvaWQgV2ViUGFnZTo6cGFnZURpZFNjcm9sbCgpCkBAIC0zNDE5
LDcgKzM0MTksNyBAQCB2b2lkIFdlYlBhZ2U6OmRyYWdFbmRlZChXZWJDb3JlOjpJbnRQb2ludCBj
bGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYgogCiB2b2lkIFdlYlBhZ2U6Ondp
bGxQZXJmb3JtTG9hZERyYWdEZXN0aW5hdGlvbkFjdGlvbigpCiB7Ci0gICAgbV9zYW5kYm94RXh0
ZW5zaW9uVHJhY2tlci53aWxsUGVyZm9ybUxvYWREcmFnRGVzdGluYXRpb25BY3Rpb24obV9wZW5k
aW5nRHJvcFNhbmRib3hFeHRlbnNpb24ucmVsZWFzZSgpKTsKKyAgICBtX3NhbmRib3hFeHRlbnNp
b25UcmFja2VyLndpbGxQZXJmb3JtTG9hZERyYWdEZXN0aW5hdGlvbkFjdGlvbihXVEZNb3ZlKG1f
cGVuZGluZ0Ryb3BTYW5kYm94RXh0ZW5zaW9uKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6bWF5UGVy
Zm9ybVVwbG9hZERyYWdEZXN0aW5hdGlvbkFjdGlvbigpCkBAIC0zOTcyLDcgKzM5NzIsNyBAQCB2
b2lkIFdlYlBhZ2U6OlNhbmRib3hFeHRlbnNpb25UcmFja2VyOjpkaWRTdGFydFByb3Zpc2lvbmFs
TG9hZChXZWJGcmFtZSogZnJhbWUpCiAKICAgICBBU1NFUlQoIW1fcHJvdmlzaW9uYWxTYW5kYm94
RXh0ZW5zaW9uKTsKIAotICAgIG1fcHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uID0gbV9wZW5k
aW5nUHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uLnJlbGVhc2UoKTsKKyAgICBtX3Byb3Zpc2lv
bmFsU2FuZGJveEV4dGVuc2lvbiA9IFdURk1vdmUobV9wZW5kaW5nUHJvdmlzaW9uYWxTYW5kYm94
RXh0ZW5zaW9uKTsKICAgICBpZiAoIW1fcHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTM5ODksNyArMzk4OSw3IEBAIHZvaWQgV2ViUGFnZTo6U2FuZGJv
eEV4dGVuc2lvblRyYWNrZXI6OmRpZENvbW1pdFByb3Zpc2lvbmFsTG9hZChXZWJGcmFtZSogZnJh
bWUpCiAgICAgaWYgKG1fY29tbWl0dGVkU2FuZGJveEV4dGVuc2lvbikKICAgICAgICAgbV9jb21t
aXR0ZWRTYW5kYm94RXh0ZW5zaW9uLT5yZXZva2UoKTsKIAotICAgIG1fY29tbWl0dGVkU2FuZGJv
eEV4dGVuc2lvbiA9IG1fcHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uLnJlbGVhc2UoKTsKKyAg
ICBtX2NvbW1pdHRlZFNhbmRib3hFeHRlbnNpb24gPSBXVEZNb3ZlKG1fcHJvdmlzaW9uYWxTYW5k
Ym94RXh0ZW5zaW9uKTsKIAogICAgIC8vIFdlIGNhbiBhbHNvIGhhdmUgYSBub24tbnVsbCBtX3Bl
bmRpbmdQcm92aXNpb25hbFNhbmRib3hFeHRlbnNpb24gaWYgYSBuZXcgbG9hZCBpcyBiZWluZyBz
dGFydGVkLgogICAgIC8vIFRoaXMgZXh0ZW5zaW9uIGlzIG5vdCBjbGVhcmVkLCBiZWNhdXNlIGl0
IGRvZXMgbm90IHBlcnRhaW4gdG8gdGhlIGZhaWxlZCBsb2FkLCBhbmQgd2lsbCBiZSBuZWVkZWQu
CkBAIC00MTQ4LDcgKzQxNDgsNyBAQCB2b2lkIFdlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZSh1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgY29ucwogICAgICAgICBB
U1NFUlQoY29yZUZyYW1lLT5kb2N1bWVudCgpLT5wcmludGluZygpKTsKICNlbmRpZgogCi0gICAg
ICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3Jl
YXRlU2hhcmVhYmxlKGltYWdlU2l6ZSwgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKTsK
KyAgICAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShp
bWFnZVNpemUsIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CiAgICAgICAgIGF1dG8g
Z3JhcGhpY3NDb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKIAogICAg
ICAgICBmbG9hdCBwcmludGluZ1NjYWxlID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGltYWdlU2l6ZS53
aWR0aCgpKSAvIHJlY3Qud2lkdGgoKTsKQEAgLTQxNjYsNyArNDE2Niw3IEBAIHZvaWQgV2ViUGFn
ZTo6ZHJhd1JlY3RUb0ltYWdlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJp
bnRJbmZvLCBjb25zCiAgICAgICAgICAgICBtX3ByaW50Q29udGV4dC0+c3Bvb2xSZWN0KCpncmFw
aGljc0NvbnRleHQsIHJlY3QpOwogICAgICAgICB9CiAKLSAgICAgICAgaW1hZ2UgPSBXZWJJbWFn
ZTo6Y3JlYXRlKGJpdG1hcC5yZWxlYXNlKCkpOworICAgICAgICBpbWFnZSA9IFdlYkltYWdlOjpj
cmVhdGUoV1RGTW92ZShiaXRtYXApKTsKICAgICB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94eS5jcHAKaW5k
ZXggZjlhODYzMDhmNThjOTk3MGM2NGRjNGU3MmU3NGE5NjIwNGFlOWFkYy4uYzZmYjcyMTk2NDRh
ZDZkNDVlZjkzNmQ1ZGVmYmJmNzk0Y2ViMWE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJveHkuY3BwCkBAIC0zNywxMiAr
MzcsMTIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIFBhc3NSZWZQdHI8V2ViUGFnZUdyb3VwUHJv
eHk+IFdlYlBhZ2VHcm91cFByb3h5OjpjcmVhdGUoY29uc3QgV2ViUGFnZUdyb3VwRGF0YSYgZGF0
YSkKIHsKLSAgICBSZWZQdHI8V2ViUGFnZUdyb3VwUHJveHk+IHBhZ2VHcm91cCA9IGFkb3B0UmVm
KG5ldyBXZWJQYWdlR3JvdXBQcm94eShkYXRhKSk7Ci0gICAgCisgICAgYXV0byBwYWdlR3JvdXAg
PSBhZG9wdFJlZigqbmV3IFdlYlBhZ2VHcm91cFByb3h5KGRhdGEpKTsKKwogICAgIGlmIChwYWdl
R3JvdXAtPmlzVmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUoKSAmJiBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5pbmplY3RlZEJ1bmRsZSgpKQotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5p
bmplY3RlZEJ1bmRsZSgpLT5kaWRJbml0aWFsaXplUGFnZUdyb3VwKHBhZ2VHcm91cC5nZXQoKSk7
CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmluamVjdGVkQnVuZGxlKCktPmRpZElu
aXRpYWxpemVQYWdlR3JvdXAocGFnZUdyb3VwLnB0cigpKTsKIAotICAgIHJldHVybiBwYWdlR3Jv
dXAucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKHBhZ2VHcm91cCk7CiB9CiAKIFdlYlBh
Z2VHcm91cFByb3h5OjpXZWJQYWdlR3JvdXBQcm94eShjb25zdCBXZWJQYWdlR3JvdXBEYXRhJiBk
YXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9Q
bGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tCmluZGV4IDZhODZmMTcxYzJi
MjA2Y2EyNjAzMTJlYWQ0OGRjYzMxOGZiMTQzYWYuLjU4MTVjZmU2MTBmZGQ0NmMwNDA1ZGViZDQ0
YmFjOGEwZTE4MzkxNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUubW0KQEAg
LTI5NCw3ICsyOTQsNyBAQCBib29sIFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OlByb3BlcnRp
ZXM6OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlcgogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAgICBwcm9wZXJ0
aWVzLnRpbWluZ0Z1bmN0aW9ucy51bmNoZWNrZWRBcHBlbmQodGltaW5nRnVuY3Rpb24ucmVsZWFz
ZSgpKTsKKyAgICAgICAgICAgIHByb3BlcnRpZXMudGltaW5nRnVuY3Rpb25zLnVuY2hlY2tlZEFw
cGVuZChXVEZNb3ZlKHRpbWluZ0Z1bmN0aW9uKSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxh
eWVyUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxh
dGZvcm1DQUxheWVyUmVtb3RlLmNwcAppbmRleCAyMTllODNjMTE0MDc5YTUwZmJjYjA0ZDYxMTE3
N2E4YWY3Zjc4ZGM4Li4yNDc2ODI1MzI3ZTY0Y2UxOWI4MzA5OGE0ZDllOTk4NWVkNDgzODU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3Jt
Q0FMYXllclJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCkBAIC01Niw3ICs1Niw3IEBAIFBhc3NSZWZQ
dHI8UGxhdGZvcm1DQUxheWVyUmVtb3RlPiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNyZWF0ZShM
YXllclR5cGUgbGF5ZXJUCiAKICAgICBjb250ZXh0LmxheWVyV2FzQ3JlYXRlZCgqbGF5ZXIsIGxh
eWVyVHlwZSk7CiAKLSAgICByZXR1cm4gbGF5ZXIucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZN
b3ZlKGxheWVyKTsKIH0KIAogUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+IFBsYXRm
b3JtQ0FMYXllclJlbW90ZTo6Y3JlYXRlKFBsYXRmb3JtTGF5ZXIgKnBsYXRmb3JtTGF5ZXIsIFBs
YXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRleHQmIGNvbnRl
eHQpCkBAIC02NiwxMSArNjYsMTEgQEAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+
IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6Y3JlYXRlKFBsYXRmb3JtTGF5ZXIgKnAKIAogUGFzc1Jl
ZlB0cjxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6Y3JlYXRl
KGNvbnN0IFBsYXRmb3JtQ0FMYXllclJlbW90ZSYgb3RoZXIsIFdlYkNvcmU6OlBsYXRmb3JtQ0FM
YXllckNsaWVudCogb3duZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRleHQmIGNvbnRleHQpCiB7Ci0g
ICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllclJlbW90ZT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgUGxh
dGZvcm1DQUxheWVyUmVtb3RlKG90aGVyLCBvd25lciwgY29udGV4dCkpOworICAgIGF1dG8gbGF5
ZXIgPSBhZG9wdFJlZigqbmV3IFBsYXRmb3JtQ0FMYXllclJlbW90ZShvdGhlciwgb3duZXIsIGNv
bnRleHQpKTsKIAotICAgIGNvbnRleHQubGF5ZXJXYXNDcmVhdGVkKCpsYXllciwgb3RoZXIubGF5
ZXJUeXBlKCkpOworICAgIGNvbnRleHQubGF5ZXJXYXNDcmVhdGVkKGxheWVyLmdldCgpLCBvdGhl
ci5sYXllclR5cGUoKSk7CiAKLSAgICByZXR1cm4gbGF5ZXIucmVsZWFzZSgpOworICAgIHJldHVy
biBXVEZNb3ZlKGxheWVyKTsKIH0KIAogUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGUoTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBv
d25lciwgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYgY29udGV4dCkKQEAgLTk1LDEyICs5NSwxMiBA
QCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OlBsYXRmb3JtQ0FMYXllclJlbW90ZShjb25zdCBQbGF0
Zm9ybUNBTGF5ZXJSZW1vdGUmIG90aGVyLAogCiBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4g
UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjbG9uZShQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVy
KSBjb25zdAogewotICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+IGNsb25lID0gUGxh
dGZvcm1DQUxheWVyUmVtb3RlOjpjcmVhdGUoKnRoaXMsIG93bmVyLCAqbV9jb250ZXh0KTsKKyAg
ICBhdXRvIGNsb25lID0gUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjcmVhdGUoKnRoaXMsIG93bmVy
LCAqbV9jb250ZXh0KTsKIAogICAgIHVwZGF0ZUNsb25lZExheWVyUHJvcGVydGllcygqY2xvbmUp
OwogCiAgICAgY2xvbmUtPnNldENsb25lZExheWVyKHRoaXMpOwotICAgIHJldHVybiBjbG9uZS5y
ZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1vdmUoY2xvbmUpOwogfQogCiBQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGU6On5QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20u
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXll
clJlbW90ZUN1c3RvbS5tbQppbmRleCAxNTQyYTZiZmI0MTY5YzMxYWU5ZjhiZTYxZjQ5MmI0ZTc2
NjQyYmM3Li41N2IzY2MxMTEyMjQ5ZjcwODY5MGI1MzVjNjk0MTk2YjU0NGQzNGZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXll
clJlbW90ZUN1c3RvbS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbQpAQCAtNDgsMTAgKzQ4LDEwIEBAIHN0
YXRpYyBOU1N0cmluZyAqIGNvbnN0IHBsYXRmb3JtQ0FMYXllclBvaW50ZXIgPSBAIldLUGxhdGZv
cm1DQUxheWVyIjsKIAogUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+IFBsYXRmb3Jt
Q0FMYXllclJlbW90ZUN1c3RvbTo6Y3JlYXRlKFBsYXRmb3JtTGF5ZXIgKnBsYXRmb3JtTGF5ZXIs
IFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRleHQmIGNv
bnRleHQpCiB7Ci0gICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllclJlbW90ZT4gbGF5ZXIgPSBhZG9w
dFJlZihuZXcgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tKFBsYXRmb3JtQ0FMYXllckNvY29h
OjpsYXllclR5cGVGb3JQbGF0Zm9ybUxheWVyKHBsYXRmb3JtTGF5ZXIpLCBwbGF0Zm9ybUxheWVy
LCBvd25lciwgY29udGV4dCkpOwotICAgIGNvbnRleHQubGF5ZXJXYXNDcmVhdGVkKCpsYXllciwg
bGF5ZXItPmxheWVyVHlwZSgpKTsKKyAgICBhdXRvIGxheWVyID0gYWRvcHRSZWYoKm5ldyBQbGF0
Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20oUGxhdGZvcm1DQUxheWVyQ29jb2E6OmxheWVyVHlwZUZv
clBsYXRmb3JtTGF5ZXIocGxhdGZvcm1MYXllciksIHBsYXRmb3JtTGF5ZXIsIG93bmVyLCBjb250
ZXh0KSk7CisgICAgY29udGV4dC5sYXllcldhc0NyZWF0ZWQobGF5ZXIuZ2V0KCksIGxheWVyLT5s
YXllclR5cGUoKSk7CiAKLSAgICByZXR1cm4gbGF5ZXIucmVsZWFzZSgpOworICAgIHJldHVybiBX
VEZNb3ZlKGxheWVyKTsKIH0KIAogUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGVDdXN0b20oTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1MYXllciAq
IGN1c3RvbUxheWVyLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyLCBSZW1vdGVMYXllclRy
ZWVDb250ZXh0JiBjb250ZXh0KQpAQCAtMTI3LDEzICsxMjcsMTMgQEAgUGFzc1JlZlB0cjxXZWJD
b3JlOjpQbGF0Zm9ybUNBTGF5ZXI+IFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6Y2xvbmUo
UGxhdGZvcm0KICAgICAgICAgY29weUNvbnRlbnRzID0gZmFsc2U7CiAgICAgfQogCi0gICAgUmVm
UHRyPFBsYXRmb3JtQ0FMYXllclJlbW90ZT4gY2xvbmUgPSBhZG9wdFJlZihuZXcgUGxhdGZvcm1D
QUxheWVyUmVtb3RlQ3VzdG9tKGxheWVyVHlwZSgpLCBjbG9uZWRMYXllci5nZXQoKSwgb3duZXIs
ICpjb250ZXh0KCkpKTsKLSAgICBjb250ZXh0KCktPmxheWVyV2FzQ3JlYXRlZCgqY2xvbmUsIGNs
b25lLT5sYXllclR5cGUoKSk7CisgICAgYXV0byBjbG9uZSA9IGFkb3B0UmVmKCpuZXcgUGxhdGZv
cm1DQUxheWVyUmVtb3RlQ3VzdG9tKGxheWVyVHlwZSgpLCBjbG9uZWRMYXllci5nZXQoKSwgb3du
ZXIsICpjb250ZXh0KCkpKTsKKyAgICBjb250ZXh0KCktPmxheWVyV2FzQ3JlYXRlZChjbG9uZS5n
ZXQoKSwgY2xvbmUtPmxheWVyVHlwZSgpKTsKIAotICAgIHVwZGF0ZUNsb25lZExheWVyUHJvcGVy
dGllcygqY2xvbmUsIGNvcHlDb250ZW50cyk7CisgICAgdXBkYXRlQ2xvbmVkTGF5ZXJQcm9wZXJ0
aWVzKGNsb25lLmdldCgpLCBjb3B5Q29udGVudHMpOwogCiAgICAgY2xvbmUtPnNldENsb25lZExh
eWVyKHRoaXMpOwotICAgIHJldHVybiBjbG9uZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1v
dmUoY2xvbmUpOwogfQogCiBDRlR5cGVSZWYgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpj
b250ZW50cygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQppbmRl
eCBmZmU4Y2NmNDgyMmYzYWU2Nzk3Mzg0ZDU0MzQ3MWM0ODYzOTM4NjNmLi45NmNlNzM3ZjEyYzMz
NGQ5YTUzMmU1ZjFmZTlhMDczOTg5YjA4YjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWEubW0KQEAgLTExMSw5ICsxMTEsOSBAQCBHcmFwaGljc0xheWVyRmFjdG9yeSogUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkKIAogUmVmUHRy
PERpc3BsYXlSZWZyZXNoTW9uaXRvcj4gUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmNyZWF0
ZURpc3BsYXlSZWZyZXNoTW9uaXRvcihQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCiB7Ci0g
ICAgUmVmUHRyPFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcj4gbW9uaXRvciA9
IFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcjo6Y3JlYXRlKGRpc3BsYXlJRCwg
KnRoaXMpOwotICAgIG1fZGlzcGxheVJlZnJlc2hNb25pdG9ycy5hZGQobW9uaXRvci5nZXQoKSk7
Ci0gICAgcmV0dXJuIG1vbml0b3IucmVsZWFzZSgpOworICAgIGF1dG8gbW9uaXRvciA9IFJlbW90
ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcjo6Y3JlYXRlKGRpc3BsYXlJRCwgKnRoaXMp
OworICAgIG1fZGlzcGxheVJlZnJlc2hNb25pdG9ycy5hZGQobW9uaXRvci5wdHIoKSk7CisgICAg
cmV0dXJuIFdURk1vdmUobW9uaXRvcik7CiB9CiAKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWE6OndpbGxEZXN0cm95RGlzcGxheVJlZnJlc2hNb25pdG9yKERpc3BsYXlSZWZyZXNoTW9u
aXRvciogbW9uaXRvcikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCA2NWUwZWUyMTE2NjRhMzhmZDczM2JjNmY3OGJkMjFjYzU0ZjZlMTVlLi4xYWM3
ODlmYjYxNDk5Nzk2MzI4ZTc5MDc4YmY0NTUyYmNmZjg2ZWJjIDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTYtMDYt
MTYgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBS
ZWZQdHI6OnJlbGVhc2UoKSBhbmQgY2hhbmdlIGNhbGxzIHNpdGVzIHRvIHVzZSBXVEZNb3ZlKCkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODM2OQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZlB0cjo6
cmVsZWFzZSgpIHJlbGVhc2VzIGl0cyBtYW5hZ2VkIHBvaW50ZXIgYXdrd2FyZGx5LiBJdCdzIG1v
cmUKKyAgICAgICAgZGlyZWN0IGFuZCBjbGVhcmVyIHRvIHVzZSBXVEZNb3ZlIHRvIHRyYW5zZmVy
IG93bmVyc2hpcCBvZiB0aGUgbWFuYWdlZAorICAgICAgICBwb2ludGVyLgorCisgICAgICAgIEFz
IHBhcnQgb2YgdGhpcyBjbGVhbnVwLCBhbHNvIGNoYW5nZSBhIGxvdCBvZiBleHBsaWNpdCBkYXRh
IHR5cGVzIHRvCisgICAgICAgICdhdXRvJy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21h
Yy9QaXhlbER1bXBTdXBwb3J0TWFjLm1tOgorICAgICAgICAoY3JlYXRlQml0bWFwQ29udGV4dEZy
b21XZWJWaWV3KToKKyAgICAgICAgKGNyZWF0ZVBhZ2VkQml0bWFwQ29udGV4dCk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW06CisgICAgICAgIChUZXN0UnVu
bmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbik6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvSGFzaENvdW50ZWRTZXQuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHA6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxNi0wNi0xNiAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIy
MDIwMDIgYW5kIHIyMDIxMTEuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
UGl4ZWxEdW1wU3VwcG9ydE1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9QaXhlbER1
bXBTdXBwb3J0TWFjLm1tCmluZGV4IGUzMzM0ZWZlNTMyOTBjM2RkZGM1ZjVhZWE1NDg4NzFhNzZk
ZmFiZjEuLjlmOTk2ZDMyYzEwYmFhODk3NThjMjhiMTg4YzI4MDg0MTA5YmYyMTAgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9QaXhlbER1bXBTdXBwb3J0TWFjLm1tCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9QaXhlbER1bXBTdXBwb3J0TWFjLm1tCkBAIC0xMjAs
NyArMTIwLDcgQEAgUGFzc1JlZlB0cjxCaXRtYXBDb250ZXh0PiBjcmVhdGVCaXRtYXBDb250ZXh0
RnJvbVdlYlZpZXcoYm9vbCBvbnNjcmVlbiwgYm9vbCBpbmMKICAgICBzaXplX3QgcGl4ZWxzSGln
aCA9IHN0YXRpY19jYXN0PHNpemVfdD4od2ViVmlld1NpemUuaGVpZ2h0ICogZGV2aWNlU2NhbGVG
YWN0b3IpOwogICAgIHNpemVfdCByb3dCeXRlcyA9IDA7CiAgICAgdm9pZCogYnVmZmVyID0gbnVs
bHB0cjsKLSAgICBSZWZQdHI8Qml0bWFwQ29udGV4dD4gYml0bWFwQ29udGV4dCA9IGNyZWF0ZUJp
dG1hcENvbnRleHQocGl4ZWxzV2lkZSwgcGl4ZWxzSGlnaCwgcm93Qnl0ZXMsIGJ1ZmZlcik7Cisg
ICAgYXV0byBiaXRtYXBDb250ZXh0ID0gY3JlYXRlQml0bWFwQ29udGV4dChwaXhlbHNXaWRlLCBw
aXhlbHNIaWdoLCByb3dCeXRlcywgYnVmZmVyKTsKICAgICBpZiAoIWJpdG1hcENvbnRleHQpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gYml0bWFw
Q29udGV4dC0+Y2dDb250ZXh0KCk7CkBAIC0xOTQsNyArMTk0LDcgQEAgUGFzc1JlZlB0cjxCaXRt
YXBDb250ZXh0PiBjcmVhdGVCaXRtYXBDb250ZXh0RnJvbVdlYlZpZXcoYm9vbCBvbnNjcmVlbiwg
Ym9vbCBpbmMKICAgICAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsKICAgICB9
CiAgICAgCi0gICAgcmV0dXJuIGJpdG1hcENvbnRleHQucmVsZWFzZSgpOworICAgIHJldHVybiBi
aXRtYXBDb250ZXh0OwogfQogCiBQYXNzUmVmUHRyPEJpdG1hcENvbnRleHQ+IGNyZWF0ZVBhZ2Vk
Qml0bWFwQ29udGV4dCgpCkBAIC0yMDcsMTAgKzIwNywxMCBAQCBQYXNzUmVmUHRyPEJpdG1hcENv
bnRleHQ+IGNyZWF0ZVBhZ2VkQml0bWFwQ29udGV4dCgpCiAKICAgICBpbnQgdG90YWxIZWlnaHQg
PSBudW1iZXJPZlBhZ2VzICogKHBhZ2VIZWlnaHRJblBpeGVscyArIDEpIC0gMTsKIAotICAgIFJl
ZlB0cjxCaXRtYXBDb250ZXh0PiBiaXRtYXBDb250ZXh0ID0gY3JlYXRlQml0bWFwQ29udGV4dChw
YWdlV2lkdGhJblBpeGVscywgdG90YWxIZWlnaHQsIHJvd0J5dGVzLCBidWZmZXIpOworICAgIGF1
dG8gYml0bWFwQ29udGV4dCA9IGNyZWF0ZUJpdG1hcENvbnRleHQocGFnZVdpZHRoSW5QaXhlbHMs
IHRvdGFsSGVpZ2h0LCByb3dCeXRlcywgYnVmZmVyKTsKICAgICBDR0NvbnRleHRSZWYgY29udGV4
dCA9IGJpdG1hcENvbnRleHQtPmNnQ29udGV4dCgpOwogICAgIENHQ29udGV4dFRyYW5zbGF0ZUNU
TShjb250ZXh0LCAwLCB0b3RhbEhlaWdodCk7CiAgICAgQ0dDb250ZXh0U2NhbGVDVE0oY29udGV4
dCwgMSwgLTEpOwogICAgIFttYWluRnJhbWUgcHJpbnRUb0NHQ29udGV4dDpjb250ZXh0IHBhZ2VX
aWR0aDpwYWdlV2lkdGhJblBpeGVscyBwYWdlSGVpZ2h0OnBhZ2VIZWlnaHRJblBpeGVsc107Ci0g
ICAgcmV0dXJuIGJpdG1hcENvbnRleHQucmVsZWFzZSgpOworICAgIHJldHVybiBiaXRtYXBDb250
ZXh0OwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJN
YWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQppbmRleCBl
NGY1MjQ4Mjg5M2FmNDI3Y2VkMTk2OWY3MWYzODE2M2YyOThkMTdhLi40NDVmNDQ5NDlmOTkzZmIy
MDZhMjEwYjE0MjY2Y2E1MmYzNmNhOTYxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVz
dFJ1bm5lck1hYy5tbQpAQCAtNDI3LDggKzQyNyw4IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9j
a0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBk
CiAgICAgICAgIC8vIFRlc3QgdGhlIGV4cG9zZWQgQVBJLgogICAgICAgICBwb3NpdGlvbiA9IFtb
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbiBhbGxvY10gaW5pdFdpdGhUaW1lc3RhbXA6Y3VycmVudFRp
bWUoKSBsYXRpdHVkZTpsYXRpdHVkZSBsb25naXR1ZGU6bG9uZ2l0dWRlIGFjY3VyYWN5OmFjY3Vy
YWN5XTsKICAgICB9IGVsc2UgewotICAgICAgICBSZWZQdHI8V2ViQ29yZTo6R2VvbG9jYXRpb25Q
b3NpdGlvbj4gY29yZUdlb2xvY2F0aW9uUG9zaXRpb24gPSBXZWJDb3JlOjpHZW9sb2NhdGlvblBv
c2l0aW9uOjpjcmVhdGUoY3VycmVudFRpbWUoKSwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJh
Y3ksIHByb3ZpZGVzQWx0aXR1ZGUsIGFsdGl0dWRlLCBwcm92aWRlc0FsdGl0dWRlQWNjdXJhY3ks
IGFsdGl0dWRlQWNjdXJhY3ksIHByb3ZpZGVzSGVhZGluZywgaGVhZGluZywgcHJvdmlkZXNTcGVl
ZCwgc3BlZWQpOwotICAgICAgICBwb3NpdGlvbiA9IFtbV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiBh
bGxvY10gaW5pdFdpdGhHZW9sb2NhdGlvblBvc2l0aW9uOihjb3JlR2VvbG9jYXRpb25Qb3NpdGlv
bi5yZWxlYXNlKCkpXTsKKyAgICAgICAgYXV0byBjb3JlR2VvbG9jYXRpb25Qb3NpdGlvbiA9IFdl
YkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZShjdXJyZW50VGltZSgpLCBsYXRpdHVk
ZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSwgcHJvdmlkZXNBbHRpdHVkZSwgYWx0aXR1ZGUsIHByb3Zp
ZGVzQWx0aXR1ZGVBY2N1cmFjeSwgYWx0aXR1ZGVBY2N1cmFjeSwgcHJvdmlkZXNIZWFkaW5nLCBo
ZWFkaW5nLCBwcm92aWRlc1NwZWVkLCBzcGVlZCk7CisgICAgICAgIHBvc2l0aW9uID0gW1tXZWJH
ZW9sb2NhdGlvblBvc2l0aW9uIGFsbG9jXSBpbml0V2l0aEdlb2xvY2F0aW9uUG9zaXRpb246KFdU
Rk1vdmUoY29yZUdlb2xvY2F0aW9uUG9zaXRpb24pKV07CiAgICAgfQogICAgIFtbTW9ja0dlb2xv
Y2F0aW9uUHJvdmlkZXIgc2hhcmVkXSBzZXRQb3NpdGlvbjpwb3NpdGlvbl07CiAgICAgW3Bvc2l0
aW9uIHJlbGVhc2VdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
SGFzaENvdW50ZWRTZXQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaENv
dW50ZWRTZXQuY3BwCmluZGV4IDRjMWFmZDEwNWJmMWY3MDIzMDczZjY2MmMyNmZhYjg1Y2I4Mzg1
ZjMuLjZhN2JiMTliNTUzOTgyYjMzNTM5MGVmY2JmNzNjNDdiOWFkZmE5NTkgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hDb3VudGVkU2V0LmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoQ291bnRlZFNldC5jcHAKQEAgLTM3MCw3
ICszNzAsNyBAQCBURVNUKFdURl9IYXNoQ291bnRlZFNldCwgUmVmUHRyS2V5X0FkZFVzaW5nUmVs
ZWFzZSkKICAgICAKICAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKICAgICBSZWZQdHI8UmVm
TG9nZ2VyPiBwdHIoJmEpOwotICAgIGhhc2hDb3VudGVkU2V0LmFkZChwdHIucmVsZWFzZSgpKTsK
KyAgICBoYXNoQ291bnRlZFNldC5hZGQoV1RGTW92ZShwdHIpKTsKICAgICAKICAgICBFWFBFQ1Rf
U1RSRVEoInJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiB9CkBAIC00MzYsNyArNDM2
LDcgQEAgVEVTVChXVEZfSGFzaENvdW50ZWRTZXQsIFJlZlB0cktleV9BZGRVc2luZ1JlbGVhc2VL
ZXlBbHJlYWR5UHJlc2VudCkKICAgICAKICAgICB7CiAgICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+
IHB0cjIoJmEpOwotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IGhhc2hDb3VudGVkU2V0LmFkZChw
dHIyLnJlbGVhc2UoKSk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gaGFzaENvdW50ZWRTZXQu
YWRkKFdURk1vdmUocHRyMikpOwogICAgICAgICBFWFBFQ1RfRkFMU0UoYWRkUmVzdWx0LmlzTmV3
RW50cnkpOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0hhc2hNYXAuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1h
cC5jcHAKaW5kZXggMmYwNjYyM2M0YTQ4YWZiNzQzMDExNzlkYzI2Yjg2NTQ0ZjZmZmQ4NS4uMDhh
NDE0ZGJlMDMxMTEzNzhkYTI5ZWVmNDE3YWY4ZTE2ODAzMDgzNSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAKQEAgLTMwOSw3ICszMDksNyBAQCBURVNUKFdURl9I
YXNoTWFwLCBSZWZQdHJLZXlfQWRkVXNpbmdSZWxlYXNlKQogCiAgICAgRGVyaXZlZFJlZkxvZ2dl
ciBhKCJhIik7CiAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcHRyKCZhKTsKLSAgICBtYXAuYWRkKHB0
ci5yZWxlYXNlKCksIDApOworICAgIG1hcC5hZGQoV1RGTW92ZShwdHIpLCAwKTsKIAogICAgIEVY
UEVDVF9TVFJFUSgicmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIH0KQEAgLTM3Myw3
ICszNzMsNyBAQCBURVNUKFdURl9IYXNoTWFwLCBSZWZQdHJLZXlfQWRkVXNpbmdSZWxlYXNlS2V5
QWxyZWFkeVByZXNlbnQpCiAKICAgICB7CiAgICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+IHB0cjIo
JmEpOwotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1hcC5hZGQocHRyMi5yZWxlYXNlKCksIDAp
OworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1hcC5hZGQoV1RGTW92ZShwdHIyKSwgMCk7CiAg
ICAgICAgIEVYUEVDVF9GQUxTRShhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAgfQogCkBAIC00
MTksNyArNDE5LDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgUmVmUHRyS2V5X1NldFVzaW5nUmVsZWFz
ZSkKIAogICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOwogICAgIFJlZlB0cjxSZWZMb2dnZXI+
IHB0cigmYSk7Ci0gICAgbWFwLnNldChwdHIucmVsZWFzZSgpLCAwKTsKKyAgICBtYXAuc2V0KFdU
Rk1vdmUocHRyKSwgMCk7CiAKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSAiLCB0YWtlTG9nU3Ry
KCkuY19zdHIoKSk7CiB9CkBAIC00ODEsNyArNDgxLDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgUmVm
UHRyS2V5X1NldFVzaW5nUmVsZWFzZUtleUFscmVhZHlQcmVzZW50KQogCiAgICAgewogICAgICAg
ICBSZWZQdHI8UmVmTG9nZ2VyPiBwdHIyKCZhKTsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBt
YXAuc2V0KHB0cjIucmVsZWFzZSgpLCAxKTsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtYXAu
c2V0KFdURk1vdmUocHRyMiksIDEpOwogICAgICAgICBFWFBFQ1RfRkFMU0UoYWRkUmVzdWx0Lmlz
TmV3RW50cnkpOwogICAgICAgICBFWFBFQ1RfRVEoMSwgbWFwLmdldChwdHIuZ2V0KCkpKTsKICAg
ICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281662</attachid>
            <date>2016-06-20 12:26:52 -0700</date>
            <delta_ts>2016-06-20 13:22:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158369-20160620122646.patch</filename>
            <type>text/plain</type>
            <size>296062</size>
            <attacher name="Keith Rollin">krollin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyMTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
YzQyYWM2NmJlMzA5NzZjMDExZGE3NjIzNmM0NWRkMTY4MDZiNmMzLi40NDQ0YjMxM2Y2YjY3MjJh
NTMxODVkNDYwZTNkYmYzNDVhMjgzMTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NSBAQAorMjAxNi0wNi0yMCAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVtb3ZlIFJlZlB0cjo6cmVsZWFzZSgpIGFuZCBjaGFuZ2UgY2FsbHMgc2l0
ZXMgdG8gdXNlIFdURk1vdmUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU4MzY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisK
KyAgICAgICAgUmVmUHRyOjpyZWxlYXNlKCkgcmVsZWFzZXMgaXRzIG1hbmFnZWQgcG9pbnRlciBh
d2t3YXJkbHkuIEl0J3MgbW9yZQorICAgICAgICBkaXJlY3QgYW5kIGNsZWFyZXIgdG8gdXNlIFdU
Rk1vdmUgdG8gdHJhbnNmZXIgb3duZXJzaGlwIG9mIHRoZSBtYW5hZ2VkCisgICAgICAgIHBvaW50
ZXIuCisKKyAgICAgICAgQXMgcGFydCBvZiB0aGlzIGNsZWFudXAsIGFsc28gY2hhbmdlIGEgbG90
IG9mIGV4cGxpY2l0IGRhdGEgdHlwZXMgdG8KKyAgICAgICAgJ2F1dG8nLgorCisgICAgICAgICog
QVBJL0pTT2JqZWN0UmVmLmNwcDoKKyAgICAgICAgKEpTQ2xhc3NDcmVhdGUpOgorICAgICAgICAq
IEFQSS9KU1NjcmlwdFJlZi5jcHA6CisgICAgICAgICogQVBJL0pTVmFsdWVSZWYuY3BwOgorICAg
ICAgICAoSlNWYWx1ZVRvU3RyaW5nQ29weSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL1N0YXRp
Y1Byb3BlcnR5QW5hbHl6ZXIuaDoKKyAgICAgICAgKEpTQzo6U3RhdGljUHJvcGVydHlBbmFseXpl
cjo6bmV3T2JqZWN0KToKKyAgICAgICAgKEpTQzo6U3RhdGljUHJvcGVydHlBbmFseXplcjo6bW92
KToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHA6CisgICAgICAgIChK
U0M6OkRlYnVnZ2VyQ2FsbEZyYW1lOjppbnZhbGlkYXRlKToKKyAgICAgICAgKiBkZmcvREZHSklU
Q29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxlKToK
KyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6
SW5zcGVjdG9yVmFsdWU6OnBhcnNlSlNPTik6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50Ojph
Y3RpdmF0ZUV4dHJhRG9tYWluKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnQ6
OmFjdGl2YXRlRXh0cmFEb21haW5zKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uUHJvYmUpOgorICAgICAgICAqIGluc3BlY3Rvci9y
ZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNw
ZWN0b3I6OnJlY2VpdmVkU2V0dXBNZXNzYWdlKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6
CisgICAgICAgIChKU0M6OmxpbmtQb2x5bW9ycGhpY0NhbGwpOgorICAgICAgICAqIHJ1bnRpbWUv
R2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgICogcnVu
dGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1
Y3RBcnJheUJ1ZmZlcik6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oOgor
ICAgICAgICAoSlNDOjpQcm9wZXJ0eU5hbWVBcnJheTo6cmVsZWFzZURhdGEpOgorICAgICAgICAq
IHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b1N0cnVj
dHVyZVNoYXBlKToKKyAgICAgICAgKiBydW50aW1lL1R5cGVTZXQuY3BwOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmVTaGFwZTo6bWVyZ2UpOgorICAgICAgICAqIHRvb2xzL0Z1bmN0aW9uT3ZlcnJp
ZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6ZU92ZXJyaWRlSW5mbyk6CisKIDIwMTYt
MDYtMTYgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBjb2xs
ZWN0aW5nIG9mIExMSU5UIHNsb3cgcGF0aCBzdGF0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhYjQ3NDBhMmU1
NGZlMjRmOGNjNzI1YWU4ZGI0NzBhNTFlZDEzYWM4Li4xMDU1MzkyYzBhNmM5MGU0MThiYzVjZmNi
MDdmMTJkZjBkZTk1YWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjE4IEBACisyMDE2LTA2LTIw
ICBLZWl0aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgUmVm
UHRyOjpyZWxlYXNlKCkgYW5kIGNoYW5nZSBjYWxscyBzaXRlcyB0byB1c2UgV1RGTW92ZSgpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgzNjkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICBSZWZQdHI6OnJlbGVh
c2UoKSByZWxlYXNlcyBpdHMgbWFuYWdlZCBwb2ludGVyIGF3a3dhcmRseS4gSXQncyBtb3JlCisg
ICAgICAgIGRpcmVjdCBhbmQgY2xlYXJlciB0byB1c2UgV1RGTW92ZSB0byB0cmFuc2ZlciBvd25l
cnNoaXAgb2YgdGhlIG1hbmFnZWQKKyAgICAgICAgcG9pbnRlci4KKworICAgICAgICBBcyBwYXJ0
IG9mIHRoaXMgY2xlYW51cCwgYWxzbyBjaGFuZ2UgYSBsb3Qgb2YgZXhwbGljaXQgZGF0YSB0eXBl
cyB0bworICAgICAgICAnYXV0bycuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzOiB0aGVyZSdzIG5v
IG5ldyBmdW5jdGlvbmFsaXR5LCBqdXN0IGEgcmVmYWN0b3Jpbmcgb2YKKyAgICAgICAgZXhpc3Rp
bmcgY29kZS4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZVNhbXBsZXNGcm9tVHJhY2tCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpwcm92aWRlTWVkaWFEYXRhKToKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VXNlck1lZGlhUmVxdWVzdDo6c3RhcnQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0
YWJhc2UvU1FMQ2FsbGJhY2tXcmFwcGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTUUxDYWxsYmFj
a1dyYXBwZXI6OmNsZWFyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYW5kbGVQb3N0TWVzc2FnZSk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSGlz
dG9yeTo6cHVzaFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSGlzdG9yeTo6cmVwbGFjZVN0
YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmg6CisgICAg
ICAgIChXZWJDb3JlOjpoYW5kbGVQb3N0TWVzc2FnZSk6CisgICAgICAgICogYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xs
ZXI6OmNyZWF0ZVNjcmlwdEluc3RhbmNlRm9yV2lkZ2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNl
cmlhbGl6ZXI6OnJlYWRUZXJtaW5hbCk6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9y
Ojpjb3B5UHJvcGVydGllc0luU2V0KToKKyAgICAgICAgKiBjc3MvU1ZHQ1NTUGFyc2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VTVkdWYWx1ZSk6CisgICAgICAgICog
Y3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0U2hhcGVWYWx1ZSk6CisgICAgICAgICogY3NzL1N0eWxlUHJv
cGVydGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnRpZXM6OmNvcHlQcm9w
ZXJ0aWVzSW5TZXQpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmxvYWRQZW5kaW5nSW1hZ2VzKToKKyAgICAgICAgKiBk
b20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVN0
eWxlU2hlZXRPd25lcjo6Y2xlYXJTaGVldCk6CisgICAgICAgICogZWRpdGluZy9BcHBseVN0eWxl
Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlJ
bmxpbmVTdHlsZVRvTm9kZVJhbmdlKToKKyAgICAgICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRD
b21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZW1v
dmVDaGlsZHJlbkluUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1h
bmQ6OnJlbW92ZU5vZGVBbmRQcnVuZUFuY2VzdG9ycyk6CisgICAgICAgIChXZWJDb3JlOjpDb21w
b3NpdGVFZGl0Q29tbWFuZDo6cHJ1bmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRp
dENvbW1hbmQ6OnJlcGxhY2VTZWxlY3RlZFRleHRJbk5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlYmFsYW5jZVdoaXRlc3BhY2VPblRleHRTdWJzdHJpbmcp
OgorICAgICAgICAqIGVkaXRpbmcvQ3JlYXRlTGlua0NvbW1hbmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q3JlYXRlTGlua0NvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvRWRp
dGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6bWVyZ2VTdHls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6Om1lcmdlU3R5bGVGcm9tUnVsZXNG
b3JTZXJpYWxpemF0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDbGVhclRleHRDb21tYW5kOjpDcmVhdGVBbmRBcHBseSk6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMp
OgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpleGVjdXRlSW5zZXJ0Tm9kZSk6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRUZXh0Q29tbWFuZDo6cGVyZm9ybU92ZXJ3
cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRUZXh0Q29tbWFuZDo6aW5zZXJ0VGFiKToK
KyAgICAgICAgKiBlZGl0aW5nL1JlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5k
Ojpkb0FwcGx5KToKKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VtZW50RnJhZ21lbnQ6OnJlbW92ZU5vZGVQcmVz
ZXJ2aW5nQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQ6Om1vdmVOb2RlT3V0T2ZBbmNlc3Rvcik6CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlE
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNl
cjo6bG9hZERvY3VtZW50VGVtcGxhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTEZvbnRFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb250RWxlbWVudDo6Y29sbGVjdFN0eWxlRm9y
UHJlc2VudGF0aW9uQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OnByZXBhcmVGb3JTdWJtaXNz
aW9uKToKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6bGVha0JvcmRlclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmxlYWtHcm91cEJvcmRl
clN0eWxlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpydW5TY3JpcHRzRm9yUGF1c2Vk
VHJlZUJ1aWxkZXIpOgorICAgICAgICAqIGh0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRUcmFjay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmREYXRhVGV4dFRyYWNrOjphZGREYXRhQ3VlKToK
KyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY1RleHRUcmFjazo6bmV3Q3Vlc1BhcnNlZCk6CisgICAg
ICAgICogaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpuZXdDdWVzUGFyc2VkKToKKyAgICAgICAgKiBo
dG1sL3RyYWNrL1RleHRUcmFja0N1ZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRy
YWNrQ3VlTGlzdDo6YWRkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldElubGluZVN0eWxl
c0Zvck5vZGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cHVzaENoaWxkTm9kZXNUb0Zyb250
ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50Ojpsb2FkUmVzb3VyY2UpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yU2VsZWN0b3JMaXN0KToKKyAgICAgICAg
KiBsb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybVN1Ym1p
c3Npb246OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkVVJMSW50b0NoaWxkRnJhbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRVUkwpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL1Byb2dyZXNzVHJh
Y2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmVzc1RyYWNrZXI6OmZpbmFsUHJvZ3Jl
c3NDb21wbGV0ZSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVH
cm91cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpc2Fz
c29jaWF0ZURvY3VtZW50TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2Fj
aGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlv
bkNhY2hlR3JvdXA6OmNoZWNrSWZMb2FkSXNDb21wbGV0ZSk6CisgICAgICAgICogbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGVHcm91cCk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FjaGVHcm91cEZvclVSTCk6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZmFsbGJhY2tDYWNoZUdyb3VwRm9yVVJM
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUp
OgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjo6cG9wU3ViZnJh
bWVBcmNoaXZlKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24pOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFn
ZTo6Y3JlYXRlSW1hZ2UpOgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OnNldEljb25EYXRhRm9ySWNvblVSTCk6
CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OmdldE9yQ3JlYXRlSWNvblJlY29yZCk6
CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OnJlYWRGcm9tRGF0YWJhc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpnZXRJbWFnZURhdGFGb3JJY29uVVJMRnJvbVNR
TERhdGFiYXNlKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpET01XaW5kb3c6OnNlc3Npb25TdG9yYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdp
bmRvdzo6bG9jYWxTdG9yYWdlKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnVwZGF0ZURyYWdBbmREcm9wKToKKyAgICAg
ICAgKiBwYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29tcG9zaXRlQW5pbWF0aW9uOjp1cGRhdGVUcmFuc2l0aW9ucyk6CisgICAgICAgICog
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0VmlvbGF0aW9uKToKKyAgICAgICAgKiBwYWdlL21h
Yy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZXNPdmVybGF5Q29udHJvbGxlcjo6Y3JlYXRlT3ZlcmxheUlmTmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OmRldGVybWluZUFjdGl2ZUhpZ2hsaWdo
dCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5o
OgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6cmVsZWFzZVNj
cm9sbGluZ1RyZWUpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OmNsb25lQW5kUmVz
ZXQpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVRyZWU6OmF0dGFjaE5vZGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Z2V0Q29uY2F0ZW5hdGVkSW1wdWxzZVJlc3BvbnNlc0ZvclN1YmplY3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6Y3JlYXRlTW9uaXRvckZv
ckNsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZUZvbnRzOjpnbHlwaERhdGFGb3JTeXN0
ZW1GYWxsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0F0dHJpYnV0ZWRTdHJpbmdzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQzo6dXBkYXRl
T3B0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQzo6cHJvY2Vzc0NvZGVkRnJhbWUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtQ0FMYXllcjo6Y3JlYXRlQ29tcGF0aWJsZUxheWVyT3JUYWtlRnJvbVBvb2wpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlQnVmZmVyRGF0YTo6Z2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rmls
dGVyRWZmZWN0Ojphc1VubXVsdGlwbGllZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRl
ckVmZmVjdDo6YXNQcmVtdWx0aXBsaWVkSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL21hYy9JbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpsb2FkUGxhdGZv
cm1SZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dDNET3BlbkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpjcmVhdGVGb3JDdXJyZW50R0xDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSk6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJN
YWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6
Y3JlYXRlTWVkaWFTdHJlYW0pOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXI6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpjcmVhdGVNZWRpYVN0cmVhbSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkJsb2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAg
IChXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Zm9ybUNy
ZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9CaWRpQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpCaWRpQ29udGV4dDo6Y29weVN0YWNrUmVtb3ZpbmdVbmljb2RlRW1iZWRkaW5n
Q29udGV4dHMpOgorICAgICAgICAqIHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6Y3JlYXRlU2Nyb2xsYmFyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJv
eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpjcmVhdGVTY3JvbGxiYXIp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHA6CisgICAgICAgIChSZW5k
ZXJNZW51TGlzdDo6Y3JlYXRlU2Nyb2xsYmFyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
U2VhcmNoRmllbGQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2VhcmNoRmllbGQ6OmNy
ZWF0ZVNjcm9sbGJhcik6CisgICAgICAgICogcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVwbGF5Q29udHJvbGxlcjo6dW5sb2FkU2VnbWVudCk6CisgICAg
ICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcv
U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL3Byb3BlcnRp
ZXMvU1ZHTGlzdFByb3BlcnR5Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0UHJvcGVydHk6
OmdldEl0ZW1WYWx1ZXNBbmRXcmFwcGVycyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0UHJv
cGVydHk6Omluc2VydEl0ZW1CZWZvcmVWYWx1ZXNBbmRXcmFwcGVycyk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdMaXN0UHJvcGVydHk6OnJlbW92ZUl0ZW1WYWx1ZXNBbmRXcmFwcGVycyk6CisgICAg
ICAgICogd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
VGhyZWFkOjp3b3JrZXJUaHJlYWQpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6aW50ZXJuYWxBYm9ydCk6CisgICAg
ICAgICogeG1sL1hQYXRoU3RlcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6U3RlcDo6
bm9kZXNJbkF4aXMpOgorCiAyMDE2LTA2LTE2ICBBZGFtIEJlcmdrdmlzdCAgPGFkYW0uYmVyZ2t2
aXN0QGVyaWNzc29uLmNvbT4KIAogICAgICAgICBXZWJSVEM6IENoZWNrIHR5cGUgb2YgdGhpcyBp
biBSVENQZWVyQ29ubmVjdGlvbiBKUyBidWlsdC1pbiBmdW5jdGlvbnMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNjI4
MmFjMDA2MTFjMDg0ZjExMjQyOGMzMDY1ZWM2ZWQzMDhlMmQzMS4uNTFiOGU4OTYzYTJhYzI4MDkz
ZjU0M2NlZWZiNjM4NmFjY2Y3MWU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxNi0w
Ni0yMCAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3Zl
IFJlZlB0cjo6cmVsZWFzZSgpIGFuZCBjaGFuZ2UgY2FsbHMgc2l0ZXMgdG8gdXNlIFdURk1vdmUo
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MzY5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgUmVmUHRyOjpy
ZWxlYXNlKCkgcmVsZWFzZXMgaXRzIG1hbmFnZWQgcG9pbnRlciBhd2t3YXJkbHkuIEl0J3MgbW9y
ZQorICAgICAgICBkaXJlY3QgYW5kIGNsZWFyZXIgdG8gdXNlIFdURk1vdmUgdG8gdHJhbnNmZXIg
b3duZXJzaGlwIG9mIHRoZSBtYW5hZ2VkCisgICAgICAgIHBvaW50ZXIuCisKKyAgICAgICAgQXMg
cGFydCBvZiB0aGlzIGNsZWFudXAsIGFsc28gY2hhbmdlIGEgbG90IG9mIGV4cGxpY2l0IGRhdGEg
dHlwZXMgdG8KKyAgICAgICAgJ2F1dG8nLgorCisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlQXJl
YUltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFyZWFJbXBsOjpzZXRJdGVtKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhSW1wbDo6cmVtb3ZlSXRlbSk6CisKIDIwMTYt
MDYtMTMgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBBZGQgV2ViU29ja2V0UHJvdmlkZXIgc3R1YgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDc1N2Qy
YTA0MjM1NzZkODQxMzQ4MmE3NWIzNWUwOGRjNjk5ZjJlNTIuLjY4NjAzODk4ZThkZWE4NzU5MDdh
NTZhZTgwYzU1N2NiODI3OGI0OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MCBAQAor
MjAxNi0wNi0yMCAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVtb3ZlIFJlZlB0cjo6cmVsZWFzZSgpIGFuZCBjaGFuZ2UgY2FsbHMgc2l0ZXMgdG8gdXNlIFdU
Rk1vdmUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU4MzY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgUmVm
UHRyOjpyZWxlYXNlKCkgcmVsZWFzZXMgaXRzIG1hbmFnZWQgcG9pbnRlciBhd2t3YXJkbHkuIEl0
J3MgbW9yZQorICAgICAgICBkaXJlY3QgYW5kIGNsZWFyZXIgdG8gdXNlIFdURk1vdmUgdG8gdHJh
bnNmZXIgb3duZXJzaGlwIG9mIHRoZSBtYW5hZ2VkCisgICAgICAgIHBvaW50ZXIuCisKKyAgICAg
ICAgQXMgcGFydCBvZiB0aGlzIGNsZWFudXAsIGFsc28gY2hhbmdlIGEgbG90IG9mIGV4cGxpY2l0
IGRhdGEgdHlwZXMgdG8KKyAgICAgICAgJ2F1dG8nLgorCisgICAgICAgICogUGx1Z2lucy9Ib3N0
ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0c2Nh
cGVQbHVnaW5Ib3N0TWFuYWdlcjo6aW5zdGFudGlhdGVQbHVnaW4pOgorICAgICAgICAqIFBsdWdp
bnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbToKKyAgICAgICAgKFdlYktp
dDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0
OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpkZW1hcnNoYWxWYWx1ZUZyb21BcnJh
eSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06Cisg
ICAgICAgICgtW1dlYkZyYW1lUG9saWN5TGlzdGVuZXIgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbjpd
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbToKKyAgICAg
ICAgKC1bV2ViU2VjdXJpdHlPcmlnaW4gaW5pdFdpdGhVUkw6XSk6CisgICAgICAgICogV2ViVmll
dy9XZWJBcmNoaXZlLm1tOgorICAgICAgICAoLVtXZWJBcmNoaXZlIGluaXRXaXRoTWFpblJlc291
cmNlOnN1YnJlc291cmNlczpzdWJmcmFtZUFyY2hpdmVzOl0pOgorICAgICAgICAoLVtXZWJBcmNo
aXZlIGluaXRXaXRoRGF0YTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06
CisgICAgICAgICgtW1dlYkRhdGFTb3VyY2UgbWFpblJlc291cmNlXSk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2RvY3VtZW50RnJhZ21lbnRX
aXRoTm9kZXNBc1BhcmFncmFwaHM6XSk6CisKKzIwMTYtMDYtMTYgIEtlaXRoIFJvbGxpbiAgPGty
b2xsaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBSZWZQdHI6OnJlbGVhc2UoKSBhbmQg
Y2hhbmdlIGNhbGxzIHNpdGVzIHRvIHVzZSBXVEZNb3ZlKCkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODM2OQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVn
aW5Ib3N0TWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Ib3N0TWFu
YWdlcjo6aW5zdGFudGlhdGVQbHVnaW4pOgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVn
aW5JbnN0YW5jZVByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHk6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQ
bHVnaW5JbnN0YW5jZVByb3h5OjpkZW1hcnNoYWxWYWx1ZUZyb21BcnJheSk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgICgtW1dlYkZy
YW1lUG9saWN5TGlzdGVuZXIgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbjpdKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbToKKyAgICAgICAgKC1bV2ViU2VjdXJp
dHlPcmlnaW4gaW5pdFdpdGhVUkw6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJBcmNoaXZlLm1t
OgorICAgICAgICAoLVtXZWJBcmNoaXZlIGluaXRXaXRoTWFpblJlc291cmNlOnN1YnJlc291cmNl
czpzdWJmcmFtZUFyY2hpdmVzOl0pOgorICAgICAgICAoLVtXZWJBcmNoaXZlIGluaXRXaXRoRGF0
YTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAgICgtW1dl
YkRhdGFTb3VyY2UgbWFpblJlc291cmNlXSk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5t
bToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2RvY3VtZW50RnJhZ21lbnRXaXRoTm9kZXNBc1BhcmFn
cmFwaHM6XSk6CisKIDIwMTYtMDYtMTUgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5j
b20+CiAKICAgICAgICAgK1tXZWJIVE1MUmVwcmVzZW50YXRpb24gc3VwcG9ydGVkTUlNRVR5cGVz
XSBsZWFrcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IGRmYmNjOWNmNjc2MzA4YWRiNWI4YWU3MjI0N2FmNDFkNDNk
ZDZjNTYuLjE0ZjUzNjgyMDJiNWZlNzFjYWZhMGRjMTg0MzI5ZDcwYTkwN2EwMjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyNTEgQEAKKzIwMTYtMDYtMjAgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBSZWZQdHI6OnJlbGVhc2UoKSBhbmQgY2hhbmdl
IGNhbGxzIHNpdGVzIHRvIHVzZSBXVEZNb3ZlKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODM2OQorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlz
IER1bWV6LgorCisgICAgICAgIFJlZlB0cjo6cmVsZWFzZSgpIHJlbGVhc2VzIGl0cyBtYW5hZ2Vk
IHBvaW50ZXIgYXdrd2FyZGx5LiBJdCdzIG1vcmUKKyAgICAgICAgZGlyZWN0IGFuZCBjbGVhcmVy
IHRvIHVzZSBXVEZNb3ZlIHRvIHRyYW5zZmVyIG93bmVyc2hpcCBvZiB0aGUgbWFuYWdlZAorICAg
ICAgICBwb2ludGVyLgorCisgICAgICAgIEFzIHBhcnQgb2YgdGhpcyBjbGVhbnVwLCBhbHNvIGNo
YW5nZSBhIGxvdCBvZiBleHBsaWNpdCBkYXRhIHR5cGVzIHRvCisgICAgICAgICdhdXRvJy4KKwor
ICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpEYXRhYmFzZVByb2Nlc3M6OmNyZWF0ZURhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVj
dGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlRW50cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5Ojppbml0
aWFsaXplU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGVGcm9tU3RvcmFnZVJlY29yZCk6CisgICAgICAg
ICogUGxhdGZvcm0vbWFjL1NoYXJlZE1lbW9yeU1hYy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNo
YXJlZE1lbW9yeTo6YWxsb2NhdGUpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6bWFwKToKKyAgICAgICAgKiBQ
bHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Q
cm9jZXNzOjpjcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgICogU2hhcmVkL0FQ
SS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tOgorICAgICAgICAoZW5jb2RlVG9PYmplY3RT
dHJlYW0pOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0ltYWdlLmNwcDoKKyAgICAgICAgKFdL
SW1hZ2VDcmVhdGUpOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS051bWJlci5jcHA6CisgICAg
ICAgIChXS0Jvb2xlYW5DcmVhdGUpOgorICAgICAgICAoV0tEb3VibGVDcmVhdGUpOgorICAgICAg
ICAoV0tVSW50NjRDcmVhdGUpOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3Jp
Z2luUmVmLmNwcDoKKyAgICAgICAgKFdLU2VjdXJpdHlPcmlnaW5DcmVhdGUpOgorICAgICAgICAq
IFNoYXJlZC9BUEkvYy9XS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXS1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUNyZWF0ZSk6CisgICAgICAgIChXS1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUNyZWF0ZVdpdGhJbnRlcm5hbFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBTaGFyZWQv
QVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcDoKKyAgICAgICAgKFdLSW1hZ2VDcmVhdGVGcm9t
Q2Fpcm9TdXJmYWNlKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcDoK
KyAgICAgICAgKFdLSW1hZ2VDcmVhdGVGcm9tQ0dJbWFnZSk6CisgICAgICAgICogU2hhcmVkL0FQ
SS9jL21hYy9XS0NlcnRpZmljYXRlSW5mb01hYy5tbToKKyAgICAgICAgKFdLQ2VydGlmaWNhdGVJ
bmZvQ3JlYXRlV2l0aENlcnRmaWNhdGVDaGFpbik6CisgICAgICAgICogU2hhcmVkL0FQSS9jL21h
Yy9XS09iakNUeXBlV3JhcHBlclJlZi5tbToKKyAgICAgICAgKFdLT2JqQ1R5cGVXcmFwcGVyQ3Jl
YXRlKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvbWFjL1dLV2ViQXJjaGl2ZS5jcHA6CisgICAg
ICAgIChXS1dlYkFyY2hpdmVDcmVhdGUpOgorICAgICAgICAoV0tXZWJBcmNoaXZlQ3JlYXRlV2l0
aERhdGEpOgorICAgICAgICAoV0tXZWJBcmNoaXZlQ3JlYXRlRnJvbVJhbmdlKToKKyAgICAgICAg
KFdLV2ViQXJjaGl2ZUNvcHlNYWluUmVzb3VyY2UpOgorICAgICAgICAoV0tXZWJBcmNoaXZlQ29w
eVN1YnJlc291cmNlcyk6CisgICAgICAgIChXS1dlYkFyY2hpdmVDb3B5U3ViZnJhbWVBcmNoaXZl
cyk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL21hYy9XS1dlYkFyY2hpdmVSZXNvdXJjZS5jcHA6
CisgICAgICAgIChXS1dlYkFyY2hpdmVSZXNvdXJjZUNyZWF0ZSk6CisgICAgICAgICogU2hhcmVk
L0FQSVdlYkFyY2hpdmUubW06CisgICAgICAgIChBUEk6OldlYkFyY2hpdmU6OldlYkFyY2hpdmUp
OgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldE9yQ3JlYXRl
KToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVS
ZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjptYXApOgor
ICAgICAgICAqIFNoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPERyYWdEYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS1ZpZXcuY3BwOgorICAgICAgICAoV0tWaWV3Q3Jl
YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tCYXR0ZXJ5U3RhdHVzLmNwcDoKKyAg
ICAgICAgKFdLQmF0dGVyeVN0YXR1c0NyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHA6CisgICAgICAgIChXS0dlb2xvY2F0aW9uUG9zaXRp
b25DcmVhdGVfYik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLR3JhbW1hckRldGFpbC5j
cHA6CisgICAgICAgIChXS0dyYW1tYXJEZXRhaWxDcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlQ29weVNlc3Npb25TdGF0ZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcDoKKyAgICAgICAgKFdLUGFn
ZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9X
S1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNDcmVhdGUpOgorICAgICAg
ICAoV0tQcmVmZXJlbmNlc0NyZWF0ZVdpdGhJZGVudGlmaWVyKToKKyAgICAgICAgKFdLUHJlZmVy
ZW5jZXNDcmVhdGVDb3B5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tTZXNzaW9uUmVm
LmNwcDoKKyAgICAgICAgKFdLU2Vzc2lvbkNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL1dLU2Vzc2lvblN0YXRlUmVmLmNwcDoKKyAgICAgICAgKFdLU2Vzc2lvblN0YXRlQ29weURh
dGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5t
bToKKyAgICAgICAgKFdLQ29udGV4dENvcHlQbHVnSW5JbmZvRm9yQnVuZGxlSWRlbnRpZmllcik6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgt
W1dLV2ViVmlldyBsb2FkUmVxdWVzdDpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGxvYWRGaWxl
VVJMOmFsbG93aW5nUmVhZEFjY2Vzc1RvVVJMOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgbG9h
ZERhdGE6TUlNRVR5cGU6Y2hhcmFjdGVyRW5jb2RpbmdOYW1lOmJhc2VVUkw6XSk6CisgICAgICAg
ICgtW1dLV2ViVmlldyBnb1RvQmFja0ZvcndhcmRMaXN0SXRlbTpdKToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IGdvQmFja10pOgorICAgICAgICAoLVtXS1dlYlZpZXcgZ29Gb3J3YXJkXSk6CisgICAg
ICAgICgtW1dLV2ViVmlldyByZWxvYWRdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHJlbG9hZEZy
b21PcmlnaW5dKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9sb2FkRGF0YTpNSU1FVHlwZTpjaGFy
YWN0ZXJFbmNvZGluZ05hbWU6YmFzZVVSTDp1c2VyRGF0YTpdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF9yZWxvYWRXaXRob3V0Q29udGVudEJsb2NrZXJzXSk6CisgICAgICAgICgtW1dLV2ViVmll
dyBfc2Vzc2lvblN0YXRlRGF0YV0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Jlc3RvcmVTZXNz
aW9uU3RhdGU6YW5kTmF2aWdhdGU6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2RhdGFiYXNlX21hbmFnZXIuY3BwOgorICAgICAgICAoRXdrRGF0YWJhc2VNYW5hZ2VyOjpjcmVh
dGVPcmlnaW5MaXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfc3RvcmFnZV9t
YW5hZ2VyLmNwcDoKKyAgICAgICAgKEV3a1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVPcmlnaW5MaXN0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAg
ICAgKHdlYmtpdFdlYlZpZXdDcmVhdGVOZXdQYWdlKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdQ
cmludEZyYW1lKToKKyAgICAgICAgKGdldENvbnRlbnRzQXNNSFRNTERhdGFDYWxsYmFjayk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1Nlc3Npb25TdGF0ZUNvZGluZy5tbToKKyAgICAgICAg
KFdlYktpdDo6ZW5jb2RlU2Vzc2lvblN0YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvR2VuZXJp
Y0NhbGxiYWNrLmg6CisgICAgICAgIChXZWJLaXQ6OkNhbGxiYWNrTWFwOjp0YWtlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6Okdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHk6OmNyZWF0ZVJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHk6OmNyZWF0ZVJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc01h
bmFnZXI6OmdldE9yQ3JlYXRlUGx1Z2luUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1N0
b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdl
cjo6U3RvcmFnZUFyZWE6OnNldEl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdl
cjo6U3RvcmFnZUFyZWE6OnJlbW92ZUl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFu
YWdlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTWFwKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQmFj
a0ZvcndhcmRMaXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0Ojph
ZGRJdGVtKToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0OjpjbGVhcik6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhUVFBDb29raWVBY2Nl
cHRQb2xpY3kpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omluc3RhbGxWaWV3U3RhdGVDaGFuZ2VDb21wbGV0aW9u
SGFuZGxlcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJlZmVyZW5jZXM6OmNyZWF0ZVdpdGhMZWdhY3lEZWZhdWx0cyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByZWZlcmVuY2VzOjpjb3B5KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
fldlYlByb2Nlc3NQb29sKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1ZpZXdTbmFwc2hvdFN0
b3JlLm1tOgorICAgICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3RTdG9yZTo6cmVjb3JkU25hcHNo
b3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVy
Lm1tOgorICAgICAgICAoLVtXS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgX3dlYkhpdFRlc3RS
ZXN1bHRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tOgorICAg
ICAgICAoLVtXS1ByaW50aW5nVmlldyBfYXNrUGFnZVRvQ29tcHV0ZVBhZ2VSZWN0c10pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnNldERyYWdJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUubW06CisgICAgICAg
ICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lIGhpdFRlc3Q6XSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJl
c3VsdC5tbToKKyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdCBub2Rl
SGFuZGxlXSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2Ev
V0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5tbToKKyAgICAgICAgKCtbV0tXZWJQcm9jZXNz
UGx1Z0luTm9kZUhhbmRsZSBub2RlSGFuZGxlV2l0aEpTVmFsdWU6aW5Db250ZXh0Ol0pOgorICAg
ICAgICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlIGh0bWxJRnJhbWVFbGVtZW50Q29u
dGVudEZyYW1lXSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29j
b2EvV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQubW06CisgICAgICAgICgrW1dLV2ViUHJv
Y2Vzc1BsdWdJblNjcmlwdFdvcmxkIHdvcmxkXSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBvc3RTeW5j
aHJvbm91c01lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwOgorICAgICAgICAoV0tCdW5kbGVET01X
aW5kb3dFeHRlbnNpb25DcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAgICAgKFdLQnVuZGxlSGl0
VGVzdFJlc3VsdENvcHlOb2RlSGFuZGxlKToKKyAgICAgICAgKFdLQnVuZGxlSGl0VGVzdFJlc3Vs
dENvcHlVUkxFbGVtZW50SGFuZGxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHA6CisgICAgICAgIChXS0J1bmRs
ZU5hdmlnYXRpb25BY3Rpb25Db3B5SGl0VGVzdFJlc3VsdCk6CisgICAgICAgIChXS0J1bmRsZU5h
dmlnYXRpb25BY3Rpb25Db3B5Rm9ybUVsZW1lbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdLQnVu
ZGxlTm9kZUhhbmRsZUNyZWF0ZSk6CisgICAgICAgIChXS0J1bmRsZU5vZGVIYW5kbGVDb3B5RG9j
dW1lbnQpOgorICAgICAgICAoV0tCdW5kbGVOb2RlSGFuZGxlQ29weVNuYXBzaG90V2l0aE9wdGlv
bnMpOgorICAgICAgICAoV0tCdW5kbGVOb2RlSGFuZGxlQ29weVZpc2libGVSYW5nZSk6CisgICAg
ICAgIChXS0J1bmRsZU5vZGVIYW5kbGVDb3B5SFRNTFRhYmxlQ2VsbEVsZW1lbnRDZWxsQWJvdmUp
OgorICAgICAgICAoV0tCdW5kbGVOb2RlSGFuZGxlQ29weURvY3VtZW50RnJhbWUpOgorICAgICAg
ICAoV0tCdW5kbGVOb2RlSGFuZGxlQ29weUhUTUxGcmFtZUVsZW1lbnRDb250ZW50RnJhbWUpOgor
ICAgICAgICAoV0tCdW5kbGVOb2RlSGFuZGxlQ29weUhUTUxJRnJhbWVFbGVtZW50Q29udGVudEZy
YW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UGFnZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBhZ2VDcmVhdGVTbmFwc2hvdFdpdGhPcHRpb25z
KToKKyAgICAgICAgKFdLQnVuZGxlUGFnZUNyZWF0ZVNuYXBzaG90SW5WaWV3Q29vcmRpbmF0ZXMp
OgorICAgICAgICAoV0tCdW5kbGVQYWdlQ3JlYXRlU25hcHNob3RJbkRvY3VtZW50Q29vcmRpbmF0
ZXMpOgorICAgICAgICAoV0tCdW5kbGVQYWdlQ3JlYXRlU2NhbGVkU25hcHNob3RJbkRvY3VtZW50
Q29vcmRpbmF0ZXMpOgorICAgICAgICAoV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9ub3VzTWVzc2Fn
ZUZvclRlc3RpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVSYW5nZUhhbmRsZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVJhbmdlSGFuZGxlQ3Jl
YXRlKToKKyAgICAgICAgKFdLQnVuZGxlUmFuZ2VIYW5kbGVDb3B5U25hcHNob3RXaXRoT3B0aW9u
cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVNj
cmlwdFdvcmxkLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlU2NyaXB0V29ybGRDcmVhdGVXb3JsZCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NTm9kZS5t
bToKKyAgICAgICAgKC1bV0tET01Ob2RlIF9jb3B5QnVuZGxlTm9kZUhhbmRsZVJlZl0pOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tOgor
ICAgICAgICAoLVtXS0RPTVJhbmdlIF9jb3B5QnVuZGxlUmFuZ2VIYW5kbGVSZWZdKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZUNTU1N0eWxl
RGVjbGFyYXRpb25IYW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZUNT
U1N0eWxlRGVjbGFyYXRpb25IYW5kbGU6OmdldE9yQ3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjppbWFnZUZvclJlY3QpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1
bmRsZU5vZGVIYW5kbGU6OnJlbmRlcmVkSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpnZXRPckNyZWF0ZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpjcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHNjYXBlUGx1Z2luOjpsb2FkVVJMKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERG
L0RlcHJlY2F0ZWRQREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Y3Jl
YXRlU2Nyb2xsYmFyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZUFyZWFN
YXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6YXBwbHlDaGFuZ2UpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6OnRvRm9ybURhdGEpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKToKKyAgICAgICAgKFdlYktp
dDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnJlY3JlYXRlUGx1Z2luKToKKyAgICAgICAgKFdlYktp
dDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlTmV0d29ya2luZ0NvbnRleHQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yQ2xpZW50OjpoaWdobGlnaHQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMu
bW06CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRJbWFnZVRvQml0bWFwKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpG
aW5kQ29udHJvbGxlcjo6dXBkYXRlRmluZFVJQWZ0ZXJQYWdlU2Nyb2xsKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlcjo6Z2V0T3JDcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlcjo6c2V0VmlzaXRlZExpbmtU
YWJsZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWU6OmNyZWF0ZVdpdGhDb3JlTWFpbkZyYW1lKToKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWU6OmNyZWF0ZVN1YmZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnJhbWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpjcmVhdGVTZWxlY3Rp
b25TbmFwc2hvdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjcmVhdGVQbHVnaW4pOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpzbmFwc2hvdEF0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNu
YXBzaG90Tm9kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OndpbGxQZXJmb3JtTG9hZERy
YWdEZXN0aW5hdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OlNhbmRib3hF
eHRlbnNpb25UcmFja2VyOjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OlNhbmRib3hFeHRlbnNpb25UcmFja2VyOjpkaWRDb21taXRQcm92aXNpb25h
bExvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkcmF3UmVjdFRvSW1hZ2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VHcm91cFByb3h5OjpjcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZS5tbToKKyAgICAgICAgKFdl
YktpdDo6UGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6UHJvcGVydGllczo6ZGVjb2RlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjbG9uZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW06CisgICAg
ICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpjbG9uZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmNyZWF0ZURpc3Bs
YXlSZWZyZXNoTW9uaXRvcik6CisKIDIwMTYtMDYtMTUgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZy
YXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPUyBXSzJdIE9uIGlQYWQsIGluZGlyZWN0IGZv
Y3Vzc2luZyBvZiBhIHRleHQgZmllbGQgZG9lc24ndCBhbHdheXMgc2Nyb2xsIHRvIHRoZSBjb3Jy
ZWN0IGxvY2F0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2Jq
ZWN0UmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCmlu
ZGV4IDM3Y2Q2NTczMjM3MDA4NTFiMjU3OWQ2NDM2YjQxMzUzMzUzZThkMmUuLmMxZGRjMzI3MWY3
ODUyNGQ3NzFhNjRkMWI1Y2Q2ZmQxODljODkxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNPYmplY3RSZWYuY3BwCkBAIC02NiwxMSArNjYsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIEpT
QzsKIEpTQ2xhc3NSZWYgSlNDbGFzc0NyZWF0ZShjb25zdCBKU0NsYXNzRGVmaW5pdGlvbiogZGVm
aW5pdGlvbikKIHsKICAgICBpbml0aWFsaXplVGhyZWFkaW5nKCk7Ci0gICAgUmVmUHRyPE9wYXF1
ZUpTQ2xhc3M+IGpzQ2xhc3MgPSAoZGVmaW5pdGlvbi0+YXR0cmlidXRlcyAmIGtKU0NsYXNzQXR0
cmlidXRlTm9BdXRvbWF0aWNQcm90b3R5cGUpCisgICAgYXV0byBqc0NsYXNzID0gKGRlZmluaXRp
b24tPmF0dHJpYnV0ZXMgJiBrSlNDbGFzc0F0dHJpYnV0ZU5vQXV0b21hdGljUHJvdG90eXBlKQog
ICAgICAgICA/IE9wYXF1ZUpTQ2xhc3M6OmNyZWF0ZU5vQXV0b21hdGljUHJvdG90eXBlKGRlZmlu
aXRpb24pCiAgICAgICAgIDogT3BhcXVlSlNDbGFzczo6Y3JlYXRlKGRlZmluaXRpb24pOwogICAg
IAotICAgIHJldHVybiBqc0NsYXNzLnJlbGVhc2UoKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuICZq
c0NsYXNzLmxlYWtSZWYoKTsKIH0KIAogSlNDbGFzc1JlZiBKU0NsYXNzUmV0YWluKEpTQ2xhc3NS
ZWYganNDbGFzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3Jp
cHRSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAKaW5k
ZXggNjBiZGU2MDRlMzU4NTE2ZjFlZjZjYWEyM2Q4MTI0ODkyY2NmYTk1NS4uODNkMWZlNjJmMTBh
MmQwOTI5MzEwYmYzOGFlZjI2MmRiYmUyYzNmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1NjcmlwdFJlZi5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgSlNTY3JpcHRSZWYgSlNTY3JpcHRD
cmVhdGVSZWZlcmVuY2luZ0ltbW9ydGFsQVNDSUlUZXh0KEpTQ29udGV4dEdyb3VwUmVmIGNvbnRl
eHQKIAogICAgIHN0YXJ0aW5nTGluZU51bWJlciA9IHN0ZDo6bWF4KDEsIHN0YXJ0aW5nTGluZU51
bWJlcik7CiAKLSAgICBSZWZQdHI8T3BhcXVlSlNTY3JpcHQ+IHJlc3VsdCA9IE9wYXF1ZUpTU2Ny
aXB0OjpjcmVhdGUodm0sIHVybCA/IHVybC0+c3RyaW5nKCkgOiBTdHJpbmcoKSwgc3RhcnRpbmdM
aW5lTnVtYmVyLCBTdHJpbmcoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoc291cmNlLCBs
ZW5ndGgpKSk7CisgICAgYXV0byByZXN1bHQgPSBPcGFxdWVKU1NjcmlwdDo6Y3JlYXRlKHZtLCB1
cmwgPyB1cmwtPnN0cmluZygpIDogU3RyaW5nKCksIHN0YXJ0aW5nTGluZU51bWJlciwgU3RyaW5n
KFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKHNvdXJjZSwgbGVuZ3RoKSkpOwogCiAgICAg
UGFyc2VyRXJyb3IgZXJyb3I7CiAgICAgaWYgKCFwYXJzZVNjcmlwdCh2bSwgU291cmNlQ29kZShy
ZXN1bHQpLCBlcnJvcikpIHsKQEAgLTEwNCw3ICsxMDQsNyBAQCBKU1NjcmlwdFJlZiBKU1Njcmlw
dENyZWF0ZVJlZmVyZW5jaW5nSW1tb3J0YWxBU0NJSVRleHQoSlNDb250ZXh0R3JvdXBSZWYgY29u
dGV4dAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gcmVzdWx0
LnJlbGVhc2UoKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIHJlc3VsdC5sZWFrUmVmKCk7CiB9CiAK
IEpTU2NyaXB0UmVmIEpTU2NyaXB0Q3JlYXRlRnJvbVN0cmluZyhKU0NvbnRleHRHcm91cFJlZiBj
b250ZXh0R3JvdXAsIEpTU3RyaW5nUmVmIHVybCwgaW50IHN0YXJ0aW5nTGluZU51bWJlciwgSlNT
dHJpbmdSZWYgc291cmNlLCBKU1N0cmluZ1JlZiogZXJyb3JNZXNzYWdlLCBpbnQqIGVycm9yTGlu
ZSkKQEAgLTExNCw3ICsxMTQsNyBAQCBKU1NjcmlwdFJlZiBKU1NjcmlwdENyZWF0ZUZyb21TdHJp
bmcoSlNDb250ZXh0R3JvdXBSZWYgY29udGV4dEdyb3VwLCBKU1N0cmluZ1JlZgogCiAgICAgc3Rh
cnRpbmdMaW5lTnVtYmVyID0gc3RkOjptYXgoMSwgc3RhcnRpbmdMaW5lTnVtYmVyKTsKIAotICAg
IFJlZlB0cjxPcGFxdWVKU1NjcmlwdD4gcmVzdWx0ID0gT3BhcXVlSlNTY3JpcHQ6OmNyZWF0ZSh2
bSwgdXJsID8gdXJsLT5zdHJpbmcoKSA6IFN0cmluZygpLCBzdGFydGluZ0xpbmVOdW1iZXIsIHNv
dXJjZS0+c3RyaW5nKCkpOworICAgIGF1dG8gcmVzdWx0ID0gT3BhcXVlSlNTY3JpcHQ6OmNyZWF0
ZSh2bSwgdXJsID8gdXJsLT5zdHJpbmcoKSA6IFN0cmluZygpLCBzdGFydGluZ0xpbmVOdW1iZXIs
IHNvdXJjZS0+c3RyaW5nKCkpOwogCiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7CiAgICAgaWYgKCFw
YXJzZVNjcmlwdCh2bSwgU291cmNlQ29kZShyZXN1bHQpLCBlcnJvcikpIHsKQEAgLTEyNSw3ICsx
MjUsNyBAQCBKU1NjcmlwdFJlZiBKU1NjcmlwdENyZWF0ZUZyb21TdHJpbmcoSlNDb250ZXh0R3Jv
dXBSZWYgY29udGV4dEdyb3VwLCBKU1N0cmluZ1JlZgogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKLSAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKS5sZWFrUmVmKCk7CisgICAgcmV0
dXJuIHJlc3VsdC5sZWFrUmVmKCk7CiB9CiAKIHZvaWQgSlNTY3JpcHRSZXRhaW4oSlNTY3JpcHRS
ZWYgc2NyaXB0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVl
UmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAKaW5kZXgg
MGQzYmVmMDIxOWRiY2YxYzA3NTY1YmE2NGNmM2ZlMGM2MTZhN2I1Yi4uNDI4NDM1MGZhNzE1YzY1
YzIyNzA3MmNmYmU4NjljMzc3YjNjMzlhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
VmFsdWVSZWYuY3BwCkBAIC00MDEsMTAgKzQwMSwxMCBAQCBKU1N0cmluZ1JlZiBKU1ZhbHVlVG9T
dHJpbmdDb3B5KEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUsIEpTVmFsdWVSZWYq
CiAKICAgICBKU1ZhbHVlIGpzVmFsdWUgPSB0b0pTKGV4ZWMsIHZhbHVlKTsKICAgICAKLSAgICBS
ZWZQdHI8T3BhcXVlSlNTdHJpbmc+IHN0cmluZ1JlZihPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKGpz
VmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CisgICAgYXV0byBzdHJpbmdSZWYo
T3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShqc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KSkpOwogICAgIGlmIChoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChleGVjLCBleGNlcHRpb24pID09
IEV4Y2VwdGlvblN0YXR1czo6RGlkVGhyb3cpCiAgICAgICAgIHN0cmluZ1JlZiA9IG51bGxwdHI7
Ci0gICAgcmV0dXJuIHN0cmluZ1JlZi5yZWxlYXNlKCkubGVha1JlZigpOworICAgIHJldHVybiBz
dHJpbmdSZWYubGVha1JlZigpOwogfQogCiBKU09iamVjdFJlZiBKU1ZhbHVlVG9PYmplY3QoSlND
b250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9TdGF0aWNQcm9w
ZXJ0eUFuYWx5emVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1N0YXRp
Y1Byb3BlcnR5QW5hbHl6ZXIuaAppbmRleCBlNjNmZWY4NmExMDdjOGU0ODA4ZmJiMDAwMGZkM2Vk
NTdhODM4YThlLi4xZWMxMjllODk4NWM3YTYwZTlhYWJjZThjNzUxY2FhYTU1YjdmNjAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1N0YXRpY1Byb3BlcnR5
QW5hbHl6ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1N0YXRp
Y1Byb3BlcnR5QW5hbHl6ZXIuaApAQCAtNzIsNyArNzIsNyBAQCBpbmxpbmUgdm9pZCBTdGF0aWNQ
cm9wZXJ0eUFuYWx5emVyOjpuZXdPYmplY3QoaW50IGRzdCwgdW5zaWduZWQgb2Zmc2V0T2ZJbmxp
bmVDYQogICAgIEFuYWx5c2lzTWFwOjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gbV9hbmFseXNlcy5h
ZGQoZHN0LCBhbmFseXNpcyk7CiAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewogICAg
ICAgICBraWxsKGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCkpOwotICAgICAgICBhZGRS
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gYW5hbHlzaXMucmVsZWFzZSgpOworICAgICAgICBhZGRS
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gV1RGTW92ZShhbmFseXNpcyk7CiAgICAgfQogfQogCkBA
IC05NSw3ICs5NSw3IEBAIGlubGluZSB2b2lkIFN0YXRpY1Byb3BlcnR5QW5hbHl6ZXI6Om1vdihp
bnQgZHN0LCBpbnQgc3JjKQogICAgIEFuYWx5c2lzTWFwOjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0g
bV9hbmFseXNlcy5hZGQoZHN0LCBhbmFseXNpcyk7CiAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdF
bnRyeSkgewogICAgICAgICBraWxsKGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCkpOwot
ICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gYW5hbHlzaXMucmVsZWFzZSgpOwor
ICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gV1RGTW92ZShhbmFseXNpcyk7CiAg
ICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJDYWxsRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyQ2FsbEZyYW1lLmNwcAppbmRleCBhOGM1NTdjNzQ3MzFmMmI2YTMzMzE3NTE2MGNhMzM0OGQy
MTUyMmJiLi5mYjg2MzY4YTM5NDhiNmY4ZTM1YTFlZDQ2YjUzODMxYWMzYjFlZGRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5j
cHAKQEAgLTI3OCw3ICsyNzgsNyBAQCB2b2lkIERlYnVnZ2VyQ2FsbEZyYW1lOjppbnZhbGlkYXRl
KCkKICAgICAgICAgICAgIGZyYW1lLT5tX3Njb3BlLT5pbnZhbGlkYXRlQ2hhaW4oKTsKICAgICAg
ICAgICAgIGZyYW1lLT5tX3Njb3BlLmNsZWFyKCk7CiAgICAgICAgIH0KLSAgICAgICAgZnJhbWUg
PSBmcmFtZS0+bV9jYWxsZXIucmVsZWFzZSgpOworICAgICAgICBmcmFtZSA9IFdURk1vdmUoZnJh
bWUtPm1fY2FsbGVyKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5jcHAKaW5kZXggMTdjNmEwYjg1MmEyMjFlZWE2ODgzMWU2MGQzMzNlOTE2
Yjk4OWIyNC4uOTAwNjMwOGE0MzE2N2UyMTYwMzI5MmZmMThmNTQ5NTg3MTA5ZThkOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKQEAgLTM4MSw3ICsz
ODEsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkKICAgICBkaXNhc3NlbWJsZSgqbGlu
a0J1ZmZlcik7CiAgICAgCiAgICAgbV9ncmFwaC5tX3BsYW4uZmluYWxpemVyID0gc3RkOjptYWtl
X3VuaXF1ZTxKSVRGaW5hbGl6ZXI+KAotICAgICAgICBtX2dyYXBoLm1fcGxhbiwgbV9qaXRDb2Rl
LnJlbGVhc2UoKSwgV1RGTW92ZShsaW5rQnVmZmVyKSk7CisgICAgICAgIG1fZ3JhcGgubV9wbGFu
LCBXVEZNb3ZlKG1faml0Q29kZSksIFdURk1vdmUobGlua0J1ZmZlcikpOwogfQogCiB2b2lkIEpJ
VENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQpAQCAtNDc4LDcgKzQ3OCw3IEBAIHZvaWQgSklU
Q29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHdp
dGhBcml0eUNoZWNrID0gbGlua0J1ZmZlci0+bG9jYXRpb25PZihtX2FyaXR5Q2hlY2spOwogCiAg
ICAgbV9ncmFwaC5tX3BsYW4uZmluYWxpemVyID0gc3RkOjptYWtlX3VuaXF1ZTxKSVRGaW5hbGl6
ZXI+KAotICAgICAgICBtX2dyYXBoLm1fcGxhbiwgbV9qaXRDb2RlLnJlbGVhc2UoKSwgV1RGTW92
ZShsaW5rQnVmZmVyKSwgd2l0aEFyaXR5Q2hlY2spOworICAgICAgICBtX2dyYXBoLm1fcGxhbiwg
V1RGTW92ZShtX2ppdENvZGUpLCBXVEZNb3ZlKGxpbmtCdWZmZXIpLCB3aXRoQXJpdHlDaGVjayk7
CiB9CiAKIHZvaWQgSklUQ29tcGlsZXI6OmRpc2Fzc2VtYmxlKExpbmtCdWZmZXImIGxpbmtCdWZm
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clZhbHVlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZh
bHVlcy5jcHAKaW5kZXggYzVjMTE2MzRiZjYyODE1MjQ1MzczZjMwYzYxNDVmMmZhMzkxYzIyNS4u
NTY5NDhmYTMxM2YyZTZjOGUwOWZhZTRkNzVjZjk5Mjk0NjhmODE5ZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcApAQCAtNDU5
LDcgKzQ1OSw3IEBAIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gYnVpbGRWYWx1ZShjb25zdCBVQ2hh
ciogc3RhcnQsIGNvbnN0IFVDaGFyKiBlbmQsIGNvbnN0IFVDCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KICAgICAqdmFsdWVUb2tlbkVuZCA9IHRva2VuRW5kOwotICAgIHJldHVybiBy
ZXN1bHQucmVsZWFzZSgpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIGlubGluZSBib29sIGVz
Y2FwZUNoYXIoVUNoYXIgYywgU3RyaW5nQnVpbGRlciYgZHN0KQpAQCAtNTUxLDExICs1NTEsMTEg
QEAgYm9vbCBJbnNwZWN0b3JWYWx1ZTo6cGFyc2VKU09OKGNvbnN0IFN0cmluZyYganNvbklucHV0
LCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+JgogICAgIGNvbnN0IFVDaGFyKiBzdGFydCA9IGNoYXJh
Y3RlcnM7CiAgICAgY29uc3QgVUNoYXIqIGVuZCA9IHN0YXJ0ICsganNvbklucHV0Lmxlbmd0aCgp
OwogICAgIGNvbnN0IFVDaGFyKiB0b2tlbkVuZDsKLSAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+
IHJlc3VsdCA9IGJ1aWxkVmFsdWUoc3RhcnQsIGVuZCwgJnRva2VuRW5kLCAwKTsKKyAgICBhdXRv
IHJlc3VsdCA9IGJ1aWxkVmFsdWUoc3RhcnQsIGVuZCwgJnRva2VuRW5kLCAwKTsKICAgICBpZiAo
IXJlc3VsdCB8fCB0b2tlbkVuZCAhPSBlbmQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IG91dHB1dCA9IHJlc3VsdC5yZWxlYXNlKCk7CisgICAgb3V0cHV0ID0gV1RGTW92ZShyZXN1bHQp
OwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAKaW5kZXggMzEyZTVkOWI0
YjFjZjg5ZTc3NDBmYWQ2NjUyNzIxM2QwYmUzZTQxZi4uZjY0YmFmM2QzMDc3N2JmNzk2ZjM1NzRh
ZmI0ZDg4ODFhYmFlMDUxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcApAQCAtMTIxLDcgKzEyMSw3IEBA
IHZvaWQgSW5zcGVjdG9yQWdlbnQ6OmFjdGl2YXRlRXh0cmFEb21haW4oY29uc3QgU3RyaW5nJiBk
b21haW5OYW1lKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IGRvbWFpbk5hbWVzID0gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CisgICAgYXV0byBkb21haW5OYW1lcyA9IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOwogICAgIGRvbWFpbk5hbWVz
LT5hZGRJdGVtKGRvbWFpbk5hbWUpOwogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5hY3RpdmF0
ZUV4dHJhRG9tYWlucyhXVEZNb3ZlKGRvbWFpbk5hbWVzKSk7CiB9CkBAIC0xMzEsMTQgKzEzMSwx
NCBAQCB2b2lkIEluc3BlY3RvckFnZW50OjphY3RpdmF0ZUV4dHJhRG9tYWlucyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZXh0cmFEb21haW5zKQogICAgIGlmIChleHRyYURvbWFpbnMuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8U3RyaW5nPj4gZG9tYWluTmFtZXMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJp
bmc+OjpjcmVhdGUoKTsKKyAgICBhdXRvIGRvbWFpbk5hbWVzID0gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgZm9yIChhdXRvIGRvbWFpbk5hbWUgOiBl
eHRyYURvbWFpbnMpCiAgICAgICAgIGRvbWFpbk5hbWVzLT5hZGRJdGVtKGRvbWFpbk5hbWUpOwog
CiAgICAgaWYgKCFtX2VuYWJsZWQpCi0gICAgICAgIG1fcGVuZGluZ0V4dHJhRG9tYWluc0RhdGEg
PSBkb21haW5OYW1lcy5yZWxlYXNlKCk7CisgICAgICAgIG1fcGVuZGluZ0V4dHJhRG9tYWluc0Rh
dGEgPSBXVEZNb3ZlKGRvbWFpbk5hbWVzKTsKICAgICBlbHNlCi0gICAgICAgIG1fZnJvbnRlbmRE
aXNwYXRjaGVyLT5hY3RpdmF0ZUV4dHJhRG9tYWlucyhkb21haW5OYW1lcy5yZWxlYXNlKCkpOwor
ICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+YWN0aXZhdGVFeHRyYURvbWFpbnMoV1RGTW92
ZShkb21haW5OYW1lcykpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5jcHAKaW5kZXggNzNjZmI2ZjM3M2IyZjVkOGVkMWEzYjAzNjRhZjBhNjhjNTU2MWQ3Ny4uMTM0
ZTIyNGY3NDBhNjUwMmJmMTcyMGU0OTY4ZjUxM2Y4OWI1MDlhNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RGVidWdnZXJBZ2VudC5jcHAKQEAgLTc1MCw3ICs3NTAsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Qcm9iZShKU0M6OkV4ZWNTdGF0ZSYgc2NyaXB0U3Rh
dGUsCiAgICAgICAgIC5zZXRCYXRjaElkKGJhdGNoSWQpCiAgICAgICAgIC5zZXRTYW1wbGVJZChz
YW1wbGVJZCkKICAgICAgICAgLnNldFRpbWVzdGFtcChtX2luamVjdGVkU2NyaXB0TWFuYWdlci5p
bnNwZWN0b3JFbnZpcm9ubWVudCgpLmV4ZWN1dGlvblN0b3B3YXRjaCgpLT5lbGFwc2VkVGltZSgp
KQotICAgICAgICAuc2V0UGF5bG9hZChwYXlsb2FkLnJlbGVhc2UoKSkKKyAgICAgICAgLnNldFBh
eWxvYWQoV1RGTW92ZShwYXlsb2FkKSkKICAgICAgICAgLnJlbGVhc2UoKTsKICAgICBtX2Zyb250
ZW5kRGlzcGF0Y2hlci0+ZGlkU2FtcGxlUHJvYmUoV1RGTW92ZShyZXN1bHQpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3Bl
Y3Rvci5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUlu
c3BlY3Rvci5tbQppbmRleCA3MmJmYzZlODc4MGY3OTkwMDhmODMyYmVhN2NhM2VkNzllYWVhMmFl
Li5mM2FlZTFjOTc0MTExNGFiY2Y4YWIwZDY2ZDg3YWNiZjllYTFjYzVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IubW0K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVj
dG9yLm1tCkBAIC02MjksNyArNjI5LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVk
U2V0dXBNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pCiAKICAgICAvLyBBdHRlbXB0IHRv
IGNyZWF0ZSBhIGNvbm5lY3Rpb24uIFRoaXMgbWF5IGZhaWwgaWYgdGhlIHBhZ2UgYWxyZWFkeSBo
YXMgYW4gaW5zcGVjdG9yIG9yIGlmIGl0IGRpc2FsbG93cyBpbnNwZWN0aW9uLgogICAgIFJlbW90
ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFyZ2V0ID0gZmluZFJlc3VsdC0+dmFsdWU7Ci0gICAgUmVm
UHRyPFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldD4gY29ubmVjdGlvblRvVGFyZ2V0ID0gYWRvcHRS
ZWYobmV3IFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldCh0YXJnZXQsIGNvbm5lY3Rpb25JZGVudGlm
aWVyLCBzZW5kZXIpKTsKKyAgICBhdXRvIGNvbm5lY3Rpb25Ub1RhcmdldCA9IGFkb3B0UmVmKCpu
ZXcgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0KHRhcmdldCwgY29ubmVjdGlvbklkZW50aWZpZXIs
IHNlbmRlcikpOwogCiAgICAgaWYgKGlzPFJlbW90ZUluc3BlY3Rpb25UYXJnZXQ+KHRhcmdldCkp
IHsKICAgICAgICAgYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24gPSBtX2F1dG9tYXRpY0luc3Bl
Y3Rpb25DYW5kaWRhdGVUYXJnZXRJZGVudGlmaWVyID09IHRhcmdldC0+dGFyZ2V0SWRlbnRpZmll
cigpOwpAQCAtNjM5LDE0ICs2MzksMTQgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVk
U2V0dXBNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pCiAgICAgICAgICAgICBjb25uZWN0
aW9uVG9UYXJnZXQtPmNsb3NlKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAg
ICAgICAgbV90YXJnZXRDb25uZWN0aW9uTWFwLnNldCh0YXJnZXRJZGVudGlmaWVyLCBjb25uZWN0
aW9uVG9UYXJnZXQucmVsZWFzZSgpKTsKKyAgICAgICAgbV90YXJnZXRDb25uZWN0aW9uTWFwLnNl
dCh0YXJnZXRJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbm5lY3Rpb25Ub1RhcmdldCkpOwogICAgICAg
ICB1cGRhdGVIYXNBY3RpdmVEZWJ1Z1Nlc3Npb24oKTsKICAgICB9IGVsc2UgaWYgKGlzPFJlbW90
ZUF1dG9tYXRpb25UYXJnZXQ+KHRhcmdldCkpIHsKICAgICAgICAgaWYgKCFjb25uZWN0aW9uVG9U
YXJnZXQtPnNldHVwKCkpIHsKICAgICAgICAgICAgIGNvbm5lY3Rpb25Ub1RhcmdldC0+Y2xvc2Uo
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBtX3RhcmdldENvbm5l
Y3Rpb25NYXAuc2V0KHRhcmdldElkZW50aWZpZXIsIGNvbm5lY3Rpb25Ub1RhcmdldC5yZWxlYXNl
KCkpOworICAgICAgICBtX3RhcmdldENvbm5lY3Rpb25NYXAuc2V0KHRhcmdldElkZW50aWZpZXIs
IFdURk1vdmUoY29ubmVjdGlvblRvVGFyZ2V0KSk7CiAgICAgICAgIHVwZGF0ZUhhc0FjdGl2ZURl
YnVnU2Vzc2lvbigpOwogICAgIH0gZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IDgyOTg0NTMzYTY2Yjc1Zjdh
N2FiM2Y5NTlhYjAwMjU3MTRjYTMyNjUuLjAwODhjNGYyYjJkZGJmNjBiODFhZDcwOGIyMjE4MzY3
NmNiNGM5MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtOTQzLDcg
Kzk0Myw3IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAgICAgcGF0Y2hCdWZmZXIu
bGluayhkb25lLCBjYWxsTGlua0luZm8uaG90UGF0aE90aGVyKCkubGFiZWxBdE9mZnNldCgwKSk7
CiAgICAgcGF0Y2hCdWZmZXIubGluayhzbG93LCBDb2RlTG9jYXRpb25MYWJlbCh2bS0+Z2V0Q1RJ
U3R1YihsaW5rUG9seW1vcnBoaWNDYWxsVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSkpOwogICAgIAot
ICAgIFJlZlB0cjxQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZT4gc3R1YlJvdXRpbmUgPSBhZG9w
dFJlZihuZXcgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUoCisgICAgYXV0byBzdHViUm91dGlu
ZSA9IGFkb3B0UmVmKCpuZXcgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUoCiAgICAgICAgIEZJ
TkFMSVpFX0NPREVfRk9SKAogICAgICAgICAgICAgY2FsbGVyQ29kZUJsb2NrLCBwYXRjaEJ1ZmZl
ciwKICAgICAgICAgICAgICgiUG9seW1vcnBoaWMgY2FsbCBzdHViIGZvciAlcywgcmV0dXJuIHBv
aW50ICVwLCB0YXJnZXRzICVzIiwKQEAgLTk2Miw3ICs5NjIsNyBAQCB2b2lkIGxpbmtQb2x5bW9y
cGhpY0NhbGwoCiAgICAgCiAgICAgLy8gSWYgdGhlcmUgaGFkIGJlZW4gYSBwcmV2aW91cyBzdHVi
IHJvdXRpbmUsIHRoYXQgb25lIHdpbGwgZGllIGFzIHNvb24gYXMgdGhlIEdDIHJ1bnMgYW5kIHNl
ZXMKICAgICAvLyB0aGF0IGl0J3Mgbm8gbG9uZ2VyIG9uIHN0YWNrLgotICAgIGNhbGxMaW5rSW5m
by5zZXRTdHViKHN0dWJSb3V0aW5lLnJlbGVhc2UoKSk7CisgICAgY2FsbExpbmtJbmZvLnNldFN0
dWIoV1RGTW92ZShzdHViUm91dGluZSkpOwogICAgIAogICAgIC8vIFRoZSBjYWxsIGxpbmsgaW5m
byBubyBsb25nZXIgaGFzIGEgY2FsbCBjYWNoZSBhcGFydCBmcm9tIHRoZSBqdW1wIHRvIHRoZSBw
b2x5bW9ycGhpYyBjYWxsCiAgICAgLy8gc3R1Yi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRl
eCBhODczN2VlZTE4MDZjYThkMzg2NDA5MTE2ZjJkMmRkMzY2MWUzNjg4Li4xNDI5ZDA1NGNiNGVk
MTFjNjE1ZjY5NmQ2Yzk2NjRjNDIyYTI2ODI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBA
IC00NSw3ICs0NSw3IEBAIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKHVuCiAgICAgYXV0byBidWZmZXIg
PSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGxlbmd0aCwgc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6
OlR5cGUpKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
cmV0dXJuIGNyZWF0ZShidWZmZXIucmVsZWFzZSgpLCAwLCBsZW5ndGgpOworICAgIHJldHVybiBj
cmVhdGUoV1RGTW92ZShidWZmZXIpLCAwLCBsZW5ndGgpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBBZGFwdG9yPgpAQCAtNjcsNyArNjcsNyBAQCBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcg
R2VuZXJpY1R5cGVkQXJyYXlWaWV3KGJ1ZmZlci5yZWxlYXNlKCksIGJ5dGVPZmZzZXQsIGxlbmd0
aCkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgR2VuZXJpY1R5cGVkQXJyYXlWaWV3KFdURk1v
dmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IEFkYXB0b3I+CkBAIC03OCw3ICs3OCw3IEBAIEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCiAgICAgICAgIEFycmF5QnVm
ZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwgc2l6ZW9mKHR5cGVuYW1lIEFkYXB0
b3I6OlR5cGUpKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgcmV0dXJuIGNyZWF0ZShidWZmZXIucmVsZWFzZSgpLCAwLCBsZW5ndGgpOworICAgIHJldHVy
biBjcmVhdGUoV1RGTW92ZShidWZmZXIpLCAwLCBsZW5ndGgpOwogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBBZGFwdG9yPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMmJlMDNmODhiOWFlNTg1NGE0
ZDA0NGY5NTFlMDAyYTlmZDM4ODg1OS4uNmJjOGU0Mzc5YzU5ZWZjMGZjNTQ3NWI5ZTY1ODRlMThj
ZGRlOTIzYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eUJ1ZmZlckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwCkBAIC05OSw3ICs5OSw3IEBAIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEFycmF5QnVmZmVyKEV4ZWNTdGF0
ZSogZXhlYykKICAgICBTdHJ1Y3R1cmUqIGFycmF5QnVmZmVyU3RydWN0dXJlID0gSW50ZXJuYWxG
dW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCks
IGNvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKS0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUoKSk7CiAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTVmFsdWUoKSk7Ci0gICAgSlNBcnJheUJ1ZmZlciogcmVzdWx0ID0gSlNBcnJheUJ1ZmZl
cjo6Y3JlYXRlKGV4ZWMtPnZtKCksIGFycmF5QnVmZmVyU3RydWN0dXJlLCBidWZmZXIucmVsZWFz
ZSgpKTsKKyAgICBKU0FycmF5QnVmZmVyKiByZXN1bHQgPSBKU0FycmF5QnVmZmVyOjpjcmVhdGUo
ZXhlYy0+dm0oKSwgYXJyYXlCdWZmZXJTdHJ1Y3R1cmUsIFdURk1vdmUoYnVmZmVyKSk7CiAgICAg
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmgKaW5kZXggYTgwNGI5ZWRh
N2M4N2FiYTQ5Y2I1NjQxMzgxYTMxMmViZWRhZjNiMy4uMDRjMWVkMTNhYjE5OWM5N2FjMDE0NjBl
MTU1ZDcwMzgxNDc1NTAwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvcGVydHlOYW1lQXJyYXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eU5hbWVBcnJheS5oCkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgc2V0RGF0YShQYXNzUmVmUHRyPFByb3BlcnR5TmFtZUFycmF5RGF0YT4gZGF0YSkgeyBtX2Rh
dGEgPSBkYXRhOyB9CiAgICAgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBkYXRhKCkgeyByZXR1cm4g
bV9kYXRhLmdldCgpOyB9Ci0gICAgUGFzc1JlZlB0cjxQcm9wZXJ0eU5hbWVBcnJheURhdGE+IHJl
bGVhc2VEYXRhKCkgeyByZXR1cm4gbV9kYXRhLnJlbGVhc2UoKTsgfQorICAgIFBhc3NSZWZQdHI8
UHJvcGVydHlOYW1lQXJyYXlEYXRhPiByZWxlYXNlRGF0YSgpIHsgcmV0dXJuIFdURk1vdmUobV9k
YXRhKTsgfQogCiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGVzZSBmdW5jdGlvbnMuCiAgICAgYm9v
bCBjYW5BZGRLbm93blVuaXF1ZUZvclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS0+
cHJvcGVydHlOYW1lVmVjdG9yKCkuaXNFbXB0eSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCA2ZDdmYjgxN2I5NWY5N2I0ZmM0NWQwNzJhMjlk
ZDkxMjEwNzI5YTljLi4yN2ZmYTUxNzgwNzY4YzZjNDE3MzNkYjYwODU3Zjg3MmQ3ZTZlODVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTExOTcs
MTYgKzExOTcsMTYgQEAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gU3RydWN0dXJlOjp0b1N0
cnVjdHVyZVNoYXBlKEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIGN1clNoYXBlLT5tYXJrQXNGaW5h
bCgpOwogCiAgICAgICAgIGlmIChjdXJTdHJ1Y3R1cmUtPnN0b3JlZFByb3RvdHlwZVN0cnVjdHVy
ZSgpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8U3RydWN0dXJlU2hhcGU+IG5ld1NoYXBlID0gU3Ry
dWN0dXJlU2hhcGU6OmNyZWF0ZSgpOwotICAgICAgICAgICAgY3VyU2hhcGUtPnNldFByb3RvKG5l
d1NoYXBlKTsKLSAgICAgICAgICAgIGN1clNoYXBlID0gbmV3U2hhcGUucmVsZWFzZSgpOworICAg
ICAgICAgICAgYXV0byBuZXdTaGFwZSA9IFN0cnVjdHVyZVNoYXBlOjpjcmVhdGUoKTsKKyAgICAg
ICAgICAgIGN1clNoYXBlLT5zZXRQcm90byhuZXdTaGFwZS5wdHIoKSk7CisgICAgICAgICAgICBj
dXJTaGFwZSA9IFdURk1vdmUobmV3U2hhcGUpOwogICAgICAgICAgICAgY3VyVmFsdWUgPSBjdXJT
dHJ1Y3R1cmUtPnN0b3JlZFByb3RvdHlwZSgpOwogICAgICAgICB9CiAKICAgICAgICAgY3VyU3Ry
dWN0dXJlID0gY3VyU3RydWN0dXJlLT5zdG9yZWRQcm90b3R5cGVTdHJ1Y3R1cmUoKTsKICAgICB9
CiAgICAgCi0gICAgcmV0dXJuIGJhc2VTaGFwZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1v
dmUoYmFzZVNoYXBlKTsKIH0KIAogYm9vbCBTdHJ1Y3R1cmU6OmNhblVzZUZvckFsbG9jYXRpb25z
T2YoU3RydWN0dXJlKiBvdGhlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1R5cGVTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNl
dC5jcHAKaW5kZXggMDY3ZjEyNmI2MGZhZTk4NTJmZmY1YTY5YTQ0NTQ0Njg5M2VhZDBkYi4uNThj
ZTJjM2QxNzNhOGUyNmI4MmM2NmFjYTU1NjY5ZWQ1OTAyYzgwNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKQEAgLTU0OCw3ICs1NDgsNyBAQCBQYXNzUmVmUHRy
PFN0cnVjdHVyZVNoYXBlPiBTdHJ1Y3R1cmVTaGFwZTo6bWVyZ2UoY29uc3QgUGFzc1JlZlB0cjxT
dHJ1Y3R1cmVTaGFwZQogICAgIFJlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gYiA9IHBycEI7CiAgICAg
QVNTRVJUKGEtPmhhc1NhbWVQcm90b3R5cGVDaGFpbihiKSk7CiAKLSAgICBSZWZQdHI8U3RydWN0
dXJlU2hhcGU+IG1lcmdlZCA9IFN0cnVjdHVyZVNoYXBlOjpjcmVhdGUoKTsKKyAgICBhdXRvIG1l
cmdlZCA9IFN0cnVjdHVyZVNoYXBlOjpjcmVhdGUoKTsKICAgICBmb3IgKGF1dG8gZmllbGQgOiBh
LT5tX2ZpZWxkcykgewogICAgICAgICBpZiAoYi0+bV9maWVsZHMuY29udGFpbnMoZmllbGQpKQog
ICAgICAgICAgICAgbWVyZ2VkLT5tX2ZpZWxkcy5hZGQoZmllbGQpOwpAQCAtNTc4LDcgKzU3OCw3
IEBAIFBhc3NSZWZQdHI8U3RydWN0dXJlU2hhcGU+IFN0cnVjdHVyZVNoYXBlOjptZXJnZShjb25z
dCBQYXNzUmVmUHRyPFN0cnVjdHVyZVNoYXBlCiAKICAgICBtZXJnZWQtPm1hcmtBc0ZpbmFsKCk7
CiAKLSAgICByZXR1cm4gbWVyZ2VkLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92ZShtZXJn
ZWQpOwogfQogCiB2b2lkIFN0cnVjdHVyZVNoYXBlOjplbnRlckRpY3Rpb25hcnlNb2RlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5jdGlvbk92ZXJyaWRlcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwCmlu
ZGV4IDJlMzI4YzE2NzRiMjcxNzZiNzgxZDExODY0YWI5YjAxMzkwZDAwMzMuLjlhZTNhODdkMmM4
MmQwZTg5ZThmZGI3MzQ5ZDY3NmY4NjA2NzRiYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90b29scy9GdW5jdGlvbk92ZXJyaWRlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHN0
YXRpYyB2b2lkIGluaXRpYWxpemVPdmVycmlkZUluZm8oY29uc3QgU291cmNlQ29kZSYgb3JpZ0Nv
ZGUsIGNvbnN0IFN0cmluZyYgbmV3CiAgICAgbmV3UHJvdmlkZXJTdHIuYXBwZW5kKG9yaWdIZWFk
ZXIpOwogICAgIG5ld1Byb3ZpZGVyU3RyLmFwcGVuZChuZXdCb2R5KTsKIAotICAgIFJlZlB0cjxT
b3VyY2VQcm92aWRlcj4gbmV3UHJvdmlkZXIgPSBTdHJpbmdTb3VyY2VQcm92aWRlcjo6Y3JlYXRl
KG5ld1Byb3ZpZGVyU3RyLCAiPG92ZXJyaWRkZW4+Iik7CisgICAgYXV0byBuZXdQcm92aWRlciA9
IFN0cmluZ1NvdXJjZVByb3ZpZGVyOjpjcmVhdGUobmV3UHJvdmlkZXJTdHIsICI8b3ZlcnJpZGRl
bj4iKTsKIAogICAgIGluZm8uZmlyc3RMaW5lID0gMTsKICAgICBpbmZvLmxpbmVDb3VudCA9IDE7
IC8vIEZha2luZyBpdC4gVGhpcyBkb2Vzbid0IHJlYWxseSBtYXR0ZXIgZm9yIG5vdy4KQEAgLTEy
Nyw3ICsxMjcsNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplT3ZlcnJpZGVJbmZvKGNvbnN0IFNv
dXJjZUNvZGUmIG9yaWdDb2RlLCBjb25zdCBTdHJpbmcmIG5ldwogICAgIGluZm8udHlwZVByb2Zp
bGluZ0VuZE9mZnNldCA9IG5ld1Byb3ZpZGVyU3RyLmxlbmd0aCgpIC0gMTsKIAogICAgIGluZm8u
c291cmNlQ29kZSA9Ci0gICAgICAgIFNvdXJjZUNvZGUobmV3UHJvdmlkZXIucmVsZWFzZSgpLCBp
bmZvLnR5cGVQcm9maWxpbmdTdGFydE9mZnNldCwgaW5mby50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0
ICsgMSwgMSwgMSk7CisgICAgICAgIFNvdXJjZUNvZGUoV1RGTW92ZShuZXdQcm92aWRlciksIGlu
Zm8udHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0LCBpbmZvLnR5cGVQcm9maWxpbmdFbmRPZmZzZXQg
KyAxLCAxLCAxKTsKIH0KICAgICAKIGJvb2wgRnVuY3Rpb25PdmVycmlkZXM6OmluaXRpYWxpemVP
dmVycmlkZUZvcihjb25zdCBTb3VyY2VDb2RlJiBvcmlnQ29kZSwgRnVuY3Rpb25PdmVycmlkZXM6
Ok92ZXJyaWRlSW5mbyYgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCmluZGV4IGViNTI0N2E5ZjA3ZDliYmQ4Yzg2Yjhm
NTY5Zjg0NjQ5ZmE1NmMxOGEuLmRiM2I5NTQyOGU4ZTdmZjE4MWM1ZWUwZTNlMjNlMjQxNjY0Mjdk
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNl
QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJj
ZUJ1ZmZlci5jcHAKQEAgLTY2Myw3ICs2NjMsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxUaW1lUmFu
Z2VzPiByZW1vdmVTYW1wbGVzRnJvbVRyYWNrQnVmZmVyKGNvbnN0IERlY29kZU9yZGVyU2FtcAog
ICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwogI2VuZGlmCiAKLSAgICBSZWZQdHI8VGltZVJhbmdl
cz4gZXJhc2VkUmFuZ2VzID0gVGltZVJhbmdlczo6Y3JlYXRlKCk7CisgICAgYXV0byBlcmFzZWRS
YW5nZXMgPSBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKICAgICBNZWRpYVRpbWUgbWljcm9zZWNvbmQo
MSwgMTAwMDAwMCk7CiAgICAgZm9yIChhdXRvIHNhbXBsZUl0IDogc2FtcGxlcykgewogICAgICAg
ICBjb25zdCBEZWNvZGVPcmRlclNhbXBsZU1hcDo6S2V5VHlwZSYgZGVjb2RlS2V5ID0gc2FtcGxl
SXQuZmlyc3Q7CkBAIC02OTgsNyArNjk4LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8VGltZVJhbmdl
cz4gcmVtb3ZlU2FtcGxlc0Zyb21UcmFja0J1ZmZlcihjb25zdCBEZWNvZGVPcmRlclNhbXAKICAg
ICAgICAgTE9HKE1lZGlhU291cmNlLCAiU291cmNlQnVmZmVyOjolcyglcCkgcmVtb3ZlZCAlenUg
Ynl0ZXMsIHN0YXJ0KCVsZiksIGVuZCglbGYpIiwgbG9nUHJlZml4LCBidWZmZXIsIGJ5dGVzUmVt
b3ZlZCwgZWFybGllc3RTYW1wbGUsIGxhdGVzdFNhbXBsZSk7CiAjZW5kaWYKIAotICAgIHJldHVy
biBlcmFzZWRSYW5nZXMucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKGVyYXNlZFJhbmdl
cyk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyOjpyZW1vdmVDb2RlZEZyYW1lcyhjb25zdCBNZWRp
YVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCkKQEAgLTE3NTEsNyArMTc1MSw3IEBA
IHZvaWQgU291cmNlQnVmZmVyOjpwcm92aWRlTWVkaWFEYXRhKFRyYWNrQnVmZmVyJiB0cmFja0J1
ZmZlciwgQXRvbWljU3RyaW5nIHRyYWNrCiAgICAgICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVt
LzIwNjM1OTY5KTogUmVtb3ZlIHRoaXMgcmUtZW50cmFuY3kgcHJvdGVjdGlvbiB3aGVuIHRoZSBh
Zm9yZW1lbnRpb25lZCByYWRhciBpcyByZXNvbHZlZDsgcHJvdGVjdGluZwogICAgICAgICAvLyBh
Z2FpbnN0IHJlLWVudHJhbmN5IGludHJvZHVjZXMgYSBzbWFsbCBpbmVmZmljZW5jeSB3aGVuIHJl
bW92aW5nIGFwcGVuZGVkIHNhbXBsZXMgZnJvbSB0aGUgZGVjb2RlIHF1ZXVlIG9uZSBhdCBhIHRp
bWUKICAgICAgICAgLy8gcmF0aGVyIHRoYW4gd2hlbiBhbGwgc2FtcGxlcyBoYXZlIGJlZW4gZW5x
dWV1ZWQuCi0gICAgICAgIFJlZlB0cjxNZWRpYVNhbXBsZT4gc2FtcGxlID0gdHJhY2tCdWZmZXIu
ZGVjb2RlUXVldWUuYmVnaW4oKS0+c2Vjb25kOworICAgICAgICBhdXRvIHNhbXBsZSA9IHRyYWNr
QnVmZmVyLmRlY29kZVF1ZXVlLmJlZ2luKCktPnNlY29uZDsKICAgICAgICAgdHJhY2tCdWZmZXIu
ZGVjb2RlUXVldWUuZXJhc2UodHJhY2tCdWZmZXIuZGVjb2RlUXVldWUuYmVnaW4oKSk7CiAKICAg
ICAgICAgLy8gRG8gbm90IGVucXVldWUgc2FtcGxlcyBzcGFubmluZyBhIHNpZ25pZmljYW50IHVu
YnVmZmVyZWQgZ2FwLgpAQCAtMTc2Nyw3ICsxNzY3LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnBy
b3ZpZGVNZWRpYURhdGEoVHJhY2tCdWZmZXImIHRyYWNrQnVmZmVyLCBBdG9taWNTdHJpbmcgdHJh
Y2sKIAogICAgICAgICB0cmFja0J1ZmZlci5sYXN0RW5xdWV1ZWRQcmVzZW50YXRpb25UaW1lID0g
c2FtcGxlLT5wcmVzZW50YXRpb25UaW1lKCk7CiAgICAgICAgIHRyYWNrQnVmZmVyLmxhc3RFbnF1
ZXVlZERlY29kZUVuZFRpbWUgPSBzYW1wbGUtPmRlY29kZVRpbWUoKSArIHNhbXBsZS0+ZHVyYXRp
b24oKTsKLSAgICAgICAgbV9wcml2YXRlLT5lbnF1ZXVlU2FtcGxlKHNhbXBsZS5yZWxlYXNlKCks
IHRyYWNrSUQpOworICAgICAgICBtX3ByaXZhdGUtPmVucXVldWVTYW1wbGUoV1RGTW92ZShzYW1w
bGUpLCB0cmFja0lEKTsKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgICAgICsrZW5xdWV1ZWRTYW1w
bGVzOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcAppbmRleCA5ZTVhOWMyNDRlZjYzYTE3YmZhOGQ5Yzdj
Y2U1YzYxM2FlYTM5YWM2Li5iOTZiN2EwYjM1MTkxMWE4NzY5YTk1MmQyOWZlOGVhYjBiMWUyMjg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRp
YVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhUmVxdWVzdC5jcHAKQEAgLTgwLDE1ICs4MCwxNSBAQCB2b2lkIFVzZXJNZWRpYVJlcXVl
c3Q6OnN0YXJ0KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywg
TWVkaQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPE1lZGlhQ29uc3RyYWlu
dHM+IGF1ZGlvQ29uc3RyYWludHMgPSBwYXJzZU9wdGlvbnMob3B0aW9ucywgQXRvbWljU3RyaW5n
KCJhdWRpbyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBSZWZQ
dHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cyA9IHBhcnNlT3B0aW9ucyhvcHRp
b25zLCBBdG9taWNTdHJpbmcoInZpZGVvIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOworICAgIGF1dG8gYXVkaW9Db25zdHJhaW50cyA9IHBhcnNlT3B0aW9ucyhvcHRpb25z
LCBBdG9taWNTdHJpbmcoImF1ZGlvIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOworICAgIGF1dG8gdmlkZW9Db25zdHJhaW50cyA9IHBhcnNlT3B0aW9ucyhvcHRpb25zLCBB
dG9taWNTdHJpbmcoInZpZGVvIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OwogCiAgICAgaWYgKCFhdWRpb0NvbnN0cmFpbnRzICYmICF2aWRlb0NvbnN0cmFpbnRzKSB7CiAg
ICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBSZWY8VXNlck1lZGlhUmVxdWVzdD4gcmVxdWVzdCA9IGFkb3B0UmVmKCpuZXcgVXNlck1l
ZGlhUmVxdWVzdChkb2N1bWVudCwgdXNlck1lZGlhLCBhdWRpb0NvbnN0cmFpbnRzLnJlbGVhc2Uo
KSwgdmlkZW9Db25zdHJhaW50cy5yZWxlYXNlKCksIFdURk1vdmUocHJvbWlzZSkpKTsKKyAgICBh
dXRvIHJlcXVlc3QgPSBhZG9wdFJlZigqbmV3IFVzZXJNZWRpYVJlcXVlc3QoZG9jdW1lbnQsIHVz
ZXJNZWRpYSwgV1RGTW92ZShhdWRpb0NvbnN0cmFpbnRzKSwgV1RGTW92ZSh2aWRlb0NvbnN0cmFp
bnRzKSwgV1RGTW92ZShwcm9taXNlKSkpOwogICAgIHJlcXVlc3QtPnN0YXJ0KCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMQ2FsbGJhY2tX
cmFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTENhbGxiYWNr
V3JhcHBlci5oCmluZGV4IGNhNjY1ODEwYmE2MGQxNmNjNzQxZTE4ZGU0NTg2Y2U4NDcwNDkyN2Iu
LmI2NDU0ODIwZjczNzU2MWYzMGJjYWE1MGIwYTYyODFiMjM5ZGNmODAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMQ2FsbGJhY2tXcmFwcGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxDYWxsYmFja1dyYXBwZXIu
aApAQCAtNjgsOCArNjgsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0ID0gbnVsbHB0cjsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0UHRyID0gbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LnJlbGVhc2UoKS5sZWFrUmVmKCk7Ci0gICAgICAgICAgICBjYWxsYmFj
ayA9IG1fY2FsbGJhY2sucmVsZWFzZSgpLmxlYWtSZWYoKTsKKyAgICAgICAgICAgIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRQdHIgPSBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQubGVha1JlZigpOwor
ICAgICAgICAgICAgY2FsbGJhY2sgPSBtX2NhbGxiYWNrLmxlYWtSZWYoKTsKICAgICAgICAgfQog
ICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0UHRyLT5wb3N0VGFzayh7CiAgICAgICAgICAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrOjpDbGVhbnVwVGFzaywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCA4ZmI0ZTk5
Y2E2NTg2NjRiNGRhZWNkNTdkNjMyNDBjMmU3MjdiMTk2Li4zMzBkNmIyODE5NGZiNmNkMjc4OTU2
NjFkYTE5OWM0YTk2NjY0ZGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC01MzksOSArNTM5LDcgQEAgc3RhdGljIEpTVmFsdWUg
aGFuZGxlUG9zdE1lc3NhZ2UoRE9NV2luZG93JiBpbXBsLCBFeGVjU3RhdGUmIHN0YXRlKQogICAg
IGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CiAKLSAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlID0gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpjcmVhdGUoJnN0YXRlLCBzdGF0ZS5hcmd1bWVudCgwKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAmbWVzc2FnZVBvcnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhcnJheUJ1ZmZlcnMpOwor
ICAgIGF1dG8gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCZzdGF0ZSwg
c3RhdGUuYXJndW1lbnQoMCksICZtZXNzYWdlUG9ydHMsICZhcnJheUJ1ZmZlcnMpOwogCiAgICAg
aWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
QEAgLTU1MSw3ICs1NDksNyBAQCBzdGF0aWMgSlNWYWx1ZSBoYW5kbGVQb3N0TWVzc2FnZShET01X
aW5kb3cmIGltcGwsIEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbC5wb3N0TWVzc2FnZSht
ZXNzYWdlLnJlbGVhc2UoKSwgJm1lc3NhZ2VQb3J0cywgdGFyZ2V0T3JpZ2luLCBjYWxsZXJET01X
aW5kb3coJnN0YXRlKSwgZWMpOworICAgIGltcGwucG9zdE1lc3NhZ2UoV1RGTW92ZShtZXNzYWdl
KSwgJm1lc3NhZ2VQb3J0cywgdGFyZ2V0T3JpZ2luLCBjYWxsZXJET01XaW5kb3coJnN0YXRlKSwg
ZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIaXN0
b3J5Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3Rv
bS5jcHAKaW5kZXggZjQ5Nzk2NWFlNTZkYjk0NzEyNDhmMGY5MDQ2YWY0M2I3NmI0MmRhMy4uN2E0
ZTg2ZWZhNzBlOGMxZTUwYWFmZmU3OGQ2OWE1ZDhmMzYwODQyZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0b20uY3BwCkBAIC01NSw3ICs1NSw3IEBAIEpT
VmFsdWUgSlNIaXN0b3J5OjpzdGF0ZShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogCiBKU1ZhbHVl
IEpTSGlzdG9yeTo6cHVzaFN0YXRlKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gaGlzdG9yeVN0YXRlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpjcmVhdGUoJnN0YXRlLCBzdGF0ZS5hcmd1bWVudCgwKSwgMCwgMCk7CisgICAgYXV0byBoaXN0
b3J5U3RhdGUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgmc3RhdGUsIHN0YXRlLmFy
Z3VtZW50KDApLCAwLCAwKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwogCkBAIC03MSw3ICs3MSw3IEBAIEpTVmFsdWUgSlNIaXN0
b3J5OjpwdXNoU3RhdGUoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICB9CiAKICAgICBFeGNlcHRpb25D
b2RlV2l0aE1lc3NhZ2UgZWM7Ci0gICAgd3JhcHBlZCgpLnN0YXRlT2JqZWN0QWRkZWQoaGlzdG9y
eVN0YXRlLnJlbGVhc2UoKSwgdGl0bGUsIHVybCwgSGlzdG9yeTo6U3RhdGVPYmplY3RUeXBlOjpQ
dXNoLCBlYyk7CisgICAgd3JhcHBlZCgpLnN0YXRlT2JqZWN0QWRkZWQoV1RGTW92ZShoaXN0b3J5
U3RhdGUpLCB0aXRsZSwgdXJsLCBIaXN0b3J5OjpTdGF0ZU9iamVjdFR5cGU6OlB1c2gsIGVjKTsK
ICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAKICAgICBtX3N0YXRlLmNsZWFyKCk7
CkBAIC04MSw3ICs4MSw3IEBAIEpTVmFsdWUgSlNIaXN0b3J5OjpwdXNoU3RhdGUoRXhlY1N0YXRl
JiBzdGF0ZSkKIAogSlNWYWx1ZSBKU0hpc3Rvcnk6OnJlcGxhY2VTdGF0ZShFeGVjU3RhdGUmIHN0
YXRlKQogewotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGhpc3RvcnlTdGF0ZSA9
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCZzdGF0ZSwgc3RhdGUuYXJndW1lbnQoMCks
IDAsIDApOworICAgIGF1dG8gaGlzdG9yeVN0YXRlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpj
cmVhdGUoJnN0YXRlLCBzdGF0ZS5hcmd1bWVudCgwKSwgMCwgMCk7CiAgICAgaWYgKHN0YXRlLmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIApAQCAtOTcsNyAr
OTcsNyBAQCBKU1ZhbHVlIEpTSGlzdG9yeTo6cmVwbGFjZVN0YXRlKEV4ZWNTdGF0ZSYgc3RhdGUp
CiAgICAgfQogCiAgICAgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlIGVjOwotICAgIHdyYXBwZWQo
KS5zdGF0ZU9iamVjdEFkZGVkKGhpc3RvcnlTdGF0ZS5yZWxlYXNlKCksIHRpdGxlLCB1cmwsIEhp
c3Rvcnk6OlN0YXRlT2JqZWN0VHlwZTo6UmVwbGFjZSwgZWMpOworICAgIHdyYXBwZWQoKS5zdGF0
ZU9iamVjdEFkZGVkKFdURk1vdmUoaGlzdG9yeVN0YXRlKSwgdGl0bGUsIHVybCwgSGlzdG9yeTo6
U3RhdGVPYmplY3RUeXBlOjpSZXBsYWNlLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0
ZSwgZWMpOwogCiAgICAgbV9zdGF0ZS5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oCmluZGV4IGZjYTdhNDBhNzk5NzFmZjM4ZGQ5
Y2VkNjJiZjU5Y2RjNDU1ZmM4MjUuLjA2Mjk0NmI3MzFjOWM1NTYyYzk1MmVhNjYxZGVmNmQ2OGI4
OTVmNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBv
cnRDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0
Q3VzdG9tLmgKQEAgLTU2LDEyICs1NiwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IE1lc3NhZ2VQb3J0QXJyYXkgcG9ydEFycmF5OwogICAgICAgICBBcnJheUJ1ZmZlckFycmF5IGFy
cmF5QnVmZmVyQXJyYXk7CiAgICAgICAgIGZpbGxNZXNzYWdlUG9ydEFycmF5KHN0YXRlLCBzdGF0
ZS5hcmd1bWVudCgxKSwgcG9ydEFycmF5LCBhcnJheUJ1ZmZlckFycmF5KTsKLSAgICAgICAgUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y3JlYXRlKCZzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCksICZwb3J0QXJyYXks
ICZhcnJheUJ1ZmZlckFycmF5KTsKKyAgICAgICAgYXV0byBtZXNzYWdlID0gU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpjcmVhdGUoJnN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSwgJnBv
cnRBcnJheSwgJmFycmF5QnVmZmVyQXJyYXkpOwogICAgICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOwogCiAgICAgICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICBpbXBsLT5wb3N0TWVzc2FnZShtZXNzYWdl
LnJlbGVhc2UoKSwgJnBvcnRBcnJheSwgZWMpOworICAgICAgICBpbXBsLT5wb3N0TWVzc2FnZShX
VEZNb3ZlKG1lc3NhZ2UpLCAmcG9ydEFycmF5LCBlYyk7CiAgICAgICAgIHNldERPTUV4Y2VwdGlv
bigmc3RhdGUsIGVjKTsKICAgICAgICAgcmV0dXJuIEpTQzo6anNVbmRlZmluZWQoKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlck1hYy5t
bQppbmRleCA1ZmM3MmRmMDVjN2I2ODE3ZjJiOWViODEzN2IyNDI5MjNmYzAyNGJlLi5hODQ3NDUy
MjM2YTVjOTU4MjY4ODM1NjAxZjRjY2Q3NTg3MWJkYmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJNYWMubW0KQEAgLTY2LDEwICs2NiwxMCBA
QCBSZWZQdHI8SlNDOjpCaW5kaW5nczo6SW5zdGFuY2U+IFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0
ZVNjcmlwdEluc3RhbmNlRm9yV2lkZ2V0KAogICAgIGlmICghd2lkZ2V0VmlldykKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8Um9vdE9iamVjdD4gcm9vdE9iamVjdCA9IGNy
ZWF0ZVJvb3RPYmplY3Qod2lkZ2V0Vmlldyk7CisgICAgYXV0byByb290T2JqZWN0ID0gY3JlYXRl
Um9vdE9iamVjdCh3aWRnZXRWaWV3KTsKIAogICAgIGlmIChbd2lkZ2V0VmlldyByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKGNyZWF0ZVBsdWdpbkJpbmRpbmdzSW5zdGFuY2U6KV0pCi0gICAg
ICAgIHJldHVybiBbd2lkZ2V0VmlldyBjcmVhdGVQbHVnaW5CaW5kaW5nc0luc3RhbmNlOnJvb3RP
YmplY3QucmVsZWFzZSgpXTsKKyAgICAgICAgcmV0dXJuIFt3aWRnZXRWaWV3IGNyZWF0ZVBsdWdp
bkJpbmRpbmdzSW5zdGFuY2U6V1RGTW92ZShyb290T2JqZWN0KV07CiAgICAgICAgIAogICAgIGlm
IChbd2lkZ2V0VmlldyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG9iamVjdEZvcldlYlNj
cmlwdCldKSB7CiAgICAgICAgIGlkIG9iamVjdEZvcldlYlNjcmlwdCA9IFt3aWRnZXRWaWV3IG9i
amVjdEZvcldlYlNjcmlwdF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA2ODJjYzYyM2ZhZDdjNjk4MWY1Njg4NmZh
YTNjNTY2NDVhYWY2M2ViLi44NjliNmVhYTgwNGY3NzQ2YTAxMTBlNzUyN2RjMWQ4YWQyMjY1NjZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHAKQEAgLTIzNTQsNyArMjM1NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgZmFpbCgpOwogICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0ZSht
X2V4ZWMtPnZtKCksIG1fZ2xvYmFsT2JqZWN0LT5hcnJheUJ1ZmZlclN0cnVjdHVyZSgpLCBhcnJh
eUJ1ZmZlci5yZWxlYXNlKCkpOworICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBKU0FycmF5
QnVmZmVyOjpjcmVhdGUobV9leGVjLT52bSgpLCBtX2dsb2JhbE9iamVjdC0+YXJyYXlCdWZmZXJT
dHJ1Y3R1cmUoKSwgV1RGTW92ZShhcnJheUJ1ZmZlcikpOwogICAgICAgICAgICAgbV9nY0J1ZmZl
ci5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5j
cHAKaW5kZXggNjdkOWQ1N2ZlZjFhYzNjMGIzYzI5ZGFjZDBkNzMxOWY4NjQzMzk0NS4uM2I0Mjc3
YmRiMGI0OTVkZDNkOTEwMWM2NjEzYWVhZTU2NjNmOTMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTQwNTksOSArNDA1
OSw5IEBAIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9y
Ojpjb3B5UHJvcGVydGllc0luU2V0KGNvbnN0IENTCiAgICAgVmVjdG9yPENTU1Byb3BlcnR5LCAy
NTY+IGxpc3Q7CiAgICAgbGlzdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0aCk7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIFJlZlB0cjxD
U1NWYWx1ZT4gdmFsdWUgPSBwcm9wZXJ0eVZhbHVlKHNldFtpXSk7CisgICAgICAgIGF1dG8gdmFs
dWUgPSBwcm9wZXJ0eVZhbHVlKHNldFtpXSk7CiAgICAgICAgIGlmICh2YWx1ZSkKLSAgICAgICAg
ICAgIGxpc3QuYXBwZW5kKENTU1Byb3BlcnR5KHNldFtpXSwgdmFsdWUucmVsZWFzZSgpLCBmYWxz
ZSkpOworICAgICAgICAgICAgbGlzdC5hcHBlbmQoQ1NTUHJvcGVydHkoc2V0W2ldLCBXVEZNb3Zl
KHZhbHVlKSwgZmFsc2UpKTsKICAgICB9CiAgICAgcmV0dXJuIE11dGFibGVTdHlsZVByb3BlcnRp
ZXM6OmNyZWF0ZShsaXN0LmRhdGEoKSwgbGlzdC5zaXplKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZH
Q1NTUGFyc2VyLmNwcAppbmRleCBmMGM0ODU0Y2M2MWQxYWZhMDUzYjVjZmU5ZjI4ODQ4MDhlYjBk
ZWQwLi45Y2I0NzkzYmJlMTQwZTMzNDIyNWQyNDMwODIzNzY0ZWM5MDllOWI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcApAQCAtMjcyLDkgKzI3Miw5IEBAIGJvb2wgQ1NTUGFyc2Vy
OjpwYXJzZVNWR1ZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAg
ICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSkKICAgICAgICAgICAgIHZhbGlkX3ByaW1pdGl2
ZSA9IHRydWU7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlz
dD4gc2hhZG93VmFsdWVMaXN0ID0gcGFyc2VTaGFkb3coKm1fdmFsdWVMaXN0LCBwcm9wSWQpOwor
ICAgICAgICAgICAgYXV0byBzaGFkb3dWYWx1ZUxpc3QgPSBwYXJzZVNoYWRvdygqbV92YWx1ZUxp
c3QsIHByb3BJZCk7CiAgICAgICAgICAgICBpZiAoc2hhZG93VmFsdWVMaXN0KSB7Ci0gICAgICAg
ICAgICAgICAgYWRkUHJvcGVydHkocHJvcElkLCBzaGFkb3dWYWx1ZUxpc3QucmVsZWFzZSgpLCBp
bXBvcnRhbnQpOworICAgICAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BJZCwgV1RGTW92ZShz
aGFkb3dWYWx1ZUxpc3QpLCBpbXBvcnRhbnQpOwogICAgICAgICAgICAgICAgIG1fdmFsdWVMaXN0
LT5uZXh0KCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CkBA
IC0zMzYsNyArMzM2LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlU1ZHVmFsdWUoQ1NTUHJvcGVy
dHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGlmICghcGFyc2VkVmFsdWUgfHwgKG1f
dmFsdWVMaXN0LT5jdXJyZW50KCkgJiYgIWluU2hvcnRoYW5kKCkpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBhZGRQcm9wZXJ0eShwcm9wSWQsIHBhcnNlZFZhbHVlLnJlbGVhc2UoKSwg
aW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShwcm9wSWQsIFdURk1vdmUocGFyc2VkVmFsdWUp
LCBpbXBvcnRhbnQpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVCdWlsZGVyQ29udmVydGVyLmgKaW5kZXggNzdhYzY1ZjI4MzhkYTYzY2VjNDg4Zjg1ZDJi
YTMxYzE3YmY2MDg5ZC4uYWY0NTcxM2RmNTgzMDFjYTMwN2MzMDZhZjQ4MTQ2Y2RhY2ZiNDA1MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaApAQCAtNzYyLDcg
Kzc2Miw3IEBAIGlubGluZSBQYXNzUmVmUHRyPFNoYXBlVmFsdWU+IFN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydFNoYXBlVmFsdWUoU3R5bGVSZXNvCiAgICAgfQogCiAgICAgaWYgKHNoYXBl
KQotICAgICAgICByZXR1cm4gU2hhcGVWYWx1ZTo6Y3JlYXRlU2hhcGVWYWx1ZShzaGFwZS5yZWxl
YXNlKCksIHJlZmVyZW5jZUJveCk7CisgICAgICAgIHJldHVybiBTaGFwZVZhbHVlOjpjcmVhdGVT
aGFwZVZhbHVlKFdURk1vdmUoc2hhcGUpLCByZWZlcmVuY2VCb3gpOwogCiAgICAgaWYgKHJlZmVy
ZW5jZUJveCAhPSBCb3hNaXNzaW5nKQogICAgICAgICByZXR1cm4gU2hhcGVWYWx1ZTo6Y3JlYXRl
Qm94U2hhcGVWYWx1ZShyZWZlcmVuY2VCb3gpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUHJvcGVydGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0
aWVzLmNwcAppbmRleCBiZmNiZmE3MmQyMDRmOWFlOWFkNWQ2NzFmMmRiY2IwNmQwNGJmY2U1Li5m
N2JjNzMwMTVkZTBkMzU2ZWE0YzkxY2M5MzAyMTUxODc2MjFjYTY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVQcm9wZXJ0aWVzLmNwcApAQCAtMTMxMyw5ICsxMzEzLDkgQEAgUmVmPE11dGFibGVT
dHlsZVByb3BlcnRpZXM+IFN0eWxlUHJvcGVydGllczo6Y29weVByb3BlcnRpZXNJblNldChjb25z
dCBDU1NQcm9wZXIKICAgICBWZWN0b3I8Q1NTUHJvcGVydHksIDI1Nj4gbGlzdDsKICAgICBsaXN0
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdl
dFByb3BlcnR5Q1NTVmFsdWVJbnRlcm5hbChzZXRbaV0pOworICAgICAgICBhdXRvIHZhbHVlID0g
Z2V0UHJvcGVydHlDU1NWYWx1ZUludGVybmFsKHNldFtpXSk7CiAgICAgICAgIGlmICh2YWx1ZSkK
LSAgICAgICAgICAgIGxpc3QuYXBwZW5kKENTU1Byb3BlcnR5KHNldFtpXSwgdmFsdWUucmVsZWFz
ZSgpLCBmYWxzZSkpOworICAgICAgICAgICAgbGlzdC5hcHBlbmQoQ1NTUHJvcGVydHkoc2V0W2ld
LCBXVEZNb3ZlKHZhbHVlKSwgZmFsc2UpKTsKICAgICB9CiAgICAgcmV0dXJuIE11dGFibGVTdHls
ZVByb3BlcnRpZXM6OmNyZWF0ZShsaXN0LmRhdGEoKSwgbGlzdC5zaXplKCkpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGMxN2FhZmE5NjQ1OGUzYWZmMjE1NjY0YWE2
NDI2OWIyY2EyYTUwZDkuLmFiNmRmMjc2YjQ2OTk1NzA3NDFlODFiZmVkZDQ5YzY3YWJjZWZhMmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTIxOTMsOCArMjE5Myw4IEBA
IHZvaWQgU3R5bGVSZXNvbHZlcjo6bG9hZFBlbmRpbmdJbWFnZXMoKQogICAgICAgICAgICAgICAg
IGlmIChpczxJbWFnZUNvbnRlbnREYXRhPigqY29udGVudERhdGEpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGF1dG8mIHN0eWxlSW1hZ2UgPSBkb3duY2FzdDxJbWFnZUNvbnRlbnREYXRhPigqY29u
dGVudERhdGEpLmltYWdlKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChpczxTdHlsZVBlbmRp
bmdJbWFnZT4oc3R5bGVJbWFnZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSZWZQ
dHI8U3R5bGVJbWFnZT4gbG9hZGVkSW1hZ2UgPSBsb2FkUGVuZGluZ0ltYWdlKGRvd25jYXN0PFN0
eWxlUGVuZGluZ0ltYWdlPihzdHlsZUltYWdlKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZG93bmNhc3Q8SW1hZ2VDb250ZW50RGF0YT4oKmNvbnRlbnREYXRhKS5zZXRJbWFnZShsb2Fk
ZWRJbWFnZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8gbG9h
ZGVkSW1hZ2UgPSBsb2FkUGVuZGluZ0ltYWdlKGRvd25jYXN0PFN0eWxlUGVuZGluZ0ltYWdlPihz
dHlsZUltYWdlKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG93bmNhc3Q8SW1hZ2VD
b250ZW50RGF0YT4oKmNvbnRlbnREYXRhKS5zZXRJbWFnZShXVEZNb3ZlKGxvYWRlZEltYWdlKSk7
CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
CkBAIC0yMjI4LDggKzIyMjgsOCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmxvYWRQZW5kaW5nSW1h
Z2VzKCkKICAgICAgICAgICAgICAgICBjb25zdCBOaW5lUGllY2VJbWFnZSYgbWFza0ltYWdlID0g
cmVmbGVjdGlvbi0+bWFzaygpOwogICAgICAgICAgICAgICAgIGF1dG8qIHN0eWxlSW1hZ2UgPSBt
YXNrSW1hZ2UuaW1hZ2UoKTsKICAgICAgICAgICAgICAgICBpZiAoaXM8U3R5bGVQZW5kaW5nSW1h
Z2U+KHN0eWxlSW1hZ2UpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlZlB0cjxTdHlsZUltYWdl
PiBsb2FkZWRJbWFnZSA9IGxvYWRQZW5kaW5nSW1hZ2UoZG93bmNhc3Q8U3R5bGVQZW5kaW5nSW1h
Z2U+KCpzdHlsZUltYWdlKSk7Ci0gICAgICAgICAgICAgICAgICAgIHJlZmxlY3Rpb24tPnNldE1h
c2soTmluZVBpZWNlSW1hZ2UobG9hZGVkSW1hZ2UucmVsZWFzZSgpLCBtYXNrSW1hZ2UuaW1hZ2VT
bGljZXMoKSwgbWFza0ltYWdlLmZpbGwoKSwgbWFza0ltYWdlLmJvcmRlclNsaWNlcygpLCBtYXNr
SW1hZ2Uub3V0c2V0KCksIG1hc2tJbWFnZS5ob3Jpem9udGFsUnVsZSgpLCBtYXNrSW1hZ2UudmVy
dGljYWxSdWxlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBsb2FkZWRJbWFnZSA9IGxv
YWRQZW5kaW5nSW1hZ2UoZG93bmNhc3Q8U3R5bGVQZW5kaW5nSW1hZ2U+KCpzdHlsZUltYWdlKSk7
CisgICAgICAgICAgICAgICAgICAgIHJlZmxlY3Rpb24tPnNldE1hc2soTmluZVBpZWNlSW1hZ2Uo
V1RGTW92ZShsb2FkZWRJbWFnZSksIG1hc2tJbWFnZS5pbWFnZVNsaWNlcygpLCBtYXNrSW1hZ2Uu
ZmlsbCgpLCBtYXNrSW1hZ2UuYm9yZGVyU2xpY2VzKCksIG1hc2tJbWFnZS5vdXRzZXQoKSwgbWFz
a0ltYWdlLmhvcml6b250YWxSdWxlKCksIG1hc2tJbWFnZS52ZXJ0aWNhbFJ1bGUoKSkpOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAppbmRleCA5ZmM0MjZkMWI4
MzhlMmQzZTIxZDgzMmQ0N2JiNjIxODllYTE5OWIzLi5lMDA2YjgxYTZjMWUyYzU0MGMzMTg1YTE3
Y2ZiZTU5NTM5ZjJmMDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5
bGVTaGVldE93bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVl
dE93bmVyLmNwcApAQCAtMTA5LDcgKzEwOSw4IEBAIHZvaWQgSW5saW5lU3R5bGVTaGVldE93bmVy
OjpjcmVhdGVTaGVldEZyb21UZXh0Q29udGVudHMoRWxlbWVudCYgZWxlbWVudCkKIHZvaWQgSW5s
aW5lU3R5bGVTaGVldE93bmVyOjpjbGVhclNoZWV0KCkKIHsKICAgICBBU1NFUlQobV9zaGVldCk7
Ci0gICAgbV9zaGVldC5yZWxlYXNlKCktPmNsZWFyT3duZXJOb2RlKCk7CisgICAgYXV0byBzaGVl
dCA9IFdURk1vdmUobV9zaGVldCk7CisgICAgc2hlZXQtPmNsZWFyT3duZXJOb2RlKCk7CiB9CiAK
IGlubGluZSBib29sIGlzVmFsaWRDU1NDb250ZW50VHlwZShFbGVtZW50JiBlbGVtZW50LCBjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0FwcGx5U3R5bGVDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHls
ZUNvbW1hbmQuY3BwCmluZGV4IGEwNTk5ZGUzMjRjNTU5MTJkZTE5NDEwMTI2NjVhMzgzYWI4ZmZl
ZDUuLjI2N2Y5NTA1YzUxYzQ3ZWVkMWRlYWQwMDBkZDhkODhmMDlmYTdiYTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCkBAIC04NDAsNyArODQwLDcg
QEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlJbmxpbmVTdHlsZVRvTm9kZVJhbmdlKEVk
aXRpbmdTdHlsZSogc3R5bGUsIFBhc3NSZWYKICAgICAgICAgaWYgKHJ1bi5kdW1teUVsZW1lbnQp
CiAgICAgICAgICAgICByZW1vdmVOb2RlKHJ1bi5kdW1teUVsZW1lbnQpOwogICAgICAgICBpZiAo
cnVuLnN0YXJ0QW5kRW5kQXJlU3RpbGxJbkRvY3VtZW50KCkpCi0gICAgICAgICAgICBhcHBseUlu
bGluZVN0eWxlQ2hhbmdlKHJ1bi5zdGFydC5yZWxlYXNlKCksIHJ1bi5lbmQucmVsZWFzZSgpLCBy
dW4uY2hhbmdlLCBBZGRTdHlsZWRFbGVtZW50KTsKKyAgICAgICAgICAgIGFwcGx5SW5saW5lU3R5
bGVDaGFuZ2UoV1RGTW92ZShydW4uc3RhcnQpLCBXVEZNb3ZlKHJ1bi5lbmQpLCBydW4uY2hhbmdl
LCBBZGRTdHlsZWRFbGVtZW50KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKaW5kZXggYjkwNDJmYTRkZjc4OWE1NmE2OGU5
MjkzM2Q3NTA5ZGUyMjZjYmY0ZS4uOTE3OTdhMWJmY2FmOTAyNzI1NjUxMjNkZWU0ZTU5MjE5MTRk
NzlkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29t
bWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFu
ZC5jcHAKQEAgLTUyMiw3ICs1MjIsNyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZW1v
dmVDaGlsZHJlbkluUmFuZ2UoUGFzc1JlZlB0cjxOb2RlPiBub2RlLCB1bnNpZ25lZAogICAgICAg
ICBjaGlsZHJlbi5hcHBlbmQoY2hpbGQpOwogCiAgICAgZm9yIChhdXRvJiBjaGlsZCA6IGNoaWxk
cmVuKQotICAgICAgICByZW1vdmVOb2RlKGNoaWxkLnJlbGVhc2UoKSk7CisgICAgICAgIHJlbW92
ZU5vZGUoV1RGTW92ZShjaGlsZCkpOwogfQogCiB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpy
ZW1vdmVOb2RlKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSwgU2hvdWxkQXNzdW1lQ29udGVudElzQWx3
YXlzRWRpdGFibGUgc2hvdWxkQXNzdW1lQ29udGVudElzQWx3YXlzRWRpdGFibGUpCkBAIC01NDEs
NyArNTQxLDcgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVtb3ZlTm9kZUFuZFBydW5l
QW5jZXN0b3JzKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSkKIHsKICAgICBSZWZQdHI8Q29udGFpbmVy
Tm9kZT4gcGFyZW50ID0gbm9kZS0+cGFyZW50Tm9kZSgpOwogICAgIHJlbW92ZU5vZGUobm9kZSk7
Ci0gICAgcHJ1bmUocGFyZW50LnJlbGVhc2UoKSk7CisgICAgcHJ1bmUoV1RGTW92ZShwYXJlbnQp
KTsKIH0KIAogdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVJlbWFpbmluZ1NpYmxpbmdz
VG9OZXdQYXJlbnQoTm9kZSogbm9kZSwgTm9kZSogcGFzdExhc3ROb2RlVG9Nb3ZlLCBQYXNzUmVm
UHRyPEVsZW1lbnQ+IHBycE5ld1BhcmVudCkKQEAgLTU4Myw3ICs1ODMsNyBAQCBIVE1MRWxlbWVu
dCogQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlcGxhY2VFbGVtZW50V2l0aFNwYW5QcmVzZXJ2aW5n
Q2hpbGRyZW5BbmRBdAogdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cHJ1bmUoUGFzc1JlZlB0
cjxOb2RlPiBub2RlKQogewogICAgIGlmIChSZWZQdHI8Tm9kZT4gaGlnaGVzdE5vZGVUb1JlbW92
ZSA9IGhpZ2hlc3ROb2RlVG9SZW1vdmVJblBydW5pbmcobm9kZS5nZXQoKSkpCi0gICAgICAgIHJl
bW92ZU5vZGUoaGlnaGVzdE5vZGVUb1JlbW92ZS5yZWxlYXNlKCkpOworICAgICAgICByZW1vdmVO
b2RlKFdURk1vdmUoaGlnaGVzdE5vZGVUb1JlbW92ZSkpOwogfQogCiB2b2lkIENvbXBvc2l0ZUVk
aXRDb21tYW5kOjpzcGxpdFRleHROb2RlKFBhc3NSZWZQdHI8VGV4dD4gbm9kZSwgdW5zaWduZWQg
b2Zmc2V0KQpAQCAtNjg4LDcgKzY4OCw3IEBAIFBvc2l0aW9uIENvbXBvc2l0ZUVkaXRDb21tYW5k
OjpyZXBsYWNlU2VsZWN0ZWRUZXh0SW5Ob2RlKGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICBSZWZQ
dHI8VGV4dD4gdGV4dE5vZGUgPSBzdGFydC5jb250YWluZXJUZXh0KCk7CiAgICAgcmVwbGFjZVRl
eHRJbk5vZGUodGV4dE5vZGUsIHN0YXJ0Lm9mZnNldEluQ29udGFpbmVyTm9kZSgpLCBlbmQub2Zm
c2V0SW5Db250YWluZXJOb2RlKCkgLSBzdGFydC5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSwgdGV4
dCk7CiAKLSAgICByZXR1cm4gUG9zaXRpb24odGV4dE5vZGUucmVsZWFzZSgpLCBzdGFydC5vZmZz
ZXRJbkNvbnRhaW5lck5vZGUoKSArIHRleHQubGVuZ3RoKCkpOworICAgIHJldHVybiBQb3NpdGlv
bihXVEZNb3ZlKHRleHROb2RlKSwgc3RhcnQub2Zmc2V0SW5Db250YWluZXJOb2RlKCkgKyB0ZXh0
Lmxlbmd0aCgpKTsKIH0KIAogc3RhdGljIFZlY3RvcjxSZW5kZXJlZERvY3VtZW50TWFya2VyPiBj
b3B5TWFya2Vycyhjb25zdCBWZWN0b3I8UmVuZGVyZWREb2N1bWVudE1hcmtlcio+JiBtYXJrZXJQ
b2ludGVycykKQEAgLTg3Miw3ICs4NzIsNyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpy
ZWJhbGFuY2VXaGl0ZXNwYWNlT25UZXh0U3Vic3RyaW5nKFBhc3NSZWZQdHI8VGV4dD4gcAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlzRW5kT2ZQYXJhZ3JhcGgodmlzaWJsZURvd25zdHJlYW1Qb3MpIHx8ICh1bnNpZ25lZClkb3du
c3RyZWFtID09IHRleHQubGVuZ3RoKCkpOwogICAgIAogICAgIGlmIChzdHJpbmcgIT0gcmViYWxh
bmNlZFN0cmluZykKLSAgICAgICAgcmVwbGFjZVRleHRJbk5vZGVQcmVzZXJ2aW5nTWFya2Vycyh0
ZXh0Tm9kZS5yZWxlYXNlKCksIHVwc3RyZWFtLCBsZW5ndGgsIHJlYmFsYW5jZWRTdHJpbmcpOwor
ICAgICAgICByZXBsYWNlVGV4dEluTm9kZVByZXNlcnZpbmdNYXJrZXJzKFdURk1vdmUodGV4dE5v
ZGUpLCB1cHN0cmVhbSwgbGVuZ3RoLCByZWJhbGFuY2VkU3RyaW5nKTsKIH0KIAogdm9pZCBDb21w
b3NpdGVFZGl0Q29tbWFuZDo6cHJlcGFyZVdoaXRlc3BhY2VBdFBvc2l0aW9uRm9yU3BsaXQoUG9z
aXRpb24mIHBvc2l0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9DcmVh
dGVMaW5rQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NyZWF0ZUxpbmtDb21t
YW5kLmNwcAppbmRleCBhM2VlN2U1MDU4NDI4ZWY4MzEwNTM5OThiODIxYjJkNDdmYjZhYThmLi4z
YTA1MjA4NzNiNDRmZTY0YTJlZDUyMmUzMzdkZmI3NGUxMmE2MjI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0NyZWF0ZUxpbmtDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0NyZWF0ZUxpbmtDb21tYW5kLmNwcApAQCAtNDMsMTYgKzQzLDE2IEBAIHZv
aWQgQ3JlYXRlTGlua0NvbW1hbmQ6OmRvQXBwbHkoKQogICAgIGlmIChlbmRpbmdTZWxlY3Rpb24o
KS5pc05vbmUoKSkKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICBSZWZQdHI8SFRNTEFu
Y2hvckVsZW1lbnQ+IGFuY2hvckVsZW1lbnQgPSBIVE1MQW5jaG9yRWxlbWVudDo6Y3JlYXRlKGRv
Y3VtZW50KCkpOworICAgIGF1dG8gYW5jaG9yRWxlbWVudCA9IEhUTUxBbmNob3JFbGVtZW50Ojpj
cmVhdGUoZG9jdW1lbnQoKSk7CiAgICAgYW5jaG9yRWxlbWVudC0+c2V0SHJlZihtX3VybCk7CiAg
ICAgCiAgICAgaWYgKGVuZGluZ1NlbGVjdGlvbigpLmlzUmFuZ2UoKSkKLSAgICAgICAgYXBwbHlT
dHlsZWRFbGVtZW50KGFuY2hvckVsZW1lbnQucmVsZWFzZSgpKTsKKyAgICAgICAgYXBwbHlTdHls
ZWRFbGVtZW50KFdURk1vdmUoYW5jaG9yRWxlbWVudCkpOwogICAgIGVsc2UgewotICAgICAgICBp
bnNlcnROb2RlQXQoYW5jaG9yRWxlbWVudC5nZXQoKSwgZW5kaW5nU2VsZWN0aW9uKCkuc3RhcnQo
KSk7Ci0gICAgICAgIFJlZlB0cjxUZXh0PiB0ZXh0Tm9kZSA9IFRleHQ6OmNyZWF0ZShkb2N1bWVu
dCgpLCBtX3VybCk7Ci0gICAgICAgIGFwcGVuZE5vZGUodGV4dE5vZGUucmVsZWFzZSgpLCBhbmNo
b3JFbGVtZW50LmdldCgpKTsKLSAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxl
Y3Rpb24ocG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUoYW5jaG9yRWxlbWVudC5nZXQoKSksIHBv
c2l0aW9uSW5QYXJlbnRBZnRlck5vZGUoYW5jaG9yRWxlbWVudC5nZXQoKSksIERPV05TVFJFQU0s
IGVuZGluZ1NlbGVjdGlvbigpLmlzRGlyZWN0aW9uYWwoKSkpOworICAgICAgICBpbnNlcnROb2Rl
QXQoYW5jaG9yRWxlbWVudC5wdHIoKSwgZW5kaW5nU2VsZWN0aW9uKCkuc3RhcnQoKSk7CisgICAg
ICAgIGF1dG8gdGV4dE5vZGUgPSBUZXh0OjpjcmVhdGUoZG9jdW1lbnQoKSwgbV91cmwpOworICAg
ICAgICBhcHBlbmROb2RlKFdURk1vdmUodGV4dE5vZGUpLCBhbmNob3JFbGVtZW50LnB0cigpKTsK
KyAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocG9zaXRpb25JblBh
cmVudEJlZm9yZU5vZGUoYW5jaG9yRWxlbWVudC5wdHIoKSksIHBvc2l0aW9uSW5QYXJlbnRBZnRl
ck5vZGUoYW5jaG9yRWxlbWVudC5wdHIoKSksIERPV05TVFJFQU0sIGVuZGluZ1NlbGVjdGlvbigp
LmlzRGlyZWN0aW9uYWwoKSkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
aW5nU3R5bGUuY3BwCmluZGV4IDI5MTRmNjI3MTJiNzJkMTE4YWViZDIxNjUyMTA5ZGJmNTRmY2Iy
ZmEuLmVjN2U3ZWI3NzJhNzFkMjliOWRiODFmMTNmODA5YTIyMWQyZjcxN2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKQEAgLTEyNDgsOSArMTI0OCw5IEBAIHZvaWQg
RWRpdGluZ1N0eWxlOjptZXJnZVN0eWxlKGNvbnN0IFN0eWxlUHJvcGVydGllcyogc3R5bGUsIENT
U1Byb3BlcnR5T3ZlcnJpZGVNCiAgICAgICAgIGlmICgocHJvcGVydHkuaWQoKSA9PSBDU1NQcm9w
ZXJ0eVRleHREZWNvcmF0aW9uIHx8IHByb3BlcnR5LmlkKCkgPT0gQ1NTUHJvcGVydHlXZWJraXRU
ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCkKICAgICAgICAgICAgICYmIGlzPENTU1ZhbHVlTGlzdD4o
KnByb3BlcnR5LnZhbHVlKCkpICYmIHZhbHVlKSB7CiAgICAgICAgICAgICBpZiAoaXM8Q1NTVmFs
dWVMaXN0PigqdmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4g
bmV3VmFsdWUgPSBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KCp2YWx1ZSkuY29weSgpOwotICAgICAg
ICAgICAgICAgIG1lcmdlVGV4dERlY29yYXRpb25WYWx1ZXMoKm5ld1ZhbHVlLCBkb3duY2FzdDxD
U1NWYWx1ZUxpc3Q+KCpwcm9wZXJ0eS52YWx1ZSgpKSk7Ci0gICAgICAgICAgICAgICAgbV9tdXRh
YmxlU3R5bGUtPnNldFByb3BlcnR5KHByb3BlcnR5LmlkKCksIG5ld1ZhbHVlLnJlbGVhc2UoKSwg
cHJvcGVydHkuaXNJbXBvcnRhbnQoKSk7CisgICAgICAgICAgICAgICAgYXV0byBuZXdWYWx1ZSA9
IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4oKnZhbHVlKS5jb3B5KCk7CisgICAgICAgICAgICAgICAg
bWVyZ2VUZXh0RGVjb3JhdGlvblZhbHVlcyhuZXdWYWx1ZSwgZG93bmNhc3Q8Q1NTVmFsdWVMaXN0
PigqcHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICAgICAgICAgIG1fbXV0YWJsZVN0eWxlLT5z
ZXRQcm9wZXJ0eShwcm9wZXJ0eS5pZCgpLCBXVEZNb3ZlKG5ld1ZhbHVlKSwgcHJvcGVydHkuaXNJ
bXBvcnRhbnQoKSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB2YWx1ZSA9IG51bGxwdHI7IC8vIHRleHQtZGVjb3JhdGlvbjogbm9uZSBpcyBl
cXVpdmFsZW50IHRvIG5vdCBoYXZpbmcgdGhlIHByb3BlcnR5LgpAQCAtMTMwNyw4ICsxMzA3LDgg
QEAgdm9pZCBFZGl0aW5nU3R5bGU6Om1lcmdlU3R5bGVGcm9tUnVsZXNGb3JTZXJpYWxpemF0aW9u
KFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgICAgICAgICBpZiAoIWlzPENTU1ByaW1pdGl2
ZVZhbHVlPigqdmFsdWUpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
aWYgKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLmlzUGVyY2VudGFnZSgpKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKFJlZlB0cjxDU1NWYWx1ZT4gY29tcHV0ZWRQcm9wZXJ0eVZh
bHVlID0gY29tcHV0ZWRTdHlsZS5wcm9wZXJ0eVZhbHVlKHByb3BlcnR5LmlkKCkpKQotICAgICAg
ICAgICAgICAgICAgICBmcm9tQ29tcHV0ZWRTdHlsZS0+YWRkUGFyc2VkUHJvcGVydHkoQ1NTUHJv
cGVydHkocHJvcGVydHkuaWQoKSwgY29tcHV0ZWRQcm9wZXJ0eVZhbHVlLnJlbGVhc2UoKSkpOwor
ICAgICAgICAgICAgICAgIGlmIChhdXRvIGNvbXB1dGVkUHJvcGVydHlWYWx1ZSA9IGNvbXB1dGVk
U3R5bGUucHJvcGVydHlWYWx1ZShwcm9wZXJ0eS5pZCgpKSkKKyAgICAgICAgICAgICAgICAgICAg
ZnJvbUNvbXB1dGVkU3R5bGUtPmFkZFBhcnNlZFByb3BlcnR5KENTU1Byb3BlcnR5KHByb3BlcnR5
LmlkKCksIFdURk1vdmUoY29tcHV0ZWRQcm9wZXJ0eVZhbHVlKSkpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDM0Y2RjZTk5
ZjNiZmYzMmQ0NjlmNDUxNjk3ZDRkNTlkYTcwOGM1ZmEuLmY2NjYzMzAxNjQzMDMxMzU4NTQwZmI3
NGMxMjUwNzg2ZjdjNzUzNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTEzNiw5
ICsxMzYsOSBAQCB2b2lkIENsZWFyVGV4dENvbW1hbmQ6OkNyZWF0ZUFuZEFwcGx5KGNvbnN0IFJl
ZlB0cjxGcmFtZT4gZnJhbWUpCiAgICAgCiAgICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiBvbGRT
ZWxlY3Rpb24gPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CiAgICAgZnJhbWUtPnNl
bGVjdGlvbigpLnNlbGVjdEFsbCgpOwotICAgIFJlZlB0cjxDbGVhclRleHRDb21tYW5kPiBjbGVh
ckNvbW1hbmQgPSBhZG9wdFJlZihuZXcgQ2xlYXJUZXh0Q29tbWFuZCgqZnJhbWUtPmRvY3VtZW50
KCkpKTsKKyAgICBhdXRvIGNsZWFyQ29tbWFuZCA9IGFkb3B0UmVmKCpuZXcgQ2xlYXJUZXh0Q29t
bWFuZCgqZnJhbWUtPmRvY3VtZW50KCkpKTsKICAgICBjbGVhckNvbW1hbmQtPnNldFN0YXJ0aW5n
U2VsZWN0aW9uKG9sZFNlbGVjdGlvbik7Ci0gICAgYXBwbHlDb21tYW5kKGNsZWFyQ29tbWFuZC5y
ZWxlYXNlKCkpOworICAgIGFwcGx5Q29tbWFuZChXVEZNb3ZlKGNsZWFyQ29tbWFuZCkpOwogfQog
CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMjQzMywxNiArMjQzMywxNiBAQCB2b2lk
IEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hl
Y2tpbmdUeXBlTWFzayB0ZXh0QwogICAgIGJvb2wgYXN5bmNocm9ub3VzID0gbV9mcmFtZS5zZXR0
aW5ncygpLmFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgJiYgIXNob3VsZFNob3dD
b3JyZWN0aW9uUGFuZWw7CiAKICAgICAvLyBJbiBhc3luY2hyb25vdXMgbW9kZSwgd2UgaW50ZW50
aW9uYWxseSBjaGVjayBwYXJhZ3JhcGgtd2lkZSBzZW50ZW5jZS4KLSAgICBSZWZQdHI8U3BlbGxD
aGVja1JlcXVlc3Q+IHJlcXVlc3QgPSBTcGVsbENoZWNrUmVxdWVzdDo6Y3JlYXRlKHJlc29sdmVU
ZXh0Q2hlY2tpbmdUeXBlTWFzayh0ZXh0Q2hlY2tpbmdPcHRpb25zKSwgVGV4dENoZWNraW5nUHJv
Y2Vzc0luY3JlbWVudGFsLCBhc3luY2hyb25vdXMgPyBwYXJhZ3JhcGhSYW5nZSA6IHJhbmdlVG9D
aGVjaywgcGFyYWdyYXBoUmFuZ2UpOworICAgIGF1dG8gcmVxdWVzdCA9IFNwZWxsQ2hlY2tSZXF1
ZXN0OjpjcmVhdGUocmVzb2x2ZVRleHRDaGVja2luZ1R5cGVNYXNrKHRleHRDaGVja2luZ09wdGlv
bnMpLCBUZXh0Q2hlY2tpbmdQcm9jZXNzSW5jcmVtZW50YWwsIGFzeW5jaHJvbm91cyA/IHBhcmFn
cmFwaFJhbmdlIDogcmFuZ2VUb0NoZWNrLCBwYXJhZ3JhcGhSYW5nZSk7CiAKICAgICBpZiAoYXN5
bmNocm9ub3VzKSB7Ci0gICAgICAgIG1fc3BlbGxDaGVja2VyLT5yZXF1ZXN0Q2hlY2tpbmdGb3Io
cmVxdWVzdC5yZWxlYXNlKCkpOworICAgICAgICBtX3NwZWxsQ2hlY2tlci0+cmVxdWVzdENoZWNr
aW5nRm9yKFdURk1vdmUocmVxdWVzdCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAg
VmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gcmVzdWx0czsKICAgICBjaGVja1RleHRPZlBhcmFn
cmFwaCgqdGV4dENoZWNrZXIoKSwgcGFyYWdyYXBoVG9DaGVjay50ZXh0KCksIHJlc29sdmVUZXh0
Q2hlY2tpbmdUeXBlTWFzayh0ZXh0Q2hlY2tpbmdPcHRpb25zKSwgcmVzdWx0cywgbV9mcmFtZS5z
ZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSk7Ci0gICAgbWFya0FuZFJlcGxhY2VGb3IocmVxdWVzdC5y
ZWxlYXNlKCksIHJlc3VsdHMpOworICAgIG1hcmtBbmRSZXBsYWNlRm9yKFdURk1vdmUocmVxdWVz
dCksIHJlc3VsdHMpOwogfQogCiBzdGF0aWMgYm9vbCBpc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVu
dFR5cGUoVGV4dENoZWNraW5nVHlwZSB0eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
Q29tbWFuZC5jcHAKaW5kZXggYTkzNTgwZTc2N2ZmY2IwZjQzYmFkMWY2ZDk4NWNhNmIzYTA3ZGZk
OS4uZGRmMTk0YzcyYTczYjdmZmJkMThlYzYzZjJlYTU0YTg0OTc0MmQ4NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCkBAIC0xNjUsMTIgKzE2NSwxMiBAQCBzdGF0
aWMgYm9vbCBleGVjdXRlSW5zZXJ0RnJhZ21lbnQoRnJhbWUmIGZyYW1lLCBQYXNzUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGZyYQogCiBzdGF0aWMgYm9vbCBleGVjdXRlSW5zZXJ0Tm9kZShGcmFt
ZSYgZnJhbWUsIFJlZjxOb2RlPiYmIGNvbnRlbnQpCiB7Ci0gICAgUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+IGZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVu
dCgpKTsKKyAgICBhdXRvIGZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKCpmcmFt
ZS5kb2N1bWVudCgpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBmcmFnbWVudC0+
YXBwZW5kQ2hpbGQoY29udGVudCwgZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIHJldHVybiBleGVjdXRlSW5zZXJ0RnJhZ21lbnQoZnJhbWUsIGZyYWdtZW50LnJl
bGVhc2UoKSk7CisgICAgcmV0dXJuIGV4ZWN1dGVJbnNlcnRGcmFnbWVudChmcmFtZSwgV1RGTW92
ZShmcmFnbWVudCkpOwogfQogCiBzdGF0aWMgYm9vbCBleHBhbmRTZWxlY3Rpb25Ub0dyYW51bGFy
aXR5KEZyYW1lJiBmcmFtZSwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcAppbmRleCA5Yjk0NDhjYzY2ZDAw
N2E4ZWMyOTRiYzNiOWVmNWM4MTU2MjFiMTdiLi4xMDM5ODdhZDdlZGE5ODBmODBlNjEyOTZhNjM3
YWExNGQ5OTcwODM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRl
eHRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21t
YW5kLmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIGJvb2wgSW5zZXJ0VGV4dENvbW1hbmQ6OnBlcmZv
cm1PdmVyd3JpdGUoY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIHNlbGVjdEluc2VydGVkCiAKICAg
ICByZXBsYWNlVGV4dEluTm9kZSh0ZXh0Tm9kZSwgc3RhcnQub2Zmc2V0SW5Db250YWluZXJOb2Rl
KCksIGNvdW50LCB0ZXh0KTsKIAotICAgIFBvc2l0aW9uIGVuZFBvc2l0aW9uID0gUG9zaXRpb24o
dGV4dE5vZGUucmVsZWFzZSgpLCBzdGFydC5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSArIHRleHQu
bGVuZ3RoKCkpOworICAgIFBvc2l0aW9uIGVuZFBvc2l0aW9uID0gUG9zaXRpb24oV1RGTW92ZSh0
ZXh0Tm9kZSksIHN0YXJ0Lm9mZnNldEluQ29udGFpbmVyTm9kZSgpICsgdGV4dC5sZW5ndGgoKSk7
CiAgICAgc2V0RW5kaW5nU2VsZWN0aW9uV2l0aG91dFZhbGlkYXRpb24oc3RhcnQsIGVuZFBvc2l0
aW9uKTsKICAgICBpZiAoIXNlbGVjdEluc2VydGVkVGV4dCkKICAgICAgICAgc2V0RW5kaW5nU2Vs
ZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpLCBl
bmRpbmdTZWxlY3Rpb24oKS5pc0RpcmVjdGlvbmFsKCkpKTsKQEAgLTI0NSw3ICsyNDUsNyBAQCBQ
b3NpdGlvbiBJbnNlcnRUZXh0Q29tbWFuZDo6aW5zZXJ0VGFiKGNvbnN0IFBvc2l0aW9uJiBwb3Mp
CiAgICAgaWYgKGlzVGFiU3BhblRleHROb2RlKG5vZGUpKSB7CiAgICAgICAgIFJlZlB0cjxUZXh0
PiB0ZXh0Tm9kZSA9IGRvd25jYXN0PFRleHQ+KG5vZGUpOwogICAgICAgICBpbnNlcnRUZXh0SW50
b05vZGUodGV4dE5vZGUsIG9mZnNldCwgIlx0Iik7Ci0gICAgICAgIHJldHVybiBQb3NpdGlvbih0
ZXh0Tm9kZS5yZWxlYXNlKCksIG9mZnNldCArIDEpOworICAgICAgICByZXR1cm4gUG9zaXRpb24o
V1RGTW92ZSh0ZXh0Tm9kZSksIG9mZnNldCArIDEpOwogICAgIH0KICAgICAKICAgICAvLyBjcmVh
dGUgbmV3IHRhYiBzcGFuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92
ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwCmluZGV4IGI2MWUyZmZh
YWNlNDI5NGFkM2QyMzZjYjJjZDYyMDRhOTdkZmJjYjMuLjE2ZjBmNjMxMDgwOGQ0MDk2MjYwNGY3
MTk2ZDNmNjdjYTE2NmI3NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVt
b3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwCkBAIC00Nyw5
ICs0Nyw5IEBAIHZvaWQgUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQ6OmRvQXBw
bHkoKQogCiAgICAgc2l6ZV90IHNpemUgPSBjaGlsZHJlbi5zaXplKCk7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgUmVmUHRyPE5vZGU+IGNoaWxkID0g
V1RGTW92ZShjaGlsZHJlbltpXSk7CisgICAgICAgIGF1dG8gY2hpbGQgPSBXVEZNb3ZlKGNoaWxk
cmVuW2ldKTsKICAgICAgICAgcmVtb3ZlTm9kZShjaGlsZCwgbV9zaG91bGRBc3N1bWVDb250ZW50
SXNBbHdheXNFZGl0YWJsZSk7Ci0gICAgICAgIGluc2VydE5vZGVCZWZvcmUoY2hpbGQucmVsZWFz
ZSgpLCBtX25vZGUsIG1fc2hvdWxkQXNzdW1lQ29udGVudElzQWx3YXlzRWRpdGFibGUpOworICAg
ICAgICBpbnNlcnROb2RlQmVmb3JlKFdURk1vdmUoY2hpbGQpLCBtX25vZGUsIG1fc2hvdWxkQXNz
dW1lQ29udGVudElzQWx3YXlzRWRpdGFibGUpOwogICAgIH0KICAgICByZW1vdmVOb2RlKG1fbm9k
ZSwgbV9zaG91bGRBc3N1bWVDb250ZW50SXNBbHdheXNFZGl0YWJsZSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IGVk
ZTg3ZGIzZmZlOWU1YzI4MTAzMWUxMmFmOGY0YWU4ZGUyZjUyNTYuLjQ5NDQwNWUyNDJmYTc4NmE1
N2QyMWQyYzcxZmNhYzgyN2RhNTU1OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC0yMjksOSArMjI5LDkgQEAgdm9pZCBS
ZXBsYWNlbWVudEZyYWdtZW50OjpyZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuKFBhc3NSZWZQ
dHI8Tm9kZT4gbm9kZSkKIAogICAgIHdoaWxlIChSZWZQdHI8Tm9kZT4gbiA9IG5vZGUtPmZpcnN0
Q2hpbGQoKSkgewogICAgICAgICByZW1vdmVOb2RlKG4pOwotICAgICAgICBpbnNlcnROb2RlQmVm
b3JlKG4ucmVsZWFzZSgpLCBub2RlLmdldCgpKTsKKyAgICAgICAgaW5zZXJ0Tm9kZUJlZm9yZShX
VEZNb3ZlKG4pLCBub2RlLmdldCgpKTsKICAgICB9Ci0gICAgcmVtb3ZlTm9kZShub2RlKTsKKyAg
ICByZW1vdmVOb2RlKFdURk1vdmUobm9kZSkpOwogfQogCiB2b2lkIFJlcGxhY2VtZW50RnJhZ21l
bnQ6OnJlbW92ZU5vZGUoUGFzc1JlZlB0cjxOb2RlPiBub2RlKQpAQCAtNjc4LDcgKzY3OCw3IEBA
IHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Om1vdmVOb2RlT3V0T2ZBbmNlc3RvcihQYXNz
UmVmUHRyPE5vZGU+IHBycE5vZGUsIFBhCiAgICAgfQogICAgIGlmICghYW5jZXN0b3ItPmZpcnN0
Q2hpbGQoKSkgewogICAgICAgICBpbnNlcnRlZE5vZGVzLndpbGxSZW1vdmVOb2RlKGFuY2VzdG9y
LmdldCgpKTsKLSAgICAgICAgcmVtb3ZlTm9kZShhbmNlc3Rvci5yZWxlYXNlKCkpOworICAgICAg
ICByZW1vdmVOb2RlKFdURk1vdmUoYW5jZXN0b3IpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXggNDdlMWFhN2U5ZDdhMTM3
ZTgzYzA3ZWM0NzBhNTAyNDQxNDI2ZDJlYy4uN2RlM2Q4MDczMGI2MzMyYTUzOGUwZjBmZTUwNzY1
OGE0YzRlMzM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlE
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVu
dC5jcHAKQEAgLTI4MCw3ICsyODAsNyBAQCBzdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKFNldHRpbmdzKiBzZXR0aW5ncwogICAgIAog
Ym9vbCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUoKQog
ewotICAgIHN0YXRpYyBTaGFyZWRCdWZmZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRhID0gY3JlYXRl
VGVtcGxhdGVEb2N1bWVudERhdGEoZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSkucmVsZWFzZSgpLmxl
YWtSZWYoKTsKKyAgICBzdGF0aWMgU2hhcmVkQnVmZmVyKiB0ZW1wbGF0ZURvY3VtZW50RGF0YSA9
IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGRvY3VtZW50KCktPnNldHRpbmdzKCkpLmxlYWtS
ZWYoKTsKICAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiBzdG9yaW5nIHRoZSBkYXRhLCBpdCB3b3Vs
ZCBiZSBtb3JlIGVmZmljaWVudCBpZiB3ZSBjb3VsZCBwYXJzZSB0aGUgdGVtcGxhdGUgZGF0YSBp
bnRvIHRoZQogICAgIC8vIHRlbXBsYXRlIERvY3VtZW50IG9uY2UsIHN0b3JlIHRoYXQgZG9jdW1l
bnQsIHRoZW4gImNvcHkiIGl0IHdoZW5ldmVyIHdlIGdldCBhbiBGVFAgZGlyZWN0b3J5IGxpc3Rp
bmcuCiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5jcHAKaW5kZXggMzk4
ZDE0NTdhNTk5YWZiZDUxMWRiMGFkMTY5OTVjZjZhYmViNWM1OS4uYWFiNGQ5NDYxM2Q0NGZkY2Q4
NWZlOGY5ZDBhNDE0MDM2YmRlNDYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRm9udEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVt
ZW50LmNwcApAQCAtMTk0LDggKzE5NCw4IEBAIHZvaWQgSFRNTEZvbnRFbGVtZW50Ojpjb2xsZWN0
U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYKICAgICB9
IGVsc2UgaWYgKG5hbWUgPT0gY29sb3JBdHRyKQogICAgICAgICBhZGRIVE1MQ29sb3JUb1N0eWxl
KHN0eWxlLCBDU1NQcm9wZXJ0eUNvbG9yLCB2YWx1ZSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBm
YWNlQXR0cikgewotICAgICAgICBpZiAoUmVmUHRyPENTU1ZhbHVlTGlzdD4gZm9udEZhY2VWYWx1
ZSA9IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlRm9udEZhY2VWYWx1ZSh2YWx1ZSkp
Ci0gICAgICAgICAgICBzdHlsZS5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUZv
bnRGYW1pbHksIGZvbnRGYWNlVmFsdWUucmVsZWFzZSgpKSk7CisgICAgICAgIGlmIChhdXRvIGZv
bnRGYWNlVmFsdWUgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUZvbnRGYWNlVmFs
dWUodmFsdWUpKQorICAgICAgICAgICAgc3R5bGUuc2V0UHJvcGVydHkoQ1NTUHJvcGVydHkoQ1NT
UHJvcGVydHlGb250RmFtaWx5LCBXVEZNb3ZlKGZvbnRGYWNlVmFsdWUpKSk7CiAgICAgfSBlbHNl
CiAgICAgICAgIEhUTUxFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1
dGUobmFtZSwgdmFsdWUsIHN0eWxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVt
ZW50LmNwcAppbmRleCBhYzkyNzI4MWM1MmRkNWViYTRjZTllODkxMmJhN2Y4MThhZDkzYWIzLi42
MTNmZjJkZjlmZWY1MWFhMTI0MWNkNWQyNTM3NmZjNDcxOTg4M2I0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC0yODQsOCArMjg0LDggQEAgdm9pZCBIVE1MRm9y
bUVsZW1lbnQ6OnByZXBhcmVGb3JTdWJtaXNzaW9uKEV2ZW50KiBldmVudCkKIAogICAgIFN0cmlu
Z1BhaXJWZWN0b3IgY29udHJvbE5hbWVzQW5kVmFsdWVzOwogICAgIGdldFRleHRGaWVsZFZhbHVl
cyhjb250cm9sTmFtZXNBbmRWYWx1ZXMpOwotICAgIFJlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0
ZSA9IEZvcm1TdGF0ZTo6Y3JlYXRlKHRoaXMsIGNvbnRyb2xOYW1lc0FuZFZhbHVlcywgJmRvY3Vt
ZW50KCksIE5vdFN1Ym1pdHRlZEJ5SmF2YVNjcmlwdCk7Ci0gICAgZnJhbWUtPmxvYWRlcigpLmNs
aWVudCgpLmRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChmb3JtU3RhdGUucmVsZWFzZSgpKTsK
KyAgICBhdXRvIGZvcm1TdGF0ZSA9IEZvcm1TdGF0ZTo6Y3JlYXRlKHRoaXMsIGNvbnRyb2xOYW1l
c0FuZFZhbHVlcywgJmRvY3VtZW50KCksIE5vdFN1Ym1pdHRlZEJ5SmF2YVNjcmlwdCk7CisgICAg
ZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChXVEZN
b3ZlKGZvcm1TdGF0ZSkpOwogCiAgICAgUmVmPEhUTUxGb3JtRWxlbWVudD4gcHJvdGVjdGVkVGhp
cygqdGhpcyk7CiAgICAgLy8gRXZlbnQgaGFuZGxpbmcgY2FuIHJlc3VsdCBpbiBtX3Nob3VsZFN1
Ym1pdCBiZWNvbWluZyB0cnVlLCByZWdhcmRsZXNzIG9mIGRpc3BhdGNoRXZlbnQoKSByZXR1cm4g
dmFsdWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAppbmRleCAxZjUy
NGZkZThiN2FmNTAxZTg2ZDk2MDk0NDU5OTVmMTZkNTI3MmE2Li44N2YyYjc2MWY4NzE5YWViNWU2
N2ViOGFkZTU1ODEwMGMxOGRkNmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUYWJsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxl
bWVudC5jcHAKQEAgLTQzNSwxMiArNDM1LDEyIEBAIHZvaWQgSFRNTFRhYmxlRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyCiAK
IHN0YXRpYyBTdHlsZVByb3BlcnRpZXMqIGxlYWtCb3JkZXJTdHlsZShDU1NWYWx1ZUlEIHZhbHVl
KQogewotICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVT
dHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOworICAgIGF1dG8gc3R5bGUgPSBNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzOjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlC
b3JkZXJUb3BTdHlsZSwgdmFsdWUpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0
eUJvcmRlckJvdHRvbVN0eWxlLCB2YWx1ZSk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1By
b3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCB2YWx1ZSk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENT
U1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgdmFsdWUpOwotICAgIHJldHVybiBzdHlsZS5yZWxl
YXNlKCkubGVha1JlZigpOworICAgIHJldHVybiAmc3R5bGUubGVha1JlZigpOwogfQogCiBjb25z
dCBTdHlsZVByb3BlcnRpZXMqIEhUTUxUYWJsZUVsZW1lbnQ6OmFkZGl0aW9uYWxQcmVzZW50YXRp
b25BdHRyaWJ1dGVTdHlsZSgpIGNvbnN0CkBAIC01MzksNyArNTM5LDcgQEAgY29uc3QgU3R5bGVQ
cm9wZXJ0aWVzKiBIVE1MVGFibGVFbGVtZW50OjphZGRpdGlvbmFsQ2VsbFN0eWxlKCkKIAogc3Rh
dGljIFN0eWxlUHJvcGVydGllcyogbGVha0dyb3VwQm9yZGVyU3R5bGUoaW50IHJvd3MpCiB7Ci0g
ICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJv
cGVydGllczo6Y3JlYXRlKCk7CisgICAgYXV0byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRp
ZXM6OmNyZWF0ZSgpOwogICAgIGlmIChyb3dzKSB7CiAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0
eShDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBDU1NWYWx1ZVRoaW4pOwogICAgICAgICBzdHls
ZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgQ1NTVmFsdWVUaGlu
KTsKQEAgLTU1MSw3ICs1NTEsNyBAQCBzdGF0aWMgU3R5bGVQcm9wZXJ0aWVzKiBsZWFrR3JvdXBC
b3JkZXJTdHlsZShpbnQgcm93cykKICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3Bl
cnR5Qm9yZGVyTGVmdFN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKICAgICAgICAgc3R5bGUtPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgQ1NTVmFsdWVTb2xpZCk7CiAgICAg
fQotICAgIHJldHVybiBzdHlsZS5yZWxlYXNlKCkubGVha1JlZigpOworICAgIHJldHVybiAmc3R5
bGUubGVha1JlZigpOwogfQogCiBjb25zdCBTdHlsZVByb3BlcnRpZXMqIEhUTUxUYWJsZUVsZW1l
bnQ6OmFkZGl0aW9uYWxHcm91cFN0eWxlKGJvb2wgcm93cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDNhYWQ5YjY1NTI1NTJk
ZjA1ZGQyMDZhZWJmNDJhNmRiZjVkNGFlYTQuLmU2MjJkMGRmYzM5MmI1ZWNhMmM0NGIxZjIzOTFl
NGZhYTdjNDkyNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxE
b2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERv
Y3VtZW50UGFyc2VyLmNwcApAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgSFRNTERvY3VtZW50UGFy
c2VyOjpydW5TY3JpcHRzRm9yUGF1c2VkVHJlZUJ1aWxkZXIoKQogICAgICAgICBBU1NFUlQoIW1f
dHJlZUJ1aWxkZXItPmhhc1BhcnNlckJsb2NraW5nU2NyaXB0V29yaygpKTsKICAgICAgICAgLy8g
V2Ugd2lsbCBub3QgaGF2ZSBhIHNjcmlwdFJ1bm5lciB3aGVuIHBhcnNpbmcgYSBEb2N1bWVudEZy
YWdtZW50LgogICAgICAgICBpZiAobV9zY3JpcHRSdW5uZXIpCi0gICAgICAgICAgICBtX3Njcmlw
dFJ1bm5lci0+ZXhlY3V0ZShzY3JpcHRFbGVtZW50LnJlbGVhc2UoKSwgc2NyaXB0U3RhcnRQb3Np
dGlvbik7CisgICAgICAgICAgICBtX3NjcmlwdFJ1bm5lci0+ZXhlY3V0ZShXVEZNb3ZlKHNjcmlw
dEVsZW1lbnQpLCBzY3JpcHRTdGFydFBvc2l0aW9uKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRUcmFjay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZERhdGFUZXh0VHJhY2suY3BwCmluZGV4IDEzYWNh
ZDExYWVhMDIyYjhlNTBhN2M4MjlhYmY2ZjQ5MWI0ZWNiMGMuLjdiZjI3YWUyMDA2ZDc5Mzg2Nzg4
ZTY3M2RhNjgyMGZlZTA5Yjk4ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svSW5iYW5kRGF0YVRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9JbmJhbmREYXRhVGV4dFRyYWNrLmNwcApAQCAtNTQsOCArNTQsOCBAQCBJbmJhbmREYXRhVGV4
dFRyYWNrOjp+SW5iYW5kRGF0YVRleHRUcmFjaygpCiAKIHZvaWQgSW5iYW5kRGF0YVRleHRUcmFj
azo6YWRkRGF0YUN1ZShJbmJhbmRUZXh0VHJhY2tQcml2YXRlKiwgY29uc3QgTWVkaWFUaW1lJiBz
dGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGxl
bmd0aCkKIHsKLSAgICBSZWZQdHI8RGF0YUN1ZT4gY3VlID0gRGF0YUN1ZTo6Y3JlYXRlKCpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksIHN0YXJ0LCBlbmQsIGRhdGEsIGxlbmd0aCk7Ci0gICAgYWRk
Q3VlKGN1ZS5yZWxlYXNlKCksIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIGF1dG8gY3VlID0g
RGF0YUN1ZTo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHN0YXJ0LCBlbmQsIGRh
dGEsIGxlbmd0aCk7CisgICAgYWRkQ3VlKFdURk1vdmUoY3VlKSwgQVNTRVJUX05PX0VYQ0VQVElP
Tik7CiB9CiAKICNpZiBFTkFCTEUoREFUQUNVRV9WQUxVRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwCmluZGV4IDI0OWYxY2Nh
NGQ4ZDg0ZTYzZmVlMzFjYzFhNDVlZDJiMzQ2YzI2NWYuLjdkYzAyN2M1NzkyNmNmMDFhN2JlYjhi
ZTk1OTFiYWJlNTJjNWQ1ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
SW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcApAQCAtMjIxLDEzICsyMjEsMTMgQEAgdm9pZCBJ
bmJhbmRHZW5lcmljVGV4dFRyYWNrOjpuZXdDdWVzUGFyc2VkKCkKICAgICBwYXJzZXIoKS5nZXRO
ZXdDdWVzKGN1ZXMpOwogCiAgICAgZm9yIChhdXRvJiBjdWVEYXRhIDogY3VlcykgewotICAgICAg
ICBSZWZQdHI8VlRUQ3VlPiB2dHRDdWUgPSBWVFRDdWU6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLCAqY3VlRGF0YSk7CisgICAgICAgIGF1dG8gdnR0Q3VlID0gVlRUQ3VlOjpjcmVh
dGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKmN1ZURhdGEpOwogCi0gICAgICAgIGlmICho
YXNDdWUodnR0Q3VlLmdldCgpLCBUZXh0VHJhY2tDdWU6Oklnbm9yZUR1cmF0aW9uKSkgeworICAg
ICAgICBpZiAoaGFzQ3VlKHZ0dEN1ZS5wdHIoKSwgVGV4dFRyYWNrQ3VlOjpJZ25vcmVEdXJhdGlv
bikpIHsKICAgICAgICAgICAgIExPRyhNZWRpYSwgIkluYmFuZEdlbmVyaWNUZXh0VHJhY2s6Om5l
d0N1ZXNQYXJzZWQgaWdub3JpbmcgYWxyZWFkeSBhZGRlZCBjdWU6IHN0YXJ0PSUuMmYsIGVuZD0l
LjJmLCBjb250ZW50PVwiJXNcIlxuIiwgdnR0Q3VlLT5zdGFydFRpbWUoKSwgdnR0Q3VlLT5lbmRU
aW1lKCksIHZ0dEN1ZS0+dGV4dCgpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9Ci0gICAgICAgIGFkZEN1ZSh2dHRDdWUucmVsZWFzZSgpLCBBU1NFUlRfTk9f
RVhDRVBUSU9OKTsKKyAgICAgICAgYWRkQ3VlKFdURk1vdmUodnR0Q3VlKSwgQVNTRVJUX05PX0VY
Q0VQVElPTik7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAKaW5kZXggMDlhZWVkNGUxZTU4YWE4OGJhYTU4MDcy
Y2E5ZTMxYmU2ZDhhZjI4NC4uOTliNDk0NTg4MTcyMDM2ODNhNThlNThiZjIyM2VlYjY1M2YwMjg4
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0
VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4
dFRyYWNrLmNwcApAQCAtNzYsMTMgKzc2LDEzIEBAIHZvaWQgSW5iYW5kV2ViVlRUVGV4dFRyYWNr
OjpuZXdDdWVzUGFyc2VkKCkKICAgICBwYXJzZXIoKS5nZXROZXdDdWVzKGN1ZXMpOwogCiAgICAg
Zm9yIChhdXRvJiBjdWVEYXRhIDogY3VlcykgewotICAgICAgICBSZWZQdHI8VlRUQ3VlPiB2dHRD
dWUgPSBWVFRDdWU6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqY3VlRGF0YSk7
CisgICAgICAgIGF1dG8gdnR0Q3VlID0gVlRUQ3VlOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgKmN1ZURhdGEpOwogCi0gICAgICAgIGlmIChoYXNDdWUodnR0Q3VlLmdldCgpLCBU
ZXh0VHJhY2tDdWU6Oklnbm9yZUR1cmF0aW9uKSkgeworICAgICAgICBpZiAoaGFzQ3VlKHZ0dEN1
ZS5wdHIoKSwgVGV4dFRyYWNrQ3VlOjpJZ25vcmVEdXJhdGlvbikpIHsKICAgICAgICAgICAgIExP
RyhNZWRpYSwgIkluYmFuZFdlYlZUVFRleHRUcmFjazo6bmV3Q3Vlc1BhcnNlZCBpZ25vcmluZyBh
bHJlYWR5IGFkZGVkIGN1ZTogc3RhcnQ9JS4yZiwgZW5kPSUuMmYsIGNvbnRlbnQ9XCIlc1wiXG4i
LCB2dHRDdWUtPnN0YXJ0VGltZSgpLCB2dHRDdWUtPmVuZFRpbWUoKSwgdnR0Q3VlLT50ZXh0KCku
dXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAg
YWRkQ3VlKHZ0dEN1ZS5yZWxlYXNlKCksIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgICAgICBh
ZGRDdWUoV1RGTW92ZSh2dHRDdWUpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICB9CiB9CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUxp
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVMaXN0LmNwcApp
bmRleCA2YjM5Mjk5ZGQzOTBhNGI3YzZkNGZiMTNlMDc2MjkwZjJiODFkNjRhLi5mZmQ4ZWFlNGQ5
OTM2NDgwYTZhNWJjMzU5MmZlMDgwYjcxNmUxM2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVGV4dFRyYWNrQ3VlTGlzdC5jcHAKQEAgLTEwMSw5ICsxMDEsOSBAQCBib29sIFRl
eHRUcmFja0N1ZUxpc3Q6OmFkZChQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4gcHJwQ3VlLCBzaXpl
X3Qgc3RhcnQsIHNpemVfdAogCiAgICAgc2l6ZV90IGluZGV4ID0gKHN0YXJ0ICsgZW5kKSAvIDI7
CiAgICAgaWYgKGN1ZS0+aXNPcmRlcmVkQmVmb3JlKG1fbGlzdFtpbmRleF0uZ2V0KCkpKQotICAg
ICAgICByZXR1cm4gYWRkKGN1ZS5yZWxlYXNlKCksIHN0YXJ0LCBpbmRleCk7CisgICAgICAgIHJl
dHVybiBhZGQoV1RGTW92ZShjdWUpLCBzdGFydCwgaW5kZXgpOwogCi0gICAgcmV0dXJuIGFkZChj
dWUucmVsZWFzZSgpLCBpbmRleCArIDEsIGVuZCk7CisgICAgcmV0dXJuIGFkZChXVEZNb3ZlKGN1
ZSksIGluZGV4ICsgMSwgZW5kKTsKIH0KIAogYm9vbCBUZXh0VHJhY2tDdWVMaXN0OjpyZW1vdmUo
VGV4dFRyYWNrQ3VlKiBjdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNTU0FnZW50LmNwcAppbmRleCAwNTQ4MGNhMjAzYjM4OGQ5YTk1YmQzNDdjODUzYzViNmE0NWJm
NjRjLi5jN2M2ZDZmNGU2OTcwZWFhMWRlYTM1OWYxYjdjZTg2OGIxNWE1OWYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTYzMSw4ICs2
MzEsMTAgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0SW5saW5lU3R5bGVzRm9yTm9kZShF
cnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2QKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aW5saW5lU3R5bGUgPSBzdHlsZVNoZWV0LT5idWlsZE9iamVjdEZvclN0eWxlKGVsZW1lbnQtPmNz
c29tU3R5bGUoKSk7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5
bGU+IGF0dHJpYnV0ZXMgPSBidWlsZE9iamVjdEZvckF0dHJpYnV0ZXNTdHlsZShlbGVtZW50KTsK
LSAgICBhdHRyaWJ1dGVzU3R5bGUgPSBhdHRyaWJ1dGVzID8gYXR0cmlidXRlcy5yZWxlYXNlKCkg
OiBudWxscHRyOworICAgIGlmIChhdXRvIGF0dHJpYnV0ZXMgPSBidWlsZE9iamVjdEZvckF0dHJp
YnV0ZXNTdHlsZShlbGVtZW50KSkKKyAgICAgICAgYXR0cmlidXRlc1N0eWxlID0gV1RGTW92ZShh
dHRyaWJ1dGVzKTsKKyAgICBlbHNlCisgICAgICAgIGF0dHJpYnV0ZXNTdHlsZSA9IG51bGxwdHI7
CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldENvbXB1dGVkU3R5bGVGb3JOb2RlKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVBy
b3BlcnR5Pj4mIHN0eWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5jcHAKaW5kZXggZDBjM2RhMTdhNmM5Y2NkMGQxZDgyOTEyZmMyNTU3NmY2OTgzMTY3
Yi4uODdkMDJhY2ZjN2ZlMmE1YzI4YjkxMDQ0YTM2ZGU4ZDdlYjAzOWRjNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC00NjIsOCArNDYy
LDggQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cHVzaENoaWxkTm9kZXNUb0Zyb250ZW5kKGlu
dCBub2RlSWQsIGludCBkZXB0aCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5v
ZGU+PiBjaGlsZHJlbiA9IGJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihub2RlLCBkZXB0
aCwgbm9kZU1hcCk7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnNldENoaWxkTm9kZXMobm9k
ZUlkLCBjaGlsZHJlbi5yZWxlYXNlKCkpOworICAgIGF1dG8gY2hpbGRyZW4gPSBidWlsZEFycmF5
Rm9yQ29udGFpbmVyQ2hpbGRyZW4obm9kZSwgZGVwdGgsIG5vZGVNYXApOworICAgIG1fZnJvbnRl
bmREaXNwYXRjaGVyLT5zZXRDaGlsZE5vZGVzKG5vZGVJZCwgV1RGTW92ZShjaGlsZHJlbikpOwog
fQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaXNjYXJkQmluZGluZ3MoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKaW5k
ZXggZWJlZGU5ZGY5YTA1MzcwMTY4ZWE0NGNhZTJmMDRjZTg3OGJlZmE3OS4uMzM3MDU0NjdjM2I1
YzBhMTc5NDZkZmUxNjk2NGViZDdmYTUzNDgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCkBAIC0zMzAsNyArMzMwLDcg
QEAgc3RhdGljIFJlZlB0cjxJREJLZXk+IGlkYktleUZyb21JbnNwZWN0b3JPYmplY3QoSW5zcGVj
dG9yT2JqZWN0KiBrZXkpCiAgICAgfSBlbHNlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgcmV0dXJuIGlkYktleS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGlkYktleTsKIH0KIAogc3Rh
dGljIFJlZlB0cjxJREJLZXlSYW5nZT4gaWRiS2V5UmFuZ2VGcm9tS2V5UmFuZ2UoY29uc3QgSW5z
cGVjdG9yT2JqZWN0KiBrZXlSYW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggNDMxNTRiMzk3NGRhN2E5NzlhMjZkMTgy
OWM3MWQ0MTliNjI3Y2Q3NS4uOTE4Njg2ZWEzMmVmMGZlMGJjNDE4NWRiYjgyYjhmMDcxZjhjNDZl
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtB
Z2VudC5jcHAKQEAgLTY4Miw3ICs2ODIsNyBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
bG9hZFJlc291cmNlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJgogICAg
IC8vIEluc3BlY3RvclRocmVhZGFibGVMb2FkZXJDbGllbnQgZGVsZXRlcyBpdHNlbGYgd2hlbiB0
aGUgbG9hZCBjb21wbGV0ZXMuCiAgICAgSW5zcGVjdG9yVGhyZWFkYWJsZUxvYWRlckNsaWVudCog
aW5zcGVjdG9yVGhyZWFkYWJsZUxvYWRlckNsaWVudCA9IG5ldyBJbnNwZWN0b3JUaHJlYWRhYmxl
TG9hZGVyQ2xpZW50KGNhbGxiYWNrLmNvcHlSZWYoKSk7CiAKLSAgICBSZWZQdHI8RG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyPiBsb2FkZXIgPSBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNyZWF0
ZSgqZG9jdW1lbnQsICppbnNwZWN0b3JUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LCByZXF1ZXN0LCBv
cHRpb25zKTsKKyAgICBhdXRvIGxvYWRlciA9IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y3Jl
YXRlKCpkb2N1bWVudCwgKmluc3BlY3RvclRocmVhZGFibGVMb2FkZXJDbGllbnQsIHJlcXVlc3Qs
IG9wdGlvbnMpOwogICAgIGlmICghbG9hZGVyKSB7CiAgICAgICAgIGluc3BlY3RvclRocmVhZGFi
bGVMb2FkZXJDbGllbnQtPmRpZEZhaWxMb2FkZXJDcmVhdGlvbigpOwogICAgICAgICByZXR1cm47
CkBAIC02OTIsNyArNjkyLDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmxvYWRSZXNv
dXJjZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYKICAgICBpZiAoIWNh
bGxiYWNrLT5pc0FjdGl2ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpbnNwZWN0b3JUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50LT5zZXRMb2FkZXIobG9hZGVyLnJlbGVhc2UoKSk7CisgICAgaW5z
cGVjdG9yVGhyZWFkYWJsZUxvYWRlckNsaWVudC0+c2V0TG9hZGVyKFdURk1vdmUobG9hZGVyKSk7
CiB9CiAKIHN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0
PiBidWlsZE9iamVjdEZvclNlYXJjaFJlc3VsdChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29u
c3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCwgaW50IG1hdGNoZXNDb3VudCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApp
bmRleCA2ZDU3M2NlOWMxMWZjNWQyM2ZlNzc4ZDU2ZjczNDEzM2E0MjU4YjMzLi43ZGU5OGFhZDI5
ODhiNzZhNmU1NjZiNDAwZWMxZGIwNDc1NWI5ZTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC05MjUsNyArOTI1LDcgQEAgUmVm
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U2VsZWN0b3JMaXN0PiBJbnNwZWN0b3JTdHlsZVNo
ZWV0OjpidWlsZE9iamVjdEZvclMKICAgICAgICAgICAgIHNlbGVjdG9ycy0+YWRkSXRlbShidWls
ZE9iamVjdEZvclNlbGVjdG9yKHNlbGVjdG9yLCBlbGVtZW50KSk7CiAgICAgfQogICAgIGF1dG8g
cmVzdWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTZWxlY3Rvckxpc3Q6OmNyZWF0ZSgp
Ci0gICAgICAgIC5zZXRTZWxlY3RvcnMoc2VsZWN0b3JzLnJlbGVhc2UoKSkKKyAgICAgICAgLnNl
dFNlbGVjdG9ycyhXVEZNb3ZlKHNlbGVjdG9ycykpCiAgICAgICAgIC5zZXRUZXh0KHNlbGVjdG9y
VGV4dCkKICAgICAgICAgLnJlbGVhc2UoKTsKICAgICBpZiAoc291cmNlRGF0YSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCmluZGV4IGJlYzEyMjNkNzY2Y2EyYjczMGQ4
ZTkwMWM4NWI2MzJmMDMwMGQ2ZTMuLjQxMjA2MDk4MzBkNDM1ZjY0NThkODZmMGEyY2Y3OWNmNjY3
YTY0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcApAQCAtMjM4
LDggKzIzOCw4IEBAIFJlZjxGb3JtU3VibWlzc2lvbj4gRm9ybVN1Ym1pc3Npb246OmNyZWF0ZShI
VE1MRm9ybUVsZW1lbnQqIGZvcm0sIGNvbnN0IEF0dHJpYnV0CiAgICAgZm9ybURhdGEtPnNldElk
ZW50aWZpZXIoZ2VuZXJhdGVGb3JtRGF0YUlkZW50aWZpZXIoKSk7CiAgICAgZm9ybURhdGEtPnNl
dENvbnRhaW5zUGFzc3dvcmREYXRhKGNvbnRhaW5zUGFzc3dvcmREYXRhKTsKICAgICBTdHJpbmcg
dGFyZ2V0T3JCYXNlVGFyZ2V0ID0gY29waWVkQXR0cmlidXRlcy50YXJnZXQoKS5pc0VtcHR5KCkg
PyBkb2N1bWVudC5iYXNlVGFyZ2V0KCkgOiBjb3BpZWRBdHRyaWJ1dGVzLnRhcmdldCgpOwotICAg
IFJlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSA9IEZvcm1TdGF0ZTo6Y3JlYXRlKGZvcm0sIGZv
cm1WYWx1ZXMsICZkb2N1bWVudCwgdHJpZ2dlcik7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
Rm9ybVN1Ym1pc3Npb24oY29waWVkQXR0cmlidXRlcy5tZXRob2QoKSwgYWN0aW9uVVJMLCB0YXJn
ZXRPckJhc2VUYXJnZXQsIGVuY29kaW5nVHlwZSwgZm9ybVN0YXRlLnJlbGVhc2UoKSwgZm9ybURh
dGEucmVsZWFzZSgpLCBib3VuZGFyeSwgbG9ja0hpc3RvcnksIGV2ZW50KSk7CisgICAgYXV0byBm
b3JtU3RhdGUgPSBGb3JtU3RhdGU6OmNyZWF0ZShmb3JtLCBmb3JtVmFsdWVzLCAmZG9jdW1lbnQs
IHRyaWdnZXIpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvcm1TdWJtaXNzaW9uKGNvcGll
ZEF0dHJpYnV0ZXMubWV0aG9kKCksIGFjdGlvblVSTCwgdGFyZ2V0T3JCYXNlVGFyZ2V0LCBlbmNv
ZGluZ1R5cGUsIFdURk1vdmUoZm9ybVN0YXRlKSwgV1RGTW92ZShmb3JtRGF0YSksIGJvdW5kYXJ5
LCBsb2NrSGlzdG9yeSwgZXZlbnQpKTsKIH0KIAogVVJMIEZvcm1TdWJtaXNzaW9uOjpyZXF1ZXN0
VVJMKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGQ4NmE0
NDU1YmY3ZjFmZjNjNjM4YWY2ZTc0YjRhOTZjNTg4NGM2NWUuLmQyYmUyMzJlMDZkZmExZTc4YWNl
YzA4NDNjZGFlZWU0Njg2ZDRhZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cApAQCAtODc0LDkgKzg3NCw5IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkxJbnRvQ2hpbGRG
cmFtZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcmVyLCBGCiAgICAgQVNTRVJU
KGNoaWxkRnJhbWUpOwogCiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwp
Ci0gICAgUmVmUHRyPEFyY2hpdmU+IHN1YmZyYW1lQXJjaGl2ZSA9IGFjdGl2ZURvY3VtZW50TG9h
ZGVyKCktPnBvcEFyY2hpdmVGb3JTdWJmcmFtZShjaGlsZEZyYW1lLT50cmVlKCkudW5pcXVlTmFt
ZSgpLCB1cmwpOworICAgIGF1dG8gc3ViZnJhbWVBcmNoaXZlID0gYWN0aXZlRG9jdW1lbnRMb2Fk
ZXIoKS0+cG9wQXJjaGl2ZUZvclN1YmZyYW1lKGNoaWxkRnJhbWUtPnRyZWUoKS51bmlxdWVOYW1l
KCksIHVybCk7CiAgICAgaWYgKHN1YmZyYW1lQXJjaGl2ZSkgewotICAgICAgICBjaGlsZEZyYW1l
LT5sb2FkZXIoKS5sb2FkQXJjaGl2ZShzdWJmcmFtZUFyY2hpdmUucmVsZWFzZSgpKTsKKyAgICAg
ICAgY2hpbGRGcmFtZS0+bG9hZGVyKCkubG9hZEFyY2hpdmUoV1RGTW92ZShzdWJmcmFtZUFyY2hp
dmUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FSQ0hJ
VkUpCkBAIC0xMjE0LDcgKzEyMTQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMKGNvbnN0
IEZyYW1lTG9hZFJlcXVlc3QmIGZyYW1lTG9hZFJlcXVlc3QsIGNvbnN0IFN0cmluZwogICAgIGlm
ICh0YXJnZXRGcmFtZSAmJiB0YXJnZXRGcmFtZSAhPSAmbV9mcmFtZSkgewogICAgICAgICBGcmFt
ZUxvYWRSZXF1ZXN0IG5ld0ZyYW1lTG9hZFJlcXVlc3QoZnJhbWVMb2FkUmVxdWVzdCk7CiAgICAg
ICAgIG5ld0ZyYW1lTG9hZFJlcXVlc3Quc2V0RnJhbWVOYW1lKCJfc2VsZiIpOwotICAgICAgICB0
YXJnZXRGcmFtZS0+bG9hZGVyKCkubG9hZFVSTChuZXdGcmFtZUxvYWRSZXF1ZXN0LCByZWZlcnJl
ciwgbmV3TG9hZFR5cGUsIGV2ZW50LCBmb3JtU3RhdGUucmVsZWFzZSgpKTsKKyAgICAgICAgdGFy
Z2V0RnJhbWUtPmxvYWRlcigpLmxvYWRVUkwobmV3RnJhbWVMb2FkUmVxdWVzdCwgcmVmZXJyZXIs
IG5ld0xvYWRUeXBlLCBldmVudCwgV1RGTW92ZShmb3JtU3RhdGUpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtMTIyNSw3ICsxMjI1LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVS
TChjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiBmcmFtZUxvYWRSZXF1ZXN0LCBjb25zdCBTdHJpbmcK
IAogICAgIGlmICghdGFyZ2V0RnJhbWUgJiYgIWZyYW1lTmFtZS5pc0VtcHR5KCkpIHsKICAgICAg
ICAgYWN0aW9uID0gYWN0aW9uLmNvcHlXaXRoU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeShz
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9BcHBseShtX2ZyYW1lLCBmcmFtZUxvYWRSZXF1
ZXN0LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSkpOwotICAgICAgICBwb2xpY3lDaGVj
a2VyKCkuY2hlY2tOZXdXaW5kb3dQb2xpY3koYWN0aW9uLCByZXF1ZXN0LCBmb3JtU3RhdGUucmVs
ZWFzZSgpLCBmcmFtZU5hbWUsIFt0aGlzLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIG9w
ZW5lclBvbGljeV0oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQYXNzUmVmUHRyPEZv
cm1TdGF0ZT4gZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgTmF2aWdh
dGlvbkFjdGlvbiYgYWN0aW9uLCBib29sIHNob3VsZENvbnRpbnVlKSB7CisgICAgICAgIHBvbGlj
eUNoZWNrZXIoKS5jaGVja05ld1dpbmRvd1BvbGljeShhY3Rpb24sIHJlcXVlc3QsIFdURk1vdmUo
Zm9ybVN0YXRlKSwgZnJhbWVOYW1lLCBbdGhpcywgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJM
LCBvcGVuZXJQb2xpY3ldKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFzc1JlZlB0
cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IE5h
dmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgYm9vbCBzaG91bGRDb250aW51ZSkgewogICAgICAgICAg
ICAgY29udGludWVMb2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3kocmVxdWVzdCwgZm9ybVN0YXRlLCBm
cmFtZU5hbWUsIGFjdGlvbiwgc2hvdWxkQ29udGludWUsIGFsbG93TmF2aWdhdGlvblRvSW52YWxp
ZFVSTCwgb3BlbmVyUG9saWN5KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKQEAgLTEy
NDQsNyArMTI0NCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwoY29uc3QgRnJhbWVMb2Fk
UmVxdWVzdCYgZnJhbWVMb2FkUmVxdWVzdCwgY29uc3QgU3RyaW5nCiAgICAgICAgIG9sZERvY3Vt
ZW50TG9hZGVyLT5zZXRMYXN0Q2hlY2tlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KCkpOwogICAg
ICAgICBwb2xpY3lDaGVja2VyKCkuc3RvcENoZWNrKCk7CiAgICAgICAgIHBvbGljeUNoZWNrZXIo
KS5zZXRMb2FkVHlwZShuZXdMb2FkVHlwZSk7Ci0gICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVj
a05hdmlnYXRpb25Qb2xpY3kocmVxdWVzdCwgZmFsc2UgLyogZGlkUmVjZWl2ZVJlZGlyZWN0UmVz
cG9uc2UgKi8sIG9sZERvY3VtZW50TG9hZGVyLmdldCgpLCBmb3JtU3RhdGUucmVsZWFzZSgpLCBb
dGhpc10oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0
ZT4sIGJvb2wgc2hvdWxkQ29udGludWUpIHsKKyAgICAgICAgcG9saWN5Q2hlY2tlcigpLmNoZWNr
TmF2aWdhdGlvblBvbGljeShyZXF1ZXN0LCBmYWxzZSAvKiBkaWRSZWNlaXZlUmVkaXJlY3RSZXNw
b25zZSAqLywgb2xkRG9jdW1lbnRMb2FkZXIuZ2V0KCksIFdURk1vdmUoZm9ybVN0YXRlKSwgW3Ro
aXNdKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+
LCBib29sIHNob3VsZENvbnRpbnVlKSB7CiAgICAgICAgICAgICBjb250aW51ZUZyYWdtZW50U2Ny
b2xsQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KHJlcXVlc3QsIHNob3VsZENvbnRpbnVlKTsKICAgICAg
ICAgfSk7CiAgICAgICAgIHJldHVybjsKQEAgLTEyNTIsNyArMTI1Miw3IEBAIHZvaWQgRnJhbWVM
b2FkZXI6OmxvYWRVUkwoY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVMb2FkUmVxdWVzdCwg
Y29uc3QgU3RyaW5nCiAKICAgICAvLyBtdXN0IGdyYWIgdGhpcyBub3csIHNpbmNlIHRoaXMgbG9h
ZCBtYXkgc3RvcCB0aGUgcHJldmlvdXMgbG9hZCBhbmQgY2xlYXIgdGhpcyBmbGFnCiAgICAgYm9v
bCBpc1JlZGlyZWN0ID0gbV9xdWlja1JlZGlyZWN0Q29taW5nOwotICAgIGxvYWRXaXRoTmF2aWdh
dGlvbkFjdGlvbihyZXF1ZXN0LCBhY3Rpb24sIGxvY2tIaXN0b3J5LCBuZXdMb2FkVHlwZSwgZm9y
bVN0YXRlLnJlbGVhc2UoKSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKKyAgICBsb2Fk
V2l0aE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdCwgYWN0aW9uLCBsb2NrSGlzdG9yeSwgbmV3TG9h
ZFR5cGUsIFdURk1vdmUoZm9ybVN0YXRlKSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsK
ICAgICBpZiAoaXNSZWRpcmVjdCkgewogICAgICAgICBtX3F1aWNrUmVkaXJlY3RDb21pbmcgPSBm
YWxzZTsKICAgICAgICAgaWYgKG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcikKQEAgLTI3MDIs
MTEgKzI3MDIsMTEgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KGNvbnN0IEZy
YW1lTG9hZFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYKICAgICBpZiAoIWZyYW1lTmFt
ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gVGhlIHNlYXJjaCBmb3IgYSB0YXJnZXQgZnJhbWUg
aXMgZG9uZSBlYXJsaWVyIGluIHRoZSBjYXNlIG9mIGZvcm0gc3VibWlzc2lvbi4KICAgICAgICAg
aWYgKEZyYW1lKiB0YXJnZXRGcmFtZSA9IGZvcm1TdGF0ZSA/IDAgOiBmaW5kRnJhbWVGb3JOYXZp
Z2F0aW9uKGZyYW1lTmFtZSkpIHsKLSAgICAgICAgICAgIHRhcmdldEZyYW1lLT5sb2FkZXIoKS5s
b2FkV2l0aE5hdmlnYXRpb25BY3Rpb24od29ya2luZ1Jlc291cmNlUmVxdWVzdCwgYWN0aW9uLCBs
b2NrSGlzdG9yeSwgbG9hZFR5cGUsIGZvcm1TdGF0ZS5yZWxlYXNlKCksIGFsbG93TmF2aWdhdGlv
blRvSW52YWxpZFVSTCk7CisgICAgICAgICAgICB0YXJnZXRGcmFtZS0+bG9hZGVyKCkubG9hZFdp
dGhOYXZpZ2F0aW9uQWN0aW9uKHdvcmtpbmdSZXNvdXJjZVJlcXVlc3QsIGFjdGlvbiwgbG9ja0hp
c3RvcnksIGxvYWRUeXBlLCBXVEZNb3ZlKGZvcm1TdGF0ZSksIGFsbG93TmF2aWdhdGlvblRvSW52
YWxpZFVSTCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBwb2xp
Y3lDaGVja2VyKCkuY2hlY2tOZXdXaW5kb3dQb2xpY3koYWN0aW9uLCB3b3JraW5nUmVzb3VyY2VS
ZXF1ZXN0LCBmb3JtU3RhdGUucmVsZWFzZSgpLCBmcmFtZU5hbWUsIFt0aGlzLCBhbGxvd05hdmln
YXRpb25Ub0ludmFsaWRVUkwsIG9wZW5lclBvbGljeV0oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBib29sIHNob3VsZENvbnRp
bnVlKSB7CisgICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05ld1dpbmRvd1BvbGljeShhY3Rp
b24sIHdvcmtpbmdSZXNvdXJjZVJlcXVlc3QsIFdURk1vdmUoZm9ybVN0YXRlKSwgZnJhbWVOYW1l
LCBbdGhpcywgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBvcGVuZXJQb2xpY3ldKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0
ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlv
biwgYm9vbCBzaG91bGRDb250aW51ZSkgewogICAgICAgICAgICAgY29udGludWVMb2FkQWZ0ZXJO
ZXdXaW5kb3dQb2xpY3kocmVxdWVzdCwgZm9ybVN0YXRlLCBmcmFtZU5hbWUsIGFjdGlvbiwgc2hv
dWxkQ29udGludWUsIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgb3BlbmVyUG9saWN5KTsK
ICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKQEAgLTI3MTQsNyArMjcxNCw3IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdChjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBTdHJpbmcmCiAKICAgICAvLyBtdXN0IGdyYWIgdGhpcyBub3csIHNpbmNlIHRo
aXMgbG9hZCBtYXkgc3RvcCB0aGUgcHJldmlvdXMgbG9hZCBhbmQgY2xlYXIgdGhpcyBmbGFnCiAg
ICAgYm9vbCBpc1JlZGlyZWN0ID0gbV9xdWlja1JlZGlyZWN0Q29taW5nOwotICAgIGxvYWRXaXRo
TmF2aWdhdGlvbkFjdGlvbih3b3JraW5nUmVzb3VyY2VSZXF1ZXN0LCBhY3Rpb24sIGxvY2tIaXN0
b3J5LCBsb2FkVHlwZSwgZm9ybVN0YXRlLnJlbGVhc2UoKSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZh
bGlkVVJMKTsKKyAgICBsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24od29ya2luZ1Jlc291cmNlUmVx
dWVzdCwgYWN0aW9uLCBsb2NrSGlzdG9yeSwgbG9hZFR5cGUsIFdURk1vdmUoZm9ybVN0YXRlKSwg
YWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKICAgICBpZiAoaXNSZWRpcmVjdCkgewogICAg
ICAgICBtX3F1aWNrUmVkaXJlY3RDb21pbmcgPSBmYWxzZTsKICAgICAgICAgaWYgKG1fcHJvdmlz
aW9uYWxEb2N1bWVudExvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Q
cm9ncmVzc1RyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tl
ci5jcHAKaW5kZXggZDU2Y2EwNWRiOTkwYjMwYTZiMDdkMTJmYjJjMDllOTk2Yjc5NzIwZi4uNzUy
ZWVmYzM3ODA2ODRkM2I1NWM2NDllMzAwYjYzOGQ4NjNjZDIwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIFByb2dy
ZXNzVHJhY2tlcjo6ZmluYWxQcm9ncmVzc0NvbXBsZXRlKCkKIHsKICAgICBMT0coUHJvZ3Jlc3Ms
ICJGaW5hbCBwcm9ncmVzcyBjb21wbGV0ZSAoJXApIiwgdGhpcyk7CiAgICAgCi0gICAgUmVmUHRy
PEZyYW1lPiBmcmFtZSA9IG1fb3JpZ2luYXRpbmdQcm9ncmVzc0ZyYW1lLnJlbGVhc2UoKTsKKyAg
ICBhdXRvIGZyYW1lID0gV1RGTW92ZShtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZSk7CiAgICAg
CiAgICAgLy8gQmVmb3JlIHJlc2V0dGluZyBwcm9ncmVzcyB2YWx1ZSBiZSBzdXJlIHRvIHNlbmQg
Y2xpZW50IGEgbGVhc3Qgb25lIG5vdGlmaWNhdGlvbgogICAgIC8vIHdpdGggZmluYWwgcHJvZ3Jl
c3MgdmFsdWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDU5NGNjZTZjYTYzYTdhOTU1M2YwYTEzY2I4
NzU1NmYwNTlhYWY3NGEuLjM3YWM3NWRiZjUwMWM0OGI2NmQwNWJlNDU5NTNhNTYxN2NmOTJlMTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlR3JvdXAuY3BwCkBAIC0zNjksNyArMzY5LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNh
Y2hlR3JvdXA6OmRpc2Fzc29jaWF0ZURvY3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIpCiAKICAgICAvLyBSZWxlYXNlIG91ciByZWZlcmVuY2UgdG8gdGhlIG5ld2VzdCBjYWNoZS4g
VGhpcyBjb3VsZCBjYXVzZSB1cyB0byBiZSBkZWxldGVkLgogICAgIC8vIEFueSBvbmdvaW5nIHVw
ZGF0ZXMgd2lsbCBiZSBzdG9wcGVkIGZyb20gZGVzdHJ1Y3Rvci4KLSAgICBtX25ld2VzdENhY2hl
LnJlbGVhc2UoKTsKKyAgICBtX25ld2VzdENhY2hlID0gbnVsbHB0cjsKIH0KIAogdm9pZCBBcHBs
aWNhdGlvbkNhY2hlR3JvdXA6OmNhY2hlRGVzdHJveWVkKEFwcGxpY2F0aW9uQ2FjaGUqIGNhY2hl
KQpAQCAtNTk0LDcgKzU5NCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5p
c2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGRvdWJsZSBmaW5pCiAgICAgCiAgICAg
QVNTRVJUKG1fY2FjaGVCZWluZ1VwZGF0ZWQpOwogCi0gICAgbV9jYWNoZUJlaW5nVXBkYXRlZC0+
YWRkUmVzb3VyY2UobV9jdXJyZW50UmVzb3VyY2UucmVsZWFzZSgpKTsKKyAgICBtX2NhY2hlQmVp
bmdVcGRhdGVkLT5hZGRSZXNvdXJjZShXVEZNb3ZlKG1fY3VycmVudFJlc291cmNlKSk7CiAgICAg
bV9jdXJyZW50SGFuZGxlID0gbnVsbHB0cjsKIAogICAgIC8vIFdoaWxlIGRvd25sb2FkaW5nIGNo
ZWNrIHRvIHNlZSBpZiB3ZSBoYXZlIGV4Y2VlZGVkIHRoZSBhdmFpbGFibGUgcXVvdGEuCkBAIC04
NjgsNyArODY4LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNoZWNrSWZMb2FkSXND
b21wbGV0ZSgpCiAKICAgICAgICAgQVNTRVJUKG1fY2FjaGVCZWluZ1VwZGF0ZWQpOwogICAgICAg
ICBpZiAobV9tYW5pZmVzdFJlc291cmNlKQotICAgICAgICAgICAgbV9jYWNoZUJlaW5nVXBkYXRl
ZC0+c2V0TWFuaWZlc3RSZXNvdXJjZShtX21hbmlmZXN0UmVzb3VyY2UucmVsZWFzZSgpKTsKKyAg
ICAgICAgICAgIG1fY2FjaGVCZWluZ1VwZGF0ZWQtPnNldE1hbmlmZXN0UmVzb3VyY2UoV1RGTW92
ZShtX21hbmlmZXN0UmVzb3VyY2UpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvLyBX
ZSBjYW4gZ2V0IGhlcmUgYXMgYSByZXN1bHQgb2YgcmV0cnlpbmcgdGhlIENvbXBsZXRlIHN0ZXAs
IGZvbGxvd2luZwogICAgICAgICAgICAgLy8gYSBmYWlsdXJlIG9mIHRoZSBjYWNoZSBzdG9yYWdl
IHRvIHNhdmUgdGhlIG5ld2VzdCBjYWNoZSBkdWUgdG8gaGl0dGluZwpAQCAtODg4LDcgKzg4OCw3
IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpjaGVja0lmTG9hZElzQ29tcGxldGUoKQog
ICAgICAgICAgICAgZGlkUmVhY2hPcmlnaW5RdW90YSh0b3RhbFNwYWNlTmVlZGVkKTsKIAogICAg
ICAgICBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6RmFpbHVyZVJlYXNvbiBmYWlsdXJlUmVhc29u
OwotICAgICAgICBzZXROZXdlc3RDYWNoZShtX2NhY2hlQmVpbmdVcGRhdGVkLnJlbGVhc2UoKSk7
CisgICAgICAgIHNldE5ld2VzdENhY2hlKFdURk1vdmUobV9jYWNoZUJlaW5nVXBkYXRlZCkpOwog
ICAgICAgICBpZiAobV9zdG9yYWdlLT5zdG9yZU5ld2VzdENhY2hlKHRoaXMsIG9sZE5ld2VzdENh
Y2hlLmdldCgpLCBmYWlsdXJlUmVhc29uKSkgewogICAgICAgICAgICAgLy8gTmV3IGNhY2hlIHN0
b3JlZCwgbm93IHJlbW92ZSB0aGUgb2xkIGNhY2hlLgogICAgICAgICAgICAgaWYgKG9sZE5ld2Vz
dENhY2hlKQpAQCAtOTE5LDEwICs5MTksMTAgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6
OmNoZWNrSWZMb2FkSXNDb21wbGV0ZSgpCiAgICAgICAgICAgICAgICAgLy8gc2F2ZSB0aGUgbmV3
IGNhY2hlLgogCiAgICAgICAgICAgICAgICAgLy8gU2F2ZSBhIHJlZmVyZW5jZSB0byB0aGUgbmV3
IGNhY2hlLgotICAgICAgICAgICAgICAgIG1fY2FjaGVCZWluZ1VwZGF0ZWQgPSBtX25ld2VzdENh
Y2hlLnJlbGVhc2UoKTsKKyAgICAgICAgICAgICAgICBtX2NhY2hlQmVpbmdVcGRhdGVkID0gV1RG
TW92ZShtX25ld2VzdENhY2hlKTsKICAgICAgICAgICAgICAgICBpZiAob2xkTmV3ZXN0Q2FjaGUp
IHsKICAgICAgICAgICAgICAgICAgICAgLy8gUmVpbnN0YXRlIHRoZSBvbGROZXdlc3RDYWNoZS4K
LSAgICAgICAgICAgICAgICAgICAgc2V0TmV3ZXN0Q2FjaGUob2xkTmV3ZXN0Q2FjaGUucmVsZWFz
ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0TmV3ZXN0Q2FjaGUoV1RGTW92ZShvbGROZXdl
c3RDYWNoZSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBzY2hlZHVsZVJl
YWNoZWRNYXhBcHBDYWNoZVNpemVDYWxsYmFjaygpOwogICAgICAgICAgICAgICAgIHJldHVybjsK
QEAgLTk0NSw3ICs5NDUsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2hlY2tJZkxv
YWRJc0NvbXBsZXRlKCkKICAgICAgICAgICAgIC8vIFJlaW5zdGF0ZSB0aGUgb2xkTmV3ZXN0Q2Fj
aGUsIGlmIHRoZXJlIHdhcyBvbmUuCiAgICAgICAgICAgICBpZiAob2xkTmV3ZXN0Q2FjaGUpIHsK
ICAgICAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgZGlzY2FyZCB0aGUgZmFpbGVkIG5ldyBjYWNo
ZS4KLSAgICAgICAgICAgICAgICBzZXROZXdlc3RDYWNoZShvbGROZXdlc3RDYWNoZS5yZWxlYXNl
KCkpOworICAgICAgICAgICAgICAgIHNldE5ld2VzdENhY2hlKFdURk1vdmUob2xkTmV3ZXN0Q2Fj
aGUpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gV2UgbXVzdCBo
YXZlIGJlZW4gZGVsZXRlZCBieSB0aGUgbGFzdCBjYWxsIHRvIGRpc2Fzc29jaWF0ZURvY3VtZW50
TG9hZGVyKCkuCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5k
ZXggNTA0ZGE3ZmZjNGM1ZmNlZDY1YWQ5MjE4NDVlMzc5ZGM0ODY1NDEyYy4uMGRkYTU2NDVkYWFm
NDdiNzEyZjA0MGZmM2JlYmZmOWI3ZGM1YmU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC0x
MjEsMTQgKzEyMSwxNCBAQCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjpsb2FkQ2FjaGVHcm91cChjb25zdCBVUkwmIG1hbmlmZQogICAgIAogICAgIHVuc2ln
bmVkIG5ld2VzdENhY2hlU3RvcmFnZUlEID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXRlbWVu
dC5nZXRDb2x1bW5JbnQ2NCgyKSk7CiAKLSAgICBSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gY2Fj
aGUgPSBsb2FkQ2FjaGUobmV3ZXN0Q2FjaGVTdG9yYWdlSUQpOworICAgIGF1dG8gY2FjaGUgPSBs
b2FkQ2FjaGUobmV3ZXN0Q2FjaGVTdG9yYWdlSUQpOwogICAgIGlmICghY2FjaGUpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgICAgICAKICAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGdy
b3VwID0gbmV3IEFwcGxpY2F0aW9uQ2FjaGVHcm91cCgqdGhpcywgbWFuaWZlc3RVUkwpOwogICAg
ICAgCiAgICAgZ3JvdXAtPnNldFN0b3JhZ2VJRChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhdGVt
ZW50LmdldENvbHVtbkludDY0KDApKSk7Ci0gICAgZ3JvdXAtPnNldE5ld2VzdENhY2hlKGNhY2hl
LnJlbGVhc2UoKSk7CisgICAgZ3JvdXAtPnNldE5ld2VzdENhY2hlKFdURk1vdmUoY2FjaGUpKTsK
IAogICAgIHJldHVybiBncm91cDsKIH0gICAgCkBAIC0yMzksNyArMjM5LDcgQEAgQXBwbGljYXRp
b25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FjaGVHcm91cEZvclVSTChj
b25zdCBVUkwmIHVybCkKICAgICAgICAgLy8gV2UgZm91bmQgYSBjYWNoZSBncm91cCB0aGF0IG1h
dGNoZXMuIE5vdyBjaGVjayBpZiB0aGUgbmV3ZXN0IGNhY2hlIGhhcyBhIHJlc291cmNlIHdpdGgK
ICAgICAgICAgLy8gYSBtYXRjaGluZyBVUkwuCiAgICAgICAgIHVuc2lnbmVkIG5ld2VzdENhY2hl
SUQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhdGVtZW50LmdldENvbHVtbkludDY0KDIpKTsK
LSAgICAgICAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IGNhY2hlID0gbG9hZENhY2hlKG5ld2Vz
dENhY2hlSUQpOworICAgICAgICBhdXRvIGNhY2hlID0gbG9hZENhY2hlKG5ld2VzdENhY2hlSUQp
OwogICAgICAgICBpZiAoIWNhY2hlKQogICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTI1Miw3
ICsyNTIsNyBAQCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjpjYWNoZUdyb3VwRm9yVVJMKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICBBcHBsaWNhdGlvbkNh
Y2hlR3JvdXAqIGdyb3VwID0gbmV3IEFwcGxpY2F0aW9uQ2FjaGVHcm91cCgqdGhpcywgbWFuaWZl
c3RVUkwpOwogICAgICAgICAKICAgICAgICAgZ3JvdXAtPnNldFN0b3JhZ2VJRChzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oc3RhdGVtZW50LmdldENvbHVtbkludDY0KDApKSk7Ci0gICAgICAgIGdyb3Vw
LT5zZXROZXdlc3RDYWNoZShjYWNoZS5yZWxlYXNlKCkpOworICAgICAgICBncm91cC0+c2V0TmV3
ZXN0Q2FjaGUoV1RGTW92ZShjYWNoZSkpOwogICAgICAgICAKICAgICAgICAgbV9jYWNoZXNJbk1l
bW9yeS5zZXQoZ3JvdXAtPm1hbmlmZXN0VVJMKCksIGdyb3VwKTsKICAgICAgICAgCkBAIC0zMDks
NyArMzA5LDcgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6ZmFsbGJhY2tDYWNoZUdyb3VwRm9yVVJMKGNvbnN0IFUKICAgICAgICAgLy8gV2UgZm91bmQg
YSBjYWNoZSBncm91cCB0aGF0IG1hdGNoZXMuIE5vdyBjaGVjayBpZiB0aGUgbmV3ZXN0IGNhY2hl
IGhhcyBhIHJlc291cmNlIHdpdGgKICAgICAgICAgLy8gYSBtYXRjaGluZyBmYWxsYmFjayBuYW1l
c3BhY2UuCiAgICAgICAgIHVuc2lnbmVkIG5ld2VzdENhY2hlSUQgPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oc3RhdGVtZW50LmdldENvbHVtbkludDY0KDIpKTsKLSAgICAgICAgUmVmUHRyPEFwcGxp
Y2F0aW9uQ2FjaGU+IGNhY2hlID0gbG9hZENhY2hlKG5ld2VzdENhY2hlSUQpOworICAgICAgICBh
dXRvIGNhY2hlID0gbG9hZENhY2hlKG5ld2VzdENhY2hlSUQpOwogCiAgICAgICAgIFVSTCBmYWxs
YmFja1VSTDsKICAgICAgICAgaWYgKGNhY2hlLT5pc1VSTEluT25saW5lV2hpdGVsaXN0KHVybCkp
CkBAIC0zMjIsNyArMzIyLDcgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6ZmFsbGJhY2tDYWNoZUdyb3VwRm9yVVJMKGNvbnN0IFUKICAgICAgICAgQXBw
bGljYXRpb25DYWNoZUdyb3VwKiBncm91cCA9IG5ldyBBcHBsaWNhdGlvbkNhY2hlR3JvdXAoKnRo
aXMsIG1hbmlmZXN0VVJMKTsKICAgICAgICAgCiAgICAgICAgIGdyb3VwLT5zZXRTdG9yYWdlSUQo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXRlbWVudC5nZXRDb2x1bW5JbnQ2NCgwKSkpOwotICAg
ICAgICBncm91cC0+c2V0TmV3ZXN0Q2FjaGUoY2FjaGUucmVsZWFzZSgpKTsKKyAgICAgICAgZ3Jv
dXAtPnNldE5ld2VzdENhY2hlKFdURk1vdmUoY2FjaGUpKTsKICAgICAgICAgCiAgICAgICAgIG1f
Y2FjaGVzSW5NZW1vcnkuc2V0KGdyb3VwLT5tYW5pZmVzdFVSTCgpLCBncm91cCk7CiAgICAgICAg
IApAQCAtMTExOSw3ICsxMTE5LDcgQEAgUGFzc1JlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2UKICAgICAKICAg
ICBjYWNoZVN0YXRlbWVudC5iaW5kSW50NjQoMSwgc3RvcmFnZUlEKTsKIAotICAgIFJlZlB0cjxB
cHBsaWNhdGlvbkNhY2hlPiBjYWNoZSA9IEFwcGxpY2F0aW9uQ2FjaGU6OmNyZWF0ZSgpOworICAg
IGF1dG8gY2FjaGUgPSBBcHBsaWNhdGlvbkNhY2hlOjpjcmVhdGUoKTsKIAogICAgIFN0cmluZyBm
bGF0RmlsZURpcmVjdG9yeSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2NhY2hlRGlyZWN0
b3J5LCBtX2ZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7CiAKQEAgLTExMzQsNyArMTEzNCw3IEBA
IFBhc3NSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Omxv
YWRDYWNoZSh1bnNpZ25lZCBzdG9yYWdlCiAgICAgICAgIFZlY3RvcjxjaGFyPiBibG9iOwogICAg
ICAgICBjYWNoZVN0YXRlbWVudC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoNiwgYmxvYik7CiAgICAg
ICAgIAotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhID0gU2hhcmVkQnVmZmVyOjph
ZG9wdFZlY3RvcihibG9iKTsKKyAgICAgICAgYXV0byBkYXRhID0gU2hhcmVkQnVmZmVyOjphZG9w
dFZlY3RvcihibG9iKTsKICAgICAgICAgCiAgICAgICAgIFN0cmluZyBwYXRoID0gY2FjaGVTdGF0
ZW1lbnQuZ2V0Q29sdW1uVGV4dCg3KTsKICAgICAgICAgbG9uZyBsb25nIHNpemUgPSAwOwpAQCAt
MTE1NCwxMiArMTE1NCwxMiBAQCBQYXNzUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IEFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUodW5zaWduZWQgc3RvcmFnZQogICAgICAgICBTdHJp
bmcgaGVhZGVycyA9IGNhY2hlU3RhdGVtZW50LmdldENvbHVtblRleHQoNSk7CiAgICAgICAgIHBh
cnNlSGVhZGVycyhoZWFkZXJzLCByZXNwb25zZSk7CiAgICAgICAgIAotICAgICAgICBSZWZQdHI8
QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiByZXNvdXJjZSA9IEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZTo6Y3JlYXRlKHVybCwgcmVzcG9uc2UsIHR5cGUsIGRhdGEucmVsZWFzZSgpLCBwYXRoKTsK
KyAgICAgICAgYXV0byByZXNvdXJjZSA9IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRl
KHVybCwgcmVzcG9uc2UsIHR5cGUsIFdURk1vdmUoZGF0YSksIHBhdGgpOwogCiAgICAgICAgIGlm
ICh0eXBlICYgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpNYW5pZmVzdCkKLSAgICAgICAgICAg
IGNhY2hlLT5zZXRNYW5pZmVzdFJlc291cmNlKHJlc291cmNlLnJlbGVhc2UoKSk7CisgICAgICAg
ICAgICBjYWNoZS0+c2V0TWFuaWZlc3RSZXNvdXJjZShXVEZNb3ZlKHJlc291cmNlKSk7CiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIGNhY2hlLT5hZGRSZXNvdXJjZShyZXNvdXJjZS5yZWxlYXNl
KCkpOworICAgICAgICAgICAgY2FjaGUtPmFkZFJlc291cmNlKFdURk1vdmUocmVzb3VyY2UpKTsK
ICAgICB9CiAKICAgICBpZiAocmVzdWx0ICE9IFNRTElURV9ET05FKQpAQCAtMTIxNyw3ICsxMjE3
LDcgQEAgUGFzc1JlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6bG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2UKICAgICAKICAgICBjYWNoZS0+c2V0U3RvcmFn
ZUlEKHN0b3JhZ2VJRCk7CiAKLSAgICByZXR1cm4gY2FjaGUucmVsZWFzZSgpOworICAgIHJldHVy
biBXVEZNb3ZlKGNhY2hlKTsKIH0gICAgCiAgICAgCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpyZW1vdmUoQXBwbGljYXRpb25DYWNoZSogY2FjaGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uY3Bw
CmluZGV4IDdlZWU3ODM2MGM5OTU4NDU3ODRhMTAzOWZhNWQ4YzYzOTAwYjEzMTYuLjk4ZjZjMWUy
ZmExZDRhNTA5MTMwMGQ1ODc4MDQ0MjExZDhmN2IyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uY3Bw
CkBAIC03Niw5ICs3Niw5IEBAIEFyY2hpdmVSZXNvdXJjZSogQXJjaGl2ZVJlc291cmNlQ29sbGVj
dGlvbjo6YXJjaGl2ZVJlc291cmNlRm9yVVJMKGNvbnN0IFVSTCYgdXJsCiAKIFBhc3NSZWZQdHI8
QXJjaGl2ZT4gQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjo6cG9wU3ViZnJhbWVBcmNoaXZlKGNv
bnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBVUkwmIHVybCkKIHsKLSAgICBSZWZQdHI8QXJj
aGl2ZT4gYXJjaGl2ZSA9IG1fc3ViZnJhbWVzLnRha2UoZnJhbWVOYW1lKTsKKyAgICBhdXRvIGFy
Y2hpdmUgPSBtX3N1YmZyYW1lcy50YWtlKGZyYW1lTmFtZSk7CiAgICAgaWYgKGFyY2hpdmUpCi0g
ICAgICAgIHJldHVybiBhcmNoaXZlLnJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUo
YXJjaGl2ZSk7CiAKICAgICByZXR1cm4gbV9zdWJmcmFtZXMudGFrZSh1cmwuc3RyaW5nKCkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2Vi
QXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJB
cmNoaXZlLmNwcAppbmRleCA2ZjVmZWZlZGRkNDBhOTJlMTQ1ZmRkMWQxMmNmNWFjNzM5ZDdjOWNh
Li5lMDQ5MDYzMDA4MWEwMTJhNDMzMzI2YmUyNDIzMTgyN2RkZmNlOTcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApA
QCAtMzM0LDggKzMzNCw4IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rp
b25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChSZWZQdHI8QXJjaGl2ZVJl
c291cmNlPiBzdWJyZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHN1YnJlc291cmNlRGljdCkpCi0g
ICAgICAgICAgICAgICAgYWRkU3VicmVzb3VyY2Uoc3VicmVzb3VyY2UucmVsZWFzZSgpKTsKKyAg
ICAgICAgICAgIGlmIChhdXRvIHN1YnJlc291cmNlID0gY3JlYXRlUmVzb3VyY2Uoc3VicmVzb3Vy
Y2VEaWN0KSkKKyAgICAgICAgICAgICAgICBhZGRTdWJyZXNvdXJjZShXVEZNb3ZlKHN1YnJlc291
cmNlKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCkBAIC0zNTQsOSArMzU0LDkgQEAgYm9vbCBM
ZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAot
ICAgICAgICAgICAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IHN1YmZyYW1lQXJjaGl2ZSA9IGNy
ZWF0ZSgpOworICAgICAgICAgICAgYXV0byBzdWJmcmFtZUFyY2hpdmUgPSBjcmVhdGUoKTsKICAg
ICAgICAgICAgIGlmIChzdWJmcmFtZUFyY2hpdmUtPmV4dHJhY3Qoc3ViZnJhbWVEaWN0KSkKLSAg
ICAgICAgICAgICAgICBhZGRTdWJmcmFtZUFyY2hpdmUoc3ViZnJhbWVBcmNoaXZlLnJlbGVhc2Uo
KSk7CisgICAgICAgICAgICAgICAgYWRkU3ViZnJhbWVBcmNoaXZlKFdURk1vdmUoc3ViZnJhbWVB
cmNoaXZlKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVz
LCAiTGVnYWN5V2ViQXJjaGl2ZSAtIEludmFsaWQgc3ViZnJhbWUgYXJjaGl2ZSBza2lwcGVkIik7
CiAgICAgICAgIH0KQEAgLTU0Nyw4ICs1NDcsOCBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4g
TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5nLCBGcgog
ICAgICAgICBjb25zdCBTdHJpbmcmIGljb25VUkwgPSBpY29uRGF0YWJhc2UoKS5zeW5jaHJvbm91
c0ljb25VUkxGb3JQYWdlVVJMKHJlc3BvbnNlVVJMKTsKICAgICAgICAgaWYgKCFpY29uVVJMLmlz
RW1wdHkoKSAmJiBpY29uRGF0YWJhc2UoKS5zeW5jaHJvbm91c0ljb25EYXRhS25vd25Gb3JJY29u
VVJMKGljb25VUkwpKSB7CiAgICAgICAgICAgICBpZiAoSW1hZ2UqIGljb25JbWFnZSA9IGljb25E
YXRhYmFzZSgpLnN5bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwocmVzcG9uc2VVUkwsIEludFNpemUo
MTYsIDE2KSkpIHsKLSAgICAgICAgICAgICAgICBpZiAoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4g
cmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShpY29uSW1hZ2UtPmRhdGEoKSwgVVJM
KFBhcnNlZFVSTFN0cmluZywgaWNvblVSTCksICJpbWFnZS94LWljb24iLCAiIiwgIiIpKQotICAg
ICAgICAgICAgICAgICAgICBzdWJyZXNvdXJjZXMuYXBwZW5kKHJlc291cmNlLnJlbGVhc2UoKSk7
CisgICAgICAgICAgICAgICAgaWYgKGF1dG8gcmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNy
ZWF0ZShpY29uSW1hZ2UtPmRhdGEoKSwgVVJMKFBhcnNlZFVSTFN0cmluZywgaWNvblVSTCksICJp
bWFnZS94LWljb24iLCAiIiwgIiIpKQorICAgICAgICAgICAgICAgICAgICBzdWJyZXNvdXJjZXMu
YXBwZW5kKFdURk1vdmUocmVzb3VyY2UpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
IH0KQEAgLTU4Miw5ICs1ODIsOSBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2Vi
QXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiAgICAgLy8gV3JhcCB0
aGUgZnJhbWVzZXQgZG9jdW1lbnQgaW4gYW4gaWZyYW1lIHNvIGl0IGNhbiBiZSBwYXN0ZWQgaW50
bwogICAgIC8vIGFub3RoZXIgZG9jdW1lbnQgKHdoaWNoIHdpbGwgaGF2ZSBhIGJvZHkgb3IgZnJh
bWVzZXQgb2YgaXRzIG93bikuIAogICAgIFN0cmluZyBpZnJhbWVNYXJrdXAgPSAiPGlmcmFtZSBm
cmFtZWJvcmRlcj1cIm5vXCIgbWFyZ2lud2lkdGg9XCIwXCIgbWFyZ2luaGVpZ2h0PVwiMFwiIHdp
ZHRoPVwiOTglJVwiIGhlaWdodD1cIjk4JSVcIiBzcmM9XCIiICsgZnJhbWUtPmxvYWRlcigpLmRv
Y3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkudXJsKCkuc3RyaW5nKCkgKyAiXCI+PC9pZnJhbWU+
IjsKLSAgICBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBpZnJhbWVSZXNvdXJjZSA9IEFyY2hpdmVS
ZXNvdXJjZTo6Y3JlYXRlKHV0ZjhCdWZmZXIoaWZyYW1lTWFya3VwKSwgYmxhbmtVUkwoKSwgInRl
eHQvaHRtbCIsICJVVEYtOCIsIFN0cmluZygpKTsKKyAgICBhdXRvIGlmcmFtZVJlc291cmNlID0g
QXJjaGl2ZVJlc291cmNlOjpjcmVhdGUodXRmOEJ1ZmZlcihpZnJhbWVNYXJrdXApLCBibGFua1VS
TCgpLCAidGV4dC9odG1sIiwgIlVURi04IiwgU3RyaW5nKCkpOwogCi0gICAgcmV0dXJuIGNyZWF0
ZShpZnJhbWVSZXNvdXJjZS5yZWxlYXNlKCksIFZlY3RvcjxSZWZQdHI8QXJjaGl2ZVJlc291cmNl
Pj4oKSwgVmVjdG9yPFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPj4geyBhcmNoaXZlIH0pOworICAg
IHJldHVybiBjcmVhdGUoV1RGTW92ZShpZnJhbWVSZXNvdXJjZSksIFZlY3RvcjxSZWZQdHI8QXJj
aGl2ZVJlc291cmNlPj4oKSwgVmVjdG9yPFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPj4geyBhcmNo
aXZlIH0pOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmNwcAppbmRleCA0ZjU0NTI1NGRjODkyNDYxZDkyYWNkZDQ2MmY3NjQzZDlkNjRlZTc1Li45NmVl
ZjdmZTk3MGJlMTlhNWRlZDA4N2ZlOWZlN2ZiNWZkMzg5YTM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTMzNCw5ICszMzQsOSBAQCBpbmxpbmUg
dm9pZCBDYWNoZWRJbWFnZTo6Y3JlYXRlSW1hZ2UoKQogICAgICAgICBtX2ltYWdlID0gUERGRG9j
dW1lbnRJbWFnZTo6Y3JlYXRlKHRoaXMpOwogI2VuZGlmCiAgICAgZWxzZSBpZiAobV9yZXNwb25z
ZS5taW1lVHlwZSgpID09ICJpbWFnZS9zdmcreG1sIikgewotICAgICAgICBSZWZQdHI8U1ZHSW1h
Z2U+IHN2Z0ltYWdlID0gU1ZHSW1hZ2U6OmNyZWF0ZSgqdGhpcywgdXJsKCkpOwotICAgICAgICBt
X3N2Z0ltYWdlQ2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0ltYWdlQ2FjaGU+KHN2Z0ltYWdl
LmdldCgpKTsKLSAgICAgICAgbV9pbWFnZSA9IHN2Z0ltYWdlLnJlbGVhc2UoKTsKKyAgICAgICAg
YXV0byBzdmdJbWFnZSA9IFNWR0ltYWdlOjpjcmVhdGUoKnRoaXMsIHVybCgpKTsKKyAgICAgICAg
bV9zdmdJbWFnZUNhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdJbWFnZUNhY2hlPihzdmdJbWFn
ZS5wdHIoKSk7CisgICAgICAgIG1faW1hZ2UgPSBXVEZNb3ZlKHN2Z0ltYWdlKTsKICAgICB9IGVs
c2UgewogICAgICAgICBtX2ltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSh0aGlzKTsKICAgICAg
ICAgZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCptX2ltYWdlKS5zZXRBbGxvd1N1YnNhbXBsaW5nKG1f
bG9hZGVyICYmIG1fbG9hZGVyLT5mcmFtZUxvYWRlcigpLT5mcmFtZSgpLnNldHRpbmdzKCkuaW1h
Z2VTdWJzYW1wbGluZ0VuYWJsZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNv
bkRhdGFiYXNlLmNwcAppbmRleCBlMWVkYTVjYWExZDAwNWMwY2RlYTExM2M2NWIwNTk4Mzk1MzRm
MDcyLi5lZTQzN2U4NjI4ZWJmNGU4NjMyN2NjNzcwMzBmNWY2OTRlMzBiYjJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKQEAgLTU1OCw3ICs1NTgsNyBA
QCB2b2lkIEljb25EYXRhYmFzZTo6c2V0SWNvbkRhdGFGb3JJY29uVVJMKFBhc3NSZWZQdHI8U2hh
cmVkQnVmZmVyPiBkYXRhT3JpZ2luYWwsCiAgICAgICAgICAgICBpY29uID0gZ2V0T3JDcmVhdGVJ
Y29uUmVjb3JkKGljb25VUkwpOwogICAgIAogICAgICAgICAvLyBVcGRhdGUgdGhlIGRhdGEgYW5k
IHNldCB0aGUgdGltZSBzdGFtcAotICAgICAgICBpY29uLT5zZXRJbWFnZURhdGEoZGF0YS5yZWxl
YXNlKCkpOworICAgICAgICBpY29uLT5zZXRJbWFnZURhdGEoV1RGTW92ZShkYXRhKSk7CiAgICAg
ICAgIGljb24tPnNldFRpbWVzdGFtcCgoaW50KWN1cnJlbnRUaW1lKCkpOwogICAgICAgICAKICAg
ICAgICAgLy8gQ29weSB0aGUgY3VycmVudCByZXRhaW5pbmcgcGFnZVVSTHMgLSBpZiBhbnkgLSB0
byBub3RpZnkgdGhlbSBvZiB0aGUgY2hhbmdlCkBAIC04OTMsMTAgKzg5MywxMCBAQCBQYXNzUmVm
UHRyPEljb25SZWNvcmQ+IEljb25EYXRhYmFzZTo6Z2V0T3JDcmVhdGVJY29uUmVjb3JkKGNvbnN0
IFN0cmluZyYgaWNvblVSTAogICAgIGlmIChJY29uUmVjb3JkKiBpY29uID0gbV9pY29uVVJMVG9S
ZWNvcmRNYXAuZ2V0KGljb25VUkwpKQogICAgICAgICByZXR1cm4gaWNvbjsKIAotICAgIFJlZlB0
cjxJY29uUmVjb3JkPiBuZXdJY29uID0gSWNvblJlY29yZDo6Y3JlYXRlKGljb25VUkwpOwotICAg
IG1faWNvblVSTFRvUmVjb3JkTWFwLnNldChpY29uVVJMLCBuZXdJY29uLmdldCgpKTsKKyAgICBh
dXRvIG5ld0ljb24gPSBJY29uUmVjb3JkOjpjcmVhdGUoaWNvblVSTCk7CisgICAgbV9pY29uVVJM
VG9SZWNvcmRNYXAuc2V0KGljb25VUkwsIG5ld0ljb24ucHRyKCkpOwogCi0gICAgcmV0dXJuIG5l
d0ljb24ucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKG5ld0ljb24pOwogfQogCiAvLyBU
aGlzIG1ldGhvZCByZXRyaWV2ZXMgdGhlIGV4aXN0aW5nIFBhZ2VVUkxSZWNvcmQsIG9yIGNyZWF0
ZXMgYSBuZXcgb25lIGFuZCBtYXJrcyBpdCBhcyAiaW50ZXJlc3RlZCBpbiB0aGUgaW1wb3J0IiBm
b3IgbGF0ZXIgbm90aWZpY2F0aW9uCkBAIC0xNDkzLDcgKzE0OTMsNyBAQCBib29sIEljb25EYXRh
YmFzZTo6cmVhZEZyb21EYXRhYmFzZSgpCiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGljb25zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGRpZEFueVdvcmsgPSB0cnVlOwotICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZURhdGEgPSBnZXRJbWFnZURhdGFGb3JJY29u
VVJMRnJvbVNRTERhdGFiYXNlKGljb25zW2ldLT5pY29uVVJMKCkpOworICAgICAgICBhdXRvIGlt
YWdlRGF0YSA9IGdldEltYWdlRGF0YUZvckljb25VUkxGcm9tU1FMRGF0YWJhc2UoaWNvbnNbaV0t
Pmljb25VUkwoKSk7CiAKICAgICAgICAgLy8gVmVyaWZ5IHRoaXMgaWNvbiBzdGlsbCB3YW50cyB0
byBiZSByZWFkIGZyb20gZGlzawogICAgICAgICB7CkBAIC0xNTAzLDcgKzE1MDMsNyBAQCBib29s
IEljb25EYXRhYmFzZTo6cmVhZEZyb21EYXRhYmFzZSgpCiAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgaWYgKG1faWNvbnNQZW5kaW5nUmVhZGluZy5jb250YWlucyhpY29uc1tpXSkp
IHsKICAgICAgICAgICAgICAgICAgICAgLy8gU2V0IHRoZSBuZXcgZGF0YQotICAgICAgICAgICAg
ICAgICAgICBpY29uc1tpXS0+c2V0SW1hZ2VEYXRhKGltYWdlRGF0YS5yZWxlYXNlKCkpOworICAg
ICAgICAgICAgICAgICAgICBpY29uc1tpXS0+c2V0SW1hZ2VEYXRhKFdURk1vdmUoaW1hZ2VEYXRh
KSk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAvLyBSZW1vdmUg
dGhpcyBpY29uIGZyb20gdGhlIHNldCB0aGF0IG5lZWRzIHRvIGJlIHJlYWQKICAgICAgICAgICAg
ICAgICAgICAgbV9pY29uc1BlbmRpbmdSZWFkaW5nLnJlbW92ZShpY29uc1tpXSk7CkBAIC0xOTM2
LDcgKzE5MzYsNyBAQCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSWNvbkRhdGFiYXNlOjpnZXRJ
bWFnZURhdGFGb3JJY29uVVJMRnJvbVNRTERhdGFiYXNlKGNvbgogCiAgICAgbV9nZXRJbWFnZURh
dGFGb3JJY29uVVJMU3RhdGVtZW50LT5yZXNldCgpOwogICAgIAotICAgIHJldHVybiBpbWFnZURh
dGEucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKGltYWdlRGF0YSk7CiB9CiAKIHZvaWQg
SWNvbkRhdGFiYXNlOjpyZW1vdmVJY29uRnJvbVNRTERhdGFiYXNlKGNvbnN0IFN0cmluZyYgaWNv
blVSTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCAxMTliZDQ2YTBkNmZjM2QzNTMy
YTk4MjRkNzQ1Y2FmNDIxYTdkOTViLi5lYTlhZDQyMDlhYTcyZDgyNTAyNzlhNzE0ZWUwNDc3NjY3
NTM0MDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC04MTIsMTMgKzgxMiwxMyBA
QCBTdG9yYWdlKiBET01XaW5kb3c6OnNlc3Npb25TdG9yYWdlKEV4Y2VwdGlvbkNvZGUmIGVjKSBj
b25zdAogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8U3Rv
cmFnZUFyZWE+IHN0b3JhZ2VBcmVhID0gcGFnZS0+c2Vzc2lvblN0b3JhZ2UoKS0+c3RvcmFnZUFy
ZWEoZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpOworICAgIGF1dG8gc3RvcmFnZUFyZWEgPSBw
YWdlLT5zZXNzaW9uU3RvcmFnZSgpLT5zdG9yYWdlQXJlYShkb2N1bWVudC0+c2VjdXJpdHlPcmln
aW4oKSk7CiAgICAgaWYgKCFzdG9yYWdlQXJlYS0+Y2FuQWNjZXNzU3RvcmFnZShtX2ZyYW1lKSkg
ewogICAgICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQog
Ci0gICAgbV9zZXNzaW9uU3RvcmFnZSA9IFN0b3JhZ2U6OmNyZWF0ZShtX2ZyYW1lLCBzdG9yYWdl
QXJlYS5yZWxlYXNlKCkpOworICAgIG1fc2Vzc2lvblN0b3JhZ2UgPSBTdG9yYWdlOjpjcmVhdGUo
bV9mcmFtZSwgV1RGTW92ZShzdG9yYWdlQXJlYSkpOwogICAgIHJldHVybiBtX3Nlc3Npb25TdG9y
YWdlLmdldCgpOwogfQogCkBAIC04NTgsMTQgKzg1OCwxNCBAQCBTdG9yYWdlKiBET01XaW5kb3c6
OmxvY2FsU3RvcmFnZShFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKICAgICBpZiAoIXBhZ2UtPnNl
dHRpbmdzKCkubG9jYWxTdG9yYWdlRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIFJlZlB0cjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEgPSBwYWdlLT5zdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXIoKS5sb2NhbFN0b3JhZ2VBcmVhKCpkb2N1bWVudCk7CisgICAgYXV0byBz
dG9yYWdlQXJlYSA9IHBhZ2UtPnN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigpLmxvY2FsU3RvcmFn
ZUFyZWEoKmRvY3VtZW50KTsKIAogICAgIGlmICghc3RvcmFnZUFyZWEtPmNhbkFjY2Vzc1N0b3Jh
Z2UobV9mcmFtZSkpIHsKICAgICAgICAgZWMgPSBTRUNVUklUWV9FUlI7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAotICAgIG1fbG9jYWxTdG9yYWdlID0gU3RvcmFnZTo6Y3JlYXRl
KG1fZnJhbWUsIHN0b3JhZ2VBcmVhLnJlbGVhc2UoKSk7CisgICAgbV9sb2NhbFN0b3JhZ2UgPSBT
dG9yYWdlOjpjcmVhdGUobV9mcmFtZSwgV1RGTW92ZShzdG9yYWdlQXJlYSkpOwogICAgIHJldHVy
biBtX2xvY2FsU3RvcmFnZS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwCmluZGV4IDIxMTU1MzE4NGNlYzY3ZTBlNTllOTcyYjUzZDYxOGJkN2M5ZDJhZDQuLmVmZGVl
ZDEzNzJlZjA4ODY5NjNlZTU0ZmMyZDY2YjZiZWNmMzc3YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAKQEAgLTIyNzgsNyArMjI3OCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjp1
cGRhdGVEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBEYXRhVHJh
bnNmCiAgICAgICAgICAgICBtX3Nob3VsZE9ubHlGaXJlRHJhZ092ZXJFdmVudCA9IGZhbHNlOwog
ICAgICAgICB9CiAgICAgfQotICAgIG1fZHJhZ1RhcmdldCA9IG5ld1RhcmdldC5yZWxlYXNlKCk7
CisgICAgbV9kcmFnVGFyZ2V0ID0gV1RGTW92ZShuZXdUYXJnZXQpOwogICAgIHJldHVybiBhY2Nl
cHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBv
c2l0ZUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3Np
dGVBbmltYXRpb24uY3BwCmluZGV4IGVkMTliNjEzOWMzYTkxMmFlODg4NzQwYWExMzBhNzI0MTY4
ZTA0NjAuLjJmN2IxYWQwYTVkZjYxOWFjNGUzNzBmYjk1M2Y2ODk0ODU1MGFkNWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNw
cApAQCAtMTY4LDkgKzE2OCw5IEBAIHZvaWQgQ29tcG9zaXRlQW5pbWF0aW9uOjp1cGRhdGVUcmFu
c2l0aW9ucyhSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgUmVuZGVyCiAgICAgICAgICAg
ICAgICAgLy8gPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDc4Nz4K
ICAgICAgICAgICAgICAgICBpZiAoIWVxdWFsICYmIGlzQWN0aXZlVHJhbnNpdGlvbikgewogICAg
ICAgICAgICAgICAgICAgICAvLyBBZGQgdGhlIG5ldyB0cmFuc2l0aW9uCi0gICAgICAgICAgICAg
ICAgICAgIFJlZlB0cjxJbXBsaWNpdEFuaW1hdGlvbj4gaW1wbGljaXRBbmltYXRpb24gPSBJbXBs
aWNpdEFuaW1hdGlvbjo6Y3JlYXRlKGFuaW1hdGlvbiwgcHJvcCwgcmVuZGVyZXIsIHRoaXMsIG1v
ZGlmaWVkQ3VycmVudFN0eWxlID8gbW9kaWZpZWRDdXJyZW50U3R5bGUuZ2V0KCkgOiBmcm9tU3R5
bGUpOwotICAgICAgICAgICAgICAgICAgICBMT0coQW5pbWF0aW9ucywgIkNyZWF0ZWQgSW1wbGlj
aXRBbmltYXRpb24gJXAgb24gcmVuZGVyZXIgJXAgZm9yIHByb3BlcnR5ICVzIGR1cmF0aW9uICUu
MmYgZGVsYXkgJS4yZiIsIGltcGxpY2l0QW5pbWF0aW9uLmdldCgpLCByZW5kZXJlciwgZ2V0UHJv
cGVydHlOYW1lKHByb3ApLCBhbmltYXRpb24uZHVyYXRpb24oKSwgYW5pbWF0aW9uLmRlbGF5KCkp
OwotICAgICAgICAgICAgICAgICAgICBtX3RyYW5zaXRpb25zLnNldChwcm9wLCBpbXBsaWNpdEFu
aW1hdGlvbi5yZWxlYXNlKCkpOworICAgICAgICAgICAgICAgICAgICBhdXRvIGltcGxpY2l0QW5p
bWF0aW9uID0gSW1wbGljaXRBbmltYXRpb246OmNyZWF0ZShhbmltYXRpb24sIHByb3AsIHJlbmRl
cmVyLCB0aGlzLCBtb2RpZmllZEN1cnJlbnRTdHlsZSA/IG1vZGlmaWVkQ3VycmVudFN0eWxlLmdl
dCgpIDogZnJvbVN0eWxlKTsKKyAgICAgICAgICAgICAgICAgICAgTE9HKEFuaW1hdGlvbnMsICJD
cmVhdGVkIEltcGxpY2l0QW5pbWF0aW9uICVwIG9uIHJlbmRlcmVyICVwIGZvciBwcm9wZXJ0eSAl
cyBkdXJhdGlvbiAlLjJmIGRlbGF5ICUuMmYiLCBpbXBsaWNpdEFuaW1hdGlvbi5wdHIoKSwgcmVu
ZGVyZXIsIGdldFByb3BlcnR5TmFtZShwcm9wKSwgYW5pbWF0aW9uLmR1cmF0aW9uKCksIGFuaW1h
dGlvbi5kZWxheSgpKTsKKyAgICAgICAgICAgICAgICAgICAgbV90cmFuc2l0aW9ucy5zZXQocHJv
cCwgV1RGTW92ZShpbXBsaWNpdEFuaW1hdGlvbikpOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IG5lZWQgb25lIHBhc3MgZm9y
IHRoZSBzaW5nbGUgcHJvcCBjYXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5LmNwcAppbmRleCA5OWM3NmFiMmMxNDYxYTRiY2IxZjBhMjFlNDQ2
OTAwOTliYTQwZDViLi5lOThmYzc0NjI5ZTliYWM3MDdmZGFkNWFlNmRkNWQ4Yjc4MDJkYWU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3ku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5j
cHAKQEAgLTYyOCw3ICs2MjgsNyBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0
VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgZWZmZWN0aXZlVmlvbGF0ZWREaXJlYwogICAgIC8vIHNl
bnQgZXhwbGljaXRseS4gQXMgZm9yIHdoaWNoIGRpcmVjdGl2ZSB3YXMgdmlvbGF0ZWQsIHRoYXQn
cyBwcmV0dHkKICAgICAvLyBoYXJtbGVzcyBpbmZvcm1hdGlvbi4KIAotICAgIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IGNzcFJlcG9ydCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAg
YXV0byBjc3BSZXBvcnQgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGNzcFJlcG9y
dC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgiZG9jdW1lbnQtdXJpIiksIGRvY3VtZW50VVJJKTsK
ICAgICBjc3BSZXBvcnQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInJlZmVycmVyIiksIHJlZmVy
cmVyKTsKICAgICBjc3BSZXBvcnQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInZpb2xhdGVkLWRp
cmVjdGl2ZSIpLCB2aW9sYXRlZERpcmVjdGl2ZVRleHQpOwpAQCAtNjQzLDcgKzY0Myw3IEBAIHZv
aWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBl
ZmZlY3RpdmVWaW9sYXRlZERpcmVjCiAgICAgfQogCiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gcmVwb3J0T2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICByZXBvcnRP
YmplY3QtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoImNzcC1yZXBvcnQiKSwgY3NwUmVwb3J0LnJl
bGVhc2UoKSk7CisgICAgcmVwb3J0T2JqZWN0LT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJjc3At
cmVwb3J0IiksIFdURk1vdmUoY3NwUmVwb3J0KSk7CiAKICAgICBSZWZQdHI8Rm9ybURhdGE+IHJl
cG9ydCA9IEZvcm1EYXRhOjpjcmVhdGUocmVwb3J0T2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4
KCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgdXJsIDogcmVwb3J0VVJJcykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0gYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tCmluZGV4
IGIxNjdjZTIwMTlkMjk0OGE3YWU5MzFkOTZhNWZjNzRjMzhiNzZmODAuLmIxNjVlYTQ3NmJhMmQ1
YWE1NzhjNGYyYWFhZjM4NTQ5MTYzNzg1MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbQpAQCAtNjIwLDkgKzYyMCw5IEBA
IHZvaWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6Y3JlYXRlT3ZlcmxheUlmTmVlZGVkKCkK
ICAgICBpZiAoIW1fbWFpbkZyYW1lLnNldHRpbmdzKCkuc2VydmljZUNvbnRyb2xzRW5hYmxlZCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8UGFnZU92ZXJsYXk+IG92ZXJsYXkgPSBQ
YWdlT3ZlcmxheTo6Y3JlYXRlKCp0aGlzLCBQYWdlT3ZlcmxheTo6T3ZlcmxheVR5cGU6OkRvY3Vt
ZW50KTsKLSAgICBtX3NlcnZpY2VzT3ZlcmxheSA9IG92ZXJsYXkuZ2V0KCk7Ci0gICAgbV9tYWlu
RnJhbWUucGFnZU92ZXJsYXlDb250cm9sbGVyKCkuaW5zdGFsbFBhZ2VPdmVybGF5KG92ZXJsYXku
cmVsZWFzZSgpLCBQYWdlT3ZlcmxheTo6RmFkZU1vZGU6OkRvTm90RmFkZSk7CisgICAgYXV0byBv
dmVybGF5ID0gUGFnZU92ZXJsYXk6OmNyZWF0ZSgqdGhpcywgUGFnZU92ZXJsYXk6Ok92ZXJsYXlU
eXBlOjpEb2N1bWVudCk7CisgICAgbV9zZXJ2aWNlc092ZXJsYXkgPSBvdmVybGF5LnB0cigpOwor
ICAgIG1fbWFpbkZyYW1lLnBhZ2VPdmVybGF5Q29udHJvbGxlcigpLmluc3RhbGxQYWdlT3Zlcmxh
eShXVEZNb3ZlKG92ZXJsYXkpLCBQYWdlT3ZlcmxheTo6RmFkZU1vZGU6OkRvTm90RmFkZSk7CiB9
CiAKIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjp0ZWxl
cGhvbmVOdW1iZXJSYW5nZXNGb3JGb2N1c2VkRnJhbWUoKQpAQCAtNzM5LDcgKzczOSw3IEBAIHZv
aWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6ZGV0ZXJtaW5lQWN0aXZlSGlnaGxpZ2h0KGJv
b2wmIG1vdXNlSXNPdmVyQWN0aXZlCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAot
ICAgICAgICBtX2FjdGl2ZUhpZ2hsaWdodCA9IG1fbmV4dEFjdGl2ZUhpZ2hsaWdodC5yZWxlYXNl
KCk7CisgICAgICAgIG1fYWN0aXZlSGlnaGxpZ2h0ID0gV1RGTW92ZShtX25leHRBY3RpdmVIaWdo
bGlnaHQpOwogCiAgICAgICAgIGlmIChtX2FjdGl2ZUhpZ2hsaWdodCkgewogICAgICAgICAgICAg
bV9zZXJ2aWNlc092ZXJsYXktPmxheWVyKCkuYWRkQ2hpbGQobV9hY3RpdmVIaWdobGlnaHQtPmxh
eWVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNT
Y3JvbGxpbmdDb29yZGluYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5
bmNTY3JvbGxpbmdDb29yZGluYXRvci5oCmluZGV4IGQwOTY4YmIzMzgwNjg3ZGQzYmVmMzQzMTIw
MTliZjMzM2JhN2YwNmEuLjYzMTYyY2FkODY1Mjk3YmRjNzQ0M2FjNDQ5MzM3NzliYzBkYmM0ZDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yLmgKQEAgLTczLDcgKzczLDcgQEAgcHJvdGVjdGVkOgogCiAgICAg
U2Nyb2xsaW5nU3RhdGVUcmVlKiBzY3JvbGxpbmdTdGF0ZVRyZWUoKSB7IHJldHVybiBtX3Njcm9s
bGluZ1N0YXRlVHJlZS5nZXQoKTsgfQogCi0gICAgUGFzc1JlZlB0cjxTY3JvbGxpbmdUcmVlPiBy
ZWxlYXNlU2Nyb2xsaW5nVHJlZSgpIHsgcmV0dXJuIG1fc2Nyb2xsaW5nVHJlZS5yZWxlYXNlKCk7
IH0KKyAgICBQYXNzUmVmUHRyPFNjcm9sbGluZ1RyZWU+IHJlbGVhc2VTY3JvbGxpbmdUcmVlKCkg
eyByZXR1cm4gV1RGTW92ZShtX3Njcm9sbGluZ1RyZWUpOyB9CiAKICAgICB2b2lkIHVwZGF0ZVNj
cm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbChTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IEZsb2F0
UG9pbnQmLCBib29sIHByb2dyYW1tYXRpY1Njcm9sbCwgU2V0T3JTeW5jU2Nyb2xsaW5nTGF5ZXJQ
b3NpdGlvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1N0YXRlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdTdGF0ZU5vZGUuY3BwCmluZGV4IGRmZDUyODU3YWY2ZDAzYTJlODcwMzQ1MmI4MzJmNjAy
NjQyNjQwMjQuLjg5YWVjYTBmNjk1NjllODY1NWNkZDAwMDU2NzFlMTkzMWI1NDhhYjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2Rl
LmNwcApAQCAtNzQsMTMgKzc0LDEzIEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVOb2RlOjpzZXRQcm9w
ZXJ0eUNoYW5nZWQodW5zaWduZWQgcHJvcGVydHlCaXQpCiAKIFBhc3NSZWZQdHI8U2Nyb2xsaW5n
U3RhdGVOb2RlPiBTY3JvbGxpbmdTdGF0ZU5vZGU6OmNsb25lQW5kUmVzZXQoU2Nyb2xsaW5nU3Rh
dGVUcmVlJiBhZG9wdGl2ZVRyZWUpCiB7Ci0gICAgUmVmUHRyPFNjcm9sbGluZ1N0YXRlTm9kZT4g
Y2xvbmUgPSB0aGlzLT5jbG9uZShhZG9wdGl2ZVRyZWUpOworICAgIGF1dG8gY2xvbmUgPSB0aGlz
LT5jbG9uZShhZG9wdGl2ZVRyZWUpOwogCiAgICAgLy8gTm93IHRoYXQgdGhpcyBub2RlIGlzIGNs
b25lZCwgcmVzZXQgb3VyIGNoYW5nZSBwcm9wZXJ0aWVzLgogICAgIHJlc2V0Q2hhbmdlZFByb3Bl
cnRpZXMoKTsKIAotICAgIGNsb25lQW5kUmVzZXRDaGlsZHJlbigqY2xvbmUsIGFkb3B0aXZlVHJl
ZSk7Ci0gICAgcmV0dXJuIGNsb25lLnJlbGVhc2UoKTsKKyAgICBjbG9uZUFuZFJlc2V0Q2hpbGRy
ZW4oY2xvbmUuZ2V0KCksIGFkb3B0aXZlVHJlZSk7CisgICAgcmV0dXJuIFdURk1vdmUoY2xvbmUp
OwogfQogCiB2b2lkIFNjcm9sbGluZ1N0YXRlTm9kZTo6Y2xvbmVBbmRSZXNldENoaWxkcmVuKFNj
cm9sbGluZ1N0YXRlTm9kZSYgY2xvbmUsIFNjcm9sbGluZ1N0YXRlVHJlZSYgYWRvcHRpdmVUcmVl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRl
VHJlZS5jcHAKaW5kZXggM2JlYzQzNjBjNGQxNTQ5Njc2MWZhYTQ3NDFmMjkwMzZjMTc5NmY5NC4u
MTFjZWM1ZjVkZTdhMjFjNmFmMWE2ZWMwNjFhOWY1ZmJkOTRhZTU3ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwCkBAIC0x
MTUsMTYgKzExNSwxNiBAQCBTY3JvbGxpbmdOb2RlSUQgU2Nyb2xsaW5nU3RhdGVUcmVlOjphdHRh
Y2hOb2RlKFNjcm9sbGluZ05vZGVUeXBlIG5vZGVUeXBlLCBTY3JvbAogICAgICAgICAgICAgcmV0
dXJuIDA7CiAKICAgICAgICAgaWYgKG5vZGVUeXBlID09IEZyYW1lU2Nyb2xsaW5nTm9kZSAmJiBw
YXJlbnRJRCkgewotICAgICAgICAgICAgaWYgKFJlZlB0cjxTY3JvbGxpbmdTdGF0ZU5vZGU+IG9y
cGhhbmVkTm9kZSA9IG1fb3JwaGFuZWRTdWJmcmFtZU5vZGVzLnRha2UobmV3Tm9kZUlEKSkgewor
ICAgICAgICAgICAgaWYgKGF1dG8gb3JwaGFuZWROb2RlID0gbV9vcnBoYW5lZFN1YmZyYW1lTm9k
ZXMudGFrZShuZXdOb2RlSUQpKSB7CiAgICAgICAgICAgICAgICAgbmV3Tm9kZSA9IG9ycGhhbmVk
Tm9kZS5nZXQoKTsKLSAgICAgICAgICAgICAgICBwYXJlbnQtPmFwcGVuZENoaWxkKG9ycGhhbmVk
Tm9kZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgICAgIHBhcmVudC0+YXBwZW5kQ2hpbGQoV1RG
TW92ZShvcnBoYW5lZE5vZGUpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAg
IGlmICghbmV3Tm9kZSkgewotICAgICAgICAgICAgUmVmUHRyPFNjcm9sbGluZ1N0YXRlTm9kZT4g
c3RhdGVOb2RlID0gY3JlYXRlTm9kZShub2RlVHlwZSwgbmV3Tm9kZUlEKTsKKyAgICAgICAgICAg
IGF1dG8gc3RhdGVOb2RlID0gY3JlYXRlTm9kZShub2RlVHlwZSwgbmV3Tm9kZUlEKTsKICAgICAg
ICAgICAgIG5ld05vZGUgPSBzdGF0ZU5vZGUuZ2V0KCk7Ci0gICAgICAgICAgICBwYXJlbnQtPmFw
cGVuZENoaWxkKHN0YXRlTm9kZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgcGFyZW50LT5hcHBl
bmRDaGlsZChXVEZNb3ZlKHN0YXRlTm9kZSkpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCmluZGV4IGVhMzNl
ZmMxZDNiZjAwM2Y3NjZhOTg5ZjA0YzZhNTMwMjk4NjQ1N2YuLmY2NWNkZTNjMWFmZjQ1ZjY2ZDVm
MjIzNjM2NzE5MmYwY2IzMDdhMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0hSVEZFbGV2YXRpb24uY3BwCkBAIC03NCwxMiArNzQsMTIgQEAgc3RhdGljIEF1ZGlvQnVz
KiBnZXRDb25jYXRlbmF0ZWRJbXB1bHNlUmVzcG9uc2VzRm9yU3ViamVjdChjb25zdCBTdHJpbmcm
IHN1YmplY3QKICAgICBBdWRpb0J1cyogYnVzOwogICAgIEF1ZGlvQnVzTWFwOjppdGVyYXRvciBp
dGVyYXRvciA9IGF1ZGlvQnVzTWFwLmdldCgpLmZpbmQoc3ViamVjdE5hbWUpOwogICAgIGlmIChp
dGVyYXRvciA9PSBhdWRpb0J1c01hcC5nZXQoKS5lbmQoKSkgewotICAgICAgICBSZWZQdHI8QXVk
aW9CdXM+IGNvbmNhdGVuYXRlZEltcHVsc2VSZXNwb25zZXMgPSBBdWRpb0J1czo6bG9hZFBsYXRm
b3JtUmVzb3VyY2Uoc3ViamVjdE5hbWUudXRmOCgpLmRhdGEoKSwgUmVzcG9uc2VTYW1wbGVSYXRl
KTsKKyAgICAgICAgYXV0byBjb25jYXRlbmF0ZWRJbXB1bHNlUmVzcG9uc2VzID0gQXVkaW9CdXM6
OmxvYWRQbGF0Zm9ybVJlc291cmNlKHN1YmplY3ROYW1lLnV0ZjgoKS5kYXRhKCksIFJlc3BvbnNl
U2FtcGxlUmF0ZSk7CiAgICAgICAgIEFTU0VSVChjb25jYXRlbmF0ZWRJbXB1bHNlUmVzcG9uc2Vz
KTsKICAgICAgICAgaWYgKCFjb25jYXRlbmF0ZWRJbXB1bHNlUmVzcG9uc2VzKQogICAgICAgICAg
ICAgcmV0dXJuIDA7CiAKLSAgICAgICAgYnVzID0gY29uY2F0ZW5hdGVkSW1wdWxzZVJlc3BvbnNl
cy5yZWxlYXNlKCkubGVha1JlZigpOworICAgICAgICBidXMgPSBjb25jYXRlbmF0ZWRJbXB1bHNl
UmVzcG9uc2VzLmxlYWtSZWYoKTsKICAgICAgICAgYXVkaW9CdXNNYXAuZ2V0KCkuc2V0KHN1Ympl
Y3ROYW1lLCBidXMpOwogICAgIH0gZWxzZQogICAgICAgICBidXMgPSBpdGVyYXRvci0+dmFsdWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVm
cmVzaE1vbml0b3JNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwCmluZGV4IDk3ODJkMjg0NjBjYThmZDA5
YzU4ZTcxYTVkN2NjOGJlNTRkNDVjMDYuLmYwOGFlYmU3MmU3ZTI5NGFiNDlmZGQ1YWQ3MDNiZTVk
MjYxZjJiOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rp
c3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwCkBAIC01NCwxMyAr
NTQsMTMgQEAgRGlzcGxheVJlZnJlc2hNb25pdG9yKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5h
Z2VyOjpjcmVhdGVNb25pdG9yRm9yQ2xpZW50KERpc3AKICAgICAgICAgcmV0dXJuIG1vbml0b3Iu
Z2V0KCk7CiAgICAgfQogCi0gICAgUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9uaXRvcj4gbW9uaXRv
ciA9IERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6Y3JlYXRlKGNsaWVudCk7CisgICAgYXV0byBtb25p
dG9yID0gRGlzcGxheVJlZnJlc2hNb25pdG9yOjpjcmVhdGUoY2xpZW50KTsKICAgICBpZiAoIW1v
bml0b3IpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgbW9uaXRvci0+YWRkQ2xpZW50
KGNsaWVudCk7CiAgICAgRGlzcGxheVJlZnJlc2hNb25pdG9yKiByZXN1bHQgPSBtb25pdG9yLmdl
dCgpOwotICAgIG1fbW9uaXRvcnMuYXBwZW5kKG1vbml0b3IucmVsZWFzZSgpKTsKKyAgICBtX21v
bml0b3JzLmFwcGVuZChXVEZNb3ZlKG1vbml0b3IpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2Fk
ZUZvbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRl
Rm9udHMuY3BwCmluZGV4IGMzZjIzMjYwMWE4MDBiMjVmZGQwOWI5NGMyMDUxNGQxYjJlZWMwNTcu
LmQzNmVkMDkyNzRlM2I3ZGE4NTJiZWEyY2FmOTQ4MmJkNGUxYzhlZjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuY3BwCkBA
IC0zMjQsNyArMzI0LDcgQEAgR2x5cGhEYXRhIEZvbnRDYXNjYWRlRm9udHM6OmdseXBoRGF0YUZv
clN5c3RlbUZhbGxiYWNrKFVDaGFyMzIgYywgY29uc3QgRm9udENhc2MKICAgICBpZiAoIW9yaWdp
bmFsRm9udCkKICAgICAgICAgb3JpZ2luYWxGb250ID0gJnByaW1hcnlSYW5nZXMuZm9udEZvckZp
cnN0UmFuZ2UoKTsKIAotICAgIFJlZlB0cjxGb250PiBzeXN0ZW1GYWxsYmFja0ZvbnQgPSBvcmln
aW5hbEZvbnQtPnN5c3RlbUZhbGxiYWNrRm9udEZvckNoYXJhY3RlcihjLCBkZXNjcmlwdGlvbiwg
bV9pc0ZvclBsYXRmb3JtRm9udCk7CisgICAgYXV0byBzeXN0ZW1GYWxsYmFja0ZvbnQgPSBvcmln
aW5hbEZvbnQtPnN5c3RlbUZhbGxiYWNrRm9udEZvckNoYXJhY3RlcihjLCBkZXNjcmlwdGlvbiwg
bV9pc0ZvclBsYXRmb3JtRm9udCk7CiAgICAgaWYgKCFzeXN0ZW1GYWxsYmFja0ZvbnQpCiAgICAg
ICAgIHJldHVybiBHbHlwaERhdGEoKTsKIApAQCAtMzQ4LDcgKzM0OCw3IEBAIEdseXBoRGF0YSBG
b250Q2FzY2FkZUZvbnRzOjpnbHlwaERhdGFGb3JTeXN0ZW1GYWxsYmFjayhVQ2hhcjMyIGMsIGNv
bnN0IEZvbnRDYXNjCiAKICAgICAvLyBLZWVwIHRoZSBzeXN0ZW0gZmFsbGJhY2sgZm9udHMgd2Ug
dXNlIGFsaXZlLgogICAgIGlmIChmYWxsYmFja0dseXBoRGF0YS5nbHlwaCkKLSAgICAgICAgbV9z
eXN0ZW1GYWxsYmFja0ZvbnRTZXQuYWRkKHN5c3RlbUZhbGxiYWNrRm9udC5yZWxlYXNlKCkpOwor
ICAgICAgICBtX3N5c3RlbUZhbGxiYWNrRm9udFNldC5hZGQoV1RGTW92ZShzeXN0ZW1GYWxsYmFj
a0ZvbnQpKTsKIAogICAgIHJldHVybiBmYWxsYmFja0dseXBoRGF0YTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAppbmRleCBiOWI5MjMxOTBj
NWYzMjVlMTMyZGViNjVmZDc3NWFjNjk5YTQxZjU1Li40ZjJmYjViYjVkMjk1NjQwOGM3MzNiMDk5
N2VhNzM5Y2NiNTE3YTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFj
a1ByaXZhdGVBVkYuY3BwCkBAIC00MDUsNyArNDA1LDcgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGOjpwcm9jZXNzQXR0cmlidXRlZFN0cmluZ3MoQ0ZBcnJheVJlZiBhdHRyaWJ1dGVk
U3QKICAgICAgICAgCiAgICAgICAgIExPRyhNZWRpYSwgIkluYmFuZFRleHRUcmFja1ByaXZhdGVB
VkY6OnByb2Nlc3NDdWUoJXApIC0gYWRkaW5nIGN1ZSBcIiVzXCIgZm9yIHRpbWUgPSAlLjJmLCBl
bmQgPSAlLjJmLCBwb3NpdGlvbiA9ICAlLjJmLCBsaW5lID0gICUuMmYiLCB0aGlzLCBjdWVEYXRh
LT5jb250ZW50KCkudXRmOCgpLmRhdGEoKSwgY3VlRGF0YS0+c3RhcnRUaW1lKCkudG9Eb3VibGUo
KSwgY3VlRGF0YS0+ZW5kVGltZSgpLnRvRG91YmxlKCksIGN1ZURhdGEtPnBvc2l0aW9uKCksIGN1
ZURhdGEtPmxpbmUoKSk7CiAKLSAgICAgICAgY2xpZW50KCktPmFkZEdlbmVyaWNDdWUodGhpcywg
Y3VlRGF0YS5yZWxlYXNlKCkpOworICAgICAgICBjbGllbnQoKS0+YWRkR2VuZXJpY0N1ZSh0aGlz
LCBXVEZNb3ZlKGN1ZURhdGEpKTsKICAgICB9CiAKICAgICBtX3BlbmRpbmdDdWVTdGF0dXMgPSBz
ZWVraW5nKCkgPyBEZWxpdmVyZWREdXJpbmdTZWVrIDogVmFsaWQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFTZWxlY3Rpb25H
cm91cEFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMubW0KaW5kZXggZDEzNmQ4NzM2OTMzMmNj
N2E5NzNkMDE0OWQ0NmI4YjYzOGFmY2NmMy4uMTBkMmIyMTU0ZmZhOTc0YTFhNzkxMzA3OWVhNGVh
NmRkODQ3OTljMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNlbGVjdGlvbkdyb3Vw
QVZGT2JqQy5tbQpAQCAtMTI5LDEwICsxMjksMTAgQEAgdm9pZCBNZWRpYVNlbGVjdGlvbkdyb3Vw
QVZGT2JqQzo6dXBkYXRlT3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgY2hhcmFjdGVyaXMK
ICAgICBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uKiBzZWxlY3RlZE9wdGlvbiA9IFttX3BsYXllckl0
ZW0gc2VsZWN0ZWRNZWRpYU9wdGlvbkluTWVkaWFTZWxlY3Rpb25Hcm91cDptX21lZGlhU2VsZWN0
aW9uR3JvdXAuZ2V0KCldOwogCiAgICAgZm9yIChBVk1lZGlhU2VsZWN0aW9uT3B0aW9uKiBhZGRl
ZEFWT3B0aW9uIGluIGFkZGVkQVZPcHRpb25zLmdldCgpKSB7Ci0gICAgICAgIFJlZlB0cjxNZWRp
YVNlbGVjdGlvbk9wdGlvbkFWRk9iakM+IGFkZGVkT3B0aW9uID0gTWVkaWFTZWxlY3Rpb25PcHRp
b25BVkZPYmpDOjpjcmVhdGUoKnRoaXMsIGFkZGVkQVZPcHRpb24pOworICAgICAgICBhdXRvIGFk
ZGVkT3B0aW9uID0gTWVkaWFTZWxlY3Rpb25PcHRpb25BVkZPYmpDOjpjcmVhdGUoKnRoaXMsIGFk
ZGVkQVZPcHRpb24pOwogICAgICAgICBpZiAoYWRkZWRBVk9wdGlvbiA9PSBzZWxlY3RlZE9wdGlv
bikKICAgICAgICAgICAgIG1fc2VsZWN0ZWRPcHRpb24gPSBhZGRlZE9wdGlvbi5nZXQoKTsKLSAg
ICAgICAgbV9vcHRpb25zLnNldChhZGRlZEFWT3B0aW9uLCBhZGRlZE9wdGlvbi5yZWxlYXNlKCkp
OworICAgICAgICBtX29wdGlvbnMuc2V0KGFkZGVkQVZPcHRpb24sIFdURk1vdmUoYWRkZWRPcHRp
b24pKTsKICAgICB9CiAKICAgICBpZiAoIW1fc2hvdWxkU2VsZWN0T3B0aW9uQXV0b21hdGljYWxs
eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakMubW0KaW5kZXggZjhmNmIyNTE1NGQ3NjVmMWQwYWJmNjdlOTRhZWI0ZDdiNmZlNzY5Yi4u
YTlkNTc4ZmE4YWEyZGVhYTMxYTNmMjBlNWRmODE3OThhYjA3MDdjZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAgLTY5
Niw3ICs2OTYsNyBAQCBib29sIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpwcm9jZXNzQ29k
ZWRGcmFtZShpbnQgdHJhY2tJRCwgQ01TYW1wbGVCdWZmZXJSZQogICAgIGlmIChtX2NsaWVudCkg
ewogICAgICAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IG1lZGlhU2FtcGxlID0gTWVkaWFTYW1wbGVB
VkZPYmpDOjpjcmVhdGUoc2FtcGxlQnVmZmVyLCB0cmFja0lEKTsKICAgICAgICAgTE9HKE1lZGlh
U291cmNlU2FtcGxlcywgIlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpwcm9jZXNzQ29kZWRG
cmFtZSglcCkgLSBzYW1wbGUoJXMpIiwgdGhpcywgdG9TdHJpbmcoKm1lZGlhU2FtcGxlKS51dGY4
KCkuZGF0YSgpKTsKLSAgICAgICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNl
aXZlU2FtcGxlKHRoaXMsIG1lZGlhU2FtcGxlLnJlbGVhc2UoKSk7CisgICAgICAgIG1fY2xpZW50
LT5zb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZVNhbXBsZSh0aGlzLCBXVEZNb3ZlKG1lZGlh
U2FtcGxlKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCA0
ZGE2N2YyYjFmNzY2MTJjZWFjZjM1Y2QyODYyNjc5ZjYwMjQxYjkzLi44ODM3M2M4ZWNiNjkyZWY2
NjgyY2EzZTMxMzk1NmE5NzkxY2EyMWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTM4MTUsOCArMzgx
NSw4IEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmZldGNo
Q2xvbmVMYXllcnMoR3JhcGhpY3NMYXllciogcmVwCiAKICAgICAgICAgZm9yIChhdXRvKiBjaGls
ZExheWVyIDogY2hpbGRMYXllcnMpIHsKICAgICAgICAgICAgIEdyYXBoaWNzTGF5ZXJDQSYgY2hp
bGRMYXllckNBID0gZG93bmNhc3Q8R3JhcGhpY3NMYXllckNBPigqY2hpbGRMYXllcik7Ci0gICAg
ICAgICAgICBpZiAoUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gcGxhdGZvcm1MYXllciA9IGNoaWxk
TGF5ZXJDQS5mZXRjaENsb25lTGF5ZXJzKHJlcGxpY2FSb290LCByZXBsaWNhU3RhdGUsIEludGVy
bWVkaWF0ZUNsb25lTGV2ZWwpKQotICAgICAgICAgICAgICAgIGNsb25hbFN1YmxheWVycy5hcHBl
bmQocGxhdGZvcm1MYXllci5yZWxlYXNlKCkpOworICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZv
cm1MYXllciA9IGNoaWxkTGF5ZXJDQS5mZXRjaENsb25lTGF5ZXJzKHJlcGxpY2FSb290LCByZXBs
aWNhU3RhdGUsIEludGVybWVkaWF0ZUNsb25lTGV2ZWwpKQorICAgICAgICAgICAgICAgIGNsb25h
bFN1YmxheWVycy5hcHBlbmQoV1RGTW92ZShwbGF0Zm9ybUxheWVyKSk7CiAgICAgICAgIH0KIAog
ICAgICAgICByZXBsaWNhU3RhdGUucG9wKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcAppbmRleCA0YzlkNzE1MmQ5
ODIxNDBkZWRjZDUwNGNmZWE0MGM4NDU4NGI4NzBhLi4wMGEyNTczYWZmMTJlZjg5ZGIyYTUxMDgx
M2JmZTBjOWUzYWQxMTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAKQEAgLTEzNSwxMyArMTM1LDEzIEBAIFBh
c3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBQbGF0Zm9ybUNBTGF5ZXI6OmNyZWF0ZUNvbXBhdGli
bGVMYXllck9yVGFrZUZyb21Qb29sCiAKICAgICBpZiAoKGxheWVyID0gbGF5ZXJQb29sKCkudGFr
ZUxheWVyV2l0aFNpemUoc2l6ZSkpKSB7CiAgICAgICAgIGxheWVyLT5zZXRPd25lcihjbGllbnQp
OwotICAgICAgICByZXR1cm4gbGF5ZXIucmVsZWFzZSgpOworICAgICAgICByZXR1cm4gV1RGTW92
ZShsYXllcik7CiAgICAgfQogCiAgICAgbGF5ZXIgPSBjcmVhdGVDb21wYXRpYmxlTGF5ZXIobGF5
ZXJUeXBlLCBjbGllbnQpOwogICAgIGxheWVyLT5zZXRCb3VuZHMoRmxvYXRSZWN0KEZsb2F0UG9p
bnQoKSwgc2l6ZSkpOwogICAgIAotICAgIHJldHVybiBsYXllci5yZWxlYXNlKCk7CisgICAgcmV0
dXJuIFdURk1vdmUobGF5ZXIpOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6bW92ZVRvTGF5
ZXJQb29sKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyRGF0YUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyRGF0YUNHLmNwcAppbmRleCBmYTYzNGM4NmM0MzQ1YmUxYmU3ZWI1NjU3
MDhkNjQ3YWEwYTlkYzI0Li41ZjUwZjljYzAxMjVjY2ZhYzZiZjYyN2Y1M2Q2MGM1ZDEyYTUxZTFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckRhdGFDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJEYXRhQ0cuY3BwCkBAIC05Niw3ICs5Niw3IEBAIFJlZlB0cjxVaW50OENsYW1w
ZWRBcnJheT4gSW1hZ2VCdWZmZXJEYXRhOjpnZXREYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNv
bnN0IEluCiAgICAgaWYgKGFyZWEuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gcmVzdWx0ID0gVWludDhDbGFt
cGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoYXJlYS51bnNhZmVHZXQoKSk7CisgICAgYXV0
byByZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZChhcmVhLnVu
c2FmZUdldCgpKTsKICAgICB1bnNpZ25lZCBjaGFyKiByZXN1bHREYXRhID0gcmVzdWx0LT5kYXRh
KCk7CiAgICAgaWYgKCFyZXN1bHREYXRhKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiSW1hZ2VC
dWZmZXJEYXRhOiBVbmFibGUgdG8gY3JlYXRlIGJ1ZmZlci4gUmVxdWVzdGVkIHNpemUgd2FzICVk
IHggJWQgPSAldVxuIiwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpLCBhcmVhLnVuc2FmZUdl
dCgpKTsKQEAgLTEzOSw3ICsxMzksNyBAQCBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdl
QnVmZmVyRGF0YTo6Z2V0RGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbgogICAgIENo
ZWNrZWQ8aW50PiBoZWlnaHQgPSBlbmR5IC0gb3JpZ2lueTsKICAgICAKICAgICBpZiAod2lkdGgu
dW5zYWZlR2V0KCkgPD0gMCB8fCBoZWlnaHQudW5zYWZlR2V0KCkgPD0gMCkKLSAgICAgICAgcmV0
dXJuIHJlc3VsdC5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgCiAgICAg
dW5zaWduZWQgZGVzdEJ5dGVzUGVyUm93ID0gNCAqIHJlY3Qud2lkdGgoKTsKICAgICB1bnNpZ25l
ZCBjaGFyKiBkZXN0Um93cyA9IHJlc3VsdERhdGEgKyBkZXN0eSAqIGRlc3RCeXRlc1BlclJvdyAr
IGRlc3R4ICogNDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAppbmRleCBjYmU1MTI4ZjllNjI2NzJiYTFjZmUy
N2IwNWNlMzI2MzA0ZGEyNjdkLi41ZTQ3YTQwNjhkODJjM2M1MGU4MzU5ZGUwNjc2ZDM4ODdlMDhm
MDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlckVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBAIC0yMzcsOSArMjM3LDkgQEAgUGFzc1JlZlB0cjxV
aW50OENsYW1wZWRBcnJheT4gRmlsdGVyRWZmZWN0Ojphc1VubXVsdGlwbGllZEltYWdlKGNvbnN0
IEludFJlY3QmIHIKICAgICBJbnRTaXplIHNjYWxlZFNpemUocmVjdC5zaXplKCkpOwogICAgIEFT
U0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHNjYWxlZFNpemUpKTsKICAgICBz
Y2FsZWRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRlclNjYWxlKCkpOwotICAgIFJlZlB0cjxVaW50
OENsYW1wZWRBcnJheT4gaW1hZ2VEYXRhID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5p
dGlhbGl6ZWQoc2NhbGVkU2l6ZS53aWR0aCgpICogc2NhbGVkU2l6ZS5oZWlnaHQoKSAqIDQpOwor
ICAgIGF1dG8gaW1hZ2VEYXRhID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6
ZWQoc2NhbGVkU2l6ZS53aWR0aCgpICogc2NhbGVkU2l6ZS5oZWlnaHQoKSAqIDQpOwogICAgIGNv
cHlVbm11bHRpcGxpZWRJbWFnZShpbWFnZURhdGEuZ2V0KCksIHJlY3QpOwotICAgIHJldHVybiBp
bWFnZURhdGEucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKGltYWdlRGF0YSk7CiB9CiAK
IFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6YXNQcmVtdWx0aXBs
aWVkSW1hZ2UoY29uc3QgSW50UmVjdCYgcmVjdCkKQEAgLTI0Nyw5ICsyNDcsOSBAQCBQYXNzUmVm
UHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBGaWx0ZXJFZmZlY3Q6OmFzUHJlbXVsdGlwbGllZEltYWdl
KGNvbnN0IEludFJlY3QmCiAgICAgSW50U2l6ZSBzY2FsZWRTaXplKHJlY3Quc2l6ZSgpKTsKICAg
ICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhzY2FsZWRTaXplKSk7CiAg
ICAgc2NhbGVkU2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKLSAgICBSZWZQdHI8
VWludDhDbGFtcGVkQXJyYXk+IGltYWdlRGF0YSA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVV
bmluaXRpYWxpemVkKHNjYWxlZFNpemUud2lkdGgoKSAqIHNjYWxlZFNpemUuaGVpZ2h0KCkgKiA0
KTsKKyAgICBhdXRvIGltYWdlRGF0YSA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRp
YWxpemVkKHNjYWxlZFNpemUud2lkdGgoKSAqIHNjYWxlZFNpemUuaGVpZ2h0KCkgKiA0KTsKICAg
ICBjb3B5UHJlbXVsdGlwbGllZEltYWdlKGltYWdlRGF0YS5nZXQoKSwgcmVjdCk7Ci0gICAgcmV0
dXJuIGltYWdlRGF0YS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1vdmUoaW1hZ2VEYXRhKTsK
IH0KIAogaW5saW5lIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5SW1hZ2VCeXRlcyhVaW50OENsYW1w
ZWRBcnJheSogc291cmNlLCBVaW50OENsYW1wZWRBcnJheSogZGVzdGluYXRpb24sIGNvbnN0IElu
dFJlY3QmIHJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvSW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
SW1hZ2VNYWMubW0KaW5kZXggZmEwMTFhYTg4MTYzMDMwMDA5NDQ5OGViYzBmZmNhOWZiOWMzMDM0
Yi4uMDFlYjZkZDMwMDQzYTIyNTI5MTc2ZmQ5MTIxMTdkYzU3NzZjMTdiYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQpAQCAtNjgsOSAr
NjgsOSBAQCBQYXNzUmVmUHRyPEltYWdlPiBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29u
c3QgY2hhciAqbmFtZSkKICAgICBOU1N0cmluZyAqaW1hZ2VQYXRoID0gW2J1bmRsZSBwYXRoRm9y
UmVzb3VyY2U6W05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOm5hbWVdIG9mVHlwZTpAInBu
ZyJdOwogICAgIE5TRGF0YSAqbmFtZWRJbWFnZURhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVu
dHNPZkZpbGU6aW1hZ2VQYXRoXTsKICAgICBpZiAobmFtZWRJbWFnZURhdGEpIHsKLSAgICAgICAg
UmVmUHRyPEltYWdlPiBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKKyAgICAgICAgYXV0
byBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAgICAgICAgaW1hZ2UtPnNldERhdGEo
U2hhcmVkQnVmZmVyOjp3cmFwTlNEYXRhKG5hbWVkSW1hZ2VEYXRhKSwgdHJ1ZSk7Ci0gICAgICAg
IHJldHVybiBpbWFnZS5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBXVEZNb3ZlKGltYWdlKTsK
ICAgICB9CiAKICAgICAvLyBXZSBoYXZlIHJlcG9ydHMgaW5kaWNhdGluZyByZXNvdXJjZSBsb2Fk
cyBhcmUgZmFpbGluZywgYnV0IHdlIGRvbid0IHlldCBrbm93IHRoZSByb290IGNhdXNlKHMpLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKaW5kZXggMDQ4
OTUzNmQzYmQwY2JiZjdiMmJkYjA3YTZiYzJkYjg1Yjk0OTllNy4uYTQ4NTkyYTgxMGFmMDc0OWY0
ZmU5ODEwMWY3ZDFiMTZhYzZhOTI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
M0RPcGVuR0xDb21tb24uY3BwCkBAIC0xMzIsOCArMTMyLDEwIEBAIHN0YXRpYyB1aW50NjRfdCBu
YW1lSGFzaEZvclNoYWRlcihjb25zdCBjaGFyKiBuYW1lLCBzaXplX3QgbGVuZ3RoKQogCiBQYXNz
UmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlRm9yQ3Vy
cmVudEdMQ29udGV4dCgpCiB7Ci0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0
ID0gYWRvcHRSZWYobmV3IEdyYXBoaWNzQ29udGV4dDNEKEF0dHJpYnV0ZXMoKSwgMCwgR3JhcGhp
Y3NDb250ZXh0M0Q6OlJlbmRlclRvQ3VycmVudEdMQ29udGV4dCkpOwotICAgIHJldHVybiBjb250
ZXh0LT5tX3ByaXZhdGUgPyBjb250ZXh0LnJlbGVhc2UoKSA6IDA7CisgICAgYXV0byBjb250ZXh0
ID0gYWRvcHRSZWYoKm5ldyBHcmFwaGljc0NvbnRleHQzRChBdHRyaWJ1dGVzKCksIDAsIEdyYXBo
aWNzQ29udGV4dDNEOjpSZW5kZXJUb0N1cnJlbnRHTENvbnRleHQpKTsKKyAgICBpZiAoIWNvbnRl
eHQtPm1fcHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIFdURk1v
dmUoY29udGV4dCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZhbGlkYXRlRGVwdGhT
dGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikKQEAgLTIwNSw3
ICsyMDcsNyBAQCBQYXNzUmVmUHRyPEltYWdlRGF0YT4gR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50
UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkKICAgICBpZiAobV9hdHRycy5wcmVtdWx0aXBs
aWVkQWxwaGEpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPEltYWdlRGF0YT4gaW1h
Z2VEYXRhID0gSW1hZ2VEYXRhOjpjcmVhdGUoSW50U2l6ZShtX2N1cnJlbnRXaWR0aCwgbV9jdXJy
ZW50SGVpZ2h0KSk7CisgICAgYXV0byBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShJbnRT
aXplKG1fY3VycmVudFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQpKTsKICAgICB1bnNpZ25lZCBjaGFy
KiBwaXhlbHMgPSBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpOwogICAgIGludCB0b3RhbEJ5dGVz
ID0gNCAqIG1fY3VycmVudFdpZHRoICogbV9jdXJyZW50SGVpZ2h0OwogCkBAIC0yMTUsNyArMjE3
LDcgQEAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFJlbmRl
cmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0b3RhbEJ5
dGVzOyBpICs9IDQpCiAgICAgICAgIHN0ZDo6c3dhcChwaXhlbHNbaV0sIHBpeGVsc1tpICsgMl0p
OwogCi0gICAgcmV0dXJuIGltYWdlRGF0YS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1vdmUo
aW1hZ2VEYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cHJlcGFyZVRleHR1cmUo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwCmluZGV4IGRl
YTdhN2MyOTc0ZTNkOGE5ZTBkYjgxNzdkOTZiOWU0ZTJmMThjMGQuLjlhMWIyZDY5NmM3Y2YwOWI5
NTdmNGNmMjk4NGEyMGUzODFjODY3MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlck1hYy5jcHAKQEAgLTExNiwxMCArMTE2LDEwIEBAIHZvaWQgUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlck1hYzo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVh
bUNyZWF0CiAgICAgICAgIH0KICAgICAgICAgLy8gRklYTUU6IENvbnNpZGVyIHRoZSBjb25zdHJh
aW50cyB3aGVuIGNob29zaW5nIGFtb25nIG11bHRpcGxlIGRldmljZXMuIEZvciBub3cganVzdCBz
ZWxlY3QgdGhlIGZpcnN0IGF2YWlsYWJsZQogICAgICAgICAvLyBkZXZpY2Ugb2YgdGhlIGFwcHJv
cHJpYXRlIHR5cGUuCi0gICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBhdWRpb1Nv
dXJjZSA9IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpLmJlc3RTb3VyY2VzRm9y
VHlwZUFuZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBhdWRpb0NvbnN0
cmFpbnRzLmdldCgpKS5hdCgwKTsKKyAgICAgICAgYXV0byBhdWRpb1NvdXJjZSA9IEFWQ2FwdHVy
ZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpLmJlc3RTb3VyY2VzRm9yVHlwZUFuZENvbnN0cmFp
bnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBhdWRpb0NvbnN0cmFpbnRzLmdldCgpKS5h
dCgwKTsKICAgICAgICAgQVNTRVJUKGF1ZGlvU291cmNlKTsKICAgICAgICAgCi0gICAgICAgIGF1
ZGlvU291cmNlcy5hcHBlbmQoYXVkaW9Tb3VyY2UucmVsZWFzZSgpKTsKKyAgICAgICAgYXVkaW9T
b3VyY2VzLmFwcGVuZChXVEZNb3ZlKGF1ZGlvU291cmNlKSk7CiAgICAgfQogICAgIAogICAgIGlm
ICh2aWRlb0NvbnN0cmFpbnRzKSB7CkBAIC0xMzEsMTAgKzEzMSwxMCBAQCB2b2lkIFJlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXJNYWM6OmNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFT
dHJlYW1DcmVhdAogICAgICAgICB9CiAgICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciB0aGUgY29u
c3RyYWludHMgd2hlbiBjaG9vc2luZyBhbW9uZyBtdWx0aXBsZSBkZXZpY2VzLiBGb3Igbm93IGp1
c3Qgc2VsZWN0IHRoZSBmaXJzdCBhdmFpbGFibGUKICAgICAgICAgLy8gZGV2aWNlIG9mIHRoZSBh
cHByb3ByaWF0ZSB0eXBlLgotICAgICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gdmlk
ZW9Tb3VyY2UgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5iZXN0U291cmNl
c0ZvclR5cGVBbmRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywgdmlkZW9D
b25zdHJhaW50cy5nZXQoKSkuYXQoMCk7CisgICAgICAgIGF1dG8gdmlkZW9Tb3VyY2UgPSBBVkNh
cHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5iZXN0U291cmNlc0ZvclR5cGVBbmRDb25z
dHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywgdmlkZW9Db25zdHJhaW50cy5nZXQo
KSkuYXQoMCk7CiAgICAgICAgIEFTU0VSVCh2aWRlb1NvdXJjZSk7CiAgICAgICAgIAotICAgICAg
ICB2aWRlb1NvdXJjZXMuYXBwZW5kKHZpZGVvU291cmNlLnJlbGVhc2UoKSk7CisgICAgICAgIHZp
ZGVvU291cmNlcy5hcHBlbmQoV1RGTW92ZSh2aWRlb1NvdXJjZSkpOwogICAgIH0KICAgICAKICAg
ICBjbGllbnQtPmRpZENyZWF0ZVN0cmVhbShNZWRpYVN0cmVhbVByaXZhdGU6OmNyZWF0ZShhdWRp
b1NvdXJjZXMsIHZpZGVvU291cmNlcykpOwpAQCAtMTQ3LDE0ICsxNDcsMTQgQEAgdm9pZCBSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjpjcmVhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbUNy
ZWF0aW9uQ2xpZW50KgogICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+IHZp
ZGVvU291cmNlczsKIAogICAgIGlmICghYXVkaW9EZXZpY2VJRC5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IGF1ZGlvU291cmNlID0gQVZDYXB0dXJlRGV2
aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuc291cmNlV2l0aFVJRChhdWRpb0RldmljZUlELCBSZWFs
dGltZU1lZGlhU291cmNlOjpBdWRpbywgbnVsbHB0cik7CisgICAgICAgIGF1dG8gYXVkaW9Tb3Vy
Y2UgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5zb3VyY2VXaXRoVUlEKGF1
ZGlvRGV2aWNlSUQsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBudWxscHRyKTsKICAgICAg
ICAgaWYgKGF1ZGlvU291cmNlKQotICAgICAgICAgICAgYXVkaW9Tb3VyY2VzLmFwcGVuZChhdWRp
b1NvdXJjZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgYXVkaW9Tb3VyY2VzLmFwcGVuZChXVEZN
b3ZlKGF1ZGlvU291cmNlKSk7CiAgICAgfQogICAgIGlmICghdmlkZW9EZXZpY2VJRC5pc0VtcHR5
KCkpIHsKLSAgICAgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IHZpZGVvU291cmNlID0g
QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuc291cmNlV2l0aFVJRCh2aWRlb0Rl
dmljZUlELCBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywgbnVsbHB0cik7CisgICAgICAgIGF1
dG8gdmlkZW9Tb3VyY2UgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5zb3Vy
Y2VXaXRoVUlEKHZpZGVvRGV2aWNlSUQsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvLCBudWxs
cHRyKTsKICAgICAgICAgaWYgKHZpZGVvU291cmNlKQotICAgICAgICAgICAgdmlkZW9Tb3VyY2Vz
LmFwcGVuZCh2aWRlb1NvdXJjZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgdmlkZW9Tb3VyY2Vz
LmFwcGVuZChXVEZNb3ZlKHZpZGVvU291cmNlKSk7CiAgICAgfQogCiAgICAgY2xpZW50LT5kaWRD
cmVhdGVTdHJlYW0oTWVkaWFTdHJlYW1Qcml2YXRlOjpjcmVhdGUoYXVkaW9Tb3VyY2VzLCB2aWRl
b1NvdXJjZXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKaW5kZXggYWFlODA4MzkxMTVm
ZjliYWZiOTQ4YzgyNTZmMzgzNGI0OGI4NmVlZS4uOGNjNmYwZjMzNTJjMjMzMzhiNWUyOTA1MTJj
ZWU0ZWZlZmM0YWI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
b2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKQEAgLTgxLDggKzgx
LDggQEAgdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6dmFsaWRhdGVSZXF1ZXN0
Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGkKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBhdWRpb1NvdXJjZSA9
IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGUoKTsKLSAgICAgICAgYXVkaW9Tb3VyY2Vz
LmFwcGVuZChhdWRpb1NvdXJjZS5yZWxlYXNlKCkpOworICAgICAgICBhdXRvIGF1ZGlvU291cmNl
ID0gTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZSgpOworICAgICAgICBhdWRpb1NvdXJj
ZXMuYXBwZW5kKFdURk1vdmUoYXVkaW9Tb3VyY2UpKTsKICAgICB9CiAKICAgICBpZiAodmlkZW9D
b25zdHJhaW50cykgewpAQCAtOTIsOCArOTIsOCBAQCB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFJlYWx0aW1l
TWVkaWFTb3VyY2U+IHZpZGVvU291cmNlID0gTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmNyZWF0
ZSgpOwotICAgICAgICB2aWRlb1NvdXJjZXMuYXBwZW5kKHZpZGVvU291cmNlLnJlbGVhc2UoKSk7
CisgICAgICAgIGF1dG8gdmlkZW9Tb3VyY2UgPSBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3Jl
YXRlKCk7CisgICAgICAgIHZpZGVvU291cmNlcy5hcHBlbmQoV1RGTW92ZSh2aWRlb1NvdXJjZSkp
OwogICAgIH0KIAogICAgIGNsaWVudC0+Y29uc3RyYWludHNWYWxpZGF0ZWQoYXVkaW9Tb3VyY2Vz
LCB2aWRlb1NvdXJjZXMpOwpAQCAtMTE1LDggKzExNSw4IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXI6OmNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1D
cmVhCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8UmVh
bHRpbWVNZWRpYVNvdXJjZT4gYXVkaW9Tb3VyY2UgPSBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6
Y3JlYXRlKCk7Ci0gICAgICAgIGF1ZGlvU291cmNlcy5hcHBlbmQoYXVkaW9Tb3VyY2UucmVsZWFz
ZSgpKTsKKyAgICAgICAgYXV0byBhdWRpb1NvdXJjZSA9IE1vY2tSZWFsdGltZUF1ZGlvU291cmNl
OjpjcmVhdGUoKTsKKyAgICAgICAgYXVkaW9Tb3VyY2VzLmFwcGVuZChXVEZNb3ZlKGF1ZGlvU291
cmNlKSk7CiAgICAgfQogCiAgICAgaWYgKHZpZGVvQ29uc3RyYWludHMpIHsKQEAgLTEyNiw4ICsx
MjYsOCBAQCB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpjcmVhdGVNZWRpYVN0
cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IHZpZGVvU291cmNl
ID0gTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmNyZWF0ZSgpOwotICAgICAgICB2aWRlb1NvdXJj
ZXMuYXBwZW5kKHZpZGVvU291cmNlLnJlbGVhc2UoKSk7CisgICAgICAgIGF1dG8gdmlkZW9Tb3Vy
Y2UgPSBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRlKCk7CisgICAgICAgIHZpZGVvU291
cmNlcy5hcHBlbmQoV1RGTW92ZSh2aWRlb1NvdXJjZSkpOwogICAgIH0KICAgICAKICAgICBjbGll
bnQtPmRpZENyZWF0ZVN0cmVhbShNZWRpYVN0cmVhbVByaXZhdGU6OmNyZWF0ZShhdWRpb1NvdXJj
ZXMsIHZpZGVvU291cmNlcykpOwpAQCAtMTQwLDEyICsxNDAsMTIgQEAgdm9pZCBNb2NrUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlcjo6Y3JlYXRlTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1DcmVhdGlv
bkNsaWVudCoKICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiB2aWRlb1Nv
dXJjZXM7CiAKICAgICBpZiAoIWF1ZGlvRGV2aWNlSUQuaXNFbXB0eSgpICYmIGF1ZGlvRGV2aWNl
SUQgPT0gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6Om1vY2tBdWRpb1NvdXJjZVBlcnNpc3RlbnRJ
RCgpKSB7Ci0gICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBhdWRpb1NvdXJjZSA9
IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGUoKTsKLSAgICAgICAgYXVkaW9Tb3VyY2Vz
LmFwcGVuZChhdWRpb1NvdXJjZS5yZWxlYXNlKCkpOworICAgICAgICBhdXRvIGF1ZGlvU291cmNl
ID0gTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZSgpOworICAgICAgICBhdWRpb1NvdXJj
ZXMuYXBwZW5kKFdURk1vdmUoYXVkaW9Tb3VyY2UpKTsKICAgICB9CiAgICAgaWYgKCF2aWRlb0Rl
dmljZUlELmlzRW1wdHkoKSAmJiB2aWRlb0RldmljZUlEID09IE1vY2tSZWFsdGltZU1lZGlhU291
cmNlOjptb2NrVmlkZW9Tb3VyY2VQZXJzaXN0ZW50SUQoKSkgewotICAgICAgICBSZWZQdHI8UmVh
bHRpbWVNZWRpYVNvdXJjZT4gdmlkZW9Tb3VyY2UgPSBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6
Y3JlYXRlKCk7Ci0gICAgICAgIHZpZGVvU291cmNlcy5hcHBlbmQodmlkZW9Tb3VyY2UucmVsZWFz
ZSgpKTsKKyAgICAgICAgYXV0byB2aWRlb1NvdXJjZSA9IE1vY2tSZWFsdGltZVZpZGVvU291cmNl
OjpjcmVhdGUoKTsKKyAgICAgICAgdmlkZW9Tb3VyY2VzLmFwcGVuZChXVEZNb3ZlKHZpZGVvU291
cmNlKSk7CiAgICAgfQogCiAgICAgY2xpZW50LT5kaWRDcmVhdGVTdHJlYW0oTWVkaWFTdHJlYW1Q
cml2YXRlOjpjcmVhdGUoYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCmluZGV4
IDcyMGVmYzg3MWJmZDFlNGI0NTczNTA3ODdlNzNmODM2MzdiYTkxNTMuLjY4MDYwMzU0ZTdlNTBl
YmQ4NjdiMWQwODA5ZDNkMjdjM2U1MTRiYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBA
IHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBW
ZWN0b3I8QmxvYlBhcnQ+IGJsb2JQYXJ0CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICByZWdpc3RlckJsb2JSZXNvdXJjZUhhbmRsZUNvbnN0cnVjdG9yKCk7CiAKLSAgICBSZWZQdHI8
QmxvYkRhdGE+IGJsb2JEYXRhID0gQmxvYkRhdGE6OmNyZWF0ZShjb250ZW50VHlwZSk7CisgICAg
YXV0byBibG9iRGF0YSA9IEJsb2JEYXRhOjpjcmVhdGUoY29udGVudFR5cGUpOwogCiAgICAgLy8g
VGhlIGJsb2IgZGF0YSBpcyBzdG9yZWQgaW4gdGhlICJjYW5vbmljYWwiIHdheS4gVGhhdCBpcywg
aXQgb25seSBjb250YWlucyBhIGxpc3Qgb2YgRGF0YSBhbmQgRmlsZSBpdGVtcy4KICAgICAvLyAx
KSBUaGUgRGF0YSBpdGVtIGlzIGRlbm90ZWQgYnkgdGhlIHJhdyBkYXRhIGFuZCB0aGUgcmFuZ2Uu
CkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JV
UkwoY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4gYmxvYlBhcnQKICAgICAgICAgfQog
ICAgIH0KIAotICAgIG1fYmxvYnMuc2V0KHVybC5zdHJpbmcoKSwgYmxvYkRhdGEucmVsZWFzZSgp
KTsKKyAgICBtX2Jsb2JzLnNldCh1cmwuc3RyaW5nKCksIFdURk1vdmUoYmxvYkRhdGEpKTsKIH0K
IAogdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmws
IGNvbnN0IFVSTCYgc3JjVVJMKQpAQCAtMjA4LDExICsyMDgsMTEgQEAgdm9pZCBCbG9iUmVnaXN0
cnlJbXBsOjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBVUkwmIHVybCwgY29uc3QgVVJM
JiBzcmNVUkwKICAgICAgICAgZW5kID0gb3JpZ2luYWxTaXplOwogCiAgICAgdW5zaWduZWQgbG9u
ZyBsb25nIG5ld0xlbmd0aCA9IGVuZCAtIHN0YXJ0OwotICAgIFJlZlB0cjxCbG9iRGF0YT4gbmV3
RGF0YSA9IEJsb2JEYXRhOjpjcmVhdGUob3JpZ2luYWxEYXRhLT5jb250ZW50VHlwZSgpKTsKKyAg
ICBhdXRvIG5ld0RhdGEgPSBCbG9iRGF0YTo6Y3JlYXRlKG9yaWdpbmFsRGF0YS0+Y29udGVudFR5
cGUoKSk7CiAKLSAgICBhcHBlbmRTdG9yYWdlSXRlbXMobmV3RGF0YS5nZXQoKSwgb3JpZ2luYWxE
YXRhLT5pdGVtcygpLCBzdGFydCwgbmV3TGVuZ3RoKTsKKyAgICBhcHBlbmRTdG9yYWdlSXRlbXMo
bmV3RGF0YS5wdHIoKSwgb3JpZ2luYWxEYXRhLT5pdGVtcygpLCBzdGFydCwgbmV3TGVuZ3RoKTsK
IAotICAgIG1fYmxvYnMuc2V0KHVybC5zdHJpbmcoKSwgbmV3RGF0YS5yZWxlYXNlKCkpOworICAg
IG1fYmxvYnMuc2V0KHVybC5zdHJpbmcoKSwgV1RGTW92ZShuZXdEYXRhKSk7CiB9CiAKIHZvaWQg
QmxvYlJlZ2lzdHJ5SW1wbDo6dW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCmlu
ZGV4IGJjZTZiYTk3MzFiZjE5NDAxMTc2Y2NiZjZiZGQ3MGZkN2VlZjUyMmYuLmI2YzY3YjdjZGUy
NmE3NTNjOGFiMmUxY2MyMDE0OGJjYzc4ZmIwZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCkBAIC05MywxMyArOTMsMTMgQEAg
UmVmUHRyPFJlc291cmNlSGFuZGxlPiBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlKE5ldHdvcmtpbmdD
b250ZXh0KiBjb250ZXh0LCBjb25zdAogICAgIGlmIChwcm90b2NvbE1hcEl0ZW0gIT0gYnVpbHRp
blJlc291cmNlSGFuZGxlQ29uc3RydWN0b3JNYXAoKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHBy
b3RvY29sTWFwSXRlbS0+dmFsdWUocmVxdWVzdCwgY2xpZW50KTsKIAotICAgIFJlZlB0cjxSZXNv
dXJjZUhhbmRsZT4gbmV3SGFuZGxlKGFkb3B0UmVmKG5ldyBSZXNvdXJjZUhhbmRsZShjb250ZXh0
LCByZXF1ZXN0LCBjbGllbnQsIGRlZmVyc0xvYWRpbmcsIHNob3VsZENvbnRlbnRTbmlmZikpKTsK
KyAgICBhdXRvIG5ld0hhbmRsZSA9IGFkb3B0UmVmKCpuZXcgUmVzb3VyY2VIYW5kbGUoY29udGV4
dCwgcmVxdWVzdCwgY2xpZW50LCBkZWZlcnNMb2FkaW5nLCBzaG91bGRDb250ZW50U25pZmYpKTsK
IAogICAgIGlmIChuZXdIYW5kbGUtPmQtPm1fc2NoZWR1bGVkRmFpbHVyZVR5cGUgIT0gTm9GYWls
dXJlKQotICAgICAgICByZXR1cm4gbmV3SGFuZGxlLnJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJu
IFdURk1vdmUobmV3SGFuZGxlKTsKIAogICAgIGlmIChuZXdIYW5kbGUtPnN0YXJ0KCkpCi0gICAg
ICAgIHJldHVybiBuZXdIYW5kbGUucmVsZWFzZSgpOworICAgICAgICByZXR1cm4gV1RGTW92ZShu
ZXdIYW5kbGUpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcApp
bmRleCA0ODYxMzNjYzg5Yzk5ZDZiMjQwNjUzMzFhNzJjNWQ5YTRkMDhkNmQ1Li40MGViZjRkNjkw
Njc1MjU1YWEzNjk0OTZhMzJmNDljYmU3NTkzNjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKQEAg
LTIwMCw3ICsyMDAsNyBAQCBzdGF0aWMgdm9pZCogZm9ybUNyZWF0ZShDRlJlYWRTdHJlYW1SZWYg
c3RyZWFtLCB2b2lkKiBjb250ZXh0KQogICAgIEZvcm1DcmVhdGlvbkNvbnRleHQqIGZvcm1Db250
ZXh0ID0gc3RhdGljX2Nhc3Q8Rm9ybUNyZWF0aW9uQ29udGV4dCo+KGNvbnRleHQpOwogCiAgICAg
Rm9ybVN0cmVhbUZpZWxkcyogbmV3SW5mbyA9IG5ldyBGb3JtU3RyZWFtRmllbGRzOwotICAgIG5l
d0luZm8tPmZvcm1EYXRhID0gZm9ybUNvbnRleHQtPmZvcm1EYXRhLnJlbGVhc2UoKTsKKyAgICBu
ZXdJbmZvLT5mb3JtRGF0YSA9IFdURk1vdmUoZm9ybUNvbnRleHQtPmZvcm1EYXRhKTsKICAgICBu
ZXdJbmZvLT5jdXJyZW50U3RyZWFtID0gMDsKICAgICBuZXdJbmZvLT5jdXJyZW50U3RyZWFtUmFu
Z2VMZW5ndGggPSBCbG9iRGF0YUl0ZW06OnRvRW5kT2ZGaWxlOwogICAgIG5ld0luZm8tPmZvcm1T
dHJlYW0gPSBzdHJlYW07IC8vIERvbid0IHJldGFpbi4gVGhhdCB3b3VsZCBjcmVhdGUgYSByZWZl
cmVuY2UgY3ljbGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0Jp
ZGlDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaUNvbnRleHQu
Y3BwCmluZGV4IGU3ZTZlY2ZlY2VjMGFiYjhlMTJiY2M0ZWIyOGY2NGQ1ZmFhNDZmMzYuLjk3N2Ri
ZmQ3OTdkNTc4NTdmNDdlNDgxMTZiMTNkNDFjYWEzODg2ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaUNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvQmlkaUNvbnRleHQuY3BwCkBAIC05Miw3ICs5Miw3IEBAIFBhc3NSZWZQ
dHI8QmlkaUNvbnRleHQ+IEJpZGlDb250ZXh0Ojpjb3B5U3RhY2tSZW1vdmluZ1VuaWNvZGVFbWJl
ZGRpbmdDb250ZXh0cygpCiAgICAgZm9yIChpbnQgaSA9IGNvbnRleHRzLnNpemUoKSAtIDE7IGkg
PiAwOyAtLWkpCiAgICAgICAgIHRvcENvbnRleHQgPSBjb3B5Q29udGV4dEFuZFJlYmFzZWxpbmVM
ZXZlbChjb250ZXh0c1tpIC0gMV0sIHRvcENvbnRleHQuZ2V0KCkpOwogCi0gICAgcmV0dXJuIHRv
cENvbnRleHQucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKHRvcENvbnRleHQpOwogfQog
CiBib29sIG9wZXJhdG9yPT0oY29uc3QgQmlkaUNvbnRleHQmIGMxLCBjb25zdCBCaWRpQ29udGV4
dCYgYzIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0
UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRl
cmVyLmNwcAppbmRleCBmNDdiM2JhNjE2MzdjYzI1NGVhYWYwOTNmMjc0MWNlNGExZDExYjliLi5i
YTUxMWNjYTZhOTgzYjBiMTE0YTEyZjk1YjQxNjJjOTU5MmFhZTY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKQEAgLTI4OCw3ICsy
ODgsNyBAQCBib29sIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZChSZW5kZXJFbGVtZW50KiBy
ZW5kZXJlciwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucwogICAgICAgICAgICAgICAgIGVmZmVjdC0+
aW5wdXRFZmZlY3RzKCkuYXBwZW5kKHByZXZpb3VzRWZmZWN0KTsKICAgICAgICAgICAgICAgICBt
X2VmZmVjdHMuYXBwZW5kKGVmZmVjdCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBwcmV2
aW91c0VmZmVjdCA9IGVmZmVjdC5yZWxlYXNlKCk7CisgICAgICAgICAgICBwcmV2aW91c0VmZmVj
dCA9IFdURk1vdmUoZWZmZWN0KTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggNmE2ZjExNjQ5OGQxODk1MzYyYTA3OGE4Zjli
MDUxNmQxZTMxMGZiMC4uOTI5MDE0Y2U5YmZkNjMyZjU2ZTE3ZGI0NDU2MDQ5M2ZhMzRjMWU1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0zMTE2LDcgKzMx
MTYsNyBAQCBQYXNzUmVmUHRyPFNjcm9sbGJhcj4gUmVuZGVyTGF5ZXI6OmNyZWF0ZVNjcm9sbGJh
cihTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdAogICAgICAgICB9CiAgICAgfQogICAgIHJl
bmRlcmVyKCkudmlldygpLmZyYW1lVmlldygpLmFkZENoaWxkKHdpZGdldC5nZXQoKSk7Ci0gICAg
cmV0dXJuIHdpZGdldC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1vdmUod2lkZ2V0KTsKIH0K
IAogdm9pZCBSZW5kZXJMYXllcjo6ZGVzdHJveVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlv
biBvcmllbnRhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNw
cAppbmRleCAyMzdjNmVhMjcyNDQxZGNkZjAyZTA5OGY2OTNjOTYxYjgwMGUzMDBhLi41ZGFhNmY5
NDM5ZWMzYzI1NmVhNzA5MzQwZmU1YTYzODQ5Mjk5ZTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCkBAIC05MTEsNyArOTExLDcgQEAgUGFzc1JlZlB0cjxT
Y3JvbGxiYXI+IFJlbmRlckxpc3RCb3g6OmNyZWF0ZVNjcm9sbGJhcigpCiAgICAgICAgIH0KICAg
ICB9CiAgICAgdmlldygpLmZyYW1lVmlldygpLmFkZENoaWxkKHdpZGdldC5nZXQoKSk7Ci0gICAg
cmV0dXJuIHdpZGdldC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1vdmUod2lkZ2V0KTsKIH0K
IAogdm9pZCBSZW5kZXJMaXN0Qm94OjpkZXN0cm95U2Nyb2xsYmFyKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCmluZGV4IDRkYjMzYTAwODFhMzA1MTU5Nzhh
NGRmOTJhZWMxNzVhNGYwMTNkYTkuLmI4MDA5NDljZDc0NzAyZGZkMTE5NGM1MWI1NDZkZTkxYmNk
MmYyZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcApA
QCAtNTc4LDcgKzU3OCw3IEBAIFBhc3NSZWZQdHI8U2Nyb2xsYmFyPiBSZW5kZXJNZW51TGlzdDo6
Y3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlCiAgICAgICAgIHdpZGdl
dCA9IFJlbmRlclNjcm9sbGJhcjo6Y3JlYXRlQ3VzdG9tU2Nyb2xsYmFyKHNjcm9sbGFibGVBcmVh
LCBvcmllbnRhdGlvbiwgJnNlbGVjdEVsZW1lbnQoKSk7CiAgICAgZWxzZQogICAgICAgICB3aWRn
ZXQgPSBTY3JvbGxiYXI6OmNyZWF0ZU5hdGl2ZVNjcm9sbGJhcihzY3JvbGxhYmxlQXJlYSwgb3Jp
ZW50YXRpb24sIGNvbnRyb2xTaXplKTsKLSAgICByZXR1cm4gd2lkZ2V0LnJlbGVhc2UoKTsKKyAg
ICByZXR1cm4gV1RGTW92ZSh3aWRnZXQpOwogfQogCiBpbnQgUmVuZGVyTWVudUxpc3Q6OmNsaWVu
dEluc2V0TGVmdCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2VhcmNoRmllbGQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNl
YXJjaEZpZWxkLmNwcAppbmRleCAzZjVkMDNkYWNmMzA5NzE5MDQwNmUzMGE4YmE4OWU2MDkwZWRm
NjMyLi5mNWM2MjU5YWMwZTlkZTljMGZhYjJkYzNhZTc3YjU0ZGE1ZWMzZDczIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAKQEAgLTM1NCw3ICsz
NTQsNyBAQCBQYXNzUmVmUHRyPFNjcm9sbGJhcj4gUmVuZGVyU2VhcmNoRmllbGQ6OmNyZWF0ZVNj
cm9sbGJhcihTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYQogICAgICAgICB3aWRnZXQgPSBSZW5kZXJT
Y3JvbGxiYXI6OmNyZWF0ZUN1c3RvbVNjcm9sbGJhcihzY3JvbGxhYmxlQXJlYSwgb3JpZW50YXRp
b24sICZpbnB1dEVsZW1lbnQoKSk7CiAgICAgZWxzZQogICAgICAgICB3aWRnZXQgPSBTY3JvbGxi
YXI6OmNyZWF0ZU5hdGl2ZVNjcm9sbGJhcihzY3JvbGxhYmxlQXJlYSwgb3JpZW50YXRpb24sIGNv
bnRyb2xTaXplKTsKLSAgICByZXR1cm4gd2lkZ2V0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RG
TW92ZSh3aWRnZXQpOwogfQogCiBMYXlvdXRVbml0IFJlbmRlclNlYXJjaEZpZWxkOjpjb21wdXRl
TG9naWNhbEhlaWdodExpbWl0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
cGxheS9SZXBsYXlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlD
b250cm9sbGVyLmNwcAppbmRleCA5MWEyOTUxNGE5NTg0MTIzNzNkNGQ3OWEyNDk2ZTEwMjBmODg5
YTQyLi5kMTA1MDFhMjZmNWUzZDYxMTBkNzA0MGZmOTdhMjQ5MDdiOWI3MjNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuY3BwCkBAIC0yODQsNyArMjg0LDcgQEAg
dm9pZCBSZXBsYXlDb250cm9sbGVyOjp1bmxvYWRTZWdtZW50KGJvb2wgc3VwcHJlc3NOb3RpZmlj
YXRpb25zKQogICAgIExPRyhXZWJSZXBsYXksICIlLTIwcyBDbGVhcmluZyBpbnB1dCBjdXJzb3Jz
IGZvciBwYWdlOiAlcFxuIiwgIlJlcGxheUNvbnRyb2xsZXIiLCAmbV9wYWdlKTsKIAogICAgIG1f
YWN0aXZlQ3Vyc29yID0gbnVsbHB0cjsKLSAgICBSZWZQdHI8UmVwbGF5U2Vzc2lvblNlZ21lbnQ+
IHVubG9hZGVkU2VnbWVudCA9IG1fbG9hZGVkU2VnbWVudC5yZWxlYXNlKCk7CisgICAgYXV0byB1
bmxvYWRlZFNlZ21lbnQgPSBXVEZNb3ZlKG1fbG9hZGVkU2VnbWVudCk7CiAgICAgZm9yIChGcmFt
ZSogZnJhbWUgPSAmbV9wYWdlLm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJl
ZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGZyYW1lLT5zY3JpcHQoKS5nbG9iYWxPYmpl
Y3QobWFpblRocmVhZE5vcm1hbFdvcmxkKCkpLT5zZXRJbnB1dEN1cnNvcihtX2VtcHR5Q3Vyc29y
LmNvcHlSZWYoKSk7CiAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5zZXRJbnB1dEN1cnNvciht
X2VtcHR5Q3Vyc29yLmNvcHlSZWYoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCmluZGV4IDEyZmEwYmI3YzAxYTY1Mzk4YTQ0OTlj
YjE5ZjlmYzJmNGU5NTQ3YTYuLjFhMjA3MjA4YjNiYmVjMzM3OWRmOTFjZjQxYjcwOTNkNDYyZDM4
YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0Vs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0Vs
ZW1lbnQuY3BwCkBAIC0xNzksNyArMTc5LDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVE
aWZmdXNlTGlnaHRpbmdFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXIKICAg
ICBpZiAoIWlucHV0MSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8TGln
aHRTb3VyY2U+IGxpZ2h0U291cmNlID0gU1ZHRkVMaWdodEVsZW1lbnQ6OmZpbmRMaWdodFNvdXJj
ZSh0aGlzKTsKKyAgICBhdXRvIGxpZ2h0U291cmNlID0gU1ZHRkVMaWdodEVsZW1lbnQ6OmZpbmRM
aWdodFNvdXJjZSh0aGlzKTsKICAgICBpZiAoIWxpZ2h0U291cmNlKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIApAQCAtMTkwLDcgKzE5MCw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZF
RGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyCiAg
ICAgQ29sb3IgY29sb3IgPSByZW5kZXJlci0+c3R5bGUoKS5zdmdTdHlsZSgpLmxpZ2h0aW5nQ29s
b3IoKTsKIAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFRGlmZnVzZUxpZ2h0
aW5nOjpjcmVhdGUoZmlsdGVyLCBjb2xvciwgc3VyZmFjZVNjYWxlKCksIGRpZmZ1c2VDb25zdGFu
dCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIGxp
Z2h0U291cmNlLnJlbGVhc2UoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsVW5pdExlbmd0aFgoKSwga2VybmVs
VW5pdExlbmd0aFkoKSwgV1RGTW92ZShsaWdodFNvdXJjZSkpOwogICAgIGVmZmVjdC0+aW5wdXRF
ZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAppbmRl
eCAxOWY1ZDM4OTQ1Y2E5NjNlOWZlZmQ5OGFhNDQwMjlmMzdjNDk1YWFiLi42M2Y4NmUxZGJlYTIx
MWNhY2JjYjdkYTQ0MjQ2MjA1ZDRhODU3NTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC0xOTAsNyArMTkwLDcgQEAg
UmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6YnVpbGQo
U1ZHRmlsdGVyQnVpbGRlciogZmlsdGUKICAgICBpZiAoIWlucHV0MSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICBSZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNlID0gU1ZHRkVM
aWdodEVsZW1lbnQ6OmZpbmRMaWdodFNvdXJjZSh0aGlzKTsKKyAgICBhdXRvIGxpZ2h0U291cmNl
ID0gU1ZHRkVMaWdodEVsZW1lbnQ6OmZpbmRMaWdodFNvdXJjZSh0aGlzKTsKICAgICBpZiAoIWxp
Z2h0U291cmNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMjAxLDcgKzIwMSw3IEBA
IFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxk
KFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlCiAgICAgQ29sb3IgY29sb3IgPSByZW5kZXJlci0+c3R5
bGUoKS5zdmdTdHlsZSgpLmxpZ2h0aW5nQ29sb3IoKTsKIAogICAgIFJlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IGVmZmVjdCA9IEZFU3BlY3VsYXJMaWdodGluZzo6Y3JlYXRlKGZpbHRlciwgY29sb3IsIHN1
cmZhY2VTY2FsZSgpLCBzcGVjdWxhckNvbnN0YW50KCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzcGVjdWxhckV4cG9uZW50KCksIGtlcm5lbFVuaXRMZW5ndGhY
KCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIGxpZ2h0U291cmNlLnJlbGVhc2UoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjdWxhckV4cG9uZW50KCksIGtl
cm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIFdURk1vdmUobGlnaHRTb3Vy
Y2UpKTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwogICAgIHJl
dHVybiBlZmZlY3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdMaXN0UHJvcGVydHkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xp
c3RQcm9wZXJ0eS5oCmluZGV4IDc3Nzg4ZTEwMjI0OGQ1MDI1MmM4MDE0Zjc3YTA2NWQxYmFkOTU5
ZGIuLjVkNDFlOTYwYjdlNDFiNzk4MWZiOTNkOThmNmY4MWE2ZTI1OGNhNGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eS5oCkBAIC0yMDMsNyAr
MjAzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV93cmFwcGVycy0+YXQoaW5kZXgpID0gd3Jh
cHBlcjsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiB3cmFwcGVyLnJlbGVhc2UoKTsKKyAg
ICAgICAgcmV0dXJuIFdURk1vdmUod3JhcHBlcik7CiAgICAgfQogCiAgICAgLy8gU1ZHTGlzdDo6
aW5zZXJ0SXRlbUJlZm9yZSgpCkBAIC0yNTAsNyArMjUwLDcgQEAgcHVibGljOgogCiAgICAgICAg
IC8vIFNwZWM6IElmIG5ld0l0ZW0gaXMgYWxyZWFkeSBpbiBhIGxpc3QsIGl0IGlzIHJlbW92ZWQg
ZnJvbSBpdHMgcHJldmlvdXMgbGlzdCBiZWZvcmUgaXQgaXMgaW5zZXJ0ZWQgaW50byB0aGlzIGxp
c3QuCiAgICAgICAgIGlmICghcHJvY2Vzc0luY29taW5nTGlzdEl0ZW1XcmFwcGVyKG5ld0l0ZW0s
ICZpbmRleCkpCi0gICAgICAgICAgICByZXR1cm4gbmV3SXRlbS5yZWxlYXNlKCk7CisgICAgICAg
ICAgICByZXR1cm4gV1RGTW92ZShuZXdJdGVtKTsKIAogICAgICAgICAvLyBTcGVjOiBJbnNlcnRz
IGEgbmV3IGl0ZW0gaW50byB0aGUgbGlzdCBhdCB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLiBUaGUg
aW5kZXggb2YgdGhlIGl0ZW0gYmVmb3JlIHdoaWNoIHRoZSBuZXcgaXRlbSBpcyB0byBiZQogICAg
ICAgICAvLyBpbnNlcnRlZC4gVGhlIGZpcnN0IGl0ZW0gaXMgbnVtYmVyIDAuIElmIHRoZSBpbmRl
eCBpcyBlcXVhbCB0byAwLCB0aGVuIHRoZSBuZXcgaXRlbSBpcyBpbnNlcnRlZCBhdCB0aGUgZnJv
bnQgb2YgdGhlIGxpc3QuCkBAIC0yNjAsNyArMjYwLDcgQEAgcHVibGljOgogICAgICAgICBtX3dy
YXBwZXJzLT5pbnNlcnQoaW5kZXgsIG5ld0l0ZW0pOwogCiAgICAgICAgIGNvbW1pdENoYW5nZSgp
OwotICAgICAgICByZXR1cm4gbmV3SXRlbTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUobmV3SXRl
bSk7CiAgICAgfQogCiAgICAgLy8gU1ZHTGlzdDo6cmVwbGFjZUl0ZW0oKQpAQCAtMzg1LDcgKzM4
NSw3IEBAIHB1YmxpYzoKICAgICAgICAgbV92YWx1ZXMtPnJlbW92ZShpbmRleCk7CiAKICAgICAg
ICAgY29tbWl0Q2hhbmdlKCk7Ci0gICAgICAgIHJldHVybiBvbGRJdGVtLnJlbGVhc2UoKTsKKyAg
ICAgICAgcmV0dXJuIFdURk1vdmUob2xkSXRlbSk7CiAgICAgfQogCiAgICAgLy8gU1ZHTGlzdDo6
YXBwZW5kSXRlbSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRo
cmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKaW5kZXgg
ZDY4ODJkYjJjMTc3ZmRlMTcyN2YyMzEwZTI5MjBmZGJhZGZiN2Y0Ni4uZjZmNWE0ZGYxNDBlOGM3
MjNiZjE4MzVmYTYxNTk2YTY3MDlmZTY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
VGhyZWFkLmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgV29ya2VyVGhyZWFkOjp3b3JrZXJU
aHJlYWQoKQogCiAgICAgewogICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV90aHJlYWRDcmVhdGlv
bk11dGV4KTsKLSAgICAgICAgbV93b3JrZXJHbG9iYWxTY29wZSA9IGNyZWF0ZVdvcmtlckdsb2Jh
bFNjb3BlKG1fc3RhcnR1cERhdGEtPm1fc2NyaXB0VVJMLCBtX3N0YXJ0dXBEYXRhLT5tX3VzZXJB
Z2VudCwgbV9zdGFydHVwRGF0YS0+bV9jb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRl
cnMsIG1fc3RhcnR1cERhdGEtPm1fc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5
UG9saWN5LCBtX3N0YXJ0dXBEYXRhLT5tX3RvcE9yaWdpbi5yZWxlYXNlKCkpOworICAgICAgICBt
X3dvcmtlckdsb2JhbFNjb3BlID0gY3JlYXRlV29ya2VyR2xvYmFsU2NvcGUobV9zdGFydHVwRGF0
YS0+bV9zY3JpcHRVUkwsIG1fc3RhcnR1cERhdGEtPm1fdXNlckFnZW50LCBtX3N0YXJ0dXBEYXRh
LT5tX2NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycywgbV9zdGFydHVwRGF0YS0+
bV9zaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFdURk1vdmUobV9z
dGFydHVwRGF0YS0+bV90b3BPcmlnaW4pKTsKIAogICAgICAgICBpZiAobV9ydW5Mb29wLnRlcm1p
bmF0ZWQoKSkgewogICAgICAgICAgICAgLy8gVGhlIHdvcmtlciB3YXMgdGVybWluYXRlZCBiZWZv
cmUgdGhlIHRocmVhZCBoYWQgYSBjaGFuY2UgdG8gcnVuLiBTaW5jZSB0aGUgY29udGV4dCBkaWRu
J3QgZXhpc3QgeWV0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggZTVl
YTc0MDViY2U5YjA2ZGQ3Y2M3MTE3M2FiNDRjYTVmNzc1OWQ0Mi4uODdjZGZhN2IxYTI4ZjM2MTU0
OGYwYzEzYWRhZDhlNjdhNjIxOTBkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
Y3BwCkBAIC03OTgsNyArNzk4LDcgQEAgYm9vbCBYTUxIdHRwUmVxdWVzdDo6aW50ZXJuYWxBYm9y
dCgpCiAgICAgLy8gQ2FuY2VsbGluZyBtX2xvYWRlciBtYXkgdHJpZ2dlciBhIHdpbmRvdy5vbmxv
YWQgY2FsbGJhY2sgd2hpY2ggY2FuIGNhbGwgb3BlbigpIG9uIHRoZSBzYW1lIHhoci4KICAgICAv
LyBUaGlzIHdvdWxkIGNyZWF0ZSBpbnRlcm5hbEFib3J0IHJlZW50cmFudCBjYWxsLgogICAgIC8v
IG1fbG9hZGVyIGlzIHNldCB0byBudWxsIGJlZm9yZSBiZWluZyBjYW5jZWxsZWQgdG8gZXhpdCBl
YXJseSBpbiBhbnkgcmVlbnRyYW50IGludGVybmFsQWJvcnQoKSBjYWxsLgotICAgIFJlZlB0cjxU
aHJlYWRhYmxlTG9hZGVyPiBsb2FkZXIgPSBtX2xvYWRlci5yZWxlYXNlKCk7CisgICAgYXV0byBs
b2FkZXIgPSBXVEZNb3ZlKG1fbG9hZGVyKTsKICAgICBsb2FkZXItPmNhbmNlbCgpOwogCiAgICAg
Ly8gSWYgd2luZG93Lm9ubG9hZCBjYWxsYmFjayBjYWxscyBvcGVuKCkgYW5kIHNlbmQoKSBvbiB0
aGUgc2FtZSB4aHIsIG1fbG9hZGVyIGlzIG5vdyBzZXQgdG8gYSBuZXcgdmFsdWUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhTdGVwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YUGF0aFN0ZXAuY3BwCmluZGV4IDBhZTM0MDM2MDdjZjQ3ODYwMDZkNjk3ODRiMmFkYmM3MjJm
YjNmZmYuLmM1NTdlMTM2ZTg3YWRiYWQwNTE4ODFhYjE3NTcwMjM5YWZhNDllMzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFN0ZXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9YUGF0aFN0ZXAuY3BwCkBAIC0zNDMsMTAgKzM0MywxMCBAQCB2b2lkIFN0ZXA6Om5vZGVz
SW5BeGlzKE5vZGUmIGNvbnRleHQsIE5vZGVTZXQmIG5vZGVzKSBjb25zdAogCiAgICAgICAgICAg
ICAvLyBBdm9pZCBsYXppbHkgY3JlYXRpbmcgYXR0cmlidXRlIG5vZGVzIGZvciBhdHRyaWJ1dGVz
IHRoYXQgd2UgZG8gbm90IG5lZWQgYW55d2F5LgogICAgICAgICAgICAgaWYgKG1fbm9kZVRlc3Qu
bV9raW5kID09IE5vZGVUZXN0OjpOYW1lVGVzdCAmJiBtX25vZGVUZXN0Lm1fZGF0YSAhPSBzdGFy
QXRvbSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxBdHRyPiBhdHRyID0gY29udGV4dEVsZW1l
bnQuZ2V0QXR0cmlidXRlTm9kZU5TKG1fbm9kZVRlc3QubV9uYW1lc3BhY2VVUkksIG1fbm9kZVRl
c3QubV9kYXRhKTsKKyAgICAgICAgICAgICAgICBhdXRvIGF0dHIgPSBjb250ZXh0RWxlbWVudC5n
ZXRBdHRyaWJ1dGVOb2RlTlMobV9ub2RlVGVzdC5tX25hbWVzcGFjZVVSSSwgbV9ub2RlVGVzdC5t
X2RhdGEpOwogICAgICAgICAgICAgICAgIGlmIChhdHRyICYmIGF0dHItPm5hbWVzcGFjZVVSSSgp
ICE9IFhNTE5TTmFtZXM6OnhtbG5zTmFtZXNwYWNlVVJJKSB7IC8vIEluIFhQYXRoIGxhbmQsIG5h
bWVzcGFjZSBub2RlcyBhcmUgbm90IGFjY2Vzc2libGUgb24gdGhlIGF0dHJpYnV0ZSBheGlzLgog
ICAgICAgICAgICAgICAgICAgICBpZiAobm9kZU1hdGNoZXMoKmF0dHIsIEF0dHJpYnV0ZUF4aXMs
IG1fbm9kZVRlc3QpKSAvLyBTdGlsbCBuZWVkIHRvIGNoZWNrIG1lcmdlZCBwcmVkaWNhdGVzLgot
ICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXMuYXBwZW5kKGF0dHIucmVsZWFzZSgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG5vZGVzLmFwcGVuZChXVEZNb3ZlKGF0dHIpKTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAt
MzU1LDkgKzM1NSw5IEBAIHZvaWQgU3RlcDo6bm9kZXNJbkF4aXMoTm9kZSYgY29udGV4dCwgTm9k
ZVNldCYgbm9kZXMpIGNvbnN0CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAg
ICBmb3IgKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlIDogY29udGV4dEVsZW1lbnQuYXR0cmli
dXRlc0l0ZXJhdG9yKCkpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8QXR0cj4gYXR0ciA9IGNv
bnRleHRFbGVtZW50LmVuc3VyZUF0dHIoYXR0cmlidXRlLm5hbWUoKSk7Ci0gICAgICAgICAgICAg
ICAgaWYgKG5vZGVNYXRjaGVzKCphdHRyLCBBdHRyaWJ1dGVBeGlzLCBtX25vZGVUZXN0KSkKLSAg
ICAgICAgICAgICAgICAgICAgbm9kZXMuYXBwZW5kKGF0dHIucmVsZWFzZSgpKTsKKyAgICAgICAg
ICAgICAgICBhdXRvIGF0dHIgPSBjb250ZXh0RWxlbWVudC5lbnN1cmVBdHRyKGF0dHJpYnV0ZS5u
YW1lKCkpOworICAgICAgICAgICAgICAgIGlmIChub2RlTWF0Y2hlcyhhdHRyLmdldCgpLCBBdHRy
aWJ1dGVBeGlzLCBtX25vZGVUZXN0KSkKKyAgICAgICAgICAgICAgICAgICAgbm9kZXMuYXBwZW5k
KFdURk1vdmUoYXR0cikpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCmluZGV4IDA4
ZWExNjc2ZWM2NmNmNGY1NmFkMThiNWM0ZjQ5ZGRkYjc5ZmNhNmIuLmE2NTUwZGExYWViZWY2NGI3
YWNkMWViMmMyNjMwMGI2NzhiOTFjMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFn
ZS9TdG9yYWdlQXJlYUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdl
QXJlYUltcGwuY3BwCkBAIC0xMzksOSArMTM5LDkgQEAgdm9pZCBTdG9yYWdlQXJlYUltcGw6OnNl
dEl0ZW0oRnJhbWUqIHNvdXJjZUZyYW1lLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW4K
ICAgICBibG9ja1VudGlsSW1wb3J0Q29tcGxldGUoKTsKIAogICAgIFN0cmluZyBvbGRWYWx1ZTsK
LSAgICBSZWZQdHI8U3RvcmFnZU1hcD4gbmV3TWFwID0gbV9zdG9yYWdlTWFwLT5zZXRJdGVtKGtl
eSwgdmFsdWUsIG9sZFZhbHVlLCBxdW90YUV4Y2VwdGlvbik7CisgICAgYXV0byBuZXdNYXAgPSBt
X3N0b3JhZ2VNYXAtPnNldEl0ZW0oa2V5LCB2YWx1ZSwgb2xkVmFsdWUsIHF1b3RhRXhjZXB0aW9u
KTsKICAgICBpZiAobmV3TWFwKQotICAgICAgICBtX3N0b3JhZ2VNYXAgPSBuZXdNYXAucmVsZWFz
ZSgpOworICAgICAgICBtX3N0b3JhZ2VNYXAgPSBXVEZNb3ZlKG5ld01hcCk7CiAKICAgICBpZiAo
cXVvdGFFeGNlcHRpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTE2MSw5ICsxNjEsOSBAQCB2b2lk
IFN0b3JhZ2VBcmVhSW1wbDo6cmVtb3ZlSXRlbShGcmFtZSogc291cmNlRnJhbWUsIGNvbnN0IFN0
cmluZyYga2V5KQogICAgIGJsb2NrVW50aWxJbXBvcnRDb21wbGV0ZSgpOwogCiAgICAgU3RyaW5n
IG9sZFZhbHVlOwotICAgIFJlZlB0cjxTdG9yYWdlTWFwPiBuZXdNYXAgPSBtX3N0b3JhZ2VNYXAt
PnJlbW92ZUl0ZW0oa2V5LCBvbGRWYWx1ZSk7CisgICAgYXV0byBuZXdNYXAgPSBtX3N0b3JhZ2VN
YXAtPnJlbW92ZUl0ZW0oa2V5LCBvbGRWYWx1ZSk7CiAgICAgaWYgKG5ld01hcCkKLSAgICAgICAg
bV9zdG9yYWdlTWFwID0gbmV3TWFwLnJlbGVhc2UoKTsKKyAgICAgICAgbV9zdG9yYWdlTWFwID0g
V1RGTW92ZShuZXdNYXApOwogCiAgICAgaWYgKG9sZFZhbHVlLmlzTnVsbCgpKQogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRz
Y2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0
ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbQppbmRleCBkNDllZjZlZTFiZDMxN2IyNmZm
YjY4YzgyMGU5MmMyZDc3YmM1NWJiLi5lNGI3Yzg5OWE2NWEyNDM4YjhiMzZhZDQzODc4ZDhhOGI1
ZDhlNWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRz
Y2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMv
SG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0KQEAgLTI3Miw3ICsyNzIsNyBAQCBQ
YXNzUmVmUHRyPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eT4gTmV0c2NhcGVQbHVnaW5Ib3N0
TWFuYWdlcjo6aW5zdGFudGlhdGVQbAogICAgIGluc3RhbmNlLT5zZXRSZW5kZXJDb250ZXh0SUQo
cmVwbHktPm1fcmVuZGVyQ29udGV4dElEKTsKICAgICBpbnN0YW5jZS0+c2V0UmVuZGVyZXJUeXBl
KHJlcGx5LT5tX3JlbmRlcmVyVHlwZSk7CiAKLSAgICByZXR1cm4gaW5zdGFuY2UucmVsZWFzZSgp
OworICAgIHJldHVybiBXVEZNb3ZlKGluc3RhbmNlKTsKIH0KIAogdm9pZCBOZXRzY2FwZVBsdWdp
bkhvc3RNYW5hZ2VyOjpjcmVhdGVQcm9wZXJ0eUxpc3RGaWxlKGNvbnN0IFN0cmluZyYgcGx1Z2lu
UGF0aCwgY3B1X3R5cGVfdCBwbHVnaW5BcmNoaXRlY3R1cmUsIGNvbnN0IFN0cmluZyYgYnVuZGxl
SWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVk
L05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdp
bnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQppbmRleCA5ODRjMjNkYjYx
ZmZlZDBhMGQ0OGI2YjVkOWYyYWJkZTZmMmYzMDA4Li5lZWQyNzc5ODFjMGY4ZjU4ZGIwNjc3NDFl
ZjliMWU3NjBhMjJhMDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hv
c3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9t
YWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCkBAIC0yNDgs
OSArMjQ4LDkgQEAgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpOZXRzY2FwZVBsdWdpbklu
c3RhbmNlUHJveHkoTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkKIAogUGFzc1JlZlB0cjxOZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHk+IE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Y3JlYXRl
KE5ldHNjYXBlUGx1Z2luSG9zdFByb3h5KiBwbHVnaW5Ib3N0UHJveHksIFdlYkhvc3RlZE5ldHNj
YXBlUGx1Z2luVmlldyAqcGx1Z2luVmlldywgYm9vbCBmdWxsRnJhbWVQbHVnaW4pCiB7Ci0gICAg
UmVmUHRyPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eT4gcHJveHkgPSBhZG9wdFJlZihuZXcg
TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5KHBsdWdpbkhvc3RQcm94eSwgcGx1Z2luVmlldywg
ZnVsbEZyYW1lUGx1Z2luKSk7Ci0gICAgcGx1Z2luSG9zdFByb3h5LT5hZGRQbHVnaW5JbnN0YW5j
ZShwcm94eS5nZXQoKSk7Ci0gICAgcmV0dXJuIHByb3h5LnJlbGVhc2UoKTsKKyAgICBhdXRvIHBy
b3h5ID0gYWRvcHRSZWYoKm5ldyBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkocGx1Z2luSG9z
dFByb3h5LCBwbHVnaW5WaWV3LCBmdWxsRnJhbWVQbHVnaW4pKTsKKyAgICBwbHVnaW5Ib3N0UHJv
eHktPmFkZFBsdWdpbkluc3RhbmNlKHByb3h5LnB0cigpKTsKKyAgICByZXR1cm4gV1RGTW92ZShw
cm94eSk7CiB9CiAKIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6fk5ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eSgpCkBAIC04MDEsOCArODAxLDggQEAgTlBFcnJvciBOZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHk6OmxvYWRSZXF1ZXN0KE5TVVJMUmVxdWVzdCAqcmVxdWVzdCwgY29uc3Qg
Y2gKICAgICAgICAgICAgIHJldHVybiBOUEVSUl9JTlZBTElEX1BBUkFNOwogICAgICAgICB9CiAK
LSAgICAgICAgUmVmUHRyPFBsdWdpblJlcXVlc3Q+IHBsdWdpblJlcXVlc3QgPSBQbHVnaW5SZXF1
ZXN0OjpjcmVhdGUocmVxdWVzdElELCByZXF1ZXN0LCB0YXJnZXQsIGFsbG93UG9wdXBzKTsKLSAg
ICAgICAgbV9wbHVnaW5SZXF1ZXN0cy5hcHBlbmQocGx1Z2luUmVxdWVzdC5yZWxlYXNlKCkpOwor
ICAgICAgICBhdXRvIHBsdWdpblJlcXVlc3QgPSBQbHVnaW5SZXF1ZXN0OjpjcmVhdGUocmVxdWVz
dElELCByZXF1ZXN0LCB0YXJnZXQsIGFsbG93UG9wdXBzKTsKKyAgICAgICAgbV9wbHVnaW5SZXF1
ZXN0cy5hcHBlbmQoV1RGTW92ZShwbHVnaW5SZXF1ZXN0KSk7CiAgICAgICAgIG1fcmVxdWVzdFRp
bWVyLnN0YXJ0T25lU2hvdCgwKTsKICAgICB9IGVsc2UgewogICAgICAgICBSZWZQdHI8SG9zdGVk
TmV0c2NhcGVQbHVnaW5TdHJlYW0+IHN0cmVhbSA9IEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFt
OjpjcmVhdGUodGhpcywgcmVxdWVzdElELCByZXF1ZXN0KTsKQEAgLTEzNzIsMTEgKzEzNzIsMTEg
QEAgYm9vbCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmRlbWFyc2hhbFZhbHVlRnJvbUFy
cmF5KEV4ZWNTdGF0ZSogZXhlYywgTlNBcnIKICAgICAgICAgICAgIGlmICghZnJhbWUtPnNjcmlw
dCgpLmNhbkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgICAgIFJlZlB0cjxSb290T2JqZWN0PiBy
b290T2JqZWN0ID0gZnJhbWUtPnNjcmlwdCgpLmNyZWF0ZVJvb3RPYmplY3QobV9wbHVnaW5WaWV3
KTsKKyAgICAgICAgICAgIGF1dG8gcm9vdE9iamVjdCA9IGZyYW1lLT5zY3JpcHQoKS5jcmVhdGVS
b290T2JqZWN0KG1fcGx1Z2luVmlldyk7CiAgICAgICAgICAgICBpZiAoIXJvb3RPYmplY3QpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBy
ZXN1bHQgPSBQcm94eUluc3RhbmNlOjpjcmVhdGUocm9vdE9iamVjdC5yZWxlYXNlKCksIHRoaXMs
IG9iamVjdElEKS0+Y3JlYXRlUnVudGltZU9iamVjdChleGVjKTsKKyAgICAgICAgICAgIHJlc3Vs
dCA9IFByb3h5SW5zdGFuY2U6OmNyZWF0ZShXVEZNb3ZlKHJvb3RPYmplY3QpLCB0aGlzLCBvYmpl
Y3RJRCktPmNyZWF0ZVJ1bnRpbWVPYmplY3QoZXhlYyk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCBmZmVm
YzE5MGJjYjc1NjQxNWIzZjMyZTFiMmE1MmIxMTBhNThmMzM1Li44OWJhMDdjZjcxMTE5NDEyMDZl
ZTQ0YThjZGYwM2EyMTkxMGUyNWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMjM0OCw3ICsyMzQ4
LDcgQEAgLSAodm9pZClkZWFsbG9jCiAKIC0gKHZvaWQpcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbjoo
UG9saWN5QWN0aW9uKWFjdGlvbgogewotICAgIFJlZlB0cjxGcmFtZT4gZnJhbWUgPSBfZnJhbWUu
cmVsZWFzZSgpOworICAgIGF1dG8gZnJhbWUgPSBXVEZNb3ZlKF9mcmFtZSk7CiAgICAgaWYgKCFm
cmFtZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCmluZGV4IGM2Zjg1ZGU3ZDQ3NjQ3NzBk
YWVhMzE2NzgzOTYzNGJhMmIzMTBiNDYuLmEzZGJmNGE3YjM5MGYxOWFjZGVmYzE0YmZhODI1NzQ5
NTViNTNkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlNlY3VyaXR5T3JpZ2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlNlY3VyaXR5T3JpZ2luLm1tCkBAIC01NCw4ICs1NCw4IEBAIC0gKGlkKWluaXRXaXRoVVJM
OihOU1VSTCAqKXVybAogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAg
IFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShV
UkwoW3VybCBhYnNvbHV0ZVVSTF0pKTsKLSAgICBTZWN1cml0eU9yaWdpbiogcmF3T3JpZ2luID0g
b3JpZ2luLnJlbGVhc2UoKS5sZWFrUmVmKCk7CisgICAgYXV0byBvcmlnaW4gPSBTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlKFVSTChbdXJsIGFic29sdXRlVVJMXSkpOworICAgIFNlY3VyaXR5T3JpZ2lu
KiByYXdPcmlnaW4gPSAmb3JpZ2luLmxlYWtSZWYoKTsKICAgICBfcHJpdmF0ZSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8V2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlICo+KHJhd09yaWdpbik7CiAKICAgICBy
ZXR1cm4gc2VsZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViQXJj
aGl2ZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViQXJjaGl2ZS5tbQppbmRleCAz
NDhlOGYwOGNhMmY0OTc2NjllZTNhYWNiZWMyY2Y2NTY3MThkYThmLi5lOTZjNjA3Y2ZiODRjODVh
MWViZmFhYmRjMzFjZWJhMDRlYTVjM2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkFyY2hpdmUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJB
cmNoaXZlLm1tCkBAIC0xNzUsNyArMTc1LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTWFp
blJlc291cmNlOihXZWJSZXNvdXJjZSAqKW1haW5SZXNvdXJjZSBzdWJyZXNvdXJjZXM6KE4KICAg
ICAgICAgcmV0dXJuIG5pbDsKICAgICB9CiAgICAgCi0gICAgUmVmUHRyPEFyY2hpdmVSZXNvdXJj
ZT4gY29yZU1haW5SZXNvdXJjZSA9IG1haW5SZXNvdXJjZSA/IFttYWluUmVzb3VyY2UgX2NvcmVS
ZXNvdXJjZV0gOiAwOworICAgIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNvcmVNYWluUmVzb3Vy
Y2UgPSBtYWluUmVzb3VyY2UgPyBbbWFpblJlc291cmNlIF9jb3JlUmVzb3VyY2VdIDogbnVsbHB0
cjsKIAogICAgIFZlY3RvcjxSZWZQdHI8QXJjaGl2ZVJlc291cmNlPj4gY29yZVJlc291cmNlczsK
ICAgICBmb3IgKFdlYlJlc291cmNlICpzdWJyZXNvdXJjZSBpbiBzdWJyZXNvdXJjZXMpCkBAIC0x
ODUsMTMgKzE4NSwxMyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhNYWluUmVzb3VyY2U6KFdl
YlJlc291cmNlICopbWFpblJlc291cmNlIHN1YnJlc291cmNlczooTgogICAgIGZvciAoV2ViQXJj
aGl2ZSAqc3ViZnJhbWVBcmNoaXZlIGluIHN1YmZyYW1lQXJjaGl2ZXMpCiAgICAgICAgIGNvcmVB
cmNoaXZlcy5hcHBlbmQoW3N1YmZyYW1lQXJjaGl2ZS0+X3ByaXZhdGUgY29yZUFyY2hpdmVdKTsK
IAotICAgIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjb3JlQXJjaGl2ZSA9IExlZ2FjeVdlYkFy
Y2hpdmU6OmNyZWF0ZShjb3JlTWFpblJlc291cmNlLnJlbGVhc2UoKSwgV1RGTW92ZShjb3JlUmVz
b3VyY2VzKSwgV1RGTW92ZShjb3JlQXJjaGl2ZXMpKTsKKyAgICBhdXRvIGNvcmVBcmNoaXZlID0g
TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFdURk1vdmUoY29yZU1haW5SZXNvdXJjZSksIFdURk1v
dmUoY29yZVJlc291cmNlcyksIFdURk1vdmUoY29yZUFyY2hpdmVzKSk7CiAgICAgaWYgKCFjb3Jl
QXJjaGl2ZSkgewogICAgICAgICBbc2VsZiByZWxlYXNlXTsKICAgICAgICAgcmV0dXJuIG5pbDsK
ICAgICB9CiAKLSAgICBbX3ByaXZhdGUgc2V0Q29yZUFyY2hpdmU6Y29yZUFyY2hpdmUucmVsZWFz
ZSgpXTsKKyAgICBbX3ByaXZhdGUgc2V0Q29yZUFyY2hpdmU6V1RGTW92ZShjb3JlQXJjaGl2ZSld
OwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0yMDksMTMgKzIwOSwxMyBAQCAtIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhEYXRhOihOU0RhdGEgKilkYXRhCiAjZW5kaWYKIAogICAgIF9wcml2YXRl
ID0gW1tXZWJBcmNoaXZlUHJpdmF0ZSBhbGxvY10gaW5pdF07Ci0gICAgUmVmUHRyPExlZ2FjeVdl
YkFyY2hpdmU+IGNvcmVBcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFNoYXJlZEJ1
ZmZlcjo6d3JhcE5TRGF0YShkYXRhKSk7CisgICAgYXV0byBjb3JlQXJjaGl2ZSA9IExlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OndyYXBOU0RhdGEoZGF0YSkpOwogICAgIGlm
ICghY29yZUFyY2hpdmUpIHsKICAgICAgICAgW3NlbGYgcmVsZWFzZV07CiAgICAgICAgIHJldHVy
biBuaWw7CiAgICAgfQogICAgICAgICAKLSAgICBbX3ByaXZhdGUgc2V0Q29yZUFyY2hpdmU6Y29y
ZUFyY2hpdmUucmVsZWFzZSgpXTsKKyAgICBbX3ByaXZhdGUgc2V0Q29yZUFyY2hpdmU6V1RGTW92
ZShjb3JlQXJjaGl2ZSldOwogICAgICAgICAKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgQ0ZBYnNv
bHV0ZVRpbWUgZW5kID0gQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXggODAzZDNhOGU0OWU1OWE3OTU0MDMw
NmQ0MTgxNWFmOWM0Y2UwODgwMS4uNjA2NDcyMmE1NjM2MTQ4NTg0MmNmNTdmZDkzMGY3NTU4OGQ2
ZThmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQpAQCAt
NTE4LDggKzUxOCw4IEBAIC0gKFdlYkFyY2hpdmUgKil3ZWJBcmNoaXZlCiAKIC0gKFdlYlJlc291
cmNlICopbWFpblJlc291cmNlCiB7Ci0gICAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY29yZVJl
c291cmNlID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5tYWluUmVzb3VyY2UoKTsKLSAg
ICByZXR1cm4gW1tbV2ViUmVzb3VyY2UgYWxsb2NdIF9pbml0V2l0aENvcmVSZXNvdXJjZTpjb3Jl
UmVzb3VyY2UucmVsZWFzZSgpXSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBjb3JlUmVzb3VyY2Ug
PSB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPm1haW5SZXNvdXJjZSgpOworICAgIHJldHVy
biBbW1tXZWJSZXNvdXJjZSBhbGxvY10gX2luaXRXaXRoQ29yZVJlc291cmNlOldURk1vdmUoY29y
ZVJlc291cmNlKV0gYXV0b3JlbGVhc2VdOwogfQogCiAtIChOU0FycmF5ICopc3VicmVzb3VyY2Vz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCBiMGRjZDlhOWFhNmFlZmY0
Y2RmNmFkZGUwNGVmN2NmMjlhZTQxODc2Li45Y2JmMzA5MTMzMzljMjY2NGJiNzZhNmI1NDJiOWVi
ZTUyNjEzMDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1l
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTkxMSw3
ICs5MTEsNyBAQCAtIChET01Eb2N1bWVudEZyYWdtZW50ICopX2RvY3VtZW50RnJhZ21lbnRXaXRo
Tm9kZXNBc1BhcmFncmFwaHM6KE5TQXJyYXkgKilub2RlcwogICAgIHdoaWxlICgobm9kZSA9IFtu
b2RlRW51bSBuZXh0T2JqZWN0XSkpCiAgICAgICAgIG5vZGVzVmVjdG9yLmFwcGVuZChjb3JlKG5v
ZGUpKTsKIAotICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGRvY3VtZW50
LT5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CisgICAgYXV0byBmcmFnbWVudCA9IGRvY3VtZW50
LT5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CiAKICAgICBmb3IgKGF1dG8qIG5vZGUgOiBub2Rl
c1ZlY3RvcikgewogICAgICAgICBhdXRvIGVsZW1lbnQgPSBjcmVhdGVEZWZhdWx0UGFyYWdyYXBo
RWxlbWVudCgqZG9jdW1lbnQpOwpAQCAtOTE5LDcgKzkxOSw3IEBAIC0gKERPTURvY3VtZW50RnJh
Z21lbnQgKilfZG9jdW1lbnRGcmFnbWVudFdpdGhOb2Rlc0FzUGFyYWdyYXBoczooTlNBcnJheSAq
KW5vZGVzCiAgICAgICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChlbGVtZW50KTsKICAgICB9CiAK
LSAgICByZXR1cm4ga2l0KGZyYWdtZW50LnJlbGVhc2UoKS5nZXQoKSk7CisgICAgcmV0dXJuIGtp
dChmcmFnbWVudC5wdHIoKSk7CiB9CiAKIC0gKHZvaWQpX3JlcGxhY2VTZWxlY3Rpb25XaXRoTm9k
ZTooRE9NTm9kZSAqKW5vZGUgc2VsZWN0UmVwbGFjZW1lbnQ6KEJPT0wpc2VsZWN0UmVwbGFjZW1l
bnQgc21hcnRSZXBsYWNlOihCT09MKXNtYXJ0UmVwbGFjZSBtYXRjaFN0eWxlOihCT09MKW1hdGNo
U3R5bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFz
ZVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJv
Y2Vzcy5jcHAKaW5kZXggYWY4NmFkOGJmMzM0MzcxYjc5Njc3MWNkMjBhMDEzZDhkNjk2MWIzZC4u
M2VlNjI0N2U4ZGE4ODA5YjdjNDJmMDA1NTQ2ODVjNjNhYTk0YzA1YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAKQEAgLTE4Miw4
ICsxODIsOCBAQCB2b2lkIERhdGFiYXNlUHJvY2Vzczo6Y3JlYXRlRGF0YWJhc2VUb1dlYlByb2Nl
c3NDb25uZWN0aW9uKCkKICAgICBtYWNoX3BvcnRfYWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwg
TUFDSF9QT1JUX1JJR0hUX1JFQ0VJVkUsICZsaXN0ZW5pbmdQb3J0KTsKIAogICAgIC8vIENyZWF0
ZSBhIGxpc3RlbmluZyBjb25uZWN0aW9uLgotICAgIFJlZlB0cjxEYXRhYmFzZVRvV2ViUHJvY2Vz
c0Nvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246
OmNyZWF0ZShJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCkpOwotICAg
IG1fZGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQoY29ubmVjdGlvbi5yZWxl
YXNlKCkpOworICAgIGF1dG8gY29ubmVjdGlvbiA9IERhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVj
dGlvbjo6Y3JlYXRlKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihsaXN0ZW5pbmdQb3J0KSk7
CisgICAgbV9kYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChXVEZNb3ZlKGNv
bm5lY3Rpb24pKTsKIAogICAgIElQQzo6QXR0YWNobWVudCBjbGllbnRQb3J0KGxpc3RlbmluZ1Bv
cnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKTsKICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpEYXRhYmFzZVByb2Nlc3NQcm94eTo6RGlkQ3JlYXRlRGF0YWJh
c2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKGNsaWVudFBvcnQpLCAwKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBmMTU4YWFjN2Vk
ZjRhM2Q3N2I1NzkzZjA1ZDE5OWNjMGNmYzhmYmNiLi5mMWNlMzFmZjY1NWYyMDZjMTgyYTE4MjFl
YzZmZTI2MjJkN2JmYzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yNTQsOCArMjU0LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQogI2lmIFVTRShVTklYX0RP
TUFJTl9TT0NLRVRTKQogICAgIElQQzo6Q29ubmVjdGlvbjo6U29ja2V0UGFpciBzb2NrZXRQYWly
ID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKIAotICAgIFJl
ZlB0cjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gY29ubmVjdGlvbiA9IE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoc29ja2V0UGFpci5zZXJ2ZXIpOwotICAgIG1f
d2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7CisgICAg
YXV0byBjb25uZWN0aW9uID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShz
b2NrZXRQYWlyLnNlcnZlcik7CisgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKFdU
Rk1vdmUoY29ubmVjdGlvbikpOwogCiAgICAgSVBDOjpBdHRhY2htZW50IGNsaWVudFNvY2tldChz
b2NrZXRQYWlyLmNsaWVudCk7CiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MoY2xpZW50U29ja2V0KSwgMCk7CkBAIC0yNjUsOCArMjY1LDggQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQogICAg
IG1hY2hfcG9ydF9hbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBNQUNIX1BPUlRfUklHSFRfUkVD
RUlWRSwgJmxpc3RlbmluZ1BvcnQpOwogCiAgICAgLy8gQ3JlYXRlIGEgbGlzdGVuaW5nIGNvbm5l
Y3Rpb24uCi0gICAgUmVmUHRyPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBjb25uZWN0
aW9uID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShJUEM6OkNvbm5lY3Rp
b246OklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCkpOwotICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rp
b25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7CisgICAgYXV0byBjb25uZWN0aW9uID0g
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShJUEM6OkNvbm5lY3Rpb246Oklk
ZW50aWZpZXIobGlzdGVuaW5nUG9ydCkpOworICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFw
cGVuZChXVEZNb3ZlKGNvbm5lY3Rpb24pKTsKIAogICAgIElQQzo6QXR0YWNobWVudCBjbGllbnRQ
b3J0KGxpc3RlbmluZ1BvcnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKTsKICAgICBwYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpE
aWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhjbGllbnRQb3J0KSwgMCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKaW5kZXggYTQxZDBhYjdlMTYyMGNlNTY2OWJlYzgw
MDQxMTlhZTYzNTZlOGEwMS4uMGYxNmRmNDk2NzhmODUxYmVjMTVjMzE0MjRkMTE5YmM2MjhlYzgy
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcApAQCAtMTI3LDggKzEyNyw4IEBAIGJv
b2wgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkFyZ3VtZW50RGVj
b2RlciYgZGVjb2RlciwgTmV0d29yCiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVxdWVz
dEJvZHlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlcykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5z
aW9uSGFuZGxlcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKFJlZlB0cjxTYW5kYm94
RXh0ZW5zaW9uPiBleHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUocmVxdWVzdEJv
ZHlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlc1tpXSkpCi0gICAgICAgICAgICAgICAgcmVzdWx0LnJl
cXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbnMuYXBwZW5kKGV4dGVuc2lvbi5yZWxlYXNlKCkpOwor
ICAgICAgICAgICAgaWYgKGF1dG8gZXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
KHJlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbkhhbmRsZXNbaV0pKQorICAgICAgICAgICAgICAg
IHJlc3VsdC5yZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25zLmFwcGVuZChXVEZNb3ZlKGV4dGVu
c2lvbikpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKaW5kZXggYjk3OGI5
OTkzMzhiMzc4NmMxZTEyMWRjMGVlNzc4ZDViZmFkNjkxZS4uMjMwNjhhNjkyYmYzNjBlY2U0ZjZl
MDU4MDA3NTQ5N2EwNTg2Zjk2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcApAQCAtMTQ1LDEyICsxNDUs
MTEgQEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBFbnRyeTo6ZGVjb2RlU3RvcmFnZVJlY29yZChj
b25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2UKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09V
UkNFKQogdm9pZCBFbnRyeTo6aW5pdGlhbGl6ZVNoYXJlYWJsZVJlc291cmNlSGFuZGxlRnJvbVN0
b3JhZ2VSZWNvcmQoKSBjb25zdAogewotICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1l
bW9yeSA9IG1fc291cmNlU3RvcmFnZVJlY29yZC5ib2R5LnRyeUNyZWF0ZVNoYXJlZE1lbW9yeSgp
OworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gbV9zb3VyY2VTdG9yYWdlUmVjb3JkLmJvZHkudHJ5
Q3JlYXRlU2hhcmVkTWVtb3J5KCk7CiAgICAgaWYgKCFzaGFyZWRNZW1vcnkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFJlZlB0cjxTaGFyZWFibGVSZXNvdXJjZT4gc2hhcmVhYmxlUmVzb3VyY2Ug
PSBTaGFyZWFibGVSZXNvdXJjZTo6Y3JlYXRlKHNoYXJlZE1lbW9yeS5yZWxlYXNlKCksIDAsIG1f
c291cmNlU3RvcmFnZVJlY29yZC5ib2R5LnNpemUoKSk7Ci0gICAgQVNTRVJUKHNoYXJlYWJsZVJl
c291cmNlKTsKKyAgICBhdXRvIHNoYXJlYWJsZVJlc291cmNlID0gU2hhcmVhYmxlUmVzb3VyY2U6
OmNyZWF0ZShXVEZNb3ZlKHNoYXJlZE1lbW9yeSksIDAsIG1fc291cmNlU3RvcmFnZVJlY29yZC5i
b2R5LnNpemUoKSk7CiAgICAgc2hhcmVhYmxlUmVzb3VyY2UtPmNyZWF0ZUhhbmRsZShtX3NoYXJl
YWJsZVJlc291cmNlSGFuZGxlKTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vbWFjL1NoYXJlZE1lbW9yeU1hYy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9tYWMvU2hhcmVkTWVtb3J5TWFjLmNwcAppbmRleCBjYWY0ZmI0OWI1NDZmYjk0YTIxNGFk
NWExZTJhODA5MTJlMDcyYTVjLi4wODBjNTI4NDI2OTc5MWZkOWU5MDQxZDI5OTJmOGZmMDQzNzg3
YWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvU2hhcmVkTWVtb3J5
TWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvU2hhcmVkTWVtb3J5TWFj
LmNwcApAQCAtMTEwLDEzICsxMTAsMTMgQEAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVt
b3J5OjphbGxvY2F0ZShzaXplX3Qgc2l6ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCi0gICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5ID0gYWRvcHRSZWYoKm5l
dyBTaGFyZWRNZW1vcnkpOworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gYWRvcHRSZWYoKm5ldyBT
aGFyZWRNZW1vcnkpOwogICAgIHNoYXJlZE1lbW9yeS0+bV9zaXplID0gc2l6ZTsKICAgICBzaGFy
ZWRNZW1vcnktPm1fZGF0YSA9IHRvUG9pbnRlcihhZGRyZXNzKTsKICAgICBzaGFyZWRNZW1vcnkt
Pm1fcG9ydCA9IE1BQ0hfUE9SVF9OVUxMOwogICAgIHNoYXJlZE1lbW9yeS0+bV9wcm90ZWN0aW9u
ID0gUHJvdGVjdGlvbjo6UmVhZFdyaXRlOwogCi0gICAgcmV0dXJuIHNoYXJlZE1lbW9yeTsKKyAg
ICByZXR1cm4gV1RGTW92ZShzaGFyZWRNZW1vcnkpOwogfQogCiBzdGF0aWMgaW5saW5lIHZtX3By
b3RfdCBtYWNoUHJvdGVjdGlvbihTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gcHJvdGVjdGlvbikK
QEAgLTE1NiwxMyArMTU2LDEzIEBAIFJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6
Y3JlYXRlKHZvaWQqIGRhdGEsIHNpemVfdCBzaXplLCBQcm90ZWN0aW9uIHByCiAgICAgaWYgKCFz
ZW5kUmlnaHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPFNoYXJlZE1l
bW9yeT4gc2hhcmVkTWVtb3J5KGFkb3B0UmVmKG5ldyBTaGFyZWRNZW1vcnkpKTsKKyAgICBhdXRv
IHNoYXJlZE1lbW9yeShhZG9wdFJlZigqbmV3IFNoYXJlZE1lbW9yeSkpOwogICAgIHNoYXJlZE1l
bW9yeS0+bV9zaXplID0gc2l6ZTsKICAgICBzaGFyZWRNZW1vcnktPm1fZGF0YSA9IG51bGxwdHI7
CiAgICAgc2hhcmVkTWVtb3J5LT5tX3BvcnQgPSBzZW5kUmlnaHQubGVha1NlbmRSaWdodCgpOwog
ICAgIHNoYXJlZE1lbW9yeS0+bV9wcm90ZWN0aW9uID0gcHJvdGVjdGlvbjsKIAotICAgIHJldHVy
biBzaGFyZWRNZW1vcnkucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKHNoYXJlZE1lbW9y
eSk7CiB9CiAKIFJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6bWFwKGNvbnN0IEhh
bmRsZSYgaGFuZGxlLCBQcm90ZWN0aW9uIHByb3RlY3Rpb24pCkBAIC0xNzgsMTMgKzE3OCwxMyBA
QCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6Om1hcChjb25zdCBIYW5kbGUmIGhh
bmRsZSwgUHJvdGVjdGlvbiBwcm90ZWN0aQogICAgIGlmIChrciAhPSBLRVJOX1NVQ0NFU1MpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVk
TWVtb3J5KGFkb3B0UmVmKG5ldyBTaGFyZWRNZW1vcnkpKTsKKyAgICBhdXRvIHNoYXJlZE1lbW9y
eShhZG9wdFJlZigqbmV3IFNoYXJlZE1lbW9yeSkpOwogICAgIHNoYXJlZE1lbW9yeS0+bV9zaXpl
ID0gaGFuZGxlLm1fc2l6ZTsKICAgICBzaGFyZWRNZW1vcnktPm1fZGF0YSA9IHRvUG9pbnRlciht
YXBwZWRBZGRyZXNzKTsKICAgICBzaGFyZWRNZW1vcnktPm1fcG9ydCA9IE1BQ0hfUE9SVF9OVUxM
OwogICAgIHNoYXJlZE1lbW9yeS0+bV9wcm90ZWN0aW9uID0gcHJvdGVjdGlvbjsKIAotICAgIHJl
dHVybiBzaGFyZWRNZW1vcnk7CisgICAgcmV0dXJuIFdURk1vdmUoc2hhcmVkTWVtb3J5KTsKIH0K
IAogU2hhcmVkTWVtb3J5Ojp+U2hhcmVkTWVtb3J5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVn
aW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3BwCmluZGV4IDI3MDBjYTIyNTU1YTY4ZTljMmYyMDZh
MjFmYTE3NWFjYTZkZjQxYjIuLjc1NTU3MDJhMjdiODU1MTlhMmFhMmEyNTE2MDEzYmNiNDZhYjEy
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNw
cApAQCAtMTUxLDggKzE1MSw4IEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6Y3JlYXRlV2ViUHJvY2Vz
c0Nvbm5lY3Rpb24oKQogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgIElQQzo6Q29u
bmVjdGlvbjo6U29ja2V0UGFpciBzb2NrZXRQYWlyID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQ
bGF0Zm9ybUNvbm5lY3Rpb24oKTsKIAotICAgIFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4g
Y29ubmVjdGlvbiA9IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoc29ja2V0UGFpci5zZXJ2
ZXIpOwotICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVh
c2UoKSk7CisgICAgYXV0byBjb25uZWN0aW9uID0gV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0
ZShzb2NrZXRQYWlyLnNlcnZlcik7CisgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5k
KFdURk1vdmUoY29ubmVjdGlvbikpOwogCiAgICAgSVBDOjpBdHRhY2htZW50IGNsaWVudFNvY2tl
dChzb2NrZXRQYWlyLmNsaWVudCk7CiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVj
dGlvbihjbGllbnRTb2NrZXQsIG1fc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXph
dGlvbiksIDApOwpAQCAtMTYyLDcgKzE2Miw3IEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6Y3JlYXRl
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKQogICAgIG1hY2hfcG9ydF9hbGxvY2F0ZShtYWNoX3Rhc2tf
c2VsZigpLCBNQUNIX1BPUlRfUklHSFRfUkVDRUlWRSwgJmxpc3RlbmluZ1BvcnQpOwogCiAgICAg
Ly8gQ3JlYXRlIGEgbGlzdGVuaW5nIGNvbm5lY3Rpb24uCi0gICAgUmVmUHRyPFdlYlByb2Nlc3ND
b25uZWN0aW9uPiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShJUEM6
OkNvbm5lY3Rpb246OklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCkpOworICAgIGF1dG8gY29ubmVj
dGlvbiA9IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoSVBDOjpDb25uZWN0aW9uOjpJZGVu
dGlmaWVyKGxpc3RlbmluZ1BvcnQpKTsKIAogICAgIGlmIChtX2F1ZGlvSGFyZHdhcmVMaXN0ZW5l
cikgewogICAgICAgICBpZiAobV9hdWRpb0hhcmR3YXJlTGlzdGVuZXItPmhhcmR3YXJlQWN0aXZp
dHkoKSA9PSBXZWJDb3JlOjpBdWRpb0hhcmR3YXJlQWN0aXZpdHlUeXBlOjpJc0FjdGl2ZSkKQEAg
LTE3MSw3ICsxNzEsNyBAQCB2b2lkIFBsdWdpblByb2Nlc3M6OmNyZWF0ZVdlYlByb2Nlc3NDb25u
ZWN0aW9uKCkKICAgICAgICAgICAgIGNvbm5lY3Rpb24tPmF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVJ
bmFjdGl2ZSgpOwogICAgIH0KIAotICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChj
b25uZWN0aW9uLnJlbGVhc2UoKSk7CisgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5k
KFdURk1vdmUoY29ubmVjdGlvbikpOwogCiAgICAgSVBDOjpBdHRhY2htZW50IGNsaWVudFBvcnQo
bGlzdGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpOwogICAgIHBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpblByb2Nlc3NQcm94eTo6RGlkQ3Jl
YXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY2xpZW50UG9ydCwgbV9zdXBwb3J0c0FzeW5jaHJvbm91
c1BsdWdpbkluaXRpYWxpemF0aW9uKSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0KaW5kZXggMmEyOTczODE5ODlj
MWQ3YTcwNDFkYTZlZGE4Yjg5MzFkYjA0ZDg4NC4uOWRmMmFiMGRiZTJkNTc2OTkyZmEzM2MxYzU3
NjM0OWU5ZmZiZDM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2Nv
YS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkv
Q29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQpAQCAtMTA4LDkgKzEwOCw5IEBAIHN0YXRpYyB2
b2lkIGVuY29kZVRvT2JqZWN0U3RyZWFtKFdLUmVtb3RlT2JqZWN0RW5jb2RlciAqZW5jb2Rlciwg
aWQgdmFsdWUpCiAgICAgc2l6ZV90IHBvc2l0aW9uID0gZW5jb2Rlci0+X29iamVjdFN0cmVhbS0+
c2l6ZSgpOwogICAgIGVuY29kZXItPl9vYmplY3RTdHJlYW0tPmVsZW1lbnRzKCkuYXBwZW5kKG51
bGxwdHIpOwogCi0gICAgUmVmUHRyPEFQSTo6RGljdGlvbmFyeT4gZW5jb2RlZE9iamVjdCA9IGNy
ZWF0ZUVuY29kZWRPYmplY3QoZW5jb2RlciwgdmFsdWUpOworICAgIGF1dG8gZW5jb2RlZE9iamVj
dCA9IGNyZWF0ZUVuY29kZWRPYmplY3QoZW5jb2RlciwgdmFsdWUpOwogICAgIEFTU0VSVCghZW5j
b2Rlci0+X29iamVjdFN0cmVhbS0+ZWxlbWVudHMoKVtwb3NpdGlvbl0pOwotICAgIGVuY29kZXIt
Pl9vYmplY3RTdHJlYW0tPmVsZW1lbnRzKClbcG9zaXRpb25dID0gZW5jb2RlZE9iamVjdC5yZWxl
YXNlKCk7CisgICAgZW5jb2Rlci0+X29iamVjdFN0cmVhbS0+ZWxlbWVudHMoKVtwb3NpdGlvbl0g
PSBXVEZNb3ZlKGVuY29kZWRPYmplY3QpOwogfQogCiBzdGF0aWMgdm9pZCBlbmNvZGVJbnZvY2F0
aW9uQXJndW1lbnRzKFdLUmVtb3RlT2JqZWN0RW5jb2RlciAqZW5jb2RlciwgTlNJbnZvY2F0aW9u
ICppbnZvY2F0aW9uLCBOU1VJbnRlZ2VyIGZpcnN0QXJndW1lbnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL2MvV0tJbWFnZS5jcHAKaW5kZXggMjMyNzhiM2E3ZjUzNDAwYjM2ZDg1YzgxODdlMDRi
YWUyMWNhYzA4YS4uMjc0MTE5OWUyMjBkMDQ1ZTA3NzIzZDUxODBhODMyNzFjMmFiZDMyOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLSW1hZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0ltYWdlLmNwcApAQCAtMzgsOCArMzgsOCBAQCBX
S1R5cGVJRCBXS0ltYWdlR2V0VHlwZUlEKCkKIAogV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlKFdL
U2l6ZSBzaXplLCBXS0ltYWdlT3B0aW9ucyBvcHRpb25zKQogewotICAgIFJlZlB0cjxXZWJJbWFn
ZT4gd2ViSW1hZ2UgPSBXZWJJbWFnZTo6Y3JlYXRlKHRvSW50U2l6ZShzaXplKSwgdG9JbWFnZU9w
dGlvbnMob3B0aW9ucykpOwotICAgIHJldHVybiB0b0FQSSh3ZWJJbWFnZS5yZWxlYXNlKCkubGVh
a1JlZigpKTsKKyAgICBhdXRvIHdlYkltYWdlID0gV2ViSW1hZ2U6OmNyZWF0ZSh0b0ludFNpemUo
c2l6ZSksIHRvSW1hZ2VPcHRpb25zKG9wdGlvbnMpKTsKKyAgICByZXR1cm4gdG9BUEkod2ViSW1h
Z2UubGVha1JlZigpKTsKIH0KIAogV0tTaXplIFdLSW1hZ2VHZXRTaXplKFdLSW1hZ2VSZWYgaW1h
Z2VSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tOdW1iZXIu
Y3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLTnVtYmVyLmNwcAppbmRleCAxMTMw
MDYzMmNmMGZiZTI0ZGEyMDE1NGU4MzJiYjgzYmQyYTQ5NDI4Li40MThlMDI5ZWE2N2RiZjNhNmEx
ZmVjYzA3NTM4N2NjNmEyMTc0ZDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJL2MvV0tOdW1iZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS051
bWJlci5jcHAKQEAgLTM4LDggKzM4LDggQEAgV0tUeXBlSUQgV0tCb29sZWFuR2V0VHlwZUlEKCkK
IAogV0tCb29sZWFuUmVmIFdLQm9vbGVhbkNyZWF0ZShib29sIHZhbHVlKQogewotICAgIFJlZlB0
cjxBUEk6OkJvb2xlYW4+IGJvb2xlYW5PYmplY3QgPSBBUEk6OkJvb2xlYW46OmNyZWF0ZSh2YWx1
ZSk7Ci0gICAgcmV0dXJuIHRvQVBJKGJvb2xlYW5PYmplY3QucmVsZWFzZSgpLmxlYWtSZWYoKSk7
CisgICAgYXV0byBib29sZWFuT2JqZWN0ID0gQVBJOjpCb29sZWFuOjpjcmVhdGUodmFsdWUpOwor
ICAgIHJldHVybiB0b0FQSSgmYm9vbGVhbk9iamVjdC5sZWFrUmVmKCkpOwogfQogCiBib29sIFdL
Qm9vbGVhbkdldFZhbHVlKFdLQm9vbGVhblJlZiBib29sZWFuUmVmKQpAQCAtNTQsOCArNTQsOCBA
QCBXS1R5cGVJRCBXS0RvdWJsZUdldFR5cGVJRCgpCiAKIFdLRG91YmxlUmVmIFdLRG91YmxlQ3Jl
YXRlKGRvdWJsZSB2YWx1ZSkKIHsKLSAgICBSZWZQdHI8QVBJOjpEb3VibGU+IGRvdWJsZU9iamVj
dCA9IEFQSTo6RG91YmxlOjpjcmVhdGUodmFsdWUpOwotICAgIHJldHVybiB0b0FQSShkb3VibGVP
YmplY3QucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgYXV0byBkb3VibGVPYmplY3QgPSBBUEk6
OkRvdWJsZTo6Y3JlYXRlKHZhbHVlKTsKKyAgICByZXR1cm4gdG9BUEkoJmRvdWJsZU9iamVjdC5s
ZWFrUmVmKCkpOwogfQogCiBkb3VibGUgV0tEb3VibGVHZXRWYWx1ZShXS0RvdWJsZVJlZiBkb3Vi
bGVSZWYpCkBAIC03MCw4ICs3MCw4IEBAIFdLVHlwZUlEIFdLVUludDY0R2V0VHlwZUlEKCkKIAog
V0tVSW50NjRSZWYgV0tVSW50NjRDcmVhdGUodWludDY0X3QgdmFsdWUpCiB7Ci0gICAgUmVmUHRy
PEFQSTo6VUludDY0PiB1aW50NjRPYmplY3QgPSBBUEk6OlVJbnQ2NDo6Y3JlYXRlKHZhbHVlKTsK
LSAgICByZXR1cm4gdG9BUEkodWludDY0T2JqZWN0LnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAg
IGF1dG8gdWludDY0T2JqZWN0ID0gQVBJOjpVSW50NjQ6OmNyZWF0ZSh2YWx1ZSk7CisgICAgcmV0
dXJuIHRvQVBJKCZ1aW50NjRPYmplY3QubGVha1JlZigpKTsKIH0KIAogdWludDY0X3QgV0tVSW50
NjRHZXRWYWx1ZShXS1VJbnQ2NFJlZiB1aW50NjRSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAKaW5kZXggODgyODY3ZjgwYjVi
ZWNjNWUyOTM0ODE4NjUyYzkwZmUxZmMxNmEyZi4uNDhjYzBiMjIyYWJjNDYzMTllNTljOTNjYjBm
NjEzOWU1NmVlMDI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dL
U2VjdXJpdHlPcmlnaW5SZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9X
S1NlY3VyaXR5T3JpZ2luUmVmLmNwcApAQCAtNDgsOCArNDgsOCBAQCBXS1NlY3VyaXR5T3JpZ2lu
UmVmIFdLU2VjdXJpdHlPcmlnaW5DcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKFdLU3RyaW5n
UmVmIGlkZQogCiBXS1NlY3VyaXR5T3JpZ2luUmVmIFdLU2VjdXJpdHlPcmlnaW5DcmVhdGUoV0tT
dHJpbmdSZWYgcHJvdG9jb2wsIFdLU3RyaW5nUmVmIGhvc3QsIGludCBwb3J0KQogewotICAgIFJl
ZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlP
cmlnaW46OmNyZWF0ZSh0b0ltcGwocHJvdG9jb2wpLT5zdHJpbmcoKSwgdG9JbXBsKGhvc3QpLT5z
dHJpbmcoKSwgcG9ydCk7Ci0gICAgcmV0dXJuIHRvQVBJKHNlY3VyaXR5T3JpZ2luLnJlbGVhc2Uo
KS5sZWFrUmVmKCkpOworICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGUodG9JbXBsKHByb3RvY29sKS0+c3RyaW5nKCksIHRvSW1wbChob3N0KS0+c3Ry
aW5nKCksIHBvcnQpOworICAgIHJldHVybiB0b0FQSShzZWN1cml0eU9yaWdpbi5sZWFrUmVmKCkp
OwogfQogCiBXS1N0cmluZ1JlZiBXS1NlY3VyaXR5T3JpZ2luQ29weURhdGFiYXNlSWRlbnRpZmll
cihXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXgg
ZWMyYWQ5NmY1MGZlNmI0NWY1MTBhZTNlOGI5MGEwNmVkMjQ4MzJlNC4uODYyZmQ3ZjYwYTg1NWQy
OWFiMjY4YjJmMTYyYjJlMDI1MTE2NDczZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSS9jL1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL2MvV0tTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0zOSwxNCArMzks
MTQgQEAgV0tUeXBlSUQgV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVHZXRUeXBlSUQoKQogCiBXS1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNyZWF0ZShKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9u
KQogewotICAgIFJlZlB0cjxBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZh
bHVlID0gQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShjb250ZXh0LCB2YWx1ZSwg
ZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gdG9BUEkoc2VyaWFsaXplZFZhbHVlLnJlbGVhc2UoKS5s
ZWFrUmVmKCkpOworICAgIGF1dG8gc2VyaWFsaXplZFZhbHVlID0gQVBJOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmNyZWF0ZShjb250ZXh0LCB2YWx1ZSwgZXhjZXB0aW9uKTsKKyAgICByZXR1cm4g
dG9BUEkoc2VyaWFsaXplZFZhbHVlLmxlYWtSZWYoKSk7CiB9CiAKIFdLU2VyaWFsaXplZFNjcmlw
dFZhbHVlUmVmIFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlQ3JlYXRlV2l0aEludGVybmFsUmVwcmVz
ZW50YXRpb24odm9pZCogaW50ZXJuYWxSZXByZXNlbnRhdGlvbikKIHsKLSAgICBSZWZQdHI8QVBJ
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSA9IEFQSTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpjcmVhdGUoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlKj4oaW50ZXJuYWxSZXByZXNlbnRhdGlvbikpOwotICAgIHJldHVybiB0b0FQSShzZXJp
YWxpemVkVmFsdWUucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgYXV0byBzZXJpYWxpemVkVmFs
dWUgPSBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0YXRpY19jYXN0PFdlYkNv
cmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSo+KGludGVybmFsUmVwcmVzZW50YXRpb24pKTsKKyAg
ICByZXR1cm4gdG9BUEkoJnNlcmlhbGl6ZWRWYWx1ZS5sZWFrUmVmKCkpOwogfQogCiBKU1ZhbHVl
UmVmIFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlRGVzZXJpYWxpemUoV0tTZXJpYWxpemVkU2NyaXB0
VmFsdWVSZWYgc2NyaXB0VmFsdWVSZWYsIEpTQ29udGV4dFJlZiBjb250ZXh0UmVmLCBKU1ZhbHVl
UmVmKiBleGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2Mv
Y2Fpcm8vV0tJbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jYWly
by9XS0ltYWdlQ2Fpcm8uY3BwCmluZGV4IGFmYjQ5OTMyYjE3ODFlNTA5MDZkYjkzNjRhMDNkZDlh
ZWM0OTViODYuLjg1Yjk5Mzg0NDI3YjRmYWQ3MGJmMjBiNDlhZjIzNWU2YTMyNjQ0MWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3Bw
CkBAIC00NSw3ICs0NSw3IEBAIGNhaXJvX3N1cmZhY2VfdCogV0tJbWFnZUNyZWF0ZUNhaXJvU3Vy
ZmFjZShXS0ltYWdlUmVmIGltYWdlUmVmKQogV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlRnJvbUNh
aXJvU3VyZmFjZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIFdLSW1hZ2VPcHRpb25zIG9wdGlv
bnMpCiB7CiAgICAgSW50U2l6ZSBpbWFnZVNpemUoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lk
dGgoc3VyZmFjZSksIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlKSk7Ci0g
ICAgUmVmUHRyPFdlYkltYWdlPiB3ZWJJbWFnZSA9IFdlYkltYWdlOjpjcmVhdGUoaW1hZ2VTaXpl
LCB0b0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7CisgICAgYXV0byB3ZWJJbWFnZSA9IFdlYkltYWdl
OjpjcmVhdGUoaW1hZ2VTaXplLCB0b0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7CiAgICAgYXV0byBn
cmFwaGljc0NvbnRleHQgPSB3ZWJJbWFnZS0+Yml0bWFwKCktPmNyZWF0ZUdyYXBoaWNzQ29udGV4
dCgpOwogCiAgICAgY2Fpcm9fdCogY3IgPSBncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29udGV4
dCgpLT5jcigpOwpAQCAtNTQsNSArNTQsNSBAQCBXS0ltYWdlUmVmIFdLSW1hZ2VDcmVhdGVGcm9t
Q2Fpcm9TdXJmYWNlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgV0tJbWFnZU9wdGlvbgogICAg
IGNhaXJvX3JlY3RhbmdsZShjciwgMCwgMCwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5o
ZWlnaHQoKSk7CiAgICAgY2Fpcm9fZmlsbChjcik7CiAKLSAgICByZXR1cm4gdG9BUEkod2ViSW1h
Z2UucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKHdlYkltYWdlLmxlYWtS
ZWYoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2cvV0tJ
bWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3Bw
CmluZGV4IGJjYWI2MGI1Y2RmOTdlZjBkYjIxYTAyNTMxYTgwOGM3MjEyNGI1ZDEuLmM2MjM0M2Q5
NTFiY2YwNjcyOTg4NWRlZjc3ODhmY2NlYTk1OGNiOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCkBAIC01MCw3ICs1MCw3IEBAIFdLSW1hZ2VSZWYg
V0tJbWFnZUNyZWF0ZUZyb21DR0ltYWdlKENHSW1hZ2VSZWYgaW1hZ2VSZWYsIFdLSW1hZ2VPcHRp
b25zIG9wdGlvbnMpCiAgICAgICAgIHJldHVybiAwOwogICAgIAogICAgIEludFNpemUgaW1hZ2VT
aXplKENHSW1hZ2VHZXRXaWR0aChpbWFnZVJlZiksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2VSZWYp
KTsKLSAgICBSZWZQdHI8V2ViSW1hZ2U+IHdlYkltYWdlID0gV2ViSW1hZ2U6OmNyZWF0ZShpbWFn
ZVNpemUsIHRvSW1hZ2VPcHRpb25zKG9wdGlvbnMpKTsKKyAgICBhdXRvIHdlYkltYWdlID0gV2Vi
SW1hZ2U6OmNyZWF0ZShpbWFnZVNpemUsIHRvSW1hZ2VPcHRpb25zKG9wdGlvbnMpKTsKICAgICBp
ZiAoIXdlYkltYWdlLT5iaXRtYXAoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTU4LDUgKzU4
LDUgQEAgV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlRnJvbUNHSW1hZ2UoQ0dJbWFnZVJlZiBpbWFn
ZVJlZiwgV0tJbWFnZU9wdGlvbnMgb3B0aW9ucykKICAgICBGbG9hdFJlY3QgcmVjdChGbG9hdFBv
aW50KDAsIDApLCBpbWFnZVNpemUpOwogICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJSZWN0KHJl
Y3QpOwogICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlUmVmLCBpbWFn
ZVNpemUsIHJlY3QsIHJlY3QpOwotICAgIHJldHVybiB0b0FQSSh3ZWJJbWFnZS5yZWxlYXNlKCku
bGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkod2ViSW1hZ2UubGVha1JlZigpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tDZXJ0aWZpY2F0ZUlu
Zm9NYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFjL1dLQ2VydGlmaWNhdGVJ
bmZvTWFjLm1tCmluZGV4IGM0NDBiNDY3MGE5NTgxYjVlZTZmMmZmNmY4YTc3YTEwNmFlZTZjMjMu
LmE4ODNiN2QzOTQzNWFiMzc2NTQzYWU2MjIxZGVjZjY3ODZkMDExOWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tDZXJ0aWZpY2F0ZUluZm9NYWMubW0KKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL21hYy9XS0NlcnRpZmljYXRlSW5mb01hYy5t
bQpAQCAtMzUsNyArMzUsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogV0tDZXJ0aWZpY2F0
ZUluZm9SZWYgV0tDZXJ0aWZpY2F0ZUluZm9DcmVhdGVXaXRoQ2VydGZpY2F0ZUNoYWluKENGQXJy
YXlSZWYgY2VydGlmaWNhdGVDaGFpbikKIHsKICAgICBSZWZQdHI8V2ViQ2VydGlmaWNhdGVJbmZv
PiBjZXJ0aWZpY2F0ZUluZm8gPSBXZWJDZXJ0aWZpY2F0ZUluZm86OmNyZWF0ZShDZXJ0aWZpY2F0
ZUluZm8oY2VydGlmaWNhdGVDaGFpbikpOwotICAgIHJldHVybiB0b0FQSShjZXJ0aWZpY2F0ZUlu
Zm8ucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKGNlcnRpZmljYXRlSW5m
by5sZWFrUmVmKCkpOwogfQogCiBDRkFycmF5UmVmIFdLQ2VydGlmaWNhdGVJbmZvR2V0Q2VydGlm
aWNhdGVDaGFpbihXS0NlcnRpZmljYXRlSW5mb1JlZiBjZXJ0aWZpY2F0ZUluZm9SZWYpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFjL1dLT2JqQ1R5cGVXcmFwcGVy
UmVmLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL21hYy9XS09iakNUeXBlV3JhcHBl
clJlZi5tbQppbmRleCBlZTAxMjViYTFlYWI0OWZhOWQ0M2ZmZDZhZGY2MDk4NmViYTY2YWQzLi5j
ZmNiOTAyZTE1NWNkZjcxMWQ0ZWZjYWY0ZGYwODgwODA3NjMwMTUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFjL1dLT2JqQ1R5cGVXcmFwcGVyUmVmLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tPYmpDVHlwZVdyYXBwZXJSZWYubW0K
QEAgLTM4LDggKzM4LDggQEAgV0tUeXBlSUQgV0tPYmpDVHlwZVdyYXBwZXJHZXRUeXBlSUQoKQog
CiBXS09iakNUeXBlV3JhcHBlclJlZiBXS09iakNUeXBlV3JhcHBlckNyZWF0ZShpZCBvYmplY3Qp
CiB7Ci0gICAgUmVmUHRyPE9iakNPYmplY3RHcmFwaD4gb2JqZWN0V3JhcHBlciA9IE9iakNPYmpl
Y3RHcmFwaDo6Y3JlYXRlKG9iamVjdCk7Ci0gICAgcmV0dXJuIHRvQVBJKG9iamVjdFdyYXBwZXIu
cmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgYXV0byBvYmplY3RXcmFwcGVyID0gT2JqQ09iamVj
dEdyYXBoOjpjcmVhdGUob2JqZWN0KTsKKyAgICByZXR1cm4gdG9BUEkoJm9iamVjdFdyYXBwZXIu
bGVha1JlZigpKTsKIH0KIAogaWQgV0tPYmpDVHlwZVdyYXBwZXJHZXRPYmplY3QoV0tPYmpDVHlw
ZVdyYXBwZXJSZWYgd3JhcHBlclJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvYy9tYWMvV0tXZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkv
Yy9tYWMvV0tXZWJBcmNoaXZlLmNwcAppbmRleCA4Njc2Y2M2ZTIzMzI3YzM5MjY0ZjA3MzYzMGRl
ZjA4ZmNkMjE5YWZiLi5lNmFhMjRlNTZjMTg1ZTEwMDdkMzIxYzRkMDgyZGFhYmIzMjBkNzU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFjL1dLV2ViQXJjaGl2ZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL21hYy9XS1dlYkFyY2hpdmUuY3Bw
CkBAIC00MywzOCArNDMsMzggQEAgV0tUeXBlSUQgV0tXZWJBcmNoaXZlR2V0VHlwZUlEKCkKIAog
V0tXZWJBcmNoaXZlUmVmIFdLV2ViQXJjaGl2ZUNyZWF0ZShXS1dlYkFyY2hpdmVSZXNvdXJjZVJl
ZiBtYWluUmVzb3VyY2VSZWYsIFdLQXJyYXlSZWYgc3VicmVzb3VyY2VzUmVmLCBXS0FycmF5UmVm
IHN1YmZyYW1lQXJjaGl2ZXNSZWYpCiB7Ci0gICAgUmVmUHRyPEFQSTo6V2ViQXJjaGl2ZT4gd2Vi
QXJjaGl2ZSA9IEFQSTo6V2ViQXJjaGl2ZTo6Y3JlYXRlKHRvSW1wbChtYWluUmVzb3VyY2VSZWYp
LCB0b0ltcGwoc3VicmVzb3VyY2VzUmVmKSwgdG9JbXBsKHN1YmZyYW1lQXJjaGl2ZXNSZWYpKTsK
LSAgICByZXR1cm4gdG9BUEkod2ViQXJjaGl2ZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICBh
dXRvIHdlYkFyY2hpdmUgPSBBUEk6OldlYkFyY2hpdmU6OmNyZWF0ZSh0b0ltcGwobWFpblJlc291
cmNlUmVmKSwgdG9JbXBsKHN1YnJlc291cmNlc1JlZiksIHRvSW1wbChzdWJmcmFtZUFyY2hpdmVz
UmVmKSk7CisgICAgcmV0dXJuIHRvQVBJKCZ3ZWJBcmNoaXZlLmxlYWtSZWYoKSk7CiB9CiAKIFdL
V2ViQXJjaGl2ZVJlZiBXS1dlYkFyY2hpdmVDcmVhdGVXaXRoRGF0YShXS0RhdGFSZWYgZGF0YVJl
ZikKIHsKLSAgICBSZWZQdHI8QVBJOjpXZWJBcmNoaXZlPiB3ZWJBcmNoaXZlID0gQVBJOjpXZWJB
cmNoaXZlOjpjcmVhdGUodG9JbXBsKGRhdGFSZWYpKTsKLSAgICByZXR1cm4gdG9BUEkod2ViQXJj
aGl2ZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICBhdXRvIHdlYkFyY2hpdmUgPSBBUEk6Oldl
YkFyY2hpdmU6OmNyZWF0ZSh0b0ltcGwoZGF0YVJlZikpOworICAgIHJldHVybiB0b0FQSSgmd2Vi
QXJjaGl2ZS5sZWFrUmVmKCkpOwogfQogCiBXS1dlYkFyY2hpdmVSZWYgV0tXZWJBcmNoaXZlQ3Jl
YXRlRnJvbVJhbmdlKFdLQnVuZGxlUmFuZ2VIYW5kbGVSZWYgcmFuZ2VIYW5kbGVSZWYpCiB7Ci0g
ICAgUmVmUHRyPEFQSTo6V2ViQXJjaGl2ZT4gd2ViQXJjaGl2ZSA9IEFQSTo6V2ViQXJjaGl2ZTo6
Y3JlYXRlKHRvSW1wbChyYW5nZUhhbmRsZVJlZiktPmNvcmVSYW5nZSgpKTsKLSAgICByZXR1cm4g
dG9BUEkod2ViQXJjaGl2ZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICBhdXRvIHdlYkFyY2hp
dmUgPSBBUEk6OldlYkFyY2hpdmU6OmNyZWF0ZSh0b0ltcGwocmFuZ2VIYW5kbGVSZWYpLT5jb3Jl
UmFuZ2UoKSk7CisgICAgcmV0dXJuIHRvQVBJKCZ3ZWJBcmNoaXZlLmxlYWtSZWYoKSk7CiB9CiAK
IFdLV2ViQXJjaGl2ZVJlc291cmNlUmVmIFdLV2ViQXJjaGl2ZUNvcHlNYWluUmVzb3VyY2UoV0tX
ZWJBcmNoaXZlUmVmIHdlYkFyY2hpdmVSZWYpCiB7CiAgICAgUmVmUHRyPEFQSTo6V2ViQXJjaGl2
ZVJlc291cmNlPiBtYWluUmVzb3VyY2UgPSB0b0ltcGwod2ViQXJjaGl2ZVJlZiktPm1haW5SZXNv
dXJjZSgpOwotICAgIHJldHVybiB0b0FQSShtYWluUmVzb3VyY2UucmVsZWFzZSgpLmxlYWtSZWYo
KSk7CisgICAgcmV0dXJuIHRvQVBJKG1haW5SZXNvdXJjZS5sZWFrUmVmKCkpOwogfQogCiBXS0Fy
cmF5UmVmIFdLV2ViQXJjaGl2ZUNvcHlTdWJyZXNvdXJjZXMoV0tXZWJBcmNoaXZlUmVmIHdlYkFy
Y2hpdmVSZWYpCiB7CiAgICAgUmVmUHRyPEFQSTo6QXJyYXk+IHN1YnJlc291cmNlcyA9IHRvSW1w
bCh3ZWJBcmNoaXZlUmVmKS0+c3VicmVzb3VyY2VzKCk7Ci0gICAgcmV0dXJuIHRvQVBJKHN1YnJl
c291cmNlcy5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkoc3VicmVzb3Vy
Y2VzLmxlYWtSZWYoKSk7CiB9CiAKIFdLQXJyYXlSZWYgV0tXZWJBcmNoaXZlQ29weVN1YmZyYW1l
QXJjaGl2ZXMoV0tXZWJBcmNoaXZlUmVmIHdlYkFyY2hpdmVSZWYpCiB7CiAgICAgUmVmUHRyPEFQ
STo6QXJyYXk+IHN1YmZyYW1lQXJjaGl2ZXMgPSB0b0ltcGwod2ViQXJjaGl2ZVJlZiktPnN1YmZy
YW1lQXJjaGl2ZXMoKTsKLSAgICByZXR1cm4gdG9BUEkoc3ViZnJhbWVBcmNoaXZlcy5yZWxlYXNl
KCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkoc3ViZnJhbWVBcmNoaXZlcy5sZWFrUmVm
KCkpOwogfQogCiBXS0RhdGFSZWYgV0tXZWJBcmNoaXZlQ29weURhdGEoV0tXZWJBcmNoaXZlUmVm
IHdlYkFyY2hpdmVSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2Mv
bWFjL1dLV2ViQXJjaGl2ZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkv
Yy9tYWMvV0tXZWJBcmNoaXZlUmVzb3VyY2UuY3BwCmluZGV4IDg0MzJkOWViNTcxOGEwNDQxYTMx
Njc3Y2UyMWQyMzE5N2ZmZWVlNDQuLmM4MTljMDIxNjhiOTNkMTEzY2IwZTA2NjQzNTk1YjY5OTQ0
M2ZjNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tXZWJB
cmNoaXZlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMv
V0tXZWJBcmNoaXZlUmVzb3VyY2UuY3BwCkBAIC0zOSw4ICszOSw4IEBAIFdLVHlwZUlEIFdLV2Vi
QXJjaGl2ZVJlc291cmNlR2V0VHlwZUlEKCkKIAogV0tXZWJBcmNoaXZlUmVzb3VyY2VSZWYgV0tX
ZWJBcmNoaXZlUmVzb3VyY2VDcmVhdGUoV0tEYXRhUmVmIGRhdGFSZWYsIFdLVVJMUmVmIFVSTFJl
ZiwgV0tTdHJpbmdSZWYgTUlNRVR5cGVSZWYsIFdLU3RyaW5nUmVmIHRleHRFbmNvZGluZ1JlZikK
IHsKLSAgICBSZWZQdHI8QVBJOjpXZWJBcmNoaXZlUmVzb3VyY2U+IHdlYkFyY2hpdmVSZXNvdXJj
ZSA9IEFQSTo6V2ViQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUodG9JbXBsKGRhdGFSZWYpLCB0b1dU
RlN0cmluZyhVUkxSZWYpLCB0b1dURlN0cmluZyhNSU1FVHlwZVJlZiksIHRvV1RGU3RyaW5nKHRl
eHRFbmNvZGluZ1JlZikpOwotICAgIHJldHVybiB0b0FQSSh3ZWJBcmNoaXZlUmVzb3VyY2UucmVs
ZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgYXV0byB3ZWJBcmNoaXZlUmVzb3VyY2UgPSBBUEk6Oldl
YkFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKHRvSW1wbChkYXRhUmVmKSwgdG9XVEZTdHJpbmcoVVJM
UmVmKSwgdG9XVEZTdHJpbmcoTUlNRVR5cGVSZWYpLCB0b1dURlN0cmluZyh0ZXh0RW5jb2RpbmdS
ZWYpKTsKKyAgICByZXR1cm4gdG9BUEkoJndlYkFyY2hpdmVSZXNvdXJjZS5sZWFrUmVmKCkpOwog
fQogCiBXS0RhdGFSZWYgV0tXZWJBcmNoaXZlUmVzb3VyY2VDb3B5RGF0YShXS1dlYkFyY2hpdmVS
ZXNvdXJjZVJlZiB3ZWJBcmNoaXZlUmVzb3VyY2VSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJV2ViQXJjaGl2ZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElX
ZWJBcmNoaXZlLm1tCmluZGV4IDhlMTdlNWJiNTY4YWRjZDk1ZDM2YzNjOGYzOGQ2OGNjYzI2MDE2
YjAuLjkyOTAzYjM0N2E0OWZjZWNmYTZjMzVjNTllMmY2ZDY5MTZkOTgyZTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElXZWJBcmNoaXZlLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUElXZWJBcmNoaXZlLm1tCkBAIC04Miw3ICs4Miw3IEBAIFdlYkFyY2hpdmU6
OldlYkFyY2hpdmUoV2ViQXJjaGl2ZVJlc291cmNlKiBtYWluUmVzb3VyY2UsIFBhc3NSZWZQdHI8
QVBJOjpBcnJheT4KICAgICAgICAgY29yZVN1YmZyYW1lTGVnYWN5V2ViQXJjaGl2ZXMudW5jaGVj
a2VkQXBwZW5kKHN1YmZyYW1lV2ViQXJjaGl2ZS0+Y29yZUxlZ2FjeVdlYkFyY2hpdmUoKSk7CiAg
ICAgfQogCi0gICAgbV9sZWdhY3lXZWJBcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
KGNvcmVNYWluUmVzb3VyY2UucmVsZWFzZSgpLCBXVEZNb3ZlKGNvcmVBcmNoaXZlUmVzb3VyY2Vz
KSwgV1RGTW92ZShjb3JlU3ViZnJhbWVMZWdhY3lXZWJBcmNoaXZlcykpOworICAgIG1fbGVnYWN5
V2ViQXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShXVEZNb3ZlKGNvcmVNYWluUmVz
b3VyY2UpLCBXVEZNb3ZlKGNvcmVBcmNoaXZlUmVzb3VyY2VzKSwgV1RGTW92ZShjb3JlU3ViZnJh
bWVMZWdhY3lXZWJBcmNoaXZlcykpOwogfQogCiBXZWJBcmNoaXZlOjpXZWJBcmNoaXZlKEFQSTo6
RGF0YSogZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcAppbmRleCBlYmY5NzQxMTNh
YzEwYzE5YWE1NWE0YjMyYmFjZTI0NzRhZGFmYjY5Li5hZDcwNjNiMjRmNmYwOGVhZTJiNjAzNzI2
MjZkZGJkMGFmYmQzNDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lu
cy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwCkBAIC0xNDUs
MTMgKzE0NSwxMyBAQCBQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z2luTW9kdWxlPiBOZXRzY2FwZVBs
dWdpbk1vZHVsZTo6Z2V0T3JDcmVhdGUoY29uc3QgU3RyaW5nJgogICAgICAgICAgICAgcmV0dXJu
IHBsdWdpbk1vZHVsZTsKICAgICB9CiAKLSAgICBSZWZQdHI8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+
IHBsdWdpbk1vZHVsZShhZG9wdFJlZihuZXcgTmV0c2NhcGVQbHVnaW5Nb2R1bGUocGx1Z2luUGF0
aCkpKTsKKyAgICBhdXRvIHBsdWdpbk1vZHVsZShhZG9wdFJlZigqbmV3IE5ldHNjYXBlUGx1Z2lu
TW9kdWxlKHBsdWdpblBhdGgpKSk7CiAgICAgCiAgICAgLy8gVHJ5IHRvIGxvYWQgYW5kIGluaXRp
YWxpemUgdGhlIHBsdWctaW4gbW9kdWxlLgogICAgIGlmICghcGx1Z2luTW9kdWxlLT5sb2FkKCkp
Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKLSAgICBy
ZXR1cm4gcGx1Z2luTW9kdWxlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92ZShwbHVnaW5N
b2R1bGUpOwogfQogCiB2b2lkIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjppbmNyZW1lbnRMb2FkQ291
bnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcAppbmRleCA0ZWVj
YmNjOTk3NzQyOTRkMzQ5ZGQxOWNkYjMwMjhiMDQ5YzFiYjU3Li43ZTBkY2I2MzUxMTMwNWJkYmIw
YjUwNTUyMzg4MDA0MDFmMjMxMTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
U2hhcmVhYmxlQml0bWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxl
Qml0bWFwLmNwcApAQCAtOTksMTEgKzk5LDExIEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNo
YXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdzCiBS
ZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBIYW5k
bGUmIGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uIHByb3RlY3Rpb24pCiB7CiAgICAg
Ly8gQ3JlYXRlIHRoZSBzaGFyZWQgbWVtb3J5LgotICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNo
YXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6bWFwKGhhbmRsZS5tX2hhbmRsZSwgcHJvdGVjdGlv
bik7CisgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6Om1hcChoYW5kbGUubV9o
YW5kbGUsIHByb3RlY3Rpb24pOwogICAgIGlmICghc2hhcmVkTWVtb3J5KQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBjcmVhdGUoaGFuZGxlLm1fc2l6ZSwgaGFuZGxlLm1f
ZmxhZ3MsIHNoYXJlZE1lbW9yeS5yZWxlYXNlKCkpOworICAgIHJldHVybiBjcmVhdGUoaGFuZGxl
Lm1fc2l6ZSwgaGFuZGxlLm1fZmxhZ3MsIFdURk1vdmUoc2hhcmVkTWVtb3J5KSk7CiB9CiAKIGJv
b2wgU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVIYW5kbGUoSGFuZGxlJiBoYW5kbGUsIFNoYXJlZE1l
bW9yeTo6UHJvdGVjdGlvbiBwcm90ZWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFy
ZWFibGVSZXNvdXJjZS5jcHAKaW5kZXggN2Y5MTI3M2VkYzMwOTRiMGI5YjllNjkzNzUzN2ZkMzkz
ZTk1ZDMzMy4uNzRhZmQ0YzY2NzY2YzEwNzY5YzkwMWY5YmZmOWE5YzdjN2MyOWE0OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCkBAIC0xMTQsMTEgKzEx
NCwxMSBAQCBSZWY8U2hhcmVhYmxlUmVzb3VyY2U+IFNoYXJlYWJsZVJlc291cmNlOjpjcmVhdGUo
UGFzc1JlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZAogCiBQYXNzUmVmUHRyPFNoYXJlYWJsZVJl
c291cmNlPiBTaGFyZWFibGVSZXNvdXJjZTo6bWFwKGNvbnN0IEhhbmRsZSYgaGFuZGxlKQogewot
ICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6bWFw
KGhhbmRsZS5tX2hhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7Cisg
ICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6Om1hcChoYW5kbGUubV9oYW5kbGUs
IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgIGlmICghc2hhcmVkTWVt
b3J5KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBjcmVhdGUoc2hhcmVkTWVtb3J5
LnJlbGVhc2UoKSwgaGFuZGxlLm1fb2Zmc2V0LCBoYW5kbGUubV9zaXplKTsKKyAgICByZXR1cm4g
Y3JlYXRlKFdURk1vdmUoc2hhcmVkTWVtb3J5KSwgaGFuZGxlLm1fb2Zmc2V0LCBoYW5kbGUubV9z
aXplKTsKIH0KIAogU2hhcmVhYmxlUmVzb3VyY2U6OlNoYXJlYWJsZVJlc291cmNlKFBhc3NSZWZQ
dHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnksIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQg
c2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvQXJndW1lbnRDb2Rl
cnNHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5j
cHAKaW5kZXggNTAxZDZmMTM3MDkwYzkzNDZhMmZlNGQxMTlmMDQwMWE1NDI0M2NkZS4uN2EyZDZj
NGFhZWRlMjJlNjdkYWJjOTdlYWY4YWRjZjY3ZGU2MjlhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKQEAgLTIyOSw3ICsyMjksNyBAQCBi
b29sIEFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNv
ZGVyLCBEcmFnRGF0YSYgZHJhZ0RhdAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAotICAgIGRyYWdEYXRhID0gRHJhZ0RhdGEocGxhdGZvcm1EYXRhLnJlbGVhc2UoKS5sZWFrUmVm
KCksIGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgc3RhdGljX2Nhc3Q8RHJhZ09wZXJh
dGlvbj4oc291cmNlT3BlcmF0aW9uTWFzayksCisgICAgZHJhZ0RhdGEgPSBEcmFnRGF0YShwbGF0
Zm9ybURhdGEubGVha1JlZigpLCBjbGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIHN0YXRp
Y19jYXN0PERyYWdPcGVyYXRpb24+KHNvdXJjZU9wZXJhdGlvbk1hc2spLAogICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+KGZsYWdzKSk7CiAK
ICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9Db29yZGluYXRlZEdyYXBoaWNzL1dLVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS1ZpZXcuY3BwCmluZGV4IGMxYWIyMmZh
MWEzNTVmMjNlMmJmNzA5MjIxYmZmZjQ0NWE4OTMyOTQuLjg1ZTc5YWE0OWZhMDdjMzE4YjI4MmFh
YzhkNzgzOGRhODEzNzRhNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9Db29yZGluYXRlZEdyYXBoaWNzL1dLVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tWaWV3LmNwcApAQCAtMzIsOCAr
MzIsOCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBXS1ZpZXdSZWYgV0tWaWV3Q3JlYXRl
KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgcGFnZUNvbmZpZ3VyYXRpb24pCiB7Ci0gICAgUmVmUHRy
PFdlYlZpZXc+IHdlYlZpZXcgPSBXZWJWaWV3OjpjcmVhdGUoKnRvSW1wbChwYWdlQ29uZmlndXJh
dGlvbikpOwotICAgIHJldHVybiB0b0FQSSh3ZWJWaWV3LnJlbGVhc2UoKS5sZWFrUmVmKCkpOwor
ICAgIGF1dG8gd2ViVmlldyA9IFdlYlZpZXc6OmNyZWF0ZSgqdG9JbXBsKHBhZ2VDb25maWd1cmF0
aW9uKSk7CisgICAgcmV0dXJuIHRvQVBJKCZ3ZWJWaWV3LmxlYWtSZWYoKSk7CiB9CiAKIFdLU2l6
ZSBXS1ZpZXdHZXRTaXplKFdLVmlld1JlZiB2aWV3UmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQmF0dGVyeVN0YXR1cy5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tCYXR0ZXJ5U3RhdHVzLmNwcAppbmRleCA5NTM4NTBkOGJjMmMy
N2RiMTAzYTU0MGM0OGZjNTlmNWQ2YWUwMzU2Li4wOWY4Y2M3Njk5NjlhZGQxZjJiYWE3N2ZiOWI4
MGNkNmMwZDNkYzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tCYXR0ZXJ5U3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tCYXR0ZXJ5U3RhdHVzLmNwcApAQCAtNDYsOCArNDYsOCBAQCBXS1R5cGVJRCBXS0JhdHRlcnlT
dGF0dXNHZXRUeXBlSUQoKQogV0tCYXR0ZXJ5U3RhdHVzUmVmIFdLQmF0dGVyeVN0YXR1c0NyZWF0
ZShib29sIGlzQ2hhcmdpbmcsIGRvdWJsZSBjaGFyZ2luZ1RpbWUsIGRvdWJsZSBkaXNjaGFyZ2lu
Z1RpbWUsIGRvdWJsZSBsZXZlbCkKIHsKICNpZiBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpCi0gICAg
UmVmUHRyPFdlYkJhdHRlcnlTdGF0dXM+IHN0YXR1cyA9IFdlYkJhdHRlcnlTdGF0dXM6OmNyZWF0
ZShpc0NoYXJnaW5nLCBjaGFyZ2luZ1RpbWUsIGRpc2NoYXJnaW5nVGltZSwgbGV2ZWwpOwotICAg
IHJldHVybiB0b0FQSShzdGF0dXMucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgYXV0byBzdGF0
dXMgPSBXZWJCYXR0ZXJ5U3RhdHVzOjpjcmVhdGUoaXNDaGFyZ2luZywgY2hhcmdpbmdUaW1lLCBk
aXNjaGFyZ2luZ1RpbWUsIGxldmVsKTsKKyAgICByZXR1cm4gdG9BUEkoJnN0YXR1cy5sZWFrUmVm
KCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaXNDaGFyZ2luZyk7CiAgICAgVU5VU0VEX1BB
UkFNKGNoYXJnaW5nVGltZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tHZW9sb2NhdGlvblBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0dlb2xvY2F0aW9uUG9zaXRpb24uY3BwCmluZGV4IDVkOTRmM2U4NjJiYTI5Yjlj
Y2NmZjllZTUwNjBkMTY3ZWE2MDFjNzguLjhiNGM1YjY1MDVhYTFkYTI3ZmRlY2U1ZjdiODU1ZDM2
OGI0MTRiZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0dl
b2xvY2F0aW9uUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS0dlb2xvY2F0aW9uUG9zaXRpb24uY3BwCkBAIC00Myw2ICs0Myw2IEBAIFdLR2VvbG9jYXRp
b25Qb3NpdGlvblJlZiBXS0dlb2xvY2F0aW9uUG9zaXRpb25DcmVhdGUoZG91YmxlIHRpbWVzdGFt
cCwgZG91YmxlIGxhCiAKIFdLR2VvbG9jYXRpb25Qb3NpdGlvblJlZiBXS0dlb2xvY2F0aW9uUG9z
aXRpb25DcmVhdGVfYihkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBs
b25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3VibGUg
YWx0aXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVB
Y2N1cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3Zp
ZGVzU3BlZWQsIGRvdWJsZSBzcGVlZCkKIHsKLSAgICBSZWZQdHI8V2ViR2VvbG9jYXRpb25Qb3Np
dGlvbj4gcG9zaXRpb24gPSBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUodGltZXN0YW1w
LCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSwgcHJvdmlkZXNBbHRpdHVkZSwgYWx0aXR1
ZGUsIHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwgYWx0aXR1ZGVBY2N1cmFjeSwgcHJvdmlkZXNI
ZWFkaW5nLCBoZWFkaW5nLCBwcm92aWRlc1NwZWVkLCBzcGVlZCk7Ci0gICAgcmV0dXJuIHRvQVBJ
KHBvc2l0aW9uLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgIGF1dG8gcG9zaXRpb24gPSBXZWJH
ZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUodGltZXN0YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRl
LCBhY2N1cmFjeSwgcHJvdmlkZXNBbHRpdHVkZSwgYWx0aXR1ZGUsIHByb3ZpZGVzQWx0aXR1ZGVB
Y2N1cmFjeSwgYWx0aXR1ZGVBY2N1cmFjeSwgcHJvdmlkZXNIZWFkaW5nLCBoZWFkaW5nLCBwcm92
aWRlc1NwZWVkLCBzcGVlZCk7CisgICAgcmV0dXJuIHRvQVBJKHBvc2l0aW9uLmxlYWtSZWYoKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tHcmFtbWFy
RGV0YWlsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0dyYW1tYXJEZXRh
aWwuY3BwCmluZGV4IDA2NWY5OWJhNzUwYTlhZDk4NTQzYmJkYWI0NGJiZWY1N2E4Yjc0MDcuLmFm
ZDk4OTVkZGUzZGY0ZTNkNjE3ODcyNDdhNDNiNjFhOGU5ZjdlY2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0dyYW1tYXJEZXRhaWwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0dyYW1tYXJEZXRhaWwuY3BwCkBAIC00MCw4ICs0
MCw4IEBAIFdLVHlwZUlEIFdLR3JhbW1hckRldGFpbEdldFR5cGVJRCgpCiAKIFdLR3JhbW1hckRl
dGFpbFJlZiBXS0dyYW1tYXJEZXRhaWxDcmVhdGUoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoLCBX
S0FycmF5UmVmIGd1ZXNzZXMsIFdLU3RyaW5nUmVmIHVzZXJEZXNjcmlwdGlvbikKIHsKLSAgICBS
ZWZQdHI8V2ViR3JhbW1hckRldGFpbD4gZGV0YWlsID0gV2ViR3JhbW1hckRldGFpbDo6Y3JlYXRl
KGxvY2F0aW9uLCBsZW5ndGgsIHRvSW1wbChndWVzc2VzKSwgdG9XVEZTdHJpbmcodXNlckRlc2Ny
aXB0aW9uKSk7Ci0gICAgcmV0dXJuIHRvQVBJKGRldGFpbC5yZWxlYXNlKCkubGVha1JlZigpKTsK
KyAgICBhdXRvIGRldGFpbCA9IFdlYkdyYW1tYXJEZXRhaWw6OmNyZWF0ZShsb2NhdGlvbiwgbGVu
Z3RoLCB0b0ltcGwoZ3Vlc3NlcyksIHRvV1RGU3RyaW5nKHVzZXJEZXNjcmlwdGlvbikpOworICAg
IHJldHVybiB0b0FQSShkZXRhaWwubGVha1JlZigpKTsKIH0KIAogaW50IFdLR3JhbW1hckRldGFp
bEdldExvY2F0aW9uKFdLR3JhbW1hckRldGFpbFJlZiBncmFtbWFyRGV0YWlsUmVmKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCA4ZTMwMzNlMzA5ZWQ0MjU4
YzJlNzQ2NWE4ZjYzYzQ2YmI2NDI5YmI1Li4xMGQwODgyMzQ0NGYyMWZhOGE1NDQ3ODRiM2Y2MmEx
MzJmNTNkMGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApA
QCAtNDM5LDcgKzQzOSw3IEBAIFdLVHlwZVJlZiBXS1BhZ2VDb3B5U2Vzc2lvblN0YXRlKFdLUGFn
ZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VTZXNzaW9uCiAgICAgfSk7CiAKICAg
ICBpZiAoc2hvdWxkUmV0dXJuRGF0YSkKLSAgICAgICAgcmV0dXJuIHRvQVBJKGVuY29kZUxlZ2Fj
eVNlc3Npb25TdGF0ZShzZXNzaW9uU3RhdGUpLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgICAg
ICByZXR1cm4gdG9BUEkoZW5jb2RlTGVnYWN5U2Vzc2lvblN0YXRlKHNlc3Npb25TdGF0ZSkubGVh
a1JlZigpKTsKIAogICAgIHJldHVybiB0b0FQSSgmQVBJOjpTZXNzaW9uU3RhdGU6OmNyZWF0ZShX
VEZNb3ZlKHNlc3Npb25TdGF0ZSkpLmxlYWtSZWYoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcAppbmRleCAzY2M2MDk1NGQ4Y2RmOTlhMmE4
NzA5YTRlMmQ3ZTFlZjViNzcxZWNkLi40ZTIxNzcxOGE1NjRhOWMxMmU1ZjQ1OTJhNGU0Y2E5MjE4
N2VlYmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
R3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91
cC5jcHAKQEAgLTQxLDggKzQxLDggQEAgV0tUeXBlSUQgV0tQYWdlR3JvdXBHZXRUeXBlSUQoKQog
CiBXS1BhZ2VHcm91cFJlZiBXS1BhZ2VHcm91cENyZWF0ZVdpdGhJZGVudGlmaWVyKFdLU3RyaW5n
UmVmIGlkZW50aWZpZXIpCiB7Ci0gICAgUmVmUHRyPFdlYlBhZ2VHcm91cD4gcGFnZUdyb3VwID0g
V2ViUGFnZUdyb3VwOjpjcmVhdGUodG9XVEZTdHJpbmcoaWRlbnRpZmllcikpOwotICAgIHJldHVy
biB0b0FQSShwYWdlR3JvdXAucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgYXV0byBwYWdlR3Jv
dXAgPSBXZWJQYWdlR3JvdXA6OmNyZWF0ZSh0b1dURlN0cmluZyhpZGVudGlmaWVyKSk7CisgICAg
cmV0dXJuIHRvQVBJKHBhZ2VHcm91cC5sZWFrUmVmKCkpOwogfQogCiBXS1N0cmluZ1JlZiBXS1Bh
Z2VHcm91cENvcHlJZGVudGlmaWVyKFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAppbmRleCA2
MDUzMjRkNTZlNTIzYTZlYjEwNjFjZWUzZmZiMmFjMzJlZmI0NGNjLi5lOWQwZjE0NTg4OTViY2Nm
NTgyZTRlMDFlNzhlOTU1NjdjNDllZGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCkBAIC00NiwyMCArNDYsMjAgQEAgV0tUeXBlSUQg
V0tQcmVmZXJlbmNlc0dldFR5cGVJRCgpCiAKIFdLUHJlZmVyZW5jZXNSZWYgV0tQcmVmZXJlbmNl
c0NyZWF0ZSgpCiB7Ci0gICAgUmVmUHRyPFdlYlByZWZlcmVuY2VzPiBwcmVmZXJlbmNlcyA9IFdl
YlByZWZlcmVuY2VzOjpjcmVhdGVXaXRoTGVnYWN5RGVmYXVsdHMoU3RyaW5nKCksICJXZWJLaXQy
LiIsICJXZWJLaXQyLiIpOwotICAgIHJldHVybiB0b0FQSShwcmVmZXJlbmNlcy5yZWxlYXNlKCku
bGVha1JlZigpKTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0
ZVdpdGhMZWdhY3lEZWZhdWx0cyhTdHJpbmcoKSwgIldlYktpdDIuIiwgIldlYktpdDIuIik7Cisg
ICAgcmV0dXJuIHRvQVBJKHByZWZlcmVuY2VzLmxlYWtSZWYoKSk7CiB9CiAKIFdLUHJlZmVyZW5j
ZXNSZWYgV0tQcmVmZXJlbmNlc0NyZWF0ZVdpdGhJZGVudGlmaWVyKFdLU3RyaW5nUmVmIGlkZW50
aWZpZXJSZWYpCiB7Ci0gICAgUmVmUHRyPFdlYlByZWZlcmVuY2VzPiBwcmVmZXJlbmNlcyA9IFdl
YlByZWZlcmVuY2VzOjpjcmVhdGVXaXRoTGVnYWN5RGVmYXVsdHModG9XVEZTdHJpbmcoaWRlbnRp
ZmllclJlZiksICJXZWJLaXQyLiIsICJXZWJLaXQyLiIpOwotICAgIHJldHVybiB0b0FQSShwcmVm
ZXJlbmNlcy5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gV2Vi
UHJlZmVyZW5jZXM6OmNyZWF0ZVdpdGhMZWdhY3lEZWZhdWx0cyh0b1dURlN0cmluZyhpZGVudGlm
aWVyUmVmKSwgIldlYktpdDIuIiwgIldlYktpdDIuIik7CisgICAgcmV0dXJuIHRvQVBJKHByZWZl
cmVuY2VzLmxlYWtSZWYoKSk7CiB9CiAKIFdLUHJlZmVyZW5jZXNSZWYgV0tQcmVmZXJlbmNlc0Ny
ZWF0ZUNvcHkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZikKIHsKLSAgICBSZWZQdHI8
V2ViUHJlZmVyZW5jZXM+IHByZWZlcmVuY2VzID0gdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+Y29w
eSgpOwotICAgIHJldHVybiB0b0FQSShwcmVmZXJlbmNlcy5yZWxlYXNlKCkubGVha1JlZigpKTsK
KyAgICBhdXRvIHByZWZlcmVuY2VzID0gdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+Y29weSgpOwor
ICAgIHJldHVybiB0b0FQSShwcmVmZXJlbmNlcy5sZWFrUmVmKCkpOwogfQogCiB2b2lkIFdLUHJl
ZmVyZW5jZXNFbmFibGVBbGxFeHBlcmltZW50YWxGZWF0dXJlcyhXS1ByZWZlcmVuY2VzUmVmIHBy
ZWZlcmVuY2VzUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLU2Vzc2lvblJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tTZXNz
aW9uUmVmLmNwcAppbmRleCBhOTM1NzkwODcyNTQ2ZTE3N2U5MGMxM2U2ZTM1OGQ3MTZmZGM1YTBj
Li5mZWRjMGU4YTc4OWRlZTU3NmViZWJkNmJmOTYxNzUxNzdjNDU0N2VjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tTZXNzaW9uUmVmLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tTZXNzaW9uUmVmLmNwcApAQCAtMzcsOCArMzcs
OCBAQCBXS1Nlc3Npb25SZWYgV0tTZXNzaW9uQ3JlYXRlKGJvb2wgaXNFcGhlbWVyYWwpCiAgICAg
aWYgKCFpc0VwaGVtZXJhbCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8
QVBJOjpTZXNzaW9uPiBzZXNzaW9uID0gQVBJOjpTZXNzaW9uOjpjcmVhdGVFcGhlbWVyYWwoKTsK
LSAgICByZXR1cm4gdG9BUEkoc2Vzc2lvbi5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICBhdXRv
IHNlc3Npb24gPSBBUEk6OlNlc3Npb246OmNyZWF0ZUVwaGVtZXJhbCgpOworICAgIHJldHVybiB0
b0FQSSgmc2Vzc2lvbi5sZWFrUmVmKCkpOwogfQogCiBXS1R5cGVJRCBXS1Nlc3Npb25HZXRUeXBl
SUQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLU2Vzc2lv
blN0YXRlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Nlc3Npb25T
dGF0ZVJlZi5jcHAKaW5kZXggOThlNzE3NTE5ZDU2YTI3NWE1MDQxMTVmY2Q4NmZhZWY0NTVjMGQ2
NS4uYzkzOGY1MTRjYTM4ZTIyNDQwZWNmMmFiMGIyNGU2ZGNhYjFkNTlkYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLU2Vzc2lvblN0YXRlUmVmLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tTZXNzaW9uU3RhdGVSZWYuY3BwCkBA
IC00OCw1ICs0OCw1IEBAIFdLU2Vzc2lvblN0YXRlUmVmIFdLU2Vzc2lvblN0YXRlQ3JlYXRlRnJv
bURhdGEoV0tEYXRhUmVmIGRhdGEpCiAKIFdLRGF0YVJlZiBXS1Nlc3Npb25TdGF0ZUNvcHlEYXRh
KFdLU2Vzc2lvblN0YXRlUmVmIHNlc3Npb25TdGF0ZSkKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0
b0FQSShXZWJLaXQ6OmVuY29kZUxlZ2FjeVNlc3Npb25TdGF0ZShXZWJLaXQ6OnRvSW1wbChzZXNz
aW9uU3RhdGUpLT5zZXNzaW9uU3RhdGUoKSkucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0
dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0OjplbmNvZGVMZWdhY3lTZXNzaW9uU3RhdGUoV2ViS2l0
Ojp0b0ltcGwoc2Vzc2lvblN0YXRlKS0+c2Vzc2lvblN0YXRlKCkpLmxlYWtSZWYoKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFBy
aXZhdGVNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4
dFByaXZhdGVNYWMubW0KaW5kZXggNGMxOTJiNmQ0YTZlOGM1NzcyZjYwMzA1ZjY2ZWYyMThhYTBj
MmIxZS4uYTU4OTEwNGIxMmE5OGNkN2Q3ZjYxZGFhOGY5NmY0ZGNkNWY5YzJmNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJp
dmF0ZU1hYy5tbQpAQCAtNzMsOCArNzMsOCBAQCBXS0RpY3Rpb25hcnlSZWYgV0tDb250ZXh0Q29w
eVBsdWdJbkluZm9Gb3JCdW5kbGVJZGVudGlmaWVyKFdLQ29udGV4dFJlZiBjb250ZXh0UgogICAg
IGlmIChwbHVnaW4ucGF0aC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQ
dHI8QVBJOjpEaWN0aW9uYXJ5PiBkaWN0aW9uYXJ5ID0gY3JlYXRlUGx1Z2luSW5mb3JtYXRpb25E
aWN0aW9uYXJ5KHBsdWdpbik7Ci0gICAgcmV0dXJuIHRvQVBJKGRpY3Rpb25hcnkucmVsZWFzZSgp
LmxlYWtSZWYoKSk7CisgICAgYXV0byBkaWN0aW9uYXJ5ID0gY3JlYXRlUGx1Z2luSW5mb3JtYXRp
b25EaWN0aW9uYXJ5KHBsdWdpbik7CisgICAgcmV0dXJuIHRvQVBJKCZkaWN0aW9uYXJ5LmxlYWtS
ZWYoKSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDMwMWNiY2U5NDhkMmIxNGY5
MDM5ZGExNDZkNjJkOTcxODBhYjMxNmMuLjYwMDAwODhiZDQxMzYzZmIyN2QxMzgwYzdkYmUyZmYz
M2FhMjJjOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCkBAIC02NjEsNyArNjYxLDcgQEAgLSAoV0tOYXZpZ2F0aW9uICopbG9hZFJlcXVl
c3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKICAgICBpZiAoIW5hdmlnYXRpb24pCiAgICAgICAg
IHJldHVybiBuaWw7CiAKLSAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ucmVsZWFzZSgp
LmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBbd3JhcHBlcigqbmF2aWdhdGlv
bi5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAoV0tOYXZpZ2F0aW9uICopbG9hZEZp
bGVVUkw6KE5TVVJMICopVVJMIGFsbG93aW5nUmVhZEFjY2Vzc1RvVVJMOihOU1VSTCAqKXJlYWRB
Y2Nlc3NVUkwKQEAgLTY3Niw3ICs2NzYsNyBAQCAtIChXS05hdmlnYXRpb24gKilsb2FkRmlsZVVS
TDooTlNVUkwgKilVUkwgYWxsb3dpbmdSZWFkQWNjZXNzVG9VUkw6KE5TVVJMICopcmVhZAogICAg
IGlmICghbmF2aWdhdGlvbikKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiBbd3Jh
cHBlcigqbmF2aWdhdGlvbi5yZWxlYXNlKCkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CisgICAg
cmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOwogfQog
CiAtIChXS05hdmlnYXRpb24gKilsb2FkSFRNTFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgYmFz
ZVVSTDooTlNVUkwgKiliYXNlVVJMCkBAIC02OTIsNyArNjkyLDcgQEAgLSAoV0tOYXZpZ2F0aW9u
ICopbG9hZERhdGE6KE5TRGF0YSAqKWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5cGUg
Y2hhcmFjdGUKICAgICBpZiAoIW5hdmlnYXRpb24pCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAg
ICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ucmVsZWFzZSgpLmxlYWtSZWYoKSkgYXV0b3Jl
bGVhc2VdOworICAgIHJldHVybiBbd3JhcHBlcigqbmF2aWdhdGlvbi5sZWFrUmVmKCkpIGF1dG9y
ZWxlYXNlXTsKIH0KIAogLSAoV0tOYXZpZ2F0aW9uICopZ29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW06
KFdLQmFja0ZvcndhcmRMaXN0SXRlbSAqKWl0ZW0KQEAgLTcwMSw3ICs3MDEsNyBAQCAtIChXS05h
dmlnYXRpb24gKilnb1RvQmFja0ZvcndhcmRMaXN0SXRlbTooV0tCYWNrRm9yd2FyZExpc3RJdGVt
ICopaXRlbQogICAgIGlmICghbmF2aWdhdGlvbikKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAg
IHJldHVybiBbd3JhcHBlcigqbmF2aWdhdGlvbi5yZWxlYXNlKCkubGVha1JlZigpKSBhdXRvcmVs
ZWFzZV07CisgICAgcmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLmxlYWtSZWYoKSkgYXV0b3Jl
bGVhc2VdOwogfQogCiAtIChOU1N0cmluZyAqKXRpdGxlCkBAIC03NTgsNyArNzU4LDcgQEAgLSAo
V0tOYXZpZ2F0aW9uICopZ29CYWNrCiAgICAgaWYgKCFuYXZpZ2F0aW9uKQogICAgICAgICByZXR1
cm4gbmlsOwogIAotICAgIHJldHVybiBbd3JhcHBlcigqbmF2aWdhdGlvbi5yZWxlYXNlKCkubGVh
a1JlZigpKSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLmxl
YWtSZWYoKSkgYXV0b3JlbGVhc2VdOwogfQogCiAtIChXS05hdmlnYXRpb24gKilnb0ZvcndhcmQK
QEAgLTc2Nyw3ICs3NjcsNyBAQCAtIChXS05hdmlnYXRpb24gKilnb0ZvcndhcmQKICAgICBpZiAo
IW5hdmlnYXRpb24pCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICByZXR1cm4gW3dyYXBwZXIo
Km5hdmlnYXRpb24ucmVsZWFzZSgpLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOworICAgIHJldHVy
biBbd3JhcHBlcigqbmF2aWdhdGlvbi5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAo
V0tOYXZpZ2F0aW9uICopcmVsb2FkCkBAIC03NzgsNyArNzc4LDcgQEAgLSAoV0tOYXZpZ2F0aW9u
ICopcmVsb2FkCiAgICAgaWYgKCFuYXZpZ2F0aW9uKQogICAgICAgICByZXR1cm4gbmlsOwogCi0g
ICAgcmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLnJlbGVhc2UoKS5sZWFrUmVmKCkpIGF1dG9y
ZWxlYXNlXTsKKyAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ubGVha1JlZigpKSBhdXRv
cmVsZWFzZV07CiB9CiAKIC0gKFdLTmF2aWdhdGlvbiAqKXJlbG9hZEZyb21PcmlnaW4KQEAgLTc4
OSw3ICs3ODksNyBAQCAtIChXS05hdmlnYXRpb24gKilyZWxvYWRGcm9tT3JpZ2luCiAgICAgaWYg
KCFuYXZpZ2F0aW9uKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIFt3cmFwcGVy
KCpuYXZpZ2F0aW9uLnJlbGVhc2UoKS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1
cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CiB9CiAKIC0g
KHZvaWQpc3RvcExvYWRpbmcKQEAgLTMxNzcsNyArMzE3Nyw3IEBAIC0gKFdLTmF2aWdhdGlvbiAq
KV9sb2FkRGF0YTooTlNEYXRhICopZGF0YSBNSU1FVHlwZTooTlNTdHJpbmcgKilNSU1FVHlwZSBj
aGFyYWN0CiAgICAgaWYgKCFuYXZpZ2F0aW9uKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAg
cmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLnJlbGVhc2UoKS5sZWFrUmVmKCkpIGF1dG9yZWxl
YXNlXTsKKyAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ubGVha1JlZigpKSBhdXRvcmVs
ZWFzZV07CiB9CiAKIC0gKE5TQXJyYXkgKilfY2VydGlmaWNhdGVDaGFpbgpAQCAtMzI1OCw3ICsz
MjU4LDcgQEAgLSAoV0tOYXZpZ2F0aW9uICopX3JlbG9hZFdpdGhvdXRDb250ZW50QmxvY2tlcnMK
ICAgICBpZiAoIW5hdmlnYXRpb24pCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCi0gICAgcmV0
dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLnJlbGVhc2UoKS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNl
XTsKKyAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ubGVha1JlZigpKSBhdXRvcmVsZWFz
ZV07CiB9CiAKIC0gKHZvaWQpX2tpbGxXZWJDb250ZW50UHJvY2Vzc0FuZFJlc2V0U3RhdGUKQEAg
LTMzMzksNyArMzMzOSw3IEBAIC0gKE5TRGF0YSAqKV9zZXNzaW9uU3RhdGVEYXRhCiAgICAgV2Vi
S2l0OjpTZXNzaW9uU3RhdGUgc2Vzc2lvblN0YXRlID0gX3BhZ2UtPnNlc3Npb25TdGF0ZSgpOwog
CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIG5vdCB1c2UgdGhlIGxlZ2FjeSBzZXNzaW9uIHN0
YXRlIGVuY29kZXIuCi0gICAgcmV0dXJuIFt3cmFwcGVyKCpXZWJLaXQ6OmVuY29kZUxlZ2FjeVNl
c3Npb25TdGF0ZShzZXNzaW9uU3RhdGUpLnJlbGVhc2UoKS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNl
XTsKKyAgICByZXR1cm4gW3dyYXBwZXIoKldlYktpdDo6ZW5jb2RlTGVnYWN5U2Vzc2lvblN0YXRl
KHNlc3Npb25TdGF0ZSkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKF9XS1Nlc3Np
b25TdGF0ZSAqKV9zZXNzaW9uU3RhdGUKQEAgLTMzNjMsNyArMzM2Myw3IEBAIC0gKFdLTmF2aWdh
dGlvbiAqKV9yZXN0b3JlU2Vzc2lvblN0YXRlOihfV0tTZXNzaW9uU3RhdGUgKilzZXNzaW9uU3Rh
dGUgYW5kTmF2aWdhCiAgICAgaWYgKCFuYXZpZ2F0aW9uKQogICAgICAgICByZXR1cm4gbmlsOwog
Ci0gICAgcmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLnJlbGVhc2UoKS5sZWFrUmVmKCkpIGF1
dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ubGVha1JlZigpKSBh
dXRvcmVsZWFzZV07CiB9CiAKIC0gKHZvaWQpX2Nsb3NlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZGF0YWJhc2VfbWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZGF0YWJhc2VfbWFuYWdlci5jcHAKaW5kZXgg
ZGFjZjc4ZmE5NDg3MGE3MWJiYTU2MDRkMzNjOWJhYjUyMWU3MmRjMi4uNzZmY2QxOTY3OGY1ZWU2
M2E3NWFiNTIwYmZjYmE5MDJhNTMxMmRkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2RhdGFiYXNlX21hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19kYXRhYmFzZV9tYW5hZ2VyLmNwcApAQCAtNzUsNyAr
NzUsNyBAQCBFaW5hX0xpc3QqIEV3a0RhdGFiYXNlTWFuYWdlcjo6Y3JlYXRlT3JpZ2luTGlzdChX
S0FycmF5UmVmIG9yaWdpbnMpIGNvbnN0CiAgICAgICAgICAgICBvcmlnaW4gPSBFd2tTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlKHdrT3JpZ2luUmVmKTsKICAgICAgICAgICAgIG1fd3JhcHBlckNhY2hl
LnNldCh3a09yaWdpblJlZiwgb3JpZ2luKTsKICAgICAgICAgfQotICAgICAgICBvcmlnaW5MaXN0
ID0gZWluYV9saXN0X2FwcGVuZChvcmlnaW5MaXN0LCBvcmlnaW4ucmVsZWFzZSgpLmxlYWtSZWYo
KSk7CisgICAgICAgIG9yaWdpbkxpc3QgPSBlaW5hX2xpc3RfYXBwZW5kKG9yaWdpbkxpc3QsIG9y
aWdpbi5sZWFrUmVmKCkpOwogICAgIH0KIAogICAgIHJldHVybiBvcmlnaW5MaXN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3N0b3JhZ2VfbWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfc3RvcmFnZV9tYW5h
Z2VyLmNwcAppbmRleCA1ZDNlZGIwYTI2OTZiMjE1MWNmNjA4NWY3ZDY1NTBlYzQyZjA4NDgzLi4y
ODFiOWNlMWMxNjE4NTA5NzA0ZDE3MWMyNTE3ZDMxZWUzMTFhNDQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfc3RvcmFnZV9tYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfc3RvcmFnZV9tYW5hZ2VyLmNw
cApAQCAtNTgsNyArNTgsNyBAQCBFaW5hX0xpc3QqIEV3a1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVP
cmlnaW5MaXN0KFdLQXJyYXlSZWYgb3JpZ2lucykgY29uc3QKICAgICAgICAgICAgIG9yaWdpbiA9
IEV3a1NlY3VyaXR5T3JpZ2luOjpjcmVhdGUod2tPcmlnaW5SZWYpOwogICAgICAgICAgICAgbV93
cmFwcGVyQ2FjaGUuc2V0KHdrT3JpZ2luUmVmLCBvcmlnaW4pOwogICAgICAgICB9Ci0gICAgICAg
IG9yaWdpbkxpc3QgPSBlaW5hX2xpc3RfYXBwZW5kKG9yaWdpbkxpc3QsIG9yaWdpbi5yZWxlYXNl
KCkubGVha1JlZigpKTsKKyAgICAgICAgb3JpZ2luTGlzdCA9IGVpbmFfbGlzdF9hcHBlbmQob3Jp
Z2luTGlzdCwgb3JpZ2luLmxlYWtSZWYoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG9yaWdpbkxp
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXcuY3BwCmluZGV4IDk2ZmUxZmMyOWE2NWQyYjZlNTk4MGUwZjEwODUwNDBhNzYwMTRkMzIuLjQx
NDgwNmNlNGMyMjhjZjk3NWU1MGE2ZTFlNTI1ZDVlOGZiODhlNTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCkBAIC0xODM3LDcg
KzE4MzcsNyBAQCBXZWJQYWdlUHJveHkqIHdlYmtpdFdlYlZpZXdDcmVhdGVOZXdQYWdlKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IFdpbmRvd0ZlYQogICAgIHdlYmtpdFdpbmRvd1Byb3Bl
cnRpZXNVcGRhdGVGcm9tV2ViV2luZG93RmVhdHVyZXMobmV3V2ViVmlldy0+cHJpdi0+d2luZG93
UHJvcGVydGllcy5nZXQoKSwgd2luZG93RmVhdHVyZXMpOwogCiAgICAgUmVmUHRyPFdlYlBhZ2VQ
cm94eT4gbmV3UGFnZSA9IGdldFBhZ2UobmV3V2ViVmlldyk7Ci0gICAgcmV0dXJuIG5ld1BhZ2Uu
cmVsZWFzZSgpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gbmV3UGFnZS5sZWFrUmVmKCk7CiB9CiAK
IHZvaWQgd2Via2l0V2ViVmlld1JlYWR5VG9TaG93UGFnZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
KQpAQCAtMTkyNSw3ICsxOTI1LDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3TW91c2VUYXJnZXRDaGFu
Z2VkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IFdlYkhpdFRlc3RSZXMKIAogdm9pZCB3
ZWJraXRXZWJWaWV3UHJpbnRGcmFtZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJGcmFtZVBy
b3h5KiBmcmFtZSkKIHsKLSAgICBHUmVmUHRyPFdlYktpdFByaW50T3BlcmF0aW9uPiBwcmludE9w
ZXJhdGlvbiA9IGFkb3B0R1JlZih3ZWJraXRfcHJpbnRfb3BlcmF0aW9uX25ldyh3ZWJWaWV3KSk7
CisgICAgYXV0byBwcmludE9wZXJhdGlvbiA9IGFkb3B0R1JlZih3ZWJraXRfcHJpbnRfb3BlcmF0
aW9uX25ldyh3ZWJWaWV3KSk7CiAgICAgd2Via2l0UHJpbnRPcGVyYXRpb25TZXRQcmludE1vZGUo
cHJpbnRPcGVyYXRpb24uZ2V0KCksIFByaW50SW5mbzo6UHJpbnRNb2RlU3luYyk7CiAgICAgZ2Jv
b2xlYW4gcmV0dXJuVmFsdWU7CiAgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW1BS
SU5UXSwgMCwgcHJpbnRPcGVyYXRpb24uZ2V0KCksICZyZXR1cm5WYWx1ZSk7CkBAIC0zMjA0LDcg
KzMyMDQsNyBAQCBzdGF0aWMgdm9pZCBmaWxlUmVwbGFjZUNvbnRlbnRzQ2FsbGJhY2soR09iamVj
dCogb2JqZWN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZwogCiBzdGF0aWMgdm9pZCBnZXRDb250
ZW50c0FzTUhUTUxEYXRhQ2FsbGJhY2soQVBJOjpEYXRhKiB3a0RhdGEsIEdUYXNrKiB0YXNrUHRy
KQogewotICAgIEdSZWZQdHI8R1Rhc2s+IHRhc2sgPSBhZG9wdEdSZWYodGFza1B0cik7CisgICAg
YXV0byB0YXNrID0gYWRvcHRHUmVmKHRhc2tQdHIpOwogICAgIGlmIChnX3Rhc2tfcmV0dXJuX2Vy
cm9yX2lmX2NhbmNlbGxlZCh0YXNrLmdldCgpKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvU2Vzc2lvblN0YXRlQ29kaW5nLm1t
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1Nlc3Npb25TdGF0ZUNvZGluZy5tbQpp
bmRleCAzZWQ0MTlkY2Q1Mzk3NDExODY0MDhmYmI4MGIwZGQ4NWUxMGI0MDFhLi42MjNiYTQ2MGEy
MDhhYjdkNzM2MTI3Y2VhYTg0NDE0ZmNhMDQ1MDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvU2Vzc2lvblN0YXRlQ29kaW5nLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9TZXNzaW9uU3RhdGVDb2RpbmcubW0KQEAgLTM0LDcgKzM0LDcg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiBSZXRhaW5QdHI8TlNEYXRhPiBlbmNvZGVTZXNzaW9uU3Rh
dGUoY29uc3QgU2Vzc2lvblN0YXRlJiBzZXNzaW9uU3RhdGUpCiB7CiAjaWYgV0tfQVBJX0VOQUJM
RUQKLSAgICByZXR1cm4gW3dyYXBwZXIoKldlYktpdDo6ZW5jb2RlTGVnYWN5U2Vzc2lvblN0YXRl
KHNlc3Npb25TdGF0ZSkucmVsZWFzZSgpLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOworICAgIHJl
dHVybiBbd3JhcHBlcigqV2ViS2l0OjplbmNvZGVMZWdhY3lTZXNzaW9uU3RhdGUoc2Vzc2lvblN0
YXRlKS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKICNlbHNlCiAgICAgcmV0dXJuIG51bGxwdHI7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5lcmljQ2Fs
bGJhY2suaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2suaAppbmRl
eCAxZDIwNTM5YTE4NzM4OWQxMmYwMDEyZDcwNjk3MmI2N2EwZGFkMDY5Li4xYjY3ZTkzODQ2Nzk3
OWQxMjljYzdmYzJmYWJjZDVkZmUwN2ZlNDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0dlbmVyaWNDYWxsYmFjay5oCkBAIC0yMDAsMTEgKzIwMCwxMSBAQCBwdWJsaWM6CiAgICAgdGVt
cGxhdGU8Y2xhc3MgVD4KICAgICBSZWZQdHI8VD4gdGFrZSh1aW50NjRfdCBjYWxsYmFja0lEKQog
ICAgIHsKLSAgICAgICAgUmVmUHRyPENhbGxiYWNrQmFzZT4gYmFzZSA9IG1fbWFwLnRha2UoY2Fs
bGJhY2tJRCk7CisgICAgICAgIGF1dG8gYmFzZSA9IG1fbWFwLnRha2UoY2FsbGJhY2tJRCk7CiAg
ICAgICAgIGlmICghYmFzZSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAg
IHJldHVybiBhZG9wdFJlZihiYXNlLnJlbGVhc2UoKS5sZWFrUmVmKCktPmFzPFQ+KCkpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoYmFzZS5sZWFrUmVmKCktPmFzPFQ+KCkpOwogICAgIH0KIAog
ICAgIHZvaWQgaW52YWxpZGF0ZShDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDIwNWEwZjA2YzllM2M0ZWU5ZjZk
NWE4MGEwZjFkMjNlNTM3M2Q2NjIuLjBjZjcwNDUxMTgwYTVjY2FjYzliYWYxY2FkYWIxYjQxYjMz
YWRmZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKQEAgLTQ3
LDkgKzQ3LDkgQEAgdm9pZCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
OjppbnZhbGlkYXRlUmVxdWVzdHMoKQogCiBQYXNzUmVmUHRyPEdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RQcm94eT4gR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6
Y3JlYXRlUmVxdWVzdCh1aW50NjRfdCBnZW9sb2NhdGlvbklEKQogewotICAgIFJlZlB0cjxHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHk+IHJlcXVlc3QgPSBHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0UHJveHk6OmNyZWF0ZSh0aGlzLCBnZW9sb2NhdGlvbklEKTsKLSAgICBtX3Bl
bmRpbmdSZXF1ZXN0cy5hZGQoZ2VvbG9jYXRpb25JRCwgcmVxdWVzdC5nZXQoKSk7Ci0gICAgcmV0
dXJuIHJlcXVlc3QucmVsZWFzZSgpOworICAgIGF1dG8gcmVxdWVzdCA9IEdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RQcm94eTo6Y3JlYXRlKHRoaXMsIGdlb2xvY2F0aW9uSUQpOworICAgIG1f
cGVuZGluZ1JlcXVlc3RzLmFkZChnZW9sb2NhdGlvbklELCByZXF1ZXN0LnB0cigpKTsKKyAgICBy
ZXR1cm4gV1RGTW92ZShyZXF1ZXN0KTsKIH0KIAogdm9pZCBHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5OjpkaWRSZWNlaXZlR2VvbG9jYXRpb25QZXJtaXNzaW9uRGVjaXNp
b24odWludDY0X3QgZ2VvbG9jYXRpb25JRCwgYm9vbCBhbGxvd2VkKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApp
bmRleCBiNDI2NjBmZTYxYmU0NWQ1MDE2ZGVkZjZlZjM3MzQ0NTRiNzQ3M2U4Li5kN2QzNTA5OTg3
YmM0ZmQ2NzI4YTg3MzczZTJiYzYxMTNiNjllYTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMjQ5
LDggKzI0OSw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwgdWluCiAgICAgV2ViUGFnZVByb3h5KiBw
YWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7CiAgICAgTUVTU0FHRV9DSEVD
SyhwYWdlKTsKIAotICAgIFJlZlB0cjxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5PiBhdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk6OmNyZWF0
ZShjb3JlQ2hhbGxlbmdlLCBjaGFsbGVuZ2VJRCwgY29ubmVjdGlvbigpKTsKLSAgICBwYWdlLT5k
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eShmcmFtZUlELCBhdXRoZW50aWNh
dGlvbkNoYWxsZW5nZS5yZWxlYXNlKCkpOworICAgIGF1dG8gYXV0aGVudGljYXRpb25DaGFsbGVu
Z2UgPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5OjpjcmVhdGUoY29yZUNoYWxsZW5nZSwg
Y2hhbGxlbmdlSUQsIGNvbm5lY3Rpb24oKSk7CisgICAgcGFnZS0+ZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlUHJveHkoZnJhbWVJRCwgV1RGTW92ZShhdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSkpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZEZldGNoV2Vic2l0ZURh
dGEodWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgV2Vic2l0ZURhdGEmIHdlYnNpdGVEYXRhKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHkuY3BwCmluZGV4IDBiMmE2MzI5NzhkYjdjYjRlM2FjNWU4MTg0MzE4OTJjYzE2OTU0
ZTQuLjgxOGE1MjU0MTYwN2EzY2U5YTIzZGM4NzhmMThiZmExMzdjMGRhZTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eS5jcHAKQEAgLTQ4LDkgKzQ4LDkgQEAgdm9pZCBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eTo6aW52YWxpZGF0ZVJlcXVlc3RzKCkKIAogUGFzc1JlZlB0cjxOb3RpZmlj
YXRpb25QZXJtaXNzaW9uUmVxdWVzdD4gTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHk6OmNyZWF0ZVJlcXVlc3QodWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCiB7Ci0gICAg
UmVmUHRyPE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0PiByZXF1ZXN0ID0gTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZSh0aGlzLCBub3RpZmljYXRpb25JRCk7Ci0gICAg
bV9wZW5kaW5nUmVxdWVzdHMuYWRkKG5vdGlmaWNhdGlvbklELCByZXF1ZXN0LmdldCgpKTsKLSAg
ICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CisgICAgYXV0byByZXF1ZXN0ID0gTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZSh0aGlzLCBub3RpZmljYXRpb25JRCk7CisgICAg
bV9wZW5kaW5nUmVxdWVzdHMuYWRkKG5vdGlmaWNhdGlvbklELCByZXF1ZXN0LnB0cigpKTsKKyAg
ICByZXR1cm4gV1RGTW92ZShyZXF1ZXN0KTsKIH0KIAogdm9pZCBOb3RpZmljYXRpb25QZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZU5vdGlmaWNhdGlvblBlcm1pc3Npb25E
ZWNpc2lvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCwgYm9vbCBhbGxvdykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2Vy
LmNwcAppbmRleCBiZDAwYmRjODM3NDFmYTZjYmYxMGQyNDFmODMzNTgwZGFiYTE1YjQ1Li5mZmEw
YTdlODYyNzlmMTU1Yzk0ZjY0ZTc2ZWZkM2UxZWQxZWZiYmRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuY3Bw
CkBAIC0xMjUsMTAgKzEyNSwxMCBAQCBQbHVnaW5Qcm9jZXNzUHJveHkqIFBsdWdpblByb2Nlc3NN
YW5hZ2VyOjpnZXRPckNyZWF0ZVBsdWdpblByb2Nlc3ModWludDY0X3QgcGx1ZwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV9wbHVnaW5Qcm9jZXNzVG9rZW5zLnNpemUoKTsgKytpKSB7CiAg
ICAgICAgIGF1dG8mIGF0dHJpYnV0ZXNBbmRUb2tlbiA9IG1fcGx1Z2luUHJvY2Vzc1Rva2Vuc1tp
XTsKICAgICAgICAgaWYgKGF0dHJpYnV0ZXNBbmRUb2tlbi5zZWNvbmQgPT0gcGx1Z2luUHJvY2Vz
c1Rva2VuKSB7Ci0gICAgICAgICAgICBSZWZQdHI8UGx1Z2luUHJvY2Vzc1Byb3h5PiBwbHVnaW5Q
cm9jZXNzID0gUGx1Z2luUHJvY2Vzc1Byb3h5OjpjcmVhdGUodGhpcywgYXR0cmlidXRlc0FuZFRv
a2VuLmZpcnN0LCBhdHRyaWJ1dGVzQW5kVG9rZW4uc2Vjb25kKTsKLSAgICAgICAgICAgIFBsdWdp
blByb2Nlc3NQcm94eSogcGx1Z2luUHJvY2Vzc1B0ciA9IHBsdWdpblByb2Nlc3MuZ2V0KCk7Cisg
ICAgICAgICAgICBhdXRvIHBsdWdpblByb2Nlc3MgPSBQbHVnaW5Qcm9jZXNzUHJveHk6OmNyZWF0
ZSh0aGlzLCBhdHRyaWJ1dGVzQW5kVG9rZW4uZmlyc3QsIGF0dHJpYnV0ZXNBbmRUb2tlbi5zZWNv
bmQpOworICAgICAgICAgICAgUGx1Z2luUHJvY2Vzc1Byb3h5KiBwbHVnaW5Qcm9jZXNzUHRyID0g
cGx1Z2luUHJvY2Vzcy5wdHIoKTsKIAotICAgICAgICAgICAgbV9wbHVnaW5Qcm9jZXNzZXMuYXBw
ZW5kKHBsdWdpblByb2Nlc3MucmVsZWFzZSgpKTsKKyAgICAgICAgICAgIG1fcGx1Z2luUHJvY2Vz
c2VzLmFwcGVuZChXVEZNb3ZlKHBsdWdpblByb2Nlc3MpKTsKICAgICAgICAgICAgIHJldHVybiBw
bHVnaW5Qcm9jZXNzUHRyOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IGI0Y2E1MzQ5OTY4
MDc5ZWM0MmM3NDgyODQ4NjZkZDdiZTM3ODY1YWMuLjE1Yzk4ZWFjOWJlYTA4NzIwZTY3YjM4YjVm
NWQ2ZjNkMmE5M2VkOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9y
YWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3Rv
cmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKQEAgLTIxOSw5ICsyMTksOSBAQCB2b2lkIFN0b3JhZ2VN
YW5hZ2VyOjpTdG9yYWdlQXJlYTo6c2V0SXRlbShJUEM6OkNvbm5lY3Rpb24qIHNvdXJjZUNvbm5l
Y3Rpb24sIHVpbgogCiAgICAgU3RyaW5nIG9sZFZhbHVlOwogCi0gICAgUmVmUHRyPFN0b3JhZ2VN
YXA+IG5ld1N0b3JhZ2VNYXAgPSBtX3N0b3JhZ2VNYXAtPnNldEl0ZW0oa2V5LCB2YWx1ZSwgb2xk
VmFsdWUsIHF1b3RhRXhjZXB0aW9uKTsKKyAgICBhdXRvIG5ld1N0b3JhZ2VNYXAgPSBtX3N0b3Jh
Z2VNYXAtPnNldEl0ZW0oa2V5LCB2YWx1ZSwgb2xkVmFsdWUsIHF1b3RhRXhjZXB0aW9uKTsKICAg
ICBpZiAobmV3U3RvcmFnZU1hcCkKLSAgICAgICAgbV9zdG9yYWdlTWFwID0gbmV3U3RvcmFnZU1h
cC5yZWxlYXNlKCk7CisgICAgICAgIG1fc3RvcmFnZU1hcCA9IFdURk1vdmUobmV3U3RvcmFnZU1h
cCk7CiAKICAgICBpZiAocXVvdGFFeGNlcHRpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTIzNyw5
ICsyMzcsOSBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6cmVtb3ZlSXRlbShJ
UEM6OkNvbm5lY3Rpb24qIHNvdXJjZUNvbm5lY3Rpb24sCiAgICAgb3BlbkRhdGFiYXNlQW5kSW1w
b3J0SXRlbXNJZk5lZWRlZCgpOwogCiAgICAgU3RyaW5nIG9sZFZhbHVlOwotICAgIFJlZlB0cjxT
dG9yYWdlTWFwPiBuZXdTdG9yYWdlTWFwID0gbV9zdG9yYWdlTWFwLT5yZW1vdmVJdGVtKGtleSwg
b2xkVmFsdWUpOworICAgIGF1dG8gbmV3U3RvcmFnZU1hcCA9IG1fc3RvcmFnZU1hcC0+cmVtb3Zl
SXRlbShrZXksIG9sZFZhbHVlKTsKICAgICBpZiAobmV3U3RvcmFnZU1hcCkKLSAgICAgICAgbV9z
dG9yYWdlTWFwID0gbmV3U3RvcmFnZU1hcC5yZWxlYXNlKCk7CisgICAgICAgIG1fc3RvcmFnZU1h
cCA9IFdURk1vdmUobmV3U3RvcmFnZU1hcCk7CiAKICAgICBpZiAob2xkVmFsdWUuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTY4NiwxMCArNjg2LDEwIEBAIHZvaWQgU3RvcmFnZU1hbmFn
ZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU1hcChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVp
bnQ2NF90CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGEgbWVzc2FnZSBjaGVjay4KICAg
ICBBU1NFUlQobG9jYWxTdG9yYWdlTmFtZXNwYWNlKTsKIAotICAgIFJlZlB0cjxTdG9yYWdlQXJl
YT4gc3RvcmFnZUFyZWEgPSBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmdldE9yQ3JlYXRlU3RvcmFn
ZUFyZWEoc2VjdXJpdHlPcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCkpOworICAgIGF1dG8gc3Rv
cmFnZUFyZWEgPSBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEo
c2VjdXJpdHlPcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCkpOwogICAgIHN0b3JhZ2VBcmVhLT5h
ZGRMaXN0ZW5lcihjb25uZWN0aW9uLCBzdG9yYWdlTWFwSUQpOwogCi0gICAgcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSA9IHN0b3JhZ2VBcmVhLnJlbGVhc2UoKTsKKyAgICByZXN1bHQuaXRlcmF0b3It
PnZhbHVlID0gV1RGTW92ZShzdG9yYWdlQXJlYSk7CiB9CiAKIHZvaWQgU3RvcmFnZU1hbmFnZXI6
OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU1hcChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBj
b25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHRvcExldmVsT3JpZ2luRGF0YSwgY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbkRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCmluZGV4IDI3MzQzMTIzMmIyY2I1NDI4Mzdm
MjIxYzZmMWVkZjVhM2Y5MjgwNzAuLjBmNzEzYTlkMDQyODRlNmNkZmQ1ZWUwMTY2MGUzNzVjOWE3
OGRmMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2Fy
ZExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExp
c3QuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZExpc3Q6OmFkZEl0
ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogbmV3SXRlbSkKICAgICAgICAgcmVtb3ZlZEl0ZW1z
LnJlc2VydmVDYXBhY2l0eShtX2VudHJpZXMuc2l6ZSgpIC0gdGFyZ2V0U2l6ZSk7CiAgICAgICAg
IHdoaWxlIChtX2VudHJpZXMuc2l6ZSgpID4gdGFyZ2V0U2l6ZSkgewogICAgICAgICAgICAgZGlk
UmVtb3ZlSXRlbSgqbV9lbnRyaWVzLmxhc3QoKSk7Ci0gICAgICAgICAgICByZW1vdmVkSXRlbXMu
YXBwZW5kKG1fZW50cmllcy5sYXN0KCkucmVsZWFzZSgpKTsKKyAgICAgICAgICAgIHJlbW92ZWRJ
dGVtcy5hcHBlbmQoV1RGTW92ZShtX2VudHJpZXMubGFzdCgpKSk7CiAgICAgICAgICAgICBtX2Vu
dHJpZXMucmVtb3ZlTGFzdCgpOwogICAgICAgICB9CiAKQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lk
IFdlYkJhY2tGb3J3YXJkTGlzdDo6YWRkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBuZXdJ
dGVtKQogICAgICAgICAvLyAob3IgZXZlbiBpZiB3ZSBhcmUsIGlmIHdlIG9ubHkgd2FudCAxIGVu
dHJ5KS4KICAgICAgICAgaWYgKG1fZW50cmllcy5zaXplKCkgPT0gbV9jYXBhY2l0eSAmJiAobV9j
dXJyZW50SW5kZXggfHwgbV9jYXBhY2l0eSA9PSAxKSkgewogICAgICAgICAgICAgZGlkUmVtb3Zl
SXRlbSgqbV9lbnRyaWVzWzBdKTsKLSAgICAgICAgICAgIHJlbW92ZWRJdGVtcy5hcHBlbmQobV9l
bnRyaWVzWzBdLnJlbGVhc2UoKSk7CisgICAgICAgICAgICByZW1vdmVkSXRlbXMuYXBwZW5kKFdU
Rk1vdmUobV9lbnRyaWVzWzBdKSk7CiAgICAgICAgICAgICBtX2VudHJpZXMucmVtb3ZlKDApOwog
CiAgICAgICAgICAgICBpZiAobV9lbnRyaWVzLmlzRW1wdHkoKSkKQEAgLTEyNyw3ICsxMjcsNyBA
QCB2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdDo6YWRkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVt
KiBuZXdJdGVtKQogICAgICAgICAgICAgaWYgKCFtX2VudHJpZXNbaV0pCiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICBkaWRSZW1vdmVJdGVtKCptX2VudHJpZXNbaV0pOwot
ICAgICAgICAgICAgcmVtb3ZlZEl0ZW1zLmFwcGVuZChtX2VudHJpZXNbaV0ucmVsZWFzZSgpKTsK
KyAgICAgICAgICAgIHJlbW92ZWRJdGVtcy5hcHBlbmQoV1RGTW92ZShtX2VudHJpZXNbaV0pKTsK
ICAgICAgICAgfQogICAgICAgICBtX2VudHJpZXMuY2xlYXIoKTsKICAgICB9CkBAIC0zNTcsNyAr
MzU3LDcgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZExpc3Q6OmNsZWFyKCkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKIAogICAgICAgICAgICAgZGlkUmVtb3ZlSXRlbSgqbV9lbnRyaWVzW2ldKTsK
LSAgICAgICAgICAgIHJlbW92ZWRJdGVtcy5hcHBlbmQobV9lbnRyaWVzW2ldLnJlbGVhc2UoKSk7
CisgICAgICAgICAgICByZW1vdmVkSXRlbXMuYXBwZW5kKFdURk1vdmUobV9lbnRyaWVzW2ldKSk7
CiAgICAgICAgIH0KIAogICAgICAgICBtX2VudHJpZXMuY2xlYXIoKTsKQEAgLTM3NiwxNCArMzc2
LDE0IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0OjpjbGVhcigpCiAgICAgcmVtb3ZlZEl0ZW1z
LnJlc2VydmVDYXBhY2l0eShzaXplIC0gMSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBz
aXplOyArK2kpIHsKICAgICAgICAgaWYgKGkgIT0gbV9jdXJyZW50SW5kZXggJiYgbV9oYXNDdXJy
ZW50SW5kZXggJiYgbV9lbnRyaWVzW2ldKQotICAgICAgICAgICAgcmVtb3ZlZEl0ZW1zLmFwcGVu
ZChtX2VudHJpZXNbaV0ucmVsZWFzZSgpKTsKKyAgICAgICAgICAgIHJlbW92ZWRJdGVtcy5hcHBl
bmQoV1RGTW92ZShtX2VudHJpZXNbaV0pKTsKICAgICB9CiAKICAgICBtX2N1cnJlbnRJbmRleCA9
IDA7CiAKICAgICBpZiAoY3VycmVudEl0ZW0pIHsKICAgICAgICAgbV9lbnRyaWVzLnNocmluaygx
KTsKLSAgICAgICAgbV9lbnRyaWVzWzBdID0gY3VycmVudEl0ZW0ucmVsZWFzZSgpOworICAgICAg
ICBtX2VudHJpZXNbMF0gPSBXVEZNb3ZlKGN1cnJlbnRJdGVtKTsKICAgICB9IGVsc2UgewogICAg
ICAgICBtX2VudHJpZXMuY2xlYXIoKTsKICAgICAgICAgbV9oYXNDdXJyZW50SW5kZXggPSBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2Vy
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94
eS5jcHAKaW5kZXggMmMzMGQ2NDA0NTMyYzZhNDRmMjJiYWJjZjkwM2NkYmNlMjRkZWRkYy4uYzZm
ZjkzNjAzZWRhOWQwODFiODU2NDA0Yzk0ODdmMTNkN2VlYjQ5YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKQEAgLTk1LDkgKzk1
LDkgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlcmVmV2ViQ29udGV4dFN1cHBsZW1l
bnQoKQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SG9zdG5hbWVzV2l0aENvb2tp
ZXMoc3RkOjpmdW5jdGlvbjx2b2lkIChBUEk6OkFycmF5KiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
IGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgUmVmUHRyPEFycmF5Q2FsbGJhY2s+IGNhbGxiYWNr
ID0gQXJyYXlDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOworICAg
IGF1dG8gY2FsbGJhY2sgPSBBcnJheUNhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSk7CiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lE
KCk7Ci0gICAgbV9hcnJheUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgY2FsbGJhY2sucmVsZWFz
ZSgpKTsKKyAgICBtX2FycmF5Q2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxi
YWNrKSk7CiAKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1
bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkdldEhvc3RuYW1l
c1dpdGhDb29raWVzKGNhbGxiYWNrSUQpKTsKIH0KQEAgLTE2NywxMCArMTY3LDEwIEBAIHZvaWQg
V2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29r
aWVBY2NlcHRQb2xpY3kgcG9sCiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5KHN0ZDo6ZnVuY3Rpb248dm9pZCAoSFRUUENvb2tpZUFjY2VwdFBv
bGljeSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgUmVm
UHRyPEhUVFBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFjaz4gY2FsbGJhY2sgPSBIVFRQQ29va2ll
QWNjZXB0UG9saWN5Q2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsK
KyAgICBhdXRvIGNhbGxiYWNrID0gSFRUUENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrOjpjcmVh
dGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiAKICAgICB1aW50NjRfdCBjYWxsYmFja0lE
ID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKLSAgICBtX2h0dHBDb29raWVBY2NlcHRQb2xpY3lD
YWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIGNhbGxiYWNrLnJlbGVhc2UoKSk7CisgICAgbV9odHRw
Q29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxi
YWNrKSk7CiAKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1
bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkdldEhUVFBDb29r
aWVBY2NlcHRQb2xpY3koY2FsbGJhY2tJRCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAppbmRleCBkNDNkZDE2ZmE0YmQ4Nzg0YjU3N2I4YWMxYTAwOTdkMjI3
MDRjYjU0Li40ZGJhZjY5YjdmZDAzOTdmZjRlN2RmMTViOTQ4OGM1OThiODNjZDBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNjE2OCwxMSArNjE2OCwx
MSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zdGFsbFZpZXdTdGF0ZUNoYW5nZUNvbXBsZXRpb25I
YW5kbGVyKHZvaWQgKF5jb21wbGV0aW9uSGFuZAogICAgIH0KIAogICAgIGF1dG8gY29waWVkQ29t
cGxldGlvbkhhbmRsZXIgPSBCbG9ja19jb3B5KGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICBSZWZQ
dHI8Vm9pZENhbGxiYWNrPiB2b2lkQ2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShbY29w
aWVkQ29tcGxldGlvbkhhbmRsZXJdIChDYWxsYmFja0Jhc2U6OkVycm9yKSB7CisgICAgYXV0byB2
b2lkQ2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShbY29waWVkQ29tcGxldGlvbkhhbmRs
ZXJdIChDYWxsYmFja0Jhc2U6OkVycm9yKSB7CiAgICAgICAgIGNvcGllZENvbXBsZXRpb25IYW5k
bGVyKCk7CiAgICAgICAgIEJsb2NrX3JlbGVhc2UoY29waWVkQ29tcGxldGlvbkhhbmRsZXIpOwog
ICAgIH0sIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7
Ci0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dCh2b2lkQ2FsbGJhY2su
cmVsZWFzZSgpKTsKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdU
Rk1vdmUodm9pZENhbGxiYWNrKSk7CiAgICAgbV9uZXh0Vmlld1N0YXRlQ2hhbmdlQ2FsbGJhY2tz
LmFwcGVuZChjYWxsYmFja0lEKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cmVmZXJlbmNlcy5jcHAKaW5kZXggNDRiMzYzM2ZjYzFlNjNmZDZkZjg3NjFlMTkwZjEwMDJjODUz
ZjRmYi4uODA5YWE4MzYxOTMzNDg5NjQ2NmQwMDVkZjVmMDNkMzVmYmFmMjVhMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuY3BwCkBAIC00NSwxNCArNDUsMTQg
QEAgUmVmPFdlYlByZWZlcmVuY2VzPiBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW4KIAogUGFzc1JlZlB0cjxXZWJQcmVmZXJlbmNlcz4g
V2ViUHJlZmVyZW5jZXM6OmNyZWF0ZVdpdGhMZWdhY3lEZWZhdWx0cyhjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYga2V5UHJlZml4LCBjb25zdCBTdHJpbmcmIGdsb2JhbERl
YnVnS2V5UHJlZml4KQogewotICAgIFJlZlB0cjxXZWJQcmVmZXJlbmNlcz4gcHJlZmVyZW5jZXMg
PSBhZG9wdFJlZihuZXcgV2ViUHJlZmVyZW5jZXMoaWRlbnRpZmllciwga2V5UHJlZml4LCBnbG9i
YWxEZWJ1Z0tleVByZWZpeCkpOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNl
czo6Y3JlYXRlKGlkZW50aWZpZXIsIGtleVByZWZpeCwgZ2xvYmFsRGVidWdLZXlQcmVmaXgpOwog
ICAgIC8vIEZJWE1FOiBUaGUgcmVnaXN0ZXJEZWZhdWx0Li4uVmFsdWVGb3JLZXkgbWFjaGluZXJ5
IGlzIHVubmVjZXNzYXJpbHkgaGVhdnl3ZWlnaHQgYW5kIGNvbXBsaWNhdGVkLgogICAgIC8vIFdl
IGNhbiBqdXN0IGNvbXB1dGUgZGlmZmVyZW50IGRlZmF1bHRzIGZvciBtb2Rlcm4gYW5kIGxlZ2Fj
eSBBUElzIGluIFdlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaCBtYWNyb3MuCiAgICAgcHJlZmVy
ZW5jZXMtPnJlZ2lzdGVyRGVmYXVsdEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6
amF2YUVuYWJsZWRLZXkoKSwgdHJ1ZSk7CiAgICAgcHJlZmVyZW5jZXMtPnJlZ2lzdGVyRGVmYXVs
dEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6amF2YUVuYWJsZWRGb3JMb2NhbEZp
bGVzS2V5KCksIHRydWUpOwogICAgIHByZWZlcmVuY2VzLT5yZWdpc3RlckRlZmF1bHRCb29sVmFs
dWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnBsdWdpbnNFbmFibGVkS2V5KCksIHRydWUpOwog
ICAgIHByZWZlcmVuY2VzLT5yZWdpc3RlckRlZmF1bHRVSW50MzJWYWx1ZUZvcktleShXZWJQcmVm
ZXJlbmNlc0tleTo6c3RvcmFnZUJsb2NraW5nUG9saWN5S2V5KCksIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luOjpBbGxvd0FsbFN0b3JhZ2UpOwotICAgIHJldHVybiBwcmVmZXJlbmNlcy5yZWxlYXNl
KCk7CisgICAgcmV0dXJuIFdURk1vdmUocHJlZmVyZW5jZXMpOwogfQogCiBXZWJQcmVmZXJlbmNl
czo6V2ViUHJlZmVyZW5jZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGtleVByZWZpeCwgY29uc3QgU3RyaW5nJiBnbG9iYWxEZWJ1Z0tleVByZWZpeCkKQEAgLTc4LDcg
Kzc4LDcgQEAgV2ViUHJlZmVyZW5jZXM6On5XZWJQcmVmZXJlbmNlcygpCiAKIFBhc3NSZWZQdHI8
V2ViUHJlZmVyZW5jZXM+IFdlYlByZWZlcmVuY2VzOjpjb3B5KCkgY29uc3QKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFdlYlByZWZlcmVuY2VzKCp0aGlzKSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgV2ViUHJlZmVyZW5jZXMoKnRoaXMpKTsKIH0KIAogdm9pZCBXZWJQcmVmZXJlbmNl
czo6YWRkUGFnZShXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDhjNjIwNTM2NWQ4Y2RmMGQyZTEwMDk0
ZTg0YjYxNDM2YTU3ZDJiMDkuLmE3ZTAzNDZmMDNkOWYxODkwMTRhNmU5ZDQ1Yzk4MGJlMDlkMmUw
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAt
MjM4LDcgKzIzOCw3IEBAIFdlYlByb2Nlc3NQb29sOjp+V2ViUHJvY2Vzc1Bvb2woKQogCiAgICAg
bV9pY29uRGF0YWJhc2UtPmludmFsaWRhdGUoKTsKICAgICBtX2ljb25EYXRhYmFzZS0+Y2xlYXJQ
cm9jZXNzUG9vbCgpOwotICAgIFdlYkljb25EYXRhYmFzZSogcmF3SWNvbkRhdGFiYXNlID0gbV9p
Y29uRGF0YWJhc2UucmVsZWFzZSgpLmxlYWtSZWYoKTsKKyAgICBXZWJJY29uRGF0YWJhc2UqIHJh
d0ljb25EYXRhYmFzZSA9IG1faWNvbkRhdGFiYXNlLmxlYWtSZWYoKTsKICAgICByYXdJY29uRGF0
YWJhc2UtPmRlcmVmV2hlbkFwcHJvcHJpYXRlKCk7CiAKICAgICBpbnZhbGlkYXRlQ2FsbGJhY2tN
YXAobV9kaWN0aW9uYXJ5Q2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0lu
dmFsaWRhdGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmll
d1NuYXBzaG90U3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdTbmFw
c2hvdFN0b3JlLm1tCmluZGV4IDNmOGZjZmYxYTQxZTFjZDRlODRlMDhkMmZmY2RjMTU1MGQxZmQ4
MmIuLmQxOTM4NmMwNmM2ZWE5Y2NkMzg2N2Y3YjQ5MzQ1ZmU3ZmQ4YTYzMmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90U3RvcmUubW0KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZS5tbQpAQCAtMTE0
LDcgKzExNCw3IEBAIHZvaWQgVmlld1NuYXBzaG90U3RvcmU6OnJlY29yZFNuYXBzaG90KFdlYlBh
Z2VQcm94eSYgd2ViUGFnZVByb3h5LCBXZWJCYWNrRm9yd2FyCiAKICAgICB3ZWJQYWdlUHJveHku
d2lsbFJlY29yZE5hdmlnYXRpb25TbmFwc2hvdChpdGVtKTsKIAotICAgIFJlZlB0cjxWaWV3U25h
cHNob3Q+IHNuYXBzaG90ID0gd2ViUGFnZVByb3h5LnRha2VWaWV3U25hcHNob3QoKTsKKyAgICBh
dXRvIHNuYXBzaG90ID0gd2ViUGFnZVByb3h5LnRha2VWaWV3U25hcHNob3QoKTsKICAgICBpZiAo
IXNuYXBzaG90KQogICAgICAgICByZXR1cm47CiAKQEAgLTEyMiw3ICsxMjIsNyBAQCB2b2lkIFZp
ZXdTbmFwc2hvdFN0b3JlOjpyZWNvcmRTbmFwc2hvdChXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94
eSwgV2ViQmFja0ZvcndhcgogICAgIHNuYXBzaG90LT5zZXREZXZpY2VTY2FsZUZhY3Rvcih3ZWJQ
YWdlUHJveHkuZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgc25hcHNob3QtPnNldEJhY2tncm91
bmRDb2xvcih3ZWJQYWdlUHJveHkucGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yKCkpOwogCi0g
ICAgaXRlbS5zZXRTbmFwc2hvdChzbmFwc2hvdC5yZWxlYXNlKCkpOworICAgIGl0ZW0uc2V0U25h
cHNob3QoV1RGTW92ZShzbmFwc2hvdCkpOwogfQogCiB2b2lkIFZpZXdTbmFwc2hvdFN0b3JlOjpk
aXNjYXJkU25hcHNob3RJbWFnZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQppbmRleCBmYWExNTQz
MDkyNjgzNDFhOTVlZjhhZTM2MjUyN2JlNGU2OGM3NmM2Li5mMmQ3YTkyN2Y2Yzk2MjcxOTBkYjI4
ZjQ0MWEzYzFhOGNiYjAxMzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQpAQCAtMjYzLDcgKzI2
Myw3IEBAIC0gKFBhc3NSZWZQdHI8QVBJOjpIaXRUZXN0UmVzdWx0Pilfd2ViSGl0VGVzdFJlc3Vs
dAogICAgIGVsc2UKICAgICAgICAgaGl0VGVzdFJlc3VsdCA9IF9wYWdlLT5sYXN0TW91c2VNb3Zl
SGl0VGVzdFJlc3VsdCgpOwogCi0gICAgcmV0dXJuIGhpdFRlc3RSZXN1bHQucmVsZWFzZSgpOwor
ICAgIHJldHVybiBXVEZNb3ZlKGhpdFRlc3RSZXN1bHQpOwogfQogCiAjcHJhZ21hIG1hcmsgSW1t
ZWRpYXRlIGFjdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
V0tQcmludGluZ1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLUHJpbnRp
bmdWaWV3Lm1tCmluZGV4IDdiOWQ4ODliMWQ0YTc1Y2M2ZDhkZTdmMjczMGRjYTkyZDVhNzE5YjMu
LjNiMTBjZTc1ZjE1ZWM2YjM5ZjExZTYwYTQ2MWI4NmNmNzg1YWU0NGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcubW0KKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbQpAQCAtMzQwLDcgKzM0MCw3
IEBAIC0gKEJPT0wpX2Fza1BhZ2VUb0NvbXB1dGVQYWdlUmVjdHMKICAgICBBU1NFUlQoIV9leHBl
Y3RlZENvbXB1dGVkUGFnZXNDYWxsYmFjayk7CiAKICAgICBJUENDYWxsYmFja0NvbnRleHQqIGNv
bnRleHQgPSBuZXcgSVBDQ2FsbGJhY2tDb250ZXh0OwotICAgIFJlZlB0cjxDb21wdXRlZFBhZ2Vz
Q2FsbGJhY2s+IGNhbGxiYWNrID0gQ29tcHV0ZWRQYWdlc0NhbGxiYWNrOjpjcmVhdGUoW2NvbnRl
eHRdKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgcGFnZVJlY3RzLCBkb3VibGUgdG90
YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsK
KyAgICBhdXRvIGNhbGxiYWNrID0gQ29tcHV0ZWRQYWdlc0NhbGxiYWNrOjpjcmVhdGUoW2NvbnRl
eHRdKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgcGFnZVJlY3RzLCBkb3VibGUgdG90
YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsK
ICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElQQ0NhbGxiYWNrQ29udGV4dD4gY29udGV4dERlbGV0
ZXIoY29udGV4dCk7CiAgICAgICAgIHBhZ2VEaWRDb21wdXRlUGFnZVJlY3RzKHBhZ2VSZWN0cywg
dG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCBjb250ZXh0KTsKICAgICB9KTsKQEAgLTM0OCw3
ICszNDgsNyBAQCAtIChCT09MKV9hc2tQYWdlVG9Db21wdXRlUGFnZVJlY3RzCiAgICAgY29udGV4
dC0+dmlldyA9IHNlbGY7CiAgICAgY29udGV4dC0+Y2FsbGJhY2tJRCA9IF9leHBlY3RlZENvbXB1
dGVkUGFnZXNDYWxsYmFjazsKIAotICAgIF93ZWJGcmFtZS0+cGFnZSgpLT5jb21wdXRlUGFnZXNG
b3JQcmludGluZyhfd2ViRnJhbWUuZ2V0KCksIFByaW50SW5mbyhbX3ByaW50T3BlcmF0aW9uIHBy
aW50SW5mb10pLCBjYWxsYmFjay5yZWxlYXNlKCkpOworICAgIF93ZWJGcmFtZS0+cGFnZSgpLT5j
b21wdXRlUGFnZXNGb3JQcmludGluZyhfd2ViRnJhbWUuZ2V0KCksIFByaW50SW5mbyhbX3ByaW50
T3BlcmF0aW9uIHByaW50SW5mb10pLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgcmV0dXJuIFlF
UzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1h
Yy5tbQppbmRleCA0M2ZhNmYyMDY1ZDBjMTI5ZWRmZjEyYTM3YWUyOTFjY2Q0MmRmMmRkLi45NWQw
M2M5MjQwZWZlNTlkNThhMmVmMGM1MjIxYTI4MGViM2NkY2U5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMjcxLDggKzI3MSw4IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpyZXBsYWNlU2VsZWN0aW9uV2l0aFBhc3RlYm9hcmREYXRhKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXREcmFnSW1hZ2UoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVu
dFBvc2l0aW9uLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgZHJhZ0ltYWdlSGFuZGxl
LCBib29sIGlzTGlua0RyYWcpCiB7Ci0gICAgaWYgKFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGRy
YWdJbWFnZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGRyYWdJbWFnZUhhbmRsZSkpCi0gICAg
ICAgIG1fcGFnZUNsaWVudC5zZXREcmFnSW1hZ2UoY2xpZW50UG9zaXRpb24sIGRyYWdJbWFnZS5y
ZWxlYXNlKCksIGlzTGlua0RyYWcpOworICAgIGlmIChhdXRvIGRyYWdJbWFnZSA9IFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlKGRyYWdJbWFnZUhhbmRsZSkpCisgICAgICAgIG1fcGFnZUNsaWVudC5z
ZXREcmFnSW1hZ2UoY2xpZW50UG9zaXRpb24sIFdURk1vdmUoZHJhZ0ltYWdlKSwgaXNMaW5rRHJh
Zyk7CiAKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkU3RhcnREcmFn
KCksIG1fcGFnZUlEKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLm1tIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9j
ZXNzUGx1Z0luRnJhbWUubW0KaW5kZXggZmRhZjY3NThkNmE1ZmQ0MzQ4YzY0ZDc0NDNmZjg0NTk5
YzViYjEzOC4uMzJkOGRjNzQ4YjUyZjViN2YzZGRmOTUyYjZiNGZiZTcyZjU2MDY5NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2Ev
V0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUubW0KQEAg
LTcxLDggKzcxLDggQEAgLSAoSlNDb250ZXh0ICopanNDb250ZXh0Rm9yV29ybGQ6KFdLV2ViUHJv
Y2Vzc1BsdWdJblNjcmlwdFdvcmxkICopd29ybGQKIAogLSAoV0tXZWJQcm9jZXNzUGx1Z0luSGl0
VGVzdFJlc3VsdCAqKWhpdFRlc3Q6KENHUG9pbnQpcG9pbnQKIHsKLSAgICBSZWZQdHI8SW5qZWN0
ZWRCdW5kbGVIaXRUZXN0UmVzdWx0PiBoaXRUZXN0UmVzdWx0ID0gX2ZyYW1lLT5oaXRUZXN0KFdl
YkNvcmU6OkludFBvaW50KHBvaW50KSk7Ci0gICAgcmV0dXJuIFt3cmFwcGVyKCpoaXRUZXN0UmVz
dWx0LnJlbGVhc2UoKS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIGhpdFRlc3RS
ZXN1bHQgPSBfZnJhbWUtPmhpdFRlc3QoV2ViQ29yZTo6SW50UG9pbnQocG9pbnQpKTsKKyAgICBy
ZXR1cm4gW3dyYXBwZXIoKmhpdFRlc3RSZXN1bHQubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CiB9
CiAKIC0gKEpTVmFsdWUgKilqc05vZGVGb3JOb2RlSGFuZGxlOihXS1dlYlByb2Nlc3NQbHVnSW5O
b2RlSGFuZGxlICopbm9kZUhhbmRsZSBpbldvcmxkOihXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRX
b3JsZCAqKXdvcmxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0Lm1tIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQ
cm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdC5tbQppbmRleCA1MWRlZWE4MTUzOTg2ZWEwMzFhYTAy
MTg5M2FjMjg0NTBjOTRkOTNmLi43ZWE4NmM5MTFlNGQ2NDJlNWZjNjMyNTYyNDNkMjJhNWMxZGEz
MmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vz
c1BsdWdJbkhpdFRlc3RSZXN1bHQubW0KQEAgLTQ0LDggKzQ0LDggQEAgLSAodm9pZClkZWFsbG9j
CiAKIC0gKFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUgKilub2RlSGFuZGxlCiB7Ci0gICAg
UmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gbm9kZUhhbmRsZSA9IF9oaXRUZXN0UmVz
dWx0LT5ub2RlSGFuZGxlKCk7Ci0gICAgcmV0dXJuIG5vZGVIYW5kbGUgPyBbd3JhcHBlcigqbm9k
ZUhhbmRsZS5yZWxlYXNlKCkubGVha1JlZigpKSBhdXRvcmVsZWFzZV0gOiBuaWw7CisgICAgYXV0
byBub2RlSGFuZGxlID0gX2hpdFRlc3RSZXN1bHQtPm5vZGVIYW5kbGUoKTsKKyAgICByZXR1cm4g
bm9kZUhhbmRsZSA/IFt3cmFwcGVyKCpub2RlSGFuZGxlLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2Vd
IDogbmlsOwogfQogCiAjcHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9jb2wgaW1wbGVtZW50YXRp
b24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5O
b2RlSGFuZGxlLm1tCmluZGV4IDBiMWRmZGZmZTE1NzdiMjllY2Y2MmMzYjE1MmM4YzE5NzdkMjAz
NDcuLjdiMjg3ZmM3NTRkYzJjYjhkYzE0NGJjYmI3NDFjYTRiYzE2ZjFkNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2Vi
UHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5t
bQpAQCAtNDgsMjAgKzQ4LDIwIEBAICsgKFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUgKilu
b2RlSGFuZGxlV2l0aEpTVmFsdWU6KEpTVmFsdWUgKil2YWx1ZSBpbkNvbnRlCiB7CiAgICAgSlND
b250ZXh0UmVmIGNvbnRleHRSZWYgPSBbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdOwogICAg
IEpTT2JqZWN0UmVmIG9iamVjdFJlZiA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0UmVmLCBbdmFs
dWUgSlNWYWx1ZVJlZl0sIDApOwotICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+
IG5vZGVIYW5kbGUgPSBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmdldE9yQ3JlYXRlKGNvbnRl
eHRSZWYsIG9iamVjdFJlZik7CisgICAgYXV0byBub2RlSGFuZGxlID0gSW5qZWN0ZWRCdW5kbGVO
b2RlSGFuZGxlOjpnZXRPckNyZWF0ZShjb250ZXh0UmVmLCBvYmplY3RSZWYpOwogICAgIGlmICgh
bm9kZUhhbmRsZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiBbd3JhcHBlcigq
bm9kZUhhbmRsZS5yZWxlYXNlKCkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJu
IFt3cmFwcGVyKCpub2RlSGFuZGxlLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOwogfQogCiAtIChX
S1dlYlByb2Nlc3NQbHVnSW5GcmFtZSAqKWh0bWxJRnJhbWVFbGVtZW50Q29udGVudEZyYW1lCiB7
Ci0gICAgUmVmUHRyPFdlYkZyYW1lPiBmcmFtZSA9IF9ub2RlSGFuZGxlLT5odG1sSUZyYW1lRWxl
bWVudENvbnRlbnRGcmFtZSgpOworICAgIGF1dG8gZnJhbWUgPSBfbm9kZUhhbmRsZS0+aHRtbElG
cmFtZUVsZW1lbnRDb250ZW50RnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1
cm4gbmlsOwogCi0gICAgcmV0dXJuIFt3cmFwcGVyKCpmcmFtZS5yZWxlYXNlKCkubGVha1JlZigp
KSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIFt3cmFwcGVyKCpmcmFtZS5sZWFrUmVmKCkpIGF1
dG9yZWxlYXNlXTsKIH0KIAogI2lmIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1Bs
dWdJblNjcmlwdFdvcmxkLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQubW0KaW5kZXggNmMx
MDYxZGQ4MDM0OTFmNDdlZTkzM2UwYTk3NGQzZDJkY2YzMmVkZi4uMWFlYzBiOTIyZWUzZWVkOWI0
YTIxZGQ3NTYyNmE2Zjg1OGM0NjE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29y
bGQubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Q29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQubW0KQEAgLTM2LDggKzM2LDggQEAg
QGltcGxlbWVudGF0aW9uIFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkIHsKIAogKyAoV0tX
ZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgKil3b3JsZAogewotICAgIFJlZlB0cjxJbmplY3Rl
ZEJ1bmRsZVNjcmlwdFdvcmxkPiBzY3JpcHRXb3JsZCA9IEluamVjdGVkQnVuZGxlU2NyaXB0V29y
bGQ6OmNyZWF0ZSgpOwotICAgIHJldHVybiBbd3JhcHBlcigqc2NyaXB0V29ybGQucmVsZWFzZSgp
LmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOworICAgIGF1dG8gc2NyaXB0V29ybGQgPSBJbmplY3Rl
ZEJ1bmRsZVNjcmlwdFdvcmxkOjpjcmVhdGUoKTsKKyAgICByZXR1cm4gW3dyYXBwZXIoc2NyaXB0
V29ybGQubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CiB9CiAKICsgKFdLV2ViUHJvY2Vzc1BsdWdJ
blNjcmlwdFdvcmxkICopbm9ybWFsV29ybGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKaW5kZXggODVi
OGY5MjJmMWVjMGMxMmVjZDQzMDFlNGEwOGJlZWU1YjQwZjdmMi4uZTg4NTNkYmQwNjI3YjY5ZGM0
OTg0OTBmY2VjNWJkOGQzNzEwYzUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKQEAgLTYyLDcg
KzYyLDcgQEAgdm9pZCBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoV0tCdW5kbGVSZWYg
YnVuZGxlUmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmEKICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+
IHJldHVybkRhdGE7CiAgICAgdG9JbXBsKGJ1bmRsZVJlZiktPnBvc3RTeW5jaHJvbm91c01lc3Nh
Z2UodG9XVEZTdHJpbmcobWVzc2FnZU5hbWVSZWYpLCB0b0ltcGwobWVzc2FnZUJvZHlSZWYpLCBy
ZXR1cm5EYXRhKTsKICAgICBpZiAocmV0dXJuRGF0YVJlZikKLSAgICAgICAgKnJldHVybkRhdGFS
ZWYgPSB0b0FQSShyZXR1cm5EYXRhLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgICAgICAqcmV0
dXJuRGF0YVJlZiA9IHRvQVBJKHJldHVybkRhdGEubGVha1JlZigpKTsKIH0KIAogV0tDb25uZWN0
aW9uUmVmIFdLQnVuZGxlR2V0QXBwbGljYXRpb25Db25uZWN0aW9uKFdLQnVuZGxlUmVmIGJ1bmRs
ZVJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lv
bi5jcHAKaW5kZXggYjY2MGU4MTVmYjU3NWFkN2U0YzZhNTE4M2M4MzljZWU1NzU4NTQ3OS4uZmMz
ODFmNDZhNjQxZmEwNzc1YzNlNTQ2NDg2MGQ5ZTA0ZjQ4M2UyYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZURPTVdpbmRv
d0V4dGVuc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5jcHAKQEAgLTQxLDcgKzQxLDcg
QEAgV0tUeXBlSUQgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25HZXRUeXBlSUQoKQogV0tCdW5k
bGVET01XaW5kb3dFeHRlbnNpb25SZWYgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25DcmVhdGUo
V0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiB3b3JsZCkKIHsK
ICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24+IGV4dGVuc2lvbiA9
IEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uOjpjcmVhdGUodG9JbXBsKGZyYW1lKSwg
dG9JbXBsKHdvcmxkKSk7Ci0gICAgcmV0dXJuIHRvQVBJKGV4dGVuc2lvbi5yZWxlYXNlKCkubGVh
a1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkoZXh0ZW5zaW9uLmxlYWtSZWYoKSk7CiB9CiAKIFdL
QnVuZGxlRnJhbWVSZWYgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25HZXRGcmFtZShXS0J1bmRs
ZURPTVdpbmRvd0V4dGVuc2lvblJlZiBleHRlbnNpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSGl0VGVzdFJlc3Vs
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggNDZmNjk5OTI2YTIxNWE4N2RhYzExOGFlZmUw
NTY0ZTZiYTI3NzRmNS4uMmU0YTdiNjMxZDEzMWNhMTc2ZGM0ZDFiMTgxNWQ4ODE5ZjYwOTY4MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZUhpdFRlc3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcApAQCAtNDIs
MTMgKzQyLDEzIEBAIFdLVHlwZUlEIFdLQnVuZGxlSGl0VGVzdFJlc3VsdEdldFR5cGVJRCgpCiBX
S0J1bmRsZU5vZGVIYW5kbGVSZWYgV0tCdW5kbGVIaXRUZXN0UmVzdWx0Q29weU5vZGVIYW5kbGUo
V0tCdW5kbGVIaXRUZXN0UmVzdWx0UmVmIGhpdFRlc3RSZXN1bHRSZWYpCiB7CiAgICAgUmVmUHRy
PEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gbm9kZUhhbmRsZSA9IHRvSW1wbChoaXRUZXN0UmVz
dWx0UmVmKS0+bm9kZUhhbmRsZSgpOwotICAgIHJldHVybiB0b0FQSShub2RlSGFuZGxlLnJlbGVh
c2UoKS5sZWFrUmVmKCkpOworICAgIHJldHVybiB0b0FQSShub2RlSGFuZGxlLmxlYWtSZWYoKSk7
CiB9CiAKIFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBXS0J1bmRsZUhpdFRlc3RSZXN1bHRDb3B5VVJM
RWxlbWVudEhhbmRsZShXS0J1bmRsZUhpdFRlc3RSZXN1bHRSZWYgaGl0VGVzdFJlc3VsdFJlZikK
IHsKICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiB1cmxFbGVtZW50Tm9kZUhh
bmRsZSA9IHRvSW1wbChoaXRUZXN0UmVzdWx0UmVmKS0+dXJsRWxlbWVudEhhbmRsZSgpOwotICAg
IHJldHVybiB0b0FQSSh1cmxFbGVtZW50Tm9kZUhhbmRsZS5yZWxlYXNlKCkubGVha1JlZigpKTsK
KyAgICByZXR1cm4gdG9BUEkodXJsRWxlbWVudE5vZGVIYW5kbGUubGVha1JlZigpKTsKIH0KIAog
V0tCdW5kbGVGcmFtZVJlZiBXS0J1bmRsZUhpdFRlc3RSZXN1bHRHZXRGcmFtZShXS0J1bmRsZUhp
dFRlc3RSZXN1bHRSZWYgaGl0VGVzdFJlc3VsdFJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOYXZpZ2F0aW9uQWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcAppbmRleCBlZTg5ODI3M2ZjZDNhZjI5NWQyMmE0
YjZlNWU5NGY5ZTQ3ZjRmZTA1Li5hM2MzNjNlMTk0MmNlYzA0Nzk1NWY5MmIwMzI3MGE5NTZkYWZl
OTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5hdmlnYXRpb25BY3Rpb24u
Y3BwCkBAIC01OCwxMyArNTgsMTMgQEAgV0tFdmVudE1vdXNlQnV0dG9uIFdLQnVuZGxlTmF2aWdh
dGlvbkFjdGlvbkdldEV2ZW50TW91c2VCdXR0b24oV0tCdW5kbGVOYXZpZ2F0aW8KIFdLQnVuZGxl
SGl0VGVzdFJlc3VsdFJlZiBXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb25Db3B5SGl0VGVzdFJlc3Vs
dChXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb25SZWYgbmF2aWdhdGlvbkFjdGlvblJlZikKIHsKICAg
ICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0PiBoaXRUZXN0UmVzdWx0ID0gdG9J
bXBsKG5hdmlnYXRpb25BY3Rpb25SZWYpLT5oaXRUZXN0UmVzdWx0KCk7Ci0gICAgcmV0dXJuIHRv
QVBJKGhpdFRlc3RSZXN1bHQucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJ
KGhpdFRlc3RSZXN1bHQubGVha1JlZigpKTsKIH0KIAogV0tCdW5kbGVOb2RlSGFuZGxlUmVmIFdL
QnVuZGxlTmF2aWdhdGlvbkFjdGlvbkNvcHlGb3JtRWxlbWVudChXS0J1bmRsZU5hdmlnYXRpb25B
Y3Rpb25SZWYgbmF2aWdhdGlvbkFjdGlvblJlZikKIHsKICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5k
bGVOb2RlSGFuZGxlPiBmb3JtRWxlbWVudCA9IHRvSW1wbChuYXZpZ2F0aW9uQWN0aW9uUmVmKS0+
Zm9ybUVsZW1lbnQoKTsKLSAgICByZXR1cm4gdG9BUEkoZm9ybUVsZW1lbnQucmVsZWFzZSgpLmxl
YWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKGZvcm1FbGVtZW50LmxlYWtSZWYoKSk7CiB9CiAK
IGJvb2wgV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uR2V0U2hvdWxkT3BlbkV4dGVybmFsVVJMcyhX
S0J1bmRsZU5hdmlnYXRpb25BY3Rpb25SZWYgbmF2aWdhdGlvbkFjdGlvblJlZikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVOb2RlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxlLmNwcAppbmRleCBlZTRmMzYyMjQ1NGI5MTc1MDM3
M2NmODRlZDY0MDU3NDI5MzlhN2NmLi40NmNmYTM0YTA4MGVlNWFmNGVlMDg4NzNlYjRjMzg4Nzcz
MjQzYjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlTm9kZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5vZGVIYW5kbGUuY3BwCkBAIC01
OSwxMyArNTksMTMgQEAgV0tUeXBlSUQgV0tCdW5kbGVOb2RlSGFuZGxlR2V0VHlwZUlEKCkKIFdL
QnVuZGxlTm9kZUhhbmRsZVJlZiBXS0J1bmRsZU5vZGVIYW5kbGVDcmVhdGUoSlNDb250ZXh0UmVm
IGNvbnRleHRSZWYsIEpTT2JqZWN0UmVmIG9iamVjdFJlZikKIHsKICAgICBSZWZQdHI8SW5qZWN0
ZWRCdW5kbGVOb2RlSGFuZGxlPiBub2RlSGFuZGxlID0gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxl
OjpnZXRPckNyZWF0ZShjb250ZXh0UmVmLCBvYmplY3RSZWYpOwotICAgIHJldHVybiB0b0FQSShu
b2RlSGFuZGxlLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgIHJldHVybiB0b0FQSShub2RlSGFu
ZGxlLmxlYWtSZWYoKSk7CiB9CiAKIFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBXS0J1bmRsZU5vZGVI
YW5kbGVDb3B5RG9jdW1lbnQoV0tCdW5kbGVOb2RlSGFuZGxlUmVmIG5vZGVIYW5kbGVSZWYpCiB7
CiAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gbm9kZUhhbmRsZSA9IHRvSW1w
bChub2RlSGFuZGxlUmVmKS0+ZG9jdW1lbnQoKTsKLSAgICByZXR1cm4gdG9BUEkobm9kZUhhbmRs
ZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkobm9kZUhhbmRsZS5sZWFr
UmVmKCkpOwogfQogCiBXS1JlY3QgV0tCdW5kbGVOb2RlSGFuZGxlR2V0UmVuZGVyUmVjdChXS0J1
bmRsZU5vZGVIYW5kbGVSZWYgbm9kZUhhbmRsZVJlZiwgYm9vbCogaXNSZXBsYWNlZCkKQEAgLTc2
LDEzICs3NiwxMyBAQCBXS1JlY3QgV0tCdW5kbGVOb2RlSGFuZGxlR2V0UmVuZGVyUmVjdChXS0J1
bmRsZU5vZGVIYW5kbGVSZWYgbm9kZUhhbmRsZVJlZiwgYm9vbAogV0tJbWFnZVJlZiBXS0J1bmRs
ZU5vZGVIYW5kbGVDb3B5U25hcHNob3RXaXRoT3B0aW9ucyhXS0J1bmRsZU5vZGVIYW5kbGVSZWYg
bm9kZUhhbmRsZVJlZiwgV0tTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucykKIHsKICAgICBSZWZQdHI8
V2ViSW1hZ2U+IGltYWdlID0gdG9JbXBsKG5vZGVIYW5kbGVSZWYpLT5yZW5kZXJlZEltYWdlKHRv
U25hcHNob3RPcHRpb25zKG9wdGlvbnMpKTsKLSAgICByZXR1cm4gdG9BUEkoaW1hZ2UucmVsZWFz
ZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKGltYWdlLmxlYWtSZWYoKSk7CiB9CiAK
IFdLQnVuZGxlUmFuZ2VIYW5kbGVSZWYgV0tCdW5kbGVOb2RlSGFuZGxlQ29weVZpc2libGVSYW5n
ZShXS0J1bmRsZU5vZGVIYW5kbGVSZWYgbm9kZUhhbmRsZVJlZikKIHsKICAgICBSZWZQdHI8SW5q
ZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gcmFuZ2VIYW5kbGUgPSB0b0ltcGwobm9kZUhhbmRsZVJl
ZiktPnZpc2libGVSYW5nZSgpOwotICAgIHJldHVybiB0b0FQSShyYW5nZUhhbmRsZS5yZWxlYXNl
KCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkocmFuZ2VIYW5kbGUubGVha1JlZigpKTsK
IH0KIAogV0tSZWN0IFdLQnVuZGxlTm9kZUhhbmRsZUdldEVsZW1lbnRCb3VuZHMoV0tCdW5kbGVO
b2RlSGFuZGxlUmVmIGVsZW1lbnRIYW5kbGVSZWYpCkBAIC0xMzgsMjUgKzEzOCwyNSBAQCBib29s
IFdLQnVuZGxlTm9kZUhhbmRsZUdldEhUTUxUZXh0QXJlYUVsZW1lbnRMYXN0Q2hhbmdlV2FzVXNl
ckVkaXQoV0tCdW5kbGVOb2RlSAogV0tCdW5kbGVOb2RlSGFuZGxlUmVmIFdLQnVuZGxlTm9kZUhh
bmRsZUNvcHlIVE1MVGFibGVDZWxsRWxlbWVudENlbGxBYm92ZShXS0J1bmRsZU5vZGVIYW5kbGVS
ZWYgaHRtbFRhYmxlQ2VsbEVsZW1lbnRIYW5kbGVSZWYpCiB7CiAgICAgUmVmUHRyPEluamVjdGVk
QnVuZGxlTm9kZUhhbmRsZT4gbm9kZUhhbmRsZSA9IHRvSW1wbChodG1sVGFibGVDZWxsRWxlbWVu
dEhhbmRsZVJlZiktPmh0bWxUYWJsZUNlbGxFbGVtZW50Q2VsbEFib3ZlKCk7Ci0gICAgcmV0dXJu
IHRvQVBJKG5vZGVIYW5kbGUucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJ
KG5vZGVIYW5kbGUubGVha1JlZigpKTsKIH0KIAogV0tCdW5kbGVGcmFtZVJlZiBXS0J1bmRsZU5v
ZGVIYW5kbGVDb3B5RG9jdW1lbnRGcmFtZShXS0J1bmRsZU5vZGVIYW5kbGVSZWYgZG9jdW1lbnRI
YW5kbGVSZWYpCiB7CiAgICAgUmVmUHRyPFdlYkZyYW1lPiBmcmFtZSA9IHRvSW1wbChkb2N1bWVu
dEhhbmRsZVJlZiktPmRvY3VtZW50RnJhbWUoKTsKLSAgICByZXR1cm4gdG9BUEkoZnJhbWUucmVs
ZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKGZyYW1lLmxlYWtSZWYoKSk7CiB9
CiAKIFdLQnVuZGxlRnJhbWVSZWYgV0tCdW5kbGVOb2RlSGFuZGxlQ29weUhUTUxGcmFtZUVsZW1l
bnRDb250ZW50RnJhbWUoV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGh0bWxGcmFtZUVsZW1lbnRIYW5k
bGVSZWYpCiB7CiAgICAgUmVmUHRyPFdlYkZyYW1lPiBmcmFtZSA9IHRvSW1wbChodG1sRnJhbWVF
bGVtZW50SGFuZGxlUmVmKS0+aHRtbEZyYW1lRWxlbWVudENvbnRlbnRGcmFtZSgpOwotICAgIHJl
dHVybiB0b0FQSShmcmFtZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEko
ZnJhbWUubGVha1JlZigpKTsKIH0KIAogV0tCdW5kbGVGcmFtZVJlZiBXS0J1bmRsZU5vZGVIYW5k
bGVDb3B5SFRNTElGcmFtZUVsZW1lbnRDb250ZW50RnJhbWUoV0tCdW5kbGVOb2RlSGFuZGxlUmVm
IGh0bWxJRnJhbWVFbGVtZW50SGFuZGxlUmVmKQogewogICAgIFJlZlB0cjxXZWJGcmFtZT4gZnJh
bWUgPSB0b0ltcGwoaHRtbElGcmFtZUVsZW1lbnRIYW5kbGVSZWYpLT5odG1sSUZyYW1lRWxlbWVu
dENvbnRlbnRGcmFtZSgpOwotICAgIHJldHVybiB0b0FQSShmcmFtZS5yZWxlYXNlKCkubGVha1Jl
ZigpKTsKKyAgICByZXR1cm4gdG9BUEkoZnJhbWUubGVha1JlZigpKTsKIH0KIAogLy8gRGVwcmVj
YXRlZCAtIHVzZSBXS0J1bmRsZU5vZGVIYW5kbGVHZXRIVE1MSW5wdXRFbGVtZW50QXV0b0ZpbGxl
ZChXS0J1bmRsZU5vZGVIYW5kbGVSZWYpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCmlu
ZGV4IDE3ZTIxYWZjMzNiNjhlZmUzZDg3NTgzMDhiZDgxYzYwYzNmODA5NTUuLmUxOGRhOTE0ZmMy
MGRlZWRlYTZjMWY5NjdkOGYzNDkwNDc3NDA2OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFn
ZS5jcHAKQEAgLTQzNCw3ICs0MzQsNyBAQCBib29sIFdLQnVuZGxlUGFnZUZpbmRTdHJpbmcoV0tC
dW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHRhcmdldCwgV0tGaW5kTwogV0tJbWFn
ZVJlZiBXS0J1bmRsZVBhZ2VDcmVhdGVTbmFwc2hvdFdpdGhPcHRpb25zKFdLQnVuZGxlUGFnZVJl
ZiBwYWdlUmVmLCBXS1JlY3QgcmVjdCwgV0tTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucykKIHsKICAg
ICBSZWZQdHI8V2ViSW1hZ2U+IHdlYkltYWdlID0gdG9JbXBsKHBhZ2VSZWYpLT5zY2FsZWRTbmFw
c2hvdFdpdGhPcHRpb25zKHRvSW50UmVjdChyZWN0KSwgMSwgdG9TbmFwc2hvdE9wdGlvbnMob3B0
aW9ucykpOwotICAgIHJldHVybiB0b0FQSSh3ZWJJbWFnZS5yZWxlYXNlKCkubGVha1JlZigpKTsK
KyAgICByZXR1cm4gdG9BUEkod2ViSW1hZ2UubGVha1JlZigpKTsKIH0KIAogV0tJbWFnZVJlZiBX
S0J1bmRsZVBhZ2VDcmVhdGVTbmFwc2hvdEluVmlld0Nvb3JkaW5hdGVzKFdLQnVuZGxlUGFnZVJl
ZiBwYWdlUmVmLCBXS1JlY3QgcmVjdCwgV0tJbWFnZU9wdGlvbnMgb3B0aW9ucykKQEAgLTQ0Miwx
OSArNDQyLDE5IEBAIFdLSW1hZ2VSZWYgV0tCdW5kbGVQYWdlQ3JlYXRlU25hcHNob3RJblZpZXdD
b29yZGluYXRlcyhXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwKICAgICBTbmFwc2hvdE9wdGlvbnMg
c25hcHNob3RPcHRpb25zID0gc25hcHNob3RPcHRpb25zRnJvbUltYWdlT3B0aW9ucyhvcHRpb25z
KTsKICAgICBzbmFwc2hvdE9wdGlvbnMgfD0gU25hcHNob3RPcHRpb25zSW5WaWV3Q29vcmRpbmF0
ZXM7CiAgICAgUmVmUHRyPFdlYkltYWdlPiB3ZWJJbWFnZSA9IHRvSW1wbChwYWdlUmVmKS0+c2Nh
bGVkU25hcHNob3RXaXRoT3B0aW9ucyh0b0ludFJlY3QocmVjdCksIDEsIHNuYXBzaG90T3B0aW9u
cyk7Ci0gICAgcmV0dXJuIHRvQVBJKHdlYkltYWdlLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAg
IHJldHVybiB0b0FQSSh3ZWJJbWFnZS5sZWFrUmVmKCkpOwogfQogCiBXS0ltYWdlUmVmIFdLQnVu
ZGxlUGFnZUNyZWF0ZVNuYXBzaG90SW5Eb2N1bWVudENvb3JkaW5hdGVzKFdLQnVuZGxlUGFnZVJl
ZiBwYWdlUmVmLCBXS1JlY3QgcmVjdCwgV0tJbWFnZU9wdGlvbnMgb3B0aW9ucykKIHsKICAgICBS
ZWZQdHI8V2ViSW1hZ2U+IHdlYkltYWdlID0gdG9JbXBsKHBhZ2VSZWYpLT5zY2FsZWRTbmFwc2hv
dFdpdGhPcHRpb25zKHRvSW50UmVjdChyZWN0KSwgMSwgc25hcHNob3RPcHRpb25zRnJvbUltYWdl
T3B0aW9ucyhvcHRpb25zKSk7Ci0gICAgcmV0dXJuIHRvQVBJKHdlYkltYWdlLnJlbGVhc2UoKS5s
ZWFrUmVmKCkpOworICAgIHJldHVybiB0b0FQSSh3ZWJJbWFnZS5sZWFrUmVmKCkpOwogfQogCiBX
S0ltYWdlUmVmIFdLQnVuZGxlUGFnZUNyZWF0ZVNjYWxlZFNuYXBzaG90SW5Eb2N1bWVudENvb3Jk
aW5hdGVzKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS1JlY3QgcmVjdCwgZG91YmxlIHNjYWxl
RmFjdG9yLCBXS0ltYWdlT3B0aW9ucyBvcHRpb25zKQogewogICAgIFJlZlB0cjxXZWJJbWFnZT4g
d2ViSW1hZ2UgPSB0b0ltcGwocGFnZVJlZiktPnNjYWxlZFNuYXBzaG90V2l0aE9wdGlvbnModG9J
bnRSZWN0KHJlY3QpLCBzY2FsZUZhY3Rvciwgc25hcHNob3RPcHRpb25zRnJvbUltYWdlT3B0aW9u
cyhvcHRpb25zKSk7Ci0gICAgcmV0dXJuIHRvQVBJKHdlYkltYWdlLnJlbGVhc2UoKS5sZWFrUmVm
KCkpOworICAgIHJldHVybiB0b0FQSSh3ZWJJbWFnZS5sZWFrUmVmKCkpOwogfQogCiBkb3VibGUg
V0tCdW5kbGVQYWdlR2V0QmFja2luZ1NjYWxlRmFjdG9yKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVm
KQpAQCAtNjI0LDcgKzYyNCw3IEBAIHZvaWQgV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9ub3VzTWVz
c2FnZUZvclRlc3RpbmcoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyCiAgICAgUmVmUHRy
PEFQSTo6T2JqZWN0PiByZXR1cm5EYXRhOwogICAgIHBhZ2UtPnBvc3RTeW5jaHJvbm91c01lc3Nh
Z2VGb3JUZXN0aW5nKHRvV1RGU3RyaW5nKG1lc3NhZ2VOYW1lUmVmKSwgdG9JbXBsKG1lc3NhZ2VC
b2R5UmVmKSwgcmV0dXJuRGF0YSk7CiAgICAgaWYgKHJldHVybkRhdGFSZWYpCi0gICAgICAgICpy
ZXR1cm5EYXRhUmVmID0gdG9BUEkocmV0dXJuRGF0YS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAg
ICAgICAgKnJldHVybkRhdGFSZWYgPSB0b0FQSShyZXR1cm5EYXRhLmxlYWtSZWYoKSk7CiB9CiAK
IHZvaWQgV0tCdW5kbGVQYWdlQWRkVXNlclNjcmlwdChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwg
V0tTdHJpbmdSZWYgc291cmNlLCBfV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25U
aW1lLCBXS1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlUmFuZ2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZVJhbmdlSGFuZGxlLmNwcAppbmRleCA3M2I4OGMxMzQwNjMzYzY5
MDgxOGQ0OGMzNDFlYTU2OTlhODE3ZWMwLi40MzcxN2M5MTVkMDYyYjNkNGE0YjdkZjBlZjMxYzNm
NTY2MWU1NDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVSYW5nZUhhbmRsZS5jcHAK
QEAgLTQzLDcgKzQzLDcgQEAgV0tUeXBlSUQgV0tCdW5kbGVSYW5nZUhhbmRsZUdldFR5cGVJRCgp
CiBXS0J1bmRsZVJhbmdlSGFuZGxlUmVmIFdLQnVuZGxlUmFuZ2VIYW5kbGVDcmVhdGUoSlNDb250
ZXh0UmVmIGNvbnRleHRSZWYsIEpTT2JqZWN0UmVmIG9iamVjdFJlZikKIHsKICAgICBSZWZQdHI8
SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gcmFuZ2VIYW5kbGUgPSBJbmplY3RlZEJ1bmRsZVJh
bmdlSGFuZGxlOjpnZXRPckNyZWF0ZShjb250ZXh0UmVmLCBvYmplY3RSZWYpOwotICAgIHJldHVy
biB0b0FQSShyYW5nZUhhbmRsZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9B
UEkocmFuZ2VIYW5kbGUubGVha1JlZigpKTsKIH0KIAogV0tSZWN0IFdLQnVuZGxlUmFuZ2VIYW5k
bGVHZXRCb3VuZGluZ1JlY3RJbldpbmRvd0Nvb3JkaW5hdGVzKFdLQnVuZGxlUmFuZ2VIYW5kbGVS
ZWYgcmFuZ2VIYW5kbGVSZWYpCkBAIC01NSw1ICs1NSw1IEBAIFdLUmVjdCBXS0J1bmRsZVJhbmdl
SGFuZGxlR2V0Qm91bmRpbmdSZWN0SW5XaW5kb3dDb29yZGluYXRlcyhXS0J1bmRsZVJhbmdlSGFu
ZGxlCiBXS0ltYWdlUmVmIFdLQnVuZGxlUmFuZ2VIYW5kbGVDb3B5U25hcHNob3RXaXRoT3B0aW9u
cyhXS0J1bmRsZVJhbmdlSGFuZGxlUmVmIHJhbmdlSGFuZGxlUmVmLCBXS1NuYXBzaG90T3B0aW9u
cyBvcHRpb25zKQogewogICAgIFJlZlB0cjxXZWJJbWFnZT4gaW1hZ2UgPSB0b0ltcGwocmFuZ2VI
YW5kbGVSZWYpLT5yZW5kZXJlZEltYWdlKHRvU25hcHNob3RPcHRpb25zKG9wdGlvbnMpKTsKLSAg
ICByZXR1cm4gdG9BUEkoaW1hZ2UucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRv
QVBJKGltYWdlLmxlYWtSZWYoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlU2NyaXB0V29ybGQuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVNjcmlw
dFdvcmxkLmNwcAppbmRleCA2ZGEwY2MwZTY3NWZjZTM0NWNiNDI3MjQwOGE2ODIyZDA4N2VmM2E0
Li5iN2JkOGIzMDJiMzE3MmUxZmUzYmM4Y2JjNTM5YjhhZjkwNjI0YWUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlU2Ny
aXB0V29ybGQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVTY3JpcHRXb3JsZC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgV0tUeXBl
SUQgV0tCdW5kbGVTY3JpcHRXb3JsZEdldFR5cGVJRCgpCiBXS0J1bmRsZVNjcmlwdFdvcmxkUmVm
IFdLQnVuZGxlU2NyaXB0V29ybGRDcmVhdGVXb3JsZCgpCiB7CiAgICAgUmVmUHRyPEluamVjdGVk
QnVuZGxlU2NyaXB0V29ybGQ+IHdvcmxkID0gSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6Y3Jl
YXRlKCk7Ci0gICAgcmV0dXJuIHRvQVBJKHdvcmxkLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAg
IHJldHVybiB0b0FQSSh3b3JsZC5sZWFrUmVmKCkpOwogfQogCiBXS0J1bmRsZVNjcmlwdFdvcmxk
UmVmIFdLQnVuZGxlU2NyaXB0V29ybGROb3JtYWxXb3JsZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Ob2RlLm1tIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NTm9k
ZS5tbQppbmRleCA3MTIyYzNmZDk3ZDYzOGE5MGY2MjA3ZGQyYmQ3ZTVlOTI3Y2E3YTkyLi40OWI0
Y2I5Y2FlYmI5ZGYwMTQyNmY5NWY5N2U2MzY5YmZiMjJhY2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Ob2RlLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RP
TU5vZGUubW0KQEAgLTEyOSw4ICsxMjksOCBAQCBAaW1wbGVtZW50YXRpb24gV0tET01Ob2RlIChX
S1ByaXZhdGUpCiAKIC0gKFdLQnVuZGxlTm9kZUhhbmRsZVJlZilfY29weUJ1bmRsZU5vZGVIYW5k
bGVSZWYKIHsKLSAgICBSZWZQdHI8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+IG5v
ZGVIYW5kbGUgPSBXZWJLaXQ6OkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6Z2V0T3JDcmVhdGUo
X2ltcGwuZ2V0KCkpOwotICAgIHJldHVybiB0b0FQSShub2RlSGFuZGxlLnJlbGVhc2UoKS5sZWFr
UmVmKCkpOworICAgIGF1dG8gbm9kZUhhbmRsZSA9IFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOb2Rl
SGFuZGxlOjpnZXRPckNyZWF0ZShfaW1wbC5nZXQoKSk7CisgICAgcmV0dXJuIHRvQVBJKG5vZGVI
YW5kbGUubGVha1JlZigpKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01SYW5nZS5tbQpp
bmRleCAxNjVkYTA2NDM0MzIxNWRjNmI5ZjAwMWNlNjA1NTcxMGVlZjZjYjY3Li4wZjA4ZDg0ODEw
MTg4OWE1MGI1ZjExMTY4OWE1NzZmMTU4MWQ1MTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01SYW5nZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01SYW5n
ZS5tbQpAQCAtMTU2LDggKzE1Niw4IEBAIEBpbXBsZW1lbnRhdGlvbiBXS0RPTVJhbmdlIChXS1By
aXZhdGUpCiAKIC0gKFdLQnVuZGxlUmFuZ2VIYW5kbGVSZWYpX2NvcHlCdW5kbGVSYW5nZUhhbmRs
ZVJlZgogewotICAgIFJlZlB0cjxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IHJh
bmdlSGFuZGxlID0gV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpnZXRPckNyZWF0
ZShfaW1wbC5nZXQoKSk7Ci0gICAgcmV0dXJuIHRvQVBJKHJhbmdlSGFuZGxlLnJlbGVhc2UoKS5s
ZWFrUmVmKCkpOworICAgIGF1dG8gcmFuZ2VIYW5kbGUgPSBXZWJLaXQ6OkluamVjdGVkQnVuZGxl
UmFuZ2VIYW5kbGU6OmdldE9yQ3JlYXRlKF9pbXBsLmdldCgpKTsKKyAgICByZXR1cm4gdG9BUEko
cmFuZ2VIYW5kbGUubGVha1JlZigpKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVDU1NTdHls
ZURlY2xhcmF0aW9uSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZS5jcHAK
aW5kZXggYWMxMWQxMWE3ODY2NDJhZjczOTlmZjUwOWU4ZjdjNWNkMWU2OGNlMi4uMmE4ZjE3YTRh
Y2Y4NmIyNzc5MmRiZGUzN2Q3M2ZiMDViNWI2MDc2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURl
Y2xhcmF0aW9uSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25IYW5kbGUuY3Bw
CkBAIC01MSw5ICs1MSw5IEBAIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURlY2xh
cmF0aW9uSGFuZGxlPiBJbmplY3RlZEJ1bmRsZUNTU1N0eWxlRGVjbGFyCiAgICAgaWYgKCFyZXN1
bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVD
U1NTdHlsZURlY2xhcmF0aW9uSGFuZGxlPihyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKIAotICAg
IFJlZlB0cjxJbmplY3RlZEJ1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25IYW5kbGU+IHN0eWxlRGVj
bGFyYXRpb25IYW5kbGUgPSBhZG9wdFJlZihuZXcgSW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURlY2xh
cmF0aW9uSGFuZGxlKCpzdHlsZURlY2xhcmF0aW9uKSk7Ci0gICAgcmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSA9IHN0eWxlRGVjbGFyYXRpb25IYW5kbGUuZ2V0KCk7Ci0gICAgcmV0dXJuIHN0eWxlRGVj
bGFyYXRpb25IYW5kbGUucmVsZWFzZSgpOworICAgIGF1dG8gc3R5bGVEZWNsYXJhdGlvbkhhbmRs
ZSA9IGFkb3B0UmVmKCpuZXcgSW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uSGFuZGxl
KCpzdHlsZURlY2xhcmF0aW9uKSk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0eWxl
RGVjbGFyYXRpb25IYW5kbGUucHRyKCk7CisgICAgcmV0dXJuIFdURk1vdmUoc3R5bGVEZWNsYXJh
dGlvbkhhbmRsZSk7CiB9CiAKIEluamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRs
ZTo6SW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uSGFuZGxlKENTU1N0eWxlRGVjbGFy
YXRpb24mIHN0eWxlRGVjbGFyYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5k
bGVOb2RlSGFuZGxlLmNwcAppbmRleCAyZWIyZGIzYjI5N2VlNjJhOTM0YTk3ZmRmYzljODM1Yjhk
ZDZjNjY5Li5jZmU5OTA2NDI3MWRkZjc4ZDVjNjkzMjRjNjI5ZTdlMWUyNWI5Y2EwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3Rl
ZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKQEAgLTE0MCw3ICsx
NDAsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxXZWJJbWFnZT4gaW1hZ2VGb3JSZWN0KEZyYW1lVmll
dyogZnJhbWVWaWV3LCBjb25zdCBJbnRSZWN0JiByZQogICAgIGZsb2F0IHNjYWxlRmFjdG9yID0g
ZnJhbWVWaWV3LT5mcmFtZSgpLnBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKICAgICBiaXRt
YXBTaXplLnNjYWxlKHNjYWxlRmFjdG9yKTsKIAotICAgIFJlZlB0cjxXZWJJbWFnZT4gc25hcHNo
b3QgPSBXZWJJbWFnZTo6Y3JlYXRlKGJpdG1hcFNpemUsIHNuYXBzaG90T3B0aW9uc1RvSW1hZ2VP
cHRpb25zKG9wdGlvbnMpKTsKKyAgICBhdXRvIHNuYXBzaG90ID0gV2ViSW1hZ2U6OmNyZWF0ZShi
aXRtYXBTaXplLCBzbmFwc2hvdE9wdGlvbnNUb0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7CiAgICAg
aWYgKCFzbmFwc2hvdC0+Yml0bWFwKCkpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0xNjQsNyAr
MTY0LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IGltYWdlRm9yUmVjdChGcmFtZVZp
ZXcqIGZyYW1lVmlldywgY29uc3QgSW50UmVjdCYgcmUKICAgICBmcmFtZVZpZXctPnBhaW50Q29u
dGVudHNGb3JTbmFwc2hvdCgqZ3JhcGhpY3NDb250ZXh0LmdldCgpLCByZWN0LCBzaG91bGRQYWlu
dFNlbGVjdGlvbiwgRnJhbWVWaWV3OjpEb2N1bWVudENvb3JkaW5hdGVzKTsKICAgICBmcmFtZVZp
ZXctPnNldFBhaW50QmVoYXZpb3Iob2xkUGFpbnRCZWhhdmlvcik7CiAKLSAgICByZXR1cm4gc25h
cHNob3QucmVsZWFzZSgpOworICAgIHJldHVybiBzbmFwc2hvdDsKIH0KIAogUGFzc1JlZlB0cjxX
ZWJJbWFnZT4gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpyZW5kZXJlZEltYWdlKFNuYXBzaG90
T3B0aW9ucyBvcHRpb25zKQpAQCAtMTg3LDEwICsxODcsMTAgQEAgUGFzc1JlZlB0cjxXZWJJbWFn
ZT4gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpyZW5kZXJlZEltYWdlKFNuYXBzaG90T3B0aW9u
cyBvcHQKICAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IHNuYXBwZWRJbnRSZWN0KHJlbmRlcmVy
LT5wYWludGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCkpOwogCiAgICAgZnJhbWVWaWV3LT5zZXRO
b2RlVG9EcmF3KG1fbm9kZS5wdHIoKSk7Ci0gICAgUmVmUHRyPFdlYkltYWdlPiBpbWFnZSA9IGlt
YWdlRm9yUmVjdChmcmFtZVZpZXcsIHBhaW50aW5nUmVjdCwgb3B0aW9ucyk7CisgICAgYXV0byBp
bWFnZSA9IGltYWdlRm9yUmVjdChmcmFtZVZpZXcsIHBhaW50aW5nUmVjdCwgb3B0aW9ucyk7CiAg
ICAgZnJhbWVWaWV3LT5zZXROb2RlVG9EcmF3KDApOwogCi0gICAgcmV0dXJuIGltYWdlLnJlbGVh
c2UoKTsKKyAgICByZXR1cm4gaW1hZ2U7CiB9CiAKIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVS
YW5nZUhhbmRsZT4gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjp2aXNpYmxlUmFuZ2UoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5q
ZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAppbmRleCA4YTk0
NTE0OWI4ZTliODI0MmRkMzU2ZDQyMjM5MmNjNDQxNTBlN2M5Li5jOWJlZjVhNmU4YjYzYWZlOTYy
NWQ4ZGRmZTk0MzI3OGQ5MDFhMzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1
bmRsZVJhbmdlSGFuZGxlLmNwcApAQCAtNzAsOSArNzAsOSBAQCBQYXNzUmVmUHRyPEluamVjdGVk
QnVuZGxlUmFuZ2VIYW5kbGU+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmdldE9yQ3JlYXRl
KFJhbgogICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybiBQYXNzUmVm
UHRyPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+KHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwog
Ci0gICAgUmVmUHRyPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IHJhbmdlSGFuZGxlID0gSW5q
ZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Y3JlYXRlKHJhbmdlKTsKLSAgICByZXN1bHQuaXRlcmF0
b3ItPnZhbHVlID0gcmFuZ2VIYW5kbGUuZ2V0KCk7Ci0gICAgcmV0dXJuIHJhbmdlSGFuZGxlLnJl
bGVhc2UoKTsKKyAgICBhdXRvIHJhbmdlSGFuZGxlID0gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRs
ZTo6Y3JlYXRlKHJhbmdlKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gcmFuZ2VIYW5k
bGUucHRyKCk7CisgICAgcmV0dXJuIFdURk1vdmUocmFuZ2VIYW5kbGUpOwogfQogCiBSZWY8SW5q
ZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Y3JlYXRl
KFJhbmdlKiByYW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggNjlhNGZmODA5Zjk3MGMz
NWFkZDE1YzQ4MTJkMWU5ZDU0NWJmYWEyNS4uMjgzYTk2NzAwZjVlMWZkNjM4YjJlYzUyMzI0ZDM3
ZTcwZThiMDA3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTkwLDEzICs5MCwxMyBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZT4gSW5qZWN0ZWRC
dW5kbGU6OmNyZWF0ZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzLCBBUEk6Ok9iamVjdCogaW5pdGlhbGl6YXRpb25Vc2VyRGF0YSkKIHsKLSAgICBSZWZQdHI8
SW5qZWN0ZWRCdW5kbGU+IGJ1bmRsZSA9IGFkb3B0UmVmKG5ldyBJbmplY3RlZEJ1bmRsZShwYXJh
bWV0ZXJzKSk7CisgICAgYXV0byBidW5kbGUgPSBhZG9wdFJlZigqbmV3IEluamVjdGVkQnVuZGxl
KHBhcmFtZXRlcnMpKTsKIAogICAgIGJ1bmRsZS0+bV9zYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlKHBhcmFtZXRlcnMuaW5qZWN0ZWRCdW5kbGVQYXRoRXh0ZW5zaW9u
SGFuZGxlKTsKICAgICBpZiAoIWJ1bmRsZS0+aW5pdGlhbGl6ZShwYXJhbWV0ZXJzLCBpbml0aWFs
aXphdGlvblVzZXJEYXRhKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4g
YnVuZGxlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92ZShidW5kbGUpOwogfQogCiBJbmpl
Y3RlZEJ1bmRsZTo6SW5qZWN0ZWRCdW5kbGUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycyYgcGFyYW1ldGVycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCmluZGV4IDMxNTFlMTRl
YjVlOTVlNDZiMDZmMGQ3Y2YxMDk4NWNhMjRmNjJmNGYuLjhmMTVkMzUyNDY4YjExMWRhYjU4YmU3
OGQyNmY5MWY4NWM1MmYxZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcApAQCAtMTY5LDEw
ICsxNjksMTAgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6bG9hZFVSTChjb25zdCBTdHJpbmcmIG1l
dGhvZCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnMKIAogICAgIGlmICh0YXJnZXQuaXNO
dWxsKCkpIHsKICAgICAgICAgLy8gVGhlIGJyb3dzZXIgaXMgZ29pbmcgdG8gc2VuZCB0aGUgZGF0
YSBpbiBhIHN0cmVhbSwgY3JlYXRlIGEgcGx1Zy1pbiBzdHJlYW0uCi0gICAgICAgIFJlZlB0cjxO
ZXRzY2FwZVBsdWdpblN0cmVhbT4gcGx1Z2luU3RyZWFtID0gTmV0c2NhcGVQbHVnaW5TdHJlYW06
OmNyZWF0ZSh0aGlzLCByZXF1ZXN0SUQsIHVybFN0cmluZywgc2VuZE5vdGlmaWNhdGlvbiwgbm90
aWZpY2F0aW9uRGF0YSk7CisgICAgICAgIGF1dG8gcGx1Z2luU3RyZWFtID0gTmV0c2NhcGVQbHVn
aW5TdHJlYW06OmNyZWF0ZSh0aGlzLCByZXF1ZXN0SUQsIHVybFN0cmluZywgc2VuZE5vdGlmaWNh
dGlvbiwgbm90aWZpY2F0aW9uRGF0YSk7CiAgICAgICAgIEFTU0VSVCghbV9zdHJlYW1zLmNvbnRh
aW5zKHJlcXVlc3RJRCkpOwogCi0gICAgICAgIG1fc3RyZWFtcy5zZXQocmVxdWVzdElELCBwbHVn
aW5TdHJlYW0ucmVsZWFzZSgpKTsKKyAgICAgICAgbV9zdHJlYW1zLnNldChyZXF1ZXN0SUQsIFdU
Rk1vdmUocGx1Z2luU3RyZWFtKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBERlBs
dWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRl
ZFBERlBsdWdpbi5tbQppbmRleCAxYzQ3MTdjYTcxODQzZjRlNGMwMTZlZmI3NmNmMzljM2EwY2Vi
M2ViLi4xMjIzZjQ5YzUwODQ0MDdhNGQwOGZjMzUxMWNhNDYyNWQyMDdlYjA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0RlcHJlY2F0ZWRQREZQbHVn
aW4ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9EZXByZWNh
dGVkUERGUGx1Z2luLm1tCkBAIC02NTEsNyArNjUxLDcgQEAgY29uc3QgUGx1Z2luVmlldyogUERG
UGx1Z2luOjpwbHVnaW5WaWV3KCkgY29uc3QKIAogUGFzc1JlZlB0cjxTY3JvbGxiYXI+IFBERlBs
dWdpbjo6Y3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQog
ewotICAgIFJlZlB0cjxTY3JvbGxiYXI+IHdpZGdldCA9IFNjcm9sbGJhcjo6Y3JlYXRlTmF0aXZl
U2Nyb2xsYmFyKCp0aGlzLCBvcmllbnRhdGlvbiwgUmVndWxhclNjcm9sbGJhcik7CisgICAgYXV0
byB3aWRnZXQgPSBTY3JvbGxiYXI6OmNyZWF0ZU5hdGl2ZVNjcm9sbGJhcigqdGhpcywgb3JpZW50
YXRpb24sIFJlZ3VsYXJTY3JvbGxiYXIpOwogICAgIGlmIChvcmllbnRhdGlvbiA9PSBIb3Jpem9u
dGFsU2Nyb2xsYmFyKSB7CiAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhckxheWVyID0gYWRv
cHROUyhbW1dLUERGUGx1Z2luU2Nyb2xsYmFyTGF5ZXIgYWxsb2NdIGluaXRXaXRoUERGUGx1Z2lu
OnRoaXNdKTsKICAgICAgICAgW21fY29udGFpbmVyTGF5ZXIgYWRkU3VibGF5ZXI6bV9ob3Jpem9u
dGFsU2Nyb2xsYmFyTGF5ZXIuZ2V0KCldOwpAQCAtNjY3LDcgKzY2Nyw3IEBAIFBhc3NSZWZQdHI8
U2Nyb2xsYmFyPiBQREZQbHVnaW46OmNyZWF0ZVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlv
biBvcmllbnRhdGlvCiAgICAgICAgIH0KICAgICB9CiAgICAgcGx1Z2luVmlldygpLT5mcmFtZSgp
LT52aWV3KCktPmFkZENoaWxkKHdpZGdldC5nZXQoKSk7Ci0gICAgcmV0dXJuIHdpZGdldC5yZWxl
YXNlKCk7CisgICAgcmV0dXJuIHdpZGdldDsKIH0KIAogdm9pZCBQREZQbHVnaW46OmRlc3Ryb3lT
Y3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcAppbmRleCA2
YjI0Y2Y0NzMyMjJmZDBjMzI2OGE1ZDc1MTE0OTEwNmM2NTdmNjA5Li5hMGNjOGI5YjI0NGYyNTNk
YzExZDZiZThhNWRjZDY5ZTdmODcwMzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1N0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKQEAgLTI2Miw3ICsyNjIsNyBAQCB2
b2lkIFN0b3JhZ2VBcmVhTWFwOjphcHBseUNoYW5nZShjb25zdCBTdHJpbmcmIGtleSwgY29uc3Qg
U3RyaW5nJiBuZXdWYWx1ZSkKIAogICAgIGlmICgha2V5KSB7CiAgICAgICAgIC8vIEEgbnVsbCBr
ZXkgbWVhbnMgY2xlYXIuCi0gICAgICAgIFJlZlB0cjxTdG9yYWdlTWFwPiBuZXdTdG9yYWdlTWFw
ID0gU3RvcmFnZU1hcDo6Y3JlYXRlKG1fcXVvdGFJbkJ5dGVzKTsKKyAgICAgICAgYXV0byBuZXdT
dG9yYWdlTWFwID0gU3RvcmFnZU1hcDo6Y3JlYXRlKG1fcXVvdGFJbkJ5dGVzKTsKIAogICAgICAg
ICAvLyBBbnkgY2hhbmdlcyB0aGF0IHdlcmUgbWFkZSBsb2NhbGx5IGFmdGVyIHRoZSBjbGVhciBt
dXN0IHN0aWxsIGJlIGtlcHQgYXJvdW5kIGluIHRoZSBuZXcgbWFwLgogICAgICAgICBmb3IgKGF1
dG8gaXQgPSBtX3BlbmRpbmdWYWx1ZUNoYW5nZXMuYmVnaW4oKS5rZXlzKCksIGVuZCA9IG1fcGVu
ZGluZ1ZhbHVlQ2hhbmdlcy5lbmQoKS5rZXlzKCk7IGl0ICE9IGVuZDsgKytpdCkgewpAQCAtMjc4
LDcgKzI3OCw3IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmFwcGx5Q2hhbmdlKGNvbnN0IFN0cmlu
ZyYga2V5LCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlKQogICAgICAgICAgICAgbmV3U3RvcmFnZU1h
cC0+c2V0SXRlbUlnbm9yaW5nUXVvdGEoa2V5LCBvbGRWYWx1ZSk7CiAgICAgICAgIH0KIAotICAg
ICAgICBtX3N0b3JhZ2VNYXAgPSBuZXdTdG9yYWdlTWFwLnJlbGVhc2UoKTsKKyAgICAgICAgbV9z
dG9yYWdlTWFwID0gV1RGTW92ZShuZXdTdG9yYWdlTWFwKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKaW5kZXggMTUxYzkwMDZm
YzJiNGY5MDgxMGU2MmQ2ZDMzN2QxODliNzYzNzI1NS4uMWNhN2Y0NDk3YTc5OGIzZTVkZWQ0YWVl
YjE4ZWFjYzJmMTlhYTc3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3Bw
CkBAIC0xMjMsNyArMTIzLDcgQEAgUGFnZVN0YXRlIHRvUGFnZVN0YXRlKGNvbnN0IFdlYkNvcmU6
Okhpc3RvcnlJdGVtJiBoaXN0b3J5SXRlbSkKIAogc3RhdGljIFBhc3NSZWZQdHI8Rm9ybURhdGE+
IHRvRm9ybURhdGEoY29uc3QgSFRUUEJvZHkmIGh0dHBCb2R5KQogewotICAgIFJlZlB0cjxGb3Jt
RGF0YT4gZm9ybURhdGEgPSBGb3JtRGF0YTo6Y3JlYXRlKCk7CisgICAgYXV0byBmb3JtRGF0YSA9
IEZvcm1EYXRhOjpjcmVhdGUoKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGh0
dHBCb2R5LmVsZW1lbnRzKSB7CiAgICAgICAgIHN3aXRjaCAoZWxlbWVudC50eXBlKSB7CkBAIC0x
NDEsNyArMTQxLDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8Rm9ybURhdGE+IHRvRm9ybURhdGEoY29u
c3QgSFRUUEJvZHkmIGh0dHBCb2R5KQogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIGZv
cm1EYXRhLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92ZShmb3JtRGF0YSk7CiB9CiAKIHN0
YXRpYyB2b2lkIGFwcGx5RnJhbWVTdGF0ZShIaXN0b3J5SXRlbSYgaGlzdG9yeUl0ZW0sIGNvbnN0
IEZyYW1lU3RhdGUmIGZyYW1lU3RhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CmluZGV4IGExNDdmMjBkZjhmOTdjYjVkYTNiYWY2OTNlMzM0MDRkMTUwMDhlN2UuLmYxYWU1NTQz
MTA0NGJmODllYjU2MDA5NTI0NDc4NGRmZDgwYmVjYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCkBAIC0xNDM1LDExICsxNDM1LDExIEBAIFJlZlB0cjxXaWRnZXQ+IFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5F
bGVtCiAjZW5kaWYKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIFJlZlB0
cjxQbHVnaW4+IHBsdWdpbiA9IG1fZnJhbWUtPnBhZ2UoKS0+Y3JlYXRlUGx1Z2luKG1fZnJhbWUs
IHBsdWdpbkVsZW1lbnQsIHBhcmFtZXRlcnMsIHBhcmFtZXRlcnMubWltZVR5cGUpOworICAgIGF1
dG8gcGx1Z2luID0gbV9mcmFtZS0+cGFnZSgpLT5jcmVhdGVQbHVnaW4obV9mcmFtZSwgcGx1Z2lu
RWxlbWVudCwgcGFyYW1ldGVycywgcGFyYW1ldGVycy5taW1lVHlwZSk7CiAgICAgaWYgKCFwbHVn
aW4pCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFBsdWdpblZpZXc6OmNy
ZWF0ZShwbHVnaW5FbGVtZW50LCBwbHVnaW4ucmVsZWFzZSgpLCBwYXJhbWV0ZXJzKTsKKyAgICBy
ZXR1cm4gUGx1Z2luVmlldzo6Y3JlYXRlKHBsdWdpbkVsZW1lbnQsIFdURk1vdmUocGx1Z2luKSwg
cGFyYW1ldGVycyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShwbHVnaW5FbGVtZW50KTsKICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTE0NTQsOCArMTQ1NCw4IEBAIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OnJlY3JlYXRlUGx1Z2luKFdpZGdldCogd2lkZ2V0KQogCiAgICAgUGx1Z2luVmll
dyogcGx1Z2luVmlldyA9IHN0YXRpY19jYXN0PFBsdWdpblZpZXcqPih3aWRnZXQpOwogICAgIFN0
cmluZyBuZXdNSU1FVHlwZTsKLSAgICBSZWZQdHI8UGx1Z2luPiBwbHVnaW4gPSBtX2ZyYW1lLT5w
YWdlKCktPmNyZWF0ZVBsdWdpbihtX2ZyYW1lLCBwbHVnaW5WaWV3LT5wbHVnaW5FbGVtZW50KCks
IHBsdWdpblZpZXctPmluaXRpYWxQYXJhbWV0ZXJzKCksIG5ld01JTUVUeXBlKTsKLSAgICBwbHVn
aW5WaWV3LT5yZWNyZWF0ZUFuZEluaXRpYWxpemUocGx1Z2luLnJlbGVhc2UoKSk7CisgICAgYXV0
byBwbHVnaW4gPSBtX2ZyYW1lLT5wYWdlKCktPmNyZWF0ZVBsdWdpbihtX2ZyYW1lLCBwbHVnaW5W
aWV3LT5wbHVnaW5FbGVtZW50KCksIHBsdWdpblZpZXctPmluaXRpYWxQYXJhbWV0ZXJzKCksIG5l
d01JTUVUeXBlKTsKKyAgICBwbHVnaW5WaWV3LT5yZWNyZWF0ZUFuZEluaXRpYWxpemUoV1RGTW92
ZShwbHVnaW4pKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHdpZGdldCk7CiAjZW5kaWYKQEAg
LTE0ODgsNyArMTQ4OCw3IEBAIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFN0CiBQYXNzUmVmUHRyPFdp
ZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3Qg
SW50U2l6ZSYgcGx1Z2luU2l6ZSwgSFRNTEFwcGxldEVsZW1lbnQqIGFwcGxldEVsZW1lbnQsIGNv
bnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFyYW1WYWx1ZXMpCiB7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkp
Ci0gICAgUmVmUHRyPFdpZGdldD4gcGx1Z2luID0gY3JlYXRlUGx1Z2luKHBsdWdpblNpemUsIGFw
cGxldEVsZW1lbnQsIFVSTCgpLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcywgYXBwbGV0RWxlbWVu
dC0+c2VydmljZVR5cGUoKSwgZmFsc2UpOworICAgIGF1dG8gcGx1Z2luID0gY3JlYXRlUGx1Z2lu
KHBsdWdpblNpemUsIGFwcGxldEVsZW1lbnQsIFVSTCgpLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVl
cywgYXBwbGV0RWxlbWVudC0+c2VydmljZVR5cGUoKSwgZmFsc2UpOwogICAgIGlmICghcGx1Z2lu
KSB7CiAgICAgICAgIGlmIChXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpKSB7CiAg
ICAgICAgICAgICBTdHJpbmcgZnJhbWVVUkxTdHJpbmcgPSBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+
bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2VVUkwoKS5zdHJpbmcoKTsKQEAgLTE0
OTYsNyArMTQ5Niw3IEBAIFBhc3NSZWZQdHI8V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6
Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiBwCiAgICAgICAgICAgICB3ZWJQ
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZhaWxUb0luaXRpYWxpemVQbHVn
aW4oYXBwbGV0RWxlbWVudC0+c2VydmljZVR5cGUoKSwgZnJhbWVVUkxTdHJpbmcsIHBhZ2VVUkxT
dHJpbmcpKTsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gcGx1Z2luLnJlbGVhc2UoKTsK
KyAgICByZXR1cm4gV1RGTW92ZShwbHVnaW4pOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocGx1
Z2luU2l6ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGFwcGxldEVsZW1lbnQpOwpAQCAtMTcwMSw4ICsx
NzAxLDggQEAgYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkRm9yY2VVbml2ZXJzYWxB
Y2Nlc3NGcm9tTG9jYWxVUkwoY29uc3QgV2ViQ29yZToKIAogUGFzc1JlZlB0cjxGcmFtZU5ldHdv
cmtpbmdDb250ZXh0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlTmV0d29ya2luZ0NvbnRl
eHQoKQogewotICAgIFJlZlB0cjxXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0PiBjb250ZXh0ID0g
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6Y3JlYXRlKG1fZnJhbWUpOwotICAgIHJldHVybiBj
b250ZXh0LnJlbGVhc2UoKTsKKyAgICBhdXRvIGNvbnRleHQgPSBXZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0OjpjcmVhdGUobV9mcmFtZSk7CisgICAgcmV0dXJuIFdURk1vdmUoY29udGV4dCk7CiB9
CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5jcHAKaW5kZXggMDIxYWJmYTUwMDkyNTAwZTFkNWMxYzNjMGUyNTI3ZTg0N2I3NmYzOC4uOTY4
OTI5ZmRhMzQ3OWFhZDJiZTRhMTBhMGI0NTk2YWUxNzU1NmQ1MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50LmNwcApAQCAtMTA3LDkgKzEwNyw5IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50
OjpoaWdobGlnaHQoKQogewogI2lmICFQTEFURk9STShJT1MpCiAgICAgaWYgKCFtX2hpZ2hsaWdo
dE92ZXJsYXkpIHsKLSAgICAgICAgUmVmUHRyPFBhZ2VPdmVybGF5PiBoaWdobGlnaHRPdmVybGF5
ID0gUGFnZU92ZXJsYXk6OmNyZWF0ZSgqdGhpcyk7Ci0gICAgICAgIG1faGlnaGxpZ2h0T3Zlcmxh
eSA9IGhpZ2hsaWdodE92ZXJsYXkuZ2V0KCk7Ci0gICAgICAgIG1fcGFnZS0+bWFpbkZyYW1lKCkt
PnBhZ2VPdmVybGF5Q29udHJvbGxlcigpLmluc3RhbGxQYWdlT3ZlcmxheShoaWdobGlnaHRPdmVy
bGF5LnJlbGVhc2UoKSwgUGFnZU92ZXJsYXk6OkZhZGVNb2RlOjpGYWRlKTsKKyAgICAgICAgYXV0
byBoaWdobGlnaHRPdmVybGF5ID0gUGFnZU92ZXJsYXk6OmNyZWF0ZSgqdGhpcyk7CisgICAgICAg
IG1faGlnaGxpZ2h0T3ZlcmxheSA9IGhpZ2hsaWdodE92ZXJsYXkucHRyKCk7CisgICAgICAgIG1f
cGFnZS0+bWFpbkZyYW1lKCktPnBhZ2VPdmVybGF5Q29udHJvbGxlcigpLmluc3RhbGxQYWdlT3Zl
cmxheShXVEZNb3ZlKGhpZ2hsaWdodE92ZXJsYXkpLCBQYWdlT3ZlcmxheTo6RmFkZU1vZGU6OkZh
ZGUpOwogICAgICAgICBtX2hpZ2hsaWdodE92ZXJsYXktPnNldE5lZWRzRGlzcGxheSgpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIG1faGlnaGxpZ2h0T3ZlcmxheS0+c3RvcEZhZGVPdXRBbmltYXRp
b24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCmluZGV4IDVhMDM4NTliZjEyNzk2
MDZmZjcwM2M5NzE4NzA1ZTBlNGQ3NWRlNjcuLjBiZDI1ODc0ZmY1YmYwODE3ZDc5MWY0ODczMTBl
ZjYwYzU3YTUzMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQpAQCAtNTYsNyAr
NTYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVhYmxl
Qml0bWFwPiBjb252ZXJ0SW1hZ2VUb0JpdG1hcChOU0ltYWdlICppbWFnZSwgY29uc3QgSW50U2l6
ZSYgc2l6ZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFi
bGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzaXplLCBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRz
QWxwaGEpOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFi
bGUoc2l6ZSwgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKTsKICAgICBpZiAoIWJpdG1h
cCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTcyLDcgKzcyLDcgQEAgc3RhdGljIFBh
c3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0SW1hZ2VUb0JpdG1hcChOU0ltYWdlICpp
bWFnZSwgY29uc3QgSW4KIAogICAgIFtOU0dyYXBoaWNzQ29udGV4dCBzZXRDdXJyZW50Q29udGV4
dDpzYXZlZENvbnRleHQuZ2V0KCldOwogCi0gICAgcmV0dXJuIGJpdG1hcC5yZWxlYXNlKCk7Cisg
ICAgcmV0dXJuIFdURk1vdmUoYml0bWFwKTsKIH0KIAogdm9pZCBXZWJEcmFnQ2xpZW50OjpzdGFy
dERyYWcoUmV0YWluUHRyPE5TSW1hZ2U+IGltYWdlLCBjb25zdCBJbnRQb2ludCYgcG9pbnQsIGNv
bnN0IEludFBvaW50JiwgRGF0YVRyYW5zZmVyJiwgRnJhbWUmIGZyYW1lLCBib29sIGxpbmtEcmFn
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJv
bGxlci5jcHAKaW5kZXggOWYxMTkzZjQ5MzI3OTMyNzk5MDA1NDAzODY4ZWFkYzBkNjI0ODg2ZC4u
MWUwY2VmNDY1MWI5M2JmODBmYjcwNTY2NWM2ZjYxNWZlYWJjMmE4OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCkBAIC0x
OTIsOSArMTkyLDkgQEAgdm9pZCBGaW5kQ29udHJvbGxlcjo6dXBkYXRlRmluZFVJQWZ0ZXJQYWdl
U2Nyb2xsKGJvb2wgZm91bmQsIGNvbnN0IFN0cmluZyYgc3RyaW4KICAgICAgICAgICAgIG1fd2Vi
UGFnZS0+bWFpbkZyYW1lKCktPnBhZ2VPdmVybGF5Q29udHJvbGxlcigpLnVuaW5zdGFsbFBhZ2VP
dmVybGF5KG1fZmluZFBhZ2VPdmVybGF5LCBQYWdlT3ZlcmxheTo6RmFkZU1vZGU6OkZhZGUpOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICghbV9maW5kUGFnZU92ZXJsYXkpIHsKLSAgICAgICAg
ICAgIFJlZlB0cjxQYWdlT3ZlcmxheT4gZmluZFBhZ2VPdmVybGF5ID0gUGFnZU92ZXJsYXk6OmNy
ZWF0ZSgqdGhpcywgUGFnZU92ZXJsYXk6Ok92ZXJsYXlUeXBlOjpEb2N1bWVudCk7Ci0gICAgICAg
ICAgICBtX2ZpbmRQYWdlT3ZlcmxheSA9IGZpbmRQYWdlT3ZlcmxheS5nZXQoKTsKLSAgICAgICAg
ICAgIG1fd2ViUGFnZS0+bWFpbkZyYW1lKCktPnBhZ2VPdmVybGF5Q29udHJvbGxlcigpLmluc3Rh
bGxQYWdlT3ZlcmxheShmaW5kUGFnZU92ZXJsYXkucmVsZWFzZSgpLCBQYWdlT3ZlcmxheTo6RmFk
ZU1vZGU6OkZhZGUpOworICAgICAgICAgICAgYXV0byBmaW5kUGFnZU92ZXJsYXkgPSBQYWdlT3Zl
cmxheTo6Y3JlYXRlKCp0aGlzLCBQYWdlT3ZlcmxheTo6T3ZlcmxheVR5cGU6OkRvY3VtZW50KTsK
KyAgICAgICAgICAgIG1fZmluZFBhZ2VPdmVybGF5ID0gZmluZFBhZ2VPdmVybGF5LnB0cigpOwor
ICAgICAgICAgICAgbV93ZWJQYWdlLT5tYWluRnJhbWUoKS0+cGFnZU92ZXJsYXlDb250cm9sbGVy
KCkuaW5zdGFsbFBhZ2VPdmVybGF5KFdURk1vdmUoZmluZFBhZ2VPdmVybGF5KSwgUGFnZU92ZXJs
YXk6OkZhZGVNb2RlOjpGYWRlKTsKICAgICAgICAgfQogICAgICAgICBtX2ZpbmRQYWdlT3Zlcmxh
eS0+c2V0TmVlZHNEaXNwbGF5KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5j
cHAKaW5kZXggOGUyMmY2ZWE1OGExNjUyOTRhMDNiZGQxZjJhMWZiZTc5YWJjZmFhMi4uMWEzOWUz
ZTEwN2RjMWZkYWIzMmNkMzYyN2U1NGNmMjg1ZjZkMGM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlzaXRlZExpbmtUYWJsZUNv
bnRyb2xsZXIuY3BwCkBAIC01MCwxMCArNTAsMTAgQEAgUGFzc1JlZlB0cjxWaXNpdGVkTGlua1Rh
YmxlQ29udHJvbGxlcj4gVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXI6OmdldE9yQ3JlYXRlKHUK
ICAgICBpZiAodmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXJQdHIpCiAgICAgICAgIHJldHVybiB2
aXNpdGVkTGlua1RhYmxlQ29udHJvbGxlclB0cjsKIAotICAgIFJlZlB0cjxWaXNpdGVkTGlua1Rh
YmxlQ29udHJvbGxlcj4gdmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIgPSBhZG9wdFJlZihuZXcg
VmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIoaWRlbnRpZmllcikpOwotICAgIHZpc2l0ZWRMaW5r
VGFibGVDb250cm9sbGVyUHRyID0gdmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIuZ2V0KCk7Cisg
ICAgYXV0byB2aXNpdGVkTGlua1RhYmxlQ29udHJvbGxlciA9IGFkb3B0UmVmKCpuZXcgVmlzaXRl
ZExpbmtUYWJsZUNvbnRyb2xsZXIoaWRlbnRpZmllcikpOworICAgIHZpc2l0ZWRMaW5rVGFibGVD
b250cm9sbGVyUHRyID0gdmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIucHRyKCk7CiAKLSAgICBy
ZXR1cm4gdmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIucmVsZWFzZSgpOworICAgIHJldHVybiBX
VEZNb3ZlKHZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyKTsKIH0KIAogVmlzaXRlZExpbmtUYWJs
ZUNvbnRyb2xsZXI6OlZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyKHVpbnQ2NF90IGlkZW50aWZp
ZXIpCkBAIC05MCwxMSArOTAsMTEgQEAgdm9pZCBWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlcjo6
YWRkVmlzaXRlZExpbmsoUGFnZSYgcGFnZSwgTGlua0hhc2ggbGlua0hhc2gpCiAKIHZvaWQgVmlz
aXRlZExpbmtUYWJsZUNvbnRyb2xsZXI6OnNldFZpc2l0ZWRMaW5rVGFibGUoY29uc3QgU2hhcmVk
TWVtb3J5OjpIYW5kbGUmIGhhbmRsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFy
ZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6Om1hcChoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVj
dGlvbjo6UmVhZE9ubHkpOworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5Ojpt
YXAoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICBpZiAo
IXNoYXJlZE1lbW9yeSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV92aXNpdGVkTGlua1RhYmxl
LnNldFNoYXJlZE1lbW9yeShzaGFyZWRNZW1vcnkucmVsZWFzZSgpKTsKKyAgICBtX3Zpc2l0ZWRM
aW5rVGFibGUuc2V0U2hhcmVkTWVtb3J5KFdURk1vdmUoc2hhcmVkTWVtb3J5KSk7CiAKICAgICBp
bnZhbGlkYXRlU3R5bGVzRm9yQWxsTGlua3MoKTsKICAgICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigp
Lm1hcmtQYWdlc0ZvclZpc2l0ZWRMaW5rU3R5bGVSZWNhbGMoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDJiNTU0MGRmN2E1MTE5Njg2
MjE5YjVkNTlmMDUzZmYzNTI2YzhhZWYuLjllYzI2NDU3Y2MyNDM5NDMyNWRmZTRkMmViNTcyZWMz
ZGQxYmQ0NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmNwcApAQCAtMTEwLDE4ICsxMTAsMTggQEAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlTGlz
dGVuZXJJRCgpCiAKIFBhc3NSZWZQdHI8V2ViRnJhbWU+IFdlYkZyYW1lOjpjcmVhdGVXaXRoQ29y
ZU1haW5GcmFtZShXZWJQYWdlKiBwYWdlLCBXZWJDb3JlOjpGcmFtZSogY29yZUZyYW1lKQogewot
ICAgIFJlZlB0cjxXZWJGcmFtZT4gZnJhbWUgPSBjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPFdlYkZy
YW1lTG9hZGVyQ2xpZW50PihzdGF0aWNfY2FzdDxXZWJGcmFtZUxvYWRlckNsaWVudCo+KCZjb3Jl
RnJhbWUtPmxvYWRlcigpLmNsaWVudCgpKSkpOworICAgIGF1dG8gZnJhbWUgPSBjcmVhdGUoc3Rk
Ojp1bmlxdWVfcHRyPFdlYkZyYW1lTG9hZGVyQ2xpZW50PihzdGF0aWNfY2FzdDxXZWJGcmFtZUxv
YWRlckNsaWVudCo+KCZjb3JlRnJhbWUtPmxvYWRlcigpLmNsaWVudCgpKSkpOwogICAgIHBhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ3JlYXRlTWFpbkZyYW1lKGZyYW1lLT5m
cmFtZUlEKCkpLCBwYWdlLT5wYWdlSUQoKSwgSVBDOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldh
aXRpbmdGb3JTeW5jUmVwbHkpOwogCiAgICAgZnJhbWUtPm1fY29yZUZyYW1lID0gY29yZUZyYW1l
OwogICAgIGZyYW1lLT5tX2NvcmVGcmFtZS0+dHJlZSgpLnNldE5hbWUoU3RyaW5nKCkpOwogICAg
IGZyYW1lLT5tX2NvcmVGcmFtZS0+aW5pdCgpOwotICAgIHJldHVybiBmcmFtZS5yZWxlYXNlKCk7
CisgICAgcmV0dXJuIGZyYW1lOwogfQogCiBQYXNzUmVmUHRyPFdlYkZyYW1lPiBXZWJGcmFtZTo6
Y3JlYXRlU3ViZnJhbWUoV2ViUGFnZSogcGFnZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIEhU
TUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50KQogewotICAgIFJlZlB0cjxXZWJGcmFt
ZT4gZnJhbWUgPSBjcmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJGcmFtZUxvYWRlckNsaWVudD4o
KSk7CisgICAgYXV0byBmcmFtZSA9IGNyZWF0ZShzdGQ6Om1ha2VfdW5pcXVlPFdlYkZyYW1lTG9h
ZGVyQ2xpZW50PigpKTsKICAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRp
ZENyZWF0ZVN1YmZyYW1lKGZyYW1lLT5mcmFtZUlEKCkpLCBwYWdlLT5wYWdlSUQoKSwgSVBDOjpE
aXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwogCiAgICAgUmVmPFdl
YkNvcmU6OkZyYW1lPiBjb3JlRnJhbWUgPSBGcmFtZTo6Y3JlYXRlKHBhZ2UtPmNvcmVQYWdlKCks
IG93bmVyRWxlbWVudCwgZnJhbWUtPm1fZnJhbWVMb2FkZXJDbGllbnQuZ2V0KCkpOwpAQCAtMTMy
LDE3ICsxMzIsMTcgQEAgUGFzc1JlZlB0cjxXZWJGcmFtZT4gV2ViRnJhbWU6OmNyZWF0ZVN1YmZy
YW1lKFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmluZyYgZnJhbWUKICAgICAgICAgb3duZXJFbGVt
ZW50LT5kb2N1bWVudCgpLmZyYW1lKCktPnRyZWUoKS5hcHBlbmRDaGlsZChXVEZNb3ZlKGNvcmVG
cmFtZSkpOwogICAgIH0KICAgICBmcmFtZS0+bV9jb3JlRnJhbWUtPmluaXQoKTsKLSAgICByZXR1
cm4gZnJhbWUucmVsZWFzZSgpOworICAgIHJldHVybiBmcmFtZTsKIH0KIAogUGFzc1JlZlB0cjxX
ZWJGcmFtZT4gV2ViRnJhbWU6OmNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8V2ViRnJhbWVMb2FkZXJD
bGllbnQ+IGZyYW1lTG9hZGVyQ2xpZW50KQogewotICAgIFJlZlB0cjxXZWJGcmFtZT4gZnJhbWUg
PSBhZG9wdFJlZihuZXcgV2ViRnJhbWUoV1RGTW92ZShmcmFtZUxvYWRlckNsaWVudCkpKTsKKyAg
ICBhdXRvIGZyYW1lID0gYWRvcHRSZWYoKm5ldyBXZWJGcmFtZShXVEZNb3ZlKGZyYW1lTG9hZGVy
Q2xpZW50KSkpOwogCiAgICAgLy8gQWRkIGV4cGxpY3QgcmVmKCkgdGhhdCB3aWxsIGJlIGJhbGFu
Y2VkIGluIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmcmFtZUxvYWRlckRlc3Ryb3llZCgpLgogICAg
IGZyYW1lLT5yZWYoKTsKIAotICAgIHJldHVybiBmcmFtZS5yZWxlYXNlKCk7CisgICAgcmV0dXJu
IFdURk1vdmUoZnJhbWUpOwogfQogCiBXZWJGcmFtZTo6V2ViRnJhbWUoc3RkOjp1bmlxdWVfcHRy
PFdlYkZyYW1lTG9hZGVyQ2xpZW50PiBmcmFtZUxvYWRlckNsaWVudCkKQEAgLTgxOCw3ICs4MTgs
NyBAQCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gV2ViRnJhbWU6OmNyZWF0ZVNlbGVjdGlv
blNuYXBzaG90KCkgY29uc3QKICAgICBpZiAoIXNuYXBzaG90KQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNoYXJlZFNuYXBzaG90ID0gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc25hcHNob3QtPmludGVybmFsU2l6ZSgpLCBT
aGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpOworICAgIGF1dG8gc2hhcmVkU25hcHNob3Qg
PSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzbmFwc2hvdC0+aW50ZXJuYWxTaXpl
KCksIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CiAgICAgaWYgKCFzaGFyZWRTbmFw
c2hvdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTgyOSw3ICs4MjksNyBAQCBQYXNz
UmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gV2ViRnJhbWU6OmNyZWF0ZVNlbGVjdGlvblNuYXBzaG90
KCkgY29uc3QKICAgICBncmFwaGljc0NvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShkZXZpY2VTY2Fs
ZUZhY3RvciwgZGV2aWNlU2NhbGVGYWN0b3IpKTsKICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdD
b25zdW1pbmdJbWFnZUJ1ZmZlcihXVEZNb3ZlKHNuYXBzaG90KSwgRmxvYXRQb2ludCgpKTsKIAot
ICAgIHJldHVybiBzaGFyZWRTbmFwc2hvdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1vdmUo
c2hhcmVkU25hcHNob3QpOwogfQogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNjI1Mjg3ZWU3
NWIyMTJiNDhjNTZmYjgyYmQwZThmN2EwYjdlMWYzMi4uNjg5NDM0MzVlYTFhOWIyMDhkNmRmNGZi
OWFjZDkyOWZkZGQ4ZjkwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcApAQCAtNzU0LDggKzc1NCw4IEBAIFBhc3NSZWZQdHI8UGx1Z2luPiBXZWJQ
YWdlOjpjcmVhdGVQbHVnaW4oV2ViRnJhbWUqIGZyYW1lLCBIVE1MUGx1Z0luRWxlbWVudCogcGx1
CiAjaWYgRU5BQkxFKFBERktJVF9QTFVHSU4pCiAgICAgICAgIFN0cmluZyBwYXRoID0gcGFyYW1l
dGVycy51cmwucGF0aCgpOwogICAgICAgICBpZiAoc2hvdWxkVXNlUERGUGx1Z2luKCkgJiYgKE1J
TUVUeXBlUmVnaXN0cnk6OmlzUERGT3JQb3N0U2NyaXB0TUlNRVR5cGUocGFyYW1ldGVycy5taW1l
VHlwZSkgfHwgKHBhcmFtZXRlcnMubWltZVR5cGUuaXNFbXB0eSgpICYmIChwYXRoLmVuZHNXaXRo
KCIucGRmIiwgZmFsc2UpIHx8IHBhdGguZW5kc1dpdGgoIi5wcyIsIGZhbHNlKSkpKSkgewotICAg
ICAgICAgICAgUmVmUHRyPFBERlBsdWdpbj4gcGRmUGx1Z2luID0gUERGUGx1Z2luOjpjcmVhdGUo
ZnJhbWUpOwotICAgICAgICAgICAgcmV0dXJuIHBkZlBsdWdpbi5yZWxlYXNlKCk7CisgICAgICAg
ICAgICBhdXRvIHBkZlBsdWdpbiA9IFBERlBsdWdpbjo6Y3JlYXRlKGZyYW1lKTsKKyAgICAgICAg
ICAgIHJldHVybiBXVEZNb3ZlKHBkZlBsdWdpbik7CiAgICAgICAgIH0KICNlbHNlCiAgICAgICAg
IFVOVVNFRF9QQVJBTShmcmFtZSk7CkBAIC0xODcwLDcgKzE4NzAsNyBAQCBQYXNzUmVmUHRyPFdl
YkltYWdlPiBXZWJQYWdlOjpzbmFwc2hvdEF0U2l6ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25z
dCBJbnRTaXplJgogICAgIGZsb2F0IHZlcnRpY2FsU2NhbGVGYWN0b3IgPSBzdGF0aWNfY2FzdDxm
bG9hdD4oYml0bWFwU2l6ZS5oZWlnaHQoKSkgLyByZWN0LmhlaWdodCgpOwogICAgIGZsb2F0IHNj
YWxlRmFjdG9yID0gc3RkOjptYXgoaG9yaXpvbnRhbFNjYWxlRmFjdG9yLCB2ZXJ0aWNhbFNjYWxl
RmFjdG9yKTsKIAotICAgIFJlZlB0cjxXZWJJbWFnZT4gc25hcHNob3QgPSBXZWJJbWFnZTo6Y3Jl
YXRlKGJpdG1hcFNpemUsIHNuYXBzaG90T3B0aW9uc1RvSW1hZ2VPcHRpb25zKG9wdGlvbnMpKTsK
KyAgICBhdXRvIHNuYXBzaG90ID0gV2ViSW1hZ2U6OmNyZWF0ZShiaXRtYXBTaXplLCBzbmFwc2hv
dE9wdGlvbnNUb0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7CiAgICAgaWYgKCFzbmFwc2hvdC0+Yml0
bWFwKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0xODc4LDcgKzE4NzgsNyBAQCBQ
YXNzUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFwc2hvdEF0U2l6ZShjb25zdCBJbnRSZWN0
JiByZWN0LCBjb25zdCBJbnRTaXplJgogCiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlv
bnNQcmludGluZykgewogICAgICAgICBQcmludENvbnRleHQ6OnNwb29sQWxsUGFnZXNXaXRoQm91
bmRhcmllcygqY29yZUZyYW1lLCAqZ3JhcGhpY3NDb250ZXh0LCBzbmFwc2hvdFJlY3Quc2l6ZSgp
KTsKLSAgICAgICAgcmV0dXJuIHNuYXBzaG90LnJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJuIHNu
YXBzaG90OwogICAgIH0KIAogICAgIENvbG9yIGRvY3VtZW50QmFja2dyb3VuZENvbG9yID0gZnJh
bWVWaWV3LT5kb2N1bWVudEJhY2tncm91bmRDb2xvcigpOwpAQCAtMTkxMCw3ICsxOTEwLDcgQEAg
UGFzc1JlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNob3RBdFNpemUoY29uc3QgSW50UmVj
dCYgcmVjdCwgY29uc3QgSW50U2l6ZSYKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zdHJva2VS
ZWN0KHNlbGVjdGlvblJlY3RhbmdsZSwgMSk7CiAgICAgfQogICAgIAotICAgIHJldHVybiBzbmFw
c2hvdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHNuYXBzaG90OwogfQogCiBQYXNzUmVmUHRyPFdl
YkltYWdlPiBXZWJQYWdlOjpzbmFwc2hvdE5vZGUoV2ViQ29yZTo6Tm9kZSYgbm9kZSwgU25hcHNo
b3RPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIG1heGltdW1QaXhlbENvdW50KQpAQCAtMTkzOSw3
ICsxOTM5LDcgQEAgUGFzc1JlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNob3ROb2RlKFdl
YkNvcmU6Ok5vZGUmIG5vZGUsIFNuYXBzaG90T3B0aW9ucwogICAgICAgICBzbmFwc2hvdFNpemUg
PSBJbnRTaXplKHNuYXBzaG90U2l6ZS53aWR0aCgpICogc2NhbGVGYWN0b3IsIG1heGltdW1IZWln
aHQpOwogICAgIH0KIAotICAgIFJlZlB0cjxXZWJJbWFnZT4gc25hcHNob3QgPSBXZWJJbWFnZTo6
Y3JlYXRlKHNuYXBzaG90U2l6ZSwgc25hcHNob3RPcHRpb25zVG9JbWFnZU9wdGlvbnMob3B0aW9u
cykpOworICAgIGF1dG8gc25hcHNob3QgPSBXZWJJbWFnZTo6Y3JlYXRlKHNuYXBzaG90U2l6ZSwg
c25hcHNob3RPcHRpb25zVG9JbWFnZU9wdGlvbnMob3B0aW9ucykpOwogICAgIGlmICghc25hcHNo
b3QtPmJpdG1hcCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTk2Myw3ICsxOTYz
LDcgQEAgUGFzc1JlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNob3ROb2RlKFdlYkNvcmU6
Ok5vZGUmIG5vZGUsIFNuYXBzaG90T3B0aW9ucwogICAgIGZyYW1lVmlldy0+c2V0QmFzZUJhY2tn
cm91bmRDb2xvcihzYXZlZEJhY2tncm91bmRDb2xvcik7CiAgICAgZnJhbWVWaWV3LT5zZXROb2Rl
VG9EcmF3KG51bGxwdHIpOwogCi0gICAgcmV0dXJuIHNuYXBzaG90LnJlbGVhc2UoKTsKKyAgICBy
ZXR1cm4gc25hcHNob3Q7CiB9CiAKIHZvaWQgV2ViUGFnZTo6cGFnZURpZFNjcm9sbCgpCkBAIC0z
NDE5LDcgKzM0MTksNyBAQCB2b2lkIFdlYlBhZ2U6OmRyYWdFbmRlZChXZWJDb3JlOjpJbnRQb2lu
dCBjbGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYgogCiB2b2lkIFdlYlBhZ2U6
OndpbGxQZXJmb3JtTG9hZERyYWdEZXN0aW5hdGlvbkFjdGlvbigpCiB7Ci0gICAgbV9zYW5kYm94
RXh0ZW5zaW9uVHJhY2tlci53aWxsUGVyZm9ybUxvYWREcmFnRGVzdGluYXRpb25BY3Rpb24obV9w
ZW5kaW5nRHJvcFNhbmRib3hFeHRlbnNpb24ucmVsZWFzZSgpKTsKKyAgICBtX3NhbmRib3hFeHRl
bnNpb25UcmFja2VyLndpbGxQZXJmb3JtTG9hZERyYWdEZXN0aW5hdGlvbkFjdGlvbihXVEZNb3Zl
KG1fcGVuZGluZ0Ryb3BTYW5kYm94RXh0ZW5zaW9uKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6bWF5
UGVyZm9ybVVwbG9hZERyYWdEZXN0aW5hdGlvbkFjdGlvbigpCkBAIC0zOTcyLDcgKzM5NzIsNyBA
QCB2b2lkIFdlYlBhZ2U6OlNhbmRib3hFeHRlbnNpb25UcmFja2VyOjpkaWRTdGFydFByb3Zpc2lv
bmFsTG9hZChXZWJGcmFtZSogZnJhbWUpCiAKICAgICBBU1NFUlQoIW1fcHJvdmlzaW9uYWxTYW5k
Ym94RXh0ZW5zaW9uKTsKIAotICAgIG1fcHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uID0gbV9w
ZW5kaW5nUHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uLnJlbGVhc2UoKTsKKyAgICBtX3Byb3Zp
c2lvbmFsU2FuZGJveEV4dGVuc2lvbiA9IFdURk1vdmUobV9wZW5kaW5nUHJvdmlzaW9uYWxTYW5k
Ym94RXh0ZW5zaW9uKTsKICAgICBpZiAoIW1fcHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTM5ODksNyArMzk4OSw3IEBAIHZvaWQgV2ViUGFnZTo6U2Fu
ZGJveEV4dGVuc2lvblRyYWNrZXI6OmRpZENvbW1pdFByb3Zpc2lvbmFsTG9hZChXZWJGcmFtZSog
ZnJhbWUpCiAgICAgaWYgKG1fY29tbWl0dGVkU2FuZGJveEV4dGVuc2lvbikKICAgICAgICAgbV9j
b21taXR0ZWRTYW5kYm94RXh0ZW5zaW9uLT5yZXZva2UoKTsKIAotICAgIG1fY29tbWl0dGVkU2Fu
ZGJveEV4dGVuc2lvbiA9IG1fcHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uLnJlbGVhc2UoKTsK
KyAgICBtX2NvbW1pdHRlZFNhbmRib3hFeHRlbnNpb24gPSBXVEZNb3ZlKG1fcHJvdmlzaW9uYWxT
YW5kYm94RXh0ZW5zaW9uKTsKIAogICAgIC8vIFdlIGNhbiBhbHNvIGhhdmUgYSBub24tbnVsbCBt
X3BlbmRpbmdQcm92aXNpb25hbFNhbmRib3hFeHRlbnNpb24gaWYgYSBuZXcgbG9hZCBpcyBiZWlu
ZyBzdGFydGVkLgogICAgIC8vIFRoaXMgZXh0ZW5zaW9uIGlzIG5vdCBjbGVhcmVkLCBiZWNhdXNl
IGl0IGRvZXMgbm90IHBlcnRhaW4gdG8gdGhlIGZhaWxlZCBsb2FkLCBhbmQgd2lsbCBiZSBuZWVk
ZWQuCkBAIC00MTQ4LDcgKzQxNDgsNyBAQCB2b2lkIFdlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZSh1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgY29ucwogICAgICAg
ICBBU1NFUlQoY29yZUZyYW1lLT5kb2N1bWVudCgpLT5wcmludGluZygpKTsKICNlbmRpZgogCi0g
ICAgICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6
Y3JlYXRlU2hhcmVhYmxlKGltYWdlU2l6ZSwgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhh
KTsKKyAgICAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJs
ZShpbWFnZVNpemUsIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CiAgICAgICAgIGF1
dG8gZ3JhcGhpY3NDb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKIAog
ICAgICAgICBmbG9hdCBwcmludGluZ1NjYWxlID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGltYWdlU2l6
ZS53aWR0aCgpKSAvIHJlY3Qud2lkdGgoKTsKQEAgLTQxNjYsNyArNDE2Niw3IEBAIHZvaWQgV2Vi
UGFnZTo6ZHJhd1JlY3RUb0ltYWdlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYg
cHJpbnRJbmZvLCBjb25zCiAgICAgICAgICAgICBtX3ByaW50Q29udGV4dC0+c3Bvb2xSZWN0KCpn
cmFwaGljc0NvbnRleHQsIHJlY3QpOwogICAgICAgICB9CiAKLSAgICAgICAgaW1hZ2UgPSBXZWJJ
bWFnZTo6Y3JlYXRlKGJpdG1hcC5yZWxlYXNlKCkpOworICAgICAgICBpbWFnZSA9IFdlYkltYWdl
OjpjcmVhdGUoV1RGTW92ZShiaXRtYXApKTsKICAgICB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94eS5jcHAK
aW5kZXggZjlhODYzMDhmNThjOTk3MGM2NGRjNGU3MmU3NGE5NjIwNGFlOWFkYy4uYzZmYjcyMTk2
NDRhZDZkNDVlZjkzNmQ1ZGVmYmJmNzk0Y2ViMWE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJveHkuY3BwCkBAIC0zNywx
MiArMzcsMTIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIFBhc3NSZWZQdHI8V2ViUGFnZUdyb3Vw
UHJveHk+IFdlYlBhZ2VHcm91cFByb3h5OjpjcmVhdGUoY29uc3QgV2ViUGFnZUdyb3VwRGF0YSYg
ZGF0YSkKIHsKLSAgICBSZWZQdHI8V2ViUGFnZUdyb3VwUHJveHk+IHBhZ2VHcm91cCA9IGFkb3B0
UmVmKG5ldyBXZWJQYWdlR3JvdXBQcm94eShkYXRhKSk7Ci0gICAgCisgICAgYXV0byBwYWdlR3Jv
dXAgPSBhZG9wdFJlZigqbmV3IFdlYlBhZ2VHcm91cFByb3h5KGRhdGEpKTsKKwogICAgIGlmIChw
YWdlR3JvdXAtPmlzVmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUoKSAmJiBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5pbmplY3RlZEJ1bmRsZSgpKQotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5pbmplY3RlZEJ1bmRsZSgpLT5kaWRJbml0aWFsaXplUGFnZUdyb3VwKHBhZ2VHcm91cC5nZXQo
KSk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmluamVjdGVkQnVuZGxlKCktPmRp
ZEluaXRpYWxpemVQYWdlR3JvdXAocGFnZUdyb3VwLnB0cigpKTsKIAotICAgIHJldHVybiBwYWdl
R3JvdXAucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKHBhZ2VHcm91cCk7CiB9CiAKIFdl
YlBhZ2VHcm91cFByb3h5OjpXZWJQYWdlR3JvdXBQcm94eShjb25zdCBXZWJQYWdlR3JvdXBEYXRh
JiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tCmluZGV4IDZhODZmMTcx
YzJiMjA2Y2EyNjAzMTJlYWQ0OGRjYzMxOGZiMTQzYWYuLjU4MTVjZmU2MTBmZGQ0NmMwNDA1ZGVi
ZDQ0YmFjOGEwZTE4MzkxNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUubW0K
QEAgLTI5NCw3ICsyOTQsNyBAQCBib29sIFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OlByb3Bl
cnRpZXM6OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlcgogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAgICBwcm9w
ZXJ0aWVzLnRpbWluZ0Z1bmN0aW9ucy51bmNoZWNrZWRBcHBlbmQodGltaW5nRnVuY3Rpb24ucmVs
ZWFzZSgpKTsKKyAgICAgICAgICAgIHByb3BlcnRpZXMudGltaW5nRnVuY3Rpb25zLnVuY2hlY2tl
ZEFwcGVuZChXVEZNb3ZlKHRpbWluZ0Z1bmN0aW9uKSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1D
QUxheWVyUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
UGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcAppbmRleCAyMTllODNjMTE0MDc5YTUwZmJjYjA0ZDYx
MTE3N2E4YWY3Zjc4ZGM4Li4yNDc2ODI1MzI3ZTY0Y2UxOWI4MzA5OGE0ZDllOTk4NWVkNDgzODU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRm
b3JtQ0FMYXllclJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCkBAIC01Niw3ICs1Niw3IEBAIFBhc3NS
ZWZQdHI8UGxhdGZvcm1DQUxheWVyUmVtb3RlPiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNyZWF0
ZShMYXllclR5cGUgbGF5ZXJUCiAKICAgICBjb250ZXh0LmxheWVyV2FzQ3JlYXRlZCgqbGF5ZXIs
IGxheWVyVHlwZSk7CiAKLSAgICByZXR1cm4gbGF5ZXIucmVsZWFzZSgpOworICAgIHJldHVybiBX
VEZNb3ZlKGxheWVyKTsKIH0KIAogUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+IFBs
YXRmb3JtQ0FMYXllclJlbW90ZTo6Y3JlYXRlKFBsYXRmb3JtTGF5ZXIgKnBsYXRmb3JtTGF5ZXIs
IFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRleHQmIGNv
bnRleHQpCkBAIC02NiwxMSArNjYsMTEgQEAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXJSZW1v
dGU+IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6Y3JlYXRlKFBsYXRmb3JtTGF5ZXIgKnAKIAogUGFz
c1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6Y3Jl
YXRlKGNvbnN0IFBsYXRmb3JtQ0FMYXllclJlbW90ZSYgb3RoZXIsIFdlYkNvcmU6OlBsYXRmb3Jt
Q0FMYXllckNsaWVudCogb3duZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRleHQmIGNvbnRleHQpCiB7
Ci0gICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllclJlbW90ZT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcg
UGxhdGZvcm1DQUxheWVyUmVtb3RlKG90aGVyLCBvd25lciwgY29udGV4dCkpOworICAgIGF1dG8g
bGF5ZXIgPSBhZG9wdFJlZigqbmV3IFBsYXRmb3JtQ0FMYXllclJlbW90ZShvdGhlciwgb3duZXIs
IGNvbnRleHQpKTsKIAotICAgIGNvbnRleHQubGF5ZXJXYXNDcmVhdGVkKCpsYXllciwgb3RoZXIu
bGF5ZXJUeXBlKCkpOworICAgIGNvbnRleHQubGF5ZXJXYXNDcmVhdGVkKGxheWVyLmdldCgpLCBv
dGhlci5sYXllclR5cGUoKSk7CiAKLSAgICByZXR1cm4gbGF5ZXIucmVsZWFzZSgpOworICAgIHJl
dHVybiBXVEZNb3ZlKGxheWVyKTsKIH0KIAogUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGUoTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQ2xpZW50
KiBvd25lciwgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYgY29udGV4dCkKQEAgLTk1LDEyICs5NSwx
MiBAQCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OlBsYXRmb3JtQ0FMYXllclJlbW90ZShjb25zdCBQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGUmIG90aGVyLAogCiBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXll
cj4gUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjbG9uZShQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93
bmVyKSBjb25zdAogewotICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+IGNsb25lID0g
UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjcmVhdGUoKnRoaXMsIG93bmVyLCAqbV9jb250ZXh0KTsK
KyAgICBhdXRvIGNsb25lID0gUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjcmVhdGUoKnRoaXMsIG93
bmVyLCAqbV9jb250ZXh0KTsKIAogICAgIHVwZGF0ZUNsb25lZExheWVyUHJvcGVydGllcygqY2xv
bmUpOwogCiAgICAgY2xvbmUtPnNldENsb25lZExheWVyKHRoaXMpOwotICAgIHJldHVybiBjbG9u
ZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1vdmUoY2xvbmUpOwogfQogCiBQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGU6On5QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0
b20ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FM
YXllclJlbW90ZUN1c3RvbS5tbQppbmRleCAxNTQyYTZiZmI0MTY5YzMxYWU5ZjhiZTYxZjQ5MmI0
ZTc2NjQyYmM3Li41N2IzY2MxMTEyMjQ5ZjcwODY5MGI1MzVjNjk0MTk2YjU0NGQzNGZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FM
YXllclJlbW90ZUN1c3RvbS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbQpAQCAtNDgsMTAgKzQ4LDEwIEBA
IHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHBsYXRmb3JtQ0FMYXllclBvaW50ZXIgPSBAIldLUGxh
dGZvcm1DQUxheWVyIjsKIAogUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+IFBsYXRm
b3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6Y3JlYXRlKFBsYXRmb3JtTGF5ZXIgKnBsYXRmb3JtTGF5
ZXIsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRleHQm
IGNvbnRleHQpCiB7Ci0gICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllclJlbW90ZT4gbGF5ZXIgPSBh
ZG9wdFJlZihuZXcgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tKFBsYXRmb3JtQ0FMYXllckNv
Y29hOjpsYXllclR5cGVGb3JQbGF0Zm9ybUxheWVyKHBsYXRmb3JtTGF5ZXIpLCBwbGF0Zm9ybUxh
eWVyLCBvd25lciwgY29udGV4dCkpOwotICAgIGNvbnRleHQubGF5ZXJXYXNDcmVhdGVkKCpsYXll
ciwgbGF5ZXItPmxheWVyVHlwZSgpKTsKKyAgICBhdXRvIGxheWVyID0gYWRvcHRSZWYoKm5ldyBQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20oUGxhdGZvcm1DQUxheWVyQ29jb2E6OmxheWVyVHlw
ZUZvclBsYXRmb3JtTGF5ZXIocGxhdGZvcm1MYXllciksIHBsYXRmb3JtTGF5ZXIsIG93bmVyLCBj
b250ZXh0KSk7CisgICAgY29udGV4dC5sYXllcldhc0NyZWF0ZWQobGF5ZXIuZ2V0KCksIGxheWVy
LT5sYXllclR5cGUoKSk7CiAKLSAgICByZXR1cm4gbGF5ZXIucmVsZWFzZSgpOworICAgIHJldHVy
biBXVEZNb3ZlKGxheWVyKTsKIH0KIAogUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpQbGF0
Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20oTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1MYXll
ciAqIGN1c3RvbUxheWVyLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyLCBSZW1vdGVMYXll
clRyZWVDb250ZXh0JiBjb250ZXh0KQpAQCAtMTI3LDEzICsxMjcsMTMgQEAgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI+IFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6Y2xv
bmUoUGxhdGZvcm0KICAgICAgICAgY29weUNvbnRlbnRzID0gZmFsc2U7CiAgICAgfQogCi0gICAg
UmVmUHRyPFBsYXRmb3JtQ0FMYXllclJlbW90ZT4gY2xvbmUgPSBhZG9wdFJlZihuZXcgUGxhdGZv
cm1DQUxheWVyUmVtb3RlQ3VzdG9tKGxheWVyVHlwZSgpLCBjbG9uZWRMYXllci5nZXQoKSwgb3du
ZXIsICpjb250ZXh0KCkpKTsKLSAgICBjb250ZXh0KCktPmxheWVyV2FzQ3JlYXRlZCgqY2xvbmUs
IGNsb25lLT5sYXllclR5cGUoKSk7CisgICAgYXV0byBjbG9uZSA9IGFkb3B0UmVmKCpuZXcgUGxh
dGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tKGxheWVyVHlwZSgpLCBjbG9uZWRMYXllci5nZXQoKSwg
b3duZXIsICpjb250ZXh0KCkpKTsKKyAgICBjb250ZXh0KCktPmxheWVyV2FzQ3JlYXRlZChjbG9u
ZS5nZXQoKSwgY2xvbmUtPmxheWVyVHlwZSgpKTsKIAotICAgIHVwZGF0ZUNsb25lZExheWVyUHJv
cGVydGllcygqY2xvbmUsIGNvcHlDb250ZW50cyk7CisgICAgdXBkYXRlQ2xvbmVkTGF5ZXJQcm9w
ZXJ0aWVzKGNsb25lLmdldCgpLCBjb3B5Q29udGVudHMpOwogCiAgICAgY2xvbmUtPnNldENsb25l
ZExheWVyKHRoaXMpOwotICAgIHJldHVybiBjbG9uZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdU
Rk1vdmUoY2xvbmUpOwogfQogCiBDRlR5cGVSZWYgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9t
Ojpjb250ZW50cygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQpp
bmRleCBmZmU4Y2NmNDgyMmYzYWU2Nzk3Mzg0ZDU0MzQ3MWM0ODYzOTM4NjNmLi45NmNlNzM3ZjEy
YzMzNGQ5YTUzMmU1ZjFmZTlhMDczOTg5YjA4YjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWEubW0KQEAgLTExMSw5ICsxMTEsOSBAQCBHcmFwaGljc0xheWVyRmFjdG9yeSog
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkKIAogUmVm
UHRyPERpc3BsYXlSZWZyZXNoTW9uaXRvcj4gUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmNy
ZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRvcihQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCiB7
Ci0gICAgUmVmUHRyPFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcj4gbW9uaXRv
ciA9IFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcjo6Y3JlYXRlKGRpc3BsYXlJ
RCwgKnRoaXMpOwotICAgIG1fZGlzcGxheVJlZnJlc2hNb25pdG9ycy5hZGQobW9uaXRvci5nZXQo
KSk7Ci0gICAgcmV0dXJuIG1vbml0b3IucmVsZWFzZSgpOworICAgIGF1dG8gbW9uaXRvciA9IFJl
bW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcjo6Y3JlYXRlKGRpc3BsYXlJRCwgKnRo
aXMpOworICAgIG1fZGlzcGxheVJlZnJlc2hNb25pdG9ycy5hZGQobW9uaXRvci5wdHIoKSk7Cisg
ICAgcmV0dXJuIFdURk1vdmUobW9uaXRvcik7CiB9CiAKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWE6OndpbGxEZXN0cm95RGlzcGxheVJlZnJlc2hNb25pdG9yKERpc3BsYXlSZWZyZXNo
TW9uaXRvciogbW9uaXRvcikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCA2NWUwZWUyMTE2NjRhMzhmZDczM2JjNmY3OGJkMjFjYzU0ZjZlMTVlLi4w
MDViZmQ4NWRmOGI4NjlhYjRhMjJmYWQ1MzdjZWQyMDg5YjIxYWE3IDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTYt
MDYtMjAgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92
ZSBSZWZQdHI6OnJlbGVhc2UoKSBhbmQgY2hhbmdlIGNhbGxzIHNpdGVzIHRvIHVzZSBXVEZNb3Zl
KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODM2
OQorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgIFJlZlB0cjo6
cmVsZWFzZSgpIHJlbGVhc2VzIGl0cyBtYW5hZ2VkIHBvaW50ZXIgYXdrd2FyZGx5LiBJdCdzIG1v
cmUKKyAgICAgICAgZGlyZWN0IGFuZCBjbGVhcmVyIHRvIHVzZSBXVEZNb3ZlIHRvIHRyYW5zZmVy
IG93bmVyc2hpcCBvZiB0aGUgbWFuYWdlZAorICAgICAgICBwb2ludGVyLgorCisgICAgICAgIEFz
IHBhcnQgb2YgdGhpcyBjbGVhbnVwLCBhbHNvIGNoYW5nZSBhIGxvdCBvZiBleHBsaWNpdCBkYXRh
IHR5cGVzIHRvCisgICAgICAgICdhdXRvJy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21h
Yy9QaXhlbER1bXBTdXBwb3J0TWFjLm1tOgorICAgICAgICAoY3JlYXRlQml0bWFwQ29udGV4dEZy
b21XZWJWaWV3KToKKyAgICAgICAgKGNyZWF0ZVBhZ2VkQml0bWFwQ29udGV4dCk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW06CisgICAgICAgIChUZXN0UnVu
bmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbik6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvSGFzaENvdW50ZWRTZXQuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHA6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxNi0wNi0xNiAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIy
MDIwMDIgYW5kIHIyMDIxMTEuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
UGl4ZWxEdW1wU3VwcG9ydE1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9QaXhlbER1
bXBTdXBwb3J0TWFjLm1tCmluZGV4IGUzMzM0ZWZlNTMyOTBjM2RkZGM1ZjVhZWE1NDg4NzFhNzZk
ZmFiZjEuLjlmOTk2ZDMyYzEwYmFhODk3NThjMjhiMTg4YzI4MDg0MTA5YmYyMTAgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9QaXhlbER1bXBTdXBwb3J0TWFjLm1tCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9QaXhlbER1bXBTdXBwb3J0TWFjLm1tCkBAIC0xMjAs
NyArMTIwLDcgQEAgUGFzc1JlZlB0cjxCaXRtYXBDb250ZXh0PiBjcmVhdGVCaXRtYXBDb250ZXh0
RnJvbVdlYlZpZXcoYm9vbCBvbnNjcmVlbiwgYm9vbCBpbmMKICAgICBzaXplX3QgcGl4ZWxzSGln
aCA9IHN0YXRpY19jYXN0PHNpemVfdD4od2ViVmlld1NpemUuaGVpZ2h0ICogZGV2aWNlU2NhbGVG
YWN0b3IpOwogICAgIHNpemVfdCByb3dCeXRlcyA9IDA7CiAgICAgdm9pZCogYnVmZmVyID0gbnVs
bHB0cjsKLSAgICBSZWZQdHI8Qml0bWFwQ29udGV4dD4gYml0bWFwQ29udGV4dCA9IGNyZWF0ZUJp
dG1hcENvbnRleHQocGl4ZWxzV2lkZSwgcGl4ZWxzSGlnaCwgcm93Qnl0ZXMsIGJ1ZmZlcik7Cisg
ICAgYXV0byBiaXRtYXBDb250ZXh0ID0gY3JlYXRlQml0bWFwQ29udGV4dChwaXhlbHNXaWRlLCBw
aXhlbHNIaWdoLCByb3dCeXRlcywgYnVmZmVyKTsKICAgICBpZiAoIWJpdG1hcENvbnRleHQpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gYml0bWFw
Q29udGV4dC0+Y2dDb250ZXh0KCk7CkBAIC0xOTQsNyArMTk0LDcgQEAgUGFzc1JlZlB0cjxCaXRt
YXBDb250ZXh0PiBjcmVhdGVCaXRtYXBDb250ZXh0RnJvbVdlYlZpZXcoYm9vbCBvbnNjcmVlbiwg
Ym9vbCBpbmMKICAgICAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsKICAgICB9
CiAgICAgCi0gICAgcmV0dXJuIGJpdG1hcENvbnRleHQucmVsZWFzZSgpOworICAgIHJldHVybiBi
aXRtYXBDb250ZXh0OwogfQogCiBQYXNzUmVmUHRyPEJpdG1hcENvbnRleHQ+IGNyZWF0ZVBhZ2Vk
Qml0bWFwQ29udGV4dCgpCkBAIC0yMDcsMTAgKzIwNywxMCBAQCBQYXNzUmVmUHRyPEJpdG1hcENv
bnRleHQ+IGNyZWF0ZVBhZ2VkQml0bWFwQ29udGV4dCgpCiAKICAgICBpbnQgdG90YWxIZWlnaHQg
PSBudW1iZXJPZlBhZ2VzICogKHBhZ2VIZWlnaHRJblBpeGVscyArIDEpIC0gMTsKIAotICAgIFJl
ZlB0cjxCaXRtYXBDb250ZXh0PiBiaXRtYXBDb250ZXh0ID0gY3JlYXRlQml0bWFwQ29udGV4dChw
YWdlV2lkdGhJblBpeGVscywgdG90YWxIZWlnaHQsIHJvd0J5dGVzLCBidWZmZXIpOworICAgIGF1
dG8gYml0bWFwQ29udGV4dCA9IGNyZWF0ZUJpdG1hcENvbnRleHQocGFnZVdpZHRoSW5QaXhlbHMs
IHRvdGFsSGVpZ2h0LCByb3dCeXRlcywgYnVmZmVyKTsKICAgICBDR0NvbnRleHRSZWYgY29udGV4
dCA9IGJpdG1hcENvbnRleHQtPmNnQ29udGV4dCgpOwogICAgIENHQ29udGV4dFRyYW5zbGF0ZUNU
TShjb250ZXh0LCAwLCB0b3RhbEhlaWdodCk7CiAgICAgQ0dDb250ZXh0U2NhbGVDVE0oY29udGV4
dCwgMSwgLTEpOwogICAgIFttYWluRnJhbWUgcHJpbnRUb0NHQ29udGV4dDpjb250ZXh0IHBhZ2VX
aWR0aDpwYWdlV2lkdGhJblBpeGVscyBwYWdlSGVpZ2h0OnBhZ2VIZWlnaHRJblBpeGVsc107Ci0g
ICAgcmV0dXJuIGJpdG1hcENvbnRleHQucmVsZWFzZSgpOworICAgIHJldHVybiBiaXRtYXBDb250
ZXh0OwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJN
YWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQppbmRleCBl
NGY1MjQ4Mjg5M2FmNDI3Y2VkMTk2OWY3MWYzODE2M2YyOThkMTdhLi40NDVmNDQ5NDlmOTkzZmIy
MDZhMjEwYjE0MjY2Y2E1MmYzNmNhOTYxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVz
dFJ1bm5lck1hYy5tbQpAQCAtNDI3LDggKzQyNyw4IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9j
a0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBk
CiAgICAgICAgIC8vIFRlc3QgdGhlIGV4cG9zZWQgQVBJLgogICAgICAgICBwb3NpdGlvbiA9IFtb
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbiBhbGxvY10gaW5pdFdpdGhUaW1lc3RhbXA6Y3VycmVudFRp
bWUoKSBsYXRpdHVkZTpsYXRpdHVkZSBsb25naXR1ZGU6bG9uZ2l0dWRlIGFjY3VyYWN5OmFjY3Vy
YWN5XTsKICAgICB9IGVsc2UgewotICAgICAgICBSZWZQdHI8V2ViQ29yZTo6R2VvbG9jYXRpb25Q
b3NpdGlvbj4gY29yZUdlb2xvY2F0aW9uUG9zaXRpb24gPSBXZWJDb3JlOjpHZW9sb2NhdGlvblBv
c2l0aW9uOjpjcmVhdGUoY3VycmVudFRpbWUoKSwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJh
Y3ksIHByb3ZpZGVzQWx0aXR1ZGUsIGFsdGl0dWRlLCBwcm92aWRlc0FsdGl0dWRlQWNjdXJhY3ks
IGFsdGl0dWRlQWNjdXJhY3ksIHByb3ZpZGVzSGVhZGluZywgaGVhZGluZywgcHJvdmlkZXNTcGVl
ZCwgc3BlZWQpOwotICAgICAgICBwb3NpdGlvbiA9IFtbV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiBh
bGxvY10gaW5pdFdpdGhHZW9sb2NhdGlvblBvc2l0aW9uOihjb3JlR2VvbG9jYXRpb25Qb3NpdGlv
bi5yZWxlYXNlKCkpXTsKKyAgICAgICAgYXV0byBjb3JlR2VvbG9jYXRpb25Qb3NpdGlvbiA9IFdl
YkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZShjdXJyZW50VGltZSgpLCBsYXRpdHVk
ZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSwgcHJvdmlkZXNBbHRpdHVkZSwgYWx0aXR1ZGUsIHByb3Zp
ZGVzQWx0aXR1ZGVBY2N1cmFjeSwgYWx0aXR1ZGVBY2N1cmFjeSwgcHJvdmlkZXNIZWFkaW5nLCBo
ZWFkaW5nLCBwcm92aWRlc1NwZWVkLCBzcGVlZCk7CisgICAgICAgIHBvc2l0aW9uID0gW1tXZWJH
ZW9sb2NhdGlvblBvc2l0aW9uIGFsbG9jXSBpbml0V2l0aEdlb2xvY2F0aW9uUG9zaXRpb246KFdU
Rk1vdmUoY29yZUdlb2xvY2F0aW9uUG9zaXRpb24pKV07CiAgICAgfQogICAgIFtbTW9ja0dlb2xv
Y2F0aW9uUHJvdmlkZXIgc2hhcmVkXSBzZXRQb3NpdGlvbjpwb3NpdGlvbl07CiAgICAgW3Bvc2l0
aW9uIHJlbGVhc2VdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
SGFzaENvdW50ZWRTZXQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaENv
dW50ZWRTZXQuY3BwCmluZGV4IDRjMWFmZDEwNWJmMWY3MDIzMDczZjY2MmMyNmZhYjg1Y2I4Mzg1
ZjMuLjZhN2JiMTliNTUzOTgyYjMzNTM5MGVmY2JmNzNjNDdiOWFkZmE5NTkgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hDb3VudGVkU2V0LmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoQ291bnRlZFNldC5jcHAKQEAgLTM3MCw3
ICszNzAsNyBAQCBURVNUKFdURl9IYXNoQ291bnRlZFNldCwgUmVmUHRyS2V5X0FkZFVzaW5nUmVs
ZWFzZSkKICAgICAKICAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKICAgICBSZWZQdHI8UmVm
TG9nZ2VyPiBwdHIoJmEpOwotICAgIGhhc2hDb3VudGVkU2V0LmFkZChwdHIucmVsZWFzZSgpKTsK
KyAgICBoYXNoQ291bnRlZFNldC5hZGQoV1RGTW92ZShwdHIpKTsKICAgICAKICAgICBFWFBFQ1Rf
U1RSRVEoInJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiB9CkBAIC00MzYsNyArNDM2
LDcgQEAgVEVTVChXVEZfSGFzaENvdW50ZWRTZXQsIFJlZlB0cktleV9BZGRVc2luZ1JlbGVhc2VL
ZXlBbHJlYWR5UHJlc2VudCkKICAgICAKICAgICB7CiAgICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+
IHB0cjIoJmEpOwotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IGhhc2hDb3VudGVkU2V0LmFkZChw
dHIyLnJlbGVhc2UoKSk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gaGFzaENvdW50ZWRTZXQu
YWRkKFdURk1vdmUocHRyMikpOwogICAgICAgICBFWFBFQ1RfRkFMU0UoYWRkUmVzdWx0LmlzTmV3
RW50cnkpOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0hhc2hNYXAuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1h
cC5jcHAKaW5kZXggMmYwNjYyM2M0YTQ4YWZiNzQzMDExNzlkYzI2Yjg2NTQ0ZjZmZmQ4NS4uMDhh
NDE0ZGJlMDMxMTEzNzhkYTI5ZWVmNDE3YWY4ZTE2ODAzMDgzNSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAKQEAgLTMwOSw3ICszMDksNyBAQCBURVNUKFdURl9I
YXNoTWFwLCBSZWZQdHJLZXlfQWRkVXNpbmdSZWxlYXNlKQogCiAgICAgRGVyaXZlZFJlZkxvZ2dl
ciBhKCJhIik7CiAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcHRyKCZhKTsKLSAgICBtYXAuYWRkKHB0
ci5yZWxlYXNlKCksIDApOworICAgIG1hcC5hZGQoV1RGTW92ZShwdHIpLCAwKTsKIAogICAgIEVY
UEVDVF9TVFJFUSgicmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIH0KQEAgLTM3Myw3
ICszNzMsNyBAQCBURVNUKFdURl9IYXNoTWFwLCBSZWZQdHJLZXlfQWRkVXNpbmdSZWxlYXNlS2V5
QWxyZWFkeVByZXNlbnQpCiAKICAgICB7CiAgICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+IHB0cjIo
JmEpOwotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1hcC5hZGQocHRyMi5yZWxlYXNlKCksIDAp
OworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1hcC5hZGQoV1RGTW92ZShwdHIyKSwgMCk7CiAg
ICAgICAgIEVYUEVDVF9GQUxTRShhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAgfQogCkBAIC00
MTksNyArNDE5LDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgUmVmUHRyS2V5X1NldFVzaW5nUmVsZWFz
ZSkKIAogICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOwogICAgIFJlZlB0cjxSZWZMb2dnZXI+
IHB0cigmYSk7Ci0gICAgbWFwLnNldChwdHIucmVsZWFzZSgpLCAwKTsKKyAgICBtYXAuc2V0KFdU
Rk1vdmUocHRyKSwgMCk7CiAKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSAiLCB0YWtlTG9nU3Ry
KCkuY19zdHIoKSk7CiB9CkBAIC00ODEsNyArNDgxLDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgUmVm
UHRyS2V5X1NldFVzaW5nUmVsZWFzZUtleUFscmVhZHlQcmVzZW50KQogCiAgICAgewogICAgICAg
ICBSZWZQdHI8UmVmTG9nZ2VyPiBwdHIyKCZhKTsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBt
YXAuc2V0KHB0cjIucmVsZWFzZSgpLCAxKTsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtYXAu
c2V0KFdURk1vdmUocHRyMiksIDEpOwogICAgICAgICBFWFBFQ1RfRkFMU0UoYWRkUmVzdWx0Lmlz
TmV3RW50cnkpOwogICAgICAgICBFWFBFQ1RfRVEoMSwgbWFwLmdldChwdHIuZ2V0KCkpKTsKICAg
ICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281671</attachid>
            <date>2016-06-20 13:22:10 -0700</date>
            <delta_ts>2016-06-20 13:52:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158369-20160620132203.patch</filename>
            <type>text/plain</type>
            <size>294937</size>
            <attacher name="Keith Rollin">krollin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyMTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
YzQyYWM2NmJlMzA5NzZjMDExZGE3NjIzNmM0NWRkMTY4MDZiNmMzLi40NDQ0YjMxM2Y2YjY3MjJh
NTMxODVkNDYwZTNkYmYzNDVhMjgzMTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NSBAQAorMjAxNi0wNi0yMCAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVtb3ZlIFJlZlB0cjo6cmVsZWFzZSgpIGFuZCBjaGFuZ2UgY2FsbHMgc2l0
ZXMgdG8gdXNlIFdURk1vdmUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU4MzY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisK
KyAgICAgICAgUmVmUHRyOjpyZWxlYXNlKCkgcmVsZWFzZXMgaXRzIG1hbmFnZWQgcG9pbnRlciBh
d2t3YXJkbHkuIEl0J3MgbW9yZQorICAgICAgICBkaXJlY3QgYW5kIGNsZWFyZXIgdG8gdXNlIFdU
Rk1vdmUgdG8gdHJhbnNmZXIgb3duZXJzaGlwIG9mIHRoZSBtYW5hZ2VkCisgICAgICAgIHBvaW50
ZXIuCisKKyAgICAgICAgQXMgcGFydCBvZiB0aGlzIGNsZWFudXAsIGFsc28gY2hhbmdlIGEgbG90
IG9mIGV4cGxpY2l0IGRhdGEgdHlwZXMgdG8KKyAgICAgICAgJ2F1dG8nLgorCisgICAgICAgICog
QVBJL0pTT2JqZWN0UmVmLmNwcDoKKyAgICAgICAgKEpTQ2xhc3NDcmVhdGUpOgorICAgICAgICAq
IEFQSS9KU1NjcmlwdFJlZi5jcHA6CisgICAgICAgICogQVBJL0pTVmFsdWVSZWYuY3BwOgorICAg
ICAgICAoSlNWYWx1ZVRvU3RyaW5nQ29weSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL1N0YXRp
Y1Byb3BlcnR5QW5hbHl6ZXIuaDoKKyAgICAgICAgKEpTQzo6U3RhdGljUHJvcGVydHlBbmFseXpl
cjo6bmV3T2JqZWN0KToKKyAgICAgICAgKEpTQzo6U3RhdGljUHJvcGVydHlBbmFseXplcjo6bW92
KToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHA6CisgICAgICAgIChK
U0M6OkRlYnVnZ2VyQ2FsbEZyYW1lOjppbnZhbGlkYXRlKToKKyAgICAgICAgKiBkZmcvREZHSklU
Q29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxlKToK
KyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6
SW5zcGVjdG9yVmFsdWU6OnBhcnNlSlNPTik6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50Ojph
Y3RpdmF0ZUV4dHJhRG9tYWluKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnQ6
OmFjdGl2YXRlRXh0cmFEb21haW5zKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uUHJvYmUpOgorICAgICAgICAqIGluc3BlY3Rvci9y
ZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNw
ZWN0b3I6OnJlY2VpdmVkU2V0dXBNZXNzYWdlKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6
CisgICAgICAgIChKU0M6OmxpbmtQb2x5bW9ycGhpY0NhbGwpOgorICAgICAgICAqIHJ1bnRpbWUv
R2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgICogcnVu
dGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1
Y3RBcnJheUJ1ZmZlcik6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oOgor
ICAgICAgICAoSlNDOjpQcm9wZXJ0eU5hbWVBcnJheTo6cmVsZWFzZURhdGEpOgorICAgICAgICAq
IHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b1N0cnVj
dHVyZVNoYXBlKToKKyAgICAgICAgKiBydW50aW1lL1R5cGVTZXQuY3BwOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmVTaGFwZTo6bWVyZ2UpOgorICAgICAgICAqIHRvb2xzL0Z1bmN0aW9uT3ZlcnJp
ZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6ZU92ZXJyaWRlSW5mbyk6CisKIDIwMTYt
MDYtMTYgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBjb2xs
ZWN0aW5nIG9mIExMSU5UIHNsb3cgcGF0aCBzdGF0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhYjQ3NDBhMmU1
NGZlMjRmOGNjNzI1YWU4ZGI0NzBhNTFlZDEzYWM4Li4xMDU1MzkyYzBhNmM5MGU0MThiYzVjZmNi
MDdmMTJkZjBkZTk1YWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjE4IEBACisyMDE2LTA2LTIw
ICBLZWl0aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgUmVm
UHRyOjpyZWxlYXNlKCkgYW5kIGNoYW5nZSBjYWxscyBzaXRlcyB0byB1c2UgV1RGTW92ZSgpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgzNjkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICBSZWZQdHI6OnJlbGVh
c2UoKSByZWxlYXNlcyBpdHMgbWFuYWdlZCBwb2ludGVyIGF3a3dhcmRseS4gSXQncyBtb3JlCisg
ICAgICAgIGRpcmVjdCBhbmQgY2xlYXJlciB0byB1c2UgV1RGTW92ZSB0byB0cmFuc2ZlciBvd25l
cnNoaXAgb2YgdGhlIG1hbmFnZWQKKyAgICAgICAgcG9pbnRlci4KKworICAgICAgICBBcyBwYXJ0
IG9mIHRoaXMgY2xlYW51cCwgYWxzbyBjaGFuZ2UgYSBsb3Qgb2YgZXhwbGljaXQgZGF0YSB0eXBl
cyB0bworICAgICAgICAnYXV0bycuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzOiB0aGVyZSdzIG5v
IG5ldyBmdW5jdGlvbmFsaXR5LCBqdXN0IGEgcmVmYWN0b3Jpbmcgb2YKKyAgICAgICAgZXhpc3Rp
bmcgY29kZS4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZVNhbXBsZXNGcm9tVHJhY2tCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpwcm92aWRlTWVkaWFEYXRhKToKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VXNlck1lZGlhUmVxdWVzdDo6c3RhcnQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0
YWJhc2UvU1FMQ2FsbGJhY2tXcmFwcGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTUUxDYWxsYmFj
a1dyYXBwZXI6OmNsZWFyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYW5kbGVQb3N0TWVzc2FnZSk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSGlz
dG9yeTo6cHVzaFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSGlzdG9yeTo6cmVwbGFjZVN0
YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmg6CisgICAg
ICAgIChXZWJDb3JlOjpoYW5kbGVQb3N0TWVzc2FnZSk6CisgICAgICAgICogYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xs
ZXI6OmNyZWF0ZVNjcmlwdEluc3RhbmNlRm9yV2lkZ2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNl
cmlhbGl6ZXI6OnJlYWRUZXJtaW5hbCk6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9y
Ojpjb3B5UHJvcGVydGllc0luU2V0KToKKyAgICAgICAgKiBjc3MvU1ZHQ1NTUGFyc2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VTVkdWYWx1ZSk6CisgICAgICAgICog
Y3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0U2hhcGVWYWx1ZSk6CisgICAgICAgICogY3NzL1N0eWxlUHJv
cGVydGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnRpZXM6OmNvcHlQcm9w
ZXJ0aWVzSW5TZXQpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmxvYWRQZW5kaW5nSW1hZ2VzKToKKyAgICAgICAgKiBk
b20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVN0
eWxlU2hlZXRPd25lcjo6Y2xlYXJTaGVldCk6CisgICAgICAgICogZWRpdGluZy9BcHBseVN0eWxl
Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlJ
bmxpbmVTdHlsZVRvTm9kZVJhbmdlKToKKyAgICAgICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRD
b21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZW1v
dmVDaGlsZHJlbkluUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1h
bmQ6OnJlbW92ZU5vZGVBbmRQcnVuZUFuY2VzdG9ycyk6CisgICAgICAgIChXZWJDb3JlOjpDb21w
b3NpdGVFZGl0Q29tbWFuZDo6cHJ1bmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRp
dENvbW1hbmQ6OnJlcGxhY2VTZWxlY3RlZFRleHRJbk5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlYmFsYW5jZVdoaXRlc3BhY2VPblRleHRTdWJzdHJpbmcp
OgorICAgICAgICAqIGVkaXRpbmcvQ3JlYXRlTGlua0NvbW1hbmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q3JlYXRlTGlua0NvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvRWRp
dGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6bWVyZ2VTdHls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6Om1lcmdlU3R5bGVGcm9tUnVsZXNG
b3JTZXJpYWxpemF0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDbGVhclRleHRDb21tYW5kOjpDcmVhdGVBbmRBcHBseSk6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMp
OgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpleGVjdXRlSW5zZXJ0Tm9kZSk6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRUZXh0Q29tbWFuZDo6cGVyZm9ybU92ZXJ3
cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRUZXh0Q29tbWFuZDo6aW5zZXJ0VGFiKToK
KyAgICAgICAgKiBlZGl0aW5nL1JlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5k
Ojpkb0FwcGx5KToKKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VtZW50RnJhZ21lbnQ6OnJlbW92ZU5vZGVQcmVz
ZXJ2aW5nQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQ6Om1vdmVOb2RlT3V0T2ZBbmNlc3Rvcik6CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlE
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNl
cjo6bG9hZERvY3VtZW50VGVtcGxhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTEZvbnRFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb250RWxlbWVudDo6Y29sbGVjdFN0eWxlRm9y
UHJlc2VudGF0aW9uQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OnByZXBhcmVGb3JTdWJtaXNz
aW9uKToKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6bGVha0JvcmRlclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmxlYWtHcm91cEJvcmRl
clN0eWxlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpydW5TY3JpcHRzRm9yUGF1c2Vk
VHJlZUJ1aWxkZXIpOgorICAgICAgICAqIGh0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRUcmFjay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmREYXRhVGV4dFRyYWNrOjphZGREYXRhQ3VlKToK
KyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY1RleHRUcmFjazo6bmV3Q3Vlc1BhcnNlZCk6CisgICAg
ICAgICogaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpuZXdDdWVzUGFyc2VkKToKKyAgICAgICAgKiBo
dG1sL3RyYWNrL1RleHRUcmFja0N1ZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRy
YWNrQ3VlTGlzdDo6YWRkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldElubGluZVN0eWxl
c0Zvck5vZGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cHVzaENoaWxkTm9kZXNUb0Zyb250
ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50Ojpsb2FkUmVzb3VyY2UpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yU2VsZWN0b3JMaXN0KToKKyAgICAgICAg
KiBsb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybVN1Ym1p
c3Npb246OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkVVJMSW50b0NoaWxkRnJhbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRVUkwpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL1Byb2dyZXNzVHJh
Y2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmVzc1RyYWNrZXI6OmZpbmFsUHJvZ3Jl
c3NDb21wbGV0ZSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVH
cm91cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpc2Fz
c29jaWF0ZURvY3VtZW50TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2Fj
aGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlv
bkNhY2hlR3JvdXA6OmNoZWNrSWZMb2FkSXNDb21wbGV0ZSk6CisgICAgICAgICogbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGVHcm91cCk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FjaGVHcm91cEZvclVSTCk6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZmFsbGJhY2tDYWNoZUdyb3VwRm9yVVJM
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUp
OgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjo6cG9wU3ViZnJh
bWVBcmNoaXZlKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24pOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFn
ZTo6Y3JlYXRlSW1hZ2UpOgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OnNldEljb25EYXRhRm9ySWNvblVSTCk6
CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OmdldE9yQ3JlYXRlSWNvblJlY29yZCk6
CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OnJlYWRGcm9tRGF0YWJhc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpnZXRJbWFnZURhdGFGb3JJY29uVVJMRnJvbVNR
TERhdGFiYXNlKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpET01XaW5kb3c6OnNlc3Npb25TdG9yYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdp
bmRvdzo6bG9jYWxTdG9yYWdlKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnVwZGF0ZURyYWdBbmREcm9wKToKKyAgICAg
ICAgKiBwYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29tcG9zaXRlQW5pbWF0aW9uOjp1cGRhdGVUcmFuc2l0aW9ucyk6CisgICAgICAgICog
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0VmlvbGF0aW9uKToKKyAgICAgICAgKiBwYWdlL21h
Yy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZXNPdmVybGF5Q29udHJvbGxlcjo6Y3JlYXRlT3ZlcmxheUlmTmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OmRldGVybWluZUFjdGl2ZUhpZ2hsaWdo
dCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5o
OgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6cmVsZWFzZVNj
cm9sbGluZ1RyZWUpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OmNsb25lQW5kUmVz
ZXQpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVRyZWU6OmF0dGFjaE5vZGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Z2V0Q29uY2F0ZW5hdGVkSW1wdWxzZVJlc3BvbnNlc0ZvclN1YmplY3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6Y3JlYXRlTW9uaXRvckZv
ckNsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZUZvbnRzOjpnbHlwaERhdGFGb3JTeXN0
ZW1GYWxsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0F0dHJpYnV0ZWRTdHJpbmdzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQzo6dXBkYXRl
T3B0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQzo6cHJvY2Vzc0NvZGVkRnJhbWUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtQ0FMYXllcjo6Y3JlYXRlQ29tcGF0aWJsZUxheWVyT3JUYWtlRnJvbVBvb2wpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlQnVmZmVyRGF0YTo6Z2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rmls
dGVyRWZmZWN0Ojphc1VubXVsdGlwbGllZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRl
ckVmZmVjdDo6YXNQcmVtdWx0aXBsaWVkSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL21hYy9JbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpsb2FkUGxhdGZv
cm1SZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dDNET3BlbkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpjcmVhdGVGb3JDdXJyZW50R0xDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSk6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJN
YWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6
Y3JlYXRlTWVkaWFTdHJlYW0pOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXI6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpjcmVhdGVNZWRpYVN0cmVhbSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkJsb2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAg
IChXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Zm9ybUNy
ZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9CaWRpQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpCaWRpQ29udGV4dDo6Y29weVN0YWNrUmVtb3ZpbmdVbmljb2RlRW1iZWRkaW5n
Q29udGV4dHMpOgorICAgICAgICAqIHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6Y3JlYXRlU2Nyb2xsYmFyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJv
eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpjcmVhdGVTY3JvbGxiYXIp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHA6CisgICAgICAgIChSZW5k
ZXJNZW51TGlzdDo6Y3JlYXRlU2Nyb2xsYmFyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
U2VhcmNoRmllbGQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2VhcmNoRmllbGQ6OmNy
ZWF0ZVNjcm9sbGJhcik6CisgICAgICAgICogcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVwbGF5Q29udHJvbGxlcjo6dW5sb2FkU2VnbWVudCk6CisgICAg
ICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcv
U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL3Byb3BlcnRp
ZXMvU1ZHTGlzdFByb3BlcnR5Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0UHJvcGVydHk6
OmdldEl0ZW1WYWx1ZXNBbmRXcmFwcGVycyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0UHJv
cGVydHk6Omluc2VydEl0ZW1CZWZvcmVWYWx1ZXNBbmRXcmFwcGVycyk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdMaXN0UHJvcGVydHk6OnJlbW92ZUl0ZW1WYWx1ZXNBbmRXcmFwcGVycyk6CisgICAg
ICAgICogd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
VGhyZWFkOjp3b3JrZXJUaHJlYWQpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6aW50ZXJuYWxBYm9ydCk6CisgICAg
ICAgICogeG1sL1hQYXRoU3RlcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6U3RlcDo6
bm9kZXNJbkF4aXMpOgorCiAyMDE2LTA2LTE2ICBBZGFtIEJlcmdrdmlzdCAgPGFkYW0uYmVyZ2t2
aXN0QGVyaWNzc29uLmNvbT4KIAogICAgICAgICBXZWJSVEM6IENoZWNrIHR5cGUgb2YgdGhpcyBp
biBSVENQZWVyQ29ubmVjdGlvbiBKUyBidWlsdC1pbiBmdW5jdGlvbnMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNjI4
MmFjMDA2MTFjMDg0ZjExMjQyOGMzMDY1ZWM2ZWQzMDhlMmQzMS4uNTFiOGU4OTYzYTJhYzI4MDkz
ZjU0M2NlZWZiNjM4NmFjY2Y3MWU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxNi0w
Ni0yMCAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3Zl
IFJlZlB0cjo6cmVsZWFzZSgpIGFuZCBjaGFuZ2UgY2FsbHMgc2l0ZXMgdG8gdXNlIFdURk1vdmUo
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MzY5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgUmVmUHRyOjpy
ZWxlYXNlKCkgcmVsZWFzZXMgaXRzIG1hbmFnZWQgcG9pbnRlciBhd2t3YXJkbHkuIEl0J3MgbW9y
ZQorICAgICAgICBkaXJlY3QgYW5kIGNsZWFyZXIgdG8gdXNlIFdURk1vdmUgdG8gdHJhbnNmZXIg
b3duZXJzaGlwIG9mIHRoZSBtYW5hZ2VkCisgICAgICAgIHBvaW50ZXIuCisKKyAgICAgICAgQXMg
cGFydCBvZiB0aGlzIGNsZWFudXAsIGFsc28gY2hhbmdlIGEgbG90IG9mIGV4cGxpY2l0IGRhdGEg
dHlwZXMgdG8KKyAgICAgICAgJ2F1dG8nLgorCisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlQXJl
YUltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFyZWFJbXBsOjpzZXRJdGVtKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhSW1wbDo6cmVtb3ZlSXRlbSk6CisKIDIwMTYt
MDYtMTMgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBBZGQgV2ViU29ja2V0UHJvdmlkZXIgc3R1YgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDc1N2Qy
YTA0MjM1NzZkODQxMzQ4MmE3NWIzNWUwOGRjNjk5ZjJlNTIuLjlmMmYxZTI4Y2M0MTgwZTVlYTkx
ZDBjYmFmYWFmZmRlYzBiMTI5ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAor
MjAxNi0wNi0yMCAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVtb3ZlIFJlZlB0cjo6cmVsZWFzZSgpIGFuZCBjaGFuZ2UgY2FsbHMgc2l0ZXMgdG8gdXNlIFdU
Rk1vdmUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU4MzY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgUmVm
UHRyOjpyZWxlYXNlKCkgcmVsZWFzZXMgaXRzIG1hbmFnZWQgcG9pbnRlciBhd2t3YXJkbHkuIEl0
J3MgbW9yZQorICAgICAgICBkaXJlY3QgYW5kIGNsZWFyZXIgdG8gdXNlIFdURk1vdmUgdG8gdHJh
bnNmZXIgb3duZXJzaGlwIG9mIHRoZSBtYW5hZ2VkCisgICAgICAgIHBvaW50ZXIuCisKKyAgICAg
ICAgQXMgcGFydCBvZiB0aGlzIGNsZWFudXAsIGFsc28gY2hhbmdlIGEgbG90IG9mIGV4cGxpY2l0
IGRhdGEgdHlwZXMgdG8KKyAgICAgICAgJ2F1dG8nLgorCisgICAgICAgICogUGx1Z2lucy9Ib3N0
ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0c2Nh
cGVQbHVnaW5Ib3N0TWFuYWdlcjo6aW5zdGFudGlhdGVQbHVnaW4pOgorICAgICAgICAqIFBsdWdp
bnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbToKKyAgICAgICAgKFdlYktp
dDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0
OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpkZW1hcnNoYWxWYWx1ZUZyb21BcnJh
eSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06Cisg
ICAgICAgICgtW1dlYkZyYW1lUG9saWN5TGlzdGVuZXIgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbjpd
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbToKKyAgICAg
ICAgKC1bV2ViU2VjdXJpdHlPcmlnaW4gaW5pdFdpdGhVUkw6XSk6CisgICAgICAgICogV2ViVmll
dy9XZWJBcmNoaXZlLm1tOgorICAgICAgICAoLVtXZWJBcmNoaXZlIGluaXRXaXRoTWFpblJlc291
cmNlOnN1YnJlc291cmNlczpzdWJmcmFtZUFyY2hpdmVzOl0pOgorICAgICAgICAoLVtXZWJBcmNo
aXZlIGluaXRXaXRoRGF0YTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06
CisgICAgICAgICgtW1dlYkRhdGFTb3VyY2UgbWFpblJlc291cmNlXSk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2RvY3VtZW50RnJhZ21lbnRX
aXRoTm9kZXNBc1BhcmFncmFwaHM6XSk6CisKIDIwMTYtMDYtMTUgIEFsZXhleSBQcm9za3VyeWFr
b3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgK1tXZWJIVE1MUmVwcmVzZW50YXRpb24gc3Vw
cG9ydGVkTUlNRVR5cGVzXSBsZWFrcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGRmYmNjOWNmNjc2MzA4YWRiNWI4
YWU3MjI0N2FmNDFkNDNkZDZjNTYuLjE0ZjUzNjgyMDJiNWZlNzFjYWZhMGRjMTg0MzI5ZDcwYTkw
N2EwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNTEgQEAKKzIwMTYtMDYtMjAgIEtlaXRoIFJv
bGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBSZWZQdHI6OnJlbGVh
c2UoKSBhbmQgY2hhbmdlIGNhbGxzIHNpdGVzIHRvIHVzZSBXVEZNb3ZlKCkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODM2OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgIFJlZlB0cjo6cmVsZWFzZSgpIHJlbGVh
c2VzIGl0cyBtYW5hZ2VkIHBvaW50ZXIgYXdrd2FyZGx5LiBJdCdzIG1vcmUKKyAgICAgICAgZGly
ZWN0IGFuZCBjbGVhcmVyIHRvIHVzZSBXVEZNb3ZlIHRvIHRyYW5zZmVyIG93bmVyc2hpcCBvZiB0
aGUgbWFuYWdlZAorICAgICAgICBwb2ludGVyLgorCisgICAgICAgIEFzIHBhcnQgb2YgdGhpcyBj
bGVhbnVwLCBhbHNvIGNoYW5nZSBhIGxvdCBvZiBleHBsaWNpdCBkYXRhIHR5cGVzIHRvCisgICAg
ICAgICdhdXRvJy4KKworICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVByb2Nlc3M6OmNyZWF0ZURhdGFiYXNlVG9X
ZWJQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2Fj
aGU6OkVudHJ5Ojppbml0aWFsaXplU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGVGcm9tU3RvcmFnZVJl
Y29yZCk6CisgICAgICAgICogUGxhdGZvcm0vbWFjL1NoYXJlZE1lbW9yeU1hYy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6YWxsb2NhdGUpOgorICAgICAgICAoV2ViS2l0OjpT
aGFyZWRNZW1vcnk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6bWFw
KToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpQbHVnaW5Qcm9jZXNzOjpjcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbik6CisgICAg
ICAgICogU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tOgorICAgICAgICAo
ZW5jb2RlVG9PYmplY3RTdHJlYW0pOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0ltYWdlLmNw
cDoKKyAgICAgICAgKFdLSW1hZ2VDcmVhdGUpOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS051
bWJlci5jcHA6CisgICAgICAgIChXS0Jvb2xlYW5DcmVhdGUpOgorICAgICAgICAoV0tEb3VibGVD
cmVhdGUpOgorICAgICAgICAoV0tVSW50NjRDcmVhdGUpOgorICAgICAgICAqIFNoYXJlZC9BUEkv
Yy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcDoKKyAgICAgICAgKFdLU2VjdXJpdHlPcmlnaW5DcmVh
dGUpOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6
CisgICAgICAgIChXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNyZWF0ZSk6CisgICAgICAgIChXS1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUNyZWF0ZVdpdGhJbnRlcm5hbFJlcHJlc2VudGF0aW9uKToKKyAg
ICAgICAgKiBTaGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcDoKKyAgICAgICAgKFdL
SW1hZ2VDcmVhdGVGcm9tQ2Fpcm9TdXJmYWNlKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvY2cv
V0tJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdLSW1hZ2VDcmVhdGVGcm9tQ0dJbWFnZSk6CisgICAg
ICAgICogU2hhcmVkL0FQSS9jL21hYy9XS0NlcnRpZmljYXRlSW5mb01hYy5tbToKKyAgICAgICAg
KFdLQ2VydGlmaWNhdGVJbmZvQ3JlYXRlV2l0aENlcnRmaWNhdGVDaGFpbik6CisgICAgICAgICog
U2hhcmVkL0FQSS9jL21hYy9XS09iakNUeXBlV3JhcHBlclJlZi5tbToKKyAgICAgICAgKFdLT2Jq
Q1R5cGVXcmFwcGVyQ3JlYXRlKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvbWFjL1dLV2ViQXJj
aGl2ZS5jcHA6CisgICAgICAgIChXS1dlYkFyY2hpdmVDcmVhdGUpOgorICAgICAgICAoV0tXZWJB
cmNoaXZlQ3JlYXRlV2l0aERhdGEpOgorICAgICAgICAoV0tXZWJBcmNoaXZlQ3JlYXRlRnJvbVJh
bmdlKToKKyAgICAgICAgKFdLV2ViQXJjaGl2ZUNvcHlNYWluUmVzb3VyY2UpOgorICAgICAgICAo
V0tXZWJBcmNoaXZlQ29weVN1YnJlc291cmNlcyk6CisgICAgICAgIChXS1dlYkFyY2hpdmVDb3B5
U3ViZnJhbWVBcmNoaXZlcyk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL21hYy9XS1dlYkFyY2hp
dmVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXS1dlYkFyY2hpdmVSZXNvdXJjZUNyZWF0ZSk6Cisg
ICAgICAgICogU2hhcmVkL0FQSVdlYkFyY2hpdmUubW06CisgICAgICAgIChBUEk6OldlYkFyY2hp
dmU6OldlYkFyY2hpdmUpOgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlUGx1Z2luTW9kdWxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Nb2R1
bGU6OmdldE9yQ3JlYXRlKToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUpOgorICAgICAgICAqIFNo
YXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJl
c291cmNlOjptYXApOgorICAgICAgICAqIFNoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3Bw
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERyYWdEYXRhPjo6ZGVjb2RlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS1ZpZXcuY3BwOgorICAg
ICAgICAoV0tWaWV3Q3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tCYXR0ZXJ5
U3RhdHVzLmNwcDoKKyAgICAgICAgKFdLQmF0dGVyeVN0YXR1c0NyZWF0ZSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHA6CisgICAgICAgIChXS0dl
b2xvY2F0aW9uUG9zaXRpb25DcmVhdGVfYik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dL
R3JhbW1hckRldGFpbC5jcHA6CisgICAgICAgIChXS0dyYW1tYXJEZXRhaWxDcmVhdGUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlQ29weVNl
c3Npb25TdGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcDoK
KyAgICAgICAgKFdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVyZW5jZXND
cmVhdGUpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc0NyZWF0ZVdpdGhJZGVudGlmaWVyKToKKyAg
ICAgICAgKFdLUHJlZmVyZW5jZXNDcmVhdGVDb3B5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tTZXNzaW9uUmVmLmNwcDoKKyAgICAgICAgKFdLU2Vzc2lvbkNyZWF0ZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLU2Vzc2lvblN0YXRlUmVmLmNwcDoKKyAgICAgICAgKFdLU2Vz
c2lvblN0YXRlQ29weURhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250
ZXh0UHJpdmF0ZU1hYy5tbToKKyAgICAgICAgKFdLQ29udGV4dENvcHlQbHVnSW5JbmZvRm9yQnVu
ZGxlSWRlbnRpZmllcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW06CisgICAgICAgICgtW1dLV2ViVmlldyBsb2FkUmVxdWVzdDpdKToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IGxvYWRGaWxlVVJMOmFsbG93aW5nUmVhZEFjY2Vzc1RvVVJMOl0pOgorICAgICAgICAo
LVtXS1dlYlZpZXcgbG9hZERhdGE6TUlNRVR5cGU6Y2hhcmFjdGVyRW5jb2RpbmdOYW1lOmJhc2VV
Ukw6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBnb1RvQmFja0ZvcndhcmRMaXN0SXRlbTpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IGdvQmFja10pOgorICAgICAgICAoLVtXS1dlYlZpZXcgZ29G
b3J3YXJkXSk6CisgICAgICAgICgtW1dLV2ViVmlldyByZWxvYWRdKToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IHJlbG9hZEZyb21PcmlnaW5dKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9sb2FkRGF0
YTpNSU1FVHlwZTpjaGFyYWN0ZXJFbmNvZGluZ05hbWU6YmFzZVVSTDp1c2VyRGF0YTpdKToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IF9yZWxvYWRXaXRob3V0Q29udGVudEJsb2NrZXJzXSk6CisgICAg
ICAgICgtW1dLV2ViVmlldyBfc2Vzc2lvblN0YXRlRGF0YV0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX3Jlc3RvcmVTZXNzaW9uU3RhdGU6YW5kTmF2aWdhdGU6XSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2RhdGFiYXNlX21hbmFnZXIuY3BwOgorICAgICAgICAoRXdrRGF0YWJh
c2VNYW5hZ2VyOjpjcmVhdGVPcmlnaW5MaXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfc3RvcmFnZV9tYW5hZ2VyLmNwcDoKKyAgICAgICAgKEV3a1N0b3JhZ2VNYW5hZ2VyOjpj
cmVhdGVPcmlnaW5MaXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdDcmVhdGVOZXdQYWdlKToKKyAgICAgICAg
KHdlYmtpdFdlYlZpZXdQcmludEZyYW1lKToKKyAgICAgICAgKGdldENvbnRlbnRzQXNNSFRNTERh
dGFDYWxsYmFjayk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1Nlc3Npb25TdGF0ZUNvZGlu
Zy5tbToKKyAgICAgICAgKFdlYktpdDo6ZW5jb2RlU2Vzc2lvblN0YXRlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmg6CisgICAgICAgIChXZWJLaXQ6OkNhbGxiYWNrTWFw
Ojp0YWtlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Okdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHk6OmNyZWF0ZVJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Tm90aWZpY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNyZWF0ZVJlcXVlc3QpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UGx1Z2luUHJvY2Vzc01hbmFnZXI6OmdldE9yQ3JlYXRlUGx1Z2luUHJvY2Vzcyk6CisgICAgICAg
ICogVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6OnNldEl0ZW0pOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6OnJlbW92ZUl0ZW0pOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTWFwKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmFj
a0ZvcndhcmRMaXN0OjphZGRJdGVtKToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRM
aXN0OjpjbGVhcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SG9zdG5hbWVz
V2l0aENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6Omdl
dEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omluc3RhbGxWaWV3U3RhdGVD
aGFuZ2VDb21wbGV0aW9uSGFuZGxlcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByZWZlcmVu
Y2VzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJlZmVyZW5jZXM6OmNyZWF0ZVdpdGhMZWdh
Y3lEZWZhdWx0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByZWZlcmVuY2VzOjpjb3B5KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6fldlYlByb2Nlc3NQb29sKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1ZpZXdTbmFwc2hvdFN0b3JlLm1tOgorICAgICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3RTdG9y
ZTo6cmVjb3JkU25hcHNob3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVB
Y3Rpb25Db250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xs
ZXIgX3dlYkhpdFRlc3RSZXN1bHRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLUHJpbnRp
bmdWaWV3Lm1tOgorICAgICAgICAoLVtXS1ByaW50aW5nVmlldyBfYXNrUGFnZVRvQ29tcHV0ZVBh
Z2VSZWN0c10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldERyYWdJbWFnZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJh
bWUubW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lIGhpdFRlc3Q6XSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNz
UGx1Z0luSGl0VGVzdFJlc3VsdC5tbToKKyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luSGl0
VGVzdFJlc3VsdCBub2RlSGFuZGxlXSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5tbToKKyAgICAgICAg
KCtbV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZSBub2RlSGFuZGxlV2l0aEpTVmFsdWU6aW5D
b250ZXh0Ol0pOgorICAgICAgICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlIGh0bWxJ
RnJhbWVFbGVtZW50Q29udGVudEZyYW1lXSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQubW06CisgICAg
ICAgICgrW1dLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkIHdvcmxkXSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHA6CisgICAgICAgIChX
S0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwOgorICAgICAg
ICAoV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25DcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAg
ICAgKFdLQnVuZGxlSGl0VGVzdFJlc3VsdENvcHlOb2RlSGFuZGxlKToKKyAgICAgICAgKFdLQnVu
ZGxlSGl0VGVzdFJlc3VsdENvcHlVUkxFbGVtZW50SGFuZGxlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHA6Cisg
ICAgICAgIChXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb25Db3B5SGl0VGVzdFJlc3VsdCk6CisgICAg
ICAgIChXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb25Db3B5Rm9ybUVsZW1lbnQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxlLmNwcDoK
KyAgICAgICAgKFdLQnVuZGxlTm9kZUhhbmRsZUNyZWF0ZSk6CisgICAgICAgIChXS0J1bmRsZU5v
ZGVIYW5kbGVDb3B5RG9jdW1lbnQpOgorICAgICAgICAoV0tCdW5kbGVOb2RlSGFuZGxlQ29weVNu
YXBzaG90V2l0aE9wdGlvbnMpOgorICAgICAgICAoV0tCdW5kbGVOb2RlSGFuZGxlQ29weVZpc2li
bGVSYW5nZSk6CisgICAgICAgIChXS0J1bmRsZU5vZGVIYW5kbGVDb3B5SFRNTFRhYmxlQ2VsbEVs
ZW1lbnRDZWxsQWJvdmUpOgorICAgICAgICAoV0tCdW5kbGVOb2RlSGFuZGxlQ29weURvY3VtZW50
RnJhbWUpOgorICAgICAgICAoV0tCdW5kbGVOb2RlSGFuZGxlQ29weUhUTUxGcmFtZUVsZW1lbnRD
b250ZW50RnJhbWUpOgorICAgICAgICAoV0tCdW5kbGVOb2RlSGFuZGxlQ29weUhUTUxJRnJhbWVF
bGVtZW50Q29udGVudEZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBhZ2VDcmVhdGVTbmFw
c2hvdFdpdGhPcHRpb25zKToKKyAgICAgICAgKFdLQnVuZGxlUGFnZUNyZWF0ZVNuYXBzaG90SW5W
aWV3Q29vcmRpbmF0ZXMpOgorICAgICAgICAoV0tCdW5kbGVQYWdlQ3JlYXRlU25hcHNob3RJbkRv
Y3VtZW50Q29vcmRpbmF0ZXMpOgorICAgICAgICAoV0tCdW5kbGVQYWdlQ3JlYXRlU2NhbGVkU25h
cHNob3RJbkRvY3VtZW50Q29vcmRpbmF0ZXMpOgorICAgICAgICAoV0tCdW5kbGVQYWdlUG9zdFN5
bmNocm9ub3VzTWVzc2FnZUZvclRlc3RpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVSYW5nZUhhbmRsZS5jcHA6CisgICAgICAgIChXS0J1bmRs
ZVJhbmdlSGFuZGxlQ3JlYXRlKToKKyAgICAgICAgKFdLQnVuZGxlUmFuZ2VIYW5kbGVDb3B5U25h
cHNob3RXaXRoT3B0aW9ucyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVNjcmlwdFdvcmxkLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlU2NyaXB0V29y
bGRDcmVhdGVXb3JsZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLRE9NTm9kZS5tbToKKyAgICAgICAgKC1bV0tET01Ob2RlIF9jb3B5QnVuZGxlTm9kZUhh
bmRsZVJlZl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9X
S0RPTVJhbmdlLm1tOgorICAgICAgICAoLVtXS0RPTVJhbmdlIF9jb3B5QnVuZGxlUmFuZ2VIYW5k
bGVSZWZdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3Rl
ZEJ1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25IYW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJ
bmplY3RlZEJ1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25IYW5kbGU6OmdldE9yQ3JlYXRlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVI
YW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjppbWFnZUZvclJlY3QpOgorICAgICAgICAoV2Vi
S2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OnJlbmRlcmVkSW1hZ2UpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpnZXRPckNy
ZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpjcmVhdGUpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpsb2FkVVJMKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL0RlcHJlY2F0ZWRQREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6
OlBERlBsdWdpbjo6Y3JlYXRlU2Nyb2xsYmFyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3Jh
Z2UvU3RvcmFnZUFyZWFNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6
YXBwbHlDaGFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lv
blN0YXRlQ29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OnRvRm9ybURhdGEpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKToK
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnJlY3JlYXRlUGx1Z2luKToK
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUphdmFBcHBsZXRX
aWRnZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlTmV0
d29ya2luZ0NvbnRleHQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yQ2xpZW50
OjpoaWdobGlnaHQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YkRyYWdDbGllbnRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRJbWFnZVRvQml0bWFw
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpGaW5kQ29udHJvbGxlcjo6dXBkYXRlRmluZFVJQWZ0ZXJQYWdlU2Nyb2xs
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlcjo6Z2V0
T3JDcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlcjo6
c2V0VmlzaXRlZExpbmtUYWJsZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNyZWF0ZVdpdGhDb3JlTWFpbkZy
YW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNyZWF0ZVN1YmZyYW1lKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
OjpjcmVhdGVTZWxlY3Rpb25TbmFwc2hvdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjcmVhdGVQbHVnaW4pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzbmFwc2hvdEF0U2l6ZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnNuYXBzaG90Tm9kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Ondp
bGxQZXJmb3JtTG9hZERyYWdEZXN0aW5hdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OlNhbmRib3hFeHRlbnNpb25UcmFja2VyOjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OlNhbmRib3hFeHRlbnNpb25UcmFja2VyOjpkaWRD
b21taXRQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkcmF3UmVj
dFRvSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VHcm91cFByb3h5OjpjcmVhdGUpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZS5t
bToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6UHJvcGVydGll
czo6ZGVjb2RlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FM
YXllclJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjbG9uZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVD
dXN0b20ubW06CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpj
bG9uZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWE6OmNyZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRvcik6CisKIDIwMTYtMDYtMTUgIFNpbW9uIEZy
YXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPUyBXSzJdIE9uIGlQ
YWQsIGluZGlyZWN0IGZvY3Vzc2luZyBvZiBhIHRleHQgZmllbGQgZG9lc24ndCBhbHdheXMgc2Ny
b2xsIHRvIHRoZSBjb3JyZWN0IGxvY2F0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNP
YmplY3RSZWYuY3BwCmluZGV4IDM3Y2Q2NTczMjM3MDA4NTFiMjU3OWQ2NDM2YjQxMzUzMzUzZThk
MmUuLmMxZGRjMzI3MWY3ODUyNGQ3NzFhNjRkMWI1Y2Q2ZmQxODljODkxYzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCkBAIC02NiwxMSArNjYsMTEgQEAgdXNp
bmcgbmFtZXNwYWNlIEpTQzsKIEpTQ2xhc3NSZWYgSlNDbGFzc0NyZWF0ZShjb25zdCBKU0NsYXNz
RGVmaW5pdGlvbiogZGVmaW5pdGlvbikKIHsKICAgICBpbml0aWFsaXplVGhyZWFkaW5nKCk7Ci0g
ICAgUmVmUHRyPE9wYXF1ZUpTQ2xhc3M+IGpzQ2xhc3MgPSAoZGVmaW5pdGlvbi0+YXR0cmlidXRl
cyAmIGtKU0NsYXNzQXR0cmlidXRlTm9BdXRvbWF0aWNQcm90b3R5cGUpCisgICAgYXV0byBqc0Ns
YXNzID0gKGRlZmluaXRpb24tPmF0dHJpYnV0ZXMgJiBrSlNDbGFzc0F0dHJpYnV0ZU5vQXV0b21h
dGljUHJvdG90eXBlKQogICAgICAgICA/IE9wYXF1ZUpTQ2xhc3M6OmNyZWF0ZU5vQXV0b21hdGlj
UHJvdG90eXBlKGRlZmluaXRpb24pCiAgICAgICAgIDogT3BhcXVlSlNDbGFzczo6Y3JlYXRlKGRl
ZmluaXRpb24pOwogICAgIAotICAgIHJldHVybiBqc0NsYXNzLnJlbGVhc2UoKS5sZWFrUmVmKCk7
CisgICAgcmV0dXJuICZqc0NsYXNzLmxlYWtSZWYoKTsKIH0KIAogSlNDbGFzc1JlZiBKU0NsYXNz
UmV0YWluKEpTQ2xhc3NSZWYganNDbGFzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNTY3JpcHRSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1Nj
cmlwdFJlZi5jcHAKaW5kZXggNjBiZGU2MDRlMzU4NTE2ZjFlZjZjYWEyM2Q4MTI0ODkyY2NmYTk1
NS4uODNkMWZlNjJmMTBhMmQwOTI5MzEwYmYzOGFlZjI2MmRiYmUyYzNmZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgSlNTY3Jp
cHRSZWYgSlNTY3JpcHRDcmVhdGVSZWZlcmVuY2luZ0ltbW9ydGFsQVNDSUlUZXh0KEpTQ29udGV4
dEdyb3VwUmVmIGNvbnRleHQKIAogICAgIHN0YXJ0aW5nTGluZU51bWJlciA9IHN0ZDo6bWF4KDEs
IHN0YXJ0aW5nTGluZU51bWJlcik7CiAKLSAgICBSZWZQdHI8T3BhcXVlSlNTY3JpcHQ+IHJlc3Vs
dCA9IE9wYXF1ZUpTU2NyaXB0OjpjcmVhdGUodm0sIHVybCA/IHVybC0+c3RyaW5nKCkgOiBTdHJp
bmcoKSwgc3RhcnRpbmdMaW5lTnVtYmVyLCBTdHJpbmcoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxp
dGVyYWwoc291cmNlLCBsZW5ndGgpKSk7CisgICAgYXV0byByZXN1bHQgPSBPcGFxdWVKU1Njcmlw
dDo6Y3JlYXRlKHZtLCB1cmwgPyB1cmwtPnN0cmluZygpIDogU3RyaW5nKCksIHN0YXJ0aW5nTGlu
ZU51bWJlciwgU3RyaW5nKFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKHNvdXJjZSwgbGVu
Z3RoKSkpOwogCiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7CiAgICAgaWYgKCFwYXJzZVNjcmlwdCh2
bSwgU291cmNlQ29kZShyZXN1bHQpLCBlcnJvcikpIHsKQEAgLTEwNCw3ICsxMDQsNyBAQCBKU1Nj
cmlwdFJlZiBKU1NjcmlwdENyZWF0ZVJlZmVyZW5jaW5nSW1tb3J0YWxBU0NJSVRleHQoSlNDb250
ZXh0R3JvdXBSZWYgY29udGV4dAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAg
ICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIHJlc3VsdC5s
ZWFrUmVmKCk7CiB9CiAKIEpTU2NyaXB0UmVmIEpTU2NyaXB0Q3JlYXRlRnJvbVN0cmluZyhKU0Nv
bnRleHRHcm91cFJlZiBjb250ZXh0R3JvdXAsIEpTU3RyaW5nUmVmIHVybCwgaW50IHN0YXJ0aW5n
TGluZU51bWJlciwgSlNTdHJpbmdSZWYgc291cmNlLCBKU1N0cmluZ1JlZiogZXJyb3JNZXNzYWdl
LCBpbnQqIGVycm9yTGluZSkKQEAgLTExNCw3ICsxMTQsNyBAQCBKU1NjcmlwdFJlZiBKU1Njcmlw
dENyZWF0ZUZyb21TdHJpbmcoSlNDb250ZXh0R3JvdXBSZWYgY29udGV4dEdyb3VwLCBKU1N0cmlu
Z1JlZgogCiAgICAgc3RhcnRpbmdMaW5lTnVtYmVyID0gc3RkOjptYXgoMSwgc3RhcnRpbmdMaW5l
TnVtYmVyKTsKIAotICAgIFJlZlB0cjxPcGFxdWVKU1NjcmlwdD4gcmVzdWx0ID0gT3BhcXVlSlNT
Y3JpcHQ6OmNyZWF0ZSh2bSwgdXJsID8gdXJsLT5zdHJpbmcoKSA6IFN0cmluZygpLCBzdGFydGlu
Z0xpbmVOdW1iZXIsIHNvdXJjZS0+c3RyaW5nKCkpOworICAgIGF1dG8gcmVzdWx0ID0gT3BhcXVl
SlNTY3JpcHQ6OmNyZWF0ZSh2bSwgdXJsID8gdXJsLT5zdHJpbmcoKSA6IFN0cmluZygpLCBzdGFy
dGluZ0xpbmVOdW1iZXIsIHNvdXJjZS0+c3RyaW5nKCkpOwogCiAgICAgUGFyc2VyRXJyb3IgZXJy
b3I7CiAgICAgaWYgKCFwYXJzZVNjcmlwdCh2bSwgU291cmNlQ29kZShyZXN1bHQpLCBlcnJvcikp
IHsKQEAgLTEyNSw3ICsxMjUsNyBAQCBKU1NjcmlwdFJlZiBKU1NjcmlwdENyZWF0ZUZyb21TdHJp
bmcoSlNDb250ZXh0R3JvdXBSZWYgY29udGV4dEdyb3VwLCBKU1N0cmluZ1JlZgogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKS5sZWFr
UmVmKCk7CisgICAgcmV0dXJuIHJlc3VsdC5sZWFrUmVmKCk7CiB9CiAKIHZvaWQgSlNTY3JpcHRS
ZXRhaW4oSlNTY3JpcHRSZWYgc2NyaXB0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1ZhbHVlUmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1
ZVJlZi5jcHAKaW5kZXggMGQzYmVmMDIxOWRiY2YxYzA3NTY1YmE2NGNmM2ZlMGM2MTZhN2I1Yi4u
NDI4NDM1MGZhNzE1YzY1YzIyNzA3MmNmYmU4NjljMzc3YjNjMzlhYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCkBAIC00MDEsMTAgKzQwMSwxMCBAQCBKU1N0cmlu
Z1JlZiBKU1ZhbHVlVG9TdHJpbmdDb3B5KEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFs
dWUsIEpTVmFsdWVSZWYqCiAKICAgICBKU1ZhbHVlIGpzVmFsdWUgPSB0b0pTKGV4ZWMsIHZhbHVl
KTsKICAgICAKLSAgICBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IHN0cmluZ1JlZihPcGFxdWVKU1N0
cmluZzo6Y3JlYXRlKGpzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CisgICAg
YXV0byBzdHJpbmdSZWYoT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShqc1ZhbHVlLnRvU3RyaW5nKGV4
ZWMpLT52YWx1ZShleGVjKSkpOwogICAgIGlmIChoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChleGVj
LCBleGNlcHRpb24pID09IEV4Y2VwdGlvblN0YXR1czo6RGlkVGhyb3cpCiAgICAgICAgIHN0cmlu
Z1JlZiA9IG51bGxwdHI7Ci0gICAgcmV0dXJuIHN0cmluZ1JlZi5yZWxlYXNlKCkubGVha1JlZigp
OworICAgIHJldHVybiBzdHJpbmdSZWYubGVha1JlZigpOwogfQogCiBKU09iamVjdFJlZiBKU1Zh
bHVlVG9PYmplY3QoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL1N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIuaAppbmRleCBlNjNmZWY4NmExMDdjOGU0
ODA4ZmJiMDAwMGZkM2VkNTdhODM4YThlLi4xZWMxMjllODk4NWM3YTYwZTlhYWJjZThjNzUxY2Fh
YTU1YjdmNjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L1N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL1N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIuaApAQCAtNzIsNyArNzIsNyBAQCBpbmxp
bmUgdm9pZCBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyOjpuZXdPYmplY3QoaW50IGRzdCwgdW5zaWdu
ZWQgb2Zmc2V0T2ZJbmxpbmVDYQogICAgIEFuYWx5c2lzTWFwOjpBZGRSZXN1bHQgYWRkUmVzdWx0
ID0gbV9hbmFseXNlcy5hZGQoZHN0LCBhbmFseXNpcyk7CiAgICAgaWYgKCFhZGRSZXN1bHQuaXNO
ZXdFbnRyeSkgewogICAgICAgICBraWxsKGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCkp
OwotICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gYW5hbHlzaXMucmVsZWFzZSgp
OworICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gV1RGTW92ZShhbmFseXNpcyk7
CiAgICAgfQogfQogCkBAIC05NSw3ICs5NSw3IEBAIGlubGluZSB2b2lkIFN0YXRpY1Byb3BlcnR5
QW5hbHl6ZXI6Om1vdihpbnQgZHN0LCBpbnQgc3JjKQogICAgIEFuYWx5c2lzTWFwOjpBZGRSZXN1
bHQgYWRkUmVzdWx0ID0gbV9hbmFseXNlcy5hZGQoZHN0LCBhbmFseXNpcyk7CiAgICAgaWYgKCFh
ZGRSZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICBraWxsKGFkZFJlc3VsdC5pdGVyYXRvci0+
dmFsdWUuZ2V0KCkpOwotICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gYW5hbHlz
aXMucmVsZWFzZSgpOworICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gV1RGTW92
ZShhbmFseXNpcyk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAppbmRleCBhOGM1NTdjNzQ3MzFmMmI2YTMz
MzE3NTE2MGNhMzM0OGQyMTUyMmJiLi5mYjg2MzY4YTM5NDhiNmY4ZTM1YTFlZDQ2YjUzODMxYWMz
YjFlZGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdn
ZXJDYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1
Z2dlckNhbGxGcmFtZS5jcHAKQEAgLTI3OCw3ICsyNzgsNyBAQCB2b2lkIERlYnVnZ2VyQ2FsbEZy
YW1lOjppbnZhbGlkYXRlKCkKICAgICAgICAgICAgIGZyYW1lLT5tX3Njb3BlLT5pbnZhbGlkYXRl
Q2hhaW4oKTsKICAgICAgICAgICAgIGZyYW1lLT5tX3Njb3BlLmNsZWFyKCk7CiAgICAgICAgIH0K
LSAgICAgICAgZnJhbWUgPSBmcmFtZS0+bV9jYWxsZXIucmVsZWFzZSgpOworICAgICAgICBmcmFt
ZSA9IFdURk1vdmUoZnJhbWUtPm1fY2FsbGVyKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKaW5kZXggMTdjNmEwYjg1MmEyMjFlZWE2
ODgzMWU2MGQzMzNlOTE2Yjk4OWIyNC4uOTAwNjMwOGE0MzE2N2UyMTYwMzI5MmZmMThmNTQ5NTg3
MTA5ZThkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21w
aWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5j
cHAKQEAgLTM4MSw3ICszODEsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkKICAgICBk
aXNhc3NlbWJsZSgqbGlua0J1ZmZlcik7CiAgICAgCiAgICAgbV9ncmFwaC5tX3BsYW4uZmluYWxp
emVyID0gc3RkOjptYWtlX3VuaXF1ZTxKSVRGaW5hbGl6ZXI+KAotICAgICAgICBtX2dyYXBoLm1f
cGxhbiwgbV9qaXRDb2RlLnJlbGVhc2UoKSwgV1RGTW92ZShsaW5rQnVmZmVyKSk7CisgICAgICAg
IG1fZ3JhcGgubV9wbGFuLCBXVEZNb3ZlKG1faml0Q29kZSksIFdURk1vdmUobGlua0J1ZmZlcikp
OwogfQogCiB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQpAQCAtNDc4LDcgKzQ3
OCw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAgICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyIHdpdGhBcml0eUNoZWNrID0gbGlua0J1ZmZlci0+bG9jYXRpb25PZihtX2Fy
aXR5Q2hlY2spOwogCiAgICAgbV9ncmFwaC5tX3BsYW4uZmluYWxpemVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxKSVRGaW5hbGl6ZXI+KAotICAgICAgICBtX2dyYXBoLm1fcGxhbiwgbV9qaXRDb2RlLnJl
bGVhc2UoKSwgV1RGTW92ZShsaW5rQnVmZmVyKSwgd2l0aEFyaXR5Q2hlY2spOworICAgICAgICBt
X2dyYXBoLm1fcGxhbiwgV1RGTW92ZShtX2ppdENvZGUpLCBXVEZNb3ZlKGxpbmtCdWZmZXIpLCB3
aXRoQXJpdHlDaGVjayk7CiB9CiAKIHZvaWQgSklUQ29tcGlsZXI6OmRpc2Fzc2VtYmxlKExpbmtC
dWZmZXImIGxpbmtCdWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclZhbHVlcy5jcHAKaW5kZXggYzVjMTE2MzRiZjYyODE1MjQ1MzczZjMwYzYx
NDVmMmZhMzkxYzIyNS4uNTY5NDhmYTMxM2YyZTZjOGUwOWZhZTRkNzVjZjk5Mjk0NjhmODE5ZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1
ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFs
dWVzLmNwcApAQCAtNDU5LDcgKzQ1OSw3IEBAIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gYnVpbGRW
YWx1ZShjb25zdCBVQ2hhciogc3RhcnQsIGNvbnN0IFVDaGFyKiBlbmQsIGNvbnN0IFVDCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICAqdmFsdWVUb2tlbkVuZCA9IHRva2VuRW5k
OwotICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
IGlubGluZSBib29sIGVzY2FwZUNoYXIoVUNoYXIgYywgU3RyaW5nQnVpbGRlciYgZHN0KQpAQCAt
NTUxLDExICs1NTEsMTEgQEAgYm9vbCBJbnNwZWN0b3JWYWx1ZTo6cGFyc2VKU09OKGNvbnN0IFN0
cmluZyYganNvbklucHV0LCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+JgogICAgIGNvbnN0IFVDaGFy
KiBzdGFydCA9IGNoYXJhY3RlcnM7CiAgICAgY29uc3QgVUNoYXIqIGVuZCA9IHN0YXJ0ICsganNv
bklucHV0Lmxlbmd0aCgpOwogICAgIGNvbnN0IFVDaGFyKiB0b2tlbkVuZDsKLSAgICBSZWZQdHI8
SW5zcGVjdG9yVmFsdWU+IHJlc3VsdCA9IGJ1aWxkVmFsdWUoc3RhcnQsIGVuZCwgJnRva2VuRW5k
LCAwKTsKKyAgICBhdXRvIHJlc3VsdCA9IGJ1aWxkVmFsdWUoc3RhcnQsIGVuZCwgJnRva2VuRW5k
LCAwKTsKICAgICBpZiAoIXJlc3VsdCB8fCB0b2tlbkVuZCAhPSBlbmQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIG91dHB1dCA9IHJlc3VsdC5yZWxlYXNlKCk7CisgICAgb3V0cHV0ID0g
V1RGTW92ZShyZXN1bHQpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAK
aW5kZXggMzEyZTVkOWI0YjFjZjg5ZTc3NDBmYWQ2NjUyNzIxM2QwYmUzZTQxZi4uZjY0YmFmM2Qz
MDc3N2JmNzk2ZjM1NzRhZmI0ZDg4ODFhYmFlMDUxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcApAQCAt
MTIxLDcgKzEyMSw3IEBAIHZvaWQgSW5zcGVjdG9yQWdlbnQ6OmFjdGl2YXRlRXh0cmFEb21haW4o
Y29uc3QgU3RyaW5nJiBkb21haW5OYW1lKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
UmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IGRvbWFpbk5hbWVzID0gSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CisgICAgYXV0byBkb21h
aW5OYW1lcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOwog
ICAgIGRvbWFpbk5hbWVzLT5hZGRJdGVtKGRvbWFpbk5hbWUpOwogICAgIG1fZnJvbnRlbmREaXNw
YXRjaGVyLT5hY3RpdmF0ZUV4dHJhRG9tYWlucyhXVEZNb3ZlKGRvbWFpbk5hbWVzKSk7CiB9CkBA
IC0xMzEsMTQgKzEzMSwxNCBAQCB2b2lkIEluc3BlY3RvckFnZW50OjphY3RpdmF0ZUV4dHJhRG9t
YWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZXh0cmFEb21haW5zKQogICAgIGlmIChleHRyYURv
bWFpbnMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gZG9tYWluTmFtZXMgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICBhdXRvIGRvbWFpbk5hbWVzID0gSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgZm9yIChhdXRv
IGRvbWFpbk5hbWUgOiBleHRyYURvbWFpbnMpCiAgICAgICAgIGRvbWFpbk5hbWVzLT5hZGRJdGVt
KGRvbWFpbk5hbWUpOwogCiAgICAgaWYgKCFtX2VuYWJsZWQpCi0gICAgICAgIG1fcGVuZGluZ0V4
dHJhRG9tYWluc0RhdGEgPSBkb21haW5OYW1lcy5yZWxlYXNlKCk7CisgICAgICAgIG1fcGVuZGlu
Z0V4dHJhRG9tYWluc0RhdGEgPSBXVEZNb3ZlKGRvbWFpbk5hbWVzKTsKICAgICBlbHNlCi0gICAg
ICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5hY3RpdmF0ZUV4dHJhRG9tYWlucyhkb21haW5OYW1l
cy5yZWxlYXNlKCkpOworICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+YWN0aXZhdGVFeHRy
YURvbWFpbnMoV1RGTW92ZShkb21haW5OYW1lcykpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggNzNjZmI2ZjM3M2IyZjVkOGVkMWEzYjAzNjRhZjBh
NjhjNTU2MWQ3Ny4uMTM0ZTIyNGY3NDBhNjUwMmJmMTcyMGU0OTY4ZjUxM2Y4OWI1MDlhNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKQEAgLTc1MCw3ICs3NTAsNyBAQCB2b2lk
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Qcm9iZShKU0M6OkV4ZWNT
dGF0ZSYgc2NyaXB0U3RhdGUsCiAgICAgICAgIC5zZXRCYXRjaElkKGJhdGNoSWQpCiAgICAgICAg
IC5zZXRTYW1wbGVJZChzYW1wbGVJZCkKICAgICAgICAgLnNldFRpbWVzdGFtcChtX2luamVjdGVk
U2NyaXB0TWFuYWdlci5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmV4ZWN1dGlvblN0b3B3YXRjaCgp
LT5lbGFwc2VkVGltZSgpKQotICAgICAgICAuc2V0UGF5bG9hZChwYXlsb2FkLnJlbGVhc2UoKSkK
KyAgICAgICAgLnNldFBheWxvYWQoV1RGTW92ZShwYXlsb2FkKSkKICAgICAgICAgLnJlbGVhc2Uo
KTsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+ZGlkU2FtcGxlUHJvYmUoV1RGTW92ZShyZXN1
bHQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL1JlbW90ZUluc3BlY3Rvci5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL1JlbW90ZUluc3BlY3Rvci5tbQppbmRleCA3MmJmYzZlODc4MGY3OTkwMDhmODMyYmVh
N2NhM2VkNzllYWVhMmFlLi5mM2FlZTFjOTc0MTExNGFiY2Y4YWIwZDY2ZDg3YWNiZjllYTFjYzVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1v
dGVJbnNwZWN0b3IubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvUmVtb3RlSW5zcGVjdG9yLm1tCkBAIC02MjksNyArNjI5LDcgQEAgdm9pZCBSZW1vdGVJbnNw
ZWN0b3I6OnJlY2VpdmVkU2V0dXBNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pCiAKICAg
ICAvLyBBdHRlbXB0IHRvIGNyZWF0ZSBhIGNvbm5lY3Rpb24uIFRoaXMgbWF5IGZhaWwgaWYgdGhl
IHBhZ2UgYWxyZWFkeSBoYXMgYW4gaW5zcGVjdG9yIG9yIGlmIGl0IGRpc2FsbG93cyBpbnNwZWN0
aW9uLgogICAgIFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFyZ2V0ID0gZmluZFJlc3VsdC0+
dmFsdWU7Ci0gICAgUmVmUHRyPFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldD4gY29ubmVjdGlvblRv
VGFyZ2V0ID0gYWRvcHRSZWYobmV3IFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldCh0YXJnZXQsIGNv
bm5lY3Rpb25JZGVudGlmaWVyLCBzZW5kZXIpKTsKKyAgICBhdXRvIGNvbm5lY3Rpb25Ub1Rhcmdl
dCA9IGFkb3B0UmVmKCpuZXcgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0KHRhcmdldCwgY29ubmVj
dGlvbklkZW50aWZpZXIsIHNlbmRlcikpOwogCiAgICAgaWYgKGlzPFJlbW90ZUluc3BlY3Rpb25U
YXJnZXQ+KHRhcmdldCkpIHsKICAgICAgICAgYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24gPSBt
X2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVUYXJnZXRJZGVudGlmaWVyID09IHRhcmdldC0+
dGFyZ2V0SWRlbnRpZmllcigpOwpAQCAtNjM5LDE0ICs2MzksMTQgQEAgdm9pZCBSZW1vdGVJbnNw
ZWN0b3I6OnJlY2VpdmVkU2V0dXBNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pCiAgICAg
ICAgICAgICBjb25uZWN0aW9uVG9UYXJnZXQtPmNsb3NlKCk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KLSAgICAgICAgbV90YXJnZXRDb25uZWN0aW9uTWFwLnNldCh0YXJnZXRJZGVu
dGlmaWVyLCBjb25uZWN0aW9uVG9UYXJnZXQucmVsZWFzZSgpKTsKKyAgICAgICAgbV90YXJnZXRD
b25uZWN0aW9uTWFwLnNldCh0YXJnZXRJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbm5lY3Rpb25Ub1Rh
cmdldCkpOwogICAgICAgICB1cGRhdGVIYXNBY3RpdmVEZWJ1Z1Nlc3Npb24oKTsKICAgICB9IGVs
c2UgaWYgKGlzPFJlbW90ZUF1dG9tYXRpb25UYXJnZXQ+KHRhcmdldCkpIHsKICAgICAgICAgaWYg
KCFjb25uZWN0aW9uVG9UYXJnZXQtPnNldHVwKCkpIHsKICAgICAgICAgICAgIGNvbm5lY3Rpb25U
b1RhcmdldC0+Y2xvc2UoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAg
ICBtX3RhcmdldENvbm5lY3Rpb25NYXAuc2V0KHRhcmdldElkZW50aWZpZXIsIGNvbm5lY3Rpb25U
b1RhcmdldC5yZWxlYXNlKCkpOworICAgICAgICBtX3RhcmdldENvbm5lY3Rpb25NYXAuc2V0KHRh
cmdldElkZW50aWZpZXIsIFdURk1vdmUoY29ubmVjdGlvblRvVGFyZ2V0KSk7CiAgICAgICAgIHVw
ZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbigpOwogICAgIH0gZWxzZQogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVw
YXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IDgy
OTg0NTMzYTY2Yjc1ZjdhN2FiM2Y5NTlhYjAwMjU3MTRjYTMyNjUuLjAwODhjNGYyYjJkZGJmNjBi
ODFhZDcwOGIyMjE4MzY3NmNiNGM5MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmNwcApAQCAtOTQzLDcgKzk0Myw3IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAg
ICAgcGF0Y2hCdWZmZXIubGluayhkb25lLCBjYWxsTGlua0luZm8uaG90UGF0aE90aGVyKCkubGFi
ZWxBdE9mZnNldCgwKSk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhzbG93LCBDb2RlTG9jYXRpb25M
YWJlbCh2bS0+Z2V0Q1RJU3R1YihsaW5rUG9seW1vcnBoaWNDYWxsVGh1bmtHZW5lcmF0b3IpLmNv
ZGUoKSkpOwogICAgIAotICAgIFJlZlB0cjxQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZT4gc3R1
YlJvdXRpbmUgPSBhZG9wdFJlZihuZXcgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUoCisgICAg
YXV0byBzdHViUm91dGluZSA9IGFkb3B0UmVmKCpuZXcgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRp
bmUoCiAgICAgICAgIEZJTkFMSVpFX0NPREVfRk9SKAogICAgICAgICAgICAgY2FsbGVyQ29kZUJs
b2NrLCBwYXRjaEJ1ZmZlciwKICAgICAgICAgICAgICgiUG9seW1vcnBoaWMgY2FsbCBzdHViIGZv
ciAlcywgcmV0dXJuIHBvaW50ICVwLCB0YXJnZXRzICVzIiwKQEAgLTk2Miw3ICs5NjIsNyBAQCB2
b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoCiAgICAgCiAgICAgLy8gSWYgdGhlcmUgaGFkIGJlZW4g
YSBwcmV2aW91cyBzdHViIHJvdXRpbmUsIHRoYXQgb25lIHdpbGwgZGllIGFzIHNvb24gYXMgdGhl
IEdDIHJ1bnMgYW5kIHNlZXMKICAgICAvLyB0aGF0IGl0J3Mgbm8gbG9uZ2VyIG9uIHN0YWNrLgot
ICAgIGNhbGxMaW5rSW5mby5zZXRTdHViKHN0dWJSb3V0aW5lLnJlbGVhc2UoKSk7CisgICAgY2Fs
bExpbmtJbmZvLnNldFN0dWIoV1RGTW92ZShzdHViUm91dGluZSkpOwogICAgIAogICAgIC8vIFRo
ZSBjYWxsIGxpbmsgaW5mbyBubyBsb25nZXIgaGFzIGEgY2FsbCBjYWNoZSBhcGFydCBmcm9tIHRo
ZSBqdW1wIHRvIHRoZSBwb2x5bW9ycGhpYyBjYWxsCiAgICAgLy8gc3R1Yi4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGlu
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmll
d0lubGluZXMuaAppbmRleCBhODczN2VlZTE4MDZjYThkMzg2NDA5MTE2ZjJkMmRkMzY2MWUzNjg4
Li4xNDI5ZDA1NGNiNGVkMTFjNjE1ZjY5NmQ2Yzk2NjRjNDIyYTI2ODI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlW
aWV3SW5saW5lcy5oCkBAIC00NSw3ICs0NSw3IEBAIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKHVuCiAg
ICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGxlbmd0aCwgc2l6ZW9mKHR5
cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgcmV0dXJuIGNyZWF0ZShidWZmZXIucmVsZWFzZSgpLCAwLCBsZW5ndGgp
OworICAgIHJldHVybiBjcmVhdGUoV1RGTW92ZShidWZmZXIpLCAwLCBsZW5ndGgpOwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgpAQCAtNjcsNyArNjcsNyBAQCBSZWZQdHI8R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OmNyZWF0ZSgKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIAotICAgIHJldHVy
biBhZG9wdFJlZihuZXcgR2VuZXJpY1R5cGVkQXJyYXlWaWV3KGJ1ZmZlci5yZWxlYXNlKCksIGJ5
dGVPZmZzZXQsIGxlbmd0aCkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgR2VuZXJpY1R5cGVk
QXJyYXlWaWV3KFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKSk7CiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CkBAIC03OCw3ICs3OCw3IEBAIEdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCiAg
ICAgICAgIEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwgc2l6ZW9m
KHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGNyZWF0ZShidWZmZXIucmVsZWFzZSgpLCAwLCBsZW5n
dGgpOworICAgIHJldHVybiBjcmVhdGUoV1RGTW92ZShidWZmZXIpLCAwLCBsZW5ndGgpOwogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMmJl
MDNmODhiOWFlNTg1NGE0ZDA0NGY5NTFlMDAyYTlmZDM4ODg1OS4uNmJjOGU0Mzc5YzU5ZWZjMGZj
NTQ3NWI5ZTY1ODRlMThjZGRlOTIzYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwCkBAIC05OSw3ICs5
OSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEFycmF5
QnVmZmVyKEV4ZWNTdGF0ZSogZXhlYykKICAgICBTdHJ1Y3R1cmUqIGFycmF5QnVmZmVyU3RydWN0
dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhl
Yy0+bmV3VGFyZ2V0KCksIGNvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKS0+YXJyYXlCdWZmZXJT
dHJ1Y3R1cmUoKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7Ci0gICAgSlNBcnJheUJ1ZmZlciogcmVzdWx0
ID0gSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKGV4ZWMtPnZtKCksIGFycmF5QnVmZmVyU3RydWN0dXJl
LCBidWZmZXIucmVsZWFzZSgpKTsKKyAgICBKU0FycmF5QnVmZmVyKiByZXN1bHQgPSBKU0FycmF5
QnVmZmVyOjpjcmVhdGUoZXhlYy0+dm0oKSwgYXJyYXlCdWZmZXJTdHJ1Y3R1cmUsIFdURk1vdmUo
YnVmZmVyKSk7CiAgICAgCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJy
YXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmgK
aW5kZXggYTgwNGI5ZWRhN2M4N2FiYTQ5Y2I1NjQxMzgxYTMxMmViZWRhZjNiMy4uMDRjMWVkMTNh
YjE5OWM5N2FjMDE0NjBlMTU1ZDcwMzgxNDc1NTAwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oCkBAIC03Niw3ICs3Niw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgc2V0RGF0YShQYXNzUmVmUHRyPFByb3BlcnR5TmFtZUFycmF5RGF0
YT4gZGF0YSkgeyBtX2RhdGEgPSBkYXRhOyB9CiAgICAgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBk
YXRhKCkgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9Ci0gICAgUGFzc1JlZlB0cjxQcm9wZXJ0eU5h
bWVBcnJheURhdGE+IHJlbGVhc2VEYXRhKCkgeyByZXR1cm4gbV9kYXRhLnJlbGVhc2UoKTsgfQor
ICAgIFBhc3NSZWZQdHI8UHJvcGVydHlOYW1lQXJyYXlEYXRhPiByZWxlYXNlRGF0YSgpIHsgcmV0
dXJuIFdURk1vdmUobV9kYXRhKTsgfQogCiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGVzZSBmdW5j
dGlvbnMuCiAgICAgYm9vbCBjYW5BZGRLbm93blVuaXF1ZUZvclN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKCkuaXNFbXB0eSgpOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCA2ZDdmYjgxN2I5NWY5
N2I0ZmM0NWQwNzJhMjlkZDkxMjEwNzI5YTljLi4yN2ZmYTUxNzgwNzY4YzZjNDE3MzNkYjYwODU3
Zjg3MmQ3ZTZlODVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5jcHAKQEAgLTExOTcsMTYgKzExOTcsMTYgQEAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4g
U3RydWN0dXJlOjp0b1N0cnVjdHVyZVNoYXBlKEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIGN1clNo
YXBlLT5tYXJrQXNGaW5hbCgpOwogCiAgICAgICAgIGlmIChjdXJTdHJ1Y3R1cmUtPnN0b3JlZFBy
b3RvdHlwZVN0cnVjdHVyZSgpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8U3RydWN0dXJlU2hhcGU+
IG5ld1NoYXBlID0gU3RydWN0dXJlU2hhcGU6OmNyZWF0ZSgpOwotICAgICAgICAgICAgY3VyU2hh
cGUtPnNldFByb3RvKG5ld1NoYXBlKTsKLSAgICAgICAgICAgIGN1clNoYXBlID0gbmV3U2hhcGUu
cmVsZWFzZSgpOworICAgICAgICAgICAgYXV0byBuZXdTaGFwZSA9IFN0cnVjdHVyZVNoYXBlOjpj
cmVhdGUoKTsKKyAgICAgICAgICAgIGN1clNoYXBlLT5zZXRQcm90byhuZXdTaGFwZS5wdHIoKSk7
CisgICAgICAgICAgICBjdXJTaGFwZSA9IFdURk1vdmUobmV3U2hhcGUpOwogICAgICAgICAgICAg
Y3VyVmFsdWUgPSBjdXJTdHJ1Y3R1cmUtPnN0b3JlZFByb3RvdHlwZSgpOwogICAgICAgICB9CiAK
ICAgICAgICAgY3VyU3RydWN0dXJlID0gY3VyU3RydWN0dXJlLT5zdG9yZWRQcm90b3R5cGVTdHJ1
Y3R1cmUoKTsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIGJhc2VTaGFwZS5yZWxlYXNlKCk7Cisg
ICAgcmV0dXJuIFdURk1vdmUoYmFzZVNoYXBlKTsKIH0KIAogYm9vbCBTdHJ1Y3R1cmU6OmNhblVz
ZUZvckFsbG9jYXRpb25zT2YoU3RydWN0dXJlKiBvdGhlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVHlwZVNldC5jcHAKaW5kZXggMDY3ZjEyNmI2MGZhZTk4NTJmZmY1YTY5YTQ0NTQ0
Njg5M2VhZDBkYi4uNThjZTJjM2QxNzNhOGUyNmI4MmM2NmFjYTU1NjY5ZWQ1OTAyYzgwNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKQEAgLTU0OCw3ICs1NDgs
NyBAQCBQYXNzUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiBTdHJ1Y3R1cmVTaGFwZTo6bWVyZ2UoY29u
c3QgUGFzc1JlZlB0cjxTdHJ1Y3R1cmVTaGFwZQogICAgIFJlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4g
YiA9IHBycEI7CiAgICAgQVNTRVJUKGEtPmhhc1NhbWVQcm90b3R5cGVDaGFpbihiKSk7CiAKLSAg
ICBSZWZQdHI8U3RydWN0dXJlU2hhcGU+IG1lcmdlZCA9IFN0cnVjdHVyZVNoYXBlOjpjcmVhdGUo
KTsKKyAgICBhdXRvIG1lcmdlZCA9IFN0cnVjdHVyZVNoYXBlOjpjcmVhdGUoKTsKICAgICBmb3Ig
KGF1dG8gZmllbGQgOiBhLT5tX2ZpZWxkcykgewogICAgICAgICBpZiAoYi0+bV9maWVsZHMuY29u
dGFpbnMoZmllbGQpKQogICAgICAgICAgICAgbWVyZ2VkLT5tX2ZpZWxkcy5hZGQoZmllbGQpOwpA
QCAtNTc4LDcgKzU3OCw3IEBAIFBhc3NSZWZQdHI8U3RydWN0dXJlU2hhcGU+IFN0cnVjdHVyZVNo
YXBlOjptZXJnZShjb25zdCBQYXNzUmVmUHRyPFN0cnVjdHVyZVNoYXBlCiAKICAgICBtZXJnZWQt
Pm1hcmtBc0ZpbmFsKCk7CiAKLSAgICByZXR1cm4gbWVyZ2VkLnJlbGVhc2UoKTsKKyAgICByZXR1
cm4gV1RGTW92ZShtZXJnZWQpOwogfQogCiB2b2lkIFN0cnVjdHVyZVNoYXBlOjplbnRlckRpY3Rp
b25hcnlNb2RlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5j
dGlvbk92ZXJyaWRlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25P
dmVycmlkZXMuY3BwCmluZGV4IDJlMzI4YzE2NzRiMjcxNzZiNzgxZDExODY0YWI5YjAxMzkwZDAw
MzMuLjlhZTNhODdkMmM4MmQwZTg5ZThmZGI3MzQ5ZDY3NmY4NjA2NzRiYjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5jdGlvbk92ZXJyaWRlcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcApAQCAtMTE2
LDcgKzExNiw3IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVPdmVycmlkZUluZm8oY29uc3QgU291
cmNlQ29kZSYgb3JpZ0NvZGUsIGNvbnN0IFN0cmluZyYgbmV3CiAgICAgbmV3UHJvdmlkZXJTdHIu
YXBwZW5kKG9yaWdIZWFkZXIpOwogICAgIG5ld1Byb3ZpZGVyU3RyLmFwcGVuZChuZXdCb2R5KTsK
IAotICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4gbmV3UHJvdmlkZXIgPSBTdHJpbmdTb3VyY2VQ
cm92aWRlcjo6Y3JlYXRlKG5ld1Byb3ZpZGVyU3RyLCAiPG92ZXJyaWRkZW4+Iik7CisgICAgYXV0
byBuZXdQcm92aWRlciA9IFN0cmluZ1NvdXJjZVByb3ZpZGVyOjpjcmVhdGUobmV3UHJvdmlkZXJT
dHIsICI8b3ZlcnJpZGRlbj4iKTsKIAogICAgIGluZm8uZmlyc3RMaW5lID0gMTsKICAgICBpbmZv
LmxpbmVDb3VudCA9IDE7IC8vIEZha2luZyBpdC4gVGhpcyBkb2Vzbid0IHJlYWxseSBtYXR0ZXIg
Zm9yIG5vdy4KQEAgLTEyNyw3ICsxMjcsNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplT3ZlcnJp
ZGVJbmZvKGNvbnN0IFNvdXJjZUNvZGUmIG9yaWdDb2RlLCBjb25zdCBTdHJpbmcmIG5ldwogICAg
IGluZm8udHlwZVByb2ZpbGluZ0VuZE9mZnNldCA9IG5ld1Byb3ZpZGVyU3RyLmxlbmd0aCgpIC0g
MTsKIAogICAgIGluZm8uc291cmNlQ29kZSA9Ci0gICAgICAgIFNvdXJjZUNvZGUobmV3UHJvdmlk
ZXIucmVsZWFzZSgpLCBpbmZvLnR5cGVQcm9maWxpbmdTdGFydE9mZnNldCwgaW5mby50eXBlUHJv
ZmlsaW5nRW5kT2Zmc2V0ICsgMSwgMSwgMSk7CisgICAgICAgIFNvdXJjZUNvZGUoV1RGTW92ZShu
ZXdQcm92aWRlciksIGluZm8udHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0LCBpbmZvLnR5cGVQcm9m
aWxpbmdFbmRPZmZzZXQgKyAxLCAxLCAxKTsKIH0KICAgICAKIGJvb2wgRnVuY3Rpb25PdmVycmlk
ZXM6OmluaXRpYWxpemVPdmVycmlkZUZvcihjb25zdCBTb3VyY2VDb2RlJiBvcmlnQ29kZSwgRnVu
Y3Rpb25PdmVycmlkZXM6Ok92ZXJyaWRlSW5mbyYgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCmluZGV4IGViNTI0N2E5
ZjA3ZDliYmQ4Yzg2YjhmNTY5Zjg0NjQ5ZmE1NmMxOGEuLmRiM2I5NTQyOGU4ZTdmZjE4MWM1ZWUw
ZTNlMjNlMjQxNjY0MjdkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKQEAgLTY2Myw3ICs2NjMsNyBAQCBzdGF0aWMgUGFz
c1JlZlB0cjxUaW1lUmFuZ2VzPiByZW1vdmVTYW1wbGVzRnJvbVRyYWNrQnVmZmVyKGNvbnN0IERl
Y29kZU9yZGVyU2FtcAogICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwogI2VuZGlmCiAKLSAgICBS
ZWZQdHI8VGltZVJhbmdlcz4gZXJhc2VkUmFuZ2VzID0gVGltZVJhbmdlczo6Y3JlYXRlKCk7Cisg
ICAgYXV0byBlcmFzZWRSYW5nZXMgPSBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKICAgICBNZWRpYVRp
bWUgbWljcm9zZWNvbmQoMSwgMTAwMDAwMCk7CiAgICAgZm9yIChhdXRvIHNhbXBsZUl0IDogc2Ft
cGxlcykgewogICAgICAgICBjb25zdCBEZWNvZGVPcmRlclNhbXBsZU1hcDo6S2V5VHlwZSYgZGVj
b2RlS2V5ID0gc2FtcGxlSXQuZmlyc3Q7CkBAIC02OTgsNyArNjk4LDcgQEAgc3RhdGljIFBhc3NS
ZWZQdHI8VGltZVJhbmdlcz4gcmVtb3ZlU2FtcGxlc0Zyb21UcmFja0J1ZmZlcihjb25zdCBEZWNv
ZGVPcmRlclNhbXAKICAgICAgICAgTE9HKE1lZGlhU291cmNlLCAiU291cmNlQnVmZmVyOjolcygl
cCkgcmVtb3ZlZCAlenUgYnl0ZXMsIHN0YXJ0KCVsZiksIGVuZCglbGYpIiwgbG9nUHJlZml4LCBi
dWZmZXIsIGJ5dGVzUmVtb3ZlZCwgZWFybGllc3RTYW1wbGUsIGxhdGVzdFNhbXBsZSk7CiAjZW5k
aWYKIAotICAgIHJldHVybiBlcmFzZWRSYW5nZXMucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZN
b3ZlKGVyYXNlZFJhbmdlcyk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyOjpyZW1vdmVDb2RlZEZy
YW1lcyhjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCkKQEAgLTE3
NTEsNyArMTc1MSw3IEBAIHZvaWQgU291cmNlQnVmZmVyOjpwcm92aWRlTWVkaWFEYXRhKFRyYWNr
QnVmZmVyJiB0cmFja0J1ZmZlciwgQXRvbWljU3RyaW5nIHRyYWNrCiAgICAgICAgIC8vIEZJWE1F
KHJkYXI6Ly9wcm9ibGVtLzIwNjM1OTY5KTogUmVtb3ZlIHRoaXMgcmUtZW50cmFuY3kgcHJvdGVj
dGlvbiB3aGVuIHRoZSBhZm9yZW1lbnRpb25lZCByYWRhciBpcyByZXNvbHZlZDsgcHJvdGVjdGlu
ZwogICAgICAgICAvLyBhZ2FpbnN0IHJlLWVudHJhbmN5IGludHJvZHVjZXMgYSBzbWFsbCBpbmVm
ZmljZW5jeSB3aGVuIHJlbW92aW5nIGFwcGVuZGVkIHNhbXBsZXMgZnJvbSB0aGUgZGVjb2RlIHF1
ZXVlIG9uZSBhdCBhIHRpbWUKICAgICAgICAgLy8gcmF0aGVyIHRoYW4gd2hlbiBhbGwgc2FtcGxl
cyBoYXZlIGJlZW4gZW5xdWV1ZWQuCi0gICAgICAgIFJlZlB0cjxNZWRpYVNhbXBsZT4gc2FtcGxl
ID0gdHJhY2tCdWZmZXIuZGVjb2RlUXVldWUuYmVnaW4oKS0+c2Vjb25kOworICAgICAgICBhdXRv
IHNhbXBsZSA9IHRyYWNrQnVmZmVyLmRlY29kZVF1ZXVlLmJlZ2luKCktPnNlY29uZDsKICAgICAg
ICAgdHJhY2tCdWZmZXIuZGVjb2RlUXVldWUuZXJhc2UodHJhY2tCdWZmZXIuZGVjb2RlUXVldWUu
YmVnaW4oKSk7CiAKICAgICAgICAgLy8gRG8gbm90IGVucXVldWUgc2FtcGxlcyBzcGFubmluZyBh
IHNpZ25pZmljYW50IHVuYnVmZmVyZWQgZ2FwLgpAQCAtMTc2Nyw3ICsxNzY3LDcgQEAgdm9pZCBT
b3VyY2VCdWZmZXI6OnByb3ZpZGVNZWRpYURhdGEoVHJhY2tCdWZmZXImIHRyYWNrQnVmZmVyLCBB
dG9taWNTdHJpbmcgdHJhY2sKIAogICAgICAgICB0cmFja0J1ZmZlci5sYXN0RW5xdWV1ZWRQcmVz
ZW50YXRpb25UaW1lID0gc2FtcGxlLT5wcmVzZW50YXRpb25UaW1lKCk7CiAgICAgICAgIHRyYWNr
QnVmZmVyLmxhc3RFbnF1ZXVlZERlY29kZUVuZFRpbWUgPSBzYW1wbGUtPmRlY29kZVRpbWUoKSAr
IHNhbXBsZS0+ZHVyYXRpb24oKTsKLSAgICAgICAgbV9wcml2YXRlLT5lbnF1ZXVlU2FtcGxlKHNh
bXBsZS5yZWxlYXNlKCksIHRyYWNrSUQpOworICAgICAgICBtX3ByaXZhdGUtPmVucXVldWVTYW1w
bGUoV1RGTW92ZShzYW1wbGUpLCB0cmFja0lEKTsKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgICAg
ICsrZW5xdWV1ZWRTYW1wbGVzOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcAppbmRleCA5ZTVhOWMyNDRl
ZjYzYTE3YmZhOGQ5YzdjY2U1YzYxM2FlYTM5YWM2Li5iOTZiN2EwYjM1MTkxMWE4NzY5YTk1MmQy
OWZlOGVhYjBiMWUyMjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKQEAgLTgwLDE1ICs4MCwxNSBAQCB2b2lk
IFVzZXJNZWRpYVJlcXVlc3Q6OnN0YXJ0KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgRGljdGlv
bmFyeSYgb3B0aW9ucywgTWVkaQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRy
PE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMgPSBwYXJzZU9wdGlvbnMob3B0aW9u
cywgQXRvbWljU3RyaW5nKCJhdWRpbyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpKTsKLSAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cyA9IHBh
cnNlT3B0aW9ucyhvcHRpb25zLCBBdG9taWNTdHJpbmcoInZpZGVvIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIGF1dG8gYXVkaW9Db25zdHJhaW50cyA9IHBhcnNl
T3B0aW9ucyhvcHRpb25zLCBBdG9taWNTdHJpbmcoImF1ZGlvIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIGF1dG8gdmlkZW9Db25zdHJhaW50cyA9IHBhcnNlT3B0
aW9ucyhvcHRpb25zLCBBdG9taWNTdHJpbmcoInZpZGVvIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOwogCiAgICAgaWYgKCFhdWRpb0NvbnN0cmFpbnRzICYmICF2aWRlb0Nv
bnN0cmFpbnRzKSB7CiAgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBSZWY8VXNlck1lZGlhUmVxdWVzdD4gcmVxdWVzdCA9IGFkb3B0
UmVmKCpuZXcgVXNlck1lZGlhUmVxdWVzdChkb2N1bWVudCwgdXNlck1lZGlhLCBhdWRpb0NvbnN0
cmFpbnRzLnJlbGVhc2UoKSwgdmlkZW9Db25zdHJhaW50cy5yZWxlYXNlKCksIFdURk1vdmUocHJv
bWlzZSkpKTsKKyAgICBhdXRvIHJlcXVlc3QgPSBhZG9wdFJlZigqbmV3IFVzZXJNZWRpYVJlcXVl
c3QoZG9jdW1lbnQsIHVzZXJNZWRpYSwgV1RGTW92ZShhdWRpb0NvbnN0cmFpbnRzKSwgV1RGTW92
ZSh2aWRlb0NvbnN0cmFpbnRzKSwgV1RGTW92ZShwcm9taXNlKSkpOwogICAgIHJlcXVlc3QtPnN0
YXJ0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvU1FMQ2FsbGJhY2tXcmFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL1NRTENhbGxiYWNrV3JhcHBlci5oCmluZGV4IGNhNjY1ODEwYmE2MGQxNmNjNzQxZTE4ZGU0
NTg2Y2U4NDcwNDkyN2IuLmI2NDU0ODIwZjczNzU2MWYzMGJjYWE1MGIwYTYyODFiMjM5ZGNmODAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMQ2FsbGJh
Y2tXcmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxD
YWxsYmFja1dyYXBwZXIuaApAQCAtNjgsOCArNjgsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAg
ICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gbnVsbHB0cjsKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0
UHRyID0gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LnJlbGVhc2UoKS5sZWFrUmVmKCk7Ci0gICAg
ICAgICAgICBjYWxsYmFjayA9IG1fY2FsbGJhY2sucmVsZWFzZSgpLmxlYWtSZWYoKTsKKyAgICAg
ICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRQdHIgPSBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQubGVha1JlZigpOworICAgICAgICAgICAgY2FsbGJhY2sgPSBtX2NhbGxiYWNrLmxlYWtSZWYo
KTsKICAgICAgICAgfQogICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0UHRyLT5wb3N0VGFz
ayh7CiAgICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrOjpDbGVhbnVwVGFz
aywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNw
cAppbmRleCA4ZmI0ZTk5Y2E2NTg2NjRiNGRhZWNkNTdkNjMyNDBjMmU3MjdiMTk2Li4zMzBkNmIy
ODE5NGZiNmNkMjc4OTU2NjFkYTE5OWM0YTk2NjY0ZGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC01MzksOSArNTM5LDcgQEAg
c3RhdGljIEpTVmFsdWUgaGFuZGxlUG9zdE1lc3NhZ2UoRE9NV2luZG93JiBpbXBsLCBFeGVjU3Rh
dGUmIHN0YXRlKQogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CiAKLSAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNz
YWdlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoJnN0YXRlLCBzdGF0ZS5hcmd1bWVu
dCgwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmbWVzc2FnZVBvcnRzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZh
cnJheUJ1ZmZlcnMpOworICAgIGF1dG8gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
Y3JlYXRlKCZzdGF0ZSwgc3RhdGUuYXJndW1lbnQoMCksICZtZXNzYWdlUG9ydHMsICZhcnJheUJ1
ZmZlcnMpOwogCiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKQEAgLTU1MSw3ICs1NDksNyBAQCBzdGF0aWMgSlNWYWx1ZSBoYW5kbGVQ
b3N0TWVzc2FnZShET01XaW5kb3cmIGltcGwsIEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1w
bC5wb3N0TWVzc2FnZShtZXNzYWdlLnJlbGVhc2UoKSwgJm1lc3NhZ2VQb3J0cywgdGFyZ2V0T3Jp
Z2luLCBjYWxsZXJET01XaW5kb3coJnN0YXRlKSwgZWMpOworICAgIGltcGwucG9zdE1lc3NhZ2Uo
V1RGTW92ZShtZXNzYWdlKSwgJm1lc3NhZ2VQb3J0cywgdGFyZ2V0T3JpZ2luLCBjYWxsZXJET01X
aW5kb3coJnN0YXRlKSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAog
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSGlzdG9yeUN1c3RvbS5jcHAKaW5kZXggZjQ5Nzk2NWFlNTZkYjk0NzEyNDhmMGY5MDQ2YWY0
M2I3NmI0MmRhMy4uN2E0ZTg2ZWZhNzBlOGMxZTUwYWFmZmU3OGQ2OWE1ZDhmMzYwODQyZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0b20uY3BwCkBAIC01
NSw3ICs1NSw3IEBAIEpTVmFsdWUgSlNIaXN0b3J5OjpzdGF0ZShFeGVjU3RhdGUmIHN0YXRlKSBj
b25zdAogCiBKU1ZhbHVlIEpTSGlzdG9yeTo6cHVzaFN0YXRlKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7
Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gaGlzdG9yeVN0YXRlID0gU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoJnN0YXRlLCBzdGF0ZS5hcmd1bWVudCgwKSwgMCwgMCk7
CisgICAgYXV0byBoaXN0b3J5U3RhdGUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgm
c3RhdGUsIHN0YXRlLmFyZ3VtZW50KDApLCAwLCAwKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCkBAIC03MSw3ICs3MSw3IEBA
IEpTVmFsdWUgSlNIaXN0b3J5OjpwdXNoU3RhdGUoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICB9CiAK
ICAgICBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UgZWM7Ci0gICAgd3JhcHBlZCgpLnN0YXRlT2Jq
ZWN0QWRkZWQoaGlzdG9yeVN0YXRlLnJlbGVhc2UoKSwgdGl0bGUsIHVybCwgSGlzdG9yeTo6U3Rh
dGVPYmplY3RUeXBlOjpQdXNoLCBlYyk7CisgICAgd3JhcHBlZCgpLnN0YXRlT2JqZWN0QWRkZWQo
V1RGTW92ZShoaXN0b3J5U3RhdGUpLCB0aXRsZSwgdXJsLCBIaXN0b3J5OjpTdGF0ZU9iamVjdFR5
cGU6OlB1c2gsIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAKICAgICBt
X3N0YXRlLmNsZWFyKCk7CkBAIC04MSw3ICs4MSw3IEBAIEpTVmFsdWUgSlNIaXN0b3J5OjpwdXNo
U3RhdGUoRXhlY1N0YXRlJiBzdGF0ZSkKIAogSlNWYWx1ZSBKU0hpc3Rvcnk6OnJlcGxhY2VTdGF0
ZShFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IGhpc3RvcnlTdGF0ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCZzdGF0ZSwgc3Rh
dGUuYXJndW1lbnQoMCksIDAsIDApOworICAgIGF1dG8gaGlzdG9yeVN0YXRlID0gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpjcmVhdGUoJnN0YXRlLCBzdGF0ZS5hcmd1bWVudCgwKSwgMCwgMCk7CiAg
ICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKIApAQCAtOTcsNyArOTcsNyBAQCBKU1ZhbHVlIEpTSGlzdG9yeTo6cmVwbGFjZVN0YXRlKEV4
ZWNTdGF0ZSYgc3RhdGUpCiAgICAgfQogCiAgICAgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlIGVj
OwotICAgIHdyYXBwZWQoKS5zdGF0ZU9iamVjdEFkZGVkKGhpc3RvcnlTdGF0ZS5yZWxlYXNlKCks
IHRpdGxlLCB1cmwsIEhpc3Rvcnk6OlN0YXRlT2JqZWN0VHlwZTo6UmVwbGFjZSwgZWMpOworICAg
IHdyYXBwZWQoKS5zdGF0ZU9iamVjdEFkZGVkKFdURk1vdmUoaGlzdG9yeVN0YXRlKSwgdGl0bGUs
IHVybCwgSGlzdG9yeTo6U3RhdGVPYmplY3RUeXBlOjpSZXBsYWNlLCBlYyk7CiAgICAgc2V0RE9N
RXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwogCiAgICAgbV9zdGF0ZS5jbGVhcigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oCmluZGV4IGZjYTdh
NDBhNzk5NzFmZjM4ZGQ5Y2VkNjJiZjU5Y2RjNDU1ZmM4MjUuLjA2Mjk0NmI3MzFjOWM1NTYyYzk1
MmVhNjYxZGVmNmQ2OGI4OTVmNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmgKQEAgLTU2LDEyICs1NiwxMiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIE1lc3NhZ2VQb3J0QXJyYXkgcG9ydEFycmF5OwogICAgICAgICBBcnJh
eUJ1ZmZlckFycmF5IGFycmF5QnVmZmVyQXJyYXk7CiAgICAgICAgIGZpbGxNZXNzYWdlUG9ydEFy
cmF5KHN0YXRlLCBzdGF0ZS5hcmd1bWVudCgxKSwgcG9ydEFycmF5LCBhcnJheUJ1ZmZlckFycmF5
KTsKLSAgICAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSA9IFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCZzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQo
MCksICZwb3J0QXJyYXksICZhcnJheUJ1ZmZlckFycmF5KTsKKyAgICAgICAgYXV0byBtZXNzYWdl
ID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoJnN0YXRlLCBzdGF0ZS51bmNoZWNrZWRB
cmd1bWVudCgwKSwgJnBvcnRBcnJheSwgJmFycmF5QnVmZmVyQXJyYXkpOwogICAgICAgICBpZiAo
c3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5l
ZCgpOwogCiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICBpbXBsLT5wb3N0
TWVzc2FnZShtZXNzYWdlLnJlbGVhc2UoKSwgJnBvcnRBcnJheSwgZWMpOworICAgICAgICBpbXBs
LT5wb3N0TWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpLCAmcG9ydEFycmF5LCBlYyk7CiAgICAgICAg
IHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKICAgICAgICAgcmV0dXJuIEpTQzo6anNVbmRl
ZmluZWQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRDb250cm9sbGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlck1hYy5tbQppbmRleCA1ZmM3MmRmMDVjN2I2ODE3ZjJiOWViODEzN2IyNDI5MjNm
YzAyNGJlLi5hODQ3NDUyMjM2YTVjOTU4MjY4ODM1NjAxZjRjY2Q3NTg3MWJkYmMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJNYWMubW0KQEAg
LTY2LDEwICs2NiwxMCBAQCBSZWZQdHI8SlNDOjpCaW5kaW5nczo6SW5zdGFuY2U+IFNjcmlwdENv
bnRyb2xsZXI6OmNyZWF0ZVNjcmlwdEluc3RhbmNlRm9yV2lkZ2V0KAogICAgIGlmICghd2lkZ2V0
VmlldykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8Um9vdE9iamVjdD4g
cm9vdE9iamVjdCA9IGNyZWF0ZVJvb3RPYmplY3Qod2lkZ2V0Vmlldyk7CisgICAgYXV0byByb290
T2JqZWN0ID0gY3JlYXRlUm9vdE9iamVjdCh3aWRnZXRWaWV3KTsKIAogICAgIGlmIChbd2lkZ2V0
VmlldyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGNyZWF0ZVBsdWdpbkJpbmRpbmdzSW5z
dGFuY2U6KV0pCi0gICAgICAgIHJldHVybiBbd2lkZ2V0VmlldyBjcmVhdGVQbHVnaW5CaW5kaW5n
c0luc3RhbmNlOnJvb3RPYmplY3QucmVsZWFzZSgpXTsKKyAgICAgICAgcmV0dXJuIFt3aWRnZXRW
aWV3IGNyZWF0ZVBsdWdpbkJpbmRpbmdzSW5zdGFuY2U6V1RGTW92ZShyb290T2JqZWN0KV07CiAg
ICAgICAgIAogICAgIGlmIChbd2lkZ2V0VmlldyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KG9iamVjdEZvcldlYlNjcmlwdCldKSB7CiAgICAgICAgIGlkIG9iamVjdEZvcldlYlNjcmlwdCA9
IFt3aWRnZXRWaWV3IG9iamVjdEZvcldlYlNjcmlwdF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA2ODJjYzYyM2Zh
ZDdjNjk4MWY1Njg4NmZhYTNjNTY2NDVhYWY2M2ViLi44NjliNmVhYTgwNGY3NzQ2YTAxMTBlNzUy
N2RjMWQ4YWQyMjY1NjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTIzNTQsNyArMjM1NCw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgZmFpbCgpOwogICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
KCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IEpTQXJyYXlC
dWZmZXI6OmNyZWF0ZShtX2V4ZWMtPnZtKCksIG1fZ2xvYmFsT2JqZWN0LT5hcnJheUJ1ZmZlclN0
cnVjdHVyZSgpLCBhcnJheUJ1ZmZlci5yZWxlYXNlKCkpOworICAgICAgICAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBKU0FycmF5QnVmZmVyOjpjcmVhdGUobV9leGVjLT52bSgpLCBtX2dsb2JhbE9iamVj
dC0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUoKSwgV1RGTW92ZShhcnJheUJ1ZmZlcikpOwogICAgICAg
ICAgICAgbV9nY0J1ZmZlci5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggNjdkOWQ1N2ZlZjFhYzNjMGIzYzI5ZGFjZDBkNzMxOWY4
NjQzMzk0NS4uM2I0Mjc3YmRiMGI0OTVkZDNkOTEwMWM2NjEzYWVhZTU2NjNmOTMxNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAK
QEAgLTQwNTksOSArNDA1OSw5IEBAIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBDb21wdXRl
ZFN0eWxlRXh0cmFjdG9yOjpjb3B5UHJvcGVydGllc0luU2V0KGNvbnN0IENTCiAgICAgVmVjdG9y
PENTU1Byb3BlcnR5LCAyNTY+IGxpc3Q7CiAgICAgbGlzdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KGxlbmd0aCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0g
ICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBwcm9wZXJ0eVZhbHVlKHNldFtpXSk7Cisg
ICAgICAgIGF1dG8gdmFsdWUgPSBwcm9wZXJ0eVZhbHVlKHNldFtpXSk7CiAgICAgICAgIGlmICh2
YWx1ZSkKLSAgICAgICAgICAgIGxpc3QuYXBwZW5kKENTU1Byb3BlcnR5KHNldFtpXSwgdmFsdWUu
cmVsZWFzZSgpLCBmYWxzZSkpOworICAgICAgICAgICAgbGlzdC5hcHBlbmQoQ1NTUHJvcGVydHko
c2V0W2ldLCBXVEZNb3ZlKHZhbHVlKSwgZmFsc2UpKTsKICAgICB9CiAgICAgcmV0dXJuIE11dGFi
bGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZShsaXN0LmRhdGEoKSwgbGlzdC5zaXplKCkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1BhcnNlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcAppbmRleCBmMGM0ODU0Y2M2MWQxYWZhMDUzYjVj
ZmU5ZjI4ODQ4MDhlYjBkZWQwLi45Y2I0NzkzYmJlMTQwZTMzNDIyNWQyNDMwODIzNzY0ZWM5MDll
OWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcApAQCAtMjcyLDkgKzI3Miw5IEBA
IGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVNWR1ZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29s
IGltcG9ydGFudCkKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSkKICAgICAgICAgICAg
IHZhbGlkX3ByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUmVm
UHRyPENTU1ZhbHVlTGlzdD4gc2hhZG93VmFsdWVMaXN0ID0gcGFyc2VTaGFkb3coKm1fdmFsdWVM
aXN0LCBwcm9wSWQpOworICAgICAgICAgICAgYXV0byBzaGFkb3dWYWx1ZUxpc3QgPSBwYXJzZVNo
YWRvdygqbV92YWx1ZUxpc3QsIHByb3BJZCk7CiAgICAgICAgICAgICBpZiAoc2hhZG93VmFsdWVM
aXN0KSB7Ci0gICAgICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcElkLCBzaGFkb3dWYWx1ZUxp
c3QucmVsZWFzZSgpLCBpbXBvcnRhbnQpOworICAgICAgICAgICAgICAgIGFkZFByb3BlcnR5KHBy
b3BJZCwgV1RGTW92ZShzaGFkb3dWYWx1ZUxpc3QpLCBpbXBvcnRhbnQpOwogICAgICAgICAgICAg
ICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgICAgICB9CkBAIC0zMzYsNyArMzM2LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlU1ZH
VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGlmICghcGFy
c2VkVmFsdWUgfHwgKG1fdmFsdWVMaXN0LT5jdXJyZW50KCkgJiYgIWluU2hvcnRoYW5kKCkpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhZGRQcm9wZXJ0eShwcm9wSWQsIHBhcnNlZFZh
bHVlLnJlbGVhc2UoKSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShwcm9wSWQsIFdURk1v
dmUocGFyc2VkVmFsdWUpLCBpbXBvcnRhbnQpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKaW5kZXggNzdhYzY1ZjI4Mzhk
YTYzY2VjNDg4Zjg1ZDJiYTMxYzE3YmY2MDg5ZC4uYWY0NTcxM2RmNTgzMDFjYTMwN2MzMDZhZjQ4
MTQ2Y2RhY2ZiNDA1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRl
ckNvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0
ZXIuaApAQCAtNzYyLDcgKzc2Miw3IEBAIGlubGluZSBQYXNzUmVmUHRyPFNoYXBlVmFsdWU+IFN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNoYXBlVmFsdWUoU3R5bGVSZXNvCiAgICAgfQog
CiAgICAgaWYgKHNoYXBlKQotICAgICAgICByZXR1cm4gU2hhcGVWYWx1ZTo6Y3JlYXRlU2hhcGVW
YWx1ZShzaGFwZS5yZWxlYXNlKCksIHJlZmVyZW5jZUJveCk7CisgICAgICAgIHJldHVybiBTaGFw
ZVZhbHVlOjpjcmVhdGVTaGFwZVZhbHVlKFdURk1vdmUoc2hhcGUpLCByZWZlcmVuY2VCb3gpOwog
CiAgICAgaWYgKHJlZmVyZW5jZUJveCAhPSBCb3hNaXNzaW5nKQogICAgICAgICByZXR1cm4gU2hh
cGVWYWx1ZTo6Y3JlYXRlQm94U2hhcGVWYWx1ZShyZWZlcmVuY2VCb3gpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVQcm9wZXJ0aWVzLmNwcAppbmRleCBiZmNiZmE3MmQyMDRmOWFlOWFkNWQ2NzFmMmRi
Y2IwNmQwNGJmY2U1Li5mN2JjNzMwMTVkZTBkMzU2ZWE0YzkxY2M5MzAyMTUxODc2MjFjYTY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcApAQCAtMTMxMyw5ICsxMzEzLDkg
QEAgUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IFN0eWxlUHJvcGVydGllczo6Y29weVByb3Bl
cnRpZXNJblNldChjb25zdCBDU1NQcm9wZXIKICAgICBWZWN0b3I8Q1NTUHJvcGVydHksIDI1Nj4g
bGlzdDsKICAgICBsaXN0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgUmVmUHRyPENTU1Zh
bHVlPiB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWVJbnRlcm5hbChzZXRbaV0pOworICAgICAg
ICBhdXRvIHZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZUludGVybmFsKHNldFtpXSk7CiAgICAg
ICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAgIGxpc3QuYXBwZW5kKENTU1Byb3BlcnR5KHNldFtp
XSwgdmFsdWUucmVsZWFzZSgpLCBmYWxzZSkpOworICAgICAgICAgICAgbGlzdC5hcHBlbmQoQ1NT
UHJvcGVydHkoc2V0W2ldLCBXVEZNb3ZlKHZhbHVlKSwgZmFsc2UpKTsKICAgICB9CiAgICAgcmV0
dXJuIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZShsaXN0LmRhdGEoKSwgbGlzdC5zaXpl
KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGMxN2FhZmE5NjQ1
OGUzYWZmMjE1NjY0YWE2NDI2OWIyY2EyYTUwZDkuLmFiNmRmMjc2YjQ2OTk1NzA3NDFlODFiZmVk
ZDQ5YzY3YWJjZWZhMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29s
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTIx
OTMsOCArMjE5Myw4IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6bG9hZFBlbmRpbmdJbWFnZXMoKQog
ICAgICAgICAgICAgICAgIGlmIChpczxJbWFnZUNvbnRlbnREYXRhPigqY29udGVudERhdGEpKSB7
CiAgICAgICAgICAgICAgICAgICAgIGF1dG8mIHN0eWxlSW1hZ2UgPSBkb3duY2FzdDxJbWFnZUNv
bnRlbnREYXRhPigqY29udGVudERhdGEpLmltYWdlKCk7CiAgICAgICAgICAgICAgICAgICAgIGlm
IChpczxTdHlsZVBlbmRpbmdJbWFnZT4oc3R5bGVJbWFnZSkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChSZWZQdHI8U3R5bGVJbWFnZT4gbG9hZGVkSW1hZ2UgPSBsb2FkUGVuZGluZ0lt
YWdlKGRvd25jYXN0PFN0eWxlUGVuZGluZ0ltYWdlPihzdHlsZUltYWdlKSkpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZG93bmNhc3Q8SW1hZ2VDb250ZW50RGF0YT4oKmNvbnRlbnREYXRh
KS5zZXRJbWFnZShsb2FkZWRJbWFnZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGF1dG8gbG9hZGVkSW1hZ2UgPSBsb2FkUGVuZGluZ0ltYWdlKGRvd25jYXN0PFN0eWxl
UGVuZGluZ0ltYWdlPihzdHlsZUltYWdlKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZG93bmNhc3Q8SW1hZ2VDb250ZW50RGF0YT4oKmNvbnRlbnREYXRhKS5zZXRJbWFnZShXVEZNb3Zl
KGxvYWRlZEltYWdlKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9CkBAIC0yMjI4LDggKzIyMjgsOCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6
OmxvYWRQZW5kaW5nSW1hZ2VzKCkKICAgICAgICAgICAgICAgICBjb25zdCBOaW5lUGllY2VJbWFn
ZSYgbWFza0ltYWdlID0gcmVmbGVjdGlvbi0+bWFzaygpOwogICAgICAgICAgICAgICAgIGF1dG8q
IHN0eWxlSW1hZ2UgPSBtYXNrSW1hZ2UuaW1hZ2UoKTsKICAgICAgICAgICAgICAgICBpZiAoaXM8
U3R5bGVQZW5kaW5nSW1hZ2U+KHN0eWxlSW1hZ2UpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJl
ZlB0cjxTdHlsZUltYWdlPiBsb2FkZWRJbWFnZSA9IGxvYWRQZW5kaW5nSW1hZ2UoZG93bmNhc3Q8
U3R5bGVQZW5kaW5nSW1hZ2U+KCpzdHlsZUltYWdlKSk7Ci0gICAgICAgICAgICAgICAgICAgIHJl
ZmxlY3Rpb24tPnNldE1hc2soTmluZVBpZWNlSW1hZ2UobG9hZGVkSW1hZ2UucmVsZWFzZSgpLCBt
YXNrSW1hZ2UuaW1hZ2VTbGljZXMoKSwgbWFza0ltYWdlLmZpbGwoKSwgbWFza0ltYWdlLmJvcmRl
clNsaWNlcygpLCBtYXNrSW1hZ2Uub3V0c2V0KCksIG1hc2tJbWFnZS5ob3Jpem9udGFsUnVsZSgp
LCBtYXNrSW1hZ2UudmVydGljYWxSdWxlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBs
b2FkZWRJbWFnZSA9IGxvYWRQZW5kaW5nSW1hZ2UoZG93bmNhc3Q8U3R5bGVQZW5kaW5nSW1hZ2U+
KCpzdHlsZUltYWdlKSk7CisgICAgICAgICAgICAgICAgICAgIHJlZmxlY3Rpb24tPnNldE1hc2so
TmluZVBpZWNlSW1hZ2UoV1RGTW92ZShsb2FkZWRJbWFnZSksIG1hc2tJbWFnZS5pbWFnZVNsaWNl
cygpLCBtYXNrSW1hZ2UuZmlsbCgpLCBtYXNrSW1hZ2UuYm9yZGVyU2xpY2VzKCksIG1hc2tJbWFn
ZS5vdXRzZXQoKSwgbWFza0ltYWdlLmhvcml6b250YWxSdWxlKCksIG1hc2tJbWFnZS52ZXJ0aWNh
bFJ1bGUoKSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRP
d25lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcApp
bmRleCA5ZmM0MjZkMWI4MzhlMmQzZTIxZDgzMmQ0N2JiNjIxODllYTE5OWIzLi5lMDA2YjgxYTZj
MWUyYzU0MGMzMTg1YTE3Y2ZiZTU5NTM5ZjJmMDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
SW5saW5lU3R5bGVTaGVldE93bmVyLmNwcApAQCAtMTA5LDcgKzEwOSw4IEBAIHZvaWQgSW5saW5l
U3R5bGVTaGVldE93bmVyOjpjcmVhdGVTaGVldEZyb21UZXh0Q29udGVudHMoRWxlbWVudCYgZWxl
bWVudCkKIHZvaWQgSW5saW5lU3R5bGVTaGVldE93bmVyOjpjbGVhclNoZWV0KCkKIHsKICAgICBB
U1NFUlQobV9zaGVldCk7Ci0gICAgbV9zaGVldC5yZWxlYXNlKCktPmNsZWFyT3duZXJOb2RlKCk7
CisgICAgYXV0byBzaGVldCA9IFdURk1vdmUobV9zaGVldCk7CisgICAgc2hlZXQtPmNsZWFyT3du
ZXJOb2RlKCk7CiB9CiAKIGlubGluZSBib29sIGlzVmFsaWRDU1NDb250ZW50VHlwZShFbGVtZW50
JiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCmluZGV4IGEwNTk5ZGUzMjRjNTU5MTJkZTE5NDEw
MTI2NjVhMzgzYWI4ZmZlZDUuLjI2N2Y5NTA1YzUxYzQ3ZWVkMWRlYWQwMDBkZDhkODhmMDlmYTdi
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCkBA
IC04NDAsNyArODQwLDcgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlJbmxpbmVTdHls
ZVRvTm9kZVJhbmdlKEVkaXRpbmdTdHlsZSogc3R5bGUsIFBhc3NSZWYKICAgICAgICAgaWYgKHJ1
bi5kdW1teUVsZW1lbnQpCiAgICAgICAgICAgICByZW1vdmVOb2RlKHJ1bi5kdW1teUVsZW1lbnQp
OwogICAgICAgICBpZiAocnVuLnN0YXJ0QW5kRW5kQXJlU3RpbGxJbkRvY3VtZW50KCkpCi0gICAg
ICAgICAgICBhcHBseUlubGluZVN0eWxlQ2hhbmdlKHJ1bi5zdGFydC5yZWxlYXNlKCksIHJ1bi5l
bmQucmVsZWFzZSgpLCBydW4uY2hhbmdlLCBBZGRTdHlsZWRFbGVtZW50KTsKKyAgICAgICAgICAg
IGFwcGx5SW5saW5lU3R5bGVDaGFuZ2UoV1RGTW92ZShydW4uc3RhcnQpLCBXVEZNb3ZlKHJ1bi5l
bmQpLCBydW4uY2hhbmdlLCBBZGRTdHlsZWRFbGVtZW50KTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKaW5kZXggYjkwNDJm
YTRkZjc4OWE1NmE2OGU5MjkzM2Q3NTA5ZGUyMjZjYmY0ZS4uOTE3OTdhMWJmY2FmOTAyNzI1NjUx
MjNkZWU0ZTU5MjE5MTRkNzlkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9D
b21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21w
b3NpdGVFZGl0Q29tbWFuZC5jcHAKQEAgLTUyMiw3ICs1MjIsNyBAQCB2b2lkIENvbXBvc2l0ZUVk
aXRDb21tYW5kOjpyZW1vdmVDaGlsZHJlbkluUmFuZ2UoUGFzc1JlZlB0cjxOb2RlPiBub2RlLCB1
bnNpZ25lZAogICAgICAgICBjaGlsZHJlbi5hcHBlbmQoY2hpbGQpOwogCiAgICAgZm9yIChhdXRv
JiBjaGlsZCA6IGNoaWxkcmVuKQotICAgICAgICByZW1vdmVOb2RlKGNoaWxkLnJlbGVhc2UoKSk7
CisgICAgICAgIHJlbW92ZU5vZGUoV1RGTW92ZShjaGlsZCkpOwogfQogCiB2b2lkIENvbXBvc2l0
ZUVkaXRDb21tYW5kOjpyZW1vdmVOb2RlKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSwgU2hvdWxkQXNz
dW1lQ29udGVudElzQWx3YXlzRWRpdGFibGUgc2hvdWxkQXNzdW1lQ29udGVudElzQWx3YXlzRWRp
dGFibGUpCkBAIC01NDEsNyArNTQxLDcgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVt
b3ZlTm9kZUFuZFBydW5lQW5jZXN0b3JzKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSkKIHsKICAgICBS
ZWZQdHI8Q29udGFpbmVyTm9kZT4gcGFyZW50ID0gbm9kZS0+cGFyZW50Tm9kZSgpOwogICAgIHJl
bW92ZU5vZGUobm9kZSk7Ci0gICAgcHJ1bmUocGFyZW50LnJlbGVhc2UoKSk7CisgICAgcHJ1bmUo
V1RGTW92ZShwYXJlbnQpKTsKIH0KIAogdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVJl
bWFpbmluZ1NpYmxpbmdzVG9OZXdQYXJlbnQoTm9kZSogbm9kZSwgTm9kZSogcGFzdExhc3ROb2Rl
VG9Nb3ZlLCBQYXNzUmVmUHRyPEVsZW1lbnQ+IHBycE5ld1BhcmVudCkKQEAgLTU4Myw3ICs1ODMs
NyBAQCBIVE1MRWxlbWVudCogQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlcGxhY2VFbGVtZW50V2l0
aFNwYW5QcmVzZXJ2aW5nQ2hpbGRyZW5BbmRBdAogdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6
cHJ1bmUoUGFzc1JlZlB0cjxOb2RlPiBub2RlKQogewogICAgIGlmIChSZWZQdHI8Tm9kZT4gaGln
aGVzdE5vZGVUb1JlbW92ZSA9IGhpZ2hlc3ROb2RlVG9SZW1vdmVJblBydW5pbmcobm9kZS5nZXQo
KSkpCi0gICAgICAgIHJlbW92ZU5vZGUoaGlnaGVzdE5vZGVUb1JlbW92ZS5yZWxlYXNlKCkpOwor
ICAgICAgICByZW1vdmVOb2RlKFdURk1vdmUoaGlnaGVzdE5vZGVUb1JlbW92ZSkpOwogfQogCiB2
b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpzcGxpdFRleHROb2RlKFBhc3NSZWZQdHI8VGV4dD4g
bm9kZSwgdW5zaWduZWQgb2Zmc2V0KQpAQCAtNjg4LDcgKzY4OCw3IEBAIFBvc2l0aW9uIENvbXBv
c2l0ZUVkaXRDb21tYW5kOjpyZXBsYWNlU2VsZWN0ZWRUZXh0SW5Ob2RlKGNvbnN0IFN0cmluZyYg
dGV4dCkKICAgICBSZWZQdHI8VGV4dD4gdGV4dE5vZGUgPSBzdGFydC5jb250YWluZXJUZXh0KCk7
CiAgICAgcmVwbGFjZVRleHRJbk5vZGUodGV4dE5vZGUsIHN0YXJ0Lm9mZnNldEluQ29udGFpbmVy
Tm9kZSgpLCBlbmQub2Zmc2V0SW5Db250YWluZXJOb2RlKCkgLSBzdGFydC5vZmZzZXRJbkNvbnRh
aW5lck5vZGUoKSwgdGV4dCk7CiAKLSAgICByZXR1cm4gUG9zaXRpb24odGV4dE5vZGUucmVsZWFz
ZSgpLCBzdGFydC5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSArIHRleHQubGVuZ3RoKCkpOworICAg
IHJldHVybiBQb3NpdGlvbihXVEZNb3ZlKHRleHROb2RlKSwgc3RhcnQub2Zmc2V0SW5Db250YWlu
ZXJOb2RlKCkgKyB0ZXh0Lmxlbmd0aCgpKTsKIH0KIAogc3RhdGljIFZlY3RvcjxSZW5kZXJlZERv
Y3VtZW50TWFya2VyPiBjb3B5TWFya2Vycyhjb25zdCBWZWN0b3I8UmVuZGVyZWREb2N1bWVudE1h
cmtlcio+JiBtYXJrZXJQb2ludGVycykKQEAgLTg3Miw3ICs4NzIsNyBAQCB2b2lkIENvbXBvc2l0
ZUVkaXRDb21tYW5kOjpyZWJhbGFuY2VXaGl0ZXNwYWNlT25UZXh0U3Vic3RyaW5nKFBhc3NSZWZQ
dHI8VGV4dD4gcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlzRW5kT2ZQYXJhZ3JhcGgodmlzaWJsZURvd25zdHJlYW1Qb3MpIHx8
ICh1bnNpZ25lZClkb3duc3RyZWFtID09IHRleHQubGVuZ3RoKCkpOwogICAgIAogICAgIGlmIChz
dHJpbmcgIT0gcmViYWxhbmNlZFN0cmluZykKLSAgICAgICAgcmVwbGFjZVRleHRJbk5vZGVQcmVz
ZXJ2aW5nTWFya2Vycyh0ZXh0Tm9kZS5yZWxlYXNlKCksIHVwc3RyZWFtLCBsZW5ndGgsIHJlYmFs
YW5jZWRTdHJpbmcpOworICAgICAgICByZXBsYWNlVGV4dEluTm9kZVByZXNlcnZpbmdNYXJrZXJz
KFdURk1vdmUodGV4dE5vZGUpLCB1cHN0cmVhbSwgbGVuZ3RoLCByZWJhbGFuY2VkU3RyaW5nKTsK
IH0KIAogdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cHJlcGFyZVdoaXRlc3BhY2VBdFBvc2l0
aW9uRm9yU3BsaXQoUG9zaXRpb24mIHBvc2l0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9DcmVhdGVMaW5rQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0NyZWF0ZUxpbmtDb21tYW5kLmNwcAppbmRleCBhM2VlN2U1MDU4NDI4ZWY4MzEwNTM5OThiODIx
YjJkNDdmYjZhYThmLi4zYTA1MjA4NzNiNDRmZTY0YTJlZDUyMmUzMzdkZmI3NGUxMmE2MjI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NyZWF0ZUxpbmtDb21tYW5kLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NyZWF0ZUxpbmtDb21tYW5kLmNwcApAQCAtNDMs
MTYgKzQzLDE2IEBAIHZvaWQgQ3JlYXRlTGlua0NvbW1hbmQ6OmRvQXBwbHkoKQogICAgIGlmIChl
bmRpbmdTZWxlY3Rpb24oKS5pc05vbmUoKSkKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAg
ICBSZWZQdHI8SFRNTEFuY2hvckVsZW1lbnQ+IGFuY2hvckVsZW1lbnQgPSBIVE1MQW5jaG9yRWxl
bWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpOworICAgIGF1dG8gYW5jaG9yRWxlbWVudCA9IEhUTUxB
bmNob3JFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7CiAgICAgYW5jaG9yRWxlbWVudC0+c2V0
SHJlZihtX3VybCk7CiAgICAgCiAgICAgaWYgKGVuZGluZ1NlbGVjdGlvbigpLmlzUmFuZ2UoKSkK
LSAgICAgICAgYXBwbHlTdHlsZWRFbGVtZW50KGFuY2hvckVsZW1lbnQucmVsZWFzZSgpKTsKKyAg
ICAgICAgYXBwbHlTdHlsZWRFbGVtZW50KFdURk1vdmUoYW5jaG9yRWxlbWVudCkpOwogICAgIGVs
c2UgewotICAgICAgICBpbnNlcnROb2RlQXQoYW5jaG9yRWxlbWVudC5nZXQoKSwgZW5kaW5nU2Vs
ZWN0aW9uKCkuc3RhcnQoKSk7Ci0gICAgICAgIFJlZlB0cjxUZXh0PiB0ZXh0Tm9kZSA9IFRleHQ6
OmNyZWF0ZShkb2N1bWVudCgpLCBtX3VybCk7Ci0gICAgICAgIGFwcGVuZE5vZGUodGV4dE5vZGUu
cmVsZWFzZSgpLCBhbmNob3JFbGVtZW50LmdldCgpKTsKLSAgICAgICAgc2V0RW5kaW5nU2VsZWN0
aW9uKFZpc2libGVTZWxlY3Rpb24ocG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUoYW5jaG9yRWxl
bWVudC5nZXQoKSksIHBvc2l0aW9uSW5QYXJlbnRBZnRlck5vZGUoYW5jaG9yRWxlbWVudC5nZXQo
KSksIERPV05TVFJFQU0sIGVuZGluZ1NlbGVjdGlvbigpLmlzRGlyZWN0aW9uYWwoKSkpOworICAg
ICAgICBpbnNlcnROb2RlQXQoYW5jaG9yRWxlbWVudC5wdHIoKSwgZW5kaW5nU2VsZWN0aW9uKCku
c3RhcnQoKSk7CisgICAgICAgIGF1dG8gdGV4dE5vZGUgPSBUZXh0OjpjcmVhdGUoZG9jdW1lbnQo
KSwgbV91cmwpOworICAgICAgICBhcHBlbmROb2RlKFdURk1vdmUodGV4dE5vZGUpLCBhbmNob3JF
bGVtZW50LnB0cigpKTsKKyAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rp
b24ocG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUoYW5jaG9yRWxlbWVudC5wdHIoKSksIHBvc2l0
aW9uSW5QYXJlbnRBZnRlck5vZGUoYW5jaG9yRWxlbWVudC5wdHIoKSksIERPV05TVFJFQU0sIGVu
ZGluZ1NlbGVjdGlvbigpLmlzRGlyZWN0aW9uYWwoKSkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCmluZGV4IDI5MTRmNjI3MTJiNzJkMTE4YWViZDIx
NjUyMTA5ZGJmNTRmY2IyZmEuLmVjN2U3ZWI3NzJhNzFkMjliOWRiODFmMTNmODA5YTIyMWQyZjcx
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKQEAgLTEyNDgsOSAr
MTI0OCw5IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjptZXJnZVN0eWxlKGNvbnN0IFN0eWxlUHJvcGVy
dGllcyogc3R5bGUsIENTU1Byb3BlcnR5T3ZlcnJpZGVNCiAgICAgICAgIGlmICgocHJvcGVydHku
aWQoKSA9PSBDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uIHx8IHByb3BlcnR5LmlkKCkgPT0gQ1NT
UHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCkKICAgICAgICAgICAgICYmIGlz
PENTU1ZhbHVlTGlzdD4oKnByb3BlcnR5LnZhbHVlKCkpICYmIHZhbHVlKSB7CiAgICAgICAgICAg
ICBpZiAoaXM8Q1NTVmFsdWVMaXN0PigqdmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRy
PENTU1ZhbHVlTGlzdD4gbmV3VmFsdWUgPSBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KCp2YWx1ZSku
Y29weSgpOwotICAgICAgICAgICAgICAgIG1lcmdlVGV4dERlY29yYXRpb25WYWx1ZXMoKm5ld1Zh
bHVlLCBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KCpwcm9wZXJ0eS52YWx1ZSgpKSk7Ci0gICAgICAg
ICAgICAgICAgbV9tdXRhYmxlU3R5bGUtPnNldFByb3BlcnR5KHByb3BlcnR5LmlkKCksIG5ld1Zh
bHVlLnJlbGVhc2UoKSwgcHJvcGVydHkuaXNJbXBvcnRhbnQoKSk7CisgICAgICAgICAgICAgICAg
YXV0byBuZXdWYWx1ZSA9IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4oKnZhbHVlKS5jb3B5KCk7Cisg
ICAgICAgICAgICAgICAgbWVyZ2VUZXh0RGVjb3JhdGlvblZhbHVlcyhuZXdWYWx1ZSwgZG93bmNh
c3Q8Q1NTVmFsdWVMaXN0PigqcHJvcGVydHkudmFsdWUoKSkpOworICAgICAgICAgICAgICAgIG1f
bXV0YWJsZVN0eWxlLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eS5pZCgpLCBXVEZNb3ZlKG5ld1ZhbHVl
KSwgcHJvcGVydHkuaXNJbXBvcnRhbnQoKSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB2YWx1ZSA9IG51bGxwdHI7IC8vIHRleHQtZGVjb3Jh
dGlvbjogbm9uZSBpcyBlcXVpdmFsZW50IHRvIG5vdCBoYXZpbmcgdGhlIHByb3BlcnR5LgpAQCAt
MTMwNyw4ICsxMzA3LDggQEAgdm9pZCBFZGl0aW5nU3R5bGU6Om1lcmdlU3R5bGVGcm9tUnVsZXNG
b3JTZXJpYWxpemF0aW9uKFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgICAgICAgICBpZiAo
IWlzPENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgaWYgKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLmlz
UGVyY2VudGFnZSgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFJlZlB0cjxDU1NWYWx1ZT4gY29t
cHV0ZWRQcm9wZXJ0eVZhbHVlID0gY29tcHV0ZWRTdHlsZS5wcm9wZXJ0eVZhbHVlKHByb3BlcnR5
LmlkKCkpKQotICAgICAgICAgICAgICAgICAgICBmcm9tQ29tcHV0ZWRTdHlsZS0+YWRkUGFyc2Vk
UHJvcGVydHkoQ1NTUHJvcGVydHkocHJvcGVydHkuaWQoKSwgY29tcHV0ZWRQcm9wZXJ0eVZhbHVl
LnJlbGVhc2UoKSkpOworICAgICAgICAgICAgICAgIGlmIChhdXRvIGNvbXB1dGVkUHJvcGVydHlW
YWx1ZSA9IGNvbXB1dGVkU3R5bGUucHJvcGVydHlWYWx1ZShwcm9wZXJ0eS5pZCgpKSkKKyAgICAg
ICAgICAgICAgICAgICAgZnJvbUNvbXB1dGVkU3R5bGUtPmFkZFBhcnNlZFByb3BlcnR5KENTU1By
b3BlcnR5KHByb3BlcnR5LmlkKCksIFdURk1vdmUoY29tcHV0ZWRQcm9wZXJ0eVZhbHVlKSkpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CmluZGV4IDM0Y2RjZTk5ZjNiZmYzMmQ0NjlmNDUxNjk3ZDRkNTlkYTcwOGM1ZmEuLmY2NjYzMzAx
NjQzMDMxMzU4NTQwZmI3NGMxMjUwNzg2ZjdjNzUzNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAKQEAgLTEzNiw5ICsxMzYsOSBAQCB2b2lkIENsZWFyVGV4dENvbW1hbmQ6OkNyZWF0ZUFu
ZEFwcGx5KGNvbnN0IFJlZlB0cjxGcmFtZT4gZnJhbWUpCiAgICAgCiAgICAgY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiBvbGRTZWxlY3Rpb24gPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7
CiAgICAgZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdEFsbCgpOwotICAgIFJlZlB0cjxDbGVhclRl
eHRDb21tYW5kPiBjbGVhckNvbW1hbmQgPSBhZG9wdFJlZihuZXcgQ2xlYXJUZXh0Q29tbWFuZCgq
ZnJhbWUtPmRvY3VtZW50KCkpKTsKKyAgICBhdXRvIGNsZWFyQ29tbWFuZCA9IGFkb3B0UmVmKCpu
ZXcgQ2xlYXJUZXh0Q29tbWFuZCgqZnJhbWUtPmRvY3VtZW50KCkpKTsKICAgICBjbGVhckNvbW1h
bmQtPnNldFN0YXJ0aW5nU2VsZWN0aW9uKG9sZFNlbGVjdGlvbik7Ci0gICAgYXBwbHlDb21tYW5k
KGNsZWFyQ29tbWFuZC5yZWxlYXNlKCkpOworICAgIGFwcGx5Q29tbWFuZChXVEZNb3ZlKGNsZWFy
Q29tbWFuZCkpOwogfQogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMjQzMywxNiAr
MjQzMywxNiBAQCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJ
blJhbmdlcyhUZXh0Q2hlY2tpbmdUeXBlTWFzayB0ZXh0QwogICAgIGJvb2wgYXN5bmNocm9ub3Vz
ID0gbV9mcmFtZS5zZXR0aW5ncygpLmFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkg
JiYgIXNob3VsZFNob3dDb3JyZWN0aW9uUGFuZWw7CiAKICAgICAvLyBJbiBhc3luY2hyb25vdXMg
bW9kZSwgd2UgaW50ZW50aW9uYWxseSBjaGVjayBwYXJhZ3JhcGgtd2lkZSBzZW50ZW5jZS4KLSAg
ICBSZWZQdHI8U3BlbGxDaGVja1JlcXVlc3Q+IHJlcXVlc3QgPSBTcGVsbENoZWNrUmVxdWVzdDo6
Y3JlYXRlKHJlc29sdmVUZXh0Q2hlY2tpbmdUeXBlTWFzayh0ZXh0Q2hlY2tpbmdPcHRpb25zKSwg
VGV4dENoZWNraW5nUHJvY2Vzc0luY3JlbWVudGFsLCBhc3luY2hyb25vdXMgPyBwYXJhZ3JhcGhS
YW5nZSA6IHJhbmdlVG9DaGVjaywgcGFyYWdyYXBoUmFuZ2UpOworICAgIGF1dG8gcmVxdWVzdCA9
IFNwZWxsQ2hlY2tSZXF1ZXN0OjpjcmVhdGUocmVzb2x2ZVRleHRDaGVja2luZ1R5cGVNYXNrKHRl
eHRDaGVja2luZ09wdGlvbnMpLCBUZXh0Q2hlY2tpbmdQcm9jZXNzSW5jcmVtZW50YWwsIGFzeW5j
aHJvbm91cyA/IHBhcmFncmFwaFJhbmdlIDogcmFuZ2VUb0NoZWNrLCBwYXJhZ3JhcGhSYW5nZSk7
CiAKICAgICBpZiAoYXN5bmNocm9ub3VzKSB7Ci0gICAgICAgIG1fc3BlbGxDaGVja2VyLT5yZXF1
ZXN0Q2hlY2tpbmdGb3IocmVxdWVzdC5yZWxlYXNlKCkpOworICAgICAgICBtX3NwZWxsQ2hlY2tl
ci0+cmVxdWVzdENoZWNraW5nRm9yKFdURk1vdmUocmVxdWVzdCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCiAgICAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gcmVzdWx0czsKICAgICBj
aGVja1RleHRPZlBhcmFncmFwaCgqdGV4dENoZWNrZXIoKSwgcGFyYWdyYXBoVG9DaGVjay50ZXh0
KCksIHJlc29sdmVUZXh0Q2hlY2tpbmdUeXBlTWFzayh0ZXh0Q2hlY2tpbmdPcHRpb25zKSwgcmVz
dWx0cywgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSk7Ci0gICAgbWFya0FuZFJlcGxh
Y2VGb3IocmVxdWVzdC5yZWxlYXNlKCksIHJlc3VsdHMpOworICAgIG1hcmtBbmRSZXBsYWNlRm9y
KFdURk1vdmUocmVxdWVzdCksIHJlc3VsdHMpOwogfQogCiBzdGF0aWMgYm9vbCBpc0F1dG9tYXRp
Y1RleHRSZXBsYWNlbWVudFR5cGUoVGV4dENoZWNraW5nVHlwZSB0eXBlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKaW5kZXggYTkzNTgwZTc2N2ZmY2IwZjQzYmFkMWY2
ZDk4NWNhNmIzYTA3ZGZkOS4uZGRmMTk0YzcyYTczYjdmZmJkMThlYzYzZjJlYTU0YTg0OTc0MmQ4
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCkBAIC0xNjUsMTIg
KzE2NSwxMiBAQCBzdGF0aWMgYm9vbCBleGVjdXRlSW5zZXJ0RnJhZ21lbnQoRnJhbWUmIGZyYW1l
LCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYQogCiBzdGF0aWMgYm9vbCBleGVjdXRl
SW5zZXJ0Tm9kZShGcmFtZSYgZnJhbWUsIFJlZjxOb2RlPiYmIGNvbnRlbnQpCiB7Ci0gICAgUmVm
UHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRl
KCpmcmFtZS5kb2N1bWVudCgpKTsKKyAgICBhdXRvIGZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVu
dDo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
ICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoY29udGVudCwgZWMpOwogICAgIGlmIChlYykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBleGVjdXRlSW5zZXJ0RnJhZ21lbnQoZnJh
bWUsIGZyYWdtZW50LnJlbGVhc2UoKSk7CisgICAgcmV0dXJuIGV4ZWN1dGVJbnNlcnRGcmFnbWVu
dChmcmFtZSwgV1RGTW92ZShmcmFnbWVudCkpOwogfQogCiBzdGF0aWMgYm9vbCBleHBhbmRTZWxl
Y3Rpb25Ub0dyYW51bGFyaXR5KEZyYW1lJiBmcmFtZSwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFy
aXR5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcAppbmRl
eCA5Yjk0NDhjYzY2ZDAwN2E4ZWMyOTRiYzNiOWVmNWM4MTU2MjFiMTdiLi4xMDM5ODdhZDdlZGE5
ODBmODBlNjEyOTZhNjM3YWExNGQ5OTcwODM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0luc2VydFRleHRDb21tYW5kLmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIGJvb2wgSW5zZXJ0VGV4
dENvbW1hbmQ6OnBlcmZvcm1PdmVyd3JpdGUoY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIHNlbGVj
dEluc2VydGVkCiAKICAgICByZXBsYWNlVGV4dEluTm9kZSh0ZXh0Tm9kZSwgc3RhcnQub2Zmc2V0
SW5Db250YWluZXJOb2RlKCksIGNvdW50LCB0ZXh0KTsKIAotICAgIFBvc2l0aW9uIGVuZFBvc2l0
aW9uID0gUG9zaXRpb24odGV4dE5vZGUucmVsZWFzZSgpLCBzdGFydC5vZmZzZXRJbkNvbnRhaW5l
ck5vZGUoKSArIHRleHQubGVuZ3RoKCkpOworICAgIFBvc2l0aW9uIGVuZFBvc2l0aW9uID0gUG9z
aXRpb24oV1RGTW92ZSh0ZXh0Tm9kZSksIHN0YXJ0Lm9mZnNldEluQ29udGFpbmVyTm9kZSgpICsg
dGV4dC5sZW5ndGgoKSk7CiAgICAgc2V0RW5kaW5nU2VsZWN0aW9uV2l0aG91dFZhbGlkYXRpb24o
c3RhcnQsIGVuZFBvc2l0aW9uKTsKICAgICBpZiAoIXNlbGVjdEluc2VydGVkVGV4dCkKICAgICAg
ICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oZW5kaW5nU2VsZWN0aW9uKCku
dmlzaWJsZUVuZCgpLCBlbmRpbmdTZWxlY3Rpb24oKS5pc0RpcmVjdGlvbmFsKCkpKTsKQEAgLTI0
NSw3ICsyNDUsNyBAQCBQb3NpdGlvbiBJbnNlcnRUZXh0Q29tbWFuZDo6aW5zZXJ0VGFiKGNvbnN0
IFBvc2l0aW9uJiBwb3MpCiAgICAgaWYgKGlzVGFiU3BhblRleHROb2RlKG5vZGUpKSB7CiAgICAg
ICAgIFJlZlB0cjxUZXh0PiB0ZXh0Tm9kZSA9IGRvd25jYXN0PFRleHQ+KG5vZGUpOwogICAgICAg
ICBpbnNlcnRUZXh0SW50b05vZGUodGV4dE5vZGUsIG9mZnNldCwgIlx0Iik7Ci0gICAgICAgIHJl
dHVybiBQb3NpdGlvbih0ZXh0Tm9kZS5yZWxlYXNlKCksIG9mZnNldCArIDEpOworICAgICAgICBy
ZXR1cm4gUG9zaXRpb24oV1RGTW92ZSh0ZXh0Tm9kZSksIG9mZnNldCArIDEpOwogICAgIH0KICAg
ICAKICAgICAvLyBjcmVhdGUgbmV3IHRhYiBzcGFuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1JlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3Bw
CmluZGV4IGI2MWUyZmZhYWNlNDI5NGFkM2QyMzZjYjJjZDYyMDRhOTdkZmJjYjMuLjE2ZjBmNjMx
MDgwOGQ0MDk2MjYwNGY3MTk2ZDNmNjdjYTE2NmI3NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1h
bmQuY3BwCkBAIC00Nyw5ICs0Nyw5IEBAIHZvaWQgUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJl
bkNvbW1hbmQ6OmRvQXBwbHkoKQogCiAgICAgc2l6ZV90IHNpemUgPSBjaGlsZHJlbi5zaXplKCk7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgUmVmUHRy
PE5vZGU+IGNoaWxkID0gV1RGTW92ZShjaGlsZHJlbltpXSk7CisgICAgICAgIGF1dG8gY2hpbGQg
PSBXVEZNb3ZlKGNoaWxkcmVuW2ldKTsKICAgICAgICAgcmVtb3ZlTm9kZShjaGlsZCwgbV9zaG91
bGRBc3N1bWVDb250ZW50SXNBbHdheXNFZGl0YWJsZSk7Ci0gICAgICAgIGluc2VydE5vZGVCZWZv
cmUoY2hpbGQucmVsZWFzZSgpLCBtX25vZGUsIG1fc2hvdWxkQXNzdW1lQ29udGVudElzQWx3YXlz
RWRpdGFibGUpOworICAgICAgICBpbnNlcnROb2RlQmVmb3JlKFdURk1vdmUoY2hpbGQpLCBtX25v
ZGUsIG1fc2hvdWxkQXNzdW1lQ29udGVudElzQWx3YXlzRWRpdGFibGUpOwogICAgIH0KICAgICBy
ZW1vdmVOb2RlKG1fbm9kZSwgbV9zaG91bGRBc3N1bWVDb250ZW50SXNBbHdheXNFZGl0YWJsZSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25D
b21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQuY3BwCmluZGV4IGVkZTg3ZGIzZmZlOWU1YzI4MTAzMWUxMmFmOGY0YWU4ZGUyZjUyNTYuLjQ5
NDQwNWUyNDJmYTc4NmE1N2QyMWQyYzcxZmNhYzgyN2RhNTU1OTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC0yMjksOSAr
MjI5LDkgQEAgdm9pZCBSZXBsYWNlbWVudEZyYWdtZW50OjpyZW1vdmVOb2RlUHJlc2VydmluZ0No
aWxkcmVuKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSkKIAogICAgIHdoaWxlIChSZWZQdHI8Tm9kZT4g
biA9IG5vZGUtPmZpcnN0Q2hpbGQoKSkgewogICAgICAgICByZW1vdmVOb2RlKG4pOwotICAgICAg
ICBpbnNlcnROb2RlQmVmb3JlKG4ucmVsZWFzZSgpLCBub2RlLmdldCgpKTsKKyAgICAgICAgaW5z
ZXJ0Tm9kZUJlZm9yZShXVEZNb3ZlKG4pLCBub2RlLmdldCgpKTsKICAgICB9Ci0gICAgcmVtb3Zl
Tm9kZShub2RlKTsKKyAgICByZW1vdmVOb2RlKFdURk1vdmUobm9kZSkpOwogfQogCiB2b2lkIFJl
cGxhY2VtZW50RnJhZ21lbnQ6OnJlbW92ZU5vZGUoUGFzc1JlZlB0cjxOb2RlPiBub2RlKQpAQCAt
Njc4LDcgKzY3OCw3IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Om1vdmVOb2RlT3V0
T2ZBbmNlc3RvcihQYXNzUmVmUHRyPE5vZGU+IHBycE5vZGUsIFBhCiAgICAgfQogICAgIGlmICgh
YW5jZXN0b3ItPmZpcnN0Q2hpbGQoKSkgewogICAgICAgICBpbnNlcnRlZE5vZGVzLndpbGxSZW1v
dmVOb2RlKGFuY2VzdG9yLmdldCgpKTsKLSAgICAgICAgcmVtb3ZlTm9kZShhbmNlc3Rvci5yZWxl
YXNlKCkpOworICAgICAgICByZW1vdmVOb2RlKFdURk1vdmUoYW5jZXN0b3IpKTsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXgg
NDdlMWFhN2U5ZDdhMTM3ZTgzYzA3ZWM0NzBhNTAyNDQxNDI2ZDJlYy4uN2RlM2Q4MDczMGI2MzMy
YTUzOGUwZjBmZTUwNzY1OGE0YzRlMzM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBE
aXJlY3RvcnlEb2N1bWVudC5jcHAKQEAgLTI4MCw3ICsyODAsNyBAQCBzdGF0aWMgaW5saW5lIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKFNldHRpbmdzKiBz
ZXR0aW5ncwogICAgIAogYm9vbCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6bG9hZERvY3Vt
ZW50VGVtcGxhdGUoKQogewotICAgIHN0YXRpYyBTaGFyZWRCdWZmZXIqIHRlbXBsYXRlRG9jdW1l
bnREYXRhID0gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoZG9jdW1lbnQoKS0+c2V0dGluZ3Mo
KSkucmVsZWFzZSgpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgU2hhcmVkQnVmZmVyKiB0ZW1wbGF0
ZURvY3VtZW50RGF0YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGRvY3VtZW50KCktPnNl
dHRpbmdzKCkpLmxlYWtSZWYoKTsKICAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiBzdG9yaW5nIHRo
ZSBkYXRhLCBpdCB3b3VsZCBiZSBtb3JlIGVmZmljaWVudCBpZiB3ZSBjb3VsZCBwYXJzZSB0aGUg
dGVtcGxhdGUgZGF0YSBpbnRvIHRoZQogICAgIC8vIHRlbXBsYXRlIERvY3VtZW50IG9uY2UsIHN0
b3JlIHRoYXQgZG9jdW1lbnQsIHRoZW4gImNvcHkiIGl0IHdoZW5ldmVyIHdlIGdldCBhbiBGVFAg
ZGlyZWN0b3J5IGxpc3RpbmcuCiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb250RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVu
dC5jcHAKaW5kZXggMzk4ZDE0NTdhNTk5YWZiZDUxMWRiMGFkMTY5OTVjZjZhYmViNWM1OS4uYWFi
NGQ5NDYxM2Q0NGZkY2Q4NWZlOGY5ZDBhNDE0MDM2YmRlNDYzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvbnRFbGVtZW50LmNwcApAQCAtMTk0LDggKzE5NCw4IEBAIHZvaWQgSFRNTEZvbnRF
bGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYKICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gY29sb3JBdHRyKQogICAgICAgICBhZGRI
VE1MQ29sb3JUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUNvbG9yLCB2YWx1ZSk7CiAgICAgZWxz
ZSBpZiAobmFtZSA9PSBmYWNlQXR0cikgewotICAgICAgICBpZiAoUmVmUHRyPENTU1ZhbHVlTGlz
dD4gZm9udEZhY2VWYWx1ZSA9IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlRm9udEZh
Y2VWYWx1ZSh2YWx1ZSkpCi0gICAgICAgICAgICBzdHlsZS5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0
eShDU1NQcm9wZXJ0eUZvbnRGYW1pbHksIGZvbnRGYWNlVmFsdWUucmVsZWFzZSgpKSk7CisgICAg
ICAgIGlmIChhdXRvIGZvbnRGYWNlVmFsdWUgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZUZvbnRGYWNlVmFsdWUodmFsdWUpKQorICAgICAgICAgICAgc3R5bGUuc2V0UHJvcGVydHko
Q1NTUHJvcGVydHkoQ1NTUHJvcGVydHlGb250RmFtaWx5LCBXVEZNb3ZlKGZvbnRGYWNlVmFsdWUp
KSk7CiAgICAgfSBlbHNlCiAgICAgICAgIEhUTUxFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVz
ZW50YXRpb25BdHRyaWJ1dGUobmFtZSwgdmFsdWUsIHN0eWxlKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1FbGVtZW50LmNwcAppbmRleCBhYzkyNzI4MWM1MmRkNWViYTRjZTllODkxMmJh
N2Y4MThhZDkzYWIzLi42MTNmZjJkZjlmZWY1MWFhMTI0MWNkNWQyNTM3NmZjNDcxOTg4M2I0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC0yODQsOCArMjg0LDgg
QEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnByZXBhcmVGb3JTdWJtaXNzaW9uKEV2ZW50KiBldmVu
dCkKIAogICAgIFN0cmluZ1BhaXJWZWN0b3IgY29udHJvbE5hbWVzQW5kVmFsdWVzOwogICAgIGdl
dFRleHRGaWVsZFZhbHVlcyhjb250cm9sTmFtZXNBbmRWYWx1ZXMpOwotICAgIFJlZlB0cjxGb3Jt
U3RhdGU+IGZvcm1TdGF0ZSA9IEZvcm1TdGF0ZTo6Y3JlYXRlKHRoaXMsIGNvbnRyb2xOYW1lc0Fu
ZFZhbHVlcywgJmRvY3VtZW50KCksIE5vdFN1Ym1pdHRlZEJ5SmF2YVNjcmlwdCk7Ci0gICAgZnJh
bWUtPmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChmb3JtU3Rh
dGUucmVsZWFzZSgpKTsKKyAgICBhdXRvIGZvcm1TdGF0ZSA9IEZvcm1TdGF0ZTo6Y3JlYXRlKHRo
aXMsIGNvbnRyb2xOYW1lc0FuZFZhbHVlcywgJmRvY3VtZW50KCksIE5vdFN1Ym1pdHRlZEJ5SmF2
YVNjcmlwdCk7CisgICAgZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoV2lsbFNlbmRT
dWJtaXRFdmVudChXVEZNb3ZlKGZvcm1TdGF0ZSkpOwogCiAgICAgUmVmPEhUTUxGb3JtRWxlbWVu
dD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgLy8gRXZlbnQgaGFuZGxpbmcgY2FuIHJlc3Vs
dCBpbiBtX3Nob3VsZFN1Ym1pdCBiZWNvbWluZyB0cnVlLCByZWdhcmRsZXNzIG9mIGRpc3BhdGNo
RXZlbnQoKSByZXR1cm4gdmFsdWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUYWJsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50
LmNwcAppbmRleCAxZjUyNGZkZThiN2FmNTAxZTg2ZDk2MDk0NDU5OTVmMTZkNTI3MmE2Li44N2Yy
Yjc2MWY4NzE5YWViNWU2N2ViOGFkZTU1ODEwMGMxOGRkNmJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKQEAgLTQzNSwxMiArNDM1LDEyIEBAIHZvaWQgSFRNTFRh
YmxlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29u
c3QgQXRvbWljU3RyCiAKIHN0YXRpYyBTdHlsZVByb3BlcnRpZXMqIGxlYWtCb3JkZXJTdHlsZShD
U1NWYWx1ZUlEIHZhbHVlKQogewotICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBz
dHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOworICAgIGF1dG8gc3R5bGUg
PSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJvcGVy
dHkoQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwgdmFsdWUpOwogICAgIHN0eWxlLT5zZXRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCB2YWx1ZSk7CiAgICAgc3R5bGUtPnNl
dFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCB2YWx1ZSk7CiAgICAgc3R5bGUt
PnNldFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgdmFsdWUpOwotICAgIHJl
dHVybiBzdHlsZS5yZWxlYXNlKCkubGVha1JlZigpOworICAgIHJldHVybiAmc3R5bGUubGVha1Jl
ZigpOwogfQogCiBjb25zdCBTdHlsZVByb3BlcnRpZXMqIEhUTUxUYWJsZUVsZW1lbnQ6OmFkZGl0
aW9uYWxQcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgpIGNvbnN0CkBAIC01MzksNyArNTM5LDcg
QEAgY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBIVE1MVGFibGVFbGVtZW50OjphZGRpdGlvbmFsQ2Vs
bFN0eWxlKCkKIAogc3RhdGljIFN0eWxlUHJvcGVydGllcyogbGVha0dyb3VwQm9yZGVyU3R5bGUo
aW50IHJvd3MpCiB7Ci0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IHN0eWxlID0g
TXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CisgICAgYXV0byBzdHlsZSA9IE11dGFi
bGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogICAgIGlmIChyb3dzKSB7CiAgICAgICAgIHN0
eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBDU1NWYWx1ZVRoaW4p
OwogICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0
aCwgQ1NTVmFsdWVUaGluKTsKQEAgLTU1MSw3ICs1NTEsNyBAQCBzdGF0aWMgU3R5bGVQcm9wZXJ0
aWVzKiBsZWFrR3JvdXBCb3JkZXJTdHlsZShpbnQgcm93cykKICAgICAgICAgc3R5bGUtPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKICAgICAg
ICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgQ1NTVmFs
dWVTb2xpZCk7CiAgICAgfQotICAgIHJldHVybiBzdHlsZS5yZWxlYXNlKCkubGVha1JlZigpOwor
ICAgIHJldHVybiAmc3R5bGUubGVha1JlZigpOwogfQogCiBjb25zdCBTdHlsZVByb3BlcnRpZXMq
IEhUTUxUYWJsZUVsZW1lbnQ6OmFkZGl0aW9uYWxHcm91cFN0eWxlKGJvb2wgcm93cykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4
IDNhYWQ5YjY1NTI1NTJkZjA1ZGQyMDZhZWJmNDJhNmRiZjVkNGFlYTQuLmU2MjJkMGRmYzM5MmI1
ZWNhMmM0NGIxZjIzOTFlNGZhYTdjNDkyNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQg
SFRNTERvY3VtZW50UGFyc2VyOjpydW5TY3JpcHRzRm9yUGF1c2VkVHJlZUJ1aWxkZXIoKQogICAg
ICAgICBBU1NFUlQoIW1fdHJlZUJ1aWxkZXItPmhhc1BhcnNlckJsb2NraW5nU2NyaXB0V29yaygp
KTsKICAgICAgICAgLy8gV2Ugd2lsbCBub3QgaGF2ZSBhIHNjcmlwdFJ1bm5lciB3aGVuIHBhcnNp
bmcgYSBEb2N1bWVudEZyYWdtZW50LgogICAgICAgICBpZiAobV9zY3JpcHRSdW5uZXIpCi0gICAg
ICAgICAgICBtX3NjcmlwdFJ1bm5lci0+ZXhlY3V0ZShzY3JpcHRFbGVtZW50LnJlbGVhc2UoKSwg
c2NyaXB0U3RhcnRQb3NpdGlvbik7CisgICAgICAgICAgICBtX3NjcmlwdFJ1bm5lci0+ZXhlY3V0
ZShXVEZNb3ZlKHNjcmlwdEVsZW1lbnQpLCBzY3JpcHRTdGFydFBvc2l0aW9uKTsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRU
cmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZERhdGFUZXh0VHJhY2su
Y3BwCmluZGV4IDEzYWNhZDExYWVhMDIyYjhlNTBhN2M4MjlhYmY2ZjQ5MWI0ZWNiMGMuLjdiZjI3
YWUyMDA2ZDc5Mzg2Nzg4ZTY3M2RhNjgyMGZlZTA5Yjk4ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9JbmJhbmREYXRhVGV4dFRyYWNrLmNwcApAQCAtNTQsOCArNTQsOCBA
QCBJbmJhbmREYXRhVGV4dFRyYWNrOjp+SW5iYW5kRGF0YVRleHRUcmFjaygpCiAKIHZvaWQgSW5i
YW5kRGF0YVRleHRUcmFjazo6YWRkRGF0YUN1ZShJbmJhbmRUZXh0VHJhY2tQcml2YXRlKiwgY29u
c3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIGNvbnN0IHZvaWQqIGRh
dGEsIHVuc2lnbmVkIGxlbmd0aCkKIHsKLSAgICBSZWZQdHI8RGF0YUN1ZT4gY3VlID0gRGF0YUN1
ZTo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHN0YXJ0LCBlbmQsIGRhdGEsIGxl
bmd0aCk7Ci0gICAgYWRkQ3VlKGN1ZS5yZWxlYXNlKCksIEFTU0VSVF9OT19FWENFUFRJT04pOwor
ICAgIGF1dG8gY3VlID0gRGF0YUN1ZTo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
IHN0YXJ0LCBlbmQsIGRhdGEsIGxlbmd0aCk7CisgICAgYWRkQ3VlKFdURk1vdmUoY3VlKSwgQVNT
RVJUX05PX0VYQ0VQVElPTik7CiB9CiAKICNpZiBFTkFCTEUoREFUQUNVRV9WQUxVRSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3Bw
CmluZGV4IDI0OWYxY2NhNGQ4ZDg0ZTYzZmVlMzFjYzFhNDVlZDJiMzQ2YzI2NWYuLjdkYzAyN2M1
NzkyNmNmMDFhN2JlYjhiZTk1OTFiYWJlNTJjNWQ1ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcApAQCAtMjIxLDEzICsy
MjEsMTMgQEAgdm9pZCBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpuZXdDdWVzUGFyc2VkKCkKICAg
ICBwYXJzZXIoKS5nZXROZXdDdWVzKGN1ZXMpOwogCiAgICAgZm9yIChhdXRvJiBjdWVEYXRhIDog
Y3VlcykgewotICAgICAgICBSZWZQdHI8VlRUQ3VlPiB2dHRDdWUgPSBWVFRDdWU6OmNyZWF0ZSgq
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqY3VlRGF0YSk7CisgICAgICAgIGF1dG8gdnR0Q3Vl
ID0gVlRUQ3VlOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKmN1ZURhdGEpOwog
Ci0gICAgICAgIGlmIChoYXNDdWUodnR0Q3VlLmdldCgpLCBUZXh0VHJhY2tDdWU6Oklnbm9yZUR1
cmF0aW9uKSkgeworICAgICAgICBpZiAoaGFzQ3VlKHZ0dEN1ZS5wdHIoKSwgVGV4dFRyYWNrQ3Vl
OjpJZ25vcmVEdXJhdGlvbikpIHsKICAgICAgICAgICAgIExPRyhNZWRpYSwgIkluYmFuZEdlbmVy
aWNUZXh0VHJhY2s6Om5ld0N1ZXNQYXJzZWQgaWdub3JpbmcgYWxyZWFkeSBhZGRlZCBjdWU6IHN0
YXJ0PSUuMmYsIGVuZD0lLjJmLCBjb250ZW50PVwiJXNcIlxuIiwgdnR0Q3VlLT5zdGFydFRpbWUo
KSwgdnR0Q3VlLT5lbmRUaW1lKCksIHZ0dEN1ZS0+dGV4dCgpLnV0ZjgoKS5kYXRhKCkpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGFkZEN1ZSh2dHRDdWUucmVsZWFz
ZSgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICAgICAgYWRkQ3VlKFdURk1vdmUodnR0Q3Vl
KSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAKaW5kZXggMDlhZWVkNGUx
ZTU4YWE4OGJhYTU4MDcyY2E5ZTMxYmU2ZDhhZjI4NC4uOTliNDk0NTg4MTcyMDM2ODNhNThlNThi
ZjIyM2VlYjY1M2YwMjg4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9J
bmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
SW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcApAQCAtNzYsMTMgKzc2LDEzIEBAIHZvaWQgSW5iYW5k
V2ViVlRUVGV4dFRyYWNrOjpuZXdDdWVzUGFyc2VkKCkKICAgICBwYXJzZXIoKS5nZXROZXdDdWVz
KGN1ZXMpOwogCiAgICAgZm9yIChhdXRvJiBjdWVEYXRhIDogY3VlcykgewotICAgICAgICBSZWZQ
dHI8VlRUQ3VlPiB2dHRDdWUgPSBWVFRDdWU6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLCAqY3VlRGF0YSk7CisgICAgICAgIGF1dG8gdnR0Q3VlID0gVlRUQ3VlOjpjcmVhdGUoKnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKmN1ZURhdGEpOwogCi0gICAgICAgIGlmIChoYXNDdWUo
dnR0Q3VlLmdldCgpLCBUZXh0VHJhY2tDdWU6Oklnbm9yZUR1cmF0aW9uKSkgeworICAgICAgICBp
ZiAoaGFzQ3VlKHZ0dEN1ZS5wdHIoKSwgVGV4dFRyYWNrQ3VlOjpJZ25vcmVEdXJhdGlvbikpIHsK
ICAgICAgICAgICAgIExPRyhNZWRpYSwgIkluYmFuZFdlYlZUVFRleHRUcmFjazo6bmV3Q3Vlc1Bh
cnNlZCBpZ25vcmluZyBhbHJlYWR5IGFkZGVkIGN1ZTogc3RhcnQ9JS4yZiwgZW5kPSUuMmYsIGNv
bnRlbnQ9XCIlc1wiXG4iLCB2dHRDdWUtPnN0YXJ0VGltZSgpLCB2dHRDdWUtPmVuZFRpbWUoKSwg
dnR0Q3VlLT50ZXh0KCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KLSAgICAgICAgYWRkQ3VlKHZ0dEN1ZS5yZWxlYXNlKCksIEFTU0VSVF9OT19FWENFUFRJ
T04pOworICAgICAgICBhZGRDdWUoV1RGTW92ZSh2dHRDdWUpLCBBU1NFUlRfTk9fRVhDRVBUSU9O
KTsKICAgICB9CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RleHRUcmFja0N1ZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2tDdWVMaXN0LmNwcAppbmRleCA2YjM5Mjk5ZGQzOTBhNGI3YzZkNGZiMTNlMDc2MjkwZjJiODFk
NjRhLi5mZmQ4ZWFlNGQ5OTM2NDgwYTZhNWJjMzU5MmZlMDgwYjcxNmUxM2ExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUxpc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlTGlzdC5jcHAKQEAgLTEwMSw5ICsx
MDEsOSBAQCBib29sIFRleHRUcmFja0N1ZUxpc3Q6OmFkZChQYXNzUmVmUHRyPFRleHRUcmFja0N1
ZT4gcHJwQ3VlLCBzaXplX3Qgc3RhcnQsIHNpemVfdAogCiAgICAgc2l6ZV90IGluZGV4ID0gKHN0
YXJ0ICsgZW5kKSAvIDI7CiAgICAgaWYgKGN1ZS0+aXNPcmRlcmVkQmVmb3JlKG1fbGlzdFtpbmRl
eF0uZ2V0KCkpKQotICAgICAgICByZXR1cm4gYWRkKGN1ZS5yZWxlYXNlKCksIHN0YXJ0LCBpbmRl
eCk7CisgICAgICAgIHJldHVybiBhZGQoV1RGTW92ZShjdWUpLCBzdGFydCwgaW5kZXgpOwogCi0g
ICAgcmV0dXJuIGFkZChjdWUucmVsZWFzZSgpLCBpbmRleCArIDEsIGVuZCk7CisgICAgcmV0dXJu
IGFkZChXVEZNb3ZlKGN1ZSksIGluZGV4ICsgMSwgZW5kKTsKIH0KIAogYm9vbCBUZXh0VHJhY2tD
dWVMaXN0OjpyZW1vdmUoVGV4dFRyYWNrQ3VlKiBjdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCAwNTQ4MGNhMjAzYjM4OGQ5YTk1YmQz
NDdjODUzYzViNmE0NWJmNjRjLi5jN2M2ZDZmNGU2OTcwZWFhMWRlYTM1OWYxYjdjZTg2OGIxNWE1
OWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5j
cHAKQEAgLTYzMSw4ICs2MzEsMTAgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0SW5saW5l
U3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2QKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaW5saW5lU3R5bGUgPSBzdHlsZVNoZWV0LT5idWlsZE9iamVjdEZvclN0
eWxlKGVsZW1lbnQtPmNzc29tU3R5bGUoKSk7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkNTUzo6Q1NTU3R5bGU+IGF0dHJpYnV0ZXMgPSBidWlsZE9iamVjdEZvckF0dHJpYnV0ZXNT
dHlsZShlbGVtZW50KTsKLSAgICBhdHRyaWJ1dGVzU3R5bGUgPSBhdHRyaWJ1dGVzID8gYXR0cmli
dXRlcy5yZWxlYXNlKCkgOiBudWxscHRyOworICAgIGlmIChhdXRvIGF0dHJpYnV0ZXMgPSBidWls
ZE9iamVjdEZvckF0dHJpYnV0ZXNTdHlsZShlbGVtZW50KSkKKyAgICAgICAgYXR0cmlidXRlc1N0
eWxlID0gV1RGTW92ZShhdHRyaWJ1dGVzKTsKKyAgICBlbHNlCisgICAgICAgIGF0dHJpYnV0ZXNT
dHlsZSA9IG51bGxwdHI7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldENvbXB1dGVk
U3R5bGVGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NT
Q29tcHV0ZWRTdHlsZVByb3BlcnR5Pj4mIHN0eWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggZDBjM2RhMTdhNmM5Y2NkMGQxZDgyOTEy
ZmMyNTU3NmY2OTgzMTY3Yi4uODdkMDJhY2ZjN2ZlMmE1YzI4YjkxMDQ0YTM2ZGU4ZDdlYjAzOWRj
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
CkBAIC00NjIsOCArNDYyLDggQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cHVzaENoaWxkTm9k
ZXNUb0Zyb250ZW5kKGludCBub2RlSWQsIGludCBkZXB0aCkKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlBy
b3RvY29sOjpET006Ok5vZGU+PiBjaGlsZHJlbiA9IGJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGls
ZHJlbihub2RlLCBkZXB0aCwgbm9kZU1hcCk7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnNl
dENoaWxkTm9kZXMobm9kZUlkLCBjaGlsZHJlbi5yZWxlYXNlKCkpOworICAgIGF1dG8gY2hpbGRy
ZW4gPSBidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4obm9kZSwgZGVwdGgsIG5vZGVNYXAp
OworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5zZXRDaGlsZE5vZGVzKG5vZGVJZCwgV1RGTW92
ZShjaGlsZHJlbikpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaXNjYXJkQmluZGlu
Z3MoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4
ZWREQkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVk
REJBZ2VudC5jcHAKaW5kZXggZWJlZGU5ZGY5YTA1MzcwMTY4ZWE0NGNhZTJmMDRjZTg3OGJlZmE3
OS4uMzM3MDU0NjdjM2I1YzBhMTc5NDZkZmUxNjk2NGViZDdmYTUzNDgyNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCkBA
IC0zMzAsNyArMzMwLDcgQEAgc3RhdGljIFJlZlB0cjxJREJLZXk+IGlkYktleUZyb21JbnNwZWN0
b3JPYmplY3QoSW5zcGVjdG9yT2JqZWN0KiBrZXkpCiAgICAgfSBlbHNlCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgcmV0dXJuIGlkYktleS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGlk
YktleTsKIH0KIAogc3RhdGljIFJlZlB0cjxJREJLZXlSYW5nZT4gaWRiS2V5UmFuZ2VGcm9tS2V5
UmFuZ2UoY29uc3QgSW5zcGVjdG9yT2JqZWN0KiBrZXlSYW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggNDMxNTRiMzk3
NGRhN2E5NzlhMjZkMTgyOWM3MWQ0MTliNjI3Y2Q3NS4uOTE4Njg2ZWEzMmVmMGZlMGJjNDE4NWRi
YjgyYjhmMDcxZjhjNDZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTY4Miw3ICs2ODIsNyBAQCB2b2lkIEluc3BlY3Rv
ck5ldHdvcmtBZ2VudDo6bG9hZFJlc291cmNlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgU3RyaW5nJgogICAgIC8vIEluc3BlY3RvclRocmVhZGFibGVMb2FkZXJDbGllbnQgZGVsZXRl
cyBpdHNlbGYgd2hlbiB0aGUgbG9hZCBjb21wbGV0ZXMuCiAgICAgSW5zcGVjdG9yVGhyZWFkYWJs
ZUxvYWRlckNsaWVudCogaW5zcGVjdG9yVGhyZWFkYWJsZUxvYWRlckNsaWVudCA9IG5ldyBJbnNw
ZWN0b3JUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KGNhbGxiYWNrLmNvcHlSZWYoKSk7CiAKLSAgICBS
ZWZQdHI8RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyPiBsb2FkZXIgPSBEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI6OmNyZWF0ZSgqZG9jdW1lbnQsICppbnNwZWN0b3JUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50LCByZXF1ZXN0LCBvcHRpb25zKTsKKyAgICBhdXRvIGxvYWRlciA9IERvY3VtZW50VGhyZWFk
YWJsZUxvYWRlcjo6Y3JlYXRlKCpkb2N1bWVudCwgKmluc3BlY3RvclRocmVhZGFibGVMb2FkZXJD
bGllbnQsIHJlcXVlc3QsIG9wdGlvbnMpOwogICAgIGlmICghbG9hZGVyKSB7CiAgICAgICAgIGlu
c3BlY3RvclRocmVhZGFibGVMb2FkZXJDbGllbnQtPmRpZEZhaWxMb2FkZXJDcmVhdGlvbigpOwog
ICAgICAgICByZXR1cm47CkBAIC02OTIsNyArNjkyLDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3Jr
QWdlbnQ6OmxvYWRSZXNvdXJjZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYKICAgICBpZiAoIWNhbGxiYWNrLT5pc0FjdGl2ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpbnNwZWN0b3JUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LT5zZXRMb2FkZXIobG9hZGVyLnJlbGVh
c2UoKSk7CisgICAgaW5zcGVjdG9yVGhyZWFkYWJsZUxvYWRlckNsaWVudC0+c2V0TG9hZGVyKFdU
Rk1vdmUobG9hZGVyKSk7CiB9CiAKIHN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFn
ZTo6U2VhcmNoUmVzdWx0PiBidWlsZE9iamVjdEZvclNlYXJjaFJlc3VsdChjb25zdCBTdHJpbmcm
IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCwgaW50
IG1hdGNoZXNDb3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JT
dHlsZVNoZWV0LmNwcAppbmRleCA2ZDU3M2NlOWMxMWZjNWQyM2ZlNzc4ZDU2ZjczNDEzM2E0MjU4
YjMzLi43ZGU5OGFhZDI5ODhiNzZhNmU1NjZiNDAwZWMxZGIwNDc1NWI5ZTgzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC05MjUs
NyArOTI1LDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U2VsZWN0b3JMaXN0PiBJ
bnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9iamVjdEZvclMKICAgICAgICAgICAgIHNlbGVjdG9y
cy0+YWRkSXRlbShidWlsZE9iamVjdEZvclNlbGVjdG9yKHNlbGVjdG9yLCBlbGVtZW50KSk7CiAg
ICAgfQogICAgIGF1dG8gcmVzdWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTZWxlY3Rv
ckxpc3Q6OmNyZWF0ZSgpCi0gICAgICAgIC5zZXRTZWxlY3RvcnMoc2VsZWN0b3JzLnJlbGVhc2Uo
KSkKKyAgICAgICAgLnNldFNlbGVjdG9ycyhXVEZNb3ZlKHNlbGVjdG9ycykpCiAgICAgICAgIC5z
ZXRUZXh0KHNlbGVjdG9yVGV4dCkKICAgICAgICAgLnJlbGVhc2UoKTsKICAgICBpZiAoc291cmNl
RGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCmluZGV4IGJlYzEy
MjNkNzY2Y2EyYjczMGQ4ZTkwMWM4NWI2MzJmMDMwMGQ2ZTMuLjQxMjA2MDk4MzBkNDM1ZjY0NThk
ODZmMGEyY2Y3OWNmNjY3YTY0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
b3JtU3VibWlzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNz
aW9uLmNwcApAQCAtMjM4LDggKzIzOCw4IEBAIFJlZjxGb3JtU3VibWlzc2lvbj4gRm9ybVN1Ym1p
c3Npb246OmNyZWF0ZShIVE1MRm9ybUVsZW1lbnQqIGZvcm0sIGNvbnN0IEF0dHJpYnV0CiAgICAg
Zm9ybURhdGEtPnNldElkZW50aWZpZXIoZ2VuZXJhdGVGb3JtRGF0YUlkZW50aWZpZXIoKSk7CiAg
ICAgZm9ybURhdGEtPnNldENvbnRhaW5zUGFzc3dvcmREYXRhKGNvbnRhaW5zUGFzc3dvcmREYXRh
KTsKICAgICBTdHJpbmcgdGFyZ2V0T3JCYXNlVGFyZ2V0ID0gY29waWVkQXR0cmlidXRlcy50YXJn
ZXQoKS5pc0VtcHR5KCkgPyBkb2N1bWVudC5iYXNlVGFyZ2V0KCkgOiBjb3BpZWRBdHRyaWJ1dGVz
LnRhcmdldCgpOwotICAgIFJlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSA9IEZvcm1TdGF0ZTo6
Y3JlYXRlKGZvcm0sIGZvcm1WYWx1ZXMsICZkb2N1bWVudCwgdHJpZ2dlcik7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRm9ybVN1Ym1pc3Npb24oY29waWVkQXR0cmlidXRlcy5tZXRob2QoKSwg
YWN0aW9uVVJMLCB0YXJnZXRPckJhc2VUYXJnZXQsIGVuY29kaW5nVHlwZSwgZm9ybVN0YXRlLnJl
bGVhc2UoKSwgZm9ybURhdGEucmVsZWFzZSgpLCBib3VuZGFyeSwgbG9ja0hpc3RvcnksIGV2ZW50
KSk7CisgICAgYXV0byBmb3JtU3RhdGUgPSBGb3JtU3RhdGU6OmNyZWF0ZShmb3JtLCBmb3JtVmFs
dWVzLCAmZG9jdW1lbnQsIHRyaWdnZXIpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvcm1T
dWJtaXNzaW9uKGNvcGllZEF0dHJpYnV0ZXMubWV0aG9kKCksIGFjdGlvblVSTCwgdGFyZ2V0T3JC
YXNlVGFyZ2V0LCBlbmNvZGluZ1R5cGUsIFdURk1vdmUoZm9ybVN0YXRlKSwgV1RGTW92ZShmb3Jt
RGF0YSksIGJvdW5kYXJ5LCBsb2NrSGlzdG9yeSwgZXZlbnQpKTsKIH0KIAogVVJMIEZvcm1TdWJt
aXNzaW9uOjpyZXF1ZXN0VVJMKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCmluZGV4IGQ4NmE0NDU1YmY3ZjFmZjNjNjM4YWY2ZTc0YjRhOTZjNTg4NGM2NWUuLmQyYmUy
MzJlMDZkZmExZTc4YWNlYzA4NDNjZGFlZWU0Njg2ZDRhZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcApAQCAtODc0LDkgKzg3NCw5IEBAIHZvaWQgRnJhbWVMb2FkZXI6Omxv
YWRVUkxJbnRvQ2hpbGRGcmFtZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcmVy
LCBGCiAgICAgQVNTRVJUKGNoaWxkRnJhbWUpOwogCiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8
fCBFTkFCTEUoTUhUTUwpCi0gICAgUmVmUHRyPEFyY2hpdmU+IHN1YmZyYW1lQXJjaGl2ZSA9IGFj
dGl2ZURvY3VtZW50TG9hZGVyKCktPnBvcEFyY2hpdmVGb3JTdWJmcmFtZShjaGlsZEZyYW1lLT50
cmVlKCkudW5pcXVlTmFtZSgpLCB1cmwpOworICAgIGF1dG8gc3ViZnJhbWVBcmNoaXZlID0gYWN0
aXZlRG9jdW1lbnRMb2FkZXIoKS0+cG9wQXJjaGl2ZUZvclN1YmZyYW1lKGNoaWxkRnJhbWUtPnRy
ZWUoKS51bmlxdWVOYW1lKCksIHVybCk7CiAgICAgaWYgKHN1YmZyYW1lQXJjaGl2ZSkgewotICAg
ICAgICBjaGlsZEZyYW1lLT5sb2FkZXIoKS5sb2FkQXJjaGl2ZShzdWJmcmFtZUFyY2hpdmUucmVs
ZWFzZSgpKTsKKyAgICAgICAgY2hpbGRGcmFtZS0+bG9hZGVyKCkubG9hZEFyY2hpdmUoV1RGTW92
ZShzdWJmcmFtZUFyY2hpdmUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZiAvLyBF
TkFCTEUoV0VCX0FSQ0hJVkUpCkBAIC0xMjE0LDcgKzEyMTQsNyBAQCB2b2lkIEZyYW1lTG9hZGVy
Ojpsb2FkVVJMKGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIGZyYW1lTG9hZFJlcXVlc3QsIGNvbnN0
IFN0cmluZwogICAgIGlmICh0YXJnZXRGcmFtZSAmJiB0YXJnZXRGcmFtZSAhPSAmbV9mcmFtZSkg
ewogICAgICAgICBGcmFtZUxvYWRSZXF1ZXN0IG5ld0ZyYW1lTG9hZFJlcXVlc3QoZnJhbWVMb2Fk
UmVxdWVzdCk7CiAgICAgICAgIG5ld0ZyYW1lTG9hZFJlcXVlc3Quc2V0RnJhbWVOYW1lKCJfc2Vs
ZiIpOwotICAgICAgICB0YXJnZXRGcmFtZS0+bG9hZGVyKCkubG9hZFVSTChuZXdGcmFtZUxvYWRS
ZXF1ZXN0LCByZWZlcnJlciwgbmV3TG9hZFR5cGUsIGV2ZW50LCBmb3JtU3RhdGUucmVsZWFzZSgp
KTsKKyAgICAgICAgdGFyZ2V0RnJhbWUtPmxvYWRlcigpLmxvYWRVUkwobmV3RnJhbWVMb2FkUmVx
dWVzdCwgcmVmZXJyZXIsIG5ld0xvYWRUeXBlLCBldmVudCwgV1RGTW92ZShmb3JtU3RhdGUpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTIyNSw3ICsxMjI1LDcgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6bG9hZFVSTChjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiBmcmFtZUxvYWRSZXF1ZXN0
LCBjb25zdCBTdHJpbmcKIAogICAgIGlmICghdGFyZ2V0RnJhbWUgJiYgIWZyYW1lTmFtZS5pc0Vt
cHR5KCkpIHsKICAgICAgICAgYWN0aW9uID0gYWN0aW9uLmNvcHlXaXRoU2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeShzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9BcHBseShtX2ZyYW1l
LCBmcmFtZUxvYWRSZXF1ZXN0LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSkpOwotICAg
ICAgICBwb2xpY3lDaGVja2VyKCkuY2hlY2tOZXdXaW5kb3dQb2xpY3koYWN0aW9uLCByZXF1ZXN0
LCBmb3JtU3RhdGUucmVsZWFzZSgpLCBmcmFtZU5hbWUsIFt0aGlzLCBhbGxvd05hdmlnYXRpb25U
b0ludmFsaWRVUkwsIG9wZW5lclBvbGljeV0oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFt
ZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBib29sIHNob3VsZENvbnRpbnVlKSB7
CisgICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05ld1dpbmRvd1BvbGljeShhY3Rpb24sIHJl
cXVlc3QsIFdURk1vdmUoZm9ybVN0YXRlKSwgZnJhbWVOYW1lLCBbdGhpcywgYWxsb3dOYXZpZ2F0
aW9uVG9JbnZhbGlkVVJMLCBvcGVuZXJQb2xpY3ldKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFt
ZU5hbWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgYm9vbCBzaG91bGRDb250aW51
ZSkgewogICAgICAgICAgICAgY29udGludWVMb2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3kocmVxdWVz
dCwgZm9ybVN0YXRlLCBmcmFtZU5hbWUsIGFjdGlvbiwgc2hvdWxkQ29udGludWUsIGFsbG93TmF2
aWdhdGlvblRvSW52YWxpZFVSTCwgb3BlbmVyUG9saWN5KTsKICAgICAgICAgfSk7CiAgICAgICAg
IHJldHVybjsKQEAgLTEyNDQsNyArMTI0NCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwo
Y29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVMb2FkUmVxdWVzdCwgY29uc3QgU3RyaW5nCiAg
ICAgICAgIG9sZERvY3VtZW50TG9hZGVyLT5zZXRMYXN0Q2hlY2tlZFJlcXVlc3QoUmVzb3VyY2VS
ZXF1ZXN0KCkpOwogICAgICAgICBwb2xpY3lDaGVja2VyKCkuc3RvcENoZWNrKCk7CiAgICAgICAg
IHBvbGljeUNoZWNrZXIoKS5zZXRMb2FkVHlwZShuZXdMb2FkVHlwZSk7Ci0gICAgICAgIHBvbGlj
eUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Qb2xpY3kocmVxdWVzdCwgZmFsc2UgLyogZGlkUmVj
ZWl2ZVJlZGlyZWN0UmVzcG9uc2UgKi8sIG9sZERvY3VtZW50TG9hZGVyLmdldCgpLCBmb3JtU3Rh
dGUucmVsZWFzZSgpLCBbdGhpc10oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQYXNz
UmVmUHRyPEZvcm1TdGF0ZT4sIGJvb2wgc2hvdWxkQ29udGludWUpIHsKKyAgICAgICAgcG9saWN5
Q2hlY2tlcigpLmNoZWNrTmF2aWdhdGlvblBvbGljeShyZXF1ZXN0LCBmYWxzZSAvKiBkaWRSZWNl
aXZlUmVkaXJlY3RSZXNwb25zZSAqLywgb2xkRG9jdW1lbnRMb2FkZXIuZ2V0KCksIFdURk1vdmUo
Zm9ybVN0YXRlKSwgW3RoaXNdKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFzc1Jl
ZlB0cjxGb3JtU3RhdGU+LCBib29sIHNob3VsZENvbnRpbnVlKSB7CiAgICAgICAgICAgICBjb250
aW51ZUZyYWdtZW50U2Nyb2xsQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KHJlcXVlc3QsIHNob3VsZENv
bnRpbnVlKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKQEAgLTEyNTIsNyArMTI1Miw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwoY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgZnJh
bWVMb2FkUmVxdWVzdCwgY29uc3QgU3RyaW5nCiAKICAgICAvLyBtdXN0IGdyYWIgdGhpcyBub3cs
IHNpbmNlIHRoaXMgbG9hZCBtYXkgc3RvcCB0aGUgcHJldmlvdXMgbG9hZCBhbmQgY2xlYXIgdGhp
cyBmbGFnCiAgICAgYm9vbCBpc1JlZGlyZWN0ID0gbV9xdWlja1JlZGlyZWN0Q29taW5nOwotICAg
IGxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0LCBhY3Rpb24sIGxvY2tIaXN0b3J5LCBu
ZXdMb2FkVHlwZSwgZm9ybVN0YXRlLnJlbGVhc2UoKSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlk
VVJMKTsKKyAgICBsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdCwgYWN0aW9uLCBsb2Nr
SGlzdG9yeSwgbmV3TG9hZFR5cGUsIFdURk1vdmUoZm9ybVN0YXRlKSwgYWxsb3dOYXZpZ2F0aW9u
VG9JbnZhbGlkVVJMKTsKICAgICBpZiAoaXNSZWRpcmVjdCkgewogICAgICAgICBtX3F1aWNrUmVk
aXJlY3RDb21pbmcgPSBmYWxzZTsKICAgICAgICAgaWYgKG1fcHJvdmlzaW9uYWxEb2N1bWVudExv
YWRlcikKQEAgLTI3MDIsMTEgKzI3MDIsMTEgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RS
ZXF1ZXN0KGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYKICAg
ICBpZiAoIWZyYW1lTmFtZS5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gVGhlIHNlYXJjaCBmb3Ig
YSB0YXJnZXQgZnJhbWUgaXMgZG9uZSBlYXJsaWVyIGluIHRoZSBjYXNlIG9mIGZvcm0gc3VibWlz
c2lvbi4KICAgICAgICAgaWYgKEZyYW1lKiB0YXJnZXRGcmFtZSA9IGZvcm1TdGF0ZSA/IDAgOiBm
aW5kRnJhbWVGb3JOYXZpZ2F0aW9uKGZyYW1lTmFtZSkpIHsKLSAgICAgICAgICAgIHRhcmdldEZy
YW1lLT5sb2FkZXIoKS5sb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24od29ya2luZ1Jlc291cmNlUmVx
dWVzdCwgYWN0aW9uLCBsb2NrSGlzdG9yeSwgbG9hZFR5cGUsIGZvcm1TdGF0ZS5yZWxlYXNlKCks
IGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCk7CisgICAgICAgICAgICB0YXJnZXRGcmFtZS0+
bG9hZGVyKCkubG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKHdvcmtpbmdSZXNvdXJjZVJlcXVlc3Qs
IGFjdGlvbiwgbG9ja0hpc3RvcnksIGxvYWRUeXBlLCBXVEZNb3ZlKGZvcm1TdGF0ZSksIGFsbG93
TmF2aWdhdGlvblRvSW52YWxpZFVSTCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICBwb2xpY3lDaGVja2VyKCkuY2hlY2tOZXdXaW5kb3dQb2xpY3koYWN0aW9uLCB3
b3JraW5nUmVzb3VyY2VSZXF1ZXN0LCBmb3JtU3RhdGUucmVsZWFzZSgpLCBmcmFtZU5hbWUsIFt0
aGlzLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIG9wZW5lclBvbGljeV0oY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlLCBj
b25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBi
b29sIHNob3VsZENvbnRpbnVlKSB7CisgICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05ld1dp
bmRvd1BvbGljeShhY3Rpb24sIHdvcmtpbmdSZXNvdXJjZVJlcXVlc3QsIFdURk1vdmUoZm9ybVN0
YXRlKSwgZnJhbWVOYW1lLCBbdGhpcywgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBvcGVu
ZXJQb2xpY3ldKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFzc1JlZlB0cjxGb3Jt
U3RhdGU+IGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IE5hdmlnYXRp
b25BY3Rpb24mIGFjdGlvbiwgYm9vbCBzaG91bGRDb250aW51ZSkgewogICAgICAgICAgICAgY29u
dGludWVMb2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3kocmVxdWVzdCwgZm9ybVN0YXRlLCBmcmFtZU5h
bWUsIGFjdGlvbiwgc2hvdWxkQ29udGludWUsIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwg
b3BlbmVyUG9saWN5KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKQEAgLTI3MTQsNyAr
MjcxNCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdChjb25zdCBGcmFtZUxv
YWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmCiAKICAgICAvLyBtdXN0IGdyYWIgdGhp
cyBub3csIHNpbmNlIHRoaXMgbG9hZCBtYXkgc3RvcCB0aGUgcHJldmlvdXMgbG9hZCBhbmQgY2xl
YXIgdGhpcyBmbGFnCiAgICAgYm9vbCBpc1JlZGlyZWN0ID0gbV9xdWlja1JlZGlyZWN0Q29taW5n
OwotICAgIGxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbih3b3JraW5nUmVzb3VyY2VSZXF1ZXN0LCBh
Y3Rpb24sIGxvY2tIaXN0b3J5LCBsb2FkVHlwZSwgZm9ybVN0YXRlLnJlbGVhc2UoKSwgYWxsb3dO
YXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKKyAgICBsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24od29y
a2luZ1Jlc291cmNlUmVxdWVzdCwgYWN0aW9uLCBsb2NrSGlzdG9yeSwgbG9hZFR5cGUsIFdURk1v
dmUoZm9ybVN0YXRlKSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKICAgICBpZiAoaXNS
ZWRpcmVjdCkgewogICAgICAgICBtX3F1aWNrUmVkaXJlY3RDb21pbmcgPSBmYWxzZTsKICAgICAg
ICAgaWYgKG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Byb2dyZXNzVHJhY2tlci5jcHAKaW5kZXggZDU2Y2EwNWRiOTkwYjMwYTZiMDdkMTJmYjJjMDll
OTk2Yjc5NzIwZi4uNzUyZWVmYzM3ODA2ODRkM2I1NWM2NDllMzAwYjYzOGQ4NjNjZDIwZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKQEAgLTE2OCw3ICsxNjgs
NyBAQCB2b2lkIFByb2dyZXNzVHJhY2tlcjo6ZmluYWxQcm9ncmVzc0NvbXBsZXRlKCkKIHsKICAg
ICBMT0coUHJvZ3Jlc3MsICJGaW5hbCBwcm9ncmVzcyBjb21wbGV0ZSAoJXApIiwgdGhpcyk7CiAg
ICAgCi0gICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9IG1fb3JpZ2luYXRpbmdQcm9ncmVzc0ZyYW1l
LnJlbGVhc2UoKTsKKyAgICBhdXRvIGZyYW1lID0gV1RGTW92ZShtX29yaWdpbmF0aW5nUHJvZ3Jl
c3NGcmFtZSk7CiAgICAgCiAgICAgLy8gQmVmb3JlIHJlc2V0dGluZyBwcm9ncmVzcyB2YWx1ZSBi
ZSBzdXJlIHRvIHNlbmQgY2xpZW50IGEgbGVhc3Qgb25lIG5vdGlmaWNhdGlvbgogICAgIC8vIHdp
dGggZmluYWwgcHJvZ3Jlc3MgdmFsdWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDU5NGNjZTZjYTYz
YTdhOTU1M2YwYTEzY2I4NzU1NmYwNTlhYWY3NGEuLjM3YWM3NWRiZjUwMWM0OGI2NmQwNWJlNDU5
NTNhNTYxN2NmOTJlMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC0zNjksNyArMzY5LDcgQEAgdm9p
ZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpc2Fzc29jaWF0ZURvY3VtZW50TG9hZGVyKERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIpCiAKICAgICAvLyBSZWxlYXNlIG91ciByZWZlcmVuY2UgdG8gdGhl
IG5ld2VzdCBjYWNoZS4gVGhpcyBjb3VsZCBjYXVzZSB1cyB0byBiZSBkZWxldGVkLgogICAgIC8v
IEFueSBvbmdvaW5nIHVwZGF0ZXMgd2lsbCBiZSBzdG9wcGVkIGZyb20gZGVzdHJ1Y3Rvci4KLSAg
ICBtX25ld2VzdENhY2hlLnJlbGVhc2UoKTsKKyAgICBtX25ld2VzdENhY2hlID0gbnVsbHB0cjsK
IH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNhY2hlRGVzdHJveWVkKEFwcGxpY2F0
aW9uQ2FjaGUqIGNhY2hlKQpAQCAtNTk0LDcgKzU5NCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNo
ZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGRvdWJsZSBm
aW5pCiAgICAgCiAgICAgQVNTRVJUKG1fY2FjaGVCZWluZ1VwZGF0ZWQpOwogCi0gICAgbV9jYWNo
ZUJlaW5nVXBkYXRlZC0+YWRkUmVzb3VyY2UobV9jdXJyZW50UmVzb3VyY2UucmVsZWFzZSgpKTsK
KyAgICBtX2NhY2hlQmVpbmdVcGRhdGVkLT5hZGRSZXNvdXJjZShXVEZNb3ZlKG1fY3VycmVudFJl
c291cmNlKSk7CiAgICAgbV9jdXJyZW50SGFuZGxlID0gbnVsbHB0cjsKIAogICAgIC8vIFdoaWxl
IGRvd25sb2FkaW5nIGNoZWNrIHRvIHNlZSBpZiB3ZSBoYXZlIGV4Y2VlZGVkIHRoZSBhdmFpbGFi
bGUgcXVvdGEuCkBAIC04NjgsNyArODY4LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6
OmNoZWNrSWZMb2FkSXNDb21wbGV0ZSgpCiAKICAgICAgICAgQVNTRVJUKG1fY2FjaGVCZWluZ1Vw
ZGF0ZWQpOwogICAgICAgICBpZiAobV9tYW5pZmVzdFJlc291cmNlKQotICAgICAgICAgICAgbV9j
YWNoZUJlaW5nVXBkYXRlZC0+c2V0TWFuaWZlc3RSZXNvdXJjZShtX21hbmlmZXN0UmVzb3VyY2Uu
cmVsZWFzZSgpKTsKKyAgICAgICAgICAgIG1fY2FjaGVCZWluZ1VwZGF0ZWQtPnNldE1hbmlmZXN0
UmVzb3VyY2UoV1RGTW92ZShtX21hbmlmZXN0UmVzb3VyY2UpKTsKICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICAvLyBXZSBjYW4gZ2V0IGhlcmUgYXMgYSByZXN1bHQgb2YgcmV0cnlpbmcgdGhl
IENvbXBsZXRlIHN0ZXAsIGZvbGxvd2luZwogICAgICAgICAgICAgLy8gYSBmYWlsdXJlIG9mIHRo
ZSBjYWNoZSBzdG9yYWdlIHRvIHNhdmUgdGhlIG5ld2VzdCBjYWNoZSBkdWUgdG8gaGl0dGluZwpA
QCAtODg4LDcgKzg4OCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpjaGVja0lmTG9h
ZElzQ29tcGxldGUoKQogICAgICAgICAgICAgZGlkUmVhY2hPcmlnaW5RdW90YSh0b3RhbFNwYWNl
TmVlZGVkKTsKIAogICAgICAgICBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6RmFpbHVyZVJlYXNv
biBmYWlsdXJlUmVhc29uOwotICAgICAgICBzZXROZXdlc3RDYWNoZShtX2NhY2hlQmVpbmdVcGRh
dGVkLnJlbGVhc2UoKSk7CisgICAgICAgIHNldE5ld2VzdENhY2hlKFdURk1vdmUobV9jYWNoZUJl
aW5nVXBkYXRlZCkpOwogICAgICAgICBpZiAobV9zdG9yYWdlLT5zdG9yZU5ld2VzdENhY2hlKHRo
aXMsIG9sZE5ld2VzdENhY2hlLmdldCgpLCBmYWlsdXJlUmVhc29uKSkgewogICAgICAgICAgICAg
Ly8gTmV3IGNhY2hlIHN0b3JlZCwgbm93IHJlbW92ZSB0aGUgb2xkIGNhY2hlLgogICAgICAgICAg
ICAgaWYgKG9sZE5ld2VzdENhY2hlKQpAQCAtOTE5LDEwICs5MTksMTAgQEAgdm9pZCBBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OmNoZWNrSWZMb2FkSXNDb21wbGV0ZSgpCiAgICAgICAgICAgICAgICAg
Ly8gc2F2ZSB0aGUgbmV3IGNhY2hlLgogCiAgICAgICAgICAgICAgICAgLy8gU2F2ZSBhIHJlZmVy
ZW5jZSB0byB0aGUgbmV3IGNhY2hlLgotICAgICAgICAgICAgICAgIG1fY2FjaGVCZWluZ1VwZGF0
ZWQgPSBtX25ld2VzdENhY2hlLnJlbGVhc2UoKTsKKyAgICAgICAgICAgICAgICBtX2NhY2hlQmVp
bmdVcGRhdGVkID0gV1RGTW92ZShtX25ld2VzdENhY2hlKTsKICAgICAgICAgICAgICAgICBpZiAo
b2xkTmV3ZXN0Q2FjaGUpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gUmVpbnN0YXRlIHRoZSBv
bGROZXdlc3RDYWNoZS4KLSAgICAgICAgICAgICAgICAgICAgc2V0TmV3ZXN0Q2FjaGUob2xkTmV3
ZXN0Q2FjaGUucmVsZWFzZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0TmV3ZXN0Q2FjaGUo
V1RGTW92ZShvbGROZXdlc3RDYWNoZSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICBzY2hlZHVsZVJlYWNoZWRNYXhBcHBDYWNoZVNpemVDYWxsYmFjaygpOwogICAgICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTk0NSw3ICs5NDUsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVH
cm91cDo6Y2hlY2tJZkxvYWRJc0NvbXBsZXRlKCkKICAgICAgICAgICAgIC8vIFJlaW5zdGF0ZSB0
aGUgb2xkTmV3ZXN0Q2FjaGUsIGlmIHRoZXJlIHdhcyBvbmUuCiAgICAgICAgICAgICBpZiAob2xk
TmV3ZXN0Q2FjaGUpIHsKICAgICAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgZGlzY2FyZCB0aGUg
ZmFpbGVkIG5ldyBjYWNoZS4KLSAgICAgICAgICAgICAgICBzZXROZXdlc3RDYWNoZShvbGROZXdl
c3RDYWNoZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgICAgIHNldE5ld2VzdENhY2hlKFdURk1v
dmUob2xkTmV3ZXN0Q2FjaGUpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgLy8gV2UgbXVzdCBoYXZlIGJlZW4gZGVsZXRlZCBieSB0aGUgbGFzdCBjYWxsIHRvIGRpc2Fz
c29jaWF0ZURvY3VtZW50TG9hZGVyKCkuCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHAKaW5kZXggNTA0ZGE3ZmZjNGM1ZmNlZDY1YWQ5MjE4NDVlMzc5ZGM0ODY1NDEy
Yy4uMGRkYTU2NDVkYWFmNDdiNzEyZjA0MGZmM2JlYmZmOWI3ZGM1YmU1MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UuY3BwCkBAIC0xMjEsMTQgKzEyMSwxNCBAQCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGVHcm91cChjb25zdCBVUkwmIG1hbmlmZQog
ICAgIAogICAgIHVuc2lnbmVkIG5ld2VzdENhY2hlU3RvcmFnZUlEID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHN0YXRlbWVudC5nZXRDb2x1bW5JbnQ2NCgyKSk7CiAKLSAgICBSZWZQdHI8QXBwbGlj
YXRpb25DYWNoZT4gY2FjaGUgPSBsb2FkQ2FjaGUobmV3ZXN0Q2FjaGVTdG9yYWdlSUQpOworICAg
IGF1dG8gY2FjaGUgPSBsb2FkQ2FjaGUobmV3ZXN0Q2FjaGVTdG9yYWdlSUQpOwogICAgIGlmICgh
Y2FjaGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAKICAgICBBcHBsaWNhdGlv
bkNhY2hlR3JvdXAqIGdyb3VwID0gbmV3IEFwcGxpY2F0aW9uQ2FjaGVHcm91cCgqdGhpcywgbWFu
aWZlc3RVUkwpOwogICAgICAgCiAgICAgZ3JvdXAtPnNldFN0b3JhZ2VJRChzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oc3RhdGVtZW50LmdldENvbHVtbkludDY0KDApKSk7Ci0gICAgZ3JvdXAtPnNldE5l
d2VzdENhY2hlKGNhY2hlLnJlbGVhc2UoKSk7CisgICAgZ3JvdXAtPnNldE5ld2VzdENhY2hlKFdU
Rk1vdmUoY2FjaGUpKTsKIAogICAgIHJldHVybiBncm91cDsKIH0gICAgCkBAIC0yMzksNyArMjM5
LDcgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2Fj
aGVHcm91cEZvclVSTChjb25zdCBVUkwmIHVybCkKICAgICAgICAgLy8gV2UgZm91bmQgYSBjYWNo
ZSBncm91cCB0aGF0IG1hdGNoZXMuIE5vdyBjaGVjayBpZiB0aGUgbmV3ZXN0IGNhY2hlIGhhcyBh
IHJlc291cmNlIHdpdGgKICAgICAgICAgLy8gYSBtYXRjaGluZyBVUkwuCiAgICAgICAgIHVuc2ln
bmVkIG5ld2VzdENhY2hlSUQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhdGVtZW50LmdldENv
bHVtbkludDY0KDIpKTsKLSAgICAgICAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IGNhY2hlID0g
bG9hZENhY2hlKG5ld2VzdENhY2hlSUQpOworICAgICAgICBhdXRvIGNhY2hlID0gbG9hZENhY2hl
KG5ld2VzdENhY2hlSUQpOwogICAgICAgICBpZiAoIWNhY2hlKQogICAgICAgICAgICAgY29udGlu
dWU7CiAKQEAgLTI1Miw3ICsyNTIsNyBAQCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlOjpjYWNoZUdyb3VwRm9yVVJMKGNvbnN0IFVSTCYgdXJsKQogICAgICAg
ICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGdyb3VwID0gbmV3IEFwcGxpY2F0aW9uQ2FjaGVHcm91
cCgqdGhpcywgbWFuaWZlc3RVUkwpOwogICAgICAgICAKICAgICAgICAgZ3JvdXAtPnNldFN0b3Jh
Z2VJRChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhdGVtZW50LmdldENvbHVtbkludDY0KDApKSk7
Ci0gICAgICAgIGdyb3VwLT5zZXROZXdlc3RDYWNoZShjYWNoZS5yZWxlYXNlKCkpOworICAgICAg
ICBncm91cC0+c2V0TmV3ZXN0Q2FjaGUoV1RGTW92ZShjYWNoZSkpOwogICAgICAgICAKICAgICAg
ICAgbV9jYWNoZXNJbk1lbW9yeS5zZXQoZ3JvdXAtPm1hbmlmZXN0VVJMKCksIGdyb3VwKTsKICAg
ICAgICAgCkBAIC0zMDksNyArMzA5LDcgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6ZmFsbGJhY2tDYWNoZUdyb3VwRm9yVVJMKGNvbnN0IFUKICAgICAg
ICAgLy8gV2UgZm91bmQgYSBjYWNoZSBncm91cCB0aGF0IG1hdGNoZXMuIE5vdyBjaGVjayBpZiB0
aGUgbmV3ZXN0IGNhY2hlIGhhcyBhIHJlc291cmNlIHdpdGgKICAgICAgICAgLy8gYSBtYXRjaGlu
ZyBmYWxsYmFjayBuYW1lc3BhY2UuCiAgICAgICAgIHVuc2lnbmVkIG5ld2VzdENhY2hlSUQgPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhdGVtZW50LmdldENvbHVtbkludDY0KDIpKTsKLSAgICAg
ICAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IGNhY2hlID0gbG9hZENhY2hlKG5ld2VzdENhY2hl
SUQpOworICAgICAgICBhdXRvIGNhY2hlID0gbG9hZENhY2hlKG5ld2VzdENhY2hlSUQpOwogCiAg
ICAgICAgIFVSTCBmYWxsYmFja1VSTDsKICAgICAgICAgaWYgKGNhY2hlLT5pc1VSTEluT25saW5l
V2hpdGVsaXN0KHVybCkpCkBAIC0zMjIsNyArMzIyLDcgQEAgQXBwbGljYXRpb25DYWNoZUdyb3Vw
KiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZmFsbGJhY2tDYWNoZUdyb3VwRm9yVVJMKGNvbnN0
IFUKICAgICAgICAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBncm91cCA9IG5ldyBBcHBsaWNhdGlv
bkNhY2hlR3JvdXAoKnRoaXMsIG1hbmlmZXN0VVJMKTsKICAgICAgICAgCiAgICAgICAgIGdyb3Vw
LT5zZXRTdG9yYWdlSUQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXRlbWVudC5nZXRDb2x1bW5J
bnQ2NCgwKSkpOwotICAgICAgICBncm91cC0+c2V0TmV3ZXN0Q2FjaGUoY2FjaGUucmVsZWFzZSgp
KTsKKyAgICAgICAgZ3JvdXAtPnNldE5ld2VzdENhY2hlKFdURk1vdmUoY2FjaGUpKTsKICAgICAg
ICAgCiAgICAgICAgIG1fY2FjaGVzSW5NZW1vcnkuc2V0KGdyb3VwLT5tYW5pZmVzdFVSTCgpLCBn
cm91cCk7CiAgICAgICAgIApAQCAtMTExOSw3ICsxMTE5LDcgQEAgUGFzc1JlZlB0cjxBcHBsaWNh
dGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKHVuc2lnbmVkIHN0
b3JhZ2UKICAgICAKICAgICBjYWNoZVN0YXRlbWVudC5iaW5kSW50NjQoMSwgc3RvcmFnZUlEKTsK
IAotICAgIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBjYWNoZSA9IEFwcGxpY2F0aW9uQ2FjaGU6
OmNyZWF0ZSgpOworICAgIGF1dG8gY2FjaGUgPSBBcHBsaWNhdGlvbkNhY2hlOjpjcmVhdGUoKTsK
IAogICAgIFN0cmluZyBmbGF0RmlsZURpcmVjdG9yeSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChtX2NhY2hlRGlyZWN0b3J5LCBtX2ZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7CiAKQEAgLTEx
MzQsNyArMTEzNCw3IEBAIFBhc3NSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSh1bnNpZ25lZCBzdG9yYWdlCiAgICAgICAgIFZlY3Rvcjxj
aGFyPiBibG9iOwogICAgICAgICBjYWNoZVN0YXRlbWVudC5nZXRDb2x1bW5CbG9iQXNWZWN0b3Io
NiwgYmxvYik7CiAgICAgICAgIAotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhID0g
U2hhcmVkQnVmZmVyOjphZG9wdFZlY3RvcihibG9iKTsKKyAgICAgICAgYXV0byBkYXRhID0gU2hh
cmVkQnVmZmVyOjphZG9wdFZlY3RvcihibG9iKTsKICAgICAgICAgCiAgICAgICAgIFN0cmluZyBw
YXRoID0gY2FjaGVTdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCg3KTsKICAgICAgICAgbG9uZyBsb25n
IHNpemUgPSAwOwpAQCAtMTE1NCwxMiArMTE1NCwxMiBAQCBQYXNzUmVmUHRyPEFwcGxpY2F0aW9u
Q2FjaGU+IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUodW5zaWduZWQgc3RvcmFn
ZQogICAgICAgICBTdHJpbmcgaGVhZGVycyA9IGNhY2hlU3RhdGVtZW50LmdldENvbHVtblRleHQo
NSk7CiAgICAgICAgIHBhcnNlSGVhZGVycyhoZWFkZXJzLCByZXNwb25zZSk7CiAgICAgICAgIAot
ICAgICAgICBSZWZQdHI8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiByZXNvdXJjZSA9IEFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKHVybCwgcmVzcG9uc2UsIHR5cGUsIGRhdGEucmVs
ZWFzZSgpLCBwYXRoKTsKKyAgICAgICAgYXV0byByZXNvdXJjZSA9IEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZTo6Y3JlYXRlKHVybCwgcmVzcG9uc2UsIHR5cGUsIFdURk1vdmUoZGF0YSksIHBhdGgp
OwogCiAgICAgICAgIGlmICh0eXBlICYgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpNYW5pZmVz
dCkKLSAgICAgICAgICAgIGNhY2hlLT5zZXRNYW5pZmVzdFJlc291cmNlKHJlc291cmNlLnJlbGVh
c2UoKSk7CisgICAgICAgICAgICBjYWNoZS0+c2V0TWFuaWZlc3RSZXNvdXJjZShXVEZNb3ZlKHJl
c291cmNlKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNhY2hlLT5hZGRSZXNvdXJjZShy
ZXNvdXJjZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgY2FjaGUtPmFkZFJlc291cmNlKFdURk1v
dmUocmVzb3VyY2UpKTsKICAgICB9CiAKICAgICBpZiAocmVzdWx0ICE9IFNRTElURV9ET05FKQpA
QCAtMTIxNyw3ICsxMjE3LDcgQEAgUGFzc1JlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2UKICAgICAKICAgICBj
YWNoZS0+c2V0U3RvcmFnZUlEKHN0b3JhZ2VJRCk7CiAKLSAgICByZXR1cm4gY2FjaGUucmVsZWFz
ZSgpOworICAgIHJldHVybiBXVEZNb3ZlKGNhY2hlKTsKIH0gICAgCiAgICAgCiB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpyZW1vdmUoQXBwbGljYXRpb25DYWNoZSogY2FjaGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xs
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJj
ZUNvbGxlY3Rpb24uY3BwCmluZGV4IDdlZWU3ODM2MGM5OTU4NDU3ODRhMTAzOWZhNWQ4YzYzOTAw
YjEzMTYuLjk4ZjZjMWUyZmExZDRhNTA5MTMwMGQ1ODc4MDQ0MjExZDhmN2IyM2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJj
ZUNvbGxlY3Rpb24uY3BwCkBAIC03Niw5ICs3Niw5IEBAIEFyY2hpdmVSZXNvdXJjZSogQXJjaGl2
ZVJlc291cmNlQ29sbGVjdGlvbjo6YXJjaGl2ZVJlc291cmNlRm9yVVJMKGNvbnN0IFVSTCYgdXJs
CiAKIFBhc3NSZWZQdHI8QXJjaGl2ZT4gQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjo6cG9wU3Vi
ZnJhbWVBcmNoaXZlKGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBVUkwmIHVybCkKIHsK
LSAgICBSZWZQdHI8QXJjaGl2ZT4gYXJjaGl2ZSA9IG1fc3ViZnJhbWVzLnRha2UoZnJhbWVOYW1l
KTsKKyAgICBhdXRvIGFyY2hpdmUgPSBtX3N1YmZyYW1lcy50YWtlKGZyYW1lTmFtZSk7CiAgICAg
aWYgKGFyY2hpdmUpCi0gICAgICAgIHJldHVybiBhcmNoaXZlLnJlbGVhc2UoKTsKKyAgICAgICAg
cmV0dXJuIFdURk1vdmUoYXJjaGl2ZSk7CiAKICAgICByZXR1cm4gbV9zdWJmcmFtZXMudGFrZSh1
cmwuc3RyaW5nKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRleCA2ZjVmZWZlZGRkNDBhOTJlMTQ1ZmRkMWQx
MmNmNWFjNzM5ZDdjOWNhLi5lMDQ5MDYzMDA4MWEwMTJhNDMzMzI2YmUyNDIzMTgyN2RkZmNlOTcx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJB
cmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lX
ZWJBcmNoaXZlLmNwcApAQCAtMzM0LDggKzMzNCw4IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6
ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChS
ZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBzdWJyZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHN1YnJl
c291cmNlRGljdCkpCi0gICAgICAgICAgICAgICAgYWRkU3VicmVzb3VyY2Uoc3VicmVzb3VyY2Uu
cmVsZWFzZSgpKTsKKyAgICAgICAgICAgIGlmIChhdXRvIHN1YnJlc291cmNlID0gY3JlYXRlUmVz
b3VyY2Uoc3VicmVzb3VyY2VEaWN0KSkKKyAgICAgICAgICAgICAgICBhZGRTdWJyZXNvdXJjZShX
VEZNb3ZlKHN1YnJlc291cmNlKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCkBAIC0zNTQsOSAr
MzU0LDkgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBk
aWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIAotICAgICAgICAgICAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IHN1YmZy
YW1lQXJjaGl2ZSA9IGNyZWF0ZSgpOworICAgICAgICAgICAgYXV0byBzdWJmcmFtZUFyY2hpdmUg
PSBjcmVhdGUoKTsKICAgICAgICAgICAgIGlmIChzdWJmcmFtZUFyY2hpdmUtPmV4dHJhY3Qoc3Vi
ZnJhbWVEaWN0KSkKLSAgICAgICAgICAgICAgICBhZGRTdWJmcmFtZUFyY2hpdmUoc3ViZnJhbWVB
cmNoaXZlLnJlbGVhc2UoKSk7CisgICAgICAgICAgICAgICAgYWRkU3ViZnJhbWVBcmNoaXZlKFdU
Rk1vdmUoc3ViZnJhbWVBcmNoaXZlKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg
ICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIEludmFsaWQgc3ViZnJhbWUgYXJj
aGl2ZSBza2lwcGVkIik7CiAgICAgICAgIH0KQEAgLTU0Nyw4ICs1NDcsOCBAQCBSZWZQdHI8TGVn
YWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWFy
a3VwU3RyaW5nLCBGcgogICAgICAgICBjb25zdCBTdHJpbmcmIGljb25VUkwgPSBpY29uRGF0YWJh
c2UoKS5zeW5jaHJvbm91c0ljb25VUkxGb3JQYWdlVVJMKHJlc3BvbnNlVVJMKTsKICAgICAgICAg
aWYgKCFpY29uVVJMLmlzRW1wdHkoKSAmJiBpY29uRGF0YWJhc2UoKS5zeW5jaHJvbm91c0ljb25E
YXRhS25vd25Gb3JJY29uVVJMKGljb25VUkwpKSB7CiAgICAgICAgICAgICBpZiAoSW1hZ2UqIGlj
b25JbWFnZSA9IGljb25EYXRhYmFzZSgpLnN5bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwocmVzcG9u
c2VVUkwsIEludFNpemUoMTYsIDE2KSkpIHsKLSAgICAgICAgICAgICAgICBpZiAoUmVmUHRyPEFy
Y2hpdmVSZXNvdXJjZT4gcmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShpY29uSW1h
Z2UtPmRhdGEoKSwgVVJMKFBhcnNlZFVSTFN0cmluZywgaWNvblVSTCksICJpbWFnZS94LWljb24i
LCAiIiwgIiIpKQotICAgICAgICAgICAgICAgICAgICBzdWJyZXNvdXJjZXMuYXBwZW5kKHJlc291
cmNlLnJlbGVhc2UoKSk7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8gcmVzb3VyY2UgPSBBcmNo
aXZlUmVzb3VyY2U6OmNyZWF0ZShpY29uSW1hZ2UtPmRhdGEoKSwgVVJMKFBhcnNlZFVSTFN0cmlu
ZywgaWNvblVSTCksICJpbWFnZS94LWljb24iLCAiIiwgIiIpKQorICAgICAgICAgICAgICAgICAg
ICBzdWJyZXNvdXJjZXMuYXBwZW5kKFdURk1vdmUocmVzb3VyY2UpKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgIH0KQEAgLTU4Miw5ICs1ODIsOSBAQCBSZWZQdHI8TGVnYWN5V2ViQXJj
aGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUp
CiAgICAgLy8gV3JhcCB0aGUgZnJhbWVzZXQgZG9jdW1lbnQgaW4gYW4gaWZyYW1lIHNvIGl0IGNh
biBiZSBwYXN0ZWQgaW50bwogICAgIC8vIGFub3RoZXIgZG9jdW1lbnQgKHdoaWNoIHdpbGwgaGF2
ZSBhIGJvZHkgb3IgZnJhbWVzZXQgb2YgaXRzIG93bikuIAogICAgIFN0cmluZyBpZnJhbWVNYXJr
dXAgPSAiPGlmcmFtZSBmcmFtZWJvcmRlcj1cIm5vXCIgbWFyZ2lud2lkdGg9XCIwXCIgbWFyZ2lu
aGVpZ2h0PVwiMFwiIHdpZHRoPVwiOTglJVwiIGhlaWdodD1cIjk4JSVcIiBzcmM9XCIiICsgZnJh
bWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkudXJsKCkuc3RyaW5nKCkg
KyAiXCI+PC9pZnJhbWU+IjsKLSAgICBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBpZnJhbWVSZXNv
dXJjZSA9IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKHV0ZjhCdWZmZXIoaWZyYW1lTWFya3VwKSwg
YmxhbmtVUkwoKSwgInRleHQvaHRtbCIsICJVVEYtOCIsIFN0cmluZygpKTsKKyAgICBhdXRvIGlm
cmFtZVJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUodXRmOEJ1ZmZlcihpZnJhbWVN
YXJrdXApLCBibGFua1VSTCgpLCAidGV4dC9odG1sIiwgIlVURi04IiwgU3RyaW5nKCkpOwogCi0g
ICAgcmV0dXJuIGNyZWF0ZShpZnJhbWVSZXNvdXJjZS5yZWxlYXNlKCksIFZlY3RvcjxSZWZQdHI8
QXJjaGl2ZVJlc291cmNlPj4oKSwgVmVjdG9yPFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPj4geyBh
cmNoaXZlIH0pOworICAgIHJldHVybiBjcmVhdGUoV1RGTW92ZShpZnJhbWVSZXNvdXJjZSksIFZl
Y3RvcjxSZWZQdHI8QXJjaGl2ZVJlc291cmNlPj4oKSwgVmVjdG9yPFJlZlB0cjxMZWdhY3lXZWJB
cmNoaXZlPj4geyBhcmNoaXZlIH0pOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCA0ZjU0NTI1NGRjODkyNDYxZDkyYWNkZDQ2MmY3NjQz
ZDlkNjRlZTc1Li45NmVlZjdmZTk3MGJlMTlhNWRlZDA4N2ZlOWZlN2ZiNWZkMzg5YTM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTMzNCw5ICsz
MzQsOSBAQCBpbmxpbmUgdm9pZCBDYWNoZWRJbWFnZTo6Y3JlYXRlSW1hZ2UoKQogICAgICAgICBt
X2ltYWdlID0gUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlKHRoaXMpOwogI2VuZGlmCiAgICAgZWxz
ZSBpZiAobV9yZXNwb25zZS5taW1lVHlwZSgpID09ICJpbWFnZS9zdmcreG1sIikgewotICAgICAg
ICBSZWZQdHI8U1ZHSW1hZ2U+IHN2Z0ltYWdlID0gU1ZHSW1hZ2U6OmNyZWF0ZSgqdGhpcywgdXJs
KCkpOwotICAgICAgICBtX3N2Z0ltYWdlQ2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0ltYWdl
Q2FjaGU+KHN2Z0ltYWdlLmdldCgpKTsKLSAgICAgICAgbV9pbWFnZSA9IHN2Z0ltYWdlLnJlbGVh
c2UoKTsKKyAgICAgICAgYXV0byBzdmdJbWFnZSA9IFNWR0ltYWdlOjpjcmVhdGUoKnRoaXMsIHVy
bCgpKTsKKyAgICAgICAgbV9zdmdJbWFnZUNhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdJbWFn
ZUNhY2hlPihzdmdJbWFnZS5wdHIoKSk7CisgICAgICAgIG1faW1hZ2UgPSBXVEZNb3ZlKHN2Z0lt
YWdlKTsKICAgICB9IGVsc2UgewogICAgICAgICBtX2ltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0
ZSh0aGlzKTsKICAgICAgICAgZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCptX2ltYWdlKS5zZXRBbGxv
d1N1YnNhbXBsaW5nKG1fbG9hZGVyICYmIG1fbG9hZGVyLT5mcmFtZUxvYWRlcigpLT5mcmFtZSgp
LnNldHRpbmdzKCkuaW1hZ2VTdWJzYW1wbGluZ0VuYWJsZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAppbmRleCBlMWVkYTVjYWExZDAwNWMwY2RlYTEx
M2M2NWIwNTk4Mzk1MzRmMDcyLi5lZTQzN2U4NjI4ZWJmNGU4NjMyN2NjNzcwMzBmNWY2OTRlMzBi
YjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKQEAg
LTU1OCw3ICs1NTgsNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6c2V0SWNvbkRhdGFGb3JJY29uVVJM
KFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhT3JpZ2luYWwsCiAgICAgICAgICAgICBpY29u
ID0gZ2V0T3JDcmVhdGVJY29uUmVjb3JkKGljb25VUkwpOwogICAgIAogICAgICAgICAvLyBVcGRh
dGUgdGhlIGRhdGEgYW5kIHNldCB0aGUgdGltZSBzdGFtcAotICAgICAgICBpY29uLT5zZXRJbWFn
ZURhdGEoZGF0YS5yZWxlYXNlKCkpOworICAgICAgICBpY29uLT5zZXRJbWFnZURhdGEoV1RGTW92
ZShkYXRhKSk7CiAgICAgICAgIGljb24tPnNldFRpbWVzdGFtcCgoaW50KWN1cnJlbnRUaW1lKCkp
OwogICAgICAgICAKICAgICAgICAgLy8gQ29weSB0aGUgY3VycmVudCByZXRhaW5pbmcgcGFnZVVS
THMgLSBpZiBhbnkgLSB0byBub3RpZnkgdGhlbSBvZiB0aGUgY2hhbmdlCkBAIC04OTMsMTAgKzg5
MywxMCBAQCBQYXNzUmVmUHRyPEljb25SZWNvcmQ+IEljb25EYXRhYmFzZTo6Z2V0T3JDcmVhdGVJ
Y29uUmVjb3JkKGNvbnN0IFN0cmluZyYgaWNvblVSTAogICAgIGlmIChJY29uUmVjb3JkKiBpY29u
ID0gbV9pY29uVVJMVG9SZWNvcmRNYXAuZ2V0KGljb25VUkwpKQogICAgICAgICByZXR1cm4gaWNv
bjsKIAotICAgIFJlZlB0cjxJY29uUmVjb3JkPiBuZXdJY29uID0gSWNvblJlY29yZDo6Y3JlYXRl
KGljb25VUkwpOwotICAgIG1faWNvblVSTFRvUmVjb3JkTWFwLnNldChpY29uVVJMLCBuZXdJY29u
LmdldCgpKTsKKyAgICBhdXRvIG5ld0ljb24gPSBJY29uUmVjb3JkOjpjcmVhdGUoaWNvblVSTCk7
CisgICAgbV9pY29uVVJMVG9SZWNvcmRNYXAuc2V0KGljb25VUkwsIG5ld0ljb24ucHRyKCkpOwog
Ci0gICAgcmV0dXJuIG5ld0ljb24ucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKG5ld0lj
b24pOwogfQogCiAvLyBUaGlzIG1ldGhvZCByZXRyaWV2ZXMgdGhlIGV4aXN0aW5nIFBhZ2VVUkxS
ZWNvcmQsIG9yIGNyZWF0ZXMgYSBuZXcgb25lIGFuZCBtYXJrcyBpdCBhcyAiaW50ZXJlc3RlZCBp
biB0aGUgaW1wb3J0IiBmb3IgbGF0ZXIgbm90aWZpY2F0aW9uCkBAIC0xNDkzLDcgKzE0OTMsNyBA
QCBib29sIEljb25EYXRhYmFzZTo6cmVhZEZyb21EYXRhYmFzZSgpCiAgICAgCiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGljb25zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGRpZEFueVdv
cmsgPSB0cnVlOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZURhdGEgPSBnZXRJ
bWFnZURhdGFGb3JJY29uVVJMRnJvbVNRTERhdGFiYXNlKGljb25zW2ldLT5pY29uVVJMKCkpOwor
ICAgICAgICBhdXRvIGltYWdlRGF0YSA9IGdldEltYWdlRGF0YUZvckljb25VUkxGcm9tU1FMRGF0
YWJhc2UoaWNvbnNbaV0tPmljb25VUkwoKSk7CiAKICAgICAgICAgLy8gVmVyaWZ5IHRoaXMgaWNv
biBzdGlsbCB3YW50cyB0byBiZSByZWFkIGZyb20gZGlzawogICAgICAgICB7CkBAIC0xNTAzLDcg
KzE1MDMsNyBAQCBib29sIEljb25EYXRhYmFzZTo6cmVhZEZyb21EYXRhYmFzZSgpCiAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKG1faWNvbnNQZW5kaW5nUmVhZGluZy5jb250
YWlucyhpY29uc1tpXSkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gU2V0IHRoZSBuZXcgZGF0
YQotICAgICAgICAgICAgICAgICAgICBpY29uc1tpXS0+c2V0SW1hZ2VEYXRhKGltYWdlRGF0YS5y
ZWxlYXNlKCkpOworICAgICAgICAgICAgICAgICAgICBpY29uc1tpXS0+c2V0SW1hZ2VEYXRhKFdU
Rk1vdmUoaW1hZ2VEYXRhKSk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
ICAgICAvLyBSZW1vdmUgdGhpcyBpY29uIGZyb20gdGhlIHNldCB0aGF0IG5lZWRzIHRvIGJlIHJl
YWQKICAgICAgICAgICAgICAgICAgICAgbV9pY29uc1BlbmRpbmdSZWFkaW5nLnJlbW92ZShpY29u
c1tpXSk7CkBAIC0xOTM2LDcgKzE5MzYsNyBAQCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSWNv
bkRhdGFiYXNlOjpnZXRJbWFnZURhdGFGb3JJY29uVVJMRnJvbVNRTERhdGFiYXNlKGNvbgogCiAg
ICAgbV9nZXRJbWFnZURhdGFGb3JJY29uVVJMU3RhdGVtZW50LT5yZXNldCgpOwogICAgIAotICAg
IHJldHVybiBpbWFnZURhdGEucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKGltYWdlRGF0
YSk7CiB9CiAKIHZvaWQgSWNvbkRhdGFiYXNlOjpyZW1vdmVJY29uRnJvbVNRTERhdGFiYXNlKGNv
bnN0IFN0cmluZyYgaWNvblVSTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCAxMTli
ZDQ2YTBkNmZjM2QzNTMyYTk4MjRkNzQ1Y2FmNDIxYTdkOTViLi5lYTlhZDQyMDlhYTcyZDgyNTAy
NzlhNzE0ZWUwNDc3NjY3NTM0MDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC04
MTIsMTMgKzgxMiwxMyBAQCBTdG9yYWdlKiBET01XaW5kb3c6OnNlc3Npb25TdG9yYWdlKEV4Y2Vw
dGlvbkNvZGUmIGVjKSBjb25zdAogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIDA7CiAK
LSAgICBSZWZQdHI8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhID0gcGFnZS0+c2Vzc2lvblN0b3Jh
Z2UoKS0+c3RvcmFnZUFyZWEoZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpOworICAgIGF1dG8g
c3RvcmFnZUFyZWEgPSBwYWdlLT5zZXNzaW9uU3RvcmFnZSgpLT5zdG9yYWdlQXJlYShkb2N1bWVu
dC0+c2VjdXJpdHlPcmlnaW4oKSk7CiAgICAgaWYgKCFzdG9yYWdlQXJlYS0+Y2FuQWNjZXNzU3Rv
cmFnZShtX2ZyYW1lKSkgewogICAgICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgfQogCi0gICAgbV9zZXNzaW9uU3RvcmFnZSA9IFN0b3JhZ2U6OmNyZWF0ZSht
X2ZyYW1lLCBzdG9yYWdlQXJlYS5yZWxlYXNlKCkpOworICAgIG1fc2Vzc2lvblN0b3JhZ2UgPSBT
dG9yYWdlOjpjcmVhdGUobV9mcmFtZSwgV1RGTW92ZShzdG9yYWdlQXJlYSkpOwogICAgIHJldHVy
biBtX3Nlc3Npb25TdG9yYWdlLmdldCgpOwogfQogCkBAIC04NTgsMTQgKzg1OCwxNCBAQCBTdG9y
YWdlKiBET01XaW5kb3c6OmxvY2FsU3RvcmFnZShFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKICAg
ICBpZiAoIXBhZ2UtPnNldHRpbmdzKCkubG9jYWxTdG9yYWdlRW5hYmxlZCgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEgPSBw
YWdlLT5zdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKS5sb2NhbFN0b3JhZ2VBcmVhKCpkb2N1bWVu
dCk7CisgICAgYXV0byBzdG9yYWdlQXJlYSA9IHBhZ2UtPnN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
cigpLmxvY2FsU3RvcmFnZUFyZWEoKmRvY3VtZW50KTsKIAogICAgIGlmICghc3RvcmFnZUFyZWEt
PmNhbkFjY2Vzc1N0b3JhZ2UobV9mcmFtZSkpIHsKICAgICAgICAgZWMgPSBTRUNVUklUWV9FUlI7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIG1fbG9jYWxTdG9yYWdlID0g
U3RvcmFnZTo6Y3JlYXRlKG1fZnJhbWUsIHN0b3JhZ2VBcmVhLnJlbGVhc2UoKSk7CisgICAgbV9s
b2NhbFN0b3JhZ2UgPSBTdG9yYWdlOjpjcmVhdGUobV9mcmFtZSwgV1RGTW92ZShzdG9yYWdlQXJl
YSkpOwogICAgIHJldHVybiBtX2xvY2FsU3RvcmFnZS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDIxMTU1MzE4NGNlYzY3ZTBlNTllOTcyYjUzZDYxOGJk
N2M5ZDJhZDQuLmVmZGVlZDEzNzJlZjA4ODY5NjNlZTU0ZmMyZDY2YjZiZWNmMzc3YWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTIyNzgsNyArMjI3OCw3IEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
IGV2ZW50LCBEYXRhVHJhbnNmCiAgICAgICAgICAgICBtX3Nob3VsZE9ubHlGaXJlRHJhZ092ZXJF
dmVudCA9IGZhbHNlOwogICAgICAgICB9CiAgICAgfQotICAgIG1fZHJhZ1RhcmdldCA9IG5ld1Rh
cmdldC5yZWxlYXNlKCk7CisgICAgbV9kcmFnVGFyZ2V0ID0gV1RGTW92ZShuZXdUYXJnZXQpOwog
ICAgIHJldHVybiBhY2NlcHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Fu
aW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwCmluZGV4IGVkMTliNjEzOWMzYTkxMmFlODg4
NzQwYWExMzBhNzI0MTY4ZTA0NjAuLjJmN2IxYWQwYTVkZjYxOWFjNGUzNzBmYjk1M2Y2ODk0ODU1
MGFkNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0
ZUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9z
aXRlQW5pbWF0aW9uLmNwcApAQCAtMTY4LDkgKzE2OCw5IEBAIHZvaWQgQ29tcG9zaXRlQW5pbWF0
aW9uOjp1cGRhdGVUcmFuc2l0aW9ucyhSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgUmVu
ZGVyCiAgICAgICAgICAgICAgICAgLy8gPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yNDc4Nz4KICAgICAgICAgICAgICAgICBpZiAoIWVxdWFsICYmIGlzQWN0aXZlVHJh
bnNpdGlvbikgewogICAgICAgICAgICAgICAgICAgICAvLyBBZGQgdGhlIG5ldyB0cmFuc2l0aW9u
Ci0gICAgICAgICAgICAgICAgICAgIFJlZlB0cjxJbXBsaWNpdEFuaW1hdGlvbj4gaW1wbGljaXRB
bmltYXRpb24gPSBJbXBsaWNpdEFuaW1hdGlvbjo6Y3JlYXRlKGFuaW1hdGlvbiwgcHJvcCwgcmVu
ZGVyZXIsIHRoaXMsIG1vZGlmaWVkQ3VycmVudFN0eWxlID8gbW9kaWZpZWRDdXJyZW50U3R5bGUu
Z2V0KCkgOiBmcm9tU3R5bGUpOwotICAgICAgICAgICAgICAgICAgICBMT0coQW5pbWF0aW9ucywg
IkNyZWF0ZWQgSW1wbGljaXRBbmltYXRpb24gJXAgb24gcmVuZGVyZXIgJXAgZm9yIHByb3BlcnR5
ICVzIGR1cmF0aW9uICUuMmYgZGVsYXkgJS4yZiIsIGltcGxpY2l0QW5pbWF0aW9uLmdldCgpLCBy
ZW5kZXJlciwgZ2V0UHJvcGVydHlOYW1lKHByb3ApLCBhbmltYXRpb24uZHVyYXRpb24oKSwgYW5p
bWF0aW9uLmRlbGF5KCkpOwotICAgICAgICAgICAgICAgICAgICBtX3RyYW5zaXRpb25zLnNldChw
cm9wLCBpbXBsaWNpdEFuaW1hdGlvbi5yZWxlYXNlKCkpOworICAgICAgICAgICAgICAgICAgICBh
dXRvIGltcGxpY2l0QW5pbWF0aW9uID0gSW1wbGljaXRBbmltYXRpb246OmNyZWF0ZShhbmltYXRp
b24sIHByb3AsIHJlbmRlcmVyLCB0aGlzLCBtb2RpZmllZEN1cnJlbnRTdHlsZSA/IG1vZGlmaWVk
Q3VycmVudFN0eWxlLmdldCgpIDogZnJvbVN0eWxlKTsKKyAgICAgICAgICAgICAgICAgICAgTE9H
KEFuaW1hdGlvbnMsICJDcmVhdGVkIEltcGxpY2l0QW5pbWF0aW9uICVwIG9uIHJlbmRlcmVyICVw
IGZvciBwcm9wZXJ0eSAlcyBkdXJhdGlvbiAlLjJmIGRlbGF5ICUuMmYiLCBpbXBsaWNpdEFuaW1h
dGlvbi5wdHIoKSwgcmVuZGVyZXIsIGdldFByb3BlcnR5TmFtZShwcm9wKSwgYW5pbWF0aW9uLmR1
cmF0aW9uKCksIGFuaW1hdGlvbi5kZWxheSgpKTsKKyAgICAgICAgICAgICAgICAgICAgbV90cmFu
c2l0aW9ucy5zZXQocHJvcCwgV1RGTW92ZShpbXBsaWNpdEFuaW1hdGlvbikpOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IG5l
ZWQgb25lIHBhc3MgZm9yIHRoZSBzaW5nbGUgcHJvcCBjYXNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAppbmRleCA5OWM3NmFiMmMxNDYx
YTRiY2IxZjBhMjFlNDQ2OTAwOTliYTQwZDViLi5lOThmYzc0NjI5ZTliYWM3MDdmZGFkNWFlNmRk
NWQ4Yjc4MDJkYWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50
U2VjdXJpdHlQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRT
ZWN1cml0eVBvbGljeS5jcHAKQEAgLTYyOCw3ICs2MjgsNyBAQCB2b2lkIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6cmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgZWZmZWN0aXZlVmlvbGF0ZWRE
aXJlYwogICAgIC8vIHNlbnQgZXhwbGljaXRseS4gQXMgZm9yIHdoaWNoIGRpcmVjdGl2ZSB3YXMg
dmlvbGF0ZWQsIHRoYXQncyBwcmV0dHkKICAgICAvLyBoYXJtbGVzcyBpbmZvcm1hdGlvbi4KIAot
ICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNzcFJlcG9ydCA9IEluc3BlY3Rvck9iamVjdDo6
Y3JlYXRlKCk7CisgICAgYXV0byBjc3BSZXBvcnQgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgp
OwogICAgIGNzcFJlcG9ydC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgiZG9jdW1lbnQtdXJpIiks
IGRvY3VtZW50VVJJKTsKICAgICBjc3BSZXBvcnQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInJl
ZmVycmVyIiksIHJlZmVycmVyKTsKICAgICBjc3BSZXBvcnQtPnNldFN0cmluZyhBU0NJSUxpdGVy
YWwoInZpb2xhdGVkLWRpcmVjdGl2ZSIpLCB2aW9sYXRlZERpcmVjdGl2ZVRleHQpOwpAQCAtNjQz
LDcgKzY0Myw3IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRWaW9sYXRpb24o
Y29uc3QgU3RyaW5nJiBlZmZlY3RpdmVWaW9sYXRlZERpcmVjCiAgICAgfQogCiAgICAgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gcmVwb3J0T2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUo
KTsKLSAgICByZXBvcnRPYmplY3QtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoImNzcC1yZXBvcnQi
KSwgY3NwUmVwb3J0LnJlbGVhc2UoKSk7CisgICAgcmVwb3J0T2JqZWN0LT5zZXRPYmplY3QoQVND
SUlMaXRlcmFsKCJjc3AtcmVwb3J0IiksIFdURk1vdmUoY3NwUmVwb3J0KSk7CiAKICAgICBSZWZQ
dHI8Rm9ybURhdGE+IHJlcG9ydCA9IEZvcm1EYXRhOjpjcmVhdGUocmVwb3J0T2JqZWN0LT50b0pT
T05TdHJpbmcoKS51dGY4KCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgdXJsIDogcmVwb3J0VVJJ
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNv
bnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250
cm9sbGVyLm1tCmluZGV4IGIxNjdjZTIwMTlkMjk0OGE3YWU5MzFkOTZhNWZjNzRjMzhiNzZmODAu
LmIxNjVlYTQ3NmJhMmQ1YWE1NzhjNGYyYWFhZjM4NTQ5MTYzNzg1MjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbQpAQCAt
NjIwLDkgKzYyMCw5IEBAIHZvaWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6Y3JlYXRlT3Zl
cmxheUlmTmVlZGVkKCkKICAgICBpZiAoIW1fbWFpbkZyYW1lLnNldHRpbmdzKCkuc2VydmljZUNv
bnRyb2xzRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8UGFnZU92ZXJs
YXk+IG92ZXJsYXkgPSBQYWdlT3ZlcmxheTo6Y3JlYXRlKCp0aGlzLCBQYWdlT3ZlcmxheTo6T3Zl
cmxheVR5cGU6OkRvY3VtZW50KTsKLSAgICBtX3NlcnZpY2VzT3ZlcmxheSA9IG92ZXJsYXkuZ2V0
KCk7Ci0gICAgbV9tYWluRnJhbWUucGFnZU92ZXJsYXlDb250cm9sbGVyKCkuaW5zdGFsbFBhZ2VP
dmVybGF5KG92ZXJsYXkucmVsZWFzZSgpLCBQYWdlT3ZlcmxheTo6RmFkZU1vZGU6OkRvTm90RmFk
ZSk7CisgICAgYXV0byBvdmVybGF5ID0gUGFnZU92ZXJsYXk6OmNyZWF0ZSgqdGhpcywgUGFnZU92
ZXJsYXk6Ok92ZXJsYXlUeXBlOjpEb2N1bWVudCk7CisgICAgbV9zZXJ2aWNlc092ZXJsYXkgPSBv
dmVybGF5LnB0cigpOworICAgIG1fbWFpbkZyYW1lLnBhZ2VPdmVybGF5Q29udHJvbGxlcigpLmlu
c3RhbGxQYWdlT3ZlcmxheShXVEZNb3ZlKG92ZXJsYXkpLCBQYWdlT3ZlcmxheTo6RmFkZU1vZGU6
OkRvTm90RmFkZSk7CiB9CiAKIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBTZXJ2aWNlc092ZXJsYXlD
b250cm9sbGVyOjp0ZWxlcGhvbmVOdW1iZXJSYW5nZXNGb3JGb2N1c2VkRnJhbWUoKQpAQCAtNzM5
LDcgKzczOSw3IEBAIHZvaWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6ZGV0ZXJtaW5lQWN0
aXZlSGlnaGxpZ2h0KGJvb2wmIG1vdXNlSXNPdmVyQWN0aXZlCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICBtX2FjdGl2ZUhpZ2hsaWdodCA9IG1fbmV4dEFjdGl2ZUhp
Z2hsaWdodC5yZWxlYXNlKCk7CisgICAgICAgIG1fYWN0aXZlSGlnaGxpZ2h0ID0gV1RGTW92ZSht
X25leHRBY3RpdmVIaWdobGlnaHQpOwogCiAgICAgICAgIGlmIChtX2FjdGl2ZUhpZ2hsaWdodCkg
ewogICAgICAgICAgICAgbV9zZXJ2aWNlc092ZXJsYXktPmxheWVyKCkuYWRkQ2hpbGQobV9hY3Rp
dmVIaWdobGlnaHQtPmxheWVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oCmluZGV4IGQwOTY4YmIzMzgw
Njg3ZGQzYmVmMzQzMTIwMTliZjMzM2JhN2YwNmEuLjYzMTYyY2FkODY1Mjk3YmRjNzQ0M2FjNDQ5
MzM3NzliYzBkYmM0ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKQEAgLTczLDcgKzczLDcgQEAgcHJv
dGVjdGVkOgogCiAgICAgU2Nyb2xsaW5nU3RhdGVUcmVlKiBzY3JvbGxpbmdTdGF0ZVRyZWUoKSB7
IHJldHVybiBtX3Njcm9sbGluZ1N0YXRlVHJlZS5nZXQoKTsgfQogCi0gICAgUGFzc1JlZlB0cjxT
Y3JvbGxpbmdUcmVlPiByZWxlYXNlU2Nyb2xsaW5nVHJlZSgpIHsgcmV0dXJuIG1fc2Nyb2xsaW5n
VHJlZS5yZWxlYXNlKCk7IH0KKyAgICBQYXNzUmVmUHRyPFNjcm9sbGluZ1RyZWU+IHJlbGVhc2VT
Y3JvbGxpbmdUcmVlKCkgeyByZXR1cm4gV1RGTW92ZShtX3Njcm9sbGluZ1RyZWUpOyB9CiAKICAg
ICB2b2lkIHVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbChTY3JvbGxpbmdOb2Rl
SUQsIGNvbnN0IEZsb2F0UG9pbnQmLCBib29sIHByb2dyYW1tYXRpY1Njcm9sbCwgU2V0T3JTeW5j
U2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuY3BwCmluZGV4IGRmZDUyODU3YWY2ZDAzYTJl
ODcwMzQ1MmI4MzJmNjAyNjQyNjQwMjQuLjg5YWVjYTBmNjk1NjllODY1NWNkZDAwMDU2NzFlMTkz
MWI1NDhhYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1N0YXRlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nU3RhdGVOb2RlLmNwcApAQCAtNzQsMTMgKzc0LDEzIEBAIHZvaWQgU2Nyb2xsaW5nU3Rh
dGVOb2RlOjpzZXRQcm9wZXJ0eUNoYW5nZWQodW5zaWduZWQgcHJvcGVydHlCaXQpCiAKIFBhc3NS
ZWZQdHI8U2Nyb2xsaW5nU3RhdGVOb2RlPiBTY3JvbGxpbmdTdGF0ZU5vZGU6OmNsb25lQW5kUmVz
ZXQoU2Nyb2xsaW5nU3RhdGVUcmVlJiBhZG9wdGl2ZVRyZWUpCiB7Ci0gICAgUmVmUHRyPFNjcm9s
bGluZ1N0YXRlTm9kZT4gY2xvbmUgPSB0aGlzLT5jbG9uZShhZG9wdGl2ZVRyZWUpOworICAgIGF1
dG8gY2xvbmUgPSB0aGlzLT5jbG9uZShhZG9wdGl2ZVRyZWUpOwogCiAgICAgLy8gTm93IHRoYXQg
dGhpcyBub2RlIGlzIGNsb25lZCwgcmVzZXQgb3VyIGNoYW5nZSBwcm9wZXJ0aWVzLgogICAgIHJl
c2V0Q2hhbmdlZFByb3BlcnRpZXMoKTsKIAotICAgIGNsb25lQW5kUmVzZXRDaGlsZHJlbigqY2xv
bmUsIGFkb3B0aXZlVHJlZSk7Ci0gICAgcmV0dXJuIGNsb25lLnJlbGVhc2UoKTsKKyAgICBjbG9u
ZUFuZFJlc2V0Q2hpbGRyZW4oY2xvbmUuZ2V0KCksIGFkb3B0aXZlVHJlZSk7CisgICAgcmV0dXJu
IFdURk1vdmUoY2xvbmUpOwogfQogCiB2b2lkIFNjcm9sbGluZ1N0YXRlTm9kZTo6Y2xvbmVBbmRS
ZXNldENoaWxkcmVuKFNjcm9sbGluZ1N0YXRlTm9kZSYgY2xvbmUsIFNjcm9sbGluZ1N0YXRlVHJl
ZSYgYWRvcHRpdmVUcmVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1N0YXRlVHJlZS5jcHAKaW5kZXggM2JlYzQzNjBjNGQxNTQ5Njc2MWZhYTQ3NDFm
MjkwMzZjMTc5NmY5NC4uMTFjZWM1ZjVkZTdhMjFjNmFmMWE2ZWMwNjFhOWY1ZmJkOTRhZTU3ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVU
cmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0
ZVRyZWUuY3BwCkBAIC0xMTUsMTYgKzExNSwxNiBAQCBTY3JvbGxpbmdOb2RlSUQgU2Nyb2xsaW5n
U3RhdGVUcmVlOjphdHRhY2hOb2RlKFNjcm9sbGluZ05vZGVUeXBlIG5vZGVUeXBlLCBTY3JvbAog
ICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgaWYgKG5vZGVUeXBlID09IEZyYW1lU2Ny
b2xsaW5nTm9kZSAmJiBwYXJlbnRJRCkgewotICAgICAgICAgICAgaWYgKFJlZlB0cjxTY3JvbGxp
bmdTdGF0ZU5vZGU+IG9ycGhhbmVkTm9kZSA9IG1fb3JwaGFuZWRTdWJmcmFtZU5vZGVzLnRha2Uo
bmV3Tm9kZUlEKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gb3JwaGFuZWROb2RlID0gbV9vcnBo
YW5lZFN1YmZyYW1lTm9kZXMudGFrZShuZXdOb2RlSUQpKSB7CiAgICAgICAgICAgICAgICAgbmV3
Tm9kZSA9IG9ycGhhbmVkTm9kZS5nZXQoKTsKLSAgICAgICAgICAgICAgICBwYXJlbnQtPmFwcGVu
ZENoaWxkKG9ycGhhbmVkTm9kZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgICAgIHBhcmVudC0+
YXBwZW5kQ2hpbGQoV1RGTW92ZShvcnBoYW5lZE5vZGUpKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogCiAgICAgICAgIGlmICghbmV3Tm9kZSkgewotICAgICAgICAgICAgUmVmUHRyPFNjcm9s
bGluZ1N0YXRlTm9kZT4gc3RhdGVOb2RlID0gY3JlYXRlTm9kZShub2RlVHlwZSwgbmV3Tm9kZUlE
KTsKKyAgICAgICAgICAgIGF1dG8gc3RhdGVOb2RlID0gY3JlYXRlTm9kZShub2RlVHlwZSwgbmV3
Tm9kZUlEKTsKICAgICAgICAgICAgIG5ld05vZGUgPSBzdGF0ZU5vZGUuZ2V0KCk7Ci0gICAgICAg
ICAgICBwYXJlbnQtPmFwcGVuZENoaWxkKHN0YXRlTm9kZS5yZWxlYXNlKCkpOworICAgICAgICAg
ICAgcGFyZW50LT5hcHBlbmRDaGlsZChXVEZNb3ZlKHN0YXRlTm9kZSkpOwogICAgICAgICB9CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxl
dmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24u
Y3BwCmluZGV4IGVhMzNlZmMxZDNiZjAwM2Y3NjZhOTg5ZjA0YzZhNTMwMjk4NjQ1N2YuLmY2NWNk
ZTNjMWFmZjQ1ZjY2ZDVmMjIzNjM2NzE5MmYwY2IzMDdhMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCkBAIC03NCwxMiArNzQsMTIgQEAg
c3RhdGljIEF1ZGlvQnVzKiBnZXRDb25jYXRlbmF0ZWRJbXB1bHNlUmVzcG9uc2VzRm9yU3ViamVj
dChjb25zdCBTdHJpbmcmIHN1YmplY3QKICAgICBBdWRpb0J1cyogYnVzOwogICAgIEF1ZGlvQnVz
TWFwOjppdGVyYXRvciBpdGVyYXRvciA9IGF1ZGlvQnVzTWFwLmdldCgpLmZpbmQoc3ViamVjdE5h
bWUpOwogICAgIGlmIChpdGVyYXRvciA9PSBhdWRpb0J1c01hcC5nZXQoKS5lbmQoKSkgewotICAg
ICAgICBSZWZQdHI8QXVkaW9CdXM+IGNvbmNhdGVuYXRlZEltcHVsc2VSZXNwb25zZXMgPSBBdWRp
b0J1czo6bG9hZFBsYXRmb3JtUmVzb3VyY2Uoc3ViamVjdE5hbWUudXRmOCgpLmRhdGEoKSwgUmVz
cG9uc2VTYW1wbGVSYXRlKTsKKyAgICAgICAgYXV0byBjb25jYXRlbmF0ZWRJbXB1bHNlUmVzcG9u
c2VzID0gQXVkaW9CdXM6OmxvYWRQbGF0Zm9ybVJlc291cmNlKHN1YmplY3ROYW1lLnV0ZjgoKS5k
YXRhKCksIFJlc3BvbnNlU2FtcGxlUmF0ZSk7CiAgICAgICAgIEFTU0VSVChjb25jYXRlbmF0ZWRJ
bXB1bHNlUmVzcG9uc2VzKTsKICAgICAgICAgaWYgKCFjb25jYXRlbmF0ZWRJbXB1bHNlUmVzcG9u
c2VzKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgYnVzID0gY29uY2F0ZW5hdGVk
SW1wdWxzZVJlc3BvbnNlcy5yZWxlYXNlKCkubGVha1JlZigpOworICAgICAgICBidXMgPSBjb25j
YXRlbmF0ZWRJbXB1bHNlUmVzcG9uc2VzLmxlYWtSZWYoKTsKICAgICAgICAgYXVkaW9CdXNNYXAu
Z2V0KCkuc2V0KHN1YmplY3ROYW1lLCBidXMpOwogICAgIH0gZWxzZQogICAgICAgICBidXMgPSBp
dGVyYXRvci0+dmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwCmluZGV4IDk3
ODJkMjg0NjBjYThmZDA5YzU4ZTcxYTVkN2NjOGJlNTRkNDVjMDYuLmYwOGFlYmU3MmU3ZTI5NGFi
NDlmZGQ1YWQ3MDNiZTVkMjYxZjJiOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIu
Y3BwCkBAIC01NCwxMyArNTQsMTMgQEAgRGlzcGxheVJlZnJlc2hNb25pdG9yKiBEaXNwbGF5UmVm
cmVzaE1vbml0b3JNYW5hZ2VyOjpjcmVhdGVNb25pdG9yRm9yQ2xpZW50KERpc3AKICAgICAgICAg
cmV0dXJuIG1vbml0b3IuZ2V0KCk7CiAgICAgfQogCi0gICAgUmVmUHRyPERpc3BsYXlSZWZyZXNo
TW9uaXRvcj4gbW9uaXRvciA9IERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6Y3JlYXRlKGNsaWVudCk7
CisgICAgYXV0byBtb25pdG9yID0gRGlzcGxheVJlZnJlc2hNb25pdG9yOjpjcmVhdGUoY2xpZW50
KTsKICAgICBpZiAoIW1vbml0b3IpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgbW9u
aXRvci0+YWRkQ2xpZW50KGNsaWVudCk7CiAgICAgRGlzcGxheVJlZnJlc2hNb25pdG9yKiByZXN1
bHQgPSBtb25pdG9yLmdldCgpOwotICAgIG1fbW9uaXRvcnMuYXBwZW5kKG1vbml0b3IucmVsZWFz
ZSgpKTsKKyAgICBtX21vbml0b3JzLmFwcGVuZChXVEZNb3ZlKG1vbml0b3IpKTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYXNjYWRlRm9udHMuY3BwCmluZGV4IGMzZjIzMjYwMWE4MDBiMjVmZGQwOWI5NGMy
MDUxNGQxYjJlZWMwNTcuLmQzNmVkMDkyNzRlM2I3ZGE4NTJiZWEyY2FmOTQ4MmJkNGUxYzhlZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRl
Rm9udHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNj
YWRlRm9udHMuY3BwCkBAIC0zMjQsNyArMzI0LDcgQEAgR2x5cGhEYXRhIEZvbnRDYXNjYWRlRm9u
dHM6OmdseXBoRGF0YUZvclN5c3RlbUZhbGxiYWNrKFVDaGFyMzIgYywgY29uc3QgRm9udENhc2MK
ICAgICBpZiAoIW9yaWdpbmFsRm9udCkKICAgICAgICAgb3JpZ2luYWxGb250ID0gJnByaW1hcnlS
YW5nZXMuZm9udEZvckZpcnN0UmFuZ2UoKTsKIAotICAgIFJlZlB0cjxGb250PiBzeXN0ZW1GYWxs
YmFja0ZvbnQgPSBvcmlnaW5hbEZvbnQtPnN5c3RlbUZhbGxiYWNrRm9udEZvckNoYXJhY3Rlcihj
LCBkZXNjcmlwdGlvbiwgbV9pc0ZvclBsYXRmb3JtRm9udCk7CisgICAgYXV0byBzeXN0ZW1GYWxs
YmFja0ZvbnQgPSBvcmlnaW5hbEZvbnQtPnN5c3RlbUZhbGxiYWNrRm9udEZvckNoYXJhY3Rlcihj
LCBkZXNjcmlwdGlvbiwgbV9pc0ZvclBsYXRmb3JtRm9udCk7CiAgICAgaWYgKCFzeXN0ZW1GYWxs
YmFja0ZvbnQpCiAgICAgICAgIHJldHVybiBHbHlwaERhdGEoKTsKIApAQCAtMzQ4LDcgKzM0OCw3
IEBAIEdseXBoRGF0YSBGb250Q2FzY2FkZUZvbnRzOjpnbHlwaERhdGFGb3JTeXN0ZW1GYWxsYmFj
ayhVQ2hhcjMyIGMsIGNvbnN0IEZvbnRDYXNjCiAKICAgICAvLyBLZWVwIHRoZSBzeXN0ZW0gZmFs
bGJhY2sgZm9udHMgd2UgdXNlIGFsaXZlLgogICAgIGlmIChmYWxsYmFja0dseXBoRGF0YS5nbHlw
aCkKLSAgICAgICAgbV9zeXN0ZW1GYWxsYmFja0ZvbnRTZXQuYWRkKHN5c3RlbUZhbGxiYWNrRm9u
dC5yZWxlYXNlKCkpOworICAgICAgICBtX3N5c3RlbUZhbGxiYWNrRm9udFNldC5hZGQoV1RGTW92
ZShzeXN0ZW1GYWxsYmFja0ZvbnQpKTsKIAogICAgIHJldHVybiBmYWxsYmFja0dseXBoRGF0YTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcApp
bmRleCBiOWI5MjMxOTBjNWYzMjVlMTMyZGViNjVmZDc3NWFjNjk5YTQxZjU1Li40ZjJmYjViYjVk
Mjk1NjQwOGM3MzNiMDk5N2VhNzM5Y2NiNTE3YTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Ri5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCkBAIC00MDUsNyArNDA1LDcgQEAgdm9pZCBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQXR0cmlidXRlZFN0cmluZ3MoQ0ZBcnJh
eVJlZiBhdHRyaWJ1dGVkU3QKICAgICAgICAgCiAgICAgICAgIExPRyhNZWRpYSwgIkluYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWUoJXApIC0gYWRkaW5nIGN1ZSBcIiVzXCIgZm9y
IHRpbWUgPSAlLjJmLCBlbmQgPSAlLjJmLCBwb3NpdGlvbiA9ICAlLjJmLCBsaW5lID0gICUuMmYi
LCB0aGlzLCBjdWVEYXRhLT5jb250ZW50KCkudXRmOCgpLmRhdGEoKSwgY3VlRGF0YS0+c3RhcnRU
aW1lKCkudG9Eb3VibGUoKSwgY3VlRGF0YS0+ZW5kVGltZSgpLnRvRG91YmxlKCksIGN1ZURhdGEt
PnBvc2l0aW9uKCksIGN1ZURhdGEtPmxpbmUoKSk7CiAKLSAgICAgICAgY2xpZW50KCktPmFkZEdl
bmVyaWNDdWUodGhpcywgY3VlRGF0YS5yZWxlYXNlKCkpOworICAgICAgICBjbGllbnQoKS0+YWRk
R2VuZXJpY0N1ZSh0aGlzLCBXVEZNb3ZlKGN1ZURhdGEpKTsKICAgICB9CiAKICAgICBtX3BlbmRp
bmdDdWVTdGF0dXMgPSBzZWVraW5nKCkgPyBEZWxpdmVyZWREdXJpbmdTZWVrIDogVmFsaWQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
TWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMubW0KaW5kZXgg
ZDEzNmQ4NzM2OTMzMmNjN2E5NzNkMDE0OWQ0NmI4YjYzOGFmY2NmMy4uMTBkMmIyMTU0ZmZhOTc0
YTFhNzkxMzA3OWVhNGVhNmRkODQ3OTljMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRp
YVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5tbQpAQCAtMTI5LDEwICsxMjksMTAgQEAgdm9pZCBNZWRp
YVNlbGVjdGlvbkdyb3VwQVZGT2JqQzo6dXBkYXRlT3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgY2hhcmFjdGVyaXMKICAgICBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uKiBzZWxlY3RlZE9wdGlv
biA9IFttX3BsYXllckl0ZW0gc2VsZWN0ZWRNZWRpYU9wdGlvbkluTWVkaWFTZWxlY3Rpb25Hcm91
cDptX21lZGlhU2VsZWN0aW9uR3JvdXAuZ2V0KCldOwogCiAgICAgZm9yIChBVk1lZGlhU2VsZWN0
aW9uT3B0aW9uKiBhZGRlZEFWT3B0aW9uIGluIGFkZGVkQVZPcHRpb25zLmdldCgpKSB7Ci0gICAg
ICAgIFJlZlB0cjxNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakM+IGFkZGVkT3B0aW9uID0gTWVk
aWFTZWxlY3Rpb25PcHRpb25BVkZPYmpDOjpjcmVhdGUoKnRoaXMsIGFkZGVkQVZPcHRpb24pOwor
ICAgICAgICBhdXRvIGFkZGVkT3B0aW9uID0gTWVkaWFTZWxlY3Rpb25PcHRpb25BVkZPYmpDOjpj
cmVhdGUoKnRoaXMsIGFkZGVkQVZPcHRpb24pOwogICAgICAgICBpZiAoYWRkZWRBVk9wdGlvbiA9
PSBzZWxlY3RlZE9wdGlvbikKICAgICAgICAgICAgIG1fc2VsZWN0ZWRPcHRpb24gPSBhZGRlZE9w
dGlvbi5nZXQoKTsKLSAgICAgICAgbV9vcHRpb25zLnNldChhZGRlZEFWT3B0aW9uLCBhZGRlZE9w
dGlvbi5yZWxlYXNlKCkpOworICAgICAgICBtX29wdGlvbnMuc2V0KGFkZGVkQVZPcHRpb24sIFdU
Rk1vdmUoYWRkZWRPcHRpb24pKTsKICAgICB9CiAKICAgICBpZiAoIW1fc2hvdWxkU2VsZWN0T3B0
aW9uQXV0b21hdGljYWxseSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggZjhmNmIyNTE1NGQ3NjVmMWQwYWJmNjdlOTRh
ZWI0ZDdiNmZlNzY5Yi4uYTlkNTc4ZmE4YWEyZGVhYTMxYTNmMjBlNWRmODE3OThhYjA3MDdjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakMubW0KQEAgLTY5Niw3ICs2OTYsNyBAQCBib29sIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjpwcm9jZXNzQ29kZWRGcmFtZShpbnQgdHJhY2tJRCwgQ01TYW1wbGVCdWZmZXJSZQogICAg
IGlmIChtX2NsaWVudCkgewogICAgICAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IG1lZGlhU2FtcGxl
ID0gTWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGUoc2FtcGxlQnVmZmVyLCB0cmFja0lEKTsKICAg
ICAgICAgTE9HKE1lZGlhU291cmNlU2FtcGxlcywgIlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
Ojpwcm9jZXNzQ29kZWRGcmFtZSglcCkgLSBzYW1wbGUoJXMpIiwgdGhpcywgdG9TdHJpbmcoKm1l
ZGlhU2FtcGxlKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZl
clByaXZhdGVEaWRSZWNlaXZlU2FtcGxlKHRoaXMsIG1lZGlhU2FtcGxlLnJlbGVhc2UoKSk7Cisg
ICAgICAgIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZVNhbXBsZSh0aGlz
LCBXVEZNb3ZlKG1lZGlhU2FtcGxlKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVy
Q0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXll
ckNBLmNwcAppbmRleCA0ZGE2N2YyYjFmNzY2MTJjZWFjZjM1Y2QyODYyNjc5ZjYwMjQxYjkzLi44
ODM3M2M4ZWNiNjkyZWY2NjgyY2EzZTMxMzk1NmE5NzkxY2EyMWM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAK
QEAgLTM4MTUsOCArMzgxNSw4IEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGlj
c0xheWVyQ0E6OmZldGNoQ2xvbmVMYXllcnMoR3JhcGhpY3NMYXllciogcmVwCiAKICAgICAgICAg
Zm9yIChhdXRvKiBjaGlsZExheWVyIDogY2hpbGRMYXllcnMpIHsKICAgICAgICAgICAgIEdyYXBo
aWNzTGF5ZXJDQSYgY2hpbGRMYXllckNBID0gZG93bmNhc3Q8R3JhcGhpY3NMYXllckNBPigqY2hp
bGRMYXllcik7Ci0gICAgICAgICAgICBpZiAoUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gcGxhdGZv
cm1MYXllciA9IGNoaWxkTGF5ZXJDQS5mZXRjaENsb25lTGF5ZXJzKHJlcGxpY2FSb290LCByZXBs
aWNhU3RhdGUsIEludGVybWVkaWF0ZUNsb25lTGV2ZWwpKQotICAgICAgICAgICAgICAgIGNsb25h
bFN1YmxheWVycy5hcHBlbmQocGxhdGZvcm1MYXllci5yZWxlYXNlKCkpOworICAgICAgICAgICAg
aWYgKGF1dG8gcGxhdGZvcm1MYXllciA9IGNoaWxkTGF5ZXJDQS5mZXRjaENsb25lTGF5ZXJzKHJl
cGxpY2FSb290LCByZXBsaWNhU3RhdGUsIEludGVybWVkaWF0ZUNsb25lTGV2ZWwpKQorICAgICAg
ICAgICAgICAgIGNsb25hbFN1YmxheWVycy5hcHBlbmQoV1RGTW92ZShwbGF0Zm9ybUxheWVyKSk7
CiAgICAgICAgIH0KIAogICAgICAgICByZXBsaWNhU3RhdGUucG9wKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcApp
bmRleCA0YzlkNzE1MmQ5ODIxNDBkZWRjZDUwNGNmZWE0MGM4NDU4NGI4NzBhLi4wMGEyNTczYWZm
MTJlZjg5ZGIyYTUxMDgxM2JmZTBjOWUzYWQxMTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAKQEAgLTEzNSwx
MyArMTM1LDEzIEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBQbGF0Zm9ybUNBTGF5ZXI6
OmNyZWF0ZUNvbXBhdGlibGVMYXllck9yVGFrZUZyb21Qb29sCiAKICAgICBpZiAoKGxheWVyID0g
bGF5ZXJQb29sKCkudGFrZUxheWVyV2l0aFNpemUoc2l6ZSkpKSB7CiAgICAgICAgIGxheWVyLT5z
ZXRPd25lcihjbGllbnQpOwotICAgICAgICByZXR1cm4gbGF5ZXIucmVsZWFzZSgpOworICAgICAg
ICByZXR1cm4gV1RGTW92ZShsYXllcik7CiAgICAgfQogCiAgICAgbGF5ZXIgPSBjcmVhdGVDb21w
YXRpYmxlTGF5ZXIobGF5ZXJUeXBlLCBjbGllbnQpOwogICAgIGxheWVyLT5zZXRCb3VuZHMoRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSkpOwogICAgIAotICAgIHJldHVybiBsYXllci5yZWxl
YXNlKCk7CisgICAgcmV0dXJuIFdURk1vdmUobGF5ZXIpOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FM
YXllcjo6bW92ZVRvTGF5ZXJQb29sKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmNwcAppbmRleCBmYTYzNGM4NmM0
MzQ1YmUxYmU3ZWI1NjU3MDhkNjQ3YWEwYTlkYzI0Li41ZjUwZjljYzAxMjVjY2ZhYzZiZjYyN2Y1
M2Q2MGM1ZDEyYTUxZTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwCkBAIC05Niw3ICs5Niw3IEBAIFJl
ZlB0cjxVaW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXJEYXRhOjpnZXREYXRhKGNvbnN0IElu
dFJlY3QmIHJlY3QsIGNvbnN0IEluCiAgICAgaWYgKGFyZWEuaGFzT3ZlcmZsb3dlZCgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gcmVz
dWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoYXJlYS51bnNhZmVH
ZXQoKSk7CisgICAgYXV0byByZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0
aWFsaXplZChhcmVhLnVuc2FmZUdldCgpKTsKICAgICB1bnNpZ25lZCBjaGFyKiByZXN1bHREYXRh
ID0gcmVzdWx0LT5kYXRhKCk7CiAgICAgaWYgKCFyZXN1bHREYXRhKSB7CiAgICAgICAgIFdURkxv
Z0Fsd2F5cygiSW1hZ2VCdWZmZXJEYXRhOiBVbmFibGUgdG8gY3JlYXRlIGJ1ZmZlci4gUmVxdWVz
dGVkIHNpemUgd2FzICVkIHggJWQgPSAldVxuIiwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgp
LCBhcmVhLnVuc2FmZUdldCgpKTsKQEAgLTEzOSw3ICsxMzksNyBAQCBSZWZQdHI8VWludDhDbGFt
cGVkQXJyYXk+IEltYWdlQnVmZmVyRGF0YTo6Z2V0RGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBj
b25zdCBJbgogICAgIENoZWNrZWQ8aW50PiBoZWlnaHQgPSBlbmR5IC0gb3JpZ2lueTsKICAgICAK
ICAgICBpZiAod2lkdGgudW5zYWZlR2V0KCkgPD0gMCB8fCBoZWlnaHQudW5zYWZlR2V0KCkgPD0g
MCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgCiAgICAgdW5zaWduZWQgZGVzdEJ5dGVzUGVyUm93ID0gNCAqIHJlY3Qud2lkdGgo
KTsKICAgICB1bnNpZ25lZCBjaGFyKiBkZXN0Um93cyA9IHJlc3VsdERhdGEgKyBkZXN0eSAqIGRl
c3RCeXRlc1BlclJvdyArIGRlc3R4ICogNDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAppbmRleCBjYmU1MTI4
ZjllNjI2NzJiYTFjZmUyN2IwNWNlMzI2MzA0ZGEyNjdkLi41ZTQ3YTQwNjhkODJjM2M1MGU4MzU5
ZGUwNjc2ZDM4ODdlMDhmMDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBAIC0yMzcsOSArMjM3LDkg
QEAgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gRmlsdGVyRWZmZWN0Ojphc1VubXVsdGlw
bGllZEltYWdlKGNvbnN0IEludFJlY3QmIHIKICAgICBJbnRTaXplIHNjYWxlZFNpemUocmVjdC5z
aXplKCkpOwogICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHNjYWxl
ZFNpemUpKTsKICAgICBzY2FsZWRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRlclNjYWxlKCkpOwot
ICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gaW1hZ2VEYXRhID0gVWludDhDbGFtcGVkQXJy
YXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2NhbGVkU2l6ZS53aWR0aCgpICogc2NhbGVkU2l6ZS5o
ZWlnaHQoKSAqIDQpOworICAgIGF1dG8gaW1hZ2VEYXRhID0gVWludDhDbGFtcGVkQXJyYXk6OmNy
ZWF0ZVVuaW5pdGlhbGl6ZWQoc2NhbGVkU2l6ZS53aWR0aCgpICogc2NhbGVkU2l6ZS5oZWlnaHQo
KSAqIDQpOwogICAgIGNvcHlVbm11bHRpcGxpZWRJbWFnZShpbWFnZURhdGEuZ2V0KCksIHJlY3Qp
OwotICAgIHJldHVybiBpbWFnZURhdGEucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKGlt
YWdlRGF0YSk7CiB9CiAKIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVj
dDo6YXNQcmVtdWx0aXBsaWVkSW1hZ2UoY29uc3QgSW50UmVjdCYgcmVjdCkKQEAgLTI0Nyw5ICsy
NDcsOSBAQCBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBGaWx0ZXJFZmZlY3Q6OmFzUHJl
bXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJlY3QmCiAgICAgSW50U2l6ZSBzY2FsZWRTaXplKHJl
Y3Quc2l6ZSgpKTsKICAgICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhz
Y2FsZWRTaXplKSk7CiAgICAgc2NhbGVkU2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgp
KTsKLSAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGltYWdlRGF0YSA9IFVpbnQ4Q2xhbXBl
ZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKHNjYWxlZFNpemUud2lkdGgoKSAqIHNjYWxlZFNp
emUuaGVpZ2h0KCkgKiA0KTsKKyAgICBhdXRvIGltYWdlRGF0YSA9IFVpbnQ4Q2xhbXBlZEFycmF5
OjpjcmVhdGVVbmluaXRpYWxpemVkKHNjYWxlZFNpemUud2lkdGgoKSAqIHNjYWxlZFNpemUuaGVp
Z2h0KCkgKiA0KTsKICAgICBjb3B5UHJlbXVsdGlwbGllZEltYWdlKGltYWdlRGF0YS5nZXQoKSwg
cmVjdCk7Ci0gICAgcmV0dXJuIGltYWdlRGF0YS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1v
dmUoaW1hZ2VEYXRhKTsKIH0KIAogaW5saW5lIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5SW1hZ2VC
eXRlcyhVaW50OENsYW1wZWRBcnJheSogc291cmNlLCBVaW50OENsYW1wZWRBcnJheSogZGVzdGlu
YXRpb24sIGNvbnN0IEludFJlY3QmIHJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KaW5kZXggZmEwMTFhYTg4MTYzMDMwMDA5NDQ5OGVi
YzBmZmNhOWZiOWMzMDM0Yi4uMDFlYjZkZDMwMDQzYTIyNTI5MTc2ZmQ5MTIxMTdkYzU3NzZjMTdi
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdl
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1h
Yy5tbQpAQCAtNjgsOSArNjgsOSBAQCBQYXNzUmVmUHRyPEltYWdlPiBJbWFnZTo6bG9hZFBsYXRm
b3JtUmVzb3VyY2UoY29uc3QgY2hhciAqbmFtZSkKICAgICBOU1N0cmluZyAqaW1hZ2VQYXRoID0g
W2J1bmRsZSBwYXRoRm9yUmVzb3VyY2U6W05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOm5h
bWVdIG9mVHlwZTpAInBuZyJdOwogICAgIE5TRGF0YSAqbmFtZWRJbWFnZURhdGEgPSBbTlNEYXRh
IGRhdGFXaXRoQ29udGVudHNPZkZpbGU6aW1hZ2VQYXRoXTsKICAgICBpZiAobmFtZWRJbWFnZURh
dGEpIHsKLSAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUo
KTsKKyAgICAgICAgYXV0byBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAgICAgICAg
aW1hZ2UtPnNldERhdGEoU2hhcmVkQnVmZmVyOjp3cmFwTlNEYXRhKG5hbWVkSW1hZ2VEYXRhKSwg
dHJ1ZSk7Ci0gICAgICAgIHJldHVybiBpbWFnZS5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBX
VEZNb3ZlKGltYWdlKTsKICAgICB9CiAKICAgICAvLyBXZSBoYXZlIHJlcG9ydHMgaW5kaWNhdGlu
ZyByZXNvdXJjZSBsb2FkcyBhcmUgZmFpbGluZywgYnV0IHdlIGRvbid0IHlldCBrbm93IHRoZSBy
b290IGNhdXNlKHMpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1v
bi5jcHAKaW5kZXggMDQ4OTUzNmQzYmQwY2JiZjdiMmJkYjA3YTZiYzJkYjg1Yjk0OTllNy4uYTQ4
NTkyYTgxMGFmMDc0OWY0ZmU5ODEwMWY3ZDFiMTZhYzZhOTI5ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdM
Q29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCkBAIC0xMzIsOCArMTMyLDEwIEBAIHN0
YXRpYyB1aW50NjRfdCBuYW1lSGFzaEZvclNoYWRlcihjb25zdCBjaGFyKiBuYW1lLCBzaXplX3Qg
bGVuZ3RoKQogCiBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQz
RDo6Y3JlYXRlRm9yQ3VycmVudEdMQ29udGV4dCgpCiB7Ci0gICAgUmVmUHRyPEdyYXBoaWNzQ29u
dGV4dDNEPiBjb250ZXh0ID0gYWRvcHRSZWYobmV3IEdyYXBoaWNzQ29udGV4dDNEKEF0dHJpYnV0
ZXMoKSwgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclRvQ3VycmVudEdMQ29udGV4dCkpOwot
ICAgIHJldHVybiBjb250ZXh0LT5tX3ByaXZhdGUgPyBjb250ZXh0LnJlbGVhc2UoKSA6IDA7Cisg
ICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYoKm5ldyBHcmFwaGljc0NvbnRleHQzRChBdHRyaWJ1
dGVzKCksIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJUb0N1cnJlbnRHTENvbnRleHQpKTsK
KyAgICBpZiAoIWNvbnRleHQtPm1fcHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgcmV0dXJuIFdURk1vdmUoY29udGV4dCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OnZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVu
c2lvbikKQEAgLTIwNSw3ICsyMDcsNyBAQCBQYXNzUmVmUHRyPEltYWdlRGF0YT4gR3JhcGhpY3ND
b250ZXh0M0Q6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkKICAgICBpZiAobV9h
dHRycy5wcmVtdWx0aXBsaWVkQWxwaGEpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRy
PEltYWdlRGF0YT4gaW1hZ2VEYXRhID0gSW1hZ2VEYXRhOjpjcmVhdGUoSW50U2l6ZShtX2N1cnJl
bnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0KSk7CisgICAgYXV0byBpbWFnZURhdGEgPSBJbWFnZURh
dGE6OmNyZWF0ZShJbnRTaXplKG1fY3VycmVudFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQpKTsKICAg
ICB1bnNpZ25lZCBjaGFyKiBwaXhlbHMgPSBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpOwogICAg
IGludCB0b3RhbEJ5dGVzID0gNCAqIG1fY3VycmVudFdpZHRoICogbV9jdXJyZW50SGVpZ2h0Owog
CkBAIC0yMTUsNyArMjE3LDcgQEAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29udGV4
dDNEOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpCiAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCB0b3RhbEJ5dGVzOyBpICs9IDQpCiAgICAgICAgIHN0ZDo6c3dhcChwaXhlbHNbaV0s
IHBpeGVsc1tpICsgMl0pOwogCi0gICAgcmV0dXJuIGltYWdlRGF0YS5yZWxlYXNlKCk7CisgICAg
cmV0dXJuIFdURk1vdmUoaW1hZ2VEYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
cHJlcGFyZVRleHR1cmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJN
YWMuY3BwCmluZGV4IGRlYTdhN2MyOTc0ZTNkOGE5ZTBkYjgxNzdkOTZiOWU0ZTJmMThjMGQuLjlh
MWIyZDY5NmM3Y2YwOWI5NTdmNGNmMjk4NGEyMGUzODFjODY3MDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAKQEAgLTExNiwxMCArMTE2LDEwIEBAIHZv
aWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1Jl
ZlB0cjxNZWRpYVN0cmVhbUNyZWF0CiAgICAgICAgIH0KICAgICAgICAgLy8gRklYTUU6IENvbnNp
ZGVyIHRoZSBjb25zdHJhaW50cyB3aGVuIGNob29zaW5nIGFtb25nIG11bHRpcGxlIGRldmljZXMu
IEZvciBub3cganVzdCBzZWxlY3QgdGhlIGZpcnN0IGF2YWlsYWJsZQogICAgICAgICAvLyBkZXZp
Y2Ugb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUuCi0gICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlh
U291cmNlPiBhdWRpb1NvdXJjZSA9IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigp
LmJlc3RTb3VyY2VzRm9yVHlwZUFuZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1
ZGlvLCBhdWRpb0NvbnN0cmFpbnRzLmdldCgpKS5hdCgwKTsKKyAgICAgICAgYXV0byBhdWRpb1Nv
dXJjZSA9IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpLmJlc3RTb3VyY2VzRm9y
VHlwZUFuZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBhdWRpb0NvbnN0
cmFpbnRzLmdldCgpKS5hdCgwKTsKICAgICAgICAgQVNTRVJUKGF1ZGlvU291cmNlKTsKICAgICAg
ICAgCi0gICAgICAgIGF1ZGlvU291cmNlcy5hcHBlbmQoYXVkaW9Tb3VyY2UucmVsZWFzZSgpKTsK
KyAgICAgICAgYXVkaW9Tb3VyY2VzLmFwcGVuZChXVEZNb3ZlKGF1ZGlvU291cmNlKSk7CiAgICAg
fQogICAgIAogICAgIGlmICh2aWRlb0NvbnN0cmFpbnRzKSB7CkBAIC0xMzEsMTAgKzEzMSwxMCBA
QCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OmNyZWF0ZU1lZGlhU3RyZWFtKFBh
c3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdAogICAgICAgICB9CiAgICAgICAgIC8vIEZJWE1FOiBD
b25zaWRlciB0aGUgY29uc3RyYWludHMgd2hlbiBjaG9vc2luZyBhbW9uZyBtdWx0aXBsZSBkZXZp
Y2VzLiBGb3Igbm93IGp1c3Qgc2VsZWN0IHRoZSBmaXJzdCBhdmFpbGFibGUKICAgICAgICAgLy8g
ZGV2aWNlIG9mIHRoZSBhcHByb3ByaWF0ZSB0eXBlLgotICAgICAgICBSZWZQdHI8UmVhbHRpbWVN
ZWRpYVNvdXJjZT4gdmlkZW9Tb3VyY2UgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0
b24oKS5iZXN0U291cmNlc0ZvclR5cGVBbmRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNl
OjpWaWRlbywgdmlkZW9Db25zdHJhaW50cy5nZXQoKSkuYXQoMCk7CisgICAgICAgIGF1dG8gdmlk
ZW9Tb3VyY2UgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5iZXN0U291cmNl
c0ZvclR5cGVBbmRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywgdmlkZW9D
b25zdHJhaW50cy5nZXQoKSkuYXQoMCk7CiAgICAgICAgIEFTU0VSVCh2aWRlb1NvdXJjZSk7CiAg
ICAgICAgIAotICAgICAgICB2aWRlb1NvdXJjZXMuYXBwZW5kKHZpZGVvU291cmNlLnJlbGVhc2Uo
KSk7CisgICAgICAgIHZpZGVvU291cmNlcy5hcHBlbmQoV1RGTW92ZSh2aWRlb1NvdXJjZSkpOwog
ICAgIH0KICAgICAKICAgICBjbGllbnQtPmRpZENyZWF0ZVN0cmVhbShNZWRpYVN0cmVhbVByaXZh
dGU6OmNyZWF0ZShhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcykpOwpAQCAtMTQ3LDE0ICsxNDcs
MTQgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjOjpjcmVhdGVNZWRpYVN0cmVh
bShNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KgogICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVN
ZWRpYVNvdXJjZT4+IHZpZGVvU291cmNlczsKIAogICAgIGlmICghYXVkaW9EZXZpY2VJRC5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IGF1ZGlvU291cmNl
ID0gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuc291cmNlV2l0aFVJRChhdWRp
b0RldmljZUlELCBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbywgbnVsbHB0cik7CisgICAgICAg
IGF1dG8gYXVkaW9Tb3VyY2UgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5z
b3VyY2VXaXRoVUlEKGF1ZGlvRGV2aWNlSUQsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBu
dWxscHRyKTsKICAgICAgICAgaWYgKGF1ZGlvU291cmNlKQotICAgICAgICAgICAgYXVkaW9Tb3Vy
Y2VzLmFwcGVuZChhdWRpb1NvdXJjZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgYXVkaW9Tb3Vy
Y2VzLmFwcGVuZChXVEZNb3ZlKGF1ZGlvU291cmNlKSk7CiAgICAgfQogICAgIGlmICghdmlkZW9E
ZXZpY2VJRC5pc0VtcHR5KCkpIHsKLSAgICAgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+
IHZpZGVvU291cmNlID0gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuc291cmNl
V2l0aFVJRCh2aWRlb0RldmljZUlELCBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbywgbnVsbHB0
cik7CisgICAgICAgIGF1dG8gdmlkZW9Tb3VyY2UgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpz
aW5nbGV0b24oKS5zb3VyY2VXaXRoVUlEKHZpZGVvRGV2aWNlSUQsIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlZpZGVvLCBudWxscHRyKTsKICAgICAgICAgaWYgKHZpZGVvU291cmNlKQotICAgICAgICAg
ICAgdmlkZW9Tb3VyY2VzLmFwcGVuZCh2aWRlb1NvdXJjZS5yZWxlYXNlKCkpOworICAgICAgICAg
ICAgdmlkZW9Tb3VyY2VzLmFwcGVuZChXVEZNb3ZlKHZpZGVvU291cmNlKSk7CiAgICAgfQogCiAg
ICAgY2xpZW50LT5kaWRDcmVhdGVTdHJlYW0oTWVkaWFTdHJlYW1Qcml2YXRlOjpjcmVhdGUoYXVk
aW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKaW5k
ZXggYWFlODA4MzkxMTVmZjliYWZiOTQ4YzgyNTZmMzgzNGI0OGI4NmVlZS4uOGNjNmYwZjMzNTJj
MjMzMzhiNWUyOTA1MTJjZWU0ZWZlZmM0YWI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5j
cHAKQEAgLTgxLDggKzgxLDggQEAgdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6
dmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoTWVkaWFTdHJlYW1DcmVhdGkKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNl
PiBhdWRpb1NvdXJjZSA9IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGUoKTsKLSAgICAg
ICAgYXVkaW9Tb3VyY2VzLmFwcGVuZChhdWRpb1NvdXJjZS5yZWxlYXNlKCkpOworICAgICAgICBh
dXRvIGF1ZGlvU291cmNlID0gTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZSgpOworICAg
ICAgICBhdWRpb1NvdXJjZXMuYXBwZW5kKFdURk1vdmUoYXVkaW9Tb3VyY2UpKTsKICAgICB9CiAK
ICAgICBpZiAodmlkZW9Db25zdHJhaW50cykgewpAQCAtOTIsOCArOTIsOCBAQCB2b2lkIE1vY2tS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRp
YVN0cmVhbUNyZWF0aQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAg
UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IHZpZGVvU291cmNlID0gTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2U6OmNyZWF0ZSgpOwotICAgICAgICB2aWRlb1NvdXJjZXMuYXBwZW5kKHZpZGVvU291
cmNlLnJlbGVhc2UoKSk7CisgICAgICAgIGF1dG8gdmlkZW9Tb3VyY2UgPSBNb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZTo6Y3JlYXRlKCk7CisgICAgICAgIHZpZGVvU291cmNlcy5hcHBlbmQoV1RGTW92
ZSh2aWRlb1NvdXJjZSkpOwogICAgIH0KIAogICAgIGNsaWVudC0+Y29uc3RyYWludHNWYWxpZGF0
ZWQoYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMpOwpAQCAtMTE1LDggKzExNSw4IEBAIHZvaWQg
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQ
dHI8TWVkaWFTdHJlYW1DcmVhCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gYXVkaW9Tb3VyY2UgPSBNb2NrUmVhbHRp
bWVBdWRpb1NvdXJjZTo6Y3JlYXRlKCk7Ci0gICAgICAgIGF1ZGlvU291cmNlcy5hcHBlbmQoYXVk
aW9Tb3VyY2UucmVsZWFzZSgpKTsKKyAgICAgICAgYXV0byBhdWRpb1NvdXJjZSA9IE1vY2tSZWFs
dGltZUF1ZGlvU291cmNlOjpjcmVhdGUoKTsKKyAgICAgICAgYXVkaW9Tb3VyY2VzLmFwcGVuZChX
VEZNb3ZlKGF1ZGlvU291cmNlKSk7CiAgICAgfQogCiAgICAgaWYgKHZpZGVvQ29uc3RyYWludHMp
IHsKQEAgLTEyNiw4ICsxMjYsOCBAQCB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
OjpjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3Vy
Y2U+IHZpZGVvU291cmNlID0gTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmNyZWF0ZSgpOwotICAg
ICAgICB2aWRlb1NvdXJjZXMuYXBwZW5kKHZpZGVvU291cmNlLnJlbGVhc2UoKSk7CisgICAgICAg
IGF1dG8gdmlkZW9Tb3VyY2UgPSBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRlKCk7Cisg
ICAgICAgIHZpZGVvU291cmNlcy5hcHBlbmQoV1RGTW92ZSh2aWRlb1NvdXJjZSkpOwogICAgIH0K
ICAgICAKICAgICBjbGllbnQtPmRpZENyZWF0ZVN0cmVhbShNZWRpYVN0cmVhbVByaXZhdGU6OmNy
ZWF0ZShhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcykpOwpAQCAtMTQwLDEyICsxNDAsMTIgQEAg
dm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6Y3JlYXRlTWVkaWFTdHJlYW0oTWVk
aWFTdHJlYW1DcmVhdGlvbkNsaWVudCoKICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFT
b3VyY2U+PiB2aWRlb1NvdXJjZXM7CiAKICAgICBpZiAoIWF1ZGlvRGV2aWNlSUQuaXNFbXB0eSgp
ICYmIGF1ZGlvRGV2aWNlSUQgPT0gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6Om1vY2tBdWRpb1Nv
dXJjZVBlcnNpc3RlbnRJRCgpKSB7Ci0gICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNl
PiBhdWRpb1NvdXJjZSA9IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGUoKTsKLSAgICAg
ICAgYXVkaW9Tb3VyY2VzLmFwcGVuZChhdWRpb1NvdXJjZS5yZWxlYXNlKCkpOworICAgICAgICBh
dXRvIGF1ZGlvU291cmNlID0gTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZSgpOworICAg
ICAgICBhdWRpb1NvdXJjZXMuYXBwZW5kKFdURk1vdmUoYXVkaW9Tb3VyY2UpKTsKICAgICB9CiAg
ICAgaWYgKCF2aWRlb0RldmljZUlELmlzRW1wdHkoKSAmJiB2aWRlb0RldmljZUlEID09IE1vY2tS
ZWFsdGltZU1lZGlhU291cmNlOjptb2NrVmlkZW9Tb3VyY2VQZXJzaXN0ZW50SUQoKSkgewotICAg
ICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gdmlkZW9Tb3VyY2UgPSBNb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZTo6Y3JlYXRlKCk7Ci0gICAgICAgIHZpZGVvU291cmNlcy5hcHBlbmQodmlk
ZW9Tb3VyY2UucmVsZWFzZSgpKTsKKyAgICAgICAgYXV0byB2aWRlb1NvdXJjZSA9IE1vY2tSZWFs
dGltZVZpZGVvU291cmNlOjpjcmVhdGUoKTsKKyAgICAgICAgdmlkZW9Tb3VyY2VzLmFwcGVuZChX
VEZNb3ZlKHZpZGVvU291cmNlKSk7CiAgICAgfQogCiAgICAgY2xpZW50LT5kaWRDcmVhdGVTdHJl
YW0oTWVkaWFTdHJlYW1Qcml2YXRlOjpjcmVhdGUoYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lz
dHJ5SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3Ry
eUltcGwuY3BwCmluZGV4IDcyMGVmYzg3MWJmZDFlNGI0NTczNTA3ODdlNzNmODM2MzdiYTkxNTMu
LjY4MDYwMzU0ZTdlNTBlYmQ4NjdiMWQwODA5ZDNkMjdjM2U1MTRiYjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcApAQCAt
MTI1LDcgKzEyNSw3IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMKGNv
bnN0IFVSTCYgdXJsLCBWZWN0b3I8QmxvYlBhcnQ+IGJsb2JQYXJ0CiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKICAgICByZWdpc3RlckJsb2JSZXNvdXJjZUhhbmRsZUNvbnN0cnVjdG9yKCk7
CiAKLSAgICBSZWZQdHI8QmxvYkRhdGE+IGJsb2JEYXRhID0gQmxvYkRhdGE6OmNyZWF0ZShjb250
ZW50VHlwZSk7CisgICAgYXV0byBibG9iRGF0YSA9IEJsb2JEYXRhOjpjcmVhdGUoY29udGVudFR5
cGUpOwogCiAgICAgLy8gVGhlIGJsb2IgZGF0YSBpcyBzdG9yZWQgaW4gdGhlICJjYW5vbmljYWwi
IHdheS4gVGhhdCBpcywgaXQgb25seSBjb250YWlucyBhIGxpc3Qgb2YgRGF0YSBhbmQgRmlsZSBp
dGVtcy4KICAgICAvLyAxKSBUaGUgRGF0YSBpdGVtIGlzIGRlbm90ZWQgYnkgdGhlIHJhdyBkYXRh
IGFuZCB0aGUgcmFuZ2UuCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBCbG9iUmVnaXN0cnlJbXBs
OjpyZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4gYmxvYlBh
cnQKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fYmxvYnMuc2V0KHVybC5zdHJpbmcoKSwgYmxv
YkRhdGEucmVsZWFzZSgpKTsKKyAgICBtX2Jsb2JzLnNldCh1cmwuc3RyaW5nKCksIFdURk1vdmUo
YmxvYkRhdGEpKTsKIH0KIAogdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkwo
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMKQpAQCAtMjA4LDExICsyMDgsMTEgQEAg
dm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBVUkwm
IHVybCwgY29uc3QgVVJMJiBzcmNVUkwKICAgICAgICAgZW5kID0gb3JpZ2luYWxTaXplOwogCiAg
ICAgdW5zaWduZWQgbG9uZyBsb25nIG5ld0xlbmd0aCA9IGVuZCAtIHN0YXJ0OwotICAgIFJlZlB0
cjxCbG9iRGF0YT4gbmV3RGF0YSA9IEJsb2JEYXRhOjpjcmVhdGUob3JpZ2luYWxEYXRhLT5jb250
ZW50VHlwZSgpKTsKKyAgICBhdXRvIG5ld0RhdGEgPSBCbG9iRGF0YTo6Y3JlYXRlKG9yaWdpbmFs
RGF0YS0+Y29udGVudFR5cGUoKSk7CiAKLSAgICBhcHBlbmRTdG9yYWdlSXRlbXMobmV3RGF0YS5n
ZXQoKSwgb3JpZ2luYWxEYXRhLT5pdGVtcygpLCBzdGFydCwgbmV3TGVuZ3RoKTsKKyAgICBhcHBl
bmRTdG9yYWdlSXRlbXMobmV3RGF0YS5wdHIoKSwgb3JpZ2luYWxEYXRhLT5pdGVtcygpLCBzdGFy
dCwgbmV3TGVuZ3RoKTsKIAotICAgIG1fYmxvYnMuc2V0KHVybC5zdHJpbmcoKSwgbmV3RGF0YS5y
ZWxlYXNlKCkpOworICAgIG1fYmxvYnMuc2V0KHVybC5zdHJpbmcoKSwgV1RGTW92ZShuZXdEYXRh
KSk7CiB9CiAKIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6dW5yZWdpc3RlckJsb2JVUkwoY29uc3Qg
VVJMJiB1cmwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGUuY3BwCmluZGV4IGJjZTZiYTk3MzFiZjE5NDAxMTc2Y2NiZjZiZGQ3MGZkN2VlZjUy
MmYuLmI2YzY3YjdjZGUyNmE3NTNjOGFiMmUxY2MyMDE0OGJjYzc4ZmIwZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCkBAIC05
MywxMyArOTMsMTMgQEAgUmVmUHRyPFJlc291cmNlSGFuZGxlPiBSZXNvdXJjZUhhbmRsZTo6Y3Jl
YXRlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdAogICAgIGlmIChwcm90b2NvbE1h
cEl0ZW0gIT0gYnVpbHRpblJlc291cmNlSGFuZGxlQ29uc3RydWN0b3JNYXAoKS5lbmQoKSkKICAg
ICAgICAgcmV0dXJuIHByb3RvY29sTWFwSXRlbS0+dmFsdWUocmVxdWVzdCwgY2xpZW50KTsKIAot
ICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gbmV3SGFuZGxlKGFkb3B0UmVmKG5ldyBSZXNvdXJj
ZUhhbmRsZShjb250ZXh0LCByZXF1ZXN0LCBjbGllbnQsIGRlZmVyc0xvYWRpbmcsIHNob3VsZENv
bnRlbnRTbmlmZikpKTsKKyAgICBhdXRvIG5ld0hhbmRsZSA9IGFkb3B0UmVmKCpuZXcgUmVzb3Vy
Y2VIYW5kbGUoY29udGV4dCwgcmVxdWVzdCwgY2xpZW50LCBkZWZlcnNMb2FkaW5nLCBzaG91bGRD
b250ZW50U25pZmYpKTsKIAogICAgIGlmIChuZXdIYW5kbGUtPmQtPm1fc2NoZWR1bGVkRmFpbHVy
ZVR5cGUgIT0gTm9GYWlsdXJlKQotICAgICAgICByZXR1cm4gbmV3SGFuZGxlLnJlbGVhc2UoKTsK
KyAgICAgICAgcmV0dXJuIFdURk1vdmUobmV3SGFuZGxlKTsKIAogICAgIGlmIChuZXdIYW5kbGUt
PnN0YXJ0KCkpCi0gICAgICAgIHJldHVybiBuZXdIYW5kbGUucmVsZWFzZSgpOworICAgICAgICBy
ZXR1cm4gV1RGTW92ZShuZXdIYW5kbGUpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFt
Q0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0
cmVhbUNGTmV0LmNwcAppbmRleCA0ODYxMzNjYzg5Yzk5ZDZiMjQwNjUzMzFhNzJjNWQ5YTRkMDhk
NmQ1Li40MGViZjRkNjkwNjc1MjU1YWEzNjk0OTZhMzJmNDljYmU3NTkzNjc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJl
YW1DRk5ldC5jcHAKQEAgLTIwMCw3ICsyMDAsNyBAQCBzdGF0aWMgdm9pZCogZm9ybUNyZWF0ZShD
RlJlYWRTdHJlYW1SZWYgc3RyZWFtLCB2b2lkKiBjb250ZXh0KQogICAgIEZvcm1DcmVhdGlvbkNv
bnRleHQqIGZvcm1Db250ZXh0ID0gc3RhdGljX2Nhc3Q8Rm9ybUNyZWF0aW9uQ29udGV4dCo+KGNv
bnRleHQpOwogCiAgICAgRm9ybVN0cmVhbUZpZWxkcyogbmV3SW5mbyA9IG5ldyBGb3JtU3RyZWFt
RmllbGRzOwotICAgIG5ld0luZm8tPmZvcm1EYXRhID0gZm9ybUNvbnRleHQtPmZvcm1EYXRhLnJl
bGVhc2UoKTsKKyAgICBuZXdJbmZvLT5mb3JtRGF0YSA9IFdURk1vdmUoZm9ybUNvbnRleHQtPmZv
cm1EYXRhKTsKICAgICBuZXdJbmZvLT5jdXJyZW50U3RyZWFtID0gMDsKICAgICBuZXdJbmZvLT5j
dXJyZW50U3RyZWFtUmFuZ2VMZW5ndGggPSBCbG9iRGF0YUl0ZW06OnRvRW5kT2ZGaWxlOwogICAg
IG5ld0luZm8tPmZvcm1TdHJlYW0gPSBzdHJlYW07IC8vIERvbid0IHJldGFpbi4gVGhhdCB3b3Vs
ZCBjcmVhdGUgYSByZWZlcmVuY2UgY3ljbGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvQmlkaUNvbnRleHQuY3BwCmluZGV4IGU3ZTZlY2ZlY2VjMGFiYjhlMTJiY2M0ZWIyOGY2NGQ1
ZmFhNDZmMzYuLjk3N2RiZmQ3OTdkNTc4NTdmNDdlNDgxMTZiMTNkNDFjYWEzODg2ZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaUNvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaUNvbnRleHQuY3BwCkBAIC05Miw3ICs5
Miw3IEBAIFBhc3NSZWZQdHI8QmlkaUNvbnRleHQ+IEJpZGlDb250ZXh0Ojpjb3B5U3RhY2tSZW1v
dmluZ1VuaWNvZGVFbWJlZGRpbmdDb250ZXh0cygpCiAgICAgZm9yIChpbnQgaSA9IGNvbnRleHRz
LnNpemUoKSAtIDE7IGkgPiAwOyAtLWkpCiAgICAgICAgIHRvcENvbnRleHQgPSBjb3B5Q29udGV4
dEFuZFJlYmFzZWxpbmVMZXZlbChjb250ZXh0c1tpIC0gMV0sIHRvcENvbnRleHQuZ2V0KCkpOwog
Ci0gICAgcmV0dXJuIHRvcENvbnRleHQucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKHRv
cENvbnRleHQpOwogfQogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgQmlkaUNvbnRleHQmIGMxLCBj
b25zdCBCaWRpQ29udGV4dCYgYzIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zp
bHRlckVmZmVjdFJlbmRlcmVyLmNwcAppbmRleCBmNDdiM2JhNjE2MzdjYzI1NGVhYWYwOTNmMjc0
MWNlNGExZDExYjliLi5iYTUxMWNjYTZhOTgzYjBiMTE0YTEyZjk1YjQxNjJjOTU5MmFhZTY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5j
cHAKQEAgLTI4OCw3ICsyODgsNyBAQCBib29sIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZChS
ZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucwogICAgICAgICAg
ICAgICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKHByZXZpb3VzRWZmZWN0KTsKICAg
ICAgICAgICAgICAgICBtX2VmZmVjdHMuYXBwZW5kKGVmZmVjdCk7CiAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBwcmV2aW91c0VmZmVjdCA9IGVmZmVjdC5yZWxlYXNlKCk7CisgICAgICAgICAg
ICBwcmV2aW91c0VmZmVjdCA9IFdURk1vdmUoZWZmZWN0KTsKICAgICAgICAgfQogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggNmE2ZjExNjQ5OGQx
ODk1MzYyYTA3OGE4ZjliMDUxNmQxZTMxMGZiMC4uOTI5MDE0Y2U5YmZkNjMyZjU2ZTE3ZGI0NDU2
MDQ5M2ZhMzRjMWU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
CkBAIC0zMTE2LDcgKzMxMTYsNyBAQCBQYXNzUmVmUHRyPFNjcm9sbGJhcj4gUmVuZGVyTGF5ZXI6
OmNyZWF0ZVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdAogICAgICAgICB9
CiAgICAgfQogICAgIHJlbmRlcmVyKCkudmlldygpLmZyYW1lVmlldygpLmFkZENoaWxkKHdpZGdl
dC5nZXQoKSk7Ci0gICAgcmV0dXJuIHdpZGdldC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1v
dmUod2lkZ2V0KTsKIH0KIAogdm9pZCBSZW5kZXJMYXllcjo6ZGVzdHJveVNjcm9sbGJhcihTY3Jv
bGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMaXN0Qm94LmNwcAppbmRleCAyMzdjNmVhMjcyNDQxZGNkZjAyZTA5OGY2OTNjOTYxYjgw
MGUzMDBhLi41ZGFhNmY5NDM5ZWMzYzI1NmVhNzA5MzQwZmU1YTYzODQ5Mjk5ZTJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCkBAIC05MTEsNyArOTExLDcg
QEAgUGFzc1JlZlB0cjxTY3JvbGxiYXI+IFJlbmRlckxpc3RCb3g6OmNyZWF0ZVNjcm9sbGJhcigp
CiAgICAgICAgIH0KICAgICB9CiAgICAgdmlldygpLmZyYW1lVmlldygpLmFkZENoaWxkKHdpZGdl
dC5nZXQoKSk7Ci0gICAgcmV0dXJuIHdpZGdldC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1v
dmUod2lkZ2V0KTsKIH0KIAogdm9pZCBSZW5kZXJMaXN0Qm94OjpkZXN0cm95U2Nyb2xsYmFyKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCmluZGV4IDRkYjMz
YTAwODFhMzA1MTU5NzhhNGRmOTJhZWMxNzVhNGYwMTNkYTkuLmI4MDA5NDljZDc0NzAyZGZkMTE5
NGM1MWI1NDZkZTkxYmNkMmYyZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJNZW51TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck1lbnVMaXN0LmNwcApAQCAtNTc4LDcgKzU3OCw3IEBAIFBhc3NSZWZQdHI8U2Nyb2xsYmFyPiBS
ZW5kZXJNZW51TGlzdDo6Y3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxl
CiAgICAgICAgIHdpZGdldCA9IFJlbmRlclNjcm9sbGJhcjo6Y3JlYXRlQ3VzdG9tU2Nyb2xsYmFy
KHNjcm9sbGFibGVBcmVhLCBvcmllbnRhdGlvbiwgJnNlbGVjdEVsZW1lbnQoKSk7CiAgICAgZWxz
ZQogICAgICAgICB3aWRnZXQgPSBTY3JvbGxiYXI6OmNyZWF0ZU5hdGl2ZVNjcm9sbGJhcihzY3Jv
bGxhYmxlQXJlYSwgb3JpZW50YXRpb24sIGNvbnRyb2xTaXplKTsKLSAgICByZXR1cm4gd2lkZ2V0
LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92ZSh3aWRnZXQpOwogfQogCiBpbnQgUmVuZGVy
TWVudUxpc3Q6OmNsaWVudEluc2V0TGVmdCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcAppbmRleCAzZjVkMDNkYWNmMzA5NzE5MDQwNmUz
MGE4YmE4OWU2MDkwZWRmNjMyLi5mNWM2MjU5YWMwZTlkZTljMGZhYjJkYzNhZTc3YjU0ZGE1ZWMz
ZDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmll
bGQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5j
cHAKQEAgLTM1NCw3ICszNTQsNyBAQCBQYXNzUmVmUHRyPFNjcm9sbGJhcj4gUmVuZGVyU2VhcmNo
RmllbGQ6OmNyZWF0ZVNjcm9sbGJhcihTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYQogICAgICAgICB3
aWRnZXQgPSBSZW5kZXJTY3JvbGxiYXI6OmNyZWF0ZUN1c3RvbVNjcm9sbGJhcihzY3JvbGxhYmxl
QXJlYSwgb3JpZW50YXRpb24sICZpbnB1dEVsZW1lbnQoKSk7CiAgICAgZWxzZQogICAgICAgICB3
aWRnZXQgPSBTY3JvbGxiYXI6OmNyZWF0ZU5hdGl2ZVNjcm9sbGJhcihzY3JvbGxhYmxlQXJlYSwg
b3JpZW50YXRpb24sIGNvbnRyb2xTaXplKTsKLSAgICByZXR1cm4gd2lkZ2V0LnJlbGVhc2UoKTsK
KyAgICByZXR1cm4gV1RGTW92ZSh3aWRnZXQpOwogfQogCiBMYXlvdXRVbml0IFJlbmRlclNlYXJj
aEZpZWxkOjpjb21wdXRlTG9naWNhbEhlaWdodExpbWl0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlcGxheS9SZXBsYXlDb250cm9sbGVyLmNwcAppbmRleCA5MWEyOTUxNGE5NTg0MTIzNzNkNGQ3
OWEyNDk2ZTEwMjBmODg5YTQyLi5kMTA1MDFhMjZmNWUzZDYxMTBkNzA0MGZmOTdhMjQ5MDdiOWI3
MjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5Q29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuY3BwCkBAIC0y
ODQsNyArMjg0LDcgQEAgdm9pZCBSZXBsYXlDb250cm9sbGVyOjp1bmxvYWRTZWdtZW50KGJvb2wg
c3VwcHJlc3NOb3RpZmljYXRpb25zKQogICAgIExPRyhXZWJSZXBsYXksICIlLTIwcyBDbGVhcmlu
ZyBpbnB1dCBjdXJzb3JzIGZvciBwYWdlOiAlcFxuIiwgIlJlcGxheUNvbnRyb2xsZXIiLCAmbV9w
YWdlKTsKIAogICAgIG1fYWN0aXZlQ3Vyc29yID0gbnVsbHB0cjsKLSAgICBSZWZQdHI8UmVwbGF5
U2Vzc2lvblNlZ21lbnQ+IHVubG9hZGVkU2VnbWVudCA9IG1fbG9hZGVkU2VnbWVudC5yZWxlYXNl
KCk7CisgICAgYXV0byB1bmxvYWRlZFNlZ21lbnQgPSBXVEZNb3ZlKG1fbG9hZGVkU2VnbWVudCk7
CiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbV9wYWdlLm1haW5GcmFtZSgpOyBmcmFtZTsgZnJh
bWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGZyYW1lLT5zY3Jp
cHQoKS5nbG9iYWxPYmplY3QobWFpblRocmVhZE5vcm1hbFdvcmxkKCkpLT5zZXRJbnB1dEN1cnNv
cihtX2VtcHR5Q3Vyc29yLmNvcHlSZWYoKSk7CiAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5z
ZXRJbnB1dEN1cnNvcihtX2VtcHR5Q3Vyc29yLmNvcHlSZWYoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCmluZGV4IDEyZmEwYmI3
YzAxYTY1Mzk4YTQ0OTljYjE5ZjlmYzJmNGU5NTQ3YTYuLjFhMjA3MjA4YjNiYmVjMzM3OWRmOTFj
ZjQxYjcwOTNkNDYyZDM4YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC0xNzksNyArMTc5LDcgQEAgUmVmUHRyPEZpbHRl
ckVmZmVjdD4gU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWls
ZGVyKiBmaWx0ZXIKICAgICBpZiAoIWlucHV0MSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICBSZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNlID0gU1ZHRkVMaWdodEVsZW1lbnQ6
OmZpbmRMaWdodFNvdXJjZSh0aGlzKTsKKyAgICBhdXRvIGxpZ2h0U291cmNlID0gU1ZHRkVMaWdo
dEVsZW1lbnQ6OmZpbmRMaWdodFNvdXJjZSh0aGlzKTsKICAgICBpZiAoIWxpZ2h0U291cmNlKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTkwLDcgKzE5MCw3IEBAIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVp
bGRlciogZmlsdGVyCiAgICAgQ29sb3IgY29sb3IgPSByZW5kZXJlci0+c3R5bGUoKS5zdmdTdHls
ZSgpLmxpZ2h0aW5nQ29sb3IoKTsKIAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9
IEZFRGlmZnVzZUxpZ2h0aW5nOjpjcmVhdGUoZmlsdGVyLCBjb2xvciwgc3VyZmFjZVNjYWxlKCks
IGRpZmZ1c2VDb25zdGFudCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVu
aXRMZW5ndGhZKCksIGxpZ2h0U291cmNlLnJlbGVhc2UoKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsVW5pdExl
bmd0aFgoKSwga2VybmVsVW5pdExlbmd0aFkoKSwgV1RGTW92ZShsaWdodFNvdXJjZSkpOwogICAg
IGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7CiAgICAgcmV0dXJuIGVmZmVj
dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRp
bmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdF
bGVtZW50LmNwcAppbmRleCAxOWY1ZDM4OTQ1Y2E5NjNlOWZlZmQ5OGFhNDQwMjlmMzdjNDk1YWFi
Li42M2Y4NmUxZGJlYTIxMWNhY2JjYjdkYTQ0MjQ2MjA1ZDRhODU3NTc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC0x
OTAsNyArMTkwLDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVTcGVjdWxhckxpZ2h0aW5n
RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGUKICAgICBpZiAoIWlucHV0MSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0
U291cmNlID0gU1ZHRkVMaWdodEVsZW1lbnQ6OmZpbmRMaWdodFNvdXJjZSh0aGlzKTsKKyAgICBh
dXRvIGxpZ2h0U291cmNlID0gU1ZHRkVMaWdodEVsZW1lbnQ6OmZpbmRMaWdodFNvdXJjZSh0aGlz
KTsKICAgICBpZiAoIWxpZ2h0U291cmNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAt
MjAxLDcgKzIwMSw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFU3BlY3VsYXJMaWdodGlu
Z0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlCiAgICAgQ29sb3IgY29sb3Ig
PSByZW5kZXJlci0+c3R5bGUoKS5zdmdTdHlsZSgpLmxpZ2h0aW5nQ29sb3IoKTsKIAogICAgIFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFU3BlY3VsYXJMaWdodGluZzo6Y3JlYXRlKGZp
bHRlciwgY29sb3IsIHN1cmZhY2VTY2FsZSgpLCBzcGVjdWxhckNvbnN0YW50KCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjdWxhckV4cG9uZW50KCksIGtl
cm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIGxpZ2h0U291cmNlLnJlbGVh
c2UoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjdWxh
ckV4cG9uZW50KCksIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIFdU
Rk1vdmUobGlnaHRTb3VyY2UpKTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChp
bnB1dDEpOwogICAgIHJldHVybiBlZmZlY3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdMaXN0UHJvcGVydHkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eS5oCmluZGV4IDc3Nzg4ZTEwMjI0OGQ1MDI1MmM4MDE0
Zjc3YTA2NWQxYmFkOTU5ZGIuLjVkNDFlOTYwYjdlNDFiNzk4MWZiOTNkOThmNmY4MWE2ZTI1OGNh
NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9w
ZXJ0eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0
eS5oCkBAIC0yMDMsNyArMjAzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV93cmFwcGVycy0+
YXQoaW5kZXgpID0gd3JhcHBlcjsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiB3cmFwcGVy
LnJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUod3JhcHBlcik7CiAgICAgfQogCiAg
ICAgLy8gU1ZHTGlzdDo6aW5zZXJ0SXRlbUJlZm9yZSgpCkBAIC0yNTAsNyArMjUwLDcgQEAgcHVi
bGljOgogCiAgICAgICAgIC8vIFNwZWM6IElmIG5ld0l0ZW0gaXMgYWxyZWFkeSBpbiBhIGxpc3Qs
IGl0IGlzIHJlbW92ZWQgZnJvbSBpdHMgcHJldmlvdXMgbGlzdCBiZWZvcmUgaXQgaXMgaW5zZXJ0
ZWQgaW50byB0aGlzIGxpc3QuCiAgICAgICAgIGlmICghcHJvY2Vzc0luY29taW5nTGlzdEl0ZW1X
cmFwcGVyKG5ld0l0ZW0sICZpbmRleCkpCi0gICAgICAgICAgICByZXR1cm4gbmV3SXRlbS5yZWxl
YXNlKCk7CisgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShuZXdJdGVtKTsKIAogICAgICAgICAv
LyBTcGVjOiBJbnNlcnRzIGEgbmV3IGl0ZW0gaW50byB0aGUgbGlzdCBhdCB0aGUgc3BlY2lmaWVk
IHBvc2l0aW9uLiBUaGUgaW5kZXggb2YgdGhlIGl0ZW0gYmVmb3JlIHdoaWNoIHRoZSBuZXcgaXRl
bSBpcyB0byBiZQogICAgICAgICAvLyBpbnNlcnRlZC4gVGhlIGZpcnN0IGl0ZW0gaXMgbnVtYmVy
IDAuIElmIHRoZSBpbmRleCBpcyBlcXVhbCB0byAwLCB0aGVuIHRoZSBuZXcgaXRlbSBpcyBpbnNl
cnRlZCBhdCB0aGUgZnJvbnQgb2YgdGhlIGxpc3QuCkBAIC0yNjAsNyArMjYwLDcgQEAgcHVibGlj
OgogICAgICAgICBtX3dyYXBwZXJzLT5pbnNlcnQoaW5kZXgsIG5ld0l0ZW0pOwogCiAgICAgICAg
IGNvbW1pdENoYW5nZSgpOwotICAgICAgICByZXR1cm4gbmV3SXRlbTsKKyAgICAgICAgcmV0dXJu
IFdURk1vdmUobmV3SXRlbSk7CiAgICAgfQogCiAgICAgLy8gU1ZHTGlzdDo6cmVwbGFjZUl0ZW0o
KQpAQCAtMzg1LDcgKzM4NSw3IEBAIHB1YmxpYzoKICAgICAgICAgbV92YWx1ZXMtPnJlbW92ZShp
bmRleCk7CiAKICAgICAgICAgY29tbWl0Q2hhbmdlKCk7Ci0gICAgICAgIHJldHVybiBvbGRJdGVt
LnJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUob2xkSXRlbSk7CiAgICAgfQogCiAg
ICAgLy8gU1ZHTGlzdDo6YXBwZW5kSXRlbSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRo
cmVhZC5jcHAKaW5kZXggZDY4ODJkYjJjMTc3ZmRlMTcyN2YyMzEwZTI5MjBmZGJhZGZiN2Y0Ni4u
ZjZmNWE0ZGYxNDBlOGM3MjNiZjE4MzVmYTYxNTk2YTY3MDlmZTY5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgV29ya2Vy
VGhyZWFkOjp3b3JrZXJUaHJlYWQoKQogCiAgICAgewogICAgICAgICBMb2NrSG9sZGVyIGxvY2so
bV90aHJlYWRDcmVhdGlvbk11dGV4KTsKLSAgICAgICAgbV93b3JrZXJHbG9iYWxTY29wZSA9IGNy
ZWF0ZVdvcmtlckdsb2JhbFNjb3BlKG1fc3RhcnR1cERhdGEtPm1fc2NyaXB0VVJMLCBtX3N0YXJ0
dXBEYXRhLT5tX3VzZXJBZ2VudCwgbV9zdGFydHVwRGF0YS0+bV9jb250ZW50U2VjdXJpdHlQb2xp
Y3lSZXNwb25zZUhlYWRlcnMsIG1fc3RhcnR1cERhdGEtPm1fc2hvdWxkQnlwYXNzTWFpbldvcmxk
Q29udGVudFNlY3VyaXR5UG9saWN5LCBtX3N0YXJ0dXBEYXRhLT5tX3RvcE9yaWdpbi5yZWxlYXNl
KCkpOworICAgICAgICBtX3dvcmtlckdsb2JhbFNjb3BlID0gY3JlYXRlV29ya2VyR2xvYmFsU2Nv
cGUobV9zdGFydHVwRGF0YS0+bV9zY3JpcHRVUkwsIG1fc3RhcnR1cERhdGEtPm1fdXNlckFnZW50
LCBtX3N0YXJ0dXBEYXRhLT5tX2NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycywg
bV9zdGFydHVwRGF0YS0+bV9zaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xp
Y3ksIFdURk1vdmUobV9zdGFydHVwRGF0YS0+bV90b3BPcmlnaW4pKTsKIAogICAgICAgICBpZiAo
bV9ydW5Mb29wLnRlcm1pbmF0ZWQoKSkgewogICAgICAgICAgICAgLy8gVGhlIHdvcmtlciB3YXMg
dGVybWluYXRlZCBiZWZvcmUgdGhlIHRocmVhZCBoYWQgYSBjaGFuY2UgdG8gcnVuLiBTaW5jZSB0
aGUgY29udGV4dCBkaWRuJ3QgZXhpc3QgeWV0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVz
dC5jcHAKaW5kZXggZTVlYTc0MDViY2U5YjA2ZGQ3Y2M3MTE3M2FiNDRjYTVmNzc1OWQ0Mi4uODdj
ZGZhN2IxYTI4ZjM2MTU0OGYwYzEzYWRhZDhlNjdhNjIxOTBkZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuY3BwCkBAIC03OTgsNyArNzk4LDcgQEAgYm9vbCBYTUxIdHRwUmVxdWVz
dDo6aW50ZXJuYWxBYm9ydCgpCiAgICAgLy8gQ2FuY2VsbGluZyBtX2xvYWRlciBtYXkgdHJpZ2dl
ciBhIHdpbmRvdy5vbmxvYWQgY2FsbGJhY2sgd2hpY2ggY2FuIGNhbGwgb3BlbigpIG9uIHRoZSBz
YW1lIHhoci4KICAgICAvLyBUaGlzIHdvdWxkIGNyZWF0ZSBpbnRlcm5hbEFib3J0IHJlZW50cmFu
dCBjYWxsLgogICAgIC8vIG1fbG9hZGVyIGlzIHNldCB0byBudWxsIGJlZm9yZSBiZWluZyBjYW5j
ZWxsZWQgdG8gZXhpdCBlYXJseSBpbiBhbnkgcmVlbnRyYW50IGludGVybmFsQWJvcnQoKSBjYWxs
LgotICAgIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyPiBsb2FkZXIgPSBtX2xvYWRlci5yZWxlYXNl
KCk7CisgICAgYXV0byBsb2FkZXIgPSBXVEZNb3ZlKG1fbG9hZGVyKTsKICAgICBsb2FkZXItPmNh
bmNlbCgpOwogCiAgICAgLy8gSWYgd2luZG93Lm9ubG9hZCBjYWxsYmFjayBjYWxscyBvcGVuKCkg
YW5kIHNlbmQoKSBvbiB0aGUgc2FtZSB4aHIsIG1fbG9hZGVyIGlzIG5vdyBzZXQgdG8gYSBuZXcg
dmFsdWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhTdGVwLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YUGF0aFN0ZXAuY3BwCmluZGV4IDBhZTM0MDM2MDdjZjQ3ODYwMDZk
Njk3ODRiMmFkYmM3MjJmYjNmZmYuLmM1NTdlMTM2ZTg3YWRiYWQwNTE4ODFhYjE3NTcwMjM5YWZh
NDllMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFN0ZXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFN0ZXAuY3BwCkBAIC0zNDMsMTAgKzM0MywxMCBAQCB2
b2lkIFN0ZXA6Om5vZGVzSW5BeGlzKE5vZGUmIGNvbnRleHQsIE5vZGVTZXQmIG5vZGVzKSBjb25z
dAogCiAgICAgICAgICAgICAvLyBBdm9pZCBsYXppbHkgY3JlYXRpbmcgYXR0cmlidXRlIG5vZGVz
IGZvciBhdHRyaWJ1dGVzIHRoYXQgd2UgZG8gbm90IG5lZWQgYW55d2F5LgogICAgICAgICAgICAg
aWYgKG1fbm9kZVRlc3QubV9raW5kID09IE5vZGVUZXN0OjpOYW1lVGVzdCAmJiBtX25vZGVUZXN0
Lm1fZGF0YSAhPSBzdGFyQXRvbSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxBdHRyPiBhdHRy
ID0gY29udGV4dEVsZW1lbnQuZ2V0QXR0cmlidXRlTm9kZU5TKG1fbm9kZVRlc3QubV9uYW1lc3Bh
Y2VVUkksIG1fbm9kZVRlc3QubV9kYXRhKTsKKyAgICAgICAgICAgICAgICBhdXRvIGF0dHIgPSBj
b250ZXh0RWxlbWVudC5nZXRBdHRyaWJ1dGVOb2RlTlMobV9ub2RlVGVzdC5tX25hbWVzcGFjZVVS
SSwgbV9ub2RlVGVzdC5tX2RhdGEpOwogICAgICAgICAgICAgICAgIGlmIChhdHRyICYmIGF0dHIt
Pm5hbWVzcGFjZVVSSSgpICE9IFhNTE5TTmFtZXM6OnhtbG5zTmFtZXNwYWNlVVJJKSB7IC8vIElu
IFhQYXRoIGxhbmQsIG5hbWVzcGFjZSBub2RlcyBhcmUgbm90IGFjY2Vzc2libGUgb24gdGhlIGF0
dHJpYnV0ZSBheGlzLgogICAgICAgICAgICAgICAgICAgICBpZiAobm9kZU1hdGNoZXMoKmF0dHIs
IEF0dHJpYnV0ZUF4aXMsIG1fbm9kZVRlc3QpKSAvLyBTdGlsbCBuZWVkIHRvIGNoZWNrIG1lcmdl
ZCBwcmVkaWNhdGVzLgotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXMuYXBwZW5kKGF0dHIu
cmVsZWFzZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVzLmFwcGVuZChXVEZNb3Zl
KGF0dHIpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgfQpAQCAtMzU1LDkgKzM1NSw5IEBAIHZvaWQgU3RlcDo6bm9kZXNJbkF4aXMoTm9k
ZSYgY29udGV4dCwgTm9kZVNldCYgbm9kZXMpIGNvbnN0CiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgICAgICBmb3IgKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlIDogY29udGV4
dEVsZW1lbnQuYXR0cmlidXRlc0l0ZXJhdG9yKCkpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8
QXR0cj4gYXR0ciA9IGNvbnRleHRFbGVtZW50LmVuc3VyZUF0dHIoYXR0cmlidXRlLm5hbWUoKSk7
Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGVNYXRjaGVzKCphdHRyLCBBdHRyaWJ1dGVBeGlzLCBt
X25vZGVUZXN0KSkKLSAgICAgICAgICAgICAgICAgICAgbm9kZXMuYXBwZW5kKGF0dHIucmVsZWFz
ZSgpKTsKKyAgICAgICAgICAgICAgICBhdXRvIGF0dHIgPSBjb250ZXh0RWxlbWVudC5lbnN1cmVB
dHRyKGF0dHJpYnV0ZS5uYW1lKCkpOworICAgICAgICAgICAgICAgIGlmIChub2RlTWF0Y2hlcyhh
dHRyLmdldCgpLCBBdHRyaWJ1dGVBeGlzLCBtX25vZGVUZXN0KSkKKyAgICAgICAgICAgICAgICAg
ICAgbm9kZXMuYXBwZW5kKFdURk1vdmUoYXR0cikpOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2Uv
U3RvcmFnZUFyZWFJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlQXJlYUlt
cGwuY3BwCmluZGV4IDA4ZWExNjc2ZWM2NmNmNGY1NmFkMThiNWM0ZjQ5ZGRkYjc5ZmNhNmIuLmE2
NTUwZGExYWViZWY2NGI3YWNkMWViMmMyNjMwMGI2NzhiOTFjMzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCkBAIC0xMzksOSArMTM5LDkgQEAgdm9pZCBTdG9y
YWdlQXJlYUltcGw6OnNldEl0ZW0oRnJhbWUqIHNvdXJjZUZyYW1lLCBjb25zdCBTdHJpbmcmIGtl
eSwgY29uc3QgU3RyaW4KICAgICBibG9ja1VudGlsSW1wb3J0Q29tcGxldGUoKTsKIAogICAgIFN0
cmluZyBvbGRWYWx1ZTsKLSAgICBSZWZQdHI8U3RvcmFnZU1hcD4gbmV3TWFwID0gbV9zdG9yYWdl
TWFwLT5zZXRJdGVtKGtleSwgdmFsdWUsIG9sZFZhbHVlLCBxdW90YUV4Y2VwdGlvbik7CisgICAg
YXV0byBuZXdNYXAgPSBtX3N0b3JhZ2VNYXAtPnNldEl0ZW0oa2V5LCB2YWx1ZSwgb2xkVmFsdWUs
IHF1b3RhRXhjZXB0aW9uKTsKICAgICBpZiAobmV3TWFwKQotICAgICAgICBtX3N0b3JhZ2VNYXAg
PSBuZXdNYXAucmVsZWFzZSgpOworICAgICAgICBtX3N0b3JhZ2VNYXAgPSBXVEZNb3ZlKG5ld01h
cCk7CiAKICAgICBpZiAocXVvdGFFeGNlcHRpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTE2MSw5
ICsxNjEsOSBAQCB2b2lkIFN0b3JhZ2VBcmVhSW1wbDo6cmVtb3ZlSXRlbShGcmFtZSogc291cmNl
RnJhbWUsIGNvbnN0IFN0cmluZyYga2V5KQogICAgIGJsb2NrVW50aWxJbXBvcnRDb21wbGV0ZSgp
OwogCiAgICAgU3RyaW5nIG9sZFZhbHVlOwotICAgIFJlZlB0cjxTdG9yYWdlTWFwPiBuZXdNYXAg
PSBtX3N0b3JhZ2VNYXAtPnJlbW92ZUl0ZW0oa2V5LCBvbGRWYWx1ZSk7CisgICAgYXV0byBuZXdN
YXAgPSBtX3N0b3JhZ2VNYXAtPnJlbW92ZUl0ZW0oa2V5LCBvbGRWYWx1ZSk7CiAgICAgaWYgKG5l
d01hcCkKLSAgICAgICAgbV9zdG9yYWdlTWFwID0gbmV3TWFwLnJlbGVhc2UoKTsKKyAgICAgICAg
bV9zdG9yYWdlTWFwID0gV1RGTW92ZShuZXdNYXApOwogCiAgICAgaWYgKG9sZFZhbHVlLmlzTnVs
bCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVn
aW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9t
YWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbQppbmRleCBkNDll
ZjZlZTFiZDMxN2IyNmZmYjY4YzgyMGU5MmMyZDc3YmM1NWJiLi5lNGI3Yzg5OWE2NWEyNDM4Yjhi
MzZhZDQzODc4ZDhhOGI1ZDhlNWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVn
aW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0KQEAgLTI3
Miw3ICsyNzIsNyBAQCBQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eT4gTmV0
c2NhcGVQbHVnaW5Ib3N0TWFuYWdlcjo6aW5zdGFudGlhdGVQbAogICAgIGluc3RhbmNlLT5zZXRS
ZW5kZXJDb250ZXh0SUQocmVwbHktPm1fcmVuZGVyQ29udGV4dElEKTsKICAgICBpbnN0YW5jZS0+
c2V0UmVuZGVyZXJUeXBlKHJlcGx5LT5tX3JlbmRlcmVyVHlwZSk7CiAKLSAgICByZXR1cm4gaW5z
dGFuY2UucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKGluc3RhbmNlKTsKIH0KIAogdm9p
ZCBOZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyOjpjcmVhdGVQcm9wZXJ0eUxpc3RGaWxlKGNvbnN0
IFN0cmluZyYgcGx1Z2luUGF0aCwgY3B1X3R5cGVfdCBwbHVnaW5BcmNoaXRlY3R1cmUsIGNvbnN0
IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbSBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpp
bmRleCA5ODRjMjNkYjYxZmZlZDBhMGQ0OGI2YjVkOWYyYWJkZTZmMmYzMDA4Li5lZWQyNzc5ODFj
MGY4ZjU4ZGIwNjc3NDFlZjliMWU3NjBhMjJhMDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KKysrIGIv
U291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVBy
b3h5Lm1tCkBAIC0yNDgsOSArMjQ4LDkgQEAgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpO
ZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkoTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkKIAogUGFz
c1JlZlB0cjxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk+IE5ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eTo6Y3JlYXRlKE5ldHNjYXBlUGx1Z2luSG9zdFByb3h5KiBwbHVnaW5Ib3N0UHJveHks
IFdlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldyAqcGx1Z2luVmlldywgYm9vbCBmdWxsRnJhbWVQ
bHVnaW4pCiB7Ci0gICAgUmVmUHRyPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eT4gcHJveHkg
PSBhZG9wdFJlZihuZXcgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5KHBsdWdpbkhvc3RQcm94
eSwgcGx1Z2luVmlldywgZnVsbEZyYW1lUGx1Z2luKSk7Ci0gICAgcGx1Z2luSG9zdFByb3h5LT5h
ZGRQbHVnaW5JbnN0YW5jZShwcm94eS5nZXQoKSk7Ci0gICAgcmV0dXJuIHByb3h5LnJlbGVhc2Uo
KTsKKyAgICBhdXRvIHByb3h5ID0gYWRvcHRSZWYoKm5ldyBOZXRzY2FwZVBsdWdpbkluc3RhbmNl
UHJveHkocGx1Z2luSG9zdFByb3h5LCBwbHVnaW5WaWV3LCBmdWxsRnJhbWVQbHVnaW4pKTsKKyAg
ICBwbHVnaW5Ib3N0UHJveHktPmFkZFBsdWdpbkluc3RhbmNlKHByb3h5LnB0cigpKTsKKyAgICBy
ZXR1cm4gV1RGTW92ZShwcm94eSk7CiB9CiAKIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6
fk5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eSgpCkBAIC04MDEsOCArODAxLDggQEAgTlBFcnJv
ciBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmxvYWRSZXF1ZXN0KE5TVVJMUmVxdWVzdCAq
cmVxdWVzdCwgY29uc3QgY2gKICAgICAgICAgICAgIHJldHVybiBOUEVSUl9JTlZBTElEX1BBUkFN
OwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFBsdWdpblJlcXVlc3Q+IHBsdWdpblJlcXVl
c3QgPSBQbHVnaW5SZXF1ZXN0OjpjcmVhdGUocmVxdWVzdElELCByZXF1ZXN0LCB0YXJnZXQsIGFs
bG93UG9wdXBzKTsKLSAgICAgICAgbV9wbHVnaW5SZXF1ZXN0cy5hcHBlbmQocGx1Z2luUmVxdWVz
dC5yZWxlYXNlKCkpOworICAgICAgICBhdXRvIHBsdWdpblJlcXVlc3QgPSBQbHVnaW5SZXF1ZXN0
OjpjcmVhdGUocmVxdWVzdElELCByZXF1ZXN0LCB0YXJnZXQsIGFsbG93UG9wdXBzKTsKKyAgICAg
ICAgbV9wbHVnaW5SZXF1ZXN0cy5hcHBlbmQoV1RGTW92ZShwbHVnaW5SZXF1ZXN0KSk7CiAgICAg
ICAgIG1fcmVxdWVzdFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBSZWZQdHI8SG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0+IHN0cmVhbSA9IEhvc3RlZE5ldHNj
YXBlUGx1Z2luU3RyZWFtOjpjcmVhdGUodGhpcywgcmVxdWVzdElELCByZXF1ZXN0KTsKQEAgLTEz
NzIsMTEgKzEzNzIsMTEgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmRlbWFy
c2hhbFZhbHVlRnJvbUFycmF5KEV4ZWNTdGF0ZSogZXhlYywgTlNBcnIKICAgICAgICAgICAgIGlm
ICghZnJhbWUtPnNjcmlwdCgpLmNhbkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9FeGVjdXRlU2Ny
aXB0KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgICAgIFJlZlB0
cjxSb290T2JqZWN0PiByb290T2JqZWN0ID0gZnJhbWUtPnNjcmlwdCgpLmNyZWF0ZVJvb3RPYmpl
Y3QobV9wbHVnaW5WaWV3KTsKKyAgICAgICAgICAgIGF1dG8gcm9vdE9iamVjdCA9IGZyYW1lLT5z
Y3JpcHQoKS5jcmVhdGVSb290T2JqZWN0KG1fcGx1Z2luVmlldyk7CiAgICAgICAgICAgICBpZiAo
IXJvb3RPYmplY3QpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
Ci0gICAgICAgICAgICByZXN1bHQgPSBQcm94eUluc3RhbmNlOjpjcmVhdGUocm9vdE9iamVjdC5y
ZWxlYXNlKCksIHRoaXMsIG9iamVjdElEKS0+Y3JlYXRlUnVudGltZU9iamVjdChleGVjKTsKKyAg
ICAgICAgICAgIHJlc3VsdCA9IFByb3h5SW5zdGFuY2U6OmNyZWF0ZShXVEZNb3ZlKHJvb3RPYmpl
Y3QpLCB0aGlzLCBvYmplY3RJRCktPmNyZWF0ZVJ1bnRpbWVPYmplY3QoZXhlYyk7CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbQppbmRleCBmZmVmYzE5MGJjYjc1NjQxNWIzZjMyZTFiMmE1MmIxMTBhNThmMzM1Li44OWJh
MDdjZjcxMTE5NDEyMDZlZTQ0YThjZGYwM2EyMTkxMGUyNWZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpA
QCAtMjM0OCw3ICsyMzQ4LDcgQEAgLSAodm9pZClkZWFsbG9jCiAKIC0gKHZvaWQpcmVjZWl2ZWRQ
b2xpY3lEZWNpc2lvbjooUG9saWN5QWN0aW9uKWFjdGlvbgogewotICAgIFJlZlB0cjxGcmFtZT4g
ZnJhbWUgPSBfZnJhbWUucmVsZWFzZSgpOworICAgIGF1dG8gZnJhbWUgPSBXVEZNb3ZlKF9mcmFt
ZSk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbSBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCmluZGV4IGM2
Zjg1ZGU3ZDQ3NjQ3NzBkYWVhMzE2NzgzOTYzNGJhMmIzMTBiNDYuLmEzZGJmNGE3YjM5MGYxOWFj
ZGVmYzE0YmZhODI1NzQ5NTViNTNkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCkBAIC01NCw4ICs1NCw4IEBAIC0g
KGlkKWluaXRXaXRoVVJMOihOU1VSTCAqKXVybAogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0
dXJuIG5pbDsKIAotICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZShVUkwoW3VybCBhYnNvbHV0ZVVSTF0pKTsKLSAgICBTZWN1cml0eU9yaWdp
biogcmF3T3JpZ2luID0gb3JpZ2luLnJlbGVhc2UoKS5sZWFrUmVmKCk7CisgICAgYXV0byBvcmln
aW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFVSTChbdXJsIGFic29sdXRlVVJMXSkpOworICAg
IFNlY3VyaXR5T3JpZ2luKiByYXdPcmlnaW4gPSAmb3JpZ2luLmxlYWtSZWYoKTsKICAgICBfcHJp
dmF0ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlICo+KHJhd09y
aWdpbik7CiAKICAgICByZXR1cm4gc2VsZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViQXJjaGl2ZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViQXJj
aGl2ZS5tbQppbmRleCAzNDhlOGYwOGNhMmY0OTc2NjllZTNhYWNiZWMyY2Y2NTY3MThkYThmLi5l
OTZjNjA3Y2ZiODRjODVhMWViZmFhYmRjMzFjZWJhMDRlYTVjM2U4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkFyY2hpdmUubW0KKysrIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJBcmNoaXZlLm1tCkBAIC0xNzUsNyArMTc1LDcgQEAgLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoTWFpblJlc291cmNlOihXZWJSZXNvdXJjZSAqKW1haW5SZXNvdXJjZSBzdWJy
ZXNvdXJjZXM6KE4KICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB9CiAgICAgCi0gICAgUmVmUHRy
PEFyY2hpdmVSZXNvdXJjZT4gY29yZU1haW5SZXNvdXJjZSA9IG1haW5SZXNvdXJjZSA/IFttYWlu
UmVzb3VyY2UgX2NvcmVSZXNvdXJjZV0gOiAwOworICAgIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+
IGNvcmVNYWluUmVzb3VyY2UgPSBtYWluUmVzb3VyY2UgPyBbbWFpblJlc291cmNlIF9jb3JlUmVz
b3VyY2VdIDogbnVsbHB0cjsKIAogICAgIFZlY3RvcjxSZWZQdHI8QXJjaGl2ZVJlc291cmNlPj4g
Y29yZVJlc291cmNlczsKICAgICBmb3IgKFdlYlJlc291cmNlICpzdWJyZXNvdXJjZSBpbiBzdWJy
ZXNvdXJjZXMpCkBAIC0xODUsMTMgKzE4NSwxMyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhN
YWluUmVzb3VyY2U6KFdlYlJlc291cmNlICopbWFpblJlc291cmNlIHN1YnJlc291cmNlczooTgog
ICAgIGZvciAoV2ViQXJjaGl2ZSAqc3ViZnJhbWVBcmNoaXZlIGluIHN1YmZyYW1lQXJjaGl2ZXMp
CiAgICAgICAgIGNvcmVBcmNoaXZlcy5hcHBlbmQoW3N1YmZyYW1lQXJjaGl2ZS0+X3ByaXZhdGUg
Y29yZUFyY2hpdmVdKTsKIAotICAgIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjb3JlQXJjaGl2
ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb3JlTWFpblJlc291cmNlLnJlbGVhc2UoKSwg
V1RGTW92ZShjb3JlUmVzb3VyY2VzKSwgV1RGTW92ZShjb3JlQXJjaGl2ZXMpKTsKKyAgICBhdXRv
IGNvcmVBcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFdURk1vdmUoY29yZU1haW5S
ZXNvdXJjZSksIFdURk1vdmUoY29yZVJlc291cmNlcyksIFdURk1vdmUoY29yZUFyY2hpdmVzKSk7
CiAgICAgaWYgKCFjb3JlQXJjaGl2ZSkgewogICAgICAgICBbc2VsZiByZWxlYXNlXTsKICAgICAg
ICAgcmV0dXJuIG5pbDsKICAgICB9CiAKLSAgICBbX3ByaXZhdGUgc2V0Q29yZUFyY2hpdmU6Y29y
ZUFyY2hpdmUucmVsZWFzZSgpXTsKKyAgICBbX3ByaXZhdGUgc2V0Q29yZUFyY2hpdmU6V1RGTW92
ZShjb3JlQXJjaGl2ZSldOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0yMDksMTMgKzIwOSwx
MyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhOihOU0RhdGEgKilkYXRhCiAjZW5kaWYK
IAogICAgIF9wcml2YXRlID0gW1tXZWJBcmNoaXZlUHJpdmF0ZSBhbGxvY10gaW5pdF07Ci0gICAg
UmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNvcmVBcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6
Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6d3JhcE5TRGF0YShkYXRhKSk7CisgICAgYXV0byBjb3JlQXJj
aGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OndyYXBOU0RhdGEo
ZGF0YSkpOwogICAgIGlmICghY29yZUFyY2hpdmUpIHsKICAgICAgICAgW3NlbGYgcmVsZWFzZV07
CiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgfQogICAgICAgICAKLSAgICBbX3ByaXZhdGUgc2V0
Q29yZUFyY2hpdmU6Y29yZUFyY2hpdmUucmVsZWFzZSgpXTsKKyAgICBbX3ByaXZhdGUgc2V0Q29y
ZUFyY2hpdmU6V1RGTW92ZShjb3JlQXJjaGl2ZSldOwogICAgICAgICAKICNpZiAhTE9HX0RJU0FC
TEVECiAgICAgQ0ZBYnNvbHV0ZVRpbWUgZW5kID0gQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXggODAzZDNh
OGU0OWU1OWE3OTU0MDMwNmQ0MTgxNWFmOWM0Y2UwODgwMS4uNjA2NDcyMmE1NjM2MTQ4NTg0MmNm
NTdmZDkzMGY3NTU4OGQ2ZThmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJEYXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGF0
YVNvdXJjZS5tbQpAQCAtNTE4LDggKzUxOCw4IEBAIC0gKFdlYkFyY2hpdmUgKil3ZWJBcmNoaXZl
CiAKIC0gKFdlYlJlc291cmNlICopbWFpblJlc291cmNlCiB7Ci0gICAgUmVmUHRyPEFyY2hpdmVS
ZXNvdXJjZT4gY29yZVJlc291cmNlID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5tYWlu
UmVzb3VyY2UoKTsKLSAgICByZXR1cm4gW1tbV2ViUmVzb3VyY2UgYWxsb2NdIF9pbml0V2l0aENv
cmVSZXNvdXJjZTpjb3JlUmVzb3VyY2UucmVsZWFzZSgpXSBhdXRvcmVsZWFzZV07CisgICAgYXV0
byBjb3JlUmVzb3VyY2UgPSB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPm1haW5SZXNvdXJj
ZSgpOworICAgIHJldHVybiBbW1tXZWJSZXNvdXJjZSBhbGxvY10gX2luaXRXaXRoQ29yZVJlc291
cmNlOldURk1vdmUoY29yZVJlc291cmNlKV0gYXV0b3JlbGVhc2VdOwogfQogCiAtIChOU0FycmF5
ICopc3VicmVzb3VyY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkZyYW1lLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCBi
MGRjZDlhOWFhNmFlZmY0Y2RmNmFkZGUwNGVmN2NmMjlhZTQxODc2Li45Y2JmMzA5MTMzMzljMjY2
NGJiNzZhNmI1NDJiOWViZTUyNjEzMDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJh
bWUubW0KQEAgLTkxMSw3ICs5MTEsNyBAQCAtIChET01Eb2N1bWVudEZyYWdtZW50ICopX2RvY3Vt
ZW50RnJhZ21lbnRXaXRoTm9kZXNBc1BhcmFncmFwaHM6KE5TQXJyYXkgKilub2RlcwogICAgIHdo
aWxlICgobm9kZSA9IFtub2RlRW51bSBuZXh0T2JqZWN0XSkpCiAgICAgICAgIG5vZGVzVmVjdG9y
LmFwcGVuZChjb3JlKG5vZGUpKTsKIAotICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFn
bWVudCA9IGRvY3VtZW50LT5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CisgICAgYXV0byBmcmFn
bWVudCA9IGRvY3VtZW50LT5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CiAKICAgICBmb3IgKGF1
dG8qIG5vZGUgOiBub2Rlc1ZlY3RvcikgewogICAgICAgICBhdXRvIGVsZW1lbnQgPSBjcmVhdGVE
ZWZhdWx0UGFyYWdyYXBoRWxlbWVudCgqZG9jdW1lbnQpOwpAQCAtOTE5LDcgKzkxOSw3IEBAIC0g
KERPTURvY3VtZW50RnJhZ21lbnQgKilfZG9jdW1lbnRGcmFnbWVudFdpdGhOb2Rlc0FzUGFyYWdy
YXBoczooTlNBcnJheSAqKW5vZGVzCiAgICAgICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChlbGVt
ZW50KTsKICAgICB9CiAKLSAgICByZXR1cm4ga2l0KGZyYWdtZW50LnJlbGVhc2UoKS5nZXQoKSk7
CisgICAgcmV0dXJuIGtpdChmcmFnbWVudC5wdHIoKSk7CiB9CiAKIC0gKHZvaWQpX3JlcGxhY2VT
ZWxlY3Rpb25XaXRoTm9kZTooRE9NTm9kZSAqKW5vZGUgc2VsZWN0UmVwbGFjZW1lbnQ6KEJPT0wp
c2VsZWN0UmVwbGFjZW1lbnQgc21hcnRSZXBsYWNlOihCT09MKXNtYXJ0UmVwbGFjZSBtYXRjaFN0
eWxlOihCT09MKW1hdGNoU3R5bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNl
UHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9j
ZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAKaW5kZXggYWY4NmFkOGJmMzM0MzcxYjc5Njc3MWNkMjBh
MDEzZDhkNjk2MWIzZC4uM2VlNjI0N2U4ZGE4ODA5YjdjNDJmMDA1NTQ2ODVjNjNhYTk0YzA1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vz
cy5jcHAKQEAgLTE4Miw4ICsxODIsOCBAQCB2b2lkIERhdGFiYXNlUHJvY2Vzczo6Y3JlYXRlRGF0
YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKCkKICAgICBtYWNoX3BvcnRfYWxsb2NhdGUobWFj
aF90YXNrX3NlbGYoKSwgTUFDSF9QT1JUX1JJR0hUX1JFQ0VJVkUsICZsaXN0ZW5pbmdQb3J0KTsK
IAogICAgIC8vIENyZWF0ZSBhIGxpc3RlbmluZyBjb25uZWN0aW9uLgotICAgIFJlZlB0cjxEYXRh
YmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBEYXRhYmFzZVRvV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIobGlzdGVu
aW5nUG9ydCkpOwotICAgIG1fZGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQo
Y29ubmVjdGlvbi5yZWxlYXNlKCkpOworICAgIGF1dG8gY29ubmVjdGlvbiA9IERhdGFiYXNlVG9X
ZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihs
aXN0ZW5pbmdQb3J0KSk7CisgICAgbV9kYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFw
cGVuZChXVEZNb3ZlKGNvbm5lY3Rpb24pKTsKIAogICAgIElQQzo6QXR0YWNobWVudCBjbGllbnRQ
b3J0KGxpc3RlbmluZ1BvcnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKTsKICAgICBwYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpEYXRhYmFzZVByb2Nlc3NQcm94eTo6
RGlkQ3JlYXRlRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKGNsaWVudFBvcnQpLCAwKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApp
bmRleCBmMTU4YWFjN2VkZjRhM2Q3N2I1NzkzZjA1ZDE5OWNjMGNmYzhmYmNiLi5mMWNlMzFmZjY1
NWYyMDZjMTgyYTE4MjFlYzZmZTI2MjJkN2JmYzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yNTQsOCArMjU0LDggQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQog
I2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgIElQQzo6Q29ubmVjdGlvbjo6U29ja2V0
UGFpciBzb2NrZXRQYWlyID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rp
b24oKTsKIAotICAgIFJlZlB0cjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gY29ubmVj
dGlvbiA9IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoc29ja2V0UGFpci5z
ZXJ2ZXIpOwotICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJl
bGVhc2UoKSk7CisgICAgYXV0byBjb25uZWN0aW9uID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNyZWF0ZShzb2NrZXRQYWlyLnNlcnZlcik7CisgICAgbV93ZWJQcm9jZXNzQ29ubmVj
dGlvbnMuYXBwZW5kKFdURk1vdmUoY29ubmVjdGlvbikpOwogCiAgICAgSVBDOjpBdHRhY2htZW50
IGNsaWVudFNvY2tldChzb2NrZXRQYWlyLmNsaWVudCk7CiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RGlkQ3JlYXRlTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY2xpZW50U29ja2V0KSwgMCk7CkBAIC0yNjUsOCAr
MjY1LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MoKQogICAgIG1hY2hfcG9ydF9hbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBNQUNI
X1BPUlRfUklHSFRfUkVDRUlWRSwgJmxpc3RlbmluZ1BvcnQpOwogCiAgICAgLy8gQ3JlYXRlIGEg
bGlzdGVuaW5nIGNvbm5lY3Rpb24uCi0gICAgUmVmUHRyPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzPiBjb25uZWN0aW9uID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0
ZShJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCkpOwotICAgIG1fd2Vi
UHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7CisgICAgYXV0
byBjb25uZWN0aW9uID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShJUEM6
OkNvbm5lY3Rpb246OklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCkpOworICAgIG1fd2ViUHJvY2Vz
c0Nvbm5lY3Rpb25zLmFwcGVuZChXVEZNb3ZlKGNvbm5lY3Rpb24pKTsKIAogICAgIElQQzo6QXR0
YWNobWVudCBjbGllbnRQb3J0KGxpc3RlbmluZ1BvcnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5E
KTsKICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhjbGll
bnRQb3J0KSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKaW5kZXggYTQxZDBhYjdl
MTYyMGNlNTY2OWJlYzgwMDQxMTlhZTYzNTZlOGEwMS4uMGYxNmRmNDk2NzhmODUxYmVjMTVjMzE0
MjRkMTE5YmM2MjhlYzgyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcApAQCAtMTI3
LDggKzEyNyw4IEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZShJ
UEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgTmV0d29yCiAgICAgICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlcykpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVxdWVzdEJv
ZHlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYg
KFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBleHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGUocmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlc1tpXSkpCi0gICAgICAgICAg
ICAgICAgcmVzdWx0LnJlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbnMuYXBwZW5kKGV4dGVuc2lv
bi5yZWxlYXNlKCkpOworICAgICAgICAgICAgaWYgKGF1dG8gZXh0ZW5zaW9uID0gU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlKHJlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbkhhbmRsZXNbaV0pKQor
ICAgICAgICAgICAgICAgIHJlc3VsdC5yZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25zLmFwcGVu
ZChXVEZNb3ZlKGV4dGVuc2lvbikpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5j
cHAKaW5kZXggYjk3OGI5OTkzMzhiMzc4NmMxZTEyMWRjMGVlNzc4ZDViZmFkNjkxZS4uMjMwNjhh
NjkyYmYzNjBlY2U0ZjZlMDU4MDA3NTQ5N2EwNTg2Zjk2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcApA
QCAtMTQ1LDEyICsxNDUsMTEgQEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBFbnRyeTo6ZGVjb2Rl
U3RvcmFnZVJlY29yZChjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2UKICNpZiBFTkFCTEUo
U0hBUkVBQkxFX1JFU09VUkNFKQogdm9pZCBFbnRyeTo6aW5pdGlhbGl6ZVNoYXJlYWJsZVJlc291
cmNlSGFuZGxlRnJvbVN0b3JhZ2VSZWNvcmQoKSBjb25zdAogewotICAgIFJlZlB0cjxTaGFyZWRN
ZW1vcnk+IHNoYXJlZE1lbW9yeSA9IG1fc291cmNlU3RvcmFnZVJlY29yZC5ib2R5LnRyeUNyZWF0
ZVNoYXJlZE1lbW9yeSgpOworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gbV9zb3VyY2VTdG9yYWdl
UmVjb3JkLmJvZHkudHJ5Q3JlYXRlU2hhcmVkTWVtb3J5KCk7CiAgICAgaWYgKCFzaGFyZWRNZW1v
cnkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxTaGFyZWFibGVSZXNvdXJjZT4gc2hh
cmVhYmxlUmVzb3VyY2UgPSBTaGFyZWFibGVSZXNvdXJjZTo6Y3JlYXRlKHNoYXJlZE1lbW9yeS5y
ZWxlYXNlKCksIDAsIG1fc291cmNlU3RvcmFnZVJlY29yZC5ib2R5LnNpemUoKSk7Ci0gICAgQVNT
RVJUKHNoYXJlYWJsZVJlc291cmNlKTsKKyAgICBhdXRvIHNoYXJlYWJsZVJlc291cmNlID0gU2hh
cmVhYmxlUmVzb3VyY2U6OmNyZWF0ZShXVEZNb3ZlKHNoYXJlZE1lbW9yeSksIDAsIG1fc291cmNl
U3RvcmFnZVJlY29yZC5ib2R5LnNpemUoKSk7CiAgICAgc2hhcmVhYmxlUmVzb3VyY2UtPmNyZWF0
ZUhhbmRsZShtX3NoYXJlYWJsZVJlc291cmNlSGFuZGxlKTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL1NoYXJlZE1lbW9yeU1hYy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvU2hhcmVkTWVtb3J5TWFjLmNwcAppbmRleCBjYWY0ZmI0
OWI1NDZmYjk0YTIxNGFkNWExZTJhODA5MTJlMDcyYTVjLi4wODBjNTI4NDI2OTc5MWZkOWU5MDQx
ZDI5OTJmOGZmMDQzNzg3YWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9t
YWMvU2hhcmVkTWVtb3J5TWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMv
U2hhcmVkTWVtb3J5TWFjLmNwcApAQCAtMTEwLDEzICsxMTAsMTMgQEAgUmVmUHRyPFNoYXJlZE1l
bW9yeT4gU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShzaXplX3Qgc2l6ZSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5
ID0gYWRvcHRSZWYoKm5ldyBTaGFyZWRNZW1vcnkpOworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0g
YWRvcHRSZWYoKm5ldyBTaGFyZWRNZW1vcnkpOwogICAgIHNoYXJlZE1lbW9yeS0+bV9zaXplID0g
c2l6ZTsKICAgICBzaGFyZWRNZW1vcnktPm1fZGF0YSA9IHRvUG9pbnRlcihhZGRyZXNzKTsKICAg
ICBzaGFyZWRNZW1vcnktPm1fcG9ydCA9IE1BQ0hfUE9SVF9OVUxMOwogICAgIHNoYXJlZE1lbW9y
eS0+bV9wcm90ZWN0aW9uID0gUHJvdGVjdGlvbjo6UmVhZFdyaXRlOwogCi0gICAgcmV0dXJuIHNo
YXJlZE1lbW9yeTsKKyAgICByZXR1cm4gV1RGTW92ZShzaGFyZWRNZW1vcnkpOwogfQogCiBzdGF0
aWMgaW5saW5lIHZtX3Byb3RfdCBtYWNoUHJvdGVjdGlvbihTaGFyZWRNZW1vcnk6OlByb3RlY3Rp
b24gcHJvdGVjdGlvbikKQEAgLTE1NiwxMyArMTU2LDEzIEBAIFJlZlB0cjxTaGFyZWRNZW1vcnk+
IFNoYXJlZE1lbW9yeTo6Y3JlYXRlKHZvaWQqIGRhdGEsIHNpemVfdCBzaXplLCBQcm90ZWN0aW9u
IHByCiAgICAgaWYgKCFzZW5kUmlnaHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
UmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5KGFkb3B0UmVmKG5ldyBTaGFyZWRNZW1v
cnkpKTsKKyAgICBhdXRvIHNoYXJlZE1lbW9yeShhZG9wdFJlZigqbmV3IFNoYXJlZE1lbW9yeSkp
OwogICAgIHNoYXJlZE1lbW9yeS0+bV9zaXplID0gc2l6ZTsKICAgICBzaGFyZWRNZW1vcnktPm1f
ZGF0YSA9IG51bGxwdHI7CiAgICAgc2hhcmVkTWVtb3J5LT5tX3BvcnQgPSBzZW5kUmlnaHQubGVh
a1NlbmRSaWdodCgpOwogICAgIHNoYXJlZE1lbW9yeS0+bV9wcm90ZWN0aW9uID0gcHJvdGVjdGlv
bjsKIAotICAgIHJldHVybiBzaGFyZWRNZW1vcnkucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZN
b3ZlKHNoYXJlZE1lbW9yeSk7CiB9CiAKIFJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9y
eTo6bWFwKGNvbnN0IEhhbmRsZSYgaGFuZGxlLCBQcm90ZWN0aW9uIHByb3RlY3Rpb24pCkBAIC0x
NzgsMTMgKzE3OCwxMyBAQCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6Om1hcChj
b25zdCBIYW5kbGUmIGhhbmRsZSwgUHJvdGVjdGlvbiBwcm90ZWN0aQogICAgIGlmIChrciAhPSBL
RVJOX1NVQ0NFU1MpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPFNoYXJl
ZE1lbW9yeT4gc2hhcmVkTWVtb3J5KGFkb3B0UmVmKG5ldyBTaGFyZWRNZW1vcnkpKTsKKyAgICBh
dXRvIHNoYXJlZE1lbW9yeShhZG9wdFJlZigqbmV3IFNoYXJlZE1lbW9yeSkpOwogICAgIHNoYXJl
ZE1lbW9yeS0+bV9zaXplID0gaGFuZGxlLm1fc2l6ZTsKICAgICBzaGFyZWRNZW1vcnktPm1fZGF0
YSA9IHRvUG9pbnRlcihtYXBwZWRBZGRyZXNzKTsKICAgICBzaGFyZWRNZW1vcnktPm1fcG9ydCA9
IE1BQ0hfUE9SVF9OVUxMOwogICAgIHNoYXJlZE1lbW9yeS0+bV9wcm90ZWN0aW9uID0gcHJvdGVj
dGlvbjsKIAotICAgIHJldHVybiBzaGFyZWRNZW1vcnk7CisgICAgcmV0dXJuIFdURk1vdmUoc2hh
cmVkTWVtb3J5KTsKIH0KIAogU2hhcmVkTWVtb3J5Ojp+U2hhcmVkTWVtb3J5KCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3BwCmluZGV4IDI3MDBjYTIy
NTU1YTY4ZTljMmYyMDZhMjFmYTE3NWFjYTZkZjQxYjIuLjc1NTU3MDJhMjdiODU1MTlhMmFhMmEy
NTE2MDEzYmNiNDZhYjEyZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvUGx1Z2luUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9Q
bHVnaW5Qcm9jZXNzLmNwcApAQCAtMTUxLDggKzE1MSw4IEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6
Y3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKQogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRT
KQogICAgIElQQzo6Q29ubmVjdGlvbjo6U29ja2V0UGFpciBzb2NrZXRQYWlyID0gSVBDOjpDb25u
ZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKIAotICAgIFJlZlB0cjxXZWJQcm9j
ZXNzQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUo
c29ja2V0UGFpci5zZXJ2ZXIpOwotICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChj
b25uZWN0aW9uLnJlbGVhc2UoKSk7CisgICAgYXV0byBjb25uZWN0aW9uID0gV2ViUHJvY2Vzc0Nv
bm5lY3Rpb246OmNyZWF0ZShzb2NrZXRQYWlyLnNlcnZlcik7CisgICAgbV93ZWJQcm9jZXNzQ29u
bmVjdGlvbnMuYXBwZW5kKFdURk1vdmUoY29ubmVjdGlvbikpOwogCiAgICAgSVBDOjpBdHRhY2ht
ZW50IGNsaWVudFNvY2tldChzb2NrZXRQYWlyLmNsaWVudCk7CiAgICAgcGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVX
ZWJQcm9jZXNzQ29ubmVjdGlvbihjbGllbnRTb2NrZXQsIG1fc3VwcG9ydHNBc3luY2hyb25vdXNQ
bHVnaW5Jbml0aWFsaXphdGlvbiksIDApOwpAQCAtMTYyLDcgKzE2Miw3IEBAIHZvaWQgUGx1Z2lu
UHJvY2Vzczo6Y3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKQogICAgIG1hY2hfcG9ydF9hbGxv
Y2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBNQUNIX1BPUlRfUklHSFRfUkVDRUlWRSwgJmxpc3Rlbmlu
Z1BvcnQpOwogCiAgICAgLy8gQ3JlYXRlIGEgbGlzdGVuaW5nIGNvbm5lY3Rpb24uCi0gICAgUmVm
UHRyPFdlYlByb2Nlc3NDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzc0Nvbm5lY3Rp
b246OmNyZWF0ZShJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCkpOwor
ICAgIGF1dG8gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoSVBDOjpD
b25uZWN0aW9uOjpJZGVudGlmaWVyKGxpc3RlbmluZ1BvcnQpKTsKIAogICAgIGlmIChtX2F1ZGlv
SGFyZHdhcmVMaXN0ZW5lcikgewogICAgICAgICBpZiAobV9hdWRpb0hhcmR3YXJlTGlzdGVuZXIt
PmhhcmR3YXJlQWN0aXZpdHkoKSA9PSBXZWJDb3JlOjpBdWRpb0hhcmR3YXJlQWN0aXZpdHlUeXBl
OjpJc0FjdGl2ZSkKQEAgLTE3MSw3ICsxNzEsNyBAQCB2b2lkIFBsdWdpblByb2Nlc3M6OmNyZWF0
ZVdlYlByb2Nlc3NDb25uZWN0aW9uKCkKICAgICAgICAgICAgIGNvbm5lY3Rpb24tPmF1ZGlvSGFy
ZHdhcmVEaWRCZWNvbWVJbmFjdGl2ZSgpOwogICAgIH0KIAotICAgIG1fd2ViUHJvY2Vzc0Nvbm5l
Y3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7CisgICAgbV93ZWJQcm9jZXNzQ29u
bmVjdGlvbnMuYXBwZW5kKFdURk1vdmUoY29ubmVjdGlvbikpOwogCiAgICAgSVBDOjpBdHRhY2ht
ZW50IGNsaWVudFBvcnQobGlzdGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpOwog
ICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpblByb2Nl
c3NQcm94eTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY2xpZW50UG9ydCwgbV9zdXBw
b3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKSwgMCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0gYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0KaW5k
ZXggMmEyOTczODE5ODljMWQ3YTcwNDFkYTZlZGE4Yjg5MzFkYjA0ZDg4NC4uOWRmMmFiMGRiZTJk
NTc2OTkyZmEzM2MxYzU3NjM0OWU5ZmZiZDM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQpAQCAtMTA4LDkgKzEw
OCw5IEBAIHN0YXRpYyB2b2lkIGVuY29kZVRvT2JqZWN0U3RyZWFtKFdLUmVtb3RlT2JqZWN0RW5j
b2RlciAqZW5jb2RlciwgaWQgdmFsdWUpCiAgICAgc2l6ZV90IHBvc2l0aW9uID0gZW5jb2Rlci0+
X29iamVjdFN0cmVhbS0+c2l6ZSgpOwogICAgIGVuY29kZXItPl9vYmplY3RTdHJlYW0tPmVsZW1l
bnRzKCkuYXBwZW5kKG51bGxwdHIpOwogCi0gICAgUmVmUHRyPEFQSTo6RGljdGlvbmFyeT4gZW5j
b2RlZE9iamVjdCA9IGNyZWF0ZUVuY29kZWRPYmplY3QoZW5jb2RlciwgdmFsdWUpOworICAgIGF1
dG8gZW5jb2RlZE9iamVjdCA9IGNyZWF0ZUVuY29kZWRPYmplY3QoZW5jb2RlciwgdmFsdWUpOwog
ICAgIEFTU0VSVCghZW5jb2Rlci0+X29iamVjdFN0cmVhbS0+ZWxlbWVudHMoKVtwb3NpdGlvbl0p
OwotICAgIGVuY29kZXItPl9vYmplY3RTdHJlYW0tPmVsZW1lbnRzKClbcG9zaXRpb25dID0gZW5j
b2RlZE9iamVjdC5yZWxlYXNlKCk7CisgICAgZW5jb2Rlci0+X29iamVjdFN0cmVhbS0+ZWxlbWVu
dHMoKVtwb3NpdGlvbl0gPSBXVEZNb3ZlKGVuY29kZWRPYmplY3QpOwogfQogCiBzdGF0aWMgdm9p
ZCBlbmNvZGVJbnZvY2F0aW9uQXJndW1lbnRzKFdLUmVtb3RlT2JqZWN0RW5jb2RlciAqZW5jb2Rl
ciwgTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uLCBOU1VJbnRlZ2VyIGZpcnN0QXJndW1lbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tJbWFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tJbWFnZS5jcHAKaW5kZXggMjMyNzhiM2E3ZjUzNDAw
YjM2ZDg1YzgxODdlMDRiYWUyMWNhYzA4YS4uMjc0MTE5OWUyMjBkMDQ1ZTA3NzIzZDUxODBhODMy
NzFjMmFiZDMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLSW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0ltYWdlLmNwcApAQCAt
MzgsOCArMzgsOCBAQCBXS1R5cGVJRCBXS0ltYWdlR2V0VHlwZUlEKCkKIAogV0tJbWFnZVJlZiBX
S0ltYWdlQ3JlYXRlKFdLU2l6ZSBzaXplLCBXS0ltYWdlT3B0aW9ucyBvcHRpb25zKQogewotICAg
IFJlZlB0cjxXZWJJbWFnZT4gd2ViSW1hZ2UgPSBXZWJJbWFnZTo6Y3JlYXRlKHRvSW50U2l6ZShz
aXplKSwgdG9JbWFnZU9wdGlvbnMob3B0aW9ucykpOwotICAgIHJldHVybiB0b0FQSSh3ZWJJbWFn
ZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICBhdXRvIHdlYkltYWdlID0gV2ViSW1hZ2U6OmNy
ZWF0ZSh0b0ludFNpemUoc2l6ZSksIHRvSW1hZ2VPcHRpb25zKG9wdGlvbnMpKTsKKyAgICByZXR1
cm4gdG9BUEkod2ViSW1hZ2UubGVha1JlZigpKTsKIH0KIAogV0tTaXplIFdLSW1hZ2VHZXRTaXpl
KFdLSW1hZ2VSZWYgaW1hZ2VSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJL2MvV0tOdW1iZXIuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLTnVtYmVy
LmNwcAppbmRleCAxMTMwMDYzMmNmMGZiZTI0ZGEyMDE1NGU4MzJiYjgzYmQyYTQ5NDI4Li40MThl
MDI5ZWE2N2RiZjNhNmExZmVjYzA3NTM4N2NjNmEyMTc0ZDg2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tOdW1iZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUEkvYy9XS051bWJlci5jcHAKQEAgLTM4LDggKzM4LDggQEAgV0tUeXBlSUQgV0tCb29s
ZWFuR2V0VHlwZUlEKCkKIAogV0tCb29sZWFuUmVmIFdLQm9vbGVhbkNyZWF0ZShib29sIHZhbHVl
KQogewotICAgIFJlZlB0cjxBUEk6OkJvb2xlYW4+IGJvb2xlYW5PYmplY3QgPSBBUEk6OkJvb2xl
YW46OmNyZWF0ZSh2YWx1ZSk7Ci0gICAgcmV0dXJuIHRvQVBJKGJvb2xlYW5PYmplY3QucmVsZWFz
ZSgpLmxlYWtSZWYoKSk7CisgICAgYXV0byBib29sZWFuT2JqZWN0ID0gQVBJOjpCb29sZWFuOjpj
cmVhdGUodmFsdWUpOworICAgIHJldHVybiB0b0FQSSgmYm9vbGVhbk9iamVjdC5sZWFrUmVmKCkp
OwogfQogCiBib29sIFdLQm9vbGVhbkdldFZhbHVlKFdLQm9vbGVhblJlZiBib29sZWFuUmVmKQpA
QCAtNTQsOCArNTQsOCBAQCBXS1R5cGVJRCBXS0RvdWJsZUdldFR5cGVJRCgpCiAKIFdLRG91Ymxl
UmVmIFdLRG91YmxlQ3JlYXRlKGRvdWJsZSB2YWx1ZSkKIHsKLSAgICBSZWZQdHI8QVBJOjpEb3Vi
bGU+IGRvdWJsZU9iamVjdCA9IEFQSTo6RG91YmxlOjpjcmVhdGUodmFsdWUpOwotICAgIHJldHVy
biB0b0FQSShkb3VibGVPYmplY3QucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgYXV0byBkb3Vi
bGVPYmplY3QgPSBBUEk6OkRvdWJsZTo6Y3JlYXRlKHZhbHVlKTsKKyAgICByZXR1cm4gdG9BUEko
JmRvdWJsZU9iamVjdC5sZWFrUmVmKCkpOwogfQogCiBkb3VibGUgV0tEb3VibGVHZXRWYWx1ZShX
S0RvdWJsZVJlZiBkb3VibGVSZWYpCkBAIC03MCw4ICs3MCw4IEBAIFdLVHlwZUlEIFdLVUludDY0
R2V0VHlwZUlEKCkKIAogV0tVSW50NjRSZWYgV0tVSW50NjRDcmVhdGUodWludDY0X3QgdmFsdWUp
CiB7Ci0gICAgUmVmUHRyPEFQSTo6VUludDY0PiB1aW50NjRPYmplY3QgPSBBUEk6OlVJbnQ2NDo6
Y3JlYXRlKHZhbHVlKTsKLSAgICByZXR1cm4gdG9BUEkodWludDY0T2JqZWN0LnJlbGVhc2UoKS5s
ZWFrUmVmKCkpOworICAgIGF1dG8gdWludDY0T2JqZWN0ID0gQVBJOjpVSW50NjQ6OmNyZWF0ZSh2
YWx1ZSk7CisgICAgcmV0dXJuIHRvQVBJKCZ1aW50NjRPYmplY3QubGVha1JlZigpKTsKIH0KIAog
dWludDY0X3QgV0tVSW50NjRHZXRWYWx1ZShXS1VJbnQ2NFJlZiB1aW50NjRSZWYpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAKaW5k
ZXggODgyODY3ZjgwYjViZWNjNWUyOTM0ODE4NjUyYzkwZmUxZmMxNmEyZi4uNDhjYzBiMjIyYWJj
NDYzMTllNTljOTNjYjBmNjEzOWU1NmVlMDI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9jL1dLU2VjdXJpdHlPcmlnaW5SZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcApAQCAtNDgsOCArNDgsOCBAQCBX
S1NlY3VyaXR5T3JpZ2luUmVmIFdLU2VjdXJpdHlPcmlnaW5DcmVhdGVGcm9tRGF0YWJhc2VJZGVu
dGlmaWVyKFdLU3RyaW5nUmVmIGlkZQogCiBXS1NlY3VyaXR5T3JpZ2luUmVmIFdLU2VjdXJpdHlP
cmlnaW5DcmVhdGUoV0tTdHJpbmdSZWYgcHJvdG9jb2wsIFdLU3RyaW5nUmVmIGhvc3QsIGludCBw
b3J0KQogewotICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9
IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh0b0ltcGwocHJvdG9jb2wpLT5zdHJpbmcoKSwg
dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSwgcG9ydCk7Ci0gICAgcmV0dXJuIHRvQVBJKHNlY3VyaXR5
T3JpZ2luLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBB
UEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodG9JbXBsKHByb3RvY29sKS0+c3RyaW5nKCksIHRv
SW1wbChob3N0KS0+c3RyaW5nKCksIHBvcnQpOworICAgIHJldHVybiB0b0FQSShzZWN1cml0eU9y
aWdpbi5sZWFrUmVmKCkpOwogfQogCiBXS1N0cmluZ1JlZiBXS1NlY3VyaXR5T3JpZ2luQ29weURh
dGFiYXNlSWRlbnRpZmllcihXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAKaW5kZXggZWMyYWQ5NmY1MGZlNmI0NWY1MTBhZTNlOGI5MGEwNmVkMjQ4MzJlNC4u
ODYyZmQ3ZjYwYTg1NWQyOWFiMjY4YjJmMTYyYjJlMDI1MTE2NDczZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
CkBAIC0zOSwxNCArMzksMTQgQEAgV0tUeXBlSUQgV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVHZXRU
eXBlSUQoKQogCiBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBXS1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUNyZWF0ZShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1
ZVJlZiogZXhjZXB0aW9uKQogewotICAgIFJlZlB0cjxBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gc2VyaWFsaXplZFZhbHVlID0gQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShj
b250ZXh0LCB2YWx1ZSwgZXhjZXB0aW9uKTsKLSAgICByZXR1cm4gdG9BUEkoc2VyaWFsaXplZFZh
bHVlLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgIGF1dG8gc2VyaWFsaXplZFZhbHVlID0gQVBJ
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShjb250ZXh0LCB2YWx1ZSwgZXhjZXB0aW9u
KTsKKyAgICByZXR1cm4gdG9BUEkoc2VyaWFsaXplZFZhbHVlLmxlYWtSZWYoKSk7CiB9CiAKIFdL
U2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlQ3JlYXRlV2l0
aEludGVybmFsUmVwcmVzZW50YXRpb24odm9pZCogaW50ZXJuYWxSZXByZXNlbnRhdGlvbikKIHsK
LSAgICBSZWZQdHI8QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSA9
IEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlKj4oaW50ZXJuYWxSZXByZXNlbnRhdGlvbikpOwotICAgIHJl
dHVybiB0b0FQSShzZXJpYWxpemVkVmFsdWUucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgYXV0
byBzZXJpYWxpemVkVmFsdWUgPSBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0
YXRpY19jYXN0PFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSo+KGludGVybmFsUmVwcmVz
ZW50YXRpb24pKTsKKyAgICByZXR1cm4gdG9BUEkoJnNlcmlhbGl6ZWRWYWx1ZS5sZWFrUmVmKCkp
OwogfQogCiBKU1ZhbHVlUmVmIFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlRGVzZXJpYWxpemUoV0tT
ZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgc2NyaXB0VmFsdWVSZWYsIEpTQ29udGV4dFJlZiBjb250
ZXh0UmVmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwCmluZGV4IGFmYjQ5OTMyYjE3ODFlNTA5
MDZkYjkzNjRhMDNkZDlhZWM0OTViODYuLjg1Yjk5Mzg0NDI3YjRmYWQ3MGJmMjBiNDlhZjIzNWU2
YTMyNjQ0MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jYWlyby9X
S0ltYWdlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jYWlyby9X
S0ltYWdlQ2Fpcm8uY3BwCkBAIC00NSw3ICs0NSw3IEBAIGNhaXJvX3N1cmZhY2VfdCogV0tJbWFn
ZUNyZWF0ZUNhaXJvU3VyZmFjZShXS0ltYWdlUmVmIGltYWdlUmVmKQogV0tJbWFnZVJlZiBXS0lt
YWdlQ3JlYXRlRnJvbUNhaXJvU3VyZmFjZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIFdLSW1h
Z2VPcHRpb25zIG9wdGlvbnMpCiB7CiAgICAgSW50U2l6ZSBpbWFnZVNpemUoY2Fpcm9faW1hZ2Vf
c3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZSksIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdo
dChzdXJmYWNlKSk7Ci0gICAgUmVmUHRyPFdlYkltYWdlPiB3ZWJJbWFnZSA9IFdlYkltYWdlOjpj
cmVhdGUoaW1hZ2VTaXplLCB0b0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7CisgICAgYXV0byB3ZWJJ
bWFnZSA9IFdlYkltYWdlOjpjcmVhdGUoaW1hZ2VTaXplLCB0b0ltYWdlT3B0aW9ucyhvcHRpb25z
KSk7CiAgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSB3ZWJJbWFnZS0+Yml0bWFwKCktPmNyZWF0
ZUdyYXBoaWNzQ29udGV4dCgpOwogCiAgICAgY2Fpcm9fdCogY3IgPSBncmFwaGljc0NvbnRleHQt
PnBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwpAQCAtNTQsNSArNTQsNSBAQCBXS0ltYWdlUmVmIFdL
SW1hZ2VDcmVhdGVGcm9tQ2Fpcm9TdXJmYWNlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgV0tJ
bWFnZU9wdGlvbgogICAgIGNhaXJvX3JlY3RhbmdsZShjciwgMCwgMCwgaW1hZ2VTaXplLndpZHRo
KCksIGltYWdlU2l6ZS5oZWlnaHQoKSk7CiAgICAgY2Fpcm9fZmlsbChjcik7CiAKLSAgICByZXR1
cm4gdG9BUEkod2ViSW1hZ2UucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJ
KHdlYkltYWdlLmxlYWtSZWYoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9j
Zy9XS0ltYWdlQ0cuY3BwCmluZGV4IGJjYWI2MGI1Y2RmOTdlZjBkYjIxYTAyNTMxYTgwOGM3MjEy
NGI1ZDEuLmM2MjM0M2Q5NTFiY2YwNjcyOTg4NWRlZjc3ODhmY2NlYTk1OGNiOTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCkBAIC01MCw3ICs1MCw3
IEBAIFdLSW1hZ2VSZWYgV0tJbWFnZUNyZWF0ZUZyb21DR0ltYWdlKENHSW1hZ2VSZWYgaW1hZ2VS
ZWYsIFdLSW1hZ2VPcHRpb25zIG9wdGlvbnMpCiAgICAgICAgIHJldHVybiAwOwogICAgIAogICAg
IEludFNpemUgaW1hZ2VTaXplKENHSW1hZ2VHZXRXaWR0aChpbWFnZVJlZiksIENHSW1hZ2VHZXRI
ZWlnaHQoaW1hZ2VSZWYpKTsKLSAgICBSZWZQdHI8V2ViSW1hZ2U+IHdlYkltYWdlID0gV2ViSW1h
Z2U6OmNyZWF0ZShpbWFnZVNpemUsIHRvSW1hZ2VPcHRpb25zKG9wdGlvbnMpKTsKKyAgICBhdXRv
IHdlYkltYWdlID0gV2ViSW1hZ2U6OmNyZWF0ZShpbWFnZVNpemUsIHRvSW1hZ2VPcHRpb25zKG9w
dGlvbnMpKTsKICAgICBpZiAoIXdlYkltYWdlLT5iaXRtYXAoKSkKICAgICAgICAgcmV0dXJuIDA7
CiAKQEAgLTU4LDUgKzU4LDUgQEAgV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlRnJvbUNHSW1hZ2Uo
Q0dJbWFnZVJlZiBpbWFnZVJlZiwgV0tJbWFnZU9wdGlvbnMgb3B0aW9ucykKICAgICBGbG9hdFJl
Y3QgcmVjdChGbG9hdFBvaW50KDAsIDApLCBpbWFnZVNpemUpOwogICAgIGdyYXBoaWNzQ29udGV4
dC0+Y2xlYXJSZWN0KHJlY3QpOwogICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd05hdGl2ZUltYWdl
KGltYWdlUmVmLCBpbWFnZVNpemUsIHJlY3QsIHJlY3QpOwotICAgIHJldHVybiB0b0FQSSh3ZWJJ
bWFnZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkod2ViSW1hZ2UubGVh
a1JlZigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMv
V0tDZXJ0aWZpY2F0ZUluZm9NYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFj
L1dLQ2VydGlmaWNhdGVJbmZvTWFjLm1tCmluZGV4IGM0NDBiNDY3MGE5NTgxYjVlZTZmMmZmNmY4
YTc3YTEwNmFlZTZjMjMuLmE4ODNiN2QzOTQzNWFiMzc2NTQzYWU2MjIxZGVjZjY3ODZkMDExOWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tDZXJ0aWZpY2F0
ZUluZm9NYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL21hYy9XS0NlcnRp
ZmljYXRlSW5mb01hYy5tbQpAQCAtMzUsNyArMzUsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwogV0tDZXJ0aWZpY2F0ZUluZm9SZWYgV0tDZXJ0aWZpY2F0ZUluZm9DcmVhdGVXaXRoQ2VydGZp
Y2F0ZUNoYWluKENGQXJyYXlSZWYgY2VydGlmaWNhdGVDaGFpbikKIHsKICAgICBSZWZQdHI8V2Vi
Q2VydGlmaWNhdGVJbmZvPiBjZXJ0aWZpY2F0ZUluZm8gPSBXZWJDZXJ0aWZpY2F0ZUluZm86OmNy
ZWF0ZShDZXJ0aWZpY2F0ZUluZm8oY2VydGlmaWNhdGVDaGFpbikpOwotICAgIHJldHVybiB0b0FQ
SShjZXJ0aWZpY2F0ZUluZm8ucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJ
KGNlcnRpZmljYXRlSW5mby5sZWFrUmVmKCkpOwogfQogCiBDRkFycmF5UmVmIFdLQ2VydGlmaWNh
dGVJbmZvR2V0Q2VydGlmaWNhdGVDaGFpbihXS0NlcnRpZmljYXRlSW5mb1JlZiBjZXJ0aWZpY2F0
ZUluZm9SZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFjL1dL
T2JqQ1R5cGVXcmFwcGVyUmVmLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL21hYy9X
S09iakNUeXBlV3JhcHBlclJlZi5tbQppbmRleCBlZTAxMjViYTFlYWI0OWZhOWQ0M2ZmZDZhZGY2
MDk4NmViYTY2YWQzLi5jZmNiOTAyZTE1NWNkZjcxMWQ0ZWZjYWY0ZGYwODgwODA3NjMwMTUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFjL1dLT2JqQ1R5cGVXcmFw
cGVyUmVmLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tPYmpDVHlw
ZVdyYXBwZXJSZWYubW0KQEAgLTM4LDggKzM4LDggQEAgV0tUeXBlSUQgV0tPYmpDVHlwZVdyYXBw
ZXJHZXRUeXBlSUQoKQogCiBXS09iakNUeXBlV3JhcHBlclJlZiBXS09iakNUeXBlV3JhcHBlckNy
ZWF0ZShpZCBvYmplY3QpCiB7Ci0gICAgUmVmUHRyPE9iakNPYmplY3RHcmFwaD4gb2JqZWN0V3Jh
cHBlciA9IE9iakNPYmplY3RHcmFwaDo6Y3JlYXRlKG9iamVjdCk7Ci0gICAgcmV0dXJuIHRvQVBJ
KG9iamVjdFdyYXBwZXIucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgYXV0byBvYmplY3RXcmFw
cGVyID0gT2JqQ09iamVjdEdyYXBoOjpjcmVhdGUob2JqZWN0KTsKKyAgICByZXR1cm4gdG9BUEko
Jm9iamVjdFdyYXBwZXIubGVha1JlZigpKTsKIH0KIAogaWQgV0tPYmpDVHlwZVdyYXBwZXJHZXRP
YmplY3QoV0tPYmpDVHlwZVdyYXBwZXJSZWYgd3JhcHBlclJlZikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tXZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tXZWJBcmNoaXZlLmNwcAppbmRleCA4Njc2Y2M2ZTIzMzI3
YzM5MjY0ZjA3MzYzMGRlZjA4ZmNkMjE5YWZiLi5lNmFhMjRlNTZjMTg1ZTEwMDdkMzIxYzRkMDgy
ZGFhYmIzMjBkNzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFj
L1dLV2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL21hYy9X
S1dlYkFyY2hpdmUuY3BwCkBAIC00MywzOCArNDMsMzggQEAgV0tUeXBlSUQgV0tXZWJBcmNoaXZl
R2V0VHlwZUlEKCkKIAogV0tXZWJBcmNoaXZlUmVmIFdLV2ViQXJjaGl2ZUNyZWF0ZShXS1dlYkFy
Y2hpdmVSZXNvdXJjZVJlZiBtYWluUmVzb3VyY2VSZWYsIFdLQXJyYXlSZWYgc3VicmVzb3VyY2Vz
UmVmLCBXS0FycmF5UmVmIHN1YmZyYW1lQXJjaGl2ZXNSZWYpCiB7Ci0gICAgUmVmUHRyPEFQSTo6
V2ViQXJjaGl2ZT4gd2ViQXJjaGl2ZSA9IEFQSTo6V2ViQXJjaGl2ZTo6Y3JlYXRlKHRvSW1wbCht
YWluUmVzb3VyY2VSZWYpLCB0b0ltcGwoc3VicmVzb3VyY2VzUmVmKSwgdG9JbXBsKHN1YmZyYW1l
QXJjaGl2ZXNSZWYpKTsKLSAgICByZXR1cm4gdG9BUEkod2ViQXJjaGl2ZS5yZWxlYXNlKCkubGVh
a1JlZigpKTsKKyAgICBhdXRvIHdlYkFyY2hpdmUgPSBBUEk6OldlYkFyY2hpdmU6OmNyZWF0ZSh0
b0ltcGwobWFpblJlc291cmNlUmVmKSwgdG9JbXBsKHN1YnJlc291cmNlc1JlZiksIHRvSW1wbChz
dWJmcmFtZUFyY2hpdmVzUmVmKSk7CisgICAgcmV0dXJuIHRvQVBJKCZ3ZWJBcmNoaXZlLmxlYWtS
ZWYoKSk7CiB9CiAKIFdLV2ViQXJjaGl2ZVJlZiBXS1dlYkFyY2hpdmVDcmVhdGVXaXRoRGF0YShX
S0RhdGFSZWYgZGF0YVJlZikKIHsKLSAgICBSZWZQdHI8QVBJOjpXZWJBcmNoaXZlPiB3ZWJBcmNo
aXZlID0gQVBJOjpXZWJBcmNoaXZlOjpjcmVhdGUodG9JbXBsKGRhdGFSZWYpKTsKLSAgICByZXR1
cm4gdG9BUEkod2ViQXJjaGl2ZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICBhdXRvIHdlYkFy
Y2hpdmUgPSBBUEk6OldlYkFyY2hpdmU6OmNyZWF0ZSh0b0ltcGwoZGF0YVJlZikpOworICAgIHJl
dHVybiB0b0FQSSgmd2ViQXJjaGl2ZS5sZWFrUmVmKCkpOwogfQogCiBXS1dlYkFyY2hpdmVSZWYg
V0tXZWJBcmNoaXZlQ3JlYXRlRnJvbVJhbmdlKFdLQnVuZGxlUmFuZ2VIYW5kbGVSZWYgcmFuZ2VI
YW5kbGVSZWYpCiB7Ci0gICAgUmVmUHRyPEFQSTo6V2ViQXJjaGl2ZT4gd2ViQXJjaGl2ZSA9IEFQ
STo6V2ViQXJjaGl2ZTo6Y3JlYXRlKHRvSW1wbChyYW5nZUhhbmRsZVJlZiktPmNvcmVSYW5nZSgp
KTsKLSAgICByZXR1cm4gdG9BUEkod2ViQXJjaGl2ZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAg
ICBhdXRvIHdlYkFyY2hpdmUgPSBBUEk6OldlYkFyY2hpdmU6OmNyZWF0ZSh0b0ltcGwocmFuZ2VI
YW5kbGVSZWYpLT5jb3JlUmFuZ2UoKSk7CisgICAgcmV0dXJuIHRvQVBJKCZ3ZWJBcmNoaXZlLmxl
YWtSZWYoKSk7CiB9CiAKIFdLV2ViQXJjaGl2ZVJlc291cmNlUmVmIFdLV2ViQXJjaGl2ZUNvcHlN
YWluUmVzb3VyY2UoV0tXZWJBcmNoaXZlUmVmIHdlYkFyY2hpdmVSZWYpCiB7CiAgICAgUmVmUHRy
PEFQSTo6V2ViQXJjaGl2ZVJlc291cmNlPiBtYWluUmVzb3VyY2UgPSB0b0ltcGwod2ViQXJjaGl2
ZVJlZiktPm1haW5SZXNvdXJjZSgpOwotICAgIHJldHVybiB0b0FQSShtYWluUmVzb3VyY2UucmVs
ZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKG1haW5SZXNvdXJjZS5sZWFrUmVm
KCkpOwogfQogCiBXS0FycmF5UmVmIFdLV2ViQXJjaGl2ZUNvcHlTdWJyZXNvdXJjZXMoV0tXZWJB
cmNoaXZlUmVmIHdlYkFyY2hpdmVSZWYpCiB7CiAgICAgUmVmUHRyPEFQSTo6QXJyYXk+IHN1YnJl
c291cmNlcyA9IHRvSW1wbCh3ZWJBcmNoaXZlUmVmKS0+c3VicmVzb3VyY2VzKCk7Ci0gICAgcmV0
dXJuIHRvQVBJKHN1YnJlc291cmNlcy5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4g
dG9BUEkoc3VicmVzb3VyY2VzLmxlYWtSZWYoKSk7CiB9CiAKIFdLQXJyYXlSZWYgV0tXZWJBcmNo
aXZlQ29weVN1YmZyYW1lQXJjaGl2ZXMoV0tXZWJBcmNoaXZlUmVmIHdlYkFyY2hpdmVSZWYpCiB7
CiAgICAgUmVmUHRyPEFQSTo6QXJyYXk+IHN1YmZyYW1lQXJjaGl2ZXMgPSB0b0ltcGwod2ViQXJj
aGl2ZVJlZiktPnN1YmZyYW1lQXJjaGl2ZXMoKTsKLSAgICByZXR1cm4gdG9BUEkoc3ViZnJhbWVB
cmNoaXZlcy5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkoc3ViZnJhbWVB
cmNoaXZlcy5sZWFrUmVmKCkpOwogfQogCiBXS0RhdGFSZWYgV0tXZWJBcmNoaXZlQ29weURhdGEo
V0tXZWJBcmNoaXZlUmVmIHdlYkFyY2hpdmVSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL2MvbWFjL1dLV2ViQXJjaGl2ZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tXZWJBcmNoaXZlUmVzb3VyY2UuY3BwCmluZGV4IDg0MzJk
OWViNTcxOGEwNDQxYTMxNjc3Y2UyMWQyMzE5N2ZmZWVlNDQuLmM4MTljMDIxNjhiOTNkMTEzY2Iw
ZTA2NjQzNTk1YjY5OTQ0M2ZjNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9tYWMvV0tXZWJBcmNoaXZlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUEkvYy9tYWMvV0tXZWJBcmNoaXZlUmVzb3VyY2UuY3BwCkBAIC0zOSw4ICszOSw4IEBA
IFdLVHlwZUlEIFdLV2ViQXJjaGl2ZVJlc291cmNlR2V0VHlwZUlEKCkKIAogV0tXZWJBcmNoaXZl
UmVzb3VyY2VSZWYgV0tXZWJBcmNoaXZlUmVzb3VyY2VDcmVhdGUoV0tEYXRhUmVmIGRhdGFSZWYs
IFdLVVJMUmVmIFVSTFJlZiwgV0tTdHJpbmdSZWYgTUlNRVR5cGVSZWYsIFdLU3RyaW5nUmVmIHRl
eHRFbmNvZGluZ1JlZikKIHsKLSAgICBSZWZQdHI8QVBJOjpXZWJBcmNoaXZlUmVzb3VyY2U+IHdl
YkFyY2hpdmVSZXNvdXJjZSA9IEFQSTo6V2ViQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUodG9JbXBs
KGRhdGFSZWYpLCB0b1dURlN0cmluZyhVUkxSZWYpLCB0b1dURlN0cmluZyhNSU1FVHlwZVJlZiks
IHRvV1RGU3RyaW5nKHRleHRFbmNvZGluZ1JlZikpOwotICAgIHJldHVybiB0b0FQSSh3ZWJBcmNo
aXZlUmVzb3VyY2UucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgYXV0byB3ZWJBcmNoaXZlUmVz
b3VyY2UgPSBBUEk6OldlYkFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKHRvSW1wbChkYXRhUmVmKSwg
dG9XVEZTdHJpbmcoVVJMUmVmKSwgdG9XVEZTdHJpbmcoTUlNRVR5cGVSZWYpLCB0b1dURlN0cmlu
Zyh0ZXh0RW5jb2RpbmdSZWYpKTsKKyAgICByZXR1cm4gdG9BUEkoJndlYkFyY2hpdmVSZXNvdXJj
ZS5sZWFrUmVmKCkpOwogfQogCiBXS0RhdGFSZWYgV0tXZWJBcmNoaXZlUmVzb3VyY2VDb3B5RGF0
YShXS1dlYkFyY2hpdmVSZXNvdXJjZVJlZiB3ZWJBcmNoaXZlUmVzb3VyY2VSZWYpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJV2ViQXJjaGl2ZS5tbSBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUElXZWJBcmNoaXZlLm1tCmluZGV4IDhlMTdlNWJiNTY4YWRjZDk1ZDM2YzNj
OGYzOGQ2OGNjYzI2MDE2YjAuLjkyOTAzYjM0N2E0OWZjZWNmYTZjMzVjNTllMmY2ZDY5MTZkOTgy
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElXZWJBcmNoaXZlLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElXZWJBcmNoaXZlLm1tCkBAIC04Miw3ICs4Miw3
IEBAIFdlYkFyY2hpdmU6OldlYkFyY2hpdmUoV2ViQXJjaGl2ZVJlc291cmNlKiBtYWluUmVzb3Vy
Y2UsIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4KICAgICAgICAgY29yZVN1YmZyYW1lTGVnYWN5V2Vi
QXJjaGl2ZXMudW5jaGVja2VkQXBwZW5kKHN1YmZyYW1lV2ViQXJjaGl2ZS0+Y29yZUxlZ2FjeVdl
YkFyY2hpdmUoKSk7CiAgICAgfQogCi0gICAgbV9sZWdhY3lXZWJBcmNoaXZlID0gTGVnYWN5V2Vi
QXJjaGl2ZTo6Y3JlYXRlKGNvcmVNYWluUmVzb3VyY2UucmVsZWFzZSgpLCBXVEZNb3ZlKGNvcmVB
cmNoaXZlUmVzb3VyY2VzKSwgV1RGTW92ZShjb3JlU3ViZnJhbWVMZWdhY3lXZWJBcmNoaXZlcykp
OworICAgIG1fbGVnYWN5V2ViQXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShXVEZN
b3ZlKGNvcmVNYWluUmVzb3VyY2UpLCBXVEZNb3ZlKGNvcmVBcmNoaXZlUmVzb3VyY2VzKSwgV1RG
TW92ZShjb3JlU3ViZnJhbWVMZWdhY3lXZWJBcmNoaXZlcykpOwogfQogCiBXZWJBcmNoaXZlOjpX
ZWJBcmNoaXZlKEFQSTo6RGF0YSogZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcApp
bmRleCBlYmY5NzQxMTNhYzEwYzE5YWE1NWE0YjMyYmFjZTI0NzRhZGFmYjY5Li5hZDcwNjNiMjRm
NmYwOGVhZTJiNjAzNzI2MjZkZGJkMGFmYmQzNDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1
bGUuY3BwCkBAIC0xNDUsMTMgKzE0NSwxMyBAQCBQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z2luTW9k
dWxlPiBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0T3JDcmVhdGUoY29uc3QgU3RyaW5nJgogICAg
ICAgICAgICAgcmV0dXJuIHBsdWdpbk1vZHVsZTsKICAgICB9CiAKLSAgICBSZWZQdHI8TmV0c2Nh
cGVQbHVnaW5Nb2R1bGU+IHBsdWdpbk1vZHVsZShhZG9wdFJlZihuZXcgTmV0c2NhcGVQbHVnaW5N
b2R1bGUocGx1Z2luUGF0aCkpKTsKKyAgICBhdXRvIHBsdWdpbk1vZHVsZShhZG9wdFJlZigqbmV3
IE5ldHNjYXBlUGx1Z2luTW9kdWxlKHBsdWdpblBhdGgpKSk7CiAgICAgCiAgICAgLy8gVHJ5IHRv
IGxvYWQgYW5kIGluaXRpYWxpemUgdGhlIHBsdWctaW4gbW9kdWxlLgogICAgIGlmICghcGx1Z2lu
TW9kdWxlLT5sb2FkKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAKLSAgICByZXR1cm4gcGx1Z2luTW9kdWxlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4g
V1RGTW92ZShwbHVnaW5Nb2R1bGUpOwogfQogCiB2b2lkIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpp
bmNyZW1lbnRMb2FkQ291bnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1No
YXJlYWJsZUJpdG1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFw
LmNwcAppbmRleCA0ZWVjYmNjOTk3NzQyOTRkMzQ5ZGQxOWNkYjMwMjhiMDQ5YzFiYjU3Li43ZTBk
Y2I2MzUxMTMwNWJkYmIwYjUwNTUyMzg4MDA0MDFmMjMxMTdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcApAQCAtOTksMTEgKzk5LDExIEBAIFJlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUs
IEZsYWdzIGZsYWdzCiBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZShjb25zdCBIYW5kbGUmIGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uIHByb3Rl
Y3Rpb24pCiB7CiAgICAgLy8gQ3JlYXRlIHRoZSBzaGFyZWQgbWVtb3J5LgotICAgIFJlZlB0cjxT
aGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6bWFwKGhhbmRsZS5tX2hh
bmRsZSwgcHJvdGVjdGlvbik7CisgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6
Om1hcChoYW5kbGUubV9oYW5kbGUsIHByb3RlY3Rpb24pOwogICAgIGlmICghc2hhcmVkTWVtb3J5
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBjcmVhdGUoaGFuZGxlLm1f
c2l6ZSwgaGFuZGxlLm1fZmxhZ3MsIHNoYXJlZE1lbW9yeS5yZWxlYXNlKCkpOworICAgIHJldHVy
biBjcmVhdGUoaGFuZGxlLm1fc2l6ZSwgaGFuZGxlLm1fZmxhZ3MsIFdURk1vdmUoc2hhcmVkTWVt
b3J5KSk7CiB9CiAKIGJvb2wgU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVIYW5kbGUoSGFuZGxlJiBo
YW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiBwcm90ZWN0aW9uKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKaW5kZXggN2Y5MTI3M2VkYzMwOTRiMGI5
YjllNjkzNzUzN2ZkMzkzZTk1ZDMzMy4uNzRhZmQ0YzY2NzY2YzEwNzY5YzkwMWY5YmZmOWE5Yzdj
N2MyOWE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZVJlc291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3Bw
CkBAIC0xMTQsMTEgKzExNCwxMSBAQCBSZWY8U2hhcmVhYmxlUmVzb3VyY2U+IFNoYXJlYWJsZVJl
c291cmNlOjpjcmVhdGUoUGFzc1JlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZAogCiBQYXNzUmVm
UHRyPFNoYXJlYWJsZVJlc291cmNlPiBTaGFyZWFibGVSZXNvdXJjZTo6bWFwKGNvbnN0IEhhbmRs
ZSYgaGFuZGxlKQogewotICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSA9IFNo
YXJlZE1lbW9yeTo6bWFwKGhhbmRsZS5tX2hhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9u
OjpSZWFkT25seSk7CisgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6Om1hcCho
YW5kbGUubV9oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAg
IGlmICghc2hhcmVkTWVtb3J5KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBjcmVh
dGUoc2hhcmVkTWVtb3J5LnJlbGVhc2UoKSwgaGFuZGxlLm1fb2Zmc2V0LCBoYW5kbGUubV9zaXpl
KTsKKyAgICByZXR1cm4gY3JlYXRlKFdURk1vdmUoc2hhcmVkTWVtb3J5KSwgaGFuZGxlLm1fb2Zm
c2V0LCBoYW5kbGUubV9zaXplKTsKIH0KIAogU2hhcmVhYmxlUmVzb3VyY2U6OlNoYXJlYWJsZVJl
c291cmNlKFBhc3NSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnksIHVuc2lnbmVkIG9m
ZnNldCwgdW5zaWduZWQgc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9n
dGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Bcmd1
bWVudENvZGVyc0d0ay5jcHAKaW5kZXggNTAxZDZmMTM3MDkwYzkzNDZhMmZlNGQxMTlmMDQwMWE1
NDI0M2NkZS4uN2EyZDZjNGFhZWRlMjJlNjdkYWJjOTdlYWY4YWRjZjY3ZGU2MjlhNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKQEAgLTIy
OSw3ICsyMjksNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+OjpkZWNvZGUoQXJndW1l
bnREZWNvZGVyJiBkZWNvZGVyLCBEcmFnRGF0YSYgZHJhZ0RhdAogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAotICAgIGRyYWdEYXRhID0gRHJhZ0RhdGEocGxhdGZvcm1EYXRhLnJl
bGVhc2UoKS5sZWFrUmVmKCksIGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgc3RhdGlj
X2Nhc3Q8RHJhZ09wZXJhdGlvbj4oc291cmNlT3BlcmF0aW9uTWFzayksCisgICAgZHJhZ0RhdGEg
PSBEcmFnRGF0YShwbGF0Zm9ybURhdGEubGVha1JlZigpLCBjbGllbnRQb3NpdGlvbiwgZ2xvYmFs
UG9zaXRpb24sIHN0YXRpY19jYXN0PERyYWdPcGVyYXRpb24+KHNvdXJjZU9wZXJhdGlvbk1hc2sp
LAogICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8RHJhZ0FwcGxpY2F0aW9uRmxh
Z3M+KGZsYWdzKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9Db29yZGluYXRlZEdyYXBoaWNzL1dLVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS1ZpZXcuY3Bw
CmluZGV4IGMxYWIyMmZhMWEzNTVmMjNlMmJmNzA5MjIxYmZmZjQ0NWE4OTMyOTQuLjg1ZTc5YWE0
OWZhMDdjMzE4YjI4MmFhYzhkNzgzOGRhODEzNzRhNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9Db29yZGluYXRlZEdyYXBoaWNzL1dLVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tWaWV3
LmNwcApAQCAtMzIsOCArMzIsOCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBXS1ZpZXdS
ZWYgV0tWaWV3Q3JlYXRlKFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgcGFnZUNvbmZpZ3VyYXRpb24p
CiB7Ci0gICAgUmVmUHRyPFdlYlZpZXc+IHdlYlZpZXcgPSBXZWJWaWV3OjpjcmVhdGUoKnRvSW1w
bChwYWdlQ29uZmlndXJhdGlvbikpOwotICAgIHJldHVybiB0b0FQSSh3ZWJWaWV3LnJlbGVhc2Uo
KS5sZWFrUmVmKCkpOworICAgIGF1dG8gd2ViVmlldyA9IFdlYlZpZXc6OmNyZWF0ZSgqdG9JbXBs
KHBhZ2VDb25maWd1cmF0aW9uKSk7CisgICAgcmV0dXJuIHRvQVBJKCZ3ZWJWaWV3LmxlYWtSZWYo
KSk7CiB9CiAKIFdLU2l6ZSBXS1ZpZXdHZXRTaXplKFdLVmlld1JlZiB2aWV3UmVmKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQmF0dGVyeVN0YXR1cy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tCYXR0ZXJ5U3RhdHVzLmNwcAppbmRl
eCA5NTM4NTBkOGJjMmMyN2RiMTAzYTU0MGM0OGZjNTlmNWQ2YWUwMzU2Li4wOWY4Y2M3Njk5Njlh
ZGQxZjJiYWE3N2ZiOWI4MGNkNmMwZDNkYzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tCYXR0ZXJ5U3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tCYXR0ZXJ5U3RhdHVzLmNwcApAQCAtNDYsOCArNDYsOCBAQCBXS1R5
cGVJRCBXS0JhdHRlcnlTdGF0dXNHZXRUeXBlSUQoKQogV0tCYXR0ZXJ5U3RhdHVzUmVmIFdLQmF0
dGVyeVN0YXR1c0NyZWF0ZShib29sIGlzQ2hhcmdpbmcsIGRvdWJsZSBjaGFyZ2luZ1RpbWUsIGRv
dWJsZSBkaXNjaGFyZ2luZ1RpbWUsIGRvdWJsZSBsZXZlbCkKIHsKICNpZiBFTkFCTEUoQkFUVEVS
WV9TVEFUVVMpCi0gICAgUmVmUHRyPFdlYkJhdHRlcnlTdGF0dXM+IHN0YXR1cyA9IFdlYkJhdHRl
cnlTdGF0dXM6OmNyZWF0ZShpc0NoYXJnaW5nLCBjaGFyZ2luZ1RpbWUsIGRpc2NoYXJnaW5nVGlt
ZSwgbGV2ZWwpOwotICAgIHJldHVybiB0b0FQSShzdGF0dXMucmVsZWFzZSgpLmxlYWtSZWYoKSk7
CisgICAgYXV0byBzdGF0dXMgPSBXZWJCYXR0ZXJ5U3RhdHVzOjpjcmVhdGUoaXNDaGFyZ2luZywg
Y2hhcmdpbmdUaW1lLCBkaXNjaGFyZ2luZ1RpbWUsIGxldmVsKTsKKyAgICByZXR1cm4gdG9BUEko
JnN0YXR1cy5sZWFrUmVmKCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaXNDaGFyZ2luZyk7
CiAgICAgVU5VU0VEX1BBUkFNKGNoYXJnaW5nVGltZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvblBvc2l0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uUG9zaXRpb24uY3BwCmluZGV4IDVk
OTRmM2U4NjJiYTI5YjljY2NmZjllZTUwNjBkMTY3ZWE2MDFjNzguLjhiNGM1YjY1MDVhYTFkYTI3
ZmRlY2U1ZjdiODU1ZDM2OGI0MTRiZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uUG9zaXRpb24uY3BwCkBAIC00Myw2ICs0Myw2
IEBAIFdLR2VvbG9jYXRpb25Qb3NpdGlvblJlZiBXS0dlb2xvY2F0aW9uUG9zaXRpb25DcmVhdGUo
ZG91YmxlIHRpbWVzdGFtcCwgZG91YmxlIGxhCiAKIFdLR2VvbG9jYXRpb25Qb3NpdGlvblJlZiBX
S0dlb2xvY2F0aW9uUG9zaXRpb25DcmVhdGVfYihkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0
aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0Fs
dGl0dWRlLCBkb3VibGUgYWx0aXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBk
b3VibGUgYWx0aXR1ZGVBY2N1cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFk
aW5nLCBib29sIHByb3ZpZGVzU3BlZWQsIGRvdWJsZSBzcGVlZCkKIHsKLSAgICBSZWZQdHI8V2Vi
R2VvbG9jYXRpb25Qb3NpdGlvbj4gcG9zaXRpb24gPSBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpj
cmVhdGUodGltZXN0YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSwgcHJvdmlkZXNB
bHRpdHVkZSwgYWx0aXR1ZGUsIHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwgYWx0aXR1ZGVBY2N1
cmFjeSwgcHJvdmlkZXNIZWFkaW5nLCBoZWFkaW5nLCBwcm92aWRlc1NwZWVkLCBzcGVlZCk7Ci0g
ICAgcmV0dXJuIHRvQVBJKHBvc2l0aW9uLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgIGF1dG8g
cG9zaXRpb24gPSBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUodGltZXN0YW1wLCBsYXRp
dHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSwgcHJvdmlkZXNBbHRpdHVkZSwgYWx0aXR1ZGUsIHBy
b3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwgYWx0aXR1ZGVBY2N1cmFjeSwgcHJvdmlkZXNIZWFkaW5n
LCBoZWFkaW5nLCBwcm92aWRlc1NwZWVkLCBzcGVlZCk7CisgICAgcmV0dXJuIHRvQVBJKHBvc2l0
aW9uLmxlYWtSZWYoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tHcmFtbWFyRGV0YWlsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS0dyYW1tYXJEZXRhaWwuY3BwCmluZGV4IDA2NWY5OWJhNzUwYTlhZDk4NTQzYmJkYWI0NGJi
ZWY1N2E4Yjc0MDcuLmFmZDk4OTVkZGUzZGY0ZTNkNjE3ODcyNDdhNDNiNjFhOGU5ZjdlY2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0dyYW1tYXJEZXRhaWwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0dyYW1tYXJEZXRhaWwu
Y3BwCkBAIC00MCw4ICs0MCw4IEBAIFdLVHlwZUlEIFdLR3JhbW1hckRldGFpbEdldFR5cGVJRCgp
CiAKIFdLR3JhbW1hckRldGFpbFJlZiBXS0dyYW1tYXJEZXRhaWxDcmVhdGUoaW50IGxvY2F0aW9u
LCBpbnQgbGVuZ3RoLCBXS0FycmF5UmVmIGd1ZXNzZXMsIFdLU3RyaW5nUmVmIHVzZXJEZXNjcmlw
dGlvbikKIHsKLSAgICBSZWZQdHI8V2ViR3JhbW1hckRldGFpbD4gZGV0YWlsID0gV2ViR3JhbW1h
ckRldGFpbDo6Y3JlYXRlKGxvY2F0aW9uLCBsZW5ndGgsIHRvSW1wbChndWVzc2VzKSwgdG9XVEZT
dHJpbmcodXNlckRlc2NyaXB0aW9uKSk7Ci0gICAgcmV0dXJuIHRvQVBJKGRldGFpbC5yZWxlYXNl
KCkubGVha1JlZigpKTsKKyAgICBhdXRvIGRldGFpbCA9IFdlYkdyYW1tYXJEZXRhaWw6OmNyZWF0
ZShsb2NhdGlvbiwgbGVuZ3RoLCB0b0ltcGwoZ3Vlc3NlcyksIHRvV1RGU3RyaW5nKHVzZXJEZXNj
cmlwdGlvbikpOworICAgIHJldHVybiB0b0FQSShkZXRhaWwubGVha1JlZigpKTsKIH0KIAogaW50
IFdLR3JhbW1hckRldGFpbEdldExvY2F0aW9uKFdLR3JhbW1hckRldGFpbFJlZiBncmFtbWFyRGV0
YWlsUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCA4
ZTMwMzNlMzA5ZWQ0MjU4YzJlNzQ2NWE4ZjYzYzQ2YmI2NDI5YmI1Li4xMGQwODgyMzQ0NGYyMWZh
OGE1NDQ3ODRiM2Y2MmExMzJmNTNkMGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlLmNwcApAQCAtNDM5LDcgKzQzOSw3IEBAIFdLVHlwZVJlZiBXS1BhZ2VDb3B5U2Vz
c2lvblN0YXRlKFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VTZXNzaW9u
CiAgICAgfSk7CiAKICAgICBpZiAoc2hvdWxkUmV0dXJuRGF0YSkKLSAgICAgICAgcmV0dXJuIHRv
QVBJKGVuY29kZUxlZ2FjeVNlc3Npb25TdGF0ZShzZXNzaW9uU3RhdGUpLnJlbGVhc2UoKS5sZWFr
UmVmKCkpOworICAgICAgICByZXR1cm4gdG9BUEkoZW5jb2RlTGVnYWN5U2Vzc2lvblN0YXRlKHNl
c3Npb25TdGF0ZSkubGVha1JlZigpKTsKIAogICAgIHJldHVybiB0b0FQSSgmQVBJOjpTZXNzaW9u
U3RhdGU6OmNyZWF0ZShXVEZNb3ZlKHNlc3Npb25TdGF0ZSkpLmxlYWtSZWYoKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcAppbmRleCAzY2M2
MDk1NGQ4Y2RmOTlhMmE4NzA5YTRlMmQ3ZTFlZjViNzcxZWNkLi40ZTIxNzcxOGE1NjRhOWMxMmU1
ZjQ1OTJhNGU0Y2E5MjE4N2VlYmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2VHcm91cC5jcHAKQEAgLTQxLDggKzQxLDggQEAgV0tUeXBlSUQgV0tQYWdlR3Jv
dXBHZXRUeXBlSUQoKQogCiBXS1BhZ2VHcm91cFJlZiBXS1BhZ2VHcm91cENyZWF0ZVdpdGhJZGVu
dGlmaWVyKFdLU3RyaW5nUmVmIGlkZW50aWZpZXIpCiB7Ci0gICAgUmVmUHRyPFdlYlBhZ2VHcm91
cD4gcGFnZUdyb3VwID0gV2ViUGFnZUdyb3VwOjpjcmVhdGUodG9XVEZTdHJpbmcoaWRlbnRpZmll
cikpOwotICAgIHJldHVybiB0b0FQSShwYWdlR3JvdXAucmVsZWFzZSgpLmxlYWtSZWYoKSk7Cisg
ICAgYXV0byBwYWdlR3JvdXAgPSBXZWJQYWdlR3JvdXA6OmNyZWF0ZSh0b1dURlN0cmluZyhpZGVu
dGlmaWVyKSk7CisgICAgcmV0dXJuIHRvQVBJKHBhZ2VHcm91cC5sZWFrUmVmKCkpOwogfQogCiBX
S1N0cmluZ1JlZiBXS1BhZ2VHcm91cENvcHlJZGVudGlmaWVyKFdLUGFnZUdyb3VwUmVmIHBhZ2VH
cm91cFJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1By
ZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVu
Y2VzLmNwcAppbmRleCA2MDUzMjRkNTZlNTIzYTZlYjEwNjFjZWUzZmZiMmFjMzJlZmI0NGNjLi5l
OWQwZjE0NTg4OTViY2NmNTgyZTRlMDFlNzhlOTU1NjdjNDllZGJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCkBAIC00NiwyMCArNDYs
MjAgQEAgV0tUeXBlSUQgV0tQcmVmZXJlbmNlc0dldFR5cGVJRCgpCiAKIFdLUHJlZmVyZW5jZXNS
ZWYgV0tQcmVmZXJlbmNlc0NyZWF0ZSgpCiB7Ci0gICAgUmVmUHRyPFdlYlByZWZlcmVuY2VzPiBw
cmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGVXaXRoTGVnYWN5RGVmYXVsdHMoU3Ry
aW5nKCksICJXZWJLaXQyLiIsICJXZWJLaXQyLiIpOwotICAgIHJldHVybiB0b0FQSShwcmVmZXJl
bmNlcy5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gV2ViUHJl
ZmVyZW5jZXM6OmNyZWF0ZVdpdGhMZWdhY3lEZWZhdWx0cyhTdHJpbmcoKSwgIldlYktpdDIuIiwg
IldlYktpdDIuIik7CisgICAgcmV0dXJuIHRvQVBJKHByZWZlcmVuY2VzLmxlYWtSZWYoKSk7CiB9
CiAKIFdLUHJlZmVyZW5jZXNSZWYgV0tQcmVmZXJlbmNlc0NyZWF0ZVdpdGhJZGVudGlmaWVyKFdL
U3RyaW5nUmVmIGlkZW50aWZpZXJSZWYpCiB7Ci0gICAgUmVmUHRyPFdlYlByZWZlcmVuY2VzPiBw
cmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGVXaXRoTGVnYWN5RGVmYXVsdHModG9X
VEZTdHJpbmcoaWRlbnRpZmllclJlZiksICJXZWJLaXQyLiIsICJXZWJLaXQyLiIpOwotICAgIHJl
dHVybiB0b0FQSShwcmVmZXJlbmNlcy5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICBhdXRvIHBy
ZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZVdpdGhMZWdhY3lEZWZhdWx0cyh0b1dU
RlN0cmluZyhpZGVudGlmaWVyUmVmKSwgIldlYktpdDIuIiwgIldlYktpdDIuIik7CisgICAgcmV0
dXJuIHRvQVBJKHByZWZlcmVuY2VzLmxlYWtSZWYoKSk7CiB9CiAKIFdLUHJlZmVyZW5jZXNSZWYg
V0tQcmVmZXJlbmNlc0NyZWF0ZUNvcHkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZikK
IHsKLSAgICBSZWZQdHI8V2ViUHJlZmVyZW5jZXM+IHByZWZlcmVuY2VzID0gdG9JbXBsKHByZWZl
cmVuY2VzUmVmKS0+Y29weSgpOwotICAgIHJldHVybiB0b0FQSShwcmVmZXJlbmNlcy5yZWxlYXNl
KCkubGVha1JlZigpKTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gdG9JbXBsKHByZWZlcmVuY2Vz
UmVmKS0+Y29weSgpOworICAgIHJldHVybiB0b0FQSShwcmVmZXJlbmNlcy5sZWFrUmVmKCkpOwog
fQogCiB2b2lkIFdLUHJlZmVyZW5jZXNFbmFibGVBbGxFeHBlcmltZW50YWxGZWF0dXJlcyhXS1By
ZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLU2Vzc2lvblJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tTZXNzaW9uUmVmLmNwcAppbmRleCBhOTM1NzkwODcyNTQ2ZTE3N2U5MGMxM2U2
ZTM1OGQ3MTZmZGM1YTBjLi5mZWRjMGU4YTc4OWRlZTU3NmViZWJkNmJmOTYxNzUxNzdjNDU0N2Vj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tTZXNzaW9uUmVm
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tTZXNzaW9uUmVmLmNw
cApAQCAtMzcsOCArMzcsOCBAQCBXS1Nlc3Npb25SZWYgV0tTZXNzaW9uQ3JlYXRlKGJvb2wgaXNF
cGhlbWVyYWwpCiAgICAgaWYgKCFpc0VwaGVtZXJhbCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBSZWZQdHI8QVBJOjpTZXNzaW9uPiBzZXNzaW9uID0gQVBJOjpTZXNzaW9uOjpjcmVh
dGVFcGhlbWVyYWwoKTsKLSAgICByZXR1cm4gdG9BUEkoc2Vzc2lvbi5yZWxlYXNlKCkubGVha1Jl
ZigpKTsKKyAgICBhdXRvIHNlc3Npb24gPSBBUEk6OlNlc3Npb246OmNyZWF0ZUVwaGVtZXJhbCgp
OworICAgIHJldHVybiB0b0FQSSgmc2Vzc2lvbi5sZWFrUmVmKCkpOwogfQogCiBXS1R5cGVJRCBX
S1Nlc3Npb25HZXRUeXBlSUQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLU2Vzc2lvblN0YXRlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS1Nlc3Npb25TdGF0ZVJlZi5jcHAKaW5kZXggOThlNzE3NTE5ZDU2YTI3NWE1MDQxMTVm
Y2Q4NmZhZWY0NTVjMGQ2NS4uYzkzOGY1MTRjYTM4ZTIyNDQwZWNmMmFiMGIyNGU2ZGNhYjFkNTlk
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLU2Vzc2lvblN0
YXRlUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tTZXNzaW9u
U3RhdGVSZWYuY3BwCkBAIC00OCw1ICs0OCw1IEBAIFdLU2Vzc2lvblN0YXRlUmVmIFdLU2Vzc2lv
blN0YXRlQ3JlYXRlRnJvbURhdGEoV0tEYXRhUmVmIGRhdGEpCiAKIFdLRGF0YVJlZiBXS1Nlc3Np
b25TdGF0ZUNvcHlEYXRhKFdLU2Vzc2lvblN0YXRlUmVmIHNlc3Npb25TdGF0ZSkKIHsKLSAgICBy
ZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6OmVuY29kZUxlZ2FjeVNlc3Npb25TdGF0ZShXZWJL
aXQ6OnRvSW1wbChzZXNzaW9uU3RhdGUpLT5zZXNzaW9uU3RhdGUoKSkucmVsZWFzZSgpLmxlYWtS
ZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0OjplbmNvZGVMZWdhY3lTZXNz
aW9uU3RhdGUoV2ViS2l0Ojp0b0ltcGwoc2Vzc2lvblN0YXRlKS0+c2Vzc2lvblN0YXRlKCkpLmxl
YWtSZWYoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
bWFjL1dLQ29udGV4dFByaXZhdGVNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMubW0KaW5kZXggNGMxOTJiNmQ0YTZlOGM1NzcyZjYw
MzA1ZjY2ZWYyMThhYTBjMmIxZS4uYTU4OTEwNGIxMmE5OGNkN2Q3ZjYxZGFhOGY5NmY0ZGNkNWY5
YzJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0Nv
bnRleHRQcml2YXRlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9t
YWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbQpAQCAtNzMsOCArNzMsOCBAQCBXS0RpY3Rpb25hcnlS
ZWYgV0tDb250ZXh0Q29weVBsdWdJbkluZm9Gb3JCdW5kbGVJZGVudGlmaWVyKFdLQ29udGV4dFJl
ZiBjb250ZXh0UgogICAgIGlmIChwbHVnaW4ucGF0aC5pc051bGwoKSkKICAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICBSZWZQdHI8QVBJOjpEaWN0aW9uYXJ5PiBkaWN0aW9uYXJ5ID0gY3JlYXRlUGx1
Z2luSW5mb3JtYXRpb25EaWN0aW9uYXJ5KHBsdWdpbik7Ci0gICAgcmV0dXJuIHRvQVBJKGRpY3Rp
b25hcnkucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgYXV0byBkaWN0aW9uYXJ5ID0gY3JlYXRl
UGx1Z2luSW5mb3JtYXRpb25EaWN0aW9uYXJ5KHBsdWdpbik7CisgICAgcmV0dXJuIHRvQVBJKCZk
aWN0aW9uYXJ5LmxlYWtSZWYoKSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDMw
MWNiY2U5NDhkMmIxNGY5MDM5ZGExNDZkNjJkOTcxODBhYjMxNmMuLjYwMDAwODhiZDQxMzYzZmIy
N2QxMzgwYzdkYmUyZmYzM2FhMjJjOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC02NjEsNyArNjYxLDcgQEAgLSAoV0tOYXZpZ2F0
aW9uICopbG9hZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKICAgICBpZiAoIW5hdmln
YXRpb24pCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmln
YXRpb24ucmVsZWFzZSgpLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBbd3Jh
cHBlcigqbmF2aWdhdGlvbi5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAoV0tOYXZp
Z2F0aW9uICopbG9hZEZpbGVVUkw6KE5TVVJMICopVVJMIGFsbG93aW5nUmVhZEFjY2Vzc1RvVVJM
OihOU1VSTCAqKXJlYWRBY2Nlc3NVUkwKQEAgLTY3Niw3ICs2NzYsNyBAQCAtIChXS05hdmlnYXRp
b24gKilsb2FkRmlsZVVSTDooTlNVUkwgKilVUkwgYWxsb3dpbmdSZWFkQWNjZXNzVG9VUkw6KE5T
VVJMICopcmVhZAogICAgIGlmICghbmF2aWdhdGlvbikKICAgICAgICAgcmV0dXJuIG5pbDsKIAot
ICAgIHJldHVybiBbd3JhcHBlcigqbmF2aWdhdGlvbi5yZWxlYXNlKCkubGVha1JlZigpKSBhdXRv
cmVsZWFzZV07CisgICAgcmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLmxlYWtSZWYoKSkgYXV0
b3JlbGVhc2VdOwogfQogCiAtIChXS05hdmlnYXRpb24gKilsb2FkSFRNTFN0cmluZzooTlNTdHJp
bmcgKilzdHJpbmcgYmFzZVVSTDooTlNVUkwgKiliYXNlVVJMCkBAIC02OTIsNyArNjkyLDcgQEAg
LSAoV0tOYXZpZ2F0aW9uICopbG9hZERhdGE6KE5TRGF0YSAqKWRhdGEgTUlNRVR5cGU6KE5TU3Ry
aW5nICopTUlNRVR5cGUgY2hhcmFjdGUKICAgICBpZiAoIW5hdmlnYXRpb24pCiAgICAgICAgIHJl
dHVybiBuaWw7CiAKLSAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ucmVsZWFzZSgpLmxl
YWtSZWYoKSkgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBbd3JhcHBlcigqbmF2aWdhdGlvbi5s
ZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAoV0tOYXZpZ2F0aW9uICopZ29Ub0JhY2tG
b3J3YXJkTGlzdEl0ZW06KFdLQmFja0ZvcndhcmRMaXN0SXRlbSAqKWl0ZW0KQEAgLTcwMSw3ICs3
MDEsNyBAQCAtIChXS05hdmlnYXRpb24gKilnb1RvQmFja0ZvcndhcmRMaXN0SXRlbTooV0tCYWNr
Rm9yd2FyZExpc3RJdGVtICopaXRlbQogICAgIGlmICghbmF2aWdhdGlvbikKICAgICAgICAgcmV0
dXJuIG5pbDsKIAotICAgIHJldHVybiBbd3JhcHBlcigqbmF2aWdhdGlvbi5yZWxlYXNlKCkubGVh
a1JlZigpKSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLmxl
YWtSZWYoKSkgYXV0b3JlbGVhc2VdOwogfQogCiAtIChOU1N0cmluZyAqKXRpdGxlCkBAIC03NTgs
NyArNzU4LDcgQEAgLSAoV0tOYXZpZ2F0aW9uICopZ29CYWNrCiAgICAgaWYgKCFuYXZpZ2F0aW9u
KQogICAgICAgICByZXR1cm4gbmlsOwogIAotICAgIHJldHVybiBbd3JhcHBlcigqbmF2aWdhdGlv
bi5yZWxlYXNlKCkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIFt3cmFwcGVy
KCpuYXZpZ2F0aW9uLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOwogfQogCiAtIChXS05hdmlnYXRp
b24gKilnb0ZvcndhcmQKQEAgLTc2Nyw3ICs3NjcsNyBAQCAtIChXS05hdmlnYXRpb24gKilnb0Zv
cndhcmQKICAgICBpZiAoIW5hdmlnYXRpb24pCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBy
ZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ucmVsZWFzZSgpLmxlYWtSZWYoKSkgYXV0b3JlbGVh
c2VdOworICAgIHJldHVybiBbd3JhcHBlcigqbmF2aWdhdGlvbi5sZWFrUmVmKCkpIGF1dG9yZWxl
YXNlXTsKIH0KIAogLSAoV0tOYXZpZ2F0aW9uICopcmVsb2FkCkBAIC03NzgsNyArNzc4LDcgQEAg
LSAoV0tOYXZpZ2F0aW9uICopcmVsb2FkCiAgICAgaWYgKCFuYXZpZ2F0aW9uKQogICAgICAgICBy
ZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLnJlbGVhc2UoKS5s
ZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24u
bGVha1JlZigpKSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKFdLTmF2aWdhdGlvbiAqKXJlbG9hZEZy
b21PcmlnaW4KQEAgLTc4OSw3ICs3ODksNyBAQCAtIChXS05hdmlnYXRpb24gKilyZWxvYWRGcm9t
T3JpZ2luCiAgICAgaWYgKCFuYXZpZ2F0aW9uKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAg
cmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLnJlbGVhc2UoKS5sZWFrUmVmKCkpIGF1dG9yZWxl
YXNlXTsKKyAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ubGVha1JlZigpKSBhdXRvcmVs
ZWFzZV07CiB9CiAKIC0gKHZvaWQpc3RvcExvYWRpbmcKQEAgLTMxNzcsNyArMzE3Nyw3IEBAIC0g
KFdLTmF2aWdhdGlvbiAqKV9sb2FkRGF0YTooTlNEYXRhICopZGF0YSBNSU1FVHlwZTooTlNTdHJp
bmcgKilNSU1FVHlwZSBjaGFyYWN0CiAgICAgaWYgKCFuYXZpZ2F0aW9uKQogICAgICAgICByZXR1
cm4gbmlsOwogCi0gICAgcmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLnJlbGVhc2UoKS5sZWFr
UmVmKCkpIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ubGVh
a1JlZigpKSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKE5TQXJyYXkgKilfY2VydGlmaWNhdGVDaGFp
bgpAQCAtMzI1OCw3ICszMjU4LDcgQEAgLSAoV0tOYXZpZ2F0aW9uICopX3JlbG9hZFdpdGhvdXRD
b250ZW50QmxvY2tlcnMKICAgICBpZiAoIW5hdmlnYXRpb24pCiAgICAgICAgIHJldHVybiBuaWw7
CiAgICAgCi0gICAgcmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLnJlbGVhc2UoKS5sZWFrUmVm
KCkpIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ubGVha1Jl
ZigpKSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKHZvaWQpX2tpbGxXZWJDb250ZW50UHJvY2Vzc0Fu
ZFJlc2V0U3RhdGUKQEAgLTMzMzksNyArMzMzOSw3IEBAIC0gKE5TRGF0YSAqKV9zZXNzaW9uU3Rh
dGVEYXRhCiAgICAgV2ViS2l0OjpTZXNzaW9uU3RhdGUgc2Vzc2lvblN0YXRlID0gX3BhZ2UtPnNl
c3Npb25TdGF0ZSgpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIG5vdCB1c2UgdGhlIGxl
Z2FjeSBzZXNzaW9uIHN0YXRlIGVuY29kZXIuCi0gICAgcmV0dXJuIFt3cmFwcGVyKCpXZWJLaXQ6
OmVuY29kZUxlZ2FjeVNlc3Npb25TdGF0ZShzZXNzaW9uU3RhdGUpLnJlbGVhc2UoKS5sZWFrUmVm
KCkpIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gW3dyYXBwZXIoKldlYktpdDo6ZW5jb2RlTGVn
YWN5U2Vzc2lvblN0YXRlKHNlc3Npb25TdGF0ZSkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CiB9
CiAKIC0gKF9XS1Nlc3Npb25TdGF0ZSAqKV9zZXNzaW9uU3RhdGUKQEAgLTMzNjMsNyArMzM2Myw3
IEBAIC0gKFdLTmF2aWdhdGlvbiAqKV9yZXN0b3JlU2Vzc2lvblN0YXRlOihfV0tTZXNzaW9uU3Rh
dGUgKilzZXNzaW9uU3RhdGUgYW5kTmF2aWdhCiAgICAgaWYgKCFuYXZpZ2F0aW9uKQogICAgICAg
ICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLnJlbGVhc2Uo
KS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRp
b24ubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKHZvaWQpX2Nsb3NlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZGF0YWJhc2VfbWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZGF0YWJhc2VfbWFu
YWdlci5jcHAKaW5kZXggZGFjZjc4ZmE5NDg3MGE3MWJiYTU2MDRkMzNjOWJhYjUyMWU3MmRjMi4u
NzZmY2QxOTY3OGY1ZWU2M2E3NWFiNTIwYmZjYmE5MDJhNTMxMmRkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2RhdGFiYXNlX21hbmFnZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19kYXRhYmFzZV9tYW5hZ2Vy
LmNwcApAQCAtNzUsNyArNzUsNyBAQCBFaW5hX0xpc3QqIEV3a0RhdGFiYXNlTWFuYWdlcjo6Y3Jl
YXRlT3JpZ2luTGlzdChXS0FycmF5UmVmIG9yaWdpbnMpIGNvbnN0CiAgICAgICAgICAgICBvcmln
aW4gPSBFd2tTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHdrT3JpZ2luUmVmKTsKICAgICAgICAgICAg
IG1fd3JhcHBlckNhY2hlLnNldCh3a09yaWdpblJlZiwgb3JpZ2luKTsKICAgICAgICAgfQotICAg
ICAgICBvcmlnaW5MaXN0ID0gZWluYV9saXN0X2FwcGVuZChvcmlnaW5MaXN0LCBvcmlnaW4ucmVs
ZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgICAgIG9yaWdpbkxpc3QgPSBlaW5hX2xpc3RfYXBwZW5k
KG9yaWdpbkxpc3QsIG9yaWdpbi5sZWFrUmVmKCkpOwogICAgIH0KIAogICAgIHJldHVybiBvcmln
aW5MaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3N0b3JhZ2VfbWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfc3RvcmFnZV9tYW5hZ2VyLmNwcAppbmRleCA1ZDNlZGIwYTI2OTZiMjE1MWNmNjA4NWY3ZDY1
NTBlYzQyZjA4NDgzLi4yODFiOWNlMWMxNjE4NTA5NzA0ZDE3MWMyNTE3ZDMxZWUzMTFhNDQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfc3RvcmFnZV9t
YW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfc3Rv
cmFnZV9tYW5hZ2VyLmNwcApAQCAtNTgsNyArNTgsNyBAQCBFaW5hX0xpc3QqIEV3a1N0b3JhZ2VN
YW5hZ2VyOjpjcmVhdGVPcmlnaW5MaXN0KFdLQXJyYXlSZWYgb3JpZ2lucykgY29uc3QKICAgICAg
ICAgICAgIG9yaWdpbiA9IEV3a1NlY3VyaXR5T3JpZ2luOjpjcmVhdGUod2tPcmlnaW5SZWYpOwog
ICAgICAgICAgICAgbV93cmFwcGVyQ2FjaGUuc2V0KHdrT3JpZ2luUmVmLCBvcmlnaW4pOwogICAg
ICAgICB9Ci0gICAgICAgIG9yaWdpbkxpc3QgPSBlaW5hX2xpc3RfYXBwZW5kKG9yaWdpbkxpc3Qs
IG9yaWdpbi5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICAgICAgb3JpZ2luTGlzdCA9IGVpbmFf
bGlzdF9hcHBlbmQob3JpZ2luTGlzdCwgb3JpZ2luLmxlYWtSZWYoKSk7CiAgICAgfQogCiAgICAg
cmV0dXJuIG9yaWdpbkxpc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IDk2ZmUxZmMyOWE2NWQyYjZlNTk4MGUwZjEwODUw
NDBhNzYwMTRkMzIuLjQxNDgwNmNlNGMyMjhjZjk3NWU1MGE2ZTFlNTI1ZDVlOGZiODhlNTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcu
Y3BwCkBAIC0xODM3LDcgKzE4MzcsNyBAQCBXZWJQYWdlUHJveHkqIHdlYmtpdFdlYlZpZXdDcmVh
dGVOZXdQYWdlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IFdpbmRvd0ZlYQogICAgIHdl
YmtpdFdpbmRvd1Byb3BlcnRpZXNVcGRhdGVGcm9tV2ViV2luZG93RmVhdHVyZXMobmV3V2ViVmll
dy0+cHJpdi0+d2luZG93UHJvcGVydGllcy5nZXQoKSwgd2luZG93RmVhdHVyZXMpOwogCiAgICAg
UmVmUHRyPFdlYlBhZ2VQcm94eT4gbmV3UGFnZSA9IGdldFBhZ2UobmV3V2ViVmlldyk7Ci0gICAg
cmV0dXJuIG5ld1BhZ2UucmVsZWFzZSgpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gbmV3UGFnZS5s
ZWFrUmVmKCk7CiB9CiAKIHZvaWQgd2Via2l0V2ViVmlld1JlYWR5VG9TaG93UGFnZShXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3KQpAQCAtMTkyNSw3ICsxOTI1LDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3
TW91c2VUYXJnZXRDaGFuZ2VkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IFdlYkhpdFRl
c3RSZXMKIAogdm9pZCB3ZWJraXRXZWJWaWV3UHJpbnRGcmFtZShXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3LCBXZWJGcmFtZVByb3h5KiBmcmFtZSkKIHsKLSAgICBHUmVmUHRyPFdlYktpdFByaW50T3Bl
cmF0aW9uPiBwcmludE9wZXJhdGlvbiA9IGFkb3B0R1JlZih3ZWJraXRfcHJpbnRfb3BlcmF0aW9u
X25ldyh3ZWJWaWV3KSk7CisgICAgYXV0byBwcmludE9wZXJhdGlvbiA9IGFkb3B0R1JlZih3ZWJr
aXRfcHJpbnRfb3BlcmF0aW9uX25ldyh3ZWJWaWV3KSk7CiAgICAgd2Via2l0UHJpbnRPcGVyYXRp
b25TZXRQcmludE1vZGUocHJpbnRPcGVyYXRpb24uZ2V0KCksIFByaW50SW5mbzo6UHJpbnRNb2Rl
U3luYyk7CiAgICAgZ2Jvb2xlYW4gcmV0dXJuVmFsdWU7CiAgICAgZ19zaWduYWxfZW1pdCh3ZWJW
aWV3LCBzaWduYWxzW1BSSU5UXSwgMCwgcHJpbnRPcGVyYXRpb24uZ2V0KCksICZyZXR1cm5WYWx1
ZSk7CkBAIC0zMjA0LDcgKzMyMDQsNyBAQCBzdGF0aWMgdm9pZCBmaWxlUmVwbGFjZUNvbnRlbnRz
Q2FsbGJhY2soR09iamVjdCogb2JqZWN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZwogCiBzdGF0
aWMgdm9pZCBnZXRDb250ZW50c0FzTUhUTUxEYXRhQ2FsbGJhY2soQVBJOjpEYXRhKiB3a0RhdGEs
IEdUYXNrKiB0YXNrUHRyKQogewotICAgIEdSZWZQdHI8R1Rhc2s+IHRhc2sgPSBhZG9wdEdSZWYo
dGFza1B0cik7CisgICAgYXV0byB0YXNrID0gYWRvcHRHUmVmKHRhc2tQdHIpOwogICAgIGlmIChn
X3Rhc2tfcmV0dXJuX2Vycm9yX2lmX2NhbmNlbGxlZCh0YXNrLmdldCgpKSkKICAgICAgICAgcmV0
dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvU2Vzc2lv
blN0YXRlQ29kaW5nLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1Nlc3Npb25T
dGF0ZUNvZGluZy5tbQppbmRleCAzZWQ0MTlkY2Q1Mzk3NDExODY0MDhmYmI4MGIwZGQ4NWUxMGI0
MDFhLi42MjNiYTQ2MGEyMDhhYjdkNzM2MTI3Y2VhYTg0NDE0ZmNhMDQ1MDNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvU2Vzc2lvblN0YXRlQ29kaW5nLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9TZXNzaW9uU3RhdGVDb2RpbmcubW0K
QEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBSZXRhaW5QdHI8TlNEYXRhPiBl
bmNvZGVTZXNzaW9uU3RhdGUoY29uc3QgU2Vzc2lvblN0YXRlJiBzZXNzaW9uU3RhdGUpCiB7CiAj
aWYgV0tfQVBJX0VOQUJMRUQKLSAgICByZXR1cm4gW3dyYXBwZXIoKldlYktpdDo6ZW5jb2RlTGVn
YWN5U2Vzc2lvblN0YXRlKHNlc3Npb25TdGF0ZSkucmVsZWFzZSgpLmxlYWtSZWYoKSkgYXV0b3Jl
bGVhc2VdOworICAgIHJldHVybiBbd3JhcHBlcigqV2ViS2l0OjplbmNvZGVMZWdhY3lTZXNzaW9u
U3RhdGUoc2Vzc2lvblN0YXRlKS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKICNlbHNlCiAgICAg
cmV0dXJuIG51bGxwdHI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9HZW5lcmljQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5lcmlj
Q2FsbGJhY2suaAppbmRleCAxZDIwNTM5YTE4NzM4OWQxMmYwMDEyZDcwNjk3MmI2N2EwZGFkMDY5
Li4xYjY3ZTkzODQ2Nzk3OWQxMjljYzdmYzJmYWJjZDVkZmUwN2ZlNDRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCkBAIC0yMDAsMTEgKzIwMCwxMSBAQCBw
dWJsaWM6CiAgICAgdGVtcGxhdGU8Y2xhc3MgVD4KICAgICBSZWZQdHI8VD4gdGFrZSh1aW50NjRf
dCBjYWxsYmFja0lEKQogICAgIHsKLSAgICAgICAgUmVmUHRyPENhbGxiYWNrQmFzZT4gYmFzZSA9
IG1fbWFwLnRha2UoY2FsbGJhY2tJRCk7CisgICAgICAgIGF1dG8gYmFzZSA9IG1fbWFwLnRha2Uo
Y2FsbGJhY2tJRCk7CiAgICAgICAgIGlmICghYmFzZSkKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgICAgIHJldHVybiBhZG9wdFJlZihiYXNlLnJlbGVhc2UoKS5sZWFrUmVmKCkt
PmFzPFQ+KCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoYmFzZS5sZWFrUmVmKCktPmFzPFQ+
KCkpOwogICAgIH0KIAogICAgIHZvaWQgaW52YWxpZGF0ZShDYWxsYmFja0Jhc2U6OkVycm9yIGVy
cm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDIwNWEw
ZjA2YzllM2M0ZWU5ZjZkNWE4MGEwZjFkMjNlNTM3M2Q2NjIuLjBjZjcwNDUxMTgwYTVjY2FjYzli
YWYxY2FkYWIxYjQxYjMzYWRmZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eS5jcHAKQEAgLTQ3LDkgKzQ3LDkgQEAgdm9pZCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByb3h5OjppbnZhbGlkYXRlUmVxdWVzdHMoKQogCiBQYXNzUmVmUHRyPEdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eT4gR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eTo6Y3JlYXRlUmVxdWVzdCh1aW50NjRfdCBnZW9sb2NhdGlvbklEKQogewot
ICAgIFJlZlB0cjxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHk+IHJlcXVlc3QgPSBH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OmNyZWF0ZSh0aGlzLCBnZW9sb2NhdGlv
bklEKTsKLSAgICBtX3BlbmRpbmdSZXF1ZXN0cy5hZGQoZ2VvbG9jYXRpb25JRCwgcmVxdWVzdC5n
ZXQoKSk7Ci0gICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOworICAgIGF1dG8gcmVxdWVzdCA9
IEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eTo6Y3JlYXRlKHRoaXMsIGdlb2xvY2F0
aW9uSUQpOworICAgIG1fcGVuZGluZ1JlcXVlc3RzLmFkZChnZW9sb2NhdGlvbklELCByZXF1ZXN0
LnB0cigpKTsKKyAgICByZXR1cm4gV1RGTW92ZShyZXF1ZXN0KTsKIH0KIAogdm9pZCBHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpkaWRSZWNlaXZlR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uRGVjaXNpb24odWludDY0X3QgZ2VvbG9jYXRpb25JRCwgYm9vbCBhbGxvd2VkKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcAppbmRleCBiNDI2NjBmZTYxYmU0NWQ1MDE2ZGVkZjZlZjM3MzQ0NTRiNzQ3
M2U4Li5kN2QzNTA5OTg3YmM0ZmQ2NzI4YTg3MzczZTJiYzYxMTNiNjllYTk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcApAQCAtMjQ5LDggKzI0OSw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwgdWluCiAgICAg
V2ViUGFnZVByb3h5KiBwYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7CiAg
ICAgTUVTU0FHRV9DSEVDSyhwYWdlKTsKIAotICAgIFJlZlB0cjxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVByb3h5PiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUHJveHk6OmNyZWF0ZShjb3JlQ2hhbGxlbmdlLCBjaGFsbGVuZ2VJRCwgY29ubmVjdGlvbigp
KTsKLSAgICBwYWdlLT5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eShmcmFt
ZUlELCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5yZWxlYXNlKCkpOworICAgIGF1dG8gYXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UgPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5OjpjcmVhdGUo
Y29yZUNoYWxsZW5nZSwgY2hhbGxlbmdlSUQsIGNvbm5lY3Rpb24oKSk7CisgICAgcGFnZS0+ZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkoZnJhbWVJRCwgV1RGTW92ZShhdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSkpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRp
ZEZldGNoV2Vic2l0ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgV2Vic2l0ZURhdGEm
IHdlYnNpdGVEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDBiMmE2MzI5NzhkYjdjYjRlM2FjNWU4
MTg0MzE4OTJjYzE2OTU0ZTQuLjgxOGE1MjU0MTYwN2EzY2U5YTIzZGM4NzhmMThiZmExMzdjMGRh
ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05v
dGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eS5jcHAKQEAgLTQ4LDkgKzQ4LDkgQEAgdm9pZCBOb3RpZmljYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6aW52YWxpZGF0ZVJlcXVlc3RzKCkKIAogUGFz
c1JlZlB0cjxOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdD4gTm90aWZpY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNyZWF0ZVJlcXVlc3QodWludDY0X3Qgbm90aWZpY2F0
aW9uSUQpCiB7Ci0gICAgUmVmUHRyPE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0PiByZXF1
ZXN0ID0gTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZSh0aGlzLCBub3RpZmlj
YXRpb25JRCk7Ci0gICAgbV9wZW5kaW5nUmVxdWVzdHMuYWRkKG5vdGlmaWNhdGlvbklELCByZXF1
ZXN0LmdldCgpKTsKLSAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CisgICAgYXV0byByZXF1
ZXN0ID0gTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZSh0aGlzLCBub3RpZmlj
YXRpb25JRCk7CisgICAgbV9wZW5kaW5nUmVxdWVzdHMuYWRkKG5vdGlmaWNhdGlvbklELCByZXF1
ZXN0LnB0cigpKTsKKyAgICByZXR1cm4gV1RGTW92ZShyZXF1ZXN0KTsKIH0KIAogdm9pZCBOb3Rp
ZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZU5vdGlmaWNh
dGlvblBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCwgYm9vbCBhbGxv
dykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb2Nlc3NNYW5hZ2VyLmNwcAppbmRleCBiZDAwYmRjODM3NDFmYTZjYmYxMGQyNDFmODMzNTgw
ZGFiYTE1YjQ1Li5mZmEwYTdlODYyNzlmMTU1Yzk0ZjY0ZTc2ZWZkM2UxZWQxZWZiYmRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFu
YWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
Y2Vzc01hbmFnZXIuY3BwCkBAIC0xMjUsMTAgKzEyNSwxMCBAQCBQbHVnaW5Qcm9jZXNzUHJveHkq
IFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpnZXRPckNyZWF0ZVBsdWdpblByb2Nlc3ModWludDY0X3Qg
cGx1ZwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wbHVnaW5Qcm9jZXNzVG9rZW5zLnNp
emUoKTsgKytpKSB7CiAgICAgICAgIGF1dG8mIGF0dHJpYnV0ZXNBbmRUb2tlbiA9IG1fcGx1Z2lu
UHJvY2Vzc1Rva2Vuc1tpXTsKICAgICAgICAgaWYgKGF0dHJpYnV0ZXNBbmRUb2tlbi5zZWNvbmQg
PT0gcGx1Z2luUHJvY2Vzc1Rva2VuKSB7Ci0gICAgICAgICAgICBSZWZQdHI8UGx1Z2luUHJvY2Vz
c1Byb3h5PiBwbHVnaW5Qcm9jZXNzID0gUGx1Z2luUHJvY2Vzc1Byb3h5OjpjcmVhdGUodGhpcywg
YXR0cmlidXRlc0FuZFRva2VuLmZpcnN0LCBhdHRyaWJ1dGVzQW5kVG9rZW4uc2Vjb25kKTsKLSAg
ICAgICAgICAgIFBsdWdpblByb2Nlc3NQcm94eSogcGx1Z2luUHJvY2Vzc1B0ciA9IHBsdWdpblBy
b2Nlc3MuZ2V0KCk7CisgICAgICAgICAgICBhdXRvIHBsdWdpblByb2Nlc3MgPSBQbHVnaW5Qcm9j
ZXNzUHJveHk6OmNyZWF0ZSh0aGlzLCBhdHRyaWJ1dGVzQW5kVG9rZW4uZmlyc3QsIGF0dHJpYnV0
ZXNBbmRUb2tlbi5zZWNvbmQpOworICAgICAgICAgICAgUGx1Z2luUHJvY2Vzc1Byb3h5KiBwbHVn
aW5Qcm9jZXNzUHRyID0gcGx1Z2luUHJvY2Vzcy5wdHIoKTsKIAotICAgICAgICAgICAgbV9wbHVn
aW5Qcm9jZXNzZXMuYXBwZW5kKHBsdWdpblByb2Nlc3MucmVsZWFzZSgpKTsKKyAgICAgICAgICAg
IG1fcGx1Z2luUHJvY2Vzc2VzLmFwcGVuZChXVEZNb3ZlKHBsdWdpblByb2Nlc3MpKTsKICAgICAg
ICAgICAgIHJldHVybiBwbHVnaW5Qcm9jZXNzUHRyOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCmlu
ZGV4IGI0Y2E1MzQ5OTY4MDc5ZWM0MmM3NDgyODQ4NjZkZDdiZTM3ODY1YWMuLjE1Yzk4ZWFjOWJl
YTA4NzIwZTY3YjM4YjVmNWQ2ZjNkMmE5M2VkOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKQEAgLTIxOSw5ICsyMTksOSBA
QCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6c2V0SXRlbShJUEM6OkNvbm5lY3Rp
b24qIHNvdXJjZUNvbm5lY3Rpb24sIHVpbgogCiAgICAgU3RyaW5nIG9sZFZhbHVlOwogCi0gICAg
UmVmUHRyPFN0b3JhZ2VNYXA+IG5ld1N0b3JhZ2VNYXAgPSBtX3N0b3JhZ2VNYXAtPnNldEl0ZW0o
a2V5LCB2YWx1ZSwgb2xkVmFsdWUsIHF1b3RhRXhjZXB0aW9uKTsKKyAgICBhdXRvIG5ld1N0b3Jh
Z2VNYXAgPSBtX3N0b3JhZ2VNYXAtPnNldEl0ZW0oa2V5LCB2YWx1ZSwgb2xkVmFsdWUsIHF1b3Rh
RXhjZXB0aW9uKTsKICAgICBpZiAobmV3U3RvcmFnZU1hcCkKLSAgICAgICAgbV9zdG9yYWdlTWFw
ID0gbmV3U3RvcmFnZU1hcC5yZWxlYXNlKCk7CisgICAgICAgIG1fc3RvcmFnZU1hcCA9IFdURk1v
dmUobmV3U3RvcmFnZU1hcCk7CiAKICAgICBpZiAocXVvdGFFeGNlcHRpb24pCiAgICAgICAgIHJl
dHVybjsKQEAgLTIzNyw5ICsyMzcsOSBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJl
YTo6cmVtb3ZlSXRlbShJUEM6OkNvbm5lY3Rpb24qIHNvdXJjZUNvbm5lY3Rpb24sCiAgICAgb3Bl
bkRhdGFiYXNlQW5kSW1wb3J0SXRlbXNJZk5lZWRlZCgpOwogCiAgICAgU3RyaW5nIG9sZFZhbHVl
OwotICAgIFJlZlB0cjxTdG9yYWdlTWFwPiBuZXdTdG9yYWdlTWFwID0gbV9zdG9yYWdlTWFwLT5y
ZW1vdmVJdGVtKGtleSwgb2xkVmFsdWUpOworICAgIGF1dG8gbmV3U3RvcmFnZU1hcCA9IG1fc3Rv
cmFnZU1hcC0+cmVtb3ZlSXRlbShrZXksIG9sZFZhbHVlKTsKICAgICBpZiAobmV3U3RvcmFnZU1h
cCkKLSAgICAgICAgbV9zdG9yYWdlTWFwID0gbmV3U3RvcmFnZU1hcC5yZWxlYXNlKCk7CisgICAg
ICAgIG1fc3RvcmFnZU1hcCA9IFdURk1vdmUobmV3U3RvcmFnZU1hcCk7CiAKICAgICBpZiAob2xk
VmFsdWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTY4NiwxMCArNjg2LDEwIEBAIHZv
aWQgU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU1hcChJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIHVpbnQ2NF90CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGEgbWVz
c2FnZSBjaGVjay4KICAgICBBU1NFUlQobG9jYWxTdG9yYWdlTmFtZXNwYWNlKTsKIAotICAgIFJl
ZlB0cjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEgPSBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmdl
dE9yQ3JlYXRlU3RvcmFnZUFyZWEoc2VjdXJpdHlPcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCkp
OworICAgIGF1dG8gc3RvcmFnZUFyZWEgPSBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmdldE9yQ3Jl
YXRlU3RvcmFnZUFyZWEoc2VjdXJpdHlPcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCkpOwogICAg
IHN0b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uLCBzdG9yYWdlTWFwSUQpOwogCi0g
ICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0b3JhZ2VBcmVhLnJlbGVhc2UoKTsKKyAgICBy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gV1RGTW92ZShzdG9yYWdlQXJlYSk7CiB9CiAKIHZvaWQg
U3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU1hcChJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc3RvcmFn
ZU5hbWVzcGFjZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHRvcExldmVsT3JpZ2luRGF0
YSwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbkRhdGEpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCmluZGV4IDI3MzQz
MTIzMmIyY2I1NDI4MzdmMjIxYzZmMWVkZjVhM2Y5MjgwNzAuLjBmNzEzYTlkMDQyODRlNmNkZmQ1
ZWUwMTY2MGUzNzVjOWE3OGRmMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJCYWNrRm9yd2FyZExpc3QuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBXZWJCYWNrRm9y
d2FyZExpc3Q6OmFkZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogbmV3SXRlbSkKICAgICAg
ICAgcmVtb3ZlZEl0ZW1zLnJlc2VydmVDYXBhY2l0eShtX2VudHJpZXMuc2l6ZSgpIC0gdGFyZ2V0
U2l6ZSk7CiAgICAgICAgIHdoaWxlIChtX2VudHJpZXMuc2l6ZSgpID4gdGFyZ2V0U2l6ZSkgewog
ICAgICAgICAgICAgZGlkUmVtb3ZlSXRlbSgqbV9lbnRyaWVzLmxhc3QoKSk7Ci0gICAgICAgICAg
ICByZW1vdmVkSXRlbXMuYXBwZW5kKG1fZW50cmllcy5sYXN0KCkucmVsZWFzZSgpKTsKKyAgICAg
ICAgICAgIHJlbW92ZWRJdGVtcy5hcHBlbmQoV1RGTW92ZShtX2VudHJpZXMubGFzdCgpKSk7CiAg
ICAgICAgICAgICBtX2VudHJpZXMucmVtb3ZlTGFzdCgpOwogICAgICAgICB9CiAKQEAgLTEwOCw3
ICsxMDgsNyBAQCB2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdDo6YWRkSXRlbShXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtKiBuZXdJdGVtKQogICAgICAgICAvLyAob3IgZXZlbiBpZiB3ZSBhcmUsIGlmIHdl
IG9ubHkgd2FudCAxIGVudHJ5KS4KICAgICAgICAgaWYgKG1fZW50cmllcy5zaXplKCkgPT0gbV9j
YXBhY2l0eSAmJiAobV9jdXJyZW50SW5kZXggfHwgbV9jYXBhY2l0eSA9PSAxKSkgewogICAgICAg
ICAgICAgZGlkUmVtb3ZlSXRlbSgqbV9lbnRyaWVzWzBdKTsKLSAgICAgICAgICAgIHJlbW92ZWRJ
dGVtcy5hcHBlbmQobV9lbnRyaWVzWzBdLnJlbGVhc2UoKSk7CisgICAgICAgICAgICByZW1vdmVk
SXRlbXMuYXBwZW5kKFdURk1vdmUobV9lbnRyaWVzWzBdKSk7CiAgICAgICAgICAgICBtX2VudHJp
ZXMucmVtb3ZlKDApOwogCiAgICAgICAgICAgICBpZiAobV9lbnRyaWVzLmlzRW1wdHkoKSkKQEAg
LTEyNyw3ICsxMjcsNyBAQCB2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdDo6YWRkSXRlbShXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtKiBuZXdJdGVtKQogICAgICAgICAgICAgaWYgKCFtX2VudHJpZXNbaV0p
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBkaWRSZW1vdmVJdGVtKCpt
X2VudHJpZXNbaV0pOwotICAgICAgICAgICAgcmVtb3ZlZEl0ZW1zLmFwcGVuZChtX2VudHJpZXNb
aV0ucmVsZWFzZSgpKTsKKyAgICAgICAgICAgIHJlbW92ZWRJdGVtcy5hcHBlbmQoV1RGTW92ZSht
X2VudHJpZXNbaV0pKTsKICAgICAgICAgfQogICAgICAgICBtX2VudHJpZXMuY2xlYXIoKTsKICAg
ICB9CkBAIC0zNTcsNyArMzU3LDcgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZExpc3Q6OmNsZWFyKCkK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgZGlkUmVtb3ZlSXRlbSgq
bV9lbnRyaWVzW2ldKTsKLSAgICAgICAgICAgIHJlbW92ZWRJdGVtcy5hcHBlbmQobV9lbnRyaWVz
W2ldLnJlbGVhc2UoKSk7CisgICAgICAgICAgICByZW1vdmVkSXRlbXMuYXBwZW5kKFdURk1vdmUo
bV9lbnRyaWVzW2ldKSk7CiAgICAgICAgIH0KIAogICAgICAgICBtX2VudHJpZXMuY2xlYXIoKTsK
QEAgLTM3NiwxNCArMzc2LDE0IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0OjpjbGVhcigpCiAg
ICAgcmVtb3ZlZEl0ZW1zLnJlc2VydmVDYXBhY2l0eShzaXplIC0gMSk7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgaWYgKGkgIT0gbV9jdXJyZW50SW5k
ZXggJiYgbV9oYXNDdXJyZW50SW5kZXggJiYgbV9lbnRyaWVzW2ldKQotICAgICAgICAgICAgcmVt
b3ZlZEl0ZW1zLmFwcGVuZChtX2VudHJpZXNbaV0ucmVsZWFzZSgpKTsKKyAgICAgICAgICAgIHJl
bW92ZWRJdGVtcy5hcHBlbmQoV1RGTW92ZShtX2VudHJpZXNbaV0pKTsKICAgICB9CiAKICAgICBt
X2N1cnJlbnRJbmRleCA9IDA7CiAKICAgICBpZiAoY3VycmVudEl0ZW0pIHsKICAgICAgICAgbV9l
bnRyaWVzLnNocmluaygxKTsKLSAgICAgICAgbV9lbnRyaWVzWzBdID0gY3VycmVudEl0ZW0ucmVs
ZWFzZSgpOworICAgICAgICBtX2VudHJpZXNbMF0gPSBXVEZNb3ZlKGN1cnJlbnRJdGVtKTsKICAg
ICB9IGVsc2UgewogICAgICAgICBtX2VudHJpZXMuY2xlYXIoKTsKICAgICAgICAgbV9oYXNDdXJy
ZW50SW5kZXggPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
b2tpZU1hbmFnZXJQcm94eS5jcHAKaW5kZXggMmMzMGQ2NDA0NTMyYzZhNDRmMjJiYWJjZjkwM2Nk
YmNlMjRkZWRkYy4uYzZmZjkzNjAzZWRhOWQwODFiODU2NDA0Yzk0ODdmMTNkN2VlYjQ5YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5j
cHAKQEAgLTk1LDkgKzk1LDkgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlcmVmV2Vi
Q29udGV4dFN1cHBsZW1lbnQoKQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SG9z
dG5hbWVzV2l0aENvb2tpZXMoc3RkOjpmdW5jdGlvbjx2b2lkIChBUEk6OkFycmF5KiwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgUmVmUHRyPEFycmF5Q2Fs
bGJhY2s+IGNhbGxiYWNrID0gQXJyYXlDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbikpOworICAgIGF1dG8gY2FsbGJhY2sgPSBBcnJheUNhbGxiYWNrOjpjcmVhdGUoV1RG
TW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxi
YWNrLT5jYWxsYmFja0lEKCk7Ci0gICAgbV9hcnJheUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwg
Y2FsbGJhY2sucmVsZWFzZSgpKTsKKyAgICBtX2FycmF5Q2FsbGJhY2tzLnNldChjYWxsYmFja0lE
LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3Jr
aW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFn
ZXI6OkdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNhbGxiYWNrSUQpKTsKIH0KQEAgLTE2NywxMCAr
MTY3LDEwIEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRIVFRQQ29va2llQWNjZXB0
UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9sCiAKIHZvaWQgV2ViQ29va2llTWFuYWdl
clByb3h5OjpnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHN0ZDo6ZnVuY3Rpb248dm9pZCAoSFRU
UENvb2tpZUFjY2VwdFBvbGljeSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rp
b24pCiB7Ci0gICAgUmVmUHRyPEhUVFBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFjaz4gY2FsbGJh
Y2sgPSBIVFRQQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxi
YWNrRnVuY3Rpb24pKTsKKyAgICBhdXRvIGNhbGxiYWNrID0gSFRUUENvb2tpZUFjY2VwdFBvbGlj
eUNhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiAKICAgICB1aW50
NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKLSAgICBtX2h0dHBDb29r
aWVBY2NlcHRQb2xpY3lDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIGNhbGxiYWNrLnJlbGVhc2Uo
KSk7CisgICAgbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLnNldChjYWxsYmFja0lE
LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3Jr
aW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFn
ZXI6OkdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koY2FsbGJhY2tJRCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBkNDNkZDE2ZmE0YmQ4Nzg0YjU3
N2I4YWMxYTAwOTdkMjI3MDRjYjU0Li40ZGJhZjY5YjdmZDAzOTdmZjRlN2RmMTViOTQ4OGM1OThi
ODNjZDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAt
NjE2OCwxMSArNjE2OCwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zdGFsbFZpZXdTdGF0ZUNo
YW5nZUNvbXBsZXRpb25IYW5kbGVyKHZvaWQgKF5jb21wbGV0aW9uSGFuZAogICAgIH0KIAogICAg
IGF1dG8gY29waWVkQ29tcGxldGlvbkhhbmRsZXIgPSBCbG9ja19jb3B5KGNvbXBsZXRpb25IYW5k
bGVyKTsKLSAgICBSZWZQdHI8Vm9pZENhbGxiYWNrPiB2b2lkQ2FsbGJhY2sgPSBWb2lkQ2FsbGJh
Y2s6OmNyZWF0ZShbY29waWVkQ29tcGxldGlvbkhhbmRsZXJdIChDYWxsYmFja0Jhc2U6OkVycm9y
KSB7CisgICAgYXV0byB2b2lkQ2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShbY29waWVk
Q29tcGxldGlvbkhhbmRsZXJdIChDYWxsYmFja0Jhc2U6OkVycm9yKSB7CiAgICAgICAgIGNvcGll
ZENvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIEJsb2NrX3JlbGVhc2UoY29waWVkQ29tcGxl
dGlvbkhhbmRsZXIpOwogICAgIH0sIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5VG9rZW4oKSk7Ci0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dCh2b2lkQ2FsbGJhY2sucmVsZWFzZSgpKTsKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9j
YWxsYmFja3MucHV0KFdURk1vdmUodm9pZENhbGxiYWNrKSk7CiAgICAgbV9uZXh0Vmlld1N0YXRl
Q2hhbmdlQ2FsbGJhY2tzLmFwcGVuZChjYWxsYmFja0lEKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5jcHAKaW5kZXggNDRiMzYzM2ZjYzFlNjNmZDZkZjg3
NjFlMTkwZjEwMDJjODUzZjRmYi4uODA5YWE4MzYxOTMzNDg5NjQ2NmQwMDVkZjVmMDNkMzVmYmFm
MjVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByZWZlcmVuY2Vz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuY3BwCkBA
IC00NSwxNCArNDUsMTQgQEAgUmVmPFdlYlByZWZlcmVuY2VzPiBXZWJQcmVmZXJlbmNlczo6Y3Jl
YXRlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW4KIAogUGFzc1JlZlB0cjxX
ZWJQcmVmZXJlbmNlcz4gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZVdpdGhMZWdhY3lEZWZhdWx0cyhj
b25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYga2V5UHJlZml4LCBjb25zdCBT
dHJpbmcmIGdsb2JhbERlYnVnS2V5UHJlZml4KQogewotICAgIFJlZlB0cjxXZWJQcmVmZXJlbmNl
cz4gcHJlZmVyZW5jZXMgPSBhZG9wdFJlZihuZXcgV2ViUHJlZmVyZW5jZXMoaWRlbnRpZmllciwg
a2V5UHJlZml4LCBnbG9iYWxEZWJ1Z0tleVByZWZpeCkpOworICAgIGF1dG8gcHJlZmVyZW5jZXMg
PSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKGlkZW50aWZpZXIsIGtleVByZWZpeCwgZ2xvYmFsRGVi
dWdLZXlQcmVmaXgpOwogICAgIC8vIEZJWE1FOiBUaGUgcmVnaXN0ZXJEZWZhdWx0Li4uVmFsdWVG
b3JLZXkgbWFjaGluZXJ5IGlzIHVubmVjZXNzYXJpbHkgaGVhdnl3ZWlnaHQgYW5kIGNvbXBsaWNh
dGVkLgogICAgIC8vIFdlIGNhbiBqdXN0IGNvbXB1dGUgZGlmZmVyZW50IGRlZmF1bHRzIGZvciBt
b2Rlcm4gYW5kIGxlZ2FjeSBBUElzIGluIFdlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaCBtYWNy
b3MuCiAgICAgcHJlZmVyZW5jZXMtPnJlZ2lzdGVyRGVmYXVsdEJvb2xWYWx1ZUZvcktleShXZWJQ
cmVmZXJlbmNlc0tleTo6amF2YUVuYWJsZWRLZXkoKSwgdHJ1ZSk7CiAgICAgcHJlZmVyZW5jZXMt
PnJlZ2lzdGVyRGVmYXVsdEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6amF2YUVu
YWJsZWRGb3JMb2NhbEZpbGVzS2V5KCksIHRydWUpOwogICAgIHByZWZlcmVuY2VzLT5yZWdpc3Rl
ckRlZmF1bHRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnBsdWdpbnNFbmFibGVk
S2V5KCksIHRydWUpOwogICAgIHByZWZlcmVuY2VzLT5yZWdpc3RlckRlZmF1bHRVSW50MzJWYWx1
ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6c3RvcmFnZUJsb2NraW5nUG9saWN5S2V5KCksIFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpBbGxvd0FsbFN0b3JhZ2UpOwotICAgIHJldHVybiBwcmVm
ZXJlbmNlcy5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1vdmUocHJlZmVyZW5jZXMpOwogfQog
CiBXZWJQcmVmZXJlbmNlczo6V2ViUHJlZmVyZW5jZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIGtleVByZWZpeCwgY29uc3QgU3RyaW5nJiBnbG9iYWxEZWJ1Z0tleVBy
ZWZpeCkKQEAgLTc4LDcgKzc4LDcgQEAgV2ViUHJlZmVyZW5jZXM6On5XZWJQcmVmZXJlbmNlcygp
CiAKIFBhc3NSZWZQdHI8V2ViUHJlZmVyZW5jZXM+IFdlYlByZWZlcmVuY2VzOjpjb3B5KCkgY29u
c3QKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlByZWZlcmVuY2VzKCp0aGlzKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUHJlZmVyZW5jZXMoKnRoaXMpKTsKIH0KIAogdm9p
ZCBXZWJQcmVmZXJlbmNlczo6YWRkUGFnZShXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDhjNjIwNTM2
NWQ4Y2RmMGQyZTEwMDk0ZTg0YjYxNDM2YTU3ZDJiMDkuLmE3ZTAzNDZmMDNkOWYxODkwMTRhNmU5
ZDQ1Yzk4MGJlMDlkMmUwMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcApAQCAtMjM4LDcgKzIzOCw3IEBAIFdlYlByb2Nlc3NQb29sOjp+V2ViUHJvY2Vz
c1Bvb2woKQogCiAgICAgbV9pY29uRGF0YWJhc2UtPmludmFsaWRhdGUoKTsKICAgICBtX2ljb25E
YXRhYmFzZS0+Y2xlYXJQcm9jZXNzUG9vbCgpOwotICAgIFdlYkljb25EYXRhYmFzZSogcmF3SWNv
bkRhdGFiYXNlID0gbV9pY29uRGF0YWJhc2UucmVsZWFzZSgpLmxlYWtSZWYoKTsKKyAgICBXZWJJ
Y29uRGF0YWJhc2UqIHJhd0ljb25EYXRhYmFzZSA9IG1faWNvbkRhdGFiYXNlLmxlYWtSZWYoKTsK
ICAgICByYXdJY29uRGF0YWJhc2UtPmRlcmVmV2hlbkFwcHJvcHJpYXRlKCk7CiAKICAgICBpbnZh
bGlkYXRlQ2FsbGJhY2tNYXAobV9kaWN0aW9uYXJ5Q2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVy
cm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90U3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1ZpZXdTbmFwc2hvdFN0b3JlLm1tCmluZGV4IDNmOGZjZmYxYTQxZTFjZDRlODRlMDhk
MmZmY2RjMTU1MGQxZmQ4MmIuLmQxOTM4NmMwNmM2ZWE5Y2NkMzg2N2Y3YjQ5MzQ1ZmU3ZmQ4YTYz
MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90
U3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RT
dG9yZS5tbQpAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQgVmlld1NuYXBzaG90U3RvcmU6OnJlY29y
ZFNuYXBzaG90KFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5LCBXZWJCYWNrRm9yd2FyCiAKICAg
ICB3ZWJQYWdlUHJveHkud2lsbFJlY29yZE5hdmlnYXRpb25TbmFwc2hvdChpdGVtKTsKIAotICAg
IFJlZlB0cjxWaWV3U25hcHNob3Q+IHNuYXBzaG90ID0gd2ViUGFnZVByb3h5LnRha2VWaWV3U25h
cHNob3QoKTsKKyAgICBhdXRvIHNuYXBzaG90ID0gd2ViUGFnZVByb3h5LnRha2VWaWV3U25hcHNo
b3QoKTsKICAgICBpZiAoIXNuYXBzaG90KQogICAgICAgICByZXR1cm47CiAKQEAgLTEyMiw3ICsx
MjIsNyBAQCB2b2lkIFZpZXdTbmFwc2hvdFN0b3JlOjpyZWNvcmRTbmFwc2hvdChXZWJQYWdlUHJv
eHkmIHdlYlBhZ2VQcm94eSwgV2ViQmFja0ZvcndhcgogICAgIHNuYXBzaG90LT5zZXREZXZpY2VT
Y2FsZUZhY3Rvcih3ZWJQYWdlUHJveHkuZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgc25hcHNo
b3QtPnNldEJhY2tncm91bmRDb2xvcih3ZWJQYWdlUHJveHkucGFnZUV4dGVuZGVkQmFja2dyb3Vu
ZENvbG9yKCkpOwogCi0gICAgaXRlbS5zZXRTbmFwc2hvdChzbmFwc2hvdC5yZWxlYXNlKCkpOwor
ICAgIGl0ZW0uc2V0U25hcHNob3QoV1RGTW92ZShzbmFwc2hvdCkpOwogfQogCiB2b2lkIFZpZXdT
bmFwc2hvdFN0b3JlOjpkaXNjYXJkU25hcHNob3RJbWFnZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5t
bQppbmRleCBmYWExNTQzMDkyNjgzNDFhOTVlZjhhZTM2MjUyN2JlNGU2OGM3NmM2Li5mMmQ3YTky
N2Y2Yzk2MjcxOTBkYjI4ZjQ0MWEzYzFhOGNiYjAxMzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5t
bQpAQCAtMjYzLDcgKzI2Myw3IEBAIC0gKFBhc3NSZWZQdHI8QVBJOjpIaXRUZXN0UmVzdWx0Pilf
d2ViSGl0VGVzdFJlc3VsdAogICAgIGVsc2UKICAgICAgICAgaGl0VGVzdFJlc3VsdCA9IF9wYWdl
LT5sYXN0TW91c2VNb3ZlSGl0VGVzdFJlc3VsdCgpOwogCi0gICAgcmV0dXJuIGhpdFRlc3RSZXN1
bHQucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKGhpdFRlc3RSZXN1bHQpOwogfQogCiAj
cHJhZ21hIG1hcmsgSW1tZWRpYXRlIGFjdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tCmluZGV4IDdiOWQ4ODliMWQ0YTc1Y2M2ZDhkZTdmMjcz
MGRjYTkyZDVhNzE5YjMuLjNiMTBjZTc1ZjE1ZWM2YjM5ZjExZTYwYTQ2MWI4NmNmNzg1YWU0NGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbQpA
QCAtMzQwLDcgKzM0MCw3IEBAIC0gKEJPT0wpX2Fza1BhZ2VUb0NvbXB1dGVQYWdlUmVjdHMKICAg
ICBBU1NFUlQoIV9leHBlY3RlZENvbXB1dGVkUGFnZXNDYWxsYmFjayk7CiAKICAgICBJUENDYWxs
YmFja0NvbnRleHQqIGNvbnRleHQgPSBuZXcgSVBDQ2FsbGJhY2tDb250ZXh0OwotICAgIFJlZlB0
cjxDb21wdXRlZFBhZ2VzQ2FsbGJhY2s+IGNhbGxiYWNrID0gQ29tcHV0ZWRQYWdlc0NhbGxiYWNr
OjpjcmVhdGUoW2NvbnRleHRdKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgcGFnZVJl
Y3RzLCBkb3VibGUgdG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCBXZWJLaXQ6OkNhbGxiYWNr
QmFzZTo6RXJyb3IpIHsKKyAgICBhdXRvIGNhbGxiYWNrID0gQ29tcHV0ZWRQYWdlc0NhbGxiYWNr
OjpjcmVhdGUoW2NvbnRleHRdKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgcGFnZVJl
Y3RzLCBkb3VibGUgdG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCBXZWJLaXQ6OkNhbGxiYWNr
QmFzZTo6RXJyb3IpIHsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElQQ0NhbGxiYWNrQ29udGV4
dD4gY29udGV4dERlbGV0ZXIoY29udGV4dCk7CiAgICAgICAgIHBhZ2VEaWRDb21wdXRlUGFnZVJl
Y3RzKHBhZ2VSZWN0cywgdG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCBjb250ZXh0KTsKICAg
ICB9KTsKQEAgLTM0OCw3ICszNDgsNyBAQCAtIChCT09MKV9hc2tQYWdlVG9Db21wdXRlUGFnZVJl
Y3RzCiAgICAgY29udGV4dC0+dmlldyA9IHNlbGY7CiAgICAgY29udGV4dC0+Y2FsbGJhY2tJRCA9
IF9leHBlY3RlZENvbXB1dGVkUGFnZXNDYWxsYmFjazsKIAotICAgIF93ZWJGcmFtZS0+cGFnZSgp
LT5jb21wdXRlUGFnZXNGb3JQcmludGluZyhfd2ViRnJhbWUuZ2V0KCksIFByaW50SW5mbyhbX3By
aW50T3BlcmF0aW9uIHByaW50SW5mb10pLCBjYWxsYmFjay5yZWxlYXNlKCkpOworICAgIF93ZWJG
cmFtZS0+cGFnZSgpLT5jb21wdXRlUGFnZXNGb3JQcmludGluZyhfd2ViRnJhbWUuZ2V0KCksIFBy
aW50SW5mbyhbX3ByaW50T3BlcmF0aW9uIHByaW50SW5mb10pLCBXVEZNb3ZlKGNhbGxiYWNrKSk7
CiAgICAgcmV0dXJuIFlFUzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCA0M2ZhNmYyMDY1ZDBjMTI5ZWRmZjEyYTM3YWUyOTFj
Y2Q0MmRmMmRkLi45NWQwM2M5MjQwZWZlNTlkNThhMmVmMGM1MjIxYTI4MGViM2NkY2U5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAt
MjcxLDggKzI3MSw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXBsYWNlU2VsZWN0aW9uV2l0aFBh
c3RlYm9hcmREYXRhKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlCiAjaWYgRU5BQkxFKERSQUdf
U1VQUE9SVCkKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXREcmFnSW1hZ2UoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYg
ZHJhZ0ltYWdlSGFuZGxlLCBib29sIGlzTGlua0RyYWcpCiB7Ci0gICAgaWYgKFJlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+IGRyYWdJbWFnZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGRyYWdJbWFn
ZUhhbmRsZSkpCi0gICAgICAgIG1fcGFnZUNsaWVudC5zZXREcmFnSW1hZ2UoY2xpZW50UG9zaXRp
b24sIGRyYWdJbWFnZS5yZWxlYXNlKCksIGlzTGlua0RyYWcpOworICAgIGlmIChhdXRvIGRyYWdJ
bWFnZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGRyYWdJbWFnZUhhbmRsZSkpCisgICAgICAg
IG1fcGFnZUNsaWVudC5zZXREcmFnSW1hZ2UoY2xpZW50UG9zaXRpb24sIFdURk1vdmUoZHJhZ0lt
YWdlKSwgaXNMaW5rRHJhZyk7CiAKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6RGlkU3RhcnREcmFnKCksIG1fcGFnZUlEKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJ
bkZyYW1lLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Q29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUubW0KaW5kZXggZmRhZjY3NThkNmE1ZmQ0MzQ4
YzY0ZDc0NDNmZjg0NTk5YzViYjEzOC4uMzJkOGRjNzQ4YjUyZjViN2YzZGRmOTUyYjZiNGZiZTcy
ZjU2MDY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUubW0KKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1
Z0luRnJhbWUubW0KQEAgLTcxLDggKzcxLDggQEAgLSAoSlNDb250ZXh0ICopanNDb250ZXh0Rm9y
V29ybGQ6KFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkICopd29ybGQKIAogLSAoV0tXZWJQ
cm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdCAqKWhpdFRlc3Q6KENHUG9pbnQpcG9pbnQKIHsKLSAg
ICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0PiBoaXRUZXN0UmVzdWx0ID0gX2Zy
YW1lLT5oaXRUZXN0KFdlYkNvcmU6OkludFBvaW50KHBvaW50KSk7Ci0gICAgcmV0dXJuIFt3cmFw
cGVyKCpoaXRUZXN0UmVzdWx0LnJlbGVhc2UoKS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKKyAg
ICBhdXRvIGhpdFRlc3RSZXN1bHQgPSBfZnJhbWUtPmhpdFRlc3QoV2ViQ29yZTo6SW50UG9pbnQo
cG9pbnQpKTsKKyAgICByZXR1cm4gW3dyYXBwZXIoKmhpdFRlc3RSZXN1bHQubGVha1JlZigpKSBh
dXRvcmVsZWFzZV07CiB9CiAKIC0gKEpTVmFsdWUgKilqc05vZGVGb3JOb2RlSGFuZGxlOihXS1dl
YlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlICopbm9kZUhhbmRsZSBpbldvcmxkOihXS1dlYlByb2Nl
c3NQbHVnSW5TY3JpcHRXb3JsZCAqKXdvcmxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5IaXRU
ZXN0UmVzdWx0Lm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdC5tbQppbmRleCA1MWRlZWE4
MTUzOTg2ZWEwMzFhYTAyMTg5M2FjMjg0NTBjOTRkOTNmLi43ZWE4NmM5MTFlNGQ2NDJlNWZjNjMy
NTYyNDNkMjJhNWMxZGEzMmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0Nv
Y29hL1dLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHQubW0KQEAgLTQ0LDggKzQ0LDggQEAg
LSAodm9pZClkZWFsbG9jCiAKIC0gKFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUgKilub2Rl
SGFuZGxlCiB7Ci0gICAgUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gbm9kZUhhbmRs
ZSA9IF9oaXRUZXN0UmVzdWx0LT5ub2RlSGFuZGxlKCk7Ci0gICAgcmV0dXJuIG5vZGVIYW5kbGUg
PyBbd3JhcHBlcigqbm9kZUhhbmRsZS5yZWxlYXNlKCkubGVha1JlZigpKSBhdXRvcmVsZWFzZV0g
OiBuaWw7CisgICAgYXV0byBub2RlSGFuZGxlID0gX2hpdFRlc3RSZXN1bHQtPm5vZGVIYW5kbGUo
KTsKKyAgICByZXR1cm4gbm9kZUhhbmRsZSA/IFt3cmFwcGVyKCpub2RlSGFuZGxlLmxlYWtSZWYo
KSkgYXV0b3JlbGVhc2VdIDogbmlsOwogfQogCiAjcHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9j
b2wgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dl
YlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tCmluZGV4IDBiMWRmZGZmZTE1NzdiMjllY2Y2MmMz
YjE1MmM4YzE5NzdkMjAzNDcuLjdiMjg3ZmM3NTRkYzJjYjhkYzE0NGJjYmI3NDFjYTRiYzE2ZjFk
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUubW0KKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1
Z0luTm9kZUhhbmRsZS5tbQpAQCAtNDgsMjAgKzQ4LDIwIEBAICsgKFdLV2ViUHJvY2Vzc1BsdWdJ
bk5vZGVIYW5kbGUgKilub2RlSGFuZGxlV2l0aEpTVmFsdWU6KEpTVmFsdWUgKil2YWx1ZSBpbkNv
bnRlCiB7CiAgICAgSlNDb250ZXh0UmVmIGNvbnRleHRSZWYgPSBbY29udGV4dCBKU0dsb2JhbENv
bnRleHRSZWZdOwogICAgIEpTT2JqZWN0UmVmIG9iamVjdFJlZiA9IEpTVmFsdWVUb09iamVjdChj
b250ZXh0UmVmLCBbdmFsdWUgSlNWYWx1ZVJlZl0sIDApOwotICAgIFJlZlB0cjxJbmplY3RlZEJ1
bmRsZU5vZGVIYW5kbGU+IG5vZGVIYW5kbGUgPSBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6Omdl
dE9yQ3JlYXRlKGNvbnRleHRSZWYsIG9iamVjdFJlZik7CisgICAgYXV0byBub2RlSGFuZGxlID0g
SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpnZXRPckNyZWF0ZShjb250ZXh0UmVmLCBvYmplY3RS
ZWYpOwogICAgIGlmICghbm9kZUhhbmRsZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJl
dHVybiBbd3JhcHBlcigqbm9kZUhhbmRsZS5yZWxlYXNlKCkubGVha1JlZigpKSBhdXRvcmVsZWFz
ZV07CisgICAgcmV0dXJuIFt3cmFwcGVyKCpub2RlSGFuZGxlLmxlYWtSZWYoKSkgYXV0b3JlbGVh
c2VdOwogfQogCiAtIChXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSAqKWh0bWxJRnJhbWVFbGVtZW50
Q29udGVudEZyYW1lCiB7Ci0gICAgUmVmUHRyPFdlYkZyYW1lPiBmcmFtZSA9IF9ub2RlSGFuZGxl
LT5odG1sSUZyYW1lRWxlbWVudENvbnRlbnRGcmFtZSgpOworICAgIGF1dG8gZnJhbWUgPSBfbm9k
ZUhhbmRsZS0+aHRtbElGcmFtZUVsZW1lbnRDb250ZW50RnJhbWUoKTsKICAgICBpZiAoIWZyYW1l
KQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIFt3cmFwcGVyKCpmcmFtZS5yZWxl
YXNlKCkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIFt3cmFwcGVyKCpmcmFt
ZS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKIH0KIAogI2lmIFBMQVRGT1JNKElPUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29h
L1dLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29y
bGQubW0KaW5kZXggNmMxMDYxZGQ4MDM0OTFmNDdlZTkzM2UwYTk3NGQzZDJkY2YzMmVkZi4uMWFl
YzBiOTIyZWUzZWVkOWI0YTIxZGQ3NTYyNmE2Zjg1OGM0NjE1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNz
UGx1Z0luU2NyaXB0V29ybGQubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQubW0KQEAg
LTM2LDggKzM2LDggQEAgQGltcGxlbWVudGF0aW9uIFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdv
cmxkIHsKIAogKyAoV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgKil3b3JsZAogewotICAg
IFJlZlB0cjxJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkPiBzY3JpcHRXb3JsZCA9IEluamVjdGVk
QnVuZGxlU2NyaXB0V29ybGQ6OmNyZWF0ZSgpOwotICAgIHJldHVybiBbd3JhcHBlcigqc2NyaXB0
V29ybGQucmVsZWFzZSgpLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOworICAgIGF1dG8gc2NyaXB0
V29ybGQgPSBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpjcmVhdGUoKTsKKyAgICByZXR1cm4g
W3dyYXBwZXIoc2NyaXB0V29ybGQubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CiB9CiAKICsgKFdL
V2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkICopbm9ybWFsV29ybGQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZS5jcHAKaW5kZXggODViOGY5MjJmMWVjMGMxMmVjZDQzMDFlNGEwOGJlZWU1YjQwZjdmMi4uZTg4
NTNkYmQwNjI3YjY5ZGM0OTg0OTBmY2VjNWJkOGQzNzEwYzUzYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3Nh
Z2UoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmEKICAgICBSZWZQ
dHI8QVBJOjpPYmplY3Q+IHJldHVybkRhdGE7CiAgICAgdG9JbXBsKGJ1bmRsZVJlZiktPnBvc3RT
eW5jaHJvbm91c01lc3NhZ2UodG9XVEZTdHJpbmcobWVzc2FnZU5hbWVSZWYpLCB0b0ltcGwobWVz
c2FnZUJvZHlSZWYpLCByZXR1cm5EYXRhKTsKICAgICBpZiAocmV0dXJuRGF0YVJlZikKLSAgICAg
ICAgKnJldHVybkRhdGFSZWYgPSB0b0FQSShyZXR1cm5EYXRhLnJlbGVhc2UoKS5sZWFrUmVmKCkp
OworICAgICAgICAqcmV0dXJuRGF0YVJlZiA9IHRvQVBJKHJldHVybkRhdGEubGVha1JlZigpKTsK
IH0KIAogV0tDb25uZWN0aW9uUmVmIFdLQnVuZGxlR2V0QXBwbGljYXRpb25Db25uZWN0aW9uKFdL
QnVuZGxlUmVmIGJ1bmRsZVJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZURP
TVdpbmRvd0V4dGVuc2lvbi5jcHAKaW5kZXggYjY2MGU4MTVmYjU3NWFkN2U0YzZhNTE4M2M4Mzlj
ZWU1NzU4NTQ3OS4uZmMzODFmNDZhNjQxZmEwNzc1YzNlNTQ2NDg2MGQ5ZTA0ZjQ4M2UyYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5jcHAK
QEAgLTQxLDcgKzQxLDcgQEAgV0tUeXBlSUQgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25HZXRU
eXBlSUQoKQogV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYgV0tCdW5kbGVET01XaW5kb3dF
eHRlbnNpb25DcmVhdGUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tCdW5kbGVTY3JpcHRXb3Js
ZFJlZiB3b3JsZCkKIHsKICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNp
b24+IGV4dGVuc2lvbiA9IEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uOjpjcmVhdGUo
dG9JbXBsKGZyYW1lKSwgdG9JbXBsKHdvcmxkKSk7Ci0gICAgcmV0dXJuIHRvQVBJKGV4dGVuc2lv
bi5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkoZXh0ZW5zaW9uLmxlYWtS
ZWYoKSk7CiB9CiAKIFdLQnVuZGxlRnJhbWVSZWYgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25H
ZXRGcmFtZShXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZiBleHRlbnNpb24pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlSGl0VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggNDZmNjk5OTI2YTIx
NWE4N2RhYzExOGFlZmUwNTY0ZTZiYTI3NzRmNS4uMmU0YTdiNjMxZDEzMWNhMTc2ZGM0ZDFiMTgx
NWQ4ODE5ZjYwOTY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUhpdFRlc3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVIaXRUZXN0UmVz
dWx0LmNwcApAQCAtNDIsMTMgKzQyLDEzIEBAIFdLVHlwZUlEIFdLQnVuZGxlSGl0VGVzdFJlc3Vs
dEdldFR5cGVJRCgpCiBXS0J1bmRsZU5vZGVIYW5kbGVSZWYgV0tCdW5kbGVIaXRUZXN0UmVzdWx0
Q29weU5vZGVIYW5kbGUoV0tCdW5kbGVIaXRUZXN0UmVzdWx0UmVmIGhpdFRlc3RSZXN1bHRSZWYp
CiB7CiAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gbm9kZUhhbmRsZSA9IHRv
SW1wbChoaXRUZXN0UmVzdWx0UmVmKS0+bm9kZUhhbmRsZSgpOwotICAgIHJldHVybiB0b0FQSShu
b2RlSGFuZGxlLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgIHJldHVybiB0b0FQSShub2RlSGFu
ZGxlLmxlYWtSZWYoKSk7CiB9CiAKIFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBXS0J1bmRsZUhpdFRl
c3RSZXN1bHRDb3B5VVJMRWxlbWVudEhhbmRsZShXS0J1bmRsZUhpdFRlc3RSZXN1bHRSZWYgaGl0
VGVzdFJlc3VsdFJlZikKIHsKICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiB1
cmxFbGVtZW50Tm9kZUhhbmRsZSA9IHRvSW1wbChoaXRUZXN0UmVzdWx0UmVmKS0+dXJsRWxlbWVu
dEhhbmRsZSgpOwotICAgIHJldHVybiB0b0FQSSh1cmxFbGVtZW50Tm9kZUhhbmRsZS5yZWxlYXNl
KCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkodXJsRWxlbWVudE5vZGVIYW5kbGUubGVh
a1JlZigpKTsKIH0KIAogV0tCdW5kbGVGcmFtZVJlZiBXS0J1bmRsZUhpdFRlc3RSZXN1bHRHZXRG
cmFtZShXS0J1bmRsZUhpdFRlc3RSZXN1bHRSZWYgaGl0VGVzdFJlc3VsdFJlZikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVOYXZpZ2F0aW9uQWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcAppbmRleCBlZTg5ODI3
M2ZjZDNhZjI5NWQyMmE0YjZlNWU5NGY5ZTQ3ZjRmZTA1Li5hM2MzNjNlMTk0MmNlYzA0Nzk1NWY5
MmIwMzI3MGE5NTZkYWZlOTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5h
dmlnYXRpb25BY3Rpb24uY3BwCkBAIC01OCwxMyArNTgsMTMgQEAgV0tFdmVudE1vdXNlQnV0dG9u
IFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbkdldEV2ZW50TW91c2VCdXR0b24oV0tCdW5kbGVOYXZp
Z2F0aW8KIFdLQnVuZGxlSGl0VGVzdFJlc3VsdFJlZiBXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb25D
b3B5SGl0VGVzdFJlc3VsdChXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb25SZWYgbmF2aWdhdGlvbkFj
dGlvblJlZikKIHsKICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0PiBoaXRU
ZXN0UmVzdWx0ID0gdG9JbXBsKG5hdmlnYXRpb25BY3Rpb25SZWYpLT5oaXRUZXN0UmVzdWx0KCk7
Ci0gICAgcmV0dXJuIHRvQVBJKGhpdFRlc3RSZXN1bHQucmVsZWFzZSgpLmxlYWtSZWYoKSk7Cisg
ICAgcmV0dXJuIHRvQVBJKGhpdFRlc3RSZXN1bHQubGVha1JlZigpKTsKIH0KIAogV0tCdW5kbGVO
b2RlSGFuZGxlUmVmIFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbkNvcHlGb3JtRWxlbWVudChXS0J1
bmRsZU5hdmlnYXRpb25BY3Rpb25SZWYgbmF2aWdhdGlvbkFjdGlvblJlZikKIHsKICAgICBSZWZQ
dHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBmb3JtRWxlbWVudCA9IHRvSW1wbChuYXZpZ2F0
aW9uQWN0aW9uUmVmKS0+Zm9ybUVsZW1lbnQoKTsKLSAgICByZXR1cm4gdG9BUEkoZm9ybUVsZW1l
bnQucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKGZvcm1FbGVtZW50Lmxl
YWtSZWYoKSk7CiB9CiAKIGJvb2wgV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uR2V0U2hvdWxkT3Bl
bkV4dGVybmFsVVJMcyhXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb25SZWYgbmF2aWdhdGlvbkFjdGlv
blJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxlLmNwcAppbmRleCBlZTRm
MzYyMjQ1NGI5MTc1MDM3M2NmODRlZDY0MDU3NDI5MzlhN2NmLi40NmNmYTM0YTA4MGVlNWFmNGVl
MDg4NzNlYjRjMzg4NzczMjQzYjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTm9kZUhhbmRsZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5vZGVI
YW5kbGUuY3BwCkBAIC01OSwxMyArNTksMTMgQEAgV0tUeXBlSUQgV0tCdW5kbGVOb2RlSGFuZGxl
R2V0VHlwZUlEKCkKIFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBXS0J1bmRsZU5vZGVIYW5kbGVDcmVh
dGUoSlNDb250ZXh0UmVmIGNvbnRleHRSZWYsIEpTT2JqZWN0UmVmIG9iamVjdFJlZikKIHsKICAg
ICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBub2RlSGFuZGxlID0gSW5qZWN0ZWRC
dW5kbGVOb2RlSGFuZGxlOjpnZXRPckNyZWF0ZShjb250ZXh0UmVmLCBvYmplY3RSZWYpOwotICAg
IHJldHVybiB0b0FQSShub2RlSGFuZGxlLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgIHJldHVy
biB0b0FQSShub2RlSGFuZGxlLmxlYWtSZWYoKSk7CiB9CiAKIFdLQnVuZGxlTm9kZUhhbmRsZVJl
ZiBXS0J1bmRsZU5vZGVIYW5kbGVDb3B5RG9jdW1lbnQoV0tCdW5kbGVOb2RlSGFuZGxlUmVmIG5v
ZGVIYW5kbGVSZWYpCiB7CiAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gbm9k
ZUhhbmRsZSA9IHRvSW1wbChub2RlSGFuZGxlUmVmKS0+ZG9jdW1lbnQoKTsKLSAgICByZXR1cm4g
dG9BUEkobm9kZUhhbmRsZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEko
bm9kZUhhbmRsZS5sZWFrUmVmKCkpOwogfQogCiBXS1JlY3QgV0tCdW5kbGVOb2RlSGFuZGxlR2V0
UmVuZGVyUmVjdChXS0J1bmRsZU5vZGVIYW5kbGVSZWYgbm9kZUhhbmRsZVJlZiwgYm9vbCogaXNS
ZXBsYWNlZCkKQEAgLTc2LDEzICs3NiwxMyBAQCBXS1JlY3QgV0tCdW5kbGVOb2RlSGFuZGxlR2V0
UmVuZGVyUmVjdChXS0J1bmRsZU5vZGVIYW5kbGVSZWYgbm9kZUhhbmRsZVJlZiwgYm9vbAogV0tJ
bWFnZVJlZiBXS0J1bmRsZU5vZGVIYW5kbGVDb3B5U25hcHNob3RXaXRoT3B0aW9ucyhXS0J1bmRs
ZU5vZGVIYW5kbGVSZWYgbm9kZUhhbmRsZVJlZiwgV0tTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucykK
IHsKICAgICBSZWZQdHI8V2ViSW1hZ2U+IGltYWdlID0gdG9JbXBsKG5vZGVIYW5kbGVSZWYpLT5y
ZW5kZXJlZEltYWdlKHRvU25hcHNob3RPcHRpb25zKG9wdGlvbnMpKTsKLSAgICByZXR1cm4gdG9B
UEkoaW1hZ2UucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKGltYWdlLmxl
YWtSZWYoKSk7CiB9CiAKIFdLQnVuZGxlUmFuZ2VIYW5kbGVSZWYgV0tCdW5kbGVOb2RlSGFuZGxl
Q29weVZpc2libGVSYW5nZShXS0J1bmRsZU5vZGVIYW5kbGVSZWYgbm9kZUhhbmRsZVJlZikKIHsK
ICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gcmFuZ2VIYW5kbGUgPSB0b0lt
cGwobm9kZUhhbmRsZVJlZiktPnZpc2libGVSYW5nZSgpOwotICAgIHJldHVybiB0b0FQSShyYW5n
ZUhhbmRsZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkocmFuZ2VIYW5k
bGUubGVha1JlZigpKTsKIH0KIAogV0tSZWN0IFdLQnVuZGxlTm9kZUhhbmRsZUdldEVsZW1lbnRC
b3VuZHMoV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGVsZW1lbnRIYW5kbGVSZWYpCkBAIC0xMzgsMjUg
KzEzOCwyNSBAQCBib29sIFdLQnVuZGxlTm9kZUhhbmRsZUdldEhUTUxUZXh0QXJlYUVsZW1lbnRM
YXN0Q2hhbmdlV2FzVXNlckVkaXQoV0tCdW5kbGVOb2RlSAogV0tCdW5kbGVOb2RlSGFuZGxlUmVm
IFdLQnVuZGxlTm9kZUhhbmRsZUNvcHlIVE1MVGFibGVDZWxsRWxlbWVudENlbGxBYm92ZShXS0J1
bmRsZU5vZGVIYW5kbGVSZWYgaHRtbFRhYmxlQ2VsbEVsZW1lbnRIYW5kbGVSZWYpCiB7CiAgICAg
UmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gbm9kZUhhbmRsZSA9IHRvSW1wbChodG1s
VGFibGVDZWxsRWxlbWVudEhhbmRsZVJlZiktPmh0bWxUYWJsZUNlbGxFbGVtZW50Q2VsbEFib3Zl
KCk7Ci0gICAgcmV0dXJuIHRvQVBJKG5vZGVIYW5kbGUucmVsZWFzZSgpLmxlYWtSZWYoKSk7Cisg
ICAgcmV0dXJuIHRvQVBJKG5vZGVIYW5kbGUubGVha1JlZigpKTsKIH0KIAogV0tCdW5kbGVGcmFt
ZVJlZiBXS0J1bmRsZU5vZGVIYW5kbGVDb3B5RG9jdW1lbnRGcmFtZShXS0J1bmRsZU5vZGVIYW5k
bGVSZWYgZG9jdW1lbnRIYW5kbGVSZWYpCiB7CiAgICAgUmVmUHRyPFdlYkZyYW1lPiBmcmFtZSA9
IHRvSW1wbChkb2N1bWVudEhhbmRsZVJlZiktPmRvY3VtZW50RnJhbWUoKTsKLSAgICByZXR1cm4g
dG9BUEkoZnJhbWUucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKGZyYW1l
LmxlYWtSZWYoKSk7CiB9CiAKIFdLQnVuZGxlRnJhbWVSZWYgV0tCdW5kbGVOb2RlSGFuZGxlQ29w
eUhUTUxGcmFtZUVsZW1lbnRDb250ZW50RnJhbWUoV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGh0bWxG
cmFtZUVsZW1lbnRIYW5kbGVSZWYpCiB7CiAgICAgUmVmUHRyPFdlYkZyYW1lPiBmcmFtZSA9IHRv
SW1wbChodG1sRnJhbWVFbGVtZW50SGFuZGxlUmVmKS0+aHRtbEZyYW1lRWxlbWVudENvbnRlbnRG
cmFtZSgpOwotICAgIHJldHVybiB0b0FQSShmcmFtZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAg
ICByZXR1cm4gdG9BUEkoZnJhbWUubGVha1JlZigpKTsKIH0KIAogV0tCdW5kbGVGcmFtZVJlZiBX
S0J1bmRsZU5vZGVIYW5kbGVDb3B5SFRNTElGcmFtZUVsZW1lbnRDb250ZW50RnJhbWUoV0tCdW5k
bGVOb2RlSGFuZGxlUmVmIGh0bWxJRnJhbWVFbGVtZW50SGFuZGxlUmVmKQogewogICAgIFJlZlB0
cjxXZWJGcmFtZT4gZnJhbWUgPSB0b0ltcGwoaHRtbElGcmFtZUVsZW1lbnRIYW5kbGVSZWYpLT5o
dG1sSUZyYW1lRWxlbWVudENvbnRlbnRGcmFtZSgpOwotICAgIHJldHVybiB0b0FQSShmcmFtZS5y
ZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkoZnJhbWUubGVha1JlZigpKTsK
IH0KIAogLy8gRGVwcmVjYXRlZCAtIHVzZSBXS0J1bmRsZU5vZGVIYW5kbGVHZXRIVE1MSW5wdXRF
bGVtZW50QXV0b0ZpbGxlZChXS0J1bmRsZU5vZGVIYW5kbGVSZWYpLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2UuY3BwCmluZGV4IDE3ZTIxYWZjMzNiNjhlZmUzZDg3NTgzMDhiZDgxYzYwYzNmODA5
NTUuLmUxOGRhOTE0ZmMyMGRlZWRlYTZjMWY5NjdkOGYzNDkwNDc3NDA2OWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQ
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZS5jcHAKQEAgLTQzNCw3ICs0MzQsNyBAQCBib29sIFdLQnVuZGxlUGFn
ZUZpbmRTdHJpbmcoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHRhcmdldCwg
V0tGaW5kTwogV0tJbWFnZVJlZiBXS0J1bmRsZVBhZ2VDcmVhdGVTbmFwc2hvdFdpdGhPcHRpb25z
KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS1JlY3QgcmVjdCwgV0tTbmFwc2hvdE9wdGlvbnMg
b3B0aW9ucykKIHsKICAgICBSZWZQdHI8V2ViSW1hZ2U+IHdlYkltYWdlID0gdG9JbXBsKHBhZ2VS
ZWYpLT5zY2FsZWRTbmFwc2hvdFdpdGhPcHRpb25zKHRvSW50UmVjdChyZWN0KSwgMSwgdG9TbmFw
c2hvdE9wdGlvbnMob3B0aW9ucykpOwotICAgIHJldHVybiB0b0FQSSh3ZWJJbWFnZS5yZWxlYXNl
KCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkod2ViSW1hZ2UubGVha1JlZigpKTsKIH0K
IAogV0tJbWFnZVJlZiBXS0J1bmRsZVBhZ2VDcmVhdGVTbmFwc2hvdEluVmlld0Nvb3JkaW5hdGVz
KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS1JlY3QgcmVjdCwgV0tJbWFnZU9wdGlvbnMgb3B0
aW9ucykKQEAgLTQ0MiwxOSArNDQyLDE5IEBAIFdLSW1hZ2VSZWYgV0tCdW5kbGVQYWdlQ3JlYXRl
U25hcHNob3RJblZpZXdDb29yZGluYXRlcyhXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwKICAgICBT
bmFwc2hvdE9wdGlvbnMgc25hcHNob3RPcHRpb25zID0gc25hcHNob3RPcHRpb25zRnJvbUltYWdl
T3B0aW9ucyhvcHRpb25zKTsKICAgICBzbmFwc2hvdE9wdGlvbnMgfD0gU25hcHNob3RPcHRpb25z
SW5WaWV3Q29vcmRpbmF0ZXM7CiAgICAgUmVmUHRyPFdlYkltYWdlPiB3ZWJJbWFnZSA9IHRvSW1w
bChwYWdlUmVmKS0+c2NhbGVkU25hcHNob3RXaXRoT3B0aW9ucyh0b0ludFJlY3QocmVjdCksIDEs
IHNuYXBzaG90T3B0aW9ucyk7Ci0gICAgcmV0dXJuIHRvQVBJKHdlYkltYWdlLnJlbGVhc2UoKS5s
ZWFrUmVmKCkpOworICAgIHJldHVybiB0b0FQSSh3ZWJJbWFnZS5sZWFrUmVmKCkpOwogfQogCiBX
S0ltYWdlUmVmIFdLQnVuZGxlUGFnZUNyZWF0ZVNuYXBzaG90SW5Eb2N1bWVudENvb3JkaW5hdGVz
KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS1JlY3QgcmVjdCwgV0tJbWFnZU9wdGlvbnMgb3B0
aW9ucykKIHsKICAgICBSZWZQdHI8V2ViSW1hZ2U+IHdlYkltYWdlID0gdG9JbXBsKHBhZ2VSZWYp
LT5zY2FsZWRTbmFwc2hvdFdpdGhPcHRpb25zKHRvSW50UmVjdChyZWN0KSwgMSwgc25hcHNob3RP
cHRpb25zRnJvbUltYWdlT3B0aW9ucyhvcHRpb25zKSk7Ci0gICAgcmV0dXJuIHRvQVBJKHdlYklt
YWdlLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgIHJldHVybiB0b0FQSSh3ZWJJbWFnZS5sZWFr
UmVmKCkpOwogfQogCiBXS0ltYWdlUmVmIFdLQnVuZGxlUGFnZUNyZWF0ZVNjYWxlZFNuYXBzaG90
SW5Eb2N1bWVudENvb3JkaW5hdGVzKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS1JlY3QgcmVj
dCwgZG91YmxlIHNjYWxlRmFjdG9yLCBXS0ltYWdlT3B0aW9ucyBvcHRpb25zKQogewogICAgIFJl
ZlB0cjxXZWJJbWFnZT4gd2ViSW1hZ2UgPSB0b0ltcGwocGFnZVJlZiktPnNjYWxlZFNuYXBzaG90
V2l0aE9wdGlvbnModG9JbnRSZWN0KHJlY3QpLCBzY2FsZUZhY3Rvciwgc25hcHNob3RPcHRpb25z
RnJvbUltYWdlT3B0aW9ucyhvcHRpb25zKSk7Ci0gICAgcmV0dXJuIHRvQVBJKHdlYkltYWdlLnJl
bGVhc2UoKS5sZWFrUmVmKCkpOworICAgIHJldHVybiB0b0FQSSh3ZWJJbWFnZS5sZWFrUmVmKCkp
OwogfQogCiBkb3VibGUgV0tCdW5kbGVQYWdlR2V0QmFja2luZ1NjYWxlRmFjdG9yKFdLQnVuZGxl
UGFnZVJlZiBwYWdlUmVmKQpAQCAtNjI0LDcgKzYyNCw3IEBAIHZvaWQgV0tCdW5kbGVQYWdlUG9z
dFN5bmNocm9ub3VzTWVzc2FnZUZvclRlc3RpbmcoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdL
U3RyCiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiByZXR1cm5EYXRhOwogICAgIHBhZ2UtPnBvc3RT
eW5jaHJvbm91c01lc3NhZ2VGb3JUZXN0aW5nKHRvV1RGU3RyaW5nKG1lc3NhZ2VOYW1lUmVmKSwg
dG9JbXBsKG1lc3NhZ2VCb2R5UmVmKSwgcmV0dXJuRGF0YSk7CiAgICAgaWYgKHJldHVybkRhdGFS
ZWYpCi0gICAgICAgICpyZXR1cm5EYXRhUmVmID0gdG9BUEkocmV0dXJuRGF0YS5yZWxlYXNlKCku
bGVha1JlZigpKTsKKyAgICAgICAgKnJldHVybkRhdGFSZWYgPSB0b0FQSShyZXR1cm5EYXRhLmxl
YWtSZWYoKSk7CiB9CiAKIHZvaWQgV0tCdW5kbGVQYWdlQWRkVXNlclNjcmlwdChXS0J1bmRsZVBh
Z2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgc291cmNlLCBfV0tVc2VyU2NyaXB0SW5qZWN0aW9u
VGltZSBpbmplY3Rpb25UaW1lLCBXS1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRG
cmFtZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlUmFuZ2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVJhbmdlSGFuZGxlLmNwcAppbmRleCA3
M2I4OGMxMzQwNjMzYzY5MDgxOGQ0OGMzNDFlYTU2OTlhODE3ZWMwLi40MzcxN2M5MTVkMDYyYjNk
NGE0YjdkZjBlZjMxYzNmNTY2MWU1NDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVS
YW5nZUhhbmRsZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgV0tUeXBlSUQgV0tCdW5kbGVSYW5nZUhh
bmRsZUdldFR5cGVJRCgpCiBXS0J1bmRsZVJhbmdlSGFuZGxlUmVmIFdLQnVuZGxlUmFuZ2VIYW5k
bGVDcmVhdGUoSlNDb250ZXh0UmVmIGNvbnRleHRSZWYsIEpTT2JqZWN0UmVmIG9iamVjdFJlZikK
IHsKICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gcmFuZ2VIYW5kbGUgPSBJ
bmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpnZXRPckNyZWF0ZShjb250ZXh0UmVmLCBvYmplY3RS
ZWYpOwotICAgIHJldHVybiB0b0FQSShyYW5nZUhhbmRsZS5yZWxlYXNlKCkubGVha1JlZigpKTsK
KyAgICByZXR1cm4gdG9BUEkocmFuZ2VIYW5kbGUubGVha1JlZigpKTsKIH0KIAogV0tSZWN0IFdL
QnVuZGxlUmFuZ2VIYW5kbGVHZXRCb3VuZGluZ1JlY3RJbldpbmRvd0Nvb3JkaW5hdGVzKFdLQnVu
ZGxlUmFuZ2VIYW5kbGVSZWYgcmFuZ2VIYW5kbGVSZWYpCkBAIC01NSw1ICs1NSw1IEBAIFdLUmVj
dCBXS0J1bmRsZVJhbmdlSGFuZGxlR2V0Qm91bmRpbmdSZWN0SW5XaW5kb3dDb29yZGluYXRlcyhX
S0J1bmRsZVJhbmdlSGFuZGxlCiBXS0ltYWdlUmVmIFdLQnVuZGxlUmFuZ2VIYW5kbGVDb3B5U25h
cHNob3RXaXRoT3B0aW9ucyhXS0J1bmRsZVJhbmdlSGFuZGxlUmVmIHJhbmdlSGFuZGxlUmVmLCBX
S1NuYXBzaG90T3B0aW9ucyBvcHRpb25zKQogewogICAgIFJlZlB0cjxXZWJJbWFnZT4gaW1hZ2Ug
PSB0b0ltcGwocmFuZ2VIYW5kbGVSZWYpLT5yZW5kZXJlZEltYWdlKHRvU25hcHNob3RPcHRpb25z
KG9wdGlvbnMpKTsKLSAgICByZXR1cm4gdG9BUEkoaW1hZ2UucmVsZWFzZSgpLmxlYWtSZWYoKSk7
CisgICAgcmV0dXJuIHRvQVBJKGltYWdlLmxlYWtSZWYoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlU2NyaXB0
V29ybGQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZVNjcmlwdFdvcmxkLmNwcAppbmRleCA2ZGEwY2MwZTY3NWZjZTM0NWNiNDI3MjQw
OGE2ODIyZDA4N2VmM2E0Li5iN2JkOGIzMDJiMzE3MmUxZmUzYmM4Y2JjNTM5YjhhZjkwNjI0YWUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlU2NyaXB0V29ybGQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVTY3JpcHRXb3JsZC5jcHAKQEAgLTQwLDcg
KzQwLDcgQEAgV0tUeXBlSUQgV0tCdW5kbGVTY3JpcHRXb3JsZEdldFR5cGVJRCgpCiBXS0J1bmRs
ZVNjcmlwdFdvcmxkUmVmIFdLQnVuZGxlU2NyaXB0V29ybGRDcmVhdGVXb3JsZCgpCiB7CiAgICAg
UmVmUHRyPEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ+IHdvcmxkID0gSW5qZWN0ZWRCdW5kbGVT
Y3JpcHRXb3JsZDo6Y3JlYXRlKCk7Ci0gICAgcmV0dXJuIHRvQVBJKHdvcmxkLnJlbGVhc2UoKS5s
ZWFrUmVmKCkpOworICAgIHJldHVybiB0b0FQSSh3b3JsZC5sZWFrUmVmKCkpOwogfQogCiBXS0J1
bmRsZVNjcmlwdFdvcmxkUmVmIFdLQnVuZGxlU2NyaXB0V29ybGROb3JtYWxXb3JsZCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMv
V0tET01Ob2RlLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvbWFjL1dLRE9NTm9kZS5tbQppbmRleCA3MTIyYzNmZDk3ZDYzOGE5MGY2MjA3ZGQyYmQ3ZTVl
OTI3Y2E3YTkyLi40OWI0Y2I5Y2FlYmI5ZGYwMTQyNmY5NWY5N2U2MzY5YmZiMjJhY2ZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMv
V0tET01Ob2RlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL21hYy9XS0RPTU5vZGUubW0KQEAgLTEyOSw4ICsxMjksOCBAQCBAaW1wbGVtZW50YXRp
b24gV0tET01Ob2RlIChXS1ByaXZhdGUpCiAKIC0gKFdLQnVuZGxlTm9kZUhhbmRsZVJlZilfY29w
eUJ1bmRsZU5vZGVIYW5kbGVSZWYKIHsKLSAgICBSZWZQdHI8V2ViS2l0OjpJbmplY3RlZEJ1bmRs
ZU5vZGVIYW5kbGU+IG5vZGVIYW5kbGUgPSBXZWJLaXQ6OkluamVjdGVkQnVuZGxlTm9kZUhhbmRs
ZTo6Z2V0T3JDcmVhdGUoX2ltcGwuZ2V0KCkpOwotICAgIHJldHVybiB0b0FQSShub2RlSGFuZGxl
LnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgIGF1dG8gbm9kZUhhbmRsZSA9IFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpnZXRPckNyZWF0ZShfaW1wbC5nZXQoKSk7CisgICAgcmV0
dXJuIHRvQVBJKG5vZGVIYW5kbGUubGVha1JlZigpKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFu
Z2UubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMv
V0tET01SYW5nZS5tbQppbmRleCAxNjVkYTA2NDM0MzIxNWRjNmI5ZjAwMWNlNjA1NTcxMGVlZjZj
YjY3Li4wZjA4ZDg0ODEwMTg4OWE1MGI1ZjExMTY4OWE1NzZmMTU4MWQ1MTZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01S
YW5nZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9tYWMvV0tET01SYW5nZS5tbQpAQCAtMTU2LDggKzE1Niw4IEBAIEBpbXBsZW1lbnRhdGlvbiBX
S0RPTVJhbmdlIChXS1ByaXZhdGUpCiAKIC0gKFdLQnVuZGxlUmFuZ2VIYW5kbGVSZWYpX2NvcHlC
dW5kbGVSYW5nZUhhbmRsZVJlZgogewotICAgIFJlZlB0cjxXZWJLaXQ6OkluamVjdGVkQnVuZGxl
UmFuZ2VIYW5kbGU+IHJhbmdlSGFuZGxlID0gV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVJhbmdlSGFu
ZGxlOjpnZXRPckNyZWF0ZShfaW1wbC5nZXQoKSk7Ci0gICAgcmV0dXJuIHRvQVBJKHJhbmdlSGFu
ZGxlLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgIGF1dG8gcmFuZ2VIYW5kbGUgPSBXZWJLaXQ6
OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmdldE9yQ3JlYXRlKF9pbXBsLmdldCgpKTsKKyAg
ICByZXR1cm4gdG9BUEkocmFuZ2VIYW5kbGUubGVha1JlZigpKTsKIH0KIAogQGVuZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0
ZWRCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJh
dGlvbkhhbmRsZS5jcHAKaW5kZXggYWMxMWQxMWE3ODY2NDJhZjczOTlmZjUwOWU4ZjdjNWNkMWU2
OGNlMi4uMmE4ZjE3YTRhY2Y4NmIyNzc5MmRiZGUzN2Q3M2ZiMDViNWI2MDc2NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRC
dW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZUNTU1N0eWxlRGVjbGFy
YXRpb25IYW5kbGUuY3BwCkBAIC01MSw5ICs1MSw5IEBAIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5k
bGVDU1NTdHlsZURlY2xhcmF0aW9uSGFuZGxlPiBJbmplY3RlZEJ1bmRsZUNTU1N0eWxlRGVjbGFy
CiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8
SW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uSGFuZGxlPihyZXN1bHQuaXRlcmF0b3It
PnZhbHVlKTsKIAotICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25I
YW5kbGU+IHN0eWxlRGVjbGFyYXRpb25IYW5kbGUgPSBhZG9wdFJlZihuZXcgSW5qZWN0ZWRCdW5k
bGVDU1NTdHlsZURlY2xhcmF0aW9uSGFuZGxlKCpzdHlsZURlY2xhcmF0aW9uKSk7Ci0gICAgcmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0eWxlRGVjbGFyYXRpb25IYW5kbGUuZ2V0KCk7Ci0gICAg
cmV0dXJuIHN0eWxlRGVjbGFyYXRpb25IYW5kbGUucmVsZWFzZSgpOworICAgIGF1dG8gc3R5bGVE
ZWNsYXJhdGlvbkhhbmRsZSA9IGFkb3B0UmVmKCpuZXcgSW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURl
Y2xhcmF0aW9uSGFuZGxlKCpzdHlsZURlY2xhcmF0aW9uKSk7CisgICAgcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSA9IHN0eWxlRGVjbGFyYXRpb25IYW5kbGUucHRyKCk7CisgICAgcmV0dXJuIFdURk1v
dmUoc3R5bGVEZWNsYXJhdGlvbkhhbmRsZSk7CiB9CiAKIEluamVjdGVkQnVuZGxlQ1NTU3R5bGVE
ZWNsYXJhdGlvbkhhbmRsZTo6SW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uSGFuZGxl
KENTU1N0eWxlRGVjbGFyYXRpb24mIHN0eWxlRGVjbGFyYXRpb24pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5v
ZGVIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9E
T00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcAppbmRleCAyZWIyZGIzYjI5N2VlNjJhOTM0
YTk3ZmRmYzljODM1YjhkZDZjNjY5Li5jZmU5OTA2NDI3MWRkZjc4ZDVjNjkzMjRjNjI5ZTdlMWUy
NWI5Y2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5j
cHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxXZWJJbWFnZT4gaW1hZ2VG
b3JSZWN0KEZyYW1lVmlldyogZnJhbWVWaWV3LCBjb25zdCBJbnRSZWN0JiByZQogICAgIGZsb2F0
IHNjYWxlRmFjdG9yID0gZnJhbWVWaWV3LT5mcmFtZSgpLnBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0
b3IoKTsKICAgICBiaXRtYXBTaXplLnNjYWxlKHNjYWxlRmFjdG9yKTsKIAotICAgIFJlZlB0cjxX
ZWJJbWFnZT4gc25hcHNob3QgPSBXZWJJbWFnZTo6Y3JlYXRlKGJpdG1hcFNpemUsIHNuYXBzaG90
T3B0aW9uc1RvSW1hZ2VPcHRpb25zKG9wdGlvbnMpKTsKKyAgICBhdXRvIHNuYXBzaG90ID0gV2Vi
SW1hZ2U6OmNyZWF0ZShiaXRtYXBTaXplLCBzbmFwc2hvdE9wdGlvbnNUb0ltYWdlT3B0aW9ucyhv
cHRpb25zKSk7CiAgICAgaWYgKCFzbmFwc2hvdC0+Yml0bWFwKCkpCiAgICAgICAgIHJldHVybiAw
OwogCkBAIC0xNjQsNyArMTY0LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IGltYWdl
Rm9yUmVjdChGcmFtZVZpZXcqIGZyYW1lVmlldywgY29uc3QgSW50UmVjdCYgcmUKICAgICBmcmFt
ZVZpZXctPnBhaW50Q29udGVudHNGb3JTbmFwc2hvdCgqZ3JhcGhpY3NDb250ZXh0LmdldCgpLCBy
ZWN0LCBzaG91bGRQYWludFNlbGVjdGlvbiwgRnJhbWVWaWV3OjpEb2N1bWVudENvb3JkaW5hdGVz
KTsKICAgICBmcmFtZVZpZXctPnNldFBhaW50QmVoYXZpb3Iob2xkUGFpbnRCZWhhdmlvcik7CiAK
LSAgICByZXR1cm4gc25hcHNob3QucmVsZWFzZSgpOworICAgIHJldHVybiBzbmFwc2hvdDsKIH0K
IAogUGFzc1JlZlB0cjxXZWJJbWFnZT4gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpyZW5kZXJl
ZEltYWdlKFNuYXBzaG90T3B0aW9ucyBvcHRpb25zKQpAQCAtMTg3LDEwICsxODcsMTAgQEAgUGFz
c1JlZlB0cjxXZWJJbWFnZT4gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpyZW5kZXJlZEltYWdl
KFNuYXBzaG90T3B0aW9ucyBvcHQKICAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IHNuYXBwZWRJ
bnRSZWN0KHJlbmRlcmVyLT5wYWludGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCkpOwogCiAgICAg
ZnJhbWVWaWV3LT5zZXROb2RlVG9EcmF3KG1fbm9kZS5wdHIoKSk7Ci0gICAgUmVmUHRyPFdlYklt
YWdlPiBpbWFnZSA9IGltYWdlRm9yUmVjdChmcmFtZVZpZXcsIHBhaW50aW5nUmVjdCwgb3B0aW9u
cyk7CisgICAgYXV0byBpbWFnZSA9IGltYWdlRm9yUmVjdChmcmFtZVZpZXcsIHBhaW50aW5nUmVj
dCwgb3B0aW9ucyk7CiAgICAgZnJhbWVWaWV3LT5zZXROb2RlVG9EcmF3KDApOwogCi0gICAgcmV0
dXJuIGltYWdlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gaW1hZ2U7CiB9CiAKIFBhc3NSZWZQdHI8
SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjp2aXNp
YmxlUmFuZ2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxl
LmNwcAppbmRleCA4YTk0NTE0OWI4ZTliODI0MmRkMzU2ZDQyMjM5MmNjNDQxNTBlN2M5Li5jOWJl
ZjVhNmU4YjYzYWZlOTYyNWQ4ZGRmZTk0MzI3OGQ5MDFhMzIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdl
SGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcApAQCAtNzAsOSArNzAsOSBAQCBQYXNz
UmVmUHRyPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5k
bGU6OmdldE9yQ3JlYXRlKFJhbgogICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAg
IHJldHVybiBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+KHJlc3VsdC5pdGVy
YXRvci0+dmFsdWUpOwogCi0gICAgUmVmUHRyPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IHJh
bmdlSGFuZGxlID0gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Y3JlYXRlKHJhbmdlKTsKLSAg
ICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gcmFuZ2VIYW5kbGUuZ2V0KCk7Ci0gICAgcmV0dXJu
IHJhbmdlSGFuZGxlLnJlbGVhc2UoKTsKKyAgICBhdXRvIHJhbmdlSGFuZGxlID0gSW5qZWN0ZWRC
dW5kbGVSYW5nZUhhbmRsZTo6Y3JlYXRlKHJhbmdlKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlID0gcmFuZ2VIYW5kbGUucHRyKCk7CisgICAgcmV0dXJuIFdURk1vdmUocmFuZ2VIYW5kbGUp
OwogfQogCiBSZWY8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gSW5qZWN0ZWRCdW5kbGVSYW5n
ZUhhbmRsZTo6Y3JlYXRlKFJhbmdlKiByYW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXgg
NjlhNGZmODA5Zjk3MGMzNWFkZDE1YzQ4MTJkMWU5ZDU0NWJmYWEyNS4uMjgzYTk2NzAwZjVlMWZk
NjM4YjJlYzUyMzI0ZDM3ZTcwZThiMDA3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTkw
LDEzICs5MCwxMyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogUGFzc1JlZlB0cjxJbmplY3RlZEJ1
bmRsZT4gSW5qZWN0ZWRCdW5kbGU6OmNyZWF0ZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzLCBBUEk6Ok9iamVjdCogaW5pdGlhbGl6YXRpb25Vc2VyRGF0YSkK
IHsKLSAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGU+IGJ1bmRsZSA9IGFkb3B0UmVmKG5ldyBJbmpl
Y3RlZEJ1bmRsZShwYXJhbWV0ZXJzKSk7CisgICAgYXV0byBidW5kbGUgPSBhZG9wdFJlZigqbmV3
IEluamVjdGVkQnVuZGxlKHBhcmFtZXRlcnMpKTsKIAogICAgIGJ1bmRsZS0+bV9zYW5kYm94RXh0
ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKHBhcmFtZXRlcnMuaW5qZWN0ZWRCdW5k
bGVQYXRoRXh0ZW5zaW9uSGFuZGxlKTsKICAgICBpZiAoIWJ1bmRsZS0+aW5pdGlhbGl6ZShwYXJh
bWV0ZXJzLCBpbml0aWFsaXphdGlvblVzZXJEYXRhKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICByZXR1cm4gYnVuZGxlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92ZShidW5k
bGUpOwogfQogCiBJbmplY3RlZEJ1bmRsZTo6SW5qZWN0ZWRCdW5kbGUoY29uc3QgV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3Bw
CmluZGV4IDMxNTFlMTRlYjVlOTVlNDZiMDZmMGQ3Y2YxMDk4NWNhMjRmNjJmNGYuLjhmMTVkMzUy
NDY4YjExMWRhYjU4YmU3OGQyNmY5MWY4NWM1MmYxZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
LmNwcApAQCAtMTY5LDEwICsxNjksMTAgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6bG9hZFVSTChj
b25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnMKIAogICAg
IGlmICh0YXJnZXQuaXNOdWxsKCkpIHsKICAgICAgICAgLy8gVGhlIGJyb3dzZXIgaXMgZ29pbmcg
dG8gc2VuZCB0aGUgZGF0YSBpbiBhIHN0cmVhbSwgY3JlYXRlIGEgcGx1Zy1pbiBzdHJlYW0uCi0g
ICAgICAgIFJlZlB0cjxOZXRzY2FwZVBsdWdpblN0cmVhbT4gcGx1Z2luU3RyZWFtID0gTmV0c2Nh
cGVQbHVnaW5TdHJlYW06OmNyZWF0ZSh0aGlzLCByZXF1ZXN0SUQsIHVybFN0cmluZywgc2VuZE5v
dGlmaWNhdGlvbiwgbm90aWZpY2F0aW9uRGF0YSk7CisgICAgICAgIGF1dG8gcGx1Z2luU3RyZWFt
ID0gTmV0c2NhcGVQbHVnaW5TdHJlYW06OmNyZWF0ZSh0aGlzLCByZXF1ZXN0SUQsIHVybFN0cmlu
Zywgc2VuZE5vdGlmaWNhdGlvbiwgbm90aWZpY2F0aW9uRGF0YSk7CiAgICAgICAgIEFTU0VSVCgh
bV9zdHJlYW1zLmNvbnRhaW5zKHJlcXVlc3RJRCkpOwogCi0gICAgICAgIG1fc3RyZWFtcy5zZXQo
cmVxdWVzdElELCBwbHVnaW5TdHJlYW0ucmVsZWFzZSgpKTsKKyAgICAgICAgbV9zdHJlYW1zLnNl
dChyZXF1ZXN0SUQsIFdURk1vdmUocGx1Z2luU3RyZWFtKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
RGVwcmVjYXRlZFBERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvRGVwcmVjYXRlZFBERlBsdWdpbi5tbQppbmRleCAxYzQ3MTdjYTcxODQzZjRlNGMwMTZl
ZmI3NmNmMzljM2EwY2ViM2ViLi4xMjIzZjQ5YzUwODQ0MDdhNGQwOGZjMzUxMWNhNDYyNWQyMDdl
YjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0Rl
cHJlY2F0ZWRQREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9EZXByZWNhdGVkUERGUGx1Z2luLm1tCkBAIC02NTEsNyArNjUxLDcgQEAgY29uc3Qg
UGx1Z2luVmlldyogUERGUGx1Z2luOjpwbHVnaW5WaWV3KCkgY29uc3QKIAogUGFzc1JlZlB0cjxT
Y3JvbGxiYXI+IFBERlBsdWdpbjo6Y3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9u
IG9yaWVudGF0aW9uKQogewotICAgIFJlZlB0cjxTY3JvbGxiYXI+IHdpZGdldCA9IFNjcm9sbGJh
cjo6Y3JlYXRlTmF0aXZlU2Nyb2xsYmFyKCp0aGlzLCBvcmllbnRhdGlvbiwgUmVndWxhclNjcm9s
bGJhcik7CisgICAgYXV0byB3aWRnZXQgPSBTY3JvbGxiYXI6OmNyZWF0ZU5hdGl2ZVNjcm9sbGJh
cigqdGhpcywgb3JpZW50YXRpb24sIFJlZ3VsYXJTY3JvbGxiYXIpOwogICAgIGlmIChvcmllbnRh
dGlvbiA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSB7CiAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9s
bGJhckxheWVyID0gYWRvcHROUyhbW1dLUERGUGx1Z2luU2Nyb2xsYmFyTGF5ZXIgYWxsb2NdIGlu
aXRXaXRoUERGUGx1Z2luOnRoaXNdKTsKICAgICAgICAgW21fY29udGFpbmVyTGF5ZXIgYWRkU3Vi
bGF5ZXI6bV9ob3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIuZ2V0KCldOwpAQCAtNjY3LDcgKzY2Nyw3
IEBAIFBhc3NSZWZQdHI8U2Nyb2xsYmFyPiBQREZQbHVnaW46OmNyZWF0ZVNjcm9sbGJhcihTY3Jv
bGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvCiAgICAgICAgIH0KICAgICB9CiAgICAgcGx1Z2lu
VmlldygpLT5mcmFtZSgpLT52aWV3KCktPmFkZENoaWxkKHdpZGdldC5nZXQoKSk7Ci0gICAgcmV0
dXJuIHdpZGdldC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHdpZGdldDsKIH0KIAogdm9pZCBQREZQ
bHVnaW46OmRlc3Ryb3lTY3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZUFy
ZWFNYXAuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VBcmVh
TWFwLmNwcAppbmRleCA2YjI0Y2Y0NzMyMjJmZDBjMzI2OGE1ZDc1MTE0OTEwNmM2NTdmNjA5Li5h
MGNjOGI5YjI0NGYyNTNkYzExZDZiZThhNWRjZDY5ZTdmODcwMzE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKQEAgLTI2
Miw3ICsyNjIsNyBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjphcHBseUNoYW5nZShjb25zdCBTdHJp
bmcmIGtleSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSkKIAogICAgIGlmICgha2V5KSB7CiAgICAg
ICAgIC8vIEEgbnVsbCBrZXkgbWVhbnMgY2xlYXIuCi0gICAgICAgIFJlZlB0cjxTdG9yYWdlTWFw
PiBuZXdTdG9yYWdlTWFwID0gU3RvcmFnZU1hcDo6Y3JlYXRlKG1fcXVvdGFJbkJ5dGVzKTsKKyAg
ICAgICAgYXV0byBuZXdTdG9yYWdlTWFwID0gU3RvcmFnZU1hcDo6Y3JlYXRlKG1fcXVvdGFJbkJ5
dGVzKTsKIAogICAgICAgICAvLyBBbnkgY2hhbmdlcyB0aGF0IHdlcmUgbWFkZSBsb2NhbGx5IGFm
dGVyIHRoZSBjbGVhciBtdXN0IHN0aWxsIGJlIGtlcHQgYXJvdW5kIGluIHRoZSBuZXcgbWFwLgog
ICAgICAgICBmb3IgKGF1dG8gaXQgPSBtX3BlbmRpbmdWYWx1ZUNoYW5nZXMuYmVnaW4oKS5rZXlz
KCksIGVuZCA9IG1fcGVuZGluZ1ZhbHVlQ2hhbmdlcy5lbmQoKS5rZXlzKCk7IGl0ICE9IGVuZDsg
KytpdCkgewpAQCAtMjc4LDcgKzI3OCw3IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmFwcGx5Q2hh
bmdlKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlKQogICAgICAgICAg
ICAgbmV3U3RvcmFnZU1hcC0+c2V0SXRlbUlnbm9yaW5nUXVvdGEoa2V5LCBvbGRWYWx1ZSk7CiAg
ICAgICAgIH0KIAotICAgICAgICBtX3N0b3JhZ2VNYXAgPSBuZXdTdG9yYWdlTWFwLnJlbGVhc2Uo
KTsKKyAgICAgICAgbV9zdG9yYWdlTWFwID0gV1RGTW92ZShuZXdTdG9yYWdlTWFwKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAK
aW5kZXggMTUxYzkwMDZmYzJiNGY5MDgxMGU2MmQ2ZDMzN2QxODliNzYzNzI1NS4uMWNhN2Y0NDk3
YTc5OGIzZTVkZWQ0YWVlYjE4ZWFjYzJmMTlhYTc3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0
ZUNvbnZlcnNpb24uY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgUGFnZVN0YXRlIHRvUGFnZVN0YXRl
KGNvbnN0IFdlYkNvcmU6Okhpc3RvcnlJdGVtJiBoaXN0b3J5SXRlbSkKIAogc3RhdGljIFBhc3NS
ZWZQdHI8Rm9ybURhdGE+IHRvRm9ybURhdGEoY29uc3QgSFRUUEJvZHkmIGh0dHBCb2R5KQogewot
ICAgIFJlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEgPSBGb3JtRGF0YTo6Y3JlYXRlKCk7CisgICAg
YXV0byBmb3JtRGF0YSA9IEZvcm1EYXRhOjpjcmVhdGUoKTsKIAogICAgIGZvciAoY29uc3QgYXV0
byYgZWxlbWVudCA6IGh0dHBCb2R5LmVsZW1lbnRzKSB7CiAgICAgICAgIHN3aXRjaCAoZWxlbWVu
dC50eXBlKSB7CkBAIC0xNDEsNyArMTQxLDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8Rm9ybURhdGE+
IHRvRm9ybURhdGEoY29uc3QgSFRUUEJvZHkmIGh0dHBCb2R5KQogICAgICAgICB9CiAgICAgfQog
Ci0gICAgcmV0dXJuIGZvcm1EYXRhLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92ZShmb3Jt
RGF0YSk7CiB9CiAKIHN0YXRpYyB2b2lkIGFwcGx5RnJhbWVTdGF0ZShIaXN0b3J5SXRlbSYgaGlz
dG9yeUl0ZW0sIGNvbnN0IEZyYW1lU3RhdGUmIGZyYW1lU3RhdGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCmluZGV4IGExNDdmMjBkZjhmOTdjYjVkYTNiYWY2OTNlMzM0MDRkMTUw
MDhlN2UuLmYxYWU1NTQzMTA0NGJmODllYjU2MDA5NTI0NDc4NGRmZDgwYmVjYmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xNDM1LDExICsxNDM1LDExIEBAIFJlZlB0
cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6
ZSYsIEhUTUxQbHVnSW5FbGVtCiAjZW5kaWYKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5f
QVBJKQotICAgIFJlZlB0cjxQbHVnaW4+IHBsdWdpbiA9IG1fZnJhbWUtPnBhZ2UoKS0+Y3JlYXRl
UGx1Z2luKG1fZnJhbWUsIHBsdWdpbkVsZW1lbnQsIHBhcmFtZXRlcnMsIHBhcmFtZXRlcnMubWlt
ZVR5cGUpOworICAgIGF1dG8gcGx1Z2luID0gbV9mcmFtZS0+cGFnZSgpLT5jcmVhdGVQbHVnaW4o
bV9mcmFtZSwgcGx1Z2luRWxlbWVudCwgcGFyYW1ldGVycywgcGFyYW1ldGVycy5taW1lVHlwZSk7
CiAgICAgaWYgKCFwbHVnaW4pCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJu
IFBsdWdpblZpZXc6OmNyZWF0ZShwbHVnaW5FbGVtZW50LCBwbHVnaW4ucmVsZWFzZSgpLCBwYXJh
bWV0ZXJzKTsKKyAgICByZXR1cm4gUGx1Z2luVmlldzo6Y3JlYXRlKHBsdWdpbkVsZW1lbnQsIFdU
Rk1vdmUocGx1Z2luKSwgcGFyYW1ldGVycyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShwbHVn
aW5FbGVtZW50KTsKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE0NTQsOCArMTQ1NCw4IEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnJlY3JlYXRlUGx1Z2luKFdpZGdldCogd2lkZ2V0KQog
CiAgICAgUGx1Z2luVmlldyogcGx1Z2luVmlldyA9IHN0YXRpY19jYXN0PFBsdWdpblZpZXcqPih3
aWRnZXQpOwogICAgIFN0cmluZyBuZXdNSU1FVHlwZTsKLSAgICBSZWZQdHI8UGx1Z2luPiBwbHVn
aW4gPSBtX2ZyYW1lLT5wYWdlKCktPmNyZWF0ZVBsdWdpbihtX2ZyYW1lLCBwbHVnaW5WaWV3LT5w
bHVnaW5FbGVtZW50KCksIHBsdWdpblZpZXctPmluaXRpYWxQYXJhbWV0ZXJzKCksIG5ld01JTUVU
eXBlKTsKLSAgICBwbHVnaW5WaWV3LT5yZWNyZWF0ZUFuZEluaXRpYWxpemUocGx1Z2luLnJlbGVh
c2UoKSk7CisgICAgYXV0byBwbHVnaW4gPSBtX2ZyYW1lLT5wYWdlKCktPmNyZWF0ZVBsdWdpbiht
X2ZyYW1lLCBwbHVnaW5WaWV3LT5wbHVnaW5FbGVtZW50KCksIHBsdWdpblZpZXctPmluaXRpYWxQ
YXJhbWV0ZXJzKCksIG5ld01JTUVUeXBlKTsKKyAgICBwbHVnaW5WaWV3LT5yZWNyZWF0ZUFuZElu
aXRpYWxpemUoV1RGTW92ZShwbHVnaW4pKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHdpZGdl
dCk7CiAjZW5kaWYKQEAgLTE0ODgsNyArMTQ4OCw3IEBAIFdlYkNvcmU6OldlYkdMTG9hZFBvbGlj
eSBXZWJGcmFtZUxvYWRlckNsaWVudDo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFN0
CiBQYXNzUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUphdmFBcHBs
ZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgSFRNTEFwcGxldEVsZW1lbnQqIGFw
cGxldEVsZW1lbnQsIGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVz
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpCiB7CiAjaWYgRU5BQkxFKE5FVFND
QVBFX1BMVUdJTl9BUEkpCi0gICAgUmVmUHRyPFdpZGdldD4gcGx1Z2luID0gY3JlYXRlUGx1Z2lu
KHBsdWdpblNpemUsIGFwcGxldEVsZW1lbnQsIFVSTCgpLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVl
cywgYXBwbGV0RWxlbWVudC0+c2VydmljZVR5cGUoKSwgZmFsc2UpOworICAgIGF1dG8gcGx1Z2lu
ID0gY3JlYXRlUGx1Z2luKHBsdWdpblNpemUsIGFwcGxldEVsZW1lbnQsIFVSTCgpLCBwYXJhbU5h
bWVzLCBwYXJhbVZhbHVlcywgYXBwbGV0RWxlbWVudC0+c2VydmljZVR5cGUoKSwgZmFsc2UpOwog
ICAgIGlmICghcGx1Z2luKSB7CiAgICAgICAgIGlmIChXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFt
ZS0+cGFnZSgpKSB7CiAgICAgICAgICAgICBTdHJpbmcgZnJhbWVVUkxTdHJpbmcgPSBtX2ZyYW1l
LT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2VVUkwoKS5z
dHJpbmcoKTsKQEAgLTE0OTYsNyArMTQ5Niw3IEBAIFBhc3NSZWZQdHI8V2lkZ2V0PiBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiBwCiAg
ICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZhaWxU
b0luaXRpYWxpemVQbHVnaW4oYXBwbGV0RWxlbWVudC0+c2VydmljZVR5cGUoKSwgZnJhbWVVUkxT
dHJpbmcsIHBhZ2VVUkxTdHJpbmcpKTsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gcGx1
Z2luLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92ZShwbHVnaW4pOwogI2Vsc2UKICAgICBV
TlVTRURfUEFSQU0ocGx1Z2luU2l6ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGFwcGxldEVsZW1lbnQp
OwpAQCAtMTcwMSw4ICsxNzAxLDggQEAgYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxk
Rm9yY2VVbml2ZXJzYWxBY2Nlc3NGcm9tTG9jYWxVUkwoY29uc3QgV2ViQ29yZToKIAogUGFzc1Jl
ZlB0cjxGcmFtZU5ldHdvcmtpbmdDb250ZXh0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRl
TmV0d29ya2luZ0NvbnRleHQoKQogewotICAgIFJlZlB0cjxXZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0PiBjb250ZXh0ID0gV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6Y3JlYXRlKG1fZnJhbWUp
OwotICAgIHJldHVybiBjb250ZXh0LnJlbGVhc2UoKTsKKyAgICBhdXRvIGNvbnRleHQgPSBXZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0OjpjcmVhdGUobV9mcmFtZSk7CisgICAgcmV0dXJuIFdURk1v
dmUoY29udGV4dCk7CiB9CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5jcHAKaW5kZXggMDIxYWJmYTUwMDkyNTAwZTFkNWMxYzNjMGUyNTI3
ZTg0N2I3NmYzOC4uOTY4OTI5ZmRhMzQ3OWFhZDJiZTRhMTBhMGI0NTk2YWUxNzU1NmQ1MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcApAQCAtMTA3LDkgKzEwNyw5IEBAIHZvaWQgV2Vi
SW5zcGVjdG9yQ2xpZW50OjpoaWdobGlnaHQoKQogewogI2lmICFQTEFURk9STShJT1MpCiAgICAg
aWYgKCFtX2hpZ2hsaWdodE92ZXJsYXkpIHsKLSAgICAgICAgUmVmUHRyPFBhZ2VPdmVybGF5PiBo
aWdobGlnaHRPdmVybGF5ID0gUGFnZU92ZXJsYXk6OmNyZWF0ZSgqdGhpcyk7Ci0gICAgICAgIG1f
aGlnaGxpZ2h0T3ZlcmxheSA9IGhpZ2hsaWdodE92ZXJsYXkuZ2V0KCk7Ci0gICAgICAgIG1fcGFn
ZS0+bWFpbkZyYW1lKCktPnBhZ2VPdmVybGF5Q29udHJvbGxlcigpLmluc3RhbGxQYWdlT3Zlcmxh
eShoaWdobGlnaHRPdmVybGF5LnJlbGVhc2UoKSwgUGFnZU92ZXJsYXk6OkZhZGVNb2RlOjpGYWRl
KTsKKyAgICAgICAgYXV0byBoaWdobGlnaHRPdmVybGF5ID0gUGFnZU92ZXJsYXk6OmNyZWF0ZSgq
dGhpcyk7CisgICAgICAgIG1faGlnaGxpZ2h0T3ZlcmxheSA9IGhpZ2hsaWdodE92ZXJsYXkucHRy
KCk7CisgICAgICAgIG1fcGFnZS0+bWFpbkZyYW1lKCktPnBhZ2VPdmVybGF5Q29udHJvbGxlcigp
Lmluc3RhbGxQYWdlT3ZlcmxheShXVEZNb3ZlKGhpZ2hsaWdodE92ZXJsYXkpLCBQYWdlT3Zlcmxh
eTo6RmFkZU1vZGU6OkZhZGUpOwogICAgICAgICBtX2hpZ2hsaWdodE92ZXJsYXktPnNldE5lZWRz
RGlzcGxheSgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1faGlnaGxpZ2h0T3ZlcmxheS0+c3Rv
cEZhZGVPdXRBbmltYXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCmluZGV4
IDVhMDM4NTliZjEyNzk2MDZmZjcwM2M5NzE4NzA1ZTBlNGQ3NWRlNjcuLjBiZDI1ODc0ZmY1YmYw
ODE3ZDc5MWY0ODczMTBlZjYwYzU3YTUzMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1h
Yy5tbQpAQCAtNTYsNyArNTYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RhdGljIFBhc3NS
ZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0SW1hZ2VUb0JpdG1hcChOU0ltYWdlICppbWFn
ZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBi
aXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzaXplLCBTaGFyZWFibGVC
aXRtYXA6OlN1cHBvcnRzQWxwaGEpOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGVTaGFyZWFibGUoc2l6ZSwgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKTsK
ICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTcyLDcgKzcy
LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0SW1hZ2VUb0Jp
dG1hcChOU0ltYWdlICppbWFnZSwgY29uc3QgSW4KIAogICAgIFtOU0dyYXBoaWNzQ29udGV4dCBz
ZXRDdXJyZW50Q29udGV4dDpzYXZlZENvbnRleHQuZ2V0KCldOwogCi0gICAgcmV0dXJuIGJpdG1h
cC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1vdmUoYml0bWFwKTsKIH0KIAogdm9pZCBXZWJE
cmFnQ2xpZW50OjpzdGFydERyYWcoUmV0YWluUHRyPE5TSW1hZ2U+IGltYWdlLCBjb25zdCBJbnRQ
b2ludCYgcG9pbnQsIGNvbnN0IEludFBvaW50JiwgRGF0YVRyYW5zZmVyJiwgRnJhbWUmIGZyYW1l
LCBib29sIGxpbmtEcmFnKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9GaW5kQ29udHJvbGxlci5jcHAKaW5kZXggOWYxMTkzZjQ5MzI3OTMyNzk5MDA1NDAzODY4
ZWFkYzBkNjI0ODg2ZC4uMWUwY2VmNDY1MWI5M2JmODBmYjcwNTY2NWM2ZjYxNWZlYWJjMmE4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRy
b2xsZXIuY3BwCkBAIC0xOTIsOSArMTkyLDkgQEAgdm9pZCBGaW5kQ29udHJvbGxlcjo6dXBkYXRl
RmluZFVJQWZ0ZXJQYWdlU2Nyb2xsKGJvb2wgZm91bmQsIGNvbnN0IFN0cmluZyYgc3RyaW4KICAg
ICAgICAgICAgIG1fd2ViUGFnZS0+bWFpbkZyYW1lKCktPnBhZ2VPdmVybGF5Q29udHJvbGxlcigp
LnVuaW5zdGFsbFBhZ2VPdmVybGF5KG1fZmluZFBhZ2VPdmVybGF5LCBQYWdlT3ZlcmxheTo6RmFk
ZU1vZGU6OkZhZGUpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICghbV9maW5kUGFnZU92ZXJs
YXkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxQYWdlT3ZlcmxheT4gZmluZFBhZ2VPdmVybGF5ID0g
UGFnZU92ZXJsYXk6OmNyZWF0ZSgqdGhpcywgUGFnZU92ZXJsYXk6Ok92ZXJsYXlUeXBlOjpEb2N1
bWVudCk7Ci0gICAgICAgICAgICBtX2ZpbmRQYWdlT3ZlcmxheSA9IGZpbmRQYWdlT3ZlcmxheS5n
ZXQoKTsKLSAgICAgICAgICAgIG1fd2ViUGFnZS0+bWFpbkZyYW1lKCktPnBhZ2VPdmVybGF5Q29u
dHJvbGxlcigpLmluc3RhbGxQYWdlT3ZlcmxheShmaW5kUGFnZU92ZXJsYXkucmVsZWFzZSgpLCBQ
YWdlT3ZlcmxheTo6RmFkZU1vZGU6OkZhZGUpOworICAgICAgICAgICAgYXV0byBmaW5kUGFnZU92
ZXJsYXkgPSBQYWdlT3ZlcmxheTo6Y3JlYXRlKCp0aGlzLCBQYWdlT3ZlcmxheTo6T3ZlcmxheVR5
cGU6OkRvY3VtZW50KTsKKyAgICAgICAgICAgIG1fZmluZFBhZ2VPdmVybGF5ID0gZmluZFBhZ2VP
dmVybGF5LnB0cigpOworICAgICAgICAgICAgbV93ZWJQYWdlLT5tYWluRnJhbWUoKS0+cGFnZU92
ZXJsYXlDb250cm9sbGVyKCkuaW5zdGFsbFBhZ2VPdmVybGF5KFdURk1vdmUoZmluZFBhZ2VPdmVy
bGF5KSwgUGFnZU92ZXJsYXk6OkZhZGVNb2RlOjpGYWRlKTsKICAgICAgICAgfQogICAgICAgICBt
X2ZpbmRQYWdlT3ZlcmxheS0+c2V0TmVlZHNEaXNwbGF5KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1Rh
YmxlQ29udHJvbGxlci5jcHAKaW5kZXggOGUyMmY2ZWE1OGExNjUyOTRhMDNiZGQxZjJhMWZiZTc5
YWJjZmFhMi4uMWEzOWUzZTEwN2RjMWZkYWIzMmNkMzYyN2U1NGNmMjg1ZjZkMGM0NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlz
aXRlZExpbmtUYWJsZUNvbnRyb2xsZXIuY3BwCkBAIC01MCwxMCArNTAsMTAgQEAgUGFzc1JlZlB0
cjxWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlcj4gVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXI6
OmdldE9yQ3JlYXRlKHUKICAgICBpZiAodmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXJQdHIpCiAg
ICAgICAgIHJldHVybiB2aXNpdGVkTGlua1RhYmxlQ29udHJvbGxlclB0cjsKIAotICAgIFJlZlB0
cjxWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlcj4gdmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIg
PSBhZG9wdFJlZihuZXcgVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIoaWRlbnRpZmllcikpOwot
ICAgIHZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyUHRyID0gdmlzaXRlZExpbmtUYWJsZUNvbnRy
b2xsZXIuZ2V0KCk7CisgICAgYXV0byB2aXNpdGVkTGlua1RhYmxlQ29udHJvbGxlciA9IGFkb3B0
UmVmKCpuZXcgVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIoaWRlbnRpZmllcikpOworICAgIHZp
c2l0ZWRMaW5rVGFibGVDb250cm9sbGVyUHRyID0gdmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIu
cHRyKCk7CiAKLSAgICByZXR1cm4gdmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIucmVsZWFzZSgp
OworICAgIHJldHVybiBXVEZNb3ZlKHZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyKTsKIH0KIAog
VmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXI6OlZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyKHVp
bnQ2NF90IGlkZW50aWZpZXIpCkBAIC05MCwxMSArOTAsMTEgQEAgdm9pZCBWaXNpdGVkTGlua1Rh
YmxlQ29udHJvbGxlcjo6YWRkVmlzaXRlZExpbmsoUGFnZSYgcGFnZSwgTGlua0hhc2ggbGlua0hh
c2gpCiAKIHZvaWQgVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXI6OnNldFZpc2l0ZWRMaW5rVGFi
bGUoY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmIGhhbmRsZSkKIHsKLSAgICBSZWZQdHI8U2hh
cmVkTWVtb3J5PiBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6Om1hcChoYW5kbGUsIFNoYXJl
ZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0g
U2hhcmVkTWVtb3J5OjptYXAoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRP
bmx5KTsKICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV92
aXNpdGVkTGlua1RhYmxlLnNldFNoYXJlZE1lbW9yeShzaGFyZWRNZW1vcnkucmVsZWFzZSgpKTsK
KyAgICBtX3Zpc2l0ZWRMaW5rVGFibGUuc2V0U2hhcmVkTWVtb3J5KFdURk1vdmUoc2hhcmVkTWVt
b3J5KSk7CiAKICAgICBpbnZhbGlkYXRlU3R5bGVzRm9yQWxsTGlua3MoKTsKICAgICBQYWdlQ2Fj
aGU6OnNpbmdsZXRvbigpLm1hcmtQYWdlc0ZvclZpc2l0ZWRMaW5rU3R5bGVSZWNhbGMoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDJi
NTU0MGRmN2E1MTE5Njg2MjE5YjVkNTlmMDUzZmYzNTI2YzhhZWYuLjllYzI2NDU3Y2MyNDM5NDMy
NWRmZTRkMmViNTcyZWMzZGQxYmQ0NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtMTEwLDE4ICsxMTAsMTggQEAgc3RhdGljIHVpbnQ2
NF90IGdlbmVyYXRlTGlzdGVuZXJJRCgpCiAKIFBhc3NSZWZQdHI8V2ViRnJhbWU+IFdlYkZyYW1l
OjpjcmVhdGVXaXRoQ29yZU1haW5GcmFtZShXZWJQYWdlKiBwYWdlLCBXZWJDb3JlOjpGcmFtZSog
Y29yZUZyYW1lKQogewotICAgIFJlZlB0cjxXZWJGcmFtZT4gZnJhbWUgPSBjcmVhdGUoc3RkOjp1
bmlxdWVfcHRyPFdlYkZyYW1lTG9hZGVyQ2xpZW50PihzdGF0aWNfY2FzdDxXZWJGcmFtZUxvYWRl
ckNsaWVudCo+KCZjb3JlRnJhbWUtPmxvYWRlcigpLmNsaWVudCgpKSkpOworICAgIGF1dG8gZnJh
bWUgPSBjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPFdlYkZyYW1lTG9hZGVyQ2xpZW50PihzdGF0aWNf
Y2FzdDxXZWJGcmFtZUxvYWRlckNsaWVudCo+KCZjb3JlRnJhbWUtPmxvYWRlcigpLmNsaWVudCgp
KSkpOwogICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ3JlYXRlTWFp
bkZyYW1lKGZyYW1lLT5mcmFtZUlEKCkpLCBwYWdlLT5wYWdlSUQoKSwgSVBDOjpEaXNwYXRjaE1l
c3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwogCiAgICAgZnJhbWUtPm1fY29yZUZy
YW1lID0gY29yZUZyYW1lOwogICAgIGZyYW1lLT5tX2NvcmVGcmFtZS0+dHJlZSgpLnNldE5hbWUo
U3RyaW5nKCkpOwogICAgIGZyYW1lLT5tX2NvcmVGcmFtZS0+aW5pdCgpOwotICAgIHJldHVybiBm
cmFtZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGZyYW1lOwogfQogCiBQYXNzUmVmUHRyPFdlYkZy
YW1lPiBXZWJGcmFtZTo6Y3JlYXRlU3ViZnJhbWUoV2ViUGFnZSogcGFnZSwgY29uc3QgU3RyaW5n
JiBmcmFtZU5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50KQogewotICAg
IFJlZlB0cjxXZWJGcmFtZT4gZnJhbWUgPSBjcmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJGcmFt
ZUxvYWRlckNsaWVudD4oKSk7CisgICAgYXV0byBmcmFtZSA9IGNyZWF0ZShzdGQ6Om1ha2VfdW5p
cXVlPFdlYkZyYW1lTG9hZGVyQ2xpZW50PigpKTsKICAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpZENyZWF0ZVN1YmZyYW1lKGZyYW1lLT5mcmFtZUlEKCkpLCBwYWdlLT5w
YWdlSUQoKSwgSVBDOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkp
OwogCiAgICAgUmVmPFdlYkNvcmU6OkZyYW1lPiBjb3JlRnJhbWUgPSBGcmFtZTo6Y3JlYXRlKHBh
Z2UtPmNvcmVQYWdlKCksIG93bmVyRWxlbWVudCwgZnJhbWUtPm1fZnJhbWVMb2FkZXJDbGllbnQu
Z2V0KCkpOwpAQCAtMTMyLDE3ICsxMzIsMTcgQEAgUGFzc1JlZlB0cjxXZWJGcmFtZT4gV2ViRnJh
bWU6OmNyZWF0ZVN1YmZyYW1lKFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmluZyYgZnJhbWUKICAg
ICAgICAgb3duZXJFbGVtZW50LT5kb2N1bWVudCgpLmZyYW1lKCktPnRyZWUoKS5hcHBlbmRDaGls
ZChXVEZNb3ZlKGNvcmVGcmFtZSkpOwogICAgIH0KICAgICBmcmFtZS0+bV9jb3JlRnJhbWUtPmlu
aXQoKTsKLSAgICByZXR1cm4gZnJhbWUucmVsZWFzZSgpOworICAgIHJldHVybiBmcmFtZTsKIH0K
IAogUGFzc1JlZlB0cjxXZWJGcmFtZT4gV2ViRnJhbWU6OmNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8
V2ViRnJhbWVMb2FkZXJDbGllbnQ+IGZyYW1lTG9hZGVyQ2xpZW50KQogewotICAgIFJlZlB0cjxX
ZWJGcmFtZT4gZnJhbWUgPSBhZG9wdFJlZihuZXcgV2ViRnJhbWUoV1RGTW92ZShmcmFtZUxvYWRl
ckNsaWVudCkpKTsKKyAgICBhdXRvIGZyYW1lID0gYWRvcHRSZWYoKm5ldyBXZWJGcmFtZShXVEZN
b3ZlKGZyYW1lTG9hZGVyQ2xpZW50KSkpOwogCiAgICAgLy8gQWRkIGV4cGxpY3QgcmVmKCkgdGhh
dCB3aWxsIGJlIGJhbGFuY2VkIGluIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmcmFtZUxvYWRlckRl
c3Ryb3llZCgpLgogICAgIGZyYW1lLT5yZWYoKTsKIAotICAgIHJldHVybiBmcmFtZS5yZWxlYXNl
KCk7CisgICAgcmV0dXJuIFdURk1vdmUoZnJhbWUpOwogfQogCiBXZWJGcmFtZTo6V2ViRnJhbWUo
c3RkOjp1bmlxdWVfcHRyPFdlYkZyYW1lTG9hZGVyQ2xpZW50PiBmcmFtZUxvYWRlckNsaWVudCkK
QEAgLTgxOCw3ICs4MTgsNyBAQCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gV2ViRnJhbWU6
OmNyZWF0ZVNlbGVjdGlvblNuYXBzaG90KCkgY29uc3QKICAgICBpZiAoIXNuYXBzaG90KQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNoYXJl
ZFNuYXBzaG90ID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc25hcHNob3QtPmlu
dGVybmFsU2l6ZSgpLCBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpOworICAgIGF1dG8g
c2hhcmVkU25hcHNob3QgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzbmFwc2hv
dC0+aW50ZXJuYWxTaXplKCksIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CiAgICAg
aWYgKCFzaGFyZWRTbmFwc2hvdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTgyOSw3
ICs4MjksNyBAQCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gV2ViRnJhbWU6OmNyZWF0ZVNl
bGVjdGlvblNuYXBzaG90KCkgY29uc3QKICAgICBncmFwaGljc0NvbnRleHQtPnNjYWxlKEZsb2F0
U2l6ZShkZXZpY2VTY2FsZUZhY3RvciwgZGV2aWNlU2NhbGVGYWN0b3IpKTsKICAgICBncmFwaGlj
c0NvbnRleHQtPmRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihXVEZNb3ZlKHNuYXBzaG90KSwgRmxv
YXRQb2ludCgpKTsKIAotICAgIHJldHVybiBzaGFyZWRTbmFwc2hvdC5yZWxlYXNlKCk7CisgICAg
cmV0dXJuIFdURk1vdmUoc2hhcmVkU25hcHNob3QpOwogfQogICAgIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
aW5kZXggNjI1Mjg3ZWU3NWIyMTJiNDhjNTZmYjgyYmQwZThmN2EwYjdlMWYzMi4uNjg5NDM0MzVl
YTFhOWIyMDhkNmRmNGZiOWFjZDkyOWZkZGQ4ZjkwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNzU0LDggKzc1NCw4IEBAIFBhc3NSZWZQ
dHI8UGx1Z2luPiBXZWJQYWdlOjpjcmVhdGVQbHVnaW4oV2ViRnJhbWUqIGZyYW1lLCBIVE1MUGx1
Z0luRWxlbWVudCogcGx1CiAjaWYgRU5BQkxFKFBERktJVF9QTFVHSU4pCiAgICAgICAgIFN0cmlu
ZyBwYXRoID0gcGFyYW1ldGVycy51cmwucGF0aCgpOwogICAgICAgICBpZiAoc2hvdWxkVXNlUERG
UGx1Z2luKCkgJiYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzUERGT3JQb3N0U2NyaXB0TUlNRVR5cGUo
cGFyYW1ldGVycy5taW1lVHlwZSkgfHwgKHBhcmFtZXRlcnMubWltZVR5cGUuaXNFbXB0eSgpICYm
IChwYXRoLmVuZHNXaXRoKCIucGRmIiwgZmFsc2UpIHx8IHBhdGguZW5kc1dpdGgoIi5wcyIsIGZh
bHNlKSkpKSkgewotICAgICAgICAgICAgUmVmUHRyPFBERlBsdWdpbj4gcGRmUGx1Z2luID0gUERG
UGx1Z2luOjpjcmVhdGUoZnJhbWUpOwotICAgICAgICAgICAgcmV0dXJuIHBkZlBsdWdpbi5yZWxl
YXNlKCk7CisgICAgICAgICAgICBhdXRvIHBkZlBsdWdpbiA9IFBERlBsdWdpbjo6Y3JlYXRlKGZy
YW1lKTsKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKHBkZlBsdWdpbik7CiAgICAgICAgIH0K
ICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTShmcmFtZSk7CkBAIC0xODcwLDcgKzE4NzAsNyBA
QCBQYXNzUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFwc2hvdEF0U2l6ZShjb25zdCBJbnRS
ZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJgogICAgIGZsb2F0IHZlcnRpY2FsU2NhbGVGYWN0b3Ig
PSBzdGF0aWNfY2FzdDxmbG9hdD4oYml0bWFwU2l6ZS5oZWlnaHQoKSkgLyByZWN0LmhlaWdodCgp
OwogICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc3RkOjptYXgoaG9yaXpvbnRhbFNjYWxlRmFjdG9y
LCB2ZXJ0aWNhbFNjYWxlRmFjdG9yKTsKIAotICAgIFJlZlB0cjxXZWJJbWFnZT4gc25hcHNob3Qg
PSBXZWJJbWFnZTo6Y3JlYXRlKGJpdG1hcFNpemUsIHNuYXBzaG90T3B0aW9uc1RvSW1hZ2VPcHRp
b25zKG9wdGlvbnMpKTsKKyAgICBhdXRvIHNuYXBzaG90ID0gV2ViSW1hZ2U6OmNyZWF0ZShiaXRt
YXBTaXplLCBzbmFwc2hvdE9wdGlvbnNUb0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7CiAgICAgaWYg
KCFzbmFwc2hvdC0+Yml0bWFwKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0xODc4
LDcgKzE4NzgsNyBAQCBQYXNzUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFwc2hvdEF0U2l6
ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJgogCiAgICAgaWYgKG9wdGlvbnMg
JiBTbmFwc2hvdE9wdGlvbnNQcmludGluZykgewogICAgICAgICBQcmludENvbnRleHQ6OnNwb29s
QWxsUGFnZXNXaXRoQm91bmRhcmllcygqY29yZUZyYW1lLCAqZ3JhcGhpY3NDb250ZXh0LCBzbmFw
c2hvdFJlY3Quc2l6ZSgpKTsKLSAgICAgICAgcmV0dXJuIHNuYXBzaG90LnJlbGVhc2UoKTsKKyAg
ICAgICAgcmV0dXJuIHNuYXBzaG90OwogICAgIH0KIAogICAgIENvbG9yIGRvY3VtZW50QmFja2dy
b3VuZENvbG9yID0gZnJhbWVWaWV3LT5kb2N1bWVudEJhY2tncm91bmRDb2xvcigpOwpAQCAtMTkx
MCw3ICsxOTEwLDcgQEAgUGFzc1JlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNob3RBdFNp
emUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYKICAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LT5zdHJva2VSZWN0KHNlbGVjdGlvblJlY3RhbmdsZSwgMSk7CiAgICAgfQogICAgIAot
ICAgIHJldHVybiBzbmFwc2hvdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHNuYXBzaG90OwogfQog
CiBQYXNzUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFwc2hvdE5vZGUoV2ViQ29yZTo6Tm9k
ZSYgbm9kZSwgU25hcHNob3RPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIG1heGltdW1QaXhlbENv
dW50KQpAQCAtMTkzOSw3ICsxOTM5LDcgQEAgUGFzc1JlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6
c25hcHNob3ROb2RlKFdlYkNvcmU6Ok5vZGUmIG5vZGUsIFNuYXBzaG90T3B0aW9ucwogICAgICAg
ICBzbmFwc2hvdFNpemUgPSBJbnRTaXplKHNuYXBzaG90U2l6ZS53aWR0aCgpICogc2NhbGVGYWN0
b3IsIG1heGltdW1IZWlnaHQpOwogICAgIH0KIAotICAgIFJlZlB0cjxXZWJJbWFnZT4gc25hcHNo
b3QgPSBXZWJJbWFnZTo6Y3JlYXRlKHNuYXBzaG90U2l6ZSwgc25hcHNob3RPcHRpb25zVG9JbWFn
ZU9wdGlvbnMob3B0aW9ucykpOworICAgIGF1dG8gc25hcHNob3QgPSBXZWJJbWFnZTo6Y3JlYXRl
KHNuYXBzaG90U2l6ZSwgc25hcHNob3RPcHRpb25zVG9JbWFnZU9wdGlvbnMob3B0aW9ucykpOwog
ICAgIGlmICghc25hcHNob3QtPmJpdG1hcCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApA
QCAtMTk2Myw3ICsxOTYzLDcgQEAgUGFzc1JlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNo
b3ROb2RlKFdlYkNvcmU6Ok5vZGUmIG5vZGUsIFNuYXBzaG90T3B0aW9ucwogICAgIGZyYW1lVmll
dy0+c2V0QmFzZUJhY2tncm91bmRDb2xvcihzYXZlZEJhY2tncm91bmRDb2xvcik7CiAgICAgZnJh
bWVWaWV3LT5zZXROb2RlVG9EcmF3KG51bGxwdHIpOwogCi0gICAgcmV0dXJuIHNuYXBzaG90LnJl
bGVhc2UoKTsKKyAgICByZXR1cm4gc25hcHNob3Q7CiB9CiAKIHZvaWQgV2ViUGFnZTo6cGFnZURp
ZFNjcm9sbCgpCkBAIC0zNDE5LDcgKzM0MTksNyBAQCB2b2lkIFdlYlBhZ2U6OmRyYWdFbmRlZChX
ZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYgog
CiB2b2lkIFdlYlBhZ2U6OndpbGxQZXJmb3JtTG9hZERyYWdEZXN0aW5hdGlvbkFjdGlvbigpCiB7
Ci0gICAgbV9zYW5kYm94RXh0ZW5zaW9uVHJhY2tlci53aWxsUGVyZm9ybUxvYWREcmFnRGVzdGlu
YXRpb25BY3Rpb24obV9wZW5kaW5nRHJvcFNhbmRib3hFeHRlbnNpb24ucmVsZWFzZSgpKTsKKyAg
ICBtX3NhbmRib3hFeHRlbnNpb25UcmFja2VyLndpbGxQZXJmb3JtTG9hZERyYWdEZXN0aW5hdGlv
bkFjdGlvbihXVEZNb3ZlKG1fcGVuZGluZ0Ryb3BTYW5kYm94RXh0ZW5zaW9uKSk7CiB9CiAKIHZv
aWQgV2ViUGFnZTo6bWF5UGVyZm9ybVVwbG9hZERyYWdEZXN0aW5hdGlvbkFjdGlvbigpCkBAIC0z
OTcyLDcgKzM5NzIsNyBAQCB2b2lkIFdlYlBhZ2U6OlNhbmRib3hFeHRlbnNpb25UcmFja2VyOjpk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZChXZWJGcmFtZSogZnJhbWUpCiAKICAgICBBU1NFUlQoIW1f
cHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uKTsKIAotICAgIG1fcHJvdmlzaW9uYWxTYW5kYm94
RXh0ZW5zaW9uID0gbV9wZW5kaW5nUHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uLnJlbGVhc2Uo
KTsKKyAgICBtX3Byb3Zpc2lvbmFsU2FuZGJveEV4dGVuc2lvbiA9IFdURk1vdmUobV9wZW5kaW5n
UHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uKTsKICAgICBpZiAoIW1fcHJvdmlzaW9uYWxTYW5k
Ym94RXh0ZW5zaW9uKQogICAgICAgICByZXR1cm47CiAKQEAgLTM5ODksNyArMzk4OSw3IEBAIHZv
aWQgV2ViUGFnZTo6U2FuZGJveEV4dGVuc2lvblRyYWNrZXI6OmRpZENvbW1pdFByb3Zpc2lvbmFs
TG9hZChXZWJGcmFtZSogZnJhbWUpCiAgICAgaWYgKG1fY29tbWl0dGVkU2FuZGJveEV4dGVuc2lv
bikKICAgICAgICAgbV9jb21taXR0ZWRTYW5kYm94RXh0ZW5zaW9uLT5yZXZva2UoKTsKIAotICAg
IG1fY29tbWl0dGVkU2FuZGJveEV4dGVuc2lvbiA9IG1fcHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5z
aW9uLnJlbGVhc2UoKTsKKyAgICBtX2NvbW1pdHRlZFNhbmRib3hFeHRlbnNpb24gPSBXVEZNb3Zl
KG1fcHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uKTsKIAogICAgIC8vIFdlIGNhbiBhbHNvIGhh
dmUgYSBub24tbnVsbCBtX3BlbmRpbmdQcm92aXNpb25hbFNhbmRib3hFeHRlbnNpb24gaWYgYSBu
ZXcgbG9hZCBpcyBiZWluZyBzdGFydGVkLgogICAgIC8vIFRoaXMgZXh0ZW5zaW9uIGlzIG5vdCBj
bGVhcmVkLCBiZWNhdXNlIGl0IGRvZXMgbm90IHBlcnRhaW4gdG8gdGhlIGZhaWxlZCBsb2FkLCBh
bmQgd2lsbCBiZSBuZWVkZWQuCkBAIC00MTQ4LDcgKzQxNDgsNyBAQCB2b2lkIFdlYlBhZ2U6OmRy
YXdSZWN0VG9JbWFnZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5m
bywgY29ucwogICAgICAgICBBU1NFUlQoY29yZUZyYW1lLT5kb2N1bWVudCgpLT5wcmludGluZygp
KTsKICNlbmRpZgogCi0gICAgICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNo
YXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGltYWdlU2l6ZSwgU2hhcmVhYmxlQml0bWFw
OjpTdXBwb3J0c0FscGhhKTsKKyAgICAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZVNoYXJlYWJsZShpbWFnZVNpemUsIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBo
YSk7CiAgICAgICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGlj
c0NvbnRleHQoKTsKIAogICAgICAgICBmbG9hdCBwcmludGluZ1NjYWxlID0gc3RhdGljX2Nhc3Q8
ZmxvYXQ+KGltYWdlU2l6ZS53aWR0aCgpKSAvIHJlY3Qud2lkdGgoKTsKQEAgLTQxNjYsNyArNDE2
Niw3IEBAIHZvaWQgV2ViUGFnZTo6ZHJhd1JlY3RUb0ltYWdlKHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBjb25zCiAgICAgICAgICAgICBtX3ByaW50Q29udGV4
dC0+c3Bvb2xSZWN0KCpncmFwaGljc0NvbnRleHQsIHJlY3QpOwogICAgICAgICB9CiAKLSAgICAg
ICAgaW1hZ2UgPSBXZWJJbWFnZTo6Y3JlYXRlKGJpdG1hcC5yZWxlYXNlKCkpOworICAgICAgICBp
bWFnZSA9IFdlYkltYWdlOjpjcmVhdGUoV1RGTW92ZShiaXRtYXApKTsKICAgICB9CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VH
cm91cFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
R3JvdXBQcm94eS5jcHAKaW5kZXggZjlhODYzMDhmNThjOTk3MGM2NGRjNGU3MmU3NGE5NjIwNGFl
OWFkYy4uYzZmYjcyMTk2NDRhZDZkNDVlZjkzNmQ1ZGVmYmJmNzk0Y2ViMWE0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJv
eHkuY3BwCkBAIC0zNywxMiArMzcsMTIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIFBhc3NSZWZQ
dHI8V2ViUGFnZUdyb3VwUHJveHk+IFdlYlBhZ2VHcm91cFByb3h5OjpjcmVhdGUoY29uc3QgV2Vi
UGFnZUdyb3VwRGF0YSYgZGF0YSkKIHsKLSAgICBSZWZQdHI8V2ViUGFnZUdyb3VwUHJveHk+IHBh
Z2VHcm91cCA9IGFkb3B0UmVmKG5ldyBXZWJQYWdlR3JvdXBQcm94eShkYXRhKSk7Ci0gICAgCisg
ICAgYXV0byBwYWdlR3JvdXAgPSBhZG9wdFJlZigqbmV3IFdlYlBhZ2VHcm91cFByb3h5KGRhdGEp
KTsKKwogICAgIGlmIChwYWdlR3JvdXAtPmlzVmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUoKSAmJiBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5pbmplY3RlZEJ1bmRsZSgpKQotICAgICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5pbmplY3RlZEJ1bmRsZSgpLT5kaWRJbml0aWFsaXplUGFnZUdyb3Vw
KHBhZ2VHcm91cC5nZXQoKSk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmluamVj
dGVkQnVuZGxlKCktPmRpZEluaXRpYWxpemVQYWdlR3JvdXAocGFnZUdyb3VwLnB0cigpKTsKIAot
ICAgIHJldHVybiBwYWdlR3JvdXAucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKHBhZ2VH
cm91cCk7CiB9CiAKIFdlYlBhZ2VHcm91cFByb3h5OjpXZWJQYWdlR3JvdXBQcm94eShjb25zdCBX
ZWJQYWdlR3JvdXBEYXRhJiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1t
CmluZGV4IDZhODZmMTcxYzJiMjA2Y2EyNjAzMTJlYWQ0OGRjYzMxOGZiMTQzYWYuLjU4MTVjZmU2
MTBmZGQ0NmMwNDA1ZGViZDQ0YmFjOGEwZTE4MzkxNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FBbmlt
YXRpb25SZW1vdGUubW0KQEAgLTI5NCw3ICsyOTQsNyBAQCBib29sIFBsYXRmb3JtQ0FBbmltYXRp
b25SZW1vdGU6OlByb3BlcnRpZXM6OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2Rl
cgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0g
ICAgICAgICAgICBwcm9wZXJ0aWVzLnRpbWluZ0Z1bmN0aW9ucy51bmNoZWNrZWRBcHBlbmQodGlt
aW5nRnVuY3Rpb24ucmVsZWFzZSgpKTsKKyAgICAgICAgICAgIHByb3BlcnRpZXMudGltaW5nRnVu
Y3Rpb25zLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKHRpbWluZ0Z1bmN0aW9uKSk7CiAgICAgICAg
IH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcAppbmRleCAyMTllODNjMTE0
MDc5YTUwZmJjYjA0ZDYxMTE3N2E4YWY3Zjc4ZGM4Li4yNDc2ODI1MzI3ZTY0Y2UxOWI4MzA5OGE0
ZDllOTk4NWVkNDgzODU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCkBAIC01Niw3
ICs1Niw3IEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyUmVtb3RlPiBQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGU6OmNyZWF0ZShMYXllclR5cGUgbGF5ZXJUCiAKICAgICBjb250ZXh0LmxheWVyV2Fz
Q3JlYXRlZCgqbGF5ZXIsIGxheWVyVHlwZSk7CiAKLSAgICByZXR1cm4gbGF5ZXIucmVsZWFzZSgp
OworICAgIHJldHVybiBXVEZNb3ZlKGxheWVyKTsKIH0KIAogUGFzc1JlZlB0cjxQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGU+IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6Y3JlYXRlKFBsYXRmb3JtTGF5ZXIg
KnBsYXRmb3JtTGF5ZXIsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIsIFJlbW90ZUxheWVy
VHJlZUNvbnRleHQmIGNvbnRleHQpCkBAIC02NiwxMSArNjYsMTEgQEAgUGFzc1JlZlB0cjxQbGF0
Zm9ybUNBTGF5ZXJSZW1vdGU+IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6Y3JlYXRlKFBsYXRmb3Jt
TGF5ZXIgKnAKIAogUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+IFBsYXRmb3JtQ0FM
YXllclJlbW90ZTo6Y3JlYXRlKGNvbnN0IFBsYXRmb3JtQ0FMYXllclJlbW90ZSYgb3RoZXIsIFdl
YkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRl
eHQmIGNvbnRleHQpCiB7Ci0gICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllclJlbW90ZT4gbGF5ZXIg
PSBhZG9wdFJlZihuZXcgUGxhdGZvcm1DQUxheWVyUmVtb3RlKG90aGVyLCBvd25lciwgY29udGV4
dCkpOworICAgIGF1dG8gbGF5ZXIgPSBhZG9wdFJlZigqbmV3IFBsYXRmb3JtQ0FMYXllclJlbW90
ZShvdGhlciwgb3duZXIsIGNvbnRleHQpKTsKIAotICAgIGNvbnRleHQubGF5ZXJXYXNDcmVhdGVk
KCpsYXllciwgb3RoZXIubGF5ZXJUeXBlKCkpOworICAgIGNvbnRleHQubGF5ZXJXYXNDcmVhdGVk
KGxheWVyLmdldCgpLCBvdGhlci5sYXllclR5cGUoKSk7CiAKLSAgICByZXR1cm4gbGF5ZXIucmVs
ZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKGxheWVyKTsKIH0KIAogUGxhdGZvcm1DQUxheWVy
UmVtb3RlOjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUoTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZv
cm1DQUxheWVyQ2xpZW50KiBvd25lciwgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYgY29udGV4dCkK
QEAgLTk1LDEyICs5NSwxMiBAQCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OlBsYXRmb3JtQ0FMYXll
clJlbW90ZShjb25zdCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUmIG90aGVyLAogCiBQYXNzUmVmUHRy
PFBsYXRmb3JtQ0FMYXllcj4gUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjbG9uZShQbGF0Zm9ybUNB
TGF5ZXJDbGllbnQqIG93bmVyKSBjb25zdAogewotICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGU+IGNsb25lID0gUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjcmVhdGUoKnRoaXMsIG93bmVy
LCAqbV9jb250ZXh0KTsKKyAgICBhdXRvIGNsb25lID0gUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpj
cmVhdGUoKnRoaXMsIG93bmVyLCAqbV9jb250ZXh0KTsKIAogICAgIHVwZGF0ZUNsb25lZExheWVy
UHJvcGVydGllcygqY2xvbmUpOwogCiAgICAgY2xvbmUtPnNldENsb25lZExheWVyKHRoaXMpOwot
ICAgIHJldHVybiBjbG9uZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURk1vdmUoY2xvbmUpOwog
fQogCiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6On5QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNB
TGF5ZXJSZW1vdGVDdXN0b20ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbQppbmRleCAxNTQyYTZiZmI0MTY5YzMx
YWU5ZjhiZTYxZjQ5MmI0ZTc2NjQyYmM3Li41N2IzY2MxMTEyMjQ5ZjcwODY5MGI1MzVjNjk0MTk2
YjU0NGQzNGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbQpAQCAt
NDgsMTAgKzQ4LDEwIEBAIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHBsYXRmb3JtQ0FMYXllclBv
aW50ZXIgPSBAIldLUGxhdGZvcm1DQUxheWVyIjsKIAogUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGU+IFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6Y3JlYXRlKFBsYXRmb3JtTGF5
ZXIgKnBsYXRmb3JtTGF5ZXIsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIsIFJlbW90ZUxh
eWVyVHJlZUNvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllclJl
bW90ZT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tKFBs
YXRmb3JtQ0FMYXllckNvY29hOjpsYXllclR5cGVGb3JQbGF0Zm9ybUxheWVyKHBsYXRmb3JtTGF5
ZXIpLCBwbGF0Zm9ybUxheWVyLCBvd25lciwgY29udGV4dCkpOwotICAgIGNvbnRleHQubGF5ZXJX
YXNDcmVhdGVkKCpsYXllciwgbGF5ZXItPmxheWVyVHlwZSgpKTsKKyAgICBhdXRvIGxheWVyID0g
YWRvcHRSZWYoKm5ldyBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20oUGxhdGZvcm1DQUxheWVy
Q29jb2E6OmxheWVyVHlwZUZvclBsYXRmb3JtTGF5ZXIocGxhdGZvcm1MYXllciksIHBsYXRmb3Jt
TGF5ZXIsIG93bmVyLCBjb250ZXh0KSk7CisgICAgY29udGV4dC5sYXllcldhc0NyZWF0ZWQobGF5
ZXIuZ2V0KCksIGxheWVyLT5sYXllclR5cGUoKSk7CiAKLSAgICByZXR1cm4gbGF5ZXIucmVsZWFz
ZSgpOworICAgIHJldHVybiBXVEZNb3ZlKGxheWVyKTsKIH0KIAogUGxhdGZvcm1DQUxheWVyUmVt
b3RlQ3VzdG9tOjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20oTGF5ZXJUeXBlIGxheWVyVHlw
ZSwgUGxhdGZvcm1MYXllciAqIGN1c3RvbUxheWVyLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93
bmVyLCBSZW1vdGVMYXllclRyZWVDb250ZXh0JiBjb250ZXh0KQpAQCAtMTI3LDEzICsxMjcsMTMg
QEAgUGFzc1JlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI+IFBsYXRmb3JtQ0FMYXllclJl
bW90ZUN1c3RvbTo6Y2xvbmUoUGxhdGZvcm0KICAgICAgICAgY29weUNvbnRlbnRzID0gZmFsc2U7
CiAgICAgfQogCi0gICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllclJlbW90ZT4gY2xvbmUgPSBhZG9w
dFJlZihuZXcgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tKGxheWVyVHlwZSgpLCBjbG9uZWRM
YXllci5nZXQoKSwgb3duZXIsICpjb250ZXh0KCkpKTsKLSAgICBjb250ZXh0KCktPmxheWVyV2Fz
Q3JlYXRlZCgqY2xvbmUsIGNsb25lLT5sYXllclR5cGUoKSk7CisgICAgYXV0byBjbG9uZSA9IGFk
b3B0UmVmKCpuZXcgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tKGxheWVyVHlwZSgpLCBjbG9u
ZWRMYXllci5nZXQoKSwgb3duZXIsICpjb250ZXh0KCkpKTsKKyAgICBjb250ZXh0KCktPmxheWVy
V2FzQ3JlYXRlZChjbG9uZS5nZXQoKSwgY2xvbmUtPmxheWVyVHlwZSgpKTsKIAotICAgIHVwZGF0
ZUNsb25lZExheWVyUHJvcGVydGllcygqY2xvbmUsIGNvcHlDb250ZW50cyk7CisgICAgdXBkYXRl
Q2xvbmVkTGF5ZXJQcm9wZXJ0aWVzKGNsb25lLmdldCgpLCBjb3B5Q29udGVudHMpOwogCiAgICAg
Y2xvbmUtPnNldENsb25lZExheWVyKHRoaXMpOwotICAgIHJldHVybiBjbG9uZS5yZWxlYXNlKCk7
CisgICAgcmV0dXJuIFdURk1vdmUoY2xvbmUpOwogfQogCiBDRlR5cGVSZWYgUGxhdGZvcm1DQUxh
eWVyUmVtb3RlQ3VzdG9tOjpjb250ZW50cygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1t
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYS5tbQppbmRleCBmZmU4Y2NmNDgyMmYzYWU2Nzk3Mzg0ZDU0MzQ3MWM0ODYzOTM4
NjNmLi45NmNlNzM3ZjEyYzMzNGQ5YTUzMmU1ZjFmZTlhMDczOTg5YjA4YjIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KQEAgLTExMSw5ICsxMTEsOSBAQCBHcmFwaGlj
c0xheWVyRmFjdG9yeSogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmdyYXBoaWNzTGF5ZXJG
YWN0b3J5KCkKIAogUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9uaXRvcj4gUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWE6OmNyZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRvcihQbGF0Zm9ybURpc3BsYXlJ
RCBkaXNwbGF5SUQpCiB7Ci0gICAgUmVmUHRyPFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNo
TW9uaXRvcj4gbW9uaXRvciA9IFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcjo6
Y3JlYXRlKGRpc3BsYXlJRCwgKnRoaXMpOwotICAgIG1fZGlzcGxheVJlZnJlc2hNb25pdG9ycy5h
ZGQobW9uaXRvci5nZXQoKSk7Ci0gICAgcmV0dXJuIG1vbml0b3IucmVsZWFzZSgpOworICAgIGF1
dG8gbW9uaXRvciA9IFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcjo6Y3JlYXRl
KGRpc3BsYXlJRCwgKnRoaXMpOworICAgIG1fZGlzcGxheVJlZnJlc2hNb25pdG9ycy5hZGQobW9u
aXRvci5wdHIoKSk7CisgICAgcmV0dXJuIFdURk1vdmUobW9uaXRvcik7CiB9CiAKIHZvaWQgUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OndpbGxEZXN0cm95RGlzcGxheVJlZnJlc2hNb25pdG9y
KERpc3BsYXlSZWZyZXNoTW9uaXRvciogbW9uaXRvcikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2NWUwZWUyMTE2NjRhMzhmZDczM2JjNmY3OGJk
MjFjYzU0ZjZlMTVlLi4wMDViZmQ4NWRmOGI4NjlhYjRhMjJmYWQ1MzdjZWQyMDg5YjIxYWE3IDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjcgQEAKKzIwMTYtMDYtMjAgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgor
CisgICAgICAgIFJlbW92ZSBSZWZQdHI6OnJlbGVhc2UoKSBhbmQgY2hhbmdlIGNhbGxzIHNpdGVz
IHRvIHVzZSBXVEZNb3ZlKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1ODM2OQorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisg
ICAgICAgIFJlZlB0cjo6cmVsZWFzZSgpIHJlbGVhc2VzIGl0cyBtYW5hZ2VkIHBvaW50ZXIgYXdr
d2FyZGx5LiBJdCdzIG1vcmUKKyAgICAgICAgZGlyZWN0IGFuZCBjbGVhcmVyIHRvIHVzZSBXVEZN
b3ZlIHRvIHRyYW5zZmVyIG93bmVyc2hpcCBvZiB0aGUgbWFuYWdlZAorICAgICAgICBwb2ludGVy
LgorCisgICAgICAgIEFzIHBhcnQgb2YgdGhpcyBjbGVhbnVwLCBhbHNvIGNoYW5nZSBhIGxvdCBv
ZiBleHBsaWNpdCBkYXRhIHR5cGVzIHRvCisgICAgICAgICdhdXRvJy4KKworICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL21hYy9QaXhlbER1bXBTdXBwb3J0TWFjLm1tOgorICAgICAgICAoY3JlYXRl
Qml0bWFwQ29udGV4dEZyb21XZWJWaWV3KToKKyAgICAgICAgKGNyZWF0ZVBhZ2VkQml0bWFwQ29u
dGV4dCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW06Cisg
ICAgICAgIChUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbik6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaENvdW50ZWRTZXQuY3BwOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
SGFzaE1hcC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxNi0wNi0x
NiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHJvbGxpbmcgb3V0IHIyMDIwMDIgYW5kIHIyMDIxMTEuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvUGl4ZWxEdW1wU3VwcG9ydE1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9QaXhlbER1bXBTdXBwb3J0TWFjLm1tCmluZGV4IGUzMzM0ZWZlNTMyOTBjM2RkZGM1
ZjVhZWE1NDg4NzFhNzZkZmFiZjEuLjlmOTk2ZDMyYzEwYmFhODk3NThjMjhiMTg4YzI4MDg0MTA5
YmYyMTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9QaXhlbER1bXBTdXBw
b3J0TWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9QaXhlbER1bXBTdXBwb3J0
TWFjLm1tCkBAIC0xMjAsNyArMTIwLDcgQEAgUGFzc1JlZlB0cjxCaXRtYXBDb250ZXh0PiBjcmVh
dGVCaXRtYXBDb250ZXh0RnJvbVdlYlZpZXcoYm9vbCBvbnNjcmVlbiwgYm9vbCBpbmMKICAgICBz
aXplX3QgcGl4ZWxzSGlnaCA9IHN0YXRpY19jYXN0PHNpemVfdD4od2ViVmlld1NpemUuaGVpZ2h0
ICogZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgIHNpemVfdCByb3dCeXRlcyA9IDA7CiAgICAgdm9p
ZCogYnVmZmVyID0gbnVsbHB0cjsKLSAgICBSZWZQdHI8Qml0bWFwQ29udGV4dD4gYml0bWFwQ29u
dGV4dCA9IGNyZWF0ZUJpdG1hcENvbnRleHQocGl4ZWxzV2lkZSwgcGl4ZWxzSGlnaCwgcm93Qnl0
ZXMsIGJ1ZmZlcik7CisgICAgYXV0byBiaXRtYXBDb250ZXh0ID0gY3JlYXRlQml0bWFwQ29udGV4
dChwaXhlbHNXaWRlLCBwaXhlbHNIaWdoLCByb3dCeXRlcywgYnVmZmVyKTsKICAgICBpZiAoIWJp
dG1hcENvbnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIENHQ29udGV4dFJlZiBj
b250ZXh0ID0gYml0bWFwQ29udGV4dC0+Y2dDb250ZXh0KCk7CkBAIC0xOTQsNyArMTk0LDcgQEAg
UGFzc1JlZlB0cjxCaXRtYXBDb250ZXh0PiBjcmVhdGVCaXRtYXBDb250ZXh0RnJvbVdlYlZpZXco
Ym9vbCBvbnNjcmVlbiwgYm9vbCBpbmMKICAgICAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShj
b250ZXh0KTsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIGJpdG1hcENvbnRleHQucmVsZWFzZSgp
OworICAgIHJldHVybiBiaXRtYXBDb250ZXh0OwogfQogCiBQYXNzUmVmUHRyPEJpdG1hcENvbnRl
eHQ+IGNyZWF0ZVBhZ2VkQml0bWFwQ29udGV4dCgpCkBAIC0yMDcsMTAgKzIwNywxMCBAQCBQYXNz
UmVmUHRyPEJpdG1hcENvbnRleHQ+IGNyZWF0ZVBhZ2VkQml0bWFwQ29udGV4dCgpCiAKICAgICBp
bnQgdG90YWxIZWlnaHQgPSBudW1iZXJPZlBhZ2VzICogKHBhZ2VIZWlnaHRJblBpeGVscyArIDEp
IC0gMTsKIAotICAgIFJlZlB0cjxCaXRtYXBDb250ZXh0PiBiaXRtYXBDb250ZXh0ID0gY3JlYXRl
Qml0bWFwQ29udGV4dChwYWdlV2lkdGhJblBpeGVscywgdG90YWxIZWlnaHQsIHJvd0J5dGVzLCBi
dWZmZXIpOworICAgIGF1dG8gYml0bWFwQ29udGV4dCA9IGNyZWF0ZUJpdG1hcENvbnRleHQocGFn
ZVdpZHRoSW5QaXhlbHMsIHRvdGFsSGVpZ2h0LCByb3dCeXRlcywgYnVmZmVyKTsKICAgICBDR0Nv
bnRleHRSZWYgY29udGV4dCA9IGJpdG1hcENvbnRleHQtPmNnQ29udGV4dCgpOwogICAgIENHQ29u
dGV4dFRyYW5zbGF0ZUNUTShjb250ZXh0LCAwLCB0b3RhbEhlaWdodCk7CiAgICAgQ0dDb250ZXh0
U2NhbGVDVE0oY29udGV4dCwgMSwgLTEpOwogICAgIFttYWluRnJhbWUgcHJpbnRUb0NHQ29udGV4
dDpjb250ZXh0IHBhZ2VXaWR0aDpwYWdlV2lkdGhJblBpeGVscyBwYWdlSGVpZ2h0OnBhZ2VIZWln
aHRJblBpeGVsc107Ci0gICAgcmV0dXJuIGJpdG1hcENvbnRleHQucmVsZWFzZSgpOworICAgIHJl
dHVybiBiaXRtYXBDb250ZXh0OwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL1Rlc3RSdW5uZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5l
ck1hYy5tbQppbmRleCBlNGY1MjQ4Mjg5M2FmNDI3Y2VkMTk2OWY3MWYzODE2M2YyOThkMTdhLi40
NDVmNDQ5NDlmOTkzZmIyMDZhMjEwYjE0MjY2Y2E1MmYzNmNhOTYxIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQpAQCAtNDI3LDggKzQyNyw4IEBAIHZvaWQgVGVz
dFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3Vi
bGUgbG9uZ2l0dWRlLCBkCiAgICAgICAgIC8vIFRlc3QgdGhlIGV4cG9zZWQgQVBJLgogICAgICAg
ICBwb3NpdGlvbiA9IFtbV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiBhbGxvY10gaW5pdFdpdGhUaW1l
c3RhbXA6Y3VycmVudFRpbWUoKSBsYXRpdHVkZTpsYXRpdHVkZSBsb25naXR1ZGU6bG9uZ2l0dWRl
IGFjY3VyYWN5OmFjY3VyYWN5XTsKICAgICB9IGVsc2UgewotICAgICAgICBSZWZQdHI8V2ViQ29y
ZTo6R2VvbG9jYXRpb25Qb3NpdGlvbj4gY29yZUdlb2xvY2F0aW9uUG9zaXRpb24gPSBXZWJDb3Jl
OjpHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUoY3VycmVudFRpbWUoKSwgbGF0aXR1ZGUsIGxv
bmdpdHVkZSwgYWNjdXJhY3ksIHByb3ZpZGVzQWx0aXR1ZGUsIGFsdGl0dWRlLCBwcm92aWRlc0Fs
dGl0dWRlQWNjdXJhY3ksIGFsdGl0dWRlQWNjdXJhY3ksIHByb3ZpZGVzSGVhZGluZywgaGVhZGlu
ZywgcHJvdmlkZXNTcGVlZCwgc3BlZWQpOwotICAgICAgICBwb3NpdGlvbiA9IFtbV2ViR2VvbG9j
YXRpb25Qb3NpdGlvbiBhbGxvY10gaW5pdFdpdGhHZW9sb2NhdGlvblBvc2l0aW9uOihjb3JlR2Vv
bG9jYXRpb25Qb3NpdGlvbi5yZWxlYXNlKCkpXTsKKyAgICAgICAgYXV0byBjb3JlR2VvbG9jYXRp
b25Qb3NpdGlvbiA9IFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZShjdXJyZW50
VGltZSgpLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSwgcHJvdmlkZXNBbHRpdHVkZSwg
YWx0aXR1ZGUsIHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwgYWx0aXR1ZGVBY2N1cmFjeSwgcHJv
dmlkZXNIZWFkaW5nLCBoZWFkaW5nLCBwcm92aWRlc1NwZWVkLCBzcGVlZCk7CisgICAgICAgIHBv
c2l0aW9uID0gW1tXZWJHZW9sb2NhdGlvblBvc2l0aW9uIGFsbG9jXSBpbml0V2l0aEdlb2xvY2F0
aW9uUG9zaXRpb246KFdURk1vdmUoY29yZUdlb2xvY2F0aW9uUG9zaXRpb24pKV07CiAgICAgfQog
ICAgIFtbTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIgc2hhcmVkXSBzZXRQb3NpdGlvbjpwb3NpdGlv
bl07CiAgICAgW3Bvc2l0aW9uIHJlbGVhc2VdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvSGFzaENvdW50ZWRTZXQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvSGFzaENvdW50ZWRTZXQuY3BwCmluZGV4IDRjMWFmZDEwNWJmMWY3MDIzMDczZjY2
MmMyNmZhYjg1Y2I4Mzg1ZjMuLjZhN2JiMTliNTUzOTgyYjMzNTM5MGVmY2JmNzNjNDdiOWFkZmE5
NTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hDb3VudGVk
U2V0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoQ291bnRlZFNl
dC5jcHAKQEAgLTM3MCw3ICszNzAsNyBAQCBURVNUKFdURl9IYXNoQ291bnRlZFNldCwgUmVmUHRy
S2V5X0FkZFVzaW5nUmVsZWFzZSkKICAgICAKICAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsK
ICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwdHIoJmEpOwotICAgIGhhc2hDb3VudGVkU2V0LmFkZChw
dHIucmVsZWFzZSgpKTsKKyAgICBoYXNoQ291bnRlZFNldC5hZGQoV1RGTW92ZShwdHIpKTsKICAg
ICAKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiB9
CkBAIC00MzYsNyArNDM2LDcgQEAgVEVTVChXVEZfSGFzaENvdW50ZWRTZXQsIFJlZlB0cktleV9B
ZGRVc2luZ1JlbGVhc2VLZXlBbHJlYWR5UHJlc2VudCkKICAgICAKICAgICB7CiAgICAgICAgIFJl
ZlB0cjxSZWZMb2dnZXI+IHB0cjIoJmEpOwotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IGhhc2hD
b3VudGVkU2V0LmFkZChwdHIyLnJlbGVhc2UoKSk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0g
aGFzaENvdW50ZWRTZXQuYWRkKFdURk1vdmUocHRyMikpOwogICAgICAgICBFWFBFQ1RfRkFMU0Uo
YWRkUmVzdWx0LmlzTmV3RW50cnkpOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvSGFzaE1hcC5jcHAKaW5kZXggMmYwNjYyM2M0YTQ4YWZiNzQzMDExNzlkYzI2Yjg2
NTQ0ZjZmZmQ4NS4uMDhhNDE0ZGJlMDMxMTEzNzhkYTI5ZWVmNDE3YWY4ZTE2ODAzMDgzNSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAKQEAgLTMwOSw3ICszMDks
NyBAQCBURVNUKFdURl9IYXNoTWFwLCBSZWZQdHJLZXlfQWRkVXNpbmdSZWxlYXNlKQogCiAgICAg
RGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CiAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcHRyKCZhKTsK
LSAgICBtYXAuYWRkKHB0ci5yZWxlYXNlKCksIDApOworICAgIG1hcC5hZGQoV1RGTW92ZShwdHIp
LCAwKTsKIAogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigp
KTsKIH0KQEAgLTM3Myw3ICszNzMsNyBAQCBURVNUKFdURl9IYXNoTWFwLCBSZWZQdHJLZXlfQWRk
VXNpbmdSZWxlYXNlS2V5QWxyZWFkeVByZXNlbnQpCiAKICAgICB7CiAgICAgICAgIFJlZlB0cjxS
ZWZMb2dnZXI+IHB0cjIoJmEpOwotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1hcC5hZGQocHRy
Mi5yZWxlYXNlKCksIDApOworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1hcC5hZGQoV1RGTW92
ZShwdHIyKSwgMCk7CiAgICAgICAgIEVYUEVDVF9GQUxTRShhZGRSZXN1bHQuaXNOZXdFbnRyeSk7
CiAgICAgfQogCkBAIC00MTksNyArNDE5LDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgUmVmUHRyS2V5
X1NldFVzaW5nUmVsZWFzZSkKIAogICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOwogICAgIFJl
ZlB0cjxSZWZMb2dnZXI+IHB0cigmYSk7Ci0gICAgbWFwLnNldChwdHIucmVsZWFzZSgpLCAwKTsK
KyAgICBtYXAuc2V0KFdURk1vdmUocHRyKSwgMCk7CiAKICAgICBFWFBFQ1RfU1RSRVEoInJlZihh
KSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiB9CkBAIC00ODEsNyArNDgxLDcgQEAgVEVTVChX
VEZfSGFzaE1hcCwgUmVmUHRyS2V5X1NldFVzaW5nUmVsZWFzZUtleUFscmVhZHlQcmVzZW50KQog
CiAgICAgewogICAgICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwdHIyKCZhKTsKLSAgICAgICAgYXV0
byBhZGRSZXN1bHQgPSBtYXAuc2V0KHB0cjIucmVsZWFzZSgpLCAxKTsKKyAgICAgICAgYXV0byBh
ZGRSZXN1bHQgPSBtYXAuc2V0KFdURk1vdmUocHRyMiksIDEpOwogICAgICAgICBFWFBFQ1RfRkFM
U0UoYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogICAgICAgICBFWFBFQ1RfRVEoMSwgbWFwLmdldChw
dHIuZ2V0KCkpKTsKICAgICB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>