<?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>268804</bug_id>
          
          <creation_ts>2024-02-05 23:17:21 -0800</creation_ts>
          <short_desc>AX: Support site isolation for VoiceOver</short_desc>
          <delta_ts>2024-02-18 15:17:32 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="chris fleizach">cfleizach</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cdumez</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>jcraig</cc>
    
    <cc>samuel_white</cc>
    
    <cc>tyler_w</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2010914</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2024-02-05 23:17:21 -0800</bug_when>
    <thetext>Initial support site isolation for VoiceOver

&lt;rdar://problem/99665561&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2010921</commentid>
    <comment_count>1</comment_count>
      <attachid>469736</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2024-02-06 00:20:28 -0800</bug_when>
    <thetext>Created attachment 469736
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2010999</commentid>
    <comment_count>2</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2024-02-06 07:34:10 -0800</bug_when>
    <thetext>(In reply to chris fleizach from comment #1)
&gt; Created attachment 469736 [details]
&gt; Patch

diff --git a/Source/WebCore/accessibility/AXCoreObject.h b/Source/WebCore/accessibility/AXCoreObject.h
index 09fce90d3ecc..5d0f352eef6b 100644
--- a/Source/WebCore/accessibility/AXCoreObject.h
+++ b/Source/WebCore/accessibility/AXCoreObject.h
@@ -205,6 +205,7 @@ enum class AccessibilityRole {
     ProgressIndicator,
     RadioButton,
     RadioGroup,
+    RemoteFrame,
     RowHeader,
     Row,
     RowGroup,
@@ -442,6 +443,8 @@ ALWAYS_INLINE String accessibilityRoleToString(AccessibilityRole role)
         return &quot;RadioButton&quot;_s;
     case AccessibilityRole::RadioGroup:
         return &quot;RadioGroup&quot;_s;
+    case AccessibilityRole::RemoteFrame:
+        return &quot;RemoteFrame&quot;_s;
     case AccessibilityRole::RowHeader:
         return &quot;RowHeader&quot;_s;
     case AccessibilityRole::Row:
@@ -818,6 +821,7 @@ public:
     virtual bool isAccessibilityARIAGridRowInstance() const = 0;
     virtual bool isAccessibilityARIAGridCellInstance() const = 0;
     virtual bool isAXIsolatedObjectInstance() const = 0;
+    virtual bool isAccessibilityRemoteFrame() const = 0;

AG: can we use the AX prefix instead of the whole accessibility word for file and class names already inside the accessibility subproject? E.g., isAXIsolatedObjectInstance().

     bool isHeading() const { return roleValue() == AccessibilityRole::Heading; }
     virtual bool isLink() const = 0;
@@ -922,6 +926,12 @@ public:
     bool isTreeGrid() const { return roleValue() == AccessibilityRole::TreeGrid; }
     bool isTreeItem() const { return roleValue() == AccessibilityRole::TreeItem; }
     bool isScrollbar() const { return roleValue() == AccessibilityRole::ScrollBar; }
+    bool isRemoteFrame() const { return roleValue() == AccessibilityRole::RemoteFrame; }
+#if PLATFORM(COCOA)
+    virtual RetainPtr&lt;id&gt; remoteFramePlatformElement() const = 0;
+#endif
+    virtual bool hasRemoteFrameChild() const = 0;
+
     bool isButton() const;
     virtual bool isMeter() const = 0;

@@ -1161,6 +1171,7 @@ public:
     // Viewport-relative means that when the page scrolls, the portion of the page in the viewport changes, and thus
     // any viewport-relative rects do too (since they are either closer to or farther from the viewport origin after the scroll).
     virtual FloatPoint screenRelativePosition() const = 0;
+    virtual IntPoint remoteFrameOffset() const = 0;

     virtual FloatRect convertFrameToSpace(const FloatRect&amp;, AccessibilityConversionSpace) const = 0;
 #if PLATFORM(COCOA)
diff --git a/Source/WebCore/accessibility/AXLogger.cpp b/Source/WebCore/accessibility/AXLogger.cpp
index 659d885e3559..a1ac4e3f70e2 100644
--- a/Source/WebCore/accessibility/AXLogger.cpp
+++ b/Source/WebCore/accessibility/AXLogger.cpp
@@ -873,6 +873,9 @@ void streamAXCoreObject(TextStream&amp; stream, const AXCoreObject&amp; object, const Op
     if (options &amp; AXStreamOptions::Role)
         stream.dumpProperty(&quot;role&quot;, object.roleValue());

+    if (object.renderer())
+        stream.dumpProperty(&quot;renderName&quot;, object.renderer()-&gt;renderName());
+
     if (options &amp; AXStreamOptions::ParentID) {
         auto* parent = object.parentObjectUnignored();
         stream.dumpProperty(&quot;parentID&quot;, parent ? parent-&gt;objectID() : AXID());
diff --git a/Source/WebCore/accessibility/AXObjectCache.cpp b/Source/WebCore/accessibility/AXObjectCache.cpp
index a8d8a18ccfdc..b42a225a07d9 100644
--- a/Source/WebCore/accessibility/AXObjectCache.cpp
+++ b/Source/WebCore/accessibility/AXObjectCache.cpp
@@ -50,6 +50,7 @@
 #include &quot;AccessibilityMenuListOption.h&quot;
 #include &quot;AccessibilityMenuListPopup.h&quot;
 #include &quot;AccessibilityProgressIndicator.h&quot;
+#include &quot;AccessibilityRemoteFrame.h&quot;
 #include &quot;AccessibilityRenderObject.h&quot;
 #include &quot;AccessibilitySVGElement.h&quot;
 #include &quot;AccessibilitySVGRoot.h&quot;
@@ -1043,7 +1044,10 @@ AccessibilityObject* AXObjectCache::create(AccessibilityRole role)
         break;
     case AccessibilityRole::TableHeaderContainer:
         obj = AccessibilityTableHeaderContainer::create();
-        break;
+        break;
+    case AccessibilityRole::RemoteFrame:
+        obj = AccessibilityRemoteFrame::create();
+        break;
     case AccessibilityRole::SliderThumb:
         obj = AccessibilitySliderThumb::create();
         break;
@@ -1339,6 +1343,11 @@ void AXObjectCache::handleRecomputeCellSlots(AccessibilityTable&amp; axTable)
 #endif
 }

+void AXObjectCache::onRemoteFrameInitialized(AccessibilityRemoteFrame&amp; remoteFrame)
+{
+    updateIsolatedTree(remoteFrame, AXPropertyName::RemoteFramePlatformElement);

AG: missing
#if ENABLE(ACCESSIBILITY_ISOLATED_TREE)

+}
+
 #if ENABLE(ACCESSIBILITY_ISOLATED_TREE)
 void AXObjectCache::handleRowspanChanged(AccessibilityTableCell&amp; axCell)
 {
diff --git a/Source/WebCore/accessibility/AXObjectCache.h b/Source/WebCore/accessibility/AXObjectCache.h
index 6970eb7e3339..a635ec0682e3 100644
--- a/Source/WebCore/accessibility/AXObjectCache.h
+++ b/Source/WebCore/accessibility/AXObjectCache.h
@@ -47,6 +47,7 @@ class TextStream;

 namespace WebCore {

+class AccessibilityRemoteFrame;
 class AccessibilityTable;
 class AccessibilityTableCell;
 class Document;
@@ -246,6 +247,7 @@ public:
     void deferNodeAddedOrRemoved(Node*);
     void handleScrolledToAnchor(const Node* anchorNode);
     void onScrollbarUpdate(ScrollView*);
+    void onRemoteFrameInitialized(AccessibilityRemoteFrame&amp;);

     bool isRetrievingCurrentModalNode() { return m_isRetrievingCurrentModalNode; }
     Node* modalNode();
diff --git a/Source/WebCore/accessibility/AccessibilityObject.cpp b/Source/WebCore/accessibility/AccessibilityObject.cpp
index de9ac2598217..ebc314210e7d 100644
--- a/Source/WebCore/accessibility/AccessibilityObject.cpp
+++ b/Source/WebCore/accessibility/AccessibilityObject.cpp
@@ -544,7 +544,10 @@ FloatRect AccessibilityObject::convertFrameToSpace(const FloatRect&amp; frameRect, A

 FloatRect AccessibilityObject::relativeFrame() const
 {
-    return convertFrameToSpace(elementRect(), AccessibilityConversionSpace::Page);
+    auto rect = elementRect();
+    auto remoteOffset = remoteFrameOffset();
+    rect.move(remoteOffset.x(), remoteOffset.y());
+    return convertFrameToSpace(rect, AccessibilityConversionSpace::Page);
 }

 AccessibilityObject* AccessibilityObject::nextSiblingUnignored(int limit) const
@@ -2092,6 +2095,17 @@ RemoteAXObjectRef AccessibilityObject::remoteParentObject() const
     }
     return nullptr;
 }
+
+IntPoint AccessibilityObject::remoteFrameOffset() const
+{
+    if (auto* document = this-&gt;document()) {
+        if (auto* frame = document-&gt;frame())
+            return frame-&gt;loader().client().accessibilityRemoteFrameOffset();
+    }
+
+    return { };
+}
+
 #endif

 Document* AccessibilityObject::document() const
diff --git a/Source/WebCore/accessibility/AccessibilityObject.h b/Source/WebCore/accessibility/AccessibilityObject.h
index 0af77439c355..fba1e0515a19 100644
--- a/Source/WebCore/accessibility/AccessibilityObject.h
+++ b/Source/WebCore/accessibility/AccessibilityObject.h
@@ -102,6 +102,7 @@ public:
     virtual bool isAccessibilityNodeObject() const { return false; }
     bool isAccessibilityRenderObject() const override { return false; }
     virtual bool isAccessibilityScrollbar() const { return false; }
+    bool isAccessibilityRemoteFrame() const override { return false; }
     virtual bool isAccessibilityScrollViewInstance() const { return false; }
     virtual bool isAccessibilitySVGRoot() const { return false; }
     bool isAccessibilityTableInstance() const override { return false; }
@@ -463,8 +464,12 @@ public:

 #if PLATFORM(COCOA)
     RemoteAXObjectRef remoteParentObject() const override;
+    IntPoint remoteFrameOffset() const override;
     FloatRect convertRectToPlatformSpace(const FloatRect&amp;, AccessibilityConversionSpace) const override;
+    RetainPtr&lt;id&gt; remoteFramePlatformElement() const override { return nil; }
 #endif
+    bool hasRemoteFrameChild() const override { return false; }
+
     Page* page() const override;
     Document* document() const override;
     LocalFrameView* documentFrameView() const override;
diff --git a/Source/WebCore/accessibility/AccessibilityRemoteFrame.cpp b/Source/WebCore/accessibility/AccessibilityRemoteFrame.cpp
new file mode 100644
index 000000000000..ce92ab2c66ec
--- /dev/null
+++ b/Source/WebCore/accessibility/AccessibilityRemoteFrame.cpp

AG: AXRemoteFrame.cpp

@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2024 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS&apos;&apos;
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;AccessibilityRemoteFrame.h&quot;
+
+namespace WebCore {
+
+Ref&lt;AccessibilityRemoteFrame&gt; AccessibilityRemoteFrame::create()
+{
+    return adoptRef(*new AccessibilityRemoteFrame);
+}
+
+AccessibilityRemoteFrame::AccessibilityRemoteFrame()
+:

AG: indentation.

+#if PLATFORM(COCOA)
+    m_remoteFramePlatformElement(nullptr)
+    ,
+#endif
+    m_processIdentifier(0)
+{
+}
+
+LayoutRect AccessibilityRemoteFrame::elementRect() const
+{
+    if (auto* parent = parentObject())
+        return parent-&gt;elementRect();
+
+    return { };
+}

AG: more succinct:
    auto* parent = parentObject();
    return parent ? parent-&gt;elementRect() : { };
+
+} // namespace WebCore
diff --git a/Source/WebCore/accessibility/AccessibilityRemoteFrame.h b/Source/WebCore/accessibility/AccessibilityRemoteFrame.h
new file mode 100644
index 000000000000..187b61f32201
--- /dev/null
+++ b/Source/WebCore/accessibility/AccessibilityRemoteFrame.h

AG: AXRemoteFrame.h

@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2023 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS&apos;&apos;
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include &quot;AccessibilityMockObject.h&quot;
+
+namespace WebCore {
+
+class RemoteFrame;
+
+class AccessibilityRemoteFrame final : public AccessibilityMockObject {

AG: AXRemoteFrame.

+public:
+    static Ref&lt;AccessibilityRemoteFrame&gt; create();
+
+    void initializePlatformElementWithRemoteToken(const DataSegment&amp;, int);
+
+    RefPtr&lt;DataSegment&gt; generateRemoteToken() const;
+#if PLATFORM(COCOA)
+    RetainPtr&lt;id&gt; remoteFramePlatformElement() const final { return m_remoteFramePlatformElement; }
+    int processIdentifier() const { return m_processIdentifier; }

AG: shouldn&apos;t return pid_t ?

+#endif
+
+private:
+    explicit AccessibilityRemoteFrame();
+    virtual ~AccessibilityRemoteFrame() = default;
+
+    AccessibilityRole determineAccessibilityRole() final { return AccessibilityRole::RemoteFrame; }
+    bool computeAccessibilityIsIgnored() const override { return false; }
+    bool isAccessibilityRemoteFrame() const override { return true; }

AG: isAXRemoteFrameInstance ?

+    LayoutRect elementRect() const override;
+
+#if PLATFORM(COCOA)
+    RetainPtr&lt;id&gt; m_remoteFramePlatformElement;
+#endif
+    pid_t m_processIdentifier;

AG: doesn&apos;t it need to be COCOA only?

+};
+
+} // namespace WebCore
+
+SPECIALIZE_TYPE_TRAITS_ACCESSIBILITY(AccessibilityRemoteFrame, isAccessibilityRemoteFrame())
diff --git a/Source/WebCore/accessibility/AccessibilityRenderObject.cpp b/Source/WebCore/accessibility/AccessibilityRenderObject.cpp
index bb68607d9b7c..2deb5d057f98 100644
--- a/Source/WebCore/accessibility/AccessibilityRenderObject.cpp
+++ b/Source/WebCore/accessibility/AccessibilityRenderObject.cpp
@@ -2395,7 +2395,7 @@ void AccessibilityRenderObject::addAttachmentChildren()

     // LocalFrameView&apos;s need to be inserted into the AX hierarchy when encountered.
     Widget* widget = widgetForAttachmentView();
-    if (!widget || !widget-&gt;isLocalFrameView())
+    if (!widget || !(widget-&gt;isLocalFrameView() || widget-&gt;isRemoteFrameView()))
         return;

     addChild(axObjectCache()-&gt;getOrCreate(widget));
@@ -2550,7 +2550,7 @@ void AccessibilityRenderObject::addChildren()
         auto owners = object.owners();
         if (owners.size() &amp;&amp; !owners.contains(this))
             return;
-
+
         addChild(&amp;object);
     };

diff --git a/Source/WebCore/accessibility/AccessibilityScrollView.cpp b/Source/WebCore/accessibility/AccessibilityScrollView.cpp
index 6bc841ebb067..24d20058777c 100644
--- a/Source/WebCore/accessibility/AccessibilityScrollView.cpp
+++ b/Source/WebCore/accessibility/AccessibilityScrollView.cpp
@@ -27,10 +27,12 @@
 #include &quot;AccessibilityScrollView.h&quot;

 #include &quot;AXObjectCache.h&quot;
+#include &quot;AccessibilityRemoteFrame.h&quot;
 #include &quot;AccessibilityScrollbar.h&quot;
 #include &quot;HTMLFrameOwnerElement.h&quot;
 #include &quot;LocalFrame.h&quot;
 #include &quot;LocalFrameView.h&quot;
+#include &quot;RemoteFrameView.h&quot;
 #include &quot;RenderElement.h&quot;
 #include &quot;Widget.h&quot;

@@ -52,6 +54,14 @@ AccessibilityScrollView::~AccessibilityScrollView()
 void AccessibilityScrollView::detachRemoteParts(AccessibilityDetachmentType detachmentType)
 {
     AccessibilityObject::detachRemoteParts(detachmentType);
+
+    if (is&lt;RemoteFrameView&gt;(m_scrollView) &amp;&amp; m_remoteFrame &amp;&amp; (detachmentType == AccessibilityDetachmentType::ElementDestroyed || detachmentType == AccessibilityDetachmentType::CacheDestroyed)) {
+

AG: extra blank line.

+        auto&amp; remoteFrame = downcast&lt;RemoteFrameView&gt;(*m_scrollView).frame();

AG: instead of is&lt;RemoteFrameView&gt; and downcast&lt;RemoteFrameView&gt;, you want
        auto* remoteFrameView = dynamicDowncast&lt;RemoteFrameView&gt;(m_scrollView);

+        remoteFrame.unbindRemoteAccessibilityFrames(m_remoteFrame-&gt;processIdentifier());
+        m_remoteFrame = nullptr;
+    }
+
     m_scrollView = nullptr;
     m_frameOwnerElement = nullptr;
 }
@@ -177,8 +187,10 @@ AccessibilityScrollbar* AccessibilityScrollView::addChildScrollbar(Scrollbar* sc
 void AccessibilityScrollView::clearChildren()
 {
     AccessibilityObject::clearChildren();
+
     m_verticalScrollbar = nullptr;
     m_horizontalScrollbar = nullptr;
+
     m_childrenDirty = false;
 }

@@ -191,11 +203,42 @@ bool AccessibilityScrollView::computeAccessibilityIsIgnored() const
     return webArea-&gt;accessibilityIsIgnored();
 }

+void AccessibilityScrollView::addRemoteFrameChild()
+{
+    if (!is&lt;RemoteFrameView&gt;(m_scrollView))
+        return;
+    auto* cache = axObjectCache();

AG: CheckedPtr or WeakPtr ?

+    if (!cache)
+        return;
+
+    if (!m_remoteFrame) {
+        // Make the faux element that represents the remote transfer element for AX.
+        auto&amp; remoteFrame = downcast&lt;RemoteFrameView&gt;(*m_scrollView).frame();
+        m_remoteFrame = downcast&lt;AccessibilityRemoteFrame&gt;(cache-&gt;create(AccessibilityRole::RemoteFrame));
+        m_remoteFrame-&gt;setParent(this);
+
+        // Generate a new token and pass it back to the other remote frame so it can bind these objects together.
+        auto generatedToken = m_remoteFrame-&gt;generateRemoteToken();
+        remoteFrame.bindRemoteAccessibilityFrames(getpid(), *generatedToken, [this, &amp;remoteFrame, protectedAccessbilityRemoteFrame = RefPtr { m_remoteFrame }] (const DataSegment&amp; token, int processIdentifier) mutable {
+#if OS(DARWIN)
+            protectedAccessbilityRemoteFrame-&gt;initializePlatformElementWithRemoteToken(token, processIdentifier);
+#endif
+            // Update the remote side with the offset of this object so it can calculate frames correctly.
+            auto location = elementRect().location();
+            remoteFrame.updateRemoteFrameAccessibilityOffset(flooredIntPoint(location));
+        });
+    } else
+        m_remoteFrame-&gt;setParent(this);
+
+    addChild(m_remoteFrame.get());
+}
+
 void AccessibilityScrollView::addChildren()
 {
     ASSERT(!m_childrenInitialized);
     m_childrenInitialized = true;

+    addRemoteFrameChild();
     addChild(webAreaObject());
     updateScrollbars();
 }
@@ -203,7 +246,7 @@ void AccessibilityScrollView::addChildren()
 AccessibilityObject* AccessibilityScrollView::webAreaObject() const
 {
     auto* document = this-&gt;document();
-    if (!document || !document-&gt;hasLivingRenderTree())
+    if (!document || !document-&gt;hasLivingRenderTree() || m_remoteFrame)
         return nullptr;

     if (auto* cache = axObjectCache())
@@ -234,9 +277,15 @@ LayoutRect AccessibilityScrollView::elementRect() const

 Document* AccessibilityScrollView::document() const
 {
-    if (auto* frameView = dynamicDowncast&lt;LocalFrameView&gt;(m_scrollView.get())) {
+    if (auto* frameView = dynamicDowncast&lt;LocalFrameView&gt;(m_scrollView.get()))
         return frameView-&gt;frame().document();
+
+    // For the RemoteFrameView case, we need to return the document of our hosting parent so axObjectCache() resolves correctly.
+    if (auto* remoteFrameView = dynamicDowncast&lt;RemoteFrameView&gt;(m_scrollView.get())) {
+        if (auto* owner = remoteFrameView-&gt;frame().ownerElement())
+            return &amp;(owner-&gt;document());
     }
+
     return AccessibilityObject::document();
 }

@@ -253,16 +302,16 @@ LocalFrameView* AccessibilityScrollView::documentFrameView() const

 AccessibilityObject* AccessibilityScrollView::parentObject() const
 {
-    AXObjectCache* cache = axObjectCache();
-    if (!cache)
-        return nullptr;
-
     HTMLFrameOwnerElement* owner = m_frameOwnerElement.get();
     if (is&lt;LocalFrameView&gt;(m_scrollView))
         owner = downcast&lt;LocalFrameView&gt;(*m_scrollView).frame().ownerElement();
+    else if (is&lt;RemoteFrameView&gt;(m_scrollView))
+        owner = downcast&lt;RemoteFrameView&gt;(*m_scrollView).frame().ownerElement();

AG: better to avoid the is&lt;&gt; + downcast&lt;&gt; with a dynamicDowncast, the former is less efficient.

-    if (owner &amp;&amp; owner-&gt;renderer())
-        return cache-&gt;getOrCreate(owner);
+    if (AXObjectCache* cache = axObjectCache()) {

AG: CheckedPtr or WeakPtr ?

+        if (owner &amp;&amp; owner-&gt;renderer())
+            return cache-&gt;getOrCreate(owner);
+    }

     return nullptr;
 }
diff --git a/Source/WebCore/accessibility/AccessibilityScrollView.h b/Source/WebCore/accessibility/AccessibilityScrollView.h
index 557044671c7d..85f91a91f5ca 100644
--- a/Source/WebCore/accessibility/AccessibilityScrollView.h
+++ b/Source/WebCore/accessibility/AccessibilityScrollView.h
@@ -30,6 +30,7 @@

 namespace WebCore {

+class AccessibilityRemoteFrame;
 class AccessibilityScrollbar;
 class Scrollbar;
 class ScrollView;
@@ -54,7 +55,8 @@ private:
     bool computeAccessibilityIsIgnored() const override;
     bool isAccessibilityScrollViewInstance() const override { return true; }
     bool isEnabled() const override { return true; }
-
+    bool hasRemoteFrameChild() const override { return m_remoteFrame != nullptr; }

AG: shouldn&apos;t it be final? Remove != nullptr.

+
     bool isAttachment() const override;
     PlatformWidget platformWidget() const override;
     Widget* widgetForAttachmentView() const override { return currentScrollView(); }
@@ -69,6 +71,7 @@ private:
     void setFocused(bool) override;
     bool canSetFocusAttribute() const override;
     bool isFocused() const override;
+    void addRemoteFrameChild();

     Document* document() const override;
     LocalFrameView* documentFrameView() const override;
@@ -85,6 +88,7 @@ private:
     RefPtr&lt;AccessibilityObject&gt; m_horizontalScrollbar;
     RefPtr&lt;AccessibilityObject&gt; m_verticalScrollbar;
     bool m_childrenDirty;
+    RefPtr&lt;AccessibilityRemoteFrame&gt; m_remoteFrame;
 };

 } // namespace WebCore
diff --git a/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp b/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp
index 3f2031332ad1..4b9f3166e31e 100644
--- a/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp
+++ b/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp
@@ -375,6 +375,10 @@ void AXIsolatedObject::initializeProperties(const Ref&lt;AccessibilityObject&gt;&amp; axOb
 #endif

     setObjectProperty(AXPropertyName::InternalLinkElement, object.internalLinkElement());
+    setProperty(AXPropertyName::HasRemoteFrameChild, object.hasRemoteFrameChild());

AG: Can this be true for other than a ScrollView?

+    // Don&apos;t duplicate the remoteFrameOffset for every object. Just store in the WebArea.
+    if (object.isWebArea())
+        setProperty(AXPropertyName::RemoteFrameOffset, object.remoteFrameOffset());

     initializePlatformProperties(axObject);
 }
@@ -461,6 +465,7 @@ void AXIsolatedObject::setProperty(AXPropertyName propertyName, AXPropertyValueV
         [](OptionSet&lt;AXAncestorFlag&gt;&amp; typedValue) { return typedValue.isEmpty(); },
 #if PLATFORM(COCOA)
         [](RetainPtr&lt;NSAttributedString&gt;&amp; typedValue) { return !typedValue; },
+        [](RetainPtr&lt;id&gt;&amp; typedValue) { return !typedValue; },
 #endif
         [](InsideLink&amp; typedValue) { return typedValue == InsideLink(); },
         [](Vector&lt;Vector&lt;AXID&gt;&gt;&amp; typedValue) { return typedValue.isEmpty(); },
@@ -1203,6 +1208,19 @@ LayoutRect AXIsolatedObject::elementRect() const
     });
 }

+IntPoint AXIsolatedObject::remoteFrameOffset() const
+{
+    IntPoint remoteFrameOffset = { };

AG: Don&apos;t need the = { }

+    for (auto *isolatedObject = this; isolatedObject != nullptr; isolatedObject = isolatedObject-&gt;parentObject()) {
+        if (auto point = optionalAttributeValue&lt;IntPoint&gt;(AXPropertyName::RemoteFrameOffset)) {
+            remoteFrameOffset = *point;
+            break;
+        }
+    }

AG: do you mean isolatedObject-&gt;optionalAttributeValue ... ? This is only set for the WebArea, so why we need to get it for every ancestor? Wouldn&apos;t it be better to get the WebArea first?&apos;

+
+    return remoteFrameOffset;
+}
+
 FloatPoint AXIsolatedObject::screenRelativePosition() const
 {
     if (auto point = optionalAttributeValue&lt;FloatPoint&gt;(AXPropertyName::ScreenRelativePosition))
@@ -1226,28 +1244,32 @@ FloatPoint AXIsolatedObject::screenRelativePosition() const

 FloatRect AXIsolatedObject::relativeFrame() const
 {
+    auto remoteOffset = remoteFrameOffset();
+    FloatRect relativeFrame = { };

AG: don&apos;t need the = { }

+
     if (auto cachedRelativeFrame = optionalAttributeValue&lt;IntRect&gt;(AXPropertyName::RelativeFrame)) {
         // We should not have cached a relative frame for elements that get their geometry from their children.
         ASSERT(!m_getsGeometryFromChildren);
-        return *cachedRelativeFrame;
-    }
-
-    if (m_getsGeometryFromChildren) {
+        relativeFrame = *cachedRelativeFrame;
+    } else if (m_getsGeometryFromChildren) {
         auto frame = enclosingIntRect(relativeFrameFromChildren());
         if (!frame.isEmpty())
-            return frame;
+            relativeFrame = frame;
         // Either we had no children, or our children had empty frames. The right thing to do would be to return
         // a rect at the position of the nearest render tree ancestor with some made-up size (AccessibilityNodeObject::boundingBoxRect does this).
         // However, we don&apos;t have access to the render tree in this context (only the AX isolated tree, which is too sparse for this purpose), so
         // until we cache the necessary information let&apos;s go to the main-thread.
     } else if (roleValue() == AccessibilityRole::Column || roleValue() == AccessibilityRole::TableHeaderContainer)
-        return exposedTableAncestor() ? relativeFrameFromChildren() : FloatRect();
+        relativeFrame = exposedTableAncestor() ? relativeFrameFromChildren() : FloatRect();

-    return Accessibility::retrieveValueFromMainThread&lt;FloatRect&gt;([this] () -&gt; FloatRect {
+    relativeFrame = Accessibility::retrieveValueFromMainThread&lt;FloatRect&gt;([this] () -&gt; FloatRect {
         if (auto* axObject = associatedAXObject())
             return axObject-&gt;relativeFrame();
         return { };
     });
+
+    relativeFrame.moveBy(FloatPoint(remoteOffset));
+    return relativeFrame;
 }

 FloatRect AXIsolatedObject::relativeFrameFromChildren() const
diff --git a/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h b/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h
index dafff1f45d04..c689f563ec73 100644
--- a/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h
+++ b/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h
@@ -214,6 +214,7 @@ private:
     bool isFileUploadButton() const final { return boolAttributeValue(AXPropertyName::IsFileUploadButton); }
     bool isMeter() const final { return boolAttributeValue(AXPropertyName::IsMeter); };
     FloatPoint screenRelativePosition() const final;
+    IntPoint remoteFrameOffset() const final;
     FloatRect relativeFrame() const final;
 #if PLATFORM(MAC)
     FloatRect primaryScreenRect() const final;
@@ -454,7 +455,7 @@ private:
     bool isAccessibilityARIAGridInstance() const final { return false; }
     bool isAccessibilityARIAGridRowInstance() const final { return false; }
     bool isAccessibilityARIAGridCellInstance() const final { return false; }
-
+    bool isAccessibilityRemoteFrame() const final { return false; }
     bool isNativeTextControl() const final;
     bool isListBoxOption() const final;
     bool isMockObject() const final;
@@ -534,7 +535,9 @@ private:
     String nameAttribute() const final { return stringAttributeValue(AXPropertyName::NameAttribute); }
 #if PLATFORM(COCOA)
     bool hasApplePDFAnnotationAttribute() const final { return boolAttributeValue(AXPropertyName::HasApplePDFAnnotationAttribute); }
+    RetainPtr&lt;id&gt; remoteFramePlatformElement() const final;
 #endif
+    bool hasRemoteFrameChild() const override { return boolAttributeValue(AXPropertyName::HasRemoteFrameChild); }

 #if PLATFORM(COCOA) &amp;&amp; ENABLE(MODEL_ELEMENT)
     Vector&lt;RetainPtr&lt;id&gt;&gt; modelElementChildren() final;
diff --git a/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp b/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp
index 2ca457181608..a2821de8dcdc 100644
--- a/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp
+++ b/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp
@@ -660,6 +660,12 @@ void AXIsolatedTree::updateNodeProperties(AXCoreObject&amp; axObject, const AXProper
         case AXPropertyName::PosInSet:
             propertyMap.set(AXPropertyName::PosInSet, axObject.posInSet());
             break;
+        case AXPropertyName::RemoteFramePlatformElement:
+            propertyMap.set(AXPropertyName::RemoteFramePlatformElement, axObject.remoteFramePlatformElement());
+            break;
+        case AXPropertyName::HasRemoteFrameChild:
+            propertyMap.set(AXPropertyName::HasRemoteFrameChild, axObject.hasRemoteFrameChild());
+            break;
         case AXPropertyName::RoleDescription:
             propertyMap.set(AXPropertyName::RoleDescription, axObject.roleDescription().isolatedCopy());
             break;
diff --git a/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h b/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h
index 51a04c72e0cd..8fa0ba3e007d 100644
--- a/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h
+++ b/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h
@@ -104,6 +104,7 @@ enum class AXPropertyName : uint16_t {
     HasHighlighting,
     HasItalicFont,
     HasPlainText,
+    HasRemoteFrameChild,
     HasUnderline,
     HeaderContainer,
     HeadingLevel,
@@ -199,6 +200,8 @@ enum class AXPropertyName : uint16_t {
     PreventKeyboardDOMEventDispatch,
     RadioButtonGroup,
     RelativeFrame,
+    RemoteFrameOffset,
+    RemoteFramePlatformElement,
     RoleValue,
     RolePlatformString,
     RoleDescription,
@@ -254,6 +257,7 @@ using AXPropertyNameSet = HashSet&lt;AXPropertyName, IntHash&lt;AXPropertyName&gt;, WTF::
 using AXPropertyValueVariant = std::variant&lt;std::nullptr_t, AXID, String, bool, int, unsigned, double, float, uint64_t, AccessibilityButtonState, Color, URL, LayoutRect, FloatPoint, FloatRect, IntPoint, IntRect, std::pair&lt;unsigned, unsigned&gt;, Vector&lt;AccessibilityText&gt;, Vector&lt;AXID&gt;, Vector&lt;std::pair&lt;AXID, AXID&gt;&gt;, Vector&lt;String&gt;, Path, OptionSet&lt;AXAncestorFlag&gt;, InsideLink, Vector&lt;Vector&lt;AXID&gt;&gt;, CharacterRange, std::pair&lt;AXID, CharacterRange&gt;
 #if PLATFORM(COCOA)
     , RetainPtr&lt;NSAttributedString&gt;
+    , RetainPtr&lt;id&gt;
 #endif
 #if ENABLE(AX_THREAD_TEXT_APIS)
     , AXTextRuns
diff --git a/Source/WebCore/accessibility/isolatedtree/mac/AXIsolatedObjectMac.mm b/Source/WebCore/accessibility/isolatedtree/mac/AXIsolatedObjectMac.mm
index 2bd094845e2e..386b2a2872aa 100644
--- a/Source/WebCore/accessibility/isolatedtree/mac/AXIsolatedObjectMac.mm
+++ b/Source/WebCore/accessibility/isolatedtree/mac/AXIsolatedObjectMac.mm
@@ -63,6 +63,9 @@ void AXIsolatedObject::initializePlatformProperties(const Ref&lt;const Accessibilit
         }
     }

+    if (object-&gt;isRemoteFrame())
+        setProperty(AXPropertyName::RemoteFramePlatformElement, object-&gt;remoteFramePlatformElement());
+
     // Cache the StringValue only if it differs from the AttributedText.
     auto value = object-&gt;stringValue();
     if (!attributedText || value != String([attributedText string]))
@@ -177,6 +180,11 @@ unsigned AXIsolatedObject::textLength() const
     return 0;
 }

+RetainPtr&lt;id&gt; AXIsolatedObject::remoteFramePlatformElement() const
+{
+    return propertyValue&lt;RetainPtr&lt;id&gt;&gt;(AXPropertyName::RemoteFramePlatformElement);
+}
+
 RetainPtr&lt;NSAttributedString&gt; AXIsolatedObject::attributedStringForTextMarkerRange(AXTextMarkerRange&amp;&amp; markerRange, SpellCheck spellCheck) const
 {
     if (!markerRange)
diff --git a/Source/WebCore/accessibility/mac/AccessibilityObjectMac.mm b/Source/WebCore/accessibility/mac/AccessibilityObjectMac.mm
index ba2accd80d04..5d7fcf36429e 100644
--- a/Source/WebCore/accessibility/mac/AccessibilityObjectMac.mm
+++ b/Source/WebCore/accessibility/mac/AccessibilityObjectMac.mm
@@ -28,6 +28,7 @@

 #import &quot;AccessibilityLabel.h&quot;
 #import &quot;AccessibilityList.h&quot;
+#import &quot;AccessibilityRemoteFrame.h&quot;
 #import &quot;ColorCocoa.h&quot;
 #import &quot;CompositionHighlight.h&quot;
 #import &quot;CompositionUnderline.h&quot;
@@ -51,6 +52,7 @@
 #import &quot;WebAccessibilityObjectWrapperMac.h&quot;
 #import &quot;Widget.h&quot;

+#import &lt;pal/spi/cocoa/NSAccessibilitySPI.h&gt;
 #import &lt;pal/spi/mac/NSSpellCheckerSPI.h&gt;

 namespace WebCore {
@@ -749,6 +751,30 @@ RetainPtr&lt;NSAttributedString&gt; attributedStringCreate(Node* node, StringView text
     return result;
 }

+RefPtr&lt;DataSegment&gt; AccessibilityRemoteFrame::generateRemoteToken() const
+{
+#if PLATFORM(MAC)
+    // We use the parent&apos;s wrapper so that the remote frame acts as a pass through for the remote token bridge.
+    CFDataRef dataRef = (__bridge CFDataRef)[NSAccessibilityRemoteUIElement remoteTokenForLocalUIElement:parentObject()-&gt;wrapper()];
+    return DataSegment::create(dataRef);
+#else
+    // TDOO: Support iOS

AG: TODO -&gt; FIXME

+    return { }
+#endif
+}
+
+void AccessibilityRemoteFrame::initializePlatformElementWithRemoteToken(const DataSegment&amp; token, int processIdentifier)
+{
+#if PLATFORM(MAC)
+    m_processIdentifier = processIdentifier;
+    [wrapper() accessibilitySetPresenterProcessIdentifier:processIdentifier];
+    NSData *tokenData = [NSData dataWithBytes:token.data() length:token.size()];
+    m_remoteFramePlatformElement = adoptNS([[NSAccessibilityRemoteUIElement alloc] initWithRemoteToken:tokenData]);
+
+    axObjectCache()-&gt;onRemoteFrameInitialized(*this);
+#endif
+}
+
 namespace Accessibility {

 PlatformRoleMap createPlatformRoleMap()
@@ -891,6 +917,7 @@ PlatformRoleMap createPlatformRoleMap()
         { AccessibilityRole::Superscript, NSAccessibilityGroupRole },
         { AccessibilityRole::Model, NSAccessibilityGroupRole },
         { AccessibilityRole::Suggestion, NSAccessibilityGroupRole },
+        { AccessibilityRole::RemoteFrame, NSAccessibilityGroupRole },
     };
     PlatformRoleMap roleMap;
     for (auto&amp; role : roles)
diff --git a/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm b/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm
index 6357fa7c271b..e0755839244d 100644
--- a/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm
+++ b/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm
@@ -35,6 +35,7 @@
 #import &quot;AccessibilityARIAGridRow.h&quot;
 #import &quot;AccessibilityList.h&quot;
 #import &quot;AccessibilityListBox.h&quot;
+#import &quot;AccessibilityRemoteFrame.h&quot;
 #import &quot;AccessibilityRenderObject.h&quot;
 #import &quot;AccessibilityScrollView.h&quot;
 #import &quot;AccessibilitySpinButton.h&quot;
@@ -265,13 +266,13 @@ NSArray *makeNSArray(const WebCore::AXCoreObject::AccessibilityChildrenVector&amp; c
             return nil;

         auto wrapper = child-&gt;wrapper();
-
         // We want to return the attachment view instead of the object representing the attachment,
         // otherwise, we get palindrome errors in the AX hierarchy.
         if (child-&gt;isAttachment()) {
             if (id attachmentView = wrapper.attachmentView)
                 return attachmentView;
-        }
+        } else if (child-&gt;isRemoteFrame())
+            return child-&gt;remoteFramePlatformElement().get();

         return wrapper;
     }).autorelease();
diff --git a/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm b/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm
index 2f60b6204c49..bdab7c56ad98 100644
--- a/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm
+++ b/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm
@@ -40,6 +40,7 @@
 #import &quot;AccessibilityList.h&quot;
 #import &quot;AccessibilityListBox.h&quot;
 #import &quot;AccessibilityProgressIndicator.h&quot;
+#import &quot;AccessibilityRemoteFrame.h&quot;
 #import &quot;AccessibilityRenderObject.h&quot;
 #import &quot;AccessibilityScrollView.h&quot;
 #import &quot;AccessibilitySpinButton.h&quot;
@@ -479,6 +480,10 @@ using namespace WebCore;
 #define NSAccessibilityTextInputMarkedTextMarkerRangeAttribute @&quot;AXTextInputMarkedTextMarkerRange&quot;
 #endif

+#ifndef kAXConvertRelativeFrameParameterizedAttribute
+#define kAXConvertRelativeFrameParameterizedAttribute @&quot;AXConvertRelativeFrame&quot;
+#endif
+
 @implementation WebAccessibilityObjectWrapper

 - (void)detach
@@ -1366,9 +1371,15 @@ static void WebTransformCGPathToNSBezierPath(void* info, const CGPathElement *el

 - (NSString*)role
 {
+    auto* backingObject = self.axBackingObject;
+    if (!backingObject)
+        return nil;
+
 ALLOW_DEPRECATED_DECLARATIONS_BEGIN
-    if (self.axBackingObject-&gt;isAttachment())
+    if (backingObject-&gt;isAttachment())
         return [[self attachmentView] accessibilityAttributeValue:NSAccessibilityRoleAttribute];
+    if (backingObject-&gt;isRemoteFrame())
+        return [backingObject-&gt;remoteFramePlatformElement().get() accessibilityAttributeValue:NSAccessibilityRoleAttribute];
 ALLOW_DEPRECATED_DECLARATIONS_END

     NSString *string = self.axBackingObject-&gt;rolePlatformString();
@@ -1388,6 +1399,9 @@ ALLOW_DEPRECATED_DECLARATIONS_END
         return false;
 #endif

+    if (backingObject-&gt;isRemoteFrame())
+        return false;
+
     return [[self role] isEqual:NSAccessibilityGroupRole]
         &amp;&amp; backingObject-&gt;children().isEmpty()
         &amp;&amp; ![[self renderWidgetChildren] count];
@@ -1421,6 +1435,8 @@ ALLOW_DEPRECATED_DECLARATIONS_BEGIN
     // attachments have the AXImage role, but a different subrole
     if (backingObject-&gt;isAttachment())
         return [[self attachmentView] accessibilityAttributeValue:NSAccessibilityRoleDescriptionAttribute];
+    if (backingObject-&gt;isRemoteFrame())
+        return [backingObject-&gt;remoteFramePlatformElement().get() accessibilityAttributeValue:NSAccessibilityRoleDescriptionAttribute];
 ALLOW_DEPRECATED_DECLARATIONS_END

     String roleDescription = backingObject-&gt;roleDescription();
@@ -1473,6 +1489,27 @@ ALLOW_DEPRECATED_DECLARATIONS_END
     return axScrollView ? [axScrollView-&gt;platformWidget() window] : nil;
 }

+- (NSArray *)_transformSpecialChildrenCases:(RefPtr&lt;AXCoreObject&gt;)backingObject
+{
+#if ENABLE(MODEL_ELEMENT)
+    if (backingObject-&gt;isModel()) {
+        auto modelChildren = backingObject-&gt;modelElementChildren();
+        if (modelChildren.size()) {
+            return createNSArray(WTFMove(modelChildren), [] (auto&amp;&amp; child) -&gt; id {
+                return child.get();
+            }).autorelease();
+        }
+    }
+#endif
+
+    if (!self.childrenVectorSize) {
+        if (NSArray *children = [self renderWidgetChildren])
+            return children;
+    }
+
+    return nil;
+}
+
 // FIXME: split up this function in a better way.
 // suggestions: Use a hash table that maps attribute names to function calls,
 // or maybe pointers to member functions
@@ -1531,22 +1568,9 @@ ALLOW_DEPRECATED_IMPLEMENTATIONS_END
     }

     if ([attributeName isEqualToString:NSAccessibilityChildrenAttribute] || [attributeName isEqualToString:NSAccessibilityChildrenInNavigationOrderAttribute]) {
-#if ENABLE(MODEL_ELEMENT)
-        if (backingObject-&gt;isModel()) {
-            auto modelChildren = backingObject-&gt;modelElementChildren();
-            if (modelChildren.size()) {
-                return createNSArray(WTFMove(modelChildren), [] (auto&amp;&amp; child) -&gt; id {
-                    return child.get();
-                }).autorelease();
-            }
-        }
-#endif
-
-        const auto&amp; children = backingObject-&gt;children();
-        if (children.isEmpty()) {
-            if (NSArray *widgetChildren = [self renderWidgetChildren])
-                return widgetChildren;
-        }
+        NSArray *specialChildren = [self _transformSpecialChildrenCases:backingObject];
+        if (specialChildren.count)
+            return specialChildren;

         // The tree&apos;s (AXOutline) children are supposed to be its rows and columns.
         // The ARIA spec doesn&apos;t have columns, so we just need rows.
@@ -1713,16 +1737,14 @@ ALLOW_DEPRECATED_IMPLEMENTATIONS_END
     if ([attributeName isEqualToString: NSAccessibilityEnabledAttribute])
         return [NSNumber numberWithBool: backingObject-&gt;isEnabled()];

-    if ([attributeName isEqualToString: NSAccessibilitySizeAttribute]) {
-        auto size = backingObject-&gt;size();
-        return [NSValue valueWithSize:NSMakeSize(size.width(), size.height())];
-    }
+    if ([attributeName isEqualToString: NSAccessibilitySizeAttribute])

AG: extra space after :

+        return [NSValue valueWithSize:(CGSize)backingObject-&gt;size()];

     if ([attributeName isEqualToString:NSAccessibilityPrimaryScreenHeightAttribute])
         return @(backingObject-&gt;primaryScreenRect().height());

     if ([attributeName isEqualToString:NSAccessibilityPositionAttribute])
-        return @(CGPoint(backingObject-&gt;screenRelativePosition()));
+        return [NSValue valueWithPoint:(CGPoint)backingObject-&gt;screenRelativePosition()];

     if ([attributeName isEqualToString:NSAccessibilityPathAttribute])
         return [self path];
@@ -2237,6 +2259,10 @@ ALLOW_DEPRECATED_IMPLEMENTATIONS_END
         return range ? range.platformData().bridgingAutorelease() : nil;
     }

+    // VoiceOver property to ignore certain groups.
+    if ([attributeName isEqualToString:@&quot;AXAutoInteractable&quot;])
+        return @(backingObject-&gt;isRemoteFrame());
+
     // Used by LayoutTests only, not by AT clients.
     if (UNLIKELY([attributeName isEqualToString:@&quot;AXARIARole&quot;]))
         return backingObject-&gt;computedRoleString();
@@ -2330,7 +2356,8 @@ ALLOW_DEPRECATED_IMPLEMENTATIONS_END
         if (axObject-&gt;isAttachment()) {
             if (id attachmentView = [axObject-&gt;wrapper() attachmentView])
                 return attachmentView;
-        }
+        } else if (axObject-&gt;isRemoteFrame())
+            return axObject-&gt;remoteFramePlatformElement().get();

         // Only call out to the main-thread if this object has a backing widget to query.
         if (axObject-&gt;isWidget()) {
@@ -2507,6 +2534,10 @@ ALLOW_DEPRECATED_IMPLEMENTATIONS_END
     if (backingObject-&gt;isWebArea())
         return webAreaParamAttrs;

+    // The object that serves up the remote frame also is the one that does the frame conversion.
+    if (backingObject-&gt;hasRemoteFrameChild())
+        return [paramAttrs arrayByAddingObject:kAXConvertRelativeFrameParameterizedAttribute];
+
     return paramAttrs;
 }

@@ -3177,6 +3208,18 @@ ALLOW_DEPRECATED_IMPLEMENTATIONS_END
                     return widgetChildren;
                 criteria.resultsLimit -= [widgetChildren count];
             }
+        } else if (backingObject-&gt;isRemoteFrame()
+            &amp;&amp; criteria.searchKeys.contains(AccessibilitySearchKey::AnyType)
+            &amp;&amp; (!criteria.visibleOnly || backingObject-&gt;isVisible())) {
+            NSArray *remoteFrameChildren = [self accessibilityAttributeValue:NSAccessibilityChildrenAttribute];
+            ASSERT(remoteFrameChildren.count == 1);
+            if (remoteFrameChildren.count == 1) {
+                NSUInteger includedChildrenCount = std::min([remoteFrameChildren count], NSUInteger(criteria.resultsLimit));
+                widgetChildren = [remoteFrameChildren subarrayWithRange:NSMakeRange(0, includedChildrenCount)];
+                if ([widgetChildren count] &gt;= criteria.resultsLimit)
+                    return remoteFrameChildren;
+                criteria.resultsLimit -= [widgetChildren count];
+            }
         }

         AccessibilityObject::AccessibilityChildrenVector results;
@@ -3669,6 +3712,11 @@ ALLOW_DEPRECATED_IMPLEMENTATIONS_END
         }
     }

+    if ([attribute isEqualToString:kAXConvertRelativeFrameParameterizedAttribute]) {
+        auto convertedRect = backingObject-&gt;parentObject()-&gt;convertFrameToSpace(FloatRect(rect), AccessibilityConversionSpace::Page);
+        return [NSValue valueWithRect:convertedRect];
+    }
+
     // There are some parameters that super handles that are not explicitly returned by the list of the element&apos;s attributes.
     // In that case it must be passed to super.
     return [super accessibilityAttributeValue:attribute forParameter:parameter];
@@ -3722,8 +3770,10 @@ ALLOW_DEPRECATED_IMPLEMENTATIONS_END
         if (!child)
             continue;
         WebAccessibilityObjectWrapper *childWrapper = child-&gt;wrapper();
-        if (childWrapper == targetChild || (child-&gt;isAttachment() &amp;&amp; [childWrapper attachmentView] == targetChild))
+        if (childWrapper == targetChild || (child-&gt;isAttachment() &amp;&amp; [childWrapper attachmentView] == targetChild)
+            || (child-&gt;isRemoteFrame() &amp;&amp; child-&gt;remoteFramePlatformElement() == targetChild)) {
             return i;
+        }
     }
     return NSNotFound;
 }
@@ -3740,7 +3790,7 @@ ALLOW_DEPRECATED_DECLARATIONS_BEGIN
     if ([attribute isEqualToString:NSAccessibilityChildrenAttribute]) {
         // Tree items object returns a different set of children than those that are in children()
         // because an AXOutline (the mac role is becomes) has some odd stipulations.
-        if (backingObject-&gt;isTree() || backingObject-&gt;isTreeItem())
+        if (backingObject-&gt;isTree() || backingObject-&gt;isTreeItem() || backingObject-&gt;isRemoteFrame())
             return [[self accessibilityAttributeValue:NSAccessibilityChildrenAttribute] count];

         auto childrenSize = backingObject-&gt;children().size();
@@ -3776,16 +3826,7 @@ ALLOW_DEPRECATED_DECLARATIONS_END

     if ([attribute isEqualToString:NSAccessibilityChildrenAttribute]) {
         if (backingObject-&gt;children().isEmpty()) {
-            NSArray *children = nil;
-#if ENABLE(MODEL_ELEMENT)
-            if (backingObject-&gt;isModel()) {
-                children = createNSArray(backingObject-&gt;modelElementChildren(), [] (auto&amp;&amp; child) -&gt; id {
-                    return child.get();
-                }).autorelease();
-            } else
-#endif
-                children = [self renderWidgetChildren];
-
+            NSArray *children = [self _transformSpecialChildrenCases:backingObject];
             if (!children)
                 return nil;

@@ -3816,8 +3857,13 @@ ALLOW_DEPRECATED_DECLARATIONS_END

             // The attachment view should be returned, otherwise AX palindrome errors occur.
             id attachmentView = nil;
-            if ([wrapper isKindOfClass:[WebAccessibilityObjectWrapper class]] &amp;&amp; wrapper.axBackingObject &amp;&amp; wrapper.axBackingObject-&gt;isAttachment())
-                attachmentView = [wrapper attachmentView];
+            if ([wrapper isKindOfClass:[WebAccessibilityObjectWrapper class]] &amp;&amp; wrapper.axBackingObject) {
+                if (wrapper.axBackingObject-&gt;isAttachment())
+                    attachmentView = [wrapper attachmentView];
+                else if (wrapper.axBackingObject-&gt;isRemoteFrame())
+                    attachmentView = wrapper.axBackingObject-&gt;remoteFramePlatformElement().get();
+            }
+
             [subarray addObject:attachmentView ? attachmentView : wrapper];
         }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2011010</commentid>
    <comment_count>3</comment_count>
      <attachid>469736</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2024-02-06 08:24:41 -0800</bug_when>
    <thetext>Comment on attachment 469736
Patch

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

&gt; Source/WebCore/accessibility/AXCoreObject.h:1174
&gt; +    virtual IntPoint remoteFrameOffset() const = 0;

Could we add a comment explaining this function? What is the offset relative to?

&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:2106
&gt; +    if (auto* document = this-&gt;document()) {
&gt; +        if (auto* frame = document-&gt;frame())
&gt; +            return frame-&gt;loader().client().accessibilityRemoteFrameOffset();
&gt; +    }
&gt; +
&gt; +    return { };

This can be written a bit more simply:

auto* document = this-&gt;document();
auto* frame = document ? document-&gt;frame() : nullptr;
return frame ? frame-&gt;loader().client().accessibilityRemoteFrameOffset() : IntPoint();

&gt; Source/WebCore/accessibility/AccessibilityRemoteFrame.cpp:51
&gt; +    if (auto* parent = parentObject())
&gt; +        return parent-&gt;elementRect();
&gt; +
&gt; +    return { };

auto* parent = parentObject();
return parent ? parent-&gt;elementRect() : LayoutRect();

&gt; Source/WebCore/accessibility/AccessibilityRemoteFrame.h:53
&gt; +    bool computeAccessibilityIsIgnored() const override { return false; }
&gt; +    bool isAccessibilityRemoteFrame() const override { return true; }
&gt; +    LayoutRect elementRect() const override;

Can these be final?

&gt; Source/WebCore/accessibility/AccessibilityScrollView.cpp:309
&gt; +    else if (is&lt;RemoteFrameView&gt;(m_scrollView))
&gt; +        owner = downcast&lt;RemoteFrameView&gt;(*m_scrollView).frame().ownerElement();

Can use dynamicDowncast here:

else if (auto* remoteFrameView = dynamicDowncast&lt;RemoteFrameView&gt;(m_scrollView))
    owner = remoteFrameView-&gt;frame().ownerElement();

&gt; Source/WebCore/accessibility/AccessibilityScrollView.cpp:316
&gt; +    if (AXObjectCache* cache = axObjectCache()) {
&gt; +        if (owner &amp;&amp; owner-&gt;renderer())
&gt; +            return cache-&gt;getOrCreate(owner);
&gt; +    }
&gt;  
&gt;      return nullptr;

Can simplify this:

auto* cache = axObjectCache();
return cache ? cache-&gt;getOrCreate(owner-&gt;renderer()) : nullptr;

getOrCreate already bails early if the given renderer is nullptr, so this (existing before your patch) null check isn&apos;t necessary.

&gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp:1213
&gt; +    IntPoint remoteFrameOffset = { };

Can remove this line.

&gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp:1214
&gt; +    for (auto *isolatedObject = this; isolatedObject != nullptr; isolatedObject = isolatedObject-&gt;parentObject()) {

* is in the wrong spot for C++, don&apos;t need the != nullptr bit:

for (auto* isolatedObject = this; isolatedObject; isolatedObject = isolatedObject-&gt;parentObject())

&gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp:1217
&gt; +            remoteFrameOffset = *point;
&gt; +            break;

return *point;

&gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp:1221
&gt; +    return remoteFrameOffset;

return { };

&gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h:540
&gt; +    bool hasRemoteFrameChild() const override { return boolAttributeValue(AXPropertyName::HasRemoteFrameChild); }

Can this be final?

&gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h:260
&gt; +    , RetainPtr&lt;id&gt;

When you add a property here, you need to update the bool isDefaultValue = ... statement in AXIsolatedObject::setProperty to avoid wasting memory storing nil values.

&gt; Source/WebCore/accessibility/isolatedtree/mac/AXIsolatedObjectMac.mm:67
&gt; +    if (object-&gt;isRemoteFrame())
&gt; +        setProperty(AXPropertyName::RemoteFramePlatformElement, object-&gt;remoteFramePlatformElement());

Don&apos;t need to check object-&gt;isRemoteFrame(). setProperty is smart enough to not store nil values.

&gt; Source/WebCore/accessibility/mac/AccessibilityObjectMac.mm:761
&gt; +    // TDOO: Support iOS

Typo on TODO

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:1374
&gt; +    auto* backingObject = self.axBackingObject;

This should be a RefPtr instead of auto* to ensure the backingObject is not deleted from under us in the course of this method.

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:1385
&gt;      NSString *string = self.axBackingObject-&gt;rolePlatformString();

Can we change this self.axBackingObject to use the backingObject you added in this patch, so that everything in this method operates off a consistent object?

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:3716
&gt; +        auto convertedRect = backingObject-&gt;parentObject()-&gt;convertFrameToSpace(FloatRect(rect), AccessibilityConversionSpace::Page);

Need to null-check the result of parentObject() here.

&gt; Source/WebCore/page/Page.cpp:2191
&gt; +        Document* mainDocument = nullptr;

Don&apos;t need &quot;= nullptr&quot; here.

&gt; Source/WebCore/page/Page.cpp:2194
&gt; +        if (auto* localMainFrame = dynamicDowncast&lt;LocalFrame&gt;(mainFrame())) {
&gt; +            mainDocument = localMainFrame ? localMainFrame-&gt;document() : nullptr;
&gt; +        } else if (auto* remoteFrame = dynamicDowncast&lt;RemoteFrame&gt;(mainFrame())) {

Don&apos;t need the curly-braces after the if and before the else-if.

&gt; Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.cpp:1818
&gt; +    RefPtr webPage = m_frame-&gt;page();
&gt; +    if (!webPage)
&gt; +        return { };
&gt; +
&gt; +    return webPage-&gt;accessibilityRemoteFrameOffset();

RefPtr webPage = m_frame-&gt;page();
return webPage ? webPage-&gt;accessibilityRemoteFrameOffset() : WebCore::IntPoint();

&gt; Source/WebKit/WebProcess/WebCoreSupport/WebRemoteFrameClient.cpp:106
&gt; +    RefPtr page = m_frame-&gt;page();
&gt; +    if (!page)
&gt; +        return;
&gt; +
&gt; +        // Make sure AppKit system knows about our remote UI process status now.
&gt; +    page-&gt;accessibilityManageRemoteElementStatus(false, processIdentifier);

if (RefPtr page = m_frame-&gt;page()) {
    // Make sure AppKit system knows about our remote UI process status now.
    page-&gt;accessibilityManageRemoteElementStatus(false, processIdentifier);
}

&gt; Source/WebKit/WebProcess/WebCoreSupport/WebRemoteFrameClient.cpp:115
&gt; +    RefPtr page = m_frame-&gt;page();
&gt; +    if (!page)
&gt; +        return;
&gt; +
&gt; +    page-&gt;send(Messages::WebPageProxy::UpdateRemoteFrameAccessibilityOffset(frameID, offset));

if (RefPtr page = m_frame-&gt;page())
    page-&gt;send(Messages::WebPageProxy::UpdateRemoteFrameAccessibilityOffset(frameID, offset));

&gt; Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm:68
&gt; +        if (auto* firstFrame = dynamicDowncast&lt;WebCore::LocalFrame&gt;(tree.firstChild()))
&gt; +            return firstFrame-&gt;document()-&gt;axObjectCache();

Do we need to null check firstFrame-&gt;document()?

auto* firstFrame = dynamicDowncast&lt;WebCore::LocalFrame&gt;(tree.firstChild());
auto* document = firstFrame ? firstFrame-&gt;document() : nullptr;
return document ? document-&gt;axObjectCache() : nullptr;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2013860</commentid>
    <comment_count>4</comment_count>
      <attachid>469874</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2024-02-15 01:33:20 -0800</bug_when>
    <thetext>Created attachment 469874
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2013864</commentid>
    <comment_count>5</comment_count>
      <attachid>469875</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2024-02-15 01:45:10 -0800</bug_when>
    <thetext>Created attachment 469875
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2013971</commentid>
    <comment_count>6</comment_count>
      <attachid>469881</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2024-02-15 09:20:59 -0800</bug_when>
    <thetext>Created attachment 469881
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014005</commentid>
    <comment_count>7</comment_count>
      <attachid>469884</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2024-02-15 10:39:31 -0800</bug_when>
    <thetext>Created attachment 469884
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014027</commentid>
    <comment_count>8</comment_count>
      <attachid>469890</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2024-02-15 11:20:22 -0800</bug_when>
    <thetext>Created attachment 469890
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014069</commentid>
    <comment_count>9</comment_count>
      <attachid>469894</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2024-02-15 12:20:56 -0800</bug_when>
    <thetext>Created attachment 469894
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014071</commentid>
    <comment_count>10</comment_count>
      <attachid>469895</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2024-02-15 12:42:17 -0800</bug_when>
    <thetext>Created attachment 469895
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014073</commentid>
    <comment_count>11</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2024-02-15 12:45:28 -0800</bug_when>
    <thetext>(In reply to chris fleizach from comment #10)
&gt; Created attachment 469895 [details]
&gt; Patch

diff --git a/Source/WebCore/accessibility/AXRemoteFrame.cpp b/Source/WebCore/accessibility/AXRemoteFrame.cpp
new file mode 100644
index 000000000000..60434e344477
--- /dev/null
+++ b/Source/WebCore/accessibility/AXRemoteFrame.cpp

+AXRemoteFrame::AXRemoteFrame()
+:
+#if PLATFORM(COCOA)
+    m_remoteFramePlatformElement(nullptr)
+    , m_processIdentifier(0)
+#endif
+{
+}

AG: I don&apos;t think you need this constructor at all since you have in the class declaration:

    RetainPtr&lt;id&gt; m_remoteFramePlatformElement;

which is initialized to nullptr and for the pid, you can add an initializer in the declaration as well:

    pid_t m_processIdentifier { 0 };</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014081</commentid>
    <comment_count>12</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2024-02-15 12:53:08 -0800</bug_when>
    <thetext>diff --git a/Source/WebCore/accessibility/AXRemoteFrame.h b/Source/WebCore/accessibility/AXRemoteFrame.h
new file mode 100644
index 000000000000..abc94d3aa6cf
--- /dev/null
+++ b/Source/WebCore/accessibility/AXRemoteFrame.h

+
+#pragma once
+
+#include &quot;AccessibilityMockObject.h&quot;
+
+namespace WebCore {
+
+class RemoteFrame;
+
+class AXRemoteFrame final : public AccessibilityMockObject {
+public:
+    static Ref&lt;AXRemoteFrame&gt; create();
+
+#if PLATFORM(COCOA)
+    void initializePlatformElementWithRemoteToken(std::span&lt;const uint8_t&gt;, int);
+    std::span&lt;const uint8_t&gt; generateRemoteToken() const;
+    RetainPtr&lt;id&gt; remoteFramePlatformElement() const final { return m_remoteFramePlatformElement; }

AG: don&apos;t need final in individual method since the class is final.

+    pid_t processIdentifier() const { return m_processIdentifier; }
+#endif
+
+private:
+    explicit AXRemoteFrame();
+    virtual ~AXRemoteFrame() = default;
+
+    AccessibilityRole determineAccessibilityRole() final { return AccessibilityRole::RemoteFrame; }
+    bool computeAccessibilityIsIgnored() const final { return false; }
+    bool isAXRemoteFrame() const final { return true; }
+    LayoutRect elementRect() const final;


AG: same in all of these.
+
+#if PLATFORM(COCOA)
+    RetainPtr&lt;id&gt; m_remoteFramePlatformElement;
+    pid_t m_processIdentifier;

AG: initializer { 0 }

+#endif
+};
+
+} // namespace WebCore
+
+SPECIALIZE_TYPE_TRAITS_ACCESSIBILITY(AXRemoteFrame, isAXRemoteFrame())</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014106</commentid>
    <comment_count>13</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2024-02-15 13:24:02 -0800</bug_when>
    <thetext>diff --git a/Source/WebCore/accessibility/AccessibilityObject.cpp b/Source/WebCore/accessibility/AccessibilityObject.cpp
index 3e32db093afb..09842664328e 100644
--- a/Source/WebCore/accessibility/AccessibilityObject.cpp
+++ b/Source/WebCore/accessibility/AccessibilityObject.cpp
@@ -544,7 +544,10 @@ FloatRect AccessibilityObject::convertFrameToSpace(const FloatRect&amp; frameRect, A

 FloatRect AccessibilityObject::relativeFrame() const
 {
-    return convertFrameToSpace(elementRect(), AccessibilityConversionSpace::Page);
+    auto rect = elementRect();
+    auto remoteOffset = remoteFrameOffset();
+    rect.move(remoteOffset.x(), remoteOffset.y());

AG: I think the last two lines can be more concise as:
    rect.moveBy(remoteFrameOffset());

+    return convertFrameToSpace(rect, AccessibilityConversionSpace::Page);
 }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014129</commentid>
    <comment_count>14</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2024-02-15 13:57:22 -0800</bug_when>
    <thetext>diff --git a/Source/WebCore/accessibility/AccessibilityScrollView.cpp b/Source/WebCore/accessibility/AccessibilityScrollView.cpp
index 2bbc3087b9f8..9ba269be3960 100644
--- a/Source/WebCore/accessibility/AccessibilityScrollView.cpp
+++ b/Source/WebCore/accessibility/AccessibilityScrollView.cpp
@@ -27,10 +27,12 @@
 #include &quot;AccessibilityScrollView.h&quot;

 #include &quot;AXObjectCache.h&quot;
+#include &quot;AXRemoteFrame.h&quot;
 #include &quot;AccessibilityScrollbar.h&quot;
 #include &quot;HTMLFrameOwnerElement.h&quot;
 #include &quot;LocalFrame.h&quot;
 #include &quot;LocalFrameView.h&quot;
+#include &quot;RemoteFrameView.h&quot;
 #include &quot;RenderElement.h&quot;
 #include &quot;Widget.h&quot;

@@ -52,6 +54,14 @@ AccessibilityScrollView::~AccessibilityScrollView()
 void AccessibilityScrollView::detachRemoteParts(AccessibilityDetachmentType detachmentType)
 {
     AccessibilityObject::detachRemoteParts(detachmentType);
+
+    auto* remoteFrameView = dynamicDowncast&lt;RemoteFrameView&gt;(m_scrollView.get());
+    if (remoteFrameView &amp;&amp; m_remoteFrame &amp;&amp; (detachmentType == AccessibilityDetachmentType::ElementDestroyed || detachmentType == AccessibilityDetachmentType::CacheDestroyed)) {
+        auto&amp; remoteFrame = remoteFrameView-&gt;frame();
+        remoteFrame.unbindRemoteAccessibilityFrames(m_remoteFrame-&gt;processIdentifier());
+        m_remoteFrame = nullptr;
+    }
+
     m_scrollView = nullptr;
     m_frameOwnerElement = nullptr;
 }
@@ -177,8 +187,10 @@ AccessibilityScrollbar* AccessibilityScrollView::addChildScrollbar(Scrollbar* sc
 void AccessibilityScrollView::clearChildren()
 {
     AccessibilityObject::clearChildren();
+
     m_verticalScrollbar = nullptr;
     m_horizontalScrollbar = nullptr;
+
     m_childrenDirty = false;
 }

@@ -191,11 +203,43 @@ bool AccessibilityScrollView::computeAccessibilityIsIgnored() const
     return webArea-&gt;accessibilityIsIgnored();
 }

+void AccessibilityScrollView::addRemoteFrameChild()
+{
+    if (!is&lt;RemoteFrameView&gt;(m_scrollView))

AG: I think you have to do m_scrollView.get() because it is a SingleThreadWeakPtr&lt;ScrollView&gt;, a smart pointer, and not usre that is&lt;T&gt; looks inside the smart pointer.

+        return;
+    WeakPtr cache = axObjectCache();
+    if (!cache)
+        return;
+
+    if (!m_remoteFrame) {
+        // Make the faux element that represents the remote transfer element for AX.
+        auto&amp; remoteFrame = downcast&lt;RemoteFrameView&gt;(*m_scrollView).frame();
+        m_remoteFrame = downcast&lt;AXRemoteFrame&gt;(cache-&gt;create(AccessibilityRole::RemoteFrame));

AG: we should avoid downcast&lt;T&gt;, but instead dynamicDowncast or uncheckedDowncast when sure of the type.

+        m_remoteFrame-&gt;setParent(this);
+
+#if PLATFORM(MAC)
+        // Generate a new token and pass it back to the other remote frame so it can bind these objects together.
+        auto generatedToken = m_remoteFrame-&gt;generateRemoteToken();
+        remoteFrame.bindRemoteAccessibilityFrames(getpid(), generatedToken, [this, &amp;remoteFrame, protectedAccessbilityRemoteFrame = RefPtr { m_remoteFrame }] (std::span&lt;const uint8_t&gt; token, int processIdentifier) mutable {
+            protectedAccessbilityRemoteFrame-&gt;initializePlatformElementWithRemoteToken(token, processIdentifier);
+
+            // Update the remote side with the offset of this object so it can calculate frames correctly.
+            auto location = elementRect().location();
+            remoteFrame.updateRemoteFrameAccessibilityOffset(flooredIntPoint(location));
+        });
+#endif
+    } else
+        m_remoteFrame-&gt;setParent(this);
+
+    addChild(m_remoteFrame.get());
+}
+
 void AccessibilityScrollView::addChildren()
 {
     ASSERT(!m_childrenInitialized);
     m_childrenInitialized = true;

+    addRemoteFrameChild();
     addChild(webAreaObject());
     updateScrollbars();
 }
@@ -203,7 +247,7 @@ void AccessibilityScrollView::addChildren()
 AccessibilityObject* AccessibilityScrollView::webAreaObject() const
 {
     auto* document = this-&gt;document();
-    if (!document || !document-&gt;hasLivingRenderTree())
+    if (!document || !document-&gt;hasLivingRenderTree() || m_remoteFrame)
         return nullptr;

     if (auto* cache = axObjectCache())
@@ -234,9 +278,15 @@ LayoutRect AccessibilityScrollView::elementRect() const

 Document* AccessibilityScrollView::document() const
 {
-    if (auto* frameView = dynamicDowncast&lt;LocalFrameView&gt;(m_scrollView.get())) {
+    if (auto* frameView = dynamicDowncast&lt;LocalFrameView&gt;(m_scrollView.get()))
         return frameView-&gt;frame().document();
+
+    // For the RemoteFrameView case, we need to return the document of our hosting parent so axObjectCache() resolves correctly.
+    if (auto* remoteFrameView = dynamicDowncast&lt;RemoteFrameView&gt;(m_scrollView.get())) {
+        if (auto* owner = remoteFrameView-&gt;frame().ownerElement())
+            return &amp;(owner-&gt;document());
     }
+
     return AccessibilityObject::document();
 }

@@ -259,8 +309,10 @@ AccessibilityObject* AccessibilityScrollView::parentObject() const
     WeakPtr owner = m_frameOwnerElement.get();
     if (auto* localFrameView = dynamicDowncast&lt;LocalFrameView&gt;(m_scrollView.get()))
         owner = localFrameView-&gt;frame().ownerElement();
+    else if (auto* remoteFrameView = dynamicDowncast&lt;RemoteFrameView&gt;(m_scrollView.get()))
+        owner = remoteFrameView-&gt;frame().ownerElement();

-    if (cache &amp;&amp; owner &amp;&amp; owner-&gt;renderer())
+    if (owner &amp;&amp; owner-&gt;renderer())
         return cache-&gt;getOrCreate(owner.get());
     return nullptr;
 }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014139</commentid>
    <comment_count>15</comment_count>
      <attachid>469897</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2024-02-15 14:13:25 -0800</bug_when>
    <thetext>Created attachment 469897
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014141</commentid>
    <comment_count>16</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2024-02-15 14:16:45 -0800</bug_when>
    <thetext>diff --git a/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp b/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp
index 1014546278f3..177d9397a0a7 100644
--- a/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp
+++ b/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp
@@ -378,6 +378,10 @@ void AXIsolatedObject::initializeProperties(const Ref&lt;AccessibilityObject&gt;&amp; axOb
 #endif

     setObjectProperty(AXPropertyName::InternalLinkElement, object.internalLinkElement());
+    setProperty(AXPropertyName::HasRemoteFrameChild, object.hasRemoteFrameChild());

AG: this seems to be possibly true only for AXScrollViews, if that is correct, should we set this property only for AXScrollViews?

+    // Don&apos;t duplicate the remoteFrameOffset for every object. Just store in the WebArea.
+    if (object.isWebArea())
+        setProperty(AXPropertyName::RemoteFrameOffset, object.remoteFrameOffset());

     initializePlatformProperties(axObject);
 }
@@ -464,6 +468,7 @@ void AXIsolatedObject::setProperty(AXPropertyName propertyName, AXPropertyValueV
         [](OptionSet&lt;AXAncestorFlag&gt;&amp; typedValue) { return typedValue.isEmpty(); },
 #if PLATFORM(COCOA)
         [](RetainPtr&lt;NSAttributedString&gt;&amp; typedValue) { return !typedValue; },
+        [](RetainPtr&lt;id&gt;&amp; typedValue) { return !typedValue; },
 #endif
         [](InsideLink&amp; typedValue) { return typedValue == InsideLink(); },
         [](Vector&lt;Vector&lt;AXID&gt;&gt;&amp; typedValue) { return typedValue.isEmpty(); },
@@ -1206,6 +1211,21 @@ LayoutRect AXIsolatedObject::elementRect() const
     });
 }

+IntPoint AXIsolatedObject::remoteFrameOffset() const
+{
+    auto* webArea = Accessibility::findAncestor&lt;AXIsolatedObject&gt;(*this, false, [] (const auto&amp; object) {
+        return object.isWebArea();
+    });

AG: shouldn&apos;t findAncestor take true here to include this?

+
+    if (!webArea)
+        return { };
+
+    if (auto point = webArea-&gt;optionalAttributeValue&lt;IntPoint&gt;(AXPropertyName::RemoteFrameOffset))
+        return *point;
+
+    return { };
+}
+
 FloatPoint AXIsolatedObject::screenRelativePosition() const
 {
     if (auto point = optionalAttributeValue&lt;FloatPoint&gt;(AXPropertyName::ScreenRelativePosition))
@@ -1229,22 +1249,23 @@ FloatPoint AXIsolatedObject::screenRelativePosition() const

 FloatRect AXIsolatedObject::relativeFrame() const
 {
+    FloatRect relativeFrame;
+
     if (auto cachedRelativeFrame = optionalAttributeValue&lt;IntRect&gt;(AXPropertyName::RelativeFrame)) {
         // We should not have cached a relative frame for elements that get their geometry from their children.
         ASSERT(!m_getsGeometryFromChildren);
-        return *cachedRelativeFrame;
-    }
-
-    if (m_getsGeometryFromChildren) {
+        relativeFrame = *cachedRelativeFrame;
+    } else if (m_getsGeometryFromChildren) {
         auto frame = enclosingIntRect(relativeFrameFromChildren());
         if (!frame.isEmpty())
-            return frame;
+            relativeFrame = frame;
         // Either we had no children, or our children had empty frames. The right thing to do would be to return
         // a rect at the position of the nearest render tree ancestor with some made-up size (AccessibilityNodeObject::boundingBoxRect does this).
         // However, we don&apos;t have access to the render tree in this context (only the AX isolated tree, which is too sparse for this purpose), so
         // until we cache the necessary information let&apos;s go to the main-thread.
     } else if (roleValue() == AccessibilityRole::Column || roleValue() == AccessibilityRole::TableHeaderContainer)
-        return exposedTableAncestor() ? relativeFrameFromChildren() : FloatRect();
+        relativeFrame = exposedTableAncestor() ? relativeFrameFromChildren() : FloatRect();
+

     // Mock objects and SVG objects need use the main thread since they do not have render nodes and are not painted with layers, respectively.
     // FIXME: Remove isNonLayerSVGObject when LBSE is enabled &amp; SVG frames are cached.
@@ -1266,6 +1287,8 @@ FloatRect AXIsolatedObject::relativeFrame() const
     if (ancestor &amp;&amp; frameRect.location() == FloatPoint())
         frameRect.setLocation(ancestor-&gt;relativeFrame().location());

+    auto remoteOffset = remoteFrameOffset();
+    frameRect.moveBy(FloatPoint(remoteOffset));

AG: frameRect.moveBy(remoteFrameOffset()) or frameRect.moveBy({ remoteFrameOffset() })
     return frameRect;
 }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014149</commentid>
    <comment_count>17</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2024-02-15 14:22:43 -0800</bug_when>
    <thetext>diff --git a/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h b/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h
index d2a66c2f53e4..de827d5fe016 100644
--- a/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h
+++ b/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h
@@ -28,6 +28,7 @@
 #if ENABLE(ACCESSIBILITY_ISOLATED_TREE)

 #include &quot;AXCoreObject.h&quot;
+#include &quot;AXIsolatedTree.h&quot;
 #include &quot;AXObjectCache.h&quot;
 #include &quot;IntPoint.h&quot;
 #include &quot;LayoutRect.h&quot;
@@ -215,6 +216,7 @@ private:
     bool isFileUploadButton() const final { return boolAttributeValue(AXPropertyName::IsFileUploadButton); }
     bool isMeter() const final { return boolAttributeValue(AXPropertyName::IsMeter); };
     FloatPoint screenRelativePosition() const final;
+    IntPoint remoteFrameOffset() const final;
     FloatRect relativeFrame() const final;
     bool hasCachedRelativeFrame() const { return optionalAttributeValue&lt;IntRect&gt;(AXPropertyName::RelativeFrame).has_value(); }
 #if PLATFORM(MAC)
@@ -263,7 +265,7 @@ private:
     AXIsolatedObject* accessibilityHitTest(const IntPoint&amp;) const final;
     AXIsolatedObject* focusedUIElement() const final;
     AXCoreObject* internalLinkElement() const final { return objectAttributeValue(AXPropertyName::InternalLinkElement); }
-    AccessibilityChildrenVector radioButtonGroup() const { return tree()-&gt;objectsForIDs(vectorAttributeValue&lt;AXID&gt;(AXPropertyName::RadioButtonGroup)); }
+    AccessibilityChildrenVector radioButtonGroup() const final { return tree()-&gt;objectsForIDs(vectorAttributeValue&lt;AXID&gt;(AXPropertyName::RadioButtonGroup)); }
     AXIsolatedObject* scrollBar(AccessibilityOrientation) final;
     const String placeholderValue() const final { return stringAttributeValue(AXPropertyName::PlaceholderValue); }
     String expandedTextValue() const final { return stringAttributeValue(AXPropertyName::ExpandedTextValue); }
@@ -456,7 +458,7 @@ private:
     bool isAccessibilityARIAGridInstance() const final { return false; }
     bool isAccessibilityARIAGridRowInstance() const final { return false; }
     bool isAccessibilityARIAGridCellInstance() const final { return false; }
-
+    bool isAXRemoteFrame() const final { return false; }

AG: We don&apos;t need this method in the AXCoreObject interface and thus don&apos;t need to be overridden here.

     bool isNativeTextControl() const final;
     bool isListBoxOption() const final;
     bool isMockObject() const final;
@@ -537,7 +539,9 @@ private:
     String nameAttribute() const final { return stringAttributeValue(AXPropertyName::NameAttribute); }
 #if PLATFORM(COCOA)
     bool hasApplePDFAnnotationAttribute() const final { return boolAttributeValue(AXPropertyName::HasApplePDFAnnotationAttribute); }
+    RetainPtr&lt;id&gt; remoteFramePlatformElement() const final;
 #endif
+    bool hasRemoteFrameChild() const final { return boolAttributeValue(AXPropertyName::HasRemoteFrameChild); }

 #if PLATFORM(COCOA) &amp;&amp; ENABLE(MODEL_ELEMENT)
     Vector&lt;RetainPtr&lt;id&gt;&gt; modelElementChildren() final;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014156</commentid>
    <comment_count>18</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2024-02-15 14:31:57 -0800</bug_when>
    <thetext>
&gt; +    bool isAXRemoteFrame() const final { return false; }
&gt; 
&gt; AG: We don&apos;t need this method in the AXCoreObject interface and thus don&apos;t
&gt; need to be overridden here.
&gt;

It&apos;s pure virtual on AXCoreObject, so it needs to be implemented here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014162</commentid>
    <comment_count>19</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2024-02-15 14:40:50 -0800</bug_when>
    <thetext>diff --git a/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp b/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp
index 696658448f65..1be3b7990539 100644
--- a/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp
+++ b/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp
@@ -30,6 +30,7 @@

 #include &quot;AXIsolatedObject.h&quot;
 #include &quot;AXLogger.h&quot;
+#include &quot;AccessibilityTable.h&quot;
 #include &quot;AccessibilityTableRow.h&quot;
 #include &quot;FrameSelection.h&quot;
 #include &quot;LocalFrameView.h&quot;
@@ -225,46 +226,26 @@ RefPtr&lt;AXIsolatedObject&gt; AXIsolatedTree::objectForID(const AXID axID) const
     return axID.isValid() ? m_readerThreadNodeMap.get(axID) : nullptr;
 }

-template&lt;typename U&gt;
-Vector&lt;RefPtr&lt;AXCoreObject&gt;&gt; AXIsolatedTree::objectsForIDs(const U&amp; axIDs)
+RefPtr&lt;AXIsolatedObject&gt; AXIsolatedTree::fetchObjectForIDFromMainThread(const AXID axID) const
 {
-    ASSERT(!isMainThread());
-
-    Vector&lt;RefPtr&lt;AXCoreObject&gt;&gt; result;
-    result.reserveInitialCapacity(axIDs.size());
-    for (const auto&amp; axID : axIDs) {
-        RefPtr object = objectForID(axID);
-        if (object) {
-            result.append(WTFMove(object));
-            continue;
-        }
-
-        // There is no isolated object for this AXID. This can happen if the corresponding live object is ignored.
-        // If there is a live object for this ID and it is an ignored target of a relationship, create an isolated object for it.
-        object = Accessibility::retrieveValueFromMainThread&lt;RefPtr&lt;AXIsolatedObject&gt;&gt;([&amp;axID, this] () -&gt; RefPtr&lt;AXIsolatedObject&gt; {
-            auto* cache = axObjectCache();
-            if (!cache || !cache-&gt;relationTargetIDs().contains(axID))
-                return nullptr;
-
-            RefPtr axObject = cache-&gt;objectForID(axID);
-            if (!axObject || !axObject-&gt;accessibilityIsIgnored())
-                return nullptr;
-
-            auto object = AXIsolatedObject::create(*axObject, const_cast&lt;AXIsolatedTree*&gt;(this));
-            ASSERT(axObject-&gt;wrapper());
-            object-&gt;attachPlatformWrapper(axObject-&gt;wrapper());
-            return object;
-        });
-        if (object) {
-            m_readerThreadNodeMap.add(axID, *object);
-            result.append(WTFMove(object));
-        }
-    }
-    result.shrinkToFit();
-    return result;
+    // There is no isolated object for this AXID. This can happen if the corresponding live object is ignored.
+    // If there is a live object for this ID and it is an ignored target of a relationship, create an isolated object for it.
+    return Accessibility::retrieveValueFromMainThread&lt;RefPtr&lt;AXIsolatedObject&gt;&gt;([&amp;axID, this] () -&gt; RefPtr&lt;AXIsolatedObject&gt; {
+        auto* cache = axObjectCache();
+        if (!cache || !cache-&gt;relationTargetIDs().contains(axID))
+            return nullptr;
+
+        RefPtr axObject = cache-&gt;objectForID(axID);
+        if (!axObject || !axObject-&gt;accessibilityIsIgnored())
+            return nullptr;
+
+        auto object = AXIsolatedObject::create(*axObject, const_cast&lt;AXIsolatedTree*&gt;(this));
+        ASSERT(axObject-&gt;wrapper());
+        object-&gt;attachPlatformWrapper(axObject-&gt;wrapper());
+        return object;

AG: we should use addUnconnectedNode instead.

+    });
 }

-
 void AXIsolatedTree::generateSubtree(AccessibilityObject&amp; axObject)
 {
     AXTRACE(&quot;AXIsolatedTree::generateSubtree&quot;_s);
@@ -660,6 +641,12 @@ void AXIsolatedTree::updateNodeProperties(AXCoreObject&amp; axObject, const AXProper
         case AXPropertyName::PosInSet:
             propertyMap.set(AXPropertyName::PosInSet, axObject.posInSet());
             break;
+        case AXPropertyName::RemoteFramePlatformElement:
+            propertyMap.set(AXPropertyName::RemoteFramePlatformElement, axObject.remoteFramePlatformElement());
+            break;
+        case AXPropertyName::HasRemoteFrameChild:
+            propertyMap.set(AXPropertyName::HasRemoteFrameChild, axObject.hasRemoteFrameChild());
+            break;
         case AXPropertyName::RoleDescription:
             propertyMap.set(AXPropertyName::RoleDescription, axObject.roleDescription().isolatedCopy());
             break;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014163</commentid>
    <comment_count>20</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2024-02-15 14:41:49 -0800</bug_when>
    <thetext>diff --git a/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h b/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h
index a417927978d2..6b4c5e8331a3 100644
--- a/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h
+++ b/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h
@@ -104,6 +104,7 @@ enum class AXPropertyName : uint16_t {
     HasHighlighting,
     HasItalicFont,
     HasPlainText,
+    HasRemoteFrameChild,
     HasUnderline,
     HeaderContainer,
     HeadingLevel,
@@ -201,6 +202,8 @@ enum class AXPropertyName : uint16_t {
     PreventKeyboardDOMEventDispatch,
     RadioButtonGroup,
     RelativeFrame,
+    RemoteFrameOffset,
+    RemoteFramePlatformElement,
     RoleValue,
     RolePlatformString,
     RoleDescription,
@@ -257,6 +260,7 @@ using AXPropertyNameSet = HashSet&lt;AXPropertyName, IntHash&lt;AXPropertyName&gt;, WTF::
 using AXPropertyValueVariant = std::variant&lt;std::nullptr_t, AXID, String, bool, int, unsigned, double, float, uint64_t, AccessibilityButtonState, Color, URL, LayoutRect, FloatPoint, FloatRect, IntPoint, IntRect, std::pair&lt;unsigned, unsigned&gt;, Vector&lt;AccessibilityText&gt;, Vector&lt;AXID&gt;, Vector&lt;std::pair&lt;AXID, AXID&gt;&gt;, Vector&lt;String&gt;, Path, OptionSet&lt;AXAncestorFlag&gt;, InsideLink, Vector&lt;Vector&lt;AXID&gt;&gt;, CharacterRange, std::pair&lt;AXID, CharacterRange&gt;
 #if PLATFORM(COCOA)
     , RetainPtr&lt;NSAttributedString&gt;
+    , RetainPtr&lt;id&gt;
 #endif
 #if ENABLE(AX_THREAD_TEXT_APIS)
     , AXTextRuns
@@ -397,6 +401,7 @@ private:
     void createEmptyContent(AccessibilityObject&amp;);
     constexpr bool isUpdatingSubtree() const { return m_rootOfSubtreeBeingUpdated; }
     constexpr void updatingSubtree(AccessibilityObject* axObject) { m_rootOfSubtreeBeingUpdated = axObject; }
+    RefPtr&lt;AXIsolatedObject&gt; fetchObjectForIDFromMainThread(const AXID) const;

AG: we have used retrieve instead of fetch got get things for the main thread. I&apos;m fine with either one but we should use one.


     enum class AttachWrapper : bool { OnMainThread, OnAXThread };
     struct NodeChange {
@@ -497,6 +502,30 @@ inline RefPtr&lt;AXIsolatedTree&gt; AXIsolatedTree::treeForPageID(std::optional&lt;PageId
     return pageID ? treeForPageID(*pageID) : nullptr;
 }

+template&lt;typename U&gt;
+inline Vector&lt;RefPtr&lt;AXCoreObject&gt;&gt; AXIsolatedTree::objectsForIDs(const U&amp; axIDs)
+{
+    ASSERT(!isMainThread());
+
+    Vector&lt;RefPtr&lt;AXCoreObject&gt;&gt; result;
+    result.reserveInitialCapacity(axIDs.size());
+    for (const auto&amp; axID : axIDs) {
+        RefPtr object = objectForID(axID);
+        if (object) {
+            result.append(WTFMove(object));
+            continue;
+        }
+
+        object = fetchObjectForIDFromMainThread(axID);
+        if (object) {
+            m_readerThreadNodeMap.add(axID, *object);
+            result.append(WTFMove(object));
+        }
+    }
+    result.shrinkToFit();
+    return result;
+}
+
 } // namespace WebCore

 #endif</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014179</commentid>
    <comment_count>21</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2024-02-15 15:06:09 -0800</bug_when>
    <thetext>+        auto object = AXIsolatedObject::create(*axObject, const_cast&lt;AXIsolatedTree*&gt;(this));
+        ASSERT(axObject-&gt;wrapper());
+        object-&gt;attachPlatformWrapper(axObject-&gt;wrapper());
+        return object;

AG: we should use addUnconnectedNode instead.

This is from existing code, not changing it in this PR</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014180</commentid>
    <comment_count>22</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2024-02-15 15:07:34 -0800</bug_when>
    <thetext>diff --git a/Source/WebCore/accessibility/mac/AccessibilityObjectMac.mm b/Source/WebCore/accessibility/mac/AccessibilityObjectMac.mm
index ba2accd80d04..7c7a4f04957c 100644
--- a/Source/WebCore/accessibility/mac/AccessibilityObjectMac.mm
+++ b/Source/WebCore/accessibility/mac/AccessibilityObjectMac.mm
@@ -26,6 +26,7 @@
 #import &quot;config.h&quot;
 #import &quot;AccessibilityObject.h&quot;

+#import &quot;AXRemoteFrame.h&quot;
 #import &quot;AccessibilityLabel.h&quot;
 #import &quot;AccessibilityList.h&quot;
 #import &quot;ColorCocoa.h&quot;
@@ -51,6 +52,7 @@
 #import &quot;WebAccessibilityObjectWrapperMac.h&quot;
 #import &quot;Widget.h&quot;

+#import &lt;pal/spi/cocoa/NSAccessibilitySPI.h&gt;
 #import &lt;pal/spi/mac/NSSpellCheckerSPI.h&gt;

 namespace WebCore {
@@ -749,6 +751,24 @@ RetainPtr&lt;NSAttributedString&gt; attributedStringCreate(Node* node, StringView text
     return result;
 }

+std::span&lt;const uint8_t&gt; AXRemoteFrame::generateRemoteToken() const
+{
+    // We use the parent&apos;s wrapper so that the remote frame acts as a pass through for the remote token bridge.
+    NSData *data = [NSAccessibilityRemoteUIElement remoteTokenForLocalUIElement:parentObject()-&gt;wrapper()];

AG: parentObject() can be null.

+    return std::span(static_cast&lt;const uint8_t*&gt;([data bytes]), [data length]);
+}
+
+void AXRemoteFrame::initializePlatformElementWithRemoteToken(std::span&lt;const uint8_t&gt; token, int processIdentifier)
+{
+    m_processIdentifier = processIdentifier;
+    if ([wrapper() respondsToSelector:@selector(accessibilitySetPresenterProcessIdentifier:)])
+        [(id)wrapper() accessibilitySetPresenterProcessIdentifier:processIdentifier];

AG: do you need to cast the wrapper to (id) here?

+    NSData *tokenData = [NSData dataWithBytes:token.data() length:token.size()];
+    m_remoteFramePlatformElement = adoptNS([[NSAccessibilityRemoteUIElement alloc] initWithRemoteToken:tokenData]);
+
+    axObjectCache()-&gt;onRemoteFrameInitialized(*this);

AG: axObjectCache() can be null.

+}
+
 namespace Accessibility {

 PlatformRoleMap createPlatformRoleMap()
@@ -891,6 +911,7 @@ PlatformRoleMap createPlatformRoleMap()
         { AccessibilityRole::Superscript, NSAccessibilityGroupRole },
         { AccessibilityRole::Model, NSAccessibilityGroupRole },
         { AccessibilityRole::Suggestion, NSAccessibilityGroupRole },
+        { AccessibilityRole::RemoteFrame, NSAccessibilityGroupRole },
     };
     PlatformRoleMap roleMap;
     for (auto&amp; role : roles)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014184</commentid>
    <comment_count>23</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2024-02-15 15:15:31 -0800</bug_when>
    <thetext>+    m_processIdentifier = processIdentifier;
+    if ([wrapper() respondsToSelector:@selector(accessibilitySetPresenterProcessIdentifier:)])
+        [(id)wrapper() accessibilitySetPresenterProcessIdentifier:processIdentifier];

AG: do you need to cast the wrapper to (id) here?

Yes - this is only defined on NSAccessibilityRemoteUIElement in AppKit for some reason</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014186</commentid>
    <comment_count>24</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2024-02-15 15:17:59 -0800</bug_when>
    <thetext>diff --git a/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm b/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm
index 6357fa7c271b..f14245fc3b67 100644
--- a/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm
+++ b/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm
@@ -32,6 +32,7 @@
 #import &quot;AXCoreObject.h&quot;
 #import &quot;AXIsolatedObject.h&quot;
 #import &quot;AXObjectCache.h&quot;
+#import &quot;AXRemoteFrame.h&quot;
 #import &quot;AccessibilityARIAGridRow.h&quot;
 #import &quot;AccessibilityList.h&quot;
 #import &quot;AccessibilityListBox.h&quot;
@@ -265,13 +266,13 @@ NSArray *makeNSArray(const WebCore::AXCoreObject::AccessibilityChildrenVector&amp; c
             return nil;

         auto wrapper = child-&gt;wrapper();
-
         // We want to return the attachment view instead of the object representing the attachment,
         // otherwise, we get palindrome errors in the AX hierarchy.
         if (child-&gt;isAttachment()) {
             if (id attachmentView = wrapper.attachmentView)
                 return attachmentView;
-        }
+        } else if (child-&gt;isRemoteFrame())
+            return child-&gt;remoteFramePlatformElement().get();

         return wrapper;
     }).autorelease();
@@ -389,7 +390,7 @@ NSArray *makeNSArray(const WebCore::AXCoreObject::AccessibilityChildrenVector&amp; c
 - (BOOL)isIsolatedObject
 {
 #if ENABLE(ACCESSIBILITY_ISOLATED_TREE)
-    auto* backingObject = self.axBackingObject;
+    RefPtr backingObject = dynamicDowncast&lt;AccessibilityObject&gt;(self.baseUpdateBackingStore);
     return backingObject &amp;&amp; backingObject-&gt;isAXIsolatedObjectInstance();

AG: I think this can be just:
    return dynamicDowncast&lt;AXIsolatedObject&gt;(self.baseUpdateBackingStore);
and I don&apos;t know if this is actuallly used any where any more.

 #else
     return NO;
@@ -523,7 +524,7 @@ static void convertPathToScreenSpaceFunction(PathConversionInfo&amp; conversion, con

 - (CGRect)convertRectToSpace:(const WebCore::FloatRect&amp;)rect space:(AccessibilityConversionSpace)space
 {
-    auto* backingObject = self.axBackingObject;
+    RefPtr backingObject = dynamicDowncast&lt;AccessibilityObject&gt;(self.baseUpdateBackingStore);
     if (!backingObject)
         return CGRectZero;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014193</commentid>
    <comment_count>25</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2024-02-15 15:32:33 -0800</bug_when>
    <thetext>(In reply to chris fleizach from comment #18)
&gt; &gt; +    bool isAXRemoteFrame() const final { return false; }
&gt; &gt; 
&gt; &gt; AG: We don&apos;t need this method in the AXCoreObject interface and thus don&apos;t
&gt; &gt; need to be overridden here.
&gt; &gt;
&gt; 
&gt; It&apos;s pure virtual on AXCoreObject, so it needs to be implemented here

AG: you can make it a virtual in AccessibilityObject and remove it from the AXCoreObject class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014196</commentid>
    <comment_count>26</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2024-02-15 15:44:42 -0800</bug_when>
    <thetext>(In reply to Andres Gonzalez from comment #25)
&gt; (In reply to chris fleizach from comment #18)
&gt; &gt; &gt; +    bool isAXRemoteFrame() const final { return false; }
&gt; &gt; &gt; 
&gt; &gt; &gt; AG: We don&apos;t need this method in the AXCoreObject interface and thus don&apos;t
&gt; &gt; &gt; need to be overridden here.
&gt; &gt; &gt;
&gt; &gt; 
&gt; &gt; It&apos;s pure virtual on AXCoreObject, so it needs to be implemented here
&gt; 
&gt; AG: you can make it a virtual in AccessibilityObject and remove it from the
&gt; AXCoreObject class.

Then we can&apos;t use SPECIALIZE_TYPE_TRAITS_ACCESSIBILITY or downcast&lt;&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014202</commentid>
    <comment_count>27</comment_count>
      <attachid>469902</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2024-02-15 15:57:17 -0800</bug_when>
    <thetext>Created attachment 469902
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014247</commentid>
    <comment_count>28</comment_count>
      <attachid>469907</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2024-02-15 17:42:17 -0800</bug_when>
    <thetext>Created attachment 469907
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014292</commentid>
    <comment_count>29</comment_count>
      <attachid>469912</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2024-02-15 20:37:26 -0800</bug_when>
    <thetext>Created attachment 469912
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014365</commentid>
    <comment_count>30</comment_count>
      <attachid>469914</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2024-02-15 23:22:15 -0800</bug_when>
    <thetext>Created attachment 469914
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014371</commentid>
    <comment_count>31</comment_count>
      <attachid>469915</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2024-02-15 23:58:28 -0800</bug_when>
    <thetext>Created attachment 469915
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014519</commentid>
    <comment_count>32</comment_count>
      <attachid>469922</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2024-02-16 09:28:40 -0800</bug_when>
    <thetext>Created attachment 469922
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014619</commentid>
    <comment_count>33</comment_count>
      <attachid>469926</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2024-02-16 13:30:05 -0800</bug_when>
    <thetext>Created attachment 469926
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014633</commentid>
    <comment_count>34</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2024-02-16 13:59:14 -0800</bug_when>
    <thetext>diff --git a/Source/WebCore/loader/EmptyClients.cpp b/Source/WebCore/loader/EmptyClients.cpp
index 258c14b86a8b..5717ade2a452 100644
--- a/Source/WebCore/loader/EmptyClients.cpp
+++ b/Source/WebCore/loader/EmptyClients.cpp
@@ -1085,6 +1085,11 @@ RemoteAXObjectRef EmptyFrameLoaderClient::accessibilityRemoteObject()
     return nullptr;
 }

+IntPoint EmptyFrameLoaderClient::accessibilityRemoteFrameOffset()
+{
+    return { };
+}

AG: don&apos;t know about what is customery in this file but we tend to put this trivial definition of a method right on the header in one line.

+
 #if ENABLE(ACCESSIBILITY_ISOLATED_TREE)
 void EmptyFrameLoaderClient::setAXIsolatedTreeRoot(WebCore::AXCoreObject*)
 {</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014635</commentid>
    <comment_count>35</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2024-02-16 14:04:13 -0800</bug_when>
    <thetext>diff --git a/Source/WebCore/page/Page.cpp b/Source/WebCore/page/Page.cpp
index 5d2feab65796..b4c252e02362 100644
--- a/Source/WebCore/page/Page.cpp
+++ b/Source/WebCore/page/Page.cpp
@@ -2208,11 +2208,18 @@ bool Page::shouldUpdateAccessibilityRegions() const
     ASSERT(m_lastRenderingUpdateTimestamp &gt;= m_lastAccessibilityObjectRegionsUpdate);
     if ((m_lastRenderingUpdateTimestamp - m_lastAccessibilityObjectRegionsUpdate) &lt; updateInterval) {
         // We&apos;ve already updated accessibility object rects recently, so skip this update and schedule another for later.
-        auto* localMainFrame = dynamicDowncast&lt;LocalFrame&gt;(mainFrame());
-        RefPtr mainDocument = localMainFrame ? localMainFrame-&gt;document() : nullptr;
+
+        RefPtr&lt;Document&gt; protectedMainDocument = nullptr;

AG: don&apos;t need = nullptr, RefPtr constructor does it for you.

+        if (auto* localMainFrame = dynamicDowncast&lt;LocalFrame&gt;(mainFrame()))
+            protectedMainDocument = localMainFrame ? localMainFrame-&gt;document() : nullptr;
+        else if (auto* remoteFrame = dynamicDowncast&lt;RemoteFrame&gt;(mainFrame())) {
+            if (auto* owner = remoteFrame-&gt;ownerElement())
+                protectedMainDocument = &amp;(owner-&gt;document());
+        }
+
         // If accessibility is enabled and we have a main document, that document should have an AX object cache.
-        ASSERT(!mainDocument || mainDocument-&gt;existingAXObjectCache());
-        if (CheckedPtr topAxObjectCache = mainDocument ? mainDocument-&gt;existingAXObjectCache() : nullptr)
+        ASSERT(!protectedMainDocument || protectedMainDocument-&gt;existingAXObjectCache());
+        if (CheckedPtr topAxObjectCache = protectedMainDocument ? protectedMainDocument-&gt;existingAXObjectCache() : nullptr)
             topAxObjectCache-&gt;scheduleObjectRegionsUpdate();
         return false;
     }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014701</commentid>
    <comment_count>36</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2024-02-16 16:05:15 -0800</bug_when>
    <thetext>&gt; 
&gt; +IntPoint EmptyFrameLoaderClient::accessibilityRemoteFrameOffset()
&gt; +{
&gt; +    return { };
&gt; +}
&gt; 
&gt; AG: don&apos;t know about what is customery in this file but we tend to put this
&gt; trivial definition of a method right on the header in one line.
&gt; 

It looks like everything else in EmptyFrameLoader puts their empty definitions in the cpp, so I should probably stick with that</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014710</commentid>
    <comment_count>37</comment_count>
      <attachid>469936</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2024-02-16 16:15:35 -0800</bug_when>
    <thetext>Created attachment 469936
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014814</commentid>
    <comment_count>38</comment_count>
      <attachid>469946</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2024-02-17 08:00:48 -0800</bug_when>
    <thetext>Created attachment 469946
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014834</commentid>
    <comment_count>39</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2024-02-17 11:51:15 -0800</bug_when>
    <thetext>diff --git a/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm b/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm
index 5b10f59c6661..deb4d58e5fd6 100644
--- a/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm
+++ b/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm
@@ -763,11 +763,10 @@ void WebPageProxy::setSmartInsertDeleteEnabled(bool)
     notImplemented();
 }

-void WebPageProxy::registerWebProcessAccessibilityToken(std::span&lt;const uint8_t&gt; data)
+void WebPageProxy::registerWebProcessAccessibilityToken(std::span&lt;const uint8_t&gt; data, FrameIdentifier frameID)
 {
-    protectedPageClient()-&gt;accessibilityWebProcessTokenReceived(data);
-}
-
+    pageClient().accessibilityWebProcessTokenReceived(data, frameID, messageSenderConnection()-&gt;remoteProcessID());

AG: is messageSenderConnection() guaranteed to be not null?

+}

 void WebPageProxy::relayAccessibilityNotification(const String&amp; notificationName, std::span&lt;const uint8_t&gt; data)
 {</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014835</commentid>
    <comment_count>40</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2024-02-17 11:57:42 -0800</bug_when>
    <thetext>diff --git a/Source/WebKit/UIProcess/mac/WebViewImpl.mm b/Source/WebKit/UIProcess/mac/WebViewImpl.mm
index cc8d3c7ff0c6..7f35772ab4e8 100644
--- a/Source/WebKit/UIProcess/mac/WebViewImpl.mm
+++ b/Source/WebKit/UIProcess/mac/WebViewImpl.mm
@@ -3479,10 +3479,12 @@ void WebViewImpl::setIgnoresMouseDraggedEvents(bool ignoresMouseDraggedEvents)
     m_ignoresMouseDraggedEvents = ignoresMouseDraggedEvents;
 }

-void WebViewImpl::setAccessibilityWebProcessToken(NSData *data)
+void WebViewImpl::setAccessibilityWebProcessToken(NSData *data, WebCore::FrameIdentifier frameID, pid_t pid)
 {
-    m_remoteAccessibilityChild = data.length ? adoptNS([[NSAccessibilityRemoteUIElement alloc] initWithRemoteToken:data]) : nil;
-    updateRemoteAccessibilityRegistration(true);
+    if (pid == m_page-&gt;process().processID()) {

AG: m_page null check?

+        m_remoteAccessibilityChild = data.length ? adoptNS([[NSAccessibilityRemoteUIElement alloc] initWithRemoteToken:data]) : nil;
+        updateRemoteAccessibilityRegistration(true);
+    }
 }

 void WebViewImpl::updateRemoteAccessibilityRegistration(bool registerProcess)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014836</commentid>
    <comment_count>41</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2024-02-17 11:59:42 -0800</bug_when>
    <thetext>diff --git a/Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.cpp b/Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.cpp
index 35987a1f85e4..ecddea9f99d6 100644
--- a/Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.cpp
+++ b/Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.cpp
@@ -1806,6 +1806,12 @@ void WebLocalFrameLoaderClient::dispatchWillDestroyGlobalObjectForDOMWindowExten

 #if PLATFORM(COCOA)

+WebCore::IntPoint WebLocalFrameLoaderClient::accessibilityRemoteFrameOffset()
+{
+    RefPtr webPage = m_frame-&gt;page();

AG: m_frame null check?

+    return webPage ? webPage-&gt;accessibilityRemoteFrameOffset() : IntPoint();
+}
+
 RemoteAXObjectRef WebLocalFrameLoaderClient::accessibilityRemoteObject()
 {
     RefPtr webPage = m_frame-&gt;page();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014839</commentid>
    <comment_count>42</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2024-02-17 12:07:06 -0800</bug_when>
    <thetext>diff --git a/Source/WebKit/WebProcess/WebCoreSupport/WebRemoteFrameClient.cpp b/Source/WebKit/WebProcess/WebCoreSupport/WebRemoteFrameClient.cpp
index 38b0f325aa16..d4df7ef529a2 100644
--- a/Source/WebKit/WebProcess/WebCoreSupport/WebRemoteFrameClient.cpp
+++ b/Source/WebKit/WebProcess/WebCoreSupport/WebRemoteFrameClient.cpp
@@ -96,6 +96,44 @@ String WebRemoteFrameClient::renderTreeAsText(size_t baseIndent, OptionSet&lt;Rende
     return result;
 }

+void WebRemoteFrameClient::unbindRemoteAccessibilityFrames(int processIdentifier)
+{
+#if PLATFORM(COCOA)
+    // Make sure AppKit system knows about our remote UI process status now.
+    if (RefPtr page = m_frame-&gt;page())

AG: m_frame null check?

+        page-&gt;accessibilityManageRemoteElementStatus(false, processIdentifier);
+#else
+    UNUSED_PARAM(processIdentifier);
+#endif
+}
+
+void WebRemoteFrameClient::updateRemoteFrameAccessibilityOffset(WebCore::FrameIdentifier frameID, WebCore::IntPoint offset)
+{
+    if (RefPtr page = m_frame-&gt;page())

AG: dito?

+        page-&gt;send(Messages::WebPageProxy::UpdateRemoteFrameAccessibilityOffset(frameID, offset));
+}
+
+void WebRemoteFrameClient::bindRemoteAccessibilityFrames(int processIdentifier, WebCore::FrameIdentifier frameID, const std::span&lt;const uint8_t&gt; dataToken, CompletionHandler&lt;void(std::span&lt;const uint8_t&gt;, int)&gt;&amp;&amp; completionHandler)
+{
+    RefPtr page = m_frame-&gt;page();

AG: dito?

+    if (!page) {
+        completionHandler(std::span&lt;const uint8_t&gt; { }, 0);

AG: do you need std::span&lt;const uint8_t&gt; cause the compiler cannot infer the type?

+        return;
+    }
+
+    auto sendResult = page-&gt;sendSync(Messages::WebPageProxy::BindRemoteAccessibilityFrames(processIdentifier, frameID, dataToken));
+    if (!sendResult.succeeded())
+        return;

AG: not calling the completion handler?

+
+    auto [resultToken, processIdentifierResult] = sendResult.takeReply();
+
+    // Make sure AppKit system knows about our remote UI process status now.
+#if PLATFORM(COCOA)
+    page-&gt;accessibilityManageRemoteElementStatus(true, processIdentifierResult);
+#endif
+    completionHandler(resultToken, processIdentifierResult);
+}
+
 void WebRemoteFrameClient::broadcastFrameRemovalToOtherProcesses()
 {
     WebFrameLoaderClient::broadcastFrameRemovalToOtherProcesses();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014840</commentid>
    <comment_count>43</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2024-02-17 12:11:52 -0800</bug_when>
    <thetext>
&gt; AG: m_frame null check?
&gt; 
&gt; +    return webPage ? webPage-&gt;accessibilityRemoteFrameOffset() : IntPoint();
&gt; +}
&gt; +
&gt;  RemoteAXObjectRef WebLocalFrameLoaderClient::accessibilityRemoteObject()
&gt;  {
&gt;      RefPtr webPage = m_frame-&gt;page();


No other functions are checking m_frame in this file, so I think it&apos;s ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014841</commentid>
    <comment_count>44</comment_count>
      <attachid>469948</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2024-02-17 12:13:28 -0800</bug_when>
    <thetext>Created attachment 469948
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014842</commentid>
    <comment_count>45</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2024-02-17 12:14:28 -0800</bug_when>
    <thetext>diff --git a/Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm b/Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm
index cefe2e2345ab..d4e7c6b5dcaf 100644
--- a/Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm
+++ b/Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm
@@ -77,6 +77,7 @@
 #import &lt;WebCore/UTIRegistry.h&gt;
 #import &lt;WebCore/UTIUtilities.h&gt;
 #import &lt;pal/spi/cocoa/LaunchServicesSPI.h&gt;
+#import &lt;pal/spi/cocoa/NSAccessibilitySPI.h&gt;
 #import &lt;pal/spi/cocoa/QuartzCoreSPI.h&gt;
 #import &lt;wtf/spi/darwin/SandboxSPI.h&gt;

@@ -404,10 +405,51 @@ void WebPage::clearDictationAlternatives(Vector&lt;DictationContext&gt;&amp;&amp; contexts)
     }, DocumentMarker::Type::DictationAlternatives);
 }

-void WebPage::accessibilityTransferRemoteToken(RetainPtr&lt;NSData&gt; remoteToken)
+void WebPage::accessibilityTransferRemoteToken(RetainPtr&lt;NSData&gt; remoteToken, FrameIdentifier frameID)
 {
     std::span dataToken(reinterpret_cast&lt;const uint8_t*&gt;([remoteToken bytes]), [remoteToken length]);
-    send(Messages::WebPageProxy::RegisterWebProcessAccessibilityToken(dataToken));
+    send(Messages::WebPageProxy::RegisterWebProcessAccessibilityToken(dataToken, frameID));
+}
+
+void WebPage::accessibilityManageRemoteElementStatus(bool registerStatus, int processIdentifier)
+{
+#if PLATFORM(MAC)
+    if (registerStatus)
+        [NSAccessibilityRemoteUIElement registerRemoteUIProcessIdentifier:processIdentifier];
+    else
+        [NSAccessibilityRemoteUIElement unregisterRemoteUIProcessIdentifier:processIdentifier];
+#else
+    UNUSED_PARAM(registerStatus);
+    UNUSED_PARAM(processIdentifier);
+#endif
+}
+
+void WebPage::bindRemoteAccessibilityFrames(int processIdentifier, WebCore::FrameIdentifier frameID, std::span&lt;const uint8_t&gt; dataToken, CompletionHandler&lt;void(std::span&lt;const uint8_t&gt;, int)&gt;&amp;&amp; completionHandler)
+{
+    RefPtr webFrame = WebProcess::singleton().webFrame(frameID);
+    if (!webFrame) {
+        ASSERT_NOT_REACHED();
+        return completionHandler({ }, 0);
+    }
+
+    RefPtr coreLocalFrame = webFrame-&gt;coreLocalFrame();
+    if (!coreLocalFrame) {
+        ASSERT_NOT_REACHED();
+        return completionHandler({ }, 0);
+    }
+
+    auto* renderer = coreLocalFrame-&gt;contentRenderer();
+    if (!renderer) {
+        ASSERT_NOT_REACHED();
+        return completionHandler({ }, 0);
+    }

AG: what is the purpose of getting this renderer that is not used?

+
+    registerRemoteFrameAccessibilityTokens(processIdentifier, dataToken);
+
+    // Get our remote token data and send back to the RemoteFrame.
+    auto remoteToken = accessibilityRemoteTokenData();
+    std::span remoteDataToken(reinterpret_cast&lt;const uint8_t*&gt;([remoteToken bytes]), [remoteToken length]);
+    completionHandler(remoteDataToken, getpid());
 }

 #if ENABLE(APPLE_PAY)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014843</commentid>
    <comment_count>46</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2024-02-17 12:21:30 -0800</bug_when>
    <thetext>diff --git a/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm b/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm
index 104410c82c8c..a7c860d01f5b 100644
--- a/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm
+++ b/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm
@@ -243,12 +243,15 @@ void WebPage::platformInitializeAccessibility()
     m_mockAccessibilityElement = adoptNS([[WKAccessibilityWebPageObject alloc] init]);
     [m_mockAccessibilityElement setWebPage:this];

-    accessibilityTransferRemoteToken(accessibilityRemoteTokenData());
+    RefPtr localMainFrame = dynamicDowncast&lt;LocalFrame&gt;(m_page-&gt;mainFrame());

AG: m_page null check?

+    if (localMainFrame)
+        accessibilityTransferRemoteToken(accessibilityRemoteTokenData(), localMainFrame-&gt;frameID());
 }

 void WebPage::platformReinitialize()
 {
-    accessibilityTransferRemoteToken(accessibilityRemoteTokenData());
+    Ref frame = CheckedRef(m_page-&gt;focusController())-&gt;focusedOrMainFrame();

AG: m_page-&gt;focusController())-&gt; null checks?

+    accessibilityTransferRemoteToken(accessibilityRemoteTokenData(), frame-&gt;frameID());
 }

 RetainPtr&lt;NSData&gt; WebPage::accessibilityRemoteTokenData() const
@@ -644,6 +647,16 @@ NSObject *WebPage::accessibilityObjectForMainFramePlugin()
     return nil;
 }

+void WebPage::updateRemotePageAccessibilityOffset(WebCore::FrameIdentifier, WebCore::IntPoint)
+{
+    // FIXME: Implement
+}
+
+void WebPage::registerRemoteFrameAccessibilityTokens(pid_t, std::span&lt;const uint8_t&gt;)
+{
+    // FIXME: Implement
+}
+
 void WebPage::registerUIProcessAccessibilityTokens(std::span&lt;const uint8_t&gt; elementToken, std::span&lt;const uint8_t&gt;)
 {
     NSData *elementTokenData = [NSData dataWithBytes:elementToken.data() length:elementToken.size()];
@@ -662,6 +675,12 @@ void WebPage::getDataSelectionForPasteboard(const String, CompletionHandler&lt;void
     completionHandler({ });
 }

+WebCore::IntPoint WebPage::accessibilityRemoteFrameOffset()
+{
+    notImplemented();
+    return { };
+}
+
 WKAccessibilityWebPageObject* WebPage::accessibilityRemoteObject()
 {
     notImplemented();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014845</commentid>
    <comment_count>47</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2024-02-17 12:28:47 -0800</bug_when>
    <thetext>diff --git a/Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm b/Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm
index 6f99545aebf5..bec8d73faa2e 100644
--- a/Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm
+++ b/Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm
@@ -36,9 +36,11 @@
 #import &quot;WKStringCF.h&quot;
 #import &lt;WebCore/AXObjectCache.h&gt;
 #import &lt;WebCore/Document.h&gt;
+#import &lt;WebCore/FrameTree.h&gt;
 #import &lt;WebCore/LocalFrame.h&gt;
 #import &lt;WebCore/LocalFrameView.h&gt;
 #import &lt;WebCore/Page.h&gt;
+#import &lt;WebCore/RemoteFrame.h&gt;
 #import &lt;WebCore/ScrollView.h&gt;
 #import &lt;WebCore/Scrollbar.h&gt;

@@ -57,11 +59,17 @@ namespace ax = WebCore::Accessibility;
     if (!page)
         return nullptr;

-    auto* localMainFrame = dynamicDowncast&lt;WebCore::LocalFrame&gt;(page-&gt;mainFrame());
-    if (!localMainFrame || !localMainFrame-&gt;document())
-        return nullptr;
+    if (auto* localMainFrame = dynamicDowncast&lt;WebCore::LocalFrame&gt;(page-&gt;mainFrame())) {
+        if (auto* document = localMainFrame-&gt;document())
+            return document-&gt;axObjectCache();
+    } else if (auto* remoteMainFrame = dynamicDowncast&lt;WebCore::RemoteFrame&gt;(page-&gt;mainFrame())) {
+        auto&amp; tree = remoteMainFrame-&gt;tree();
+        auto* firstFrame = dynamicDowncast&lt;WebCore::LocalFrame&gt;(tree.firstChild());
+        auto* document = firstFrame ? firstFrame-&gt;document() : nullptr;
+        return document ? document-&gt;axObjectCache() : nullptr;
+    }

-    return localMainFrame-&gt;document()-&gt;axObjectCache();
+    return nullptr;
 }

 - (id)accessibilityPluginObject
@@ -152,6 +160,17 @@ namespace ax = WebCore::Accessibility;
     m_hasMainFramePlugin = hasPlugin;
 }

+- (void)setRemoteFrameOffset:(WebCore::IntPoint)offset
+{
+    ASSERT(isMainRunLoop());
+    m_remoteFrameOffset = offset;
+}
+
+- (WebCore::IntPoint)accessibilityRemoteFrameOffset
+{

AG: should we ASSERT(isMainRunLoop()); here too?

+    return m_remoteFrameOffset;
+}
+
 - (void)setRemoteParent:(id)parent
 {
     ASSERT(isMainRunLoop());</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014846</commentid>
    <comment_count>48</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2024-02-17 12:39:22 -0800</bug_when>
    <thetext>diff --git a/Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm b/Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm
index 96ed64adbcff..5f9b880c80bf 100644
--- a/Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm
+++ b/Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm
@@ -123,16 +123,12 @@ void WebPage::platformInitializeAccessibility()
     // Currently, it is also needed to allocate and initialize an NSApplication object.
     [NSApplication _accessibilityInitialize];

-    auto mockAccessibilityElement = adoptNS([[WKAccessibilityWebPageObject alloc] init]);
-
     // Get the pid for the starting process.
     pid_t pid = WebCore::presentingApplicationPID();
-    if ([mockAccessibilityElement respondsToSelector:@selector(accessibilitySetPresenterProcessIdentifier:)])
-        [(id)mockAccessibilityElement.get() accessibilitySetPresenterProcessIdentifier:pid];
-    [mockAccessibilityElement setWebPage:this];
-    m_mockAccessibilityElement = WTFMove(mockAccessibilityElement);
-
-    accessibilityTransferRemoteToken(accessibilityRemoteTokenData());
+    createMockAccessibilityElement(pid);
+    RefPtr localMainFrame = dynamicDowncast&lt;LocalFrame&gt;(m_page-&gt;mainFrame());

AG: m_page null check?

+    if (localMainFrame)
+        accessibilityTransferRemoteToken(accessibilityRemoteTokenData(), localMainFrame-&gt;frameID());

     // Close Mach connection to Launch Services.
 #if HAVE(LS_SERVER_CONNECTION_STATUS_RELEASE_NOTIFICATIONS_MASK)
@@ -144,9 +140,20 @@ void WebPage::platformInitializeAccessibility()
     WebProcess::singleton().revokeLaunchServicesSandboxExtension();
 }

+void WebPage::createMockAccessibilityElement(pid_t pid)
+{
+    auto mockAccessibilityElement = adoptNS([[WKAccessibilityWebPageObject alloc] init]);
+
+    if ([mockAccessibilityElement respondsToSelector:@selector(accessibilitySetPresenterProcessIdentifier:)])
+        [(id)mockAccessibilityElement.get() accessibilitySetPresenterProcessIdentifier:pid];
+    [mockAccessibilityElement setWebPage:this];
+    m_mockAccessibilityElement = WTFMove(mockAccessibilityElement);
+}
+
 void WebPage::platformReinitialize()
 {
-    accessibilityTransferRemoteToken(accessibilityRemoteTokenData());
+    Ref frame = m_page-&gt;focusController().focusedOrMainFrame();

AG: m_page null check?

+    accessibilityTransferRemoteToken(accessibilityRemoteTokenData(), frame-&gt;frameID());
 }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014959</commentid>
    <comment_count>49</comment_count>
      <attachid>469953</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2024-02-18 13:21:26 -0800</bug_when>
    <thetext>Created attachment 469953
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2014973</commentid>
    <comment_count>50</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2024-02-18 15:17:29 -0800</bug_when>
    <thetext>Committed 274955@main (9a0be8b71b1e): &lt;https://commits.webkit.org/274955@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 469953.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>469736</attachid>
            <date>2024-02-06 00:20:28 -0800</date>
            <delta_ts>2024-02-15 01:33:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-268804-20240206002028.patch</filename>
            <type>text/plain</type>
            <size>106340</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">RnJvbSA0ZjUyNmI1NzIyNTg5MzQwNWMwZDk0MWY3MzM4YWY0ZDAwN2Y3Nzg0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpcyBGbGVpemFjaCA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4K
RGF0ZTogTW9uLCA1IEZlYiAyMDI0IDIzOjM5OjM3IC0wODAwClN1YmplY3Q6IFtQQVRDSF0gQVg6
IFN1cHBvcnQgc2l0ZSBpc29sYXRpb24gZm9yIFZvaWNlT3ZlcgogaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTI2ODgwNCByZGFyOi8vOTk2NjU1NjEKClJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgoKSW5pdGlhbCBzdXBwb3J0IGZvciBzaXRlIGlzb2xhdGlvbiBmb3Ig
Vm9pY2VPdmVyLgoKV2hlbiBhIHNjcm9sbCB2aWV3IGhvc3RzIGEgUmVtb3RlRnJhbWUgaXQgYmlu
ZHMgaXRzZWxmIHRvIHRoZSBvdGhlciBzaWRlIHRocm91Z2ggYSBXZWJQYWdlIG1lc3NhZ2UuClRo
aXMgdHJhbnNmZXJzIGRhdGEgdG9rZW5zIHNvIEFjY2Vzc2liaWxpdHkgcmVtb3RlIGVsZW1lbnRz
IGFyZSBjcmVhdGVkIGFuZCBob29rZWQgdXAuCgpUaGUgYm91bmRpbmcgYm94ZXMgaW5zaWRlIHRo
ZSBzdWIgZnJhbWVzIG5lZWQgdG8gaGF2ZSB0aGUgaW5pdGlhbCBvZmZzZXQgYXBwbGllZCBhbmQg
dGhlbiBuZWVkIHRvIGJlIGNvbnZlcnRlZAplYWNoIHN0ZXAgdXAgdGhlIGNoYWluIHRvIGFjY291
bnQgZm9yIHNjcm9sbCBvZmZzZXRzIHRoYXQgb25seSBlYWNoIHByb2Nlc3Mga25vd3MgYWJvdXQu
CgoqIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0OgoqIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYQ29yZU9iamVjdC5oOgooV2ViQ29yZTo6YWNjZXNzaWJpbGl0eVJvbGVUb1N0cmluZyk6CihX
ZWJDb3JlOjpBWENvcmVPYmplY3Q6OmlzUmVtb3RlRnJhbWUgY29uc3QpOgoqIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhMb2dnZXIuY3BwOgooV2ViQ29yZTo6c3RyZWFtQVhDb3JlT2Jq
ZWN0KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgoo
V2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Y3JlYXRlKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6
Om9uUmVtb3RlRnJhbWVJbml0aWFsaXplZCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnJlbGF0aXZl
RnJhbWUgY29uc3QpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6cmVtb3RlRnJhbWVP
ZmZzZXQgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJl
bW90ZUZyYW1lLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFt
ZUNsaWVudC5oLgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lOjpjcmVhdGUpOgoo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lOjpBY2Nlc3NpYmlsaXR5UmVtb3RlRnJh
bWUpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lOjplbGVtZW50UmVjdCBjb25z
dCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVtb3RlRnJh
bWUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZUNsaWVudC5o
LgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHA6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRBdHRhY2htZW50
Q2hpbGRyZW4pOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkQ2hpbGRy
ZW4pOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZp
ZXcuY3BwOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmRldGFjaFJlbW90ZVBh
cnRzKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpjbGVhckNoaWxkcmVuKToK
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjphZGRSZW1vdGVGcmFtZUNoaWxkKToK
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjphZGRDaGlsZHJlbik6CihXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6d2ViQXJlYU9iamVjdCBjb25zdCk6CihXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6ZG9jdW1lbnQgY29uc3QpOgooV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXc6OnBhcmVudE9iamVjdCBjb25zdCk6CiogU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oOgoqIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwOgooV2Vi
Q29yZTo6QVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgooV2ViQ29yZTo6
QVhJc29sYXRlZE9iamVjdDo6c2V0UHJvcGVydHkpOgooV2ViQ29yZTo6QVhJc29sYXRlZE9iamVj
dDo6cmVtb3RlRnJhbWVPZmZzZXQgY29uc3QpOgooV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6
cmVsYXRpdmVGcmFtZSBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29s
YXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcDoKKFdlYkNvcmU6OkFYSXNvbGF0ZWRU
cmVlOjp1cGRhdGVOb2RlUHJvcGVydGllcyk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9tYWMvQVhJc29sYXRlZE9iamVjdE1hYy5tbToKKFdlYkNvcmU6
OkFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVQbGF0Zm9ybVByb3BlcnRpZXMpOgooV2ViQ29y
ZTo6QVhJc29sYXRlZE9iamVjdDo6cmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQgY29uc3QpOgoq
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMu
bW06CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWU6OmdlbmVyYXRlUmVtb3RlVG9r
ZW4gY29uc3QpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lOjppbml0aWFsaXpl
UGxhdGZvcm1FbGVtZW50V2l0aFJlbW90ZVRva2VuKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHk6
OmNyZWF0ZVBsYXRmb3JtUm9sZU1hcCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tOgoobWFrZU5TQXJyYXkpOgoq
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyTWFjLm1tOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciByb2xlXSk6Cigt
W1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGlzRW1wdHlHcm91cF0pOgooLVtXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlciByb2xlRGVzY3JpcHRpb25dKToKKC1bV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIgX3RyYW5zZm9ybVNwZWNpYWxDaGlsZHJlbkNhc2VzOl0pOgooLVtX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
XSk6CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlIaXRUZXN0
Ol0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBBTExPV19ERVBSRUNBVEVEX0lN
UExFTUVOVEFUSU9OU19FTkRdKToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOmZvclBhcmFtZXRlcjpdKToKKC1bV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUluZGV4T2ZDaGlsZDpdKToKKC1bV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUFycmF5QXR0cmlidXRlQ291bnQ6
XSk6CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBcnJheUF0
dHJpYnV0ZVZhbHVlczppbmRleDptYXhDb3VudDpdKToKKiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmNwcDoKKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmFjY2Vz
c2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCk6CiogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
RnJhbWVMb2FkZXJDbGllbnQuaDoKKiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9jYWxGcmFtZUxv
YWRlckNsaWVudC5oOgoqIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHA6CihXZWJDb3JlOjpQ
YWdlOjpzaG91bGRVcGRhdGVBY2Nlc3NpYmlsaXR5UmVnaW9ucyBjb25zdCk6CiogU291cmNlL1dl
YkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5jcHA6CihXZWJDb3JlOjpSZW1vdGVGcmFtZTo6dXBkYXRl
UmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KToKKFdlYkNvcmU6OlJlbW90ZUZyYW1lOjp1
bmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKToKKFdlYkNvcmU6OlJlbW90ZUZyYW1lOjpi
aW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyk6CiogU291cmNlL1dlYkNvcmUvcGFnZS9SZW1v
dGVGcmFtZS5oOgoqIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVDbGllbnQuaDoKKiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CiogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOgooV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQ
cm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKToKKiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwOgooV2ViS2l0OjpXZWJGcmFtZVByb3h5OjpiaW5kQWNj
ZXNzaWJpbGl0eUZyYW1lV2l0aERhdGEpOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZy
YW1lUHJveHkuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgoo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnN3YXBUb1Byb3Zpc2lvbmFsUGFnZSk6CihXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6YmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMpOgooV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldCk6CiogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CiogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5tbToKKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmFjY2Vzc2liaWxpdHlX
ZWJQcm9jZXNzVG9rZW5SZWNlaXZlZCk6CiogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dl
YlBhZ2VQcm94eUlPUy5tbToKKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWdpc3RlcldlYlByb2Nl
c3NBY2Nlc3NpYmlsaXR5VG9rZW4pOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdl
Q2xpZW50SW1wbE1hYy5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbE1hYy5tbToKKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmFjY2Vzc2liaWxpdHlXZWJQcm9j
ZXNzVG9rZW5SZWNlaXZlZCk6CiogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQ
cm94eU1hYy5tbToKKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWdpc3RlcldlYlByb2Nlc3NBY2Nl
c3NpYmlsaXR5VG9rZW4pOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3SW1w
bC5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3SW1wbC5tbToKKFdlYktp
dDo6V2ViVmlld0ltcGw6OnNldEFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW4pOgoqIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJMb2NhbEZyYW1lTG9hZGVyQ2xp
ZW50LmNwcDoKKFdlYktpdDo6V2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudDo6YWNjZXNzaWJpbGl0
eVJlbW90ZUZyYW1lT2Zmc2V0KToKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudC5oOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVudC5jcHA6CihXZWJLaXQ6Oldl
YlJlbW90ZUZyYW1lQ2xpZW50Ojp1bmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKToKKFdl
YktpdDo6V2ViUmVtb3RlRnJhbWVDbGllbnQ6OnVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0
eU9mZnNldCk6CihXZWJLaXQ6OldlYlJlbW90ZUZyYW1lQ2xpZW50OjpiaW5kUmVtb3RlQWNjZXNz
aWJpbGl0eUZyYW1lcyk6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlJlbW90ZUZyYW1lQ2xpZW50Lmg6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tOgooV2ViS2l0OjpXZWJQYWdlOjphY2Nlc3NpYmlsaXR5
VHJhbnNmZXJSZW1vdGVUb2tlbik6CihXZWJLaXQ6OldlYlBhZ2U6OmFjY2Vzc2liaWxpdHlNYW5h
Z2VSZW1vdGVFbGVtZW50U3RhdHVzKToKKFdlYktpdDo6V2ViUGFnZTo6YmluZFJlbW90ZUFjY2Vz
c2liaWxpdHlGcmFtZXMpOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaDoKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
OgooV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemVBY2Nlc3NpYmlsaXR5KToKKFdl
YktpdDo6V2ViUGFnZTo6cGxhdGZvcm1SZWluaXRpYWxpemUpOgooV2ViS2l0OjpXZWJQYWdlOjph
Y2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQpOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oOgoqIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2Jq
ZWN0QmFzZS5tbToKKC1bV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UgYXhPYmplY3RD
YWNoZV0pOgooLVtXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZSBzZXRSZW1vdGVGcmFt
ZU9mZnNldDpdKToKKC1bV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UgYWNjZXNzaWJp
bGl0eVJlbW90ZUZyYW1lT2Zmc2V0XSk6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYlBhZ2VNYWMubW06CihXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6
ZUFjY2Vzc2liaWxpdHkpOgooV2ViS2l0OjpXZWJQYWdlOjpjcmVhdGVNb2NrQWNjZXNzaWJpbGl0
eUVsZW1lbnQpOgooV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybVJlaW5pdGlhbGl6ZSk6CihXZWJL
aXQ6OldlYlBhZ2U6OnVwZGF0ZVJlbW90ZVBhZ2VBY2Nlc3NpYmlsaXR5T2Zmc2V0KToKKFdlYktp
dDo6V2ViUGFnZTo6cmVnaXN0ZXJSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlUb2tlbnMpOgooV2Vi
S2l0OjpXZWJQYWdlOjpyZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMpOgooV2Vi
S2l0OjpXZWJQYWdlOjphY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQpOgoqIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1dlYlByb2Nlc3NDb2NvYS5tbToKKFdlYktpdDo6V2ViUHJvY2Vzczo6YmluZEFjY2Vzc2liaWxp
dHlGcmFtZVdpdGhEYXRhKToKKiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgotLS0KIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
ICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiAuLi4vV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogfCAgIDQgKwogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WENvcmVPYmplY3QuaCAgIHwgIDExICsrCiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
TG9nZ2VyLmNwcCAgICAgfCAgIDMgKwogLi4uL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVj
dENhY2hlLmNwcCAgIHwgIDExICstCiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuaCAgfCAgIDIgKwogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5jcHAgICAgIHwgIDE2ICsrLQogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5oICAgICAgIHwgICA1ICsKIC4uLi9BY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWUuY3BwICAgICAg
ICAgICAgICB8ICA1NCArKysrKysrKwogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJl
bW90ZUZyYW1lLmggIHwgIDYzICsrKysrKysrKwogLi4uL0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwICAgICAgICAgICAgIHwgICA0ICstCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5U2Nyb2xsVmlldy5jcHAgfCAgNjUgKysrKysrKystLQogLi4uL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXcuaCAgIHwgICA2ICstCiAuLi4vaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRPYmplY3QuY3BwICAgICAgICAgfCAgMzYgKysrKystCiAuLi4vaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRPYmplY3QuaCAgICAgICAgICAgfCAgIDUgKy0KIC4uLi9pc29sYXRlZHRyZWUvQVhJ
c29sYXRlZFRyZWUuY3BwICAgICAgICAgICB8ICAgNiArCiAuLi4vaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRUcmVlLmggICAgICAgICAgICAgfCAgIDQgKwogLi4uL2lzb2xhdGVkdHJlZS9tYWMvQVhJ
c29sYXRlZE9iamVjdE1hYy5tbSAgIHwgICA4ICsrCiAuLi4vbWFjL0FjY2Vzc2liaWxpdHlPYmpl
Y3RNYWMubW0gICAgICAgICAgICAgfCAgMjcgKysrKwogLi4uL21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlckJhc2UubW0gIHwgICA1ICstCiAuLi4vbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyTWFjLm1tICAgfCAxMjAgKysrKysrKysrKysrLS0tLS0tCiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCAgICAgICAgfCAgIDUgKwogLi4uL1dlYkNvcmUv
bG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaCAgIHwgICAxICsKIC4uLi9XZWJDb3JlL2xv
YWRlci9Mb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmggICB8ICAgMSArCiBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwICAgICAgICAgICAgICAgICAgfCAgMTAgKy0KIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUmVtb3RlRnJhbWUuY3BwICAgICAgICAgICB8ICAxNSArKysKIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUmVtb3RlRnJhbWUuaCAgICAgICAgICAgICB8ICAgNCArCiBTb3VyY2UvV2ViQ29yZS9wYWdl
L1JlbW90ZUZyYW1lQ2xpZW50LmggICAgICAgfCAgIDQgKwogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGFnZUNsaWVudC5oICAgICAgICAgIHwgICAzICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9Q
cm92aXNpb25hbFBhZ2VQcm94eS5jcHAgfCAgIDIgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL1By
b3Zpc2lvbmFsUGFnZVByb3h5LmggICB8ICAgMiArLQogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViRnJhbWVQcm94eS5jcHAgICAgIHwgICA5ICsrCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJGcmFtZVByb3h5LmggICAgICAgfCAgIDIgKwogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcCAgICAgIHwgIDI0ICsrKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oICAgICAgICB8ICAgNCArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluIHwgICA0ICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MuaCAgfCAgIDIgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5tbSB8ICAgMiArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBh
Z2VQcm94eUlPUy5tbSAgIHwgICA0ICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGxNYWMuaCAgfCAgIDIgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xp
ZW50SW1wbE1hYy5tbSB8ICAgNCArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQ
cm94eU1hYy5tbSAgIHwgICA0ICstCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmll
d0ltcGwuaCAgICAgfCAgIDMgKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3
SW1wbC5tbSAgICB8ICAgOCArLQogLi4uL1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuY3BwICAg
ICAgICAgICAgIHwgICA5ICsrCiAuLi4vV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudC5oICAgICAg
ICAgICAgICAgfCAgIDEgKwogLi4uL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90ZUZyYW1lQ2xpZW50
LmNwcCAgIHwgIDM5ICsrKysrKwogLi4uL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90ZUZyYW1lQ2xp
ZW50LmggICAgIHwgICA0ICsKIC4uLi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNv
Y29hLm1tICB8ICA0MiArKysrKy0KIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaCAgICB8ICAxNSArKy0KIC4uLi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbiAgICB8ICAgNSArLQogLi4uL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbSAgICAgIHwgIDEyICstCiAuLi4vbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RC
YXNlLmggICAgfCAgIDQgKwogLi4uL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFz
ZS5tbSAgIHwgIDI2ICsrKy0KIC4uLi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMu
bW0gICAgICB8ICA0NCArKysrKy0tCiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oICAgICAgICAgfCAgIDggKysKIC4uLi9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluICB8ICAgMSArCiAuLi4vV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2Eu
bW0gICAgICAgfCAgMTAgKysKIC4uLi9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaCB8ICAgMSArCiA1OSBmaWxlcyBjaGFuZ2VkLCA2OTQgaW5zZXJ0aW9ucygrKSwgMTAy
IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lLmgKCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CmluZGV4IDNkM2UxMmY3YTMxOS4uMTY5YjE3YzczNDJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dApAQCAtNTQzLDYgKzU0Myw3IEBAIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1vY2tPYmpl
Y3QuY3BwCiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UHJvZ3Jlc3NJbmRpY2F0b3IuY3BwCithY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW1v
dGVGcmFtZS5jcHAKIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAK
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNWR0VsZW1lbnQuY3BwCiBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlTVkdSb290LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDQyNTNmZGJmYmYwOS4uYjc3NmUwNmY3Njhm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC04OTUwLDYgKzg5NTAsOCBAQAogCQkyOTQ4OUZDNTEyQzAwRjAzMDBEODNGMEYgLyog
QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMjk0OTg2ODExOTUzNDE5NDAwNzJEMkJEIC8qIFRleHRVbmRvSW5zZXJ0aW9uTWFya3VwTWFj
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVGV4dFVuZG9JbnNl
cnRpb25NYXJrdXBNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5NEJEQUU2
MjFGRjU4MkEwMDUxMDc3QiAvKiBBY2Nlc3NpYmlsaXR5T2JqZWN0Q29jb2EubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5T2JqZWN0Q29jb2Eu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5NTVDRjExMkIyMzBBRTYwMDAxQkY4
MiAvKiBBY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJp
bGl0eVJlbW90ZUZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5NTVDRjEy
MkIyMzBBRTYwMDAxQkY4MiAvKiBBY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMjk3QkUzRDkxNkMwNDNEODAwMzMxNkJEIC8qIFBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTI5ODFBQkM0MTMxODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5ODFDQTlEMTMxODIyRUMwMEQxMkYyQSAvKiBB
Y2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0
eUFSSUFHcmlkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzMzcxLDYgKzIz
MzczLDggQEAKIAkJCQlBNDA5Qzk4MzExNkQwREREMDA3MTk3QkQgLyogQWNjZXNzaWJpbGl0eVBy
b2dyZXNzSW5kaWNhdG9yLmggKi8sCiAJCQkJMjk4MUNBQTYxMzE4MjJFQzAwRDEyRjJBIC8qIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwICovLAogCQkJCTI5QTgxMjFCMEZCQjlDMUQwMDUx
MDI5MyAvKiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmggKi8sCisJCQkJMjk1NUNGMTIyQjIz
MEFFNjAwMDFCRjgyIC8qIEFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZS5jcHAgKi8sCisJCQkJMjk1
NUNGMTEyQjIzMEFFNjAwMDFCRjgyIC8qIEFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZS5oICovLAog
CQkJCUE5RUU0NDhGMjEwRkQ2OUEwMEI2RUFFNiAvKiBBY2Nlc3NpYmlsaXR5Um9sZS5pZGwgKi8s
CiAJCQkJMjk4MUNBQTcxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlTY3JvbGxiYXIu
Y3BwICovLAogCQkJCTkzQzRGNkU5MTEwOEY5QTUwMDk5RDBEQiAvKiBBY2Nlc3NpYmlsaXR5U2Ny
b2xsYmFyLmggKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
Q29yZU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWENvcmVPYmplY3Qu
aAppbmRleCAwOWZjZTkwZDNlY2MuLjVkMGYzNTJlZWY2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BWENvcmVPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYQ29yZU9iamVjdC5oCkBAIC0yMDUsNiArMjA1LDcgQEAgZW51bSBjbGFz
cyBBY2Nlc3NpYmlsaXR5Um9sZSB7CiAgICAgUHJvZ3Jlc3NJbmRpY2F0b3IsCiAgICAgUmFkaW9C
dXR0b24sCiAgICAgUmFkaW9Hcm91cCwKKyAgICBSZW1vdGVGcmFtZSwKICAgICBSb3dIZWFkZXIs
CiAgICAgUm93LAogICAgIFJvd0dyb3VwLApAQCAtNDQyLDYgKzQ0Myw4IEBAIEFMV0FZU19JTkxJ
TkUgU3RyaW5nIGFjY2Vzc2liaWxpdHlSb2xlVG9TdHJpbmcoQWNjZXNzaWJpbGl0eVJvbGUgcm9s
ZSkKICAgICAgICAgcmV0dXJuICJSYWRpb0J1dHRvbiJfczsKICAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpSYWRpb0dyb3VwOgogICAgICAgICByZXR1cm4gIlJhZGlvR3JvdXAiX3M7CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmVtb3RlRnJhbWU6CisgICAgICAgIHJldHVybiAiUmVt
b3RlRnJhbWUiX3M7CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Um93SGVhZGVyOgogICAg
ICAgICByZXR1cm4gIlJvd0hlYWRlciJfczsKICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpS
b3c6CkBAIC04MTgsNiArODIxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vz
c2liaWxpdHlBUklBR3JpZFJvd0luc3RhbmNlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9v
bCBpc0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGxJbnN0YW5jZSgpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIGJvb2wgaXNBWElzb2xhdGVkT2JqZWN0SW5zdGFuY2UoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lKCkgY29uc3QgPSAwOwogCiAg
ICAgYm9vbCBpc0hlYWRpbmcoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6SGVhZGluZzsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0xpbmsoKSBjb25zdCA9
IDA7CkBAIC05MjIsNiArOTI2LDEyIEBAIHB1YmxpYzoKICAgICBib29sIGlzVHJlZUdyaWQoKSBj
b25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUdyaWQ7
IH0KICAgICBib29sIGlzVHJlZUl0ZW0oKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUl0ZW07IH0KICAgICBib29sIGlzU2Nyb2xsYmFyKCkgY29u
c3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlNjcm9sbEJhcjsg
fQorICAgIGJvb2wgaXNSZW1vdGVGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09
IEFjY2Vzc2liaWxpdHlSb2xlOjpSZW1vdGVGcmFtZTsgfQorI2lmIFBMQVRGT1JNKENPQ09BKQor
ICAgIHZpcnR1YWwgUmV0YWluUHRyPGlkPiByZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpIGNv
bnN0ID0gMDsKKyNlbmRpZgorICAgIHZpcnR1YWwgYm9vbCBoYXNSZW1vdGVGcmFtZUNoaWxkKCkg
Y29uc3QgPSAwOworCiAgICAgYm9vbCBpc0J1dHRvbigpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9v
bCBpc01ldGVyKCkgY29uc3QgPSAwOwogCkBAIC0xMTYxLDYgKzExNzEsNyBAQCBwdWJsaWM6CiAg
ICAgLy8gVmlld3BvcnQtcmVsYXRpdmUgbWVhbnMgdGhhdCB3aGVuIHRoZSBwYWdlIHNjcm9sbHMs
IHRoZSBwb3J0aW9uIG9mIHRoZSBwYWdlIGluIHRoZSB2aWV3cG9ydCBjaGFuZ2VzLCBhbmQgdGh1
cwogICAgIC8vIGFueSB2aWV3cG9ydC1yZWxhdGl2ZSByZWN0cyBkbyB0b28gKHNpbmNlIHRoZXkg
YXJlIGVpdGhlciBjbG9zZXIgdG8gb3IgZmFydGhlciBmcm9tIHRoZSB2aWV3cG9ydCBvcmlnaW4g
YWZ0ZXIgdGhlIHNjcm9sbCkuCiAgICAgdmlydHVhbCBGbG9hdFBvaW50IHNjcmVlblJlbGF0aXZl
UG9zaXRpb24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBJbnRQb2ludCByZW1vdGVGcmFtZU9m
ZnNldCgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgRmxvYXRSZWN0IGNvbnZlcnRGcmFtZVRv
U3BhY2UoY29uc3QgRmxvYXRSZWN0JiwgQWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZSkgY29u
c3QgPSAwOwogI2lmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWExvZ2dlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYTG9nZ2VyLmNwcAppbmRleCA2NTlkODg1ZTM1NTkuLmExYWM0ZTNmNzBlMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWExvZ2dlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWExvZ2dlci5jcHAKQEAgLTg3Myw2ICs4NzMsOSBAQCB2
b2lkIHN0cmVhbUFYQ29yZU9iamVjdChUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IEFYQ29yZU9i
amVjdCYgb2JqZWN0LCBjb25zdCBPcAogICAgIGlmIChvcHRpb25zICYgQVhTdHJlYW1PcHRpb25z
OjpSb2xlKQogICAgICAgICBzdHJlYW0uZHVtcFByb3BlcnR5KCJyb2xlIiwgb2JqZWN0LnJvbGVW
YWx1ZSgpKTsKIAorICAgIGlmIChvYmplY3QucmVuZGVyZXIoKSkKKyAgICAgICAgc3RyZWFtLmR1
bXBQcm9wZXJ0eSgicmVuZGVyTmFtZSIsIG9iamVjdC5yZW5kZXJlcigpLT5yZW5kZXJOYW1lKCkp
OworCiAgICAgaWYgKG9wdGlvbnMgJiBBWFN0cmVhbU9wdGlvbnM6OlBhcmVudElEKSB7CiAgICAg
ICAgIGF1dG8qIHBhcmVudCA9IG9iamVjdC5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICAg
ICAgc3RyZWFtLmR1bXBQcm9wZXJ0eSgicGFyZW50SUQiLCBwYXJlbnQgPyBwYXJlbnQtPm9iamVj
dElEKCkgOiBBWElEKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5jcHAKaW5kZXggYThkOGExOGNjZmRjLi5iNDJhMjI1YTA3ZDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtNTAsNiArNTAs
NyBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbi5oIgogI2luY2x1ZGUg
IkFjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVBy
b2dyZXNzSW5kaWNhdG9yLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lLmgi
CiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIkFjY2Vz
c2liaWxpdHlTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVNWR1Jvb3QuaCIK
QEAgLTEwNDMsNyArMTA0NCwxMCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hl
OjpjcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSkKICAgICAgICAgYnJlYWs7ICAgICAgICAg
ICAgCiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFibGVIZWFkZXJDb250YWluZXI6CiAg
ICAgICAgIG9iaiA9IEFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lcjo6Y3JlYXRlKCk7
Ci0gICAgICAgIGJyZWFrOyAgIAorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpSZW1vdGVGcmFtZToKKyAgICAgICAgb2JqID0gQWNjZXNzaWJpbGl0eVJlbW90ZUZy
YW1lOjpjcmVhdGUoKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6U2xpZGVyVGh1bWI6CiAgICAgICAgIG9iaiA9IEFjY2Vzc2liaWxpdHlTbGlkZXJUaHVtYjo6
Y3JlYXRlKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTMzOSw2ICsxMzQzLDExIEBAIHZvaWQgQVhP
YmplY3RDYWNoZTo6aGFuZGxlUmVjb21wdXRlQ2VsbFNsb3RzKEFjY2Vzc2liaWxpdHlUYWJsZSYg
YXhUYWJsZSkKICNlbmRpZgogfQogCit2b2lkIEFYT2JqZWN0Q2FjaGU6Om9uUmVtb3RlRnJhbWVJ
bml0aWFsaXplZChBY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWUmIHJlbW90ZUZyYW1lKQoreworICAg
IHVwZGF0ZUlzb2xhdGVkVHJlZShyZW1vdGVGcmFtZSwgQVhQcm9wZXJ0eU5hbWU6OlJlbW90ZUZy
YW1lUGxhdGZvcm1FbGVtZW50KTsKK30KKwogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xB
VEVEX1RSRUUpCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZVJvd3NwYW5DaGFuZ2VkKEFjY2Vz
c2liaWxpdHlUYWJsZUNlbGwmIGF4Q2VsbCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmgKaW5kZXggNjk3MGViN2UzMzM5Li5hNjM1ZWMwNjgyZTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCkBAIC00Nyw2
ICs0Nyw3IEBAIGNsYXNzIFRleHRTdHJlYW07CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgQWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lOwogY2xhc3MgQWNjZXNzaWJpbGl0eVRhYmxlOwog
Y2xhc3MgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDsKIGNsYXNzIERvY3VtZW50OwpAQCAtMjQ2LDYg
KzI0Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlZmVyTm9kZUFkZGVkT3JSZW1vdmVkKE5vZGUq
KTsKICAgICB2b2lkIGhhbmRsZVNjcm9sbGVkVG9BbmNob3IoY29uc3QgTm9kZSogYW5jaG9yTm9k
ZSk7CiAgICAgdm9pZCBvblNjcm9sbGJhclVwZGF0ZShTY3JvbGxWaWV3Kik7CisgICAgdm9pZCBv
blJlbW90ZUZyYW1lSW5pdGlhbGl6ZWQoQWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lJik7CiAKICAg
ICBib29sIGlzUmV0cmlldmluZ0N1cnJlbnRNb2RhbE5vZGUoKSB7IHJldHVybiBtX2lzUmV0cmll
dmluZ0N1cnJlbnRNb2RhbE5vZGU7IH0KICAgICBOb2RlKiBtb2RhbE5vZGUoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmlu
ZGV4IGRlOWFjMjU5ODIxNy4uZWJjMzE0MjEwZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTU0NCw3ICs1NDQs
MTAgQEAgRmxvYXRSZWN0IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmNvbnZlcnRGcmFtZVRvU3BhY2Uo
Y29uc3QgRmxvYXRSZWN0JiBmcmFtZVJlY3QsIEEKICAgICAKIEZsb2F0UmVjdCBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpyZWxhdGl2ZUZyYW1lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gY29udmVydEZy
YW1lVG9TcGFjZShlbGVtZW50UmVjdCgpLCBBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlOjpQ
YWdlKTsKKyAgICBhdXRvIHJlY3QgPSBlbGVtZW50UmVjdCgpOworICAgIGF1dG8gcmVtb3RlT2Zm
c2V0ID0gcmVtb3RlRnJhbWVPZmZzZXQoKTsKKyAgICByZWN0Lm1vdmUocmVtb3RlT2Zmc2V0Lngo
KSwgcmVtb3RlT2Zmc2V0LnkoKSk7CisgICAgcmV0dXJuIGNvbnZlcnRGcmFtZVRvU3BhY2UocmVj
dCwgQWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZTo6UGFnZSk7CiB9CiAKIEFjY2Vzc2liaWxp
dHlPYmplY3QqIEFjY2Vzc2liaWxpdHlPYmplY3Q6Om5leHRTaWJsaW5nVW5pZ25vcmVkKGludCBs
aW1pdCkgY29uc3QKQEAgLTIwOTIsNiArMjA5NSwxNyBAQCBSZW1vdGVBWE9iamVjdFJlZiBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpyZW1vdGVQYXJlbnRPYmplY3QoKSBjb25zdAogICAgIH0KICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KKworSW50UG9pbnQgQWNjZXNzaWJpbGl0eU9iamVjdDo6cmVtb3Rl
RnJhbWVPZmZzZXQoKSBjb25zdAoreworICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRv
Y3VtZW50KCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCkp
CisgICAgICAgICAgICByZXR1cm4gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmFjY2Vzc2liaWxp
dHlSZW1vdGVGcmFtZU9mZnNldCgpOworICAgIH0KKworICAgIHJldHVybiB7IH07Cit9CisKICNl
bmRpZgogCiBEb2N1bWVudCogQWNjZXNzaWJpbGl0eU9iamVjdDo6ZG9jdW1lbnQoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
aAppbmRleCAwYWY3NzQzOWMzNTUuLmZiYTFlMDUxNWExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTEwMiw2ICsxMDIs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Qo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJv
b2wgaXNBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICBib29sIGlzQWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlld0lu
c3RhbmNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nl
c3NpYmlsaXR5U1ZHUm9vdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0Fj
Y2Vzc2liaWxpdHlUYWJsZUluc3RhbmNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KQEAgLTQ2Myw4ICs0NjQsMTIgQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgUmVtb3RlQVhPYmplY3RSZWYgcmVtb3RlUGFyZW50T2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgSW50UG9pbnQgcmVtb3RlRnJhbWVPZmZzZXQoKSBjb25zdCBvdmVycmlkZTsKICAgICBG
bG9hdFJlY3QgY29udmVydFJlY3RUb1BsYXRmb3JtU3BhY2UoY29uc3QgRmxvYXRSZWN0JiwgQWNj
ZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmV0YWluUHRy
PGlkPiByZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG5pbDsgfQogI2VuZGlmCisgICAgYm9vbCBoYXNSZW1vdGVGcmFtZUNoaWxkKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIFBhZ2UqIHBhZ2UoKSBjb25zdCBvdmVycmlk
ZTsKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCBvdmVycmlkZTsKICAgICBMb2NhbEZy
YW1lVmlldyogZG9jdW1lbnRGcmFtZVZpZXcoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1l
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmNlOTJhYjJjNjZl
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbW90ZUZyYW1lLmNwcApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDI0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZS5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxBY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWU+IEFj
Y2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBBY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWUpOworfQorCitBY2Nlc3NpYmlsaXR5UmVtb3Rl
RnJhbWU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZSgpCis6CisjaWYgUExBVEZPUk0oQ09DT0Ep
CisgICAgbV9yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudChudWxscHRyKQorICAgICwKKyNlbmRp
ZgorICAgIG1fcHJvY2Vzc0lkZW50aWZpZXIoMCkKK3sKK30KKworTGF5b3V0UmVjdCBBY2Nlc3Np
YmlsaXR5UmVtb3RlRnJhbWU6OmVsZW1lbnRSZWN0KCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byog
cGFyZW50ID0gcGFyZW50T2JqZWN0KCkpCisgICAgICAgIHJldHVybiBwYXJlbnQtPmVsZW1lbnRS
ZWN0KCk7CisKKyAgICByZXR1cm4geyB9OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW1v
dGVGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVt
b3RlRnJhbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjE4N2I2
MWYzMjIwMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU1vY2tPYmplY3QuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSZW1vdGVGcmFtZTsKKworY2xhc3MgQWNjZXNz
aWJpbGl0eVJlbW90ZUZyYW1lIGZpbmFsIDogcHVibGljIEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZT4gY3Jl
YXRlKCk7CisKKyAgICB2b2lkIGluaXRpYWxpemVQbGF0Zm9ybUVsZW1lbnRXaXRoUmVtb3RlVG9r
ZW4oY29uc3QgRGF0YVNlZ21lbnQmLCBpbnQpOworCisgICAgUmVmUHRyPERhdGFTZWdtZW50PiBn
ZW5lcmF0ZVJlbW90ZVRva2VuKCkgY29uc3Q7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgUmV0
YWluUHRyPGlkPiByZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fcmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQ7IH0KKyAgICBpbnQgcHJvY2Vzc0lkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3NJZGVudGlmaWVyOyB9CisjZW5kaWYKKwor
cHJpdmF0ZToKKyAgICBleHBsaWNpdCBBY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWUoKTsKKyAgICB2
aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWUoKSA9IGRlZmF1bHQ7CisKKyAgICBBY2Nl
c3NpYmlsaXR5Um9sZSBkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpIGZpbmFsIHsgcmV0dXJu
IEFjY2Vzc2liaWxpdHlSb2xlOjpSZW1vdGVGcmFtZTsgfQorICAgIGJvb2wgY29tcHV0ZUFjY2Vz
c2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAg
IGJvb2wgaXNBY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CisgICAgTGF5b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0IG92ZXJyaWRlOwor
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgUmV0YWluUHRyPGlkPiBtX3JlbW90ZUZyYW1lUGxh
dGZvcm1FbGVtZW50OworI2VuZGlmCisgICAgcGlkX3QgbV9wcm9jZXNzSWRlbnRpZmllcjsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19BQ0NF
U1NJQklMSVRZKEFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZSwgaXNBY2Nlc3NpYmlsaXR5UmVtb3Rl
RnJhbWUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IGJiNjg2MDdkOWI3Yy4uMmRlYjVkMDU3
Zjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTIzOTUsNyArMjM5NSw3IEBAIHZvaWQgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkQXR0YWNobWVudENoaWxkcmVuKCkKIAogICAgIC8v
IExvY2FsRnJhbWVWaWV3J3MgbmVlZCB0byBiZSBpbnNlcnRlZCBpbnRvIHRoZSBBWCBoaWVyYXJj
aHkgd2hlbiBlbmNvdW50ZXJlZC4KICAgICBXaWRnZXQqIHdpZGdldCA9IHdpZGdldEZvckF0dGFj
aG1lbnRWaWV3KCk7Ci0gICAgaWYgKCF3aWRnZXQgfHwgIXdpZGdldC0+aXNMb2NhbEZyYW1lVmll
dygpKQorICAgIGlmICghd2lkZ2V0IHx8ICEod2lkZ2V0LT5pc0xvY2FsRnJhbWVWaWV3KCkgfHwg
d2lkZ2V0LT5pc1JlbW90ZUZyYW1lVmlldygpKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAg
IGFkZENoaWxkKGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUod2lkZ2V0KSk7CkBAIC0yNTUw
LDcgKzI1NTAsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENoaWxkcmVu
KCkKICAgICAgICAgYXV0byBvd25lcnMgPSBvYmplY3Qub3duZXJzKCk7CiAgICAgICAgIGlmIChv
d25lcnMuc2l6ZSgpICYmICFvd25lcnMuY29udGFpbnModGhpcykpCiAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIAorCiAgICAgICAgIGFkZENoaWxkKCZvYmplY3QpOwogICAgIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9s
bFZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Ny
b2xsVmlldy5jcHAKaW5kZXggNmJjODQxZWJiMDY3Li4yNGQyMDA1ODc3N2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZp
ZXcuY3BwCkBAIC0yNywxMCArMjcsMTIgQEAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5U2Nyb2xs
Vmlldy5oIgogCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgorI2luY2x1ZGUgIkFjY2Vzc2li
aWxpdHlSZW1vdGVGcmFtZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaCIK
ICNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJMb2NhbEZyYW1l
LmgiCiAjaW5jbHVkZSAiTG9jYWxGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJSZW1vdGVGcmFtZVZp
ZXcuaCIKICNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiV2lkZ2V0LmgiCiAK
QEAgLTUyLDYgKzU0LDE0IEBAIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojp+QWNjZXNzaWJpbGl0
eVNjcm9sbFZpZXcoKQogdm9pZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6ZGV0YWNoUmVtb3Rl
UGFydHMoQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlIGRldGFjaG1lbnRUeXBlKQogewogICAg
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRldGFjaFJlbW90ZVBhcnRzKGRldGFjaG1lbnRUeXBlKTsK
KworICAgIGlmIChpczxSZW1vdGVGcmFtZVZpZXc+KG1fc2Nyb2xsVmlldykgJiYgbV9yZW1vdGVG
cmFtZSAmJiAoZGV0YWNobWVudFR5cGUgPT0gQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlOjpF
bGVtZW50RGVzdHJveWVkIHx8IGRldGFjaG1lbnRUeXBlID09IEFjY2Vzc2liaWxpdHlEZXRhY2ht
ZW50VHlwZTo6Q2FjaGVEZXN0cm95ZWQpKSB7CisKKyAgICAgICAgYXV0byYgcmVtb3RlRnJhbWUg
PSBkb3duY2FzdDxSZW1vdGVGcmFtZVZpZXc+KCptX3Njcm9sbFZpZXcpLmZyYW1lKCk7CisgICAg
ICAgIHJlbW90ZUZyYW1lLnVuYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMobV9yZW1vdGVG
cmFtZS0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgICAgIG1fcmVtb3RlRnJhbWUgPSBudWxs
cHRyOworICAgIH0KKwogICAgIG1fc2Nyb2xsVmlldyA9IG51bGxwdHI7CiAgICAgbV9mcmFtZU93
bmVyRWxlbWVudCA9IG51bGxwdHI7CiB9CkBAIC0xNzcsOCArMTg3LDEwIEBAIEFjY2Vzc2liaWxp
dHlTY3JvbGxiYXIqIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjphZGRDaGlsZFNjcm9sbGJhcihT
Y3JvbGxiYXIqIHNjCiB2b2lkIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpjbGVhckNoaWxkcmVu
KCkKIHsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjbGVhckNoaWxkcmVuKCk7CisKICAgICBt
X3ZlcnRpY2FsU2Nyb2xsYmFyID0gbnVsbHB0cjsKICAgICBtX2hvcml6b250YWxTY3JvbGxiYXIg
PSBudWxscHRyOworCiAgICAgbV9jaGlsZHJlbkRpcnR5ID0gZmFsc2U7CiB9CiAKQEAgLTE5MSwx
MSArMjAzLDQyIEBAIGJvb2wgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmNvbXB1dGVBY2Nlc3Np
YmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKICAgICByZXR1cm4gd2ViQXJlYS0+YWNjZXNzaWJpbGl0
eUlzSWdub3JlZCgpOwogfQogCit2b2lkIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjphZGRSZW1v
dGVGcmFtZUNoaWxkKCkKK3sKKyAgICBpZiAoIWlzPFJlbW90ZUZyYW1lVmlldz4obV9zY3JvbGxW
aWV3KSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8qIGNhY2hlID0gYXhPYmplY3RDYWNoZSgp
OworICAgIGlmICghY2FjaGUpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9yZW1vdGVG
cmFtZSkgeworICAgICAgICAvLyBNYWtlIHRoZSBmYXV4IGVsZW1lbnQgdGhhdCByZXByZXNlbnRz
IHRoZSByZW1vdGUgdHJhbnNmZXIgZWxlbWVudCBmb3IgQVguCisgICAgICAgIGF1dG8mIHJlbW90
ZUZyYW1lID0gZG93bmNhc3Q8UmVtb3RlRnJhbWVWaWV3PigqbV9zY3JvbGxWaWV3KS5mcmFtZSgp
OworICAgICAgICBtX3JlbW90ZUZyYW1lID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVJlbW90ZUZy
YW1lPihjYWNoZS0+Y3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpSZW1vdGVGcmFtZSkpOworICAg
ICAgICBtX3JlbW90ZUZyYW1lLT5zZXRQYXJlbnQodGhpcyk7CisKKyAgICAgICAgLy8gR2VuZXJh
dGUgYSBuZXcgdG9rZW4gYW5kIHBhc3MgaXQgYmFjayB0byB0aGUgb3RoZXIgcmVtb3RlIGZyYW1l
IHNvIGl0IGNhbiBiaW5kIHRoZXNlIG9iamVjdHMgdG9nZXRoZXIuCisgICAgICAgIGF1dG8gZ2Vu
ZXJhdGVkVG9rZW4gPSBtX3JlbW90ZUZyYW1lLT5nZW5lcmF0ZVJlbW90ZVRva2VuKCk7CisgICAg
ICAgIHJlbW90ZUZyYW1lLmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGdldHBpZCgpLCAq
Z2VuZXJhdGVkVG9rZW4sIFt0aGlzLCAmcmVtb3RlRnJhbWUsIHByb3RlY3RlZEFjY2Vzc2JpbGl0
eVJlbW90ZUZyYW1lID0gUmVmUHRyIHsgbV9yZW1vdGVGcmFtZSB9XSAoY29uc3QgRGF0YVNlZ21l
bnQmIHRva2VuLCBpbnQgcHJvY2Vzc0lkZW50aWZpZXIpIG11dGFibGUgeworI2lmIE9TKERBUldJ
TikKKyAgICAgICAgICAgIHByb3RlY3RlZEFjY2Vzc2JpbGl0eVJlbW90ZUZyYW1lLT5pbml0aWFs
aXplUGxhdGZvcm1FbGVtZW50V2l0aFJlbW90ZVRva2VuKHRva2VuLCBwcm9jZXNzSWRlbnRpZmll
cik7CisjZW5kaWYKKyAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgcmVtb3RlIHNpZGUgd2l0aCB0
aGUgb2Zmc2V0IG9mIHRoaXMgb2JqZWN0IHNvIGl0IGNhbiBjYWxjdWxhdGUgZnJhbWVzIGNvcnJl
Y3RseS4KKyAgICAgICAgICAgIGF1dG8gbG9jYXRpb24gPSBlbGVtZW50UmVjdCgpLmxvY2F0aW9u
KCk7CisgICAgICAgICAgICByZW1vdGVGcmFtZS51cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxp
dHlPZmZzZXQoZmxvb3JlZEludFBvaW50KGxvY2F0aW9uKSk7CisgICAgICAgIH0pOworICAgIH0g
ZWxzZQorICAgICAgICBtX3JlbW90ZUZyYW1lLT5zZXRQYXJlbnQodGhpcyk7CisKKyAgICBhZGRD
aGlsZChtX3JlbW90ZUZyYW1lLmdldCgpKTsKK30KKwogdm9pZCBBY2Nlc3NpYmlsaXR5U2Nyb2xs
Vmlldzo6YWRkQ2hpbGRyZW4oKQogewogICAgIEFTU0VSVCghbV9jaGlsZHJlbkluaXRpYWxpemVk
KTsKICAgICBtX2NoaWxkcmVuSW5pdGlhbGl6ZWQgPSB0cnVlOwogCisgICAgYWRkUmVtb3RlRnJh
bWVDaGlsZCgpOwogICAgIGFkZENoaWxkKHdlYkFyZWFPYmplY3QoKSk7CiAgICAgdXBkYXRlU2Ny
b2xsYmFycygpOwogfQpAQCAtMjAzLDcgKzI0Niw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVNjcm9s
bFZpZXc6OmFkZENoaWxkcmVuKCkKIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlT
Y3JvbGxWaWV3Ojp3ZWJBcmVhT2JqZWN0KCkgY29uc3QKIHsKICAgICBhdXRvKiBkb2N1bWVudCA9
IHRoaXMtPmRvY3VtZW50KCk7Ci0gICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPmhhc0xp
dmluZ1JlbmRlclRyZWUoKSkKKyAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+aGFzTGl2
aW5nUmVuZGVyVHJlZSgpIHx8IG1fcmVtb3RlRnJhbWUpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgaWYgKGF1dG8qIGNhY2hlID0gYXhPYmplY3RDYWNoZSgpKQpAQCAtMjM0LDkgKzI3
NywxNSBAQCBMYXlvdXRSZWN0IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjplbGVtZW50UmVjdCgp
IGNvbnN0CiAKIERvY3VtZW50KiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6ZG9jdW1lbnQoKSBj
b25zdAogewotICAgIGlmIChhdXRvKiBmcmFtZVZpZXcgPSBkeW5hbWljRG93bmNhc3Q8TG9jYWxG
cmFtZVZpZXc+KG1fc2Nyb2xsVmlldy5nZXQoKSkpIHsKKyAgICBpZiAoYXV0byogZnJhbWVWaWV3
ID0gZHluYW1pY0Rvd25jYXN0PExvY2FsRnJhbWVWaWV3PihtX3Njcm9sbFZpZXcuZ2V0KCkpKQog
ICAgICAgICByZXR1cm4gZnJhbWVWaWV3LT5mcmFtZSgpLmRvY3VtZW50KCk7CisKKyAgICAvLyBG
b3IgdGhlIFJlbW90ZUZyYW1lVmlldyBjYXNlLCB3ZSBuZWVkIHRvIHJldHVybiB0aGUgZG9jdW1l
bnQgb2Ygb3VyIGhvc3RpbmcgcGFyZW50IHNvIGF4T2JqZWN0Q2FjaGUoKSByZXNvbHZlcyBjb3Jy
ZWN0bHkuCisgICAgaWYgKGF1dG8qIHJlbW90ZUZyYW1lVmlldyA9IGR5bmFtaWNEb3duY2FzdDxS
ZW1vdGVGcmFtZVZpZXc+KG1fc2Nyb2xsVmlldy5nZXQoKSkpIHsKKyAgICAgICAgaWYgKGF1dG8q
IG93bmVyID0gcmVtb3RlRnJhbWVWaWV3LT5mcmFtZSgpLm93bmVyRWxlbWVudCgpKQorICAgICAg
ICAgICAgcmV0dXJuICYob3duZXItPmRvY3VtZW50KCkpOwogICAgIH0KKwogICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojpkb2N1bWVudCgpOwogfQogCkBAIC0yNTMsMTYgKzMwMiwxNiBA
QCBMb2NhbEZyYW1lVmlldyogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmRvY3VtZW50RnJhbWVW
aWV3KCkgY29uc3QKIAogQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVNjcm9sbFZp
ZXc6OnBhcmVudE9iamVjdCgpIGNvbnN0CiB7Ci0gICAgQVhPYmplY3RDYWNoZSogY2FjaGUgPSBh
eE9iamVjdENhY2hlKCk7Ci0gICAgaWYgKCFjYWNoZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0KICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyID0gbV9mcmFtZU93bmVyRWxlbWVu
dC5nZXQoKTsKICAgICBpZiAoaXM8TG9jYWxGcmFtZVZpZXc+KG1fc2Nyb2xsVmlldykpCiAgICAg
ICAgIG93bmVyID0gZG93bmNhc3Q8TG9jYWxGcmFtZVZpZXc+KCptX3Njcm9sbFZpZXcpLmZyYW1l
KCkub3duZXJFbGVtZW50KCk7CisgICAgZWxzZSBpZiAoaXM8UmVtb3RlRnJhbWVWaWV3PihtX3Nj
cm9sbFZpZXcpKQorICAgICAgICBvd25lciA9IGRvd25jYXN0PFJlbW90ZUZyYW1lVmlldz4oKm1f
c2Nyb2xsVmlldykuZnJhbWUoKS5vd25lckVsZW1lbnQoKTsKIAotICAgIGlmIChvd25lciAmJiBv
d25lci0+cmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuIGNhY2hlLT5nZXRPckNyZWF0ZShvd25l
cik7CisgICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gYXhPYmplY3RDYWNoZSgpKSB7Cisg
ICAgICAgIGlmIChvd25lciAmJiBvd25lci0+cmVuZGVyZXIoKSkKKyAgICAgICAgICAgIHJldHVy
biBjYWNoZS0+Z2V0T3JDcmVhdGUob3duZXIpOworICAgIH0KIAogICAgIHJldHVybiBudWxscHRy
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5U2Nyb2xsVmlldy5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5U2Nyb2xsVmlldy5oCmluZGV4IDU1NzA0NDY3MWM3ZC4uODVmOTFhOTFmNWNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xs
Vmlldy5oCkBAIC0zMCw2ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKK2Ns
YXNzIEFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTsKIGNsYXNzIEFjY2Vzc2liaWxpdHlTY3JvbGxi
YXI7CiBjbGFzcyBTY3JvbGxiYXI7CiBjbGFzcyBTY3JvbGxWaWV3OwpAQCAtNTQsNyArNTUsOCBA
QCBwcml2YXRlOgogICAgIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25z
dCBvdmVycmlkZTsKICAgICBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXdJbnN0YW5jZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIGlzRW5hYmxlZCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICAKKyAgICBib29sIGhhc1JlbW90ZUZy
YW1lQ2hpbGQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JlbW90ZUZyYW1lICE9IG51bGxw
dHI7IH0KKwogICAgIGJvb2wgaXNBdHRhY2htZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUGxh
dGZvcm1XaWRnZXQgcGxhdGZvcm1XaWRnZXQoKSBjb25zdCBvdmVycmlkZTsKICAgICBXaWRnZXQq
IHdpZGdldEZvckF0dGFjaG1lbnRWaWV3KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gY3VycmVu
dFNjcm9sbFZpZXcoKTsgfQpAQCAtNjksNiArNzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0
Rm9jdXNlZChib29sKSBvdmVycmlkZTsKICAgICBib29sIGNhblNldEZvY3VzQXR0cmlidXRlKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0ZvY3VzZWQoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2b2lkIGFkZFJlbW90ZUZyYW1lQ2hpbGQoKTsKIAogICAgIERvY3VtZW50KiBkb2N1bWVudCgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIExvY2FsRnJhbWVWaWV3KiBkb2N1bWVudEZyYW1lVmlldygp
IGNvbnN0IG92ZXJyaWRlOwpAQCAtODUsNiArODgsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5T2JqZWN0PiBtX2hvcml6b250YWxTY3JvbGxiYXI7CiAgICAgUmVmUHRyPEFj
Y2Vzc2liaWxpdHlPYmplY3Q+IG1fdmVydGljYWxTY3JvbGxiYXI7CiAgICAgYm9vbCBtX2NoaWxk
cmVuRGlydHk7CisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZT4gbV9yZW1vdGVG
cmFtZTsKIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRP
YmplY3QuY3BwCmluZGV4IDNmMjAzMTMzMmFkMS4uNGI5ZjMxNjZlMzFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkT2JqZWN0LmNwcApAQCAtMzc1LDYgKzM3NSwxMCBAQCB2b2lkIEFYSXNvbGF0ZWRPYmpl
Y3Q6OmluaXRpYWxpemVQcm9wZXJ0aWVzKGNvbnN0IFJlZjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiYg
YXhPYgogI2VuZGlmCiAKICAgICBzZXRPYmplY3RQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SW50
ZXJuYWxMaW5rRWxlbWVudCwgb2JqZWN0LmludGVybmFsTGlua0VsZW1lbnQoKSk7CisgICAgc2V0
UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Okhhc1JlbW90ZUZyYW1lQ2hpbGQsIG9iamVjdC5oYXNS
ZW1vdGVGcmFtZUNoaWxkKCkpOworICAgIC8vIERvbid0IGR1cGxpY2F0ZSB0aGUgcmVtb3RlRnJh
bWVPZmZzZXQgZm9yIGV2ZXJ5IG9iamVjdC4gSnVzdCBzdG9yZSBpbiB0aGUgV2ViQXJlYS4KKyAg
ICBpZiAob2JqZWN0LmlzV2ViQXJlYSgpKQorICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5
TmFtZTo6UmVtb3RlRnJhbWVPZmZzZXQsIG9iamVjdC5yZW1vdGVGcmFtZU9mZnNldCgpKTsKIAog
ICAgIGluaXRpYWxpemVQbGF0Zm9ybVByb3BlcnRpZXMoYXhPYmplY3QpOwogfQpAQCAtNDYxLDYg
KzQ2NSw3IEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6c2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBBWFByb3BlcnR5VmFsdWVWCiAgICAgICAgIFtdKE9wdGlvblNldDxB
WEFuY2VzdG9yRmxhZz4mIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWUuaXNFbXB0eSgp
OyB9LAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBbXShSZXRhaW5QdHI8TlNBdHRyaWJ1
dGVkU3RyaW5nPiYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gIXR5cGVkVmFsdWU7IH0sCisgICAgICAg
IFtdKFJldGFpblB0cjxpZD4mIHR5cGVkVmFsdWUpIHsgcmV0dXJuICF0eXBlZFZhbHVlOyB9LAog
I2VuZGlmCiAgICAgICAgIFtdKEluc2lkZUxpbmsmIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVk
VmFsdWUgPT0gSW5zaWRlTGluaygpOyB9LAogICAgICAgICBbXShWZWN0b3I8VmVjdG9yPEFYSUQ+
PiYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZS5pc0VtcHR5KCk7IH0sCkBAIC0xMjAz
LDYgKzEyMDgsMTkgQEAgTGF5b3V0UmVjdCBBWElzb2xhdGVkT2JqZWN0OjplbGVtZW50UmVjdCgp
IGNvbnN0CiAgICAgfSk7CiB9CiAKK0ludFBvaW50IEFYSXNvbGF0ZWRPYmplY3Q6OnJlbW90ZUZy
YW1lT2Zmc2V0KCkgY29uc3QKK3sKKyAgICBJbnRQb2ludCByZW1vdGVGcmFtZU9mZnNldCA9IHsg
fTsKKyAgICBmb3IgKGF1dG8gKmlzb2xhdGVkT2JqZWN0ID0gdGhpczsgaXNvbGF0ZWRPYmplY3Qg
IT0gbnVsbHB0cjsgaXNvbGF0ZWRPYmplY3QgPSBpc29sYXRlZE9iamVjdC0+cGFyZW50T2JqZWN0
KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gcG9pbnQgPSBvcHRpb25hbEF0dHJpYnV0ZVZhbHVlPElu
dFBvaW50PihBWFByb3BlcnR5TmFtZTo6UmVtb3RlRnJhbWVPZmZzZXQpKSB7CisgICAgICAgICAg
ICByZW1vdGVGcmFtZU9mZnNldCA9ICpwb2ludDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgfQorCisgICAgcmV0dXJuIHJlbW90ZUZyYW1lT2Zmc2V0OworfQorCiBGbG9hdFBv
aW50IEFYSXNvbGF0ZWRPYmplY3Q6OnNjcmVlblJlbGF0aXZlUG9zaXRpb24oKSBjb25zdAogewog
ICAgIGlmIChhdXRvIHBvaW50ID0gb3B0aW9uYWxBdHRyaWJ1dGVWYWx1ZTxGbG9hdFBvaW50PihB
WFByb3BlcnR5TmFtZTo6U2NyZWVuUmVsYXRpdmVQb3NpdGlvbikpCkBAIC0xMjI2LDI4ICsxMjQ0
LDMyIEBAIEZsb2F0UG9pbnQgQVhJc29sYXRlZE9iamVjdDo6c2NyZWVuUmVsYXRpdmVQb3NpdGlv
bigpIGNvbnN0CiAKIEZsb2F0UmVjdCBBWElzb2xhdGVkT2JqZWN0OjpyZWxhdGl2ZUZyYW1lKCkg
Y29uc3QKIHsKKyAgICBhdXRvIHJlbW90ZU9mZnNldCA9IHJlbW90ZUZyYW1lT2Zmc2V0KCk7Cisg
ICAgRmxvYXRSZWN0IHJlbGF0aXZlRnJhbWUgPSB7IH07CisKICAgICBpZiAoYXV0byBjYWNoZWRS
ZWxhdGl2ZUZyYW1lID0gb3B0aW9uYWxBdHRyaWJ1dGVWYWx1ZTxJbnRSZWN0PihBWFByb3BlcnR5
TmFtZTo6UmVsYXRpdmVGcmFtZSkpIHsKICAgICAgICAgLy8gV2Ugc2hvdWxkIG5vdCBoYXZlIGNh
Y2hlZCBhIHJlbGF0aXZlIGZyYW1lIGZvciBlbGVtZW50cyB0aGF0IGdldCB0aGVpciBnZW9tZXRy
eSBmcm9tIHRoZWlyIGNoaWxkcmVuLgogICAgICAgICBBU1NFUlQoIW1fZ2V0c0dlb21ldHJ5RnJv
bUNoaWxkcmVuKTsKLSAgICAgICAgcmV0dXJuICpjYWNoZWRSZWxhdGl2ZUZyYW1lOwotICAgIH0K
LQotICAgIGlmIChtX2dldHNHZW9tZXRyeUZyb21DaGlsZHJlbikgeworICAgICAgICByZWxhdGl2
ZUZyYW1lID0gKmNhY2hlZFJlbGF0aXZlRnJhbWU7CisgICAgfSBlbHNlIGlmIChtX2dldHNHZW9t
ZXRyeUZyb21DaGlsZHJlbikgewogICAgICAgICBhdXRvIGZyYW1lID0gZW5jbG9zaW5nSW50UmVj
dChyZWxhdGl2ZUZyYW1lRnJvbUNoaWxkcmVuKCkpOwogICAgICAgICBpZiAoIWZyYW1lLmlzRW1w
dHkoKSkKLSAgICAgICAgICAgIHJldHVybiBmcmFtZTsKKyAgICAgICAgICAgIHJlbGF0aXZlRnJh
bWUgPSBmcmFtZTsKICAgICAgICAgLy8gRWl0aGVyIHdlIGhhZCBubyBjaGlsZHJlbiwgb3Igb3Vy
IGNoaWxkcmVuIGhhZCBlbXB0eSBmcmFtZXMuIFRoZSByaWdodCB0aGluZyB0byBkbyB3b3VsZCBi
ZSB0byByZXR1cm4KICAgICAgICAgLy8gYSByZWN0IGF0IHRoZSBwb3NpdGlvbiBvZiB0aGUgbmVh
cmVzdCByZW5kZXIgdHJlZSBhbmNlc3RvciB3aXRoIHNvbWUgbWFkZS11cCBzaXplIChBY2Nlc3Np
YmlsaXR5Tm9kZU9iamVjdDo6Ym91bmRpbmdCb3hSZWN0IGRvZXMgdGhpcykuCiAgICAgICAgIC8v
IEhvd2V2ZXIsIHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIHRoZSByZW5kZXIgdHJlZSBpbiB0aGlz
IGNvbnRleHQgKG9ubHkgdGhlIEFYIGlzb2xhdGVkIHRyZWUsIHdoaWNoIGlzIHRvbyBzcGFyc2Ug
Zm9yIHRoaXMgcHVycG9zZSksIHNvCiAgICAgICAgIC8vIHVudGlsIHdlIGNhY2hlIHRoZSBuZWNl
c3NhcnkgaW5mb3JtYXRpb24gbGV0J3MgZ28gdG8gdGhlIG1haW4tdGhyZWFkLgogICAgIH0gZWxz
ZSBpZiAocm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNvbHVtbiB8fCByb2xlVmFs
dWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFibGVIZWFkZXJDb250YWluZXIpCi0gICAgICAg
IHJldHVybiBleHBvc2VkVGFibGVBbmNlc3RvcigpID8gcmVsYXRpdmVGcmFtZUZyb21DaGlsZHJl
bigpIDogRmxvYXRSZWN0KCk7CisgICAgICAgIHJlbGF0aXZlRnJhbWUgPSBleHBvc2VkVGFibGVB
bmNlc3RvcigpID8gcmVsYXRpdmVGcmFtZUZyb21DaGlsZHJlbigpIDogRmxvYXRSZWN0KCk7CiAK
LSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhyZWFkPEZs
b2F0UmVjdD4oW3RoaXNdICgpIC0+IEZsb2F0UmVjdCB7CisgICAgcmVsYXRpdmVGcmFtZSA9IEFj
Y2Vzc2liaWxpdHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxGbG9hdFJlY3Q+KFt0aGlz
XSAoKSAtPiBGbG9hdFJlY3QgewogICAgICAgICBpZiAoYXV0byogYXhPYmplY3QgPSBhc3NvY2lh
dGVkQVhPYmplY3QoKSkKICAgICAgICAgICAgIHJldHVybiBheE9iamVjdC0+cmVsYXRpdmVGcmFt
ZSgpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0pOworCisgICAgcmVsYXRpdmVGcmFtZS5t
b3ZlQnkoRmxvYXRQb2ludChyZW1vdGVPZmZzZXQpKTsKKyAgICByZXR1cm4gcmVsYXRpdmVGcmFt
ZTsKIH0KIAogRmxvYXRSZWN0IEFYSXNvbGF0ZWRPYmplY3Q6OnJlbGF0aXZlRnJhbWVGcm9tQ2hp
bGRyZW4oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCmluZGV4IGRhZmZmMWY0NWQwNC4u
YzY4OWY1NjNlYzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCkBAIC0yMTQsNiArMjE0LDcg
QEAgcHJpdmF0ZToKICAgICBib29sIGlzRmlsZVVwbG9hZEJ1dHRvbigpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNGaWxlVXBsb2FkQnV0
dG9uKTsgfQogICAgIGJvb2wgaXNNZXRlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGJvb2xBdHRy
aWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNZXRlcik7IH07CiAgICAgRmxvYXRQb2ludCBz
Y3JlZW5SZWxhdGl2ZVBvc2l0aW9uKCkgY29uc3QgZmluYWw7CisgICAgSW50UG9pbnQgcmVtb3Rl
RnJhbWVPZmZzZXQoKSBjb25zdCBmaW5hbDsKICAgICBGbG9hdFJlY3QgcmVsYXRpdmVGcmFtZSgp
IGNvbnN0IGZpbmFsOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBGbG9hdFJlY3QgcHJpbWFyeVNj
cmVlblJlY3QoKSBjb25zdCBmaW5hbDsKQEAgLTQ1NCw3ICs0NTUsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgaXNBY2Nlc3NpYmlsaXR5QVJJQUdyaWRJbnN0YW5jZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvd0luc3RhbmNl
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzQWNjZXNzaWJpbGl0
eUFSSUFHcmlkQ2VsbEluc3RhbmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KLQor
ICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBmYWxzZTsgfQogICAgIGJvb2wgaXNOYXRpdmVUZXh0Q29udHJvbCgpIGNvbnN0IGZpbmFsOwog
ICAgIGJvb2wgaXNMaXN0Qm94T3B0aW9uKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc01vY2tP
YmplY3QoKSBjb25zdCBmaW5hbDsKQEAgLTUzNCw3ICs1MzUsOSBAQCBwcml2YXRlOgogICAgIFN0
cmluZyBuYW1lQXR0cmlidXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRl
VmFsdWUoQVhQcm9wZXJ0eU5hbWU6Ok5hbWVBdHRyaWJ1dGUpOyB9CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgYm9vbCBoYXNBcHBsZVBERkFubm90YXRpb25BdHRyaWJ1dGUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Okhhc0FwcGxlUERG
QW5ub3RhdGlvbkF0dHJpYnV0ZSk7IH0KKyAgICBSZXRhaW5QdHI8aWQ+IHJlbW90ZUZyYW1lUGxh
dGZvcm1FbGVtZW50KCkgY29uc3QgZmluYWw7CiAjZW5kaWYKKyAgICBib29sIGhhc1JlbW90ZUZy
YW1lQ2hpbGQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQ
cm9wZXJ0eU5hbWU6Okhhc1JlbW90ZUZyYW1lQ2hpbGQpOyB9CiAKICNpZiBQTEFURk9STShDT0NP
QSkgJiYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAgVmVjdG9yPFJldGFpblB0cjxpZD4+IG1v
ZGVsRWxlbWVudENoaWxkcmVuKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKaW5kZXgg
MmNhNDU3MTgxNjA4Li5hMjgyMWRlOGRjZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKQEAg
LTY2MCw2ICs2NjAsMTIgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6dXBkYXRlTm9kZVByb3BlcnRp
ZXMoQVhDb3JlT2JqZWN0JiBheE9iamVjdCwgY29uc3QgQVhQcm9wZXIKICAgICAgICAgY2FzZSBB
WFByb3BlcnR5TmFtZTo6UG9zSW5TZXQ6CiAgICAgICAgICAgICBwcm9wZXJ0eU1hcC5zZXQoQVhQ
cm9wZXJ0eU5hbWU6OlBvc0luU2V0LCBheE9iamVjdC5wb3NJblNldCgpKTsKICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEFYUHJvcGVydHlOYW1lOjpSZW1vdGVGcmFtZVBsYXRmb3Jt
RWxlbWVudDoKKyAgICAgICAgICAgIHByb3BlcnR5TWFwLnNldChBWFByb3BlcnR5TmFtZTo6UmVt
b3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQsIGF4T2JqZWN0LnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVt
ZW50KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQVhQcm9wZXJ0eU5hbWU6
Okhhc1JlbW90ZUZyYW1lQ2hpbGQ6CisgICAgICAgICAgICBwcm9wZXJ0eU1hcC5zZXQoQVhQcm9w
ZXJ0eU5hbWU6Okhhc1JlbW90ZUZyYW1lQ2hpbGQsIGF4T2JqZWN0Lmhhc1JlbW90ZUZyYW1lQ2hp
bGQoKSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBWFByb3BlcnR5TmFtZTo6
Um9sZURlc2NyaXB0aW9uOgogICAgICAgICAgICAgcHJvcGVydHlNYXAuc2V0KEFYUHJvcGVydHlO
YW1lOjpSb2xlRGVzY3JpcHRpb24sIGF4T2JqZWN0LnJvbGVEZXNjcmlwdGlvbigpLmlzb2xhdGVk
Q29weSgpKTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKaW5kZXggNTFh
MDRjNzJlMGNkLi44ZmEwYmEzZTAwN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaApAQCAtMTA0LDYg
KzEwNCw3IEBAIGVudW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUgOiB1aW50MTZfdCB7CiAgICAgSGFz
SGlnaGxpZ2h0aW5nLAogICAgIEhhc0l0YWxpY0ZvbnQsCiAgICAgSGFzUGxhaW5UZXh0LAorICAg
IEhhc1JlbW90ZUZyYW1lQ2hpbGQsCiAgICAgSGFzVW5kZXJsaW5lLAogICAgIEhlYWRlckNvbnRh
aW5lciwKICAgICBIZWFkaW5nTGV2ZWwsCkBAIC0xOTksNiArMjAwLDggQEAgZW51bSBjbGFzcyBB
WFByb3BlcnR5TmFtZSA6IHVpbnQxNl90IHsKICAgICBQcmV2ZW50S2V5Ym9hcmRET01FdmVudERp
c3BhdGNoLAogICAgIFJhZGlvQnV0dG9uR3JvdXAsCiAgICAgUmVsYXRpdmVGcmFtZSwKKyAgICBS
ZW1vdGVGcmFtZU9mZnNldCwKKyAgICBSZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCwKICAgICBS
b2xlVmFsdWUsCiAgICAgUm9sZVBsYXRmb3JtU3RyaW5nLAogICAgIFJvbGVEZXNjcmlwdGlvbiwK
QEAgLTI1NCw2ICsyNTcsNyBAQCB1c2luZyBBWFByb3BlcnR5TmFtZVNldCA9IEhhc2hTZXQ8QVhQ
cm9wZXJ0eU5hbWUsIEludEhhc2g8QVhQcm9wZXJ0eU5hbWU+LCBXVEY6OgogdXNpbmcgQVhQcm9w
ZXJ0eVZhbHVlVmFyaWFudCA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgQVhJRCwgU3Ry
aW5nLCBib29sLCBpbnQsIHVuc2lnbmVkLCBkb3VibGUsIGZsb2F0LCB1aW50NjRfdCwgQWNjZXNz
aWJpbGl0eUJ1dHRvblN0YXRlLCBDb2xvciwgVVJMLCBMYXlvdXRSZWN0LCBGbG9hdFBvaW50LCBG
bG9hdFJlY3QsIEludFBvaW50LCBJbnRSZWN0LCBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVk
PiwgVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiwgVmVjdG9yPEFYSUQ+LCBWZWN0b3I8c3RkOjpw
YWlyPEFYSUQsIEFYSUQ+PiwgVmVjdG9yPFN0cmluZz4sIFBhdGgsIE9wdGlvblNldDxBWEFuY2Vz
dG9yRmxhZz4sIEluc2lkZUxpbmssIFZlY3RvcjxWZWN0b3I8QVhJRD4+LCBDaGFyYWN0ZXJSYW5n
ZSwgc3RkOjpwYWlyPEFYSUQsIENoYXJhY3RlclJhbmdlPgogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgICwgUmV0YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4KKyAgICAsIFJldGFpblB0cjxpZD4K
ICNlbmRpZgogI2lmIEVOQUJMRShBWF9USFJFQURfVEVYVF9BUElTKQogICAgICwgQVhUZXh0UnVu
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
bWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9tYWMvQVhJc29sYXRlZE9iamVjdE1hYy5tbQppbmRleCAyYmQwOTQ4NDVl
MmUuLjM4NmIyYTI4NzJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMu
bW0KQEAgLTYzLDYgKzYzLDkgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplUGxh
dGZvcm1Qcm9wZXJ0aWVzKGNvbnN0IFJlZjxjb25zdCBBY2Nlc3NpYmlsaXQKICAgICAgICAgfQog
ICAgIH0KIAorICAgIGlmIChvYmplY3QtPmlzUmVtb3RlRnJhbWUoKSkKKyAgICAgICAgc2V0UHJv
cGVydHkoQVhQcm9wZXJ0eU5hbWU6OlJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50LCBvYmplY3Qt
PnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkpOworCiAgICAgLy8gQ2FjaGUgdGhlIFN0cmlu
Z1ZhbHVlIG9ubHkgaWYgaXQgZGlmZmVycyBmcm9tIHRoZSBBdHRyaWJ1dGVkVGV4dC4KICAgICBh
dXRvIHZhbHVlID0gb2JqZWN0LT5zdHJpbmdWYWx1ZSgpOwogICAgIGlmICghYXR0cmlidXRlZFRl
eHQgfHwgdmFsdWUgIT0gU3RyaW5nKFthdHRyaWJ1dGVkVGV4dCBzdHJpbmddKSkKQEAgLTE3Nyw2
ICsxODAsMTEgQEAgdW5zaWduZWQgQVhJc29sYXRlZE9iamVjdDo6dGV4dExlbmd0aCgpIGNvbnN0
CiAgICAgcmV0dXJuIDA7CiB9CiAKK1JldGFpblB0cjxpZD4gQVhJc29sYXRlZE9iamVjdDo6cmVt
b3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKSBjb25zdAoreworICAgIHJldHVybiBwcm9wZXJ0eVZh
bHVlPFJldGFpblB0cjxpZD4+KEFYUHJvcGVydHlOYW1lOjpSZW1vdGVGcmFtZVBsYXRmb3JtRWxl
bWVudCk7Cit9CisKIFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+IEFYSXNvbGF0ZWRPYmpl
Y3Q6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UoQVhUZXh0TWFya2VyUmFuZ2Um
JiBtYXJrZXJSYW5nZSwgU3BlbGxDaGVjayBzcGVsbENoZWNrKSBjb25zdAogewogICAgIGlmICgh
bWFya2VyUmFuZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbQppbmRleCBiYTJhY2NkODBkMDQuLjVkN2Zj
ZjM2NDI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNj
ZXNzaWJpbGl0eU9iamVjdE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbXBv
cnQgIkFjY2Vzc2liaWxpdHlMYWJlbC5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUxpc3QuaCIK
KyNpbXBvcnQgIkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZS5oIgogI2ltcG9ydCAiQ29sb3JDb2Nv
YS5oIgogI2ltcG9ydCAiQ29tcG9zaXRpb25IaWdobGlnaHQuaCIKICNpbXBvcnQgIkNvbXBvc2l0
aW9uVW5kZXJsaW5lLmgiCkBAIC01MSw2ICs1Miw3IEBACiAjaW1wb3J0ICJXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlck1hYy5oIgogI2ltcG9ydCAiV2lkZ2V0LmgiCiAKKyNpbXBvcnQgPHBh
bC9zcGkvY29jb2EvTlNBY2Nlc3NpYmlsaXR5U1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9O
U1NwZWxsQ2hlY2tlclNQSS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03NDksNiArNzUx
LDMwIEBAIFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+IGF0dHJpYnV0ZWRTdHJpbmdDcmVh
dGUoTm9kZSogbm9kZSwgU3RyaW5nVmlldyB0ZXh0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAor
UmVmUHRyPERhdGFTZWdtZW50PiBBY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWU6OmdlbmVyYXRlUmVt
b3RlVG9rZW4oKSBjb25zdAoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICAvLyBXZSB1c2UgdGhl
IHBhcmVudCdzIHdyYXBwZXIgc28gdGhhdCB0aGUgcmVtb3RlIGZyYW1lIGFjdHMgYXMgYSBwYXNz
IHRocm91Z2ggZm9yIHRoZSByZW1vdGUgdG9rZW4gYnJpZGdlLgorICAgIENGRGF0YVJlZiBkYXRh
UmVmID0gKF9fYnJpZGdlIENGRGF0YVJlZilbTlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlFbGVtZW50
IHJlbW90ZVRva2VuRm9yTG9jYWxVSUVsZW1lbnQ6cGFyZW50T2JqZWN0KCktPndyYXBwZXIoKV07
CisgICAgcmV0dXJuIERhdGFTZWdtZW50OjpjcmVhdGUoZGF0YVJlZik7CisjZWxzZQorICAgIC8v
IFRET086IFN1cHBvcnQgaU9TCisgICAgcmV0dXJuIHsgfQorI2VuZGlmCit9CisKK3ZvaWQgQWNj
ZXNzaWJpbGl0eVJlbW90ZUZyYW1lOjppbml0aWFsaXplUGxhdGZvcm1FbGVtZW50V2l0aFJlbW90
ZVRva2VuKGNvbnN0IERhdGFTZWdtZW50JiB0b2tlbiwgaW50IHByb2Nlc3NJZGVudGlmaWVyKQor
eworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBtX3Byb2Nlc3NJZGVudGlmaWVyID0gcHJvY2Vzc0lk
ZW50aWZpZXI7CisgICAgW3dyYXBwZXIoKSBhY2Nlc3NpYmlsaXR5U2V0UHJlc2VudGVyUHJvY2Vz
c0lkZW50aWZpZXI6cHJvY2Vzc0lkZW50aWZpZXJdOworICAgIE5TRGF0YSAqdG9rZW5EYXRhID0g
W05TRGF0YSBkYXRhV2l0aEJ5dGVzOnRva2VuLmRhdGEoKSBsZW5ndGg6dG9rZW4uc2l6ZSgpXTsK
KyAgICBtX3JlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50ID0gYWRvcHROUyhbW05TQWNjZXNzaWJp
bGl0eVJlbW90ZVVJRWxlbWVudCBhbGxvY10gaW5pdFdpdGhSZW1vdGVUb2tlbjp0b2tlbkRhdGFd
KTsKKworICAgIGF4T2JqZWN0Q2FjaGUoKS0+b25SZW1vdGVGcmFtZUluaXRpYWxpemVkKCp0aGlz
KTsKKyNlbmRpZgorfQorCiBuYW1lc3BhY2UgQWNjZXNzaWJpbGl0eSB7CiAKIFBsYXRmb3JtUm9s
ZU1hcCBjcmVhdGVQbGF0Zm9ybVJvbGVNYXAoKQpAQCAtODkxLDYgKzkxNyw3IEBAIFBsYXRmb3Jt
Um9sZU1hcCBjcmVhdGVQbGF0Zm9ybVJvbGVNYXAoKQogICAgICAgICB7IEFjY2Vzc2liaWxpdHlS
b2xlOjpTdXBlcnNjcmlwdCwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCiAgICAgICAgIHsg
QWNjZXNzaWJpbGl0eVJvbGU6Ok1vZGVsLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKICAg
ICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6U3VnZ2VzdGlvbiwgTlNBY2Nlc3NpYmlsaXR5R3Jv
dXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlJlbW90ZUZyYW1lLCBOU0Fj
Y2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKICAgICB9OwogICAgIFBsYXRmb3JtUm9sZU1hcCByb2xl
TWFwOwogICAgIGZvciAoYXV0byYgcm9sZSA6IHJvbGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNl
Lm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJCYXNlLm1tCmluZGV4IDYzNTdmYTdjMjcxYi4uZTA3NTU4MzkyNDRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlckJhc2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCkBAIC0zNSw2ICszNSw3IEBA
CiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuaCIKICNpbXBvcnQgIkFjY2Vzc2li
aWxpdHlMaXN0LmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5TGlzdEJveC5oIgorI2ltcG9ydCAi
QWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lLmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oIgogI2ltcG9ydCAi
QWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uaCIKQEAgLTI2NSwxMyArMjY2LDEzIEBAIE5TQXJyYXkg
Km1ha2VOU0FycmF5KGNvbnN0IFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJiBjCiAgICAgICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgICAgIGF1dG8g
d3JhcHBlciA9IGNoaWxkLT53cmFwcGVyKCk7Ci0KICAgICAgICAgLy8gV2Ugd2FudCB0byByZXR1
cm4gdGhlIGF0dGFjaG1lbnQgdmlldyBpbnN0ZWFkIG9mIHRoZSBvYmplY3QgcmVwcmVzZW50aW5n
IHRoZSBhdHRhY2htZW50LAogICAgICAgICAvLyBvdGhlcndpc2UsIHdlIGdldCBwYWxpbmRyb21l
IGVycm9ycyBpbiB0aGUgQVggaGllcmFyY2h5LgogICAgICAgICBpZiAoY2hpbGQtPmlzQXR0YWNo
bWVudCgpKSB7CiAgICAgICAgICAgICBpZiAoaWQgYXR0YWNobWVudFZpZXcgPSB3cmFwcGVyLmF0
dGFjaG1lbnRWaWV3KQogICAgICAgICAgICAgICAgIHJldHVybiBhdHRhY2htZW50VmlldzsKLSAg
ICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGNoaWxkLT5pc1JlbW90ZUZyYW1lKCkpCisgICAg
ICAgICAgICByZXR1cm4gY2hpbGQtPnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkuZ2V0KCk7
CiAKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgfSkuYXV0b3JlbGVhc2UoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggMmY2MGI2MjA0YzQ5Li5iZGFi
N2M1NmFkOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC00
MCw2ICs0MCw3IEBACiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5TGlzdC5oIgogI2ltcG9ydCAiQWNj
ZXNzaWJpbGl0eUxpc3RCb3guaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGlj
YXRvci5oIgorI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lLmgiCiAjaW1wb3J0ICJB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5U2Nyb2xs
Vmlldy5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uaCIKQEAgLTQ3OSw2ICs0
ODAsMTAgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAjZGVmaW5lIE5TQWNjZXNzaWJpbGl0
eVRleHRJbnB1dE1hcmtlZFRleHRNYXJrZXJSYW5nZUF0dHJpYnV0ZSBAIkFYVGV4dElucHV0TWFy
a2VkVGV4dE1hcmtlclJhbmdlIgogI2VuZGlmCiAKKyNpZm5kZWYga0FYQ29udmVydFJlbGF0aXZl
RnJhbWVQYXJhbWV0ZXJpemVkQXR0cmlidXRlCisjZGVmaW5lIGtBWENvbnZlcnRSZWxhdGl2ZUZy
YW1lUGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBAIkFYQ29udmVydFJlbGF0aXZlRnJhbWUiCisjZW5k
aWYKKwogQGltcGxlbWVudGF0aW9uIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyCiAKIC0g
KHZvaWQpZGV0YWNoCkBAIC0xMzY2LDkgKzEzNzEsMTUgQEAgc3RhdGljIHZvaWQgV2ViVHJhbnNm
b3JtQ0dQYXRoVG9OU0JlemllclBhdGgodm9pZCogaW5mbywgY29uc3QgQ0dQYXRoRWxlbWVudCAq
ZWwKIAogLSAoTlNTdHJpbmcqKXJvbGUKIHsKKyAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2Vs
Zi5heEJhY2tpbmdPYmplY3Q7CisgICAgaWYgKCFiYWNraW5nT2JqZWN0KQorICAgICAgICByZXR1
cm4gbmlsOworCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgIGlmIChz
ZWxmLmF4QmFja2luZ09iamVjdC0+aXNBdHRhY2htZW50KCkpCisgICAgaWYgKGJhY2tpbmdPYmpl
Y3QtPmlzQXR0YWNobWVudCgpKQogICAgICAgICByZXR1cm4gW1tzZWxmIGF0dGFjaG1lbnRWaWV3
XSBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Um9sZUF0dHJpYnV0
ZV07CisgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzUmVtb3RlRnJhbWUoKSkKKyAgICAgICAgcmV0
dXJuIFtiYWNraW5nT2JqZWN0LT5yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpLmdldCgpIGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlSb2xlQXR0cmlidXRlXTsK
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAgICAgTlNTdHJpbmcgKnN0cmlu
ZyA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5yb2xlUGxhdGZvcm1TdHJpbmcoKTsKQEAgLTEzODgs
NiArMTM5OSw5IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAjZW5kaWYKIAorICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc1JlbW90ZUZy
YW1lKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIHJldHVybiBbW3NlbGYgcm9sZV0g
aXNFcXVhbDpOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGVdCiAgICAgICAgICYmIGJhY2tpbmdPYmpl
Y3QtPmNoaWxkcmVuKCkuaXNFbXB0eSgpCiAgICAgICAgICYmICFbW3NlbGYgcmVuZGVyV2lkZ2V0
Q2hpbGRyZW5dIGNvdW50XTsKQEAgLTE0MjEsNiArMTQzNSw4IEBAIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0JFR0lOCiAgICAgLy8gYXR0YWNobWVudHMgaGF2ZSB0aGUgQVhJbWFnZSBy
b2xlLCBidXQgYSBkaWZmZXJlbnQgc3Vicm9sZQogICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc0F0
dGFjaG1lbnQoKSkKICAgICAgICAgcmV0dXJuIFtbc2VsZiBhdHRhY2htZW50Vmlld10gYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJvbGVEZXNjcmlwdGlvbkF0dHJp
YnV0ZV07CisgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzUmVtb3RlRnJhbWUoKSkKKyAgICAgICAg
cmV0dXJuIFtiYWNraW5nT2JqZWN0LT5yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpLmdldCgp
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRp
b25BdHRyaWJ1dGVdOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBT
dHJpbmcgcm9sZURlc2NyaXB0aW9uID0gYmFja2luZ09iamVjdC0+cm9sZURlc2NyaXB0aW9uKCk7
CkBAIC0xNDczLDYgKzE0ODksMjcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
CiAgICAgcmV0dXJuIGF4U2Nyb2xsVmlldyA/IFtheFNjcm9sbFZpZXctPnBsYXRmb3JtV2lkZ2V0
KCkgd2luZG93XSA6IG5pbDsKIH0KIAorLSAoTlNBcnJheSAqKV90cmFuc2Zvcm1TcGVjaWFsQ2hp
bGRyZW5DYXNlczooUmVmUHRyPEFYQ29yZU9iamVjdD4pYmFja2luZ09iamVjdAoreworI2lmIEVO
QUJMRShNT0RFTF9FTEVNRU5UKQorICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc01vZGVsKCkpIHsK
KyAgICAgICAgYXV0byBtb2RlbENoaWxkcmVuID0gYmFja2luZ09iamVjdC0+bW9kZWxFbGVtZW50
Q2hpbGRyZW4oKTsKKyAgICAgICAgaWYgKG1vZGVsQ2hpbGRyZW4uc2l6ZSgpKSB7CisgICAgICAg
ICAgICByZXR1cm4gY3JlYXRlTlNBcnJheShXVEZNb3ZlKG1vZGVsQ2hpbGRyZW4pLCBbXSAoYXV0
byYmIGNoaWxkKSAtPiBpZCB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkLmdldCgpOwor
ICAgICAgICAgICAgfSkuYXV0b3JlbGVhc2UoKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgor
CisgICAgaWYgKCFzZWxmLmNoaWxkcmVuVmVjdG9yU2l6ZSkgeworICAgICAgICBpZiAoTlNBcnJh
eSAqY2hpbGRyZW4gPSBbc2VsZiByZW5kZXJXaWRnZXRDaGlsZHJlbl0pCisgICAgICAgICAgICBy
ZXR1cm4gY2hpbGRyZW47CisgICAgfQorCisgICAgcmV0dXJuIG5pbDsKK30KKwogLy8gRklYTUU6
IHNwbGl0IHVwIHRoaXMgZnVuY3Rpb24gaW4gYSBiZXR0ZXIgd2F5LgogLy8gc3VnZ2VzdGlvbnM6
IFVzZSBhIGhhc2ggdGFibGUgdGhhdCBtYXBzIGF0dHJpYnV0ZSBuYW1lcyB0byBmdW5jdGlvbiBj
YWxscywKIC8vIG9yIG1heWJlIHBvaW50ZXJzIHRvIG1lbWJlciBmdW5jdGlvbnMKQEAgLTE1MzEs
MjIgKzE1NjgsOSBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICB9
CiAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0
eUNoaWxkcmVuQXR0cmlidXRlXSB8fCBbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5Jbk5hdmlnYXRpb25PcmRlckF0dHJpYnV0ZV0pIHsKLSNpZiBF
TkFCTEUoTU9ERUxfRUxFTUVOVCkKLSAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzTW9kZWwo
KSkgewotICAgICAgICAgICAgYXV0byBtb2RlbENoaWxkcmVuID0gYmFja2luZ09iamVjdC0+bW9k
ZWxFbGVtZW50Q2hpbGRyZW4oKTsKLSAgICAgICAgICAgIGlmIChtb2RlbENoaWxkcmVuLnNpemUo
KSkgewotICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVOU0FycmF5KFdURk1vdmUobW9kZWxD
aGlsZHJlbiksIFtdIChhdXRvJiYgY2hpbGQpIC0+IGlkIHsKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGNoaWxkLmdldCgpOwotICAgICAgICAgICAgICAgIH0pLmF1dG9yZWxlYXNlKCk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSNlbmRpZgotCi0gICAgICAgIGNvbnN0IGF1dG8mIGNo
aWxkcmVuID0gYmFja2luZ09iamVjdC0+Y2hpbGRyZW4oKTsKLSAgICAgICAgaWYgKGNoaWxkcmVu
LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgaWYgKE5TQXJyYXkgKndpZGdldENoaWxkcmVuID0g
W3NlbGYgcmVuZGVyV2lkZ2V0Q2hpbGRyZW5dKQotICAgICAgICAgICAgICAgIHJldHVybiB3aWRn
ZXRDaGlsZHJlbjsKLSAgICAgICAgfQorICAgICAgICBOU0FycmF5ICpzcGVjaWFsQ2hpbGRyZW4g
PSBbc2VsZiBfdHJhbnNmb3JtU3BlY2lhbENoaWxkcmVuQ2FzZXM6YmFja2luZ09iamVjdF07Cisg
ICAgICAgIGlmIChzcGVjaWFsQ2hpbGRyZW4uY291bnQpCisgICAgICAgICAgICByZXR1cm4gc3Bl
Y2lhbENoaWxkcmVuOwogCiAgICAgICAgIC8vIFRoZSB0cmVlJ3MgKEFYT3V0bGluZSkgY2hpbGRy
ZW4gYXJlIHN1cHBvc2VkIHRvIGJlIGl0cyByb3dzIGFuZCBjb2x1bW5zLgogICAgICAgICAvLyBU
aGUgQVJJQSBzcGVjIGRvZXNuJ3QgaGF2ZSBjb2x1bW5zLCBzbyB3ZSBqdXN0IG5lZWQgcm93cy4K
QEAgLTE3MTMsMTYgKzE3MzcsMTQgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNf
RU5ECiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmls
aXR5RW5hYmxlZEF0dHJpYnV0ZV0pCiAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0
aEJvb2w6IGJhY2tpbmdPYmplY3QtPmlzRW5hYmxlZCgpXTsKIAotICAgIGlmIChbYXR0cmlidXRl
TmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVNpemVBdHRyaWJ1dGVdKSB7Ci0g
ICAgICAgIGF1dG8gc2l6ZSA9IGJhY2tpbmdPYmplY3QtPnNpemUoKTsKLSAgICAgICAgcmV0dXJu
IFtOU1ZhbHVlIHZhbHVlV2l0aFNpemU6TlNNYWtlU2l6ZShzaXplLndpZHRoKCksIHNpemUuaGVp
Z2h0KCkpXTsKLSAgICB9CisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzog
TlNBY2Nlc3NpYmlsaXR5U2l6ZUF0dHJpYnV0ZV0pCisgICAgICAgIHJldHVybiBbTlNWYWx1ZSB2
YWx1ZVdpdGhTaXplOihDR1NpemUpYmFja2luZ09iamVjdC0+c2l6ZSgpXTsKIAogICAgIGlmIChb
YXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5UHJpbWFyeVNjcmVl
bkhlaWdodEF0dHJpYnV0ZV0pCiAgICAgICAgIHJldHVybiBAKGJhY2tpbmdPYmplY3QtPnByaW1h
cnlTY3JlZW5SZWN0KCkuaGVpZ2h0KCkpOwogCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1
YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlQb3NpdGlvbkF0dHJpYnV0ZV0pCi0gICAgICAgIHJl
dHVybiBAKENHUG9pbnQoYmFja2luZ09iamVjdC0+c2NyZWVuUmVsYXRpdmVQb3NpdGlvbigpKSk7
CisgICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhQb2ludDooQ0dQb2ludCliYWNraW5n
T2JqZWN0LT5zY3JlZW5SZWxhdGl2ZVBvc2l0aW9uKCldOwogCiAgICAgaWYgKFthdHRyaWJ1dGVO
YW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlQYXRoQXR0cmlidXRlXSkKICAgICAg
ICAgcmV0dXJuIFtzZWxmIHBhdGhdOwpAQCAtMjIzNyw2ICsyMjU5LDEwIEBAIEFMTE9XX0RFUFJF
Q0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICByZXR1cm4gcmFuZ2UgPyByYW5nZS5w
bGF0Zm9ybURhdGEoKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCkgOiBuaWw7CiAgICAgfQogCisgICAg
Ly8gVm9pY2VPdmVyIHByb3BlcnR5IHRvIGlnbm9yZSBjZXJ0YWluIGdyb3Vwcy4KKyAgICBpZiAo
W2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiQVhBdXRvSW50ZXJhY3RhYmxlIl0pCisg
ICAgICAgIHJldHVybiBAKGJhY2tpbmdPYmplY3QtPmlzUmVtb3RlRnJhbWUoKSk7CisKICAgICAv
LyBVc2VkIGJ5IExheW91dFRlc3RzIG9ubHksIG5vdCBieSBBVCBjbGllbnRzLgogICAgIGlmIChV
TkxJS0VMWShbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWEFSSUFSb2xlIl0pKQog
ICAgICAgICByZXR1cm4gYmFja2luZ09iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCk7CkBAIC0y
MzMwLDcgKzIzNTYsOCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAg
ICAgICAgaWYgKGF4T2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkgewogICAgICAgICAgICAgaWYgKGlk
IGF0dGFjaG1lbnRWaWV3ID0gW2F4T2JqZWN0LT53cmFwcGVyKCkgYXR0YWNobWVudFZpZXddKQog
ICAgICAgICAgICAgICAgIHJldHVybiBhdHRhY2htZW50VmlldzsKLSAgICAgICAgfQorICAgICAg
ICB9IGVsc2UgaWYgKGF4T2JqZWN0LT5pc1JlbW90ZUZyYW1lKCkpCisgICAgICAgICAgICByZXR1
cm4gYXhPYmplY3QtPnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkuZ2V0KCk7CiAKICAgICAg
ICAgLy8gT25seSBjYWxsIG91dCB0byB0aGUgbWFpbi10aHJlYWQgaWYgdGhpcyBvYmplY3QgaGFz
IGEgYmFja2luZyB3aWRnZXQgdG8gcXVlcnkuCiAgICAgICAgIGlmIChheE9iamVjdC0+aXNXaWRn
ZXQoKSkgewpAQCAtMjUwNyw2ICsyNTM0LDEwIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5U
QVRJT05TX0VORAogICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc1dlYkFyZWEoKSkKICAgICAgICAg
cmV0dXJuIHdlYkFyZWFQYXJhbUF0dHJzOwogCisgICAgLy8gVGhlIG9iamVjdCB0aGF0IHNlcnZl
cyB1cCB0aGUgcmVtb3RlIGZyYW1lIGFsc28gaXMgdGhlIG9uZSB0aGF0IGRvZXMgdGhlIGZyYW1l
IGNvbnZlcnNpb24uCisgICAgaWYgKGJhY2tpbmdPYmplY3QtPmhhc1JlbW90ZUZyYW1lQ2hpbGQo
KSkKKyAgICAgICAgcmV0dXJuIFtwYXJhbUF0dHJzIGFycmF5QnlBZGRpbmdPYmplY3Q6a0FYQ29u
dmVydFJlbGF0aXZlRnJhbWVQYXJhbWV0ZXJpemVkQXR0cmlidXRlXTsKKwogICAgIHJldHVybiBw
YXJhbUF0dHJzOwogfQogCkBAIC0zMTc3LDYgKzMyMDgsMTggQEAgQUxMT1dfREVQUkVDQVRFRF9J
TVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3aWRnZXRDaGls
ZHJlbjsKICAgICAgICAgICAgICAgICBjcml0ZXJpYS5yZXN1bHRzTGltaXQgLT0gW3dpZGdldENo
aWxkcmVuIGNvdW50XTsKICAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChiYWNraW5n
T2JqZWN0LT5pc1JlbW90ZUZyYW1lKCkKKyAgICAgICAgICAgICYmIGNyaXRlcmlhLnNlYXJjaEtl
eXMuY29udGFpbnMoQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6QW55VHlwZSkKKyAgICAgICAgICAg
ICYmICghY3JpdGVyaWEudmlzaWJsZU9ubHkgfHwgYmFja2luZ09iamVjdC0+aXNWaXNpYmxlKCkp
KSB7CisgICAgICAgICAgICBOU0FycmF5ICpyZW1vdGVGcmFtZUNoaWxkcmVuID0gW3NlbGYgYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRl
XTsKKyAgICAgICAgICAgIEFTU0VSVChyZW1vdGVGcmFtZUNoaWxkcmVuLmNvdW50ID09IDEpOwor
ICAgICAgICAgICAgaWYgKHJlbW90ZUZyYW1lQ2hpbGRyZW4uY291bnQgPT0gMSkgeworICAgICAg
ICAgICAgICAgIE5TVUludGVnZXIgaW5jbHVkZWRDaGlsZHJlbkNvdW50ID0gc3RkOjptaW4oW3Jl
bW90ZUZyYW1lQ2hpbGRyZW4gY291bnRdLCBOU1VJbnRlZ2VyKGNyaXRlcmlhLnJlc3VsdHNMaW1p
dCkpOworICAgICAgICAgICAgICAgIHdpZGdldENoaWxkcmVuID0gW3JlbW90ZUZyYW1lQ2hpbGRy
ZW4gc3ViYXJyYXlXaXRoUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgaW5jbHVkZWRDaGlsZHJlbkNvdW50
KV07CisgICAgICAgICAgICAgICAgaWYgKFt3aWRnZXRDaGlsZHJlbiBjb3VudF0gPj0gY3JpdGVy
aWEucmVzdWx0c0xpbWl0KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVtb3RlRnJhbWVD
aGlsZHJlbjsKKyAgICAgICAgICAgICAgICBjcml0ZXJpYS5yZXN1bHRzTGltaXQgLT0gW3dpZGdl
dENoaWxkcmVuIGNvdW50XTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciByZXN1bHRzOwpA
QCAtMzY2OSw2ICszNzEyLDExIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VO
RAogICAgICAgICB9CiAgICAgfQogCisgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5n
OmtBWENvbnZlcnRSZWxhdGl2ZUZyYW1lUGFyYW1ldGVyaXplZEF0dHJpYnV0ZV0pIHsKKyAgICAg
ICAgYXV0byBjb252ZXJ0ZWRSZWN0ID0gYmFja2luZ09iamVjdC0+cGFyZW50T2JqZWN0KCktPmNv
bnZlcnRGcmFtZVRvU3BhY2UoRmxvYXRSZWN0KHJlY3QpLCBBY2Nlc3NpYmlsaXR5Q29udmVyc2lv
blNwYWNlOjpQYWdlKTsKKyAgICAgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6Y29u
dmVydGVkUmVjdF07CisgICAgfQorCiAgICAgLy8gVGhlcmUgYXJlIHNvbWUgcGFyYW1ldGVycyB0
aGF0IHN1cGVyIGhhbmRsZXMgdGhhdCBhcmUgbm90IGV4cGxpY2l0bHkgcmV0dXJuZWQgYnkgdGhl
IGxpc3Qgb2YgdGhlIGVsZW1lbnQncyBhdHRyaWJ1dGVzLgogICAgIC8vIEluIHRoYXQgY2FzZSBp
dCBtdXN0IGJlIHBhc3NlZCB0byBzdXBlci4KICAgICByZXR1cm4gW3N1cGVyIGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTphdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOnBhcmFtZXRlcl07CkBAIC0z
NzIyLDggKzM3NzAsMTAgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAg
ICAgICAgIGlmICghY2hpbGQpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgKmNoaWxkV3JhcHBlciA9IGNoaWxkLT53cmFwcGVyKCk7
Ci0gICAgICAgIGlmIChjaGlsZFdyYXBwZXIgPT0gdGFyZ2V0Q2hpbGQgfHwgKGNoaWxkLT5pc0F0
dGFjaG1lbnQoKSAmJiBbY2hpbGRXcmFwcGVyIGF0dGFjaG1lbnRWaWV3XSA9PSB0YXJnZXRDaGls
ZCkpCisgICAgICAgIGlmIChjaGlsZFdyYXBwZXIgPT0gdGFyZ2V0Q2hpbGQgfHwgKGNoaWxkLT5p
c0F0dGFjaG1lbnQoKSAmJiBbY2hpbGRXcmFwcGVyIGF0dGFjaG1lbnRWaWV3XSA9PSB0YXJnZXRD
aGlsZCkKKyAgICAgICAgICAgIHx8IChjaGlsZC0+aXNSZW1vdGVGcmFtZSgpICYmIGNoaWxkLT5y
ZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpID09IHRhcmdldENoaWxkKSkgewogICAgICAgICAg
ICAgcmV0dXJuIGk7CisgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIE5TTm90Rm91bmQ7CiB9
CkBAIC0zNzQwLDcgKzM3OTAsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJ
TgogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDaGls
ZHJlbkF0dHJpYnV0ZV0pIHsKICAgICAgICAgLy8gVHJlZSBpdGVtcyBvYmplY3QgcmV0dXJucyBh
IGRpZmZlcmVudCBzZXQgb2YgY2hpbGRyZW4gdGhhbiB0aG9zZSB0aGF0IGFyZSBpbiBjaGlsZHJl
bigpCiAgICAgICAgIC8vIGJlY2F1c2UgYW4gQVhPdXRsaW5lICh0aGUgbWFjIHJvbGUgaXMgYmVj
b21lcykgaGFzIHNvbWUgb2RkIHN0aXB1bGF0aW9ucy4KLSAgICAgICAgaWYgKGJhY2tpbmdPYmpl
Y3QtPmlzVHJlZSgpIHx8IGJhY2tpbmdPYmplY3QtPmlzVHJlZUl0ZW0oKSkKKyAgICAgICAgaWYg
KGJhY2tpbmdPYmplY3QtPmlzVHJlZSgpIHx8IGJhY2tpbmdPYmplY3QtPmlzVHJlZUl0ZW0oKSB8
fCBiYWNraW5nT2JqZWN0LT5pc1JlbW90ZUZyYW1lKCkpCiAgICAgICAgICAgICByZXR1cm4gW1tz
ZWxmIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0
dHJpYnV0ZV0gY291bnRdOwogCiAgICAgICAgIGF1dG8gY2hpbGRyZW5TaXplID0gYmFja2luZ09i
amVjdC0+Y2hpbGRyZW4oKS5zaXplKCk7CkBAIC0zNzc2LDE2ICszODI2LDcgQEAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9T
dHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGVdKSB7CiAgICAgICAgIGlmIChi
YWNraW5nT2JqZWN0LT5jaGlsZHJlbigpLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgTlNBcnJh
eSAqY2hpbGRyZW4gPSBuaWw7Ci0jaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCi0gICAgICAgICAg
ICBpZiAoYmFja2luZ09iamVjdC0+aXNNb2RlbCgpKSB7Ci0gICAgICAgICAgICAgICAgY2hpbGRy
ZW4gPSBjcmVhdGVOU0FycmF5KGJhY2tpbmdPYmplY3QtPm1vZGVsRWxlbWVudENoaWxkcmVuKCks
IFtdIChhdXRvJiYgY2hpbGQpIC0+IGlkIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNo
aWxkLmdldCgpOwotICAgICAgICAgICAgICAgIH0pLmF1dG9yZWxlYXNlKCk7Ci0gICAgICAgICAg
ICB9IGVsc2UKLSNlbmRpZgotICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW3NlbGYgcmVuZGVy
V2lkZ2V0Q2hpbGRyZW5dOwotICAgICAgICAgICAgCisgICAgICAgICAgICBOU0FycmF5ICpjaGls
ZHJlbiA9IFtzZWxmIF90cmFuc2Zvcm1TcGVjaWFsQ2hpbGRyZW5DYXNlczpiYWNraW5nT2JqZWN0
XTsKICAgICAgICAgICAgIGlmICghY2hpbGRyZW4pCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5p
bDsKIApAQCAtMzgxNiw4ICszODU3LDEzIEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0VORAogCiAgICAgICAgICAgICAvLyBUaGUgYXR0YWNobWVudCB2aWV3IHNob3VsZCBiZSByZXR1
cm5lZCwgb3RoZXJ3aXNlIEFYIHBhbGluZHJvbWUgZXJyb3JzIG9jY3VyLgogICAgICAgICAgICAg
aWQgYXR0YWNobWVudFZpZXcgPSBuaWw7Ci0gICAgICAgICAgICBpZiAoW3dyYXBwZXIgaXNLaW5k
T2ZDbGFzczpbV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgY2xhc3NdXSAmJiB3cmFwcGVy
LmF4QmFja2luZ09iamVjdCAmJiB3cmFwcGVyLmF4QmFja2luZ09iamVjdC0+aXNBdHRhY2htZW50
KCkpCi0gICAgICAgICAgICAgICAgYXR0YWNobWVudFZpZXcgPSBbd3JhcHBlciBhdHRhY2htZW50
Vmlld107CisgICAgICAgICAgICBpZiAoW3dyYXBwZXIgaXNLaW5kT2ZDbGFzczpbV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXIgY2xhc3NdXSAmJiB3cmFwcGVyLmF4QmFja2luZ09iamVjdCkg
eworICAgICAgICAgICAgICAgIGlmICh3cmFwcGVyLmF4QmFja2luZ09iamVjdC0+aXNBdHRhY2ht
ZW50KCkpCisgICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRWaWV3ID0gW3dyYXBwZXIgYXR0
YWNobWVudFZpZXddOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKHdyYXBwZXIuYXhCYWNraW5n
T2JqZWN0LT5pc1JlbW90ZUZyYW1lKCkpCisgICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRW
aWV3ID0gd3JhcHBlci5heEJhY2tpbmdPYmplY3QtPnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50
KCkuZ2V0KCk7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIFtzdWJhcnJheSBhZGRPYmpl
Y3Q6YXR0YWNobWVudFZpZXcgPyBhdHRhY2htZW50VmlldyA6IHdyYXBwZXJdOwogICAgICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggZGM2Y2IzYTBkOWM4
Li4wMWYzMTRhOWNlODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBA
IC0xMDgxLDYgKzEwODEsMTEgQEAgUmVtb3RlQVhPYmplY3RSZWYgRW1wdHlGcmFtZUxvYWRlckNs
aWVudDo6YWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKK0ludFBvaW50IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmFjY2Vzc2liaWxpdHlSZW1vdGVG
cmFtZU9mZnNldCgpCit7CisgICAgcmV0dXJuIHsgfTsKK30KKwogI2lmIEVOQUJMRShBQ0NFU1NJ
QklMSVRZX0lTT0xBVEVEX1RSRUUpCiB2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnNldEFY
SXNvbGF0ZWRUcmVlUm9vdChXZWJDb3JlOjpBWENvcmVPYmplY3QqKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMDk4Y2U1OGQxMTE5
Li40NjcyZGUyOTg1MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZy
YW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVM
b2FkZXJDbGllbnQuaApAQCAtMTg0LDYgKzE4NCw3IEBAIHByaXZhdGU6CiAKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICBSZW1vdGVBWE9iamVjdFJlZiBhY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0
KCkgZmluYWw7CisgICAgSW50UG9pbnQgYWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCkg
ZmluYWw7CiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKICAgICB2b2lk
IHNldEFYSXNvbGF0ZWRUcmVlUm9vdChXZWJDb3JlOjpBWENvcmVPYmplY3QqKSBmaW5hbDsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvY2FsRnJhbWVMb2FkZXJD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmgK
aW5kZXggYjJkNTZmMDUwYWU5Li4wMGQzYWQ1ZTJjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Mb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0xvY2FsRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMjkwLDYgKzI5MCw3IEBAIHB1Ymxp
YzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAvLyBBbGxvdyBhbiBhY2Nlc3NpYmlsaXR5IG9i
amVjdCB0byByZXRyaWV2ZSBhIEZyYW1lIHBhcmVudCBpZiB0aGVyZSdzIG5vIFBsYXRmb3JtV2lk
Z2V0LgogICAgIHZpcnR1YWwgUmVtb3RlQVhPYmplY3RSZWYgYWNjZXNzaWJpbGl0eVJlbW90ZU9i
amVjdCgpID0gMDsKKyAgICB2aXJ0dWFsIEludFBvaW50IGFjY2Vzc2liaWxpdHlSZW1vdGVGcmFt
ZU9mZnNldCgpID0gMDsKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQog
ICAgIHZpcnR1YWwgdm9pZCBzZXRBWElzb2xhdGVkVHJlZVJvb3QoQVhDb3JlT2JqZWN0KikgPSAw
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA0ZWVkNmNkYTQ0YmMuLjA5ZjM3N2YwM2E4
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0yMTg4LDggKzIxODgsMTQgQEAgYm9vbCBQYWdlOjpz
aG91bGRVcGRhdGVBY2Nlc3NpYmlsaXR5UmVnaW9ucygpIGNvbnN0CiAgICAgQVNTRVJUKG1fbGFz
dFJlbmRlcmluZ1VwZGF0ZVRpbWVzdGFtcCA+PSBtX2xhc3RBY2Nlc3NpYmlsaXR5T2JqZWN0UmVn
aW9uc1VwZGF0ZSk7CiAgICAgaWYgKChtX2xhc3RSZW5kZXJpbmdVcGRhdGVUaW1lc3RhbXAgLSBt
X2xhc3RBY2Nlc3NpYmlsaXR5T2JqZWN0UmVnaW9uc1VwZGF0ZSkgPCB1cGRhdGVJbnRlcnZhbCkg
ewogICAgICAgICAvLyBXZSd2ZSBhbHJlYWR5IHVwZGF0ZWQgYWNjZXNzaWJpbGl0eSBvYmplY3Qg
cmVjdHMgcmVjZW50bHksIHNvIHNraXAgdGhpcyB1cGRhdGUgYW5kIHNjaGVkdWxlIGFub3RoZXIg
Zm9yIGxhdGVyLgotICAgICAgICBhdXRvKiBsb2NhbE1haW5GcmFtZSA9IGR5bmFtaWNEb3duY2Fz
dDxMb2NhbEZyYW1lPihtYWluRnJhbWUoKSk7Ci0gICAgICAgIGF1dG8qIG1haW5Eb2N1bWVudCA9
IGxvY2FsTWFpbkZyYW1lID8gbG9jYWxNYWluRnJhbWUtPmRvY3VtZW50KCkgOiBudWxscHRyOwor
ICAgICAgICBEb2N1bWVudCogbWFpbkRvY3VtZW50ID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKGF1
dG8qIGxvY2FsTWFpbkZyYW1lID0gZHluYW1pY0Rvd25jYXN0PExvY2FsRnJhbWU+KG1haW5GcmFt
ZSgpKSkgeworICAgICAgICAgICAgbWFpbkRvY3VtZW50ID0gbG9jYWxNYWluRnJhbWUgPyBsb2Nh
bE1haW5GcmFtZS0+ZG9jdW1lbnQoKSA6IG51bGxwdHI7CisgICAgICAgIH0gZWxzZSBpZiAoYXV0
byogcmVtb3RlRnJhbWUgPSBkeW5hbWljRG93bmNhc3Q8UmVtb3RlRnJhbWU+KG1haW5GcmFtZSgp
KSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIG93bmVyID0gcmVtb3RlRnJhbWUtPm93bmVyRWxl
bWVudCgpKQorICAgICAgICAgICAgICAgIG1haW5Eb2N1bWVudCA9ICYob3duZXItPmRvY3VtZW50
KCkpOworICAgICAgICB9CisKICAgICAgICAgLy8gSWYgYWNjZXNzaWJpbGl0eSBpcyBlbmFibGVk
IGFuZCB3ZSBoYXZlIGEgbWFpbiBkb2N1bWVudCwgdGhhdCBkb2N1bWVudCBzaG91bGQgaGF2ZSBh
biBBWCBvYmplY3QgY2FjaGUuCiAgICAgICAgIEFTU0VSVCghbWFpbkRvY3VtZW50IHx8IG1haW5E
b2N1bWVudC0+ZXhpc3RpbmdBWE9iamVjdENhY2hlKCkpOwogICAgICAgICBpZiAoYXV0byogdG9w
QXhPYmplY3RDYWNoZSA9IG1haW5Eb2N1bWVudCA/IG1haW5Eb2N1bWVudC0+ZXhpc3RpbmdBWE9i
amVjdENhY2hlKCkgOiBudWxscHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9S
ZW1vdGVGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmNwcAppbmRl
eCA3MTJjMGIyMjBmZDAuLmIyZTQxYzIzZGMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9SZW1vdGVGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFt
ZS5jcHAKQEAgLTEwMCw2ICsxMDAsMjEgQEAgdm9pZCBSZW1vdGVGcmFtZTo6YnJvYWRjYXN0RnJh
bWVSZW1vdmFsVG9PdGhlclByb2Nlc3NlcygpCiAgICAgbV9jbGllbnQtPmJyb2FkY2FzdEZyYW1l
UmVtb3ZhbFRvT3RoZXJQcm9jZXNzZXMoKTsKIH0KIAordm9pZCBSZW1vdGVGcmFtZTo6dXBkYXRl
UmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KEludFBvaW50IG9mZnNldCkKK3sKKyAgICBt
X2NsaWVudC0+dXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KGZyYW1lSUQoKSwg
b2Zmc2V0KTsKK30KKwordm9pZCBSZW1vdGVGcmFtZTo6dW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0
eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIpCit7CisgICAgbV9jbGllbnQtPnVuYmluZFJl
bW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMocHJvY2Vzc0lkZW50aWZpZXIpOworfQorCit2b2lkIFJl
bW90ZUZyYW1lOjpiaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50
aWZpZXIsIGNvbnN0IERhdGFTZWdtZW50JiBkYXRhVG9rZW4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgRGF0YVNlZ21lbnQmLCBpbnQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IHJldHVybiBtX2NsaWVudC0+YmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMocHJvY2Vzc0lk
ZW50aWZpZXIsIGZyYW1lSUQoKSwgZGF0YVRva2VuLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7Cit9CisKIEZyYW1lVmlldyogUmVtb3RlRnJhbWU6OnZpcnR1YWxWaWV3KCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV92aWV3LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9SZW1vdGVGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5oCmluZGV4
IDI3ZWQ4NDBkMDgyZS4uYjliMWY2YzE4ZWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1JlbW90ZUZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5o
CkBAIC0zMyw2ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRGF0YVNl
Z21lbnQ7CiBjbGFzcyBSZW1vdGVET01XaW5kb3c7CiBjbGFzcyBSZW1vdGVGcmFtZUNsaWVudDsK
IGNsYXNzIFJlbW90ZUZyYW1lVmlldzsKQEAgLTYyLDYgKzYzLDkgQEAgcHVibGljOgogICAgIE1h
cmthYmxlPExheWVySG9zdGluZ0NvbnRleHRJZGVudGlmaWVyPiBsYXllckhvc3RpbmdDb250ZXh0
SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJIb3N0aW5nQ29udGV4dElkZW50aWZp
ZXI7IH0KIAogICAgIFN0cmluZyByZW5kZXJUcmVlQXNUZXh0KHNpemVfdCBiYXNlSW5kZW50LCBP
cHRpb25TZXQ8UmVuZGVyQXNUZXh0RmxhZz4pOworICAgIHZvaWQgYmluZFJlbW90ZUFjY2Vzc2li
aWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBjb25zdCBEYXRhU2VnbWVudCYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRGF0YVNlZ21lbnQmLCBpbnQpPiYmKTsKKyAgICB2
b2lkIHVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChJbnRQb2ludCk7CisgICAg
dm9pZCB1bmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCk7CiAKIHByaXZhdGU6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgUmVtb3RlRnJhbWUoUGFnZSYsIFVuaXF1ZVJlZjxS
ZW1vdGVGcmFtZUNsaWVudD4mJiwgRnJhbWVJZGVudGlmaWVyLCBIVE1MRnJhbWVPd25lckVsZW1l
bnQqLCBGcmFtZSogcGFyZW50LCBNYXJrYWJsZTxMYXllckhvc3RpbmdDb250ZXh0SWRlbnRpZmll
cj4sIEZyYW1lKiBvcGVuZXIgPSBudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUmVtb3RlRnJhbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJh
bWVDbGllbnQuaAppbmRleCA0ZWZkMTAzZjM5MTIuLmQzNmI1NTcxZWYxNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUmVtb3RlRnJhbWVDbGllbnQuaApAQCAtMzAsNiArMzAsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NsYXNzIERhdGFTZWdtZW50OwogY2xhc3MgRnJhbWVMb2FkUmVxdWVz
dDsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBTZWN1cml0eU9yaWdpbkRhdGE7CkBAIC00OCw2ICs0
OSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyByZW5kZXJUcmVlQXNUZXh0KHNpemVf
dCBiYXNlSW5kZW50LCBPcHRpb25TZXQ8UmVuZGVyQXNUZXh0RmxhZz4pID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgYnJvYWRjYXN0RnJhbWVSZW1vdmFsVG9PdGhlclByb2Nlc3NlcygpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgY2xvc2VQYWdlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBiaW5kUmVt
b3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIEZyYW1lSWRlbnRp
ZmllciB0YXJnZXQsIGNvbnN0IERhdGFTZWdtZW50JiBkYXRhVG9rZW4sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgRGF0YVNlZ21lbnQmLCBpbnQpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChGcmFtZUlkZW50aWZpZXIg
dGFyZ2V0LCBJbnRQb2ludCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmJpbmRSZW1vdGVBY2Nl
c3NpYmlsaXR5RnJhbWVzKGludCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmb2N1cygpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgdW5mb2N1cygpID0gMDsKICAgICB2aXJ0dWFsIH5SZW1vdGVGcmFt
ZUNsaWVudCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IDBlNmQ3
NjM5NjYyYy4uMjliZGViMzNhMGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5o
CkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnQWN0aW9ucy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRWRpdG9yQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb2N1c0Rp
cmVjdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVJZGVudGlmaWVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9JbnB1dE1vZGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhQ29udHJvbHND
b250ZXh0TWVudUl0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+CkBAIC0z
MTYsNyArMzE3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlVW5kb1JlZG8o
VW5kb09yUmVkbykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aGVlbEV2ZW50V2FzTm90SGFuZGxl
ZEJ5V2ViQ29yZShjb25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50JikgPSAwOwogI2lmIFBMQVRGT1JN
KENPQ09BKQotICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVj
ZWl2ZWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBh
Y2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBwaWRfdCkgPSAwOwogICAgIHZpcnR1YWwg
Ym9vbCBleGVjdXRlU2F2ZWRDb21tYW5kQnlTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9y
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNlY3VyZUlucHV0U3RhdGUoKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHJlc2V0U2VjdXJlSW5wdXRTdGF0ZSgpID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAppbmRleCA1Y2I3OWRl
M2U4NjkuLmIxYzIwNWNkZjNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1By
b3Zpc2lvbmFsUGFnZVByb3h5LmNwcApAQCAtNTQ1LDcgKzU0NSw3IEBAIHZvaWQgUHJvdmlzaW9u
YWxQYWdlUHJveHk6OnJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJh
bWUoY29uc3QKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi12b2lkIFByb3Zpc2lvbmFs
UGFnZVByb3h5OjpyZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBkYXRhKQordm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6cmVnaXN0
ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
ZGF0YSwgRnJhbWVJZGVudGlmaWVyKQogewogICAgIG1fYWNjZXNzaWJpbGl0eVRva2VuID0gVmVj
dG9yKGRhdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlz
aW9uYWxQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFn
ZVByb3h5LmgKaW5kZXggNjBiYjZhMzZhM2ZhLi41OTkxMjY2YTYyZTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaApAQCAtMTY3LDcgKzE2Nyw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVu
dEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgU3RyaW5nJik+JiYpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAg
dm9pZCByZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJik7CisgICAgdm9pZCByZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9r
ZW4oY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsK
ICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgIHZvaWQgYmlu
ZEFjY2Vzc2liaWxpdHlUcmVlKGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJGcmFtZVByb3h5LmNwcAppbmRleCAyYWUzNmFmNTY2OGQuLjU1NzMyZGRmNWUwZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKQEAgLTQ1LDYgKzQ1LDcg
QEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYlBhc3RlYm9hcmRQcm94eS5oIgorI2luY2x1ZGUgIldlYlBy
b2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAi
V2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIldlYnNpdGVQb2xpY2llc0RhdGEuaCIKQEAg
LTE4NCw2ICsxODUsMTQgQEAgdm9pZCBXZWJGcmFtZVByb3h5OjpuYXZpZ2F0ZVNlcnZpY2VXb3Jr
ZXJDbGllbnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dEkKICAgICB9KTsKIH0KIAor
dm9pZCBXZWJGcmFtZVByb3h5OjpiaW5kQWNjZXNzaWJpbGl0eUZyYW1lV2l0aERhdGEoY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQoreworICAgIGlmICghbV9wYWdlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkJpbmRBY2Nl
c3NpYmlsaXR5RnJhbWVXaXRoRGF0YShtX2ZyYW1lSUQsIGRhdGEpKTsKK30KKwogdm9pZCBXZWJG
cmFtZVByb3h5Ojpsb2FkVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVy
KQogewogICAgIGlmICghbV9wYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViRnJhbWVQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94
eS5oCmluZGV4IDExYzRlOTBiZjRhZi4uMTFjNGZjOGJjNGNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViRnJhbWVQcm94eS5oCkBAIC0xNzAsNiArMTcwLDggQEAgcHVibGljOgogICAgIHZv
aWQgcmVtb3RlUHJvY2Vzc0RpZFRlcm1pbmF0ZSgpOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXI+IHdlYlBhZ2VJREluQ3VycmVudFByb2Nlc3MoKTsKICAgICB2b2lk
IG5vdGlmeVBhcmVudE9mTG9hZENvbXBsZXRpb24oV2ViUHJvY2Vzc1Byb3h5Jik7CisgICAgdm9p
ZCByZW1vdmVSZW1vdGVQYWdlc0ZvclN1c3BlbnNpb24oKTsKKyAgICB2b2lkIGJpbmRBY2Nlc3Np
YmlsaXR5RnJhbWVXaXRoRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKIAogICAgIGJv
b2wgaXNGb2N1c2VkKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCmluZGV4IDg4YzRkNjg3MWMzNS4uZGVkZmEzYmZkMDI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEyODgsOCArMTI4OCwxMiBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6c3dhcFRvUHJvdmlzaW9uYWxQYWdlKHN0ZDo6dW5pcXVlX3B0cjxQcm92aXNp
b25hbFBhZ2VQcm94eT4gcAogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgYXV0byBhY2Nlc3Np
YmlsaXR5VG9rZW4gPSBwcm92aXNpb25hbFBhZ2UtPnRha2VBY2Nlc3NpYmlsaXR5VG9rZW4oKTsK
LSAgICBpZiAoIWFjY2Vzc2liaWxpdHlUb2tlbi5pc0VtcHR5KCkpCi0gICAgICAgIHJlZ2lzdGVy
V2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbih7IGFjY2Vzc2liaWxpdHlUb2tlbi5kYXRhKCks
IGFjY2Vzc2liaWxpdHlUb2tlbi5zaXplKCkgfSk7CisgICAgaWYgKCFhY2Nlc3NpYmlsaXR5VG9r
ZW4uaXNFbXB0eSgpKSB7CisgICAgICAgIHJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlU
b2tlbih7IGFjY2Vzc2liaWxpdHlUb2tlbi5kYXRhKCksIGFjY2Vzc2liaWxpdHlUb2tlbi5zaXpl
KCkgfSwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHsKKyAgICAgICAgICAgIE9iamVjdElkZW50
aWZpZXI8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyVHlwZT4oMCksCisgICAgICAgICAgICBPYmpl
Y3RJZGVudGlmaWVyPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyVHlwZT4oMCkKKyAgICAgICAg
fSk7CisgICAgfQogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCiAg
ICAgYXV0byBhY2Nlc3NpYmlsaXR5UGx1Z0lEID0gcHJvdmlzaW9uYWxQYWdlLT5hY2Nlc3NpYmls
aXR5UGx1Z0lEKCk7CkBAIC0xMzYxOSw2ICsxMzYyMywyMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
cmVxdWVzdFRleHRFeHRyYWN0aW9uKHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiYmIGNvbGxlY3Rp
b25SZQogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdFRl
eHRFeHRyYWN0aW9uKFdURk1vdmUoY29sbGVjdGlvblJlY3RJblJvb3RWaWV3KSksIFdURk1vdmUo
Y29tcGxldGlvbikpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6YmluZFJlbW90ZUFjY2Vzc2li
aWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhVG9rZW4sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luY1RvUHJvY2Vzc0Nv
bnRhaW5pbmdGcmFtZShmcmFtZUlELCBNZXNzYWdlczo6V2ViUGFnZTo6QmluZFJlbW90ZUFjY2Vz
c2liaWxpdHlGcmFtZXMocHJvY2Vzc0lkZW50aWZpZXIsIGZyYW1lSUQsIGRhdGFUb2tlbikpOwor
ICAgIGlmICghc2VuZFJlc3VsdC5zdWNjZWVkZWQoKSkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b25IYW5kbGVyKHsgfSwgMCk7CisKKyAgICBhdXRvIFtmcmFtZURhdGFUb2tlbiwgZnJhbWVQcm9j
ZXNzSWRlbnRpZmllcl0gPSBzZW5kUmVzdWx0LnRha2VSZXBseSgpOworCisgICAgY29tcGxldGlv
bkhhbmRsZXIoZnJhbWVEYXRhVG9rZW4sIGZyYW1lUHJvY2Vzc0lkZW50aWZpZXIpOworfQorCit2
b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpJbnRQb2ludCBvZmZzZXQp
Cit7CisgICAgc2VuZFRvUHJvY2Vzc0NvbnRhaW5pbmdGcmFtZShmcmFtZUlELCBNZXNzYWdlczo6
V2ViUGFnZTo6VXBkYXRlUmVtb3RlUGFnZUFjY2Vzc2liaWxpdHlPZmZzZXQoZnJhbWVJRCwgb2Zm
c2V0KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgV0VCUEFHRVBST1hZ
X1JFTEVBU0VfTE9HCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGM5
YzM1NDg3YmZkMC4uOGNjOWU5YWM3Yjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaApAQCAtMTM0MCw3ICsxMzQwLDcgQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgLy8gQ2FsbGVkIGJ5IHRoZSB3ZWIgcHJvY2VzcyB0aHJvdWdoIGEgbWVzc2FnZS4K
LSAgICB2b2lkIHJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2b2lkIHJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxp
dHlUb2tlbihjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXJXZWJWaWV3SW1wbC5oOjkwNik7CiAgICAgLy8gQ2FsbGVkIGJ5IHRoZSBVSSBwcm9jZXNzIHdo
ZW4gaXQgaXMgcmVhZHkgdG8gc2VuZCBpdHMgdG9rZW5zIHRvIHRoZSB3ZWIgcHJvY2Vzcy4KICAg
ICB2b2lkIHJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vucyhjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGVsZW1lblRva2VuLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHdpbmRv
d1Rva2VuKTsKICAgICB2b2lkIHJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEoY29u
c3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKQEAg
LTI5MzYsNiArMjkzNiw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmb2N1c1JlbW90ZUZyYW1lKElQ
Qzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAgICAgdm9pZCBwb3N0
TWVzc2FnZVRvUmVtb3RlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBzb3VyY2UsIGNvbnN0IFN0
cmluZyYgc291cmNlT3JpZ2luLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgdGFyZ2V0LCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gdGFyZ2V0T3JpZ2luLCBjb25z
dCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYpOwogICAgIHZvaWQgcmVuZGVyVHJl
ZUFzVGV4dChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHNpemVfdCBiYXNlSW5kZW50LCBPcHRp
b25TZXQ8V2ViQ29yZTo6UmVuZGVyQXNUZXh0RmxhZz4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U3RyaW5nJiYpPiYmKTsKKyAgICB2b2lkIGJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGlu
dCBwcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIGRhdGFUb2tlbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmLCBpbnQpPiYmKTsKKyAgICB2b2lkIHVwZGF0ZVJlbW90ZUZyYW1l
QWNjZXNzaWJpbGl0eU9mZnNldChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6Oklu
dFBvaW50KTsKIAogICAgIHN0cnVjdCBJbnRlcm5hbHM7CiAgICAgSW50ZXJuYWxzJiBpbnRlcm5h
bHMoKSB7IHJldHVybiBtX2ludGVybmFsczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDUxOWFiMjk0N2EzNy4uMmFiZTBjMmE0
NjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCkBAIC0zMjMsNyArMzIzLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAg
ICBFeGVjdXRlU2F2ZWRDb21tYW5kQnlTZWxlY3RvcihTdHJpbmcgc2VsZWN0b3IpIC0+IChib29s
IGhhbmRsZWQpIFN5bmNocm9ub3VzCiAKICAgICAjIFJlbW90ZSBhY2Nlc3NpYmlsaXR5IG1lc3Nh
Z2VzCi0gICAgUmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKElQQzo6RGF0YVJl
ZmVyZW5jZSBkYXRhKQorICAgIFJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihJ
UEM6OkRhdGFSZWZlcmVuY2UgZGF0YSwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQp
CiAKICAgICAjIFNwZWVjaCBtZXNzYWdlcwogICAgIEdldElzU3BlYWtpbmcoKSAtPiAoYm9vbCBp
c1NwZWFraW5nKSBTeW5jaHJvbm91cwpAQCAtNjI5LDQgKzYyOSw2IEBAIG1lc3NhZ2VzIC0+IFdl
YlBhZ2VQcm94eSB7CiAgICAgRm9jdXNSZW1vdGVGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCkKICAgICBQb3N0TWVzc2FnZVRvUmVtb3RlKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciBzb3VyY2UsIFN0cmluZyBzb3VyY2VPcmlnaW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciB0YXJnZXQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiB0YXJn
ZXRPcmlnaW4sIHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBtZXNzYWdl
KQogICAgIFJlbmRlclRyZWVBc1RleHQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIHNpemVfdCBiYXNlSW5kZW50LCBPcHRpb25TZXQ8V2ViQ29yZTo6UmVuZGVyQXNUZXh0Rmxh
Zz4gYmVoYXZpb3IpIC0+IChTdHJpbmcgcmVuZGVyVHJlZUR1bXApIFN5bmNocm9ub3VzCisgICAg
QmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFUb2tl
bikgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSB0b2tlbiwgaW50IHByb2Nlc3NJZGVudGlmaWVyKSBT
eW5jaHJvbm91cworICAgIFVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6SW50UG9pbnQgb2Zmc2V0KQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBs
SU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaApp
bmRleCBhMGZkZTA2Y2IzMmYuLjg3ZGEzMjI4NzUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTEwNCw3ICsxMDQsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgY2xlYXJBbGxFZGl0Q29tbWFuZHMoKSBvdmVycmlkZTsKICAgICBib29s
IGNhblVuZG9SZWRvKFVuZG9PclJlZG8pIG92ZXJyaWRlOwogICAgIHZvaWQgZXhlY3V0ZVVuZG9S
ZWRvKFVuZG9PclJlZG8pIG92ZXJyaWRlOwotICAgIHZvaWQgYWNjZXNzaWJpbGl0eVdlYlByb2Nl
c3NUb2tlblJlY2VpdmVkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpIG92ZXJyaWRlOworICAg
IHZvaWQgYWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgcGlkX3QpIG92ZXJyaWRlOwog
ICAgIGJvb2wgZXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxl
Y3Rvcikgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVTZWN1cmVJbnB1dFN0YXRlKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCByZXNldFNlY3VyZUlucHV0U3RhdGUoKSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCA0ZDVk
NWM1OWExMjIuLjVmOTYxY2IwYTIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQgUGFnZUNs
aWVudEltcGw6OmV4ZWN1dGVVbmRvUmVkbyhVbmRvT3JSZWRvIHVuZG9PclJlZG8pCiAgICAgcmV0
dXJuICh1bmRvT3JSZWRvID09IFVuZG9PclJlZG86OlVuZG8pID8gW1tjb250ZW50VmlldygpIHVu
ZG9NYW5hZ2VyXSB1bmRvXSA6IFtbY29udGVudFZpZXcoKSB1bmRvTWFuYWdlcl0gcmVkb107CiB9
CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OmFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNl
aXZlZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCit2b2lkIFBhZ2VDbGllbnRJbXBs
OjphY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiBkYXRhLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHBpZF90KQogewogICAgIE5T
RGF0YSAqcmVtb3RlVG9rZW4gPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5kYXRhKCkgbGVu
Z3RoOmRhdGEuc2l6ZSgpXTsKICAgICBbY29udGVudFZpZXcoKSBfc2V0QWNjZXNzaWJpbGl0eVdl
YlByb2Nlc3NUb2tlbjpyZW1vdGVUb2tlbl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCA3MjliMGU1N2QyMGIuLjA4ODQyNGEwYjg2ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBA
IC03NjMsOSArNzYzLDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFNtYXJ0SW5zZXJ0RGVsZXRl
RW5hYmxlZChib29sKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2ViUGFnZVBy
b3h5OjpyZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiBkYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyV2ViUHJvY2Vzc0Fj
Y2Vzc2liaWxpdHlUb2tlbihjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIEZyYW1lSWRl
bnRpZmllciBmcmFtZUlEKQogewotICAgIHBhZ2VDbGllbnQoKS5hY2Nlc3NpYmlsaXR5V2ViUHJv
Y2Vzc1Rva2VuUmVjZWl2ZWQoZGF0YSk7CisgICAgcGFnZUNsaWVudCgpLmFjY2Vzc2liaWxpdHlX
ZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChkYXRhLCBmcmFtZUlEKTsKIH0gICAgCiAKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaAppbmRleCA1NDI0
MmRlNDY3NjcuLmUxY2U2ZDRkNjlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKQEAgLTE3Niw3ICsxNzYsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZ2VzdHVyZUV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShjb25zdCBOYXRpdmVXZWJH
ZXN0dXJlRXZlbnQmKSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgdm9pZCBhY2Nlc3NpYmlsaXR5
V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBhY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBwaWRfdCkgb3Zl
cnJpZGU7CiAKICAgICB2b2lkIG1ha2VGaXJzdFJlc3BvbmRlcigpIG92ZXJyaWRlOwogICAgIHZv
aWQgYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJlc3BvbmRlcigpIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCmluZGV4
IDc4MTliZWI4MWVmZC4uMGZkYzg2OTk3MDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCkBAIC01ODIsOSArNTgyLDkgQEAgdm9pZCBQ
YWdlQ2xpZW50SW1wbDo6c2V0VGV4dEluZGljYXRvckFuaW1hdGlvblByb2dyZXNzKGZsb2F0IHBy
b2dyZXNzKQogICAgIG1faW1wbC0+c2V0VGV4dEluZGljYXRvckFuaW1hdGlvblByb2dyZXNzKHBy
b2dyZXNzKTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6YWNjZXNzaWJpbGl0eVdlYlByb2Nl
c3NUb2tlblJlY2VpdmVkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKK3ZvaWQgUGFn
ZUNsaWVudEltcGw6OmFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBwaWRfdCBwaWQpCiB7Ci0gICAgbV9pbXBsLT5zZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rv
a2VuKFtOU0RhdGEgZGF0YVdpdGhCeXRlczpkYXRhLmRhdGEoKSBsZW5ndGg6ZGF0YS5zaXplKCld
KTsKKyAgICBtX2ltcGwtPnNldEFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW4oW05TRGF0YSBk
YXRhV2l0aEJ5dGVzOmRhdGEuZGF0YSgpIGxlbmd0aDpkYXRhLnNpemUoKV0sIGZyYW1lSUQsIHBp
ZCk7CiB9CiAgICAgCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjplbnRlckFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGxheWVyVHJlZUNvbnRleHQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCBlYTU3
MjVkNTk1MDAuLjA1NzdlNTU1YTIxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC0zMDcsMTIgKzMwNywxMiBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAoY29uc3QgRGljdGlvbmFyeVBvcHVwSW5m
byYgZGljdGlvbgogICAgIHBhZ2VDbGllbnQoKS5kaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChk
aWN0aW9uYXJ5UG9wdXBJbmZvKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyV2Vi
UHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vu
KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQp
CiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAgICAg
Ci0gICAgcGFnZUNsaWVudCgpLmFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChk
YXRhKTsKKyAgICBwYWdlQ2xpZW50KCkuYWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2Vp
dmVkKGRhdGEsIGZyYW1lSUQsIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCktPnJlbW90ZVByb2Nl
c3NJRCgpKTsKIH0gICAgCiAKIHZvaWQgV2ViUGFnZVByb3h5OjptYWtlRmlyc3RSZXNwb25kZXIo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJbXBsLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwuaAppbmRleCBiYjRkN2Ix
NGIxM2UuLjZiMDM5YjIyNTU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlZp
ZXdJbXBsLmgKQEAgLTQ0OCw3ICs0NDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJZ25vcmVz
TW91c2VEcmFnZ2VkRXZlbnRzKGJvb2wpOwogICAgIGJvb2wgaWdub3Jlc01vdXNlRHJhZ2dlZEV2
ZW50cygpIGNvbnN0IHsgcmV0dXJuIG1faWdub3Jlc01vdXNlRHJhZ2dlZEV2ZW50czsgfQogCi0g
ICAgdm9pZCBzZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuKE5TRGF0YSAqKTsKKyAgICB2
b2lkIHNldEFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW4oTlNEYXRhICosIFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciwgcGlkX3QpOwogICAgIHZvaWQgYWNjZXNzaWJpbGl0eVJlZ2lzdGVyVUlQ
cm9jZXNzVG9rZW5zKCk7CiAgICAgdm9pZCB1cGRhdGVSZW1vdGVBY2Nlc3NpYmlsaXR5UmVnaXN0
cmF0aW9uKGJvb2wgcmVnaXN0ZXJQcm9jZXNzKTsKICAgICBpZCBhY2Nlc3NpYmlsaXR5Rm9jdXNl
ZFVJRWxlbWVudCgpOwpAQCAtOTAyLDYgKzkwMiw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0VORAogICAgIGJvb2wgbV9hbGxvd3NNYWduaWZpY2F0aW9uIHsgZmFsc2UgfTsKIAog
ICAgIFJldGFpblB0cjxOU0FjY2Vzc2liaWxpdHlSZW1vdGVVSUVsZW1lbnQ+IG1fcmVtb3RlQWNj
ZXNzaWJpbGl0eUNoaWxkOworICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBtX3Jl
bW90ZUFjY2Vzc2liaWxpdHlGcmFtZUNhY2hlOwogCiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdl
PiBtX3Byb21pc2VkSW1hZ2U7CiAgICAgU3RyaW5nIG1fcHJvbWlzZWRGaWxlbmFtZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3SW1wbC5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3SW1wbC5tbQppbmRleCA2YzNlY2RiYmFjNzMu
LjcyYjc4ZThiMjZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dl
YlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3SW1w
bC5tbQpAQCAtMzQ3NSwxMCArMzQ3NSwxMiBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRJZ25vcmVz
TW91c2VEcmFnZ2VkRXZlbnRzKGJvb2wgaWdub3Jlc01vdXNlRHJhZ2dlZEV2ZW50cykKICAgICBt
X2lnbm9yZXNNb3VzZURyYWdnZWRFdmVudHMgPSBpZ25vcmVzTW91c2VEcmFnZ2VkRXZlbnRzOwog
fQogCi12b2lkIFdlYlZpZXdJbXBsOjpzZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuKE5T
RGF0YSAqZGF0YSkKK3ZvaWQgV2ViVmlld0ltcGw6OnNldEFjY2Vzc2liaWxpdHlXZWJQcm9jZXNz
VG9rZW4oTlNEYXRhICpkYXRhLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgcGlk
X3QgcGlkKQogewotICAgIG1fcmVtb3RlQWNjZXNzaWJpbGl0eUNoaWxkID0gZGF0YS5sZW5ndGgg
PyBhZG9wdE5TKFtbTlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlFbGVtZW50IGFsbG9jXSBpbml0V2l0
aFJlbW90ZVRva2VuOmRhdGFdKSA6IG5pbDsKLSAgICB1cGRhdGVSZW1vdGVBY2Nlc3NpYmlsaXR5
UmVnaXN0cmF0aW9uKHRydWUpOworICAgIGlmIChwaWQgPT0gbV9wYWdlLT5wcm9jZXNzKCkucHJv
Y2Vzc0lEKCkpIHsKKyAgICAgICAgbV9yZW1vdGVBY2Nlc3NpYmlsaXR5Q2hpbGQgPSBkYXRhLmxl
bmd0aCA/IGFkb3B0TlMoW1tOU0FjY2Vzc2liaWxpdHlSZW1vdGVVSUVsZW1lbnQgYWxsb2NdIGlu
aXRXaXRoUmVtb3RlVG9rZW46ZGF0YV0pIDogbmlsOworICAgICAgICB1cGRhdGVSZW1vdGVBY2Nl
c3NpYmlsaXR5UmVnaXN0cmF0aW9uKHRydWUpOworICAgIH0KIH0KIAogdm9pZCBXZWJWaWV3SW1w
bDo6dXBkYXRlUmVtb3RlQWNjZXNzaWJpbGl0eVJlZ2lzdHJhdGlvbihib29sIHJlZ2lzdGVyUHJv
Y2VzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA0ZWZj
MDQ1NDU4M2IuLjVmYjNjYjRiOTYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJMb2NhbEZyYW1lTG9hZGVy
Q2xpZW50LmNwcApAQCAtMTgwOSw2ICsxODA5LDE1IEBAIHZvaWQgV2ViTG9jYWxGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hXaWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVu
CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAKK1dlYkNvcmU6OkludFBvaW50IFdlYkxvY2Fs
RnJhbWVMb2FkZXJDbGllbnQ6OmFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCgpCit7Cisg
ICAgUmVmUHRyIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCF3ZWJQYWdlKQor
ICAgICAgICByZXR1cm4geyB9OworCisgICAgcmV0dXJuIHdlYlBhZ2UtPmFjY2Vzc2liaWxpdHlS
ZW1vdGVGcmFtZU9mZnNldCgpOworfQorCiBSZW1vdGVBWE9iamVjdFJlZiBXZWJMb2NhbEZyYW1l
TG9hZGVyQ2xpZW50OjphY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkKIHsKICAgICBSZWZQdHIg
d2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNs
aWVudC5oCmluZGV4IDg4YzhjYzVjYjcyZS4uOWYzYjY3ZjBmY2I4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJM
b2NhbEZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTI0MCw2ICsyNDAsNyBAQCBwcml2YXRlOgogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmVtb3RlQVhPYmplY3RSZWYgYWNjZXNzaWJpbGl0eVJl
bW90ZU9iamVjdCgpIGZpbmFsOworICAgIFdlYkNvcmU6OkludFBvaW50IGFjY2Vzc2liaWxpdHlS
ZW1vdGVGcmFtZU9mZnNldCgpIGZpbmFsOwogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xB
VEVEX1RSRUUpCiAgICAgdm9pZCBzZXRBWElzb2xhdGVkVHJlZVJvb3QoV2ViQ29yZTo6QVhDb3Jl
T2JqZWN0KikgZmluYWw7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuY3BwCmlu
ZGV4IDhjYmZmMmM5YjhjOS4uYjI1YzIzZWNlNjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNs
aWVudC5jcHAKQEAgLTk2LDYgKzk2LDQ1IEBAIFN0cmluZyBXZWJSZW1vdGVGcmFtZUNsaWVudDo6
cmVuZGVyVHJlZUFzVGV4dChzaXplX3QgYmFzZUluZGVudCwgT3B0aW9uU2V0PFJlbmRlCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAordm9pZCBXZWJSZW1vdGVGcmFtZUNsaWVudDo6dW5iaW5kUmVt
b3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIpCit7CisgICAgUmVm
UHRyIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1
cm47CisKKyAgICAgICAgLy8gTWFrZSBzdXJlIEFwcEtpdCBzeXN0ZW0ga25vd3MgYWJvdXQgb3Vy
IHJlbW90ZSBVSSBwcm9jZXNzIHN0YXR1cyBub3cuCisgICAgcGFnZS0+YWNjZXNzaWJpbGl0eU1h
bmFnZVJlbW90ZUVsZW1lbnRTdGF0dXMoZmFsc2UsIHByb2Nlc3NJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBXZWJSZW1vdGVGcmFtZUNsaWVudDo6dXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5
T2Zmc2V0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpJbnRQb2lu
dCBvZmZzZXQpCit7CisgICAgUmVmUHRyIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgaWYg
KCFwYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OlVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChmcmFtZUlELCBv
ZmZzZXQpKTsKK30KKwordm9pZCBXZWJSZW1vdGVGcmFtZUNsaWVudDo6YmluZFJlbW90ZUFjY2Vz
c2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQmIGRhdGFUb2tlbiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudCYsIGludCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgUmVmUHRyIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7
CisgICAgaWYgKCFwYWdlKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkRh
dGFTZWdtZW50OjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+IHsgMCwgMCB9KSwgMCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGRhdGFSZWZlcmVuY2UgPSBJUEM6OkRhdGFSZWZl
cmVuY2UoZGF0YVRva2VuLmRhdGEoKSwgZGF0YVRva2VuLnNpemUoKSk7CisgICAgYXV0byBzZW5k
UmVzdWx0ID0gcGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmluZFJlbW90
ZUFjY2Vzc2liaWxpdHlGcmFtZXMocHJvY2Vzc0lkZW50aWZpZXIsIGZyYW1lSUQsIGRhdGFSZWZl
cmVuY2UpKTsKKyAgICBpZiAoIXNlbmRSZXN1bHQuc3VjY2VlZGVkKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGF1dG8gW3Jlc3VsdFRva2VuLCBwcm9jZXNzSWRlbnRpZmllclJlc3VsdF0gPSBz
ZW5kUmVzdWx0LnRha2VSZXBseSgpOworCisgICAgLy8gTWFrZSBzdXJlIEFwcEtpdCBzeXN0ZW0g
a25vd3MgYWJvdXQgb3VyIHJlbW90ZSBVSSBwcm9jZXNzIHN0YXR1cyBub3cuCisgICAgcGFnZS0+
YWNjZXNzaWJpbGl0eU1hbmFnZVJlbW90ZUVsZW1lbnRTdGF0dXModHJ1ZSwgcHJvY2Vzc0lkZW50
aWZpZXJSZXN1bHQpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkRhdGFTZWdtZW50
OjpjcmVhdGUocmVzdWx0VG9rZW4pLCBwcm9jZXNzSWRlbnRpZmllclJlc3VsdCk7Cit9CisKIHZv
aWQgV2ViUmVtb3RlRnJhbWVDbGllbnQ6OmJyb2FkY2FzdEZyYW1lUmVtb3ZhbFRvT3RoZXJQcm9j
ZXNzZXMoKQogewogICAgIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpicm9hZGNhc3RGcmFtZVJlbW92
YWxUb090aGVyUHJvY2Vzc2VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVudC5oCmluZGV4IDYy
NmUwNWMzZTg4Yi4uYjVjYTkyN2Q3ZDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuaApA
QCAtNDgsNiArNDgsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBvc3RNZXNzYWdlVG9SZW1vdGUo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmln
aW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciB0YXJnZXQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiB0YXJnZXRPcmlnaW4sIGNvbnN0IFdlYkNvcmU6Ok1lc3Nh
Z2VXaXRoTWVzc2FnZVBvcnRzJikgZmluYWw7CiAgICAgdm9pZCBjaGFuZ2VMb2NhdGlvbihXZWJD
b3JlOjpGcmFtZUxvYWRSZXF1ZXN0JiYpIGZpbmFsOwogICAgIFN0cmluZyByZW5kZXJUcmVlQXNU
ZXh0KHNpemVfdCBiYXNlSW5kZW50LCBPcHRpb25TZXQ8V2ViQ29yZTo6UmVuZGVyQXNUZXh0Rmxh
Zz4pIGZpbmFsOworICAgIHZvaWQgYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHBy
b2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6
OkRhdGFTZWdtZW50JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpEYXRh
U2VnbWVudCYsIGludCk+JiYpIGZpbmFsOworICAgIHZvaWQgdW5iaW5kUmVtb3RlQWNjZXNzaWJp
bGl0eUZyYW1lcyhpbnQpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3Np
YmlsaXR5T2Zmc2V0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6SW50UG9pbnQp
IGZpbmFsOworCiAgICAgdm9pZCBicm9hZGNhc3RGcmFtZVJlbW92YWxUb090aGVyUHJvY2Vzc2Vz
KCkgZmluYWw7CiAgICAgdm9pZCBjbG9zZVBhZ2UoKSBmaW5hbDsKICAgICB2b2lkIGZvY3VzKCkg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2Nv
YS9XZWJQYWdlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2Nv
YS9XZWJQYWdlQ29jb2EubW0KaW5kZXggOTA4MGQ5OGVlNzk2Li41ZTk4NmM2NTlmZjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdl
Q29jb2EubW0KQEAgLTc2LDYgKzc2LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvVVRJUmVnaXN0cnku
aD4KICNpbXBvcnQgPFdlYkNvcmUvVVRJVXRpbGl0aWVzLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2Nv
Y29hL0xhdW5jaFNlcnZpY2VzU1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TQWNjZXNz
aWJpbGl0eVNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAj
aW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg+CiAKQEAgLTQxMywxMCArNDE0LDQ3
IEBAIHZvaWQgV2ViUGFnZTo6Y2xlYXJEaWN0YXRpb25BbHRlcm5hdGl2ZXMoVmVjdG9yPERpY3Rh
dGlvbkNvbnRleHQ+JiYgY29udGV4dHMpCiAgICAgfSwgRG9jdW1lbnRNYXJrZXI6OlR5cGU6OkRp
Y3RhdGlvbkFsdGVybmF0aXZlcyk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6YWNjZXNzaWJpbGl0eVRy
YW5zZmVyUmVtb3RlVG9rZW4oUmV0YWluUHRyPE5TRGF0YT4gcmVtb3RlVG9rZW4pCit2b2lkIFdl
YlBhZ2U6OmFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKFJldGFpblB0cjxOU0RhdGE+
IHJlbW90ZVRva2VuLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKIHsKICAgICBJUEM6OkRhdGFS
ZWZlcmVuY2UgZGF0YVRva2VuID0gSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KFtyZW1vdGVUb2tlbiBieXRlc10pLCBbcmVtb3RlVG9rZW4gbGVuZ3Ro
XSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWdpc3RlcldlYlByb2Nlc3NB
Y2Nlc3NpYmlsaXR5VG9rZW4oZGF0YVRva2VuKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpSZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oZGF0YVRva2VuLCBm
cmFtZUlEKSk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6YWNjZXNzaWJpbGl0eU1hbmFnZVJlbW90ZUVs
ZW1lbnRTdGF0dXMoYm9vbCByZWdpc3RlclN0YXR1cywgaW50IHByb2Nlc3NJZGVudGlmaWVyKQor
eworICAgIGlmIChyZWdpc3RlclN0YXR1cykKKyAgICAgICAgW05TQWNjZXNzaWJpbGl0eVJlbW90
ZVVJRWxlbWVudCByZWdpc3RlclJlbW90ZVVJUHJvY2Vzc0lkZW50aWZpZXI6cHJvY2Vzc0lkZW50
aWZpZXJdOworICAgIGVsc2UKKyAgICAgICAgW05TQWNjZXNzaWJpbGl0eVJlbW90ZVVJRWxlbWVu
dCB1bnJlZ2lzdGVyUmVtb3RlVUlQcm9jZXNzSWRlbnRpZmllcjpwcm9jZXNzSWRlbnRpZmllcl07
Cit9CisKK3ZvaWQgV2ViUGFnZTo6YmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHBy
b2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhVG9rZW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBSZWZQdHIgd2ViRnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFt
ZUlEKTsKKyAgICBpZiAoIXdlYkZyYW1lKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9LCAwKTsKKyAgICB9CisKKyAg
ICBSZWZQdHIgY29yZUxvY2FsRnJhbWUgPSB3ZWJGcmFtZS0+Y29yZUxvY2FsRnJhbWUoKTsKKyAg
ICBpZiAoIWNvcmVMb2NhbEZyYW1lKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9LCAwKTsKKyAgICB9CisKKyAgICBh
dXRvKiByZW5kZXJlciA9IGNvcmVMb2NhbEZyYW1lLT5jb250ZW50UmVuZGVyZXIoKTsKKyAgICBp
ZiAoIXJlbmRlcmVyKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9LCAwKTsKKyAgICB9CisKKyAgICByZWdpc3RlclJl
bW90ZUZyYW1lQWNjZXNzaWJpbGl0eVRva2Vucyhwcm9jZXNzSWRlbnRpZmllciwgZGF0YVRva2Vu
KTsKKworICAgIC8vIEdldCBvdXIgcmVtb3RlIHRva2VuIGRhdGEgYW5kIHNlbmQgYmFjayB0byB0
aGUgUmVtb3RlRnJhbWUuCisgICAgYXV0byByZW1vdGVUb2tlbiA9IGFjY2Vzc2liaWxpdHlSZW1v
dGVUb2tlbkRhdGEoKTsKKyAgICBJUEM6OkRhdGFSZWZlcmVuY2UgcmVtb3RlRGF0YVRva2VuID0g
SVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtyZW1v
dGVUb2tlbiBieXRlc10pLCBbcmVtb3RlVG9rZW4gbGVuZ3RoXSk7CisKKyAgICBjb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKHJlbW90ZURhdGFUb2tlbiksIGdldHBpZCgpKTsKIH0KIAogI2lmIEVO
QUJMRShBUFBMRV9QQVkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKaW5kZXggOWJkZGNiN2UzYjdlLi5jMTE2NTdjMmUxZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTY2OCw2ICs2NjgsMTAgQEAgcHVibGljOgog
ICAgIHZvaWQgY2xlYXJIaXN0b3J5KCk7CiAKICAgICB2b2lkIGFjY2Vzc2liaWxpdHlTZXR0aW5n
c0RpZENoYW5nZSgpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgYWNjZXNzaWJpbGl0
eU1hbmFnZVJlbW90ZUVsZW1lbnRTdGF0dXMoYm9vbCwgaW50KTsKKyNlbmRpZgorCiAgICAgdm9p
ZCBzY3JlZW5Qcm9wZXJ0aWVzRGlkQ2hhbmdlKCk7CiAKICAgICB2b2lkIHNjYWxlUGFnZShkb3Vi
bGUgc2NhbGUsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBvcmlnaW4pOwpAQCAtMTAzOSw4ICsx
MDQzLDEyIEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgcGxhdGZv
cm1Jbml0aWFsaXplQWNjZXNzaWJpbGl0eSgpOwotICAgIHZvaWQgcmVnaXN0ZXJVSVByb2Nlc3NB
Y2Nlc3NpYmlsaXR5VG9rZW5zKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZWxlbWVuVG9rZW4s
IGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgd2luZG93VG9rZW4pOworICAgIHZvaWQgcmVnaXN0
ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
ZWxlbWVudFRva2VuLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHdpbmRvd1Rva2VuKTsKKyAg
ICB2b2lkIHJlZ2lzdGVyUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5VG9rZW5zKHBpZF90LCBjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKICAgICBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0
KiBhY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCk7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgYWNj
ZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCk7CisgICAgdm9pZCBjcmVhdGVNb2NrQWNjZXNz
aWJpbGl0eUVsZW1lbnQocGlkX3QpOworICAgIHZvaWQgdXBkYXRlUmVtb3RlUGFnZUFjY2Vzc2li
aWxpdHlPZmZzZXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpJbnRQb2ludCk7
CiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKICAgICB2b2lkIGNhY2hl
QVhQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAgICAgdm9pZCBjYWNoZUFY
U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CkBAIC0yMDc5LDcgKzIwODcsNyBAQCBwcml2
YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgcmVxdWVzdEFjdGl2ZU5vd1BsYXlp
bmdTZXNzaW9uSW5mbyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wsIGJvb2wsIGNvbnN0IFN0
cmluZyYsIGRvdWJsZSwgZG91YmxlLCB1aW50NjRfdCk+JiYpOwogICAgIFJldGFpblB0cjxOU0Rh
dGE+IGFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSBjb25zdDsKLSAgICB2b2lkIGFjY2Vz
c2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKFJldGFpblB0cjxOU0RhdGE+KTsKKyAgICB2b2lk
IGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKFJldGFpblB0cjxOU0RhdGE+LCBXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIpOwogI2VuZGlmCiAKICAgICB2b2lkIHNldFNob3VsZERpc3Bh
dGNoRmFrZU1vdXNlTW92ZUV2ZW50cyhib29sIGRpc3BhdGNoKSB7IG1fc2hvdWxkRGlzcGF0Y2hG
YWtlTW91c2VNb3ZlRXZlbnRzID0gZGlzcGF0Y2g7IH0KQEAgLTIxODEsNiArMjE4OSw5IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIHJlbW90ZVBvc3RNZXNzYWdlKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciBzb3VyY2UsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIgdGFyZ2V0LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YT4mJiB0YXJnZXRPcmlnaW4sIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRz
Jik7CiAgICAgdm9pZCByZW5kZXJUcmVlQXNUZXh0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
c2l6ZV90IGJhc2VJbmRlbnQsIE9wdGlvblNldDxXZWJDb3JlOjpSZW5kZXJBc1RleHRGbGFnPiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYpOworI2lmIFBMQVRGT1JNKENPQ09B
KQorICAgIHZvaWQgYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVu
dGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50
KT4mJik7CisjZW5kaWYKIAogICAgIHZvaWQgcmVxdWVzdFRleHRFeHRyYWN0aW9uKHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiYmIGNvbGxlY3Rpb25SZWN0SW5Sb290VmlldywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpUZXh0RXh0cmFjdGlvbjo6SXRlbSYmKT4mJik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCmluZGV4IDJjNWU0NjE4ZTY2NS4uZGM5ZTAwOGQ1ODBhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAg
LTQ4OCw3ICs0ODgsMTAgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVp
bnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICBXaW5kb3dBbmRWaWV3RnJhbWVzQ2hhbmdlZChzdHJ1Y3QgV2ViS2l0OjpWaWV3
V2luZG93Q29vcmRpbmF0ZXMgY29vcmRpbmF0ZXMpCiAgICAgU2V0TWFpbkZyYW1lSXNTY3JvbGxh
YmxlKGJvb2wgaXNTY3JvbGxhYmxlKQotICAgIFJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0
eVRva2VucyhJUEM6OkRhdGFSZWZlcmVuY2UgZWxlbWVuVG9rZW4sIElQQzo6RGF0YVJlZmVyZW5j
ZSB3aW5kb3dUb2tlbikKKyAgICBSZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMo
SVBDOjpEYXRhUmVmZXJlbmNlIGVsZW1lbnRUb2tlbiwgSVBDOjpEYXRhUmVmZXJlbmNlIHdpbmRv
d1Rva2VuKQorICAgIEJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRl
bnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIElQQzo6RGF0YVJlZmVy
ZW5jZSBkYXRhVG9rZW4pIC0+IChJUEM6OkRhdGFSZWZlcmVuY2UgdG9rZW4sIGludCBwcm9jZXNz
SWRlbnRpZmllcikgU3luY2hyb25vdXMKKyAgICBVcGRhdGVSZW1vdGVQYWdlQWNjZXNzaWJpbGl0
eU9mZnNldChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6SW50UG9p
bnQgb2Zmc2V0KTsKKwogICAgIEdldFN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKSAtPiAo
U3RyaW5nIHN0cmluZ1ZhbHVlKSBTeW5jaHJvbm91cwogICAgIEdldERhdGFTZWxlY3Rpb25Gb3JQ
YXN0ZWJvYXJkKFN0cmluZyBwYXN0ZWJvYXJkVHlwZSkgLT4gKFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcikgU3luY2hyb25vdXMKICAgICBSZWFkU2VsZWN0aW9uRnJvbVBhc3Rl
Ym9hcmQoU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoYm9vbCByZXN1bHQpIFN5bmNocm9ub3Vz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tCmluZGV4IGM4MDY2MjcwZDBkNi4uM2Y3ZTJiYWY2NTA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMjQ0LDEyICsy
NDQsMTQgQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemVBY2Nlc3NpYmlsaXR5KCkK
ICAgICBtX21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCA9IGFkb3B0TlMoW1tXS0FjY2Vzc2liaWxp
dHlXZWJQYWdlT2JqZWN0IGFsbG9jXSBpbml0XSk7CiAgICAgW21fbW9ja0FjY2Vzc2liaWxpdHlF
bGVtZW50IHNldFdlYlBhZ2U6dGhpc107CiAKLSAgICBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1v
dGVUb2tlbihhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCkpOworICAgIFJlZiBmcmFtZSA9
IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgYWNj
ZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oYWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0
YSgpLCBmcmFtZS5mcmFtZUlEKCkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtUmVpbml0
aWFsaXplKCkKIHsKLSAgICBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tlbihhY2Nlc3Np
YmlsaXR5UmVtb3RlVG9rZW5EYXRhKCkpOworICAgIFJlZiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXND
b250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgYWNjZXNzaWJpbGl0eVRyYW5z
ZmVyUmVtb3RlVG9rZW4oYWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0YSgpLCBmcmFtZS5mcmFt
ZUlEKCkpOwogfQogCiBSZXRhaW5QdHI8TlNEYXRhPiBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5UmVt
b3RlVG9rZW5EYXRhKCkgY29uc3QKQEAgLTY2Myw2ICs2NjUsMTIgQEAgdm9pZCBXZWJQYWdlOjpn
ZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQKICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogfQogCitXZWJDb3JlOjpJbnRQ
b2ludCBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKwogV0tBY2Nlc3NpYmlsaXR5V2Vi
UGFnZU9iamVjdCogV2ViUGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpCiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RC
YXNlLmgKaW5kZXggMzllOTBlM2M4OTVlLi40OTcwMDcwYTQ1NWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2Jq
ZWN0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0Fj
Y2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oCkBAIC00NSw2ICs0NSw4IEBAIGNsYXNzIEFY
Q29yZU9iamVjdDsKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fc2l6ZSBXVEZfR1VBUkRFRF9CWV9M
T0NLKG1fY2FjaGVMb2NrKTsKICAgICBUaHJlYWRTYWZlV2Vha1B0cjxXZWJDb3JlOjpBWENvcmVP
YmplY3Q+IG1faXNvbGF0ZWRUcmVlUm9vdDsKICNlbmRpZgorCisgICAgV2ViQ29yZTo6SW50UG9p
bnQgbV9yZW1vdGVGcmFtZU9mZnNldDsKICAgICBSZXRhaW5QdHI8aWQ+IG1fcGFyZW50OwogICAg
IGJvb2wgbV9oYXNNYWluRnJhbWVQbHVnaW47CiB9CkBAIC01Niw5ICs1OCwxMSBAQCBjbGFzcyBB
WENvcmVPYmplY3Q7CiAtICh2b2lkKXNldElzb2xhdGVkVHJlZVJvb3Q6KE5ha2VkUHRyPFdlYkNv
cmU6OkFYQ29yZU9iamVjdD4pcm9vdDsKICNlbmRpZgogLSAodm9pZClzZXRSZW1vdGVQYXJlbnQ6
KGlkKXBhcmVudDsKKy0gKHZvaWQpc2V0UmVtb3RlRnJhbWVPZmZzZXQ6KFdlYkNvcmU6OkludFBv
aW50KW9mZnNldDsKIC0gKHZvaWQpc2V0SGFzTWFpbkZyYW1lUGx1Z2luOihib29sKWhhc1BsdWdp
bjsKIAogLSAoaWQpYWNjZXNzaWJpbGl0eVJvb3RPYmplY3RXcmFwcGVyOwogLSAoaWQpYWNjZXNz
aWJpbGl0eUZvY3VzZWRVSUVsZW1lbnQ7CistIChXZWJDb3JlOjpJbnRQb2ludClhY2Nlc3NpYmls
aXR5UmVtb3RlRnJhbWVPZmZzZXQ7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlX
ZWJQYWdlT2JqZWN0QmFzZS5tbQppbmRleCA2Zjk5NTQ1YWViZjUuLmEzMDQ5ZTQ0NzczYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJp
bGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbQpAQCAtMzYsOSAr
MzYsMTEgQEAKICNpbXBvcnQgIldLU3RyaW5nQ0YuaCIKICNpbXBvcnQgPFdlYkNvcmUvQVhPYmpl
Y3RDYWNoZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudC5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9GcmFtZVRyZWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxGcmFtZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9Mb2NhbEZyYW1lVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CisjaW1w
b3J0IDxXZWJDb3JlL1JlbW90ZUZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbFZpZXcu
aD4KICNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsYmFyLmg+CiAKQEAgLTU3LDExICs1OSwxNiBAQCBu
YW1lc3BhY2UgYXggPSBXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5OwogICAgIGlmICghcGFnZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvKiBsb2NhbE1haW5GcmFtZSA9IGR5bmFt
aWNEb3duY2FzdDxXZWJDb3JlOjpMb2NhbEZyYW1lPihwYWdlLT5tYWluRnJhbWUoKSk7Ci0gICAg
aWYgKCFsb2NhbE1haW5GcmFtZSB8fCAhbG9jYWxNYWluRnJhbWUtPmRvY3VtZW50KCkpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIGlmIChhdXRvKiBsb2NhbE1haW5GcmFtZSA9IGR5bmFt
aWNEb3duY2FzdDxXZWJDb3JlOjpMb2NhbEZyYW1lPihwYWdlLT5tYWluRnJhbWUoKSkpIHsKKyAg
ICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gbG9jYWxNYWluRnJhbWUtPmRvY3VtZW50KCkpCisg
ICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQtPmF4T2JqZWN0Q2FjaGUoKTsKKyAgICB9IGVsc2Ug
aWYgKGF1dG8qIHJlbW90ZU1haW5GcmFtZSA9IGR5bmFtaWNEb3duY2FzdDxXZWJDb3JlOjpSZW1v
dGVGcmFtZT4ocGFnZS0+bWFpbkZyYW1lKCkpKSB7CisgICAgICAgIGF1dG8mIHRyZWUgPSByZW1v
dGVNYWluRnJhbWUtPnRyZWUoKTsKKyAgICAgICAgaWYgKGF1dG8qIGZpcnN0RnJhbWUgPSBkeW5h
bWljRG93bmNhc3Q8V2ViQ29yZTo6TG9jYWxGcmFtZT4odHJlZS5maXJzdENoaWxkKCkpKQorICAg
ICAgICAgICAgcmV0dXJuIGZpcnN0RnJhbWUtPmRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKTsK
KyAgICB9CiAKLSAgICByZXR1cm4gbG9jYWxNYWluRnJhbWUtPmRvY3VtZW50KCktPmF4T2JqZWN0
Q2FjaGUoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogLSAoaWQpYWNjZXNzaWJpbGl0eVBs
dWdpbk9iamVjdApAQCAtMTUyLDYgKzE1OSwxNyBAQCBuYW1lc3BhY2UgYXggPSBXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5OwogICAgIG1faGFzTWFpbkZyYW1lUGx1Z2luID0gaGFzUGx1Z2luOwogfQog
CistICh2b2lkKXNldFJlbW90ZUZyYW1lT2Zmc2V0OihXZWJDb3JlOjpJbnRQb2ludClvZmZzZXQK
K3sKKyAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKKyAgICBtX3JlbW90ZUZyYW1lT2Zmc2V0
ID0gb2Zmc2V0OworfQorCistIChXZWJDb3JlOjpJbnRQb2ludClhY2Nlc3NpYmlsaXR5UmVtb3Rl
RnJhbWVPZmZzZXQKK3sKKyAgICByZXR1cm4gbV9yZW1vdGVGcmFtZU9mZnNldDsKK30KKwogLSAo
dm9pZClzZXRSZW1vdGVQYXJlbnQ6KGlkKXBhcmVudAogewogICAgIEFTU0VSVChpc01haW5SdW5M
b29wKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2Vi
UGFnZU1hYy5tbQppbmRleCBhZGZjNDM2N2NlYzIuLjg0NDgxYjFiNWU5NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTEy
NCwxNiArMTI0LDEyIEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplQWNjZXNzaWJp
bGl0eSgpCiAgICAgLy8gQ3VycmVudGx5LCBpdCBpcyBhbHNvIG5lZWRlZCB0byBhbGxvY2F0ZSBh
bmQgaW5pdGlhbGl6ZSBhbiBOU0FwcGxpY2F0aW9uIG9iamVjdC4KICAgICBbTlNBcHBsaWNhdGlv
biBfYWNjZXNzaWJpbGl0eUluaXRpYWxpemVdOwogCi0gICAgYXV0byBtb2NrQWNjZXNzaWJpbGl0
eUVsZW1lbnQgPSBhZG9wdE5TKFtbV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdCBhbGxvY10g
aW5pdF0pOwotCiAgICAgLy8gR2V0IHRoZSBwaWQgZm9yIHRoZSBzdGFydGluZyBwcm9jZXNzLgog
ICAgIHBpZF90IHBpZCA9IFdlYkNvcmU6OnByZXNlbnRpbmdBcHBsaWNhdGlvblBJRCgpOwotICAg
IGlmIChbbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IoYWNjZXNzaWJpbGl0eVNldFByZXNlbnRlclByb2Nlc3NJZGVudGlmaWVyOildKQotICAgICAg
ICBbKGlkKW1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudC5nZXQoKSBhY2Nlc3NpYmlsaXR5U2V0UHJl
c2VudGVyUHJvY2Vzc0lkZW50aWZpZXI6cGlkXTsKLSAgICBbbW9ja0FjY2Vzc2liaWxpdHlFbGVt
ZW50IHNldFdlYlBhZ2U6dGhpc107Ci0gICAgbV9tb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgPSBX
VEZNb3ZlKG1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCk7Ci0KLSAgICBhY2Nlc3NpYmlsaXR5VHJh
bnNmZXJSZW1vdGVUb2tlbihhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCkpOworICAgIGNy
ZWF0ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudChwaWQpOworICAgIFJlZlB0ciBsb2NhbE1haW5G
cmFtZSA9IGR5bmFtaWNEb3duY2FzdDxMb2NhbEZyYW1lPihtX3BhZ2UtPm1haW5GcmFtZSgpKTsK
KyAgICBpZiAobG9jYWxNYWluRnJhbWUpCisgICAgICAgIGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJl
bW90ZVRva2VuKGFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSwgbG9jYWxNYWluRnJhbWUt
PmZyYW1lSUQoKSk7CiAKICAgICAvLyBDbG9zZSBNYWNoIGNvbm5lY3Rpb24gdG8gTGF1bmNoIFNl
cnZpY2VzLgogI2lmIEhBVkUoTFNfU0VSVkVSX0NPTk5FQ1RJT05fU1RBVFVTX1JFTEVBU0VfTk9U
SUZJQ0FUSU9OU19NQVNLKQpAQCAtMTQ1LDkgKzE0MSwxOSBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRm
b3JtSW5pdGlhbGl6ZUFjY2Vzc2liaWxpdHkoKQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnJldm9rZUxhdW5jaFNlcnZpY2VzU2FuZGJveEV4dGVuc2lvbigpOwogfQogCit2b2lkIFdlYlBh
Z2U6OmNyZWF0ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudChwaWRfdCBwaWQpCit7CisgICAgYXV0
byBtb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgPSBhZG9wdE5TKFtbV0tBY2Nlc3NpYmlsaXR5V2Vi
UGFnZU9iamVjdCBhbGxvY10gaW5pdF0pOworCisgICAgW21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVu
dCBhY2Nlc3NpYmlsaXR5U2V0UHJlc2VudGVyUHJvY2Vzc0lkZW50aWZpZXI6cGlkXTsKKyAgICBb
bW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50IHNldFdlYlBhZ2U6dGhpc107CisgICAgbV9tb2NrQWNj
ZXNzaWJpbGl0eUVsZW1lbnQgPSBXVEZNb3ZlKG1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCk7Cit9
CisKIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1SZWluaXRpYWxpemUoKQogewotICAgIGFjY2Vzc2li
aWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKGFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSk7
CisgICAgUmVmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWlu
RnJhbWUoKTsKKyAgICBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tlbihhY2Nlc3NpYmls
aXR5UmVtb3RlVG9rZW5EYXRhKCksIGZyYW1lLT5mcmFtZUlEKCkpOwogfQogCiBSZXRhaW5QdHI8
TlNEYXRhPiBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCkgY29uc3QKQEAg
LTQ3MSwxMiArNDc3LDI3IEBAIGJvb2wgV2ViUGFnZTo6cGVyZm9ybU5vbkVkaXRpbmdCZWhhdmlv
ckZvclNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIEtleWJvCiAgICAgcmV0dXJuIGRp
ZFBlcmZvcm1BY3Rpb247CiB9CiAKK3ZvaWQgV2ViUGFnZTo6dXBkYXRlUmVtb3RlUGFnZUFjY2Vz
c2liaWxpdHlPZmZzZXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6
OkludFBvaW50IG9mZnNldCkKK3sKKyAgICBbYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpIHNl
dFJlbW90ZUZyYW1lT2Zmc2V0Om9mZnNldF07Cit9CisKK3ZvaWQgV2ViUGFnZTo6cmVnaXN0ZXJS
ZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlUb2tlbnMocGlkX3QgcGlkLCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGVsZW1lbnRUb2tlbikKK3sKKyAgICBOU0RhdGEgKmVsZW1lbnRUb2tlbkRhdGEg
PSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZWxlbWVudFRva2VuLmRhdGEoKSBsZW5ndGg6ZWxlbWVu
dFRva2VuLnNpemUoKV07CisgICAgYXV0byByZW1vdGVFbGVtZW50ID0gZWxlbWVudFRva2VuRGF0
YS5sZW5ndGggPyBhZG9wdE5TKFtbTlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlFbGVtZW50IGFsbG9j
XSBpbml0V2l0aFJlbW90ZVRva2VuOmVsZW1lbnRUb2tlbkRhdGFdKSA6IG5pbDsKKworICAgIGNy
ZWF0ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudChwaWQpOworICAgIFthY2Nlc3NpYmlsaXR5UmVt
b3RlT2JqZWN0KCkgc2V0UmVtb3RlUGFyZW50OnJlbW90ZUVsZW1lbnQuZ2V0KCldOworfQorCiB2
b2lkIFdlYlBhZ2U6OnJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vucyhjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIGVsZW1lbnRUb2tlbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiB3aW5kb3dUb2tlbikKIHsKICAgICBOU0RhdGEgKmVsZW1lbnRUb2tlbkRhdGEgPSBbTlNEYXRh
IGRhdGFXaXRoQnl0ZXM6ZWxlbWVudFRva2VuLmRhdGEoKSBsZW5ndGg6ZWxlbWVudFRva2VuLnNp
emUoKV07CiAgICAgTlNEYXRhICp3aW5kb3dUb2tlbkRhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0
ZXM6d2luZG93VG9rZW4uZGF0YSgpIGxlbmd0aDp3aW5kb3dUb2tlbi5zaXplKCldOwogICAgIGF1
dG8gcmVtb3RlRWxlbWVudCA9IGVsZW1lbnRUb2tlbkRhdGEubGVuZ3RoID8gYWRvcHROUyhbW05T
QWNjZXNzaWJpbGl0eVJlbW90ZVVJRWxlbWVudCBhbGxvY10gaW5pdFdpdGhSZW1vdGVUb2tlbjpl
bGVtZW50VG9rZW5EYXRhXSkgOiBuaWw7CiAgICAgYXV0byByZW1vdGVXaW5kb3cgPSB3aW5kb3dU
b2tlbkRhdGEubGVuZ3RoID8gYWRvcHROUyhbW05TQWNjZXNzaWJpbGl0eVJlbW90ZVVJRWxlbWVu
dCBhbGxvY10gaW5pdFdpdGhSZW1vdGVUb2tlbjp3aW5kb3dUb2tlbkRhdGFdKSA6IG5pbDsKKwog
ICAgIFtyZW1vdGVFbGVtZW50IHNldFdpbmRvd1VJRWxlbWVudDpyZW1vdGVXaW5kb3cuZ2V0KCld
OwogICAgIFtyZW1vdGVFbGVtZW50IHNldFRvcExldmVsVUlFbGVtZW50OnJlbW90ZVdpbmRvdy5n
ZXQoKV07CiAKQEAgLTUxOCw2ICs1MzksMTEgQEAgV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVj
dCogV2ViUGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpCiAgICAgcmV0dXJuIG1fbW9j
a0FjY2Vzc2liaWxpdHlFbGVtZW50LmdldCgpOwogfQogCitXZWJDb3JlOjpJbnRQb2ludCBXZWJQ
YWdlOjphY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKQoreworICAgIHJldHVybiBbbV9t
b2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgYWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0XTsK
K30KKwogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiB2b2lkIFdlYlBh
Z2U6OmNhY2hlQVhQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBwb2ludCkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDY4NmQzODVhYjQwYS4uM2Jl
NjA5M2IxNzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTY1LDYg
KzY1LDkgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NjcmVlblByb3BlcnRpZXMuaD4KICNpbmNsdWRl
IDxkaXNwYXRjaC9kaXNwYXRjaC5oPgogI2luY2x1ZGUgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CisK
K09CSkNfQ0xBU1MgTlNNdXRhYmxlRGljdGlvbmFyeTsKKwogI2VuZGlmCiAKICNpZiBQTEFURk9S
TShHVEspCkBAIC04Nyw2ICs5MCw3IEBACiAjaW5jbHVkZSAiV2ViU1FMaXRlRGF0YWJhc2VUcmFj
a2VyLmgiCiAjZW5kaWYKIAorCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIE9iamVjdDsKIH0KQEAg
LTUwMCw2ICs1MDQsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1TZXRDYWNoZU1vZGVs
KENhY2hlTW9kZWwpOwogCiAgICAgdm9pZCBzZXRFbmhhbmNlZEFjY2Vzc2liaWxpdHkoYm9vbCk7
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBiaW5kQWNjZXNzaWJpbGl0eUZyYW1lV2l0
aERhdGEoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
KTsKKyNlbmRpZgogCiAgICAgdm9pZCBzdGFydE1lbW9yeVNhbXBsZXIoU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlJiYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IGRvdWJsZSk7CiAgICAgdm9pZCBzdG9w
TWVtb3J5U2FtcGxlcigpOwpAQCAtODEwLDYgKzgxNyw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgSGFzaENvdW50ZWRTZXQ8U3RyaW5nPiBtX3BlbmRpbmdQYXN0ZWJvYXJk
V3JpdGVDb3VudHM7CiAgICAgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBtX2F1ZGl0VG9r
ZW5Gb3JTZWxmOworICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBtX2FjY2Vzc2li
aWxpdHlSZW1vdGVGcmFtZVRva2VuQ2FjaGU7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMu
aW4KaW5kZXggNGFmNzY2M2UzNTAxLi41OGVlYTU2YzYyMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC02NSw2ICs2NSw3IEBAIG1l
c3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgTm90UmVmQ291bnRlZCB7CiAgICAg
U2V0VGV4dENoZWNrZXJTdGF0ZShzdHJ1Y3QgV2ViS2l0OjpUZXh0Q2hlY2tlclN0YXRlIHRleHRD
aGVja2VyU3RhdGUpCiAKICAgICBTZXRFbmhhbmNlZEFjY2Vzc2liaWxpdHkoYm9vbCBmbGFnKQor
ICAgIEJpbmRBY2Nlc3NpYmlsaXR5RnJhbWVXaXRoRGF0YShXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpOwogCiAgICAgR2FyYmFnZUNvbGxl
Y3RKYXZhU2NyaXB0T2JqZWN0cygpCiAgICAgU2V0SmF2YVNjcmlwdEdhcmJhZ2VDb2xsZWN0b3JU
aW1lckVuYWJsZWQoYm9vbCBlbmFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQppbmRleCBiNmM4NGZkYTE3ZGYuLjlkZjkxYmYzM2Zj
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3ND
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0Nv
Y29hLm1tCkBAIC0yMTMsNiArMjEzLDE2IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1TZXRD
YWNoZU1vZGVsKENhY2hlTW9kZWwpCiB7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzczo6YmluZEFjY2Vz
c2liaWxpdHlGcmFtZVdpdGhEYXRhKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCit7CisgICAgaWYgKCFtX2FjY2Vzc2liaWxp
dHlSZW1vdGVGcmFtZVRva2VuQ2FjaGUpCisgICAgICAgIG1fYWNjZXNzaWJpbGl0eVJlbW90ZUZy
YW1lVG9rZW5DYWNoZSA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0
XSk7CisKKyAgICBhdXRvIGZyYW1lSW50ID0gZnJhbWVJRC5vYmplY3QoKS50b1VJbnQ2NCgpOwor
ICAgIE5TRGF0YSAqbnNEYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEuZGF0YSgpIGxl
bmd0aDpkYXRhLnNpemUoKV07CisgICAgW21fYWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lVG9rZW5D
YWNoZSBzZXRPYmplY3Q6bnNEYXRhIGZvcktleTpAKGZyYW1lSW50KV07Cit9CisKIGlkIFdlYlBy
b2Nlc3M6OmFjY2Vzc2liaWxpdHlGb2N1c2VkVUlFbGVtZW50KCkKIHsKICAgICBhdXRvIHJldHJp
ZXZlRm9jdXNlZFVJRWxlbWVudEZyb21NYWluVGhyZWFkID0gW10gKCkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmgKaW5kZXggMjFlMjFmMDhiZDY0Li5iNGNmMjgyYzE4Y2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaApAQCAtMjI1LDYgKzIyNSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAog
ICAgIFJlbW90ZUFYT2JqZWN0UmVmIGFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSBmaW5hbCB7
IHJldHVybiAwOyB9CisgICAgV2ViQ29yZTo6SW50UG9pbnQgYWNjZXNzaWJpbGl0eVJlbW90ZUZy
YW1lT2Zmc2V0KCkgZmluYWwgeyByZXR1cm4geyB9OyB9CiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJ
VFlfSVNPTEFURURfVFJFRSkKICAgICB2b2lkIHNldEFYSXNvbGF0ZWRUcmVlUm9vdChXZWJDb3Jl
OjpBWENvcmVPYmplY3QqKSBmaW5hbCB7IH0KICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>469874</attachid>
            <date>2024-02-15 01:33:20 -0800</date>
            <delta_ts>2024-02-15 01:45:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-268804-20240215013319.patch</filename>
            <type>text/plain</type>
            <size>123827</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">RnJvbSA0ODBiMTNkYmRkZTk0ODlkNzc0M2IzZGE2NjljNGI3YzRkZDE3MDQzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpcyBGbGVpemFjaCA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4K
RGF0ZTogTW9uLCA1IEZlYiAyMDI0IDIzOjM5OjM3IC0wODAwClN1YmplY3Q6IFtQQVRDSF0gQVg6
IFN1cHBvcnQgc2l0ZSBpc29sYXRpb24gZm9yIFZvaWNlT3ZlcgogaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTI2ODgwNCByZGFyOi8vOTk2NjU1NjEKClJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgoKSW5pdGlhbCBzdXBwb3J0IGZvciBzaXRlIGlzb2xhdGlvbiBmb3Ig
Vm9pY2VPdmVyLgoKV2hlbiBhIHNjcm9sbCB2aWV3IGhvc3RzIGEgUmVtb3RlRnJhbWUgaXQgYmlu
ZHMgaXRzZWxmIHRvIHRoZSBvdGhlciBzaWRlIHRocm91Z2ggYSBXZWJQYWdlIG1lc3NhZ2UuClRo
aXMgdHJhbnNmZXJzIGRhdGEgdG9rZW5zIHNvIEFjY2Vzc2liaWxpdHkgcmVtb3RlIGVsZW1lbnRz
IGFyZSBjcmVhdGVkIGFuZCBob29rZWQgdXAuCgpUaGUgYm91bmRpbmcgYm94ZXMgaW5zaWRlIHRo
ZSBzdWIgZnJhbWVzIG5lZWQgdG8gaGF2ZSB0aGUgaW5pdGlhbCBvZmZzZXQgYXBwbGllZCBhbmQg
dGhlbiBuZWVkIHRvIGJlIGNvbnZlcnRlZAplYWNoIHN0ZXAgdXAgdGhlIGNoYWluIHRvIGFjY291
bnQgZm9yIHNjcm9sbCBvZmZzZXRzIHRoYXQgb25seSBlYWNoIHByb2Nlc3Mga25vd3MgYWJvdXQu
CgoqIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0OgoqIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYQ29yZU9iamVjdC5oOgooV2ViQ29yZTo6YWNjZXNzaWJpbGl0eVJvbGVUb1N0cmluZyk6CihX
ZWJDb3JlOjpBWENvcmVPYmplY3Q6OmlzUmVtb3RlRnJhbWUgY29uc3QpOgoqIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhMb2dnZXIuY3BwOgooV2ViQ29yZTo6c3RyZWFtQVhDb3JlT2Jq
ZWN0KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgoo
V2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Y3JlYXRlKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6
Om9uUmVtb3RlRnJhbWVJbml0aWFsaXplZCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnJlbGF0aXZl
RnJhbWUgY29uc3QpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6cmVtb3RlRnJhbWVP
ZmZzZXQgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJl
bW90ZUZyYW1lLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFt
ZUNsaWVudC5oLgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lOjpjcmVhdGUpOgoo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lOjpBY2Nlc3NpYmlsaXR5UmVtb3RlRnJh
bWUpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lOjplbGVtZW50UmVjdCBjb25z
dCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVtb3RlRnJh
bWUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZUNsaWVudC5o
LgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHA6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRBdHRhY2htZW50
Q2hpbGRyZW4pOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkQ2hpbGRy
ZW4pOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZp
ZXcuY3BwOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmRldGFjaFJlbW90ZVBh
cnRzKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpjbGVhckNoaWxkcmVuKToK
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjphZGRSZW1vdGVGcmFtZUNoaWxkKToK
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjphZGRDaGlsZHJlbik6CihXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6d2ViQXJlYU9iamVjdCBjb25zdCk6CihXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6ZG9jdW1lbnQgY29uc3QpOgooV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXc6OnBhcmVudE9iamVjdCBjb25zdCk6CiogU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oOgoqIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwOgooV2Vi
Q29yZTo6QVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgooV2ViQ29yZTo6
QVhJc29sYXRlZE9iamVjdDo6c2V0UHJvcGVydHkpOgooV2ViQ29yZTo6QVhJc29sYXRlZE9iamVj
dDo6cmVtb3RlRnJhbWVPZmZzZXQgY29uc3QpOgooV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6
cmVsYXRpdmVGcmFtZSBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29s
YXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcDoKKFdlYkNvcmU6OkFYSXNvbGF0ZWRU
cmVlOjp1cGRhdGVOb2RlUHJvcGVydGllcyk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9tYWMvQVhJc29sYXRlZE9iamVjdE1hYy5tbToKKFdlYkNvcmU6
OkFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVQbGF0Zm9ybVByb3BlcnRpZXMpOgooV2ViQ29y
ZTo6QVhJc29sYXRlZE9iamVjdDo6cmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQgY29uc3QpOgoq
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMu
bW06CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWU6OmdlbmVyYXRlUmVtb3RlVG9r
ZW4gY29uc3QpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lOjppbml0aWFsaXpl
UGxhdGZvcm1FbGVtZW50V2l0aFJlbW90ZVRva2VuKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHk6
OmNyZWF0ZVBsYXRmb3JtUm9sZU1hcCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tOgoobWFrZU5TQXJyYXkpOgoq
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyTWFjLm1tOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciByb2xlXSk6Cigt
W1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGlzRW1wdHlHcm91cF0pOgooLVtXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlciByb2xlRGVzY3JpcHRpb25dKToKKC1bV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIgX3RyYW5zZm9ybVNwZWNpYWxDaGlsZHJlbkNhc2VzOl0pOgooLVtX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
XSk6CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlIaXRUZXN0
Ol0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBBTExPV19ERVBSRUNBVEVEX0lN
UExFTUVOVEFUSU9OU19FTkRdKToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOmZvclBhcmFtZXRlcjpdKToKKC1bV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUluZGV4T2ZDaGlsZDpdKToKKC1bV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUFycmF5QXR0cmlidXRlQ291bnQ6
XSk6CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBcnJheUF0
dHJpYnV0ZVZhbHVlczppbmRleDptYXhDb3VudDpdKToKKiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmNwcDoKKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmFjY2Vz
c2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCk6CiogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
RnJhbWVMb2FkZXJDbGllbnQuaDoKKiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9jYWxGcmFtZUxv
YWRlckNsaWVudC5oOgoqIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHA6CihXZWJDb3JlOjpQ
YWdlOjpzaG91bGRVcGRhdGVBY2Nlc3NpYmlsaXR5UmVnaW9ucyBjb25zdCk6CiogU291cmNlL1dl
YkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5jcHA6CihXZWJDb3JlOjpSZW1vdGVGcmFtZTo6dXBkYXRl
UmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KToKKFdlYkNvcmU6OlJlbW90ZUZyYW1lOjp1
bmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKToKKFdlYkNvcmU6OlJlbW90ZUZyYW1lOjpi
aW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyk6CiogU291cmNlL1dlYkNvcmUvcGFnZS9SZW1v
dGVGcmFtZS5oOgoqIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVDbGllbnQuaDoKKiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CiogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOgooV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQ
cm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKToKKiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwOgooV2ViS2l0OjpXZWJGcmFtZVByb3h5OjpiaW5kQWNj
ZXNzaWJpbGl0eUZyYW1lV2l0aERhdGEpOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZy
YW1lUHJveHkuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgoo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnN3YXBUb1Byb3Zpc2lvbmFsUGFnZSk6CihXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6YmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMpOgooV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldCk6CiogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CiogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5tbToKKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmFjY2Vzc2liaWxpdHlX
ZWJQcm9jZXNzVG9rZW5SZWNlaXZlZCk6CiogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dl
YlBhZ2VQcm94eUlPUy5tbToKKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWdpc3RlcldlYlByb2Nl
c3NBY2Nlc3NpYmlsaXR5VG9rZW4pOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdl
Q2xpZW50SW1wbE1hYy5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbE1hYy5tbToKKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmFjY2Vzc2liaWxpdHlXZWJQcm9j
ZXNzVG9rZW5SZWNlaXZlZCk6CiogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQ
cm94eU1hYy5tbToKKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWdpc3RlcldlYlByb2Nlc3NBY2Nl
c3NpYmlsaXR5VG9rZW4pOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3SW1w
bC5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3SW1wbC5tbToKKFdlYktp
dDo6V2ViVmlld0ltcGw6OnNldEFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW4pOgoqIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJMb2NhbEZyYW1lTG9hZGVyQ2xp
ZW50LmNwcDoKKFdlYktpdDo6V2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudDo6YWNjZXNzaWJpbGl0
eVJlbW90ZUZyYW1lT2Zmc2V0KToKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudC5oOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVudC5jcHA6CihXZWJLaXQ6Oldl
YlJlbW90ZUZyYW1lQ2xpZW50Ojp1bmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKToKKFdl
YktpdDo6V2ViUmVtb3RlRnJhbWVDbGllbnQ6OnVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0
eU9mZnNldCk6CihXZWJLaXQ6OldlYlJlbW90ZUZyYW1lQ2xpZW50OjpiaW5kUmVtb3RlQWNjZXNz
aWJpbGl0eUZyYW1lcyk6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlJlbW90ZUZyYW1lQ2xpZW50Lmg6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tOgooV2ViS2l0OjpXZWJQYWdlOjphY2Nlc3NpYmlsaXR5
VHJhbnNmZXJSZW1vdGVUb2tlbik6CihXZWJLaXQ6OldlYlBhZ2U6OmFjY2Vzc2liaWxpdHlNYW5h
Z2VSZW1vdGVFbGVtZW50U3RhdHVzKToKKFdlYktpdDo6V2ViUGFnZTo6YmluZFJlbW90ZUFjY2Vz
c2liaWxpdHlGcmFtZXMpOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaDoKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
OgooV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemVBY2Nlc3NpYmlsaXR5KToKKFdl
YktpdDo6V2ViUGFnZTo6cGxhdGZvcm1SZWluaXRpYWxpemUpOgooV2ViS2l0OjpXZWJQYWdlOjph
Y2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQpOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oOgoqIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2Jq
ZWN0QmFzZS5tbToKKC1bV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UgYXhPYmplY3RD
YWNoZV0pOgooLVtXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZSBzZXRSZW1vdGVGcmFt
ZU9mZnNldDpdKToKKC1bV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UgYWNjZXNzaWJp
bGl0eVJlbW90ZUZyYW1lT2Zmc2V0XSk6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYlBhZ2VNYWMubW06CihXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6
ZUFjY2Vzc2liaWxpdHkpOgooV2ViS2l0OjpXZWJQYWdlOjpjcmVhdGVNb2NrQWNjZXNzaWJpbGl0
eUVsZW1lbnQpOgooV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybVJlaW5pdGlhbGl6ZSk6CihXZWJL
aXQ6OldlYlBhZ2U6OnVwZGF0ZVJlbW90ZVBhZ2VBY2Nlc3NpYmlsaXR5T2Zmc2V0KToKKFdlYktp
dDo6V2ViUGFnZTo6cmVnaXN0ZXJSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlUb2tlbnMpOgooV2Vi
S2l0OjpXZWJQYWdlOjpyZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMpOgooV2Vi
S2l0OjpXZWJQYWdlOjphY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQpOgoqIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1dlYlByb2Nlc3NDb2NvYS5tbToKKFdlYktpdDo6V2ViUHJvY2Vzczo6YmluZEFjY2Vzc2liaWxp
dHlGcmFtZVdpdGhEYXRhKToKKiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgotLS0KIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
ICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiAuLi4vV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogfCAgMTIgKy0KIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhDb3JlT2JqZWN0LmggICB8ICAxMiArKwogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WExvZ2dlci5jcHAgICAgIHwgICAzICsKIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5jcHAgICB8ICAxNSArLQogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmggIHwgICAyICsKIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhSZW1vdGVG
cmFtZS5jcHAgICB8ICA1MiArKysrKysrCiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
UmVtb3RlRnJhbWUuaCAgfCAgNjMgKysrKysrKysKIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuY3BwICAgICB8ICAxOCArKy0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuaCAgICAgICB8ICAgNSArCiAuLi4vQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHAgICAgICAgICAgICAgfCAgIDQgKy0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlTY3JvbGxWaWV3LmNwcCB8ICA2OSArKysrKysrLS0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlTY3JvbGxWaWV3LmggICB8ICAgNiArLQogLi4uL2lvcy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlcklPUy5tbSAgIHwgICAzICstCiAuLi4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRPYmplY3QuY3BwICAgICAgICAgfCAgMzUgKysrKy0KIC4uLi9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZE9iamVjdC5oICAgICAgICAgICB8ICAgOCArLQogLi4uL2lzb2xhdGVkdHJlZS9BWElzb2xh
dGVkVHJlZS5jcHAgICAgICAgICAgIHwgIDYxICsrKy0tLS0tCiAuLi4vaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRUcmVlLmggICAgICAgICAgICAgfCAgMjkgKysrKwogLi4uL2lzb2xhdGVkdHJlZS9t
YWMvQVhJc29sYXRlZE9iamVjdE1hYy5tbSAgIHwgICA3ICsKIC4uLi9tYWMvQWNjZXNzaWJpbGl0
eU9iamVjdE1hYy5tbSAgICAgICAgICAgICB8ICAyNyArKysrCiAuLi4vbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbSAgfCAgMTEgKy0KIC4uLi9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJNYWMubW0gICB8IDE0MyArKysrKysrKysrKystLS0tLS0KIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwICAgICAgICB8ICAgNSArCiAuLi4vV2Vi
Q29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oICAgfCAgIDEgKwogLi4uL1dlYkNv
cmUvbG9hZGVyL0xvY2FsRnJhbWVMb2FkZXJDbGllbnQuaCAgIHwgICAxICsKIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAgICAgICAgICAgICAgICAgICB8ICAxMSArLQogU291cmNlL1dlYkNv
cmUvcGFnZS9SZW1vdGVGcmFtZS5jcHAgICAgICAgICAgIHwgIDE1ICsrCiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1JlbW90ZUZyYW1lLmggICAgICAgICAgICAgfCAgIDQgKwogU291cmNlL1dlYkNvcmUv
cGFnZS9SZW1vdGVGcmFtZUNsaWVudC5oICAgICAgIHwgICA0ICsKIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaCAgICAgICAgICB8ICAgMyArLQogLi4uL1dlYktpdC9VSVByb2Nl
c3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIHwgICAyICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vz
cy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkZyYW1lUHJveHkuY3BwICAgICB8ICAgOSArKwogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViRnJhbWVQcm94eS5oICAgICAgIHwgICAyICsKIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAgICAgICB8ICAyNCArKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oICAgICAgICB8ICAgNCArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluIHwgICA0ICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MuaCAgfCAgIDIgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5tbSB8ICAgMiArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dl
YlBhZ2VQcm94eUlPUy5tbSAgIHwgICA0ICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGxNYWMuaCAgfCAgIDIgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdl
Q2xpZW50SW1wbE1hYy5tbSB8ICAgNCArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBh
Z2VQcm94eU1hYy5tbSAgIHwgICA0ICstCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2Vi
Vmlld0ltcGwuaCAgICAgfCAgIDMgKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJW
aWV3SW1wbC5tbSAgICB8ICAgOCArLQogLi4uL1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuY3Bw
ICAgICAgICAgICAgIHwgICA2ICsKIC4uLi9XZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmggICAg
ICAgICAgICAgICB8ICAgMSArCiAuLi4vV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGll
bnQuY3BwICAgfCAgMzIgKysrKwogLi4uL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90ZUZyYW1lQ2xp
ZW50LmggICAgIHwgICA0ICsKIC4uLi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNv
Y29hLm1tICB8ICA0MSArKysrLQogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oICAgIHwgIDEzICstCiAuLi4vV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4gICAgfCAgIDMgKwogLi4uL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bSAgICAgIHwgIDEyICstCiAuLi4vbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNl
LmggICAgfCAgIDQgKwogLi4uL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5t
bSAgIHwgIDI3ICsrKy0KIC4uLi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0g
ICAgICB8ICA0NCArKysrLS0KIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgg
ICAgICAgICB8ICAgOCArCiAuLi4vV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbiAgfCAgIDEgKwogLi4uL1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tICAg
ICAgIHwgIDEwICsrCiAuLi4vbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmggfCAgIDEgKwogNjAgZmlsZXMgY2hhbmdlZCwgNzUxIGluc2VydGlvbnMoKyksIDE2MiBkZWxl
dGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYUmVtb3RlRnJhbWUuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWFJlbW90ZUZyYW1lLmgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGYyN2U2NDdhNmNk
Zi4uMGE1ZjYzZmNlNTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtNTI0LDYgKzUyNCw3IEBAIGFjY2Vz
c2liaWxpdHkvQVhHZW9tZXRyeU1hbmFnZXIuY3BwCiBhY2Nlc3NpYmlsaXR5L0FYSW1hZ2UuY3Bw
CiBhY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcAogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
LmNwcAorYWNjZXNzaWJpbGl0eS9BWFJlbW90ZUZyYW1lLmNwcAogYWNjZXNzaWJpbGl0eS9BWFRl
eHRNYXJrZXIuY3BwCiBhY2Nlc3NpYmlsaXR5L0FYVGV4dFJ1bi5jcHAKIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGVhYzM0NjcwOTQyNS4uN2MzODIyNjQxNmRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0yNzAsOCArMjcwLDggQEAKIAkJMDgxMDkzREMxMjU1RjBFNzAwRUQ5RDI5IC8qIFNW
R1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDgxMDkzREExMjU1RjBFNzAwRUQ5RDI5IC8qIFNWR1RleHRM
YXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5oICovOyB9OwogCQkwODE2NjhENDEyNTYwM0JGMDA2RjI1
REUgLyogU1ZHVGV4dENodW5rQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDgxNjY4RDIxMjU2MDNCRjAwNkYyNURFIC8qIFNWR1RleHRDaHVu
a0J1aWxkZXIuaCAqLzsgfTsKIAkJMDgxNjY4REExMjU2MDNENTAwNkYyNURFIC8qIFNWR1RleHRM
YXlvdXRFbmdpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA4MTY2OEQ4MTI1NjAzRDUwMDZGMjVERSAvKiBTVkdUZXh0TGF5b3V0RW5naW5lLmggKi87
IH07Ci0JCTA4MUFBOERBMTExMTIzN0UwMDNCQTE1RiAvKiBTVkdWaXNpdGVkRWxlbWVudFRyYWNr
aW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODFB
QThEOTExMTEyMzdFMDAzQkExNUYgLyogU1ZHVmlzaXRlZEVsZW1lbnRUcmFja2luZy5oICovOyB9
OwogCQkwODFBQThEQTExMTEyMzdFMDAyQUIwNkUgLyogU1ZHRWxlbWVudFJhcmVEYXRhLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODFBQThEOTExMTEy
MzdFMDAyQUIwNkUgLyogU1ZHRWxlbWVudFJhcmVEYXRhLmggKi87IH07CisJCTA4MUFBOERBMTEx
MTIzN0UwMDNCQTE1RiAvKiBTVkdWaXNpdGVkRWxlbWVudFRyYWNraW5nLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODFBQThEOTExMTEyMzdFMDAzQkEx
NUYgLyogU1ZHVmlzaXRlZEVsZW1lbnRUcmFja2luZy5oICovOyB9OwogCQkwODNEQUVBNzBGMDFB
N0ZCMDAzNDI3NTQgLyogUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4M0RBRUEzMEYwMUE3RkIwMDM0Mjc1
NCAvKiBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5oICovOyB9OwogCQkwODNEQUVBOTBGMDFB
N0ZCMDAzNDI3NTQgLyogUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODNEQUVBNTBGMDFBN0ZCMDAzNDI3
NTQgLyogUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmggKi87IH07CiAJCTA4NDRCMDFEMTI1
NUI0RTYwMEI5Q0REMCAvKiBTVkdCb3VuZGluZ0JveENvbXB1dGF0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODQ0QjAxRDEyNTVFNEU2MDBCOUNE
RDAgLyogU1ZHQm91bmRpbmdCb3hDb21wdXRhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMjI2LDkgKzEyMjYsOSBAQAogCQkzMkE3MEQ1
ODI4MzYxMzhFMDA4MDA2MEMgLyogUG9zaXRpb25lZEdseXBocy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzJBNzBENTYyODM2MTM4RDAwODAwNjBDIC8q
IFBvc2l0aW9uZWRHbHlwaHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkzMkRBRTIzODI5OTRBNTE1MDBGMEU3NjcgLyogU3R5bGVWaXNpdGVkTGlu
a0NvbG9yRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzJEQUUyMzcyOTk0QTUwQzAwRjBFNzY3IC8qIFN0eWxlVmlzaXRlZExpbmtDb2xvckRhdGEu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzMkVB
RkI4RDI3NEM1RUE2MDA2NTA1NTcgLyogRm9udENhc2NhZGVDYWNoZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzJFQUZCOEIyNzRDNUVBNTAwNjUwNTU3
IC8qIEZvbnRDYXNjYWRlQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwotCQkzMzQ0MDhDNDMzRjhDQTRDMTBBMzI4RjQgLyogU1ZHVmlzaXRlZFJl
bmRlcmVyVHJhY2tpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMzNDQwNzc0MTJEOUJDNEEwMEEzMjhGNCAvKiBTVkdWaXNpdGVkUmVuZGVyZXJUcmFj
a2luZy5oICovOyB9OwogCQkzMzQ0MDhDNDMzRjhDQTRDMTAwNDQyMzQgLyogU1ZHTGF5ZXJUcmFu
c2Zvcm1VcGRhdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzMzQ0MDc3NDEyRDlCQzRBMDAwNDQyMzQgLyogU1ZHTGF5ZXJUcmFuc2Zvcm1VcGRhdGVy
LmggKi87IH07CiAJCTMzNDQwOEM0MzNGOENBNEMxMDA0NDU1MSAvKiBTVkdMYXllclRyYW5zZm9y
bUNvbXB1dGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzMzQ0MDc3NDEyRDlCQzRBMDAwNDQ1NTEgLyogU1ZHTGF5ZXJUcmFuc2Zvcm1Db21wdXRh
dGlvbi5oICovOyB9OworCQkzMzQ0MDhDNDMzRjhDQTRDMTBBMzI4RjQgLyogU1ZHVmlzaXRlZFJl
bmRlcmVyVHJhY2tpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMzNDQwNzc0MTJEOUJDNEEwMEEzMjhGNCAvKiBTVkdWaXNpdGVkUmVuZGVyZXJUcmFj
a2luZy5oICovOyB9OwogCQkzMzUwM0M5QTEwMTc5QTc0MDAzQjQ3RTEgLyogTm90aWZpY2F0aW9u
Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MzUwM0M5OTEwMTc5QTc0MDAzQjQ3RTEgLyogTm90aWZpY2F0aW9uQ2xpZW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzM1MDNDQTQxMDE3OUFE
NzAwM0I0N0UxIC8qIEpTTm90aWZpY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMzUwM0NBMDEwMTc5QUQ3MDAzQjQ3RTEgLyogSlNOb3RpZmlj
YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkzM0QwMjEyRDEzMURCMzdCMDA0MDkxQTggLyogQ29va2llU3RvcmFnZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEzRjAxRUExMjcwRTEwRDAwREZC
QTcxIC8qIENvb2tpZVN0b3JhZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtNzAxOSw4ICs3MDE5LDggQEAKIAkJMDgxNjY4RDIxMjU2MDNCRjAw
NkYyNURFIC8qIFNWR1RleHRDaHVua0J1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU1ZHVGV4dENodW5rQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwODE2NjhENzEyNTYwM0Q1MDA2RjI1REUgLyogU1ZHVGV4dExheW91dEVuZ2luZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdUZXh0TGF5b3V0RW5naW5l
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDgxNjY4RDgxMjU2MDNENTAwNkYy
NURFIC8qIFNWR1RleHRMYXlvdXRFbmdpbmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU1ZHVGV4dExheW91dEVuZ2luZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkwODFBQThEOTExMTEyMzdFMDAzQkExNUYgLyogU1ZHVmlzaXRlZEVsZW1lbnRUcmFja2luZy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdWaXNpdGVkRWxlbWVudFRyYWNr
aW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4MUFBOEQ5MTExMTIzN0UwMDJB
QjA2RSAvKiBTVkdFbGVtZW50UmFyZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU1ZHRWxlbWVudFJhcmVEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTA4MUFBOEQ5MTExMTIzN0UwMDNCQTE1RiAvKiBTVkdWaXNpdGVkRWxlbWVudFRyYWNraW5nLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1Zpc2l0ZWRFbGVtZW50VHJhY2tp
bmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDgzNEIwMEMxMjQ0RTRFNjAwQjlD
REQwIC8qIFNWR0JvdW5kaW5nQm94Q29tcHV0YXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU1ZHQm91bmRpbmdCb3hDb21wdXRhdGlvbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4MzRCMDBDMTI0NEU1QTYxMEI4QUZEMSAvKiBTVkdDb250
YWluZXJMYXlvdXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZH
Q29udGFpbmVyTGF5b3V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDgzREFF
QTIwRjAxQTdGQjAwMzQyNzU0IC8qIFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclRleHRDb250cm9sTXVsdGlM
aW5lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg5NjIsNiArODk2Miw4IEBA
CiAJCTI5NDg5RkM1MTJDMDBGMDMwMEQ4M0YwRiAvKiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTQ5ODY4MTE5NTM0MTk0MDA3MkQy
QkQgLyogVGV4dFVuZG9JbnNlcnRpb25NYXJrdXBNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBUZXh0VW5kb0luc2VydGlvbk1hcmt1cE1hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk0QkRBRTYyMUZGNTgyQTAwNTEwNzdCIC8qIEFjY2Vz
c2liaWxpdHlPYmplY3RDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IEFjY2Vzc2liaWxpdHlPYmplY3RDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMjk1NUNGMTEyQjIzMEFFNjAwMDFCRjgyIC8qIEFYUmVtb3RlRnJhbWUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQVhSZW1vdGVGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkyOTU1Q0YxMjJCMjMwQUU2MDAwMUJGODIgLyogQVhSZW1vdGVGcmFtZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBBWFJlbW90ZUZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMjk3QkUzRDkxNkMwNDNEODAwMzMxNkJEIC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5ODFBQkM0MTMx
ODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTI5ODFDQTlEMTMxODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5
QVJJQUdyaWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk2MDIsOSArOTYwNCw5IEBACiAJCTMz
MUZGNjdERTE5N0I1NzM5M0M0NkFBNyAvKiBSZW5kZXJNYXRoTUxTcGFjZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJNYXRoTUxTcGFjZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkzMzNGNzA0RTBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9u
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOb3RpZmljYXRpb24uaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkzMzNGNzA0RjBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vdGlmaWNhdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMzQ0MDc3NDEyRDlCQzRBMDBBMzI4RjQgLyog
U1ZHVmlzaXRlZFJlbmRlcmVyVHJhY2tpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU1ZHVmlzaXRlZFJlbmRlcmVyVHJhY2tpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzM0NDA3NzQxMkQ5QkM0QTAwMDQ0MjM0IC8qIFNWR0xheWVyVHJhbnNmb3JtVXBk
YXRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdMYXllclRyYW5zZm9y
bVVwZGF0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzM0NDA3NzQxMkQ5QkM0
QTAwMDQ0NTUxIC8qIFNWR0xheWVyVHJhbnNmb3JtQ29tcHV0YXRpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHTGF5ZXJUcmFuc2Zvcm1Db21wdXRhdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMzQ0MDc3NDEyRDlCQzRBMDBBMzI4RjQgLyogU1ZH
VmlzaXRlZFJlbmRlcmVyVHJhY2tpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU1ZHVmlzaXRlZFJlbmRlcmVyVHJhY2tpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMzM0QTc4OTUyQjVCM0YyQjAwRjdBNzYxIC8qIEV2ZW50TmFtZXMuanNvbiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuanNvbjsgcGF0
aCA9IEV2ZW50TmFtZXMuanNvbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzM1MDND
OTkxMDE3OUE3NDAwM0I0N0UxIC8qIE5vdGlmaWNhdGlvbkNsaWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgZmlsZUVu
Y29kaW5nID0gNDsgcGF0aCA9IE5vdGlmaWNhdGlvbkNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkzMzUwM0M5RjEwMTc5QUQ3MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRpb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOb3RpZmljYXRpb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjM0MjcsNiArMjM0MjksOCBAQAog
CQkJCUMwNDkzRUI3MjQ0Njk5RTQwMDlBQUM4MCAvKiBBWExvZ2dlci5oICovLAogCQkJCTI5ODFD
QUFGMTMxODIyRUMwMEQxMkYyQSAvKiBBWE9iamVjdENhY2hlLmNwcCAqLywKIAkJCQkyOUE4MTIx
QTBGQkI5QzFEMDA1MTAyOTMgLyogQVhPYmplY3RDYWNoZS5oICovLAorCQkJCTI5NTVDRjEyMkIy
MzBBRTYwMDAxQkY4MiAvKiBBWFJlbW90ZUZyYW1lLmNwcCAqLywKKwkJCQkyOTU1Q0YxMTJCMjMw
QUU2MDAwMUJGODIgLyogQVhSZW1vdGVGcmFtZS5oICovLAogCQkJCUMwRTIwOEExMjkzNzlDNkYw
MEMwRDJEMyAvKiBBWFRleHRNYXJrZXIuY3BwICovLAogCQkJCUMwRTIwOEEwMjkzNzlDNkUwMEMw
RDJEMyAvKiBBWFRleHRNYXJrZXIuaCAqLywKIAkJCQk0OEM0RTgzQzJCMzREODM4MDA4MzQ2MEEg
LyogQVhUZXh0UnVuLmNwcCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQVhDb3JlT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYQ29y
ZU9iamVjdC5oCmluZGV4IGNiODkzYTY4ZWVkOS4uOWRhZWE3NDVkN2M3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYQ29yZU9iamVjdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhDb3JlT2JqZWN0LmgKQEAgLTIwNSw2ICsyMDUsNyBAQCBl
bnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlSb2xlIHsKICAgICBQcm9ncmVzc0luZGljYXRvciwKICAg
ICBSYWRpb0J1dHRvbiwKICAgICBSYWRpb0dyb3VwLAorICAgIFJlbW90ZUZyYW1lLAogICAgIFJv
d0hlYWRlciwKICAgICBSb3csCiAgICAgUm93R3JvdXAsCkBAIC00NDIsNiArNDQzLDggQEAgQUxX
QVlTX0lOTElORSBTdHJpbmcgYWNjZXNzaWJpbGl0eVJvbGVUb1N0cmluZyhBY2Nlc3NpYmlsaXR5
Um9sZSByb2xlKQogICAgICAgICByZXR1cm4gIlJhZGlvQnV0dG9uIl9zOwogICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6OlJhZGlvR3JvdXA6CiAgICAgICAgIHJldHVybiAiUmFkaW9Hcm91cCJf
czsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSZW1vdGVGcmFtZToKKyAgICAgICAgcmV0
dXJuICJSZW1vdGVGcmFtZSJfczsKICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSb3dIZWFk
ZXI6CiAgICAgICAgIHJldHVybiAiUm93SGVhZGVyIl9zOwogICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OlJvdzoKQEAgLTgxOSw2ICs4MjIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IGlzQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93SW5zdGFuY2UoKSBjb25zdCA9IDA7CiAgICAgdmly
dHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbEluc3RhbmNlKCkgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCBpc0FYSXNvbGF0ZWRPYmplY3RJbnN0YW5jZSgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBWFJlbW90ZUZyYW1lKCkgY29uc3QgPSAwOwogCiAgICAg
Ym9vbCBpc0hlYWRpbmcoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmls
aXR5Um9sZTo6SGVhZGluZzsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0xpbmsoKSBjb25zdCA9IDA7
CkBAIC05MjMsNiArOTI3LDEyIEBAIHB1YmxpYzoKICAgICBib29sIGlzVHJlZUdyaWQoKSBjb25z
dCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUdyaWQ7IH0K
ICAgICBib29sIGlzVHJlZUl0ZW0oKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6VHJlZUl0ZW07IH0KICAgICBib29sIGlzU2Nyb2xsYmFyKCkgY29uc3Qg
eyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlNjcm9sbEJhcjsgfQor
ICAgIGJvb2wgaXNSZW1vdGVGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFj
Y2Vzc2liaWxpdHlSb2xlOjpSZW1vdGVGcmFtZTsgfQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IHZpcnR1YWwgUmV0YWluUHRyPGlkPiByZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpIGNvbnN0
ID0gMDsKKyNlbmRpZgorICAgIHZpcnR1YWwgYm9vbCBoYXNSZW1vdGVGcmFtZUNoaWxkKCkgY29u
c3QgPSAwOworCiAgICAgYm9vbCBpc0J1dHRvbigpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBp
c01ldGVyKCkgY29uc3QgPSAwOwogCkBAIC0xMTYyLDYgKzExNzIsOCBAQCBwdWJsaWM6CiAgICAg
Ly8gVmlld3BvcnQtcmVsYXRpdmUgbWVhbnMgdGhhdCB3aGVuIHRoZSBwYWdlIHNjcm9sbHMsIHRo
ZSBwb3J0aW9uIG9mIHRoZSBwYWdlIGluIHRoZSB2aWV3cG9ydCBjaGFuZ2VzLCBhbmQgdGh1cwog
ICAgIC8vIGFueSB2aWV3cG9ydC1yZWxhdGl2ZSByZWN0cyBkbyB0b28gKHNpbmNlIHRoZXkgYXJl
IGVpdGhlciBjbG9zZXIgdG8gb3IgZmFydGhlciBmcm9tIHRoZSB2aWV3cG9ydCBvcmlnaW4gYWZ0
ZXIgdGhlIHNjcm9sbCkuCiAgICAgdmlydHVhbCBGbG9hdFBvaW50IHNjcmVlblJlbGF0aXZlUG9z
aXRpb24oKSBjb25zdCA9IDA7CisgICAgLy8gVGhpcyBpcyB0aGUgYW1vdW50IHRoYXQgdGhlIFJl
bW90ZUZyYW1lIGlzIG9mZnNldCBmcm9tIGl0cyBjb250YWluaW5nIHBhcmVudC4KKyAgICB2aXJ0
dWFsIEludFBvaW50IHJlbW90ZUZyYW1lT2Zmc2V0KCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVh
bCBGbG9hdFJlY3QgY29udmVydEZyYW1lVG9TcGFjZShjb25zdCBGbG9hdFJlY3QmLCBBY2Nlc3Np
YmlsaXR5Q29udmVyc2lvblNwYWNlKSBjb25zdCA9IDA7CiAjaWYgUExBVEZPUk0oQ09DT0EpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhMb2dnZXIuY3BwCmluZGV4IGJlNmVkOGVjYzM2
Zi4uMjRjYmEyMDI4NWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYTG9nZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2Vy
LmNwcApAQCAtODg4LDYgKzg4OCw5IEBAIHZvaWQgc3RyZWFtQVhDb3JlT2JqZWN0KFRleHRTdHJl
YW0mIHN0cmVhbSwgY29uc3QgQVhDb3JlT2JqZWN0JiBvYmplY3QsIGNvbnN0IE9wCiAgICAgaWYg
KG9wdGlvbnMgJiBBWFN0cmVhbU9wdGlvbnM6OlJvbGUpCiAgICAgICAgIHN0cmVhbS5kdW1wUHJv
cGVydHkoInJvbGUiLCBvYmplY3Qucm9sZVZhbHVlKCkpOwogCisgICAgaWYgKG9iamVjdC5yZW5k
ZXJlcigpKQorICAgICAgICBzdHJlYW0uZHVtcFByb3BlcnR5KCJyZW5kZXJOYW1lIiwgb2JqZWN0
LnJlbmRlcmVyKCktPnJlbmRlck5hbWUoKSk7CisKICAgICBpZiAob3B0aW9ucyAmIEFYU3RyZWFt
T3B0aW9uczo6UGFyZW50SUQpIHsKICAgICAgICAgYXV0byogcGFyZW50ID0gb2JqZWN0LnBhcmVu
dE9iamVjdFVuaWdub3JlZCgpOwogICAgICAgICBzdHJlYW0uZHVtcFByb3BlcnR5KCJwYXJlbnRJ
RCIsIHBhcmVudCA/IHBhcmVudC0+b2JqZWN0SUQoKSA6IEFYSUQoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCAyODBmYWQ0ZjI3MDEu
LjFhYzk1ZjJlYTZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiQVhJc29sYXRlZE9iamVj
dC5oIgogI2luY2x1ZGUgIkFYSXNvbGF0ZWRUcmVlLmgiCiAjaW5jbHVkZSAiQVhMb2dnZXIuaCIK
KyNpbmNsdWRlICJBWFJlbW90ZUZyYW1lLmgiCiAjaW5jbHVkZSAiQVhUZXh0TWFya2VyLmgiCiAj
aW5jbHVkZSAiQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0
eUFSSUFHcmlkQ2VsbC5oIgpAQCAtMTA1NCw3ICsxMDU1LDEwIEBAIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIEFYT2JqZWN0Q2FjaGU6OmNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZSByb2xlKQogICAgICAg
ICBicmVhazsgICAgICAgICAgICAKICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJsZUhl
YWRlckNvbnRhaW5lcjoKICAgICAgICAgb2JqID0gQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29u
dGFpbmVyOjpjcmVhdGUoKTsKLSAgICAgICAgYnJlYWs7ICAgCisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJlbW90ZUZyYW1lOgorICAgICAgICBvYmogPSBBWFJl
bW90ZUZyYW1lOjpjcmVhdGUoKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6U2xpZGVyVGh1bWI6CiAgICAgICAgIG9iaiA9IEFjY2Vzc2liaWxpdHlTbGlkZXJU
aHVtYjo6Y3JlYXRlKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTM1MCw2ICsxMzU0LDE1IEBAIHZv
aWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlUmVjb21wdXRlQ2VsbFNsb3RzKEFjY2Vzc2liaWxpdHlU
YWJsZSYgYXhUYWJsZSkKICNlbmRpZgogfQogCit2b2lkIEFYT2JqZWN0Q2FjaGU6Om9uUmVtb3Rl
RnJhbWVJbml0aWFsaXplZChBWFJlbW90ZUZyYW1lJiByZW1vdGVGcmFtZSkKK3sKKyNpZiBFTkFC
TEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQorICAgIHVwZGF0ZUlzb2xhdGVkVHJlZShy
ZW1vdGVGcmFtZSwgQVhQcm9wZXJ0eU5hbWU6OlJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KTsK
KyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHJlbW90ZUZyYW1lKTsKKyNlbmRpZgorfQorCiAjaWYg
RU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKIHZvaWQgQVhPYmplY3RDYWNoZTo6
aGFuZGxlUm93c3BhbkNoYW5nZWQoQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCYgYXhDZWxsKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCBkMTA0
OWNjOWJjMjEuLjM4Yzk4YTQ2ZWE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgY2xhc3MgVGV4dFN0cmVhbTsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBBWFJlbW90ZUZyYW1lOwogY2xhc3MgQWNjZXNz
aWJpbGl0eVRhYmxlOwogY2xhc3MgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDsKIGNsYXNzIERvY3Vt
ZW50OwpAQCAtMjQ2LDYgKzI0Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlZmVyTm9kZUFkZGVk
T3JSZW1vdmVkKE5vZGUqKTsKICAgICB2b2lkIGhhbmRsZVNjcm9sbGVkVG9BbmNob3IoY29uc3Qg
Tm9kZSogYW5jaG9yTm9kZSk7CiAgICAgdm9pZCBvblNjcm9sbGJhclVwZGF0ZShTY3JvbGxWaWV3
Kik7CisgICAgdm9pZCBvblJlbW90ZUZyYW1lSW5pdGlhbGl6ZWQoQVhSZW1vdGVGcmFtZSYpOwog
CiAgICAgYm9vbCBpc1JldHJpZXZpbmdDdXJyZW50TW9kYWxOb2RlKCkgeyByZXR1cm4gbV9pc1Jl
dHJpZXZpbmdDdXJyZW50TW9kYWxOb2RlOyB9CiAgICAgTm9kZSogbW9kYWxOb2RlKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYUmVtb3RlRnJhbWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFJlbW90ZUZyYW1lLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjFiYTZmNjhjNzc5MAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhSZW1vdGVGcmFtZS5jcHAKQEAg
LTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJBWFJlbW90ZUZyYW1lLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPEFYUmVtb3Rl
RnJhbWU+IEFYUmVtb3RlRnJhbWU6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQVhSZW1vdGVGcmFtZSk7Cit9CisKK0FYUmVtb3RlRnJhbWU6OkFYUmVtb3RlRnJhbWUoKQor
OgorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIG1fcmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQo
bnVsbHB0cikKKyAgICAsCisjZW5kaWYKKyAgICBtX3Byb2Nlc3NJZGVudGlmaWVyKDApCit7Cit9
CisKK0xheW91dFJlY3QgQVhSZW1vdGVGcmFtZTo6ZWxlbWVudFJlY3QoKSBjb25zdAoreworICAg
IGF1dG8qIHBhcmVudCA9IHBhcmVudE9iamVjdCgpOworICAgIHJldHVybiBwYXJlbnQgPyBwYXJl
bnQtPmVsZW1lbnRSZWN0KCkgOiBMYXlvdXRSZWN0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhSZW1vdGVG
cmFtZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFJlbW90ZUZyYW1lLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42MzkwMThmYjE3YWYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYUmVtb3RlRnJhbWUu
aApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDI0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJBY2Nlc3NpYmlsaXR5TW9ja09iamVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIFJlbW90ZUZyYW1lOworCitjbGFzcyBBWFJlbW90ZUZyYW1lIGZpbmFsIDogcHVibGljIEFj
Y2Vzc2liaWxpdHlNb2NrT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEFYUmVtb3Rl
RnJhbWU+IGNyZWF0ZSgpOworCisgICAgdm9pZCBpbml0aWFsaXplUGxhdGZvcm1FbGVtZW50V2l0
aFJlbW90ZVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgaW50KTsKKworICAgIHN0ZDo6
c3Bhbjxjb25zdCB1aW50OF90PiBnZW5lcmF0ZVJlbW90ZVRva2VuKCkgY29uc3Q7CisjaWYgUExB
VEZPUk0oQ09DT0EpCisgICAgUmV0YWluUHRyPGlkPiByZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVu
dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQ7IH0K
KyAgICBwaWRfdCBwcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2Vzc0lk
ZW50aWZpZXI7IH0KKyNlbmRpZgorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IEFYUmVtb3RlRnJh
bWUoKTsKKyAgICB2aXJ0dWFsIH5BWFJlbW90ZUZyYW1lKCkgPSBkZWZhdWx0OworCisgICAgQWNj
ZXNzaWJpbGl0eVJvbGUgZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUoKSBmaW5hbCB7IHJldHVy
biBBY2Nlc3NpYmlsaXR5Um9sZTo6UmVtb3RlRnJhbWU7IH0KKyAgICBib29sIGNvbXB1dGVBY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBi
b29sIGlzQVhSZW1vdGVGcmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBM
YXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3QgZmluYWw7CisKKyNpZiBQTEFURk9STShDT0NP
QSkKKyAgICBSZXRhaW5QdHI8aWQ+IG1fcmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQ7CisgICAg
cGlkX3QgbV9wcm9jZXNzSWRlbnRpZmllcjsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0FDQ0VTU0lCSUxJVFkoQVhSZW1vdGVG
cmFtZSwgaXNBWFJlbW90ZUZyYW1lKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCA4MWE0MDBlNTkyZjYuLjNkYTA0
NzdiNzg2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuY3BwCkBAIC01NDQsNyArNTQ0LDEwIEBAIEZsb2F0UmVjdCBBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojpjb252ZXJ0RnJhbWVUb1NwYWNlKGNvbnN0IEZsb2F0UmVjdCYgZnJhbWVS
ZWN0LCBBCiAgICAgCiBGbG9hdFJlY3QgQWNjZXNzaWJpbGl0eU9iamVjdDo6cmVsYXRpdmVGcmFt
ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvbnZlcnRGcmFtZVRvU3BhY2UoZWxlbWVudFJlY3Qo
KSwgQWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZTo6UGFnZSk7CisgICAgYXV0byByZWN0ID0g
ZWxlbWVudFJlY3QoKTsKKyAgICBhdXRvIHJlbW90ZU9mZnNldCA9IHJlbW90ZUZyYW1lT2Zmc2V0
KCk7CisgICAgcmVjdC5tb3ZlKHJlbW90ZU9mZnNldC54KCksIHJlbW90ZU9mZnNldC55KCkpOwor
ICAgIHJldHVybiBjb252ZXJ0RnJhbWVUb1NwYWNlKHJlY3QsIEFjY2Vzc2liaWxpdHlDb252ZXJz
aW9uU3BhY2U6OlBhZ2UpOwogfQogCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpuZXh0U2libGluZ1VuaWdub3JlZChpbnQgbGltaXQpIGNvbnN0CkBAIC0yMDg1LDEz
ICsyMDg4LDIyIEBAIGNvbnN0IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KiBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjphbmNlc3RvckFjY2Vzc2liaWxpdHlTY3JvbGxWCiAKICNpZiBQTEFURk9STShDT0NP
QSkKIFJlbW90ZUFYT2JqZWN0UmVmIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnJlbW90ZVBhcmVudE9i
amVjdCgpIGNvbnN0Cit7CisgICAgYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOwor
ICAgIGF1dG8qIGZyYW1lID0gZG9jdW1lbnQgPyBkb2N1bWVudC0+ZnJhbWUoKSA6IG51bGxwdHI7
CisgICAgcmV0dXJuIGZyYW1lID8gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmFjY2Vzc2liaWxp
dHlSZW1vdGVPYmplY3QoKSA6IG51bGxwdHI7Cit9CisKK0ludFBvaW50IEFjY2Vzc2liaWxpdHlP
YmplY3Q6OnJlbW90ZUZyYW1lT2Zmc2V0KCkgY29uc3QKIHsKICAgICBpZiAoYXV0byogZG9jdW1l
bnQgPSB0aGlzLT5kb2N1bWVudCgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3Vt
ZW50LT5mcmFtZSgpKQotICAgICAgICAgICAgcmV0dXJuIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQo
KS5hY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCk7CisgICAgICAgICAgICByZXR1cm4gZnJhbWUt
PmxvYWRlcigpLmNsaWVudCgpLmFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCgpOwogICAg
IH0KLSAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiB7IH07CiB9CisKICNlbmRpZgog
CiBEb2N1bWVudCogQWNjZXNzaWJpbGl0eU9iamVjdDo6ZG9jdW1lbnQoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAppbmRl
eCA4MzA1MDY1OTNlZTQuLjgyMzE4NGExMWRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTEwMiw2ICsxMDIsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNB
Y2Nlc3NpYmlsaXR5U2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29s
IGlzQVhSZW1vdGVGcmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXdJbnN0YW5jZSgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNWR1Jvb3Qo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5VGFibGVJ
bnN0YW5jZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC00NjMsOCArNDY0
LDEyIEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJlbW90ZUFYT2JqZWN0
UmVmIHJlbW90ZVBhcmVudE9iamVjdCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEludFBvaW50IHJl
bW90ZUZyYW1lT2Zmc2V0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgRmxvYXRSZWN0IGNvbnZlcnRS
ZWN0VG9QbGF0Zm9ybVNwYWNlKGNvbnN0IEZsb2F0UmVjdCYsIEFjY2Vzc2liaWxpdHlDb252ZXJz
aW9uU3BhY2UpIGNvbnN0IG92ZXJyaWRlOworICAgIFJldGFpblB0cjxpZD4gcmVtb3RlRnJhbWVQ
bGF0Zm9ybUVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBuaWw7IH0KICNlbmRpZgor
ICAgIGJvb2wgaGFzUmVtb3RlRnJhbWVDaGlsZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CisKICAgICBQYWdlKiBwYWdlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgRG9jdW1lbnQq
IGRvY3VtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgTG9jYWxGcmFtZVZpZXcqIGRvY3VtZW50
RnJhbWVWaWV3KCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCA0OGQz
ZGFkYWUzYzEuLjYyM2ZiYTdlOTA4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0yNDAyLDcg
KzI0MDIsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZEF0dGFjaG1lbnRD
aGlsZHJlbigpCiAKICAgICAvLyBMb2NhbEZyYW1lVmlldydzIG5lZWQgdG8gYmUgaW5zZXJ0ZWQg
aW50byB0aGUgQVggaGllcmFyY2h5IHdoZW4gZW5jb3VudGVyZWQuCiAgICAgV2lkZ2V0KiB3aWRn
ZXQgPSB3aWRnZXRGb3JBdHRhY2htZW50VmlldygpOwotICAgIGlmICghd2lkZ2V0IHx8ICF3aWRn
ZXQtPmlzTG9jYWxGcmFtZVZpZXcoKSkKKyAgICBpZiAoIXdpZGdldCB8fCAhKHdpZGdldC0+aXNM
b2NhbEZyYW1lVmlldygpIHx8IHdpZGdldC0+aXNSZW1vdGVGcmFtZVZpZXcoKSkpCiAgICAgICAg
IHJldHVybjsKICAgICAKICAgICBhZGRDaGlsZChheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRl
KHdpZGdldCkpOwpAQCAtMjU1Nyw3ICsyNTU3LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjphZGRDaGlsZHJlbigpCiAgICAgICAgIGF1dG8gb3duZXJzID0gb2JqZWN0Lm93bmVy
cygpOwogICAgICAgICBpZiAob3duZXJzLnNpemUoKSAmJiAhb3duZXJzLmNvbnRhaW5zKHRoaXMp
KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKwogICAgICAgICBhZGRDaGlsZCgmb2Jq
ZWN0KTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwCmluZGV4IDZiYzg0MWViYjA2Ny4uYjdiZDgz
YmU4N2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlTY3JvbGxWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcApAQCAtMjcsMTAgKzI3LDEyIEBACiAjaW5jbHVkZSAi
QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaCIKIAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIK
KyNpbmNsdWRlICJBWFJlbW90ZUZyYW1lLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVNjcm9s
bGJhci5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkxv
Y2FsRnJhbWUuaCIKICNpbmNsdWRlICJMb2NhbEZyYW1lVmlldy5oIgorI2luY2x1ZGUgIlJlbW90
ZUZyYW1lVmlldy5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJXaWRn
ZXQuaCIKIApAQCAtNTIsNiArNTQsMTQgQEAgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6On5BY2Nl
c3NpYmlsaXR5U2Nyb2xsVmlldygpCiB2b2lkIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpkZXRh
Y2hSZW1vdGVQYXJ0cyhBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGUgZGV0YWNobWVudFR5cGUp
CiB7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZGV0YWNoUmVtb3RlUGFydHMoZGV0YWNobWVu
dFR5cGUpOworCisgICAgYXV0byogcmVtb3RlRnJhbWVWaWV3ID0gZHluYW1pY0Rvd25jYXN0PFJl
bW90ZUZyYW1lVmlldz4obV9zY3JvbGxWaWV3LmdldCgpKTsKKyAgICBpZiAocmVtb3RlRnJhbWVW
aWV3ICYmIG1fcmVtb3RlRnJhbWUgJiYgKGRldGFjaG1lbnRUeXBlID09IEFjY2Vzc2liaWxpdHlE
ZXRhY2htZW50VHlwZTo6RWxlbWVudERlc3Ryb3llZCB8fCBkZXRhY2htZW50VHlwZSA9PSBBY2Nl
c3NpYmlsaXR5RGV0YWNobWVudFR5cGU6OkNhY2hlRGVzdHJveWVkKSkgeworICAgICAgICBhdXRv
JiByZW1vdGVGcmFtZSA9IHJlbW90ZUZyYW1lVmlldy0+ZnJhbWUoKTsKKyAgICAgICAgcmVtb3Rl
RnJhbWUudW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhtX3JlbW90ZUZyYW1lLT5wcm9j
ZXNzSWRlbnRpZmllcigpKTsKKyAgICAgICAgbV9yZW1vdGVGcmFtZSA9IG51bGxwdHI7CisgICAg
fQorCiAgICAgbV9zY3JvbGxWaWV3ID0gbnVsbHB0cjsKICAgICBtX2ZyYW1lT3duZXJFbGVtZW50
ID0gbnVsbHB0cjsKIH0KQEAgLTE3Nyw4ICsxODcsMTAgQEAgQWNjZXNzaWJpbGl0eVNjcm9sbGJh
ciogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmFkZENoaWxkU2Nyb2xsYmFyKFNjcm9sbGJhciog
c2MKIHZvaWQgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmNsZWFyQ2hpbGRyZW4oKQogewogICAg
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmNsZWFyQ2hpbGRyZW4oKTsKKwogICAgIG1fdmVydGljYWxT
Y3JvbGxiYXIgPSBudWxscHRyOwogICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhciA9IG51bGxwdHI7
CisKICAgICBtX2NoaWxkcmVuRGlydHkgPSBmYWxzZTsKIH0KIApAQCAtMTkxLDExICsyMDMsNDIg
QEAgYm9vbCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0ln
bm9yZWQoKSBjb25zdAogICAgIHJldHVybiB3ZWJBcmVhLT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVk
KCk7CiB9CiAKK3ZvaWQgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmFkZFJlbW90ZUZyYW1lQ2hp
bGQoKQoreworICAgIGlmICghaXM8UmVtb3RlRnJhbWVWaWV3PihtX3Njcm9sbFZpZXcpKQorICAg
ICAgICByZXR1cm47CisgICAgV2Vha1B0ciBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsKKyAgICBp
ZiAoIWNhY2hlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1fcmVtb3RlRnJhbWUpIHsK
KyAgICAgICAgLy8gTWFrZSB0aGUgZmF1eCBlbGVtZW50IHRoYXQgcmVwcmVzZW50cyB0aGUgcmVt
b3RlIHRyYW5zZmVyIGVsZW1lbnQgZm9yIEFYLgorICAgICAgICBhdXRvJiByZW1vdGVGcmFtZSA9
IGRvd25jYXN0PFJlbW90ZUZyYW1lVmlldz4oKm1fc2Nyb2xsVmlldykuZnJhbWUoKTsKKyAgICAg
ICAgbV9yZW1vdGVGcmFtZSA9IGRvd25jYXN0PEFYUmVtb3RlRnJhbWU+KGNhY2hlLT5jcmVhdGUo
QWNjZXNzaWJpbGl0eVJvbGU6OlJlbW90ZUZyYW1lKSk7CisgICAgICAgIG1fcmVtb3RlRnJhbWUt
PnNldFBhcmVudCh0aGlzKTsKKworICAgICAgICAvLyBHZW5lcmF0ZSBhIG5ldyB0b2tlbiBhbmQg
cGFzcyBpdCBiYWNrIHRvIHRoZSBvdGhlciByZW1vdGUgZnJhbWUgc28gaXQgY2FuIGJpbmQgdGhl
c2Ugb2JqZWN0cyB0b2dldGhlci4KKyAgICAgICAgYXV0byBnZW5lcmF0ZWRUb2tlbiA9IG1fcmVt
b3RlRnJhbWUtPmdlbmVyYXRlUmVtb3RlVG9rZW4oKTsKKyAgICAgICAgcmVtb3RlRnJhbWUuYmlu
ZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoZ2V0cGlkKCksIGdlbmVyYXRlZFRva2VuLCBbdGhp
cywgJnJlbW90ZUZyYW1lLCBwcm90ZWN0ZWRBY2Nlc3NiaWxpdHlSZW1vdGVGcmFtZSA9IFJlZlB0
ciB7IG1fcmVtb3RlRnJhbWUgfV0gKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiB0b2tlbiwgaW50
IHByb2Nlc3NJZGVudGlmaWVyKSBtdXRhYmxlIHsKKyNpZiBPUyhEQVJXSU4pCisgICAgICAgICAg
ICBwcm90ZWN0ZWRBY2Nlc3NiaWxpdHlSZW1vdGVGcmFtZS0+aW5pdGlhbGl6ZVBsYXRmb3JtRWxl
bWVudFdpdGhSZW1vdGVUb2tlbih0b2tlbiwgcHJvY2Vzc0lkZW50aWZpZXIpOworI2VuZGlmCisg
ICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHJlbW90ZSBzaWRlIHdpdGggdGhlIG9mZnNldCBvZiB0
aGlzIG9iamVjdCBzbyBpdCBjYW4gY2FsY3VsYXRlIGZyYW1lcyBjb3JyZWN0bHkuCisgICAgICAg
ICAgICBhdXRvIGxvY2F0aW9uID0gZWxlbWVudFJlY3QoKS5sb2NhdGlvbigpOworICAgICAgICAg
ICAgcmVtb3RlRnJhbWUudXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KGZsb29y
ZWRJbnRQb2ludChsb2NhdGlvbikpOworICAgICAgICB9KTsKKyAgICB9IGVsc2UKKyAgICAgICAg
bV9yZW1vdGVGcmFtZS0+c2V0UGFyZW50KHRoaXMpOworCisgICAgYWRkQ2hpbGQobV9yZW1vdGVG
cmFtZS5nZXQoKSk7Cit9CisKIHZvaWQgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmFkZENoaWxk
cmVuKCkKIHsKICAgICBBU1NFUlQoIW1fY2hpbGRyZW5Jbml0aWFsaXplZCk7CiAgICAgbV9jaGls
ZHJlbkluaXRpYWxpemVkID0gdHJ1ZTsKIAorICAgIGFkZFJlbW90ZUZyYW1lQ2hpbGQoKTsKICAg
ICBhZGRDaGlsZCh3ZWJBcmVhT2JqZWN0KCkpOwogICAgIHVwZGF0ZVNjcm9sbGJhcnMoKTsKIH0K
QEAgLTIwMyw3ICsyNDYsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjphZGRDaGls
ZHJlbigpCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6d2Vi
QXJlYU9iamVjdCgpIGNvbnN0CiB7CiAgICAgYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVu
dCgpOwotICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5oYXNMaXZpbmdSZW5kZXJUcmVl
KCkpCisgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPmhhc0xpdmluZ1JlbmRlclRyZWUo
KSB8fCBtX3JlbW90ZUZyYW1lKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmIChh
dXRvKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKSkKQEAgLTIzNCw5ICsyNzcsMTUgQEAgTGF5b3V0
UmVjdCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6ZWxlbWVudFJlY3QoKSBjb25zdAogCiBEb2N1
bWVudCogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmRvY3VtZW50KCkgY29uc3QKIHsKLSAgICBp
ZiAoYXV0byogZnJhbWVWaWV3ID0gZHluYW1pY0Rvd25jYXN0PExvY2FsRnJhbWVWaWV3PihtX3Nj
cm9sbFZpZXcuZ2V0KCkpKSB7CisgICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGR5bmFtaWNEb3du
Y2FzdDxMb2NhbEZyYW1lVmlldz4obV9zY3JvbGxWaWV3LmdldCgpKSkKICAgICAgICAgcmV0dXJu
IGZyYW1lVmlldy0+ZnJhbWUoKS5kb2N1bWVudCgpOworCisgICAgLy8gRm9yIHRoZSBSZW1vdGVG
cmFtZVZpZXcgY2FzZSwgd2UgbmVlZCB0byByZXR1cm4gdGhlIGRvY3VtZW50IG9mIG91ciBob3N0
aW5nIHBhcmVudCBzbyBheE9iamVjdENhY2hlKCkgcmVzb2x2ZXMgY29ycmVjdGx5LgorICAgIGlm
IChhdXRvKiByZW1vdGVGcmFtZVZpZXcgPSBkeW5hbWljRG93bmNhc3Q8UmVtb3RlRnJhbWVWaWV3
PihtX3Njcm9sbFZpZXcuZ2V0KCkpKSB7CisgICAgICAgIGlmIChhdXRvKiBvd25lciA9IHJlbW90
ZUZyYW1lVmlldy0+ZnJhbWUoKS5vd25lckVsZW1lbnQoKSkKKyAgICAgICAgICAgIHJldHVybiAm
KG93bmVyLT5kb2N1bWVudCgpKTsKICAgICB9CisKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9i
amVjdDo6ZG9jdW1lbnQoKTsKIH0KIApAQCAtMjUzLDE4ICszMDIsMTQgQEAgTG9jYWxGcmFtZVZp
ZXcqIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojpkb2N1bWVudEZyYW1lVmlldygpIGNvbnN0CiAK
IEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpwYXJlbnRPYmpl
Y3QoKSBjb25zdAogewotICAgIEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gYXhPYmplY3RDYWNoZSgp
OwotICAgIGlmICghY2FjaGUpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCiAgICAgSFRNTEZy
YW1lT3duZXJFbGVtZW50KiBvd25lciA9IG1fZnJhbWVPd25lckVsZW1lbnQuZ2V0KCk7Ci0gICAg
aWYgKGlzPExvY2FsRnJhbWVWaWV3PihtX3Njcm9sbFZpZXcpKQotICAgICAgICBvd25lciA9IGRv
d25jYXN0PExvY2FsRnJhbWVWaWV3PigqbV9zY3JvbGxWaWV3KS5mcmFtZSgpLm93bmVyRWxlbWVu
dCgpOworICAgIGlmIChhdXRvKiBsb2NhbEZyYW1lVmlldyA9IGR5bmFtaWNEb3duY2FzdDxMb2Nh
bEZyYW1lVmlldz4obV9zY3JvbGxWaWV3LmdldCgpKSkKKyAgICAgICAgb3duZXIgPSBsb2NhbEZy
YW1lVmlldy0+ZnJhbWUoKS5vd25lckVsZW1lbnQoKTsKKyAgICBlbHNlIGlmIChhdXRvKiByZW1v
dGVGcmFtZVZpZXcgPSBkeW5hbWljRG93bmNhc3Q8UmVtb3RlRnJhbWVWaWV3PihtX3Njcm9sbFZp
ZXcuZ2V0KCkpKQorICAgICAgICBvd25lciA9IHJlbW90ZUZyYW1lVmlldy0+ZnJhbWUoKS5vd25l
ckVsZW1lbnQoKTsKIAotICAgIGlmIChvd25lciAmJiBvd25lci0+cmVuZGVyZXIoKSkKLSAgICAg
ICAgcmV0dXJuIGNhY2hlLT5nZXRPckNyZWF0ZShvd25lcik7Ci0KLSAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICBhdXRvKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsKKyAgICByZXR1cm4gY2FjaGUg
PyBjYWNoZS0+Z2V0T3JDcmVhdGUob3duZXItPnJlbmRlcmVyKCkpIDogbnVsbHB0cjsKIH0KIAog
dm9pZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6c2Nyb2xsVG8oY29uc3QgSW50UG9pbnQmIHBv
aW50KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5U2Nyb2xsVmlldy5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5U2Nyb2xsVmlldy5oCmluZGV4IDU1NzA0NDY3MWM3ZC4uNTI1YWM3ODNmYmI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3Jv
bGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldy5oCkBAIC0zMCw2ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAKK2NsYXNzIEFYUmVtb3RlRnJhbWU7CiBjbGFzcyBBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyOwog
Y2xhc3MgU2Nyb2xsYmFyOwogY2xhc3MgU2Nyb2xsVmlldzsKQEAgLTU0LDcgKzU1LDggQEAgcHJp
dmF0ZToKICAgICBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3SW5zdGFuY2UoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBpc0VuYWJsZWQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgCisgICAgYm9vbCBoYXNSZW1vdGVGcmFtZUNo
aWxkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9yZW1vdGVGcmFtZTsgfQorCiAgICAgYm9vbCBp
c0F0dGFjaG1lbnQoKSBjb25zdCBvdmVycmlkZTsKICAgICBQbGF0Zm9ybVdpZGdldCBwbGF0Zm9y
bVdpZGdldCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFdpZGdldCogd2lkZ2V0Rm9yQXR0YWNobWVu
dFZpZXcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBjdXJyZW50U2Nyb2xsVmlldygpOyB9CkBA
IC02OSw2ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRGb2N1c2VkKGJvb2wpIG92ZXJy
aWRlOwogICAgIGJvb2wgY2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZTsKICAg
ICBib29sIGlzRm9jdXNlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgYWRkUmVtb3RlRnJh
bWVDaGlsZCgpOwogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgTG9jYWxGcmFtZVZpZXcqIGRvY3VtZW50RnJhbWVWaWV3KCkgY29uc3Qgb3ZlcnJpZGU7CkBA
IC04NSw2ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+
IG1faG9yaXpvbnRhbFNjcm9sbGJhcjsKICAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4g
bV92ZXJ0aWNhbFNjcm9sbGJhcjsKICAgICBib29sIG1fY2hpbGRyZW5EaXJ0eTsKKyAgICBSZWZQ
dHI8QVhSZW1vdGVGcmFtZT4gbV9yZW1vdGVGcmFtZTsKIH07CiAgICAgCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IDJh
OGY0MmMyNmM1ZS4uZGQ1ZWNjYjFjYjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlcklPUy5tbQpAQCAtMTcwMSw3ICsxNzAxLDggQEAgc3RhdGljIHZvaWQgYXBwZW5kU3RyaW5n
VG9SZXN1bHQoTlNNdXRhYmxlU3RyaW5nICpyZXN1bHQsIE5TU3RyaW5nICpzdHJpbmcpCiAgICAg
aWYgKCFbc2VsZiBfcHJlcGFyZUFjY2Vzc2liaWxpdHlDYWxsXSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgc2VsZi5heEJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKS0+cmVsYXlOb3RpZmlj
YXRpb24oeyBub3RpZmljYXRpb25OYW1lIH0sIG5vdGlmaWNhdGlvbkRhdGEpOworICAgIGlmIChB
WE9iamVjdENhY2hlKiBjYWNoZSA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hl
KCkpCisgICAgICAgIGNhY2hlLT5yZWxheU5vdGlmaWNhdGlvbih7IG5vdGlmaWNhdGlvbk5hbWUg
fSwgbm90aWZpY2F0aW9uRGF0YSk7CiB9CiAKIC0gKENHUmVjdClfYWNjZXNzaWJpbGl0eVJlbGF0
aXZlRnJhbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0
ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKaW5kZXggOWE2NjVmYjYzYzIzLi43
MjFhMGM2YTNlM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCkBAIC0zNzcsNiArMzc3
LDEwIEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoY29uc3Qg
UmVmPEFjY2Vzc2liaWxpdHlPYmplY3Q+JiBheE9iCiAjZW5kaWYKIAogICAgIHNldE9iamVjdFBy
b3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJbnRlcm5hbExpbmtFbGVtZW50LCBvYmplY3QuaW50ZXJu
YWxMaW5rRWxlbWVudCgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SGFzUmVt
b3RlRnJhbWVDaGlsZCwgb2JqZWN0Lmhhc1JlbW90ZUZyYW1lQ2hpbGQoKSk7CisgICAgLy8gRG9u
J3QgZHVwbGljYXRlIHRoZSByZW1vdGVGcmFtZU9mZnNldCBmb3IgZXZlcnkgb2JqZWN0LiBKdXN0
IHN0b3JlIGluIHRoZSBXZWJBcmVhLgorICAgIGlmIChvYmplY3QuaXNXZWJBcmVhKCkpCisgICAg
ICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpSZW1vdGVGcmFtZU9mZnNldCwgb2JqZWN0
LnJlbW90ZUZyYW1lT2Zmc2V0KCkpOwogCiAgICAgaW5pdGlhbGl6ZVBsYXRmb3JtUHJvcGVydGll
cyhheE9iamVjdCk7CiB9CkBAIC00NjMsNiArNDY3LDcgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0
OjpzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEFYUHJvcGVydHlWYWx1
ZVYKICAgICAgICAgW10oT3B0aW9uU2V0PEFYQW5jZXN0b3JGbGFnPiYgdHlwZWRWYWx1ZSkgeyBy
ZXR1cm4gdHlwZWRWYWx1ZS5pc0VtcHR5KCk7IH0sCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
ICAgIFtdKFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+JiB0eXBlZFZhbHVlKSB7IHJldHVy
biAhdHlwZWRWYWx1ZTsgfSwKKyAgICAgICAgW10oUmV0YWluUHRyPGlkPiYgdHlwZWRWYWx1ZSkg
eyByZXR1cm4gIXR5cGVkVmFsdWU7IH0sCiAjZW5kaWYKICAgICAgICAgW10oSW5zaWRlTGluayYg
dHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZSA9PSBJbnNpZGVMaW5rKCk7IH0sCiAgICAg
ICAgIFtdKFZlY3RvcjxWZWN0b3I8QVhJRD4+JiB0eXBlZFZhbHVlKSB7IHJldHVybiB0eXBlZFZh
bHVlLmlzRW1wdHkoKTsgfSwKQEAgLTEyMDUsNiArMTIxMCwyMSBAQCBMYXlvdXRSZWN0IEFYSXNv
bGF0ZWRPYmplY3Q6OmVsZW1lbnRSZWN0KCkgY29uc3QKICAgICB9KTsKIH0KIAorSW50UG9pbnQg
QVhJc29sYXRlZE9iamVjdDo6cmVtb3RlRnJhbWVPZmZzZXQoKSBjb25zdAoreworICAgIGF1dG8q
IHdlYkFyZWEgPSBBY2Nlc3NpYmlsaXR5OjpmaW5kQW5jZXN0b3I8QVhJc29sYXRlZE9iamVjdD4o
KnRoaXMsIGZhbHNlLCBbXSAoY29uc3QgYXV0byYgb2JqZWN0KSB7CisgICAgICAgIHJldHVybiBv
YmplY3QuaXNXZWJBcmVhKCk7CisgICAgfSk7CisKKyAgICBpZiAoIXdlYkFyZWEpCisgICAgICAg
IHJldHVybiB7IH07CisKKyAgICBpZiAoYXV0byBwb2ludCA9IHdlYkFyZWEtPm9wdGlvbmFsQXR0
cmlidXRlVmFsdWU8SW50UG9pbnQ+KEFYUHJvcGVydHlOYW1lOjpSZW1vdGVGcmFtZU9mZnNldCkp
CisgICAgICAgIHJldHVybiAqcG9pbnQ7CisKKyAgICByZXR1cm4geyB9OworfQorCiBGbG9hdFBv
aW50IEFYSXNvbGF0ZWRPYmplY3Q6OnNjcmVlblJlbGF0aXZlUG9zaXRpb24oKSBjb25zdAogewog
ICAgIGlmIChhdXRvIHBvaW50ID0gb3B0aW9uYWxBdHRyaWJ1dGVWYWx1ZTxGbG9hdFBvaW50PihB
WFByb3BlcnR5TmFtZTo6U2NyZWVuUmVsYXRpdmVQb3NpdGlvbikpCkBAIC0xMjI4LDIyICsxMjQ4
LDIzIEBAIEZsb2F0UG9pbnQgQVhJc29sYXRlZE9iamVjdDo6c2NyZWVuUmVsYXRpdmVQb3NpdGlv
bigpIGNvbnN0CiAKIEZsb2F0UmVjdCBBWElzb2xhdGVkT2JqZWN0OjpyZWxhdGl2ZUZyYW1lKCkg
Y29uc3QKIHsKKyAgICBGbG9hdFJlY3QgcmVsYXRpdmVGcmFtZTsKKwogICAgIGlmIChhdXRvIGNh
Y2hlZFJlbGF0aXZlRnJhbWUgPSBvcHRpb25hbEF0dHJpYnV0ZVZhbHVlPEludFJlY3Q+KEFYUHJv
cGVydHlOYW1lOjpSZWxhdGl2ZUZyYW1lKSkgewogICAgICAgICAvLyBXZSBzaG91bGQgbm90IGhh
dmUgY2FjaGVkIGEgcmVsYXRpdmUgZnJhbWUgZm9yIGVsZW1lbnRzIHRoYXQgZ2V0IHRoZWlyIGdl
b21ldHJ5IGZyb20gdGhlaXIgY2hpbGRyZW4uCiAgICAgICAgIEFTU0VSVCghbV9nZXRzR2VvbWV0
cnlGcm9tQ2hpbGRyZW4pOwotICAgICAgICByZXR1cm4gKmNhY2hlZFJlbGF0aXZlRnJhbWU7Ci0g
ICAgfQotCi0gICAgaWYgKG1fZ2V0c0dlb21ldHJ5RnJvbUNoaWxkcmVuKSB7CisgICAgICAgIHJl
bGF0aXZlRnJhbWUgPSAqY2FjaGVkUmVsYXRpdmVGcmFtZTsKKyAgICB9IGVsc2UgaWYgKG1fZ2V0
c0dlb21ldHJ5RnJvbUNoaWxkcmVuKSB7CiAgICAgICAgIGF1dG8gZnJhbWUgPSBlbmNsb3NpbmdJ
bnRSZWN0KHJlbGF0aXZlRnJhbWVGcm9tQ2hpbGRyZW4oKSk7CiAgICAgICAgIGlmICghZnJhbWUu
aXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIGZyYW1lOworICAgICAgICAgICAgcmVsYXRp
dmVGcmFtZSA9IGZyYW1lOwogICAgICAgICAvLyBFaXRoZXIgd2UgaGFkIG5vIGNoaWxkcmVuLCBv
ciBvdXIgY2hpbGRyZW4gaGFkIGVtcHR5IGZyYW1lcy4gVGhlIHJpZ2h0IHRoaW5nIHRvIGRvIHdv
dWxkIGJlIHRvIHJldHVybgogICAgICAgICAvLyBhIHJlY3QgYXQgdGhlIHBvc2l0aW9uIG9mIHRo
ZSBuZWFyZXN0IHJlbmRlciB0cmVlIGFuY2VzdG9yIHdpdGggc29tZSBtYWRlLXVwIHNpemUgKEFj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojpib3VuZGluZ0JveFJlY3QgZG9lcyB0aGlzKS4KICAgICAg
ICAgLy8gSG93ZXZlciwgd2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIHJlbmRlciB0cmVlIGlu
IHRoaXMgY29udGV4dCAob25seSB0aGUgQVggaXNvbGF0ZWQgdHJlZSwgd2hpY2ggaXMgdG9vIHNw
YXJzZSBmb3IgdGhpcyBwdXJwb3NlKSwgc28KICAgICAgICAgLy8gdW50aWwgd2UgY2FjaGUgdGhl
IG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBsZXQncyBnbyB0byB0aGUgbWFpbi10aHJlYWQuCiAgICAg
fSBlbHNlIGlmIChyb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uIHx8IHJv
bGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJsZUhlYWRlckNvbnRhaW5lcikKLSAg
ICAgICAgcmV0dXJuIGV4cG9zZWRUYWJsZUFuY2VzdG9yKCkgPyByZWxhdGl2ZUZyYW1lRnJvbUNo
aWxkcmVuKCkgOiBGbG9hdFJlY3QoKTsKKyAgICAgICAgcmVsYXRpdmVGcmFtZSA9IGV4cG9zZWRU
YWJsZUFuY2VzdG9yKCkgPyByZWxhdGl2ZUZyYW1lRnJvbUNoaWxkcmVuKCkgOiBGbG9hdFJlY3Qo
KTsKKwogCiAgICAgLy8gTW9jayBvYmplY3RzIGFuZCBTVkcgb2JqZWN0cyBuZWVkIHVzZSB0aGUg
bWFpbiB0aHJlYWQgc2luY2UgdGhleSBkbyBub3QgaGF2ZSByZW5kZXIgbm9kZXMgYW5kIGFyZSBu
b3QgcGFpbnRlZCB3aXRoIGxheWVycywgcmVzcGVjdGl2ZWx5LgogICAgIC8vIEZJWE1FOiBSZW1v
dmUgaXNOb25MYXllclNWR09iamVjdCB3aGVuIExCU0UgaXMgZW5hYmxlZCAmIFNWRyBmcmFtZXMg
YXJlIGNhY2hlZC4KQEAgLTEyNjUsNiArMTI4Niw4IEBAIEZsb2F0UmVjdCBBWElzb2xhdGVkT2Jq
ZWN0OjpyZWxhdGl2ZUZyYW1lKCkgY29uc3QKICAgICBpZiAoYW5jZXN0b3IgJiYgZnJhbWVSZWN0
LmxvY2F0aW9uKCkgPT0gRmxvYXRQb2ludCgpKQogICAgICAgICBmcmFtZVJlY3Quc2V0TG9jYXRp
b24oYW5jZXN0b3ItPnJlbGF0aXZlRnJhbWUoKS5sb2NhdGlvbigpKTsKIAorICAgIGF1dG8gcmVt
b3RlT2Zmc2V0ID0gcmVtb3RlRnJhbWVPZmZzZXQoKTsKKyAgICBmcmFtZVJlY3QubW92ZUJ5KEZs
b2F0UG9pbnQocmVtb3RlT2Zmc2V0KSk7CiAgICAgcmV0dXJuIGZyYW1lUmVjdDsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZE9iamVjdC5oCmluZGV4IGFlNDkwMGQ2MmFlOS4uMWJjYTM4MGFlYjRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xh
dGVkT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRy
ZWUvQVhJc29sYXRlZE9iamVjdC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEFDQ0VT
U0lCSUxJVFlfSVNPTEFURURfVFJFRSkKIAogI2luY2x1ZGUgIkFYQ29yZU9iamVjdC5oIgorI2lu
Y2x1ZGUgIkFYSXNvbGF0ZWRUcmVlLmgiCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2lu
Y2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgpAQCAtMjE0LDYgKzIx
NSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0ZpbGVVcGxvYWRCdXR0b24oKSBjb25zdCBmaW5h
bCB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzRmlsZVVwbG9h
ZEJ1dHRvbik7IH0KICAgICBib29sIGlzTWV0ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBib29s
QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWV0ZXIpOyB9OwogICAgIEZsb2F0UG9p
bnQgc2NyZWVuUmVsYXRpdmVQb3NpdGlvbigpIGNvbnN0IGZpbmFsOworICAgIEludFBvaW50IHJl
bW90ZUZyYW1lT2Zmc2V0KCkgY29uc3QgZmluYWw7CiAgICAgRmxvYXRSZWN0IHJlbGF0aXZlRnJh
bWUoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGhhc0NhY2hlZFJlbGF0aXZlRnJhbWUoKSBjb25z
dCB7IHJldHVybiBvcHRpb25hbEF0dHJpYnV0ZVZhbHVlPEludFJlY3Q+KEFYUHJvcGVydHlOYW1l
OjpSZWxhdGl2ZUZyYW1lKS5oYXNfdmFsdWUoKTsgfQogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTI2
Miw3ICsyNjQsNyBAQCBwcml2YXRlOgogICAgIEFYSXNvbGF0ZWRPYmplY3QqIGFjY2Vzc2liaWxp
dHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3QgZmluYWw7CiAgICAgQVhJc29sYXRlZE9i
amVjdCogZm9jdXNlZFVJRWxlbWVudCgpIGNvbnN0IGZpbmFsOwogICAgIEFYQ29yZU9iamVjdCog
aW50ZXJuYWxMaW5rRWxlbWVudCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG9iamVjdEF0dHJpYnV0
ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJbnRlcm5hbExpbmtFbGVtZW50KTsgfQotICAgIEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciByYWRpb0J1dHRvbkdyb3VwKCkgY29uc3QgeyByZXR1cm4g
dHJlZSgpLT5vYmplY3RzRm9ySURzKHZlY3RvckF0dHJpYnV0ZVZhbHVlPEFYSUQ+KEFYUHJvcGVy
dHlOYW1lOjpSYWRpb0J1dHRvbkdyb3VwKSk7IH0KKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3IgcmFkaW9CdXR0b25Hcm91cCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRyZWUoKS0+b2Jq
ZWN0c0ZvcklEcyh2ZWN0b3JBdHRyaWJ1dGVWYWx1ZTxBWElEPihBWFByb3BlcnR5TmFtZTo6UmFk
aW9CdXR0b25Hcm91cCkpOyB9CiAgICAgQVhJc29sYXRlZE9iamVjdCogc2Nyb2xsQmFyKEFjY2Vz
c2liaWxpdHlPcmllbnRhdGlvbikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nIHBsYWNlaG9sZGVy
VmFsdWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3Bl
cnR5TmFtZTo6UGxhY2Vob2xkZXJWYWx1ZSk7IH0KICAgICBTdHJpbmcgZXhwYW5kZWRUZXh0VmFs
dWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5
TmFtZTo6RXhwYW5kZWRUZXh0VmFsdWUpOyB9CkBAIC00NTUsNyArNDU3LDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIGlzQWNjZXNzaWJpbGl0eUFSSUFHcmlkSW5zdGFuY2UoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3dJbnN0
YW5jZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0FjY2Vzc2li
aWxpdHlBUklBR3JpZENlbGxJbnN0YW5jZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9
Ci0KKyAgICBib29sIGlzQVhSZW1vdGVGcmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgYm9vbCBpc05hdGl2ZVRleHRDb250cm9sKCkgY29uc3QgZmluYWw7CiAgICAgYm9v
bCBpc0xpc3RCb3hPcHRpb24oKSBjb25zdCBmaW5hbDsKICAgICBib29sIGlzTW9ja09iamVjdCgp
IGNvbnN0IGZpbmFsOwpAQCAtNTM2LDcgKzUzOCw5IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG5h
bWVBdHRyaWJ1dGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShB
WFByb3BlcnR5TmFtZTo6TmFtZUF0dHJpYnV0ZSk7IH0KICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBib29sIGhhc0FwcGxlUERGQW5ub3RhdGlvbkF0dHJpYnV0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SGFzQXBwbGVQREZBbm5vdGF0
aW9uQXR0cmlidXRlKTsgfQorICAgIFJldGFpblB0cjxpZD4gcmVtb3RlRnJhbWVQbGF0Zm9ybUVs
ZW1lbnQoKSBjb25zdCBmaW5hbDsKICNlbmRpZgorICAgIGJvb2wgaGFzUmVtb3RlRnJhbWVDaGls
ZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFt
ZTo6SGFzUmVtb3RlRnJhbWVDaGlsZCk7IH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFC
TEUoTU9ERUxfRUxFTUVOVCkKICAgICBWZWN0b3I8UmV0YWluUHRyPGlkPj4gbW9kZWxFbGVtZW50
Q2hpbGRyZW4oKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAppbmRleCA2OTY2NTg0NDhm
NjUuLjFiZTNiNzk5MDUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcApAQCAtMzAsNiArMzAs
NyBAQAogCiAjaW5jbHVkZSAiQVhJc29sYXRlZE9iamVjdC5oIgogI2luY2x1ZGUgIkFYTG9nZ2Vy
LmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJp
bGl0eVRhYmxlUm93LmgiCiAjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24uaCIKICNpbmNsdWRlICJM
b2NhbEZyYW1lVmlldy5oIgpAQCAtMjI1LDQ2ICsyMjYsMjYgQEAgUmVmUHRyPEFYSXNvbGF0ZWRP
YmplY3Q+IEFYSXNvbGF0ZWRUcmVlOjpvYmplY3RGb3JJRChjb25zdCBBWElEIGF4SUQpIGNvbnN0
CiAgICAgcmV0dXJuIGF4SUQuaXNWYWxpZCgpID8gbV9yZWFkZXJUaHJlYWROb2RlTWFwLmdldChh
eElEKSA6IG51bGxwdHI7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFU+Ci1WZWN0b3I8UmVmUHRy
PEFYQ29yZU9iamVjdD4+IEFYSXNvbGF0ZWRUcmVlOjpvYmplY3RzRm9ySURzKGNvbnN0IFUmIGF4
SURzKQorUmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+IEFYSXNvbGF0ZWRUcmVlOjpmZXRjaE9iamVj
dEZvcklERnJvbU1haW5UaHJlYWQoY29uc3QgQVhJRCBheElEKSBjb25zdAogewotICAgIEFTU0VS
VCghaXNNYWluVGhyZWFkKCkpOwotCi0gICAgVmVjdG9yPFJlZlB0cjxBWENvcmVPYmplY3Q+PiBy
ZXN1bHQ7Ci0gICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYXhJRHMuc2l6ZSgpKTsK
LSAgICBmb3IgKGNvbnN0IGF1dG8mIGF4SUQgOiBheElEcykgewotICAgICAgICBSZWZQdHIgb2Jq
ZWN0ID0gb2JqZWN0Rm9ySUQoYXhJRCk7Ci0gICAgICAgIGlmIChvYmplY3QpIHsKLSAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoV1RGTW92ZShvYmplY3QpKTsKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gVGhlcmUgaXMgbm8gaXNvbGF0ZWQgb2JqZWN0IGZv
ciB0aGlzIEFYSUQuIFRoaXMgY2FuIGhhcHBlbiBpZiB0aGUgY29ycmVzcG9uZGluZyBsaXZlIG9i
amVjdCBpcyBpZ25vcmVkLgotICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIGxpdmUgb2JqZWN0IGZv
ciB0aGlzIElEIGFuZCBpdCBpcyBhbiBpZ25vcmVkIHRhcmdldCBvZiBhIHJlbGF0aW9uc2hpcCwg
Y3JlYXRlIGFuIGlzb2xhdGVkIG9iamVjdCBmb3IgaXQuCi0gICAgICAgIG9iamVjdCA9IEFjY2Vz
c2liaWxpdHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxSZWZQdHI8QVhJc29sYXRlZE9i
amVjdD4+KFsmYXhJRCwgdGhpc10gKCkgLT4gUmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+IHsKLSAg
ICAgICAgICAgIGF1dG8qIGNhY2hlID0gYXhPYmplY3RDYWNoZSgpOwotICAgICAgICAgICAgaWYg
KCFjYWNoZSB8fCAhY2FjaGUtPnJlbGF0aW9uVGFyZ2V0SURzKCkuY29udGFpbnMoYXhJRCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAgICAgICAgIFJlZlB0ciBheE9i
amVjdCA9IGNhY2hlLT5vYmplY3RGb3JJRChheElEKTsKLSAgICAgICAgICAgIGlmICghYXhPYmpl
Y3QgfHwgIWF4T2JqZWN0LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAgICAgICAgIGF1dG8gb2JqZWN0ID0gQVhJc29sYXRl
ZE9iamVjdDo6Y3JlYXRlKCpheE9iamVjdCwgY29uc3RfY2FzdDxBWElzb2xhdGVkVHJlZSo+KHRo
aXMpKTsKLSAgICAgICAgICAgIEFTU0VSVChheE9iamVjdC0+d3JhcHBlcigpKTsKLSAgICAgICAg
ICAgIG9iamVjdC0+YXR0YWNoUGxhdGZvcm1XcmFwcGVyKGF4T2JqZWN0LT53cmFwcGVyKCkpOwot
ICAgICAgICAgICAgcmV0dXJuIG9iamVjdDsKLSAgICAgICAgfSk7Ci0gICAgICAgIGlmIChvYmpl
Y3QpIHsKLSAgICAgICAgICAgIG1fcmVhZGVyVGhyZWFkTm9kZU1hcC5hZGQoYXhJRCwgKm9iamVj
dCk7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKFdURk1vdmUob2JqZWN0KSk7Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgcmVzdWx0LnNocmlua1RvRml0KCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
KyAgICAvLyBUaGVyZSBpcyBubyBpc29sYXRlZCBvYmplY3QgZm9yIHRoaXMgQVhJRC4gVGhpcyBj
YW4gaGFwcGVuIGlmIHRoZSBjb3JyZXNwb25kaW5nIGxpdmUgb2JqZWN0IGlzIGlnbm9yZWQuCisg
ICAgLy8gSWYgdGhlcmUgaXMgYSBsaXZlIG9iamVjdCBmb3IgdGhpcyBJRCBhbmQgaXQgaXMgYW4g
aWdub3JlZCB0YXJnZXQgb2YgYSByZWxhdGlvbnNoaXAsIGNyZWF0ZSBhbiBpc29sYXRlZCBvYmpl
Y3QgZm9yIGl0LgorICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZVZhbHVlRnJvbU1h
aW5UaHJlYWQ8UmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+PihbJmF4SUQsIHRoaXNdICgpIC0+IFJl
ZlB0cjxBWElzb2xhdGVkT2JqZWN0PiB7CisgICAgICAgIGF1dG8qIGNhY2hlID0gYXhPYmplY3RD
YWNoZSgpOworICAgICAgICBpZiAoIWNhY2hlIHx8ICFjYWNoZS0+cmVsYXRpb25UYXJnZXRJRHMo
KS5jb250YWlucyhheElEKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAg
IFJlZlB0ciBheE9iamVjdCA9IGNhY2hlLT5vYmplY3RGb3JJRChheElEKTsKKyAgICAgICAgaWYg
KCFheE9iamVjdCB8fCAhYXhPYmplY3QtPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGF1dG8gb2JqZWN0ID0gQVhJc29sYXRl
ZE9iamVjdDo6Y3JlYXRlKCpheE9iamVjdCwgY29uc3RfY2FzdDxBWElzb2xhdGVkVHJlZSo+KHRo
aXMpKTsKKyAgICAgICAgQVNTRVJUKGF4T2JqZWN0LT53cmFwcGVyKCkpOworICAgICAgICBvYmpl
Y3QtPmF0dGFjaFBsYXRmb3JtV3JhcHBlcihheE9iamVjdC0+d3JhcHBlcigpKTsKKyAgICAgICAg
cmV0dXJuIG9iamVjdDsKKyAgICB9KTsKIH0KIAotCiB2b2lkIEFYSXNvbGF0ZWRUcmVlOjpnZW5l
cmF0ZVN1YnRyZWUoQWNjZXNzaWJpbGl0eU9iamVjdCYgYXhPYmplY3QpCiB7CiAgICAgQVhUUkFD
RSgiQVhJc29sYXRlZFRyZWU6OmdlbmVyYXRlU3VidHJlZSJfcyk7CkBAIC02NjAsNiArNjQxLDEy
IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZU5vZGVQcm9wZXJ0aWVzKEFYQ29yZU9iamVj
dCYgYXhPYmplY3QsIGNvbnN0IEFYUHJvcGVyCiAgICAgICAgIGNhc2UgQVhQcm9wZXJ0eU5hbWU6
OlBvc0luU2V0OgogICAgICAgICAgICAgcHJvcGVydHlNYXAuc2V0KEFYUHJvcGVydHlOYW1lOjpQ
b3NJblNldCwgYXhPYmplY3QucG9zSW5TZXQoKSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBBWFByb3BlcnR5TmFtZTo6UmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQ6CisgICAg
ICAgICAgICBwcm9wZXJ0eU1hcC5zZXQoQVhQcm9wZXJ0eU5hbWU6OlJlbW90ZUZyYW1lUGxhdGZv
cm1FbGVtZW50LCBheE9iamVjdC5yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFYUHJvcGVydHlOYW1lOjpIYXNSZW1vdGVGcmFt
ZUNoaWxkOgorICAgICAgICAgICAgcHJvcGVydHlNYXAuc2V0KEFYUHJvcGVydHlOYW1lOjpIYXNS
ZW1vdGVGcmFtZUNoaWxkLCBheE9iamVjdC5oYXNSZW1vdGVGcmFtZUNoaWxkKCkpOworICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQVhQcm9wZXJ0eU5hbWU6OlJvbGVEZXNjcmlwdGlv
bjoKICAgICAgICAgICAgIHByb3BlcnR5TWFwLnNldChBWFByb3BlcnR5TmFtZTo6Um9sZURlc2Ny
aXB0aW9uLCBheE9iamVjdC5yb2xlRGVzY3JpcHRpb24oKS5pc29sYXRlZENvcHkoKSk7CiAgICAg
ICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4IDFlOWM3ODRiZDFiMC4uM2Fj
NmM1NWFmYjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKQEAgLTEwNCw2ICsxMDQsNyBAQCBlbnVt
IGNsYXNzIEFYUHJvcGVydHlOYW1lIDogdWludDE2X3QgewogICAgIEhhc0hpZ2hsaWdodGluZywK
ICAgICBIYXNJdGFsaWNGb250LAogICAgIEhhc1BsYWluVGV4dCwKKyAgICBIYXNSZW1vdGVGcmFt
ZUNoaWxkLAogICAgIEhhc1VuZGVybGluZSwKICAgICBIZWFkZXJDb250YWluZXIsCiAgICAgSGVh
ZGluZ0xldmVsLApAQCAtMjAxLDYgKzIwMiw4IEBAIGVudW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUg
OiB1aW50MTZfdCB7CiAgICAgUHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaCwKICAgICBS
YWRpb0J1dHRvbkdyb3VwLAogICAgIFJlbGF0aXZlRnJhbWUsCisgICAgUmVtb3RlRnJhbWVPZmZz
ZXQsCisgICAgUmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQsCiAgICAgUm9sZVZhbHVlLAogICAg
IFJvbGVQbGF0Zm9ybVN0cmluZywKICAgICBSb2xlRGVzY3JpcHRpb24sCkBAIC0yNTYsNiArMjU5
LDcgQEAgdXNpbmcgQVhQcm9wZXJ0eU5hbWVTZXQgPSBIYXNoU2V0PEFYUHJvcGVydHlOYW1lLCBJ
bnRIYXNoPEFYUHJvcGVydHlOYW1lPiwgV1RGOjoKIHVzaW5nIEFYUHJvcGVydHlWYWx1ZVZhcmlh
bnQgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIEFYSUQsIFN0cmluZywgYm9vbCwgaW50
LCB1bnNpZ25lZCwgZG91YmxlLCBmbG9hdCwgdWludDY0X3QsIEFjY2Vzc2liaWxpdHlCdXR0b25T
dGF0ZSwgQ29sb3IsIFVSTCwgTGF5b3V0UmVjdCwgRmxvYXRQb2ludCwgRmxvYXRSZWN0LCBJbnRQ
b2ludCwgSW50UmVjdCwgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4sIFZlY3RvcjxBY2Nl
c3NpYmlsaXR5VGV4dD4sIFZlY3RvcjxBWElEPiwgVmVjdG9yPHN0ZDo6cGFpcjxBWElELCBBWElE
Pj4sIFZlY3RvcjxTdHJpbmc+LCBQYXRoLCBPcHRpb25TZXQ8QVhBbmNlc3RvckZsYWc+LCBJbnNp
ZGVMaW5rLCBWZWN0b3I8VmVjdG9yPEFYSUQ+PiwgQ2hhcmFjdGVyUmFuZ2UsIHN0ZDo6cGFpcjxB
WElELCBDaGFyYWN0ZXJSYW5nZT4KICNpZiBQTEFURk9STShDT0NPQSkKICAgICAsIFJldGFpblB0
cjxOU0F0dHJpYnV0ZWRTdHJpbmc+CisgICAgLCBSZXRhaW5QdHI8aWQ+CiAjZW5kaWYKICNpZiBF
TkFCTEUoQVhfVEhSRUFEX1RFWFRfQVBJUykKICAgICAsIEFYVGV4dFJ1bnMKQEAgLTM5Niw2ICs0
MDAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlRW1wdHlDb250ZW50KEFjY2Vzc2liaWxp
dHlPYmplY3QmKTsKICAgICBjb25zdGV4cHIgYm9vbCBpc1VwZGF0aW5nU3VidHJlZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcm9vdE9mU3VidHJlZUJlaW5nVXBkYXRlZDsgfQogICAgIGNvbnN0ZXhwciB2
b2lkIHVwZGF0aW5nU3VidHJlZShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCkgeyBtX3Jv
b3RPZlN1YnRyZWVCZWluZ1VwZGF0ZWQgPSBheE9iamVjdDsgfQorICAgIFJlZlB0cjxBWElzb2xh
dGVkT2JqZWN0PiBmZXRjaE9iamVjdEZvcklERnJvbU1haW5UaHJlYWQoY29uc3QgQVhJRCkgY29u
c3Q7CiAKICAgICBlbnVtIGNsYXNzIEF0dGFjaFdyYXBwZXIgOiBib29sIHsgT25NYWluVGhyZWFk
LCBPbkFYVGhyZWFkIH07CiAgICAgc3RydWN0IE5vZGVDaGFuZ2UgewpAQCAtNDk2LDYgKzUwMSwz
MCBAQCBpbmxpbmUgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6dHJlZUZv
clBhZ2VJRChzdGQ6Om9wdGlvbmFsPFBhZ2VJZAogICAgIHJldHVybiBwYWdlSUQgPyB0cmVlRm9y
UGFnZUlEKCpwYWdlSUQpIDogbnVsbHB0cjsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVT4KK2lu
bGluZSBWZWN0b3I8UmVmUHRyPEFYQ29yZU9iamVjdD4+IEFYSXNvbGF0ZWRUcmVlOjpvYmplY3Rz
Rm9ySURzKGNvbnN0IFUmIGF4SURzKQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwor
CisgICAgVmVjdG9yPFJlZlB0cjxBWENvcmVPYmplY3Q+PiByZXN1bHQ7CisgICAgcmVzdWx0LnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkoYXhJRHMuc2l6ZSgpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8m
IGF4SUQgOiBheElEcykgeworICAgICAgICBSZWZQdHIgb2JqZWN0ID0gb2JqZWN0Rm9ySUQoYXhJ
RCk7CisgICAgICAgIGlmIChvYmplY3QpIHsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoV1RG
TW92ZShvYmplY3QpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAg
ICAgb2JqZWN0ID0gZmV0Y2hPYmplY3RGb3JJREZyb21NYWluVGhyZWFkKGF4SUQpOworICAgICAg
ICBpZiAob2JqZWN0KSB7CisgICAgICAgICAgICBtX3JlYWRlclRocmVhZE5vZGVNYXAuYWRkKGF4
SUQsICpvYmplY3QpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChXVEZNb3ZlKG9iamVjdCkp
OworICAgICAgICB9CisgICAgfQorICAgIHJlc3VsdC5zaHJpbmtUb0ZpdCgpOworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9tYWMvQVhJc29s
YXRlZE9iamVjdE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL21hYy9BWElzb2xhdGVkT2JqZWN0TWFjLm1tCmluZGV4IGFkYjdlYzY0ODM0NS4uZTAyZGEw
ZDExMmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVk
dHJlZS9tYWMvQVhJc29sYXRlZE9iamVjdE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9tYWMvQVhJc29sYXRlZE9iamVjdE1hYy5tbQpAQCAtNjMs
NiArNjMsOCBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVQbGF0Zm9ybVByb3Bl
cnRpZXMoY29uc3QgUmVmPGNvbnN0IEFjY2Vzc2liaWxpdAogICAgICAgICB9CiAgICAgfQogCisg
ICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50
LCBvYmplY3QtPnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkpOworCiAgICAgLy8gQ2FjaGUg
dGhlIFN0cmluZ1ZhbHVlIG9ubHkgaWYgaXQgZGlmZmVycyBmcm9tIHRoZSBBdHRyaWJ1dGVkVGV4
dC4KICAgICBhdXRvIHZhbHVlID0gb2JqZWN0LT5zdHJpbmdWYWx1ZSgpOwogICAgIGlmICghYXR0
cmlidXRlZFRleHQgfHwgdmFsdWUgIT0gU3RyaW5nKFthdHRyaWJ1dGVkVGV4dCBzdHJpbmddKSkK
QEAgLTIwMiw2ICsyMDQsMTEgQEAgdW5zaWduZWQgQVhJc29sYXRlZE9iamVjdDo6dGV4dExlbmd0
aCgpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKK1JldGFpblB0cjxpZD4gQVhJc29sYXRlZE9i
amVjdDo6cmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKSBjb25zdAoreworICAgIHJldHVybiBw
cm9wZXJ0eVZhbHVlPFJldGFpblB0cjxpZD4+KEFYUHJvcGVydHlOYW1lOjpSZW1vdGVGcmFtZVBs
YXRmb3JtRWxlbWVudCk7Cit9CisKIFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+IEFYSXNv
bGF0ZWRPYmplY3Q6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UoQVhUZXh0TWFy
a2VyUmFuZ2UmJiBtYXJrZXJSYW5nZSwgU3BlbGxDaGVjayBzcGVsbENoZWNrKSBjb25zdAogewog
ICAgIGlmICghbWFya2VyUmFuZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbQppbmRleCBiYTJhY2NkODBk
MDQuLmJhYjliZjAyOWJkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKIAor
I2ltcG9ydCAiQVhSZW1vdGVGcmFtZS5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUxhYmVsLmgi
CiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5TGlzdC5oIgogI2ltcG9ydCAiQ29sb3JDb2NvYS5oIgpA
QCAtNTEsNiArNTIsNyBAQAogI2ltcG9ydCAiV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJN
YWMuaCIKICNpbXBvcnQgIldpZGdldC5oIgogCisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TQWNj
ZXNzaWJpbGl0eVNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNTcGVsbENoZWNrZXJTUEku
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzQ5LDYgKzc1MSwzMCBAQCBSZXRhaW5QdHI8
TlNBdHRyaWJ1dGVkU3RyaW5nPiBhdHRyaWJ1dGVkU3RyaW5nQ3JlYXRlKE5vZGUqIG5vZGUsIFN0
cmluZ1ZpZXcgdGV4dAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0ZDo6c3Bhbjxjb25zdCB1
aW50OF90PiBBWFJlbW90ZUZyYW1lOjpnZW5lcmF0ZVJlbW90ZVRva2VuKCkgY29uc3QKK3sKKyNp
ZiBQTEFURk9STShNQUMpCisgICAgLy8gV2UgdXNlIHRoZSBwYXJlbnQncyB3cmFwcGVyIHNvIHRo
YXQgdGhlIHJlbW90ZSBmcmFtZSBhY3RzIGFzIGEgcGFzcyB0aHJvdWdoIGZvciB0aGUgcmVtb3Rl
IHRva2VuIGJyaWRnZS4KKyAgICBOU0RhdGEgKmRhdGEgPSBbTlNBY2Nlc3NpYmlsaXR5UmVtb3Rl
VUlFbGVtZW50IHJlbW90ZVRva2VuRm9yTG9jYWxVSUVsZW1lbnQ6cGFyZW50T2JqZWN0KCktPndy
YXBwZXIoKV07CisgICAgcmV0dXJuIHN0ZDo6c3BhbihzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7CisjZWxzZQorICAgIC8vIEZJWE1FOiBT
dXBwb3J0IGlPUworICAgIHJldHVybiB7IH0KKyNlbmRpZgorfQorCit2b2lkIEFYUmVtb3RlRnJh
bWU6OmluaXRpYWxpemVQbGF0Zm9ybUVsZW1lbnRXaXRoUmVtb3RlVG9rZW4oc3RkOjpzcGFuPGNv
bnN0IHVpbnQ4X3Q+IHRva2VuLCBpbnQgcHJvY2Vzc0lkZW50aWZpZXIpCit7CisjaWYgUExBVEZP
Uk0oTUFDKQorICAgIG1fcHJvY2Vzc0lkZW50aWZpZXIgPSBwcm9jZXNzSWRlbnRpZmllcjsKKyAg
ICBbd3JhcHBlcigpIGFjY2Vzc2liaWxpdHlTZXRQcmVzZW50ZXJQcm9jZXNzSWRlbnRpZmllcjpw
cm9jZXNzSWRlbnRpZmllcl07CisgICAgTlNEYXRhICp0b2tlbkRhdGEgPSBbTlNEYXRhIGRhdGFX
aXRoQnl0ZXM6dG9rZW4uZGF0YSgpIGxlbmd0aDp0b2tlbi5zaXplKCldOworICAgIG1fcmVtb3Rl
RnJhbWVQbGF0Zm9ybUVsZW1lbnQgPSBhZG9wdE5TKFtbTlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlF
bGVtZW50IGFsbG9jXSBpbml0V2l0aFJlbW90ZVRva2VuOnRva2VuRGF0YV0pOworCisgICAgYXhP
YmplY3RDYWNoZSgpLT5vblJlbW90ZUZyYW1lSW5pdGlhbGl6ZWQoKnRoaXMpOworI2VuZGlmCit9
CisKIG5hbWVzcGFjZSBBY2Nlc3NpYmlsaXR5IHsKIAogUGxhdGZvcm1Sb2xlTWFwIGNyZWF0ZVBs
YXRmb3JtUm9sZU1hcCgpCkBAIC04OTEsNiArOTE3LDcgQEAgUGxhdGZvcm1Sb2xlTWFwIGNyZWF0
ZVBsYXRmb3JtUm9sZU1hcCgpCiAgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlN1cGVyc2Ny
aXB0LCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKICAgICAgICAgeyBBY2Nlc3NpYmlsaXR5
Um9sZTo6TW9kZWwsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAogICAgICAgICB7IEFjY2Vz
c2liaWxpdHlSb2xlOjpTdWdnZXN0aW9uLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAg
ICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6UmVtb3RlRnJhbWUsIE5TQWNjZXNzaWJpbGl0eUdy
b3VwUm9sZSB9LAogICAgIH07CiAgICAgUGxhdGZvcm1Sb2xlTWFwIHJvbGVNYXA7CiAgICAgZm9y
IChhdXRvJiByb2xlIDogcm9sZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJh
c2UubW0KaW5kZXggNjM1N2ZhN2MyNzFiLi40MWY0ZDg0NWQxYjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
QmFzZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0KQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgIkFY
Q29yZU9iamVjdC5oIgogI2ltcG9ydCAiQVhJc29sYXRlZE9iamVjdC5oIgogI2ltcG9ydCAiQVhP
YmplY3RDYWNoZS5oIgorI2ltcG9ydCAiQVhSZW1vdGVGcmFtZS5oIgogI2ltcG9ydCAiQWNjZXNz
aWJpbGl0eUFSSUFHcmlkUm93LmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5TGlzdC5oIgogI2lt
cG9ydCAiQWNjZXNzaWJpbGl0eUxpc3RCb3guaCIKQEAgLTI2NSwxMyArMjY2LDEzIEBAIE5TQXJy
YXkgKm1ha2VOU0FycmF5KGNvbnN0IFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yJiBjCiAgICAgICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgICAgIGF1
dG8gd3JhcHBlciA9IGNoaWxkLT53cmFwcGVyKCk7Ci0KICAgICAgICAgLy8gV2Ugd2FudCB0byBy
ZXR1cm4gdGhlIGF0dGFjaG1lbnQgdmlldyBpbnN0ZWFkIG9mIHRoZSBvYmplY3QgcmVwcmVzZW50
aW5nIHRoZSBhdHRhY2htZW50LAogICAgICAgICAvLyBvdGhlcndpc2UsIHdlIGdldCBwYWxpbmRy
b21lIGVycm9ycyBpbiB0aGUgQVggaGllcmFyY2h5LgogICAgICAgICBpZiAoY2hpbGQtPmlzQXR0
YWNobWVudCgpKSB7CiAgICAgICAgICAgICBpZiAoaWQgYXR0YWNobWVudFZpZXcgPSB3cmFwcGVy
LmF0dGFjaG1lbnRWaWV3KQogICAgICAgICAgICAgICAgIHJldHVybiBhdHRhY2htZW50VmlldzsK
LSAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGNoaWxkLT5pc1JlbW90ZUZyYW1lKCkpCisg
ICAgICAgICAgICByZXR1cm4gY2hpbGQtPnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkuZ2V0
KCk7CiAKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgfSkuYXV0b3JlbGVhc2UoKTsKQEAg
LTM4OSw3ICszOTAsNyBAQCBOU0FycmF5ICptYWtlTlNBcnJheShjb25zdCBXZWJDb3JlOjpBWENv
cmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgYwogLSAoQk9PTClpc0lzb2xh
dGVkT2JqZWN0CiB7CiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKLSAg
ICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgUmVmUHRy
IGJhY2tpbmdPYmplY3QgPSBkeW5hbWljRG93bmNhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdD4oc2Vs
Zi5iYXNlVXBkYXRlQmFja2luZ1N0b3JlKTsKICAgICByZXR1cm4gYmFja2luZ09iamVjdCAmJiBi
YWNraW5nT2JqZWN0LT5pc0FYSXNvbGF0ZWRPYmplY3RJbnN0YW5jZSgpOwogI2Vsc2UKICAgICBy
ZXR1cm4gTk87CkBAIC01MjMsNyArNTI0LDcgQEAgc3RhdGljIHZvaWQgY29udmVydFBhdGhUb1Nj
cmVlblNwYWNlRnVuY3Rpb24oUGF0aENvbnZlcnNpb25JbmZvJiBjb252ZXJzaW9uLCBjb24KIAog
LSAoQ0dSZWN0KWNvbnZlcnRSZWN0VG9TcGFjZTooY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jily
ZWN0IHNwYWNlOihBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlKXNwYWNlCiB7Ci0gICAgYXV0
byogYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0ciBiYWNr
aW5nT2JqZWN0ID0gZHluYW1pY0Rvd25jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3Q+KHNlbGYuYmFz
ZVVwZGF0ZUJhY2tpbmdTdG9yZSk7CiAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQogICAgICAgICBy
ZXR1cm4gQ0dSZWN0WmVybzsKIApAQCAtNTgyLDcgKzU4Myw3IEBAIHN0ZDo6b3B0aW9uYWw8U2lt
cGxlUmFuZ2U+IG1ha2VET01SYW5nZShEb2N1bWVudCogZG9jdW1lbnQsIE5TUmFuZ2UgcmFuZ2Up
CiAjZWxzZQogICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFj
a2luZ09iamVjdDsKKyAgICBSZWZQdHIgYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2Jq
ZWN0OwogI2VuZGlmCiAgICAgcmV0dXJuIGJhY2tpbmdPYmplY3Q7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDJmNjBiNjIwNGM0OS4uNDM5MTIzNzNhNjMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtMzQsNiArMzQs
NyBAQAogI2ltcG9ydCAiQVhJc29sYXRlZE9iamVjdC5oIgogI2ltcG9ydCAiQVhMb2dnZXIuaCIK
ICNpbXBvcnQgIkFYT2JqZWN0Q2FjaGUuaCIKKyNpbXBvcnQgIkFYUmVtb3RlRnJhbWUuaCIKICNp
bXBvcnQgIkFYVGV4dE1hcmtlci5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93
LmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5TGFiZWwuaCIKQEAgLTQ3OSw2ICs0ODAsMTAgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVRleHRJbnB1
dE1hcmtlZFRleHRNYXJrZXJSYW5nZUF0dHJpYnV0ZSBAIkFYVGV4dElucHV0TWFya2VkVGV4dE1h
cmtlclJhbmdlIgogI2VuZGlmCiAKKyNpZm5kZWYga0FYQ29udmVydFJlbGF0aXZlRnJhbWVQYXJh
bWV0ZXJpemVkQXR0cmlidXRlCisjZGVmaW5lIGtBWENvbnZlcnRSZWxhdGl2ZUZyYW1lUGFyYW1l
dGVyaXplZEF0dHJpYnV0ZSBAIkFYQ29udmVydFJlbGF0aXZlRnJhbWUiCisjZW5kaWYKKwogQGlt
cGxlbWVudGF0aW9uIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyCiAKIC0gKHZvaWQpZGV0
YWNoCkBAIC02OTIsNyArNjk3LDcgQEAgc3RhdGljIFJldGFpblB0cjxBWFRleHRNYXJrZXJSZWY+
IHByZXZpb3VzVGV4dE1hcmtlcihBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3QKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgYXV0byogYmFja2luZ09iamVjdCA9IHNlbGYu
YXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+IGJhY2tpbmdPYmplY3Qg
PSBzZWxmLmF4QmFja2luZ09iamVjdDsKICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCiAgICAgICAg
IHJldHVybiBuaWw7CiAKQEAgLTEyNTYsNyArMTI2MSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1Q
TEVNRU5UQVRJT05TX0VORAogCiAtIChOU0FycmF5ICopcmVuZGVyV2lkZ2V0Q2hpbGRyZW4KIHsK
LSAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgUmVm
UHRyPEFYQ29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0Owog
ICAgIGlmICghYmFja2luZ09iamVjdCB8fCAhYmFja2luZ09iamVjdC0+aXNXaWRnZXQoKSkKICAg
ICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMTI3OSw3ICsxMjg0LDcgQEAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfRU5ECiAKIC0gKGlkKXJlbW90ZUFjY2Vzc2liaWxpdHlQYXJlbnRPYmpl
Y3QKIHsKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7Cisg
ICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2Jq
ZWN0OwogICAgIHJldHVybiBiYWNraW5nT2JqZWN0ID8gYmFja2luZ09iamVjdC0+cmVtb3RlUGFy
ZW50T2JqZWN0KCkgOiBuaWw7CiB9CiAKQEAgLTEyOTYsNyArMTMwMSw3IEBAIHN0YXRpYyB2b2lk
IGNvbnZlcnRUb1ZlY3RvcihOU0FycmF5KiBhcnJheSwgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNj
ZXNzaWJpbGl0eUNoCiAKIC0gKEFYVGV4dE1hcmtlclJhbmdlUmVmKXNlbGVjdGVkVGV4dE1hcmtl
clJhbmdlCiB7Ci0gICAgYXV0byogYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0
OworICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+IGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2lu
Z09iamVjdDsKICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCiAgICAgICAgIHJldHVybiBuaWw7CiAK
QEAgLTEzNjYsMTIgKzEzNzEsMTggQEAgc3RhdGljIHZvaWQgV2ViVHJhbnNmb3JtQ0dQYXRoVG9O
U0JlemllclBhdGgodm9pZCogaW5mbywgY29uc3QgQ0dQYXRoRWxlbWVudCAqZWwKIAogLSAoTlNT
dHJpbmcqKXJvbGUKIHsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBiYWNraW5nT2JqZWN0ID0g
c2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgaWYgKCFiYWNraW5nT2JqZWN0KQorICAgICAgICBy
ZXR1cm4gbmlsOworCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgIGlm
IChzZWxmLmF4QmFja2luZ09iamVjdC0+aXNBdHRhY2htZW50KCkpCisgICAgaWYgKGJhY2tpbmdP
YmplY3QtPmlzQXR0YWNobWVudCgpKQogICAgICAgICByZXR1cm4gW1tzZWxmIGF0dGFjaG1lbnRW
aWV3XSBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Um9sZUF0dHJp
YnV0ZV07CisgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzUmVtb3RlRnJhbWUoKSkKKyAgICAgICAg
cmV0dXJuIFtiYWNraW5nT2JqZWN0LT5yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpLmdldCgp
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlSb2xlQXR0cmlidXRl
XTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCi0gICAgTlNTdHJpbmcgKnN0
cmluZyA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5yb2xlUGxhdGZvcm1TdHJpbmcoKTsKKyAgICBO
U1N0cmluZyAqc3RyaW5nID0gYmFja2luZ09iamVjdC0+cm9sZVBsYXRmb3JtU3RyaW5nKCk7CiAg
ICAgaWYgKHN0cmluZy5sZW5ndGgpCiAgICAgICAgIHJldHVybiBzdHJpbmc7CiAgICAgcmV0dXJu
IE5TQWNjZXNzaWJpbGl0eVVua25vd25Sb2xlOwpAQCAtMTM3OSw3ICsxMzkwLDcgQEAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKIC0gKEJPT0wpaXNFbXB0eUdyb3VwCiB7Ci0g
ICAgYXV0byogYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0
cjxBWENvcmVPYmplY3Q+IGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKICAg
ICBpZiAoIWJhY2tpbmdPYmplY3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTM4OCw2
ICsxMzk5LDkgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICNlbmRpZgogCisgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzUmVtb3RlRnJh
bWUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgcmV0dXJuIFtbc2VsZiByb2xlXSBp
c0VxdWFsOk5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZV0KICAgICAgICAgJiYgYmFja2luZ09iamVj
dC0+Y2hpbGRyZW4oKS5pc0VtcHR5KCkKICAgICAgICAgJiYgIVtbc2VsZiByZW5kZXJXaWRnZXRD
aGlsZHJlbl0gY291bnRdOwpAQCAtMTM5Niw3ICsxNDEwLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfRU5ECiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogLSAo
TlNTdHJpbmcqKXN1YnJvbGUKIHsKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJh
Y2tpbmdPYmplY3Q7CisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNl
bGYuYXhCYWNraW5nT2JqZWN0OwogICAgIGlmICghYmFja2luZ09iamVjdCkKICAgICAgICAgcmV0
dXJuIG5pbDsKIApAQCAtMTQxMyw3ICsxNDI3LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfRU5ECiAKIC0gKE5TU3RyaW5nKilyb2xlRGVzY3JpcHRpb24KIHsKLSAgICBhdXRvKiBi
YWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgUmVmUHRyPEFYQ29yZU9i
amVjdD4gYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OwogICAgIGlmICghYmFj
a2luZ09iamVjdCkKICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMTQyMSw2ICsxNDM1LDggQEAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAvLyBhdHRhY2htZW50cyBo
YXZlIHRoZSBBWEltYWdlIHJvbGUsIGJ1dCBhIGRpZmZlcmVudCBzdWJyb2xlCiAgICAgaWYgKGJh
Y2tpbmdPYmplY3QtPmlzQXR0YWNobWVudCgpKQogICAgICAgICByZXR1cm4gW1tzZWxmIGF0dGFj
aG1lbnRWaWV3XSBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Um9s
ZURlc2NyaXB0aW9uQXR0cmlidXRlXTsKKyAgICBpZiAoYmFja2luZ09iamVjdC0+aXNSZW1vdGVG
cmFtZSgpKQorICAgICAgICByZXR1cm4gW2JhY2tpbmdPYmplY3QtPnJlbW90ZUZyYW1lUGxhdGZv
cm1FbGVtZW50KCkuZ2V0KCkgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJp
bGl0eVJvbGVEZXNjcmlwdGlvbkF0dHJpYnV0ZV07CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19FTkQKIAogICAgIFN0cmluZyByb2xlRGVzY3JpcHRpb24gPSBiYWNraW5nT2JqZWN0LT5y
b2xlRGVzY3JpcHRpb24oKTsKQEAgLTE0NzMsNiArMTQ4OSwyOCBAQCBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19FTkQKICAgICByZXR1cm4gYXhTY3JvbGxWaWV3ID8gW2F4U2Nyb2xsVmll
dy0+cGxhdGZvcm1XaWRnZXQoKSB3aW5kb3ddIDogbmlsOwogfQogCistIChOU0FycmF5ICopX3Ry
YW5zZm9ybVNwZWNpYWxDaGlsZHJlbkNhc2VzOihSZWZQdHI8QVhDb3JlT2JqZWN0PiliYWNraW5n
T2JqZWN0Cit7CisjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCisgICAgaWYgKGJhY2tpbmdPYmpl
Y3QtPmlzTW9kZWwoKSkgeworICAgICAgICBhdXRvIG1vZGVsQ2hpbGRyZW4gPSBiYWNraW5nT2Jq
ZWN0LT5tb2RlbEVsZW1lbnRDaGlsZHJlbigpOworICAgICAgICBpZiAobW9kZWxDaGlsZHJlbi5z
aXplKCkpIHsKKyAgICAgICAgICAgIHJldHVybiBjcmVhdGVOU0FycmF5KFdURk1vdmUobW9kZWxD
aGlsZHJlbiksIFtdIChhdXRvJiYgY2hpbGQpIC0+IGlkIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gY2hpbGQuZ2V0KCk7CisgICAgICAgICAgICB9KS5hdXRvcmVsZWFzZSgpOworICAgICAgICB9
CisgICAgfQorI2VuZGlmCisKKyAgICBjb25zdCBhdXRvJiBjaGlsZHJlbiA9IGJhY2tpbmdPYmpl
Y3QtPmNoaWxkcmVuKCk7CisgICAgaWYgKCFjaGlsZHJlbi5zaXplKCkpIHsKKyAgICAgICAgaWYg
KE5TQXJyYXkgKmNoaWxkcmVuID0gW3NlbGYgcmVuZGVyV2lkZ2V0Q2hpbGRyZW5dKQorICAgICAg
ICAgICAgcmV0dXJuIGNoaWxkcmVuOworICAgIH0KKworICAgIHJldHVybiBuaWw7Cit9CisKIC8v
IEZJWE1FOiBzcGxpdCB1cCB0aGlzIGZ1bmN0aW9uIGluIGEgYmV0dGVyIHdheS4KIC8vIHN1Z2dl
c3Rpb25zOiBVc2UgYSBoYXNoIHRhYmxlIHRoYXQgbWFwcyBhdHRyaWJ1dGUgbmFtZXMgdG8gZnVu
Y3Rpb24gY2FsbHMsCiAvLyBvciBtYXliZSBwb2ludGVycyB0byBtZW1iZXIgZnVuY3Rpb25zCkBA
IC0xNTMxLDIyICsxNTY5LDkgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5E
CiAgICAgfQogCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vz
c2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZV0gfHwgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuSW5OYXZpZ2F0aW9uT3JkZXJBdHRyaWJ1dGVdKSB7
Ci0jaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCi0gICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5p
c01vZGVsKCkpIHsKLSAgICAgICAgICAgIGF1dG8gbW9kZWxDaGlsZHJlbiA9IGJhY2tpbmdPYmpl
Y3QtPm1vZGVsRWxlbWVudENoaWxkcmVuKCk7Ci0gICAgICAgICAgICBpZiAobW9kZWxDaGlsZHJl
bi5zaXplKCkpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTlNBcnJheShXVEZNb3Zl
KG1vZGVsQ2hpbGRyZW4pLCBbXSAoYXV0byYmIGNoaWxkKSAtPiBpZCB7Ci0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBjaGlsZC5nZXQoKTsKLSAgICAgICAgICAgICAgICB9KS5hdXRvcmVsZWFz
ZSgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0jZW5kaWYKLQotICAgICAgICBjb25zdCBh
dXRvJiBjaGlsZHJlbiA9IGJhY2tpbmdPYmplY3QtPmNoaWxkcmVuKCk7Ci0gICAgICAgIGlmIChj
aGlsZHJlbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGlmIChOU0FycmF5ICp3aWRnZXRDaGls
ZHJlbiA9IFtzZWxmIHJlbmRlcldpZGdldENoaWxkcmVuXSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gd2lkZ2V0Q2hpbGRyZW47Ci0gICAgICAgIH0KKyAgICAgICAgTlNBcnJheSAqc3BlY2lhbENo
aWxkcmVuID0gW3NlbGYgX3RyYW5zZm9ybVNwZWNpYWxDaGlsZHJlbkNhc2VzOmJhY2tpbmdPYmpl
Y3RdOworICAgICAgICBpZiAoc3BlY2lhbENoaWxkcmVuLmNvdW50KQorICAgICAgICAgICAgcmV0
dXJuIHNwZWNpYWxDaGlsZHJlbjsKIAogICAgICAgICAvLyBUaGUgdHJlZSdzIChBWE91dGxpbmUp
IGNoaWxkcmVuIGFyZSBzdXBwb3NlZCB0byBiZSBpdHMgcm93cyBhbmQgY29sdW1ucy4KICAgICAg
ICAgLy8gVGhlIEFSSUEgc3BlYyBkb2Vzbid0IGhhdmUgY29sdW1ucywgc28gd2UganVzdCBuZWVk
IHJvd3MuCkBAIC0xNTU3LDcgKzE1ODIsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFU
SU9OU19FTkQKICAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzVHJlZUl0ZW0oKSkKICAgICAg
ICAgICAgIHJldHVybiBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT5hcmlhVHJlZUl0ZW1Db250
ZW50KCkpOwogCi0gICAgICAgIHJldHVybiBtYWtlTlNBcnJheShjaGlsZHJlbik7CisgICAgICAg
IHJldHVybiBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT5jaGlsZHJlbigpKTsKICAgICB9CiAK
ICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlT
ZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlXSkgewpAQCAtMTcxMywxNiArMTczOCwxNCBAQCBBTExP
V19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUg
aXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlFbmFibGVkQXR0cmlidXRlXSkKICAgICAg
ICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDogYmFja2luZ09iamVjdC0+aXNFbmFi
bGVkKCldOwogCi0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nl
c3NpYmlsaXR5U2l6ZUF0dHJpYnV0ZV0pIHsKLSAgICAgICAgYXV0byBzaXplID0gYmFja2luZ09i
amVjdC0+c2l6ZSgpOwotICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoU2l6ZTpOU01h
a2VTaXplKHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSldOwotICAgIH0KKyAgICBpZiAoW2F0
dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVNpemVBdHRyaWJ1dGVd
KQorICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoU2l6ZTooQ0dTaXplKWJhY2tpbmdP
YmplY3QtPnNpemUoKV07CiAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5n
Ok5TQWNjZXNzaWJpbGl0eVByaW1hcnlTY3JlZW5IZWlnaHRBdHRyaWJ1dGVdKQogICAgICAgICBy
ZXR1cm4gQChiYWNraW5nT2JqZWN0LT5wcmltYXJ5U2NyZWVuUmVjdCgpLmhlaWdodCgpKTsKIAog
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5UG9z
aXRpb25BdHRyaWJ1dGVdKQotICAgICAgICByZXR1cm4gQChDR1BvaW50KGJhY2tpbmdPYmplY3Qt
PnNjcmVlblJlbGF0aXZlUG9zaXRpb24oKSkpOworICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFs
dWVXaXRoUG9pbnQ6KENHUG9pbnQpYmFja2luZ09iamVjdC0+c2NyZWVuUmVsYXRpdmVQb3NpdGlv
bigpXTsKIAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3Np
YmlsaXR5UGF0aEF0dHJpYnV0ZV0pCiAgICAgICAgIHJldHVybiBbc2VsZiBwYXRoXTsKQEAgLTIy
MzcsNiArMjI2MCwxMCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAg
ICAgICAgcmV0dXJuIHJhbmdlID8gcmFuZ2UucGxhdGZvcm1EYXRhKCkuYnJpZGdpbmdBdXRvcmVs
ZWFzZSgpIDogbmlsOwogICAgIH0KIAorICAgIC8vIFZvaWNlT3ZlciBwcm9wZXJ0eSB0byBpZ25v
cmUgY2VydGFpbiBncm91cHMuCisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmlu
ZzpAIkFYQXV0b0ludGVyYWN0YWJsZSJdKQorICAgICAgICByZXR1cm4gQChiYWNraW5nT2JqZWN0
LT5pc1JlbW90ZUZyYW1lKCkpOworCiAgICAgLy8gVXNlZCBieSBMYXlvdXRUZXN0cyBvbmx5LCBu
b3QgYnkgQVQgY2xpZW50cy4KICAgICBpZiAoVU5MSUtFTFkoW2F0dHJpYnV0ZU5hbWUgaXNFcXVh
bFRvU3RyaW5nOkAiQVhBUklBUm9sZSJdKSkKICAgICAgICAgcmV0dXJuIGJhY2tpbmdPYmplY3Qt
PmNvbXB1dGVkUm9sZVN0cmluZygpOwpAQCAtMjMzMCw3ICsyMzU3LDggQEAgQUxMT1dfREVQUkVD
QVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIGlmIChheE9iamVjdC0+aXNBdHRhY2ht
ZW50KCkpIHsKICAgICAgICAgICAgIGlmIChpZCBhdHRhY2htZW50VmlldyA9IFtheE9iamVjdC0+
d3JhcHBlcigpIGF0dGFjaG1lbnRWaWV3XSkKICAgICAgICAgICAgICAgICByZXR1cm4gYXR0YWNo
bWVudFZpZXc7Ci0gICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChheE9iamVjdC0+aXNSZW1v
dGVGcmFtZSgpKQorICAgICAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5yZW1vdGVGcmFtZVBsYXRm
b3JtRWxlbWVudCgpLmdldCgpOwogCiAgICAgICAgIC8vIE9ubHkgY2FsbCBvdXQgdG8gdGhlIG1h
aW4tdGhyZWFkIGlmIHRoaXMgb2JqZWN0IGhhcyBhIGJhY2tpbmcgd2lkZ2V0IHRvIHF1ZXJ5Lgog
ICAgICAgICBpZiAoYXhPYmplY3QtPmlzV2lkZ2V0KCkpIHsKQEAgLTI1MDcsNiArMjUzNSwxMCBA
QCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBpZiAoYmFja2luZ09i
amVjdC0+aXNXZWJBcmVhKCkpCiAgICAgICAgIHJldHVybiB3ZWJBcmVhUGFyYW1BdHRyczsKIAor
ICAgIC8vIFRoZSBvYmplY3QgdGhhdCBzZXJ2ZXMgdXAgdGhlIHJlbW90ZSBmcmFtZSBhbHNvIGlz
IHRoZSBvbmUgdGhhdCBkb2VzIHRoZSBmcmFtZSBjb252ZXJzaW9uLgorICAgIGlmIChiYWNraW5n
T2JqZWN0LT5oYXNSZW1vdGVGcmFtZUNoaWxkKCkpCisgICAgICAgIHJldHVybiBbcGFyYW1BdHRy
cyBhcnJheUJ5QWRkaW5nT2JqZWN0OmtBWENvbnZlcnRSZWxhdGl2ZUZyYW1lUGFyYW1ldGVyaXpl
ZEF0dHJpYnV0ZV07CisKICAgICByZXR1cm4gcGFyYW1BdHRyczsKIH0KIApAQCAtMjU3OCw3ICsy
NjEwLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiB7CiAgICAgQVhUUkFD
RSgiV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eVBlcmZvcm1TaG93
TWVudUFjdGlvbiJfcyk7CiAKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tp
bmdPYmplY3Q7CisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNlbGYu
YXhCYWNraW5nT2JqZWN0OwogICAgIGlmICghYmFja2luZ09iamVjdCkgewogICAgICAgICBBWExP
RyhtYWtlU3RyaW5nKCJObyBiYWNraW5nT2JqZWN0IGZvciB3cmFwcGVyICIsIGhleChyZWludGVy
cHJldF9jYXN0PHVpbnRwdHJfdD4oc2VsZikpKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTI4MjIs
NyArMjg1NCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIGlm
ICghcmFuZ2UubGVuZ3RoKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgYXV0byogYmFja2lu
Z09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+
IGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKICAgICBpZiAoIWJhY2tpbmdP
YmplY3QpCiAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTMxNzcsNiArMzIwOSwxOCBAQCBBTExP
V19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHdpZGdldENoaWxkcmVuOwogICAgICAgICAgICAgICAgIGNyaXRlcmlhLnJlc3VsdHNMaW1p
dCAtPSBbd2lkZ2V0Q2hpbGRyZW4gY291bnRdOwogICAgICAgICAgICAgfQorICAgICAgICB9IGVs
c2UgaWYgKGJhY2tpbmdPYmplY3QtPmlzUmVtb3RlRnJhbWUoKQorICAgICAgICAgICAgJiYgY3Jp
dGVyaWEuc2VhcmNoS2V5cy5jb250YWlucyhBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpBbnlUeXBl
KQorICAgICAgICAgICAgJiYgKCFjcml0ZXJpYS52aXNpYmxlT25seSB8fCBiYWNraW5nT2JqZWN0
LT5pc1Zpc2libGUoKSkpIHsKKyAgICAgICAgICAgIE5TQXJyYXkgKnJlbW90ZUZyYW1lQ2hpbGRy
ZW4gPSBbc2VsZiBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5BdHRyaWJ1dGVdOworICAgICAgICAgICAgQVNTRVJUKHJlbW90ZUZyYW1lQ2hpbGRyZW4u
Y291bnQgPT0gMSk7CisgICAgICAgICAgICBpZiAocmVtb3RlRnJhbWVDaGlsZHJlbi5jb3VudCA9
PSAxKSB7CisgICAgICAgICAgICAgICAgTlNVSW50ZWdlciBpbmNsdWRlZENoaWxkcmVuQ291bnQg
PSBzdGQ6Om1pbihbcmVtb3RlRnJhbWVDaGlsZHJlbiBjb3VudF0sIE5TVUludGVnZXIoY3JpdGVy
aWEucmVzdWx0c0xpbWl0KSk7CisgICAgICAgICAgICAgICAgd2lkZ2V0Q2hpbGRyZW4gPSBbcmVt
b3RlRnJhbWVDaGlsZHJlbiBzdWJhcnJheVdpdGhSYW5nZTpOU01ha2VSYW5nZSgwLCBpbmNsdWRl
ZENoaWxkcmVuQ291bnQpXTsKKyAgICAgICAgICAgICAgICBpZiAoW3dpZGdldENoaWxkcmVuIGNv
dW50XSA+PSBjcml0ZXJpYS5yZXN1bHRzTGltaXQpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biByZW1vdGVGcmFtZUNoaWxkcmVuOworICAgICAgICAgICAgICAgIGNyaXRlcmlhLnJlc3VsdHNM
aW1pdCAtPSBbd2lkZ2V0Q2hpbGRyZW4gY291bnRdOworICAgICAgICAgICAgfQogICAgICAgICB9
CiAKICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yIHJlc3VsdHM7CkBAIC0zNjY5LDYgKzM3MTMsMTEgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBM
RU1FTlRBVElPTlNfRU5ECiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpZiAoW2F0dHJpYnV0ZSBp
c0VxdWFsVG9TdHJpbmc6a0FYQ29udmVydFJlbGF0aXZlRnJhbWVQYXJhbWV0ZXJpemVkQXR0cmli
dXRlXSkgeworICAgICAgICBhdXRvKiBwYXJlbnQgPSBiYWNraW5nT2JqZWN0LT5wYXJlbnRPYmpl
Y3QoKTsKKyAgICAgICAgcmV0dXJuIHBhcmVudCA/IFtOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6cGFy
ZW50LT5jb252ZXJ0RnJhbWVUb1NwYWNlKEZsb2F0UmVjdChyZWN0KSwgQWNjZXNzaWJpbGl0eUNv
bnZlcnNpb25TcGFjZTo6UGFnZSldIDogbmlsOworICAgIH0KKwogICAgIC8vIFRoZXJlIGFyZSBz
b21lIHBhcmFtZXRlcnMgdGhhdCBzdXBlciBoYW5kbGVzIHRoYXQgYXJlIG5vdCBleHBsaWNpdGx5
IHJldHVybmVkIGJ5IHRoZSBsaXN0IG9mIHRoZSBlbGVtZW50J3MgYXR0cmlidXRlcy4KICAgICAv
LyBJbiB0aGF0IGNhc2UgaXQgbXVzdCBiZSBwYXNzZWQgdG8gc3VwZXIuCiAgICAgcmV0dXJuIFtz
dXBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6YXR0cmlidXRlIGZvclBhcmFtZXRlcjpw
YXJhbWV0ZXJdOwpAQCAtMzcyMiw4ICszNzcxLDEwIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVN
RU5UQVRJT05TX0VORAogICAgICAgICBpZiAoIWNoaWxkKQogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyICpjaGlsZFdyYXBwZXIgPSBj
aGlsZC0+d3JhcHBlcigpOwotICAgICAgICBpZiAoY2hpbGRXcmFwcGVyID09IHRhcmdldENoaWxk
IHx8IChjaGlsZC0+aXNBdHRhY2htZW50KCkgJiYgW2NoaWxkV3JhcHBlciBhdHRhY2htZW50Vmll
d10gPT0gdGFyZ2V0Q2hpbGQpKQorICAgICAgICBpZiAoY2hpbGRXcmFwcGVyID09IHRhcmdldENo
aWxkIHx8IChjaGlsZC0+aXNBdHRhY2htZW50KCkgJiYgW2NoaWxkV3JhcHBlciBhdHRhY2htZW50
Vmlld10gPT0gdGFyZ2V0Q2hpbGQpCisgICAgICAgICAgICB8fCAoY2hpbGQtPmlzUmVtb3RlRnJh
bWUoKSAmJiBjaGlsZC0+cmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKSA9PSB0YXJnZXRDaGls
ZCkpIHsKICAgICAgICAgICAgIHJldHVybiBpOworICAgICAgICB9CiAgICAgfQogICAgIHJldHVy
biBOU05vdEZvdW5kOwogfQpAQCAtMzc0MCw3ICszNzkxLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfQkVHSU4KICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGVdKSB7CiAgICAgICAgIC8vIFRyZWUgaXRlbXMg
b2JqZWN0IHJldHVybnMgYSBkaWZmZXJlbnQgc2V0IG9mIGNoaWxkcmVuIHRoYW4gdGhvc2UgdGhh
dCBhcmUgaW4gY2hpbGRyZW4oKQogICAgICAgICAvLyBiZWNhdXNlIGFuIEFYT3V0bGluZSAodGhl
IG1hYyByb2xlIGlzIGJlY29tZXMpIGhhcyBzb21lIG9kZCBzdGlwdWxhdGlvbnMuCi0gICAgICAg
IGlmIChiYWNraW5nT2JqZWN0LT5pc1RyZWUoKSB8fCBiYWNraW5nT2JqZWN0LT5pc1RyZWVJdGVt
KCkpCisgICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc1RyZWUoKSB8fCBiYWNraW5nT2JqZWN0
LT5pc1RyZWVJdGVtKCkgfHwgYmFja2luZ09iamVjdC0+aXNSZW1vdGVGcmFtZSgpKQogICAgICAg
ICAgICAgcmV0dXJuIFtbc2VsZiBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGVdIGNvdW50XTsKIAogICAgICAgICBhdXRvIGNoaWxkcmVu
U2l6ZSA9IGJhY2tpbmdPYmplY3QtPmNoaWxkcmVuKCkuc2l6ZSgpOwpAQCAtMzc3NiwxNiArMzgy
Nyw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAgICAgaWYgKFthdHRy
aWJ1dGUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXSkg
ewogICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+Y2hpbGRyZW4oKS5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgICAgIE5TQXJyYXkgKmNoaWxkcmVuID0gbmlsOwotI2lmIEVOQUJMRShNT0RFTF9FTEVN
RU5UKQotICAgICAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzTW9kZWwoKSkgewotICAgICAg
ICAgICAgICAgIGNoaWxkcmVuID0gY3JlYXRlTlNBcnJheShiYWNraW5nT2JqZWN0LT5tb2RlbEVs
ZW1lbnRDaGlsZHJlbigpLCBbXSAoYXV0byYmIGNoaWxkKSAtPiBpZCB7Ci0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBjaGlsZC5nZXQoKTsKLSAgICAgICAgICAgICAgICB9KS5hdXRvcmVsZWFz
ZSgpOwotICAgICAgICAgICAgfSBlbHNlCi0jZW5kaWYKLSAgICAgICAgICAgICAgICBjaGlsZHJl
biA9IFtzZWxmIHJlbmRlcldpZGdldENoaWxkcmVuXTsKLSAgICAgICAgICAgIAorICAgICAgICAg
ICAgTlNBcnJheSAqY2hpbGRyZW4gPSBbc2VsZiBfdHJhbnNmb3JtU3BlY2lhbENoaWxkcmVuQ2Fz
ZXM6YmFja2luZ09iamVjdF07CiAgICAgICAgICAgICBpZiAoIWNoaWxkcmVuKQogICAgICAgICAg
ICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTM4MTYsOCArMzg1OCwxMyBAQCBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgICAgICAgICAgLy8gVGhlIGF0dGFjaG1lbnQgdmll
dyBzaG91bGQgYmUgcmV0dXJuZWQsIG90aGVyd2lzZSBBWCBwYWxpbmRyb21lIGVycm9ycyBvY2N1
ci4KICAgICAgICAgICAgIGlkIGF0dGFjaG1lbnRWaWV3ID0gbmlsOwotICAgICAgICAgICAgaWYg
KFt3cmFwcGVyIGlzS2luZE9mQ2xhc3M6W1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGNs
YXNzXV0gJiYgd3JhcHBlci5heEJhY2tpbmdPYmplY3QgJiYgd3JhcHBlci5heEJhY2tpbmdPYmpl
Y3QtPmlzQXR0YWNobWVudCgpKQotICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRWaWV3ID0gW3dy
YXBwZXIgYXR0YWNobWVudFZpZXddOworICAgICAgICAgICAgaWYgKFt3cmFwcGVyIGlzS2luZE9m
Q2xhc3M6W1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGNsYXNzXV0gJiYgd3JhcHBlci5h
eEJhY2tpbmdPYmplY3QpIHsKKyAgICAgICAgICAgICAgICBpZiAod3JhcHBlci5heEJhY2tpbmdP
YmplY3QtPmlzQXR0YWNobWVudCgpKQorICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50Vmll
dyA9IFt3cmFwcGVyIGF0dGFjaG1lbnRWaWV3XTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmICh3
cmFwcGVyLmF4QmFja2luZ09iamVjdC0+aXNSZW1vdGVGcmFtZSgpKQorICAgICAgICAgICAgICAg
ICAgICBhdHRhY2htZW50VmlldyA9IHdyYXBwZXIuYXhCYWNraW5nT2JqZWN0LT5yZW1vdGVGcmFt
ZVBsYXRmb3JtRWxlbWVudCgpLmdldCgpOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBb
c3ViYXJyYXkgYWRkT2JqZWN0OmF0dGFjaG1lbnRWaWV3ID8gYXR0YWNobWVudFZpZXcgOiB3cmFw
cGVyXTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1w
dHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmlu
ZGV4IDM5ZGMwYjhkNTgyMi4uYmRkMzkzZWE5YTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1w
dHlDbGllbnRzLmNwcApAQCAtMTA4MSw2ICsxMDgxLDExIEBAIFJlbW90ZUFYT2JqZWN0UmVmIEVt
cHR5RnJhbWVMb2FkZXJDbGllbnQ6OmFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKQogICAgIHJl
dHVybiBudWxscHRyOwogfQogCitJbnRQb2ludCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjphY2Nl
c3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKQoreworICAgIHJldHVybiB7IH07Cit9CisKICNp
ZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQogdm9pZCBFbXB0eUZyYW1lTG9h
ZGVyQ2xpZW50OjpzZXRBWElzb2xhdGVkVHJlZVJvb3QoV2ViQ29yZTo6QVhDb3JlT2JqZWN0KikK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCmlu
ZGV4IDA5OGNlNThkMTExOS4uNDY3MmRlMjk4NTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTE4NCw2ICsxODQsNyBAQCBwcml2YXRl
OgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmVtb3RlQVhPYmplY3RSZWYgYWNjZXNzaWJp
bGl0eVJlbW90ZU9iamVjdCgpIGZpbmFsOworICAgIEludFBvaW50IGFjY2Vzc2liaWxpdHlSZW1v
dGVGcmFtZU9mZnNldCgpIGZpbmFsOwogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVE
X1RSRUUpCiAgICAgdm9pZCBzZXRBWElzb2xhdGVkVHJlZVJvb3QoV2ViQ29yZTo6QVhDb3JlT2Jq
ZWN0KikgZmluYWw7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9M
b2NhbEZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9jYWxGcmFt
ZUxvYWRlckNsaWVudC5oCmluZGV4IGIyZDU2ZjA1MGFlOS4uMDBkM2FkNWUyY2MwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9jYWxGcmFtZUxvYWRlckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTI5MCw2
ICsyOTAsNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgLy8gQWxsb3cgYW4g
YWNjZXNzaWJpbGl0eSBvYmplY3QgdG8gcmV0cmlldmUgYSBGcmFtZSBwYXJlbnQgaWYgdGhlcmUn
cyBubyBQbGF0Zm9ybVdpZGdldC4KICAgICB2aXJ0dWFsIFJlbW90ZUFYT2JqZWN0UmVmIGFjY2Vz
c2liaWxpdHlSZW1vdGVPYmplY3QoKSA9IDA7CisgICAgdmlydHVhbCBJbnRQb2ludCBhY2Nlc3Np
YmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKSA9IDA7CiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlf
SVNPTEFURURfVFJFRSkKICAgICB2aXJ0dWFsIHZvaWQgc2V0QVhJc29sYXRlZFRyZWVSb290KEFY
Q29yZU9iamVjdCopID0gMDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggZjRkZGM1NTY5
YzVjLi44MDZlNzE3ZGUxNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMjIwMyw4ICsyMjAzLDE1
IEBAIGJvb2wgUGFnZTo6c2hvdWxkVXBkYXRlQWNjZXNzaWJpbGl0eVJlZ2lvbnMoKSBjb25zdAog
ICAgIEFTU0VSVChtX2xhc3RSZW5kZXJpbmdVcGRhdGVUaW1lc3RhbXAgPj0gbV9sYXN0QWNjZXNz
aWJpbGl0eU9iamVjdFJlZ2lvbnNVcGRhdGUpOwogICAgIGlmICgobV9sYXN0UmVuZGVyaW5nVXBk
YXRlVGltZXN0YW1wIC0gbV9sYXN0QWNjZXNzaWJpbGl0eU9iamVjdFJlZ2lvbnNVcGRhdGUpIDwg
dXBkYXRlSW50ZXJ2YWwpIHsKICAgICAgICAgLy8gV2UndmUgYWxyZWFkeSB1cGRhdGVkIGFjY2Vz
c2liaWxpdHkgb2JqZWN0IHJlY3RzIHJlY2VudGx5LCBzbyBza2lwIHRoaXMgdXBkYXRlIGFuZCBz
Y2hlZHVsZSBhbm90aGVyIGZvciBsYXRlci4KLSAgICAgICAgYXV0byogbG9jYWxNYWluRnJhbWUg
PSBkeW5hbWljRG93bmNhc3Q8TG9jYWxGcmFtZT4obWFpbkZyYW1lKCkpOwotICAgICAgICBSZWZQ
dHIgbWFpbkRvY3VtZW50ID0gbG9jYWxNYWluRnJhbWUgPyBsb2NhbE1haW5GcmFtZS0+ZG9jdW1l
bnQoKSA6IG51bGxwdHI7CisKKyAgICAgICAgUmVmUHRyPERvY3VtZW50PiBtYWluRG9jdW1lbnQg
PSBudWxscHRyOworICAgICAgICBpZiAoYXV0byogbG9jYWxNYWluRnJhbWUgPSBkeW5hbWljRG93
bmNhc3Q8TG9jYWxGcmFtZT4obWFpbkZyYW1lKCkpKQorICAgICAgICAgICAgbWFpbkRvY3VtZW50
ID0gbG9jYWxNYWluRnJhbWUgPyBsb2NhbE1haW5GcmFtZS0+ZG9jdW1lbnQoKSA6IG51bGxwdHI7
CisgICAgICAgIGVsc2UgaWYgKGF1dG8qIHJlbW90ZUZyYW1lID0gZHluYW1pY0Rvd25jYXN0PFJl
bW90ZUZyYW1lPihtYWluRnJhbWUoKSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBvd25lciA9
IHJlbW90ZUZyYW1lLT5vd25lckVsZW1lbnQoKSkKKyAgICAgICAgICAgICAgICBtYWluRG9jdW1l
bnQgPSAmKG93bmVyLT5kb2N1bWVudCgpKTsKKyAgICAgICAgfQorCiAgICAgICAgIC8vIElmIGFj
Y2Vzc2liaWxpdHkgaXMgZW5hYmxlZCBhbmQgd2UgaGF2ZSBhIG1haW4gZG9jdW1lbnQsIHRoYXQg
ZG9jdW1lbnQgc2hvdWxkIGhhdmUgYW4gQVggb2JqZWN0IGNhY2hlLgogICAgICAgICBBU1NFUlQo
IW1haW5Eb2N1bWVudCB8fCBtYWluRG9jdW1lbnQtPmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpKTsK
ICAgICAgICAgaWYgKENoZWNrZWRQdHIgdG9wQXhPYmplY3RDYWNoZSA9IG1haW5Eb2N1bWVudCA/
IG1haW5Eb2N1bWVudC0+ZXhpc3RpbmdBWE9iamVjdENhY2hlKCkgOiBudWxscHRyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1JlbW90ZUZyYW1lLmNwcAppbmRleCA3MTJjMGIyMjBmZDAuLjUwYjBhMjVjZmRiYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5jcHAKQEAgLTEwMCw2ICsxMDAsMjEgQEAgdm9p
ZCBSZW1vdGVGcmFtZTo6YnJvYWRjYXN0RnJhbWVSZW1vdmFsVG9PdGhlclByb2Nlc3NlcygpCiAg
ICAgbV9jbGllbnQtPmJyb2FkY2FzdEZyYW1lUmVtb3ZhbFRvT3RoZXJQcm9jZXNzZXMoKTsKIH0K
IAordm9pZCBSZW1vdGVGcmFtZTo6dXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0
KEludFBvaW50IG9mZnNldCkKK3sKKyAgICBtX2NsaWVudC0+dXBkYXRlUmVtb3RlRnJhbWVBY2Nl
c3NpYmlsaXR5T2Zmc2V0KGZyYW1lSUQoKSwgb2Zmc2V0KTsKK30KKwordm9pZCBSZW1vdGVGcmFt
ZTo6dW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIp
Cit7CisgICAgbV9jbGllbnQtPnVuYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMocHJvY2Vz
c0lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUZyYW1lOjpiaW5kUmVtb3RlQWNjZXNzaWJp
bGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90
PiBkYXRhVG9rZW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpzcGFuPGNvbnN0
IHVpbnQ4X3Q+LCBpbnQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHJldHVybiBtX2Ns
aWVudC0+YmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMocHJvY2Vzc0lkZW50aWZpZXIsIGZy
YW1lSUQoKSwgZGF0YVRva2VuLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIEZy
YW1lVmlldyogUmVtb3RlRnJhbWU6OnZpcnR1YWxWaWV3KCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV92aWV3LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFt
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5oCmluZGV4IDI3ZWQ4NDBkMDgy
ZS4uY2E3MmFmOGJjOTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZy
YW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5oCkBAIC0zMyw2ICsz
Myw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRGF0YVNlZ21lbnQ7CiBjbGFz
cyBSZW1vdGVET01XaW5kb3c7CiBjbGFzcyBSZW1vdGVGcmFtZUNsaWVudDsKIGNsYXNzIFJlbW90
ZUZyYW1lVmlldzsKQEAgLTYyLDYgKzYzLDkgQEAgcHVibGljOgogICAgIE1hcmthYmxlPExheWVy
SG9zdGluZ0NvbnRleHRJZGVudGlmaWVyPiBsYXllckhvc3RpbmdDb250ZXh0SWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJIb3N0aW5nQ29udGV4dElkZW50aWZpZXI7IH0KIAogICAg
IFN0cmluZyByZW5kZXJUcmVlQXNUZXh0KHNpemVfdCBiYXNlSW5kZW50LCBPcHRpb25TZXQ8UmVu
ZGVyQXNUZXh0RmxhZz4pOworICAgIHZvaWQgYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMo
aW50IHByb2Nlc3NJZGVudGlmaWVyLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBpbnQpPiYmKTsKKyAgICB2
b2lkIHVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChJbnRQb2ludCk7CisgICAg
dm9pZCB1bmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCk7CiAKIHByaXZhdGU6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgUmVtb3RlRnJhbWUoUGFnZSYsIFVuaXF1ZVJlZjxS
ZW1vdGVGcmFtZUNsaWVudD4mJiwgRnJhbWVJZGVudGlmaWVyLCBIVE1MRnJhbWVPd25lckVsZW1l
bnQqLCBGcmFtZSogcGFyZW50LCBNYXJrYWJsZTxMYXllckhvc3RpbmdDb250ZXh0SWRlbnRpZmll
cj4sIEZyYW1lKiBvcGVuZXIgPSBudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUmVtb3RlRnJhbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJh
bWVDbGllbnQuaAppbmRleCA0ZWZkMTAzZjM5MTIuLjU0MWEwZDAxYzU2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUmVtb3RlRnJhbWVDbGllbnQuaApAQCAtMzAsNiArMzAsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NsYXNzIERhdGFTZWdtZW50OwogY2xhc3MgRnJhbWVMb2FkUmVxdWVz
dDsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBTZWN1cml0eU9yaWdpbkRhdGE7CkBAIC00OCw2ICs0
OSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyByZW5kZXJUcmVlQXNUZXh0KHNpemVf
dCBiYXNlSW5kZW50LCBPcHRpb25TZXQ8UmVuZGVyQXNUZXh0RmxhZz4pID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgYnJvYWRjYXN0RnJhbWVSZW1vdmFsVG9PdGhlclByb2Nlc3NlcygpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgY2xvc2VQYWdlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBiaW5kUmVt
b3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIEZyYW1lSWRlbnRp
ZmllciB0YXJnZXQsIGNvbnN0IHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhVG9rZW4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBpbnQp
PiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0
eU9mZnNldChGcmFtZUlkZW50aWZpZXIgdGFyZ2V0LCBJbnRQb2ludCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCB1bmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBmb2N1cygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdW5mb2N1cygpID0gMDsK
ICAgICB2aXJ0dWFsIH5SZW1vdGVGcmFtZUNsaWVudCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UGFnZUNsaWVudC5oCmluZGV4IDQ4NzBkZDQ0MDAyZi4uN2JkMzYwZjE1YmRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9EcmFnQWN0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9yQ2xpZW50Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Gb2N1c0RpcmVjdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRnJh
bWVJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnB1dE1vZGUuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL01lZGlhQ29udHJvbHNDb250ZXh0TWVudUl0ZW0uaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1Njcm9sbFR5cGVzLmg+CkBAIC0zMTgsNyArMzE5LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBleGVjdXRlVW5kb1JlZG8oVW5kb09yUmVkbykgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCB3aGVlbEV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShjb25zdCBOYXRpdmVXZWJXaGVlbEV2
ZW50JikgPSAwOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3Np
YmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZl
ZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgcGlk
X3QpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgZXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2VsZWN0b3Io
Y29uc3QgU3RyaW5nJiBzZWxlY3RvcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTZWN1
cmVJbnB1dFN0YXRlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXNldFNlY3VyZUlucHV0U3Rh
dGUoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25h
bFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQ
cm94eS5jcHAKaW5kZXggYjM5OWFmMGI0ODRmLi5lZmQ3ZmQ0N2Y4MjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKQEAgLTU0Myw3ICs1
NDMsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpyZXF1ZXN0UGFzc3dvcmRGb3JRdWlj
a0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENP
Q09BKQotdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNz
aWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhKQordm9pZCBQcm92aXNp
b25hbFBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6
c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhLCBGcmFtZUlkZW50aWZpZXIpCiB7CiAgICAgbV9hY2Nl
c3NpYmlsaXR5VG9rZW4gPSBWZWN0b3IoZGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAppbmRleCAwM2Y1YzVhNDEzMjIuLmNiNWM2NDdj
MGI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdl
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94
eS5oCkBAIC0xNzEsNyArMTcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlcXVlc3RQYXNzd29y
ZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CiAjZW5kaWYKICNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICB2b2lkIHJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlU
b2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pOworICAgIHZvaWQgcmVnaXN0ZXJXZWJQcm9j
ZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0o
V1BFKQogICAgIHZvaWQgYmluZEFjY2Vzc2liaWxpdHlUcmVlKGNvbnN0IFN0cmluZyYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcAppbmRleCBmMmZjOGE1NGQ4ODMu
LjIzMDMwN2ExNzRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJh
bWVQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5j
cHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRl
ICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBhc3RlYm9hcmRQcm94eS5o
IgorI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQ
b29sLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIldlYnNpdGVQ
b2xpY2llc0RhdGEuaCIKQEAgLTE4NCw2ICsxODUsMTQgQEAgdm9pZCBXZWJGcmFtZVByb3h5Ojpu
YXZpZ2F0ZVNlcnZpY2VXb3JrZXJDbGllbnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4
dEkKICAgICB9KTsKIH0KIAordm9pZCBXZWJGcmFtZVByb3h5OjpiaW5kQWNjZXNzaWJpbGl0eUZy
YW1lV2l0aERhdGEoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCit7CisgICAgaWYgKCFt
X3BhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UHJvY2Vzczo6QmluZEFjY2Vzc2liaWxpdHlGcmFtZVdpdGhEYXRhKG1fZnJhbWVJRCwgZGF0YSkp
OworfQorCiB2b2lkIFdlYkZyYW1lUHJveHk6OmxvYWRVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgcmVmZXJyZXIpCiB7CiAgICAgaWYgKCFtX3BhZ2UpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJGcmFtZVByb3h5LmgKaW5kZXggYjBkYWViMGU2NGZjLi43MTViYjgwYmFiNjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKQEAgLTE3MCw2ICsxNzAsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdGVQcm9jZXNzRGlkVGVybWluYXRlKCk7CiAgICAgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gd2ViUGFnZUlESW5DdXJyZW50UHJv
Y2VzcygpOwogICAgIHZvaWQgbm90aWZ5UGFyZW50T2ZMb2FkQ29tcGxldGlvbihXZWJQcm9jZXNz
UHJveHkmKTsKKyAgICB2b2lkIHJlbW92ZVJlbW90ZVBhZ2VzRm9yU3VzcGVuc2lvbigpOworICAg
IHZvaWQgYmluZEFjY2Vzc2liaWxpdHlGcmFtZVdpdGhEYXRhKHN0ZDo6c3Bhbjxjb25zdCB1aW50
OF90Pik7CiAKICAgICBib29sIGlzRm9jdXNlZCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA1ZWIzNjcxZDM4OTYuLjRkNTAzZjdkMzQzNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMjkxLDggKzEy
OTEsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN3YXBUb1Byb3Zpc2lvbmFsUGFnZShzdGQ6OnVu
aXF1ZV9wdHI8UHJvdmlzaW9uYWxQYWdlUHJveHk+IHAKIAogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIGF1dG8gYWNjZXNzaWJpbGl0eVRva2VuID0gcHJvdmlzaW9uYWxQYWdlLT50YWtlQWNjZXNz
aWJpbGl0eVRva2VuKCk7Ci0gICAgaWYgKCFhY2Nlc3NpYmlsaXR5VG9rZW4uaXNFbXB0eSgpKQot
ICAgICAgICByZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oeyBhY2Nlc3NpYmls
aXR5VG9rZW4uZGF0YSgpLCBhY2Nlc3NpYmlsaXR5VG9rZW4uc2l6ZSgpIH0pOworICAgIGlmICgh
YWNjZXNzaWJpbGl0eVRva2VuLmlzRW1wdHkoKSkgeworICAgICAgICByZWdpc3RlcldlYlByb2Nl
c3NBY2Nlc3NpYmlsaXR5VG9rZW4oeyBhY2Nlc3NpYmlsaXR5VG9rZW4uZGF0YSgpLCBhY2Nlc3Np
YmlsaXR5VG9rZW4uc2l6ZSgpIH0sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciB7CisgICAgICAg
ICAgICBPYmplY3RJZGVudGlmaWVyPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllclR5cGU+KDApLAor
ICAgICAgICAgICAgT2JqZWN0SWRlbnRpZmllcjxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllclR5
cGU+KDApCisgICAgICAgIH0pOworICAgIH0KICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykgfHwg
UExBVEZPUk0oV1BFKQogICAgIGF1dG8gYWNjZXNzaWJpbGl0eVBsdWdJRCA9IHByb3Zpc2lvbmFs
UGFnZS0+YWNjZXNzaWJpbGl0eVBsdWdJRCgpOwpAQCAtMTM2OTIsNiArMTM2OTYsMjIgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmFkZENvbnNvbGVNZXNzYWdlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBNZXNzYWdlU291cmNlIG1lc3MKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25z
b2xlTWVzc2FnZSB7IGZyYW1lSUQsIG1lc3NhZ2VTb3VyY2UsIG1lc3NhZ2VMZXZlbCwgbWVzc2Fn
ZSwgY29yZUlkZW50aWZpZXIgfSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpiaW5kUmVtb3Rl
QWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YVRv
a2VuLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgaW50
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3lu
Y1RvUHJvY2Vzc0NvbnRhaW5pbmdGcmFtZShmcmFtZUlELCBNZXNzYWdlczo6V2ViUGFnZTo6Qmlu
ZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMocHJvY2Vzc0lkZW50aWZpZXIsIGZyYW1lSUQsIGRh
dGFUb2tlbikpOworICAgIGlmICghc2VuZFJlc3VsdC5zdWNjZWVkZWQoKSkKKyAgICAgICAgcmV0
dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgMCk7CisKKyAgICBhdXRvIFtmcmFtZURhdGFUb2tl
biwgZnJhbWVQcm9jZXNzSWRlbnRpZmllcl0gPSBzZW5kUmVzdWx0LnRha2VSZXBseSgpOworCisg
ICAgY29tcGxldGlvbkhhbmRsZXIoZnJhbWVEYXRhVG9rZW4sIGZyYW1lUHJvY2Vzc0lkZW50aWZp
ZXIpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmls
aXR5T2Zmc2V0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpJbnRQ
b2ludCBvZmZzZXQpCit7CisgICAgc2VuZFRvUHJvY2Vzc0NvbnRhaW5pbmdGcmFtZShmcmFtZUlE
LCBNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlUmVtb3RlUGFnZUFjY2Vzc2liaWxpdHlPZmZzZXQo
ZnJhbWVJRCwgb2Zmc2V0KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYg
V0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCmluZGV4IGE1ODE3NDk1YjdlMS4uMTcxNDFlOGRmNWUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTM0OSw3ICsxMzQ5LDcgQEAgcHVibGljOgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgLy8gQ2FsbGVkIGJ5IHRoZSB3ZWIgcHJvY2VzcyB0aHJvdWdo
IGEgbWVzc2FnZS4KLSAgICB2b2lkIHJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tl
bihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pOworICAgIHZvaWQgcmVnaXN0ZXJXZWJQcm9jZXNz
QWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyKTsKICAgICAvLyBDYWxsZWQgYnkgdGhlIFVJIHByb2Nlc3Mgd2hlbiBpdCBp
cyByZWFkeSB0byBzZW5kIGl0cyB0b2tlbnMgdG8gdGhlIHdlYiBwcm9jZXNzLgogICAgIHZvaWQg
cmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKHN0ZDo6c3Bhbjxjb25zdCB1aW50
OF90PiBlbGVtZW50VG9rZW4sIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiB3aW5kb3dUb2tlbik7
CiAgICAgdm9pZCByZXBsYWNlU2VsZWN0aW9uV2l0aFBhc3RlYm9hcmREYXRhKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiB0eXBlcywgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKQEAgLTI5NTgsNiAr
Mjk1OCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmb2N1c1JlbW90ZUZyYW1lKElQQzo6Q29ubmVj
dGlvbiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAgICAgdm9pZCBwb3N0TWVzc2FnZVRv
UmVtb3RlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBzb3VyY2UsIGNvbnN0IFN0cmluZyYgc291
cmNlT3JpZ2luLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgdGFyZ2V0LCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gdGFyZ2V0T3JpZ2luLCBjb25zdCBXZWJDb3Jl
OjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYpOwogICAgIHZvaWQgcmVuZGVyVHJlZUFzVGV4dChX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHNpemVfdCBiYXNlSW5kZW50LCBPcHRpb25TZXQ8V2Vi
Q29yZTo6UmVuZGVyQXNUZXh0RmxhZz4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYp
PiYmKTsKKyAgICB2b2lkIGJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNz
SWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBzdGQ6OnNwYW48Y29uc3QgdWlu
dDhfdD4gZGF0YVRva2VuLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6c3Bhbjxjb25zdCB1
aW50OF90PiwgaW50KT4mJik7CisgICAgdm9pZCB1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxp
dHlPZmZzZXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpJbnRQb2ludCk7CiAK
ICAgICB2b2lkIHNldFRleHRJbmRpY2F0b3JGcm9tRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyLCBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YSYmLCB1aW50NjRfdCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBkYzQ4
ZmFjNzE5ZTUuLjVlM2RjNWM2MWUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzIwLDcgKzMyMCw3IEBAIG1lc3NhZ2VzIC0+
IFdlYlBhZ2VQcm94eSB7CiAgICAgRXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2VsZWN0b3IoU3RyaW5n
IHNlbGVjdG9yKSAtPiAoYm9vbCBoYW5kbGVkKSBTeW5jaHJvbm91cwogCiAgICAgIyBSZW1vdGUg
YWNjZXNzaWJpbGl0eSBtZXNzYWdlcwotICAgIFJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxp
dHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSkKKyAgICBSZWdpc3RlcldlYlBy
b2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEsIFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogCiAgICAgIyBTcGVlY2ggbWVzc2FnZXMK
ICAgICBHZXRJc1NwZWFraW5nKCkgLT4gKGJvb2wgaXNTcGVha2luZykgU3luY2hyb25vdXMKQEAg
LTYyNiw0ICs2MjYsNiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIEZvY3VzUmVt
b3RlRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCiAgICAgUG9zdE1lc3Nh
Z2VUb1JlbW90ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgc291cmNlLCBTdHJpbmcgc291cmNl
T3JpZ2luLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgdGFyZ2V0LCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gdGFyZ2V0T3JpZ2luLCBzdHJ1Y3QgV2ViQ29yZTo6
TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMgbWVzc2FnZSkKICAgICBSZW5kZXJUcmVlQXNUZXh0KFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciBpZGVudGlmaWVyLCBzaXplX3QgYmFzZUluZGVudCwgT3B0
aW9uU2V0PFdlYkNvcmU6OlJlbmRlckFzVGV4dEZsYWc+IGJlaGF2aW9yKSAtPiAoU3RyaW5nIHJl
bmRlclRyZWVEdW1wKSBTeW5jaHJvbm91cworICAgIEJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJh
bWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhVG9rZW4pIC0+IChzdGQ6OnNwYW48Y29u
c3QgdWludDhfdD4gdG9rZW4sIGludCBwcm9jZXNzSWRlbnRpZmllcikgU3luY2hyb25vdXMKKyAg
ICBVcGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OkludFBvaW50IG9mZnNldCkKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggMTBjNGY2YWUx
MjUwLi42Mzg4Y2I0NjcyYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5oCkBAIC0xMTAsNyArMTEwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGNsZWFyQWxsRWRpdENvbW1hbmRzKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBjYW5VbmRvUmVkbyhV
bmRvT3JSZWRvKSBvdmVycmlkZTsKICAgICB2b2lkIGV4ZWN1dGVVbmRvUmVkbyhVbmRvT3JSZWRv
KSBvdmVycmlkZTsKLSAgICB2b2lkIGFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZl
ZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pIG92ZXJyaWRlOworICAgIHZvaWQgYWNjZXNzaWJp
bGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyLCBwaWRfdCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBleGVjdXRl
U2F2ZWRDb21tYW5kQnlTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9yKSBvdmVycmlkZTsK
ICAgICB2b2lkIHVwZGF0ZVNlY3VyZUlucHV0U3RhdGUoKSBvdmVycmlkZTsKICAgICB2b2lkIHJl
c2V0U2VjdXJlSW5wdXRTdGF0ZSgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IGNiMjNmNDk3NGE2Yi4uYjVhZGRk
Y2UyM2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLm1tCkBAIC0zODksNyArMzg5LDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZXhlY3V0
ZVVuZG9SZWRvKFVuZG9PclJlZG8gdW5kb09yUmVkbykKICAgICByZXR1cm4gKHVuZG9PclJlZG8g
PT0gVW5kb09yUmVkbzo6VW5kbykgPyBbW2NvbnRlbnRWaWV3KCkgdW5kb01hbmFnZXJdIHVuZG9d
IDogW1tjb250ZW50VmlldygpIHVuZG9NYW5hZ2VyXSByZWRvXTsKIH0KIAotdm9pZCBQYWdlQ2xp
ZW50SW1wbDo6YWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKHN0ZDo6c3Bhbjxj
b25zdCB1aW50OF90PiBkYXRhKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6YWNjZXNzaWJpbGl0eVdl
YlByb2Nlc3NUb2tlblJlY2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhLCBXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIHBpZF90KQogewogICAgIE5TRGF0YSAqcmVtb3RlVG9rZW4g
PSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5kYXRhKCkgbGVuZ3RoOmRhdGEuc2l6ZSgpXTsK
ICAgICBbY29udGVudFZpZXcoKSBfc2V0QWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlbjpyZW1v
dGVUb2tlbl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbQppbmRleCA2MGJmNzkwZDdjYWQuLjI5ZTJkOGY5OThkMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC03NjIsOSArNzYyLDkgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChib29sKQogICAg
IG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZWdpc3RlcldlYlBy
b2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCit2
b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0
ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKIHsK
LSAgICBwcm90ZWN0ZWRQYWdlQ2xpZW50KCktPmFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5S
ZWNlaXZlZChkYXRhKTsKKyAgICBwYWdlQ2xpZW50KCkuYWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NU
b2tlblJlY2VpdmVkKGRhdGEsIGZyYW1lSUQpOwogfSAgICAKIAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCmluZGV4IGQwYjBjOWZmYjkyNi4u
OGUwZjljMzAyNTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGxNYWMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGxNYWMuaApAQCAtMTc2LDcgKzE3Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXN0
dXJlRXZlbnRXYXNOb3RIYW5kbGVkQnlXZWJDb3JlKGNvbnN0IE5hdGl2ZVdlYkdlc3R1cmVFdmVu
dCYpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSAgICB2b2lkIGFjY2Vzc2liaWxpdHlXZWJQcm9jZXNz
VG9rZW5SZWNlaXZlZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pIG92ZXJyaWRlOworICAgIHZv
aWQgYWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1
aW50OF90PiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBwaWRfdCkgb3ZlcnJpZGU7CiAKICAg
ICB2b2lkIG1ha2VGaXJzdFJlc3BvbmRlcigpIG92ZXJyaWRlOwogICAgIHZvaWQgYXNzaXN0aXZl
VGVjaG5vbG9neU1ha2VGaXJzdFJlc3BvbmRlcigpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCmluZGV4IGVjNTk4NjQ3Yzdj
NC4uYTZjNWNhNDAwNDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
UGFnZUNsaWVudEltcGxNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1Bh
Z2VDbGllbnRJbXBsTWFjLm1tCkBAIC01ODEsOSArNTgxLDkgQEAgdm9pZCBQYWdlQ2xpZW50SW1w
bDo6c2V0VGV4dEluZGljYXRvckFuaW1hdGlvblByb2dyZXNzKGZsb2F0IHByb2dyZXNzKQogICAg
IG1faW1wbC0+c2V0VGV4dEluZGljYXRvckFuaW1hdGlvblByb2dyZXNzKHByb2dyZXNzKTsKIH0K
IAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6YWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2Vp
dmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6
YWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50
OF90PiBkYXRhLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgcGlkX3QgcGlkKQog
ewotICAgIG1faW1wbC0+c2V0QWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlbihbTlNEYXRhIGRh
dGFXaXRoQnl0ZXM6ZGF0YS5kYXRhKCkgbGVuZ3RoOmRhdGEuc2l6ZSgpXSk7CisgICAgbV9pbXBs
LT5zZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuKFtOU0RhdGEgZGF0YVdpdGhCeXRlczpk
YXRhLmRhdGEoKSBsZW5ndGg6ZGF0YS5zaXplKCldLCBmcmFtZUlELCBwaWQpOwogfQogICAgIAog
dm9pZCBQYWdlQ2xpZW50SW1wbDo6ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25z
dCBMYXllclRyZWVDb250ZXh0JiBsYXllclRyZWVDb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggY2ZiMTBmZGJiNDEzLi44Njk2
MTdhMjlkOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94
eU1hYy5tbQpAQCAtMzA2LDEyICszMDYsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZv
cm1EaWN0aW9uYXJ5TG9va3VwKGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8mIGRpY3Rpb24KICAg
ICBwcm90ZWN0ZWRQYWdlQ2xpZW50KCktPmRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKGRpY3Rp
b25hcnlQb3B1cEluZm8pOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9j
ZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhKQordm9p
ZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6
OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCiB7CiAg
ICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAg
cHJvdGVjdGVkUGFnZUNsaWVudCgpLT5hY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2
ZWQoZGF0YSk7CisgICAgcHJvdGVjdGVkUGFnZUNsaWVudCgpLT5hY2Nlc3NpYmlsaXR5V2ViUHJv
Y2Vzc1Rva2VuUmVjZWl2ZWQoZGF0YSwgZnJhbWVJRCwgbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24o
KS0+cmVtb3RlUHJvY2Vzc0lEKCkpOwogfSAgICAKIAogdm9pZCBXZWJQYWdlUHJveHk6Om1ha2VG
aXJzdFJlc3BvbmRlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3SW1wbC5o
CmluZGV4IDgwNTU1ZmY2NTJjYS4uNDFmMjM4Y2MxNTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvV2ViVmlld0ltcGwuaApAQCAtNDQ4LDcgKzQ0OCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldElnbm9yZXNNb3VzZURyYWdnZWRFdmVudHMoYm9vbCk7CiAgICAgYm9vbCBpZ25vcmVz
TW91c2VEcmFnZ2VkRXZlbnRzKCkgY29uc3QgeyByZXR1cm4gbV9pZ25vcmVzTW91c2VEcmFnZ2Vk
RXZlbnRzOyB9CiAKLSAgICB2b2lkIHNldEFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW4oTlNE
YXRhICopOworICAgIHZvaWQgc2V0QWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlbihOU0RhdGEg
KiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBwaWRfdCk7CiAgICAgdm9pZCBhY2Nlc3NpYmls
aXR5UmVnaXN0ZXJVSVByb2Nlc3NUb2tlbnMoKTsKICAgICB2b2lkIHVwZGF0ZVJlbW90ZUFjY2Vz
c2liaWxpdHlSZWdpc3RyYXRpb24oYm9vbCByZWdpc3RlclByb2Nlc3MpOwogICAgIGlkIGFjY2Vz
c2liaWxpdHlGb2N1c2VkVUlFbGVtZW50KCk7CkBAIC05MDQsNiArOTA0LDcgQEAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgYm9vbCBtX2FsbG93c01hZ25pZmljYXRpb24g
eyBmYWxzZSB9OwogCiAgICAgUmV0YWluUHRyPE5TQWNjZXNzaWJpbGl0eVJlbW90ZVVJRWxlbWVu
dD4gbV9yZW1vdGVBY2Nlc3NpYmlsaXR5Q2hpbGQ7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZURp
Y3Rpb25hcnk+IG1fcmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lQ2FjaGU7CiAKICAgICBSZWZQdHI8
V2ViQ29yZTo6SW1hZ2U+IG1fcHJvbWlzZWRJbWFnZTsKICAgICBTdHJpbmcgbV9wcm9taXNlZEZp
bGVuYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJ
bXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJbXBsLm1tCmluZGV4
IDAyMzVhYTIyZTNjMS4uMGNmNTM2YzI4M2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dlYlZpZXdJbXBsLm1tCkBAIC0zNDc2LDEwICszNDc2LDEyIEBAIHZvaWQgV2ViVmlld0lt
cGw6OnNldElnbm9yZXNNb3VzZURyYWdnZWRFdmVudHMoYm9vbCBpZ25vcmVzTW91c2VEcmFnZ2Vk
RXZlbnRzKQogICAgIG1faWdub3Jlc01vdXNlRHJhZ2dlZEV2ZW50cyA9IGlnbm9yZXNNb3VzZURy
YWdnZWRFdmVudHM7CiB9CiAKLXZvaWQgV2ViVmlld0ltcGw6OnNldEFjY2Vzc2liaWxpdHlXZWJQ
cm9jZXNzVG9rZW4oTlNEYXRhICpkYXRhKQordm9pZCBXZWJWaWV3SW1wbDo6c2V0QWNjZXNzaWJp
bGl0eVdlYlByb2Nlc3NUb2tlbihOU0RhdGEgKmRhdGEsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBwaWRfdCBwaWQpCiB7Ci0gICAgbV9yZW1vdGVBY2Nlc3NpYmlsaXR5Q2hpbGQg
PSBkYXRhLmxlbmd0aCA/IGFkb3B0TlMoW1tOU0FjY2Vzc2liaWxpdHlSZW1vdGVVSUVsZW1lbnQg
YWxsb2NdIGluaXRXaXRoUmVtb3RlVG9rZW46ZGF0YV0pIDogbmlsOwotICAgIHVwZGF0ZVJlbW90
ZUFjY2Vzc2liaWxpdHlSZWdpc3RyYXRpb24odHJ1ZSk7CisgICAgaWYgKHBpZCA9PSBtX3BhZ2Ut
PnByb2Nlc3MoKS5wcm9jZXNzSUQoKSkgeworICAgICAgICBtX3JlbW90ZUFjY2Vzc2liaWxpdHlD
aGlsZCA9IGRhdGEubGVuZ3RoID8gYWRvcHROUyhbW05TQWNjZXNzaWJpbGl0eVJlbW90ZVVJRWxl
bWVudCBhbGxvY10gaW5pdFdpdGhSZW1vdGVUb2tlbjpkYXRhXSkgOiBuaWw7CisgICAgICAgIHVw
ZGF0ZVJlbW90ZUFjY2Vzc2liaWxpdHlSZWdpc3RyYXRpb24odHJ1ZSk7CisgICAgfQogfQogCiB2
b2lkIFdlYlZpZXdJbXBsOjp1cGRhdGVSZW1vdGVBY2Nlc3NpYmlsaXR5UmVnaXN0cmF0aW9uKGJv
b2wgcmVnaXN0ZXJQcm9jZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCmluZGV4IDdkMmE0MjY1ZmQ1Yy4uZjNmNzNmMzY3ZWFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkxv
Y2FsRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xODA3LDYgKzE4MDcsMTIgQEAgdm9pZCBXZWJM
b2NhbEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9y
RE9NV2luZG93RXh0ZW4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIAorV2ViQ29yZTo6SW50
UG9pbnQgV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudDo6YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1l
T2Zmc2V0KCkKK3sKKyAgICBSZWZQdHIgd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBy
ZXR1cm4gd2ViUGFnZSA/IHdlYlBhZ2UtPmFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCgp
IDogSW50UG9pbnQoKTsKK30KKwogUmVtb3RlQVhPYmplY3RSZWYgV2ViTG9jYWxGcmFtZUxvYWRl
ckNsaWVudDo6YWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpCiB7CiAgICAgUmVmUHRyIHdlYlBh
Z2UgPSBtX2ZyYW1lLT5wYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQu
aAppbmRleCA4OGM4Y2M1Y2I3MmUuLjlmM2I2N2YwZmNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxG
cmFtZUxvYWRlckNsaWVudC5oCkBAIC0yNDAsNiArMjQwLDcgQEAgcHJpdmF0ZToKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIFJlbW90ZUFYT2JqZWN0UmVmIGFjY2Vzc2liaWxpdHlSZW1vdGVP
YmplY3QoKSBmaW5hbDsKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBhY2Nlc3NpYmlsaXR5UmVtb3Rl
RnJhbWVPZmZzZXQoKSBmaW5hbDsKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9U
UkVFKQogICAgIHZvaWQgc2V0QVhJc29sYXRlZFRyZWVSb290KFdlYkNvcmU6OkFYQ29yZU9iamVj
dCopIGZpbmFsOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90ZUZyYW1lQ2xpZW50LmNwcAppbmRleCA4
Y2JmZjJjOWI4YzkuLmEyZjA5NDhkNDMxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90ZUZyYW1lQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQu
Y3BwCkBAIC05Niw2ICs5NiwzOCBAQCBTdHJpbmcgV2ViUmVtb3RlRnJhbWVDbGllbnQ6OnJlbmRl
clRyZWVBc1RleHQoc2l6ZV90IGJhc2VJbmRlbnQsIE9wdGlvblNldDxSZW5kZQogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKK3ZvaWQgV2ViUmVtb3RlRnJhbWVDbGllbnQ6OnVuYmluZFJlbW90ZUFj
Y2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyKQoreworICAgIC8vIE1ha2Ug
c3VyZSBBcHBLaXQgc3lzdGVtIGtub3dzIGFib3V0IG91ciByZW1vdGUgVUkgcHJvY2VzcyBzdGF0
dXMgbm93LgorICAgIGlmIChSZWZQdHIgcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAg
cGFnZS0+YWNjZXNzaWJpbGl0eU1hbmFnZVJlbW90ZUVsZW1lbnRTdGF0dXMoZmFsc2UsIHByb2Nl
c3NJZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJSZW1vdGVGcmFtZUNsaWVudDo6dXBkYXRlUmVt
b3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBXZWJDb3JlOjpJbnRQb2ludCBvZmZzZXQpCit7CisgICAgaWYgKFJlZlB0ciBwYWdlID0g
bV9mcmFtZS0+cGFnZSgpKQorICAgICAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChmcmFtZUlELCBvZmZzZXQp
KTsKK30KKwordm9pZCBXZWJSZW1vdGVGcmFtZUNsaWVudDo6YmluZFJlbW90ZUFjY2Vzc2liaWxp
dHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgY29uc3Qgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGFUb2tlbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIGludCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgUmVmUHRyIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAg
aWYgKCFwYWdlKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6c3Bhbjxjb25zdCB1
aW50OF90PiB7IH0sIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBzZW5k
UmVzdWx0ID0gcGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmluZFJlbW90
ZUFjY2Vzc2liaWxpdHlGcmFtZXMocHJvY2Vzc0lkZW50aWZpZXIsIGZyYW1lSUQsIGRhdGFUb2tl
bikpOworICAgIGlmICghc2VuZFJlc3VsdC5zdWNjZWVkZWQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXV0byBbcmVzdWx0VG9rZW4sIHByb2Nlc3NJZGVudGlmaWVyUmVzdWx0XSA9IHNlbmRS
ZXN1bHQudGFrZVJlcGx5KCk7CisKKyAgICAvLyBNYWtlIHN1cmUgQXBwS2l0IHN5c3RlbSBrbm93
cyBhYm91dCBvdXIgcmVtb3RlIFVJIHByb2Nlc3Mgc3RhdHVzIG5vdy4KKyAgICBwYWdlLT5hY2Nl
c3NpYmlsaXR5TWFuYWdlUmVtb3RlRWxlbWVudFN0YXR1cyh0cnVlLCBwcm9jZXNzSWRlbnRpZmll
clJlc3VsdCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0VG9rZW4sIHByb2Nlc3NJZGVu
dGlmaWVyUmVzdWx0KTsKK30KKwogdm9pZCBXZWJSZW1vdGVGcmFtZUNsaWVudDo6YnJvYWRjYXN0
RnJhbWVSZW1vdmFsVG9PdGhlclByb2Nlc3NlcygpCiB7CiAgICAgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmJyb2FkY2FzdEZyYW1lUmVtb3ZhbFRvT3RoZXJQcm9jZXNzZXMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90
ZUZyYW1lQ2xpZW50LmgKaW5kZXggNjI2ZTA1YzNlODhiLi5jODg5ZWI3ZTVmYWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFt
ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJSZW1vdGVGcmFtZUNsaWVudC5oCkBAIC00OCw2ICs0OCwxMCBAQCBwcml2YXRlOgogICAgIHZv
aWQgcG9zdE1lc3NhZ2VUb1JlbW90ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgc291cmNlLCBj
b25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHRhcmdl
dCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IHRhcmdldE9yaWdp
biwgY29uc3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmKSBmaW5hbDsKICAgICB2
b2lkIGNoYW5nZUxvY2F0aW9uKFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3QmJikgZmluYWw7CiAg
ICAgU3RyaW5nIHJlbmRlclRyZWVBc1RleHQoc2l6ZV90IGJhc2VJbmRlbnQsIE9wdGlvblNldDxX
ZWJDb3JlOjpSZW5kZXJBc1RleHRGbGFnPikgZmluYWw7CisgICAgdm9pZCBiaW5kUmVtb3RlQWNj
ZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgaW50KT4mJikgZmluYWw7CisgICAgdm9pZCB1bmJp
bmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCkgZmluYWw7CisgICAgdm9pZCB1cGRhdGVS
ZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBX
ZWJDb3JlOjpJbnRQb2ludCkgZmluYWw7CisKICAgICB2b2lkIGJyb2FkY2FzdEZyYW1lUmVtb3Zh
bFRvT3RoZXJQcm9jZXNzZXMoKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlUGFnZSgpIGZpbmFsOwog
ICAgIHZvaWQgZm9jdXMoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQppbmRleCAzODkxZDQ3ZGNiZjMuLmYz
NmU2NTg4NDgyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29jb2EvV2ViUGFnZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQpAQCAtNzcsNiArNzcsNyBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9VVElSZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9VVElVdGlsaXRpZXMuaD4KICNp
bXBvcnQgPHBhbC9zcGkvY29jb2EvTGF1bmNoU2VydmljZXNTUEkuaD4KKyNpbXBvcnQgPHBhbC9z
cGkvY29jb2EvTlNBY2Nlc3NpYmlsaXR5U1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1
YXJ0ekNvcmVTUEkuaD4KICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaD4KIApA
QCAtNDA3LDEwICs0MDgsNDYgQEAgdm9pZCBXZWJQYWdlOjpjbGVhckRpY3RhdGlvbkFsdGVybmF0
aXZlcyhWZWN0b3I8RGljdGF0aW9uQ29udGV4dD4mJiBjb250ZXh0cykKICAgICB9LCBEb2N1bWVu
dE1hcmtlcjo6VHlwZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKIH0KIAotdm9pZCBXZWJQYWdl
OjphY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tlbihSZXRhaW5QdHI8TlNEYXRhPiByZW1v
dGVUb2tlbikKK3ZvaWQgV2ViUGFnZTo6YWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4o
UmV0YWluUHRyPE5TRGF0YT4gcmVtb3RlVG9rZW4sIEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQog
ewogICAgIHN0ZDo6c3BhbiBkYXRhVG9rZW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4oW3JlbW90ZVRva2VuIGJ5dGVzXSksIFtyZW1vdGVUb2tlbiBsZW5ndGhdKTsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlU
b2tlbihkYXRhVG9rZW4pKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlZ2lz
dGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihkYXRhVG9rZW4sIGZyYW1lSUQpKTsKK30K
Kwordm9pZCBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5TWFuYWdlUmVtb3RlRWxlbWVudFN0YXR1cyhi
b29sIHJlZ2lzdGVyU3RhdHVzLCBpbnQgcHJvY2Vzc0lkZW50aWZpZXIpCit7CisgICAgaWYgKHJl
Z2lzdGVyU3RhdHVzKQorICAgICAgICBbTlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlFbGVtZW50IHJl
Z2lzdGVyUmVtb3RlVUlQcm9jZXNzSWRlbnRpZmllcjpwcm9jZXNzSWRlbnRpZmllcl07CisgICAg
ZWxzZQorICAgICAgICBbTlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlFbGVtZW50IHVucmVnaXN0ZXJS
ZW1vdGVVSVByb2Nlc3NJZGVudGlmaWVyOnByb2Nlc3NJZGVudGlmaWVyXTsKK30KKwordm9pZCBX
ZWJQYWdlOjpiaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZp
ZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdGQ6OnNwYW48Y29uc3QgdWlu
dDhfdD4gZGF0YVRva2VuLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6c3Bhbjxjb25zdCB1
aW50OF90PiwgaW50KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBSZWZQdHIgd2ViRnJh
bWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKTsKKyAgICBpZiAo
IXdlYkZyYW1lKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9LCAwKTsKKyAgICB9CisKKyAgICBSZWZQdHIgY29yZUxv
Y2FsRnJhbWUgPSB3ZWJGcmFtZS0+Y29yZUxvY2FsRnJhbWUoKTsKKyAgICBpZiAoIWNvcmVMb2Nh
bEZyYW1lKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoeyB9LCAwKTsKKyAgICB9CisKKyAgICBhdXRvKiByZW5kZXJlciA9
IGNvcmVMb2NhbEZyYW1lLT5jb250ZW50UmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKSB7
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIoeyB9LCAwKTsKKyAgICB9CisKKyAgICByZWdpc3RlclJlbW90ZUZyYW1lQWNjZXNz
aWJpbGl0eVRva2Vucyhwcm9jZXNzSWRlbnRpZmllciwgZGF0YVRva2VuKTsKKworICAgIC8vIEdl
dCBvdXIgcmVtb3RlIHRva2VuIGRhdGEgYW5kIHNlbmQgYmFjayB0byB0aGUgUmVtb3RlRnJhbWUu
CisgICAgYXV0byByZW1vdGVUb2tlbiA9IGFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKTsK
KyAgICBzdGQ6OnNwYW4gcmVtb3RlRGF0YVRva2VuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KFtyZW1vdGVUb2tlbiBieXRlc10pLCBbcmVtb3RlVG9rZW4gbGVuZ3RoXSk7CisgICAg
Y29tcGxldGlvbkhhbmRsZXIocmVtb3RlRGF0YVRva2VuLCBnZXRwaWQoKSk7CiB9CiAKICNpZiBF
TkFCTEUoQVBQTEVfUEFZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCmluZGV4IDZlNzZmYjAxYmE5Zi4uMjM4YWM0ODc4ZmZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC02NzAsNiArNjcwLDEwIEBAIHB1YmxpYzoK
ICAgICB2b2lkIGNsZWFySGlzdG9yeSgpOwogCiAgICAgdm9pZCBhY2Nlc3NpYmlsaXR5U2V0dGlu
Z3NEaWRDaGFuZ2UoKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIGFjY2Vzc2liaWxp
dHlNYW5hZ2VSZW1vdGVFbGVtZW50U3RhdHVzKGJvb2wsIGludCk7CisjZW5kaWYKKwogICAgIHZv
aWQgc2NyZWVuUHJvcGVydGllc0RpZENoYW5nZSgpOwogCiAgICAgdm9pZCBzY2FsZVBhZ2UoZG91
YmxlIHNjYWxlLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgb3JpZ2luKTsKQEAgLTEwNDIsNyAr
MTA0NiwxMSBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBwbGF0Zm9y
bUluaXRpYWxpemVBY2Nlc3NpYmlsaXR5KCk7CiAgICAgdm9pZCByZWdpc3RlclVJUHJvY2Vzc0Fj
Y2Vzc2liaWxpdHlUb2tlbnMoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGVsZW1lbnRUb2tlbiwg
c3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHdpbmRvd1Rva2VuKTsKKyAgICB2b2lkIHJlZ2lzdGVy
UmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5VG9rZW5zKHBpZF90LCBzdGQ6OnNwYW48Y29uc3QgdWlu
dDhfdD4pOwogICAgIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QqIGFjY2Vzc2liaWxpdHlS
ZW1vdGVPYmplY3QoKTsKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBhY2Nlc3NpYmlsaXR5UmVtb3Rl
RnJhbWVPZmZzZXQoKTsKKyAgICB2b2lkIGNyZWF0ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudChw
aWRfdCk7CisgICAgdm9pZCB1cGRhdGVSZW1vdGVQYWdlQWNjZXNzaWJpbGl0eU9mZnNldChXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OkludFBvaW50KTsKICNpZiBFTkFCTEUoQUND
RVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQogICAgIHZvaWQgY2FjaGVBWFBvc2l0aW9uKGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKICAgICB2b2lkIGNhY2hlQVhTaXplKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmKTsKQEAgLTIwODksNyArMjA5Nyw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgdm9pZCByZXF1ZXN0QWN0aXZlTm93UGxheWluZ1Nlc3Npb25JbmZvKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwgV2ViQ29yZTo6Tm93UGxheWluZ0luZm8mJik+JiYp
OwogICAgIFJldGFpblB0cjxOU0RhdGE+IGFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSBj
b25zdDsKLSAgICB2b2lkIGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKFJldGFpblB0
cjxOU0RhdGE+KTsKKyAgICB2b2lkIGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKFJl
dGFpblB0cjxOU0RhdGE+LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogI2VuZGlmCiAKICAg
ICB2b2lkIHNldFNob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cyhib29sIGRpc3BhdGNo
KSB7IG1fc2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzID0gZGlzcGF0Y2g7IH0KQEAg
LTIxOTUsNiArMjIwMyw5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJlbW90ZVBvc3RNZXNzYWdl
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBzb3VyY2UsIGNvbnN0IFN0cmluZyYgc291cmNlT3Jp
Z2luLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgdGFyZ2V0LCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJiB0YXJnZXRPcmlnaW4sIGNvbnN0IFdlYkNvcmU6Ok1l
c3NhZ2VXaXRoTWVzc2FnZVBvcnRzJik7CiAgICAgdm9pZCByZW5kZXJUcmVlQXNUZXh0KFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciwgc2l6ZV90IGJhc2VJbmRlbnQsIE9wdGlvblNldDxXZWJDb3Jl
OjpSZW5kZXJBc1RleHRGbGFnPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYp
OworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlG
cmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHN0
ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6OnNwYW48
Y29uc3QgdWludDhfdD4sIGludCk+JiYpOworI2VuZGlmCiAKICAgICB2b2lkIHJlcXVlc3RUZXh0
RXh0cmFjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4mJiBjb2xsZWN0aW9u
UmVjdEluUm9vdFZpZXcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6VGV4dEV4dHJh
Y3Rpb246Okl0ZW0mJik+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBlNTJlZjAxNTAwMzMuLjI2YzE4ODE1
OGY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCkBAIC00OTIsNiArNDkyLDkgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0
aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5
cGUKICAgICBXaW5kb3dBbmRWaWV3RnJhbWVzQ2hhbmdlZChzdHJ1Y3QgV2ViS2l0OjpWaWV3V2lu
ZG93Q29vcmRpbmF0ZXMgY29vcmRpbmF0ZXMpCiAgICAgU2V0TWFpbkZyYW1lSXNTY3JvbGxhYmxl
KGJvb2wgaXNTY3JvbGxhYmxlKQogICAgIFJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRv
a2VucyhzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZWxlbWVudFRva2VuLCBzdGQ6OnNwYW48Y29u
c3QgdWludDhfdD4gd2luZG93VG9rZW4pCisgICAgQmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFt
ZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGFUb2tlbikgLT4gKHN0ZDo6c3Bhbjxjb25z
dCB1aW50OF90PiB0b2tlbiwgaW50IHByb2Nlc3NJZGVudGlmaWVyKSBTeW5jaHJvbm91cworICAg
IFVwZGF0ZVJlbW90ZVBhZ2VBY2Nlc3NpYmlsaXR5T2Zmc2V0KFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBXZWJDb3JlOjpJbnRQb2ludCBvZmZzZXQpOworCiAgICAgR2V0U3RyaW5n
U2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpIC0+IChTdHJpbmcgc3RyaW5nVmFsdWUpIFN5bmNocm9u
b3VzCiAgICAgR2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoU3RyaW5nIHBhc3RlYm9hcmRU
eXBlKSAtPiAoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyKSBTeW5jaHJvbm91
cwogICAgIFJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChTdHJpbmcgcGFzdGVib2FyZE5hbWUp
IC0+IChib29sIHJlc3VsdCkgU3luY2hyb25vdXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggYTdmZDcyMzEyN2MwLi4xMGQ5
ODhhMzVjOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lv
cy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lv
cy9XZWJQYWdlSU9TLm1tCkBAIC0yNDMsMTIgKzI0MywxNCBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRm
b3JtSW5pdGlhbGl6ZUFjY2Vzc2liaWxpdHkoKQogICAgIG1fbW9ja0FjY2Vzc2liaWxpdHlFbGVt
ZW50ID0gYWRvcHROUyhbW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QgYWxsb2NdIGluaXRd
KTsKICAgICBbbV9tb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgc2V0V2ViUGFnZTp0aGlzXTsKIAot
ICAgIGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKGFjY2Vzc2liaWxpdHlSZW1vdGVU
b2tlbkRhdGEoKSk7CisgICAgUmVmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tl
bihhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCksIGZyYW1lLmZyYW1lSUQoKSk7CiB9CiAK
IHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1SZWluaXRpYWxpemUoKQogewotICAgIGFjY2Vzc2liaWxp
dHlUcmFuc2ZlclJlbW90ZVRva2VuKGFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSk7Cisg
ICAgUmVmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJh
bWUoKTsKKyAgICBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tlbihhY2Nlc3NpYmlsaXR5
UmVtb3RlVG9rZW5EYXRhKCksIGZyYW1lLmZyYW1lSUQoKSk7CiB9CiAKIFJldGFpblB0cjxOU0Rh
dGE+IFdlYlBhZ2U6OmFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSBjb25zdApAQCAtNjYy
LDYgKzY2NCwxMiBAQCB2b2lkIFdlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KGNvbnN0IFN0cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZAogICAgIGNvbXBsZXRpb25IYW5k
bGVyKHsgfSk7CiB9CiAKK1dlYkNvcmU6OkludFBvaW50IFdlYlBhZ2U6OmFjY2Vzc2liaWxpdHlS
ZW1vdGVGcmFtZU9mZnNldCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
eyB9OworfQorCiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0KiBXZWJQYWdlOjphY2Nlc3Np
YmlsaXR5UmVtb3RlT2JqZWN0KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdl
YlBhZ2VPYmplY3RCYXNlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaAppbmRleCAzOWU5MGUzYzg5NWUuLjQ5
NzAwNzBhNDU1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNl
LmgKQEAgLTQ1LDYgKzQ1LDggQEAgY2xhc3MgQVhDb3JlT2JqZWN0OwogICAgIFdlYkNvcmU6Oklu
dFNpemUgbV9zaXplIFdURl9HVUFSREVEX0JZX0xPQ0sobV9jYWNoZUxvY2spOwogICAgIFRocmVh
ZFNhZmVXZWFrUHRyPFdlYkNvcmU6OkFYQ29yZU9iamVjdD4gbV9pc29sYXRlZFRyZWVSb290Owog
I2VuZGlmCisKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBtX3JlbW90ZUZyYW1lT2Zmc2V0OwogICAg
IFJldGFpblB0cjxpZD4gbV9wYXJlbnQ7CiAgICAgYm9vbCBtX2hhc01haW5GcmFtZVBsdWdpbjsK
IH0KQEAgLTU2LDkgKzU4LDExIEBAIGNsYXNzIEFYQ29yZU9iamVjdDsKIC0gKHZvaWQpc2V0SXNv
bGF0ZWRUcmVlUm9vdDooTmFrZWRQdHI8V2ViQ29yZTo6QVhDb3JlT2JqZWN0Pilyb290OwogI2Vu
ZGlmCiAtICh2b2lkKXNldFJlbW90ZVBhcmVudDooaWQpcGFyZW50OworLSAodm9pZClzZXRSZW1v
dGVGcmFtZU9mZnNldDooV2ViQ29yZTo6SW50UG9pbnQpb2Zmc2V0OwogLSAodm9pZClzZXRIYXNN
YWluRnJhbWVQbHVnaW46KGJvb2wpaGFzUGx1Z2luOwogCiAtIChpZClhY2Nlc3NpYmlsaXR5Um9v
dE9iamVjdFdyYXBwZXI7CiAtIChpZClhY2Nlc3NpYmlsaXR5Rm9jdXNlZFVJRWxlbWVudDsKKy0g
KFdlYkNvcmU6OkludFBvaW50KWFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldDsKIAogQGVu
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNj
ZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tCmluZGV4IDZm
OTk1NDVhZWJmNS4uYmVjOGQ3M2ZhYTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdl
YlBhZ2VPYmplY3RCYXNlLm1tCkBAIC0zNiw5ICszNiwxMSBAQAogI2ltcG9ydCAiV0tTdHJpbmdD
Ri5oIgogI2ltcG9ydCA8V2ViQ29yZS9BWE9iamVjdENhY2hlLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0RvY3VtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVHJlZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9Mb2NhbEZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsRnJhbWVWaWV3Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUmVtb3RlRnJhbWUuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxi
YXIuaD4KIApAQCAtNTcsMTEgKzU5LDE3IEBAIG5hbWVzcGFjZSBheCA9IFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IGF1dG8qIGxvY2FsTWFpbkZyYW1lID0gZHluYW1pY0Rvd25jYXN0PFdlYkNvcmU6OkxvY2FsRnJh
bWU+KHBhZ2UtPm1haW5GcmFtZSgpKTsKLSAgICBpZiAoIWxvY2FsTWFpbkZyYW1lIHx8ICFsb2Nh
bE1haW5GcmFtZS0+ZG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYg
KGF1dG8qIGxvY2FsTWFpbkZyYW1lID0gZHluYW1pY0Rvd25jYXN0PFdlYkNvcmU6OkxvY2FsRnJh
bWU+KHBhZ2UtPm1haW5GcmFtZSgpKSkgeworICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBs
b2NhbE1haW5GcmFtZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBkb2N1bWVudC0+
YXhPYmplY3RDYWNoZSgpOworICAgIH0gZWxzZSBpZiAoYXV0byogcmVtb3RlTWFpbkZyYW1lID0g
ZHluYW1pY0Rvd25jYXN0PFdlYkNvcmU6OlJlbW90ZUZyYW1lPihwYWdlLT5tYWluRnJhbWUoKSkp
IHsKKyAgICAgICAgYXV0byYgdHJlZSA9IHJlbW90ZU1haW5GcmFtZS0+dHJlZSgpOworICAgICAg
ICBhdXRvKiBmaXJzdEZyYW1lID0gZHluYW1pY0Rvd25jYXN0PFdlYkNvcmU6OkxvY2FsRnJhbWU+
KHRyZWUuZmlyc3RDaGlsZCgpKTsKKyAgICAgICAgYXV0byogZG9jdW1lbnQgPSBmaXJzdEZyYW1l
ID8gZmlyc3RGcmFtZS0+ZG9jdW1lbnQoKSA6IG51bGxwdHI7CisgICAgICAgIHJldHVybiBkb2N1
bWVudCA/IGRvY3VtZW50LT5heE9iamVjdENhY2hlKCkgOiBudWxscHRyOworICAgIH0KIAotICAg
IHJldHVybiBsb2NhbE1haW5GcmFtZS0+ZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpOworICAg
IHJldHVybiBudWxscHRyOwogfQogCiAtIChpZClhY2Nlc3NpYmlsaXR5UGx1Z2luT2JqZWN0CkBA
IC0xNTIsNiArMTYwLDE3IEBAIG5hbWVzcGFjZSBheCA9IFdlYkNvcmU6OkFjY2Vzc2liaWxpdHk7
CiAgICAgbV9oYXNNYWluRnJhbWVQbHVnaW4gPSBoYXNQbHVnaW47CiB9CiAKKy0gKHZvaWQpc2V0
UmVtb3RlRnJhbWVPZmZzZXQ6KFdlYkNvcmU6OkludFBvaW50KW9mZnNldAoreworICAgIEFTU0VS
VChpc01haW5SdW5Mb29wKCkpOworICAgIG1fcmVtb3RlRnJhbWVPZmZzZXQgPSBvZmZzZXQ7Cit9
CisKKy0gKFdlYkNvcmU6OkludFBvaW50KWFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldAor
eworICAgIHJldHVybiBtX3JlbW90ZUZyYW1lT2Zmc2V0OworfQorCiAtICh2b2lkKXNldFJlbW90
ZVBhcmVudDooaWQpcGFyZW50CiB7CiAgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmlu
ZGV4IGVlYzY0YWRlY2JlYS4uZGI4M2E5NTU5YTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtMTIzLDE2ICsxMjMsMTIg
QEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemVBY2Nlc3NpYmlsaXR5KCkKICAgICAv
LyBDdXJyZW50bHksIGl0IGlzIGFsc28gbmVlZGVkIHRvIGFsbG9jYXRlIGFuZCBpbml0aWFsaXpl
IGFuIE5TQXBwbGljYXRpb24gb2JqZWN0LgogICAgIFtOU0FwcGxpY2F0aW9uIF9hY2Nlc3NpYmls
aXR5SW5pdGlhbGl6ZV07CiAKLSAgICBhdXRvIG1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCA9IGFk
b3B0TlMoW1tXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0IGFsbG9jXSBpbml0XSk7Ci0KICAg
ICAvLyBHZXQgdGhlIHBpZCBmb3IgdGhlIHN0YXJ0aW5nIHByb2Nlc3MuCiAgICAgcGlkX3QgcGlk
ID0gV2ViQ29yZTo6cHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKCk7Ci0gICAgaWYgKFttb2NrQWNj
ZXNzaWJpbGl0eUVsZW1lbnQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihhY2Nlc3NpYmls
aXR5U2V0UHJlc2VudGVyUHJvY2Vzc0lkZW50aWZpZXI6KV0pCi0gICAgICAgIFsoaWQpbW9ja0Fj
Y2Vzc2liaWxpdHlFbGVtZW50LmdldCgpIGFjY2Vzc2liaWxpdHlTZXRQcmVzZW50ZXJQcm9jZXNz
SWRlbnRpZmllcjpwaWRdOwotICAgIFttb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgc2V0V2ViUGFn
ZTp0aGlzXTsKLSAgICBtX21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCA9IFdURk1vdmUobW9ja0Fj
Y2Vzc2liaWxpdHlFbGVtZW50KTsKLQotICAgIGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRv
a2VuKGFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSk7CisgICAgY3JlYXRlTW9ja0FjY2Vz
c2liaWxpdHlFbGVtZW50KHBpZCk7CisgICAgUmVmUHRyIGxvY2FsTWFpbkZyYW1lID0gZHluYW1p
Y0Rvd25jYXN0PExvY2FsRnJhbWU+KG1fcGFnZS0+bWFpbkZyYW1lKCkpOworICAgIGlmIChsb2Nh
bE1haW5GcmFtZSkKKyAgICAgICAgYWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oYWNj
ZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0YSgpLCBsb2NhbE1haW5GcmFtZS0+ZnJhbWVJRCgpKTsK
IAogICAgIC8vIENsb3NlIE1hY2ggY29ubmVjdGlvbiB0byBMYXVuY2ggU2VydmljZXMuCiAjaWYg
SEFWRShMU19TRVJWRVJfQ09OTkVDVElPTl9TVEFUVVNfUkVMRUFTRV9OT1RJRklDQVRJT05TX01B
U0spCkBAIC0xNDQsOSArMTQwLDE5IEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXpl
QWNjZXNzaWJpbGl0eSgpCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmV2b2tlTGF1bmNo
U2VydmljZXNTYW5kYm94RXh0ZW5zaW9uKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6Y3JlYXRlTW9j
a0FjY2Vzc2liaWxpdHlFbGVtZW50KHBpZF90IHBpZCkKK3sKKyAgICBhdXRvIG1vY2tBY2Nlc3Np
YmlsaXR5RWxlbWVudCA9IGFkb3B0TlMoW1tXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0IGFs
bG9jXSBpbml0XSk7CisKKyAgICBbbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50IGFjY2Vzc2liaWxp
dHlTZXRQcmVzZW50ZXJQcm9jZXNzSWRlbnRpZmllcjpwaWRdOworICAgIFttb2NrQWNjZXNzaWJp
bGl0eUVsZW1lbnQgc2V0V2ViUGFnZTp0aGlzXTsKKyAgICBtX21vY2tBY2Nlc3NpYmlsaXR5RWxl
bWVudCA9IFdURk1vdmUobW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50KTsKK30KKwogdm9pZCBXZWJQ
YWdlOjpwbGF0Zm9ybVJlaW5pdGlhbGl6ZSgpCiB7Ci0gICAgYWNjZXNzaWJpbGl0eVRyYW5zZmVy
UmVtb3RlVG9rZW4oYWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0YSgpKTsKKyAgICBSZWYgZnJh
bWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOworICAg
IGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKGFjY2Vzc2liaWxpdHlSZW1vdGVUb2tl
bkRhdGEoKSwgZnJhbWUtPmZyYW1lSUQoKSk7CiB9CiAKIFJldGFpblB0cjxOU0RhdGE+IFdlYlBh
Z2U6OmFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSBjb25zdApAQCAtNDcwLDEyICs0NzYs
MjcgQEAgYm9vbCBXZWJQYWdlOjpwZXJmb3JtTm9uRWRpdGluZ0JlaGF2aW9yRm9yU2VsZWN0b3Io
Y29uc3QgU3RyaW5nJiBzZWxlY3RvciwgS2V5Ym8KICAgICByZXR1cm4gZGlkUGVyZm9ybUFjdGlv
bjsKIH0KIAordm9pZCBXZWJQYWdlOjp1cGRhdGVSZW1vdGVQYWdlQWNjZXNzaWJpbGl0eU9mZnNl
dChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6SW50UG9pbnQgb2Zm
c2V0KQoreworICAgIFthY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkgc2V0UmVtb3RlRnJhbWVP
ZmZzZXQ6b2Zmc2V0XTsKK30KKwordm9pZCBXZWJQYWdlOjpyZWdpc3RlclJlbW90ZUZyYW1lQWNj
ZXNzaWJpbGl0eVRva2VucyhwaWRfdCBwaWQsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBlbGVt
ZW50VG9rZW4pCit7CisgICAgTlNEYXRhICplbGVtZW50VG9rZW5EYXRhID0gW05TRGF0YSBkYXRh
V2l0aEJ5dGVzOmVsZW1lbnRUb2tlbi5kYXRhKCkgbGVuZ3RoOmVsZW1lbnRUb2tlbi5zaXplKCld
OworICAgIGF1dG8gcmVtb3RlRWxlbWVudCA9IGVsZW1lbnRUb2tlbkRhdGEubGVuZ3RoID8gYWRv
cHROUyhbW05TQWNjZXNzaWJpbGl0eVJlbW90ZVVJRWxlbWVudCBhbGxvY10gaW5pdFdpdGhSZW1v
dGVUb2tlbjplbGVtZW50VG9rZW5EYXRhXSkgOiBuaWw7CisKKyAgICBjcmVhdGVNb2NrQWNjZXNz
aWJpbGl0eUVsZW1lbnQocGlkKTsKKyAgICBbYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpIHNl
dFJlbW90ZVBhcmVudDpyZW1vdGVFbGVtZW50LmdldCgpXTsKK30KKwogdm9pZCBXZWJQYWdlOjpy
ZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4
X3Q+IGVsZW1lbnRUb2tlbiwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHdpbmRvd1Rva2VuKQog
ewogICAgIE5TRGF0YSAqZWxlbWVudFRva2VuRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczpl
bGVtZW50VG9rZW4uZGF0YSgpIGxlbmd0aDplbGVtZW50VG9rZW4uc2l6ZSgpXTsKICAgICBOU0Rh
dGEgKndpbmRvd1Rva2VuRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczp3aW5kb3dUb2tlbi5k
YXRhKCkgbGVuZ3RoOndpbmRvd1Rva2VuLnNpemUoKV07CiAgICAgYXV0byByZW1vdGVFbGVtZW50
ID0gZWxlbWVudFRva2VuRGF0YS5sZW5ndGggPyBhZG9wdE5TKFtbTlNBY2Nlc3NpYmlsaXR5UmVt
b3RlVUlFbGVtZW50IGFsbG9jXSBpbml0V2l0aFJlbW90ZVRva2VuOmVsZW1lbnRUb2tlbkRhdGFd
KSA6IG5pbDsKICAgICBhdXRvIHJlbW90ZVdpbmRvdyA9IHdpbmRvd1Rva2VuRGF0YS5sZW5ndGgg
PyBhZG9wdE5TKFtbTlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlFbGVtZW50IGFsbG9jXSBpbml0V2l0
aFJlbW90ZVRva2VuOndpbmRvd1Rva2VuRGF0YV0pIDogbmlsOworCiAgICAgW3JlbW90ZUVsZW1l
bnQgc2V0V2luZG93VUlFbGVtZW50OnJlbW90ZVdpbmRvdy5nZXQoKV07CiAgICAgW3JlbW90ZUVs
ZW1lbnQgc2V0VG9wTGV2ZWxVSUVsZW1lbnQ6cmVtb3RlV2luZG93LmdldCgpXTsKIApAQCAtNTE3
LDYgKzUzOCwxMSBAQCBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0KiBXZWJQYWdlOjphY2Nl
c3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkKICAgICByZXR1cm4gbV9tb2NrQWNjZXNzaWJpbGl0eUVs
ZW1lbnQuZ2V0KCk7CiB9CiAKK1dlYkNvcmU6OkludFBvaW50IFdlYlBhZ2U6OmFjY2Vzc2liaWxp
dHlSZW1vdGVGcmFtZU9mZnNldCgpCit7CisgICAgcmV0dXJuIFttX21vY2tBY2Nlc3NpYmlsaXR5
RWxlbWVudCBhY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXRdOworfQorCiAjaWYgRU5BQkxF
KEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKIHZvaWQgV2ViUGFnZTo6Y2FjaGVBWFBvc2l0
aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBvaW50KQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggMDYxNGJjZjdhZjVjLi5iYTgzNjgwNjQ1MzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtNjUsNiArNjUsOSBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvU2NyZWVuUHJvcGVydGllcy5oPgogI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3Bh
dGNoLmg+CiAjaW5jbHVkZSA8d3RmL01hY2hTZW5kUmlnaHQuaD4KKworT0JKQ19DTEFTUyBOU011
dGFibGVEaWN0aW9uYXJ5OworCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykKQEAgLTg3LDYg
KzkwLDcgQEAKICNpbmNsdWRlICJXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuaCIKICNlbmRpZgog
CisKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgT2JqZWN0OwogfQpAQCAtNTExLDYgKzUxNSw5IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybVNldENhY2hlTW9kZWwoQ2FjaGVNb2RlbCk7CiAK
ICAgICB2b2lkIHNldEVuaGFuY2VkQWNjZXNzaWJpbGl0eShib29sKTsKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICB2b2lkIGJpbmRBY2Nlc3NpYmlsaXR5RnJhbWVXaXRoRGF0YShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Pik7CisjZW5kaWYKIAogICAg
IHZvaWQgc3RhcnRNZW1vcnlTYW1wbGVyKFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBjb25z
dCBTdHJpbmcmLCBjb25zdCBkb3VibGUpOwogICAgIHZvaWQgc3RvcE1lbW9yeVNhbXBsZXIoKTsK
QEAgLTgyNiw2ICs4MzMsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIEhh
c2hDb3VudGVkU2V0PFN0cmluZz4gbV9wZW5kaW5nUGFzdGVib2FyZFdyaXRlQ291bnRzOwogICAg
IHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gbV9hdWRpdFRva2VuRm9yU2VsZjsKKyAgICBS
ZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gbV9hY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVU
b2tlbkNhY2hlOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDk5YjQwMmFm
MTFjYS4uZDc3NWZlN2QzOGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNjksNiArNjksNyBAQCBtZXNzYWdlcyAtPiBXZWJQcm9j
ZXNzIExlZ2FjeVJlY2VpdmVyIE5vdFJlZkNvdW50ZWQgewogICAgIFNldFRleHRDaGVja2VyU3Rh
dGUoc3RydWN0IFdlYktpdDo6VGV4dENoZWNrZXJTdGF0ZSB0ZXh0Q2hlY2tlclN0YXRlKQogCiAg
ICAgU2V0RW5oYW5jZWRBY2Nlc3NpYmlsaXR5KGJvb2wgZmxhZykKKyAgICBCaW5kQWNjZXNzaWJp
bGl0eUZyYW1lV2l0aERhdGEoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0ZDo6
c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhKTsKIAogICAgIEdhcmJhZ2VDb2xsZWN0SmF2YVNjcmlw
dE9iamVjdHMoKQogICAgIFNldEphdmFTY3JpcHRHYXJiYWdlQ29sbGVjdG9yVGltZXJFbmFibGVk
KGJvb2wgZW5hYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1dlYlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
cm9jZXNzQ29jb2EubW0KaW5kZXggYzUzODU3ZmJlMWQ0Li4xMTYwNmU5NjM5NTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAt
MjEzLDYgKzIxMywxNiBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtU2V0Q2FjaGVNb2RlbChD
YWNoZU1vZGVsKQogewogfQogCit2b2lkIFdlYlByb2Nlc3M6OmJpbmRBY2Nlc3NpYmlsaXR5RnJh
bWVXaXRoRGF0YShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RkOjpzcGFuPGNv
bnN0IHVpbnQ4X3Q+IGRhdGEpCit7CisgICAgaWYgKCFtX2FjY2Vzc2liaWxpdHlSZW1vdGVGcmFt
ZVRva2VuQ2FjaGUpCisgICAgICAgIG1fYWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lVG9rZW5DYWNo
ZSA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisKKyAgICBh
dXRvIGZyYW1lSW50ID0gZnJhbWVJRC5vYmplY3QoKS50b1VJbnQ2NCgpOworICAgIE5TRGF0YSAq
bnNEYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEuZGF0YSgpIGxlbmd0aDpkYXRhLnNp
emUoKV07CisgICAgW21fYWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lVG9rZW5DYWNoZSBzZXRPYmpl
Y3Q6bnNEYXRhIGZvcktleTpAKGZyYW1lSW50KV07Cit9CisKIGlkIFdlYlByb2Nlc3M6OmFjY2Vz
c2liaWxpdHlGb2N1c2VkVUlFbGVtZW50KCkKIHsKICAgICBhdXRvIHJldHJpZXZlRm9jdXNlZFVJ
RWxlbWVudEZyb21NYWluVGhyZWFkID0gW10gKCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgK
aW5kZXggMjFlMjFmMDhiZDY0Li5iNGNmMjgyYzE4Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaApAQCAtMjI1LDYgKzIyNSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFJlbW90ZUFY
T2JqZWN0UmVmIGFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSBmaW5hbCB7IHJldHVybiAwOyB9
CisgICAgV2ViQ29yZTo6SW50UG9pbnQgYWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCkg
ZmluYWwgeyByZXR1cm4geyB9OyB9CiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURf
VFJFRSkKICAgICB2b2lkIHNldEFYSXNvbGF0ZWRUcmVlUm9vdChXZWJDb3JlOjpBWENvcmVPYmpl
Y3QqKSBmaW5hbCB7IH0KICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>469875</attachid>
            <date>2024-02-15 01:45:10 -0800</date>
            <delta_ts>2024-02-15 09:20:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-268804-20240215014508.patch</filename>
            <type>text/plain</type>
            <size>115498</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">RnJvbSAxYmIxODNlYzQ0YmNmODYwYmUzYzU2Mjg5ZGYwYjA4NWNhYzQwZDZkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpcyBGbGVpemFjaCA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4K
RGF0ZTogVGh1LCAxNSBGZWIgMjAyNCAwMTo0Mzo0MyAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIEFY
OiBTdXBwb3J0IHNpdGUgaXNvbGF0aW9uIGZvciBWb2ljZU92ZXIKIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjg4MDQgcmRhcjovLzk5NjY1NTYxCgpSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KCkluaXRpYWwgc3VwcG9ydCBmb3Igc2l0ZSBpc29sYXRpb24gZm9y
IFZvaWNlT3Zlci4KCldoZW4gYSBzY3JvbGwgdmlldyBob3N0cyBhIFJlbW90ZUZyYW1lIGl0IGJp
bmRzIGl0c2VsZiB0byB0aGUgb3RoZXIgc2lkZSB0aHJvdWdoIGEgV2ViUGFnZSBtZXNzYWdlLgpU
aGlzIHRyYW5zZmVycyBkYXRhIHRva2VucyBzbyBBY2Nlc3NpYmlsaXR5IHJlbW90ZSBlbGVtZW50
cyBhcmUgY3JlYXRlZCBhbmQgaG9va2VkIHVwLgoKVGhlIGJvdW5kaW5nIGJveGVzIGluc2lkZSB0
aGUgc3ViIGZyYW1lcyBuZWVkIHRvIGhhdmUgdGhlIGluaXRpYWwgb2Zmc2V0IGFwcGxpZWQgYW5k
IHRoZW4gbmVlZCB0byBiZSBjb252ZXJ0ZWQKZWFjaCBzdGVwIHVwIHRoZSBjaGFpbiB0byBhY2Nv
dW50IGZvciBzY3JvbGwgb2Zmc2V0cyB0aGF0IG9ubHkgZWFjaCBwcm9jZXNzIGtub3dzIGFib3V0
LgoKKiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dDoKKiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWENvcmVPYmplY3QuaDoKKFdlYkNvcmU6OmFjY2Vzc2liaWxpdHlSb2xlVG9TdHJpbmcpOgoo
V2ViQ29yZTo6QVhDb3JlT2JqZWN0Ojppc1JlbW90ZUZyYW1lIGNvbnN0KToKKiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcDoKKFdlYkNvcmU6OnN0cmVhbUFYQ29yZU9i
amVjdCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoK
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmNyZWF0ZSk6CihXZWJDb3JlOjpBWE9iamVjdENhY2hl
OjpvblJlbW90ZUZyYW1lSW5pdGlhbGl6ZWQpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5jcHA6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZWxhdGl2
ZUZyYW1lIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnJlbW90ZUZyYW1l
T2Zmc2V0IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW1vdGVGcmFtZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJh
bWVDbGllbnQuaC4KKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6Y3JlYXRlKToK
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6QWNjZXNzaWJpbGl0eVJlbW90ZUZy
YW1lKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6ZWxlbWVudFJlY3QgY29u
c3QpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbW90ZUZy
YW1lLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVDbGllbnQu
aC4KKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkQXR0YWNobWVu
dENoaWxkcmVuKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENoaWxk
cmVuKToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpkZXRhY2hSZW1vdGVQ
YXJ0cyk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6Y2xlYXJDaGlsZHJlbik6
CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkUmVtb3RlRnJhbWVDaGlsZCk6
CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkQ2hpbGRyZW4pOgooV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OndlYkFyZWFPYmplY3QgY29uc3QpOgooV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmRvY3VtZW50IGNvbnN0KToKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpwYXJlbnRPYmplY3QgY29uc3QpOgoqIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaDoKKiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcDoKKFdl
YkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKFdlYkNvcmU6
OkFYSXNvbGF0ZWRPYmplY3Q6OnNldFByb3BlcnR5KToKKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmpl
Y3Q6OnJlbW90ZUZyYW1lT2Zmc2V0IGNvbnN0KToKKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OnJlbGF0aXZlRnJhbWUgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHA6CihXZWJDb3JlOjpBWElzb2xhdGVk
VHJlZTo6dXBkYXRlTm9kZVByb3BlcnRpZXMpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMubW06CihXZWJDb3Jl
OjpBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplUGxhdGZvcm1Qcm9wZXJ0aWVzKToKKFdlYkNv
cmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50IGNvbnN0KToK
KiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFj
Lm1tOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lOjpnZW5lcmF0ZVJlbW90ZVRv
a2VuIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6aW5pdGlhbGl6
ZVBsYXRmb3JtRWxlbWVudFdpdGhSZW1vdGVUb2tlbik6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
OjpjcmVhdGVQbGF0Zm9ybVJvbGVNYXApOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbToKKG1ha2VOU0FycmF5KToK
KiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgcm9sZV0pOgoo
LVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBpc0VtcHR5R3JvdXBdKToKKC1bV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgcm9sZURlc2NyaXB0aW9uXSk6CigtW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIF90cmFuc2Zvcm1TcGVjaWFsQ2hpbGRyZW5DYXNlczpdKToKKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
Ol0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5SGl0VGVz
dDpdKToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgQUxMT1dfREVQUkVDQVRFRF9J
TVBMRU1FTlRBVElPTlNfRU5EXSk6CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpmb3JQYXJhbWV0ZXI6XSk6CigtW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlJbmRleE9mQ2hpbGQ6XSk6CigtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZUNvdW50
Ol0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXJyYXlB
dHRyaWJ1dGVWYWx1ZXM6aW5kZXg6bWF4Q291bnQ6XSk6CiogU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHA6CihXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjphY2Nl
c3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQpOgoqIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUZyYW1lTG9hZGVyQ2xpZW50Lmg6CiogU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvY2FsRnJhbWVM
b2FkZXJDbGllbnQuaDoKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwOgooV2ViQ29yZTo6
UGFnZTo6c2hvdWxkVXBkYXRlQWNjZXNzaWJpbGl0eVJlZ2lvbnMgY29uc3QpOgoqIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuY3BwOgooV2ViQ29yZTo6UmVtb3RlRnJhbWU6OnVwZGF0
ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldCk6CihXZWJDb3JlOjpSZW1vdGVGcmFtZTo6
dW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyk6CihXZWJDb3JlOjpSZW1vdGVGcmFtZTo6
YmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMpOgoqIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVt
b3RlRnJhbWUuaDoKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lQ2xpZW50Lmg6Ciog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcDoKKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdl
UHJveHk6OnJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbik6CiogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaDoKKiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcDoKKFdlYktpdDo6V2ViRnJhbWVQcm94eTo6YmluZEFj
Y2Vzc2liaWxpdHlGcmFtZVdpdGhEYXRhKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJG
cmFtZVByb3h5Lmg6CiogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojpzd2FwVG9Qcm92aXNpb25hbFBhZ2UpOgooV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKToKKFdlYktpdDo6V2Vi
UGFnZVByb3h5Ojp1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQpOgoqIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MubW06CihXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5
V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQpOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW06CihXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9j
ZXNzQWNjZXNzaWJpbGl0eVRva2VuKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGxNYWMuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGxNYWMubW06CihXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5V2ViUHJv
Y2Vzc1Rva2VuUmVjZWl2ZWQpOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW06CihXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNj
ZXNzaWJpbGl0eVRva2VuKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0lt
cGwuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwubW06CihXZWJL
aXQ6OldlYlZpZXdJbXBsOjpzZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuKToKKiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNs
aWVudC5jcHA6CihXZWJLaXQ6OldlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQ6OmFjY2Vzc2liaWxp
dHlSZW1vdGVGcmFtZU9mZnNldCk6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuaDoKKiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuY3BwOgooV2ViS2l0OjpX
ZWJSZW1vdGVGcmFtZUNsaWVudDo6dW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyk6CihX
ZWJLaXQ6OldlYlJlbW90ZUZyYW1lQ2xpZW50Ojp1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxp
dHlPZmZzZXQpOgooV2ViS2l0OjpXZWJSZW1vdGVGcmFtZUNsaWVudDo6YmluZFJlbW90ZUFjY2Vz
c2liaWxpdHlGcmFtZXMpOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJSZW1vdGVGcmFtZUNsaWVudC5oOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKFdlYktpdDo6V2ViUGFnZTo6YWNjZXNzaWJpbGl0
eVRyYW5zZmVyUmVtb3RlVG9rZW4pOgooV2ViS2l0OjpXZWJQYWdlOjphY2Nlc3NpYmlsaXR5TWFu
YWdlUmVtb3RlRWxlbWVudFN0YXR1cyk6CihXZWJLaXQ6OldlYlBhZ2U6OmJpbmRSZW1vdGVBY2Nl
c3NpYmlsaXR5RnJhbWVzKToKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmg6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbjoKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bToKKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplQWNjZXNzaWJpbGl0eSk6CihX
ZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtUmVpbml0aWFsaXplKToKKFdlYktpdDo6V2ViUGFnZTo6
YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KToKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaDoKKiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9i
amVjdEJhc2UubW06CigtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlIGF4T2JqZWN0
Q2FjaGVdKToKKC1bV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2Ugc2V0UmVtb3RlRnJh
bWVPZmZzZXQ6XSk6CigtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlIGFjY2Vzc2li
aWxpdHlSZW1vdGVGcmFtZU9mZnNldF0pOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tOgooV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybUluaXRpYWxp
emVBY2Nlc3NpYmlsaXR5KToKKFdlYktpdDo6V2ViUGFnZTo6Y3JlYXRlTW9ja0FjY2Vzc2liaWxp
dHlFbGVtZW50KToKKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1SZWluaXRpYWxpemUpOgooV2Vi
S2l0OjpXZWJQYWdlOjp1cGRhdGVSZW1vdGVQYWdlQWNjZXNzaWJpbGl0eU9mZnNldCk6CihXZWJL
aXQ6OldlYlBhZ2U6OnJlZ2lzdGVyUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5VG9rZW5zKToKKFdl
YktpdDo6V2ViUGFnZTo6cmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKToKKFdl
YktpdDo6V2ViUGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KToKKiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJQcm9jZXNzQ29jb2EubW06CihXZWJLaXQ6OldlYlByb2Nlc3M6OmJpbmRBY2Nlc3NpYmls
aXR5RnJhbWVXaXRoRGF0YSk6CiogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKLS0tCiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dCAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogLi4uL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIHwgICA0ICsKIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhDb3JlT2JqZWN0LmggICB8ICAxMiArKwogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WExvZ2dlci5jcHAgICAgIHwgICAzICsKIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5jcHAgICB8ICAxNSArLQogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmggIHwgICAyICsKIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhSZW1vdGVG
cmFtZS5jcHAgICB8ICA1MiArKysrKysrCiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
UmVtb3RlRnJhbWUuaCAgfCAgNjMgKysrKysrKysKIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuY3BwICAgICB8ICAxOCArKy0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuaCAgICAgICB8ICAgNSArCiAuLi4vQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHAgICAgICAgICAgICAgfCAgIDQgKy0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlTY3JvbGxWaWV3LmNwcCB8ICA1NyArKysrKystCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5U2Nyb2xsVmlldy5oICAgfCAgIDYgKy0KIC4uLi9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZE9iamVjdC5jcHAgICAgICAgICB8ICAzNSArKysrLQogLi4uL2lzb2xhdGVkdHJlZS9BWElzb2xh
dGVkT2JqZWN0LmggICAgICAgICAgIHwgICA4ICstCiAuLi4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRUcmVlLmNwcCAgICAgICAgICAgfCAgNjEgKysrLS0tLS0KIC4uLi9pc29sYXRlZHRyZWUvQVhJ
c29sYXRlZFRyZWUuaCAgICAgICAgICAgICB8ICAyOSArKysrCiAuLi4vaXNvbGF0ZWR0cmVlL21h
Yy9BWElzb2xhdGVkT2JqZWN0TWFjLm1tICAgfCAgIDcgKwogLi4uL21hYy9BY2Nlc3NpYmlsaXR5
T2JqZWN0TWFjLm1tICAgICAgICAgICAgIHwgIDI3ICsrKysKIC4uLi9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tICB8ICAxMSArLQogLi4uL21hYy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlck1hYy5tbSAgIHwgMTQzICsrKysrKysrKysrKy0tLS0tLQogU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgICAgICAgIHwgICA1ICsKIC4uLi9XZWJD
b3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmggICB8ICAgMSArCiAuLi4vV2ViQ29y
ZS9sb2FkZXIvTG9jYWxGcmFtZUxvYWRlckNsaWVudC5oICAgfCAgIDEgKwogU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcCAgICAgICAgICAgICAgICAgIHwgIDExICstCiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1JlbW90ZUZyYW1lLmNwcCAgICAgICAgICAgfCAgMTUgKysKIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUmVtb3RlRnJhbWUuaCAgICAgICAgICAgICB8ICAgNCArCiBTb3VyY2UvV2ViQ29yZS9w
YWdlL1JlbW90ZUZyYW1lQ2xpZW50LmggICAgICAgfCAgIDQgKwogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGFnZUNsaWVudC5oICAgICAgICAgIHwgICAzICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vz
cy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgfCAgIDIgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNz
L1Byb3Zpc2lvbmFsUGFnZVByb3h5LmggICB8ICAgMiArLQogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViRnJhbWVQcm94eS5jcHAgICAgIHwgICA5ICsrCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJGcmFtZVByb3h5LmggICAgICAgfCAgIDIgKwogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcCAgICAgIHwgIDI0ICsrLQogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmggICAgICAgIHwgICA0ICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4gfCAgIDQgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5oICB8ICAgMiArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Bh
Z2VDbGllbnRJbXBsSU9TLm1tIHwgICAyICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2Vi
UGFnZVByb3h5SU9TLm1tICAgfCAgIDQgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdl
Q2xpZW50SW1wbE1hYy5oICB8ICAgMiArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VD
bGllbnRJbXBsTWFjLm1tIHwgICA0ICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFn
ZVByb3h5TWFjLm1tICAgfCAgIDQgKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJW
aWV3SW1wbC5oICAgICB8ICAgMyArLQogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlZp
ZXdJbXBsLm1tICAgIHwgICA4ICstCiAuLi4vV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudC5jcHAg
ICAgICAgICAgICAgfCAgIDYgKwogLi4uL1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuaCAgICAg
ICAgICAgICAgIHwgICAxICsKIC4uLi9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVu
dC5jcHAgICB8ICAzMiArKysrCiAuLi4vV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGll
bnQuaCAgICAgfCAgIDQgKwogLi4uL1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29j
b2EubW0gIHwgIDQxICsrKystCiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmggICAgfCAgMTMgKy0KIC4uLi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbiAgICB8ICAgMyArCiAuLi4vV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
ICAgICAgfCAgMTIgKy0KIC4uLi9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2Uu
aCAgICB8ICAgNCArCiAuLi4vbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1t
ICAgfCAgMjcgKysrLQogLi4uL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSAg
ICAgIHwgIDQ0ICsrKystLQogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCAg
ICAgICAgIHwgICA4ICsKIC4uLi9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluICB8ICAgMSArCiAuLi4vV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0gICAg
ICAgfCAgMTAgKysKIC4uLi9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aCB8ICAgMSArCiA1OSBmaWxlcyBjaGFuZ2VkLCA3NDIgaW5zZXJ0aW9ucygrKSwgMTQ4IGRlbGV0
aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhSZW1vdGVGcmFtZS5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYUmVtb3RlRnJhbWUuaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggNmVlNDFiZTJkZTBl
Li5lMzY1NTk4NTBlMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC01MjUsNiArNTI1LDcgQEAgYWNjZXNz
aWJpbGl0eS9BWEdlb21ldHJ5TWFuYWdlci5jcHAKIGFjY2Vzc2liaWxpdHkvQVhJbWFnZS5jcHAK
IGFjY2Vzc2liaWxpdHkvQVhMb2dnZXIuY3BwCiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
Y3BwCithY2Nlc3NpYmlsaXR5L0FYUmVtb3RlRnJhbWUuY3BwCiBhY2Nlc3NpYmlsaXR5L0FYVGV4
dE1hcmtlci5jcHAKIGFjY2Vzc2liaWxpdHkvQVhUZXh0UnVuLmNwcAogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2ZiZTZiZmI2ZWIzLi44MWEyMjM4NjA4MDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTg5NTgsNiArODk1OCw4IEBACiAJCTI5NDg5RkM1MTJDMDBGMDMwMEQ4M0YwRiAvKiBB
Y2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyOTQ5ODY4MTE5NTM0MTk0MDA3MkQyQkQgLyogVGV4dFVuZG9JbnNlcnRpb25NYXJrdXBNYWMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUZXh0VW5kb0luc2Vy
dGlvbk1hcmt1cE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk0QkRBRTYy
MUZGNTgyQTAwNTEwNzdCIC8qIEFjY2Vzc2liaWxpdHlPYmplY3RDb2NvYS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlPYmplY3RDb2NvYS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjk1NUNGMTEyQjIzMEFFNjAwMDFCRjgy
IC8qIEFYUmVtb3RlRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVhSZW1vdGVGcmFtZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOTU1Q0YxMjJCMjMwQUU2MDAwMUJGODIgLyogQVhS
ZW1vdGVGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBWFJlbW90ZUZyYW1lLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk3QkUzRDkxNkMwNDNEODAwMzMxNkJEIC8qIFBs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTI5ODFBQkM0MTMxODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5TWF0
aE1MRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxl
bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5ODFDQTlEMTMxODIyRUMw
MEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTIzNDM4LDYgKzIzNDQwLDggQEAKIAkJCQlDMDQ5M0VCNzI0NDY5OUU0MDA5QUFDODAgLyogQVhM
b2dnZXIuaCAqLywKIAkJCQkyOTgxQ0FBRjEzMTgyMkVDMDBEMTJGMkEgLyogQVhPYmplY3RDYWNo
ZS5jcHAgKi8sCiAJCQkJMjlBODEyMUEwRkJCOUMxRDAwNTEwMjkzIC8qIEFYT2JqZWN0Q2FjaGUu
aCAqLywKKwkJCQkyOTU1Q0YxMjJCMjMwQUU2MDAwMUJGODIgLyogQVhSZW1vdGVGcmFtZS5jcHAg
Ki8sCisJCQkJMjk1NUNGMTEyQjIzMEFFNjAwMDFCRjgyIC8qIEFYUmVtb3RlRnJhbWUuaCAqLywK
IAkJCQlDMEUyMDhBMTI5Mzc5QzZGMDBDMEQyRDMgLyogQVhUZXh0TWFya2VyLmNwcCAqLywKIAkJ
CQlDMEUyMDhBMDI5Mzc5QzZFMDBDMEQyRDMgLyogQVhUZXh0TWFya2VyLmggKi8sCiAJCQkJNDhD
NEU4M0MyQjM0RDgzODAwODM0NjBBIC8qIEFYVGV4dFJ1bi5jcHAgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYQ29yZU9iamVjdC5oIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWENvcmVPYmplY3QuaAppbmRleCA0NDEwODRlY2I4MDUuLjNmYmM3
ZjhkYjI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWENvcmVP
YmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYQ29yZU9iamVjdC5o
CkBAIC0yMDUsNiArMjA1LDcgQEAgZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5Um9sZSB7CiAgICAg
UHJvZ3Jlc3NJbmRpY2F0b3IsCiAgICAgUmFkaW9CdXR0b24sCiAgICAgUmFkaW9Hcm91cCwKKyAg
ICBSZW1vdGVGcmFtZSwKICAgICBSb3dIZWFkZXIsCiAgICAgUm93LAogICAgIFJvd0dyb3VwLApA
QCAtNDQyLDYgKzQ0Myw4IEBAIEFMV0FZU19JTkxJTkUgU3RyaW5nIGFjY2Vzc2liaWxpdHlSb2xl
VG9TdHJpbmcoQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSkKICAgICAgICAgcmV0dXJuICJSYWRpb0J1
dHRvbiJfczsKICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0dyb3VwOgogICAgICAg
ICByZXR1cm4gIlJhZGlvR3JvdXAiX3M7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmVt
b3RlRnJhbWU6CisgICAgICAgIHJldHVybiAiUmVtb3RlRnJhbWUiX3M7CiAgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6Um93SGVhZGVyOgogICAgICAgICByZXR1cm4gIlJvd0hlYWRlciJfczsK
ICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSb3c6CkBAIC04MTUsNiArODE4LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvd0luc3RhbmNl
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlBUklBR3JpZENl
bGxJbnN0YW5jZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNBWElzb2xhdGVkT2Jq
ZWN0SW5zdGFuY2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQVhSZW1vdGVGcmFt
ZSgpIGNvbnN0ID0gMDsKIAogICAgIGJvb2wgaXNIZWFkaW5nKCkgY29uc3QgeyByZXR1cm4gcm9s
ZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkhlYWRpbmc7IH0KICAgICB2aXJ0dWFsIGJv
b2wgaXNMaW5rKCkgY29uc3QgPSAwOwpAQCAtOTE5LDYgKzkyMywxMiBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc1RyZWVHcmlkKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OlRyZWVHcmlkOyB9CiAgICAgYm9vbCBpc1RyZWVJdGVtKCkgY29uc3QgeyByZXR1
cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVJdGVtOyB9CiAgICAgYm9v
bCBpc1Njcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxp
dHlSb2xlOjpTY3JvbGxCYXI7IH0KKyAgICBib29sIGlzUmVtb3RlRnJhbWUoKSBjb25zdCB7IHJl
dHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmVtb3RlRnJhbWU7IH0KKyNp
ZiBQTEFURk9STShDT0NPQSkKKyAgICB2aXJ0dWFsIFJldGFpblB0cjxpZD4gcmVtb3RlRnJhbWVQ
bGF0Zm9ybUVsZW1lbnQoKSBjb25zdCA9IDA7CisjZW5kaWYKKyAgICB2aXJ0dWFsIGJvb2wgaGFz
UmVtb3RlRnJhbWVDaGlsZCgpIGNvbnN0ID0gMDsKKwogICAgIGJvb2wgaXNCdXR0b24oKSBjb25z
dDsKICAgICB2aXJ0dWFsIGJvb2wgaXNNZXRlcigpIGNvbnN0ID0gMDsKIApAQCAtMTE1OSw2ICsx
MTY5LDggQEAgcHVibGljOgogICAgIC8vIFZpZXdwb3J0LXJlbGF0aXZlIG1lYW5zIHRoYXQgd2hl
biB0aGUgcGFnZSBzY3JvbGxzLCB0aGUgcG9ydGlvbiBvZiB0aGUgcGFnZSBpbiB0aGUgdmlld3Bv
cnQgY2hhbmdlcywgYW5kIHRodXMKICAgICAvLyBhbnkgdmlld3BvcnQtcmVsYXRpdmUgcmVjdHMg
ZG8gdG9vIChzaW5jZSB0aGV5IGFyZSBlaXRoZXIgY2xvc2VyIHRvIG9yIGZhcnRoZXIgZnJvbSB0
aGUgdmlld3BvcnQgb3JpZ2luIGFmdGVyIHRoZSBzY3JvbGwpLgogICAgIHZpcnR1YWwgRmxvYXRQ
b2ludCBzY3JlZW5SZWxhdGl2ZVBvc2l0aW9uKCkgY29uc3QgPSAwOworICAgIC8vIFRoaXMgaXMg
dGhlIGFtb3VudCB0aGF0IHRoZSBSZW1vdGVGcmFtZSBpcyBvZmZzZXQgZnJvbSBpdHMgY29udGFp
bmluZyBwYXJlbnQuCisgICAgdmlydHVhbCBJbnRQb2ludCByZW1vdGVGcmFtZU9mZnNldCgpIGNv
bnN0ID0gMDsKIAogICAgIHZpcnR1YWwgRmxvYXRSZWN0IGNvbnZlcnRGcmFtZVRvU3BhY2UoY29u
c3QgRmxvYXRSZWN0JiwgQWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZSkgY29uc3QgPSAwOwog
I2lmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWExvZ2dlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2Vy
LmNwcAppbmRleCBiNmUzMDZjZGRlY2YuLjdiMzVjOGY5ZDEwMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWExvZ2dlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWExvZ2dlci5jcHAKQEAgLTg4Myw2ICs4ODMsOSBAQCB2b2lkIHN0cmVh
bUFYQ29yZU9iamVjdChUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IEFYQ29yZU9iamVjdCYgb2Jq
ZWN0LCBjb25zdCBPcAogICAgIGlmIChvcHRpb25zICYgQVhTdHJlYW1PcHRpb25zOjpSb2xlKQog
ICAgICAgICBzdHJlYW0uZHVtcFByb3BlcnR5KCJyb2xlIiwgb2JqZWN0LnJvbGVWYWx1ZSgpKTsK
IAorICAgIGlmIChvYmplY3QucmVuZGVyZXIoKSkKKyAgICAgICAgc3RyZWFtLmR1bXBQcm9wZXJ0
eSgicmVuZGVyTmFtZSIsIG9iamVjdC5yZW5kZXJlcigpLT5yZW5kZXJOYW1lKCkpOworCiAgICAg
aWYgKG9wdGlvbnMgJiBBWFN0cmVhbU9wdGlvbnM6OlBhcmVudElEKSB7CiAgICAgICAgIGF1dG8q
IHBhcmVudCA9IG9iamVjdC5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICAgICAgc3RyZWFt
LmR1bXBQcm9wZXJ0eSgicGFyZW50SUQiLCBwYXJlbnQgPyBwYXJlbnQtPm9iamVjdElEKCkgOiBB
WElEKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVj
dENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHAKaW5kZXggMjgwZmFkNGYyNzAxLi4xYWM5NWYyZWE2YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgIkFYSXNvbGF0ZWRPYmplY3QuaCIKICNpbmNsdWRlICJBWElzb2xhdGVkVHJlZS5oIgog
I2luY2x1ZGUgIkFYTG9nZ2VyLmgiCisjaW5jbHVkZSAiQVhSZW1vdGVGcmFtZS5oIgogI2luY2x1
ZGUgIkFYVGV4dE1hcmtlci5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlBUklBR3JpZC5oIgog
I2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaCIKQEAgLTEwNTQsNyArMTA1NSwx
MCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpjcmVhdGUoQWNjZXNzaWJp
bGl0eVJvbGUgcm9sZSkKICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCiAgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6VGFibGVIZWFkZXJDb250YWluZXI6CiAgICAgICAgIG9iaiA9IEFjY2Vz
c2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lcjo6Y3JlYXRlKCk7Ci0gICAgICAgIGJyZWFrOyAg
IAorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSZW1vdGVGcmFt
ZToKKyAgICAgICAgb2JqID0gQVhSZW1vdGVGcmFtZTo6Y3JlYXRlKCk7CisgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNsaWRlclRodW1iOgogICAgICAgICBvYmog
PSBBY2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWI6OmNyZWF0ZSgpOwogICAgICAgICBicmVhazsKQEAg
LTEzNTAsNiArMTM1NCwxNSBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZVJlY29tcHV0ZUNl
bGxTbG90cyhBY2Nlc3NpYmlsaXR5VGFibGUmIGF4VGFibGUpCiAjZW5kaWYKIH0KIAordm9pZCBB
WE9iamVjdENhY2hlOjpvblJlbW90ZUZyYW1lSW5pdGlhbGl6ZWQoQVhSZW1vdGVGcmFtZSYgcmVt
b3RlRnJhbWUpCit7CisjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKKyAg
ICB1cGRhdGVJc29sYXRlZFRyZWUocmVtb3RlRnJhbWUsIEFYUHJvcGVydHlOYW1lOjpSZW1vdGVG
cmFtZVBsYXRmb3JtRWxlbWVudCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShyZW1vdGVGcmFt
ZSk7CisjZW5kaWYKK30KKwogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUp
CiB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZVJvd3NwYW5DaGFuZ2VkKEFjY2Vzc2liaWxpdHlU
YWJsZUNlbGwmIGF4Q2VsbCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQVhPYmplY3RDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmgKaW5kZXggZDEwNDljYzliYzIxLi4zOGM5OGE0NmVhOWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCkBAIC00Nyw2ICs0Nyw3IEBA
IGNsYXNzIFRleHRTdHJlYW07CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQVhSZW1v
dGVGcmFtZTsKIGNsYXNzIEFjY2Vzc2liaWxpdHlUYWJsZTsKIGNsYXNzIEFjY2Vzc2liaWxpdHlU
YWJsZUNlbGw7CiBjbGFzcyBEb2N1bWVudDsKQEAgLTI0Niw2ICsyNDcsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkZWZlck5vZGVBZGRlZE9yUmVtb3ZlZChOb2RlKik7CiAgICAgdm9pZCBoYW5kbGVT
Y3JvbGxlZFRvQW5jaG9yKGNvbnN0IE5vZGUqIGFuY2hvck5vZGUpOwogICAgIHZvaWQgb25TY3Jv
bGxiYXJVcGRhdGUoU2Nyb2xsVmlldyopOworICAgIHZvaWQgb25SZW1vdGVGcmFtZUluaXRpYWxp
emVkKEFYUmVtb3RlRnJhbWUmKTsKIAogICAgIGJvb2wgaXNSZXRyaWV2aW5nQ3VycmVudE1vZGFs
Tm9kZSgpIHsgcmV0dXJuIG1faXNSZXRyaWV2aW5nQ3VycmVudE1vZGFsTm9kZTsgfQogICAgIE5v
ZGUqIG1vZGFsTm9kZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWFJlbW90ZUZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhSZW1v
dGVGcmFtZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xYmE2
ZjY4Yzc3OTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYUmVtb3RlRnJhbWUuY3BwCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQVhSZW1vdGVGcmFtZS5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK1JlZjxBWFJlbW90ZUZyYW1lPiBBWFJlbW90ZUZyYW1lOjpjcmVhdGUoKQorewor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFYUmVtb3RlRnJhbWUpOworfQorCitBWFJlbW90ZUZy
YW1lOjpBWFJlbW90ZUZyYW1lKCkKKzoKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBtX3JlbW90
ZUZyYW1lUGxhdGZvcm1FbGVtZW50KG51bGxwdHIpCisgICAgLAorI2VuZGlmCisgICAgbV9wcm9j
ZXNzSWRlbnRpZmllcigwKQoreworfQorCitMYXlvdXRSZWN0IEFYUmVtb3RlRnJhbWU6OmVsZW1l
bnRSZWN0KCkgY29uc3QKK3sKKyAgICBhdXRvKiBwYXJlbnQgPSBwYXJlbnRPYmplY3QoKTsKKyAg
ICByZXR1cm4gcGFyZW50ID8gcGFyZW50LT5lbGVtZW50UmVjdCgpIDogTGF5b3V0UmVjdCgpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYUmVtb3RlRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhSZW1vdGVGcmFtZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uNjM5MDE4ZmIxN2FmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWFJlbW90ZUZyYW1lLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU1vY2tPYmplY3QuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSZW1vdGVGcmFtZTsKKworY2xhc3MgQVhSZW1vdGVG
cmFtZSBmaW5hbCA6IHB1YmxpYyBBY2Nlc3NpYmlsaXR5TW9ja09iamVjdCB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFJlZjxBWFJlbW90ZUZyYW1lPiBjcmVhdGUoKTsKKworICAgIHZvaWQgaW5pdGlh
bGl6ZVBsYXRmb3JtRWxlbWVudFdpdGhSZW1vdGVUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhf
dD4sIGludCk7CisKKyAgICBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZ2VuZXJhdGVSZW1vdGVU
b2tlbigpIGNvbnN0OworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFJldGFpblB0cjxpZD4gcmVt
b3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3JlbW90ZUZy
YW1lUGxhdGZvcm1FbGVtZW50OyB9CisgICAgcGlkX3QgcHJvY2Vzc0lkZW50aWZpZXIoKSBjb25z
dCB7IHJldHVybiBtX3Byb2Nlc3NJZGVudGlmaWVyOyB9CisjZW5kaWYKKworcHJpdmF0ZToKKyAg
ICBleHBsaWNpdCBBWFJlbW90ZUZyYW1lKCk7CisgICAgdmlydHVhbCB+QVhSZW1vdGVGcmFtZSgp
ID0gZGVmYXVsdDsKKworICAgIEFjY2Vzc2liaWxpdHlSb2xlIGRldGVybWluZUFjY2Vzc2liaWxp
dHlSb2xlKCkgZmluYWwgeyByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlJlbW90ZUZyYW1lOyB9
CisgICAgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0FYUmVtb3RlRnJhbWUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiB0cnVlOyB9CisgICAgTGF5b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0IGZpbmFs
OworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgUmV0YWluUHRyPGlkPiBtX3JlbW90ZUZyYW1l
UGxhdGZvcm1FbGVtZW50OworICAgIHBpZF90IG1fcHJvY2Vzc0lkZW50aWZpZXI7CisjZW5kaWYK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19B
Q0NFU1NJQklMSVRZKEFYUmVtb3RlRnJhbWUsIGlzQVhSZW1vdGVGcmFtZSgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5k
ZXggM2UzMmRiMDkzYWZiLi5lOTIxZjA0NWQzMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtNTQ0LDcgKzU0NCwx
MCBAQCBGbG9hdFJlY3QgQWNjZXNzaWJpbGl0eU9iamVjdDo6Y29udmVydEZyYW1lVG9TcGFjZShj
b25zdCBGbG9hdFJlY3QmIGZyYW1lUmVjdCwgQQogICAgIAogRmxvYXRSZWN0IEFjY2Vzc2liaWxp
dHlPYmplY3Q6OnJlbGF0aXZlRnJhbWUoKSBjb25zdAogewotICAgIHJldHVybiBjb252ZXJ0RnJh
bWVUb1NwYWNlKGVsZW1lbnRSZWN0KCksIEFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2U6OlBh
Z2UpOworICAgIGF1dG8gcmVjdCA9IGVsZW1lbnRSZWN0KCk7CisgICAgYXV0byByZW1vdGVPZmZz
ZXQgPSByZW1vdGVGcmFtZU9mZnNldCgpOworICAgIHJlY3QubW92ZShyZW1vdGVPZmZzZXQueCgp
LCByZW1vdGVPZmZzZXQueSgpKTsKKyAgICByZXR1cm4gY29udmVydEZyYW1lVG9TcGFjZShyZWN0
LCBBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlOjpQYWdlKTsKIH0KIAogQWNjZXNzaWJpbGl0
eU9iamVjdCogQWNjZXNzaWJpbGl0eU9iamVjdDo6bmV4dFNpYmxpbmdVbmlnbm9yZWQoaW50IGxp
bWl0KSBjb25zdApAQCAtMjA4NSwxMyArMjA4OCwyMiBAQCBjb25zdCBBY2Nlc3NpYmlsaXR5U2Ny
b2xsVmlldyogQWNjZXNzaWJpbGl0eU9iamVjdDo6YW5jZXN0b3JBY2Nlc3NpYmlsaXR5U2Nyb2xs
VgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBSZW1vdGVBWE9iamVjdFJlZiBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpyZW1vdGVQYXJlbnRPYmplY3QoKSBjb25zdAoreworICAgIGF1dG8qIGRvY3VtZW50
ID0gdGhpcy0+ZG9jdW1lbnQoKTsKKyAgICBhdXRvKiBmcmFtZSA9IGRvY3VtZW50ID8gZG9jdW1l
bnQtPmZyYW1lKCkgOiBudWxscHRyOworICAgIHJldHVybiBmcmFtZSA/IGZyYW1lLT5sb2FkZXIo
KS5jbGllbnQoKS5hY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkgOiBudWxscHRyOworfQorCitJ
bnRQb2ludCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZW1vdGVGcmFtZU9mZnNldCgpIGNvbnN0CiB7
CiAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKSkgewogICAgICAgICBp
ZiAoYXV0byogZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUoKSkKLSAgICAgICAgICAgIHJldHVybiBm
cmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpOworICAg
ICAgICAgICAgcmV0dXJuIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5hY2Nlc3NpYmlsaXR5UmVt
b3RlRnJhbWVPZmZzZXQoKTsKICAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1
cm4geyB9OwogfQorCiAjZW5kaWYKIAogRG9jdW1lbnQqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRv
Y3VtZW50KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmgKaW5kZXggNGQyMGY1NWE1NDRjLi42ODQyYTcxOTQ4Y2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5o
CkBAIC0xMDIsNiArMTAyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9sbGJhcigpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0FYUmVtb3RlRnJhbWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3SW5zdGFuY2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBp
c0FjY2Vzc2liaWxpdHlTVkdSb290KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29s
IGlzQWNjZXNzaWJpbGl0eVRhYmxlSW5zdGFuY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQpAQCAtNDY0LDggKzQ2NSwxMiBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICBSZW1vdGVBWE9iamVjdFJlZiByZW1vdGVQYXJlbnRPYmplY3QoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBJbnRQb2ludCByZW1vdGVGcmFtZU9mZnNldCgpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIEZsb2F0UmVjdCBjb252ZXJ0UmVjdFRvUGxhdGZvcm1TcGFjZShjb25zdCBGbG9hdFJlY3Qm
LCBBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZXRh
aW5QdHI8aWQ+IHJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbmlsOyB9CiAjZW5kaWYKKyAgICBib29sIGhhc1JlbW90ZUZyYW1lQ2hpbGQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgUGFnZSogcGFnZSgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIExv
Y2FsRnJhbWVWaWV3KiBkb2N1bWVudEZyYW1lVmlldygpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHAKaW5kZXggZWU4YWJlYzNkN2I1Li4yZjEyZWY3NTNlNGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcApAQCAtMjQxMyw3ICsyNDEzLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjphZGRBdHRhY2htZW50Q2hpbGRyZW4oKQogCiAgICAgLy8gTG9jYWxGcmFtZVZpZXcn
cyBuZWVkIHRvIGJlIGluc2VydGVkIGludG8gdGhlIEFYIGhpZXJhcmNoeSB3aGVuIGVuY291bnRl
cmVkLgogICAgIFdpZGdldCogd2lkZ2V0ID0gd2lkZ2V0Rm9yQXR0YWNobWVudFZpZXcoKTsKLSAg
ICBpZiAoIXdpZGdldCB8fCAhd2lkZ2V0LT5pc0xvY2FsRnJhbWVWaWV3KCkpCisgICAgaWYgKCF3
aWRnZXQgfHwgISh3aWRnZXQtPmlzTG9jYWxGcmFtZVZpZXcoKSB8fCB3aWRnZXQtPmlzUmVtb3Rl
RnJhbWVWaWV3KCkpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgYWRkQ2hpbGQoYXhPYmpl
Y3RDYWNoZSgpLT5nZXRPckNyZWF0ZSh3aWRnZXQpKTsKQEAgLTI1NjgsNyArMjU2OCw3IEBAIHZv
aWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkQ2hpbGRyZW4oKQogICAgICAgICBhdXRv
IG93bmVycyA9IG9iamVjdC5vd25lcnMoKTsKICAgICAgICAgaWYgKG93bmVycy5zaXplKCkgJiYg
IW93bmVycy5jb250YWlucyh0aGlzKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisK
ICAgICAgICAgYWRkQ2hpbGQoJm9iamVjdCk7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcAppbmRl
eCAyYmJjMzA4N2I5ZjguLmIxZDlmMDczNTViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAKQEAgLTI3LDEw
ICsyNywxMiBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgiCiAKICNpbmNs
dWRlICJBWE9iamVjdENhY2hlLmgiCisjaW5jbHVkZSAiQVhSZW1vdGVGcmFtZS5oIgogI2luY2x1
ZGUgIkFjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVs
ZW1lbnQuaCIKICNpbmNsdWRlICJMb2NhbEZyYW1lLmgiCiAjaW5jbHVkZSAiTG9jYWxGcmFtZVZp
ZXcuaCIKKyNpbmNsdWRlICJSZW1vdGVGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJSZW5kZXJFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiV2lkZ2V0LmgiCiAKQEAgLTUyLDYgKzU0LDE0IEBAIEFjY2Vzc2li
aWxpdHlTY3JvbGxWaWV3Ojp+QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoKQogdm9pZCBBY2Nlc3Np
YmlsaXR5U2Nyb2xsVmlldzo6ZGV0YWNoUmVtb3RlUGFydHMoQWNjZXNzaWJpbGl0eURldGFjaG1l
bnRUeXBlIGRldGFjaG1lbnRUeXBlKQogewogICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRldGFj
aFJlbW90ZVBhcnRzKGRldGFjaG1lbnRUeXBlKTsKKworICAgIGF1dG8qIHJlbW90ZUZyYW1lVmll
dyA9IGR5bmFtaWNEb3duY2FzdDxSZW1vdGVGcmFtZVZpZXc+KG1fc2Nyb2xsVmlldy5nZXQoKSk7
CisgICAgaWYgKHJlbW90ZUZyYW1lVmlldyAmJiBtX3JlbW90ZUZyYW1lICYmIChkZXRhY2htZW50
VHlwZSA9PSBBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGU6OkVsZW1lbnREZXN0cm95ZWQgfHwg
ZGV0YWNobWVudFR5cGUgPT0gQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlOjpDYWNoZURlc3Ry
b3llZCkpIHsKKyAgICAgICAgYXV0byYgcmVtb3RlRnJhbWUgPSByZW1vdGVGcmFtZVZpZXctPmZy
YW1lKCk7CisgICAgICAgIHJlbW90ZUZyYW1lLnVuYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFt
ZXMobV9yZW1vdGVGcmFtZS0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgICAgIG1fcmVtb3Rl
RnJhbWUgPSBudWxscHRyOworICAgIH0KKwogICAgIG1fc2Nyb2xsVmlldyA9IG51bGxwdHI7CiAg
ICAgbV9mcmFtZU93bmVyRWxlbWVudCA9IG51bGxwdHI7CiB9CkBAIC0xNzcsOCArMTg3LDEwIEBA
IEFjY2Vzc2liaWxpdHlTY3JvbGxiYXIqIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjphZGRDaGls
ZFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjCiB2b2lkIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojpj
bGVhckNoaWxkcmVuKCkKIHsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjbGVhckNoaWxkcmVu
KCk7CisKICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyID0gbnVsbHB0cjsKICAgICBtX2hvcml6b250
YWxTY3JvbGxiYXIgPSBudWxscHRyOworCiAgICAgbV9jaGlsZHJlbkRpcnR5ID0gZmFsc2U7CiB9
CiAKQEAgLTE5MSwxMSArMjAzLDQyIEBAIGJvb2wgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmNv
bXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKICAgICByZXR1cm4gd2ViQXJlYS0+
YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpOwogfQogCit2b2lkIEFjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3OjphZGRSZW1vdGVGcmFtZUNoaWxkKCkKK3sKKyAgICBpZiAoIWlzPFJlbW90ZUZyYW1lVmll
dz4obV9zY3JvbGxWaWV3KSkKKyAgICAgICAgcmV0dXJuOworICAgIFdlYWtQdHIgY2FjaGUgPSBh
eE9iamVjdENhY2hlKCk7CisgICAgaWYgKCFjYWNoZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKCFtX3JlbW90ZUZyYW1lKSB7CisgICAgICAgIC8vIE1ha2UgdGhlIGZhdXggZWxlbWVudCB0
aGF0IHJlcHJlc2VudHMgdGhlIHJlbW90ZSB0cmFuc2ZlciBlbGVtZW50IGZvciBBWC4KKyAgICAg
ICAgYXV0byYgcmVtb3RlRnJhbWUgPSBkb3duY2FzdDxSZW1vdGVGcmFtZVZpZXc+KCptX3Njcm9s
bFZpZXcpLmZyYW1lKCk7CisgICAgICAgIG1fcmVtb3RlRnJhbWUgPSBkb3duY2FzdDxBWFJlbW90
ZUZyYW1lPihjYWNoZS0+Y3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpSZW1vdGVGcmFtZSkpOwor
ICAgICAgICBtX3JlbW90ZUZyYW1lLT5zZXRQYXJlbnQodGhpcyk7CisKKyAgICAgICAgLy8gR2Vu
ZXJhdGUgYSBuZXcgdG9rZW4gYW5kIHBhc3MgaXQgYmFjayB0byB0aGUgb3RoZXIgcmVtb3RlIGZy
YW1lIHNvIGl0IGNhbiBiaW5kIHRoZXNlIG9iamVjdHMgdG9nZXRoZXIuCisgICAgICAgIGF1dG8g
Z2VuZXJhdGVkVG9rZW4gPSBtX3JlbW90ZUZyYW1lLT5nZW5lcmF0ZVJlbW90ZVRva2VuKCk7Cisg
ICAgICAgIHJlbW90ZUZyYW1lLmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGdldHBpZCgp
LCBnZW5lcmF0ZWRUb2tlbiwgW3RoaXMsICZyZW1vdGVGcmFtZSwgcHJvdGVjdGVkQWNjZXNzYmls
aXR5UmVtb3RlRnJhbWUgPSBSZWZQdHIgeyBtX3JlbW90ZUZyYW1lIH1dIChzdGQ6OnNwYW48Y29u
c3QgdWludDhfdD4gdG9rZW4sIGludCBwcm9jZXNzSWRlbnRpZmllcikgbXV0YWJsZSB7CisjaWYg
T1MoREFSV0lOKQorICAgICAgICAgICAgcHJvdGVjdGVkQWNjZXNzYmlsaXR5UmVtb3RlRnJhbWUt
PmluaXRpYWxpemVQbGF0Zm9ybUVsZW1lbnRXaXRoUmVtb3RlVG9rZW4odG9rZW4sIHByb2Nlc3NJ
ZGVudGlmaWVyKTsKKyNlbmRpZgorICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSByZW1vdGUgc2lk
ZSB3aXRoIHRoZSBvZmZzZXQgb2YgdGhpcyBvYmplY3Qgc28gaXQgY2FuIGNhbGN1bGF0ZSBmcmFt
ZXMgY29ycmVjdGx5LgorICAgICAgICAgICAgYXV0byBsb2NhdGlvbiA9IGVsZW1lbnRSZWN0KCku
bG9jYXRpb24oKTsKKyAgICAgICAgICAgIHJlbW90ZUZyYW1lLnVwZGF0ZVJlbW90ZUZyYW1lQWNj
ZXNzaWJpbGl0eU9mZnNldChmbG9vcmVkSW50UG9pbnQobG9jYXRpb24pKTsKKyAgICAgICAgfSk7
CisgICAgfSBlbHNlCisgICAgICAgIG1fcmVtb3RlRnJhbWUtPnNldFBhcmVudCh0aGlzKTsKKwor
ICAgIGFkZENoaWxkKG1fcmVtb3RlRnJhbWUuZ2V0KCkpOworfQorCiB2b2lkIEFjY2Vzc2liaWxp
dHlTY3JvbGxWaWV3OjphZGRDaGlsZHJlbigpCiB7CiAgICAgQVNTRVJUKCFtX2NoaWxkcmVuSW5p
dGlhbGl6ZWQpOwogICAgIG1fY2hpbGRyZW5Jbml0aWFsaXplZCA9IHRydWU7CiAKKyAgICBhZGRS
ZW1vdGVGcmFtZUNoaWxkKCk7CiAgICAgYWRkQ2hpbGQod2ViQXJlYU9iamVjdCgpKTsKICAgICB1
cGRhdGVTY3JvbGxiYXJzKCk7CiB9CkBAIC0yMDMsNyArMjQ2LDcgQEAgdm9pZCBBY2Nlc3NpYmls
aXR5U2Nyb2xsVmlldzo6YWRkQ2hpbGRyZW4oKQogQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNz
aWJpbGl0eVNjcm9sbFZpZXc6OndlYkFyZWFPYmplY3QoKSBjb25zdAogewogICAgIGF1dG8qIGRv
Y3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsKLSAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVu
dC0+aGFzTGl2aW5nUmVuZGVyVHJlZSgpKQorICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50
LT5oYXNMaXZpbmdSZW5kZXJUcmVlKCkgfHwgbV9yZW1vdGVGcmFtZSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBpZiAoYXV0byogY2FjaGUgPSBheE9iamVjdENhY2hlKCkpCkBAIC0y
MzQsOSArMjc3LDE1IEBAIExheW91dFJlY3QgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmVsZW1l
bnRSZWN0KCkgY29uc3QKIAogRG9jdW1lbnQqIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojpkb2N1
bWVudCgpIGNvbnN0CiB7Ci0gICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGR5bmFtaWNEb3duY2Fz
dDxMb2NhbEZyYW1lVmlldz4obV9zY3JvbGxWaWV3LmdldCgpKSkgeworICAgIGlmIChhdXRvKiBm
cmFtZVZpZXcgPSBkeW5hbWljRG93bmNhc3Q8TG9jYWxGcmFtZVZpZXc+KG1fc2Nyb2xsVmlldy5n
ZXQoKSkpCiAgICAgICAgIHJldHVybiBmcmFtZVZpZXctPmZyYW1lKCkuZG9jdW1lbnQoKTsKKwor
ICAgIC8vIEZvciB0aGUgUmVtb3RlRnJhbWVWaWV3IGNhc2UsIHdlIG5lZWQgdG8gcmV0dXJuIHRo
ZSBkb2N1bWVudCBvZiBvdXIgaG9zdGluZyBwYXJlbnQgc28gYXhPYmplY3RDYWNoZSgpIHJlc29s
dmVzIGNvcnJlY3RseS4KKyAgICBpZiAoYXV0byogcmVtb3RlRnJhbWVWaWV3ID0gZHluYW1pY0Rv
d25jYXN0PFJlbW90ZUZyYW1lVmlldz4obV9zY3JvbGxWaWV3LmdldCgpKSkgeworICAgICAgICBp
ZiAoYXV0byogb3duZXIgPSByZW1vdGVGcmFtZVZpZXctPmZyYW1lKCkub3duZXJFbGVtZW50KCkp
CisgICAgICAgICAgICByZXR1cm4gJihvd25lci0+ZG9jdW1lbnQoKSk7CiAgICAgfQorCiAgICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRvY3VtZW50KCk7CiB9CiAKQEAgLTI1OSw4ICsz
MDgsMTAgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OnBh
cmVudE9iamVjdCgpIGNvbnN0CiAgICAgV2Vha1B0ciBvd25lciA9IG1fZnJhbWVPd25lckVsZW1l
bnQuZ2V0KCk7CiAgICAgaWYgKGF1dG8qIGxvY2FsRnJhbWVWaWV3ID0gZHluYW1pY0Rvd25jYXN0
PExvY2FsRnJhbWVWaWV3PihtX3Njcm9sbFZpZXcuZ2V0KCkpKQogICAgICAgICBvd25lciA9IGxv
Y2FsRnJhbWVWaWV3LT5mcmFtZSgpLm93bmVyRWxlbWVudCgpOworICAgIGVsc2UgaWYgKGF1dG8q
IHJlbW90ZUZyYW1lVmlldyA9IGR5bmFtaWNEb3duY2FzdDxSZW1vdGVGcmFtZVZpZXc+KG1fc2Ny
b2xsVmlldy5nZXQoKSkpCisgICAgICAgIG93bmVyID0gcmVtb3RlRnJhbWVWaWV3LT5mcmFtZSgp
Lm93bmVyRWxlbWVudCgpOwogCi0gICAgaWYgKGNhY2hlICYmIG93bmVyICYmIG93bmVyLT5yZW5k
ZXJlcigpKQorICAgIGlmIChvd25lciAmJiBvd25lci0+cmVuZGVyZXIoKSkKICAgICAgICAgcmV0
dXJuIGNhY2hlLT5nZXRPckNyZWF0ZShvd25lci5nZXQoKSk7CiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlTY3JvbGxWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlTY3JvbGxWaWV3LmgKaW5kZXggNTU3MDQ0NjcxYzdkLi41MjVhYzc4M2ZiYjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3LmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAorY2xh
c3MgQVhSZW1vdGVGcmFtZTsKIGNsYXNzIEFjY2Vzc2liaWxpdHlTY3JvbGxiYXI7CiBjbGFzcyBT
Y3JvbGxiYXI7CiBjbGFzcyBTY3JvbGxWaWV3OwpAQCAtNTQsNyArNTUsOCBAQCBwcml2YXRlOgog
ICAgIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdCBvdmVycmlkZTsK
ICAgICBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXdJbnN0YW5jZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIGlzRW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KLSAgICAKKyAgICBib29sIGhhc1JlbW90ZUZyYW1lQ2hpbGQoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3JlbW90ZUZyYW1lOyB9CisKICAgICBib29sIGlzQXR0YWNo
bWVudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFBsYXRmb3JtV2lkZ2V0IHBsYXRmb3JtV2lkZ2V0
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgV2lkZ2V0KiB3aWRnZXRGb3JBdHRhY2htZW50Vmlldygp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGN1cnJlbnRTY3JvbGxWaWV3KCk7IH0KQEAgLTY5LDYg
KzcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEZvY3VzZWQoYm9vbCkgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBjYW5TZXRGb2N1c0F0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wg
aXNGb2N1c2VkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGRSZW1vdGVGcmFtZUNoaWxk
KCk7CiAKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCBvdmVycmlkZTsKICAgICBMb2Nh
bEZyYW1lVmlldyogZG9jdW1lbnRGcmFtZVZpZXcoKSBjb25zdCBvdmVycmlkZTsKQEAgLTg1LDYg
Kzg4LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gbV9ob3Jp
em9udGFsU2Nyb2xsYmFyOwogICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBtX3ZlcnRp
Y2FsU2Nyb2xsYmFyOwogICAgIGJvb2wgbV9jaGlsZHJlbkRpcnR5OworICAgIFJlZlB0cjxBWFJl
bW90ZUZyYW1lPiBtX3JlbW90ZUZyYW1lOwogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVl
L0FYSXNvbGF0ZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29s
YXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKaW5kZXggMTAxNDU0NjI3OGYzLi4xNzdkOTM5
N2EwYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCkBAIC0zNzgsNiArMzc4LDEwIEBA
IHZvaWQgQVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoY29uc3QgUmVmPEFj
Y2Vzc2liaWxpdHlPYmplY3Q+JiBheE9iCiAjZW5kaWYKIAogICAgIHNldE9iamVjdFByb3BlcnR5
KEFYUHJvcGVydHlOYW1lOjpJbnRlcm5hbExpbmtFbGVtZW50LCBvYmplY3QuaW50ZXJuYWxMaW5r
RWxlbWVudCgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SGFzUmVtb3RlRnJh
bWVDaGlsZCwgb2JqZWN0Lmhhc1JlbW90ZUZyYW1lQ2hpbGQoKSk7CisgICAgLy8gRG9uJ3QgZHVw
bGljYXRlIHRoZSByZW1vdGVGcmFtZU9mZnNldCBmb3IgZXZlcnkgb2JqZWN0LiBKdXN0IHN0b3Jl
IGluIHRoZSBXZWJBcmVhLgorICAgIGlmIChvYmplY3QuaXNXZWJBcmVhKCkpCisgICAgICAgIHNl
dFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpSZW1vdGVGcmFtZU9mZnNldCwgb2JqZWN0LnJlbW90
ZUZyYW1lT2Zmc2V0KCkpOwogCiAgICAgaW5pdGlhbGl6ZVBsYXRmb3JtUHJvcGVydGllcyhheE9i
amVjdCk7CiB9CkBAIC00NjQsNiArNDY4LDcgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0OjpzZXRQ
cm9wZXJ0eShBWFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEFYUHJvcGVydHlWYWx1ZVYKICAg
ICAgICAgW10oT3B0aW9uU2V0PEFYQW5jZXN0b3JGbGFnPiYgdHlwZWRWYWx1ZSkgeyByZXR1cm4g
dHlwZWRWYWx1ZS5pc0VtcHR5KCk7IH0sCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIFtd
KFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+JiB0eXBlZFZhbHVlKSB7IHJldHVybiAhdHlw
ZWRWYWx1ZTsgfSwKKyAgICAgICAgW10oUmV0YWluUHRyPGlkPiYgdHlwZWRWYWx1ZSkgeyByZXR1
cm4gIXR5cGVkVmFsdWU7IH0sCiAjZW5kaWYKICAgICAgICAgW10oSW5zaWRlTGluayYgdHlwZWRW
YWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZSA9PSBJbnNpZGVMaW5rKCk7IH0sCiAgICAgICAgIFtd
KFZlY3RvcjxWZWN0b3I8QVhJRD4+JiB0eXBlZFZhbHVlKSB7IHJldHVybiB0eXBlZFZhbHVlLmlz
RW1wdHkoKTsgfSwKQEAgLTEyMDYsNiArMTIxMSwyMSBAQCBMYXlvdXRSZWN0IEFYSXNvbGF0ZWRP
YmplY3Q6OmVsZW1lbnRSZWN0KCkgY29uc3QKICAgICB9KTsKIH0KIAorSW50UG9pbnQgQVhJc29s
YXRlZE9iamVjdDo6cmVtb3RlRnJhbWVPZmZzZXQoKSBjb25zdAoreworICAgIGF1dG8qIHdlYkFy
ZWEgPSBBY2Nlc3NpYmlsaXR5OjpmaW5kQW5jZXN0b3I8QVhJc29sYXRlZE9iamVjdD4oKnRoaXMs
IGZhbHNlLCBbXSAoY29uc3QgYXV0byYgb2JqZWN0KSB7CisgICAgICAgIHJldHVybiBvYmplY3Qu
aXNXZWJBcmVhKCk7CisgICAgfSk7CisKKyAgICBpZiAoIXdlYkFyZWEpCisgICAgICAgIHJldHVy
biB7IH07CisKKyAgICBpZiAoYXV0byBwb2ludCA9IHdlYkFyZWEtPm9wdGlvbmFsQXR0cmlidXRl
VmFsdWU8SW50UG9pbnQ+KEFYUHJvcGVydHlOYW1lOjpSZW1vdGVGcmFtZU9mZnNldCkpCisgICAg
ICAgIHJldHVybiAqcG9pbnQ7CisKKyAgICByZXR1cm4geyB9OworfQorCiBGbG9hdFBvaW50IEFY
SXNvbGF0ZWRPYmplY3Q6OnNjcmVlblJlbGF0aXZlUG9zaXRpb24oKSBjb25zdAogewogICAgIGlm
IChhdXRvIHBvaW50ID0gb3B0aW9uYWxBdHRyaWJ1dGVWYWx1ZTxGbG9hdFBvaW50PihBWFByb3Bl
cnR5TmFtZTo6U2NyZWVuUmVsYXRpdmVQb3NpdGlvbikpCkBAIC0xMjI5LDIyICsxMjQ5LDIzIEBA
IEZsb2F0UG9pbnQgQVhJc29sYXRlZE9iamVjdDo6c2NyZWVuUmVsYXRpdmVQb3NpdGlvbigpIGNv
bnN0CiAKIEZsb2F0UmVjdCBBWElzb2xhdGVkT2JqZWN0OjpyZWxhdGl2ZUZyYW1lKCkgY29uc3QK
IHsKKyAgICBGbG9hdFJlY3QgcmVsYXRpdmVGcmFtZTsKKwogICAgIGlmIChhdXRvIGNhY2hlZFJl
bGF0aXZlRnJhbWUgPSBvcHRpb25hbEF0dHJpYnV0ZVZhbHVlPEludFJlY3Q+KEFYUHJvcGVydHlO
YW1lOjpSZWxhdGl2ZUZyYW1lKSkgewogICAgICAgICAvLyBXZSBzaG91bGQgbm90IGhhdmUgY2Fj
aGVkIGEgcmVsYXRpdmUgZnJhbWUgZm9yIGVsZW1lbnRzIHRoYXQgZ2V0IHRoZWlyIGdlb21ldHJ5
IGZyb20gdGhlaXIgY2hpbGRyZW4uCiAgICAgICAgIEFTU0VSVCghbV9nZXRzR2VvbWV0cnlGcm9t
Q2hpbGRyZW4pOwotICAgICAgICByZXR1cm4gKmNhY2hlZFJlbGF0aXZlRnJhbWU7Ci0gICAgfQot
Ci0gICAgaWYgKG1fZ2V0c0dlb21ldHJ5RnJvbUNoaWxkcmVuKSB7CisgICAgICAgIHJlbGF0aXZl
RnJhbWUgPSAqY2FjaGVkUmVsYXRpdmVGcmFtZTsKKyAgICB9IGVsc2UgaWYgKG1fZ2V0c0dlb21l
dHJ5RnJvbUNoaWxkcmVuKSB7CiAgICAgICAgIGF1dG8gZnJhbWUgPSBlbmNsb3NpbmdJbnRSZWN0
KHJlbGF0aXZlRnJhbWVGcm9tQ2hpbGRyZW4oKSk7CiAgICAgICAgIGlmICghZnJhbWUuaXNFbXB0
eSgpKQotICAgICAgICAgICAgcmV0dXJuIGZyYW1lOworICAgICAgICAgICAgcmVsYXRpdmVGcmFt
ZSA9IGZyYW1lOwogICAgICAgICAvLyBFaXRoZXIgd2UgaGFkIG5vIGNoaWxkcmVuLCBvciBvdXIg
Y2hpbGRyZW4gaGFkIGVtcHR5IGZyYW1lcy4gVGhlIHJpZ2h0IHRoaW5nIHRvIGRvIHdvdWxkIGJl
IHRvIHJldHVybgogICAgICAgICAvLyBhIHJlY3QgYXQgdGhlIHBvc2l0aW9uIG9mIHRoZSBuZWFy
ZXN0IHJlbmRlciB0cmVlIGFuY2VzdG9yIHdpdGggc29tZSBtYWRlLXVwIHNpemUgKEFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0Ojpib3VuZGluZ0JveFJlY3QgZG9lcyB0aGlzKS4KICAgICAgICAgLy8g
SG93ZXZlciwgd2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIHJlbmRlciB0cmVlIGluIHRoaXMg
Y29udGV4dCAob25seSB0aGUgQVggaXNvbGF0ZWQgdHJlZSwgd2hpY2ggaXMgdG9vIHNwYXJzZSBm
b3IgdGhpcyBwdXJwb3NlKSwgc28KICAgICAgICAgLy8gdW50aWwgd2UgY2FjaGUgdGhlIG5lY2Vz
c2FyeSBpbmZvcm1hdGlvbiBsZXQncyBnbyB0byB0aGUgbWFpbi10aHJlYWQuCiAgICAgfSBlbHNl
IGlmIChyb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uIHx8IHJvbGVWYWx1
ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJsZUhlYWRlckNvbnRhaW5lcikKLSAgICAgICAg
cmV0dXJuIGV4cG9zZWRUYWJsZUFuY2VzdG9yKCkgPyByZWxhdGl2ZUZyYW1lRnJvbUNoaWxkcmVu
KCkgOiBGbG9hdFJlY3QoKTsKKyAgICAgICAgcmVsYXRpdmVGcmFtZSA9IGV4cG9zZWRUYWJsZUFu
Y2VzdG9yKCkgPyByZWxhdGl2ZUZyYW1lRnJvbUNoaWxkcmVuKCkgOiBGbG9hdFJlY3QoKTsKKwog
CiAgICAgLy8gTW9jayBvYmplY3RzIGFuZCBTVkcgb2JqZWN0cyBuZWVkIHVzZSB0aGUgbWFpbiB0
aHJlYWQgc2luY2UgdGhleSBkbyBub3QgaGF2ZSByZW5kZXIgbm9kZXMgYW5kIGFyZSBub3QgcGFp
bnRlZCB3aXRoIGxheWVycywgcmVzcGVjdGl2ZWx5LgogICAgIC8vIEZJWE1FOiBSZW1vdmUgaXNO
b25MYXllclNWR09iamVjdCB3aGVuIExCU0UgaXMgZW5hYmxlZCAmIFNWRyBmcmFtZXMgYXJlIGNh
Y2hlZC4KQEAgLTEyNjYsNiArMTI4Nyw4IEBAIEZsb2F0UmVjdCBBWElzb2xhdGVkT2JqZWN0Ojpy
ZWxhdGl2ZUZyYW1lKCkgY29uc3QKICAgICBpZiAoYW5jZXN0b3IgJiYgZnJhbWVSZWN0LmxvY2F0
aW9uKCkgPT0gRmxvYXRQb2ludCgpKQogICAgICAgICBmcmFtZVJlY3Quc2V0TG9jYXRpb24oYW5j
ZXN0b3ItPnJlbGF0aXZlRnJhbWUoKS5sb2NhdGlvbigpKTsKIAorICAgIGF1dG8gcmVtb3RlT2Zm
c2V0ID0gcmVtb3RlRnJhbWVPZmZzZXQoKTsKKyAgICBmcmFtZVJlY3QubW92ZUJ5KEZsb2F0UG9p
bnQocmVtb3RlT2Zmc2V0KSk7CiAgICAgcmV0dXJuIGZyYW1lUmVjdDsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9i
amVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZE9iamVjdC5oCmluZGV4IGQyYTY2YzJmNTNlNC4uZGU4MjdkNWZlMDE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2Jq
ZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJ
c29sYXRlZE9iamVjdC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJ
VFlfSVNPTEFURURfVFJFRSkKIAogI2luY2x1ZGUgIkFYQ29yZU9iamVjdC5oIgorI2luY2x1ZGUg
IkFYSXNvbGF0ZWRUcmVlLmgiCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUg
IkludFBvaW50LmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgpAQCAtMjE1LDYgKzIxNiw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBpc0ZpbGVVcGxvYWRCdXR0b24oKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzRmlsZVVwbG9hZEJ1dHRv
bik7IH0KICAgICBib29sIGlzTWV0ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBib29sQXR0cmli
dXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWV0ZXIpOyB9OwogICAgIEZsb2F0UG9pbnQgc2Ny
ZWVuUmVsYXRpdmVQb3NpdGlvbigpIGNvbnN0IGZpbmFsOworICAgIEludFBvaW50IHJlbW90ZUZy
YW1lT2Zmc2V0KCkgY29uc3QgZmluYWw7CiAgICAgRmxvYXRSZWN0IHJlbGF0aXZlRnJhbWUoKSBj
b25zdCBmaW5hbDsKICAgICBib29sIGhhc0NhY2hlZFJlbGF0aXZlRnJhbWUoKSBjb25zdCB7IHJl
dHVybiBvcHRpb25hbEF0dHJpYnV0ZVZhbHVlPEludFJlY3Q+KEFYUHJvcGVydHlOYW1lOjpSZWxh
dGl2ZUZyYW1lKS5oYXNfdmFsdWUoKTsgfQogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTI2Myw3ICsy
NjUsNyBAQCBwcml2YXRlOgogICAgIEFYSXNvbGF0ZWRPYmplY3QqIGFjY2Vzc2liaWxpdHlIaXRU
ZXN0KGNvbnN0IEludFBvaW50JikgY29uc3QgZmluYWw7CiAgICAgQVhJc29sYXRlZE9iamVjdCog
Zm9jdXNlZFVJRWxlbWVudCgpIGNvbnN0IGZpbmFsOwogICAgIEFYQ29yZU9iamVjdCogaW50ZXJu
YWxMaW5rRWxlbWVudCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG9iamVjdEF0dHJpYnV0ZVZhbHVl
KEFYUHJvcGVydHlOYW1lOjpJbnRlcm5hbExpbmtFbGVtZW50KTsgfQotICAgIEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciByYWRpb0J1dHRvbkdyb3VwKCkgY29uc3QgeyByZXR1cm4gdHJlZSgp
LT5vYmplY3RzRm9ySURzKHZlY3RvckF0dHJpYnV0ZVZhbHVlPEFYSUQ+KEFYUHJvcGVydHlOYW1l
OjpSYWRpb0J1dHRvbkdyb3VwKSk7IH0KKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Ig
cmFkaW9CdXR0b25Hcm91cCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRyZWUoKS0+b2JqZWN0c0Zv
cklEcyh2ZWN0b3JBdHRyaWJ1dGVWYWx1ZTxBWElEPihBWFByb3BlcnR5TmFtZTo6UmFkaW9CdXR0
b25Hcm91cCkpOyB9CiAgICAgQVhJc29sYXRlZE9iamVjdCogc2Nyb2xsQmFyKEFjY2Vzc2liaWxp
dHlPcmllbnRhdGlvbikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nIHBsYWNlaG9sZGVyVmFsdWUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFt
ZTo6UGxhY2Vob2xkZXJWYWx1ZSk7IH0KICAgICBTdHJpbmcgZXhwYW5kZWRUZXh0VmFsdWUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6
RXhwYW5kZWRUZXh0VmFsdWUpOyB9CkBAIC00NTYsNyArNDU4LDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIGlzQWNjZXNzaWJpbGl0eUFSSUFHcmlkSW5zdGFuY2UoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBmYWxzZTsgfQogICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3dJbnN0YW5jZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlB
UklBR3JpZENlbGxJbnN0YW5jZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9Ci0KKyAg
ICBib29sIGlzQVhSZW1vdGVGcmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgYm9vbCBpc05hdGl2ZVRleHRDb250cm9sKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc0xp
c3RCb3hPcHRpb24oKSBjb25zdCBmaW5hbDsKICAgICBib29sIGlzTW9ja09iamVjdCgpIGNvbnN0
IGZpbmFsOwpAQCAtNTM3LDcgKzUzOSw5IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG5hbWVBdHRy
aWJ1dGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3Bl
cnR5TmFtZTo6TmFtZUF0dHJpYnV0ZSk7IH0KICNpZiBQTEFURk9STShDT0NPQSkKICAgICBib29s
IGhhc0FwcGxlUERGQW5ub3RhdGlvbkF0dHJpYnV0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGJv
b2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SGFzQXBwbGVQREZBbm5vdGF0aW9uQXR0
cmlidXRlKTsgfQorICAgIFJldGFpblB0cjxpZD4gcmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQo
KSBjb25zdCBmaW5hbDsKICNlbmRpZgorICAgIGJvb2wgaGFzUmVtb3RlRnJhbWVDaGlsZCgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SGFz
UmVtb3RlRnJhbWVDaGlsZCk7IH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTU9E
RUxfRUxFTUVOVCkKICAgICBWZWN0b3I8UmV0YWluUHRyPGlkPj4gbW9kZWxFbGVtZW50Q2hpbGRy
ZW4oKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAppbmRleCA2OTY2NTg0NDhmNjUuLjFi
ZTNiNzk5MDUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29s
YXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcApAQCAtMzAsNiArMzAsNyBAQAog
CiAjaW5jbHVkZSAiQVhJc29sYXRlZE9iamVjdC5oIgogI2luY2x1ZGUgIkFYTG9nZ2VyLmgiCisj
aW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRh
YmxlUm93LmgiCiAjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24uaCIKICNpbmNsdWRlICJMb2NhbEZy
YW1lVmlldy5oIgpAQCAtMjI1LDQ2ICsyMjYsMjYgQEAgUmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+
IEFYSXNvbGF0ZWRUcmVlOjpvYmplY3RGb3JJRChjb25zdCBBWElEIGF4SUQpIGNvbnN0CiAgICAg
cmV0dXJuIGF4SUQuaXNWYWxpZCgpID8gbV9yZWFkZXJUaHJlYWROb2RlTWFwLmdldChheElEKSA6
IG51bGxwdHI7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFU+Ci1WZWN0b3I8UmVmUHRyPEFYQ29y
ZU9iamVjdD4+IEFYSXNvbGF0ZWRUcmVlOjpvYmplY3RzRm9ySURzKGNvbnN0IFUmIGF4SURzKQor
UmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+IEFYSXNvbGF0ZWRUcmVlOjpmZXRjaE9iamVjdEZvcklE
RnJvbU1haW5UaHJlYWQoY29uc3QgQVhJRCBheElEKSBjb25zdAogewotICAgIEFTU0VSVCghaXNN
YWluVGhyZWFkKCkpOwotCi0gICAgVmVjdG9yPFJlZlB0cjxBWENvcmVPYmplY3Q+PiByZXN1bHQ7
Ci0gICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYXhJRHMuc2l6ZSgpKTsKLSAgICBm
b3IgKGNvbnN0IGF1dG8mIGF4SUQgOiBheElEcykgewotICAgICAgICBSZWZQdHIgb2JqZWN0ID0g
b2JqZWN0Rm9ySUQoYXhJRCk7Ci0gICAgICAgIGlmIChvYmplY3QpIHsKLSAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoV1RGTW92ZShvYmplY3QpKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICB9Ci0KLSAgICAgICAgLy8gVGhlcmUgaXMgbm8gaXNvbGF0ZWQgb2JqZWN0IGZvciB0aGlz
IEFYSUQuIFRoaXMgY2FuIGhhcHBlbiBpZiB0aGUgY29ycmVzcG9uZGluZyBsaXZlIG9iamVjdCBp
cyBpZ25vcmVkLgotICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIGxpdmUgb2JqZWN0IGZvciB0aGlz
IElEIGFuZCBpdCBpcyBhbiBpZ25vcmVkIHRhcmdldCBvZiBhIHJlbGF0aW9uc2hpcCwgY3JlYXRl
IGFuIGlzb2xhdGVkIG9iamVjdCBmb3IgaXQuCi0gICAgICAgIG9iamVjdCA9IEFjY2Vzc2liaWxp
dHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4+
KFsmYXhJRCwgdGhpc10gKCkgLT4gUmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+IHsKLSAgICAgICAg
ICAgIGF1dG8qIGNhY2hlID0gYXhPYmplY3RDYWNoZSgpOwotICAgICAgICAgICAgaWYgKCFjYWNo
ZSB8fCAhY2FjaGUtPnJlbGF0aW9uVGFyZ2V0SURzKCkuY29udGFpbnMoYXhJRCkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAgICAgICAgIFJlZlB0ciBheE9iamVjdCA9
IGNhY2hlLT5vYmplY3RGb3JJRChheElEKTsKLSAgICAgICAgICAgIGlmICghYXhPYmplY3QgfHwg
IWF4T2JqZWN0LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0KLSAgICAgICAgICAgIGF1dG8gb2JqZWN0ID0gQVhJc29sYXRlZE9iamVj
dDo6Y3JlYXRlKCpheE9iamVjdCwgY29uc3RfY2FzdDxBWElzb2xhdGVkVHJlZSo+KHRoaXMpKTsK
LSAgICAgICAgICAgIEFTU0VSVChheE9iamVjdC0+d3JhcHBlcigpKTsKLSAgICAgICAgICAgIG9i
amVjdC0+YXR0YWNoUGxhdGZvcm1XcmFwcGVyKGF4T2JqZWN0LT53cmFwcGVyKCkpOwotICAgICAg
ICAgICAgcmV0dXJuIG9iamVjdDsKLSAgICAgICAgfSk7Ci0gICAgICAgIGlmIChvYmplY3QpIHsK
LSAgICAgICAgICAgIG1fcmVhZGVyVGhyZWFkTm9kZU1hcC5hZGQoYXhJRCwgKm9iamVjdCk7Ci0g
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKFdURk1vdmUob2JqZWN0KSk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgcmVzdWx0LnNocmlua1RvRml0KCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICAv
LyBUaGVyZSBpcyBubyBpc29sYXRlZCBvYmplY3QgZm9yIHRoaXMgQVhJRC4gVGhpcyBjYW4gaGFw
cGVuIGlmIHRoZSBjb3JyZXNwb25kaW5nIGxpdmUgb2JqZWN0IGlzIGlnbm9yZWQuCisgICAgLy8g
SWYgdGhlcmUgaXMgYSBsaXZlIG9iamVjdCBmb3IgdGhpcyBJRCBhbmQgaXQgaXMgYW4gaWdub3Jl
ZCB0YXJnZXQgb2YgYSByZWxhdGlvbnNoaXAsIGNyZWF0ZSBhbiBpc29sYXRlZCBvYmplY3QgZm9y
IGl0LgorICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJl
YWQ8UmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+PihbJmF4SUQsIHRoaXNdICgpIC0+IFJlZlB0cjxB
WElzb2xhdGVkT2JqZWN0PiB7CisgICAgICAgIGF1dG8qIGNhY2hlID0gYXhPYmplY3RDYWNoZSgp
OworICAgICAgICBpZiAoIWNhY2hlIHx8ICFjYWNoZS0+cmVsYXRpb25UYXJnZXRJRHMoKS5jb250
YWlucyhheElEKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIFJlZlB0
ciBheE9iamVjdCA9IGNhY2hlLT5vYmplY3RGb3JJRChheElEKTsKKyAgICAgICAgaWYgKCFheE9i
amVjdCB8fCAhYXhPYmplY3QtPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgICAgIGF1dG8gb2JqZWN0ID0gQVhJc29sYXRlZE9iamVj
dDo6Y3JlYXRlKCpheE9iamVjdCwgY29uc3RfY2FzdDxBWElzb2xhdGVkVHJlZSo+KHRoaXMpKTsK
KyAgICAgICAgQVNTRVJUKGF4T2JqZWN0LT53cmFwcGVyKCkpOworICAgICAgICBvYmplY3QtPmF0
dGFjaFBsYXRmb3JtV3JhcHBlcihheE9iamVjdC0+d3JhcHBlcigpKTsKKyAgICAgICAgcmV0dXJu
IG9iamVjdDsKKyAgICB9KTsKIH0KIAotCiB2b2lkIEFYSXNvbGF0ZWRUcmVlOjpnZW5lcmF0ZVN1
YnRyZWUoQWNjZXNzaWJpbGl0eU9iamVjdCYgYXhPYmplY3QpCiB7CiAgICAgQVhUUkFDRSgiQVhJ
c29sYXRlZFRyZWU6OmdlbmVyYXRlU3VidHJlZSJfcyk7CkBAIC02NjAsNiArNjQxLDEyIEBAIHZv
aWQgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZU5vZGVQcm9wZXJ0aWVzKEFYQ29yZU9iamVjdCYgYXhP
YmplY3QsIGNvbnN0IEFYUHJvcGVyCiAgICAgICAgIGNhc2UgQVhQcm9wZXJ0eU5hbWU6OlBvc0lu
U2V0OgogICAgICAgICAgICAgcHJvcGVydHlNYXAuc2V0KEFYUHJvcGVydHlOYW1lOjpQb3NJblNl
dCwgYXhPYmplY3QucG9zSW5TZXQoKSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBBWFByb3BlcnR5TmFtZTo6UmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQ6CisgICAgICAgICAg
ICBwcm9wZXJ0eU1hcC5zZXQoQVhQcm9wZXJ0eU5hbWU6OlJlbW90ZUZyYW1lUGxhdGZvcm1FbGVt
ZW50LCBheE9iamVjdC5yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEFYUHJvcGVydHlOYW1lOjpIYXNSZW1vdGVGcmFtZUNoaWxk
OgorICAgICAgICAgICAgcHJvcGVydHlNYXAuc2V0KEFYUHJvcGVydHlOYW1lOjpIYXNSZW1vdGVG
cmFtZUNoaWxkLCBheE9iamVjdC5oYXNSZW1vdGVGcmFtZUNoaWxkKCkpOworICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgQVhQcm9wZXJ0eU5hbWU6OlJvbGVEZXNjcmlwdGlvbjoKICAg
ICAgICAgICAgIHByb3BlcnR5TWFwLnNldChBWFByb3BlcnR5TmFtZTo6Um9sZURlc2NyaXB0aW9u
LCBheE9iamVjdC5yb2xlRGVzY3JpcHRpb24oKS5pc29sYXRlZENvcHkoKSk7CiAgICAgICAgICAg
ICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0
ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4IGE0MTc5Mjc5NzhkMi4uNmI0YzVlODMz
MWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkVHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKQEAgLTEwNCw2ICsxMDQsNyBAQCBlbnVtIGNsYXNz
IEFYUHJvcGVydHlOYW1lIDogdWludDE2X3QgewogICAgIEhhc0hpZ2hsaWdodGluZywKICAgICBI
YXNJdGFsaWNGb250LAogICAgIEhhc1BsYWluVGV4dCwKKyAgICBIYXNSZW1vdGVGcmFtZUNoaWxk
LAogICAgIEhhc1VuZGVybGluZSwKICAgICBIZWFkZXJDb250YWluZXIsCiAgICAgSGVhZGluZ0xl
dmVsLApAQCAtMjAxLDYgKzIwMiw4IEBAIGVudW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUgOiB1aW50
MTZfdCB7CiAgICAgUHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaCwKICAgICBSYWRpb0J1
dHRvbkdyb3VwLAogICAgIFJlbGF0aXZlRnJhbWUsCisgICAgUmVtb3RlRnJhbWVPZmZzZXQsCisg
ICAgUmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQsCiAgICAgUm9sZVZhbHVlLAogICAgIFJvbGVQ
bGF0Zm9ybVN0cmluZywKICAgICBSb2xlRGVzY3JpcHRpb24sCkBAIC0yNTcsNiArMjYwLDcgQEAg
dXNpbmcgQVhQcm9wZXJ0eU5hbWVTZXQgPSBIYXNoU2V0PEFYUHJvcGVydHlOYW1lLCBJbnRIYXNo
PEFYUHJvcGVydHlOYW1lPiwgV1RGOjoKIHVzaW5nIEFYUHJvcGVydHlWYWx1ZVZhcmlhbnQgPSBz
dGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIEFYSUQsIFN0cmluZywgYm9vbCwgaW50LCB1bnNp
Z25lZCwgZG91YmxlLCBmbG9hdCwgdWludDY0X3QsIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZSwg
Q29sb3IsIFVSTCwgTGF5b3V0UmVjdCwgRmxvYXRQb2ludCwgRmxvYXRSZWN0LCBJbnRQb2ludCwg
SW50UmVjdCwgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4sIFZlY3RvcjxBY2Nlc3NpYmls
aXR5VGV4dD4sIFZlY3RvcjxBWElEPiwgVmVjdG9yPHN0ZDo6cGFpcjxBWElELCBBWElEPj4sIFZl
Y3RvcjxTdHJpbmc+LCBQYXRoLCBPcHRpb25TZXQ8QVhBbmNlc3RvckZsYWc+LCBJbnNpZGVMaW5r
LCBWZWN0b3I8VmVjdG9yPEFYSUQ+PiwgQ2hhcmFjdGVyUmFuZ2UsIHN0ZDo6cGFpcjxBWElELCBD
aGFyYWN0ZXJSYW5nZT4KICNpZiBQTEFURk9STShDT0NPQSkKICAgICAsIFJldGFpblB0cjxOU0F0
dHJpYnV0ZWRTdHJpbmc+CisgICAgLCBSZXRhaW5QdHI8aWQ+CiAjZW5kaWYKICNpZiBFTkFCTEUo
QVhfVEhSRUFEX1RFWFRfQVBJUykKICAgICAsIEFYVGV4dFJ1bnMKQEAgLTM5Nyw2ICs0MDEsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlRW1wdHlDb250ZW50KEFjY2Vzc2liaWxpdHlPYmpl
Y3QmKTsKICAgICBjb25zdGV4cHIgYm9vbCBpc1VwZGF0aW5nU3VidHJlZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcm9vdE9mU3VidHJlZUJlaW5nVXBkYXRlZDsgfQogICAgIGNvbnN0ZXhwciB2b2lkIHVw
ZGF0aW5nU3VidHJlZShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCkgeyBtX3Jvb3RPZlN1
YnRyZWVCZWluZ1VwZGF0ZWQgPSBheE9iamVjdDsgfQorICAgIFJlZlB0cjxBWElzb2xhdGVkT2Jq
ZWN0PiBmZXRjaE9iamVjdEZvcklERnJvbU1haW5UaHJlYWQoY29uc3QgQVhJRCkgY29uc3Q7CiAK
ICAgICBlbnVtIGNsYXNzIEF0dGFjaFdyYXBwZXIgOiBib29sIHsgT25NYWluVGhyZWFkLCBPbkFY
VGhyZWFkIH07CiAgICAgc3RydWN0IE5vZGVDaGFuZ2UgewpAQCAtNDk3LDYgKzUwMiwzMCBAQCBp
bmxpbmUgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJ
RChzdGQ6Om9wdGlvbmFsPFBhZ2VJZAogICAgIHJldHVybiBwYWdlSUQgPyB0cmVlRm9yUGFnZUlE
KCpwYWdlSUQpIDogbnVsbHB0cjsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVT4KK2lubGluZSBW
ZWN0b3I8UmVmUHRyPEFYQ29yZU9iamVjdD4+IEFYSXNvbGF0ZWRUcmVlOjpvYmplY3RzRm9ySURz
KGNvbnN0IFUmIGF4SURzKQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworCisgICAg
VmVjdG9yPFJlZlB0cjxBWENvcmVPYmplY3Q+PiByZXN1bHQ7CisgICAgcmVzdWx0LnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkoYXhJRHMuc2l6ZSgpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGF4SUQg
OiBheElEcykgeworICAgICAgICBSZWZQdHIgb2JqZWN0ID0gb2JqZWN0Rm9ySUQoYXhJRCk7Cisg
ICAgICAgIGlmIChvYmplY3QpIHsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoV1RGTW92ZShv
YmplY3QpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgb2Jq
ZWN0ID0gZmV0Y2hPYmplY3RGb3JJREZyb21NYWluVGhyZWFkKGF4SUQpOworICAgICAgICBpZiAo
b2JqZWN0KSB7CisgICAgICAgICAgICBtX3JlYWRlclRocmVhZE5vZGVNYXAuYWRkKGF4SUQsICpv
YmplY3QpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChXVEZNb3ZlKG9iamVjdCkpOworICAg
ICAgICB9CisgICAgfQorICAgIHJlc3VsdC5zaHJpbmtUb0ZpdCgpOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9tYWMvQVhJc29sYXRlZE9i
amVjdE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL21h
Yy9BWElzb2xhdGVkT2JqZWN0TWFjLm1tCmluZGV4IGFkYjdlYzY0ODM0NS4uZTAyZGEwZDExMmI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9t
YWMvQVhJc29sYXRlZE9iamVjdE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9tYWMvQVhJc29sYXRlZE9iamVjdE1hYy5tbQpAQCAtNjMsNiArNjMs
OCBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVQbGF0Zm9ybVByb3BlcnRpZXMo
Y29uc3QgUmVmPGNvbnN0IEFjY2Vzc2liaWxpdAogICAgICAgICB9CiAgICAgfQogCisgICAgc2V0
UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50LCBvYmpl
Y3QtPnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkpOworCiAgICAgLy8gQ2FjaGUgdGhlIFN0
cmluZ1ZhbHVlIG9ubHkgaWYgaXQgZGlmZmVycyBmcm9tIHRoZSBBdHRyaWJ1dGVkVGV4dC4KICAg
ICBhdXRvIHZhbHVlID0gb2JqZWN0LT5zdHJpbmdWYWx1ZSgpOwogICAgIGlmICghYXR0cmlidXRl
ZFRleHQgfHwgdmFsdWUgIT0gU3RyaW5nKFthdHRyaWJ1dGVkVGV4dCBzdHJpbmddKSkKQEAgLTIw
Miw2ICsyMDQsMTEgQEAgdW5zaWduZWQgQVhJc29sYXRlZE9iamVjdDo6dGV4dExlbmd0aCgpIGNv
bnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKK1JldGFpblB0cjxpZD4gQVhJc29sYXRlZE9iamVjdDo6
cmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKSBjb25zdAoreworICAgIHJldHVybiBwcm9wZXJ0
eVZhbHVlPFJldGFpblB0cjxpZD4+KEFYUHJvcGVydHlOYW1lOjpSZW1vdGVGcmFtZVBsYXRmb3Jt
RWxlbWVudCk7Cit9CisKIFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+IEFYSXNvbGF0ZWRP
YmplY3Q6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UoQVhUZXh0TWFya2VyUmFu
Z2UmJiBtYXJrZXJSYW5nZSwgU3BlbGxDaGVjayBzcGVsbENoZWNrKSBjb25zdAogewogICAgIGlm
ICghbWFya2VyUmFuZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbQppbmRleCBiYTJhY2NkODBkMDQuLmJh
YjliZjAyOWJkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
QWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1w
b3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKIAorI2ltcG9y
dCAiQVhSZW1vdGVGcmFtZS5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUxhYmVsLmgiCiAjaW1w
b3J0ICJBY2Nlc3NpYmlsaXR5TGlzdC5oIgogI2ltcG9ydCAiQ29sb3JDb2NvYS5oIgpAQCAtNTEs
NiArNTIsNyBAQAogI2ltcG9ydCAiV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMuaCIK
ICNpbXBvcnQgIldpZGdldC5oIgogCisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TQWNjZXNzaWJp
bGl0eVNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNTcGVsbENoZWNrZXJTUEkuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzQ5LDYgKzc1MSwzMCBAQCBSZXRhaW5QdHI8TlNBdHRy
aWJ1dGVkU3RyaW5nPiBhdHRyaWJ1dGVkU3RyaW5nQ3JlYXRlKE5vZGUqIG5vZGUsIFN0cmluZ1Zp
ZXcgdGV4dAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0ZDo6c3Bhbjxjb25zdCB1aW50OF90
PiBBWFJlbW90ZUZyYW1lOjpnZW5lcmF0ZVJlbW90ZVRva2VuKCkgY29uc3QKK3sKKyNpZiBQTEFU
Rk9STShNQUMpCisgICAgLy8gV2UgdXNlIHRoZSBwYXJlbnQncyB3cmFwcGVyIHNvIHRoYXQgdGhl
IHJlbW90ZSBmcmFtZSBhY3RzIGFzIGEgcGFzcyB0aHJvdWdoIGZvciB0aGUgcmVtb3RlIHRva2Vu
IGJyaWRnZS4KKyAgICBOU0RhdGEgKmRhdGEgPSBbTlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlFbGVt
ZW50IHJlbW90ZVRva2VuRm9yTG9jYWxVSUVsZW1lbnQ6cGFyZW50T2JqZWN0KCktPndyYXBwZXIo
KV07CisgICAgcmV0dXJuIHN0ZDo6c3BhbihzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW2Rh
dGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7CisjZWxzZQorICAgIC8vIEZJWE1FOiBTdXBwb3J0
IGlPUworICAgIHJldHVybiB7IH0KKyNlbmRpZgorfQorCit2b2lkIEFYUmVtb3RlRnJhbWU6Omlu
aXRpYWxpemVQbGF0Zm9ybUVsZW1lbnRXaXRoUmVtb3RlVG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVp
bnQ4X3Q+IHRva2VuLCBpbnQgcHJvY2Vzc0lkZW50aWZpZXIpCit7CisjaWYgUExBVEZPUk0oTUFD
KQorICAgIG1fcHJvY2Vzc0lkZW50aWZpZXIgPSBwcm9jZXNzSWRlbnRpZmllcjsKKyAgICBbd3Jh
cHBlcigpIGFjY2Vzc2liaWxpdHlTZXRQcmVzZW50ZXJQcm9jZXNzSWRlbnRpZmllcjpwcm9jZXNz
SWRlbnRpZmllcl07CisgICAgTlNEYXRhICp0b2tlbkRhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0
ZXM6dG9rZW4uZGF0YSgpIGxlbmd0aDp0b2tlbi5zaXplKCldOworICAgIG1fcmVtb3RlRnJhbWVQ
bGF0Zm9ybUVsZW1lbnQgPSBhZG9wdE5TKFtbTlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlFbGVtZW50
IGFsbG9jXSBpbml0V2l0aFJlbW90ZVRva2VuOnRva2VuRGF0YV0pOworCisgICAgYXhPYmplY3RD
YWNoZSgpLT5vblJlbW90ZUZyYW1lSW5pdGlhbGl6ZWQoKnRoaXMpOworI2VuZGlmCit9CisKIG5h
bWVzcGFjZSBBY2Nlc3NpYmlsaXR5IHsKIAogUGxhdGZvcm1Sb2xlTWFwIGNyZWF0ZVBsYXRmb3Jt
Um9sZU1hcCgpCkBAIC04OTEsNiArOTE3LDcgQEAgUGxhdGZvcm1Sb2xlTWFwIGNyZWF0ZVBsYXRm
b3JtUm9sZU1hcCgpCiAgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlN1cGVyc2NyaXB0LCBO
U0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKICAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6
TW9kZWwsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAogICAgICAgICB7IEFjY2Vzc2liaWxp
dHlSb2xlOjpTdWdnZXN0aW9uLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAg
eyBBY2Nlc3NpYmlsaXR5Um9sZTo6UmVtb3RlRnJhbWUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9s
ZSB9LAogICAgIH07CiAgICAgUGxhdGZvcm1Sb2xlTWFwIHJvbGVNYXA7CiAgICAgZm9yIChhdXRv
JiByb2xlIDogcm9sZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0K
aW5kZXggNjM1N2ZhN2MyNzFiLi40MWY0ZDg0NWQxYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlckJhc2UubW0KQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgIkFYQ29yZU9i
amVjdC5oIgogI2ltcG9ydCAiQVhJc29sYXRlZE9iamVjdC5oIgogI2ltcG9ydCAiQVhPYmplY3RD
YWNoZS5oIgorI2ltcG9ydCAiQVhSZW1vdGVGcmFtZS5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0
eUFSSUFHcmlkUm93LmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5TGlzdC5oIgogI2ltcG9ydCAi
QWNjZXNzaWJpbGl0eUxpc3RCb3guaCIKQEAgLTI2NSwxMyArMjY2LDEzIEBAIE5TQXJyYXkgKm1h
a2VOU0FycmF5KGNvbnN0IFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJiBjCiAgICAgICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgICAgIGF1dG8gd3Jh
cHBlciA9IGNoaWxkLT53cmFwcGVyKCk7Ci0KICAgICAgICAgLy8gV2Ugd2FudCB0byByZXR1cm4g
dGhlIGF0dGFjaG1lbnQgdmlldyBpbnN0ZWFkIG9mIHRoZSBvYmplY3QgcmVwcmVzZW50aW5nIHRo
ZSBhdHRhY2htZW50LAogICAgICAgICAvLyBvdGhlcndpc2UsIHdlIGdldCBwYWxpbmRyb21lIGVy
cm9ycyBpbiB0aGUgQVggaGllcmFyY2h5LgogICAgICAgICBpZiAoY2hpbGQtPmlzQXR0YWNobWVu
dCgpKSB7CiAgICAgICAgICAgICBpZiAoaWQgYXR0YWNobWVudFZpZXcgPSB3cmFwcGVyLmF0dGFj
aG1lbnRWaWV3KQogICAgICAgICAgICAgICAgIHJldHVybiBhdHRhY2htZW50VmlldzsKLSAgICAg
ICAgfQorICAgICAgICB9IGVsc2UgaWYgKGNoaWxkLT5pc1JlbW90ZUZyYW1lKCkpCisgICAgICAg
ICAgICByZXR1cm4gY2hpbGQtPnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkuZ2V0KCk7CiAK
ICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgfSkuYXV0b3JlbGVhc2UoKTsKQEAgLTM4OSw3
ICszOTAsNyBAQCBOU0FycmF5ICptYWtlTlNBcnJheShjb25zdCBXZWJDb3JlOjpBWENvcmVPYmpl
Y3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgYwogLSAoQk9PTClpc0lzb2xhdGVkT2Jq
ZWN0CiB7CiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKLSAgICBhdXRv
KiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgUmVmUHRyIGJhY2tp
bmdPYmplY3QgPSBkeW5hbWljRG93bmNhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdD4oc2VsZi5iYXNl
VXBkYXRlQmFja2luZ1N0b3JlKTsKICAgICByZXR1cm4gYmFja2luZ09iamVjdCAmJiBiYWNraW5n
T2JqZWN0LT5pc0FYSXNvbGF0ZWRPYmplY3RJbnN0YW5jZSgpOwogI2Vsc2UKICAgICByZXR1cm4g
Tk87CkBAIC01MjMsNyArNTI0LDcgQEAgc3RhdGljIHZvaWQgY29udmVydFBhdGhUb1NjcmVlblNw
YWNlRnVuY3Rpb24oUGF0aENvbnZlcnNpb25JbmZvJiBjb252ZXJzaW9uLCBjb24KIAogLSAoQ0dS
ZWN0KWNvbnZlcnRSZWN0VG9TcGFjZTooY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JilyZWN0IHNw
YWNlOihBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlKXNwYWNlCiB7Ci0gICAgYXV0byogYmFj
a2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0ciBiYWNraW5nT2Jq
ZWN0ID0gZHluYW1pY0Rvd25jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3Q+KHNlbGYuYmFzZVVwZGF0
ZUJhY2tpbmdTdG9yZSk7CiAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQogICAgICAgICByZXR1cm4g
Q0dSZWN0WmVybzsKIApAQCAtNTgyLDcgKzU4Myw3IEBAIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFu
Z2U+IG1ha2VET01SYW5nZShEb2N1bWVudCogZG9jdW1lbnQsIE5TUmFuZ2UgcmFuZ2UpCiAjZWxz
ZQogICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09i
amVjdDsKKyAgICBSZWZQdHIgYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0Owog
I2VuZGlmCiAgICAgcmV0dXJuIGJhY2tpbmdPYmplY3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDZjNWU2YjdhY2Q5Yy4uNzUwMmQ5YTBlNDk5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtMzQsNiArMzQsNyBAQAog
I2ltcG9ydCAiQVhJc29sYXRlZE9iamVjdC5oIgogI2ltcG9ydCAiQVhMb2dnZXIuaCIKICNpbXBv
cnQgIkFYT2JqZWN0Q2FjaGUuaCIKKyNpbXBvcnQgIkFYUmVtb3RlRnJhbWUuaCIKICNpbXBvcnQg
IkFYVGV4dE1hcmtlci5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmgiCiAj
aW1wb3J0ICJBY2Nlc3NpYmlsaXR5TGFiZWwuaCIKQEAgLTQ3OSw2ICs0ODAsMTAgQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVRleHRJbnB1dE1hcmtl
ZFRleHRNYXJrZXJSYW5nZUF0dHJpYnV0ZSBAIkFYVGV4dElucHV0TWFya2VkVGV4dE1hcmtlclJh
bmdlIgogI2VuZGlmCiAKKyNpZm5kZWYga0FYQ29udmVydFJlbGF0aXZlRnJhbWVQYXJhbWV0ZXJp
emVkQXR0cmlidXRlCisjZGVmaW5lIGtBWENvbnZlcnRSZWxhdGl2ZUZyYW1lUGFyYW1ldGVyaXpl
ZEF0dHJpYnV0ZSBAIkFYQ29udmVydFJlbGF0aXZlRnJhbWUiCisjZW5kaWYKKwogQGltcGxlbWVu
dGF0aW9uIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyCiAKIC0gKHZvaWQpZGV0YWNoCkBA
IC02OTIsNyArNjk3LDcgQEAgc3RhdGljIFJldGFpblB0cjxBWFRleHRNYXJrZXJSZWY+IHByZXZp
b3VzVGV4dE1hcmtlcihBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3QKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogCi0gICAgYXV0byogYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNr
aW5nT2JqZWN0OworICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+IGJhY2tpbmdPYmplY3QgPSBzZWxm
LmF4QmFja2luZ09iamVjdDsKICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCiAgICAgICAgIHJldHVy
biBuaWw7CiAKQEAgLTEyNTYsNyArMTI2MSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5U
QVRJT05TX0VORAogCiAtIChOU0FycmF5ICopcmVuZGVyV2lkZ2V0Q2hpbGRyZW4KIHsKLSAgICBh
dXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgUmVmUHRyPEFY
Q29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OwogICAgIGlm
ICghYmFja2luZ09iamVjdCB8fCAhYmFja2luZ09iamVjdC0+aXNXaWRnZXQoKSkKICAgICAgICAg
cmV0dXJuIG5pbDsKIApAQCAtMTI3OSw3ICsxMjg0LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfRU5ECiAKIC0gKGlkKXJlbW90ZUFjY2Vzc2liaWxpdHlQYXJlbnRPYmplY3QKIHsK
LSAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgUmVm
UHRyPEFYQ29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0Owog
ICAgIHJldHVybiBiYWNraW5nT2JqZWN0ID8gYmFja2luZ09iamVjdC0+cmVtb3RlUGFyZW50T2Jq
ZWN0KCkgOiBuaWw7CiB9CiAKQEAgLTEyOTYsNyArMTMwMSw3IEBAIHN0YXRpYyB2b2lkIGNvbnZl
cnRUb1ZlY3RvcihOU0FycmF5KiBhcnJheSwgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJp
bGl0eUNoCiAKIC0gKEFYVGV4dE1hcmtlclJhbmdlUmVmKXNlbGVjdGVkVGV4dE1hcmtlclJhbmdl
CiB7Ci0gICAgYXV0byogYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAg
IFJlZlB0cjxBWENvcmVPYmplY3Q+IGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVj
dDsKICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCiAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTEz
NjYsMTIgKzEzNzEsMTggQEAgc3RhdGljIHZvaWQgV2ViVHJhbnNmb3JtQ0dQYXRoVG9OU0Jlemll
clBhdGgodm9pZCogaW5mbywgY29uc3QgQ0dQYXRoRWxlbWVudCAqZWwKIAogLSAoTlNTdHJpbmcq
KXJvbGUKIHsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBiYWNraW5nT2JqZWN0ID0gc2VsZi5h
eEJhY2tpbmdPYmplY3Q7CisgICAgaWYgKCFiYWNraW5nT2JqZWN0KQorICAgICAgICByZXR1cm4g
bmlsOworCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgIGlmIChzZWxm
LmF4QmFja2luZ09iamVjdC0+aXNBdHRhY2htZW50KCkpCisgICAgaWYgKGJhY2tpbmdPYmplY3Qt
PmlzQXR0YWNobWVudCgpKQogICAgICAgICByZXR1cm4gW1tzZWxmIGF0dGFjaG1lbnRWaWV3XSBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Um9sZUF0dHJpYnV0ZV07
CisgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzUmVtb3RlRnJhbWUoKSkKKyAgICAgICAgcmV0dXJu
IFtiYWNraW5nT2JqZWN0LT5yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpLmdldCgpIGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlSb2xlQXR0cmlidXRlXTsKIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCi0gICAgTlNTdHJpbmcgKnN0cmluZyA9
IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5yb2xlUGxhdGZvcm1TdHJpbmcoKTsKKyAgICBOU1N0cmlu
ZyAqc3RyaW5nID0gYmFja2luZ09iamVjdC0+cm9sZVBsYXRmb3JtU3RyaW5nKCk7CiAgICAgaWYg
KHN0cmluZy5sZW5ndGgpCiAgICAgICAgIHJldHVybiBzdHJpbmc7CiAgICAgcmV0dXJuIE5TQWNj
ZXNzaWJpbGl0eVVua25vd25Sb2xlOwpAQCAtMTM3OSw3ICsxMzkwLDcgQEAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKIC0gKEJPT0wpaXNFbXB0eUdyb3VwCiB7Ci0gICAgYXV0
byogYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0cjxBWENv
cmVPYmplY3Q+IGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKICAgICBpZiAo
IWJhY2tpbmdPYmplY3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTM4OCw2ICsxMzk5
LDkgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIHJldHVybiBm
YWxzZTsKICNlbmRpZgogCisgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzUmVtb3RlRnJhbWUoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgcmV0dXJuIFtbc2VsZiByb2xlXSBpc0VxdWFs
Ok5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZV0KICAgICAgICAgJiYgYmFja2luZ09iamVjdC0+Y2hp
bGRyZW4oKS5pc0VtcHR5KCkKICAgICAgICAgJiYgIVtbc2VsZiByZW5kZXJXaWRnZXRDaGlsZHJl
bl0gY291bnRdOwpAQCAtMTM5Niw3ICsxNDEwLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfRU5ECiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogLSAoTlNTdHJp
bmcqKXN1YnJvbGUKIHsKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdP
YmplY3Q7CisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNlbGYuYXhC
YWNraW5nT2JqZWN0OwogICAgIGlmICghYmFja2luZ09iamVjdCkKICAgICAgICAgcmV0dXJuIG5p
bDsKIApAQCAtMTQxMyw3ICsxNDI3LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECiAKIC0gKE5TU3RyaW5nKilyb2xlRGVzY3JpcHRpb24KIHsKLSAgICBhdXRvKiBiYWNraW5n
T2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4g
YmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OwogICAgIGlmICghYmFja2luZ09i
amVjdCkKICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMTQyMSw2ICsxNDM1LDggQEAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAvLyBhdHRhY2htZW50cyBoYXZlIHRo
ZSBBWEltYWdlIHJvbGUsIGJ1dCBhIGRpZmZlcmVudCBzdWJyb2xlCiAgICAgaWYgKGJhY2tpbmdP
YmplY3QtPmlzQXR0YWNobWVudCgpKQogICAgICAgICByZXR1cm4gW1tzZWxmIGF0dGFjaG1lbnRW
aWV3XSBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Um9sZURlc2Ny
aXB0aW9uQXR0cmlidXRlXTsKKyAgICBpZiAoYmFja2luZ09iamVjdC0+aXNSZW1vdGVGcmFtZSgp
KQorICAgICAgICByZXR1cm4gW2JhY2tpbmdPYmplY3QtPnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVt
ZW50KCkuZ2V0KCkgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJv
bGVEZXNjcmlwdGlvbkF0dHJpYnV0ZV07CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19F
TkQKIAogICAgIFN0cmluZyByb2xlRGVzY3JpcHRpb24gPSBiYWNraW5nT2JqZWN0LT5yb2xlRGVz
Y3JpcHRpb24oKTsKQEAgLTE0NzMsNiArMTQ4OSwyOCBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19FTkQKICAgICByZXR1cm4gYXhTY3JvbGxWaWV3ID8gW2F4U2Nyb2xsVmlldy0+cGxh
dGZvcm1XaWRnZXQoKSB3aW5kb3ddIDogbmlsOwogfQogCistIChOU0FycmF5ICopX3RyYW5zZm9y
bVNwZWNpYWxDaGlsZHJlbkNhc2VzOihSZWZQdHI8QVhDb3JlT2JqZWN0PiliYWNraW5nT2JqZWN0
Cit7CisjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCisgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlz
TW9kZWwoKSkgeworICAgICAgICBhdXRvIG1vZGVsQ2hpbGRyZW4gPSBiYWNraW5nT2JqZWN0LT5t
b2RlbEVsZW1lbnRDaGlsZHJlbigpOworICAgICAgICBpZiAobW9kZWxDaGlsZHJlbi5zaXplKCkp
IHsKKyAgICAgICAgICAgIHJldHVybiBjcmVhdGVOU0FycmF5KFdURk1vdmUobW9kZWxDaGlsZHJl
biksIFtdIChhdXRvJiYgY2hpbGQpIC0+IGlkIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2hp
bGQuZ2V0KCk7CisgICAgICAgICAgICB9KS5hdXRvcmVsZWFzZSgpOworICAgICAgICB9CisgICAg
fQorI2VuZGlmCisKKyAgICBjb25zdCBhdXRvJiBjaGlsZHJlbiA9IGJhY2tpbmdPYmplY3QtPmNo
aWxkcmVuKCk7CisgICAgaWYgKCFjaGlsZHJlbi5zaXplKCkpIHsKKyAgICAgICAgaWYgKE5TQXJy
YXkgKmNoaWxkcmVuID0gW3NlbGYgcmVuZGVyV2lkZ2V0Q2hpbGRyZW5dKQorICAgICAgICAgICAg
cmV0dXJuIGNoaWxkcmVuOworICAgIH0KKworICAgIHJldHVybiBuaWw7Cit9CisKIC8vIEZJWE1F
OiBzcGxpdCB1cCB0aGlzIGZ1bmN0aW9uIGluIGEgYmV0dGVyIHdheS4KIC8vIHN1Z2dlc3Rpb25z
OiBVc2UgYSBoYXNoIHRhYmxlIHRoYXQgbWFwcyBhdHRyaWJ1dGUgbmFtZXMgdG8gZnVuY3Rpb24g
Y2FsbHMsCiAvLyBvciBtYXliZSBwb2ludGVycyB0byBtZW1iZXIgZnVuY3Rpb25zCkBAIC0xNTMx
LDIyICsxNTY5LDkgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAg
fQogCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxp
dHlDaGlsZHJlbkF0dHJpYnV0ZV0gfHwgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5T
QWNjZXNzaWJpbGl0eUNoaWxkcmVuSW5OYXZpZ2F0aW9uT3JkZXJBdHRyaWJ1dGVdKSB7Ci0jaWYg
RU5BQkxFKE1PREVMX0VMRU1FTlQpCi0gICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc01vZGVs
KCkpIHsKLSAgICAgICAgICAgIGF1dG8gbW9kZWxDaGlsZHJlbiA9IGJhY2tpbmdPYmplY3QtPm1v
ZGVsRWxlbWVudENoaWxkcmVuKCk7Ci0gICAgICAgICAgICBpZiAobW9kZWxDaGlsZHJlbi5zaXpl
KCkpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTlNBcnJheShXVEZNb3ZlKG1vZGVs
Q2hpbGRyZW4pLCBbXSAoYXV0byYmIGNoaWxkKSAtPiBpZCB7Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBjaGlsZC5nZXQoKTsKLSAgICAgICAgICAgICAgICB9KS5hdXRvcmVsZWFzZSgpOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0jZW5kaWYKLQotICAgICAgICBjb25zdCBhdXRvJiBj
aGlsZHJlbiA9IGJhY2tpbmdPYmplY3QtPmNoaWxkcmVuKCk7Ci0gICAgICAgIGlmIChjaGlsZHJl
bi5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGlmIChOU0FycmF5ICp3aWRnZXRDaGlsZHJlbiA9
IFtzZWxmIHJlbmRlcldpZGdldENoaWxkcmVuXSkKLSAgICAgICAgICAgICAgICByZXR1cm4gd2lk
Z2V0Q2hpbGRyZW47Ci0gICAgICAgIH0KKyAgICAgICAgTlNBcnJheSAqc3BlY2lhbENoaWxkcmVu
ID0gW3NlbGYgX3RyYW5zZm9ybVNwZWNpYWxDaGlsZHJlbkNhc2VzOmJhY2tpbmdPYmplY3RdOwor
ICAgICAgICBpZiAoc3BlY2lhbENoaWxkcmVuLmNvdW50KQorICAgICAgICAgICAgcmV0dXJuIHNw
ZWNpYWxDaGlsZHJlbjsKIAogICAgICAgICAvLyBUaGUgdHJlZSdzIChBWE91dGxpbmUpIGNoaWxk
cmVuIGFyZSBzdXBwb3NlZCB0byBiZSBpdHMgcm93cyBhbmQgY29sdW1ucy4KICAgICAgICAgLy8g
VGhlIEFSSUEgc3BlYyBkb2Vzbid0IGhhdmUgY29sdW1ucywgc28gd2UganVzdCBuZWVkIHJvd3Mu
CkBAIC0xNTU3LDcgKzE1ODIsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19F
TkQKICAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzVHJlZUl0ZW0oKSkKICAgICAgICAgICAg
IHJldHVybiBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT5hcmlhVHJlZUl0ZW1Db250ZW50KCkp
OwogCi0gICAgICAgIHJldHVybiBtYWtlTlNBcnJheShjaGlsZHJlbik7CisgICAgICAgIHJldHVy
biBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT5jaGlsZHJlbigpKTsKICAgICB9CiAKICAgICBp
ZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlTZWxlY3Rl
ZENoaWxkcmVuQXR0cmlidXRlXSkgewpAQCAtMTcxMywxNiArMTczOCwxNCBAQCBBTExPV19ERVBS
RUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVh
bFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlFbmFibGVkQXR0cmlidXRlXSkKICAgICAgICAgcmV0
dXJuIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDogYmFja2luZ09iamVjdC0+aXNFbmFibGVkKCld
OwogCi0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmls
aXR5U2l6ZUF0dHJpYnV0ZV0pIHsKLSAgICAgICAgYXV0byBzaXplID0gYmFja2luZ09iamVjdC0+
c2l6ZSgpOwotICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoU2l6ZTpOU01ha2VTaXpl
KHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSldOwotICAgIH0KKyAgICBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVNpemVBdHRyaWJ1dGVdKQorICAg
ICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoU2l6ZTooQ0dTaXplKWJhY2tpbmdPYmplY3Qt
PnNpemUoKV07CiAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNj
ZXNzaWJpbGl0eVByaW1hcnlTY3JlZW5IZWlnaHRBdHRyaWJ1dGVdKQogICAgICAgICByZXR1cm4g
QChiYWNraW5nT2JqZWN0LT5wcmltYXJ5U2NyZWVuUmVjdCgpLmhlaWdodCgpKTsKIAogICAgIGlm
IChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5UG9zaXRpb25B
dHRyaWJ1dGVdKQotICAgICAgICByZXR1cm4gQChDR1BvaW50KGJhY2tpbmdPYmplY3QtPnNjcmVl
blJlbGF0aXZlUG9zaXRpb24oKSkpOworICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRo
UG9pbnQ6KENHUG9pbnQpYmFja2luZ09iamVjdC0+c2NyZWVuUmVsYXRpdmVQb3NpdGlvbigpXTsK
IAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5
UGF0aEF0dHJpYnV0ZV0pCiAgICAgICAgIHJldHVybiBbc2VsZiBwYXRoXTsKQEAgLTIyMzcsNiAr
MjI2MCwxMCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAg
cmV0dXJuIHJhbmdlID8gcmFuZ2UucGxhdGZvcm1EYXRhKCkuYnJpZGdpbmdBdXRvcmVsZWFzZSgp
IDogbmlsOwogICAgIH0KIAorICAgIC8vIFZvaWNlT3ZlciBwcm9wZXJ0eSB0byBpZ25vcmUgY2Vy
dGFpbiBncm91cHMuCisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpAIkFY
QXV0b0ludGVyYWN0YWJsZSJdKQorICAgICAgICByZXR1cm4gQChiYWNraW5nT2JqZWN0LT5pc1Jl
bW90ZUZyYW1lKCkpOworCiAgICAgLy8gVXNlZCBieSBMYXlvdXRUZXN0cyBvbmx5LCBub3QgYnkg
QVQgY2xpZW50cy4KICAgICBpZiAoVU5MSUtFTFkoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOkAiQVhBUklBUm9sZSJdKSkKICAgICAgICAgcmV0dXJuIGJhY2tpbmdPYmplY3QtPmNvbXB1
dGVkUm9sZVN0cmluZygpOwpAQCAtMjMzMCw3ICsyMzU3LDggQEAgQUxMT1dfREVQUkVDQVRFRF9J
TVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIGlmIChheE9iamVjdC0+aXNBdHRhY2htZW50KCkp
IHsKICAgICAgICAgICAgIGlmIChpZCBhdHRhY2htZW50VmlldyA9IFtheE9iamVjdC0+d3JhcHBl
cigpIGF0dGFjaG1lbnRWaWV3XSkKICAgICAgICAgICAgICAgICByZXR1cm4gYXR0YWNobWVudFZp
ZXc7Ci0gICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChheE9iamVjdC0+aXNSZW1vdGVGcmFt
ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5yZW1vdGVGcmFtZVBsYXRmb3JtRWxl
bWVudCgpLmdldCgpOwogCiAgICAgICAgIC8vIE9ubHkgY2FsbCBvdXQgdG8gdGhlIG1haW4tdGhy
ZWFkIGlmIHRoaXMgb2JqZWN0IGhhcyBhIGJhY2tpbmcgd2lkZ2V0IHRvIHF1ZXJ5LgogICAgICAg
ICBpZiAoYXhPYmplY3QtPmlzV2lkZ2V0KCkpIHsKQEAgLTI1MDcsNiArMjUzNSwxMCBAQCBBTExP
V19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBpZiAoYmFja2luZ09iamVjdC0+
aXNXZWJBcmVhKCkpCiAgICAgICAgIHJldHVybiB3ZWJBcmVhUGFyYW1BdHRyczsKIAorICAgIC8v
IFRoZSBvYmplY3QgdGhhdCBzZXJ2ZXMgdXAgdGhlIHJlbW90ZSBmcmFtZSBhbHNvIGlzIHRoZSBv
bmUgdGhhdCBkb2VzIHRoZSBmcmFtZSBjb252ZXJzaW9uLgorICAgIGlmIChiYWNraW5nT2JqZWN0
LT5oYXNSZW1vdGVGcmFtZUNoaWxkKCkpCisgICAgICAgIHJldHVybiBbcGFyYW1BdHRycyBhcnJh
eUJ5QWRkaW5nT2JqZWN0OmtBWENvbnZlcnRSZWxhdGl2ZUZyYW1lUGFyYW1ldGVyaXplZEF0dHJp
YnV0ZV07CisKICAgICByZXR1cm4gcGFyYW1BdHRyczsKIH0KIApAQCAtMjU3OCw3ICsyNjEwLDcg
QEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiB7CiAgICAgQVhUUkFDRSgiV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eVBlcmZvcm1TaG93TWVudUFj
dGlvbiJfcyk7CiAKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmpl
Y3Q7CisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNr
aW5nT2JqZWN0OwogICAgIGlmICghYmFja2luZ09iamVjdCkgewogICAgICAgICBBWExPRyhtYWtl
U3RyaW5nKCJObyBiYWNraW5nT2JqZWN0IGZvciB3cmFwcGVyICIsIGhleChyZWludGVycHJldF9j
YXN0PHVpbnRwdHJfdD4oc2VsZikpKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTI4MjIsNyArMjg1
NCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIGlmICghcmFu
Z2UubGVuZ3RoKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgYXV0byogYmFja2luZ09iamVj
dCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+IGJhY2tp
bmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKICAgICBpZiAoIWJhY2tpbmdPYmplY3Qp
CiAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTMxNzcsNiArMzIwOSwxOCBAQCBBTExPV19ERVBS
RUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdp
ZGdldENoaWxkcmVuOwogICAgICAgICAgICAgICAgIGNyaXRlcmlhLnJlc3VsdHNMaW1pdCAtPSBb
d2lkZ2V0Q2hpbGRyZW4gY291bnRdOwogICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYg
KGJhY2tpbmdPYmplY3QtPmlzUmVtb3RlRnJhbWUoKQorICAgICAgICAgICAgJiYgY3JpdGVyaWEu
c2VhcmNoS2V5cy5jb250YWlucyhBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpBbnlUeXBlKQorICAg
ICAgICAgICAgJiYgKCFjcml0ZXJpYS52aXNpYmxlT25seSB8fCBiYWNraW5nT2JqZWN0LT5pc1Zp
c2libGUoKSkpIHsKKyAgICAgICAgICAgIE5TQXJyYXkgKnJlbW90ZUZyYW1lQ2hpbGRyZW4gPSBb
c2VsZiBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5B
dHRyaWJ1dGVdOworICAgICAgICAgICAgQVNTRVJUKHJlbW90ZUZyYW1lQ2hpbGRyZW4uY291bnQg
PT0gMSk7CisgICAgICAgICAgICBpZiAocmVtb3RlRnJhbWVDaGlsZHJlbi5jb3VudCA9PSAxKSB7
CisgICAgICAgICAgICAgICAgTlNVSW50ZWdlciBpbmNsdWRlZENoaWxkcmVuQ291bnQgPSBzdGQ6
Om1pbihbcmVtb3RlRnJhbWVDaGlsZHJlbiBjb3VudF0sIE5TVUludGVnZXIoY3JpdGVyaWEucmVz
dWx0c0xpbWl0KSk7CisgICAgICAgICAgICAgICAgd2lkZ2V0Q2hpbGRyZW4gPSBbcmVtb3RlRnJh
bWVDaGlsZHJlbiBzdWJhcnJheVdpdGhSYW5nZTpOU01ha2VSYW5nZSgwLCBpbmNsdWRlZENoaWxk
cmVuQ291bnQpXTsKKyAgICAgICAgICAgICAgICBpZiAoW3dpZGdldENoaWxkcmVuIGNvdW50XSA+
PSBjcml0ZXJpYS5yZXN1bHRzTGltaXQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiByZW1v
dGVGcmFtZUNoaWxkcmVuOworICAgICAgICAgICAgICAgIGNyaXRlcmlhLnJlc3VsdHNMaW1pdCAt
PSBbd2lkZ2V0Q2hpbGRyZW4gY291bnRdOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAg
ICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHJl
c3VsdHM7CkBAIC0zNjY5LDYgKzM3MTMsMTEgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRB
VElPTlNfRU5ECiAgICAgaWYgKFVOTElLRUxZKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOl9B
WFRleHRNYXJrZXJSYW5nZUZvck5TUmFuZ2VBdHRyaWJ1dGVdKSkKICAgICAgICAgcmV0dXJuIGJh
Y2tpbmdPYmplY3QtPnRleHRNYXJrZXJSYW5nZUZvck5TUmFuZ2UocmFuZ2UpLnBsYXRmb3JtRGF0
YSgpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKIAorICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxU
b1N0cmluZzprQVhDb252ZXJ0UmVsYXRpdmVGcmFtZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdKSB7
CisgICAgICAgIGF1dG8qIHBhcmVudCA9IGJhY2tpbmdPYmplY3QtPnBhcmVudE9iamVjdCgpOwor
ICAgICAgICByZXR1cm4gcGFyZW50ID8gW05TVmFsdWUgdmFsdWVXaXRoUmVjdDpwYXJlbnQtPmNv
bnZlcnRGcmFtZVRvU3BhY2UoRmxvYXRSZWN0KHJlY3QpLCBBY2Nlc3NpYmlsaXR5Q29udmVyc2lv
blNwYWNlOjpQYWdlKV0gOiBuaWw7CisgICAgfQorCiAgICAgLy8gVGhlcmUgYXJlIHNvbWUgcGFy
YW1ldGVycyB0aGF0IHN1cGVyIGhhbmRsZXMgdGhhdCBhcmUgbm90IGV4cGxpY2l0bHkgcmV0dXJu
ZWQgYnkgdGhlIGxpc3Qgb2YgdGhlIGVsZW1lbnQncyBhdHRyaWJ1dGVzLgogICAgIC8vIEluIHRo
YXQgY2FzZSBpdCBtdXN0IGJlIHBhc3NlZCB0byBzdXBlci4KICAgICByZXR1cm4gW3N1cGVyIGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTphdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOnBhcmFtZXRl
cl07CkBAIC0zNzIyLDggKzM3NzEsMTAgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElP
TlNfRU5ECiAgICAgICAgIGlmICghY2hpbGQpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgKmNoaWxkV3JhcHBlciA9IGNoaWxkLT53
cmFwcGVyKCk7Ci0gICAgICAgIGlmIChjaGlsZFdyYXBwZXIgPT0gdGFyZ2V0Q2hpbGQgfHwgKGNo
aWxkLT5pc0F0dGFjaG1lbnQoKSAmJiBbY2hpbGRXcmFwcGVyIGF0dGFjaG1lbnRWaWV3XSA9PSB0
YXJnZXRDaGlsZCkpCisgICAgICAgIGlmIChjaGlsZFdyYXBwZXIgPT0gdGFyZ2V0Q2hpbGQgfHwg
KGNoaWxkLT5pc0F0dGFjaG1lbnQoKSAmJiBbY2hpbGRXcmFwcGVyIGF0dGFjaG1lbnRWaWV3XSA9
PSB0YXJnZXRDaGlsZCkKKyAgICAgICAgICAgIHx8IChjaGlsZC0+aXNSZW1vdGVGcmFtZSgpICYm
IGNoaWxkLT5yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpID09IHRhcmdldENoaWxkKSkgewog
ICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIE5TTm90
Rm91bmQ7CiB9CkBAIC0zNzQwLDcgKzM3OTEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19CRUdJTgogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2li
aWxpdHlDaGlsZHJlbkF0dHJpYnV0ZV0pIHsKICAgICAgICAgLy8gVHJlZSBpdGVtcyBvYmplY3Qg
cmV0dXJucyBhIGRpZmZlcmVudCBzZXQgb2YgY2hpbGRyZW4gdGhhbiB0aG9zZSB0aGF0IGFyZSBp
biBjaGlsZHJlbigpCiAgICAgICAgIC8vIGJlY2F1c2UgYW4gQVhPdXRsaW5lICh0aGUgbWFjIHJv
bGUgaXMgYmVjb21lcykgaGFzIHNvbWUgb2RkIHN0aXB1bGF0aW9ucy4KLSAgICAgICAgaWYgKGJh
Y2tpbmdPYmplY3QtPmlzVHJlZSgpIHx8IGJhY2tpbmdPYmplY3QtPmlzVHJlZUl0ZW0oKSkKKyAg
ICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzVHJlZSgpIHx8IGJhY2tpbmdPYmplY3QtPmlzVHJl
ZUl0ZW0oKSB8fCBiYWNraW5nT2JqZWN0LT5pc1JlbW90ZUZyYW1lKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gW1tzZWxmIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlD
aGlsZHJlbkF0dHJpYnV0ZV0gY291bnRdOwogCiAgICAgICAgIGF1dG8gY2hpbGRyZW5TaXplID0g
YmFja2luZ09iamVjdC0+Y2hpbGRyZW4oKS5zaXplKCk7CkBAIC0zNzc2LDE2ICszODI3LDcgQEAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBpZiAoW2F0dHJpYnV0ZSBp
c0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGVdKSB7CiAgICAg
ICAgIGlmIChiYWNraW5nT2JqZWN0LT5jaGlsZHJlbigpLmlzRW1wdHkoKSkgewotICAgICAgICAg
ICAgTlNBcnJheSAqY2hpbGRyZW4gPSBuaWw7Ci0jaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCi0g
ICAgICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNNb2RlbCgpKSB7Ci0gICAgICAgICAgICAg
ICAgY2hpbGRyZW4gPSBjcmVhdGVOU0FycmF5KGJhY2tpbmdPYmplY3QtPm1vZGVsRWxlbWVudENo
aWxkcmVuKCksIFtdIChhdXRvJiYgY2hpbGQpIC0+IGlkIHsKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGNoaWxkLmdldCgpOwotICAgICAgICAgICAgICAgIH0pLmF1dG9yZWxlYXNlKCk7Ci0g
ICAgICAgICAgICB9IGVsc2UKLSNlbmRpZgotICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW3Nl
bGYgcmVuZGVyV2lkZ2V0Q2hpbGRyZW5dOwotICAgICAgICAgICAgCisgICAgICAgICAgICBOU0Fy
cmF5ICpjaGlsZHJlbiA9IFtzZWxmIF90cmFuc2Zvcm1TcGVjaWFsQ2hpbGRyZW5DYXNlczpiYWNr
aW5nT2JqZWN0XTsKICAgICAgICAgICAgIGlmICghY2hpbGRyZW4pCiAgICAgICAgICAgICAgICAg
cmV0dXJuIG5pbDsKIApAQCAtMzgxNiw4ICszODU4LDEzIEBAIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAogCiAgICAgICAgICAgICAvLyBUaGUgYXR0YWNobWVudCB2aWV3IHNob3Vs
ZCBiZSByZXR1cm5lZCwgb3RoZXJ3aXNlIEFYIHBhbGluZHJvbWUgZXJyb3JzIG9jY3VyLgogICAg
ICAgICAgICAgaWQgYXR0YWNobWVudFZpZXcgPSBuaWw7Ci0gICAgICAgICAgICBpZiAoW3dyYXBw
ZXIgaXNLaW5kT2ZDbGFzczpbV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgY2xhc3NdXSAm
JiB3cmFwcGVyLmF4QmFja2luZ09iamVjdCAmJiB3cmFwcGVyLmF4QmFja2luZ09iamVjdC0+aXNB
dHRhY2htZW50KCkpCi0gICAgICAgICAgICAgICAgYXR0YWNobWVudFZpZXcgPSBbd3JhcHBlciBh
dHRhY2htZW50Vmlld107CisgICAgICAgICAgICBpZiAoW3dyYXBwZXIgaXNLaW5kT2ZDbGFzczpb
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgY2xhc3NdXSAmJiB3cmFwcGVyLmF4QmFja2lu
Z09iamVjdCkgeworICAgICAgICAgICAgICAgIGlmICh3cmFwcGVyLmF4QmFja2luZ09iamVjdC0+
aXNBdHRhY2htZW50KCkpCisgICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRWaWV3ID0gW3dy
YXBwZXIgYXR0YWNobWVudFZpZXddOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKHdyYXBwZXIu
YXhCYWNraW5nT2JqZWN0LT5pc1JlbW90ZUZyYW1lKCkpCisgICAgICAgICAgICAgICAgICAgIGF0
dGFjaG1lbnRWaWV3ID0gd3JhcHBlci5heEJhY2tpbmdPYmplY3QtPnJlbW90ZUZyYW1lUGxhdGZv
cm1FbGVtZW50KCkuZ2V0KCk7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIFtzdWJhcnJh
eSBhZGRPYmplY3Q6YXR0YWNobWVudFZpZXcgPyBhdHRhY2htZW50VmlldyA6IHdyYXBwZXJdOwog
ICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggMjU4
YzE0Yjg2YThiLi41NzE3YWRlMmE0NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuY3BwCkBAIC0xMDg1LDYgKzEwODUsMTEgQEAgUmVtb3RlQVhPYmplY3RSZWYgRW1wdHlGcmFt
ZUxvYWRlckNsaWVudDo6YWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpCiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKK0ludFBvaW50IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmFjY2Vzc2liaWxp
dHlSZW1vdGVGcmFtZU9mZnNldCgpCit7CisgICAgcmV0dXJuIHsgfTsKK30KKwogI2lmIEVOQUJM
RShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiB2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGll
bnQ6OnNldEFYSXNvbGF0ZWRUcmVlUm9vdChXZWJDb3JlOjpBWENvcmVPYmplY3QqKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMDk4
Y2U1OGQxMTE5Li40NjcyZGUyOTg1MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5RnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTg0LDYgKzE4NCw3IEBAIHByaXZhdGU6CiAKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBSZW1vdGVBWE9iamVjdFJlZiBhY2Nlc3NpYmlsaXR5UmVt
b3RlT2JqZWN0KCkgZmluYWw7CisgICAgSW50UG9pbnQgYWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1l
T2Zmc2V0KCkgZmluYWw7CiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkK
ICAgICB2b2lkIHNldEFYSXNvbGF0ZWRUcmVlUm9vdChXZWJDb3JlOjpBWENvcmVPYmplY3QqKSBm
aW5hbDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvY2FsRnJh
bWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2NhbEZyYW1lTG9hZGVy
Q2xpZW50LmgKaW5kZXggYjJkNTZmMDUwYWU5Li4wMGQzYWQ1ZTJjYzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Mb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0xvY2FsRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMjkwLDYgKzI5MCw3
IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAvLyBBbGxvdyBhbiBhY2Nlc3Np
YmlsaXR5IG9iamVjdCB0byByZXRyaWV2ZSBhIEZyYW1lIHBhcmVudCBpZiB0aGVyZSdzIG5vIFBs
YXRmb3JtV2lkZ2V0LgogICAgIHZpcnR1YWwgUmVtb3RlQVhPYmplY3RSZWYgYWNjZXNzaWJpbGl0
eVJlbW90ZU9iamVjdCgpID0gMDsKKyAgICB2aXJ0dWFsIEludFBvaW50IGFjY2Vzc2liaWxpdHlS
ZW1vdGVGcmFtZU9mZnNldCgpID0gMDsKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRF
RF9UUkVFKQogICAgIHZpcnR1YWwgdm9pZCBzZXRBWElzb2xhdGVkVHJlZVJvb3QoQVhDb3JlT2Jq
ZWN0KikgPSAwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA1OTMzNTVlYmVjZDguLjBi
MWZjMGFjMzhjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0yMjAzLDggKzIyMDMsMTUgQEAgYm9v
bCBQYWdlOjpzaG91bGRVcGRhdGVBY2Nlc3NpYmlsaXR5UmVnaW9ucygpIGNvbnN0CiAgICAgQVNT
RVJUKG1fbGFzdFJlbmRlcmluZ1VwZGF0ZVRpbWVzdGFtcCA+PSBtX2xhc3RBY2Nlc3NpYmlsaXR5
T2JqZWN0UmVnaW9uc1VwZGF0ZSk7CiAgICAgaWYgKChtX2xhc3RSZW5kZXJpbmdVcGRhdGVUaW1l
c3RhbXAgLSBtX2xhc3RBY2Nlc3NpYmlsaXR5T2JqZWN0UmVnaW9uc1VwZGF0ZSkgPCB1cGRhdGVJ
bnRlcnZhbCkgewogICAgICAgICAvLyBXZSd2ZSBhbHJlYWR5IHVwZGF0ZWQgYWNjZXNzaWJpbGl0
eSBvYmplY3QgcmVjdHMgcmVjZW50bHksIHNvIHNraXAgdGhpcyB1cGRhdGUgYW5kIHNjaGVkdWxl
IGFub3RoZXIgZm9yIGxhdGVyLgotICAgICAgICBhdXRvKiBsb2NhbE1haW5GcmFtZSA9IGR5bmFt
aWNEb3duY2FzdDxMb2NhbEZyYW1lPihtYWluRnJhbWUoKSk7Ci0gICAgICAgIFJlZlB0ciBtYWlu
RG9jdW1lbnQgPSBsb2NhbE1haW5GcmFtZSA/IGxvY2FsTWFpbkZyYW1lLT5kb2N1bWVudCgpIDog
bnVsbHB0cjsKKworICAgICAgICBSZWZQdHI8RG9jdW1lbnQ+IG1haW5Eb2N1bWVudCA9IG51bGxw
dHI7CisgICAgICAgIGlmIChhdXRvKiBsb2NhbE1haW5GcmFtZSA9IGR5bmFtaWNEb3duY2FzdDxM
b2NhbEZyYW1lPihtYWluRnJhbWUoKSkpCisgICAgICAgICAgICBtYWluRG9jdW1lbnQgPSBsb2Nh
bE1haW5GcmFtZSA/IGxvY2FsTWFpbkZyYW1lLT5kb2N1bWVudCgpIDogbnVsbHB0cjsKKyAgICAg
ICAgZWxzZSBpZiAoYXV0byogcmVtb3RlRnJhbWUgPSBkeW5hbWljRG93bmNhc3Q8UmVtb3RlRnJh
bWU+KG1haW5GcmFtZSgpKSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIG93bmVyID0gcmVtb3Rl
RnJhbWUtPm93bmVyRWxlbWVudCgpKQorICAgICAgICAgICAgICAgIG1haW5Eb2N1bWVudCA9ICYo
b3duZXItPmRvY3VtZW50KCkpOworICAgICAgICB9CisKICAgICAgICAgLy8gSWYgYWNjZXNzaWJp
bGl0eSBpcyBlbmFibGVkIGFuZCB3ZSBoYXZlIGEgbWFpbiBkb2N1bWVudCwgdGhhdCBkb2N1bWVu
dCBzaG91bGQgaGF2ZSBhbiBBWCBvYmplY3QgY2FjaGUuCiAgICAgICAgIEFTU0VSVCghbWFpbkRv
Y3VtZW50IHx8IG1haW5Eb2N1bWVudC0+ZXhpc3RpbmdBWE9iamVjdENhY2hlKCkpOwogICAgICAg
ICBpZiAoQ2hlY2tlZFB0ciB0b3BBeE9iamVjdENhY2hlID0gbWFpbkRvY3VtZW50ID8gbWFpbkRv
Y3VtZW50LT5leGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSA6IG51bGxwdHIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UmVtb3RlRnJhbWUuY3BwCmluZGV4IDcxMmMwYjIyMGZkMC4uNTBiMGEyNWNmZGJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1JlbW90ZUZyYW1lLmNwcApAQCAtMTAwLDYgKzEwMCwyMSBAQCB2b2lkIFJlbW90
ZUZyYW1lOjpicm9hZGNhc3RGcmFtZVJlbW92YWxUb090aGVyUHJvY2Vzc2VzKCkKICAgICBtX2Ns
aWVudC0+YnJvYWRjYXN0RnJhbWVSZW1vdmFsVG9PdGhlclByb2Nlc3NlcygpOwogfQogCit2b2lk
IFJlbW90ZUZyYW1lOjp1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQoSW50UG9p
bnQgb2Zmc2V0KQoreworICAgIG1fY2xpZW50LT51cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxp
dHlPZmZzZXQoZnJhbWVJRCgpLCBvZmZzZXQpOworfQorCit2b2lkIFJlbW90ZUZyYW1lOjp1bmJp
bmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllcikKK3sKKyAg
ICBtX2NsaWVudC0+dW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhwcm9jZXNzSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlRnJhbWU6OmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJh
bWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGFU
b2tlbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6OnNwYW48Y29uc3QgdWludDhf
dD4sIGludCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgcmV0dXJuIG1fY2xpZW50LT5i
aW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhwcm9jZXNzSWRlbnRpZmllciwgZnJhbWVJRCgp
LCBkYXRhVG9rZW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogRnJhbWVWaWV3
KiBSZW1vdGVGcmFtZTo6dmlydHVhbFZpZXcoKSBjb25zdAogewogICAgIHJldHVybiBtX3ZpZXcu
Z2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmgKaW5kZXggMjdlZDg0MGQwODJlLi5jYTcy
YWY4YmM5NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmgKQEAgLTMzLDYgKzMzLDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBEYXRhU2VnbWVudDsKIGNsYXNzIFJlbW90
ZURPTVdpbmRvdzsKIGNsYXNzIFJlbW90ZUZyYW1lQ2xpZW50OwogY2xhc3MgUmVtb3RlRnJhbWVW
aWV3OwpAQCAtNjIsNiArNjMsOSBAQCBwdWJsaWM6CiAgICAgTWFya2FibGU8TGF5ZXJIb3N0aW5n
Q29udGV4dElkZW50aWZpZXI+IGxheWVySG9zdGluZ0NvbnRleHRJZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9sYXllckhvc3RpbmdDb250ZXh0SWRlbnRpZmllcjsgfQogCiAgICAgU3RyaW5n
IHJlbmRlclRyZWVBc1RleHQoc2l6ZV90IGJhc2VJbmRlbnQsIE9wdGlvblNldDxSZW5kZXJBc1Rl
eHRGbGFnPik7CisgICAgdm9pZCBiaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJv
Y2Vzc0lkZW50aWZpZXIsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIGludCk+JiYpOworICAgIHZvaWQgdXBk
YXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KEludFBvaW50KTsKKyAgICB2b2lkIHVu
YmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50KTsKIAogcHJpdmF0ZToKICAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBSZW1vdGVGcmFtZShQYWdlJiwgVW5pcXVlUmVmPFJlbW90ZUZy
YW1lQ2xpZW50PiYmLCBGcmFtZUlkZW50aWZpZXIsIEhUTUxGcmFtZU93bmVyRWxlbWVudCosIEZy
YW1lKiBwYXJlbnQsIE1hcmthYmxlPExheWVySG9zdGluZ0NvbnRleHRJZGVudGlmaWVyPiwgRnJh
bWUqIG9wZW5lciA9IG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9S
ZW1vdGVGcmFtZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZUNsaWVu
dC5oCmluZGV4IDRlZmQxMDNmMzkxMi4uNTQxYTBkMDFjNTYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9SZW1vdGVGcmFtZUNsaWVudC5oCkBAIC0zMCw2ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgRGF0YVNlZ21lbnQ7CiBjbGFzcyBGcmFtZUxvYWRSZXF1ZXN0OwogY2xh
c3MgSW50U2l6ZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luRGF0YTsKQEAgLTQ4LDYgKzQ5LDkgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHJlbmRlclRyZWVBc1RleHQoc2l6ZV90IGJhc2VJ
bmRlbnQsIE9wdGlvblNldDxSZW5kZXJBc1RleHRGbGFnPikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBicm9hZGNhc3RGcmFtZVJlbW92YWxUb090aGVyUHJvY2Vzc2VzKCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBjbG9zZVBhZ2UoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGJpbmRSZW1vdGVBY2Nl
c3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgRnJhbWVJZGVudGlmaWVyIHRh
cmdldCwgY29uc3Qgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGFUb2tlbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIGludCk+JiYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0
KEZyYW1lSWRlbnRpZmllciB0YXJnZXQsIEludFBvaW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHVuYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50KSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGZvY3VzKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmZvY3VzKCkgPSAwOwogICAgIHZp
cnR1YWwgflJlbW90ZUZyYW1lQ2xpZW50KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmgKaW5kZXggODRmYzQxOWU1OWNhLi40MmVlZTY2YWIxNmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0Ry
YWdBY3Rpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0b3JDbGllbnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0ZvY3VzRGlyZWN0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUlkZW50
aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lucHV0TW9kZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvTWVkaWFDb250cm9sc0NvbnRleHRNZW51SXRlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Ny
b2xsVHlwZXMuaD4KQEAgLTMxOCw3ICszMTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGV4ZWN1dGVVbmRvUmVkbyhVbmRvT3JSZWRvKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdoZWVs
RXZlbnRXYXNOb3RIYW5kbGVkQnlXZWJDb3JlKGNvbnN0IE5hdGl2ZVdlYldoZWVsRXZlbnQmKSA9
IDA7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdmlydHVhbCB2b2lkIGFjY2Vzc2liaWxpdHlX
ZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgYWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKHN0ZDo6
c3Bhbjxjb25zdCB1aW50OF90PiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBwaWRfdCkgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCBleGVjdXRlU2F2ZWRDb21tYW5kQnlTZWxlY3Rvcihjb25zdCBT
dHJpbmcmIHNlbGVjdG9yKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNlY3VyZUlucHV0
U3RhdGUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0U2VjdXJlSW5wdXRTdGF0ZSgpID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNw
cAppbmRleCAwNTAzMDg2MzkxZmIuLjNlM2I4MTk1ZDA0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcApAQCAtNTQ1LDcgKzU0NSw3IEBA
IHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OnJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0Rv
Y3VtZW50SW5NYWluRnJhbWUoY29uc3QKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi12
b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpyZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5
VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCit2b2lkIFByb3Zpc2lvbmFsUGFn
ZVByb3h5OjpyZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNv
bnN0IHVpbnQ4X3Q+IGRhdGEsIEZyYW1lSWRlbnRpZmllcikKIHsKICAgICBtX2FjY2Vzc2liaWxp
dHlUb2tlbiA9IFZlY3RvcihkYXRhKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
cm92aXNpb25hbFBhZ2VQcm94eS5oCmluZGV4IGRlZWNkNzZhMjAyNC4uZDBiN2VjY2VlZmQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKQEAg
LTE3Miw3ICsxNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVxdWVzdFBhc3N3b3JkRm9yUXVp
Y2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKICNlbmRpZgogI2lmIFBMQVRGT1JN
KENPQ09BKQotICAgIHZvaWQgcmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0
ZDo6c3Bhbjxjb25zdCB1aW50OF90Pik7CisgICAgdm9pZCByZWdpc3RlcldlYlByb2Nlc3NBY2Nl
c3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCiAg
ICAgdm9pZCBiaW5kQWNjZXNzaWJpbGl0eVRyZWUoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCmluZGV4IGYyZmM4YTU0ZDg4My4uMjMwMzA3
YTE3NGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcApAQCAt
NDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlBh
Z2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFzdGVib2FyZFByb3h5LmgiCisjaW5j
bHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIK
ICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZVBvbGljaWVz
RGF0YS5oIgpAQCAtMTg0LDYgKzE4NSwxNCBAQCB2b2lkIFdlYkZyYW1lUHJveHk6Om5hdmlnYXRl
U2VydmljZVdvcmtlckNsaWVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SQogICAg
IH0pOwogfQogCit2b2lkIFdlYkZyYW1lUHJveHk6OmJpbmRBY2Nlc3NpYmlsaXR5RnJhbWVXaXRo
RGF0YShzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSkKK3sKKyAgICBpZiAoIW1fcGFnZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
OjpCaW5kQWNjZXNzaWJpbGl0eUZyYW1lV2l0aERhdGEobV9mcmFtZUlELCBkYXRhKSk7Cit9CisK
IHZvaWQgV2ViRnJhbWVQcm94eTo6bG9hZFVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiByZWZlcnJlcikKIHsKICAgICBpZiAoIW1fcGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkZyYW1lUHJveHkuaAppbmRleCBiMGRhZWIwZTY0ZmMuLjcxNWJiODBiYWI2NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaApAQCAtMTcwLDYgKzE3MCw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlbW90ZVByb2Nlc3NEaWRUZXJtaW5hdGUoKTsKICAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiB3ZWJQYWdlSURJbkN1cnJlbnRQcm9jZXNzKCk7
CiAgICAgdm9pZCBub3RpZnlQYXJlbnRPZkxvYWRDb21wbGV0aW9uKFdlYlByb2Nlc3NQcm94eSYp
OworICAgIHZvaWQgcmVtb3ZlUmVtb3RlUGFnZXNGb3JTdXNwZW5zaW9uKCk7CisgICAgdm9pZCBi
aW5kQWNjZXNzaWJpbGl0eUZyYW1lV2l0aERhdGEoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KTsK
IAogICAgIGJvb2wgaXNGb2N1c2VkKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCmluZGV4IGMwZmUxMmU4YjcwMy4uMDExY2ZlYzYzMGZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEyOTUsOCArMTI5NSwxMiBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c3dhcFRvUHJvdmlzaW9uYWxQYWdlKHN0ZDo6dW5pcXVlX3B0
cjxQcm92aXNpb25hbFBhZ2VQcm94eT4gcAogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgYXV0
byBhY2Nlc3NpYmlsaXR5VG9rZW4gPSBwcm92aXNpb25hbFBhZ2UtPnRha2VBY2Nlc3NpYmlsaXR5
VG9rZW4oKTsKLSAgICBpZiAoIWFjY2Vzc2liaWxpdHlUb2tlbi5pc0VtcHR5KCkpCi0gICAgICAg
IHJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbih7IGFjY2Vzc2liaWxpdHlUb2tl
bi5kYXRhKCksIGFjY2Vzc2liaWxpdHlUb2tlbi5zaXplKCkgfSk7CisgICAgaWYgKCFhY2Nlc3Np
YmlsaXR5VG9rZW4uaXNFbXB0eSgpKSB7CisgICAgICAgIHJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vz
c2liaWxpdHlUb2tlbih7IGFjY2Vzc2liaWxpdHlUb2tlbi5kYXRhKCksIGFjY2Vzc2liaWxpdHlU
b2tlbi5zaXplKCkgfSwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHsKKyAgICAgICAgICAgIE9i
amVjdElkZW50aWZpZXI8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyVHlwZT4oMCksCisgICAgICAg
ICAgICBPYmplY3RJZGVudGlmaWVyPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyVHlwZT4oMCkK
KyAgICAgICAgfSk7CisgICAgfQogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9S
TShXUEUpCiAgICAgYXV0byBhY2Nlc3NpYmlsaXR5UGx1Z0lEID0gcHJvdmlzaW9uYWxQYWdlLT5h
Y2Nlc3NpYmlsaXR5UGx1Z0lEKCk7CkBAIC0xMzc0NCw2ICsxMzc0OCwyMiBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6YWRkQ29uc29sZU1lc3NhZ2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIE1lc3Nh
Z2VTb3VyY2UgbWVzcwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNz
YWdlIHsgZnJhbWVJRCwgbWVzc2FnZVNvdXJjZSwgbWVzc2FnZUxldmVsLCBtZXNzYWdlLCBjb3Jl
SWRlbnRpZmllciB9KTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OmJpbmRSZW1vdGVBY2Nlc3Np
YmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIGNvbnN0IHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhVG9rZW4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBpbnQpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jVG9Qcm9j
ZXNzQ29udGFpbmluZ0ZyYW1lKGZyYW1lSUQsIE1lc3NhZ2VzOjpXZWJQYWdlOjpCaW5kUmVtb3Rl
QWNjZXNzaWJpbGl0eUZyYW1lcyhwcm9jZXNzSWRlbnRpZmllciwgZnJhbWVJRCwgZGF0YVRva2Vu
KSk7CisgICAgaWYgKCFzZW5kUmVzdWx0LnN1Y2NlZWRlZCgpKQorICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIoeyB9LCAwKTsKKworICAgIGF1dG8gW2ZyYW1lRGF0YVRva2VuLCBmcmFt
ZVByb2Nlc3NJZGVudGlmaWVyXSA9IHNlbmRSZXN1bHQudGFrZVJlcGx5KCk7CisKKyAgICBjb21w
bGV0aW9uSGFuZGxlcihmcmFtZURhdGFUb2tlbiwgZnJhbWVQcm9jZXNzSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZz
ZXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OkludFBvaW50IG9m
ZnNldCkKK3sKKyAgICBzZW5kVG9Qcm9jZXNzQ29udGFpbmluZ0ZyYW1lKGZyYW1lSUQsIE1lc3Nh
Z2VzOjpXZWJQYWdlOjpVcGRhdGVSZW1vdGVQYWdlQWNjZXNzaWJpbGl0eU9mZnNldChmcmFtZUlE
LCBvZmZzZXQpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBXRUJQQUdF
UFJPWFlfUkVMRUFTRV9MT0cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5k
ZXggNWI3Y2Y1NGVkMTQxLi42NjA4ZGMzY2NjNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCkBAIC0xMzU0LDcgKzEzNTQsNyBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICAvLyBDYWxsZWQgYnkgdGhlIHdlYiBwcm9jZXNzIHRocm91Z2ggYSBtZXNz
YWdlLgotICAgIHZvaWQgcmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6
c3Bhbjxjb25zdCB1aW50OF90Pik7CisgICAgdm9pZCByZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3Np
YmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIpOwogICAgIC8vIENhbGxlZCBieSB0aGUgVUkgcHJvY2VzcyB3aGVuIGl0IGlzIHJlYWR5
IHRvIHNlbmQgaXRzIHRva2VucyB0byB0aGUgd2ViIHByb2Nlc3MuCiAgICAgdm9pZCByZWdpc3Rl
clVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGVs
ZW1lbnRUb2tlbiwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHdpbmRvd1Rva2VuKTsKICAgICB2
b2lkIHJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHR5cGVzLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pOwpAQCAtMjk3Nyw2ICsyOTc3LDgg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGZvY3VzUmVtb3RlRnJhbWUoSVBDOjpDb25uZWN0aW9uJiwg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lkIHBvc3RNZXNzYWdlVG9SZW1vdGUo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmln
aW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciB0YXJnZXQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiB0YXJnZXRPcmlnaW4sIGNvbnN0IFdlYkNvcmU6Ok1lc3Nh
Z2VXaXRoTWVzc2FnZVBvcnRzJik7CiAgICAgdm9pZCByZW5kZXJUcmVlQXNUZXh0KFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgc2l6ZV90IGJhc2VJbmRlbnQsIE9wdGlvblNldDxXZWJDb3JlOjpS
ZW5kZXJBc1RleHRGbGFnPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYpOwor
ICAgIHZvaWQgYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlm
aWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBk
YXRhVG9rZW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+
LCBpbnQpPiYmKTsKKyAgICB2b2lkIHVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNl
dChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OkludFBvaW50KTsKIAogICAgIHZv
aWQgc2V0VGV4dEluZGljYXRvckZyb21GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdl
YkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhJiYsIHVpbnQ2NF90KTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDMxMTU1YjMyOTE0
Ni4uNzJiM2Y3MjRkNTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zMjQsNyArMzI0LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZVByb3h5IHsKICAgICBFeGVjdXRlU2F2ZWRDb21tYW5kQnlTZWxlY3RvcihTdHJpbmcgc2VsZWN0
b3IpIC0+IChib29sIGhhbmRsZWQpIFN5bmNocm9ub3VzCiAKICAgICAjIFJlbW90ZSBhY2Nlc3Np
YmlsaXR5IG1lc3NhZ2VzCi0gICAgUmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vu
KHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhKQorICAgIFJlZ2lzdGVyV2ViUHJvY2Vzc0Fj
Y2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSwgV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCiAKICAgICAjIFNwZWVjaCBtZXNzYWdlcwogICAgIEdl
dElzU3BlYWtpbmcoKSAtPiAoYm9vbCBpc1NwZWFraW5nKSBTeW5jaHJvbm91cwpAQCAtNjMwLDQg
KzYzMCw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRm9jdXNSZW1vdGVGcmFt
ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKICAgICBQb3N0TWVzc2FnZVRvUmVt
b3RlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBzb3VyY2UsIFN0cmluZyBzb3VyY2VPcmlnaW4s
IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciB0YXJnZXQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhPiB0YXJnZXRPcmlnaW4sIHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdl
V2l0aE1lc3NhZ2VQb3J0cyBtZXNzYWdlKQogICAgIFJlbmRlclRyZWVBc1RleHQoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGlkZW50aWZpZXIsIHNpemVfdCBiYXNlSW5kZW50LCBPcHRpb25TZXQ8
V2ViQ29yZTo6UmVuZGVyQXNUZXh0RmxhZz4gYmVoYXZpb3IpIC0+IChTdHJpbmcgcmVuZGVyVHJl
ZUR1bXApIFN5bmNocm9ub3VzCisgICAgQmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50
IHByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3Rk
OjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGFUb2tlbikgLT4gKHN0ZDo6c3Bhbjxjb25zdCB1aW50
OF90PiB0b2tlbiwgaW50IHByb2Nlc3NJZGVudGlmaWVyKSBTeW5jaHJvbm91cworICAgIFVwZGF0
ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgV2ViQ29yZTo6SW50UG9pbnQgb2Zmc2V0KQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCAxMGM0ZjZhZTEyNTAuLjYz
ODhjYjQ2NzJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLmgKQEAgLTExMCw3ICsxMTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJB
bGxFZGl0Q29tbWFuZHMoKSBvdmVycmlkZTsKICAgICBib29sIGNhblVuZG9SZWRvKFVuZG9PclJl
ZG8pIG92ZXJyaWRlOwogICAgIHZvaWQgZXhlY3V0ZVVuZG9SZWRvKFVuZG9PclJlZG8pIG92ZXJy
aWRlOwotICAgIHZvaWQgYWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKHN0ZDo6
c3Bhbjxjb25zdCB1aW50OF90Pikgb3ZlcnJpZGU7CisgICAgdm9pZCBhY2Nlc3NpYmlsaXR5V2Vi
UHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIHBpZF90KSBvdmVycmlkZTsKICAgICBib29sIGV4ZWN1dGVTYXZlZENv
bW1hbmRCeVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IpIG92ZXJyaWRlOwogICAgIHZv
aWQgdXBkYXRlU2VjdXJlSW5wdXRTdGF0ZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVzZXRTZWN1
cmVJbnB1dFN0YXRlKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggY2IyM2Y0OTc0YTZiLi5iNWFkZGRjZTIzZmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
bW0KQEAgLTM4OSw3ICszODksNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpleGVjdXRlVW5kb1Jl
ZG8oVW5kb09yUmVkbyB1bmRvT3JSZWRvKQogICAgIHJldHVybiAodW5kb09yUmVkbyA9PSBVbmRv
T3JSZWRvOjpVbmRvKSA/IFtbY29udGVudFZpZXcoKSB1bmRvTWFuYWdlcl0gdW5kb10gOiBbW2Nv
bnRlbnRWaWV3KCkgdW5kb01hbmFnZXJdIHJlZG9dOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBs
OjphY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVp
bnQ4X3Q+IGRhdGEpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5V2ViUHJvY2Vz
c1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEsIFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciwgcGlkX3QpCiB7CiAgICAgTlNEYXRhICpyZW1vdGVUb2tlbiA9IFtOU0Rh
dGEgZGF0YVdpdGhCeXRlczpkYXRhLmRhdGEoKSBsZW5ndGg6ZGF0YS5zaXplKCldOwogICAgIFtj
b250ZW50VmlldygpIF9zZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuOnJlbW90ZVRva2Vu
XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJ
T1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmlu
ZGV4IDk2NGYzMDU5MmFhOC4uOTVjY2QwNTkyYjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTc2Myw5ICs3NjMsOSBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKGJvb2wpCiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyV2ViUHJvY2Vzc0Fj
Y2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSkKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpyZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFu
PGNvbnN0IHVpbnQ4X3Q+IGRhdGEsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogewotICAgIHBy
b3RlY3RlZFBhZ2VDbGllbnQoKS0+YWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVk
KGRhdGEpOworICAgIHBhZ2VDbGllbnQoKS5hY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVj
ZWl2ZWQoZGF0YSwgZnJhbWVJRCk7CiB9ICAgIAogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKaW5kZXggZmI2YzYwNzg2N2FmLi5iZjhkYTQz
MGQ4YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbE1hYy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1w
bE1hYy5oCkBAIC0xNzYsNyArMTc2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdlc3R1cmVFdmVu
dFdhc05vdEhhbmRsZWRCeVdlYkNvcmUoY29uc3QgTmF0aXZlV2ViR2VzdHVyZUV2ZW50Jikgb3Zl
cnJpZGU7CiAjZW5kaWYKIAotICAgIHZvaWQgYWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJl
Y2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Pikgb3ZlcnJpZGU7CisgICAgdm9pZCBhY2Nl
c3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHBpZF90KSBvdmVycmlkZTsKIAogICAgIHZvaWQg
bWFrZUZpcnN0UmVzcG9uZGVyKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBhc3Npc3RpdmVUZWNobm9s
b2d5TWFrZUZpcnN0UmVzcG9uZGVyKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KaW5kZXggMDc4MGYxOGRhMWMyLi4wMTUw
ZWM0NTEyY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xp
ZW50SW1wbE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGxNYWMubW0KQEAgLTU4MSw5ICs1ODEsOSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRU
ZXh0SW5kaWNhdG9yQW5pbWF0aW9uUHJvZ3Jlc3MoZmxvYXQgcHJvZ3Jlc3MpCiAgICAgbV9pbXBs
LT5zZXRUZXh0SW5kaWNhdG9yQW5pbWF0aW9uUHJvZ3Jlc3MocHJvZ3Jlc3MpOwogfQogCi12b2lk
IFBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3Rk
OjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjphY2Nlc3Np
YmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRh
dGEsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBwaWRfdCBwaWQpCiB7Ci0gICAg
bV9pbXBsLT5zZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuKFtOU0RhdGEgZGF0YVdpdGhC
eXRlczpkYXRhLmRhdGEoKSBsZW5ndGg6ZGF0YS5zaXplKCldKTsKKyAgICBtX2ltcGwtPnNldEFj
Y2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW4oW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEuZGF0
YSgpIGxlbmd0aDpkYXRhLnNpemUoKV0sIGZyYW1lSUQsIHBpZCk7CiB9CiAgICAgCiB2b2lkIFBh
Z2VDbGllbnRJbXBsOjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGNvbnN0IExheWVy
VHJlZUNvbnRleHQmIGxheWVyVHJlZUNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCBjZmIxMGZkYmI0MTMuLjg2OTYxN2EyOWQ4
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1t
CkBAIC0zMDYsMTIgKzMwNiwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybURpY3Rp
b25hcnlMb29rdXAoY29uc3QgRGljdGlvbmFyeVBvcHVwSW5mbyYgZGljdGlvbgogICAgIHByb3Rl
Y3RlZFBhZ2VDbGllbnQoKS0+ZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAoZGljdGlvbmFyeVBv
cHVwSW5mbyk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZWdpc3RlcldlYlByb2Nlc3NBY2Nl
c3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCit2b2lkIFdlYlBh
Z2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxj
b25zdCB1aW50OF90PiBkYXRhLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKIHsKICAgICBpZiAo
IWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBwcm90ZWN0
ZWRQYWdlQ2xpZW50KCktPmFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChkYXRh
KTsKKyAgICBwcm90ZWN0ZWRQYWdlQ2xpZW50KCktPmFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9r
ZW5SZWNlaXZlZChkYXRhLCBmcmFtZUlELCBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpLT5yZW1v
dGVQcm9jZXNzSUQoKSk7CiB9ICAgIAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bWFrZUZpcnN0UmVz
cG9uZGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3
SW1wbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJbXBsLmgKaW5kZXgg
MDNkZmRhZWUxNTNjLi41YTJlMTI5ZmRjOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XZWJWaWV3SW1wbC5oCkBAIC00NDgsNyArNDQ4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
SWdub3Jlc01vdXNlRHJhZ2dlZEV2ZW50cyhib29sKTsKICAgICBib29sIGlnbm9yZXNNb3VzZURy
YWdnZWRFdmVudHMoKSBjb25zdCB7IHJldHVybiBtX2lnbm9yZXNNb3VzZURyYWdnZWRFdmVudHM7
IH0KIAotICAgIHZvaWQgc2V0QWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlbihOU0RhdGEgKik7
CisgICAgdm9pZCBzZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuKE5TRGF0YSAqLCBXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIHBpZF90KTsKICAgICB2b2lkIGFjY2Vzc2liaWxpdHlSZWdp
c3RlclVJUHJvY2Vzc1Rva2VucygpOwogICAgIHZvaWQgdXBkYXRlUmVtb3RlQWNjZXNzaWJpbGl0
eVJlZ2lzdHJhdGlvbihib29sIHJlZ2lzdGVyUHJvY2Vzcyk7CiAgICAgaWQgYWNjZXNzaWJpbGl0
eUZvY3VzZWRVSUVsZW1lbnQoKTsKQEAgLTkyNyw2ICs5MjcsNyBAQCBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19FTkQKICAgICBib29sIG1fYWxsb3dzTWFnbmlmaWNhdGlvbiB7IGZhbHNl
IH07CiAKICAgICBSZXRhaW5QdHI8TlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlFbGVtZW50PiBtX3Jl
bW90ZUFjY2Vzc2liaWxpdHlDaGlsZDsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFy
eT4gbV9yZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVDYWNoZTsKIAogICAgIFJlZlB0cjxXZWJDb3Jl
OjpJbWFnZT4gbV9wcm9taXNlZEltYWdlOwogICAgIFN0cmluZyBtX3Byb21pc2VkRmlsZW5hbWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwubW0KaW5kZXggNWJkZTEx
MTYyNzkwLi5hNGIzMDdkNzZlNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2Vi
Vmlld0ltcGwubW0KQEAgLTM0ODEsMTAgKzM0ODEsMTIgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0
SWdub3Jlc01vdXNlRHJhZ2dlZEV2ZW50cyhib29sIGlnbm9yZXNNb3VzZURyYWdnZWRFdmVudHMp
CiAgICAgbV9pZ25vcmVzTW91c2VEcmFnZ2VkRXZlbnRzID0gaWdub3Jlc01vdXNlRHJhZ2dlZEV2
ZW50czsKIH0KIAotdm9pZCBXZWJWaWV3SW1wbDo6c2V0QWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NU
b2tlbihOU0RhdGEgKmRhdGEpCit2b2lkIFdlYlZpZXdJbXBsOjpzZXRBY2Nlc3NpYmlsaXR5V2Vi
UHJvY2Vzc1Rva2VuKE5TRGF0YSAqZGF0YSwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIHBpZF90IHBpZCkKIHsKLSAgICBtX3JlbW90ZUFjY2Vzc2liaWxpdHlDaGlsZCA9IGRhdGEu
bGVuZ3RoID8gYWRvcHROUyhbW05TQWNjZXNzaWJpbGl0eVJlbW90ZVVJRWxlbWVudCBhbGxvY10g
aW5pdFdpdGhSZW1vdGVUb2tlbjpkYXRhXSkgOiBuaWw7Ci0gICAgdXBkYXRlUmVtb3RlQWNjZXNz
aWJpbGl0eVJlZ2lzdHJhdGlvbih0cnVlKTsKKyAgICBpZiAocGlkID09IG1fcGFnZS0+cHJvY2Vz
cygpLnByb2Nlc3NJRCgpKSB7CisgICAgICAgIG1fcmVtb3RlQWNjZXNzaWJpbGl0eUNoaWxkID0g
ZGF0YS5sZW5ndGggPyBhZG9wdE5TKFtbTlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlFbGVtZW50IGFs
bG9jXSBpbml0V2l0aFJlbW90ZVRva2VuOmRhdGFdKSA6IG5pbDsKKyAgICAgICAgdXBkYXRlUmVt
b3RlQWNjZXNzaWJpbGl0eVJlZ2lzdHJhdGlvbih0cnVlKTsKKyAgICB9CiB9CiAKIHZvaWQgV2Vi
Vmlld0ltcGw6OnVwZGF0ZVJlbW90ZUFjY2Vzc2liaWxpdHlSZWdpc3RyYXRpb24oYm9vbCByZWdp
c3RlclByb2Nlc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5k
ZXggN2QyYTQyNjVmZDVjLi5mM2Y3M2YzNjdlYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFt
ZUxvYWRlckNsaWVudC5jcHAKQEAgLTE4MDcsNiArMTgwNywxMiBAQCB2b2lkIFdlYkxvY2FsRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JET01XaW5k
b3dFeHRlbgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgCitXZWJDb3JlOjpJbnRQb2ludCBX
ZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50OjphY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQo
KQoreworICAgIFJlZlB0ciB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAgIHJldHVybiB3
ZWJQYWdlID8gd2ViUGFnZS0+YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCkgOiBJbnRQ
b2ludCgpOworfQorCiBSZW1vdGVBWE9iamVjdFJlZiBXZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50
OjphY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkKIHsKICAgICBSZWZQdHIgd2ViUGFnZSA9IG1f
ZnJhbWUtPnBhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4
IDg4YzhjYzVjYjcyZS4uOWYzYjY3ZjBmY2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJMb2NhbEZyYW1lTG9h
ZGVyQ2xpZW50LmgKQEAgLTI0MCw2ICsyNDAsNyBAQCBwcml2YXRlOgogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgUmVtb3RlQVhPYmplY3RSZWYgYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgp
IGZpbmFsOworICAgIFdlYkNvcmU6OkludFBvaW50IGFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9m
ZnNldCgpIGZpbmFsOwogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAg
ICAgdm9pZCBzZXRBWElzb2xhdGVkVHJlZVJvb3QoV2ViQ29yZTo6QVhDb3JlT2JqZWN0KikgZmlu
YWw7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuY3BwCmluZGV4IDhjYmZmMmM5
YjhjOS4uYTJmMDk0OGQ0MzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVudC5jcHAKQEAg
LTk2LDYgKzk2LDM4IEBAIFN0cmluZyBXZWJSZW1vdGVGcmFtZUNsaWVudDo6cmVuZGVyVHJlZUFz
VGV4dChzaXplX3QgYmFzZUluZGVudCwgT3B0aW9uU2V0PFJlbmRlCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAordm9pZCBXZWJSZW1vdGVGcmFtZUNsaWVudDo6dW5iaW5kUmVtb3RlQWNjZXNzaWJp
bGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIpCit7CisgICAgLy8gTWFrZSBzdXJlIEFw
cEtpdCBzeXN0ZW0ga25vd3MgYWJvdXQgb3VyIHJlbW90ZSBVSSBwcm9jZXNzIHN0YXR1cyBub3cu
CisgICAgaWYgKFJlZlB0ciBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKQorICAgICAgICBwYWdlLT5h
Y2Nlc3NpYmlsaXR5TWFuYWdlUmVtb3RlRWxlbWVudFN0YXR1cyhmYWxzZSwgcHJvY2Vzc0lkZW50
aWZpZXIpOworfQorCit2b2lkIFdlYlJlbW90ZUZyYW1lQ2xpZW50Ojp1cGRhdGVSZW1vdGVGcmFt
ZUFjY2Vzc2liaWxpdHlPZmZzZXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdl
YkNvcmU6OkludFBvaW50IG9mZnNldCkKK3sKKyAgICBpZiAoUmVmUHRyIHBhZ2UgPSBtX2ZyYW1l
LT5wYWdlKCkpCisgICAgICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6VXBk
YXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KGZyYW1lSUQsIG9mZnNldCkpOworfQor
Cit2b2lkIFdlYlJlbW90ZUZyYW1lQ2xpZW50OjpiaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1l
cyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBjb25zdCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YVRva2VuLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgaW50KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBSZWZQdHIgcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAoIXBh
Z2UpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+
IHsgfSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHNlbmRSZXN1bHQg
PSBwYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCaW5kUmVtb3RlQWNjZXNz
aWJpbGl0eUZyYW1lcyhwcm9jZXNzSWRlbnRpZmllciwgZnJhbWVJRCwgZGF0YVRva2VuKSk7Cisg
ICAgaWYgKCFzZW5kUmVzdWx0LnN1Y2NlZWRlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBh
dXRvIFtyZXN1bHRUb2tlbiwgcHJvY2Vzc0lkZW50aWZpZXJSZXN1bHRdID0gc2VuZFJlc3VsdC50
YWtlUmVwbHkoKTsKKworICAgIC8vIE1ha2Ugc3VyZSBBcHBLaXQgc3lzdGVtIGtub3dzIGFib3V0
IG91ciByZW1vdGUgVUkgcHJvY2VzcyBzdGF0dXMgbm93LgorICAgIHBhZ2UtPmFjY2Vzc2liaWxp
dHlNYW5hZ2VSZW1vdGVFbGVtZW50U3RhdHVzKHRydWUsIHByb2Nlc3NJZGVudGlmaWVyUmVzdWx0
KTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHRUb2tlbiwgcHJvY2Vzc0lkZW50aWZpZXJS
ZXN1bHQpOworfQorCiB2b2lkIFdlYlJlbW90ZUZyYW1lQ2xpZW50Ojpicm9hZGNhc3RGcmFtZVJl
bW92YWxUb090aGVyUHJvY2Vzc2VzKCkKIHsKICAgICBXZWJGcmFtZUxvYWRlckNsaWVudDo6YnJv
YWRjYXN0RnJhbWVSZW1vdmFsVG9PdGhlclByb2Nlc3NlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90ZUZyYW1lQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVD
bGllbnQuaAppbmRleCA2MjZlMDVjM2U4OGIuLmM4ODllYjdlNWZhZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90ZUZyYW1lQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90
ZUZyYW1lQ2xpZW50LmgKQEAgLTQ4LDYgKzQ4LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBwb3N0
TWVzc2FnZVRvUmVtb3RlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBzb3VyY2UsIGNvbnN0IFN0
cmluZyYgc291cmNlT3JpZ2luLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgdGFyZ2V0LCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gdGFyZ2V0T3JpZ2luLCBjb25z
dCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYpIGZpbmFsOwogICAgIHZvaWQgY2hh
bmdlTG9jYXRpb24oV2ViQ29yZTo6RnJhbWVMb2FkUmVxdWVzdCYmKSBmaW5hbDsKICAgICBTdHJp
bmcgcmVuZGVyVHJlZUFzVGV4dChzaXplX3QgYmFzZUluZGVudCwgT3B0aW9uU2V0PFdlYkNvcmU6
OlJlbmRlckFzVGV4dEZsYWc+KSBmaW5hbDsKKyAgICB2b2lkIGJpbmRSZW1vdGVBY2Nlc3NpYmls
aXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
LCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpz
cGFuPGNvbnN0IHVpbnQ4X3Q+LCBpbnQpPiYmKSBmaW5hbDsKKyAgICB2b2lkIHVuYmluZFJlbW90
ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50KSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZVJlbW90ZUZy
YW1lQWNjZXNzaWJpbGl0eU9mZnNldChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6
OkludFBvaW50KSBmaW5hbDsKKwogICAgIHZvaWQgYnJvYWRjYXN0RnJhbWVSZW1vdmFsVG9PdGhl
clByb2Nlc3NlcygpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VQYWdlKCkgZmluYWw7CiAgICAgdm9p
ZCBmb2N1cygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCmluZGV4IGFlNDNmMWE0Njk4Yi4uZWZmNjRhMzAx
ZjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9X
ZWJQYWdlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29j
b2EvV2ViUGFnZUNvY29hLm1tCkBAIC03Nyw2ICs3Nyw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1VU
SVJlZ2lzdHJ5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VUSVV0aWxpdGllcy5oPgogI2ltcG9ydCA8
cGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oPgorI2ltcG9ydCA8cGFsL3NwaS9jb2Nv
YS9OU0FjY2Vzc2liaWxpdHlTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6Q29y
ZVNQSS5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oPgogCkBAIC00MDQs
MTAgKzQwNSw0NiBAQCB2b2lkIFdlYlBhZ2U6OmNsZWFyRGljdGF0aW9uQWx0ZXJuYXRpdmVzKFZl
Y3RvcjxEaWN0YXRpb25Db250ZXh0PiYmIGNvbnRleHRzKQogICAgIH0sIERvY3VtZW50TWFya2Vy
OjpUeXBlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZXMpOwogfQogCi12b2lkIFdlYlBhZ2U6OmFjY2Vz
c2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKFJldGFpblB0cjxOU0RhdGE+IHJlbW90ZVRva2Vu
KQordm9pZCBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tlbihSZXRhaW5Q
dHI8TlNEYXRhPiByZW1vdGVUb2tlbiwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCiB7CiAgICAg
c3RkOjpzcGFuIGRhdGFUb2tlbihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihbcmVt
b3RlVG9rZW4gYnl0ZXNdKSwgW3JlbW90ZVRva2VuIGxlbmd0aF0pOwotICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKGRh
dGFUb2tlbikpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJXZWJQ
cm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKGRhdGFUb2tlbiwgZnJhbWVJRCkpOworfQorCit2b2lk
IFdlYlBhZ2U6OmFjY2Vzc2liaWxpdHlNYW5hZ2VSZW1vdGVFbGVtZW50U3RhdHVzKGJvb2wgcmVn
aXN0ZXJTdGF0dXMsIGludCBwcm9jZXNzSWRlbnRpZmllcikKK3sKKyAgICBpZiAocmVnaXN0ZXJT
dGF0dXMpCisgICAgICAgIFtOU0FjY2Vzc2liaWxpdHlSZW1vdGVVSUVsZW1lbnQgcmVnaXN0ZXJS
ZW1vdGVVSVByb2Nlc3NJZGVudGlmaWVyOnByb2Nlc3NJZGVudGlmaWVyXTsKKyAgICBlbHNlCisg
ICAgICAgIFtOU0FjY2Vzc2liaWxpdHlSZW1vdGVVSUVsZW1lbnQgdW5yZWdpc3RlclJlbW90ZVVJ
UHJvY2Vzc0lkZW50aWZpZXI6cHJvY2Vzc0lkZW50aWZpZXJdOworfQorCit2b2lkIFdlYlBhZ2U6
OmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBk
YXRhVG9rZW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+
LCBpbnQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFJlZlB0ciB3ZWJGcmFtZSA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpOworICAgIGlmICghd2ViRnJh
bWUpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcih7IH0sIDApOworICAgIH0KKworICAgIFJlZlB0ciBjb3JlTG9jYWxGcmFt
ZSA9IHdlYkZyYW1lLT5jb3JlTG9jYWxGcmFtZSgpOworICAgIGlmICghY29yZUxvY2FsRnJhbWUp
IHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcih7IH0sIDApOworICAgIH0KKworICAgIGF1dG8qIHJlbmRlcmVyID0gY29yZUxv
Y2FsRnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXIpIHsKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cih7IH0sIDApOworICAgIH0KKworICAgIHJlZ2lzdGVyUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5
VG9rZW5zKHByb2Nlc3NJZGVudGlmaWVyLCBkYXRhVG9rZW4pOworCisgICAgLy8gR2V0IG91ciBy
ZW1vdGUgdG9rZW4gZGF0YSBhbmQgc2VuZCBiYWNrIHRvIHRoZSBSZW1vdGVGcmFtZS4KKyAgICBh
dXRvIHJlbW90ZVRva2VuID0gYWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0YSgpOworICAgIHN0
ZDo6c3BhbiByZW1vdGVEYXRhVG9rZW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
W3JlbW90ZVRva2VuIGJ5dGVzXSksIFtyZW1vdGVUb2tlbiBsZW5ndGhdKTsKKyAgICBjb21wbGV0
aW9uSGFuZGxlcihyZW1vdGVEYXRhVG9rZW4sIGdldHBpZCgpKTsKIH0KIAogI2lmIEVOQUJMRShB
UFBMRV9QQVkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5k
ZXggYzA1ZGRjZGU3ZmFhLi4xNGQ4MjIxYjQyYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTY3MSw2ICs2NzEsMTAgQEAgcHVibGljOgogICAgIHZv
aWQgY2xlYXJIaXN0b3J5KCk7CiAKICAgICB2b2lkIGFjY2Vzc2liaWxpdHlTZXR0aW5nc0RpZENo
YW5nZSgpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgYWNjZXNzaWJpbGl0eU1hbmFn
ZVJlbW90ZUVsZW1lbnRTdGF0dXMoYm9vbCwgaW50KTsKKyNlbmRpZgorCiAgICAgdm9pZCBzY3Jl
ZW5Qcm9wZXJ0aWVzRGlkQ2hhbmdlKCk7CiAKICAgICB2b2lkIHNjYWxlUGFnZShkb3VibGUgc2Nh
bGUsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBvcmlnaW4pOwpAQCAtMTA0Myw3ICsxMDQ3LDEx
IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlh
bGl6ZUFjY2Vzc2liaWxpdHkoKTsKICAgICB2b2lkIHJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJp
bGl0eVRva2VucyhzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZWxlbWVudFRva2VuLCBzdGQ6OnNw
YW48Y29uc3QgdWludDhfdD4gd2luZG93VG9rZW4pOworICAgIHZvaWQgcmVnaXN0ZXJSZW1vdGVG
cmFtZUFjY2Vzc2liaWxpdHlUb2tlbnMocGlkX3QsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Pik7
CiAgICAgV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdCogYWNjZXNzaWJpbGl0eVJlbW90ZU9i
amVjdCgpOworICAgIFdlYkNvcmU6OkludFBvaW50IGFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9m
ZnNldCgpOworICAgIHZvaWQgY3JlYXRlTW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50KHBpZF90KTsK
KyAgICB2b2lkIHVwZGF0ZVJlbW90ZVBhZ2VBY2Nlc3NpYmlsaXR5T2Zmc2V0KFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciwgV2ViQ29yZTo6SW50UG9pbnQpOwogI2lmIEVOQUJMRShBQ0NFU1NJQklM
SVRZX0lTT0xBVEVEX1RSRUUpCiAgICAgdm9pZCBjYWNoZUFYUG9zaXRpb24oY29uc3QgV2ViQ29y
ZTo6RmxvYXRQb2ludCYpOwogICAgIHZvaWQgY2FjaGVBWFNpemUoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYpOwpAQCAtMjA5NCw3ICsyMTAyLDcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICB2b2lkIHJlcXVlc3RBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm8oQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sLCBXZWJDb3JlOjpOb3dQbGF5aW5nSW5mbyYmKT4mJik7CiAgICAg
UmV0YWluUHRyPE5TRGF0YT4gYWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0YSgpIGNvbnN0Owot
ICAgIHZvaWQgYWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oUmV0YWluUHRyPE5TRGF0
YT4pOworICAgIHZvaWQgYWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oUmV0YWluUHRy
PE5TRGF0YT4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAjZW5kaWYKIAogICAgIHZvaWQg
c2V0U2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKGJvb2wgZGlzcGF0Y2gpIHsgbV9z
aG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMgPSBkaXNwYXRjaDsgfQpAQCAtMjIwNCw2
ICsyMjEyLDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVtb3RlUG9zdE1lc3NhZ2UoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciB0YXJnZXQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhPiYmIHRhcmdldE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6TWVzc2FnZVdp
dGhNZXNzYWdlUG9ydHMmKTsKICAgICB2b2lkIHJlbmRlclRyZWVBc1RleHQoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyLCBzaXplX3QgYmFzZUluZGVudCwgT3B0aW9uU2V0PFdlYkNvcmU6OlJlbmRl
ckFzVGV4dEZsYWc+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJik7CisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBiaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhp
bnQgcHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgc3RkOjpzcGFu
PGNvbnN0IHVpbnQ4X3Q+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6c3Bhbjxjb25zdCB1
aW50OF90PiwgaW50KT4mJik7CisjZW5kaWYKIAogICAgIHZvaWQgcmVxdWVzdFRleHRFeHRyYWN0
aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiYmIGNvbGxlY3Rpb25SZWN0SW5S
b290VmlldywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpUZXh0RXh0cmFjdGlvbjo6
SXRlbSYmKT4mJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDBjYWY2ZTIyNTM3OC4uYWY3YWQyNmMzYTQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KQEAgLTQ5Miw2ICs0OTIsOSBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21t
YW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAg
IFdpbmRvd0FuZFZpZXdGcmFtZXNDaGFuZ2VkKHN0cnVjdCBXZWJLaXQ6OlZpZXdXaW5kb3dDb29y
ZGluYXRlcyBjb29yZGluYXRlcykKICAgICBTZXRNYWluRnJhbWVJc1Njcm9sbGFibGUoYm9vbCBp
c1Njcm9sbGFibGUpCiAgICAgUmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKHN0
ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBlbGVtZW50VG9rZW4sIHN0ZDo6c3Bhbjxjb25zdCB1aW50
OF90PiB3aW5kb3dUb2tlbikKKyAgICBCaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQg
cHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdGQ6
OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YVRva2VuKSAtPiAoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4
X3Q+IHRva2VuLCBpbnQgcHJvY2Vzc0lkZW50aWZpZXIpIFN5bmNocm9ub3VzCisgICAgVXBkYXRl
UmVtb3RlUGFnZUFjY2Vzc2liaWxpdHlPZmZzZXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIFdlYkNvcmU6OkludFBvaW50IG9mZnNldCk7CisKICAgICBHZXRTdHJpbmdTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkKCkgLT4gKFN0cmluZyBzdHJpbmdWYWx1ZSkgU3luY2hyb25vdXMKICAg
ICBHZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChTdHJpbmcgcGFzdGVib2FyZFR5cGUpIC0+
IChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIpIFN5bmNocm9ub3VzCiAgICAg
UmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKGJv
b2wgcmVzdWx0KSBTeW5jaHJvbm91cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCBhN2ZkNzIzMTI3YzAuLjEwZDk4OGEzNWM4
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0KQEAgLTI0MywxMiArMjQzLDE0IEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1Jbml0
aWFsaXplQWNjZXNzaWJpbGl0eSgpCiAgICAgbV9tb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgPSBh
ZG9wdE5TKFtbV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdCBhbGxvY10gaW5pdF0pOwogICAg
IFttX21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCBzZXRXZWJQYWdlOnRoaXNdOwogCi0gICAgYWNj
ZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oYWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0
YSgpKTsKKyAgICBSZWYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRP
ck1haW5GcmFtZSgpOworICAgIGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKGFjY2Vz
c2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSwgZnJhbWUuZnJhbWVJRCgpKTsKIH0KIAogdm9pZCBX
ZWJQYWdlOjpwbGF0Zm9ybVJlaW5pdGlhbGl6ZSgpCiB7Ci0gICAgYWNjZXNzaWJpbGl0eVRyYW5z
ZmVyUmVtb3RlVG9rZW4oYWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0YSgpKTsKKyAgICBSZWYg
ZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwor
ICAgIGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKGFjY2Vzc2liaWxpdHlSZW1vdGVU
b2tlbkRhdGEoKSwgZnJhbWUuZnJhbWVJRCgpKTsKIH0KIAogUmV0YWluUHRyPE5TRGF0YT4gV2Vi
UGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0YSgpIGNvbnN0CkBAIC02NjIsNiArNjY0
LDEyIEBAIHZvaWQgV2ViUGFnZTo6Z2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3Qg
U3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkCiAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9
KTsKIH0KIAorV2ViQ29yZTo6SW50UG9pbnQgV2ViUGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90ZUZy
YW1lT2Zmc2V0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiB7IH07Cit9
CisKIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QqIFdlYlBhZ2U6OmFjY2Vzc2liaWxpdHlS
ZW1vdGVPYmplY3QoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9i
amVjdEJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vz
c2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oCmluZGV4IDM5ZTkwZTNjODk1ZS4uNDk3MDA3MGE0
NTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tB
Y2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaApAQCAt
NDUsNiArNDUsOCBAQCBjbGFzcyBBWENvcmVPYmplY3Q7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBt
X3NpemUgV1RGX0dVQVJERURfQllfTE9DSyhtX2NhY2hlTG9jayk7CiAgICAgVGhyZWFkU2FmZVdl
YWtQdHI8V2ViQ29yZTo6QVhDb3JlT2JqZWN0PiBtX2lzb2xhdGVkVHJlZVJvb3Q7CiAjZW5kaWYK
KworICAgIFdlYkNvcmU6OkludFBvaW50IG1fcmVtb3RlRnJhbWVPZmZzZXQ7CiAgICAgUmV0YWlu
UHRyPGlkPiBtX3BhcmVudDsKICAgICBib29sIG1faGFzTWFpbkZyYW1lUGx1Z2luOwogfQpAQCAt
NTYsOSArNTgsMTEgQEAgY2xhc3MgQVhDb3JlT2JqZWN0OwogLSAodm9pZClzZXRJc29sYXRlZFRy
ZWVSb290OihOYWtlZFB0cjxXZWJDb3JlOjpBWENvcmVPYmplY3Q+KXJvb3Q7CiAjZW5kaWYKIC0g
KHZvaWQpc2V0UmVtb3RlUGFyZW50OihpZClwYXJlbnQ7CistICh2b2lkKXNldFJlbW90ZUZyYW1l
T2Zmc2V0OihXZWJDb3JlOjpJbnRQb2ludClvZmZzZXQ7CiAtICh2b2lkKXNldEhhc01haW5GcmFt
ZVBsdWdpbjooYm9vbCloYXNQbHVnaW47CiAKIC0gKGlkKWFjY2Vzc2liaWxpdHlSb290T2JqZWN0
V3JhcHBlcjsKIC0gKGlkKWFjY2Vzc2liaWxpdHlGb2N1c2VkVUlFbGVtZW50OworLSAoV2ViQ29y
ZTo6SW50UG9pbnQpYWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0OwogCiBAZW5kCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmls
aXR5V2ViUGFnZU9iamVjdEJhc2UubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0KaW5kZXggNmY5OTU0NWFl
YmY1Li5iZWM4ZDczZmFhMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9i
amVjdEJhc2UubW0KQEAgLTM2LDkgKzM2LDExIEBACiAjaW1wb3J0ICJXS1N0cmluZ0NGLmgiCiAj
aW1wb3J0IDxXZWJDb3JlL0FYT2JqZWN0Q2FjaGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1l
bnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRnJhbWVUcmVlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xv
Y2FsRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxGcmFtZVZpZXcuaD4KICNpbXBvcnQg
PFdlYkNvcmUvUGFnZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9SZW1vdGVGcmFtZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9TY3JvbGxWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbGJhci5oPgog
CkBAIC01NywxMSArNTksMTcgQEAgbmFtZXNwYWNlIGF4ID0gV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byog
bG9jYWxNYWluRnJhbWUgPSBkeW5hbWljRG93bmNhc3Q8V2ViQ29yZTo6TG9jYWxGcmFtZT4ocGFn
ZS0+bWFpbkZyYW1lKCkpOwotICAgIGlmICghbG9jYWxNYWluRnJhbWUgfHwgIWxvY2FsTWFpbkZy
YW1lLT5kb2N1bWVudCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoYXV0byog
bG9jYWxNYWluRnJhbWUgPSBkeW5hbWljRG93bmNhc3Q8V2ViQ29yZTo6TG9jYWxGcmFtZT4ocGFn
ZS0+bWFpbkZyYW1lKCkpKSB7CisgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGxvY2FsTWFp
bkZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50LT5heE9iamVj
dENhY2hlKCk7CisgICAgfSBlbHNlIGlmIChhdXRvKiByZW1vdGVNYWluRnJhbWUgPSBkeW5hbWlj
RG93bmNhc3Q8V2ViQ29yZTo6UmVtb3RlRnJhbWU+KHBhZ2UtPm1haW5GcmFtZSgpKSkgeworICAg
ICAgICBhdXRvJiB0cmVlID0gcmVtb3RlTWFpbkZyYW1lLT50cmVlKCk7CisgICAgICAgIGF1dG8q
IGZpcnN0RnJhbWUgPSBkeW5hbWljRG93bmNhc3Q8V2ViQ29yZTo6TG9jYWxGcmFtZT4odHJlZS5m
aXJzdENoaWxkKCkpOworICAgICAgICBhdXRvKiBkb2N1bWVudCA9IGZpcnN0RnJhbWUgPyBmaXJz
dEZyYW1lLT5kb2N1bWVudCgpIDogbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIGRvY3VtZW50ID8g
ZG9jdW1lbnQtPmF4T2JqZWN0Q2FjaGUoKSA6IG51bGxwdHI7CisgICAgfQogCi0gICAgcmV0dXJu
IGxvY2FsTWFpbkZyYW1lLT5kb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCk7CisgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKIC0gKGlkKWFjY2Vzc2liaWxpdHlQbHVnaW5PYmplY3QKQEAgLTE1Miw2
ICsxNjAsMTcgQEAgbmFtZXNwYWNlIGF4ID0gV2ViQ29yZTo6QWNjZXNzaWJpbGl0eTsKICAgICBt
X2hhc01haW5GcmFtZVBsdWdpbiA9IGhhc1BsdWdpbjsKIH0KIAorLSAodm9pZClzZXRSZW1vdGVG
cmFtZU9mZnNldDooV2ViQ29yZTo6SW50UG9pbnQpb2Zmc2V0Cit7CisgICAgQVNTRVJUKGlzTWFp
blJ1bkxvb3AoKSk7CisgICAgbV9yZW1vdGVGcmFtZU9mZnNldCA9IG9mZnNldDsKK30KKworLSAo
V2ViQ29yZTo6SW50UG9pbnQpYWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0Cit7CisgICAg
cmV0dXJuIG1fcmVtb3RlRnJhbWVPZmZzZXQ7Cit9CisKIC0gKHZvaWQpc2V0UmVtb3RlUGFyZW50
OihpZClwYXJlbnQKIHsKICAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggYjJk
YzczNWJiZWFlLi4zMTExNzQ5YTNkOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC0xMjMsMTYgKzEyMywxMiBAQCB2b2lk
IFdlYlBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6ZUFjY2Vzc2liaWxpdHkoKQogICAgIC8vIEN1cnJl
bnRseSwgaXQgaXMgYWxzbyBuZWVkZWQgdG8gYWxsb2NhdGUgYW5kIGluaXRpYWxpemUgYW4gTlNB
cHBsaWNhdGlvbiBvYmplY3QuCiAgICAgW05TQXBwbGljYXRpb24gX2FjY2Vzc2liaWxpdHlJbml0
aWFsaXplXTsKIAotICAgIGF1dG8gbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50ID0gYWRvcHROUyhb
W1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QgYWxsb2NdIGluaXRdKTsKLQogICAgIC8vIEdl
dCB0aGUgcGlkIGZvciB0aGUgc3RhcnRpbmcgcHJvY2Vzcy4KICAgICBwaWRfdCBwaWQgPSBXZWJD
b3JlOjpwcmVzZW50aW5nQXBwbGljYXRpb25QSUQoKTsKLSAgICBpZiAoW21vY2tBY2Nlc3NpYmls
aXR5RWxlbWVudCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGFjY2Vzc2liaWxpdHlTZXRQ
cmVzZW50ZXJQcm9jZXNzSWRlbnRpZmllcjopXSkKLSAgICAgICAgWyhpZCltb2NrQWNjZXNzaWJp
bGl0eUVsZW1lbnQuZ2V0KCkgYWNjZXNzaWJpbGl0eVNldFByZXNlbnRlclByb2Nlc3NJZGVudGlm
aWVyOnBpZF07Ci0gICAgW21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCBzZXRXZWJQYWdlOnRoaXNd
OwotICAgIG1fbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50ID0gV1RGTW92ZShtb2NrQWNjZXNzaWJp
bGl0eUVsZW1lbnQpOwotCi0gICAgYWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oYWNj
ZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0YSgpKTsKKyAgICBjcmVhdGVNb2NrQWNjZXNzaWJpbGl0
eUVsZW1lbnQocGlkKTsKKyAgICBSZWZQdHIgbG9jYWxNYWluRnJhbWUgPSBkeW5hbWljRG93bmNh
c3Q8TG9jYWxGcmFtZT4obV9wYWdlLT5tYWluRnJhbWUoKSk7CisgICAgaWYgKGxvY2FsTWFpbkZy
YW1lKQorICAgICAgICBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tlbihhY2Nlc3NpYmls
aXR5UmVtb3RlVG9rZW5EYXRhKCksIGxvY2FsTWFpbkZyYW1lLT5mcmFtZUlEKCkpOwogCiAgICAg
Ly8gQ2xvc2UgTWFjaCBjb25uZWN0aW9uIHRvIExhdW5jaCBTZXJ2aWNlcy4KICNpZiBIQVZFKExT
X1NFUlZFUl9DT05ORUNUSU9OX1NUQVRVU19SRUxFQVNFX05PVElGSUNBVElPTlNfTUFTSykKQEAg
LTE0NCw5ICsxNDAsMTkgQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemVBY2Nlc3Np
YmlsaXR5KCkKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZXZva2VMYXVuY2hTZXJ2aWNl
c1NhbmRib3hFeHRlbnNpb24oKTsKIH0KIAordm9pZCBXZWJQYWdlOjpjcmVhdGVNb2NrQWNjZXNz
aWJpbGl0eUVsZW1lbnQocGlkX3QgcGlkKQoreworICAgIGF1dG8gbW9ja0FjY2Vzc2liaWxpdHlF
bGVtZW50ID0gYWRvcHROUyhbW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QgYWxsb2NdIGlu
aXRdKTsKKworICAgIFttb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgYWNjZXNzaWJpbGl0eVNldFBy
ZXNlbnRlclByb2Nlc3NJZGVudGlmaWVyOnBpZF07CisgICAgW21vY2tBY2Nlc3NpYmlsaXR5RWxl
bWVudCBzZXRXZWJQYWdlOnRoaXNdOworICAgIG1fbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50ID0g
V1RGTW92ZShtb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQpOworfQorCiB2b2lkIFdlYlBhZ2U6OnBs
YXRmb3JtUmVpbml0aWFsaXplKCkKIHsKLSAgICBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVU
b2tlbihhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCkpOworICAgIFJlZiBmcmFtZSA9IG1f
cGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgYWNjZXNz
aWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oYWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0YSgp
LCBmcmFtZS0+ZnJhbWVJRCgpKTsKIH0KIAogUmV0YWluUHRyPE5TRGF0YT4gV2ViUGFnZTo6YWNj
ZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0YSgpIGNvbnN0CkBAIC00NjksMTIgKzQ3NSwyNyBAQCBi
b29sIFdlYlBhZ2U6OnBlcmZvcm1Ob25FZGl0aW5nQmVoYXZpb3JGb3JTZWxlY3Rvcihjb25zdCBT
dHJpbmcmIHNlbGVjdG9yLCBLZXlibwogICAgIHJldHVybiBkaWRQZXJmb3JtQWN0aW9uOwogfQog
Cit2b2lkIFdlYlBhZ2U6OnVwZGF0ZVJlbW90ZVBhZ2VBY2Nlc3NpYmlsaXR5T2Zmc2V0KFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpJbnRQb2ludCBvZmZzZXQpCit7
CisgICAgW2FjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSBzZXRSZW1vdGVGcmFtZU9mZnNldDpv
ZmZzZXRdOworfQorCit2b2lkIFdlYlBhZ2U6OnJlZ2lzdGVyUmVtb3RlRnJhbWVBY2Nlc3NpYmls
aXR5VG9rZW5zKHBpZF90IHBpZCwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGVsZW1lbnRUb2tl
bikKK3sKKyAgICBOU0RhdGEgKmVsZW1lbnRUb2tlbkRhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0
ZXM6ZWxlbWVudFRva2VuLmRhdGEoKSBsZW5ndGg6ZWxlbWVudFRva2VuLnNpemUoKV07CisgICAg
YXV0byByZW1vdGVFbGVtZW50ID0gZWxlbWVudFRva2VuRGF0YS5sZW5ndGggPyBhZG9wdE5TKFtb
TlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlFbGVtZW50IGFsbG9jXSBpbml0V2l0aFJlbW90ZVRva2Vu
OmVsZW1lbnRUb2tlbkRhdGFdKSA6IG5pbDsKKworICAgIGNyZWF0ZU1vY2tBY2Nlc3NpYmlsaXR5
RWxlbWVudChwaWQpOworICAgIFthY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkgc2V0UmVtb3Rl
UGFyZW50OnJlbW90ZUVsZW1lbnQuZ2V0KCldOworfQorCiB2b2lkIFdlYlBhZ2U6OnJlZ2lzdGVy
VUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VucyhzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZWxl
bWVudFRva2VuLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gd2luZG93VG9rZW4pCiB7CiAgICAg
TlNEYXRhICplbGVtZW50VG9rZW5EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmVsZW1lbnRU
b2tlbi5kYXRhKCkgbGVuZ3RoOmVsZW1lbnRUb2tlbi5zaXplKCldOwogICAgIE5TRGF0YSAqd2lu
ZG93VG9rZW5EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOndpbmRvd1Rva2VuLmRhdGEoKSBs
ZW5ndGg6d2luZG93VG9rZW4uc2l6ZSgpXTsKICAgICBhdXRvIHJlbW90ZUVsZW1lbnQgPSBlbGVt
ZW50VG9rZW5EYXRhLmxlbmd0aCA/IGFkb3B0TlMoW1tOU0FjY2Vzc2liaWxpdHlSZW1vdGVVSUVs
ZW1lbnQgYWxsb2NdIGluaXRXaXRoUmVtb3RlVG9rZW46ZWxlbWVudFRva2VuRGF0YV0pIDogbmls
OwogICAgIGF1dG8gcmVtb3RlV2luZG93ID0gd2luZG93VG9rZW5EYXRhLmxlbmd0aCA/IGFkb3B0
TlMoW1tOU0FjY2Vzc2liaWxpdHlSZW1vdGVVSUVsZW1lbnQgYWxsb2NdIGluaXRXaXRoUmVtb3Rl
VG9rZW46d2luZG93VG9rZW5EYXRhXSkgOiBuaWw7CisKICAgICBbcmVtb3RlRWxlbWVudCBzZXRX
aW5kb3dVSUVsZW1lbnQ6cmVtb3RlV2luZG93LmdldCgpXTsKICAgICBbcmVtb3RlRWxlbWVudCBz
ZXRUb3BMZXZlbFVJRWxlbWVudDpyZW1vdGVXaW5kb3cuZ2V0KCldOwogCkBAIC01MTYsNiArNTM3
LDExIEBAIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QqIFdlYlBhZ2U6OmFjY2Vzc2liaWxp
dHlSZW1vdGVPYmplY3QoKQogICAgIHJldHVybiBtX21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudC5n
ZXQoKTsKIH0KIAorV2ViQ29yZTo6SW50UG9pbnQgV2ViUGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90
ZUZyYW1lT2Zmc2V0KCkKK3sKKyAgICByZXR1cm4gW21fbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50
IGFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldF07Cit9CisKICNpZiBFTkFCTEUoQUNDRVNT
SUJJTElUWV9JU09MQVRFRF9UUkVFKQogdm9pZCBXZWJQYWdlOjpjYWNoZUFYUG9zaXRpb24oY29u
c3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgcG9pbnQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaAppbmRleCAwNjE0YmNmN2FmNWMuLmJhODM2ODA2NDUzMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC02NSw2ICs2NSw5IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9TY3JlZW5Qcm9wZXJ0aWVzLmg+CiAjaW5jbHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4K
ICNpbmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgorCitPQkpDX0NMQVNTIE5TTXV0YWJsZURp
Y3Rpb25hcnk7CisKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQpAQCAtODcsNiArOTAsNyBA
QAogI2luY2x1ZGUgIldlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5oIgogI2VuZGlmCiAKKwogbmFt
ZXNwYWNlIEFQSSB7CiBjbGFzcyBPYmplY3Q7CiB9CkBAIC01MTEsNiArNTE1LDkgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHBsYXRmb3JtU2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVsKTsKIAogICAgIHZv
aWQgc2V0RW5oYW5jZWRBY2Nlc3NpYmlsaXR5KGJvb2wpOworI2lmIFBMQVRGT1JNKENPQ09BKQor
ICAgIHZvaWQgYmluZEFjY2Vzc2liaWxpdHlGcmFtZVdpdGhEYXRhKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKKyNlbmRpZgogCiAgICAgdm9pZCBz
dGFydE1lbW9yeVNhbXBsZXIoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IGRvdWJsZSk7CiAgICAgdm9pZCBzdG9wTWVtb3J5U2FtcGxlcigpOwpAQCAtODI2
LDYgKzgzMyw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgSGFzaENvdW50
ZWRTZXQ8U3RyaW5nPiBtX3BlbmRpbmdQYXN0ZWJvYXJkV3JpdGVDb3VudHM7CiAgICAgc3RkOjpv
cHRpb25hbDxhdWRpdF90b2tlbl90PiBtX2F1ZGl0VG9rZW5Gb3JTZWxmOworICAgIFJldGFpblB0
cjxOU011dGFibGVEaWN0aW9uYXJ5PiBtX2FjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZVRva2VuQ2Fj
aGU7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggOTliNDAyYWYxMWNhLi5k
Nzc1ZmU3ZDM4ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCkBAIC02OSw2ICs2OSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVn
YWN5UmVjZWl2ZXIgTm90UmVmQ291bnRlZCB7CiAgICAgU2V0VGV4dENoZWNrZXJTdGF0ZShzdHJ1
Y3QgV2ViS2l0OjpUZXh0Q2hlY2tlclN0YXRlIHRleHRDaGVja2VyU3RhdGUpCiAKICAgICBTZXRF
bmhhbmNlZEFjY2Vzc2liaWxpdHkoYm9vbCBmbGFnKQorICAgIEJpbmRBY2Nlc3NpYmlsaXR5RnJh
bWVXaXRoRGF0YShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RkOjpzcGFuPGNv
bnN0IHVpbnQ4X3Q+IGRhdGEpOwogCiAgICAgR2FyYmFnZUNvbGxlY3RKYXZhU2NyaXB0T2JqZWN0
cygpCiAgICAgU2V0SmF2YVNjcmlwdEdhcmJhZ2VDb2xsZWN0b3JUaW1lckVuYWJsZWQoYm9vbCBl
bmFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJv
Y2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3ND
b2NvYS5tbQppbmRleCBjNTM4NTdmYmUxZDQuLjExNjA2ZTk2Mzk1NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC0yMTMsNiAr
MjEzLDE2IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1TZXRDYWNoZU1vZGVsKENhY2hlTW9k
ZWwpCiB7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzczo6YmluZEFjY2Vzc2liaWxpdHlGcmFtZVdpdGhE
YXRhKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdGQ6OnNwYW48Y29uc3QgdWlu
dDhfdD4gZGF0YSkKK3sKKyAgICBpZiAoIW1fYWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lVG9rZW5D
YWNoZSkKKyAgICAgICAgbV9hY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVUb2tlbkNhY2hlID0gYWRv
cHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKworICAgIGF1dG8gZnJh
bWVJbnQgPSBmcmFtZUlELm9iamVjdCgpLnRvVUludDY0KCk7CisgICAgTlNEYXRhICpuc0RhdGEg
PSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5kYXRhKCkgbGVuZ3RoOmRhdGEuc2l6ZSgpXTsK
KyAgICBbbV9hY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVUb2tlbkNhY2hlIHNldE9iamVjdDpuc0Rh
dGEgZm9yS2V5OkAoZnJhbWVJbnQpXTsKK30KKwogaWQgV2ViUHJvY2Vzczo6YWNjZXNzaWJpbGl0
eUZvY3VzZWRVSUVsZW1lbnQoKQogewogICAgIGF1dG8gcmV0cmlldmVGb2N1c2VkVUlFbGVtZW50
RnJvbU1haW5UaHJlYWQgPSBbXSAoKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAy
MWUyMWYwOGJkNjQuLmI0Y2YyODJjMThjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBA
IC0yMjUsNiArMjI1LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgUmVtb3RlQVhPYmplY3RS
ZWYgYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpIGZpbmFsIHsgcmV0dXJuIDA7IH0KKyAgICBX
ZWJDb3JlOjpJbnRQb2ludCBhY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKSBmaW5hbCB7
IHJldHVybiB7IH07IH0KICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQog
ICAgIHZvaWQgc2V0QVhJc29sYXRlZFRyZWVSb290KFdlYkNvcmU6OkFYQ29yZU9iamVjdCopIGZp
bmFsIHsgfQogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>469881</attachid>
            <date>2024-02-15 09:20:59 -0800</date>
            <delta_ts>2024-02-15 11:08:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-268804-20240215092058.patch</filename>
            <type>text/plain</type>
            <size>115310</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">RnJvbSAyOWViYzJhMDYwNWEwZTNkYTJkYzZkNTQwNGM2YjI5Y2E4NjNlOGI5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpcyBGbGVpemFjaCA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4K
RGF0ZTogVGh1LCAxNSBGZWIgMjAyNCAwMTo0Mzo0MyAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIEFY
OiBTdXBwb3J0IHNpdGUgaXNvbGF0aW9uIGZvciBWb2ljZU92ZXIKIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjg4MDQgcmRhcjovLzk5NjY1NTYxCgpSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KCkluaXRpYWwgc3VwcG9ydCBmb3Igc2l0ZSBpc29sYXRpb24gZm9y
IFZvaWNlT3Zlci4KCldoZW4gYSBzY3JvbGwgdmlldyBob3N0cyBhIFJlbW90ZUZyYW1lIGl0IGJp
bmRzIGl0c2VsZiB0byB0aGUgb3RoZXIgc2lkZSB0aHJvdWdoIGEgV2ViUGFnZSBtZXNzYWdlLgpU
aGlzIHRyYW5zZmVycyBkYXRhIHRva2VucyBzbyBBY2Nlc3NpYmlsaXR5IHJlbW90ZSBlbGVtZW50
cyBhcmUgY3JlYXRlZCBhbmQgaG9va2VkIHVwLgoKVGhlIGJvdW5kaW5nIGJveGVzIGluc2lkZSB0
aGUgc3ViIGZyYW1lcyBuZWVkIHRvIGhhdmUgdGhlIGluaXRpYWwgb2Zmc2V0IGFwcGxpZWQgYW5k
IHRoZW4gbmVlZCB0byBiZSBjb252ZXJ0ZWQKZWFjaCBzdGVwIHVwIHRoZSBjaGFpbiB0byBhY2Nv
dW50IGZvciBzY3JvbGwgb2Zmc2V0cyB0aGF0IG9ubHkgZWFjaCBwcm9jZXNzIGtub3dzIGFib3V0
LgoKKiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dDoKKiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWENvcmVPYmplY3QuaDoKKFdlYkNvcmU6OmFjY2Vzc2liaWxpdHlSb2xlVG9TdHJpbmcpOgoo
V2ViQ29yZTo6QVhDb3JlT2JqZWN0Ojppc1JlbW90ZUZyYW1lIGNvbnN0KToKKiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcDoKKFdlYkNvcmU6OnN0cmVhbUFYQ29yZU9i
amVjdCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoK
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmNyZWF0ZSk6CihXZWJDb3JlOjpBWE9iamVjdENhY2hl
OjpvblJlbW90ZUZyYW1lSW5pdGlhbGl6ZWQpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5jcHA6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZWxhdGl2
ZUZyYW1lIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnJlbW90ZUZyYW1l
T2Zmc2V0IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW1vdGVGcmFtZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJh
bWVDbGllbnQuaC4KKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6Y3JlYXRlKToK
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6QWNjZXNzaWJpbGl0eVJlbW90ZUZy
YW1lKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6ZWxlbWVudFJlY3QgY29u
c3QpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbW90ZUZy
YW1lLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVDbGllbnQu
aC4KKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkQXR0YWNobWVu
dENoaWxkcmVuKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENoaWxk
cmVuKToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpkZXRhY2hSZW1vdGVQ
YXJ0cyk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6Y2xlYXJDaGlsZHJlbik6
CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkUmVtb3RlRnJhbWVDaGlsZCk6
CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkQ2hpbGRyZW4pOgooV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OndlYkFyZWFPYmplY3QgY29uc3QpOgooV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmRvY3VtZW50IGNvbnN0KToKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpwYXJlbnRPYmplY3QgY29uc3QpOgoqIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaDoKKiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcDoKKFdl
YkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKFdlYkNvcmU6
OkFYSXNvbGF0ZWRPYmplY3Q6OnNldFByb3BlcnR5KToKKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmpl
Y3Q6OnJlbW90ZUZyYW1lT2Zmc2V0IGNvbnN0KToKKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OnJlbGF0aXZlRnJhbWUgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHA6CihXZWJDb3JlOjpBWElzb2xhdGVk
VHJlZTo6dXBkYXRlTm9kZVByb3BlcnRpZXMpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMubW06CihXZWJDb3Jl
OjpBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplUGxhdGZvcm1Qcm9wZXJ0aWVzKToKKFdlYkNv
cmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50IGNvbnN0KToK
KiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFj
Lm1tOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lOjpnZW5lcmF0ZVJlbW90ZVRv
a2VuIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6aW5pdGlhbGl6
ZVBsYXRmb3JtRWxlbWVudFdpdGhSZW1vdGVUb2tlbik6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
OjpjcmVhdGVQbGF0Zm9ybVJvbGVNYXApOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbToKKG1ha2VOU0FycmF5KToK
KiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgcm9sZV0pOgoo
LVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBpc0VtcHR5R3JvdXBdKToKKC1bV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgcm9sZURlc2NyaXB0aW9uXSk6CigtW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIF90cmFuc2Zvcm1TcGVjaWFsQ2hpbGRyZW5DYXNlczpdKToKKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
Ol0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5SGl0VGVz
dDpdKToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgQUxMT1dfREVQUkVDQVRFRF9J
TVBMRU1FTlRBVElPTlNfRU5EXSk6CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpmb3JQYXJhbWV0ZXI6XSk6CigtW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlJbmRleE9mQ2hpbGQ6XSk6CigtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZUNvdW50
Ol0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXJyYXlB
dHRyaWJ1dGVWYWx1ZXM6aW5kZXg6bWF4Q291bnQ6XSk6CiogU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHA6CihXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjphY2Nl
c3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQpOgoqIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUZyYW1lTG9hZGVyQ2xpZW50Lmg6CiogU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvY2FsRnJhbWVM
b2FkZXJDbGllbnQuaDoKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwOgooV2ViQ29yZTo6
UGFnZTo6c2hvdWxkVXBkYXRlQWNjZXNzaWJpbGl0eVJlZ2lvbnMgY29uc3QpOgoqIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuY3BwOgooV2ViQ29yZTo6UmVtb3RlRnJhbWU6OnVwZGF0
ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldCk6CihXZWJDb3JlOjpSZW1vdGVGcmFtZTo6
dW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyk6CihXZWJDb3JlOjpSZW1vdGVGcmFtZTo6
YmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMpOgoqIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVt
b3RlRnJhbWUuaDoKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lQ2xpZW50Lmg6Ciog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcDoKKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdl
UHJveHk6OnJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbik6CiogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaDoKKiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcDoKKFdlYktpdDo6V2ViRnJhbWVQcm94eTo6YmluZEFj
Y2Vzc2liaWxpdHlGcmFtZVdpdGhEYXRhKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJG
cmFtZVByb3h5Lmg6CiogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojpzd2FwVG9Qcm92aXNpb25hbFBhZ2UpOgooV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKToKKFdlYktpdDo6V2Vi
UGFnZVByb3h5Ojp1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQpOgoqIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MubW06CihXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5
V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQpOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW06CihXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9j
ZXNzQWNjZXNzaWJpbGl0eVRva2VuKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGxNYWMuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGxNYWMubW06CihXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5V2ViUHJv
Y2Vzc1Rva2VuUmVjZWl2ZWQpOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW06CihXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNj
ZXNzaWJpbGl0eVRva2VuKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0lt
cGwuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwubW06CihXZWJL
aXQ6OldlYlZpZXdJbXBsOjpzZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuKToKKiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNs
aWVudC5jcHA6CihXZWJLaXQ6OldlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQ6OmFjY2Vzc2liaWxp
dHlSZW1vdGVGcmFtZU9mZnNldCk6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuaDoKKiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuY3BwOgooV2ViS2l0OjpX
ZWJSZW1vdGVGcmFtZUNsaWVudDo6dW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyk6CihX
ZWJLaXQ6OldlYlJlbW90ZUZyYW1lQ2xpZW50Ojp1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxp
dHlPZmZzZXQpOgooV2ViS2l0OjpXZWJSZW1vdGVGcmFtZUNsaWVudDo6YmluZFJlbW90ZUFjY2Vz
c2liaWxpdHlGcmFtZXMpOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJSZW1vdGVGcmFtZUNsaWVudC5oOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKFdlYktpdDo6V2ViUGFnZTo6YWNjZXNzaWJpbGl0
eVRyYW5zZmVyUmVtb3RlVG9rZW4pOgooV2ViS2l0OjpXZWJQYWdlOjphY2Nlc3NpYmlsaXR5TWFu
YWdlUmVtb3RlRWxlbWVudFN0YXR1cyk6CihXZWJLaXQ6OldlYlBhZ2U6OmJpbmRSZW1vdGVBY2Nl
c3NpYmlsaXR5RnJhbWVzKToKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmg6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbjoKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bToKKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplQWNjZXNzaWJpbGl0eSk6CihX
ZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtUmVpbml0aWFsaXplKToKKFdlYktpdDo6V2ViUGFnZTo6
YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KToKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaDoKKiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9i
amVjdEJhc2UubW06CigtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlIGF4T2JqZWN0
Q2FjaGVdKToKKC1bV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2Ugc2V0UmVtb3RlRnJh
bWVPZmZzZXQ6XSk6CigtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlIGFjY2Vzc2li
aWxpdHlSZW1vdGVGcmFtZU9mZnNldF0pOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tOgooV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybUluaXRpYWxp
emVBY2Nlc3NpYmlsaXR5KToKKFdlYktpdDo6V2ViUGFnZTo6Y3JlYXRlTW9ja0FjY2Vzc2liaWxp
dHlFbGVtZW50KToKKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1SZWluaXRpYWxpemUpOgooV2Vi
S2l0OjpXZWJQYWdlOjp1cGRhdGVSZW1vdGVQYWdlQWNjZXNzaWJpbGl0eU9mZnNldCk6CihXZWJL
aXQ6OldlYlBhZ2U6OnJlZ2lzdGVyUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5VG9rZW5zKToKKFdl
YktpdDo6V2ViUGFnZTo6cmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKToKKFdl
YktpdDo6V2ViUGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KToKKiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJQcm9jZXNzQ29jb2EubW06CihXZWJLaXQ6OldlYlByb2Nlc3M6OmJpbmRBY2Nlc3NpYmls
aXR5RnJhbWVXaXRoRGF0YSk6CiogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKLS0tCiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dCAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogLi4uL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIHwgICA0ICsKIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhDb3JlT2JqZWN0LmggICB8ICAxMiArKwogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WExvZ2dlci5jcHAgICAgIHwgICAzICsKIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5jcHAgICB8ICAxNSArLQogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmggIHwgICAyICsKIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhSZW1vdGVG
cmFtZS5jcHAgICB8ICA1MSArKysrKysrCiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
UmVtb3RlRnJhbWUuaCAgfCAgNjMgKysrKysrKysKIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuY3BwICAgICB8ICAxOCArKy0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuaCAgICAgICB8ICAgNSArCiAuLi4vQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHAgICAgICAgICAgICAgfCAgIDQgKy0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlTY3JvbGxWaWV3LmNwcCB8ICA1NyArKysrKystCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5U2Nyb2xsVmlldy5oICAgfCAgIDYgKy0KIC4uLi9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZE9iamVjdC5jcHAgICAgICAgICB8ICAzNSArKysrLQogLi4uL2lzb2xhdGVkdHJlZS9BWElzb2xh
dGVkT2JqZWN0LmggICAgICAgICAgIHwgICA4ICstCiAuLi4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRUcmVlLmNwcCAgICAgICAgICAgfCAgNjEgKysrLS0tLS0KIC4uLi9pc29sYXRlZHRyZWUvQVhJ
c29sYXRlZFRyZWUuaCAgICAgICAgICAgICB8ICAyOSArKysrCiAuLi4vaXNvbGF0ZWR0cmVlL21h
Yy9BWElzb2xhdGVkT2JqZWN0TWFjLm1tICAgfCAgIDcgKwogLi4uL21hYy9BY2Nlc3NpYmlsaXR5
T2JqZWN0TWFjLm1tICAgICAgICAgICAgIHwgIDI3ICsrKysKIC4uLi9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tICB8ICAgOSArLQogLi4uL21hYy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlck1hYy5tbSAgIHwgMTQzICsrKysrKysrKysrKy0tLS0tLQogU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgICAgICAgIHwgICA1ICsKIC4uLi9XZWJD
b3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmggICB8ICAgMSArCiAuLi4vV2ViQ29y
ZS9sb2FkZXIvTG9jYWxGcmFtZUxvYWRlckNsaWVudC5oICAgfCAgIDEgKwogU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcCAgICAgICAgICAgICAgICAgIHwgIDExICstCiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1JlbW90ZUZyYW1lLmNwcCAgICAgICAgICAgfCAgMTUgKysKIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUmVtb3RlRnJhbWUuaCAgICAgICAgICAgICB8ICAgNCArCiBTb3VyY2UvV2ViQ29yZS9w
YWdlL1JlbW90ZUZyYW1lQ2xpZW50LmggICAgICAgfCAgIDQgKwogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGFnZUNsaWVudC5oICAgICAgICAgIHwgICAzICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vz
cy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgfCAgIDIgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNz
L1Byb3Zpc2lvbmFsUGFnZVByb3h5LmggICB8ICAgMiArLQogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViRnJhbWVQcm94eS5jcHAgICAgIHwgICA5ICsrCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJGcmFtZVByb3h5LmggICAgICAgfCAgIDIgKwogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcCAgICAgIHwgIDI0ICsrLQogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmggICAgICAgIHwgICA0ICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4gfCAgIDQgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5oICB8ICAgMiArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Bh
Z2VDbGllbnRJbXBsSU9TLm1tIHwgICAyICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2Vi
UGFnZVByb3h5SU9TLm1tICAgfCAgIDQgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdl
Q2xpZW50SW1wbE1hYy5oICB8ICAgMiArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VD
bGllbnRJbXBsTWFjLm1tIHwgICA0ICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFn
ZVByb3h5TWFjLm1tICAgfCAgIDQgKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJW
aWV3SW1wbC5oICAgICB8ICAgMyArLQogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlZp
ZXdJbXBsLm1tICAgIHwgICA4ICstCiAuLi4vV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudC5jcHAg
ICAgICAgICAgICAgfCAgIDYgKwogLi4uL1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuaCAgICAg
ICAgICAgICAgIHwgICAxICsKIC4uLi9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVu
dC5jcHAgICB8ICAzMiArKysrCiAuLi4vV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGll
bnQuaCAgICAgfCAgIDQgKwogLi4uL1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29j
b2EubW0gIHwgIDQxICsrKystCiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmggICAgfCAgMTMgKy0KIC4uLi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbiAgICB8ICAgMyArCiAuLi4vV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
ICAgICAgfCAgMTIgKy0KIC4uLi9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2Uu
aCAgICB8ICAgNCArCiAuLi4vbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1t
ICAgfCAgMjcgKysrLQogLi4uL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSAg
ICAgIHwgIDQ1ICsrKystLQogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCAg
ICAgICAgIHwgICA4ICsKIC4uLi9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluICB8ICAgMSArCiAuLi4vV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0gICAg
ICAgfCAgMTAgKysKIC4uLi9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aCB8ICAgMSArCiA1OSBmaWxlcyBjaGFuZ2VkLCA3NDEgaW5zZXJ0aW9ucygrKSwgMTQ3IGRlbGV0
aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhSZW1vdGVGcmFtZS5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYUmVtb3RlRnJhbWUuaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggNmVlNDFiZTJkZTBl
Li5lMzY1NTk4NTBlMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC01MjUsNiArNTI1LDcgQEAgYWNjZXNz
aWJpbGl0eS9BWEdlb21ldHJ5TWFuYWdlci5jcHAKIGFjY2Vzc2liaWxpdHkvQVhJbWFnZS5jcHAK
IGFjY2Vzc2liaWxpdHkvQVhMb2dnZXIuY3BwCiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
Y3BwCithY2Nlc3NpYmlsaXR5L0FYUmVtb3RlRnJhbWUuY3BwCiBhY2Nlc3NpYmlsaXR5L0FYVGV4
dE1hcmtlci5jcHAKIGFjY2Vzc2liaWxpdHkvQVhUZXh0UnVuLmNwcAogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2ZiZTZiZmI2ZWIzLi44MWEyMjM4NjA4MDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTg5NTgsNiArODk1OCw4IEBACiAJCTI5NDg5RkM1MTJDMDBGMDMwMEQ4M0YwRiAvKiBB
Y2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyOTQ5ODY4MTE5NTM0MTk0MDA3MkQyQkQgLyogVGV4dFVuZG9JbnNlcnRpb25NYXJrdXBNYWMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUZXh0VW5kb0luc2Vy
dGlvbk1hcmt1cE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk0QkRBRTYy
MUZGNTgyQTAwNTEwNzdCIC8qIEFjY2Vzc2liaWxpdHlPYmplY3RDb2NvYS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlPYmplY3RDb2NvYS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjk1NUNGMTEyQjIzMEFFNjAwMDFCRjgy
IC8qIEFYUmVtb3RlRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVhSZW1vdGVGcmFtZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOTU1Q0YxMjJCMjMwQUU2MDAwMUJGODIgLyogQVhS
ZW1vdGVGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBWFJlbW90ZUZyYW1lLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk3QkUzRDkxNkMwNDNEODAwMzMxNkJEIC8qIFBs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTI5ODFBQkM0MTMxODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5TWF0
aE1MRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxl
bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5ODFDQTlEMTMxODIyRUMw
MEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTIzNDM4LDYgKzIzNDQwLDggQEAKIAkJCQlDMDQ5M0VCNzI0NDY5OUU0MDA5QUFDODAgLyogQVhM
b2dnZXIuaCAqLywKIAkJCQkyOTgxQ0FBRjEzMTgyMkVDMDBEMTJGMkEgLyogQVhPYmplY3RDYWNo
ZS5jcHAgKi8sCiAJCQkJMjlBODEyMUEwRkJCOUMxRDAwNTEwMjkzIC8qIEFYT2JqZWN0Q2FjaGUu
aCAqLywKKwkJCQkyOTU1Q0YxMjJCMjMwQUU2MDAwMUJGODIgLyogQVhSZW1vdGVGcmFtZS5jcHAg
Ki8sCisJCQkJMjk1NUNGMTEyQjIzMEFFNjAwMDFCRjgyIC8qIEFYUmVtb3RlRnJhbWUuaCAqLywK
IAkJCQlDMEUyMDhBMTI5Mzc5QzZGMDBDMEQyRDMgLyogQVhUZXh0TWFya2VyLmNwcCAqLywKIAkJ
CQlDMEUyMDhBMDI5Mzc5QzZFMDBDMEQyRDMgLyogQVhUZXh0TWFya2VyLmggKi8sCiAJCQkJNDhD
NEU4M0MyQjM0RDgzODAwODM0NjBBIC8qIEFYVGV4dFJ1bi5jcHAgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYQ29yZU9iamVjdC5oIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWENvcmVPYmplY3QuaAppbmRleCA0NDEwODRlY2I4MDUuLjNmYmM3
ZjhkYjI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWENvcmVP
YmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYQ29yZU9iamVjdC5o
CkBAIC0yMDUsNiArMjA1LDcgQEAgZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5Um9sZSB7CiAgICAg
UHJvZ3Jlc3NJbmRpY2F0b3IsCiAgICAgUmFkaW9CdXR0b24sCiAgICAgUmFkaW9Hcm91cCwKKyAg
ICBSZW1vdGVGcmFtZSwKICAgICBSb3dIZWFkZXIsCiAgICAgUm93LAogICAgIFJvd0dyb3VwLApA
QCAtNDQyLDYgKzQ0Myw4IEBAIEFMV0FZU19JTkxJTkUgU3RyaW5nIGFjY2Vzc2liaWxpdHlSb2xl
VG9TdHJpbmcoQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSkKICAgICAgICAgcmV0dXJuICJSYWRpb0J1
dHRvbiJfczsKICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0dyb3VwOgogICAgICAg
ICByZXR1cm4gIlJhZGlvR3JvdXAiX3M7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmVt
b3RlRnJhbWU6CisgICAgICAgIHJldHVybiAiUmVtb3RlRnJhbWUiX3M7CiAgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6Um93SGVhZGVyOgogICAgICAgICByZXR1cm4gIlJvd0hlYWRlciJfczsK
ICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSb3c6CkBAIC04MTUsNiArODE4LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvd0luc3RhbmNl
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlBUklBR3JpZENl
bGxJbnN0YW5jZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNBWElzb2xhdGVkT2Jq
ZWN0SW5zdGFuY2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQVhSZW1vdGVGcmFt
ZSgpIGNvbnN0ID0gMDsKIAogICAgIGJvb2wgaXNIZWFkaW5nKCkgY29uc3QgeyByZXR1cm4gcm9s
ZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkhlYWRpbmc7IH0KICAgICB2aXJ0dWFsIGJv
b2wgaXNMaW5rKCkgY29uc3QgPSAwOwpAQCAtOTE5LDYgKzkyMywxMiBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc1RyZWVHcmlkKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OlRyZWVHcmlkOyB9CiAgICAgYm9vbCBpc1RyZWVJdGVtKCkgY29uc3QgeyByZXR1
cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVJdGVtOyB9CiAgICAgYm9v
bCBpc1Njcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxp
dHlSb2xlOjpTY3JvbGxCYXI7IH0KKyAgICBib29sIGlzUmVtb3RlRnJhbWUoKSBjb25zdCB7IHJl
dHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmVtb3RlRnJhbWU7IH0KKyNp
ZiBQTEFURk9STShDT0NPQSkKKyAgICB2aXJ0dWFsIFJldGFpblB0cjxpZD4gcmVtb3RlRnJhbWVQ
bGF0Zm9ybUVsZW1lbnQoKSBjb25zdCA9IDA7CisjZW5kaWYKKyAgICB2aXJ0dWFsIGJvb2wgaGFz
UmVtb3RlRnJhbWVDaGlsZCgpIGNvbnN0ID0gMDsKKwogICAgIGJvb2wgaXNCdXR0b24oKSBjb25z
dDsKICAgICB2aXJ0dWFsIGJvb2wgaXNNZXRlcigpIGNvbnN0ID0gMDsKIApAQCAtMTE1OSw2ICsx
MTY5LDggQEAgcHVibGljOgogICAgIC8vIFZpZXdwb3J0LXJlbGF0aXZlIG1lYW5zIHRoYXQgd2hl
biB0aGUgcGFnZSBzY3JvbGxzLCB0aGUgcG9ydGlvbiBvZiB0aGUgcGFnZSBpbiB0aGUgdmlld3Bv
cnQgY2hhbmdlcywgYW5kIHRodXMKICAgICAvLyBhbnkgdmlld3BvcnQtcmVsYXRpdmUgcmVjdHMg
ZG8gdG9vIChzaW5jZSB0aGV5IGFyZSBlaXRoZXIgY2xvc2VyIHRvIG9yIGZhcnRoZXIgZnJvbSB0
aGUgdmlld3BvcnQgb3JpZ2luIGFmdGVyIHRoZSBzY3JvbGwpLgogICAgIHZpcnR1YWwgRmxvYXRQ
b2ludCBzY3JlZW5SZWxhdGl2ZVBvc2l0aW9uKCkgY29uc3QgPSAwOworICAgIC8vIFRoaXMgaXMg
dGhlIGFtb3VudCB0aGF0IHRoZSBSZW1vdGVGcmFtZSBpcyBvZmZzZXQgZnJvbSBpdHMgY29udGFp
bmluZyBwYXJlbnQuCisgICAgdmlydHVhbCBJbnRQb2ludCByZW1vdGVGcmFtZU9mZnNldCgpIGNv
bnN0ID0gMDsKIAogICAgIHZpcnR1YWwgRmxvYXRSZWN0IGNvbnZlcnRGcmFtZVRvU3BhY2UoY29u
c3QgRmxvYXRSZWN0JiwgQWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZSkgY29uc3QgPSAwOwog
I2lmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWExvZ2dlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2Vy
LmNwcAppbmRleCBiNmUzMDZjZGRlY2YuLjdiMzVjOGY5ZDEwMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWExvZ2dlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWExvZ2dlci5jcHAKQEAgLTg4Myw2ICs4ODMsOSBAQCB2b2lkIHN0cmVh
bUFYQ29yZU9iamVjdChUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IEFYQ29yZU9iamVjdCYgb2Jq
ZWN0LCBjb25zdCBPcAogICAgIGlmIChvcHRpb25zICYgQVhTdHJlYW1PcHRpb25zOjpSb2xlKQog
ICAgICAgICBzdHJlYW0uZHVtcFByb3BlcnR5KCJyb2xlIiwgb2JqZWN0LnJvbGVWYWx1ZSgpKTsK
IAorICAgIGlmIChvYmplY3QucmVuZGVyZXIoKSkKKyAgICAgICAgc3RyZWFtLmR1bXBQcm9wZXJ0
eSgicmVuZGVyTmFtZSIsIG9iamVjdC5yZW5kZXJlcigpLT5yZW5kZXJOYW1lKCkpOworCiAgICAg
aWYgKG9wdGlvbnMgJiBBWFN0cmVhbU9wdGlvbnM6OlBhcmVudElEKSB7CiAgICAgICAgIGF1dG8q
IHBhcmVudCA9IG9iamVjdC5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICAgICAgc3RyZWFt
LmR1bXBQcm9wZXJ0eSgicGFyZW50SUQiLCBwYXJlbnQgPyBwYXJlbnQtPm9iamVjdElEKCkgOiBB
WElEKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVj
dENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHAKaW5kZXggMjgwZmFkNGYyNzAxLi4xYWM5NWYyZWE2YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgIkFYSXNvbGF0ZWRPYmplY3QuaCIKICNpbmNsdWRlICJBWElzb2xhdGVkVHJlZS5oIgog
I2luY2x1ZGUgIkFYTG9nZ2VyLmgiCisjaW5jbHVkZSAiQVhSZW1vdGVGcmFtZS5oIgogI2luY2x1
ZGUgIkFYVGV4dE1hcmtlci5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlBUklBR3JpZC5oIgog
I2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaCIKQEAgLTEwNTQsNyArMTA1NSwx
MCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpjcmVhdGUoQWNjZXNzaWJp
bGl0eVJvbGUgcm9sZSkKICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCiAgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6VGFibGVIZWFkZXJDb250YWluZXI6CiAgICAgICAgIG9iaiA9IEFjY2Vz
c2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lcjo6Y3JlYXRlKCk7Ci0gICAgICAgIGJyZWFrOyAg
IAorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSZW1vdGVGcmFt
ZToKKyAgICAgICAgb2JqID0gQVhSZW1vdGVGcmFtZTo6Y3JlYXRlKCk7CisgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNsaWRlclRodW1iOgogICAgICAgICBvYmog
PSBBY2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWI6OmNyZWF0ZSgpOwogICAgICAgICBicmVhazsKQEAg
LTEzNTAsNiArMTM1NCwxNSBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZVJlY29tcHV0ZUNl
bGxTbG90cyhBY2Nlc3NpYmlsaXR5VGFibGUmIGF4VGFibGUpCiAjZW5kaWYKIH0KIAordm9pZCBB
WE9iamVjdENhY2hlOjpvblJlbW90ZUZyYW1lSW5pdGlhbGl6ZWQoQVhSZW1vdGVGcmFtZSYgcmVt
b3RlRnJhbWUpCit7CisjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKKyAg
ICB1cGRhdGVJc29sYXRlZFRyZWUocmVtb3RlRnJhbWUsIEFYUHJvcGVydHlOYW1lOjpSZW1vdGVG
cmFtZVBsYXRmb3JtRWxlbWVudCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShyZW1vdGVGcmFt
ZSk7CisjZW5kaWYKK30KKwogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUp
CiB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZVJvd3NwYW5DaGFuZ2VkKEFjY2Vzc2liaWxpdHlU
YWJsZUNlbGwmIGF4Q2VsbCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQVhPYmplY3RDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmgKaW5kZXggZDEwNDljYzliYzIxLi4zOGM5OGE0NmVhOWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCkBAIC00Nyw2ICs0Nyw3IEBA
IGNsYXNzIFRleHRTdHJlYW07CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQVhSZW1v
dGVGcmFtZTsKIGNsYXNzIEFjY2Vzc2liaWxpdHlUYWJsZTsKIGNsYXNzIEFjY2Vzc2liaWxpdHlU
YWJsZUNlbGw7CiBjbGFzcyBEb2N1bWVudDsKQEAgLTI0Niw2ICsyNDcsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkZWZlck5vZGVBZGRlZE9yUmVtb3ZlZChOb2RlKik7CiAgICAgdm9pZCBoYW5kbGVT
Y3JvbGxlZFRvQW5jaG9yKGNvbnN0IE5vZGUqIGFuY2hvck5vZGUpOwogICAgIHZvaWQgb25TY3Jv
bGxiYXJVcGRhdGUoU2Nyb2xsVmlldyopOworICAgIHZvaWQgb25SZW1vdGVGcmFtZUluaXRpYWxp
emVkKEFYUmVtb3RlRnJhbWUmKTsKIAogICAgIGJvb2wgaXNSZXRyaWV2aW5nQ3VycmVudE1vZGFs
Tm9kZSgpIHsgcmV0dXJuIG1faXNSZXRyaWV2aW5nQ3VycmVudE1vZGFsTm9kZTsgfQogICAgIE5v
ZGUqIG1vZGFsTm9kZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWFJlbW90ZUZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhSZW1v
dGVGcmFtZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42MDQz
NGUzNDQ0NzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYUmVtb3RlRnJhbWUuY3BwCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQVhSZW1vdGVGcmFtZS5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK1JlZjxBWFJlbW90ZUZyYW1lPiBBWFJlbW90ZUZyYW1lOjpjcmVhdGUoKQorewor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFYUmVtb3RlRnJhbWUpOworfQorCitBWFJlbW90ZUZy
YW1lOjpBWFJlbW90ZUZyYW1lKCkKKzoKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBtX3JlbW90
ZUZyYW1lUGxhdGZvcm1FbGVtZW50KG51bGxwdHIpCisgICAgLCBtX3Byb2Nlc3NJZGVudGlmaWVy
KDApCisjZW5kaWYKK3sKK30KKworTGF5b3V0UmVjdCBBWFJlbW90ZUZyYW1lOjplbGVtZW50UmVj
dCgpIGNvbnN0Cit7CisgICAgYXV0byogcGFyZW50ID0gcGFyZW50T2JqZWN0KCk7CisgICAgcmV0
dXJuIHBhcmVudCA/IHBhcmVudC0+ZWxlbWVudFJlY3QoKSA6IExheW91dFJlY3QoKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWFJlbW90ZUZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
UmVtb3RlRnJhbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjYz
OTAxOGZiMTdhZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhSZW1vdGVGcmFtZS5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgUmVtb3RlRnJhbWU7CisKK2NsYXNzIEFYUmVtb3RlRnJhbWUg
ZmluYWwgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eU1vY2tPYmplY3QgeworcHVibGljOgorICAgIHN0
YXRpYyBSZWY8QVhSZW1vdGVGcmFtZT4gY3JlYXRlKCk7CisKKyAgICB2b2lkIGluaXRpYWxpemVQ
bGF0Zm9ybUVsZW1lbnRXaXRoUmVtb3RlVG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBp
bnQpOworCisgICAgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGdlbmVyYXRlUmVtb3RlVG9rZW4o
KSBjb25zdDsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBSZXRhaW5QdHI8aWQ+IHJlbW90ZUZy
YW1lUGxhdGZvcm1FbGVtZW50KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9yZW1vdGVGcmFtZVBs
YXRmb3JtRWxlbWVudDsgfQorICAgIHBpZF90IHByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9wcm9jZXNzSWRlbnRpZmllcjsgfQorI2VuZGlmCisKK3ByaXZhdGU6CisgICAgZXhw
bGljaXQgQVhSZW1vdGVGcmFtZSgpOworICAgIHZpcnR1YWwgfkFYUmVtb3RlRnJhbWUoKSA9IGRl
ZmF1bHQ7CisKKyAgICBBY2Nlc3NpYmlsaXR5Um9sZSBkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9s
ZSgpIGZpbmFsIHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpSZW1vdGVGcmFtZTsgfQorICAg
IGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBmYWxzZTsgfQorICAgIGJvb2wgaXNBWFJlbW90ZUZyYW1lKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gdHJ1ZTsgfQorICAgIExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBjb25zdCBmaW5hbDsKKwor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFJldGFpblB0cjxpZD4gbV9yZW1vdGVGcmFtZVBsYXRm
b3JtRWxlbWVudDsKKyAgICBwaWRfdCBtX3Byb2Nlc3NJZGVudGlmaWVyOworI2VuZGlmCit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQUNDRVNT
SUJJTElUWShBWFJlbW90ZUZyYW1lLCBpc0FYUmVtb3RlRnJhbWUoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IDNl
MzJkYjA5M2FmYi4uZTkyMWYwNDVkMzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTU0NCw3ICs1NDQsMTAgQEAg
RmxvYXRSZWN0IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmNvbnZlcnRGcmFtZVRvU3BhY2UoY29uc3Qg
RmxvYXRSZWN0JiBmcmFtZVJlY3QsIEEKICAgICAKIEZsb2F0UmVjdCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpyZWxhdGl2ZUZyYW1lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gY29udmVydEZyYW1lVG9T
cGFjZShlbGVtZW50UmVjdCgpLCBBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlOjpQYWdlKTsK
KyAgICBhdXRvIHJlY3QgPSBlbGVtZW50UmVjdCgpOworICAgIGF1dG8gcmVtb3RlT2Zmc2V0ID0g
cmVtb3RlRnJhbWVPZmZzZXQoKTsKKyAgICByZWN0Lm1vdmUocmVtb3RlT2Zmc2V0LngoKSwgcmVt
b3RlT2Zmc2V0LnkoKSk7CisgICAgcmV0dXJuIGNvbnZlcnRGcmFtZVRvU3BhY2UocmVjdCwgQWNj
ZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZTo6UGFnZSk7CiB9CiAKIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIEFjY2Vzc2liaWxpdHlPYmplY3Q6Om5leHRTaWJsaW5nVW5pZ25vcmVkKGludCBsaW1pdCkg
Y29uc3QKQEAgLTIwODUsMTMgKzIwODgsMjIgQEAgY29uc3QgQWNjZXNzaWJpbGl0eVNjcm9sbFZp
ZXcqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFuY2VzdG9yQWNjZXNzaWJpbGl0eVNjcm9sbFYKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQogUmVtb3RlQVhPYmplY3RSZWYgQWNjZXNzaWJpbGl0eU9iamVj
dDo6cmVtb3RlUGFyZW50T2JqZWN0KCkgY29uc3QKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IHRo
aXMtPmRvY3VtZW50KCk7CisgICAgYXV0byogZnJhbWUgPSBkb2N1bWVudCA/IGRvY3VtZW50LT5m
cmFtZSgpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gZnJhbWUgPyBmcmFtZS0+bG9hZGVyKCkuY2xp
ZW50KCkuYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpIDogbnVsbHB0cjsKK30KKworSW50UG9p
bnQgQWNjZXNzaWJpbGl0eU9iamVjdDo6cmVtb3RlRnJhbWVPZmZzZXQoKSBjb25zdAogewogICAg
IGlmIChhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCkpIHsKICAgICAgICAgaWYgKGF1
dG8qIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCkpCi0gICAgICAgICAgICByZXR1cm4gZnJhbWUt
PmxvYWRlcigpLmNsaWVudCgpLmFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKTsKKyAgICAgICAg
ICAgIHJldHVybiBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuYWNjZXNzaWJpbGl0eVJlbW90ZUZy
YW1lT2Zmc2V0KCk7CiAgICAgfQotICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIHsg
fTsKIH0KKwogI2VuZGlmCiAKIERvY3VtZW50KiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpkb2N1bWVu
dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5oCmluZGV4IDRkMjBmNTVhNTQ0Yy4uNjg0MmE3MTk0OGNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaApAQCAt
MTAyLDYgKzEwMiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAg
IHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorICAgIGJvb2wgaXNBWFJlbW90ZUZyYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlld0lu
c3RhbmNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nl
c3NpYmlsaXR5U1ZHUm9vdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0Fj
Y2Vzc2liaWxpdHlUYWJsZUluc3RhbmNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KQEAgLTQ2NCw4ICs0NjUsMTIgQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgUmVtb3RlQVhPYmplY3RSZWYgcmVtb3RlUGFyZW50T2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgSW50UG9pbnQgcmVtb3RlRnJhbWVPZmZzZXQoKSBjb25zdCBvdmVycmlkZTsKICAgICBG
bG9hdFJlY3QgY29udmVydFJlY3RUb1BsYXRmb3JtU3BhY2UoY29uc3QgRmxvYXRSZWN0JiwgQWNj
ZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmV0YWluUHRy
PGlkPiByZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG5pbDsgfQogI2VuZGlmCisgICAgYm9vbCBoYXNSZW1vdGVGcmFtZUNoaWxkKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIFBhZ2UqIHBhZ2UoKSBjb25zdCBvdmVycmlk
ZTsKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCBvdmVycmlkZTsKICAgICBMb2NhbEZy
YW1lVmlldyogZG9jdW1lbnRGcmFtZVZpZXcoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwCmluZGV4IGVlOGFiZWMzZDdiNS4uMmYxMmVmNzUzZTRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHAKQEAgLTI0MTMsNyArMjQxMyw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6YWRkQXR0YWNobWVudENoaWxkcmVuKCkKIAogICAgIC8vIExvY2FsRnJhbWVWaWV3J3MgbmVl
ZCB0byBiZSBpbnNlcnRlZCBpbnRvIHRoZSBBWCBoaWVyYXJjaHkgd2hlbiBlbmNvdW50ZXJlZC4K
ICAgICBXaWRnZXQqIHdpZGdldCA9IHdpZGdldEZvckF0dGFjaG1lbnRWaWV3KCk7Ci0gICAgaWYg
KCF3aWRnZXQgfHwgIXdpZGdldC0+aXNMb2NhbEZyYW1lVmlldygpKQorICAgIGlmICghd2lkZ2V0
IHx8ICEod2lkZ2V0LT5pc0xvY2FsRnJhbWVWaWV3KCkgfHwgd2lkZ2V0LT5pc1JlbW90ZUZyYW1l
VmlldygpKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGFkZENoaWxkKGF4T2JqZWN0Q2Fj
aGUoKS0+Z2V0T3JDcmVhdGUod2lkZ2V0KSk7CkBAIC0yNTY4LDcgKzI1NjgsNyBAQCB2b2lkIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENoaWxkcmVuKCkKICAgICAgICAgYXV0byBvd25l
cnMgPSBvYmplY3Qub3duZXJzKCk7CiAgICAgICAgIGlmIChvd25lcnMuc2l6ZSgpICYmICFvd25l
cnMuY29udGFpbnModGhpcykpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIAorCiAgICAg
ICAgIGFkZENoaWxkKCZvYmplY3QpOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAKaW5kZXggMmJi
YzMwODdiOWY4Li5iMWQ5ZjA3MzU1YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwCkBAIC0yNywxMCArMjcs
MTIgQEAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oIgogCiAjaW5jbHVkZSAi
QVhPYmplY3RDYWNoZS5oIgorI2luY2x1ZGUgIkFYUmVtb3RlRnJhbWUuaCIKICNpbmNsdWRlICJB
Y2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50
LmgiCiAjaW5jbHVkZSAiTG9jYWxGcmFtZS5oIgogI2luY2x1ZGUgIkxvY2FsRnJhbWVWaWV3Lmgi
CisjaW5jbHVkZSAiUmVtb3RlRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5o
IgogI2luY2x1ZGUgIldpZGdldC5oIgogCkBAIC01Miw2ICs1NCwxNCBAQCBBY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldzo6fkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KCkKIHZvaWQgQWNjZXNzaWJpbGl0
eVNjcm9sbFZpZXc6OmRldGFjaFJlbW90ZVBhcnRzKEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlw
ZSBkZXRhY2htZW50VHlwZSkKIHsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpkZXRhY2hSZW1v
dGVQYXJ0cyhkZXRhY2htZW50VHlwZSk7CisKKyAgICBhdXRvKiByZW1vdGVGcmFtZVZpZXcgPSBk
eW5hbWljRG93bmNhc3Q8UmVtb3RlRnJhbWVWaWV3PihtX3Njcm9sbFZpZXcuZ2V0KCkpOworICAg
IGlmIChyZW1vdGVGcmFtZVZpZXcgJiYgbV9yZW1vdGVGcmFtZSAmJiAoZGV0YWNobWVudFR5cGUg
PT0gQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlOjpFbGVtZW50RGVzdHJveWVkIHx8IGRldGFj
aG1lbnRUeXBlID09IEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZTo6Q2FjaGVEZXN0cm95ZWQp
KSB7CisgICAgICAgIGF1dG8mIHJlbW90ZUZyYW1lID0gcmVtb3RlRnJhbWVWaWV3LT5mcmFtZSgp
OworICAgICAgICByZW1vdGVGcmFtZS51bmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKG1f
cmVtb3RlRnJhbWUtPnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgICAgICBtX3JlbW90ZUZyYW1l
ID0gbnVsbHB0cjsKKyAgICB9CisKICAgICBtX3Njcm9sbFZpZXcgPSBudWxscHRyOwogICAgIG1f
ZnJhbWVPd25lckVsZW1lbnQgPSBudWxscHRyOwogfQpAQCAtMTc3LDggKzE4NywxMCBAQCBBY2Nl
c3NpYmlsaXR5U2Nyb2xsYmFyKiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkQ2hpbGRTY3Jv
bGxiYXIoU2Nyb2xsYmFyKiBzYwogdm9pZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6Y2xlYXJD
aGlsZHJlbigpCiB7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6Y2xlYXJDaGlsZHJlbigpOwor
CiAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhciA9IG51bGxwdHI7CiAgICAgbV9ob3Jpem9udGFsU2Ny
b2xsYmFyID0gbnVsbHB0cjsKKwogICAgIG1fY2hpbGRyZW5EaXJ0eSA9IGZhbHNlOwogfQogCkBA
IC0xOTEsMTEgKzIwMyw0MiBAQCBib29sIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojpjb21wdXRl
QWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0CiAgICAgcmV0dXJuIHdlYkFyZWEtPmFjY2Vz
c2liaWxpdHlJc0lnbm9yZWQoKTsKIH0KIAordm9pZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6
YWRkUmVtb3RlRnJhbWVDaGlsZCgpCit7CisgICAgaWYgKCFpczxSZW1vdGVGcmFtZVZpZXc+KG1f
c2Nyb2xsVmlldykpCisgICAgICAgIHJldHVybjsKKyAgICBXZWFrUHRyIGNhY2hlID0gYXhPYmpl
Y3RDYWNoZSgpOworICAgIGlmICghY2FjaGUpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICgh
bV9yZW1vdGVGcmFtZSkgeworICAgICAgICAvLyBNYWtlIHRoZSBmYXV4IGVsZW1lbnQgdGhhdCBy
ZXByZXNlbnRzIHRoZSByZW1vdGUgdHJhbnNmZXIgZWxlbWVudCBmb3IgQVguCisgICAgICAgIGF1
dG8mIHJlbW90ZUZyYW1lID0gZG93bmNhc3Q8UmVtb3RlRnJhbWVWaWV3PigqbV9zY3JvbGxWaWV3
KS5mcmFtZSgpOworICAgICAgICBtX3JlbW90ZUZyYW1lID0gZG93bmNhc3Q8QVhSZW1vdGVGcmFt
ZT4oY2FjaGUtPmNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6UmVtb3RlRnJhbWUpKTsKKyAgICAg
ICAgbV9yZW1vdGVGcmFtZS0+c2V0UGFyZW50KHRoaXMpOworCisgICAgICAgIC8vIEdlbmVyYXRl
IGEgbmV3IHRva2VuIGFuZCBwYXNzIGl0IGJhY2sgdG8gdGhlIG90aGVyIHJlbW90ZSBmcmFtZSBz
byBpdCBjYW4gYmluZCB0aGVzZSBvYmplY3RzIHRvZ2V0aGVyLgorICAgICAgICBhdXRvIGdlbmVy
YXRlZFRva2VuID0gbV9yZW1vdGVGcmFtZS0+Z2VuZXJhdGVSZW1vdGVUb2tlbigpOworICAgICAg
ICByZW1vdGVGcmFtZS5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhnZXRwaWQoKSwgZ2Vu
ZXJhdGVkVG9rZW4sIFt0aGlzLCAmcmVtb3RlRnJhbWUsIHByb3RlY3RlZEFjY2Vzc2JpbGl0eVJl
bW90ZUZyYW1lID0gUmVmUHRyIHsgbV9yZW1vdGVGcmFtZSB9XSAoc3RkOjpzcGFuPGNvbnN0IHVp
bnQ4X3Q+IHRva2VuLCBpbnQgcHJvY2Vzc0lkZW50aWZpZXIpIG11dGFibGUgeworI2lmIE9TKERB
UldJTikKKyAgICAgICAgICAgIHByb3RlY3RlZEFjY2Vzc2JpbGl0eVJlbW90ZUZyYW1lLT5pbml0
aWFsaXplUGxhdGZvcm1FbGVtZW50V2l0aFJlbW90ZVRva2VuKHRva2VuLCBwcm9jZXNzSWRlbnRp
Zmllcik7CisjZW5kaWYKKyAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgcmVtb3RlIHNpZGUgd2l0
aCB0aGUgb2Zmc2V0IG9mIHRoaXMgb2JqZWN0IHNvIGl0IGNhbiBjYWxjdWxhdGUgZnJhbWVzIGNv
cnJlY3RseS4KKyAgICAgICAgICAgIGF1dG8gbG9jYXRpb24gPSBlbGVtZW50UmVjdCgpLmxvY2F0
aW9uKCk7CisgICAgICAgICAgICByZW1vdGVGcmFtZS51cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2li
aWxpdHlPZmZzZXQoZmxvb3JlZEludFBvaW50KGxvY2F0aW9uKSk7CisgICAgICAgIH0pOworICAg
IH0gZWxzZQorICAgICAgICBtX3JlbW90ZUZyYW1lLT5zZXRQYXJlbnQodGhpcyk7CisKKyAgICBh
ZGRDaGlsZChtX3JlbW90ZUZyYW1lLmdldCgpKTsKK30KKwogdm9pZCBBY2Nlc3NpYmlsaXR5U2Ny
b2xsVmlldzo6YWRkQ2hpbGRyZW4oKQogewogICAgIEFTU0VSVCghbV9jaGlsZHJlbkluaXRpYWxp
emVkKTsKICAgICBtX2NoaWxkcmVuSW5pdGlhbGl6ZWQgPSB0cnVlOwogCisgICAgYWRkUmVtb3Rl
RnJhbWVDaGlsZCgpOwogICAgIGFkZENoaWxkKHdlYkFyZWFPYmplY3QoKSk7CiAgICAgdXBkYXRl
U2Nyb2xsYmFycygpOwogfQpAQCAtMjAzLDcgKzI0Niw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVNj
cm9sbFZpZXc6OmFkZENoaWxkcmVuKCkKIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxp
dHlTY3JvbGxWaWV3Ojp3ZWJBcmVhT2JqZWN0KCkgY29uc3QKIHsKICAgICBhdXRvKiBkb2N1bWVu
dCA9IHRoaXMtPmRvY3VtZW50KCk7Ci0gICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPmhh
c0xpdmluZ1JlbmRlclRyZWUoKSkKKyAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+aGFz
TGl2aW5nUmVuZGVyVHJlZSgpIHx8IG1fcmVtb3RlRnJhbWUpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgaWYgKGF1dG8qIGNhY2hlID0gYXhPYmplY3RDYWNoZSgpKQpAQCAtMjM0LDkg
KzI3NywxNSBAQCBMYXlvdXRSZWN0IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjplbGVtZW50UmVj
dCgpIGNvbnN0CiAKIERvY3VtZW50KiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6ZG9jdW1lbnQo
KSBjb25zdAogewotICAgIGlmIChhdXRvKiBmcmFtZVZpZXcgPSBkeW5hbWljRG93bmNhc3Q8TG9j
YWxGcmFtZVZpZXc+KG1fc2Nyb2xsVmlldy5nZXQoKSkpIHsKKyAgICBpZiAoYXV0byogZnJhbWVW
aWV3ID0gZHluYW1pY0Rvd25jYXN0PExvY2FsRnJhbWVWaWV3PihtX3Njcm9sbFZpZXcuZ2V0KCkp
KQogICAgICAgICByZXR1cm4gZnJhbWVWaWV3LT5mcmFtZSgpLmRvY3VtZW50KCk7CisKKyAgICAv
LyBGb3IgdGhlIFJlbW90ZUZyYW1lVmlldyBjYXNlLCB3ZSBuZWVkIHRvIHJldHVybiB0aGUgZG9j
dW1lbnQgb2Ygb3VyIGhvc3RpbmcgcGFyZW50IHNvIGF4T2JqZWN0Q2FjaGUoKSByZXNvbHZlcyBj
b3JyZWN0bHkuCisgICAgaWYgKGF1dG8qIHJlbW90ZUZyYW1lVmlldyA9IGR5bmFtaWNEb3duY2Fz
dDxSZW1vdGVGcmFtZVZpZXc+KG1fc2Nyb2xsVmlldy5nZXQoKSkpIHsKKyAgICAgICAgaWYgKGF1
dG8qIG93bmVyID0gcmVtb3RlRnJhbWVWaWV3LT5mcmFtZSgpLm93bmVyRWxlbWVudCgpKQorICAg
ICAgICAgICAgcmV0dXJuICYob3duZXItPmRvY3VtZW50KCkpOwogICAgIH0KKwogICAgIHJldHVy
biBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpkb2N1bWVudCgpOwogfQogCkBAIC0yNTksOCArMzA4LDEw
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpwYXJlbnRP
YmplY3QoKSBjb25zdAogICAgIFdlYWtQdHIgb3duZXIgPSBtX2ZyYW1lT3duZXJFbGVtZW50Lmdl
dCgpOwogICAgIGlmIChhdXRvKiBsb2NhbEZyYW1lVmlldyA9IGR5bmFtaWNEb3duY2FzdDxMb2Nh
bEZyYW1lVmlldz4obV9zY3JvbGxWaWV3LmdldCgpKSkKICAgICAgICAgb3duZXIgPSBsb2NhbEZy
YW1lVmlldy0+ZnJhbWUoKS5vd25lckVsZW1lbnQoKTsKKyAgICBlbHNlIGlmIChhdXRvKiByZW1v
dGVGcmFtZVZpZXcgPSBkeW5hbWljRG93bmNhc3Q8UmVtb3RlRnJhbWVWaWV3PihtX3Njcm9sbFZp
ZXcuZ2V0KCkpKQorICAgICAgICBvd25lciA9IHJlbW90ZUZyYW1lVmlldy0+ZnJhbWUoKS5vd25l
ckVsZW1lbnQoKTsKIAotICAgIGlmIChjYWNoZSAmJiBvd25lciAmJiBvd25lci0+cmVuZGVyZXIo
KSkKKyAgICBpZiAob3duZXIgJiYgb3duZXItPnJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiBj
YWNoZS0+Z2V0T3JDcmVhdGUob3duZXIuZ2V0KCkpOwogICAgIHJldHVybiBudWxscHRyOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Ny
b2xsVmlldy5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Ny
b2xsVmlldy5oCmluZGV4IDU1NzA0NDY3MWM3ZC4uNTI1YWM3ODNmYmI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5o
CkBAIC0zMCw2ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKK2NsYXNzIEFY
UmVtb3RlRnJhbWU7CiBjbGFzcyBBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyOwogY2xhc3MgU2Nyb2xs
YmFyOwogY2xhc3MgU2Nyb2xsVmlldzsKQEAgLTU0LDcgKzU1LDggQEAgcHJpdmF0ZToKICAgICBi
b29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
Ym9vbCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3SW5zdGFuY2UoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBpc0VuYWJsZWQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9Ci0gICAgCisgICAgYm9vbCBoYXNSZW1vdGVGcmFtZUNoaWxkKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9yZW1vdGVGcmFtZTsgfQorCiAgICAgYm9vbCBpc0F0dGFjaG1lbnQo
KSBjb25zdCBvdmVycmlkZTsKICAgICBQbGF0Zm9ybVdpZGdldCBwbGF0Zm9ybVdpZGdldCgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIFdpZGdldCogd2lkZ2V0Rm9yQXR0YWNobWVudFZpZXcoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBjdXJyZW50U2Nyb2xsVmlldygpOyB9CkBAIC02OSw2ICs3MSw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRGb2N1c2VkKGJvb2wpIG92ZXJyaWRlOwogICAgIGJv
b2wgY2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzRm9j
dXNlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgYWRkUmVtb3RlRnJhbWVDaGlsZCgpOwog
CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgTG9jYWxGcmFt
ZVZpZXcqIGRvY3VtZW50RnJhbWVWaWV3KCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC04NSw2ICs4OCw3
IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IG1faG9yaXpvbnRh
bFNjcm9sbGJhcjsKICAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gbV92ZXJ0aWNhbFNj
cm9sbGJhcjsKICAgICBib29sIG1fY2hpbGRyZW5EaXJ0eTsKKyAgICBSZWZQdHI8QVhSZW1vdGVG
cmFtZT4gbV9yZW1vdGVGcmFtZTsKIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCmluZGV4IDEwMTQ1NDYyNzhmMy4uMTc3ZDkzOTdhMGE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9B
WElzb2xhdGVkT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcApAQCAtMzc4LDYgKzM3OCwxMCBAQCB2b2lk
IEFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVQcm9wZXJ0aWVzKGNvbnN0IFJlZjxBY2Nlc3Np
YmlsaXR5T2JqZWN0PiYgYXhPYgogI2VuZGlmCiAKICAgICBzZXRPYmplY3RQcm9wZXJ0eShBWFBy
b3BlcnR5TmFtZTo6SW50ZXJuYWxMaW5rRWxlbWVudCwgb2JqZWN0LmludGVybmFsTGlua0VsZW1l
bnQoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Okhhc1JlbW90ZUZyYW1lQ2hp
bGQsIG9iamVjdC5oYXNSZW1vdGVGcmFtZUNoaWxkKCkpOworICAgIC8vIERvbid0IGR1cGxpY2F0
ZSB0aGUgcmVtb3RlRnJhbWVPZmZzZXQgZm9yIGV2ZXJ5IG9iamVjdC4gSnVzdCBzdG9yZSBpbiB0
aGUgV2ViQXJlYS4KKyAgICBpZiAob2JqZWN0LmlzV2ViQXJlYSgpKQorICAgICAgICBzZXRQcm9w
ZXJ0eShBWFByb3BlcnR5TmFtZTo6UmVtb3RlRnJhbWVPZmZzZXQsIG9iamVjdC5yZW1vdGVGcmFt
ZU9mZnNldCgpKTsKIAogICAgIGluaXRpYWxpemVQbGF0Zm9ybVByb3BlcnRpZXMoYXhPYmplY3Qp
OwogfQpAQCAtNDY0LDYgKzQ2OCw3IEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6c2V0UHJvcGVy
dHkoQVhQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBBWFByb3BlcnR5VmFsdWVWCiAgICAgICAg
IFtdKE9wdGlvblNldDxBWEFuY2VzdG9yRmxhZz4mIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVk
VmFsdWUuaXNFbXB0eSgpOyB9LAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBbXShSZXRh
aW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gIXR5cGVkVmFs
dWU7IH0sCisgICAgICAgIFtdKFJldGFpblB0cjxpZD4mIHR5cGVkVmFsdWUpIHsgcmV0dXJuICF0
eXBlZFZhbHVlOyB9LAogI2VuZGlmCiAgICAgICAgIFtdKEluc2lkZUxpbmsmIHR5cGVkVmFsdWUp
IHsgcmV0dXJuIHR5cGVkVmFsdWUgPT0gSW5zaWRlTGluaygpOyB9LAogICAgICAgICBbXShWZWN0
b3I8VmVjdG9yPEFYSUQ+PiYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZS5pc0VtcHR5
KCk7IH0sCkBAIC0xMjA2LDYgKzEyMTEsMjEgQEAgTGF5b3V0UmVjdCBBWElzb2xhdGVkT2JqZWN0
OjplbGVtZW50UmVjdCgpIGNvbnN0CiAgICAgfSk7CiB9CiAKK0ludFBvaW50IEFYSXNvbGF0ZWRP
YmplY3Q6OnJlbW90ZUZyYW1lT2Zmc2V0KCkgY29uc3QKK3sKKyAgICBhdXRvKiB3ZWJBcmVhID0g
QWNjZXNzaWJpbGl0eTo6ZmluZEFuY2VzdG9yPEFYSXNvbGF0ZWRPYmplY3Q+KCp0aGlzLCBmYWxz
ZSwgW10gKGNvbnN0IGF1dG8mIG9iamVjdCkgeworICAgICAgICByZXR1cm4gb2JqZWN0LmlzV2Vi
QXJlYSgpOworICAgIH0pOworCisgICAgaWYgKCF3ZWJBcmVhKQorICAgICAgICByZXR1cm4geyB9
OworCisgICAgaWYgKGF1dG8gcG9pbnQgPSB3ZWJBcmVhLT5vcHRpb25hbEF0dHJpYnV0ZVZhbHVl
PEludFBvaW50PihBWFByb3BlcnR5TmFtZTo6UmVtb3RlRnJhbWVPZmZzZXQpKQorICAgICAgICBy
ZXR1cm4gKnBvaW50OworCisgICAgcmV0dXJuIHsgfTsKK30KKwogRmxvYXRQb2ludCBBWElzb2xh
dGVkT2JqZWN0OjpzY3JlZW5SZWxhdGl2ZVBvc2l0aW9uKCkgY29uc3QKIHsKICAgICBpZiAoYXV0
byBwb2ludCA9IG9wdGlvbmFsQXR0cmlidXRlVmFsdWU8RmxvYXRQb2ludD4oQVhQcm9wZXJ0eU5h
bWU6OlNjcmVlblJlbGF0aXZlUG9zaXRpb24pKQpAQCAtMTIyOSwyMiArMTI0OSwyMyBAQCBGbG9h
dFBvaW50IEFYSXNvbGF0ZWRPYmplY3Q6OnNjcmVlblJlbGF0aXZlUG9zaXRpb24oKSBjb25zdAog
CiBGbG9hdFJlY3QgQVhJc29sYXRlZE9iamVjdDo6cmVsYXRpdmVGcmFtZSgpIGNvbnN0CiB7Cisg
ICAgRmxvYXRSZWN0IHJlbGF0aXZlRnJhbWU7CisKICAgICBpZiAoYXV0byBjYWNoZWRSZWxhdGl2
ZUZyYW1lID0gb3B0aW9uYWxBdHRyaWJ1dGVWYWx1ZTxJbnRSZWN0PihBWFByb3BlcnR5TmFtZTo6
UmVsYXRpdmVGcmFtZSkpIHsKICAgICAgICAgLy8gV2Ugc2hvdWxkIG5vdCBoYXZlIGNhY2hlZCBh
IHJlbGF0aXZlIGZyYW1lIGZvciBlbGVtZW50cyB0aGF0IGdldCB0aGVpciBnZW9tZXRyeSBmcm9t
IHRoZWlyIGNoaWxkcmVuLgogICAgICAgICBBU1NFUlQoIW1fZ2V0c0dlb21ldHJ5RnJvbUNoaWxk
cmVuKTsKLSAgICAgICAgcmV0dXJuICpjYWNoZWRSZWxhdGl2ZUZyYW1lOwotICAgIH0KLQotICAg
IGlmIChtX2dldHNHZW9tZXRyeUZyb21DaGlsZHJlbikgeworICAgICAgICByZWxhdGl2ZUZyYW1l
ID0gKmNhY2hlZFJlbGF0aXZlRnJhbWU7CisgICAgfSBlbHNlIGlmIChtX2dldHNHZW9tZXRyeUZy
b21DaGlsZHJlbikgewogICAgICAgICBhdXRvIGZyYW1lID0gZW5jbG9zaW5nSW50UmVjdChyZWxh
dGl2ZUZyYW1lRnJvbUNoaWxkcmVuKCkpOwogICAgICAgICBpZiAoIWZyYW1lLmlzRW1wdHkoKSkK
LSAgICAgICAgICAgIHJldHVybiBmcmFtZTsKKyAgICAgICAgICAgIHJlbGF0aXZlRnJhbWUgPSBm
cmFtZTsKICAgICAgICAgLy8gRWl0aGVyIHdlIGhhZCBubyBjaGlsZHJlbiwgb3Igb3VyIGNoaWxk
cmVuIGhhZCBlbXB0eSBmcmFtZXMuIFRoZSByaWdodCB0aGluZyB0byBkbyB3b3VsZCBiZSB0byBy
ZXR1cm4KICAgICAgICAgLy8gYSByZWN0IGF0IHRoZSBwb3NpdGlvbiBvZiB0aGUgbmVhcmVzdCBy
ZW5kZXIgdHJlZSBhbmNlc3RvciB3aXRoIHNvbWUgbWFkZS11cCBzaXplIChBY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdDo6Ym91bmRpbmdCb3hSZWN0IGRvZXMgdGhpcykuCiAgICAgICAgIC8vIEhvd2V2
ZXIsIHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIHRoZSByZW5kZXIgdHJlZSBpbiB0aGlzIGNvbnRl
eHQgKG9ubHkgdGhlIEFYIGlzb2xhdGVkIHRyZWUsIHdoaWNoIGlzIHRvbyBzcGFyc2UgZm9yIHRo
aXMgcHVycG9zZSksIHNvCiAgICAgICAgIC8vIHVudGlsIHdlIGNhY2hlIHRoZSBuZWNlc3Nhcnkg
aW5mb3JtYXRpb24gbGV0J3MgZ28gdG8gdGhlIG1haW4tdGhyZWFkLgogICAgIH0gZWxzZSBpZiAo
cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNvbHVtbiB8fCByb2xlVmFsdWUoKSA9
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFibGVIZWFkZXJDb250YWluZXIpCi0gICAgICAgIHJldHVy
biBleHBvc2VkVGFibGVBbmNlc3RvcigpID8gcmVsYXRpdmVGcmFtZUZyb21DaGlsZHJlbigpIDog
RmxvYXRSZWN0KCk7CisgICAgICAgIHJlbGF0aXZlRnJhbWUgPSBleHBvc2VkVGFibGVBbmNlc3Rv
cigpID8gcmVsYXRpdmVGcmFtZUZyb21DaGlsZHJlbigpIDogRmxvYXRSZWN0KCk7CisKIAogICAg
IC8vIE1vY2sgb2JqZWN0cyBhbmQgU1ZHIG9iamVjdHMgbmVlZCB1c2UgdGhlIG1haW4gdGhyZWFk
IHNpbmNlIHRoZXkgZG8gbm90IGhhdmUgcmVuZGVyIG5vZGVzIGFuZCBhcmUgbm90IHBhaW50ZWQg
d2l0aCBsYXllcnMsIHJlc3BlY3RpdmVseS4KICAgICAvLyBGSVhNRTogUmVtb3ZlIGlzTm9uTGF5
ZXJTVkdPYmplY3Qgd2hlbiBMQlNFIGlzIGVuYWJsZWQgJiBTVkcgZnJhbWVzIGFyZSBjYWNoZWQu
CkBAIC0xMjY2LDYgKzEyODcsOCBAQCBGbG9hdFJlY3QgQVhJc29sYXRlZE9iamVjdDo6cmVsYXRp
dmVGcmFtZSgpIGNvbnN0CiAgICAgaWYgKGFuY2VzdG9yICYmIGZyYW1lUmVjdC5sb2NhdGlvbigp
ID09IEZsb2F0UG9pbnQoKSkKICAgICAgICAgZnJhbWVSZWN0LnNldExvY2F0aW9uKGFuY2VzdG9y
LT5yZWxhdGl2ZUZyYW1lKCkubG9jYXRpb24oKSk7CiAKKyAgICBhdXRvIHJlbW90ZU9mZnNldCA9
IHJlbW90ZUZyYW1lT2Zmc2V0KCk7CisgICAgZnJhbWVSZWN0Lm1vdmVCeShGbG9hdFBvaW50KHJl
bW90ZU9mZnNldCkpOwogICAgIHJldHVybiBmcmFtZVJlY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRP
YmplY3QuaAppbmRleCBkMmE2NmMyZjUzZTQuLmRlODI3ZDVmZTAxNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRPYmplY3QuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lT
T0xBVEVEX1RSRUUpCiAKICNpbmNsdWRlICJBWENvcmVPYmplY3QuaCIKKyNpbmNsdWRlICJBWElz
b2xhdGVkVHJlZS5oIgogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJJbnRQ
b2ludC5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKQEAgLTIxNSw2ICsyMTYsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgaXNGaWxlVXBsb2FkQnV0dG9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
Ym9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0ZpbGVVcGxvYWRCdXR0b24pOyB9
CiAgICAgYm9vbCBpc01ldGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZh
bHVlKEFYUHJvcGVydHlOYW1lOjpJc01ldGVyKTsgfTsKICAgICBGbG9hdFBvaW50IHNjcmVlblJl
bGF0aXZlUG9zaXRpb24oKSBjb25zdCBmaW5hbDsKKyAgICBJbnRQb2ludCByZW1vdGVGcmFtZU9m
ZnNldCgpIGNvbnN0IGZpbmFsOwogICAgIEZsb2F0UmVjdCByZWxhdGl2ZUZyYW1lKCkgY29uc3Qg
ZmluYWw7CiAgICAgYm9vbCBoYXNDYWNoZWRSZWxhdGl2ZUZyYW1lKCkgY29uc3QgeyByZXR1cm4g
b3B0aW9uYWxBdHRyaWJ1dGVWYWx1ZTxJbnRSZWN0PihBWFByb3BlcnR5TmFtZTo6UmVsYXRpdmVG
cmFtZSkuaGFzX3ZhbHVlKCk7IH0KICNpZiBQTEFURk9STShNQUMpCkBAIC0yNjMsNyArMjY1LDcg
QEAgcHJpdmF0ZToKICAgICBBWElzb2xhdGVkT2JqZWN0KiBhY2Nlc3NpYmlsaXR5SGl0VGVzdChj
b25zdCBJbnRQb2ludCYpIGNvbnN0IGZpbmFsOwogICAgIEFYSXNvbGF0ZWRPYmplY3QqIGZvY3Vz
ZWRVSUVsZW1lbnQoKSBjb25zdCBmaW5hbDsKICAgICBBWENvcmVPYmplY3QqIGludGVybmFsTGlu
a0VsZW1lbnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBvYmplY3RBdHRyaWJ1dGVWYWx1ZShBWFBy
b3BlcnR5TmFtZTo6SW50ZXJuYWxMaW5rRWxlbWVudCk7IH0KLSAgICBBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3IgcmFkaW9CdXR0b25Hcm91cCgpIGNvbnN0IHsgcmV0dXJuIHRyZWUoKS0+b2Jq
ZWN0c0ZvcklEcyh2ZWN0b3JBdHRyaWJ1dGVWYWx1ZTxBWElEPihBWFByb3BlcnR5TmFtZTo6UmFk
aW9CdXR0b25Hcm91cCkpOyB9CisgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHJhZGlv
QnV0dG9uR3JvdXAoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cmVlKCktPm9iamVjdHNGb3JJRHMo
dmVjdG9yQXR0cmlidXRlVmFsdWU8QVhJRD4oQVhQcm9wZXJ0eU5hbWU6OlJhZGlvQnV0dG9uR3Jv
dXApKTsgfQogICAgIEFYSXNvbGF0ZWRPYmplY3QqIHNjcm9sbEJhcihBY2Nlc3NpYmlsaXR5T3Jp
ZW50YXRpb24pIGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyBwbGFjZWhvbGRlclZhbHVlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlBs
YWNlaG9sZGVyVmFsdWUpOyB9CiAgICAgU3RyaW5nIGV4cGFuZGVkVGV4dFZhbHVlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkV4cGFu
ZGVkVGV4dFZhbHVlKTsgfQpAQCAtNDU2LDcgKzQ1OCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBp
c0FjY2Vzc2liaWxpdHlBUklBR3JpZEluc3RhbmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFs
c2U7IH0KICAgICBib29sIGlzQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93SW5zdGFuY2UoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5QVJJQUdy
aWRDZWxsSW5zdGFuY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQotCisgICAgYm9v
bCBpc0FYUmVtb3RlRnJhbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJv
b2wgaXNOYXRpdmVUZXh0Q29udHJvbCgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaXNMaXN0Qm94
T3B0aW9uKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc01vY2tPYmplY3QoKSBjb25zdCBmaW5h
bDsKQEAgLTUzNyw3ICs1MzksOSBAQCBwcml2YXRlOgogICAgIFN0cmluZyBuYW1lQXR0cmlidXRl
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5h
bWU6Ok5hbWVBdHRyaWJ1dGUpOyB9CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgYm9vbCBoYXNB
cHBsZVBERkFubm90YXRpb25BdHRyaWJ1dGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBib29sQXR0
cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Okhhc0FwcGxlUERGQW5ub3RhdGlvbkF0dHJpYnV0
ZSk7IH0KKyAgICBSZXRhaW5QdHI8aWQ+IHJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkgY29u
c3QgZmluYWw7CiAjZW5kaWYKKyAgICBib29sIGhhc1JlbW90ZUZyYW1lQ2hpbGQoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Okhhc1JlbW90
ZUZyYW1lQ2hpbGQpOyB9CiAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1PREVMX0VM
RU1FTlQpCiAgICAgVmVjdG9yPFJldGFpblB0cjxpZD4+IG1vZGVsRWxlbWVudENoaWxkcmVuKCkg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVk
dHJlZS9BWElzb2xhdGVkVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKaW5kZXggNjk2NjU4NDQ4ZjY1Li4xYmUzYjc5
OTA1MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2lu
Y2x1ZGUgIkFYSXNvbGF0ZWRPYmplY3QuaCIKICNpbmNsdWRlICJBWExvZ2dlci5oIgorI2luY2x1
ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZVJv
dy5oIgogI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAiTG9jYWxGcmFtZVZp
ZXcuaCIKQEAgLTIyNSw0NiArMjI2LDI2IEBAIFJlZlB0cjxBWElzb2xhdGVkT2JqZWN0PiBBWElz
b2xhdGVkVHJlZTo6b2JqZWN0Rm9ySUQoY29uc3QgQVhJRCBheElEKSBjb25zdAogICAgIHJldHVy
biBheElELmlzVmFsaWQoKSA/IG1fcmVhZGVyVGhyZWFkTm9kZU1hcC5nZXQoYXhJRCkgOiBudWxs
cHRyOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBVPgotVmVjdG9yPFJlZlB0cjxBWENvcmVPYmpl
Y3Q+PiBBWElzb2xhdGVkVHJlZTo6b2JqZWN0c0ZvcklEcyhjb25zdCBVJiBheElEcykKK1JlZlB0
cjxBWElzb2xhdGVkT2JqZWN0PiBBWElzb2xhdGVkVHJlZTo6ZmV0Y2hPYmplY3RGb3JJREZyb21N
YWluVGhyZWFkKGNvbnN0IEFYSUQgYXhJRCkgY29uc3QKIHsKLSAgICBBU1NFUlQoIWlzTWFpblRo
cmVhZCgpKTsKLQotICAgIFZlY3RvcjxSZWZQdHI8QVhDb3JlT2JqZWN0Pj4gcmVzdWx0OwotICAg
IHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGF4SURzLnNpemUoKSk7Ci0gICAgZm9yIChj
b25zdCBhdXRvJiBheElEIDogYXhJRHMpIHsKLSAgICAgICAgUmVmUHRyIG9iamVjdCA9IG9iamVj
dEZvcklEKGF4SUQpOwotICAgICAgICBpZiAob2JqZWN0KSB7Ci0gICAgICAgICAgICByZXN1bHQu
YXBwZW5kKFdURk1vdmUob2JqZWN0KSk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
fQotCi0gICAgICAgIC8vIFRoZXJlIGlzIG5vIGlzb2xhdGVkIG9iamVjdCBmb3IgdGhpcyBBWElE
LiBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlIGNvcnJlc3BvbmRpbmcgbGl2ZSBvYmplY3QgaXMgaWdu
b3JlZC4KLSAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBsaXZlIG9iamVjdCBmb3IgdGhpcyBJRCBh
bmQgaXQgaXMgYW4gaWdub3JlZCB0YXJnZXQgb2YgYSByZWxhdGlvbnNoaXAsIGNyZWF0ZSBhbiBp
c29sYXRlZCBvYmplY3QgZm9yIGl0LgotICAgICAgICBvYmplY3QgPSBBY2Nlc3NpYmlsaXR5Ojpy
ZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8UmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+PihbJmF4
SUQsIHRoaXNdICgpIC0+IFJlZlB0cjxBWElzb2xhdGVkT2JqZWN0PiB7Ci0gICAgICAgICAgICBh
dXRvKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsKLSAgICAgICAgICAgIGlmICghY2FjaGUgfHwg
IWNhY2hlLT5yZWxhdGlvblRhcmdldElEcygpLmNvbnRhaW5zKGF4SUQpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAgICAgICBSZWZQdHIgYXhPYmplY3QgPSBjYWNo
ZS0+b2JqZWN0Rm9ySUQoYXhJRCk7Ci0gICAgICAgICAgICBpZiAoIWF4T2JqZWN0IHx8ICFheE9i
amVjdC0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwotCi0gICAgICAgICAgICBhdXRvIG9iamVjdCA9IEFYSXNvbGF0ZWRPYmplY3Q6OmNy
ZWF0ZSgqYXhPYmplY3QsIGNvbnN0X2Nhc3Q8QVhJc29sYXRlZFRyZWUqPih0aGlzKSk7Ci0gICAg
ICAgICAgICBBU1NFUlQoYXhPYmplY3QtPndyYXBwZXIoKSk7Ci0gICAgICAgICAgICBvYmplY3Qt
PmF0dGFjaFBsYXRmb3JtV3JhcHBlcihheE9iamVjdC0+d3JhcHBlcigpKTsKLSAgICAgICAgICAg
IHJldHVybiBvYmplY3Q7Ci0gICAgICAgIH0pOwotICAgICAgICBpZiAob2JqZWN0KSB7Ci0gICAg
ICAgICAgICBtX3JlYWRlclRocmVhZE5vZGVNYXAuYWRkKGF4SUQsICpvYmplY3QpOwotICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZChXVEZNb3ZlKG9iamVjdCkpOwotICAgICAgICB9Ci0gICAgfQot
ICAgIHJlc3VsdC5zaHJpbmtUb0ZpdCgpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgLy8gVGhl
cmUgaXMgbm8gaXNvbGF0ZWQgb2JqZWN0IGZvciB0aGlzIEFYSUQuIFRoaXMgY2FuIGhhcHBlbiBp
ZiB0aGUgY29ycmVzcG9uZGluZyBsaXZlIG9iamVjdCBpcyBpZ25vcmVkLgorICAgIC8vIElmIHRo
ZXJlIGlzIGEgbGl2ZSBvYmplY3QgZm9yIHRoaXMgSUQgYW5kIGl0IGlzIGFuIGlnbm9yZWQgdGFy
Z2V0IG9mIGEgcmVsYXRpb25zaGlwLCBjcmVhdGUgYW4gaXNvbGF0ZWQgb2JqZWN0IGZvciBpdC4K
KyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhyZWFkPFJl
ZlB0cjxBWElzb2xhdGVkT2JqZWN0Pj4oWyZheElELCB0aGlzXSAoKSAtPiBSZWZQdHI8QVhJc29s
YXRlZE9iamVjdD4geworICAgICAgICBhdXRvKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsKKyAg
ICAgICAgaWYgKCFjYWNoZSB8fCAhY2FjaGUtPnJlbGF0aW9uVGFyZ2V0SURzKCkuY29udGFpbnMo
YXhJRCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBSZWZQdHIgYXhP
YmplY3QgPSBjYWNoZS0+b2JqZWN0Rm9ySUQoYXhJRCk7CisgICAgICAgIGlmICghYXhPYmplY3Qg
fHwgIWF4T2JqZWN0LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgICAgICBhdXRvIG9iamVjdCA9IEFYSXNvbGF0ZWRPYmplY3Q6OmNy
ZWF0ZSgqYXhPYmplY3QsIGNvbnN0X2Nhc3Q8QVhJc29sYXRlZFRyZWUqPih0aGlzKSk7CisgICAg
ICAgIEFTU0VSVChheE9iamVjdC0+d3JhcHBlcigpKTsKKyAgICAgICAgb2JqZWN0LT5hdHRhY2hQ
bGF0Zm9ybVdyYXBwZXIoYXhPYmplY3QtPndyYXBwZXIoKSk7CisgICAgICAgIHJldHVybiBvYmpl
Y3Q7CisgICAgfSk7CiB9CiAKLQogdm9pZCBBWElzb2xhdGVkVHJlZTo6Z2VuZXJhdGVTdWJ0cmVl
KEFjY2Vzc2liaWxpdHlPYmplY3QmIGF4T2JqZWN0KQogewogICAgIEFYVFJBQ0UoIkFYSXNvbGF0
ZWRUcmVlOjpnZW5lcmF0ZVN1YnRyZWUiX3MpOwpAQCAtNjYwLDYgKzY0MSwxMiBAQCB2b2lkIEFY
SXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2RlUHJvcGVydGllcyhBWENvcmVPYmplY3QmIGF4T2JqZWN0
LCBjb25zdCBBWFByb3BlcgogICAgICAgICBjYXNlIEFYUHJvcGVydHlOYW1lOjpQb3NJblNldDoK
ICAgICAgICAgICAgIHByb3BlcnR5TWFwLnNldChBWFByb3BlcnR5TmFtZTo6UG9zSW5TZXQsIGF4
T2JqZWN0LnBvc0luU2V0KCkpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQVhQ
cm9wZXJ0eU5hbWU6OlJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50OgorICAgICAgICAgICAgcHJv
cGVydHlNYXAuc2V0KEFYUHJvcGVydHlOYW1lOjpSZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCwg
YXhPYmplY3QucmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBBWFByb3BlcnR5TmFtZTo6SGFzUmVtb3RlRnJhbWVDaGlsZDoKKyAg
ICAgICAgICAgIHByb3BlcnR5TWFwLnNldChBWFByb3BlcnR5TmFtZTo6SGFzUmVtb3RlRnJhbWVD
aGlsZCwgYXhPYmplY3QuaGFzUmVtb3RlRnJhbWVDaGlsZCgpKTsKKyAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIEFYUHJvcGVydHlOYW1lOjpSb2xlRGVzY3JpcHRpb246CiAgICAgICAg
ICAgICBwcm9wZXJ0eU1hcC5zZXQoQVhQcm9wZXJ0eU5hbWU6OlJvbGVEZXNjcmlwdGlvbiwgYXhP
YmplY3Qucm9sZURlc2NyaXB0aW9uKCkuaXNvbGF0ZWRDb3B5KCkpOwogICAgICAgICAgICAgYnJl
YWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZFRyZWUuaAppbmRleCBhNDE3OTI3OTc4ZDIuLjZiNGM1ZTgzMzFhMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJ
c29sYXRlZFRyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVk
dHJlZS9BWElzb2xhdGVkVHJlZS5oCkBAIC0xMDQsNiArMTA0LDcgQEAgZW51bSBjbGFzcyBBWFBy
b3BlcnR5TmFtZSA6IHVpbnQxNl90IHsKICAgICBIYXNIaWdobGlnaHRpbmcsCiAgICAgSGFzSXRh
bGljRm9udCwKICAgICBIYXNQbGFpblRleHQsCisgICAgSGFzUmVtb3RlRnJhbWVDaGlsZCwKICAg
ICBIYXNVbmRlcmxpbmUsCiAgICAgSGVhZGVyQ29udGFpbmVyLAogICAgIEhlYWRpbmdMZXZlbCwK
QEAgLTIwMSw2ICsyMDIsOCBAQCBlbnVtIGNsYXNzIEFYUHJvcGVydHlOYW1lIDogdWludDE2X3Qg
ewogICAgIFByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2gsCiAgICAgUmFkaW9CdXR0b25H
cm91cCwKICAgICBSZWxhdGl2ZUZyYW1lLAorICAgIFJlbW90ZUZyYW1lT2Zmc2V0LAorICAgIFJl
bW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50LAogICAgIFJvbGVWYWx1ZSwKICAgICBSb2xlUGxhdGZv
cm1TdHJpbmcsCiAgICAgUm9sZURlc2NyaXB0aW9uLApAQCAtMjU3LDYgKzI2MCw3IEBAIHVzaW5n
IEFYUHJvcGVydHlOYW1lU2V0ID0gSGFzaFNldDxBWFByb3BlcnR5TmFtZSwgSW50SGFzaDxBWFBy
b3BlcnR5TmFtZT4sIFdURjo6CiB1c2luZyBBWFByb3BlcnR5VmFsdWVWYXJpYW50ID0gc3RkOjp2
YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBBWElELCBTdHJpbmcsIGJvb2wsIGludCwgdW5zaWduZWQs
IGRvdWJsZSwgZmxvYXQsIHVpbnQ2NF90LCBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGUsIENvbG9y
LCBVUkwsIExheW91dFJlY3QsIEZsb2F0UG9pbnQsIEZsb2F0UmVjdCwgSW50UG9pbnQsIEludFJl
Y3QsIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+LCBWZWN0b3I8QWNjZXNzaWJpbGl0eVRl
eHQ+LCBWZWN0b3I8QVhJRD4sIFZlY3RvcjxzdGQ6OnBhaXI8QVhJRCwgQVhJRD4+LCBWZWN0b3I8
U3RyaW5nPiwgUGF0aCwgT3B0aW9uU2V0PEFYQW5jZXN0b3JGbGFnPiwgSW5zaWRlTGluaywgVmVj
dG9yPFZlY3RvcjxBWElEPj4sIENoYXJhY3RlclJhbmdlLCBzdGQ6OnBhaXI8QVhJRCwgQ2hhcmFj
dGVyUmFuZ2U+CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgLCBSZXRhaW5QdHI8TlNBdHRyaWJ1
dGVkU3RyaW5nPgorICAgICwgUmV0YWluUHRyPGlkPgogI2VuZGlmCiAjaWYgRU5BQkxFKEFYX1RI
UkVBRF9URVhUX0FQSVMpCiAgICAgLCBBWFRleHRSdW5zCkBAIC0zOTcsNiArNDAxLDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGNyZWF0ZUVtcHR5Q29udGVudChBY2Nlc3NpYmlsaXR5T2JqZWN0Jik7
CiAgICAgY29uc3RleHByIGJvb2wgaXNVcGRhdGluZ1N1YnRyZWUoKSBjb25zdCB7IHJldHVybiBt
X3Jvb3RPZlN1YnRyZWVCZWluZ1VwZGF0ZWQ7IH0KICAgICBjb25zdGV4cHIgdm9pZCB1cGRhdGlu
Z1N1YnRyZWUoQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmplY3QpIHsgbV9yb290T2ZTdWJ0cmVl
QmVpbmdVcGRhdGVkID0gYXhPYmplY3Q7IH0KKyAgICBSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4g
ZmV0Y2hPYmplY3RGb3JJREZyb21NYWluVGhyZWFkKGNvbnN0IEFYSUQpIGNvbnN0OwogCiAgICAg
ZW51bSBjbGFzcyBBdHRhY2hXcmFwcGVyIDogYm9vbCB7IE9uTWFpblRocmVhZCwgT25BWFRocmVh
ZCB9OwogICAgIHN0cnVjdCBOb2RlQ2hhbmdlIHsKQEAgLTQ5Nyw2ICs1MDIsMzAgQEAgaW5saW5l
IFJlZlB0cjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OnRyZWVGb3JQYWdlSUQoc3Rk
OjpvcHRpb25hbDxQYWdlSWQKICAgICByZXR1cm4gcGFnZUlEID8gdHJlZUZvclBhZ2VJRCgqcGFn
ZUlEKSA6IG51bGxwdHI7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFU+CitpbmxpbmUgVmVjdG9y
PFJlZlB0cjxBWENvcmVPYmplY3Q+PiBBWElzb2xhdGVkVHJlZTo6b2JqZWN0c0ZvcklEcyhjb25z
dCBVJiBheElEcykKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKworICAgIFZlY3Rv
cjxSZWZQdHI8QVhDb3JlT2JqZWN0Pj4gcmVzdWx0OworICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KGF4SURzLnNpemUoKSk7CisgICAgZm9yIChjb25zdCBhdXRvJiBheElEIDogYXhJ
RHMpIHsKKyAgICAgICAgUmVmUHRyIG9iamVjdCA9IG9iamVjdEZvcklEKGF4SUQpOworICAgICAg
ICBpZiAob2JqZWN0KSB7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFdURk1vdmUob2JqZWN0
KSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIG9iamVjdCA9
IGZldGNoT2JqZWN0Rm9ySURGcm9tTWFpblRocmVhZChheElEKTsKKyAgICAgICAgaWYgKG9iamVj
dCkgeworICAgICAgICAgICAgbV9yZWFkZXJUaHJlYWROb2RlTWFwLmFkZChheElELCAqb2JqZWN0
KTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoV1RGTW92ZShvYmplY3QpKTsKKyAgICAgICAg
fQorICAgIH0KKyAgICByZXN1bHQuc2hyaW5rVG9GaXQoKTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9tYWMvQVhJ
c29sYXRlZE9iamVjdE1hYy5tbQppbmRleCBhZGI3ZWM2NDgzNDUuLmUwMmRhMGQxMTJiNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvbWFjL0FY
SXNvbGF0ZWRPYmplY3RNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMubW0KQEAgLTYzLDYgKzYzLDggQEAg
dm9pZCBBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplUGxhdGZvcm1Qcm9wZXJ0aWVzKGNvbnN0
IFJlZjxjb25zdCBBY2Nlc3NpYmlsaXQKICAgICAgICAgfQogICAgIH0KIAorICAgIHNldFByb3Bl
cnR5KEFYUHJvcGVydHlOYW1lOjpSZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCwgb2JqZWN0LT5y
ZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpKTsKKwogICAgIC8vIENhY2hlIHRoZSBTdHJpbmdW
YWx1ZSBvbmx5IGlmIGl0IGRpZmZlcnMgZnJvbSB0aGUgQXR0cmlidXRlZFRleHQuCiAgICAgYXV0
byB2YWx1ZSA9IG9iamVjdC0+c3RyaW5nVmFsdWUoKTsKICAgICBpZiAoIWF0dHJpYnV0ZWRUZXh0
IHx8IHZhbHVlICE9IFN0cmluZyhbYXR0cmlidXRlZFRleHQgc3RyaW5nXSkpCkBAIC0yMDIsNiAr
MjA0LDExIEBAIHVuc2lnbmVkIEFYSXNvbGF0ZWRPYmplY3Q6OnRleHRMZW5ndGgoKSBjb25zdAog
ICAgIHJldHVybiAwOwogfQogCitSZXRhaW5QdHI8aWQ+IEFYSXNvbGF0ZWRPYmplY3Q6OnJlbW90
ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gcHJvcGVydHlWYWx1
ZTxSZXRhaW5QdHI8aWQ+PihBWFByb3BlcnR5TmFtZTo6UmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1l
bnQpOworfQorCiBSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiBBWElzb2xhdGVkT2JqZWN0
OjphdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKEFYVGV4dE1hcmtlclJhbmdlJiYg
bWFya2VyUmFuZ2UsIFNwZWxsQ2hlY2sgc3BlbGxDaGVjaykgY29uc3QKIHsKICAgICBpZiAoIW1h
cmtlclJhbmdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
QWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0KaW5kZXggYmEyYWNjZDgwZDA0Li5iYWI5YmYw
MjliZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vz
c2liaWxpdHlPYmplY3RNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAi
Y29uZmlnLmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCiAKKyNpbXBvcnQgIkFY
UmVtb3RlRnJhbWUuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlMYWJlbC5oIgogI2ltcG9ydCAi
QWNjZXNzaWJpbGl0eUxpc3QuaCIKICNpbXBvcnQgIkNvbG9yQ29jb2EuaCIKQEAgLTUxLDYgKzUy
LDcgQEAKICNpbXBvcnQgIldlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLmgiCiAjaW1w
b3J0ICJXaWRnZXQuaCIKIAorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0FjY2Vzc2liaWxpdHlT
UEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL05TU3BlbGxDaGVja2VyU1BJLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTc0OSw2ICs3NTEsMzAgQEAgUmV0YWluUHRyPE5TQXR0cmlidXRl
ZFN0cmluZz4gYXR0cmlidXRlZFN0cmluZ0NyZWF0ZShOb2RlKiBub2RlLCBTdHJpbmdWaWV3IHRl
eHQKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gQVhS
ZW1vdGVGcmFtZTo6Z2VuZXJhdGVSZW1vdGVUb2tlbigpIGNvbnN0Cit7CisjaWYgUExBVEZPUk0o
TUFDKQorICAgIC8vIFdlIHVzZSB0aGUgcGFyZW50J3Mgd3JhcHBlciBzbyB0aGF0IHRoZSByZW1v
dGUgZnJhbWUgYWN0cyBhcyBhIHBhc3MgdGhyb3VnaCBmb3IgdGhlIHJlbW90ZSB0b2tlbiBicmlk
Z2UuCisgICAgTlNEYXRhICpkYXRhID0gW05TQWNjZXNzaWJpbGl0eVJlbW90ZVVJRWxlbWVudCBy
ZW1vdGVUb2tlbkZvckxvY2FsVUlFbGVtZW50OnBhcmVudE9iamVjdCgpLT53cmFwcGVyKCldOwor
ICAgIHJldHVybiBzdGQ6OnNwYW4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtkYXRhIGJ5
dGVzXSksIFtkYXRhIGxlbmd0aF0pOworI2Vsc2UKKyAgICAvLyBGSVhNRTogU3VwcG9ydCBpT1MK
KyAgICByZXR1cm4geyB9CisjZW5kaWYKK30KKwordm9pZCBBWFJlbW90ZUZyYW1lOjppbml0aWFs
aXplUGxhdGZvcm1FbGVtZW50V2l0aFJlbW90ZVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90
PiB0b2tlbiwgaW50IHByb2Nlc3NJZGVudGlmaWVyKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAg
ICBtX3Byb2Nlc3NJZGVudGlmaWVyID0gcHJvY2Vzc0lkZW50aWZpZXI7CisgICAgW3dyYXBwZXIo
KSBhY2Nlc3NpYmlsaXR5U2V0UHJlc2VudGVyUHJvY2Vzc0lkZW50aWZpZXI6cHJvY2Vzc0lkZW50
aWZpZXJdOworICAgIE5TRGF0YSAqdG9rZW5EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOnRv
a2VuLmRhdGEoKSBsZW5ndGg6dG9rZW4uc2l6ZSgpXTsKKyAgICBtX3JlbW90ZUZyYW1lUGxhdGZv
cm1FbGVtZW50ID0gYWRvcHROUyhbW05TQWNjZXNzaWJpbGl0eVJlbW90ZVVJRWxlbWVudCBhbGxv
Y10gaW5pdFdpdGhSZW1vdGVUb2tlbjp0b2tlbkRhdGFdKTsKKworICAgIGF4T2JqZWN0Q2FjaGUo
KS0+b25SZW1vdGVGcmFtZUluaXRpYWxpemVkKCp0aGlzKTsKKyNlbmRpZgorfQorCiBuYW1lc3Bh
Y2UgQWNjZXNzaWJpbGl0eSB7CiAKIFBsYXRmb3JtUm9sZU1hcCBjcmVhdGVQbGF0Zm9ybVJvbGVN
YXAoKQpAQCAtODkxLDYgKzkxNyw3IEBAIFBsYXRmb3JtUm9sZU1hcCBjcmVhdGVQbGF0Zm9ybVJv
bGVNYXAoKQogICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpTdXBlcnNjcmlwdCwgTlNBY2Nl
c3NpYmlsaXR5R3JvdXBSb2xlIH0sCiAgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6Ok1vZGVs
LCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKICAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9s
ZTo6U3VnZ2VzdGlvbiwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNj
ZXNzaWJpbGl0eVJvbGU6OlJlbW90ZUZyYW1lLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwK
ICAgICB9OwogICAgIFBsYXRmb3JtUm9sZU1hcCByb2xlTWFwOwogICAgIGZvciAoYXV0byYgcm9s
ZSA6IHJvbGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCmluZGV4
IDYzNTdmYTdjMjcxYi4uZjE0MjQ1ZmMzYjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJCYXNlLm1tCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0ICJBWENvcmVPYmplY3Qu
aCIKICNpbXBvcnQgIkFYSXNvbGF0ZWRPYmplY3QuaCIKICNpbXBvcnQgIkFYT2JqZWN0Q2FjaGUu
aCIKKyNpbXBvcnQgIkFYUmVtb3RlRnJhbWUuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlBUklB
R3JpZFJvdy5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUxpc3QuaCIKICNpbXBvcnQgIkFjY2Vz
c2liaWxpdHlMaXN0Qm94LmgiCkBAIC0yNjUsMTMgKzI2NiwxMyBAQCBOU0FycmF5ICptYWtlTlNB
cnJheShjb25zdCBXZWJDb3JlOjpBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYgYwogICAgICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgICAgICBhdXRvIHdyYXBwZXIg
PSBjaGlsZC0+d3JhcHBlcigpOwotCiAgICAgICAgIC8vIFdlIHdhbnQgdG8gcmV0dXJuIHRoZSBh
dHRhY2htZW50IHZpZXcgaW5zdGVhZCBvZiB0aGUgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgYXR0
YWNobWVudCwKICAgICAgICAgLy8gb3RoZXJ3aXNlLCB3ZSBnZXQgcGFsaW5kcm9tZSBlcnJvcnMg
aW4gdGhlIEFYIGhpZXJhcmNoeS4KICAgICAgICAgaWYgKGNoaWxkLT5pc0F0dGFjaG1lbnQoKSkg
ewogICAgICAgICAgICAgaWYgKGlkIGF0dGFjaG1lbnRWaWV3ID0gd3JhcHBlci5hdHRhY2htZW50
VmlldykKICAgICAgICAgICAgICAgICByZXR1cm4gYXR0YWNobWVudFZpZXc7Ci0gICAgICAgIH0K
KyAgICAgICAgfSBlbHNlIGlmIChjaGlsZC0+aXNSZW1vdGVGcmFtZSgpKQorICAgICAgICAgICAg
cmV0dXJuIGNoaWxkLT5yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpLmdldCgpOwogCiAgICAg
ICAgIHJldHVybiB3cmFwcGVyOwogICAgIH0pLmF1dG9yZWxlYXNlKCk7CkBAIC0zODksNyArMzkw
LDcgQEAgTlNBcnJheSAqbWFrZU5TQXJyYXkoY29uc3QgV2ViQ29yZTo6QVhDb3JlT2JqZWN0OjpB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGMKIC0gKEJPT0wpaXNJc29sYXRlZE9iamVjdAog
ewogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCi0gICAgYXV0byogYmFj
a2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0ciBiYWNraW5nT2Jq
ZWN0ID0gZHluYW1pY0Rvd25jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3Q+KHNlbGYuYmFzZVVwZGF0
ZUJhY2tpbmdTdG9yZSk7CiAgICAgcmV0dXJuIGJhY2tpbmdPYmplY3QgJiYgYmFja2luZ09iamVj
dC0+aXNBWElzb2xhdGVkT2JqZWN0SW5zdGFuY2UoKTsKICNlbHNlCiAgICAgcmV0dXJuIE5POwpA
QCAtNTIzLDcgKzUyNCw3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRQYXRoVG9TY3JlZW5TcGFjZUZ1
bmN0aW9uKFBhdGhDb252ZXJzaW9uSW5mbyYgY29udmVyc2lvbiwgY29uCiAKIC0gKENHUmVjdClj
b252ZXJ0UmVjdFRvU3BhY2U6KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpcmVjdCBzcGFjZToo
QWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZSlzcGFjZQogewotICAgIGF1dG8qIGJhY2tpbmdP
YmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHIgYmFja2luZ09iamVjdCA9
IGR5bmFtaWNEb3duY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0PihzZWxmLmJhc2VVcGRhdGVCYWNr
aW5nU3RvcmUpOwogICAgIGlmICghYmFja2luZ09iamVjdCkKICAgICAgICAgcmV0dXJuIENHUmVj
dFplcm87CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggNmM1
ZTZiN2FjZDljLi43NTAyZDlhMGU0OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyTWFjLm1tCkBAIC0zNCw2ICszNCw3IEBACiAjaW1wb3J0ICJBWElzb2xhdGVkT2JqZWN0Lmgi
CiAjaW1wb3J0ICJBWExvZ2dlci5oIgogI2ltcG9ydCAiQVhPYmplY3RDYWNoZS5oIgorI2ltcG9y
dCAiQVhSZW1vdGVGcmFtZS5oIgogI2ltcG9ydCAiQVhUZXh0TWFya2VyLmgiCiAjaW1wb3J0ICJB
Y2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlMYWJlbC5o
IgpAQCAtNDc5LDYgKzQ4MCwxMCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICNkZWZpbmUg
TlNBY2Nlc3NpYmlsaXR5VGV4dElucHV0TWFya2VkVGV4dE1hcmtlclJhbmdlQXR0cmlidXRlIEAi
QVhUZXh0SW5wdXRNYXJrZWRUZXh0TWFya2VyUmFuZ2UiCiAjZW5kaWYKIAorI2lmbmRlZiBrQVhD
b252ZXJ0UmVsYXRpdmVGcmFtZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUKKyNkZWZpbmUga0FYQ29u
dmVydFJlbGF0aXZlRnJhbWVQYXJhbWV0ZXJpemVkQXR0cmlidXRlIEAiQVhDb252ZXJ0UmVsYXRp
dmVGcmFtZSIKKyNlbmRpZgorCiBAaW1wbGVtZW50YXRpb24gV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIKIAogLSAodm9pZClkZXRhY2gKQEAgLTY5Miw3ICs2OTcsNyBAQCBzdGF0aWMgUmV0
YWluUHRyPEFYVGV4dE1hcmtlclJlZj4gcHJldmlvdXNUZXh0TWFya2VyKEFYT2JqZWN0Q2FjaGUq
IGNhY2hlLCBjb25zdAogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBhdXRv
KiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgUmVmUHRyPEFYQ29y
ZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OwogICAgIGlmICgh
YmFja2luZ09iamVjdCkKICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMTI1Niw3ICsxMjYxLDcg
QEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAKIC0gKE5TQXJyYXkgKily
ZW5kZXJXaWRnZXRDaGlsZHJlbgogewotICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4
QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBiYWNraW5nT2JqZWN0ID0g
c2VsZi5heEJhY2tpbmdPYmplY3Q7CiAgICAgaWYgKCFiYWNraW5nT2JqZWN0IHx8ICFiYWNraW5n
T2JqZWN0LT5pc1dpZGdldCgpKQogICAgICAgICByZXR1cm4gbmlsOwogCkBAIC0xMjc5LDcgKzEy
ODQsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogLSAoaWQpcmVtb3Rl
QWNjZXNzaWJpbGl0eVBhcmVudE9iamVjdAogewotICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBz
ZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBiYWNraW5nT2Jq
ZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CiAgICAgcmV0dXJuIGJhY2tpbmdPYmplY3QgPyBi
YWNraW5nT2JqZWN0LT5yZW1vdGVQYXJlbnRPYmplY3QoKSA6IG5pbDsKIH0KIApAQCAtMTI5Niw3
ICsxMzAxLDcgQEAgc3RhdGljIHZvaWQgY29udmVydFRvVmVjdG9yKE5TQXJyYXkqIGFycmF5LCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2gKIAogLSAoQVhUZXh0TWFya2VyUmFu
Z2VSZWYpc2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UKIHsKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0
ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2lu
Z09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OwogICAgIGlmICghYmFja2luZ09iamVjdCkK
ICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMTM2NiwxMiArMTM3MSwxOCBAQCBzdGF0aWMgdm9p
ZCBXZWJUcmFuc2Zvcm1DR1BhdGhUb05TQmV6aWVyUGF0aCh2b2lkKiBpbmZvLCBjb25zdCBDR1Bh
dGhFbGVtZW50ICplbAogCiAtIChOU1N0cmluZyopcm9sZQogeworICAgIFJlZlB0cjxBWENvcmVP
YmplY3Q+IGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBpZiAoIWJh
Y2tpbmdPYmplY3QpCisgICAgICAgIHJldHVybiBuaWw7CisKIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0JFR0lOCi0gICAgaWYgKHNlbGYuYXhCYWNraW5nT2JqZWN0LT5pc0F0dGFjaG1l
bnQoKSkKKyAgICBpZiAoYmFja2luZ09iamVjdC0+aXNBdHRhY2htZW50KCkpCiAgICAgICAgIHJl
dHVybiBbW3NlbGYgYXR0YWNobWVudFZpZXddIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpO
U0FjY2Vzc2liaWxpdHlSb2xlQXR0cmlidXRlXTsKKyAgICBpZiAoYmFja2luZ09iamVjdC0+aXNS
ZW1vdGVGcmFtZSgpKQorICAgICAgICByZXR1cm4gW2JhY2tpbmdPYmplY3QtPnJlbW90ZUZyYW1l
UGxhdGZvcm1FbGVtZW50KCkuZ2V0KCkgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNj
ZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGVdOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECiAKLSAgICBOU1N0cmluZyAqc3RyaW5nID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPnJvbGVQ
bGF0Zm9ybVN0cmluZygpOworICAgIE5TU3RyaW5nICpzdHJpbmcgPSBiYWNraW5nT2JqZWN0LT5y
b2xlUGxhdGZvcm1TdHJpbmcoKTsKICAgICBpZiAoc3RyaW5nLmxlbmd0aCkKICAgICAgICAgcmV0
dXJuIHN0cmluZzsKICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5VW5rbm93blJvbGU7CkBAIC0x
Mzc5LDcgKzEzOTAsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogLSAo
Qk9PTClpc0VtcHR5R3JvdXAKIHsKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJh
Y2tpbmdPYmplY3Q7CisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNl
bGYuYXhCYWNraW5nT2JqZWN0OwogICAgIGlmICghYmFja2luZ09iamVjdCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCkBAIC0xMzg4LDYgKzEzOTksOSBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19FTkQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAKKyAgICBpZiAoYmFj
a2luZ09iamVjdC0+aXNSZW1vdGVGcmFtZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAg
ICByZXR1cm4gW1tzZWxmIHJvbGVdIGlzRXF1YWw6TlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlXQog
ICAgICAgICAmJiBiYWNraW5nT2JqZWN0LT5jaGlsZHJlbigpLmlzRW1wdHkoKQogICAgICAgICAm
JiAhW1tzZWxmIHJlbmRlcldpZGdldENoaWxkcmVuXSBjb3VudF07CkBAIC0xMzk2LDcgKzE0MTAs
NyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0JFR0lOCiAtIChOU1N0cmluZyopc3Vicm9sZQogewotICAgIGF1dG8qIGJh
Y2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHI8QVhDb3JlT2Jq
ZWN0PiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CiAgICAgaWYgKCFiYWNr
aW5nT2JqZWN0KQogICAgICAgICByZXR1cm4gbmlsOwogCkBAIC0xNDEzLDcgKzE0MjcsNyBAQCBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogLSAoTlNTdHJpbmcqKXJvbGVEZXNj
cmlwdGlvbgogewotICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVj
dDsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tp
bmdPYmplY3Q7CiAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQogICAgICAgICByZXR1cm4gbmlsOwog
CkBAIC0xNDIxLDYgKzE0MzUsOCBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJ
TgogICAgIC8vIGF0dGFjaG1lbnRzIGhhdmUgdGhlIEFYSW1hZ2Ugcm9sZSwgYnV0IGEgZGlmZmVy
ZW50IHN1YnJvbGUKICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNBdHRhY2htZW50KCkpCiAgICAg
ICAgIHJldHVybiBbW3NlbGYgYXR0YWNobWVudFZpZXddIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpOU0FjY2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRpb25BdHRyaWJ1dGVdOworICAgIGlmIChi
YWNraW5nT2JqZWN0LT5pc1JlbW90ZUZyYW1lKCkpCisgICAgICAgIHJldHVybiBbYmFja2luZ09i
amVjdC0+cmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKS5nZXQoKSBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlXTsKIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAgICAgU3RyaW5nIHJvbGVEZXNjcmlw
dGlvbiA9IGJhY2tpbmdPYmplY3QtPnJvbGVEZXNjcmlwdGlvbigpOwpAQCAtMTQ3Myw2ICsxNDg5
LDI4IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIHJldHVybiBheFNj
cm9sbFZpZXcgPyBbYXhTY3JvbGxWaWV3LT5wbGF0Zm9ybVdpZGdldCgpIHdpbmRvd10gOiBuaWw7
CiB9CiAKKy0gKE5TQXJyYXkgKilfdHJhbnNmb3JtU3BlY2lhbENoaWxkcmVuQ2FzZXM6KFJlZlB0
cjxBWENvcmVPYmplY3Q+KWJhY2tpbmdPYmplY3QKK3sKKyNpZiBFTkFCTEUoTU9ERUxfRUxFTUVO
VCkKKyAgICBpZiAoYmFja2luZ09iamVjdC0+aXNNb2RlbCgpKSB7CisgICAgICAgIGF1dG8gbW9k
ZWxDaGlsZHJlbiA9IGJhY2tpbmdPYmplY3QtPm1vZGVsRWxlbWVudENoaWxkcmVuKCk7CisgICAg
ICAgIGlmIChtb2RlbENoaWxkcmVuLnNpemUoKSkgeworICAgICAgICAgICAgcmV0dXJuIGNyZWF0
ZU5TQXJyYXkoV1RGTW92ZShtb2RlbENoaWxkcmVuKSwgW10gKGF1dG8mJiBjaGlsZCkgLT4gaWQg
eworICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZC5nZXQoKTsKKyAgICAgICAgICAgIH0pLmF1
dG9yZWxlYXNlKCk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKworICAgIGNvbnN0IGF1dG8m
IGNoaWxkcmVuID0gYmFja2luZ09iamVjdC0+Y2hpbGRyZW4oKTsKKyAgICBpZiAoIWNoaWxkcmVu
LnNpemUoKSkgeworICAgICAgICBpZiAoTlNBcnJheSAqY2hpbGRyZW4gPSBbc2VsZiByZW5kZXJX
aWRnZXRDaGlsZHJlbl0pCisgICAgICAgICAgICByZXR1cm4gY2hpbGRyZW47CisgICAgfQorCisg
ICAgcmV0dXJuIG5pbDsKK30KKwogLy8gRklYTUU6IHNwbGl0IHVwIHRoaXMgZnVuY3Rpb24gaW4g
YSBiZXR0ZXIgd2F5LgogLy8gc3VnZ2VzdGlvbnM6IFVzZSBhIGhhc2ggdGFibGUgdGhhdCBtYXBz
IGF0dHJpYnV0ZSBuYW1lcyB0byBmdW5jdGlvbiBjYWxscywKIC8vIG9yIG1heWJlIHBvaW50ZXJz
IHRvIG1lbWJlciBmdW5jdGlvbnMKQEAgLTE1MzEsMjIgKzE1NjksOSBAQCBBTExPV19ERVBSRUNB
VEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICB9CiAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUg
aXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXSB8fCBbYXR0
cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5Jbk5hdmln
YXRpb25PcmRlckF0dHJpYnV0ZV0pIHsKLSNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKLSAgICAg
ICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzTW9kZWwoKSkgewotICAgICAgICAgICAgYXV0byBtb2Rl
bENoaWxkcmVuID0gYmFja2luZ09iamVjdC0+bW9kZWxFbGVtZW50Q2hpbGRyZW4oKTsKLSAgICAg
ICAgICAgIGlmIChtb2RlbENoaWxkcmVuLnNpemUoKSkgewotICAgICAgICAgICAgICAgIHJldHVy
biBjcmVhdGVOU0FycmF5KFdURk1vdmUobW9kZWxDaGlsZHJlbiksIFtdIChhdXRvJiYgY2hpbGQp
IC0+IGlkIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkLmdldCgpOwotICAgICAg
ICAgICAgICAgIH0pLmF1dG9yZWxlYXNlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSNl
bmRpZgotCi0gICAgICAgIGNvbnN0IGF1dG8mIGNoaWxkcmVuID0gYmFja2luZ09iamVjdC0+Y2hp
bGRyZW4oKTsKLSAgICAgICAgaWYgKGNoaWxkcmVuLmlzRW1wdHkoKSkgewotICAgICAgICAgICAg
aWYgKE5TQXJyYXkgKndpZGdldENoaWxkcmVuID0gW3NlbGYgcmVuZGVyV2lkZ2V0Q2hpbGRyZW5d
KQotICAgICAgICAgICAgICAgIHJldHVybiB3aWRnZXRDaGlsZHJlbjsKLSAgICAgICAgfQorICAg
ICAgICBOU0FycmF5ICpzcGVjaWFsQ2hpbGRyZW4gPSBbc2VsZiBfdHJhbnNmb3JtU3BlY2lhbENo
aWxkcmVuQ2FzZXM6YmFja2luZ09iamVjdF07CisgICAgICAgIGlmIChzcGVjaWFsQ2hpbGRyZW4u
Y291bnQpCisgICAgICAgICAgICByZXR1cm4gc3BlY2lhbENoaWxkcmVuOwogCiAgICAgICAgIC8v
IFRoZSB0cmVlJ3MgKEFYT3V0bGluZSkgY2hpbGRyZW4gYXJlIHN1cHBvc2VkIHRvIGJlIGl0cyBy
b3dzIGFuZCBjb2x1bW5zLgogICAgICAgICAvLyBUaGUgQVJJQSBzcGVjIGRvZXNuJ3QgaGF2ZSBj
b2x1bW5zLCBzbyB3ZSBqdXN0IG5lZWQgcm93cy4KQEAgLTE1NTcsNyArMTU4Miw3IEBAIEFMTE9X
X0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICBpZiAoYmFja2luZ09iamVj
dC0+aXNUcmVlSXRlbSgpKQogICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdP
YmplY3QtPmFyaWFUcmVlSXRlbUNvbnRlbnQoKSk7CiAKLSAgICAgICAgcmV0dXJuIG1ha2VOU0Fy
cmF5KGNoaWxkcmVuKTsKKyAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdPYmplY3Qt
PmNoaWxkcmVuKCkpOwogICAgIH0KIAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9T
dHJpbmc6IE5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGVdKSB7CkBAIC0x
NzEzLDE2ICsxNzM4LDE0IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAog
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eUVu
YWJsZWRBdHRyaWJ1dGVdKQogICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhCb29s
OiBiYWNraW5nT2JqZWN0LT5pc0VuYWJsZWQoKV07CiAKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUg
aXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlTaXplQXR0cmlidXRlXSkgewotICAgICAg
ICBhdXRvIHNpemUgPSBiYWNraW5nT2JqZWN0LT5zaXplKCk7Ci0gICAgICAgIHJldHVybiBbTlNW
YWx1ZSB2YWx1ZVdpdGhTaXplOk5TTWFrZVNpemUoc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgp
KV07Ci0gICAgfQorICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nl
c3NpYmlsaXR5U2l6ZUF0dHJpYnV0ZV0pCisgICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdp
dGhTaXplOihDR1NpemUpYmFja2luZ09iamVjdC0+c2l6ZSgpXTsKIAogICAgIGlmIChbYXR0cmli
dXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5UHJpbWFyeVNjcmVlbkhlaWdo
dEF0dHJpYnV0ZV0pCiAgICAgICAgIHJldHVybiBAKGJhY2tpbmdPYmplY3QtPnByaW1hcnlTY3Jl
ZW5SZWN0KCkuaGVpZ2h0KCkpOwogCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0
cmluZzpOU0FjY2Vzc2liaWxpdHlQb3NpdGlvbkF0dHJpYnV0ZV0pCi0gICAgICAgIHJldHVybiBA
KENHUG9pbnQoYmFja2luZ09iamVjdC0+c2NyZWVuUmVsYXRpdmVQb3NpdGlvbigpKSk7CisgICAg
ICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhQb2ludDooQ0dQb2ludCliYWNraW5nT2JqZWN0
LT5zY3JlZW5SZWxhdGl2ZVBvc2l0aW9uKCldOwogCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlQYXRoQXR0cmlidXRlXSkKICAgICAgICAgcmV0
dXJuIFtzZWxmIHBhdGhdOwpAQCAtMjIzNyw2ICsyMjYwLDEwIEBAIEFMTE9XX0RFUFJFQ0FURURf
SU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICByZXR1cm4gcmFuZ2UgPyByYW5nZS5wbGF0Zm9y
bURhdGEoKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCkgOiBuaWw7CiAgICAgfQogCisgICAgLy8gVm9p
Y2VPdmVyIHByb3BlcnR5IHRvIGlnbm9yZSBjZXJ0YWluIGdyb3Vwcy4KKyAgICBpZiAoW2F0dHJp
YnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiQVhBdXRvSW50ZXJhY3RhYmxlIl0pCisgICAgICAg
IHJldHVybiBAKGJhY2tpbmdPYmplY3QtPmlzUmVtb3RlRnJhbWUoKSk7CisKICAgICAvLyBVc2Vk
IGJ5IExheW91dFRlc3RzIG9ubHksIG5vdCBieSBBVCBjbGllbnRzLgogICAgIGlmIChVTkxJS0VM
WShbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWEFSSUFSb2xlIl0pKQogICAgICAg
ICByZXR1cm4gYmFja2luZ09iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCk7CkBAIC0yMzMwLDcg
KzIzNTcsOCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAg
aWYgKGF4T2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkgewogICAgICAgICAgICAgaWYgKGlkIGF0dGFj
aG1lbnRWaWV3ID0gW2F4T2JqZWN0LT53cmFwcGVyKCkgYXR0YWNobWVudFZpZXddKQogICAgICAg
ICAgICAgICAgIHJldHVybiBhdHRhY2htZW50VmlldzsKLSAgICAgICAgfQorICAgICAgICB9IGVs
c2UgaWYgKGF4T2JqZWN0LT5pc1JlbW90ZUZyYW1lKCkpCisgICAgICAgICAgICByZXR1cm4gYXhP
YmplY3QtPnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkuZ2V0KCk7CiAKICAgICAgICAgLy8g
T25seSBjYWxsIG91dCB0byB0aGUgbWFpbi10aHJlYWQgaWYgdGhpcyBvYmplY3QgaGFzIGEgYmFj
a2luZyB3aWRnZXQgdG8gcXVlcnkuCiAgICAgICAgIGlmIChheE9iamVjdC0+aXNXaWRnZXQoKSkg
ewpAQCAtMjUwNyw2ICsyNTM1LDEwIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05T
X0VORAogICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc1dlYkFyZWEoKSkKICAgICAgICAgcmV0dXJu
IHdlYkFyZWFQYXJhbUF0dHJzOwogCisgICAgLy8gVGhlIG9iamVjdCB0aGF0IHNlcnZlcyB1cCB0
aGUgcmVtb3RlIGZyYW1lIGFsc28gaXMgdGhlIG9uZSB0aGF0IGRvZXMgdGhlIGZyYW1lIGNvbnZl
cnNpb24uCisgICAgaWYgKGJhY2tpbmdPYmplY3QtPmhhc1JlbW90ZUZyYW1lQ2hpbGQoKSkKKyAg
ICAgICAgcmV0dXJuIFtwYXJhbUF0dHJzIGFycmF5QnlBZGRpbmdPYmplY3Q6a0FYQ29udmVydFJl
bGF0aXZlRnJhbWVQYXJhbWV0ZXJpemVkQXR0cmlidXRlXTsKKwogICAgIHJldHVybiBwYXJhbUF0
dHJzOwogfQogCkBAIC0yNTc4LDcgKzI2MTAsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19FTkQKIHsKICAgICBBWFRSQUNFKCJXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBh
Y2Nlc3NpYmlsaXR5UGVyZm9ybVNob3dNZW51QWN0aW9uIl9zKTsKIAotICAgIGF1dG8qIGJhY2tp
bmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0
PiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CiAgICAgaWYgKCFiYWNraW5n
T2JqZWN0KSB7CiAgICAgICAgIEFYTE9HKG1ha2VTdHJpbmcoIk5vIGJhY2tpbmdPYmplY3QgZm9y
IHdyYXBwZXIgIiwgaGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihzZWxmKSkpKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtMjgyMiw3ICsyODU0LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBM
RU1FTlRBVElPTlNfRU5ECiAgICAgaWYgKCFyYW5nZS5sZW5ndGgpCiAgICAgICAgIHJldHVybiBu
aWw7CiAKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7Cisg
ICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2Jq
ZWN0OwogICAgIGlmICghYmFja2luZ09iamVjdCkKICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAt
MzE3Nyw2ICszMjA5LDE4IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2lkZ2V0Q2hpbGRyZW47CiAgICAgICAgICAgICAg
ICAgY3JpdGVyaWEucmVzdWx0c0xpbWl0IC09IFt3aWRnZXRDaGlsZHJlbiBjb3VudF07CiAgICAg
ICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoYmFja2luZ09iamVjdC0+aXNSZW1vdGVGcmFt
ZSgpCisgICAgICAgICAgICAmJiBjcml0ZXJpYS5zZWFyY2hLZXlzLmNvbnRhaW5zKEFjY2Vzc2li
aWxpdHlTZWFyY2hLZXk6OkFueVR5cGUpCisgICAgICAgICAgICAmJiAoIWNyaXRlcmlhLnZpc2li
bGVPbmx5IHx8IGJhY2tpbmdPYmplY3QtPmlzVmlzaWJsZSgpKSkgeworICAgICAgICAgICAgTlNB
cnJheSAqcmVtb3RlRnJhbWVDaGlsZHJlbiA9IFtzZWxmIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZV07CisgICAgICAgICAgICBBU1NF
UlQocmVtb3RlRnJhbWVDaGlsZHJlbi5jb3VudCA9PSAxKTsKKyAgICAgICAgICAgIGlmIChyZW1v
dGVGcmFtZUNoaWxkcmVuLmNvdW50ID09IDEpIHsKKyAgICAgICAgICAgICAgICBOU1VJbnRlZ2Vy
IGluY2x1ZGVkQ2hpbGRyZW5Db3VudCA9IHN0ZDo6bWluKFtyZW1vdGVGcmFtZUNoaWxkcmVuIGNv
dW50XSwgTlNVSW50ZWdlcihjcml0ZXJpYS5yZXN1bHRzTGltaXQpKTsKKyAgICAgICAgICAgICAg
ICB3aWRnZXRDaGlsZHJlbiA9IFtyZW1vdGVGcmFtZUNoaWxkcmVuIHN1YmFycmF5V2l0aFJhbmdl
Ok5TTWFrZVJhbmdlKDAsIGluY2x1ZGVkQ2hpbGRyZW5Db3VudCldOworICAgICAgICAgICAgICAg
IGlmIChbd2lkZ2V0Q2hpbGRyZW4gY291bnRdID49IGNyaXRlcmlhLnJlc3VsdHNMaW1pdCkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlbW90ZUZyYW1lQ2hpbGRyZW47CisgICAgICAgICAg
ICAgICAgY3JpdGVyaWEucmVzdWx0c0xpbWl0IC09IFt3aWRnZXRDaGlsZHJlbiBjb3VudF07Cisg
ICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgcmVzdWx0czsKQEAgLTM2NjksNiArMzcxMywxMSBA
QCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBpZiAoVU5MSUtFTFko
W2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6X0FYVGV4dE1hcmtlclJhbmdlRm9yTlNSYW5nZUF0
dHJpYnV0ZV0pKQogICAgICAgICByZXR1cm4gYmFja2luZ09iamVjdC0+dGV4dE1hcmtlclJhbmdl
Rm9yTlNSYW5nZShyYW5nZSkucGxhdGZvcm1EYXRhKCkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwog
CisgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOmtBWENvbnZlcnRSZWxhdGl2ZUZy
YW1lUGFyYW1ldGVyaXplZEF0dHJpYnV0ZV0pIHsKKyAgICAgICAgYXV0byogcGFyZW50ID0gYmFj
a2luZ09iamVjdC0+cGFyZW50T2JqZWN0KCk7CisgICAgICAgIHJldHVybiBwYXJlbnQgPyBbTlNW
YWx1ZSB2YWx1ZVdpdGhSZWN0OnBhcmVudC0+Y29udmVydEZyYW1lVG9TcGFjZShGbG9hdFJlY3Qo
cmVjdCksIEFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2U6OlBhZ2UpXSA6IG5pbDsKKyAgICB9
CisKICAgICAvLyBUaGVyZSBhcmUgc29tZSBwYXJhbWV0ZXJzIHRoYXQgc3VwZXIgaGFuZGxlcyB0
aGF0IGFyZSBub3QgZXhwbGljaXRseSByZXR1cm5lZCBieSB0aGUgbGlzdCBvZiB0aGUgZWxlbWVu
dCdzIGF0dHJpYnV0ZXMuCiAgICAgLy8gSW4gdGhhdCBjYXNlIGl0IG11c3QgYmUgcGFzc2VkIHRv
IHN1cGVyLgogICAgIHJldHVybiBbc3VwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOmF0
dHJpYnV0ZSBmb3JQYXJhbWV0ZXI6cGFyYW1ldGVyXTsKQEAgLTM3MjIsOCArMzc3MSwxMCBAQCBB
TExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgaWYgKCFjaGlsZCkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlciAqY2hpbGRXcmFwcGVyID0gY2hpbGQtPndyYXBwZXIoKTsKLSAgICAgICAgaWYgKGNoaWxk
V3JhcHBlciA9PSB0YXJnZXRDaGlsZCB8fCAoY2hpbGQtPmlzQXR0YWNobWVudCgpICYmIFtjaGls
ZFdyYXBwZXIgYXR0YWNobWVudFZpZXddID09IHRhcmdldENoaWxkKSkKKyAgICAgICAgaWYgKGNo
aWxkV3JhcHBlciA9PSB0YXJnZXRDaGlsZCB8fCAoY2hpbGQtPmlzQXR0YWNobWVudCgpICYmIFtj
aGlsZFdyYXBwZXIgYXR0YWNobWVudFZpZXddID09IHRhcmdldENoaWxkKQorICAgICAgICAgICAg
fHwgKGNoaWxkLT5pc1JlbW90ZUZyYW1lKCkgJiYgY2hpbGQtPnJlbW90ZUZyYW1lUGxhdGZvcm1F
bGVtZW50KCkgPT0gdGFyZ2V0Q2hpbGQpKSB7CiAgICAgICAgICAgICByZXR1cm4gaTsKKyAgICAg
ICAgfQogICAgIH0KICAgICByZXR1cm4gTlNOb3RGb3VuZDsKIH0KQEAgLTM3NDAsNyArMzc5MSw3
IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgaWYgKFthdHRyaWJ1
dGUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXSkgewog
ICAgICAgICAvLyBUcmVlIGl0ZW1zIG9iamVjdCByZXR1cm5zIGEgZGlmZmVyZW50IHNldCBvZiBj
aGlsZHJlbiB0aGFuIHRob3NlIHRoYXQgYXJlIGluIGNoaWxkcmVuKCkKICAgICAgICAgLy8gYmVj
YXVzZSBhbiBBWE91dGxpbmUgKHRoZSBtYWMgcm9sZSBpcyBiZWNvbWVzKSBoYXMgc29tZSBvZGQg
c3RpcHVsYXRpb25zLgotICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNUcmVlKCkgfHwgYmFj
a2luZ09iamVjdC0+aXNUcmVlSXRlbSgpKQorICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNU
cmVlKCkgfHwgYmFja2luZ09iamVjdC0+aXNUcmVlSXRlbSgpIHx8IGJhY2tpbmdPYmplY3QtPmlz
UmVtb3RlRnJhbWUoKSkKICAgICAgICAgICAgIHJldHVybiBbW3NlbGYgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXSBjb3VudF07CiAK
ICAgICAgICAgYXV0byBjaGlsZHJlblNpemUgPSBiYWNraW5nT2JqZWN0LT5jaGlsZHJlbigpLnNp
emUoKTsKQEAgLTM3NzYsMTYgKzM4MjcsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19FTkQKIAogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxp
dHlDaGlsZHJlbkF0dHJpYnV0ZV0pIHsKICAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmNoaWxk
cmVuKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBOU0FycmF5ICpjaGlsZHJlbiA9IG5pbDsK
LSNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKLSAgICAgICAgICAgIGlmIChiYWNraW5nT2JqZWN0
LT5pc01vZGVsKCkpIHsKLSAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IGNyZWF0ZU5TQXJyYXko
YmFja2luZ09iamVjdC0+bW9kZWxFbGVtZW50Q2hpbGRyZW4oKSwgW10gKGF1dG8mJiBjaGlsZCkg
LT4gaWQgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGQuZ2V0KCk7Ci0gICAgICAg
ICAgICAgICAgfSkuYXV0b3JlbGVhc2UoKTsKLSAgICAgICAgICAgIH0gZWxzZQotI2VuZGlmCi0g
ICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbc2VsZiByZW5kZXJXaWRnZXRDaGlsZHJlbl07Ci0g
ICAgICAgICAgICAKKyAgICAgICAgICAgIE5TQXJyYXkgKmNoaWxkcmVuID0gW3NlbGYgX3RyYW5z
Zm9ybVNwZWNpYWxDaGlsZHJlbkNhc2VzOmJhY2tpbmdPYmplY3RdOwogICAgICAgICAgICAgaWYg
KCFjaGlsZHJlbikKICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwogCkBAIC0zODE2LDggKzM4
NTgsMTMgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICAgICAgICAg
IC8vIFRoZSBhdHRhY2htZW50IHZpZXcgc2hvdWxkIGJlIHJldHVybmVkLCBvdGhlcndpc2UgQVgg
cGFsaW5kcm9tZSBlcnJvcnMgb2NjdXIuCiAgICAgICAgICAgICBpZCBhdHRhY2htZW50VmlldyA9
IG5pbDsKLSAgICAgICAgICAgIGlmIChbd3JhcHBlciBpc0tpbmRPZkNsYXNzOltXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlciBjbGFzc11dICYmIHdyYXBwZXIuYXhCYWNraW5nT2JqZWN0ICYm
IHdyYXBwZXIuYXhCYWNraW5nT2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkKLSAgICAgICAgICAgICAg
ICBhdHRhY2htZW50VmlldyA9IFt3cmFwcGVyIGF0dGFjaG1lbnRWaWV3XTsKKyAgICAgICAgICAg
IGlmIChbd3JhcHBlciBpc0tpbmRPZkNsYXNzOltXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ciBjbGFzc11dICYmIHdyYXBwZXIuYXhCYWNraW5nT2JqZWN0KSB7CisgICAgICAgICAgICAgICAg
aWYgKHdyYXBwZXIuYXhCYWNraW5nT2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkKKyAgICAgICAgICAg
ICAgICAgICAgYXR0YWNobWVudFZpZXcgPSBbd3JhcHBlciBhdHRhY2htZW50Vmlld107CisgICAg
ICAgICAgICAgICAgZWxzZSBpZiAod3JhcHBlci5heEJhY2tpbmdPYmplY3QtPmlzUmVtb3RlRnJh
bWUoKSkKKyAgICAgICAgICAgICAgICAgICAgYXR0YWNobWVudFZpZXcgPSB3cmFwcGVyLmF4QmFj
a2luZ09iamVjdC0+cmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKS5nZXQoKTsKKyAgICAgICAg
ICAgIH0KKwogICAgICAgICAgICAgW3N1YmFycmF5IGFkZE9iamVjdDphdHRhY2htZW50VmlldyA/
IGF0dGFjaG1lbnRWaWV3IDogd3JhcHBlcl07CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCAyNThjMTRiODZhOGIuLjU3MTdhZGUyYTQ1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTEwODUsNiArMTA4NSwxMSBA
QCBSZW1vdGVBWE9iamVjdFJlZiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjphY2Nlc3NpYmlsaXR5
UmVtb3RlT2JqZWN0KCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorSW50UG9pbnQgRW1wdHlG
cmFtZUxvYWRlckNsaWVudDo6YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCkKK3sKKyAg
ICByZXR1cm4geyB9OworfQorCiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJF
RSkKIHZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6c2V0QVhJc29sYXRlZFRyZWVSb290KFdl
YkNvcmU6OkFYQ29yZU9iamVjdCopCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
RnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAwOThjZTU4ZDExMTkuLjQ2NzJkZTI5ODUzMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0x
ODQsNiArMTg0LDcgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJlbW90
ZUFYT2JqZWN0UmVmIGFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSBmaW5hbDsKKyAgICBJbnRQ
b2ludCBhY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKSBmaW5hbDsKICNpZiBFTkFCTEUo
QUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQogICAgIHZvaWQgc2V0QVhJc29sYXRlZFRyZWVS
b290KFdlYkNvcmU6OkFYQ29yZU9iamVjdCopIGZpbmFsOwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9jYWxGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0xvY2FsRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBiMmQ1NmYwNTBhZTku
LjAwZDNhZDVlMmNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvY2FsRnJh
bWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9jYWxGcmFtZUxv
YWRlckNsaWVudC5oCkBAIC0yOTAsNiArMjkwLDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIC8vIEFsbG93IGFuIGFjY2Vzc2liaWxpdHkgb2JqZWN0IHRvIHJldHJpZXZlIGEg
RnJhbWUgcGFyZW50IGlmIHRoZXJlJ3Mgbm8gUGxhdGZvcm1XaWRnZXQuCiAgICAgdmlydHVhbCBS
ZW1vdGVBWE9iamVjdFJlZiBhY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkgPSAwOworICAgIHZp
cnR1YWwgSW50UG9pbnQgYWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCkgPSAwOwogI2lm
IEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAgICAgdmlydHVhbCB2b2lkIHNl
dEFYSXNvbGF0ZWRUcmVlUm9vdChBWENvcmVPYmplY3QqKSA9IDA7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCmluZGV4IDU5MzM1NWViZWNkOC4uMGIxZmMwYWMzOGMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKQEAgLTIyMDMsOCArMjIwMywxNSBAQCBib29sIFBhZ2U6OnNob3VsZFVwZGF0ZUFjY2Vzc2li
aWxpdHlSZWdpb25zKCkgY29uc3QKICAgICBBU1NFUlQobV9sYXN0UmVuZGVyaW5nVXBkYXRlVGlt
ZXN0YW1wID49IG1fbGFzdEFjY2Vzc2liaWxpdHlPYmplY3RSZWdpb25zVXBkYXRlKTsKICAgICBp
ZiAoKG1fbGFzdFJlbmRlcmluZ1VwZGF0ZVRpbWVzdGFtcCAtIG1fbGFzdEFjY2Vzc2liaWxpdHlP
YmplY3RSZWdpb25zVXBkYXRlKSA8IHVwZGF0ZUludGVydmFsKSB7CiAgICAgICAgIC8vIFdlJ3Zl
IGFscmVhZHkgdXBkYXRlZCBhY2Nlc3NpYmlsaXR5IG9iamVjdCByZWN0cyByZWNlbnRseSwgc28g
c2tpcCB0aGlzIHVwZGF0ZSBhbmQgc2NoZWR1bGUgYW5vdGhlciBmb3IgbGF0ZXIuCi0gICAgICAg
IGF1dG8qIGxvY2FsTWFpbkZyYW1lID0gZHluYW1pY0Rvd25jYXN0PExvY2FsRnJhbWU+KG1haW5G
cmFtZSgpKTsKLSAgICAgICAgUmVmUHRyIG1haW5Eb2N1bWVudCA9IGxvY2FsTWFpbkZyYW1lID8g
bG9jYWxNYWluRnJhbWUtPmRvY3VtZW50KCkgOiBudWxscHRyOworCisgICAgICAgIFJlZlB0cjxE
b2N1bWVudD4gbWFpbkRvY3VtZW50ID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKGF1dG8qIGxvY2Fs
TWFpbkZyYW1lID0gZHluYW1pY0Rvd25jYXN0PExvY2FsRnJhbWU+KG1haW5GcmFtZSgpKSkKKyAg
ICAgICAgICAgIG1haW5Eb2N1bWVudCA9IGxvY2FsTWFpbkZyYW1lID8gbG9jYWxNYWluRnJhbWUt
PmRvY3VtZW50KCkgOiBudWxscHRyOworICAgICAgICBlbHNlIGlmIChhdXRvKiByZW1vdGVGcmFt
ZSA9IGR5bmFtaWNEb3duY2FzdDxSZW1vdGVGcmFtZT4obWFpbkZyYW1lKCkpKSB7CisgICAgICAg
ICAgICBpZiAoYXV0byogb3duZXIgPSByZW1vdGVGcmFtZS0+b3duZXJFbGVtZW50KCkpCisgICAg
ICAgICAgICAgICAgbWFpbkRvY3VtZW50ID0gJihvd25lci0+ZG9jdW1lbnQoKSk7CisgICAgICAg
IH0KKwogICAgICAgICAvLyBJZiBhY2Nlc3NpYmlsaXR5IGlzIGVuYWJsZWQgYW5kIHdlIGhhdmUg
YSBtYWluIGRvY3VtZW50LCB0aGF0IGRvY3VtZW50IHNob3VsZCBoYXZlIGFuIEFYIG9iamVjdCBj
YWNoZS4KICAgICAgICAgQVNTRVJUKCFtYWluRG9jdW1lbnQgfHwgbWFpbkRvY3VtZW50LT5leGlz
dGluZ0FYT2JqZWN0Q2FjaGUoKSk7CiAgICAgICAgIGlmIChDaGVja2VkUHRyIHRvcEF4T2JqZWN0
Q2FjaGUgPSBtYWluRG9jdW1lbnQgPyBtYWluRG9jdW1lbnQtPmV4aXN0aW5nQVhPYmplY3RDYWNo
ZSgpIDogbnVsbHB0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJh
bWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5jcHAKaW5kZXggNzEyYzBi
MjIwZmQwLi41MGIwYTI1Y2ZkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVt
b3RlRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuY3BwCkBA
IC0xMDAsNiArMTAwLDIxIEBAIHZvaWQgUmVtb3RlRnJhbWU6OmJyb2FkY2FzdEZyYW1lUmVtb3Zh
bFRvT3RoZXJQcm9jZXNzZXMoKQogICAgIG1fY2xpZW50LT5icm9hZGNhc3RGcmFtZVJlbW92YWxU
b090aGVyUHJvY2Vzc2VzKCk7CiB9CiAKK3ZvaWQgUmVtb3RlRnJhbWU6OnVwZGF0ZVJlbW90ZUZy
YW1lQWNjZXNzaWJpbGl0eU9mZnNldChJbnRQb2ludCBvZmZzZXQpCit7CisgICAgbV9jbGllbnQt
PnVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChmcmFtZUlEKCksIG9mZnNldCk7
Cit9CisKK3ZvaWQgUmVtb3RlRnJhbWU6OnVuYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMo
aW50IHByb2Nlc3NJZGVudGlmaWVyKQoreworICAgIG1fY2xpZW50LT51bmJpbmRSZW1vdGVBY2Nl
c3NpYmlsaXR5RnJhbWVzKHByb2Nlc3NJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVGcmFt
ZTo6YmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBz
dGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YVRva2VuLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgaW50KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3sKKyAgICByZXR1cm4gbV9jbGllbnQtPmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVz
KHByb2Nlc3NJZGVudGlmaWVyLCBmcmFtZUlEKCksIGRhdGFUb2tlbiwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworfQorCiBGcmFtZVZpZXcqIFJlbW90ZUZyYW1lOjp2aXJ0dWFsVmlldygp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdmlldy5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJh
bWUuaAppbmRleCAyN2VkODQwZDA4MmUuLmNhNzJhZjhiYzk1ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVt
b3RlRnJhbWUuaApAQCAtMzMsNiArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIERhdGFTZWdtZW50OwogY2xhc3MgUmVtb3RlRE9NV2luZG93OwogY2xhc3MgUmVtb3RlRnJh
bWVDbGllbnQ7CiBjbGFzcyBSZW1vdGVGcmFtZVZpZXc7CkBAIC02Miw2ICs2Myw5IEBAIHB1Ymxp
YzoKICAgICBNYXJrYWJsZTxMYXllckhvc3RpbmdDb250ZXh0SWRlbnRpZmllcj4gbGF5ZXJIb3N0
aW5nQ29udGV4dElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2xheWVySG9zdGluZ0NvbnRl
eHRJZGVudGlmaWVyOyB9CiAKICAgICBTdHJpbmcgcmVuZGVyVHJlZUFzVGV4dChzaXplX3QgYmFz
ZUluZGVudCwgT3B0aW9uU2V0PFJlbmRlckFzVGV4dEZsYWc+KTsKKyAgICB2b2lkIGJpbmRSZW1v
dGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgc3RkOjpzcGFuPGNv
bnN0IHVpbnQ4X3Q+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6c3Bhbjxjb25zdCB1aW50
OF90PiwgaW50KT4mJik7CisgICAgdm9pZCB1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlP
ZmZzZXQoSW50UG9pbnQpOworICAgIHZvaWQgdW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1l
cyhpbnQpOwogCiBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFJlbW90ZUZy
YW1lKFBhZ2UmLCBVbmlxdWVSZWY8UmVtb3RlRnJhbWVDbGllbnQ+JiYsIEZyYW1lSWRlbnRpZmll
ciwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgRnJhbWUqIHBhcmVudCwgTWFya2FibGU8TGF5ZXJI
b3N0aW5nQ29udGV4dElkZW50aWZpZXI+LCBGcmFtZSogb3BlbmVyID0gbnVsbHB0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lQ2xpZW50LmgKaW5kZXggNGVmZDEwM2YzOTEyLi41NDFh
MGQwMWM1NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lQ2xpZW50LmgKQEAgLTMw
LDYgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBEYXRhU2VnbWVudDsK
IGNsYXNzIEZyYW1lTG9hZFJlcXVlc3Q7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgU2VjdXJpdHlP
cmlnaW5EYXRhOwpAQCAtNDgsNiArNDksOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcg
cmVuZGVyVHJlZUFzVGV4dChzaXplX3QgYmFzZUluZGVudCwgT3B0aW9uU2V0PFJlbmRlckFzVGV4
dEZsYWc+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGJyb2FkY2FzdEZyYW1lUmVtb3ZhbFRvT3Ro
ZXJQcm9jZXNzZXMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlUGFnZSgpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJ
ZGVudGlmaWVyLCBGcmFtZUlkZW50aWZpZXIgdGFyZ2V0LCBjb25zdCBzdGQ6OnNwYW48Y29uc3Qg
dWludDhfdD4gZGF0YVRva2VuLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6c3Bh
bjxjb25zdCB1aW50OF90PiwgaW50KT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVS
ZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQoRnJhbWVJZGVudGlmaWVyIHRhcmdldCwgSW50
UG9pbnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZy
YW1lcyhpbnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZm9jdXMoKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHVuZm9jdXMoKSA9IDA7CiAgICAgdmlydHVhbCB+UmVtb3RlRnJhbWVDbGllbnQoKSB7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCA4NGZjNDE5ZTU5Y2EuLjQy
ZWVlNjZhYjE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtNDIsNiAr
NDIsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0FjdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0VkaXRvckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9jdXNEaXJlY3Rpb24uaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SW5wdXRNb2RlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVJ
dGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxUeXBlcy5oPgpAQCAtMzE4LDcgKzMxOSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVVuZG9SZWRvKFVuZG9PclJlZG8p
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2hlZWxFdmVudFdhc05vdEhhbmRsZWRCeVdlYkNvcmUo
Y29uc3QgTmF0aXZlV2ViV2hlZWxFdmVudCYpID0gMDsKICNpZiBQTEFURk9STShDT0NPQSkKLSAg
ICB2aXJ0dWFsIHZvaWQgYWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKHN0ZDo6
c3Bhbjxjb25zdCB1aW50OF90PikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NpYmlsaXR5
V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIHBpZF90KSA9IDA7CiAgICAgdmlydHVhbCBib29sIGV4ZWN1dGVT
YXZlZENvbW1hbmRCeVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlU2VjdXJlSW5wdXRTdGF0ZSgpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgcmVzZXRTZWN1cmVJbnB1dFN0YXRlKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IDA1MDMwODYzOTFmYi4uM2UzYjgx
OTVkMDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBh
Z2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdl
UHJveHkuY3BwCkBAIC01NDUsNyArNTQ1LDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6
cmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdAogI2Vu
ZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLXZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OnJl
Z2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhf
dD4gZGF0YSkKK3ZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OnJlZ2lzdGVyV2ViUHJvY2Vzc0Fj
Y2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSwgRnJhbWVJZGVu
dGlmaWVyKQogewogICAgIG1fYWNjZXNzaWJpbGl0eVRva2VuID0gVmVjdG9yKGRhdGEpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKaW5kZXgg
ZGVlY2Q3NmEyMDI0Li5kMGI3ZWNjZWVmZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaApAQCAtMTcyLDcgKzE3Miw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCByZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNv
bnN0IFN0cmluZyYgZmlsZU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5n
Jik+JiYpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCByZWdpc3Rlcldl
YlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKKyAg
ICB2b2lkIHJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29u
c3QgdWludDhfdD4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAjZW5kaWYKICNpZiBQTEFU
Rk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKICAgICB2b2lkIGJpbmRBY2Nlc3NpYmlsaXR5VHJl
ZShjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkZyYW1lUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5j
cHAKaW5kZXggZjJmYzhhNTRkODgzLi4yMzAzMDdhMTc0ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiV2Vi
UGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJXZWJQYXN0ZWJvYXJkUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUu
aCIKICNpbmNsdWRlICJXZWJzaXRlUG9saWNpZXNEYXRhLmgiCkBAIC0xODQsNiArMTg1LDE0IEBA
IHZvaWQgV2ViRnJhbWVQcm94eTo6bmF2aWdhdGVTZXJ2aWNlV29ya2VyQ2xpZW50KFdlYkNvcmU6
OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJCiAgICAgfSk7CiB9CiAKK3ZvaWQgV2ViRnJhbWVQcm94
eTo6YmluZEFjY2Vzc2liaWxpdHlGcmFtZVdpdGhEYXRhKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90
PiBkYXRhKQoreworICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkJpbmRBY2Nlc3NpYmlsaXR5RnJhbWVXaXRo
RGF0YShtX2ZyYW1lSUQsIGRhdGEpKTsKK30KKwogdm9pZCBXZWJGcmFtZVByb3h5Ojpsb2FkVVJM
KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQogewogICAgIGlmICghbV9w
YWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oCmluZGV4IGIwZGFlYjBl
NjRmYy4uNzE1YmI4MGJhYjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJGcmFtZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94
eS5oCkBAIC0xNzAsNiArMTcwLDggQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3RlUHJvY2Vzc0Rp
ZFRlcm1pbmF0ZSgpOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
IHdlYlBhZ2VJREluQ3VycmVudFByb2Nlc3MoKTsKICAgICB2b2lkIG5vdGlmeVBhcmVudE9mTG9h
ZENvbXBsZXRpb24oV2ViUHJvY2Vzc1Byb3h5Jik7CisgICAgdm9pZCByZW1vdmVSZW1vdGVQYWdl
c0ZvclN1c3BlbnNpb24oKTsKKyAgICB2b2lkIGJpbmRBY2Nlc3NpYmlsaXR5RnJhbWVXaXRoRGF0
YShzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pOwogCiAgICAgYm9vbCBpc0ZvY3VzZWQoKSBjb25z
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYzBmZTEy
ZThiNzAzLi4wMTFjZmVjNjMwZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcApAQCAtMTI5NSw4ICsxMjk1LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpzd2FwVG9Q
cm92aXNpb25hbFBhZ2Uoc3RkOjp1bmlxdWVfcHRyPFByb3Zpc2lvbmFsUGFnZVByb3h5PiBwCiAK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICBhdXRvIGFjY2Vzc2liaWxpdHlUb2tlbiA9IHByb3Zp
c2lvbmFsUGFnZS0+dGFrZUFjY2Vzc2liaWxpdHlUb2tlbigpOwotICAgIGlmICghYWNjZXNzaWJp
bGl0eVRva2VuLmlzRW1wdHkoKSkKLSAgICAgICAgcmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJp
bGl0eVRva2VuKHsgYWNjZXNzaWJpbGl0eVRva2VuLmRhdGEoKSwgYWNjZXNzaWJpbGl0eVRva2Vu
LnNpemUoKSB9KTsKKyAgICBpZiAoIWFjY2Vzc2liaWxpdHlUb2tlbi5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgcmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHsgYWNjZXNzaWJpbGl0
eVRva2VuLmRhdGEoKSwgYWNjZXNzaWJpbGl0eVRva2VuLnNpemUoKSB9LCBXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIgeworICAgICAgICAgICAgT2JqZWN0SWRlbnRpZmllcjxXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXJUeXBlPigwKSwKKyAgICAgICAgICAgIE9iamVjdElkZW50aWZpZXI8V2ViQ29y
ZTo6UHJvY2Vzc0lkZW50aWZpZXJUeXBlPigwKQorICAgICAgICB9KTsKKyAgICB9CiAjZW5kaWYK
ICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKICAgICBhdXRvIGFjY2Vzc2liaWxp
dHlQbHVnSUQgPSBwcm92aXNpb25hbFBhZ2UtPmFjY2Vzc2liaWxpdHlQbHVnSUQoKTsKQEAgLTEz
NzQ0LDYgKzEzNzQ4LDIyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjphZGRDb25zb2xlTWVzc2FnZShG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgTWVzc2FnZVNvdXJjZSBtZXNzCiAgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBmcmFtZUlELCBtZXNzYWdlU291cmNl
LCBtZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIGNvcmVJZGVudGlmaWVyIH0pOwogfQogCit2b2lkIFdl
YlBhZ2VQcm94eTo6YmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVu
dGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3Qgc3RkOjpzcGFu
PGNvbnN0IHVpbnQ4X3Q+IGRhdGFUb2tlbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6OnNw
YW48Y29uc3QgdWludDhfdD4sIGludCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0
byBzZW5kUmVzdWx0ID0gc2VuZFN5bmNUb1Byb2Nlc3NDb250YWluaW5nRnJhbWUoZnJhbWVJRCwg
TWVzc2FnZXM6OldlYlBhZ2U6OkJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKHByb2Nlc3NJ
ZGVudGlmaWVyLCBmcmFtZUlELCBkYXRhVG9rZW4pKTsKKyAgICBpZiAoIXNlbmRSZXN1bHQuc3Vj
Y2VlZGVkKCkpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0sIDApOworCisg
ICAgYXV0byBbZnJhbWVEYXRhVG9rZW4sIGZyYW1lUHJvY2Vzc0lkZW50aWZpZXJdID0gc2VuZFJl
c3VsdC50YWtlUmVwbHkoKTsKKworICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lRGF0YVRva2Vu
LCBmcmFtZVByb2Nlc3NJZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0
ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgV2ViQ29yZTo6SW50UG9pbnQgb2Zmc2V0KQoreworICAgIHNlbmRUb1Byb2Nlc3ND
b250YWluaW5nRnJhbWUoZnJhbWVJRCwgTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZVJlbW90ZVBh
Z2VBY2Nlc3NpYmlsaXR5T2Zmc2V0KGZyYW1lSUQsIG9mZnNldCkpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAogI3VuZGVmIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA1YjdjZjU0ZWQxNDEuLjY2MDhkYzNjY2M0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTEzNTQsNyArMTM1
NCw3IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIC8vIENhbGxlZCBieSB0
aGUgd2ViIHByb2Nlc3MgdGhyb3VnaCBhIG1lc3NhZ2UuCi0gICAgdm9pZCByZWdpc3RlcldlYlBy
b2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKKyAgICB2
b2lkIHJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3Qg
dWludDhfdD4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAgICAgLy8gQ2FsbGVkIGJ5IHRo
ZSBVSSBwcm9jZXNzIHdoZW4gaXQgaXMgcmVhZHkgdG8gc2VuZCBpdHMgdG9rZW5zIHRvIHRoZSB3
ZWIgcHJvY2Vzcy4KICAgICB2b2lkIHJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vu
cyhzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZWxlbWVudFRva2VuLCBzdGQ6OnNwYW48Y29uc3Qg
dWludDhfdD4gd2luZG93VG9rZW4pOwogICAgIHZvaWQgcmVwbGFjZVNlbGVjdGlvbldpdGhQYXN0
ZWJvYXJkRGF0YShjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIHN0ZDo6c3Bhbjxjb25zdCB1
aW50OF90Pik7CkBAIC0yOTc3LDYgKzI5NzcsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZm9jdXNS
ZW1vdGVGcmFtZShJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwog
ICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1JlbW90ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgc291
cmNlLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IHRhcmdldCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IHRhcmdl
dE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmKTsKICAgICB2
b2lkIHJlbmRlclRyZWVBc1RleHQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBzaXplX3QgYmFz
ZUluZGVudCwgT3B0aW9uU2V0PFdlYkNvcmU6OlJlbmRlckFzVGV4dEZsYWc+LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJik7CisgICAgdm9pZCBiaW5kUmVtb3RlQWNjZXNzaWJp
bGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGFUb2tlbiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIGludCk+JiYpOworICAgIHZvaWQgdXBkYXRl
UmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
V2ViQ29yZTo6SW50UG9pbnQpOwogCiAgICAgdm9pZCBzZXRUZXh0SW5kaWNhdG9yRnJvbUZyYW1l
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGEmJiwg
dWludDY0X3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW4KaW5kZXggMzExNTViMzI5MTQ2Li43MmIzZjcyNGQ1OTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTMyNCw3
ICszMjQsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIEV4ZWN1dGVTYXZlZENv
bW1hbmRCeVNlbGVjdG9yKFN0cmluZyBzZWxlY3RvcikgLT4gKGJvb2wgaGFuZGxlZCkgU3luY2hy
b25vdXMKIAogICAgICMgUmVtb3RlIGFjY2Vzc2liaWxpdHkgbWVzc2FnZXMKLSAgICBSZWdpc3Rl
cldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRh
dGEpCisgICAgUmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxj
b25zdCB1aW50OF90PiBkYXRhLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKIAog
ICAgICMgU3BlZWNoIG1lc3NhZ2VzCiAgICAgR2V0SXNTcGVha2luZygpIC0+IChib29sIGlzU3Bl
YWtpbmcpIFN5bmNocm9ub3VzCkBAIC02MzAsNCArNjMwLDYgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZVByb3h5IHsKICAgICBGb2N1c1JlbW90ZUZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBm
cmFtZUlEKQogICAgIFBvc3RNZXNzYWdlVG9SZW1vdGUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IHNvdXJjZSwgU3RyaW5nIHNvdXJjZU9yaWdpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHRh
cmdldCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IHRhcmdldE9y
aWdpbiwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2UpCiAg
ICAgUmVuZGVyVHJlZUFzVGV4dChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgaWRlbnRpZmllciwg
c2l6ZV90IGJhc2VJbmRlbnQsIE9wdGlvblNldDxXZWJDb3JlOjpSZW5kZXJBc1RleHRGbGFnPiBi
ZWhhdmlvcikgLT4gKFN0cmluZyByZW5kZXJUcmVlRHVtcCkgU3luY2hyb25vdXMKKyAgICBCaW5k
UmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YVRv
a2VuKSAtPiAoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHRva2VuLCBpbnQgcHJvY2Vzc0lkZW50
aWZpZXIpIFN5bmNocm9ub3VzCisgICAgVXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zm
c2V0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpJbnRQb2ludCBv
ZmZzZXQpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5oCmluZGV4IDEwYzRmNmFlMTI1MC4uNjM4OGNiNDY3MmM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaApAQCAtMTEwLDcgKzExMCw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhckFsbEVkaXRDb21tYW5kcygpIG92ZXJyaWRlOwog
ICAgIGJvb2wgY2FuVW5kb1JlZG8oVW5kb09yUmVkbykgb3ZlcnJpZGU7CiAgICAgdm9pZCBleGVj
dXRlVW5kb1JlZG8oVW5kb09yUmVkbykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhY2Nlc3NpYmlsaXR5
V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KSBvdmVycmlk
ZTsKKyAgICB2b2lkIGFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChzdGQ6OnNw
YW48Y29uc3QgdWludDhfdD4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgcGlkX3QpIG92ZXJy
aWRlOwogICAgIGJvb2wgZXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2VsZWN0b3IoY29uc3QgU3RyaW5n
JiBzZWxlY3Rvcikgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVTZWN1cmVJbnB1dFN0YXRlKCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCByZXNldFNlY3VyZUlucHV0U3RhdGUoKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRl
eCBjYjIzZjQ5NzRhNmIuLmI1YWRkZGNlMjNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtMzg5LDcgKzM4OSw3IEBAIHZvaWQg
UGFnZUNsaWVudEltcGw6OmV4ZWN1dGVVbmRvUmVkbyhVbmRvT3JSZWRvIHVuZG9PclJlZG8pCiAg
ICAgcmV0dXJuICh1bmRvT3JSZWRvID09IFVuZG9PclJlZG86OlVuZG8pID8gW1tjb250ZW50Vmll
dygpIHVuZG9NYW5hZ2VyXSB1bmRvXSA6IFtbY29udGVudFZpZXcoKSB1bmRvTWFuYWdlcl0gcmVk
b107CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OmFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9r
ZW5SZWNlaXZlZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSkKK3ZvaWQgUGFnZUNsaWVu
dEltcGw6OmFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChzdGQ6OnNwYW48Y29u
c3QgdWludDhfdD4gZGF0YSwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBwaWRfdCkKIHsKICAg
ICBOU0RhdGEgKnJlbW90ZVRva2VuID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEuZGF0YSgp
IGxlbmd0aDpkYXRhLnNpemUoKV07CiAgICAgW2NvbnRlbnRWaWV3KCkgX3NldEFjY2Vzc2liaWxp
dHlXZWJQcm9jZXNzVG9rZW46cmVtb3RlVG9rZW5dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggOTY0ZjMwNTkyYWE4Li45NWNjZDA1OTJi
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5t
bQpAQCAtNzYzLDkgKzc2Myw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTbWFydEluc2VydERl
bGV0ZUVuYWJsZWQoYm9vbCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdlYlBh
Z2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxj
b25zdCB1aW50OF90PiBkYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyV2ViUHJvY2Vz
c0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSwgRnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQpCiB7Ci0gICAgcHJvdGVjdGVkUGFnZUNsaWVudCgpLT5hY2Nlc3Np
YmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoZGF0YSk7CisgICAgcGFnZUNsaWVudCgpLmFj
Y2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChkYXRhLCBmcmFtZUlEKTsKIH0gICAg
CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJ
bXBsTWFjLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMu
aAppbmRleCBmYjZjNjA3ODY3YWYuLmJmOGRhNDMwZDhhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKQEAgLTE3Niw3ICsxNzYsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgZ2VzdHVyZUV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShjb25z
dCBOYXRpdmVXZWJHZXN0dXJlRXZlbnQmKSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgdm9pZCBh
Y2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4
X3Q+KSBvdmVycmlkZTsKKyAgICB2b2lkIGFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNl
aXZlZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
cGlkX3QpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBtYWtlRmlyc3RSZXNwb25kZXIoKSBvdmVycmlk
ZTsKICAgICB2b2lkIGFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1h
Yy5tbQppbmRleCAwNzgwZjE4ZGExYzIuLjAxNTBlYzQ1MTJjYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQpAQCAtNTgxLDkgKzU4MSw5
IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnNldFRleHRJbmRpY2F0b3JBbmltYXRpb25Qcm9ncmVz
cyhmbG9hdCBwcm9ncmVzcykKICAgICBtX2ltcGwtPnNldFRleHRJbmRpY2F0b3JBbmltYXRpb25Q
cm9ncmVzcyhwcm9ncmVzcyk7CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OmFjY2Vzc2liaWxp
dHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSkK
K3ZvaWQgUGFnZUNsaWVudEltcGw6OmFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZl
ZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIHBpZF90IHBpZCkKIHsKLSAgICBtX2ltcGwtPnNldEFjY2Vzc2liaWxpdHlXZWJQ
cm9jZXNzVG9rZW4oW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEuZGF0YSgpIGxlbmd0aDpkYXRh
LnNpemUoKV0pOworICAgIG1faW1wbC0+c2V0QWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlbihb
TlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5kYXRhKCkgbGVuZ3RoOmRhdGEuc2l6ZSgpXSwgZnJh
bWVJRCwgcGlkKTsKIH0KICAgICAKIHZvaWQgUGFnZUNsaWVudEltcGw6OmVudGVyQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgbGF5ZXJUcmVlQ29udGV4
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlN
YWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmlu
ZGV4IGNmYjEwZmRiYjQxMy4uODY5NjE3YTI5ZDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTMwNiwxMiArMzA2LDEyIEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChjb25zdCBEaWN0aW9uYXJ5
UG9wdXBJbmZvJiBkaWN0aW9uCiAgICAgcHJvdGVjdGVkUGFnZUNsaWVudCgpLT5kaWRQZXJmb3Jt
RGljdGlvbmFyeUxvb2t1cChkaWN0aW9uYXJ5UG9wdXBJbmZvKTsKIH0KIAotdm9pZCBXZWJQYWdl
UHJveHk6OnJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29u
c3QgdWludDhfdD4gZGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWdpc3RlcldlYlByb2Nlc3NB
Y2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEsIEZyYW1lSWRl
bnRpZmllciBmcmFtZUlEKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIAotICAgIHByb3RlY3RlZFBhZ2VDbGllbnQoKS0+YWNjZXNzaWJpbGl0
eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKGRhdGEpOworICAgIHByb3RlY3RlZFBhZ2VDbGllbnQo
KS0+YWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKGRhdGEsIGZyYW1lSUQsIG1l
c3NhZ2VTZW5kZXJDb25uZWN0aW9uKCktPnJlbW90ZVByb2Nlc3NJRCgpKTsKIH0gICAgCiAKIHZv
aWQgV2ViUGFnZVByb3h5OjptYWtlRmlyc3RSZXNwb25kZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvV2ViVmlld0ltcGwuaAppbmRleCAwM2RmZGFlZTE1M2MuLjVhMmUxMjlmZGM4YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJbXBsLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJbXBsLmgKQEAgLTQ0OCw3ICs0
NDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJZ25vcmVzTW91c2VEcmFnZ2VkRXZlbnRzKGJv
b2wpOwogICAgIGJvb2wgaWdub3Jlc01vdXNlRHJhZ2dlZEV2ZW50cygpIGNvbnN0IHsgcmV0dXJu
IG1faWdub3Jlc01vdXNlRHJhZ2dlZEV2ZW50czsgfQogCi0gICAgdm9pZCBzZXRBY2Nlc3NpYmls
aXR5V2ViUHJvY2Vzc1Rva2VuKE5TRGF0YSAqKTsKKyAgICB2b2lkIHNldEFjY2Vzc2liaWxpdHlX
ZWJQcm9jZXNzVG9rZW4oTlNEYXRhICosIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgcGlkX3Qp
OwogICAgIHZvaWQgYWNjZXNzaWJpbGl0eVJlZ2lzdGVyVUlQcm9jZXNzVG9rZW5zKCk7CiAgICAg
dm9pZCB1cGRhdGVSZW1vdGVBY2Nlc3NpYmlsaXR5UmVnaXN0cmF0aW9uKGJvb2wgcmVnaXN0ZXJQ
cm9jZXNzKTsKICAgICBpZCBhY2Nlc3NpYmlsaXR5Rm9jdXNlZFVJRWxlbWVudCgpOwpAQCAtOTI3
LDYgKzkyNyw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIGJvb2wg
bV9hbGxvd3NNYWduaWZpY2F0aW9uIHsgZmFsc2UgfTsKIAogICAgIFJldGFpblB0cjxOU0FjY2Vz
c2liaWxpdHlSZW1vdGVVSUVsZW1lbnQ+IG1fcmVtb3RlQWNjZXNzaWJpbGl0eUNoaWxkOworICAg
IFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBtX3JlbW90ZUFjY2Vzc2liaWxpdHlGcmFt
ZUNhY2hlOwogCiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlPiBtX3Byb21pc2VkSW1hZ2U7CiAg
ICAgU3RyaW5nIG1fcHJvbWlzZWRGaWxlbmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XZWJWaWV3SW1wbC5tbQppbmRleCA1YmRlMTExNjI3OTAuLmE0YjMwN2Q3NmU3MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJbXBsLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3SW1wbC5tbQpAQCAtMzQ4MSwxMCArMzQ4
MSwxMiBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRJZ25vcmVzTW91c2VEcmFnZ2VkRXZlbnRzKGJv
b2wgaWdub3Jlc01vdXNlRHJhZ2dlZEV2ZW50cykKICAgICBtX2lnbm9yZXNNb3VzZURyYWdnZWRF
dmVudHMgPSBpZ25vcmVzTW91c2VEcmFnZ2VkRXZlbnRzOwogfQogCi12b2lkIFdlYlZpZXdJbXBs
OjpzZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuKE5TRGF0YSAqZGF0YSkKK3ZvaWQgV2Vi
Vmlld0ltcGw6OnNldEFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW4oTlNEYXRhICpkYXRhLCBX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgcGlkX3QgcGlkKQogewotICAgIG1fcmVt
b3RlQWNjZXNzaWJpbGl0eUNoaWxkID0gZGF0YS5sZW5ndGggPyBhZG9wdE5TKFtbTlNBY2Nlc3Np
YmlsaXR5UmVtb3RlVUlFbGVtZW50IGFsbG9jXSBpbml0V2l0aFJlbW90ZVRva2VuOmRhdGFdKSA6
IG5pbDsKLSAgICB1cGRhdGVSZW1vdGVBY2Nlc3NpYmlsaXR5UmVnaXN0cmF0aW9uKHRydWUpOwor
ICAgIGlmIChwaWQgPT0gbV9wYWdlLT5wcm9jZXNzKCkucHJvY2Vzc0lEKCkpIHsKKyAgICAgICAg
bV9yZW1vdGVBY2Nlc3NpYmlsaXR5Q2hpbGQgPSBkYXRhLmxlbmd0aCA/IGFkb3B0TlMoW1tOU0Fj
Y2Vzc2liaWxpdHlSZW1vdGVVSUVsZW1lbnQgYWxsb2NdIGluaXRXaXRoUmVtb3RlVG9rZW46ZGF0
YV0pIDogbmlsOworICAgICAgICB1cGRhdGVSZW1vdGVBY2Nlc3NpYmlsaXR5UmVnaXN0cmF0aW9u
KHRydWUpOworICAgIH0KIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6dXBkYXRlUmVtb3RlQWNjZXNz
aWJpbGl0eVJlZ2lzdHJhdGlvbihib29sIHJlZ2lzdGVyUHJvY2VzcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJMb2NhbEZyYW1lTG9hZGVy
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJM
b2NhbEZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA3ZDJhNDI2NWZkNWMuLmYzZjczZjM2N2Vh
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTgwNyw2
ICsxODA3LDEyIEBAIHZvaWQgV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxs
RGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVuCiAKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICAKK1dlYkNvcmU6OkludFBvaW50IFdlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQ6OmFj
Y2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCgpCit7CisgICAgUmVmUHRyIHdlYlBhZ2UgPSBt
X2ZyYW1lLT5wYWdlKCk7CisgICAgcmV0dXJuIHdlYlBhZ2UgPyB3ZWJQYWdlLT5hY2Nlc3NpYmls
aXR5UmVtb3RlRnJhbWVPZmZzZXQoKSA6IEludFBvaW50KCk7Cit9CisKIFJlbW90ZUFYT2JqZWN0
UmVmIFdlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQ6OmFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3Qo
KQogewogICAgIFJlZlB0ciB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkxvY2FsRnJhbWVMb2Fk
ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJM
b2NhbEZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggODhjOGNjNWNiNzJlLi45ZjNiNjdmMGZjYjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJM
b2NhbEZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMjQwLDYgKzI0MCw3
IEBAIHByaXZhdGU6CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZW1vdGVBWE9iamVjdFJl
ZiBhY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkgZmluYWw7CisgICAgV2ViQ29yZTo6SW50UG9p
bnQgYWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCkgZmluYWw7CiAjaWYgRU5BQkxFKEFD
Q0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKICAgICB2b2lkIHNldEFYSXNvbGF0ZWRUcmVlUm9v
dChXZWJDb3JlOjpBWENvcmVPYmplY3QqKSBmaW5hbDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90ZUZyYW1lQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVG
cmFtZUNsaWVudC5jcHAKaW5kZXggOGNiZmYyYzliOGM5Li5hMmYwOTQ4ZDQzMTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFt
ZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlJlbW90ZUZyYW1lQ2xpZW50LmNwcApAQCAtOTYsNiArOTYsMzggQEAgU3RyaW5nIFdlYlJl
bW90ZUZyYW1lQ2xpZW50OjpyZW5kZXJUcmVlQXNUZXh0KHNpemVfdCBiYXNlSW5kZW50LCBPcHRp
b25TZXQ8UmVuZGUKICAgICByZXR1cm4gcmVzdWx0OwogfQogCit2b2lkIFdlYlJlbW90ZUZyYW1l
Q2xpZW50Ojp1bmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRp
ZmllcikKK3sKKyAgICAvLyBNYWtlIHN1cmUgQXBwS2l0IHN5c3RlbSBrbm93cyBhYm91dCBvdXIg
cmVtb3RlIFVJIHByb2Nlc3Mgc3RhdHVzIG5vdy4KKyAgICBpZiAoUmVmUHRyIHBhZ2UgPSBtX2Zy
YW1lLT5wYWdlKCkpCisgICAgICAgIHBhZ2UtPmFjY2Vzc2liaWxpdHlNYW5hZ2VSZW1vdGVFbGVt
ZW50U3RhdHVzKGZhbHNlLCBwcm9jZXNzSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViUmVtb3Rl
RnJhbWVDbGllbnQ6OnVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6SW50UG9pbnQgb2Zmc2V0KQorewor
ICAgIGlmIChSZWZQdHIgcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgcGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpVcGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlP
ZmZzZXQoZnJhbWVJRCwgb2Zmc2V0KSk7Cit9CisKK3ZvaWQgV2ViUmVtb3RlRnJhbWVDbGllbnQ6
OmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IHN0ZDo6c3Bhbjxjb25zdCB1aW50
OF90PiBkYXRhVG9rZW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpzcGFuPGNvbnN0IHVp
bnQ4X3Q+LCBpbnQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFJlZlB0ciBwYWdlID0g
bV9mcmFtZS0+cGFnZSgpOworICAgIGlmICghcGFnZSkgeworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4geyB9LCAwKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHBhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKHByb2Nlc3NJZGVudGlm
aWVyLCBmcmFtZUlELCBkYXRhVG9rZW4pKTsKKyAgICBpZiAoIXNlbmRSZXN1bHQuc3VjY2VlZGVk
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gW3Jlc3VsdFRva2VuLCBwcm9jZXNzSWRl
bnRpZmllclJlc3VsdF0gPSBzZW5kUmVzdWx0LnRha2VSZXBseSgpOworCisgICAgLy8gTWFrZSBz
dXJlIEFwcEtpdCBzeXN0ZW0ga25vd3MgYWJvdXQgb3VyIHJlbW90ZSBVSSBwcm9jZXNzIHN0YXR1
cyBub3cuCisgICAgcGFnZS0+YWNjZXNzaWJpbGl0eU1hbmFnZVJlbW90ZUVsZW1lbnRTdGF0dXMo
dHJ1ZSwgcHJvY2Vzc0lkZW50aWZpZXJSZXN1bHQpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHJl
c3VsdFRva2VuLCBwcm9jZXNzSWRlbnRpZmllclJlc3VsdCk7Cit9CisKIHZvaWQgV2ViUmVtb3Rl
RnJhbWVDbGllbnQ6OmJyb2FkY2FzdEZyYW1lUmVtb3ZhbFRvT3RoZXJQcm9jZXNzZXMoKQogewog
ICAgIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpicm9hZGNhc3RGcmFtZVJlbW92YWxUb090aGVyUHJv
Y2Vzc2VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVudC5oCmluZGV4IDYyNmUwNWMzZTg4Yi4u
Yzg4OWViN2U1ZmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuaApAQCAtNDgsNiArNDgs
MTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBvc3RNZXNzYWdlVG9SZW1vdGUoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciB0YXJnZXQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhPiB0YXJnZXRPcmlnaW4sIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2Fn
ZVBvcnRzJikgZmluYWw7CiAgICAgdm9pZCBjaGFuZ2VMb2NhdGlvbihXZWJDb3JlOjpGcmFtZUxv
YWRSZXF1ZXN0JiYpIGZpbmFsOwogICAgIFN0cmluZyByZW5kZXJUcmVlQXNUZXh0KHNpemVfdCBi
YXNlSW5kZW50LCBPcHRpb25TZXQ8V2ViQ29yZTo6UmVuZGVyQXNUZXh0RmxhZz4pIGZpbmFsOwor
ICAgIHZvaWQgYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlm
aWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Piwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIGludCk+JiYp
IGZpbmFsOworICAgIHZvaWQgdW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQpIGZp
bmFsOworICAgIHZvaWQgdXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6SW50UG9pbnQpIGZpbmFsOworCiAgICAgdm9p
ZCBicm9hZGNhc3RGcmFtZVJlbW92YWxUb090aGVyUHJvY2Vzc2VzKCkgZmluYWw7CiAgICAgdm9p
ZCBjbG9zZVBhZ2UoKSBmaW5hbDsKICAgICB2b2lkIGZvY3VzKCkgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0K
aW5kZXggYWU0M2YxYTQ2OThiLi5lZmY2NGEzMDFmNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KQEAgLTc3LDYg
Kzc3LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvVVRJUmVnaXN0cnkuaD4KICNpbXBvcnQgPFdlYkNv
cmUvVVRJVXRpbGl0aWVzLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2Vz
U1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TQWNjZXNzaWJpbGl0eVNQSS5oPgogI2lt
cG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rh
cndpbi9TYW5kYm94U1BJLmg+CiAKQEAgLTQwNCwxMCArNDA1LDQ2IEBAIHZvaWQgV2ViUGFnZTo6
Y2xlYXJEaWN0YXRpb25BbHRlcm5hdGl2ZXMoVmVjdG9yPERpY3RhdGlvbkNvbnRleHQ+JiYgY29u
dGV4dHMpCiAgICAgfSwgRG9jdW1lbnRNYXJrZXI6OlR5cGU6OkRpY3RhdGlvbkFsdGVybmF0aXZl
cyk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6YWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4o
UmV0YWluUHRyPE5TRGF0YT4gcmVtb3RlVG9rZW4pCit2b2lkIFdlYlBhZ2U6OmFjY2Vzc2liaWxp
dHlUcmFuc2ZlclJlbW90ZVRva2VuKFJldGFpblB0cjxOU0RhdGE+IHJlbW90ZVRva2VuLCBGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCkKIHsKICAgICBzdGQ6OnNwYW4gZGF0YVRva2VuKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtyZW1vdGVUb2tlbiBieXRlc10pLCBbcmVtb3RlVG9r
ZW4gbGVuZ3RoXSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWdpc3Rlcldl
YlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oZGF0YVRva2VuKSk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpSZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oZGF0
YVRva2VuLCBmcmFtZUlEKSk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6YWNjZXNzaWJpbGl0eU1hbmFn
ZVJlbW90ZUVsZW1lbnRTdGF0dXMoYm9vbCByZWdpc3RlclN0YXR1cywgaW50IHByb2Nlc3NJZGVu
dGlmaWVyKQoreworICAgIGlmIChyZWdpc3RlclN0YXR1cykKKyAgICAgICAgW05TQWNjZXNzaWJp
bGl0eVJlbW90ZVVJRWxlbWVudCByZWdpc3RlclJlbW90ZVVJUHJvY2Vzc0lkZW50aWZpZXI6cHJv
Y2Vzc0lkZW50aWZpZXJdOworICAgIGVsc2UKKyAgICAgICAgW05TQWNjZXNzaWJpbGl0eVJlbW90
ZVVJRWxlbWVudCB1bnJlZ2lzdGVyUmVtb3RlVUlQcm9jZXNzSWRlbnRpZmllcjpwcm9jZXNzSWRl
bnRpZmllcl07Cit9CisKK3ZvaWQgV2ViUGFnZTo6YmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFt
ZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGFUb2tlbiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIGludCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgUmVmUHRyIHdlYkZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJh
bWUoZnJhbWVJRCk7CisgICAgaWYgKCF3ZWJGcmFtZSkgeworICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgMCk7CisgICAg
fQorCisgICAgUmVmUHRyIGNvcmVMb2NhbEZyYW1lID0gd2ViRnJhbWUtPmNvcmVMb2NhbEZyYW1l
KCk7CisgICAgaWYgKCFjb3JlTG9jYWxGcmFtZSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgMCk7CisgICAgfQor
CisgICAgYXV0byogcmVuZGVyZXIgPSBjb3JlTG9jYWxGcmFtZS0+Y29udGVudFJlbmRlcmVyKCk7
CisgICAgaWYgKCFyZW5kZXJlcikgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgMCk7CisgICAgfQorCisgICAgcmVn
aXN0ZXJSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlUb2tlbnMocHJvY2Vzc0lkZW50aWZpZXIsIGRh
dGFUb2tlbik7CisKKyAgICAvLyBHZXQgb3VyIHJlbW90ZSB0b2tlbiBkYXRhIGFuZCBzZW5kIGJh
Y2sgdG8gdGhlIFJlbW90ZUZyYW1lLgorICAgIGF1dG8gcmVtb3RlVG9rZW4gPSBhY2Nlc3NpYmls
aXR5UmVtb3RlVG9rZW5EYXRhKCk7CisgICAgc3RkOjpzcGFuIHJlbW90ZURhdGFUb2tlbihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihbcmVtb3RlVG9rZW4gYnl0ZXNdKSwgW3JlbW90
ZVRva2VuIGxlbmd0aF0pOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlbW90ZURhdGFUb2tlbiwg
Z2V0cGlkKCkpOwogfQogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBjMDVkZGNkZTdmYWEuLjE0ZDgyMjFiNDJi
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNjcx
LDYgKzY3MSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhckhpc3RvcnkoKTsKIAogICAgIHZv
aWQgYWNjZXNzaWJpbGl0eVNldHRpbmdzRGlkQ2hhbmdlKCk7CisjaWYgUExBVEZPUk0oQ09DT0Ep
CisgICAgdm9pZCBhY2Nlc3NpYmlsaXR5TWFuYWdlUmVtb3RlRWxlbWVudFN0YXR1cyhib29sLCBp
bnQpOworI2VuZGlmCisKICAgICB2b2lkIHNjcmVlblByb3BlcnRpZXNEaWRDaGFuZ2UoKTsKIAog
ICAgIHZvaWQgc2NhbGVQYWdlKGRvdWJsZSBzY2FsZSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IG9yaWdpbik7CkBAIC0xMDQzLDcgKzEwNDcsMTEgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplQWNjZXNzaWJpbGl0eSgpOwogICAgIHZv
aWQgcmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKHN0ZDo6c3Bhbjxjb25zdCB1
aW50OF90PiBlbGVtZW50VG9rZW4sIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiB3aW5kb3dUb2tl
bik7CisgICAgdm9pZCByZWdpc3RlclJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eVRva2VucyhwaWRf
dCwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKICAgICBXS0FjY2Vzc2liaWxpdHlXZWJQYWdl
T2JqZWN0KiBhY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCk7CisgICAgV2ViQ29yZTo6SW50UG9p
bnQgYWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCk7CisgICAgdm9pZCBjcmVhdGVNb2Nr
QWNjZXNzaWJpbGl0eUVsZW1lbnQocGlkX3QpOworICAgIHZvaWQgdXBkYXRlUmVtb3RlUGFnZUFj
Y2Vzc2liaWxpdHlPZmZzZXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpJbnRQ
b2ludCk7CiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKICAgICB2b2lk
IGNhY2hlQVhQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAgICAgdm9pZCBj
YWNoZUFYU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CkBAIC0yMDk0LDcgKzIxMDIsNyBA
QCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgcmVxdWVzdEFjdGl2ZU5v
d1BsYXlpbmdTZXNzaW9uSW5mbyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wsIFdlYkNvcmU6
Ok5vd1BsYXlpbmdJbmZvJiYpPiYmKTsKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhY2Nlc3NpYmls
aXR5UmVtb3RlVG9rZW5EYXRhKCkgY29uc3Q7Ci0gICAgdm9pZCBhY2Nlc3NpYmlsaXR5VHJhbnNm
ZXJSZW1vdGVUb2tlbihSZXRhaW5QdHI8TlNEYXRhPik7CisgICAgdm9pZCBhY2Nlc3NpYmlsaXR5
VHJhbnNmZXJSZW1vdGVUb2tlbihSZXRhaW5QdHI8TlNEYXRhPiwgV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyKTsKICNlbmRpZgogCiAgICAgdm9pZCBzZXRTaG91bGREaXNwYXRjaEZha2VNb3VzZU1v
dmVFdmVudHMoYm9vbCBkaXNwYXRjaCkgeyBtX3Nob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2
ZW50cyA9IGRpc3BhdGNoOyB9CkBAIC0yMjA0LDYgKzIyMTIsOSBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCByZW1vdGVQb3N0TWVzc2FnZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgc291cmNlLCBj
b25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHRhcmdl
dCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiYgdGFyZ2V0T3Jp
Z2luLCBjb25zdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYpOwogICAgIHZvaWQg
cmVuZGVyVHJlZUFzVGV4dChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHNpemVfdCBiYXNlSW5k
ZW50LCBPcHRpb25TZXQ8V2ViQ29yZTo6UmVuZGVyQXNUZXh0RmxhZz4sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3RyaW5nJiYpPiYmKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIGJp
bmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBpbnQpPiYmKTsKKyNlbmRpZgog
CiAgICAgdm9pZCByZXF1ZXN0VGV4dEV4dHJhY3Rpb24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpG
bG9hdFJlY3Q+JiYgY29sbGVjdGlvblJlY3RJblJvb3RWaWV3LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6OlRleHRFeHRyYWN0aW9uOjpJdGVtJiYpPiYmKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXgg
MGNhZjZlMjI1Mzc4Li5hZjdhZDI2YzNhNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNDkyLDYgKzQ5Miw5IEBA
IEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3lu
dGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgV2luZG93QW5kVmlld0ZyYW1lc0NoYW5nZWQo
c3RydWN0IFdlYktpdDo6Vmlld1dpbmRvd0Nvb3JkaW5hdGVzIGNvb3JkaW5hdGVzKQogICAgIFNl
dE1haW5GcmFtZUlzU2Nyb2xsYWJsZShib29sIGlzU2Nyb2xsYWJsZSkKICAgICBSZWdpc3RlclVJ
UHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGVsZW1l
bnRUb2tlbiwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHdpbmRvd1Rva2VuKQorICAgIEJpbmRS
ZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhVG9r
ZW4pIC0+IChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gdG9rZW4sIGludCBwcm9jZXNzSWRlbnRp
ZmllcikgU3luY2hyb25vdXMKKyAgICBVcGRhdGVSZW1vdGVQYWdlQWNjZXNzaWJpbGl0eU9mZnNl
dChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6SW50UG9pbnQgb2Zm
c2V0KTsKKwogICAgIEdldFN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKSAtPiAoU3RyaW5n
IHN0cmluZ1ZhbHVlKSBTeW5jaHJvbm91cwogICAgIEdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKFN0cmluZyBwYXN0ZWJvYXJkVHlwZSkgLT4gKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcikgU3luY2hyb25vdXMKICAgICBSZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQo
U3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoYm9vbCByZXN1bHQpIFN5bmNocm9ub3VzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmlu
ZGV4IGE3ZmQ3MjMxMjdjMC4uMTBkOTg4YTM1YzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMjQzLDEyICsyNDMsMTQg
QEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemVBY2Nlc3NpYmlsaXR5KCkKICAgICBt
X21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCA9IGFkb3B0TlMoW1tXS0FjY2Vzc2liaWxpdHlXZWJQ
YWdlT2JqZWN0IGFsbG9jXSBpbml0XSk7CiAgICAgW21fbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50
IHNldFdlYlBhZ2U6dGhpc107CiAKLSAgICBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tl
bihhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCkpOworICAgIFJlZiBmcmFtZSA9IG1fcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgYWNjZXNzaWJp
bGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oYWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0YSgpLCBm
cmFtZS5mcmFtZUlEKCkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtUmVpbml0aWFsaXpl
KCkKIHsKLSAgICBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tlbihhY2Nlc3NpYmlsaXR5
UmVtb3RlVG9rZW5EYXRhKCkpOworICAgIFJlZiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9s
bGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgYWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVt
b3RlVG9rZW4oYWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0YSgpLCBmcmFtZS5mcmFtZUlEKCkp
OwogfQogCiBSZXRhaW5QdHI8TlNEYXRhPiBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5UmVtb3RlVG9r
ZW5EYXRhKCkgY29uc3QKQEAgLTY2Miw2ICs2NjQsMTIgQEAgdm9pZCBXZWJQYWdlOjpnZXREYXRh
U2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQKICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogfQogCitXZWJDb3JlOjpJbnRQb2ludCBX
ZWJQYWdlOjphY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKwogV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9i
amVjdCogV2ViUGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmgK
aW5kZXggMzllOTBlM2M4OTVlLi40OTcwMDcwYTQ1NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFz
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2li
aWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oCkBAIC00NSw2ICs0NSw4IEBAIGNsYXNzIEFYQ29yZU9i
amVjdDsKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fc2l6ZSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1f
Y2FjaGVMb2NrKTsKICAgICBUaHJlYWRTYWZlV2Vha1B0cjxXZWJDb3JlOjpBWENvcmVPYmplY3Q+
IG1faXNvbGF0ZWRUcmVlUm9vdDsKICNlbmRpZgorCisgICAgV2ViQ29yZTo6SW50UG9pbnQgbV9y
ZW1vdGVGcmFtZU9mZnNldDsKICAgICBSZXRhaW5QdHI8aWQ+IG1fcGFyZW50OwogICAgIGJvb2wg
bV9oYXNNYWluRnJhbWVQbHVnaW47CiB9CkBAIC01Niw5ICs1OCwxMSBAQCBjbGFzcyBBWENvcmVP
YmplY3Q7CiAtICh2b2lkKXNldElzb2xhdGVkVHJlZVJvb3Q6KE5ha2VkUHRyPFdlYkNvcmU6OkFY
Q29yZU9iamVjdD4pcm9vdDsKICNlbmRpZgogLSAodm9pZClzZXRSZW1vdGVQYXJlbnQ6KGlkKXBh
cmVudDsKKy0gKHZvaWQpc2V0UmVtb3RlRnJhbWVPZmZzZXQ6KFdlYkNvcmU6OkludFBvaW50KW9m
ZnNldDsKIC0gKHZvaWQpc2V0SGFzTWFpbkZyYW1lUGx1Z2luOihib29sKWhhc1BsdWdpbjsKIAog
LSAoaWQpYWNjZXNzaWJpbGl0eVJvb3RPYmplY3RXcmFwcGVyOwogLSAoaWQpYWNjZXNzaWJpbGl0
eUZvY3VzZWRVSUVsZW1lbnQ7CistIChXZWJDb3JlOjpJbnRQb2ludClhY2Nlc3NpYmlsaXR5UmVt
b3RlRnJhbWVPZmZzZXQ7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdl
T2JqZWN0QmFzZS5tbQppbmRleCA2Zjk5NTQ1YWViZjUuLmJlYzhkNzNmYWEyZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdl
YlBhZ2VPYmplY3RCYXNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbQpAQCAtMzYsOSArMzYsMTEg
QEAKICNpbXBvcnQgIldLU3RyaW5nQ0YuaCIKICNpbXBvcnQgPFdlYkNvcmUvQVhPYmplY3RDYWNo
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9GcmFt
ZVRyZWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxGcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9Mb2NhbEZyYW1lVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CisjaW1wb3J0IDxX
ZWJDb3JlL1JlbW90ZUZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbFZpZXcuaD4KICNp
bXBvcnQgPFdlYkNvcmUvU2Nyb2xsYmFyLmg+CiAKQEAgLTU3LDExICs1OSwxNyBAQCBuYW1lc3Bh
Y2UgYXggPSBXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5OwogICAgIGlmICghcGFnZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvKiBsb2NhbE1haW5GcmFtZSA9IGR5bmFtaWNEb3du
Y2FzdDxXZWJDb3JlOjpMb2NhbEZyYW1lPihwYWdlLT5tYWluRnJhbWUoKSk7Ci0gICAgaWYgKCFs
b2NhbE1haW5GcmFtZSB8fCAhbG9jYWxNYWluRnJhbWUtPmRvY3VtZW50KCkpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIGlmIChhdXRvKiBsb2NhbE1haW5GcmFtZSA9IGR5bmFtaWNEb3du
Y2FzdDxXZWJDb3JlOjpMb2NhbEZyYW1lPihwYWdlLT5tYWluRnJhbWUoKSkpIHsKKyAgICAgICAg
aWYgKGF1dG8qIGRvY3VtZW50ID0gbG9jYWxNYWluRnJhbWUtPmRvY3VtZW50KCkpCisgICAgICAg
ICAgICByZXR1cm4gZG9jdW1lbnQtPmF4T2JqZWN0Q2FjaGUoKTsKKyAgICB9IGVsc2UgaWYgKGF1
dG8qIHJlbW90ZU1haW5GcmFtZSA9IGR5bmFtaWNEb3duY2FzdDxXZWJDb3JlOjpSZW1vdGVGcmFt
ZT4ocGFnZS0+bWFpbkZyYW1lKCkpKSB7CisgICAgICAgIGF1dG8mIHRyZWUgPSByZW1vdGVNYWlu
RnJhbWUtPnRyZWUoKTsKKyAgICAgICAgYXV0byogZmlyc3RGcmFtZSA9IGR5bmFtaWNEb3duY2Fz
dDxXZWJDb3JlOjpMb2NhbEZyYW1lPih0cmVlLmZpcnN0Q2hpbGQoKSk7CisgICAgICAgIGF1dG8q
IGRvY3VtZW50ID0gZmlyc3RGcmFtZSA/IGZpcnN0RnJhbWUtPmRvY3VtZW50KCkgOiBudWxscHRy
OworICAgICAgICByZXR1cm4gZG9jdW1lbnQgPyBkb2N1bWVudC0+YXhPYmplY3RDYWNoZSgpIDog
bnVsbHB0cjsKKyAgICB9CiAKLSAgICByZXR1cm4gbG9jYWxNYWluRnJhbWUtPmRvY3VtZW50KCkt
PmF4T2JqZWN0Q2FjaGUoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogLSAoaWQpYWNjZXNz
aWJpbGl0eVBsdWdpbk9iamVjdApAQCAtMTUyLDYgKzE2MCwxNyBAQCBuYW1lc3BhY2UgYXggPSBX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5OwogICAgIG1faGFzTWFpbkZyYW1lUGx1Z2luID0gaGFzUGx1
Z2luOwogfQogCistICh2b2lkKXNldFJlbW90ZUZyYW1lT2Zmc2V0OihXZWJDb3JlOjpJbnRQb2lu
dClvZmZzZXQKK3sKKyAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKKyAgICBtX3JlbW90ZUZy
YW1lT2Zmc2V0ID0gb2Zmc2V0OworfQorCistIChXZWJDb3JlOjpJbnRQb2ludClhY2Nlc3NpYmls
aXR5UmVtb3RlRnJhbWVPZmZzZXQKK3sKKyAgICByZXR1cm4gbV9yZW1vdGVGcmFtZU9mZnNldDsK
K30KKwogLSAodm9pZClzZXRSZW1vdGVQYXJlbnQ6KGlkKXBhcmVudAogewogICAgIEFTU0VSVChp
c01haW5SdW5Mb29wKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCBiMmRjNzM1YmJlYWUuLjg5ZWFlNWU5N2ZkNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMu
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMu
bW0KQEAgLTEyMywxNiArMTIzLDEyIEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXpl
QWNjZXNzaWJpbGl0eSgpCiAgICAgLy8gQ3VycmVudGx5LCBpdCBpcyBhbHNvIG5lZWRlZCB0byBh
bGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSBhbiBOU0FwcGxpY2F0aW9uIG9iamVjdC4KICAgICBbTlNB
cHBsaWNhdGlvbiBfYWNjZXNzaWJpbGl0eUluaXRpYWxpemVdOwogCi0gICAgYXV0byBtb2NrQWNj
ZXNzaWJpbGl0eUVsZW1lbnQgPSBhZG9wdE5TKFtbV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVj
dCBhbGxvY10gaW5pdF0pOwotCiAgICAgLy8gR2V0IHRoZSBwaWQgZm9yIHRoZSBzdGFydGluZyBw
cm9jZXNzLgogICAgIHBpZF90IHBpZCA9IFdlYkNvcmU6OnByZXNlbnRpbmdBcHBsaWNhdGlvblBJ
RCgpOwotICAgIGlmIChbbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50IHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IoYWNjZXNzaWJpbGl0eVNldFByZXNlbnRlclByb2Nlc3NJZGVudGlmaWVyOild
KQotICAgICAgICBbKGlkKW1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudC5nZXQoKSBhY2Nlc3NpYmls
aXR5U2V0UHJlc2VudGVyUHJvY2Vzc0lkZW50aWZpZXI6cGlkXTsKLSAgICBbbW9ja0FjY2Vzc2li
aWxpdHlFbGVtZW50IHNldFdlYlBhZ2U6dGhpc107Ci0gICAgbV9tb2NrQWNjZXNzaWJpbGl0eUVs
ZW1lbnQgPSBXVEZNb3ZlKG1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCk7Ci0KLSAgICBhY2Nlc3Np
YmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tlbihhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCkp
OworICAgIGNyZWF0ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudChwaWQpOworICAgIFJlZlB0ciBs
b2NhbE1haW5GcmFtZSA9IGR5bmFtaWNEb3duY2FzdDxMb2NhbEZyYW1lPihtX3BhZ2UtPm1haW5G
cmFtZSgpKTsKKyAgICBpZiAobG9jYWxNYWluRnJhbWUpCisgICAgICAgIGFjY2Vzc2liaWxpdHlU
cmFuc2ZlclJlbW90ZVRva2VuKGFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSwgbG9jYWxN
YWluRnJhbWUtPmZyYW1lSUQoKSk7CiAKICAgICAvLyBDbG9zZSBNYWNoIGNvbm5lY3Rpb24gdG8g
TGF1bmNoIFNlcnZpY2VzLgogI2lmIEhBVkUoTFNfU0VSVkVSX0NPTk5FQ1RJT05fU1RBVFVTX1JF
TEVBU0VfTk9USUZJQ0FUSU9OU19NQVNLKQpAQCAtMTQ0LDkgKzE0MCwyMCBAQCB2b2lkIFdlYlBh
Z2U6OnBsYXRmb3JtSW5pdGlhbGl6ZUFjY2Vzc2liaWxpdHkoKQogICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnJldm9rZUxhdW5jaFNlcnZpY2VzU2FuZGJveEV4dGVuc2lvbigpOwogfQogCit2
b2lkIFdlYlBhZ2U6OmNyZWF0ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudChwaWRfdCBwaWQpCit7
CisgICAgYXV0byBtb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgPSBhZG9wdE5TKFtbV0tBY2Nlc3Np
YmlsaXR5V2ViUGFnZU9iamVjdCBhbGxvY10gaW5pdF0pOworCisgICAgaWYgKFttb2NrQWNjZXNz
aWJpbGl0eUVsZW1lbnQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihhY2Nlc3NpYmlsaXR5
U2V0UHJlc2VudGVyUHJvY2Vzc0lkZW50aWZpZXI6KV0pCisgICAgICAgIFsoaWQpbW9ja0FjY2Vz
c2liaWxpdHlFbGVtZW50LmdldCgpIGFjY2Vzc2liaWxpdHlTZXRQcmVzZW50ZXJQcm9jZXNzSWRl
bnRpZmllcjpwaWRdOworICAgIFttb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgc2V0V2ViUGFnZTp0
aGlzXTsKKyAgICBtX21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCA9IFdURk1vdmUobW9ja0FjY2Vz
c2liaWxpdHlFbGVtZW50KTsKK30KKwogdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybVJlaW5pdGlhbGl6
ZSgpCiB7Ci0gICAgYWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oYWNjZXNzaWJpbGl0
eVJlbW90ZVRva2VuRGF0YSgpKTsKKyAgICBSZWYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJv
bGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJl
bW90ZVRva2VuKGFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSwgZnJhbWUtPmZyYW1lSUQo
KSk7CiB9CiAKIFJldGFpblB0cjxOU0RhdGE+IFdlYlBhZ2U6OmFjY2Vzc2liaWxpdHlSZW1vdGVU
b2tlbkRhdGEoKSBjb25zdApAQCAtNDY5LDEyICs0NzYsMjcgQEAgYm9vbCBXZWJQYWdlOjpwZXJm
b3JtTm9uRWRpdGluZ0JlaGF2aW9yRm9yU2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxlY3Rvciwg
S2V5Ym8KICAgICByZXR1cm4gZGlkUGVyZm9ybUFjdGlvbjsKIH0KIAordm9pZCBXZWJQYWdlOjp1
cGRhdGVSZW1vdGVQYWdlQWNjZXNzaWJpbGl0eU9mZnNldChXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgV2ViQ29yZTo6SW50UG9pbnQgb2Zmc2V0KQoreworICAgIFthY2Nlc3NpYmls
aXR5UmVtb3RlT2JqZWN0KCkgc2V0UmVtb3RlRnJhbWVPZmZzZXQ6b2Zmc2V0XTsKK30KKwordm9p
ZCBXZWJQYWdlOjpyZWdpc3RlclJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eVRva2VucyhwaWRfdCBw
aWQsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBlbGVtZW50VG9rZW4pCit7CisgICAgTlNEYXRh
ICplbGVtZW50VG9rZW5EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmVsZW1lbnRUb2tlbi5k
YXRhKCkgbGVuZ3RoOmVsZW1lbnRUb2tlbi5zaXplKCldOworICAgIGF1dG8gcmVtb3RlRWxlbWVu
dCA9IGVsZW1lbnRUb2tlbkRhdGEubGVuZ3RoID8gYWRvcHROUyhbW05TQWNjZXNzaWJpbGl0eVJl
bW90ZVVJRWxlbWVudCBhbGxvY10gaW5pdFdpdGhSZW1vdGVUb2tlbjplbGVtZW50VG9rZW5EYXRh
XSkgOiBuaWw7CisKKyAgICBjcmVhdGVNb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQocGlkKTsKKyAg
ICBbYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpIHNldFJlbW90ZVBhcmVudDpyZW1vdGVFbGVt
ZW50LmdldCgpXTsKK30KKwogdm9pZCBXZWJQYWdlOjpyZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2li
aWxpdHlUb2tlbnMoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGVsZW1lbnRUb2tlbiwgc3RkOjpz
cGFuPGNvbnN0IHVpbnQ4X3Q+IHdpbmRvd1Rva2VuKQogewogICAgIE5TRGF0YSAqZWxlbWVudFRv
a2VuRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczplbGVtZW50VG9rZW4uZGF0YSgpIGxlbmd0
aDplbGVtZW50VG9rZW4uc2l6ZSgpXTsKICAgICBOU0RhdGEgKndpbmRvd1Rva2VuRGF0YSA9IFtO
U0RhdGEgZGF0YVdpdGhCeXRlczp3aW5kb3dUb2tlbi5kYXRhKCkgbGVuZ3RoOndpbmRvd1Rva2Vu
LnNpemUoKV07CiAgICAgYXV0byByZW1vdGVFbGVtZW50ID0gZWxlbWVudFRva2VuRGF0YS5sZW5n
dGggPyBhZG9wdE5TKFtbTlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlFbGVtZW50IGFsbG9jXSBpbml0
V2l0aFJlbW90ZVRva2VuOmVsZW1lbnRUb2tlbkRhdGFdKSA6IG5pbDsKICAgICBhdXRvIHJlbW90
ZVdpbmRvdyA9IHdpbmRvd1Rva2VuRGF0YS5sZW5ndGggPyBhZG9wdE5TKFtbTlNBY2Nlc3NpYmls
aXR5UmVtb3RlVUlFbGVtZW50IGFsbG9jXSBpbml0V2l0aFJlbW90ZVRva2VuOndpbmRvd1Rva2Vu
RGF0YV0pIDogbmlsOworCiAgICAgW3JlbW90ZUVsZW1lbnQgc2V0V2luZG93VUlFbGVtZW50OnJl
bW90ZVdpbmRvdy5nZXQoKV07CiAgICAgW3JlbW90ZUVsZW1lbnQgc2V0VG9wTGV2ZWxVSUVsZW1l
bnQ6cmVtb3RlV2luZG93LmdldCgpXTsKIApAQCAtNTE2LDYgKzUzOCwxMSBAQCBXS0FjY2Vzc2li
aWxpdHlXZWJQYWdlT2JqZWN0KiBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkK
ICAgICByZXR1cm4gbV9tb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQuZ2V0KCk7CiB9CiAKK1dlYkNv
cmU6OkludFBvaW50IFdlYlBhZ2U6OmFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCgpCit7
CisgICAgcmV0dXJuIFttX21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCBhY2Nlc3NpYmlsaXR5UmVt
b3RlRnJhbWVPZmZzZXRdOworfQorCiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURf
VFJFRSkKIHZvaWQgV2ViUGFnZTo6Y2FjaGVBWFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0
UG9pbnQmIHBvaW50KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXgg
MDYxNGJjZjdhZjVjLi5iYTgzNjgwNjQ1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaApAQCAtNjUsNiArNjUsOSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2NyZWVuUHJvcGVy
dGllcy5oPgogI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAjaW5jbHVkZSA8d3RmL01h
Y2hTZW5kUmlnaHQuaD4KKworT0JKQ19DTEFTUyBOU011dGFibGVEaWN0aW9uYXJ5OworCiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKEdUSykKQEAgLTg3LDYgKzkwLDcgQEAKICNpbmNsdWRlICJXZWJT
UUxpdGVEYXRhYmFzZVRyYWNrZXIuaCIKICNlbmRpZgogCisKIG5hbWVzcGFjZSBBUEkgewogY2xh
c3MgT2JqZWN0OwogfQpAQCAtNTExLDYgKzUxNSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0
Zm9ybVNldENhY2hlTW9kZWwoQ2FjaGVNb2RlbCk7CiAKICAgICB2b2lkIHNldEVuaGFuY2VkQWNj
ZXNzaWJpbGl0eShib29sKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIGJpbmRBY2Nl
c3NpYmlsaXR5RnJhbWVXaXRoRGF0YShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHN0ZDo6c3Bh
bjxjb25zdCB1aW50OF90Pik7CisjZW5kaWYKIAogICAgIHZvaWQgc3RhcnRNZW1vcnlTYW1wbGVy
KFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBkb3VibGUp
OwogICAgIHZvaWQgc3RvcE1lbW9yeVNhbXBsZXIoKTsKQEAgLTgyNiw2ICs4MzMsNyBAQCBwcml2
YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIEhhc2hDb3VudGVkU2V0PFN0cmluZz4gbV9w
ZW5kaW5nUGFzdGVib2FyZFdyaXRlQ291bnRzOwogICAgIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9r
ZW5fdD4gbV9hdWRpdFRva2VuRm9yU2VsZjsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlv
bmFyeT4gbV9hY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVUb2tlbkNhY2hlOwogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDk5YjQwMmFmMTFjYS4uZDc3NWZlN2QzOGQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAt
NjksNiArNjksNyBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIE5vdFJl
ZkNvdW50ZWQgewogICAgIFNldFRleHRDaGVja2VyU3RhdGUoc3RydWN0IFdlYktpdDo6VGV4dENo
ZWNrZXJTdGF0ZSB0ZXh0Q2hlY2tlclN0YXRlKQogCiAgICAgU2V0RW5oYW5jZWRBY2Nlc3NpYmls
aXR5KGJvb2wgZmxhZykKKyAgICBCaW5kQWNjZXNzaWJpbGl0eUZyYW1lV2l0aERhdGEoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRh
KTsKIAogICAgIEdhcmJhZ2VDb2xsZWN0SmF2YVNjcmlwdE9iamVjdHMoKQogICAgIFNldEphdmFT
Y3JpcHRHYXJiYWdlQ29sbGVjdG9yVGltZXJFbmFibGVkKGJvb2wgZW5hYmxlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggYzUz
ODU3ZmJlMWQ0Li4xMTYwNmU5NjM5NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAtMjEzLDYgKzIxMywxNiBAQCB2b2lkIFdl
YlByb2Nlc3M6OnBsYXRmb3JtU2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVsKQogewogfQogCit2b2lk
IFdlYlByb2Nlc3M6OmJpbmRBY2Nlc3NpYmlsaXR5RnJhbWVXaXRoRGF0YShXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCit7Cisg
ICAgaWYgKCFtX2FjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZVRva2VuQ2FjaGUpCisgICAgICAgIG1f
YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lVG9rZW5DYWNoZSA9IGFkb3B0TlMoW1tOU011dGFibGVE
aWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisKKyAgICBhdXRvIGZyYW1lSW50ID0gZnJhbWVJRC5v
YmplY3QoKS50b1VJbnQ2NCgpOworICAgIE5TRGF0YSAqbnNEYXRhID0gW05TRGF0YSBkYXRhV2l0
aEJ5dGVzOmRhdGEuZGF0YSgpIGxlbmd0aDpkYXRhLnNpemUoKV07CisgICAgW21fYWNjZXNzaWJp
bGl0eVJlbW90ZUZyYW1lVG9rZW5DYWNoZSBzZXRPYmplY3Q6bnNEYXRhIGZvcktleTpAKGZyYW1l
SW50KV07Cit9CisKIGlkIFdlYlByb2Nlc3M6OmFjY2Vzc2liaWxpdHlGb2N1c2VkVUlFbGVtZW50
KCkKIHsKICAgICBhdXRvIHJldHJpZXZlRm9jdXNlZFVJRWxlbWVudEZyb21NYWluVGhyZWFkID0g
W10gKCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMjFlMjFmMDhiZDY0Li5iNGNm
MjgyYzE4Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMjI1LDYgKzIyNSw3IEBA
IHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFJlbW90ZUFYT2JqZWN0UmVmIGFjY2Vzc2liaWxpdHlS
ZW1vdGVPYmplY3QoKSBmaW5hbCB7IHJldHVybiAwOyB9CisgICAgV2ViQ29yZTo6SW50UG9pbnQg
YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCkgZmluYWwgeyByZXR1cm4geyB9OyB9CiAj
aWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKICAgICB2b2lkIHNldEFYSXNv
bGF0ZWRUcmVlUm9vdChXZWJDb3JlOjpBWENvcmVPYmplY3QqKSBmaW5hbCB7IH0KICNlbmRpZgo=
</data>
<flag name="commit-queue"
          id="496254"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>469884</attachid>
            <date>2024-02-15 10:39:31 -0800</date>
            <delta_ts>2024-02-15 11:22:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-268804-20240215103930.patch</filename>
            <type>text/plain</type>
            <size>116277</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">RnJvbSBlMTVjZTgwYzEzYWRkNjM0YmJkMGI1ZWE2ZTIwZmE5NGZmOGJjYmYzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpcyBGbGVpemFjaCA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4K
RGF0ZTogVGh1LCAxNSBGZWIgMjAyNCAwMTo0Mzo0MyAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIEFY
OiBTdXBwb3J0IHNpdGUgaXNvbGF0aW9uIGZvciBWb2ljZU92ZXIKIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjg4MDQgcmRhcjovLzk5NjY1NTYxCgpSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KCkluaXRpYWwgc3VwcG9ydCBmb3Igc2l0ZSBpc29sYXRpb24gZm9y
IFZvaWNlT3Zlci4KCldoZW4gYSBzY3JvbGwgdmlldyBob3N0cyBhIFJlbW90ZUZyYW1lIGl0IGJp
bmRzIGl0c2VsZiB0byB0aGUgb3RoZXIgc2lkZSB0aHJvdWdoIGEgV2ViUGFnZSBtZXNzYWdlLgpU
aGlzIHRyYW5zZmVycyBkYXRhIHRva2VucyBzbyBBY2Nlc3NpYmlsaXR5IHJlbW90ZSBlbGVtZW50
cyBhcmUgY3JlYXRlZCBhbmQgaG9va2VkIHVwLgoKVGhlIGJvdW5kaW5nIGJveGVzIGluc2lkZSB0
aGUgc3ViIGZyYW1lcyBuZWVkIHRvIGhhdmUgdGhlIGluaXRpYWwgb2Zmc2V0IGFwcGxpZWQgYW5k
IHRoZW4gbmVlZCB0byBiZSBjb252ZXJ0ZWQKZWFjaCBzdGVwIHVwIHRoZSBjaGFpbiB0byBhY2Nv
dW50IGZvciBzY3JvbGwgb2Zmc2V0cyB0aGF0IG9ubHkgZWFjaCBwcm9jZXNzIGtub3dzIGFib3V0
LgoKKiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dDoKKiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWENvcmVPYmplY3QuaDoKKFdlYkNvcmU6OmFjY2Vzc2liaWxpdHlSb2xlVG9TdHJpbmcpOgoo
V2ViQ29yZTo6QVhDb3JlT2JqZWN0Ojppc1JlbW90ZUZyYW1lIGNvbnN0KToKKiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcDoKKFdlYkNvcmU6OnN0cmVhbUFYQ29yZU9i
amVjdCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoK
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmNyZWF0ZSk6CihXZWJDb3JlOjpBWE9iamVjdENhY2hl
OjpvblJlbW90ZUZyYW1lSW5pdGlhbGl6ZWQpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5jcHA6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZWxhdGl2
ZUZyYW1lIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnJlbW90ZUZyYW1l
T2Zmc2V0IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW1vdGVGcmFtZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJh
bWVDbGllbnQuaC4KKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6Y3JlYXRlKToK
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6QWNjZXNzaWJpbGl0eVJlbW90ZUZy
YW1lKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6ZWxlbWVudFJlY3QgY29u
c3QpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbW90ZUZy
YW1lLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVDbGllbnQu
aC4KKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkQXR0YWNobWVu
dENoaWxkcmVuKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENoaWxk
cmVuKToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpkZXRhY2hSZW1vdGVQ
YXJ0cyk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6Y2xlYXJDaGlsZHJlbik6
CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkUmVtb3RlRnJhbWVDaGlsZCk6
CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkQ2hpbGRyZW4pOgooV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OndlYkFyZWFPYmplY3QgY29uc3QpOgooV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmRvY3VtZW50IGNvbnN0KToKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpwYXJlbnRPYmplY3QgY29uc3QpOgoqIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaDoKKiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcDoKKFdl
YkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKFdlYkNvcmU6
OkFYSXNvbGF0ZWRPYmplY3Q6OnNldFByb3BlcnR5KToKKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmpl
Y3Q6OnJlbW90ZUZyYW1lT2Zmc2V0IGNvbnN0KToKKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OnJlbGF0aXZlRnJhbWUgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHA6CihXZWJDb3JlOjpBWElzb2xhdGVk
VHJlZTo6dXBkYXRlTm9kZVByb3BlcnRpZXMpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMubW06CihXZWJDb3Jl
OjpBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplUGxhdGZvcm1Qcm9wZXJ0aWVzKToKKFdlYkNv
cmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50IGNvbnN0KToK
KiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFj
Lm1tOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lOjpnZW5lcmF0ZVJlbW90ZVRv
a2VuIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6aW5pdGlhbGl6
ZVBsYXRmb3JtRWxlbWVudFdpdGhSZW1vdGVUb2tlbik6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
OjpjcmVhdGVQbGF0Zm9ybVJvbGVNYXApOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbToKKG1ha2VOU0FycmF5KToK
KiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgcm9sZV0pOgoo
LVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBpc0VtcHR5R3JvdXBdKToKKC1bV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgcm9sZURlc2NyaXB0aW9uXSk6CigtW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIF90cmFuc2Zvcm1TcGVjaWFsQ2hpbGRyZW5DYXNlczpdKToKKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
Ol0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5SGl0VGVz
dDpdKToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgQUxMT1dfREVQUkVDQVRFRF9J
TVBMRU1FTlRBVElPTlNfRU5EXSk6CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpmb3JQYXJhbWV0ZXI6XSk6CigtW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlJbmRleE9mQ2hpbGQ6XSk6CigtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZUNvdW50
Ol0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXJyYXlB
dHRyaWJ1dGVWYWx1ZXM6aW5kZXg6bWF4Q291bnQ6XSk6CiogU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHA6CihXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjphY2Nl
c3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQpOgoqIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUZyYW1lTG9hZGVyQ2xpZW50Lmg6CiogU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvY2FsRnJhbWVM
b2FkZXJDbGllbnQuaDoKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwOgooV2ViQ29yZTo6
UGFnZTo6c2hvdWxkVXBkYXRlQWNjZXNzaWJpbGl0eVJlZ2lvbnMgY29uc3QpOgoqIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuY3BwOgooV2ViQ29yZTo6UmVtb3RlRnJhbWU6OnVwZGF0
ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldCk6CihXZWJDb3JlOjpSZW1vdGVGcmFtZTo6
dW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyk6CihXZWJDb3JlOjpSZW1vdGVGcmFtZTo6
YmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMpOgoqIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVt
b3RlRnJhbWUuaDoKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lQ2xpZW50Lmg6Ciog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcDoKKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdl
UHJveHk6OnJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbik6CiogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaDoKKiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcDoKKFdlYktpdDo6V2ViRnJhbWVQcm94eTo6YmluZEFj
Y2Vzc2liaWxpdHlGcmFtZVdpdGhEYXRhKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJG
cmFtZVByb3h5Lmg6CiogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojpzd2FwVG9Qcm92aXNpb25hbFBhZ2UpOgooV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKToKKFdlYktpdDo6V2Vi
UGFnZVByb3h5Ojp1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQpOgoqIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MubW06CihXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5
V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQpOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW06CihXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9j
ZXNzQWNjZXNzaWJpbGl0eVRva2VuKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGxNYWMuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGxNYWMubW06CihXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5V2ViUHJv
Y2Vzc1Rva2VuUmVjZWl2ZWQpOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW06CihXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNj
ZXNzaWJpbGl0eVRva2VuKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0lt
cGwuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwubW06CihXZWJL
aXQ6OldlYlZpZXdJbXBsOjpzZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuKToKKiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNs
aWVudC5jcHA6CihXZWJLaXQ6OldlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQ6OmFjY2Vzc2liaWxp
dHlSZW1vdGVGcmFtZU9mZnNldCk6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuaDoKKiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuY3BwOgooV2ViS2l0OjpX
ZWJSZW1vdGVGcmFtZUNsaWVudDo6dW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyk6CihX
ZWJLaXQ6OldlYlJlbW90ZUZyYW1lQ2xpZW50Ojp1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxp
dHlPZmZzZXQpOgooV2ViS2l0OjpXZWJSZW1vdGVGcmFtZUNsaWVudDo6YmluZFJlbW90ZUFjY2Vz
c2liaWxpdHlGcmFtZXMpOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJSZW1vdGVGcmFtZUNsaWVudC5oOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKFdlYktpdDo6V2ViUGFnZTo6YWNjZXNzaWJpbGl0
eVRyYW5zZmVyUmVtb3RlVG9rZW4pOgooV2ViS2l0OjpXZWJQYWdlOjphY2Nlc3NpYmlsaXR5TWFu
YWdlUmVtb3RlRWxlbWVudFN0YXR1cyk6CihXZWJLaXQ6OldlYlBhZ2U6OmJpbmRSZW1vdGVBY2Nl
c3NpYmlsaXR5RnJhbWVzKToKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmg6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbjoKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bToKKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplQWNjZXNzaWJpbGl0eSk6CihX
ZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtUmVpbml0aWFsaXplKToKKFdlYktpdDo6V2ViUGFnZTo6
YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KToKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaDoKKiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9i
amVjdEJhc2UubW06CigtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlIGF4T2JqZWN0
Q2FjaGVdKToKKC1bV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2Ugc2V0UmVtb3RlRnJh
bWVPZmZzZXQ6XSk6CigtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlIGFjY2Vzc2li
aWxpdHlSZW1vdGVGcmFtZU9mZnNldF0pOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tOgooV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybUluaXRpYWxp
emVBY2Nlc3NpYmlsaXR5KToKKFdlYktpdDo6V2ViUGFnZTo6Y3JlYXRlTW9ja0FjY2Vzc2liaWxp
dHlFbGVtZW50KToKKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1SZWluaXRpYWxpemUpOgooV2Vi
S2l0OjpXZWJQYWdlOjp1cGRhdGVSZW1vdGVQYWdlQWNjZXNzaWJpbGl0eU9mZnNldCk6CihXZWJL
aXQ6OldlYlBhZ2U6OnJlZ2lzdGVyUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5VG9rZW5zKToKKFdl
YktpdDo6V2ViUGFnZTo6cmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKToKKFdl
YktpdDo6V2ViUGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KToKKiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJQcm9jZXNzQ29jb2EubW06CihXZWJLaXQ6OldlYlByb2Nlc3M6OmJpbmRBY2Nlc3NpYmls
aXR5RnJhbWVXaXRoRGF0YSk6CiogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKLS0tCiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dCAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogLi4uL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIHwgICA0ICsKIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhDb3JlT2JqZWN0LmggICB8ICAxMiArKwogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WExvZ2dlci5jcHAgICAgIHwgICAzICsKIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5jcHAgICB8ICAxNSArLQogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmggIHwgICAyICsKIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhSZW1vdGVG
cmFtZS5jcHAgICB8ICA1MSArKysrKysrCiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
UmVtb3RlRnJhbWUuaCAgfCAgNjMgKysrKysrKysKIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuY3BwICAgICB8ICAyMCArKy0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuaCAgICAgICB8ICAgNSArCiAuLi4vQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHAgICAgICAgICAgICAgfCAgIDQgKy0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlTY3JvbGxWaWV3LmNwcCB8ICA1NyArKysrKystCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5U2Nyb2xsVmlldy5oICAgfCAgIDYgKy0KIC4uLi9pb3MvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJJT1MubW0gICB8ICAgMSArCiAuLi4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRP
YmplY3QuY3BwICAgICAgICAgfCAgMzUgKysrKy0KIC4uLi9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZE9iamVjdC5oICAgICAgICAgICB8ICAgOCArLQogLi4uL2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
VHJlZS5jcHAgICAgICAgICAgIHwgIDYxICsrKy0tLS0tCiAuLi4vaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRUcmVlLmggICAgICAgICAgICAgfCAgMjkgKysrKwogLi4uL2lzb2xhdGVkdHJlZS9tYWMv
QVhJc29sYXRlZE9iamVjdE1hYy5tbSAgIHwgICA3ICsKIC4uLi9tYWMvQWNjZXNzaWJpbGl0eU9i
amVjdE1hYy5tbSAgICAgICAgICAgICB8ICAyOCArKysrCiAuLi4vbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyQmFzZS5tbSAgfCAgIDkgKy0KIC4uLi9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJNYWMubW0gICB8IDE0MyArKysrKysrKysrKystLS0tLS0KIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwICAgICAgICB8ICAgNSArCiAuLi4vV2ViQ29y
ZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oICAgfCAgIDEgKwogLi4uL1dlYkNvcmUv
bG9hZGVyL0xvY2FsRnJhbWVMb2FkZXJDbGllbnQuaCAgIHwgICAxICsKIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAgICAgICAgICAgICAgICAgICB8ICAxMSArLQogU291cmNlL1dlYkNvcmUv
cGFnZS9SZW1vdGVGcmFtZS5jcHAgICAgICAgICAgIHwgIDE1ICsrCiBTb3VyY2UvV2ViQ29yZS9w
YWdlL1JlbW90ZUZyYW1lLmggICAgICAgICAgICAgfCAgIDQgKwogU291cmNlL1dlYkNvcmUvcGFn
ZS9SZW1vdGVGcmFtZUNsaWVudC5oICAgICAgIHwgICA0ICsKIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaCAgICAgICAgICB8ICAgMyArLQogLi4uL1dlYktpdC9VSVByb2Nlc3Mv
UHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIHwgICAyICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9Q
cm92aXNpb25hbFBhZ2VQcm94eS5oICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkZyYW1lUHJveHkuY3BwICAgICB8ICAgOSArKwogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViRnJhbWVQcm94eS5oICAgICAgIHwgICAyICsKIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAgICAgICB8ICAyNCArKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oICAgICAgICB8ICAgNCArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluIHwgICA0ICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MuaCAgfCAgIDIgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5tbSB8ICAgMiArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBh
Z2VQcm94eUlPUy5tbSAgIHwgICA0ICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGxNYWMuaCAgfCAgIDIgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xp
ZW50SW1wbE1hYy5tbSB8ICAgNCArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQ
cm94eU1hYy5tbSAgIHwgICA0ICstCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmll
d0ltcGwuaCAgICAgfCAgIDMgKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3
SW1wbC5tbSAgICB8ICAgOCArLQogLi4uL1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuY3BwICAg
ICAgICAgICAgIHwgICA2ICsKIC4uLi9XZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmggICAgICAg
ICAgICAgICB8ICAgMSArCiAuLi4vV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQu
Y3BwICAgfCAgMzIgKysrKwogLi4uL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90ZUZyYW1lQ2xpZW50
LmggICAgIHwgICA0ICsKIC4uLi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29h
Lm1tICB8ICA0MSArKysrLQogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oICAgIHwgIDEzICstCiAuLi4vV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4gICAgfCAgIDMgKwogLi4uL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSAg
ICAgIHwgIDEyICstCiAuLi4vbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmgg
ICAgfCAgIDQgKwogLi4uL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbSAg
IHwgIDI3ICsrKy0KIC4uLi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gICAg
ICB8ICA0NSArKysrLS0KIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggICAg
ICAgICB8ICAgOCArCiAuLi4vV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
biAgfCAgIDEgKwogLi4uL1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tICAgICAg
IHwgIDEwICsrCiAuLi4vbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmgg
fCAgIDEgKwogNjAgZmlsZXMgY2hhbmdlZCwgNzQyIGluc2VydGlvbnMoKyksIDE1MCBkZWxldGlv
bnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
UmVtb3RlRnJhbWUuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWFJlbW90ZUZyYW1lLmgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDZlZTQxYmUyZGUwZS4u
ZTM2NTU5ODUwZTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtNTI1LDYgKzUyNSw3IEBAIGFjY2Vzc2li
aWxpdHkvQVhHZW9tZXRyeU1hbmFnZXIuY3BwCiBhY2Nlc3NpYmlsaXR5L0FYSW1hZ2UuY3BwCiBh
Y2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcAogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNw
cAorYWNjZXNzaWJpbGl0eS9BWFJlbW90ZUZyYW1lLmNwcAogYWNjZXNzaWJpbGl0eS9BWFRleHRN
YXJrZXIuY3BwCiBhY2Nlc3NpYmlsaXR5L0FYVGV4dFJ1bi5jcHAKIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNmYmU2YmZiNmViMy4uODFhMjIzODYwODA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC04OTU4LDYgKzg5NTgsOCBAQAogCQkyOTQ4OUZDNTEyQzAwRjAzMDBEODNGMEYgLyogQWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Mjk0OTg2ODExOTUzNDE5NDAwNzJEMkJEIC8qIFRleHRVbmRvSW5zZXJ0aW9uTWFya3VwTWFjLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVGV4dFVuZG9JbnNlcnRp
b25NYXJrdXBNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5NEJEQUU2MjFG
RjU4MkEwMDUxMDc3QiAvKiBBY2Nlc3NpYmlsaXR5T2JqZWN0Q29jb2EubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5T2JqZWN0Q29jb2EubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5NTVDRjExMkIyMzBBRTYwMDAxQkY4MiAv
KiBBWFJlbW90ZUZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFYUmVtb3RlRnJhbWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjk1NUNGMTIyQjIzMEFFNjAwMDFCRjgyIC8qIEFYUmVt
b3RlRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVhSZW1vdGVGcmFtZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5N0JFM0Q5MTZDMDQzRDgwMDMzMTZCRCAvKiBQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyOTgxQUJDNDEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eU1hdGhN
TEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1l
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTgxQ0E5RDEzMTgyMkVDMDBE
MTJGMkEgLyogQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFj
Y2Vzc2liaWxpdHlBUklBR3JpZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
MzQzOCw2ICsyMzQ0MCw4IEBACiAJCQkJQzA0OTNFQjcyNDQ2OTlFNDAwOUFBQzgwIC8qIEFYTG9n
Z2VyLmggKi8sCiAJCQkJMjk4MUNBQUYxMzE4MjJFQzAwRDEyRjJBIC8qIEFYT2JqZWN0Q2FjaGUu
Y3BwICovLAogCQkJCTI5QTgxMjFBMEZCQjlDMUQwMDUxMDI5MyAvKiBBWE9iamVjdENhY2hlLmgg
Ki8sCisJCQkJMjk1NUNGMTIyQjIzMEFFNjAwMDFCRjgyIC8qIEFYUmVtb3RlRnJhbWUuY3BwICov
LAorCQkJCTI5NTVDRjExMkIyMzBBRTYwMDAxQkY4MiAvKiBBWFJlbW90ZUZyYW1lLmggKi8sCiAJ
CQkJQzBFMjA4QTEyOTM3OUM2RjAwQzBEMkQzIC8qIEFYVGV4dE1hcmtlci5jcHAgKi8sCiAJCQkJ
QzBFMjA4QTAyOTM3OUM2RTAwQzBEMkQzIC8qIEFYVGV4dE1hcmtlci5oICovLAogCQkJCTQ4QzRF
ODNDMkIzNEQ4MzgwMDgzNDYwQSAvKiBBWFRleHRSdW4uY3BwICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWENvcmVPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhDb3JlT2JqZWN0LmgKaW5kZXggNDQxMDg0ZWNiODA1Li4zZmJjN2Y4
ZGIyOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhDb3JlT2Jq
ZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWENvcmVPYmplY3QuaApA
QCAtMjA1LDYgKzIwNSw3IEBAIGVudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVJvbGUgewogICAgIFBy
b2dyZXNzSW5kaWNhdG9yLAogICAgIFJhZGlvQnV0dG9uLAogICAgIFJhZGlvR3JvdXAsCisgICAg
UmVtb3RlRnJhbWUsCiAgICAgUm93SGVhZGVyLAogICAgIFJvdywKICAgICBSb3dHcm91cCwKQEAg
LTQ0Miw2ICs0NDMsOCBAQCBBTFdBWVNfSU5MSU5FIFN0cmluZyBhY2Nlc3NpYmlsaXR5Um9sZVRv
U3RyaW5nKEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUpCiAgICAgICAgIHJldHVybiAiUmFkaW9CdXR0
b24iX3M7CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9Hcm91cDoKICAgICAgICAg
cmV0dXJuICJSYWRpb0dyb3VwIl9zOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJlbW90
ZUZyYW1lOgorICAgICAgICByZXR1cm4gIlJlbW90ZUZyYW1lIl9zOwogICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OlJvd0hlYWRlcjoKICAgICAgICAgcmV0dXJuICJSb3dIZWFkZXIiX3M7CiAg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Um93OgpAQCAtODE1LDYgKzgxOCw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3dJbnN0YW5jZSgp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxs
SW5zdGFuY2UoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQVhJc29sYXRlZE9iamVj
dEluc3RhbmNlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0FYUmVtb3RlRnJhbWUo
KSBjb25zdCA9IDA7CiAKICAgICBib29sIGlzSGVhZGluZygpIGNvbnN0IHsgcmV0dXJuIHJvbGVW
YWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpIZWFkaW5nOyB9CiAgICAgdmlydHVhbCBib29s
IGlzTGluaygpIGNvbnN0ID0gMDsKQEAgLTkxOSw2ICs5MjMsMTIgQEAgcHVibGljOgogICAgIGJv
b2wgaXNUcmVlR3JpZCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxp
dHlSb2xlOjpUcmVlR3JpZDsgfQogICAgIGJvb2wgaXNUcmVlSXRlbSgpIGNvbnN0IHsgcmV0dXJu
IHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlSXRlbTsgfQogICAgIGJvb2wg
aXNTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5
Um9sZTo6U2Nyb2xsQmFyOyB9CisgICAgYm9vbCBpc1JlbW90ZUZyYW1lKCkgY29uc3QgeyByZXR1
cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJlbW90ZUZyYW1lOyB9CisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgdmlydHVhbCBSZXRhaW5QdHI8aWQ+IHJlbW90ZUZyYW1lUGxh
dGZvcm1FbGVtZW50KCkgY29uc3QgPSAwOworI2VuZGlmCisgICAgdmlydHVhbCBib29sIGhhc1Jl
bW90ZUZyYW1lQ2hpbGQoKSBjb25zdCA9IDA7CisKICAgICBib29sIGlzQnV0dG9uKCkgY29uc3Q7
CiAgICAgdmlydHVhbCBib29sIGlzTWV0ZXIoKSBjb25zdCA9IDA7CiAKQEAgLTExNTksNiArMTE2
OSw4IEBAIHB1YmxpYzoKICAgICAvLyBWaWV3cG9ydC1yZWxhdGl2ZSBtZWFucyB0aGF0IHdoZW4g
dGhlIHBhZ2Ugc2Nyb2xscywgdGhlIHBvcnRpb24gb2YgdGhlIHBhZ2UgaW4gdGhlIHZpZXdwb3J0
IGNoYW5nZXMsIGFuZCB0aHVzCiAgICAgLy8gYW55IHZpZXdwb3J0LXJlbGF0aXZlIHJlY3RzIGRv
IHRvbyAoc2luY2UgdGhleSBhcmUgZWl0aGVyIGNsb3NlciB0byBvciBmYXJ0aGVyIGZyb20gdGhl
IHZpZXdwb3J0IG9yaWdpbiBhZnRlciB0aGUgc2Nyb2xsKS4KICAgICB2aXJ0dWFsIEZsb2F0UG9p
bnQgc2NyZWVuUmVsYXRpdmVQb3NpdGlvbigpIGNvbnN0ID0gMDsKKyAgICAvLyBUaGlzIGlzIHRo
ZSBhbW91bnQgdGhhdCB0aGUgUmVtb3RlRnJhbWUgaXMgb2Zmc2V0IGZyb20gaXRzIGNvbnRhaW5p
bmcgcGFyZW50LgorICAgIHZpcnR1YWwgSW50UG9pbnQgcmVtb3RlRnJhbWVPZmZzZXQoKSBjb25z
dCA9IDA7CiAKICAgICB2aXJ0dWFsIEZsb2F0UmVjdCBjb252ZXJ0RnJhbWVUb1NwYWNlKGNvbnN0
IEZsb2F0UmVjdCYsIEFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2UpIGNvbnN0ID0gMDsKICNp
ZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhMb2dnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWExvZ2dlci5j
cHAKaW5kZXggYjZlMzA2Y2RkZWNmLi43YjM1YzhmOWQxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhMb2dnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhMb2dnZXIuY3BwCkBAIC04ODMsNiArODgzLDkgQEAgdm9pZCBzdHJlYW1B
WENvcmVPYmplY3QoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBBWENvcmVPYmplY3QmIG9iamVj
dCwgY29uc3QgT3AKICAgICBpZiAob3B0aW9ucyAmIEFYU3RyZWFtT3B0aW9uczo6Um9sZSkKICAg
ICAgICAgc3RyZWFtLmR1bXBQcm9wZXJ0eSgicm9sZSIsIG9iamVjdC5yb2xlVmFsdWUoKSk7CiAK
KyAgICBpZiAob2JqZWN0LnJlbmRlcmVyKCkpCisgICAgICAgIHN0cmVhbS5kdW1wUHJvcGVydHko
InJlbmRlck5hbWUiLCBvYmplY3QucmVuZGVyZXIoKS0+cmVuZGVyTmFtZSgpKTsKKwogICAgIGlm
IChvcHRpb25zICYgQVhTdHJlYW1PcHRpb25zOjpQYXJlbnRJRCkgewogICAgICAgICBhdXRvKiBw
YXJlbnQgPSBvYmplY3QucGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgICAgIHN0cmVhbS5k
dW1wUHJvcGVydHkoInBhcmVudElEIiwgcGFyZW50ID8gcGFyZW50LT5vYmplY3RJRCgpIDogQVhJ
RCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RD
YWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3Bw
CmluZGV4IDI4MGZhZDRmMjcwMS4uMWFjOTVmMmVhNmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJBWElzb2xhdGVkT2JqZWN0LmgiCiAjaW5jbHVkZSAiQVhJc29sYXRlZFRyZWUuaCIKICNp
bmNsdWRlICJBWExvZ2dlci5oIgorI2luY2x1ZGUgIkFYUmVtb3RlRnJhbWUuaCIKICNpbmNsdWRl
ICJBWFRleHRNYXJrZXIuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5QVJJQUdyaWQuaCIKICNp
bmNsdWRlICJBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmgiCkBAIC0xMDU0LDcgKzEwNTUsMTAg
QEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Y3JlYXRlKEFjY2Vzc2liaWxp
dHlSb2xlIHJvbGUpCiAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAogICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OlRhYmxlSGVhZGVyQ29udGFpbmVyOgogICAgICAgICBvYmogPSBBY2Nlc3Np
YmlsaXR5VGFibGVIZWFkZXJDb250YWluZXI6OmNyZWF0ZSgpOwotICAgICAgICBicmVhazsgICAK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmVtb3RlRnJhbWU6
CisgICAgICAgIG9iaiA9IEFYUmVtb3RlRnJhbWU6OmNyZWF0ZSgpOworICAgICAgICBicmVhazsK
ICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTbGlkZXJUaHVtYjoKICAgICAgICAgb2JqID0g
QWNjZXNzaWJpbGl0eVNsaWRlclRodW1iOjpjcmVhdGUoKTsKICAgICAgICAgYnJlYWs7CkBAIC0x
MzUwLDYgKzEzNTQsMTUgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVSZWNvbXB1dGVDZWxs
U2xvdHMoQWNjZXNzaWJpbGl0eVRhYmxlJiBheFRhYmxlKQogI2VuZGlmCiB9CiAKK3ZvaWQgQVhP
YmplY3RDYWNoZTo6b25SZW1vdGVGcmFtZUluaXRpYWxpemVkKEFYUmVtb3RlRnJhbWUmIHJlbW90
ZUZyYW1lKQoreworI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCisgICAg
dXBkYXRlSXNvbGF0ZWRUcmVlKHJlbW90ZUZyYW1lLCBBWFByb3BlcnR5TmFtZTo6UmVtb3RlRnJh
bWVQbGF0Zm9ybUVsZW1lbnQpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocmVtb3RlRnJhbWUp
OworI2VuZGlmCit9CisKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQog
dm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVSb3dzcGFuQ2hhbmdlZChBY2Nlc3NpYmlsaXR5VGFi
bGVDZWxsJiBheENlbGwpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5oCmluZGV4IGQxMDQ5Y2M5YmMyMS4uMzhjOThhNDZlYTlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaApAQCAtNDcsNiArNDcsNyBAQCBj
bGFzcyBUZXh0U3RyZWFtOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEFYUmVtb3Rl
RnJhbWU7CiBjbGFzcyBBY2Nlc3NpYmlsaXR5VGFibGU7CiBjbGFzcyBBY2Nlc3NpYmlsaXR5VGFi
bGVDZWxsOwogY2xhc3MgRG9jdW1lbnQ7CkBAIC0yNDYsNiArMjQ3LDcgQEAgcHVibGljOgogICAg
IHZvaWQgZGVmZXJOb2RlQWRkZWRPclJlbW92ZWQoTm9kZSopOwogICAgIHZvaWQgaGFuZGxlU2Ny
b2xsZWRUb0FuY2hvcihjb25zdCBOb2RlKiBhbmNob3JOb2RlKTsKICAgICB2b2lkIG9uU2Nyb2xs
YmFyVXBkYXRlKFNjcm9sbFZpZXcqKTsKKyAgICB2b2lkIG9uUmVtb3RlRnJhbWVJbml0aWFsaXpl
ZChBWFJlbW90ZUZyYW1lJik7CiAKICAgICBib29sIGlzUmV0cmlldmluZ0N1cnJlbnRNb2RhbE5v
ZGUoKSB7IHJldHVybiBtX2lzUmV0cmlldmluZ0N1cnJlbnRNb2RhbE5vZGU7IH0KICAgICBOb2Rl
KiBtb2RhbE5vZGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhSZW1vdGVGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYUmVtb3Rl
RnJhbWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNjA0MzRl
MzQ0NDc3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WFJlbW90ZUZyYW1lLmNwcApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDI0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkFYUmVtb3RlRnJhbWUuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitSZWY8QVhSZW1vdGVGcmFtZT4gQVhSZW1vdGVGcmFtZTo6Y3JlYXRlKCkKK3sKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBWFJlbW90ZUZyYW1lKTsKK30KKworQVhSZW1vdGVGcmFt
ZTo6QVhSZW1vdGVGcmFtZSgpCis6CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgbV9yZW1vdGVG
cmFtZVBsYXRmb3JtRWxlbWVudChudWxscHRyKQorICAgICwgbV9wcm9jZXNzSWRlbnRpZmllcigw
KQorI2VuZGlmCit7Cit9CisKK0xheW91dFJlY3QgQVhSZW1vdGVGcmFtZTo6ZWxlbWVudFJlY3Qo
KSBjb25zdAoreworICAgIGF1dG8qIHBhcmVudCA9IHBhcmVudE9iamVjdCgpOworICAgIHJldHVy
biBwYXJlbnQgPyBwYXJlbnQtPmVsZW1lbnRSZWN0KCkgOiBMYXlvdXRSZWN0KCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQVhSZW1vdGVGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFJl
bW90ZUZyYW1lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42Mzkw
MThmYjE3YWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYUmVtb3RlRnJhbWUuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDI0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5TW9ja09iamVjdC5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIFJlbW90ZUZyYW1lOworCitjbGFzcyBBWFJlbW90ZUZyYW1lIGZp
bmFsIDogcHVibGljIEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUmVmPEFYUmVtb3RlRnJhbWU+IGNyZWF0ZSgpOworCisgICAgdm9pZCBpbml0aWFsaXplUGxh
dGZvcm1FbGVtZW50V2l0aFJlbW90ZVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgaW50
KTsKKworICAgIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBnZW5lcmF0ZVJlbW90ZVRva2VuKCkg
Y29uc3Q7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgUmV0YWluUHRyPGlkPiByZW1vdGVGcmFt
ZVBsYXRmb3JtRWxlbWVudCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcmVtb3RlRnJhbWVQbGF0
Zm9ybUVsZW1lbnQ7IH0KKyAgICBwaWRfdCBwcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1fcHJvY2Vzc0lkZW50aWZpZXI7IH0KKyNlbmRpZgorCitwcml2YXRlOgorICAgIGV4cGxp
Y2l0IEFYUmVtb3RlRnJhbWUoKTsKKyAgICB2aXJ0dWFsIH5BWFJlbW90ZUZyYW1lKCkgPSBkZWZh
dWx0OworCisgICAgQWNjZXNzaWJpbGl0eVJvbGUgZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUo
KSBmaW5hbCB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6UmVtb3RlRnJhbWU7IH0KKyAgICBi
b29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICBib29sIGlzQVhSZW1vdGVGcmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IHRydWU7IH0KKyAgICBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3QgZmluYWw7CisKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyAgICBSZXRhaW5QdHI8aWQ+IG1fcmVtb3RlRnJhbWVQbGF0Zm9y
bUVsZW1lbnQ7CisgICAgcGlkX3QgbV9wcm9jZXNzSWRlbnRpZmllcjsKKyNlbmRpZgorfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0FDQ0VTU0lC
SUxJVFkoQVhSZW1vdGVGcmFtZSwgaXNBWFJlbW90ZUZyYW1lKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCAzZTMy
ZGIwOTNhZmIuLjdmNjc0ZDZhZTM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC01NDQsNyArNTQ0LDEwIEBAIEZs
b2F0UmVjdCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpjb252ZXJ0RnJhbWVUb1NwYWNlKGNvbnN0IEZs
b2F0UmVjdCYgZnJhbWVSZWN0LCBBCiAgICAgCiBGbG9hdFJlY3QgQWNjZXNzaWJpbGl0eU9iamVj
dDo6cmVsYXRpdmVGcmFtZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvbnZlcnRGcmFtZVRvU3Bh
Y2UoZWxlbWVudFJlY3QoKSwgQWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZTo6UGFnZSk7Cisg
ICAgYXV0byByZWN0ID0gZWxlbWVudFJlY3QoKTsKKyAgICBhdXRvIHJlbW90ZU9mZnNldCA9IHJl
bW90ZUZyYW1lT2Zmc2V0KCk7CisgICAgcmVjdC5tb3ZlKHJlbW90ZU9mZnNldC54KCksIHJlbW90
ZU9mZnNldC55KCkpOworICAgIHJldHVybiBjb252ZXJ0RnJhbWVUb1NwYWNlKHJlY3QsIEFjY2Vz
c2liaWxpdHlDb252ZXJzaW9uU3BhY2U6OlBhZ2UpOwogfQogCiBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpuZXh0U2libGluZ1VuaWdub3JlZChpbnQgbGltaXQpIGNv
bnN0CkBAIC0yMDg2LDE0ICsyMDg5LDE5IEBAIGNvbnN0IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
KiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphbmNlc3RvckFjY2Vzc2liaWxpdHlTY3JvbGxWCiAjaWYg
UExBVEZPUk0oQ09DT0EpCiBSZW1vdGVBWE9iamVjdFJlZiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpy
ZW1vdGVQYXJlbnRPYmplY3QoKSBjb25zdAogewotICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IHRo
aXMtPmRvY3VtZW50KCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQtPmZy
YW1lKCkpCi0gICAgICAgICAgICByZXR1cm4gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmFjY2Vz
c2liaWxpdHlSZW1vdGVPYmplY3QoKTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAg
YXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOworICAgIGF1dG8qIGZyYW1lID0gZG9j
dW1lbnQgPyBkb2N1bWVudC0+ZnJhbWUoKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIGZyYW1lID8g
ZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSA6IG51
bGxwdHI7CiB9CiAjZW5kaWYKIAorSW50UG9pbnQgQWNjZXNzaWJpbGl0eU9iamVjdDo6cmVtb3Rl
RnJhbWVPZmZzZXQoKSBjb25zdAoreworICAgIGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1l
bnQoKTsKKyAgICBhdXRvKiBmcmFtZSA9IGRvY3VtZW50ID8gZG9jdW1lbnQtPmZyYW1lKCkgOiBu
dWxscHRyOworICAgIHJldHVybiBmcmFtZSA/IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5hY2Nl
c3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKSA6IHsgfTsKK30KKwogRG9jdW1lbnQqIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OmRvY3VtZW50KCkgY29uc3QKIHsKICAgICBhdXRvKiBmcmFtZVZpZXcg
PSBkb2N1bWVudEZyYW1lVmlldygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAppbmRleCA0ZDIwZjU1YTU0NGMuLjY4NDJhNzE5NDhj
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmgKQEAgLTEwMiw2ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlz
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJv
b2wgaXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzQVhSZW1vdGVGcmFtZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0
eVNjcm9sbFZpZXdJbnN0YW5jZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVh
bCBib29sIGlzQWNjZXNzaWJpbGl0eVNWR1Jvb3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5VGFibGVJbnN0YW5jZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CkBAIC00NjQsOCArNDY1LDEyIEBAIHB1YmxpYzoKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIFJlbW90ZUFYT2JqZWN0UmVmIHJlbW90ZVBhcmVudE9iamVjdCgpIGNv
bnN0IG92ZXJyaWRlOworICAgIEludFBvaW50IHJlbW90ZUZyYW1lT2Zmc2V0KCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgRmxvYXRSZWN0IGNvbnZlcnRSZWN0VG9QbGF0Zm9ybVNwYWNlKGNvbnN0IEZs
b2F0UmVjdCYsIEFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2UpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIFJldGFpblB0cjxpZD4gcmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBuaWw7IH0KICNlbmRpZgorICAgIGJvb2wgaGFzUmVtb3RlRnJhbWVDaGls
ZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisKICAgICBQYWdlKiBwYWdlKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgTG9jYWxGcmFtZVZpZXcqIGRvY3VtZW50RnJhbWVWaWV3KCkgY29uc3Qgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCBlZThhYmVjM2Q3YjUuLjJmMTJlZjc1M2U0YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuY3BwCkBAIC0yNDEzLDcgKzI0MTMsNyBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmFkZEF0dGFjaG1lbnRDaGlsZHJlbigpCiAKICAgICAvLyBMb2NhbEZy
YW1lVmlldydzIG5lZWQgdG8gYmUgaW5zZXJ0ZWQgaW50byB0aGUgQVggaGllcmFyY2h5IHdoZW4g
ZW5jb3VudGVyZWQuCiAgICAgV2lkZ2V0KiB3aWRnZXQgPSB3aWRnZXRGb3JBdHRhY2htZW50Vmll
dygpOwotICAgIGlmICghd2lkZ2V0IHx8ICF3aWRnZXQtPmlzTG9jYWxGcmFtZVZpZXcoKSkKKyAg
ICBpZiAoIXdpZGdldCB8fCAhKHdpZGdldC0+aXNMb2NhbEZyYW1lVmlldygpIHx8IHdpZGdldC0+
aXNSZW1vdGVGcmFtZVZpZXcoKSkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBhZGRDaGls
ZChheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKHdpZGdldCkpOwpAQCAtMjU2OCw3ICsyNTY4
LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRDaGlsZHJlbigpCiAgICAg
ICAgIGF1dG8gb3duZXJzID0gb2JqZWN0Lm93bmVycygpOwogICAgICAgICBpZiAob3duZXJzLnNp
emUoKSAmJiAhb3duZXJzLmNvbnRhaW5zKHRoaXMpKQogICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAKKwogICAgICAgICBhZGRDaGlsZCgmb2JqZWN0KTsKICAgICB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcu
Y3BwCmluZGV4IDJiYmMzMDg3YjlmOC4uYjFkOWYwNzM1NWI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcApA
QCAtMjcsMTAgKzI3LDEyIEBACiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaCIK
IAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKKyNpbmNsdWRlICJBWFJlbW90ZUZyYW1lLmgi
CiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5oIgogI2luY2x1ZGUgIkhUTUxGcmFt
ZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkxvY2FsRnJhbWUuaCIKICNpbmNsdWRlICJMb2Nh
bEZyYW1lVmlldy5oIgorI2luY2x1ZGUgIlJlbW90ZUZyYW1lVmlldy5oIgogI2luY2x1ZGUgIlJl
bmRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKIApAQCAtNTIsNiArNTQsMTQgQEAg
QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6On5BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldygpCiB2b2lk
IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpkZXRhY2hSZW1vdGVQYXJ0cyhBY2Nlc3NpYmlsaXR5
RGV0YWNobWVudFR5cGUgZGV0YWNobWVudFR5cGUpCiB7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVj
dDo6ZGV0YWNoUmVtb3RlUGFydHMoZGV0YWNobWVudFR5cGUpOworCisgICAgYXV0byogcmVtb3Rl
RnJhbWVWaWV3ID0gZHluYW1pY0Rvd25jYXN0PFJlbW90ZUZyYW1lVmlldz4obV9zY3JvbGxWaWV3
LmdldCgpKTsKKyAgICBpZiAocmVtb3RlRnJhbWVWaWV3ICYmIG1fcmVtb3RlRnJhbWUgJiYgKGRl
dGFjaG1lbnRUeXBlID09IEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZTo6RWxlbWVudERlc3Ry
b3llZCB8fCBkZXRhY2htZW50VHlwZSA9PSBBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGU6OkNh
Y2hlRGVzdHJveWVkKSkgeworICAgICAgICBhdXRvJiByZW1vdGVGcmFtZSA9IHJlbW90ZUZyYW1l
Vmlldy0+ZnJhbWUoKTsKKyAgICAgICAgcmVtb3RlRnJhbWUudW5iaW5kUmVtb3RlQWNjZXNzaWJp
bGl0eUZyYW1lcyhtX3JlbW90ZUZyYW1lLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICAgICAg
bV9yZW1vdGVGcmFtZSA9IG51bGxwdHI7CisgICAgfQorCiAgICAgbV9zY3JvbGxWaWV3ID0gbnVs
bHB0cjsKICAgICBtX2ZyYW1lT3duZXJFbGVtZW50ID0gbnVsbHB0cjsKIH0KQEAgLTE3Nyw4ICsx
ODcsMTAgQEAgQWNjZXNzaWJpbGl0eVNjcm9sbGJhciogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6
OmFkZENoaWxkU2Nyb2xsYmFyKFNjcm9sbGJhciogc2MKIHZvaWQgQWNjZXNzaWJpbGl0eVNjcm9s
bFZpZXc6OmNsZWFyQ2hpbGRyZW4oKQogewogICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmNsZWFy
Q2hpbGRyZW4oKTsKKwogICAgIG1fdmVydGljYWxTY3JvbGxiYXIgPSBudWxscHRyOwogICAgIG1f
aG9yaXpvbnRhbFNjcm9sbGJhciA9IG51bGxwdHI7CisKICAgICBtX2NoaWxkcmVuRGlydHkgPSBm
YWxzZTsKIH0KIApAQCAtMTkxLDExICsyMDMsNDIgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5U2Nyb2xs
Vmlldzo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdAogICAgIHJldHVybiB3
ZWJBcmVhLT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCk7CiB9CiAKK3ZvaWQgQWNjZXNzaWJpbGl0
eVNjcm9sbFZpZXc6OmFkZFJlbW90ZUZyYW1lQ2hpbGQoKQoreworICAgIGlmICghaXM8UmVtb3Rl
RnJhbWVWaWV3PihtX3Njcm9sbFZpZXcpKQorICAgICAgICByZXR1cm47CisgICAgV2Vha1B0ciBj
YWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsKKyAgICBpZiAoIWNhY2hlKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAoIW1fcmVtb3RlRnJhbWUpIHsKKyAgICAgICAgLy8gTWFrZSB0aGUgZmF1eCBl
bGVtZW50IHRoYXQgcmVwcmVzZW50cyB0aGUgcmVtb3RlIHRyYW5zZmVyIGVsZW1lbnQgZm9yIEFY
LgorICAgICAgICBhdXRvJiByZW1vdGVGcmFtZSA9IGRvd25jYXN0PFJlbW90ZUZyYW1lVmlldz4o
Km1fc2Nyb2xsVmlldykuZnJhbWUoKTsKKyAgICAgICAgbV9yZW1vdGVGcmFtZSA9IGRvd25jYXN0
PEFYUmVtb3RlRnJhbWU+KGNhY2hlLT5jcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGU6OlJlbW90ZUZy
YW1lKSk7CisgICAgICAgIG1fcmVtb3RlRnJhbWUtPnNldFBhcmVudCh0aGlzKTsKKworICAgICAg
ICAvLyBHZW5lcmF0ZSBhIG5ldyB0b2tlbiBhbmQgcGFzcyBpdCBiYWNrIHRvIHRoZSBvdGhlciBy
ZW1vdGUgZnJhbWUgc28gaXQgY2FuIGJpbmQgdGhlc2Ugb2JqZWN0cyB0b2dldGhlci4KKyAgICAg
ICAgYXV0byBnZW5lcmF0ZWRUb2tlbiA9IG1fcmVtb3RlRnJhbWUtPmdlbmVyYXRlUmVtb3RlVG9r
ZW4oKTsKKyAgICAgICAgcmVtb3RlRnJhbWUuYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMo
Z2V0cGlkKCksIGdlbmVyYXRlZFRva2VuLCBbdGhpcywgJnJlbW90ZUZyYW1lLCBwcm90ZWN0ZWRB
Y2Nlc3NiaWxpdHlSZW1vdGVGcmFtZSA9IFJlZlB0ciB7IG1fcmVtb3RlRnJhbWUgfV0gKHN0ZDo6
c3Bhbjxjb25zdCB1aW50OF90PiB0b2tlbiwgaW50IHByb2Nlc3NJZGVudGlmaWVyKSBtdXRhYmxl
IHsKKyNpZiBPUyhEQVJXSU4pCisgICAgICAgICAgICBwcm90ZWN0ZWRBY2Nlc3NiaWxpdHlSZW1v
dGVGcmFtZS0+aW5pdGlhbGl6ZVBsYXRmb3JtRWxlbWVudFdpdGhSZW1vdGVUb2tlbih0b2tlbiwg
cHJvY2Vzc0lkZW50aWZpZXIpOworI2VuZGlmCisgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHJl
bW90ZSBzaWRlIHdpdGggdGhlIG9mZnNldCBvZiB0aGlzIG9iamVjdCBzbyBpdCBjYW4gY2FsY3Vs
YXRlIGZyYW1lcyBjb3JyZWN0bHkuCisgICAgICAgICAgICBhdXRvIGxvY2F0aW9uID0gZWxlbWVu
dFJlY3QoKS5sb2NhdGlvbigpOworICAgICAgICAgICAgcmVtb3RlRnJhbWUudXBkYXRlUmVtb3Rl
RnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KGZsb29yZWRJbnRQb2ludChsb2NhdGlvbikpOworICAg
ICAgICB9KTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9yZW1vdGVGcmFtZS0+c2V0UGFyZW50KHRo
aXMpOworCisgICAgYWRkQ2hpbGQobV9yZW1vdGVGcmFtZS5nZXQoKSk7Cit9CisKIHZvaWQgQWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmFkZENoaWxkcmVuKCkKIHsKICAgICBBU1NFUlQoIW1fY2hp
bGRyZW5Jbml0aWFsaXplZCk7CiAgICAgbV9jaGlsZHJlbkluaXRpYWxpemVkID0gdHJ1ZTsKIAor
ICAgIGFkZFJlbW90ZUZyYW1lQ2hpbGQoKTsKICAgICBhZGRDaGlsZCh3ZWJBcmVhT2JqZWN0KCkp
OwogICAgIHVwZGF0ZVNjcm9sbGJhcnMoKTsKIH0KQEAgLTIwMyw3ICsyNDYsNyBAQCB2b2lkIEFj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3OjphZGRDaGlsZHJlbigpCiBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6d2ViQXJlYU9iamVjdCgpIGNvbnN0CiB7CiAgICAg
YXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOwotICAgIGlmICghZG9jdW1lbnQgfHwg
IWRvY3VtZW50LT5oYXNMaXZpbmdSZW5kZXJUcmVlKCkpCisgICAgaWYgKCFkb2N1bWVudCB8fCAh
ZG9jdW1lbnQtPmhhc0xpdmluZ1JlbmRlclRyZWUoKSB8fCBtX3JlbW90ZUZyYW1lKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmIChhdXRvKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUo
KSkKQEAgLTIzNCw5ICsyNzcsMTUgQEAgTGF5b3V0UmVjdCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dzo6ZWxlbWVudFJlY3QoKSBjb25zdAogCiBEb2N1bWVudCogQWNjZXNzaWJpbGl0eVNjcm9sbFZp
ZXc6OmRvY3VtZW50KCkgY29uc3QKIHsKLSAgICBpZiAoYXV0byogZnJhbWVWaWV3ID0gZHluYW1p
Y0Rvd25jYXN0PExvY2FsRnJhbWVWaWV3PihtX3Njcm9sbFZpZXcuZ2V0KCkpKSB7CisgICAgaWYg
KGF1dG8qIGZyYW1lVmlldyA9IGR5bmFtaWNEb3duY2FzdDxMb2NhbEZyYW1lVmlldz4obV9zY3Jv
bGxWaWV3LmdldCgpKSkKICAgICAgICAgcmV0dXJuIGZyYW1lVmlldy0+ZnJhbWUoKS5kb2N1bWVu
dCgpOworCisgICAgLy8gRm9yIHRoZSBSZW1vdGVGcmFtZVZpZXcgY2FzZSwgd2UgbmVlZCB0byBy
ZXR1cm4gdGhlIGRvY3VtZW50IG9mIG91ciBob3N0aW5nIHBhcmVudCBzbyBheE9iamVjdENhY2hl
KCkgcmVzb2x2ZXMgY29ycmVjdGx5LgorICAgIGlmIChhdXRvKiByZW1vdGVGcmFtZVZpZXcgPSBk
eW5hbWljRG93bmNhc3Q8UmVtb3RlRnJhbWVWaWV3PihtX3Njcm9sbFZpZXcuZ2V0KCkpKSB7Cisg
ICAgICAgIGlmIChhdXRvKiBvd25lciA9IHJlbW90ZUZyYW1lVmlldy0+ZnJhbWUoKS5vd25lckVs
ZW1lbnQoKSkKKyAgICAgICAgICAgIHJldHVybiAmKG93bmVyLT5kb2N1bWVudCgpKTsKICAgICB9
CisKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdDo6ZG9jdW1lbnQoKTsKIH0KIApAQCAt
MjU5LDggKzMwOCwxMCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5U2Nyb2xs
Vmlldzo6cGFyZW50T2JqZWN0KCkgY29uc3QKICAgICBXZWFrUHRyIG93bmVyID0gbV9mcmFtZU93
bmVyRWxlbWVudC5nZXQoKTsKICAgICBpZiAoYXV0byogbG9jYWxGcmFtZVZpZXcgPSBkeW5hbWlj
RG93bmNhc3Q8TG9jYWxGcmFtZVZpZXc+KG1fc2Nyb2xsVmlldy5nZXQoKSkpCiAgICAgICAgIG93
bmVyID0gbG9jYWxGcmFtZVZpZXctPmZyYW1lKCkub3duZXJFbGVtZW50KCk7CisgICAgZWxzZSBp
ZiAoYXV0byogcmVtb3RlRnJhbWVWaWV3ID0gZHluYW1pY0Rvd25jYXN0PFJlbW90ZUZyYW1lVmll
dz4obV9zY3JvbGxWaWV3LmdldCgpKSkKKyAgICAgICAgb3duZXIgPSByZW1vdGVGcmFtZVZpZXct
PmZyYW1lKCkub3duZXJFbGVtZW50KCk7CiAKLSAgICBpZiAoY2FjaGUgJiYgb3duZXIgJiYgb3du
ZXItPnJlbmRlcmVyKCkpCisgICAgaWYgKG93bmVyICYmIG93bmVyLT5yZW5kZXJlcigpKQogICAg
ICAgICByZXR1cm4gY2FjaGUtPmdldE9yQ3JlYXRlKG93bmVyLmdldCgpKTsKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXcuaAppbmRleCA1NTcwNDQ2NzFjN2QuLjUyNWFjNzgzZmJiNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Ny
b2xsVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVNjcm9sbFZpZXcuaApAQCAtMzAsNiArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgCitjbGFzcyBBWFJlbW90ZUZyYW1lOwogY2xhc3MgQWNjZXNzaWJpbGl0eVNjcm9sbGJhcjsK
IGNsYXNzIFNjcm9sbGJhcjsKIGNsYXNzIFNjcm9sbFZpZXc7CkBAIC01NCw3ICs1NSw4IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlld0luc3RhbmNlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgaXNFbmFibGVkKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIAorICAgIGJvb2wgaGFzUmVtb3RlRnJhbWVD
aGlsZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcmVtb3RlRnJhbWU7IH0KKwogICAgIGJvb2wg
aXNBdHRhY2htZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUGxhdGZvcm1XaWRnZXQgcGxhdGZv
cm1XaWRnZXQoKSBjb25zdCBvdmVycmlkZTsKICAgICBXaWRnZXQqIHdpZGdldEZvckF0dGFjaG1l
bnRWaWV3KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gY3VycmVudFNjcm9sbFZpZXcoKTsgfQpA
QCAtNjksNiArNzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0Rm9jdXNlZChib29sKSBvdmVy
cmlkZTsKICAgICBib29sIGNhblNldEZvY3VzQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBpc0ZvY3VzZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFkZFJlbW90ZUZy
YW1lQ2hpbGQoKTsKIAogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIExvY2FsRnJhbWVWaWV3KiBkb2N1bWVudEZyYW1lVmlldygpIGNvbnN0IG92ZXJyaWRlOwpA
QCAtODUsNiArODgsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0
PiBtX2hvcml6b250YWxTY3JvbGxiYXI7CiAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+
IG1fdmVydGljYWxTY3JvbGxiYXI7CiAgICAgYm9vbCBtX2NoaWxkcmVuRGlydHk7CisgICAgUmVm
UHRyPEFYUmVtb3RlRnJhbWU+IG1fcmVtb3RlRnJhbWU7CiB9OwogICAgIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3Mv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQppbmRleCAy
ZjI5YjcyZmZlN2UuLjkyNDNhZDZiZDM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJJT1MubW0KQEAgLTExMTIsNiArMTExMiw3IEBAIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlciAqYW5jZXN0b3JXaXRoUm9sZShjb25zdCBBWENvcmVPYmplY3QmIGRlc2NlbmRh
CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6SWdub3JlZDoKICAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpMaW5lQnJlYWs6CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJlc2Vu
dGF0aW9uYWw6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmVtb3RlRnJhbWU6CiAgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bjoKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKaW5kZXggMTAxNDU0NjI3OGYzLi4xNzdk
OTM5N2EwYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0
ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCkBAIC0zNzgsNiArMzc4LDEw
IEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoY29uc3QgUmVm
PEFjY2Vzc2liaWxpdHlPYmplY3Q+JiBheE9iCiAjZW5kaWYKIAogICAgIHNldE9iamVjdFByb3Bl
cnR5KEFYUHJvcGVydHlOYW1lOjpJbnRlcm5hbExpbmtFbGVtZW50LCBvYmplY3QuaW50ZXJuYWxM
aW5rRWxlbWVudCgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SGFzUmVtb3Rl
RnJhbWVDaGlsZCwgb2JqZWN0Lmhhc1JlbW90ZUZyYW1lQ2hpbGQoKSk7CisgICAgLy8gRG9uJ3Qg
ZHVwbGljYXRlIHRoZSByZW1vdGVGcmFtZU9mZnNldCBmb3IgZXZlcnkgb2JqZWN0LiBKdXN0IHN0
b3JlIGluIHRoZSBXZWJBcmVhLgorICAgIGlmIChvYmplY3QuaXNXZWJBcmVhKCkpCisgICAgICAg
IHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpSZW1vdGVGcmFtZU9mZnNldCwgb2JqZWN0LnJl
bW90ZUZyYW1lT2Zmc2V0KCkpOwogCiAgICAgaW5pdGlhbGl6ZVBsYXRmb3JtUHJvcGVydGllcyhh
eE9iamVjdCk7CiB9CkBAIC00NjQsNiArNDY4LDcgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0Ojpz
ZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEFYUHJvcGVydHlWYWx1ZVYK
ICAgICAgICAgW10oT3B0aW9uU2V0PEFYQW5jZXN0b3JGbGFnPiYgdHlwZWRWYWx1ZSkgeyByZXR1
cm4gdHlwZWRWYWx1ZS5pc0VtcHR5KCk7IH0sCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAg
IFtdKFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+JiB0eXBlZFZhbHVlKSB7IHJldHVybiAh
dHlwZWRWYWx1ZTsgfSwKKyAgICAgICAgW10oUmV0YWluUHRyPGlkPiYgdHlwZWRWYWx1ZSkgeyBy
ZXR1cm4gIXR5cGVkVmFsdWU7IH0sCiAjZW5kaWYKICAgICAgICAgW10oSW5zaWRlTGluayYgdHlw
ZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZSA9PSBJbnNpZGVMaW5rKCk7IH0sCiAgICAgICAg
IFtdKFZlY3RvcjxWZWN0b3I8QVhJRD4+JiB0eXBlZFZhbHVlKSB7IHJldHVybiB0eXBlZFZhbHVl
LmlzRW1wdHkoKTsgfSwKQEAgLTEyMDYsNiArMTIxMSwyMSBAQCBMYXlvdXRSZWN0IEFYSXNvbGF0
ZWRPYmplY3Q6OmVsZW1lbnRSZWN0KCkgY29uc3QKICAgICB9KTsKIH0KIAorSW50UG9pbnQgQVhJ
c29sYXRlZE9iamVjdDo6cmVtb3RlRnJhbWVPZmZzZXQoKSBjb25zdAoreworICAgIGF1dG8qIHdl
YkFyZWEgPSBBY2Nlc3NpYmlsaXR5OjpmaW5kQW5jZXN0b3I8QVhJc29sYXRlZE9iamVjdD4oKnRo
aXMsIGZhbHNlLCBbXSAoY29uc3QgYXV0byYgb2JqZWN0KSB7CisgICAgICAgIHJldHVybiBvYmpl
Y3QuaXNXZWJBcmVhKCk7CisgICAgfSk7CisKKyAgICBpZiAoIXdlYkFyZWEpCisgICAgICAgIHJl
dHVybiB7IH07CisKKyAgICBpZiAoYXV0byBwb2ludCA9IHdlYkFyZWEtPm9wdGlvbmFsQXR0cmli
dXRlVmFsdWU8SW50UG9pbnQ+KEFYUHJvcGVydHlOYW1lOjpSZW1vdGVGcmFtZU9mZnNldCkpCisg
ICAgICAgIHJldHVybiAqcG9pbnQ7CisKKyAgICByZXR1cm4geyB9OworfQorCiBGbG9hdFBvaW50
IEFYSXNvbGF0ZWRPYmplY3Q6OnNjcmVlblJlbGF0aXZlUG9zaXRpb24oKSBjb25zdAogewogICAg
IGlmIChhdXRvIHBvaW50ID0gb3B0aW9uYWxBdHRyaWJ1dGVWYWx1ZTxGbG9hdFBvaW50PihBWFBy
b3BlcnR5TmFtZTo6U2NyZWVuUmVsYXRpdmVQb3NpdGlvbikpCkBAIC0xMjI5LDIyICsxMjQ5LDIz
IEBAIEZsb2F0UG9pbnQgQVhJc29sYXRlZE9iamVjdDo6c2NyZWVuUmVsYXRpdmVQb3NpdGlvbigp
IGNvbnN0CiAKIEZsb2F0UmVjdCBBWElzb2xhdGVkT2JqZWN0OjpyZWxhdGl2ZUZyYW1lKCkgY29u
c3QKIHsKKyAgICBGbG9hdFJlY3QgcmVsYXRpdmVGcmFtZTsKKwogICAgIGlmIChhdXRvIGNhY2hl
ZFJlbGF0aXZlRnJhbWUgPSBvcHRpb25hbEF0dHJpYnV0ZVZhbHVlPEludFJlY3Q+KEFYUHJvcGVy
dHlOYW1lOjpSZWxhdGl2ZUZyYW1lKSkgewogICAgICAgICAvLyBXZSBzaG91bGQgbm90IGhhdmUg
Y2FjaGVkIGEgcmVsYXRpdmUgZnJhbWUgZm9yIGVsZW1lbnRzIHRoYXQgZ2V0IHRoZWlyIGdlb21l
dHJ5IGZyb20gdGhlaXIgY2hpbGRyZW4uCiAgICAgICAgIEFTU0VSVCghbV9nZXRzR2VvbWV0cnlG
cm9tQ2hpbGRyZW4pOwotICAgICAgICByZXR1cm4gKmNhY2hlZFJlbGF0aXZlRnJhbWU7Ci0gICAg
fQotCi0gICAgaWYgKG1fZ2V0c0dlb21ldHJ5RnJvbUNoaWxkcmVuKSB7CisgICAgICAgIHJlbGF0
aXZlRnJhbWUgPSAqY2FjaGVkUmVsYXRpdmVGcmFtZTsKKyAgICB9IGVsc2UgaWYgKG1fZ2V0c0dl
b21ldHJ5RnJvbUNoaWxkcmVuKSB7CiAgICAgICAgIGF1dG8gZnJhbWUgPSBlbmNsb3NpbmdJbnRS
ZWN0KHJlbGF0aXZlRnJhbWVGcm9tQ2hpbGRyZW4oKSk7CiAgICAgICAgIGlmICghZnJhbWUuaXNF
bXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIGZyYW1lOworICAgICAgICAgICAgcmVsYXRpdmVG
cmFtZSA9IGZyYW1lOwogICAgICAgICAvLyBFaXRoZXIgd2UgaGFkIG5vIGNoaWxkcmVuLCBvciBv
dXIgY2hpbGRyZW4gaGFkIGVtcHR5IGZyYW1lcy4gVGhlIHJpZ2h0IHRoaW5nIHRvIGRvIHdvdWxk
IGJlIHRvIHJldHVybgogICAgICAgICAvLyBhIHJlY3QgYXQgdGhlIHBvc2l0aW9uIG9mIHRoZSBu
ZWFyZXN0IHJlbmRlciB0cmVlIGFuY2VzdG9yIHdpdGggc29tZSBtYWRlLXVwIHNpemUgKEFjY2Vz
c2liaWxpdHlOb2RlT2JqZWN0Ojpib3VuZGluZ0JveFJlY3QgZG9lcyB0aGlzKS4KICAgICAgICAg
Ly8gSG93ZXZlciwgd2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIHJlbmRlciB0cmVlIGluIHRo
aXMgY29udGV4dCAob25seSB0aGUgQVggaXNvbGF0ZWQgdHJlZSwgd2hpY2ggaXMgdG9vIHNwYXJz
ZSBmb3IgdGhpcyBwdXJwb3NlKSwgc28KICAgICAgICAgLy8gdW50aWwgd2UgY2FjaGUgdGhlIG5l
Y2Vzc2FyeSBpbmZvcm1hdGlvbiBsZXQncyBnbyB0byB0aGUgbWFpbi10aHJlYWQuCiAgICAgfSBl
bHNlIGlmIChyb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uIHx8IHJvbGVW
YWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJsZUhlYWRlckNvbnRhaW5lcikKLSAgICAg
ICAgcmV0dXJuIGV4cG9zZWRUYWJsZUFuY2VzdG9yKCkgPyByZWxhdGl2ZUZyYW1lRnJvbUNoaWxk
cmVuKCkgOiBGbG9hdFJlY3QoKTsKKyAgICAgICAgcmVsYXRpdmVGcmFtZSA9IGV4cG9zZWRUYWJs
ZUFuY2VzdG9yKCkgPyByZWxhdGl2ZUZyYW1lRnJvbUNoaWxkcmVuKCkgOiBGbG9hdFJlY3QoKTsK
KwogCiAgICAgLy8gTW9jayBvYmplY3RzIGFuZCBTVkcgb2JqZWN0cyBuZWVkIHVzZSB0aGUgbWFp
biB0aHJlYWQgc2luY2UgdGhleSBkbyBub3QgaGF2ZSByZW5kZXIgbm9kZXMgYW5kIGFyZSBub3Qg
cGFpbnRlZCB3aXRoIGxheWVycywgcmVzcGVjdGl2ZWx5LgogICAgIC8vIEZJWE1FOiBSZW1vdmUg
aXNOb25MYXllclNWR09iamVjdCB3aGVuIExCU0UgaXMgZW5hYmxlZCAmIFNWRyBmcmFtZXMgYXJl
IGNhY2hlZC4KQEAgLTEyNjYsNiArMTI4Nyw4IEBAIEZsb2F0UmVjdCBBWElzb2xhdGVkT2JqZWN0
OjpyZWxhdGl2ZUZyYW1lKCkgY29uc3QKICAgICBpZiAoYW5jZXN0b3IgJiYgZnJhbWVSZWN0Lmxv
Y2F0aW9uKCkgPT0gRmxvYXRQb2ludCgpKQogICAgICAgICBmcmFtZVJlY3Quc2V0TG9jYXRpb24o
YW5jZXN0b3ItPnJlbGF0aXZlRnJhbWUoKS5sb2NhdGlvbigpKTsKIAorICAgIGF1dG8gcmVtb3Rl
T2Zmc2V0ID0gcmVtb3RlRnJhbWVPZmZzZXQoKTsKKyAgICBmcmFtZVJlY3QubW92ZUJ5KEZsb2F0
UG9pbnQocmVtb3RlT2Zmc2V0KSk7CiAgICAgcmV0dXJuIGZyYW1lUmVjdDsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJ
c29sYXRlZE9iamVjdC5oCmluZGV4IGQyYTY2YzJmNTNlNC4uZGU4MjdkNWZlMDE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZE9iamVjdC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEFDQ0VTU0lC
SUxJVFlfSVNPTEFURURfVFJFRSkKIAogI2luY2x1ZGUgIkFYQ29yZU9iamVjdC5oIgorI2luY2x1
ZGUgIkFYSXNvbGF0ZWRUcmVlLmgiCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1
ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgpAQCAtMjE1LDYgKzIxNiw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0ZpbGVVcGxvYWRCdXR0b24oKSBjb25zdCBmaW5hbCB7
IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzRmlsZVVwbG9hZEJ1
dHRvbik7IH0KICAgICBib29sIGlzTWV0ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBib29sQXR0
cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWV0ZXIpOyB9OwogICAgIEZsb2F0UG9pbnQg
c2NyZWVuUmVsYXRpdmVQb3NpdGlvbigpIGNvbnN0IGZpbmFsOworICAgIEludFBvaW50IHJlbW90
ZUZyYW1lT2Zmc2V0KCkgY29uc3QgZmluYWw7CiAgICAgRmxvYXRSZWN0IHJlbGF0aXZlRnJhbWUo
KSBjb25zdCBmaW5hbDsKICAgICBib29sIGhhc0NhY2hlZFJlbGF0aXZlRnJhbWUoKSBjb25zdCB7
IHJldHVybiBvcHRpb25hbEF0dHJpYnV0ZVZhbHVlPEludFJlY3Q+KEFYUHJvcGVydHlOYW1lOjpS
ZWxhdGl2ZUZyYW1lKS5oYXNfdmFsdWUoKTsgfQogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTI2Myw3
ICsyNjUsNyBAQCBwcml2YXRlOgogICAgIEFYSXNvbGF0ZWRPYmplY3QqIGFjY2Vzc2liaWxpdHlI
aXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3QgZmluYWw7CiAgICAgQVhJc29sYXRlZE9iamVj
dCogZm9jdXNlZFVJRWxlbWVudCgpIGNvbnN0IGZpbmFsOwogICAgIEFYQ29yZU9iamVjdCogaW50
ZXJuYWxMaW5rRWxlbWVudCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG9iamVjdEF0dHJpYnV0ZVZh
bHVlKEFYUHJvcGVydHlOYW1lOjpJbnRlcm5hbExpbmtFbGVtZW50KTsgfQotICAgIEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciByYWRpb0J1dHRvbkdyb3VwKCkgY29uc3QgeyByZXR1cm4gdHJl
ZSgpLT5vYmplY3RzRm9ySURzKHZlY3RvckF0dHJpYnV0ZVZhbHVlPEFYSUQ+KEFYUHJvcGVydHlO
YW1lOjpSYWRpb0J1dHRvbkdyb3VwKSk7IH0KKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3IgcmFkaW9CdXR0b25Hcm91cCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRyZWUoKS0+b2JqZWN0
c0ZvcklEcyh2ZWN0b3JBdHRyaWJ1dGVWYWx1ZTxBWElEPihBWFByb3BlcnR5TmFtZTo6UmFkaW9C
dXR0b25Hcm91cCkpOyB9CiAgICAgQVhJc29sYXRlZE9iamVjdCogc2Nyb2xsQmFyKEFjY2Vzc2li
aWxpdHlPcmllbnRhdGlvbikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nIHBsYWNlaG9sZGVyVmFs
dWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5
TmFtZTo6UGxhY2Vob2xkZXJWYWx1ZSk7IH0KICAgICBTdHJpbmcgZXhwYW5kZWRUZXh0VmFsdWUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFt
ZTo6RXhwYW5kZWRUZXh0VmFsdWUpOyB9CkBAIC00NTYsNyArNDU4LDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIGlzQWNjZXNzaWJpbGl0eUFSSUFHcmlkSW5zdGFuY2UoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3dJbnN0YW5j
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0FjY2Vzc2liaWxp
dHlBUklBR3JpZENlbGxJbnN0YW5jZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9Ci0K
KyAgICBib29sIGlzQVhSZW1vdGVGcmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgYm9vbCBpc05hdGl2ZVRleHRDb250cm9sKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBp
c0xpc3RCb3hPcHRpb24oKSBjb25zdCBmaW5hbDsKICAgICBib29sIGlzTW9ja09iamVjdCgpIGNv
bnN0IGZpbmFsOwpAQCAtNTM3LDcgKzUzOSw5IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG5hbWVB
dHRyaWJ1dGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFBy
b3BlcnR5TmFtZTo6TmFtZUF0dHJpYnV0ZSk7IH0KICNpZiBQTEFURk9STShDT0NPQSkKICAgICBi
b29sIGhhc0FwcGxlUERGQW5ub3RhdGlvbkF0dHJpYnV0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SGFzQXBwbGVQREZBbm5vdGF0aW9u
QXR0cmlidXRlKTsgfQorICAgIFJldGFpblB0cjxpZD4gcmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1l
bnQoKSBjb25zdCBmaW5hbDsKICNlbmRpZgorICAgIGJvb2wgaGFzUmVtb3RlRnJhbWVDaGlsZCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6
SGFzUmVtb3RlRnJhbWVDaGlsZCk7IH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUo
TU9ERUxfRUxFTUVOVCkKICAgICBWZWN0b3I8UmV0YWluUHRyPGlkPj4gbW9kZWxFbGVtZW50Q2hp
bGRyZW4oKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAppbmRleCA2OTY2NTg0NDhmNjUu
LjFiZTNiNzk5MDUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcApAQCAtMzAsNiArMzAsNyBA
QAogCiAjaW5jbHVkZSAiQVhJc29sYXRlZE9iamVjdC5oIgogI2luY2x1ZGUgIkFYTG9nZ2VyLmgi
CisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0
eVRhYmxlUm93LmgiCiAjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24uaCIKICNpbmNsdWRlICJMb2Nh
bEZyYW1lVmlldy5oIgpAQCAtMjI1LDQ2ICsyMjYsMjYgQEAgUmVmUHRyPEFYSXNvbGF0ZWRPYmpl
Y3Q+IEFYSXNvbGF0ZWRUcmVlOjpvYmplY3RGb3JJRChjb25zdCBBWElEIGF4SUQpIGNvbnN0CiAg
ICAgcmV0dXJuIGF4SUQuaXNWYWxpZCgpID8gbV9yZWFkZXJUaHJlYWROb2RlTWFwLmdldChheElE
KSA6IG51bGxwdHI7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFU+Ci1WZWN0b3I8UmVmUHRyPEFY
Q29yZU9iamVjdD4+IEFYSXNvbGF0ZWRUcmVlOjpvYmplY3RzRm9ySURzKGNvbnN0IFUmIGF4SURz
KQorUmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+IEFYSXNvbGF0ZWRUcmVlOjpmZXRjaE9iamVjdEZv
cklERnJvbU1haW5UaHJlYWQoY29uc3QgQVhJRCBheElEKSBjb25zdAogewotICAgIEFTU0VSVCgh
aXNNYWluVGhyZWFkKCkpOwotCi0gICAgVmVjdG9yPFJlZlB0cjxBWENvcmVPYmplY3Q+PiByZXN1
bHQ7Ci0gICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYXhJRHMuc2l6ZSgpKTsKLSAg
ICBmb3IgKGNvbnN0IGF1dG8mIGF4SUQgOiBheElEcykgewotICAgICAgICBSZWZQdHIgb2JqZWN0
ID0gb2JqZWN0Rm9ySUQoYXhJRCk7Ci0gICAgICAgIGlmIChvYmplY3QpIHsKLSAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoV1RGTW92ZShvYmplY3QpKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICB9Ci0KLSAgICAgICAgLy8gVGhlcmUgaXMgbm8gaXNvbGF0ZWQgb2JqZWN0IGZvciB0
aGlzIEFYSUQuIFRoaXMgY2FuIGhhcHBlbiBpZiB0aGUgY29ycmVzcG9uZGluZyBsaXZlIG9iamVj
dCBpcyBpZ25vcmVkLgotICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIGxpdmUgb2JqZWN0IGZvciB0
aGlzIElEIGFuZCBpdCBpcyBhbiBpZ25vcmVkIHRhcmdldCBvZiBhIHJlbGF0aW9uc2hpcCwgY3Jl
YXRlIGFuIGlzb2xhdGVkIG9iamVjdCBmb3IgaXQuCi0gICAgICAgIG9iamVjdCA9IEFjY2Vzc2li
aWxpdHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxSZWZQdHI8QVhJc29sYXRlZE9iamVj
dD4+KFsmYXhJRCwgdGhpc10gKCkgLT4gUmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+IHsKLSAgICAg
ICAgICAgIGF1dG8qIGNhY2hlID0gYXhPYmplY3RDYWNoZSgpOwotICAgICAgICAgICAgaWYgKCFj
YWNoZSB8fCAhY2FjaGUtPnJlbGF0aW9uVGFyZ2V0SURzKCkuY29udGFpbnMoYXhJRCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAgICAgICAgIFJlZlB0ciBheE9iamVj
dCA9IGNhY2hlLT5vYmplY3RGb3JJRChheElEKTsKLSAgICAgICAgICAgIGlmICghYXhPYmplY3Qg
fHwgIWF4T2JqZWN0LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0KLSAgICAgICAgICAgIGF1dG8gb2JqZWN0ID0gQVhJc29sYXRlZE9i
amVjdDo6Y3JlYXRlKCpheE9iamVjdCwgY29uc3RfY2FzdDxBWElzb2xhdGVkVHJlZSo+KHRoaXMp
KTsKLSAgICAgICAgICAgIEFTU0VSVChheE9iamVjdC0+d3JhcHBlcigpKTsKLSAgICAgICAgICAg
IG9iamVjdC0+YXR0YWNoUGxhdGZvcm1XcmFwcGVyKGF4T2JqZWN0LT53cmFwcGVyKCkpOwotICAg
ICAgICAgICAgcmV0dXJuIG9iamVjdDsKLSAgICAgICAgfSk7Ci0gICAgICAgIGlmIChvYmplY3Qp
IHsKLSAgICAgICAgICAgIG1fcmVhZGVyVGhyZWFkTm9kZU1hcC5hZGQoYXhJRCwgKm9iamVjdCk7
Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKFdURk1vdmUob2JqZWN0KSk7Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgcmVzdWx0LnNocmlua1RvRml0KCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICAvLyBUaGVyZSBpcyBubyBpc29sYXRlZCBvYmplY3QgZm9yIHRoaXMgQVhJRC4gVGhpcyBjYW4g
aGFwcGVuIGlmIHRoZSBjb3JyZXNwb25kaW5nIGxpdmUgb2JqZWN0IGlzIGlnbm9yZWQuCisgICAg
Ly8gSWYgdGhlcmUgaXMgYSBsaXZlIG9iamVjdCBmb3IgdGhpcyBJRCBhbmQgaXQgaXMgYW4gaWdu
b3JlZCB0YXJnZXQgb2YgYSByZWxhdGlvbnNoaXAsIGNyZWF0ZSBhbiBpc29sYXRlZCBvYmplY3Qg
Zm9yIGl0LgorICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZVZhbHVlRnJvbU1haW5U
aHJlYWQ8UmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+PihbJmF4SUQsIHRoaXNdICgpIC0+IFJlZlB0
cjxBWElzb2xhdGVkT2JqZWN0PiB7CisgICAgICAgIGF1dG8qIGNhY2hlID0gYXhPYmplY3RDYWNo
ZSgpOworICAgICAgICBpZiAoIWNhY2hlIHx8ICFjYWNoZS0+cmVsYXRpb25UYXJnZXRJRHMoKS5j
b250YWlucyhheElEKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIFJl
ZlB0ciBheE9iamVjdCA9IGNhY2hlLT5vYmplY3RGb3JJRChheElEKTsKKyAgICAgICAgaWYgKCFh
eE9iamVjdCB8fCAhYXhPYmplY3QtPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGF1dG8gb2JqZWN0ID0gQVhJc29sYXRlZE9i
amVjdDo6Y3JlYXRlKCpheE9iamVjdCwgY29uc3RfY2FzdDxBWElzb2xhdGVkVHJlZSo+KHRoaXMp
KTsKKyAgICAgICAgQVNTRVJUKGF4T2JqZWN0LT53cmFwcGVyKCkpOworICAgICAgICBvYmplY3Qt
PmF0dGFjaFBsYXRmb3JtV3JhcHBlcihheE9iamVjdC0+d3JhcHBlcigpKTsKKyAgICAgICAgcmV0
dXJuIG9iamVjdDsKKyAgICB9KTsKIH0KIAotCiB2b2lkIEFYSXNvbGF0ZWRUcmVlOjpnZW5lcmF0
ZVN1YnRyZWUoQWNjZXNzaWJpbGl0eU9iamVjdCYgYXhPYmplY3QpCiB7CiAgICAgQVhUUkFDRSgi
QVhJc29sYXRlZFRyZWU6OmdlbmVyYXRlU3VidHJlZSJfcyk7CkBAIC02NjAsNiArNjQxLDEyIEBA
IHZvaWQgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZU5vZGVQcm9wZXJ0aWVzKEFYQ29yZU9iamVjdCYg
YXhPYmplY3QsIGNvbnN0IEFYUHJvcGVyCiAgICAgICAgIGNhc2UgQVhQcm9wZXJ0eU5hbWU6OlBv
c0luU2V0OgogICAgICAgICAgICAgcHJvcGVydHlNYXAuc2V0KEFYUHJvcGVydHlOYW1lOjpQb3NJ
blNldCwgYXhPYmplY3QucG9zSW5TZXQoKSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBBWFByb3BlcnR5TmFtZTo6UmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQ6CisgICAgICAg
ICAgICBwcm9wZXJ0eU1hcC5zZXQoQVhQcm9wZXJ0eU5hbWU6OlJlbW90ZUZyYW1lUGxhdGZvcm1F
bGVtZW50LCBheE9iamVjdC5yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIEFYUHJvcGVydHlOYW1lOjpIYXNSZW1vdGVGcmFtZUNo
aWxkOgorICAgICAgICAgICAgcHJvcGVydHlNYXAuc2V0KEFYUHJvcGVydHlOYW1lOjpIYXNSZW1v
dGVGcmFtZUNoaWxkLCBheE9iamVjdC5oYXNSZW1vdGVGcmFtZUNoaWxkKCkpOworICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQVhQcm9wZXJ0eU5hbWU6OlJvbGVEZXNjcmlwdGlvbjoK
ICAgICAgICAgICAgIHByb3BlcnR5TWFwLnNldChBWFByb3BlcnR5TmFtZTo6Um9sZURlc2NyaXB0
aW9uLCBheE9iamVjdC5yb2xlRGVzY3JpcHRpb24oKS5pc29sYXRlZENvcHkoKSk7CiAgICAgICAg
ICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4IGE0MTc5Mjc5NzhkMi4uNmI0YzVl
ODMzMWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVk
dHJlZS9BWElzb2xhdGVkVHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKQEAgLTEwNCw2ICsxMDQsNyBAQCBlbnVtIGNs
YXNzIEFYUHJvcGVydHlOYW1lIDogdWludDE2X3QgewogICAgIEhhc0hpZ2hsaWdodGluZywKICAg
ICBIYXNJdGFsaWNGb250LAogICAgIEhhc1BsYWluVGV4dCwKKyAgICBIYXNSZW1vdGVGcmFtZUNo
aWxkLAogICAgIEhhc1VuZGVybGluZSwKICAgICBIZWFkZXJDb250YWluZXIsCiAgICAgSGVhZGlu
Z0xldmVsLApAQCAtMjAxLDYgKzIwMiw4IEBAIGVudW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUgOiB1
aW50MTZfdCB7CiAgICAgUHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaCwKICAgICBSYWRp
b0J1dHRvbkdyb3VwLAogICAgIFJlbGF0aXZlRnJhbWUsCisgICAgUmVtb3RlRnJhbWVPZmZzZXQs
CisgICAgUmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQsCiAgICAgUm9sZVZhbHVlLAogICAgIFJv
bGVQbGF0Zm9ybVN0cmluZywKICAgICBSb2xlRGVzY3JpcHRpb24sCkBAIC0yNTcsNiArMjYwLDcg
QEAgdXNpbmcgQVhQcm9wZXJ0eU5hbWVTZXQgPSBIYXNoU2V0PEFYUHJvcGVydHlOYW1lLCBJbnRI
YXNoPEFYUHJvcGVydHlOYW1lPiwgV1RGOjoKIHVzaW5nIEFYUHJvcGVydHlWYWx1ZVZhcmlhbnQg
PSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIEFYSUQsIFN0cmluZywgYm9vbCwgaW50LCB1
bnNpZ25lZCwgZG91YmxlLCBmbG9hdCwgdWludDY0X3QsIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0
ZSwgQ29sb3IsIFVSTCwgTGF5b3V0UmVjdCwgRmxvYXRQb2ludCwgRmxvYXRSZWN0LCBJbnRQb2lu
dCwgSW50UmVjdCwgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4sIFZlY3RvcjxBY2Nlc3Np
YmlsaXR5VGV4dD4sIFZlY3RvcjxBWElEPiwgVmVjdG9yPHN0ZDo6cGFpcjxBWElELCBBWElEPj4s
IFZlY3RvcjxTdHJpbmc+LCBQYXRoLCBPcHRpb25TZXQ8QVhBbmNlc3RvckZsYWc+LCBJbnNpZGVM
aW5rLCBWZWN0b3I8VmVjdG9yPEFYSUQ+PiwgQ2hhcmFjdGVyUmFuZ2UsIHN0ZDo6cGFpcjxBWElE
LCBDaGFyYWN0ZXJSYW5nZT4KICNpZiBQTEFURk9STShDT0NPQSkKICAgICAsIFJldGFpblB0cjxO
U0F0dHJpYnV0ZWRTdHJpbmc+CisgICAgLCBSZXRhaW5QdHI8aWQ+CiAjZW5kaWYKICNpZiBFTkFC
TEUoQVhfVEhSRUFEX1RFWFRfQVBJUykKICAgICAsIEFYVGV4dFJ1bnMKQEAgLTM5Nyw2ICs0MDEs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlRW1wdHlDb250ZW50KEFjY2Vzc2liaWxpdHlP
YmplY3QmKTsKICAgICBjb25zdGV4cHIgYm9vbCBpc1VwZGF0aW5nU3VidHJlZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcm9vdE9mU3VidHJlZUJlaW5nVXBkYXRlZDsgfQogICAgIGNvbnN0ZXhwciB2b2lk
IHVwZGF0aW5nU3VidHJlZShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCkgeyBtX3Jvb3RP
ZlN1YnRyZWVCZWluZ1VwZGF0ZWQgPSBheE9iamVjdDsgfQorICAgIFJlZlB0cjxBWElzb2xhdGVk
T2JqZWN0PiBmZXRjaE9iamVjdEZvcklERnJvbU1haW5UaHJlYWQoY29uc3QgQVhJRCkgY29uc3Q7
CiAKICAgICBlbnVtIGNsYXNzIEF0dGFjaFdyYXBwZXIgOiBib29sIHsgT25NYWluVGhyZWFkLCBP
bkFYVGhyZWFkIH07CiAgICAgc3RydWN0IE5vZGVDaGFuZ2UgewpAQCAtNDk3LDYgKzUwMiwzMCBA
QCBpbmxpbmUgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6dHJlZUZvclBh
Z2VJRChzdGQ6Om9wdGlvbmFsPFBhZ2VJZAogICAgIHJldHVybiBwYWdlSUQgPyB0cmVlRm9yUGFn
ZUlEKCpwYWdlSUQpIDogbnVsbHB0cjsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVT4KK2lubGlu
ZSBWZWN0b3I8UmVmUHRyPEFYQ29yZU9iamVjdD4+IEFYSXNvbGF0ZWRUcmVlOjpvYmplY3RzRm9y
SURzKGNvbnN0IFUmIGF4SURzKQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworCisg
ICAgVmVjdG9yPFJlZlB0cjxBWENvcmVPYmplY3Q+PiByZXN1bHQ7CisgICAgcmVzdWx0LnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkoYXhJRHMuc2l6ZSgpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGF4
SUQgOiBheElEcykgeworICAgICAgICBSZWZQdHIgb2JqZWN0ID0gb2JqZWN0Rm9ySUQoYXhJRCk7
CisgICAgICAgIGlmIChvYmplY3QpIHsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoV1RGTW92
ZShvYmplY3QpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAg
b2JqZWN0ID0gZmV0Y2hPYmplY3RGb3JJREZyb21NYWluVGhyZWFkKGF4SUQpOworICAgICAgICBp
ZiAob2JqZWN0KSB7CisgICAgICAgICAgICBtX3JlYWRlclRocmVhZE5vZGVNYXAuYWRkKGF4SUQs
ICpvYmplY3QpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChXVEZNb3ZlKG9iamVjdCkpOwor
ICAgICAgICB9CisgICAgfQorICAgIHJlc3VsdC5zaHJpbmtUb0ZpdCgpOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9tYWMvQVhJc29sYXRl
ZE9iamVjdE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVl
L21hYy9BWElzb2xhdGVkT2JqZWN0TWFjLm1tCmluZGV4IGFkYjdlYzY0ODM0NS4uZTAyZGEwZDEx
MmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9tYWMvQVhJc29sYXRlZE9iamVjdE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9tYWMvQVhJc29sYXRlZE9iamVjdE1hYy5tbQpAQCAtNjMsNiAr
NjMsOCBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVQbGF0Zm9ybVByb3BlcnRp
ZXMoY29uc3QgUmVmPGNvbnN0IEFjY2Vzc2liaWxpdAogICAgICAgICB9CiAgICAgfQogCisgICAg
c2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50LCBv
YmplY3QtPnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkpOworCiAgICAgLy8gQ2FjaGUgdGhl
IFN0cmluZ1ZhbHVlIG9ubHkgaWYgaXQgZGlmZmVycyBmcm9tIHRoZSBBdHRyaWJ1dGVkVGV4dC4K
ICAgICBhdXRvIHZhbHVlID0gb2JqZWN0LT5zdHJpbmdWYWx1ZSgpOwogICAgIGlmICghYXR0cmli
dXRlZFRleHQgfHwgdmFsdWUgIT0gU3RyaW5nKFthdHRyaWJ1dGVkVGV4dCBzdHJpbmddKSkKQEAg
LTIwMiw2ICsyMDQsMTEgQEAgdW5zaWduZWQgQVhJc29sYXRlZE9iamVjdDo6dGV4dExlbmd0aCgp
IGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKK1JldGFpblB0cjxpZD4gQVhJc29sYXRlZE9iamVj
dDo6cmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKSBjb25zdAoreworICAgIHJldHVybiBwcm9w
ZXJ0eVZhbHVlPFJldGFpblB0cjxpZD4+KEFYUHJvcGVydHlOYW1lOjpSZW1vdGVGcmFtZVBsYXRm
b3JtRWxlbWVudCk7Cit9CisKIFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+IEFYSXNvbGF0
ZWRPYmplY3Q6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UoQVhUZXh0TWFya2Vy
UmFuZ2UmJiBtYXJrZXJSYW5nZSwgU3BlbGxDaGVjayBzcGVsbENoZWNrKSBjb25zdAogewogICAg
IGlmICghbWFya2VyUmFuZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbQppbmRleCBiYTJhY2NkODBkMDQu
LmRhODQ0ZjJmZDM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tCkBAIC0yNiw2ICsyNiw3IEBACiAj
aW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKIAorI2lt
cG9ydCAiQVhSZW1vdGVGcmFtZS5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUxhYmVsLmgiCiAj
aW1wb3J0ICJBY2Nlc3NpYmlsaXR5TGlzdC5oIgogI2ltcG9ydCAiQ29sb3JDb2NvYS5oIgpAQCAt
NTEsNiArNTIsNyBAQAogI2ltcG9ydCAiV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMu
aCIKICNpbXBvcnQgIldpZGdldC5oIgogCisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TQWNjZXNz
aWJpbGl0eVNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNTcGVsbENoZWNrZXJTUEkuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzQ5LDYgKzc1MSwzMSBAQCBSZXRhaW5QdHI8TlNB
dHRyaWJ1dGVkU3RyaW5nPiBhdHRyaWJ1dGVkU3RyaW5nQ3JlYXRlKE5vZGUqIG5vZGUsIFN0cmlu
Z1ZpZXcgdGV4dAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0ZDo6c3Bhbjxjb25zdCB1aW50
OF90PiBBWFJlbW90ZUZyYW1lOjpnZW5lcmF0ZVJlbW90ZVRva2VuKCkgY29uc3QKK3sKKyNpZiBQ
TEFURk9STShNQUMpCisgICAgLy8gV2UgdXNlIHRoZSBwYXJlbnQncyB3cmFwcGVyIHNvIHRoYXQg
dGhlIHJlbW90ZSBmcmFtZSBhY3RzIGFzIGEgcGFzcyB0aHJvdWdoIGZvciB0aGUgcmVtb3RlIHRv
a2VuIGJyaWRnZS4KKyAgICBOU0RhdGEgKmRhdGEgPSBbTlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlF
bGVtZW50IHJlbW90ZVRva2VuRm9yTG9jYWxVSUVsZW1lbnQ6cGFyZW50T2JqZWN0KCktPndyYXBw
ZXIoKV07CisgICAgcmV0dXJuIHN0ZDo6c3BhbihzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4o
W2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7CisjZWxzZQorICAgIC8vIEZJWE1FOiBTdXBw
b3J0IGlPUworICAgIHJldHVybiB7IH0KKyNlbmRpZgorfQorCit2b2lkIEFYUmVtb3RlRnJhbWU6
OmluaXRpYWxpemVQbGF0Zm9ybUVsZW1lbnRXaXRoUmVtb3RlVG9rZW4oc3RkOjpzcGFuPGNvbnN0
IHVpbnQ4X3Q+IHRva2VuLCBpbnQgcHJvY2Vzc0lkZW50aWZpZXIpCit7CisjaWYgUExBVEZPUk0o
TUFDKQorICAgIG1fcHJvY2Vzc0lkZW50aWZpZXIgPSBwcm9jZXNzSWRlbnRpZmllcjsKKyAgICBp
ZiAoW3dyYXBwZXIoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGFjY2Vzc2liaWxpdHlT
ZXRQcmVzZW50ZXJQcm9jZXNzSWRlbnRpZmllcjopXSkKKyAgICAgICAgWyhpZCl3cmFwcGVyKCkg
YWNjZXNzaWJpbGl0eVNldFByZXNlbnRlclByb2Nlc3NJZGVudGlmaWVyOnByb2Nlc3NJZGVudGlm
aWVyXTsKKyAgICBOU0RhdGEgKnRva2VuRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczp0b2tl
bi5kYXRhKCkgbGVuZ3RoOnRva2VuLnNpemUoKV07CisgICAgbV9yZW1vdGVGcmFtZVBsYXRmb3Jt
RWxlbWVudCA9IGFkb3B0TlMoW1tOU0FjY2Vzc2liaWxpdHlSZW1vdGVVSUVsZW1lbnQgYWxsb2Nd
IGluaXRXaXRoUmVtb3RlVG9rZW46dG9rZW5EYXRhXSk7CisKKyAgICBheE9iamVjdENhY2hlKCkt
Pm9uUmVtb3RlRnJhbWVJbml0aWFsaXplZCgqdGhpcyk7CisjZW5kaWYKK30KKwogbmFtZXNwYWNl
IEFjY2Vzc2liaWxpdHkgewogCiBQbGF0Zm9ybVJvbGVNYXAgY3JlYXRlUGxhdGZvcm1Sb2xlTWFw
KCkKQEAgLTg5MSw2ICs5MTgsNyBAQCBQbGF0Zm9ybVJvbGVNYXAgY3JlYXRlUGxhdGZvcm1Sb2xl
TWFwKCkKICAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6U3VwZXJzY3JpcHQsIE5TQWNjZXNz
aWJpbGl0eUdyb3VwUm9sZSB9LAogICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpNb2RlbCwg
TlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCiAgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6
OlN1Z2dlc3Rpb24sIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vz
c2liaWxpdHlSb2xlOjpSZW1vdGVGcmFtZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCiAg
ICAgfTsKICAgICBQbGF0Zm9ybVJvbGVNYXAgcm9sZU1hcDsKICAgICBmb3IgKGF1dG8mIHJvbGUg
OiByb2xlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQppbmRleCA2
MzU3ZmE3YzI3MWIuLmYxNDI0NWZjM2I2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyQmFzZS5tbQpAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCAiQVhDb3JlT2JqZWN0Lmgi
CiAjaW1wb3J0ICJBWElzb2xhdGVkT2JqZWN0LmgiCiAjaW1wb3J0ICJBWE9iamVjdENhY2hlLmgi
CisjaW1wb3J0ICJBWFJlbW90ZUZyYW1lLmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5QVJJQUdy
aWRSb3cuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlMaXN0LmgiCiAjaW1wb3J0ICJBY2Nlc3Np
YmlsaXR5TGlzdEJveC5oIgpAQCAtMjY1LDEzICsyNjYsMTMgQEAgTlNBcnJheSAqbWFrZU5TQXJy
YXkoY29uc3QgV2ViQ29yZTo6QVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImIGMKICAgICAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICAgICAgYXV0byB3cmFwcGVyID0g
Y2hpbGQtPndyYXBwZXIoKTsKLQogICAgICAgICAvLyBXZSB3YW50IHRvIHJldHVybiB0aGUgYXR0
YWNobWVudCB2aWV3IGluc3RlYWQgb2YgdGhlIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIGF0dGFj
aG1lbnQsCiAgICAgICAgIC8vIG90aGVyd2lzZSwgd2UgZ2V0IHBhbGluZHJvbWUgZXJyb3JzIGlu
IHRoZSBBWCBoaWVyYXJjaHkuCiAgICAgICAgIGlmIChjaGlsZC0+aXNBdHRhY2htZW50KCkpIHsK
ICAgICAgICAgICAgIGlmIChpZCBhdHRhY2htZW50VmlldyA9IHdyYXBwZXIuYXR0YWNobWVudFZp
ZXcpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGF0dGFjaG1lbnRWaWV3OwotICAgICAgICB9Cisg
ICAgICAgIH0gZWxzZSBpZiAoY2hpbGQtPmlzUmVtb3RlRnJhbWUoKSkKKyAgICAgICAgICAgIHJl
dHVybiBjaGlsZC0+cmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKS5nZXQoKTsKIAogICAgICAg
ICByZXR1cm4gd3JhcHBlcjsKICAgICB9KS5hdXRvcmVsZWFzZSgpOwpAQCAtMzg5LDcgKzM5MCw3
IEBAIE5TQXJyYXkgKm1ha2VOU0FycmF5KGNvbnN0IFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6QWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBjCiAtIChCT09MKWlzSXNvbGF0ZWRPYmplY3QKIHsK
ICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQotICAgIGF1dG8qIGJhY2tp
bmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHIgYmFja2luZ09iamVj
dCA9IGR5bmFtaWNEb3duY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0PihzZWxmLmJhc2VVcGRhdGVC
YWNraW5nU3RvcmUpOwogICAgIHJldHVybiBiYWNraW5nT2JqZWN0ICYmIGJhY2tpbmdPYmplY3Qt
PmlzQVhJc29sYXRlZE9iamVjdEluc3RhbmNlKCk7CiAjZWxzZQogICAgIHJldHVybiBOTzsKQEAg
LTUyMyw3ICs1MjQsNyBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0UGF0aFRvU2NyZWVuU3BhY2VGdW5j
dGlvbihQYXRoQ29udmVyc2lvbkluZm8mIGNvbnZlcnNpb24sIGNvbgogCiAtIChDR1JlY3QpY29u
dmVydFJlY3RUb1NwYWNlOihjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKXJlY3Qgc3BhY2U6KEFj
Y2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2Upc3BhY2UKIHsKLSAgICBhdXRvKiBiYWNraW5nT2Jq
ZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgUmVmUHRyIGJhY2tpbmdPYmplY3QgPSBk
eW5hbWljRG93bmNhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdD4oc2VsZi5iYXNlVXBkYXRlQmFja2lu
Z1N0b3JlKTsKICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCiAgICAgICAgIHJldHVybiBDR1JlY3Ra
ZXJvOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDZjNWU2
YjdhY2Q5Yy4uNzUwMmQ5YTBlNDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ck1hYy5tbQpAQCAtMzQsNiArMzQsNyBAQAogI2ltcG9ydCAiQVhJc29sYXRlZE9iamVjdC5oIgog
I2ltcG9ydCAiQVhMb2dnZXIuaCIKICNpbXBvcnQgIkFYT2JqZWN0Q2FjaGUuaCIKKyNpbXBvcnQg
IkFYUmVtb3RlRnJhbWUuaCIKICNpbXBvcnQgIkFYVGV4dE1hcmtlci5oIgogI2ltcG9ydCAiQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkUm93LmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5TGFiZWwuaCIK
QEAgLTQ3OSw2ICs0ODAsMTAgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAjZGVmaW5lIE5T
QWNjZXNzaWJpbGl0eVRleHRJbnB1dE1hcmtlZFRleHRNYXJrZXJSYW5nZUF0dHJpYnV0ZSBAIkFY
VGV4dElucHV0TWFya2VkVGV4dE1hcmtlclJhbmdlIgogI2VuZGlmCiAKKyNpZm5kZWYga0FYQ29u
dmVydFJlbGF0aXZlRnJhbWVQYXJhbWV0ZXJpemVkQXR0cmlidXRlCisjZGVmaW5lIGtBWENvbnZl
cnRSZWxhdGl2ZUZyYW1lUGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBAIkFYQ29udmVydFJlbGF0aXZl
RnJhbWUiCisjZW5kaWYKKwogQGltcGxlbWVudGF0aW9uIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyCiAKIC0gKHZvaWQpZGV0YWNoCkBAIC02OTIsNyArNjk3LDcgQEAgc3RhdGljIFJldGFp
blB0cjxBWFRleHRNYXJrZXJSZWY+IHByZXZpb3VzVGV4dE1hcmtlcihBWE9iamVjdENhY2hlKiBj
YWNoZSwgY29uc3QKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgYXV0byog
YmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0cjxBWENvcmVP
YmplY3Q+IGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKICAgICBpZiAoIWJh
Y2tpbmdPYmplY3QpCiAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTEyNTYsNyArMTI2MSw3IEBA
IEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogCiAtIChOU0FycmF5ICopcmVu
ZGVyV2lkZ2V0Q2hpbGRyZW4KIHsKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJh
Y2tpbmdPYmplY3Q7CisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNl
bGYuYXhCYWNraW5nT2JqZWN0OwogICAgIGlmICghYmFja2luZ09iamVjdCB8fCAhYmFja2luZ09i
amVjdC0+aXNXaWRnZXQoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMTI3OSw3ICsxMjg0
LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKIC0gKGlkKXJlbW90ZUFj
Y2Vzc2liaWxpdHlQYXJlbnRPYmplY3QKIHsKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2Vs
Zi5heEJhY2tpbmdPYmplY3Q7CisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2luZ09iamVj
dCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OwogICAgIHJldHVybiBiYWNraW5nT2JqZWN0ID8gYmFj
a2luZ09iamVjdC0+cmVtb3RlUGFyZW50T2JqZWN0KCkgOiBuaWw7CiB9CiAKQEAgLTEyOTYsNyAr
MTMwMSw3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRUb1ZlY3RvcihOU0FycmF5KiBhcnJheSwgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoCiAKIC0gKEFYVGV4dE1hcmtlclJhbmdl
UmVmKXNlbGVjdGVkVGV4dE1hcmtlclJhbmdlCiB7Ci0gICAgYXV0byogYmFja2luZ09iamVjdCA9
IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+IGJhY2tpbmdP
YmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCiAg
ICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTEzNjYsMTIgKzEzNzEsMTggQEAgc3RhdGljIHZvaWQg
V2ViVHJhbnNmb3JtQ0dQYXRoVG9OU0JlemllclBhdGgodm9pZCogaW5mbywgY29uc3QgQ0dQYXRo
RWxlbWVudCAqZWwKIAogLSAoTlNTdHJpbmcqKXJvbGUKIHsKKyAgICBSZWZQdHI8QVhDb3JlT2Jq
ZWN0PiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgaWYgKCFiYWNr
aW5nT2JqZWN0KQorICAgICAgICByZXR1cm4gbmlsOworCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19CRUdJTgotICAgIGlmIChzZWxmLmF4QmFja2luZ09iamVjdC0+aXNBdHRhY2htZW50
KCkpCisgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzQXR0YWNobWVudCgpKQogICAgICAgICByZXR1
cm4gW1tzZWxmIGF0dGFjaG1lbnRWaWV3XSBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNB
Y2Nlc3NpYmlsaXR5Um9sZUF0dHJpYnV0ZV07CisgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzUmVt
b3RlRnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIFtiYWNraW5nT2JqZWN0LT5yZW1vdGVGcmFtZVBs
YXRmb3JtRWxlbWVudCgpLmdldCgpIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vz
c2liaWxpdHlSb2xlQXR0cmlidXRlXTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VO
RAogCi0gICAgTlNTdHJpbmcgKnN0cmluZyA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5yb2xlUGxh
dGZvcm1TdHJpbmcoKTsKKyAgICBOU1N0cmluZyAqc3RyaW5nID0gYmFja2luZ09iamVjdC0+cm9s
ZVBsYXRmb3JtU3RyaW5nKCk7CiAgICAgaWYgKHN0cmluZy5sZW5ndGgpCiAgICAgICAgIHJldHVy
biBzdHJpbmc7CiAgICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eVVua25vd25Sb2xlOwpAQCAtMTM3
OSw3ICsxMzkwLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKIC0gKEJP
T0wpaXNFbXB0eUdyb3VwCiB7Ci0gICAgYXV0byogYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNr
aW5nT2JqZWN0OworICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+IGJhY2tpbmdPYmplY3QgPSBzZWxm
LmF4QmFja2luZ09iamVjdDsKICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIApAQCAtMTM4OCw2ICsxMzk5LDkgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfRU5ECiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogCisgICAgaWYgKGJhY2tp
bmdPYmplY3QtPmlzUmVtb3RlRnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAg
cmV0dXJuIFtbc2VsZiByb2xlXSBpc0VxdWFsOk5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZV0KICAg
ICAgICAgJiYgYmFja2luZ09iamVjdC0+Y2hpbGRyZW4oKS5pc0VtcHR5KCkKICAgICAgICAgJiYg
IVtbc2VsZiByZW5kZXJXaWRnZXRDaGlsZHJlbl0gY291bnRdOwpAQCAtMTM5Niw3ICsxNDEwLDcg
QEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19CRUdJTgogLSAoTlNTdHJpbmcqKXN1YnJvbGUKIHsKLSAgICBhdXRvKiBiYWNr
aW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgUmVmUHRyPEFYQ29yZU9iamVj
dD4gYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OwogICAgIGlmICghYmFja2lu
Z09iamVjdCkKICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMTQxMyw3ICsxNDI3LDcgQEAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKIC0gKE5TU3RyaW5nKilyb2xlRGVzY3Jp
cHRpb24KIHsKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7
CisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5n
T2JqZWN0OwogICAgIGlmICghYmFja2luZ09iamVjdCkKICAgICAgICAgcmV0dXJuIG5pbDsKIApA
QCAtMTQyMSw2ICsxNDM1LDggQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4K
ICAgICAvLyBhdHRhY2htZW50cyBoYXZlIHRoZSBBWEltYWdlIHJvbGUsIGJ1dCBhIGRpZmZlcmVu
dCBzdWJyb2xlCiAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzQXR0YWNobWVudCgpKQogICAgICAg
ICByZXR1cm4gW1tzZWxmIGF0dGFjaG1lbnRWaWV3XSBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6TlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlXTsKKyAgICBpZiAoYmFj
a2luZ09iamVjdC0+aXNSZW1vdGVGcmFtZSgpKQorICAgICAgICByZXR1cm4gW2JhY2tpbmdPYmpl
Y3QtPnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkuZ2V0KCkgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJvbGVEZXNjcmlwdGlvbkF0dHJpYnV0ZV07CiBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgIFN0cmluZyByb2xlRGVzY3JpcHRp
b24gPSBiYWNraW5nT2JqZWN0LT5yb2xlRGVzY3JpcHRpb24oKTsKQEAgLTE0NzMsNiArMTQ4OSwy
OCBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICByZXR1cm4gYXhTY3Jv
bGxWaWV3ID8gW2F4U2Nyb2xsVmlldy0+cGxhdGZvcm1XaWRnZXQoKSB3aW5kb3ddIDogbmlsOwog
fQogCistIChOU0FycmF5ICopX3RyYW5zZm9ybVNwZWNpYWxDaGlsZHJlbkNhc2VzOihSZWZQdHI8
QVhDb3JlT2JqZWN0PiliYWNraW5nT2JqZWN0Cit7CisjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQp
CisgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzTW9kZWwoKSkgeworICAgICAgICBhdXRvIG1vZGVs
Q2hpbGRyZW4gPSBiYWNraW5nT2JqZWN0LT5tb2RlbEVsZW1lbnRDaGlsZHJlbigpOworICAgICAg
ICBpZiAobW9kZWxDaGlsZHJlbi5zaXplKCkpIHsKKyAgICAgICAgICAgIHJldHVybiBjcmVhdGVO
U0FycmF5KFdURk1vdmUobW9kZWxDaGlsZHJlbiksIFtdIChhdXRvJiYgY2hpbGQpIC0+IGlkIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGQuZ2V0KCk7CisgICAgICAgICAgICB9KS5hdXRv
cmVsZWFzZSgpOworICAgICAgICB9CisgICAgfQorI2VuZGlmCisKKyAgICBjb25zdCBhdXRvJiBj
aGlsZHJlbiA9IGJhY2tpbmdPYmplY3QtPmNoaWxkcmVuKCk7CisgICAgaWYgKCFjaGlsZHJlbi5z
aXplKCkpIHsKKyAgICAgICAgaWYgKE5TQXJyYXkgKmNoaWxkcmVuID0gW3NlbGYgcmVuZGVyV2lk
Z2V0Q2hpbGRyZW5dKQorICAgICAgICAgICAgcmV0dXJuIGNoaWxkcmVuOworICAgIH0KKworICAg
IHJldHVybiBuaWw7Cit9CisKIC8vIEZJWE1FOiBzcGxpdCB1cCB0aGlzIGZ1bmN0aW9uIGluIGEg
YmV0dGVyIHdheS4KIC8vIHN1Z2dlc3Rpb25zOiBVc2UgYSBoYXNoIHRhYmxlIHRoYXQgbWFwcyBh
dHRyaWJ1dGUgbmFtZXMgdG8gZnVuY3Rpb24gY2FsbHMsCiAvLyBvciBtYXliZSBwb2ludGVycyB0
byBtZW1iZXIgZnVuY3Rpb25zCkBAIC0xNTMxLDIyICsxNTY5LDkgQEAgQUxMT1dfREVQUkVDQVRF
RF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgfQogCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZV0gfHwgW2F0dHJp
YnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuSW5OYXZpZ2F0
aW9uT3JkZXJBdHRyaWJ1dGVdKSB7Ci0jaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCi0gICAgICAg
IGlmIChiYWNraW5nT2JqZWN0LT5pc01vZGVsKCkpIHsKLSAgICAgICAgICAgIGF1dG8gbW9kZWxD
aGlsZHJlbiA9IGJhY2tpbmdPYmplY3QtPm1vZGVsRWxlbWVudENoaWxkcmVuKCk7Ci0gICAgICAg
ICAgICBpZiAobW9kZWxDaGlsZHJlbi5zaXplKCkpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4g
Y3JlYXRlTlNBcnJheShXVEZNb3ZlKG1vZGVsQ2hpbGRyZW4pLCBbXSAoYXV0byYmIGNoaWxkKSAt
PiBpZCB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZC5nZXQoKTsKLSAgICAgICAg
ICAgICAgICB9KS5hdXRvcmVsZWFzZSgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0jZW5k
aWYKLQotICAgICAgICBjb25zdCBhdXRvJiBjaGlsZHJlbiA9IGJhY2tpbmdPYmplY3QtPmNoaWxk
cmVuKCk7Ci0gICAgICAgIGlmIChjaGlsZHJlbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGlm
IChOU0FycmF5ICp3aWRnZXRDaGlsZHJlbiA9IFtzZWxmIHJlbmRlcldpZGdldENoaWxkcmVuXSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gd2lkZ2V0Q2hpbGRyZW47Ci0gICAgICAgIH0KKyAgICAg
ICAgTlNBcnJheSAqc3BlY2lhbENoaWxkcmVuID0gW3NlbGYgX3RyYW5zZm9ybVNwZWNpYWxDaGls
ZHJlbkNhc2VzOmJhY2tpbmdPYmplY3RdOworICAgICAgICBpZiAoc3BlY2lhbENoaWxkcmVuLmNv
dW50KQorICAgICAgICAgICAgcmV0dXJuIHNwZWNpYWxDaGlsZHJlbjsKIAogICAgICAgICAvLyBU
aGUgdHJlZSdzIChBWE91dGxpbmUpIGNoaWxkcmVuIGFyZSBzdXBwb3NlZCB0byBiZSBpdHMgcm93
cyBhbmQgY29sdW1ucy4KICAgICAgICAgLy8gVGhlIEFSSUEgc3BlYyBkb2Vzbid0IGhhdmUgY29s
dW1ucywgc28gd2UganVzdCBuZWVkIHJvd3MuCkBAIC0xNTU3LDcgKzE1ODIsNyBAQCBBTExPV19E
RVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgaWYgKGJhY2tpbmdPYmplY3Qt
PmlzVHJlZUl0ZW0oKSkKICAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShiYWNraW5nT2Jq
ZWN0LT5hcmlhVHJlZUl0ZW1Db250ZW50KCkpOwogCi0gICAgICAgIHJldHVybiBtYWtlTlNBcnJh
eShjaGlsZHJlbik7CisgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT5j
aGlsZHJlbigpKTsKICAgICB9CiAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOiBOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlXSkgewpAQCAtMTcx
MywxNiArMTczOCwxNCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAg
ICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlFbmFi
bGVkQXR0cmlidXRlXSkKICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDog
YmFja2luZ09iamVjdC0+aXNFbmFibGVkKCldOwogCi0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5U2l6ZUF0dHJpYnV0ZV0pIHsKLSAgICAgICAg
YXV0byBzaXplID0gYmFja2luZ09iamVjdC0+c2l6ZSgpOwotICAgICAgICByZXR1cm4gW05TVmFs
dWUgdmFsdWVXaXRoU2l6ZTpOU01ha2VTaXplKHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSld
OwotICAgIH0KKyAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNz
aWJpbGl0eVNpemVBdHRyaWJ1dGVdKQorICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRo
U2l6ZTooQ0dTaXplKWJhY2tpbmdPYmplY3QtPnNpemUoKV07CiAKICAgICBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVByaW1hcnlTY3JlZW5IZWlnaHRB
dHRyaWJ1dGVdKQogICAgICAgICByZXR1cm4gQChiYWNraW5nT2JqZWN0LT5wcmltYXJ5U2NyZWVu
UmVjdCgpLmhlaWdodCgpKTsKIAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJp
bmc6TlNBY2Nlc3NpYmlsaXR5UG9zaXRpb25BdHRyaWJ1dGVdKQotICAgICAgICByZXR1cm4gQChD
R1BvaW50KGJhY2tpbmdPYmplY3QtPnNjcmVlblJlbGF0aXZlUG9zaXRpb24oKSkpOworICAgICAg
ICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUG9pbnQ6KENHUG9pbnQpYmFja2luZ09iamVjdC0+
c2NyZWVuUmVsYXRpdmVQb3NpdGlvbigpXTsKIAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0Vx
dWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5UGF0aEF0dHJpYnV0ZV0pCiAgICAgICAgIHJldHVy
biBbc2VsZiBwYXRoXTsKQEAgLTIyMzcsNiArMjI2MCwxMCBAQCBBTExPV19ERVBSRUNBVEVEX0lN
UExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgcmV0dXJuIHJhbmdlID8gcmFuZ2UucGxhdGZvcm1E
YXRhKCkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpIDogbmlsOwogICAgIH0KIAorICAgIC8vIFZvaWNl
T3ZlciBwcm9wZXJ0eSB0byBpZ25vcmUgY2VydGFpbiBncm91cHMuCisgICAgaWYgKFthdHRyaWJ1
dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpAIkFYQXV0b0ludGVyYWN0YWJsZSJdKQorICAgICAgICBy
ZXR1cm4gQChiYWNraW5nT2JqZWN0LT5pc1JlbW90ZUZyYW1lKCkpOworCiAgICAgLy8gVXNlZCBi
eSBMYXlvdXRUZXN0cyBvbmx5LCBub3QgYnkgQVQgY2xpZW50cy4KICAgICBpZiAoVU5MSUtFTFko
W2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiQVhBUklBUm9sZSJdKSkKICAgICAgICAg
cmV0dXJuIGJhY2tpbmdPYmplY3QtPmNvbXB1dGVkUm9sZVN0cmluZygpOwpAQCAtMjMzMCw3ICsy
MzU3LDggQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIGlm
IChheE9iamVjdC0+aXNBdHRhY2htZW50KCkpIHsKICAgICAgICAgICAgIGlmIChpZCBhdHRhY2ht
ZW50VmlldyA9IFtheE9iamVjdC0+d3JhcHBlcigpIGF0dGFjaG1lbnRWaWV3XSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gYXR0YWNobWVudFZpZXc7Ci0gICAgICAgIH0KKyAgICAgICAgfSBlbHNl
IGlmIChheE9iamVjdC0+aXNSZW1vdGVGcmFtZSgpKQorICAgICAgICAgICAgcmV0dXJuIGF4T2Jq
ZWN0LT5yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpLmdldCgpOwogCiAgICAgICAgIC8vIE9u
bHkgY2FsbCBvdXQgdG8gdGhlIG1haW4tdGhyZWFkIGlmIHRoaXMgb2JqZWN0IGhhcyBhIGJhY2tp
bmcgd2lkZ2V0IHRvIHF1ZXJ5LgogICAgICAgICBpZiAoYXhPYmplY3QtPmlzV2lkZ2V0KCkpIHsK
QEAgLTI1MDcsNiArMjUzNSwxMCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19F
TkQKICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNXZWJBcmVhKCkpCiAgICAgICAgIHJldHVybiB3
ZWJBcmVhUGFyYW1BdHRyczsKIAorICAgIC8vIFRoZSBvYmplY3QgdGhhdCBzZXJ2ZXMgdXAgdGhl
IHJlbW90ZSBmcmFtZSBhbHNvIGlzIHRoZSBvbmUgdGhhdCBkb2VzIHRoZSBmcmFtZSBjb252ZXJz
aW9uLgorICAgIGlmIChiYWNraW5nT2JqZWN0LT5oYXNSZW1vdGVGcmFtZUNoaWxkKCkpCisgICAg
ICAgIHJldHVybiBbcGFyYW1BdHRycyBhcnJheUJ5QWRkaW5nT2JqZWN0OmtBWENvbnZlcnRSZWxh
dGl2ZUZyYW1lUGFyYW1ldGVyaXplZEF0dHJpYnV0ZV07CisKICAgICByZXR1cm4gcGFyYW1BdHRy
czsKIH0KIApAQCAtMjU3OCw3ICsyNjEwLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfRU5ECiB7CiAgICAgQVhUUkFDRSgiV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNj
ZXNzaWJpbGl0eVBlcmZvcm1TaG93TWVudUFjdGlvbiJfcyk7CiAKLSAgICBhdXRvKiBiYWNraW5n
T2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4g
YmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OwogICAgIGlmICghYmFja2luZ09i
amVjdCkgewogICAgICAgICBBWExPRyhtYWtlU3RyaW5nKCJObyBiYWNraW5nT2JqZWN0IGZvciB3
cmFwcGVyICIsIGhleChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oc2VsZikpKSk7CiAgICAg
ICAgIHJldHVybjsKQEAgLTI4MjIsNyArMjg1NCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVN
RU5UQVRJT05TX0VORAogICAgIGlmICghcmFuZ2UubGVuZ3RoKQogICAgICAgICByZXR1cm4gbmls
OwogCi0gICAgYXV0byogYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAg
IFJlZlB0cjxBWENvcmVPYmplY3Q+IGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVj
dDsKICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCiAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTMx
NzcsNiArMzIwOSwxOCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHdpZGdldENoaWxkcmVuOwogICAgICAgICAgICAgICAg
IGNyaXRlcmlhLnJlc3VsdHNMaW1pdCAtPSBbd2lkZ2V0Q2hpbGRyZW4gY291bnRdOwogICAgICAg
ICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGJhY2tpbmdPYmplY3QtPmlzUmVtb3RlRnJhbWUo
KQorICAgICAgICAgICAgJiYgY3JpdGVyaWEuc2VhcmNoS2V5cy5jb250YWlucyhBY2Nlc3NpYmls
aXR5U2VhcmNoS2V5OjpBbnlUeXBlKQorICAgICAgICAgICAgJiYgKCFjcml0ZXJpYS52aXNpYmxl
T25seSB8fCBiYWNraW5nT2JqZWN0LT5pc1Zpc2libGUoKSkpIHsKKyAgICAgICAgICAgIE5TQXJy
YXkgKnJlbW90ZUZyYW1lQ2hpbGRyZW4gPSBbc2VsZiBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGVdOworICAgICAgICAgICAgQVNTRVJU
KHJlbW90ZUZyYW1lQ2hpbGRyZW4uY291bnQgPT0gMSk7CisgICAgICAgICAgICBpZiAocmVtb3Rl
RnJhbWVDaGlsZHJlbi5jb3VudCA9PSAxKSB7CisgICAgICAgICAgICAgICAgTlNVSW50ZWdlciBp
bmNsdWRlZENoaWxkcmVuQ291bnQgPSBzdGQ6Om1pbihbcmVtb3RlRnJhbWVDaGlsZHJlbiBjb3Vu
dF0sIE5TVUludGVnZXIoY3JpdGVyaWEucmVzdWx0c0xpbWl0KSk7CisgICAgICAgICAgICAgICAg
d2lkZ2V0Q2hpbGRyZW4gPSBbcmVtb3RlRnJhbWVDaGlsZHJlbiBzdWJhcnJheVdpdGhSYW5nZTpO
U01ha2VSYW5nZSgwLCBpbmNsdWRlZENoaWxkcmVuQ291bnQpXTsKKyAgICAgICAgICAgICAgICBp
ZiAoW3dpZGdldENoaWxkcmVuIGNvdW50XSA+PSBjcml0ZXJpYS5yZXN1bHRzTGltaXQpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGVGcmFtZUNoaWxkcmVuOworICAgICAgICAgICAg
ICAgIGNyaXRlcmlhLnJlc3VsdHNMaW1pdCAtPSBbd2lkZ2V0Q2hpbGRyZW4gY291bnRdOworICAg
ICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHJlc3VsdHM7CkBAIC0zNjY5LDYgKzM3MTMsMTEgQEAg
QUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgaWYgKFVOTElLRUxZKFth
dHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOl9BWFRleHRNYXJrZXJSYW5nZUZvck5TUmFuZ2VBdHRy
aWJ1dGVdKSkKICAgICAgICAgcmV0dXJuIGJhY2tpbmdPYmplY3QtPnRleHRNYXJrZXJSYW5nZUZv
ck5TUmFuZ2UocmFuZ2UpLnBsYXRmb3JtRGF0YSgpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKIAor
ICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzprQVhDb252ZXJ0UmVsYXRpdmVGcmFt
ZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdKSB7CisgICAgICAgIGF1dG8qIHBhcmVudCA9IGJhY2tp
bmdPYmplY3QtPnBhcmVudE9iamVjdCgpOworICAgICAgICByZXR1cm4gcGFyZW50ID8gW05TVmFs
dWUgdmFsdWVXaXRoUmVjdDpwYXJlbnQtPmNvbnZlcnRGcmFtZVRvU3BhY2UoRmxvYXRSZWN0KHJl
Y3QpLCBBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlOjpQYWdlKV0gOiBuaWw7CisgICAgfQor
CiAgICAgLy8gVGhlcmUgYXJlIHNvbWUgcGFyYW1ldGVycyB0aGF0IHN1cGVyIGhhbmRsZXMgdGhh
dCBhcmUgbm90IGV4cGxpY2l0bHkgcmV0dXJuZWQgYnkgdGhlIGxpc3Qgb2YgdGhlIGVsZW1lbnQn
cyBhdHRyaWJ1dGVzLgogICAgIC8vIEluIHRoYXQgY2FzZSBpdCBtdXN0IGJlIHBhc3NlZCB0byBz
dXBlci4KICAgICByZXR1cm4gW3N1cGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTphdHRy
aWJ1dGUgZm9yUGFyYW1ldGVyOnBhcmFtZXRlcl07CkBAIC0zNzIyLDggKzM3NzEsMTAgQEAgQUxM
T1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIGlmICghY2hpbGQpCiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXIgKmNoaWxkV3JhcHBlciA9IGNoaWxkLT53cmFwcGVyKCk7Ci0gICAgICAgIGlmIChjaGlsZFdy
YXBwZXIgPT0gdGFyZ2V0Q2hpbGQgfHwgKGNoaWxkLT5pc0F0dGFjaG1lbnQoKSAmJiBbY2hpbGRX
cmFwcGVyIGF0dGFjaG1lbnRWaWV3XSA9PSB0YXJnZXRDaGlsZCkpCisgICAgICAgIGlmIChjaGls
ZFdyYXBwZXIgPT0gdGFyZ2V0Q2hpbGQgfHwgKGNoaWxkLT5pc0F0dGFjaG1lbnQoKSAmJiBbY2hp
bGRXcmFwcGVyIGF0dGFjaG1lbnRWaWV3XSA9PSB0YXJnZXRDaGlsZCkKKyAgICAgICAgICAgIHx8
IChjaGlsZC0+aXNSZW1vdGVGcmFtZSgpICYmIGNoaWxkLT5yZW1vdGVGcmFtZVBsYXRmb3JtRWxl
bWVudCgpID09IHRhcmdldENoaWxkKSkgewogICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAg
IH0KICAgICB9CiAgICAgcmV0dXJuIE5TTm90Rm91bmQ7CiB9CkBAIC0zNzQwLDcgKzM3OTEsNyBA
QCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIGlmIChbYXR0cmlidXRl
IGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZV0pIHsKICAg
ICAgICAgLy8gVHJlZSBpdGVtcyBvYmplY3QgcmV0dXJucyBhIGRpZmZlcmVudCBzZXQgb2YgY2hp
bGRyZW4gdGhhbiB0aG9zZSB0aGF0IGFyZSBpbiBjaGlsZHJlbigpCiAgICAgICAgIC8vIGJlY2F1
c2UgYW4gQVhPdXRsaW5lICh0aGUgbWFjIHJvbGUgaXMgYmVjb21lcykgaGFzIHNvbWUgb2RkIHN0
aXB1bGF0aW9ucy4KLSAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzVHJlZSgpIHx8IGJhY2tp
bmdPYmplY3QtPmlzVHJlZUl0ZW0oKSkKKyAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzVHJl
ZSgpIHx8IGJhY2tpbmdPYmplY3QtPmlzVHJlZUl0ZW0oKSB8fCBiYWNraW5nT2JqZWN0LT5pc1Jl
bW90ZUZyYW1lKCkpCiAgICAgICAgICAgICByZXR1cm4gW1tzZWxmIGFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZV0gY291bnRdOwogCiAg
ICAgICAgIGF1dG8gY2hpbGRyZW5TaXplID0gYmFja2luZ09iamVjdC0+Y2hpbGRyZW4oKS5zaXpl
KCk7CkBAIC0zNzc2LDE2ICszODI3LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECiAKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5BdHRyaWJ1dGVdKSB7CiAgICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5jaGlsZHJl
bigpLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgTlNBcnJheSAqY2hpbGRyZW4gPSBuaWw7Ci0j
aWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCi0gICAgICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+
aXNNb2RlbCgpKSB7Ci0gICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBjcmVhdGVOU0FycmF5KGJh
Y2tpbmdPYmplY3QtPm1vZGVsRWxlbWVudENoaWxkcmVuKCksIFtdIChhdXRvJiYgY2hpbGQpIC0+
IGlkIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkLmdldCgpOwotICAgICAgICAg
ICAgICAgIH0pLmF1dG9yZWxlYXNlKCk7Ci0gICAgICAgICAgICB9IGVsc2UKLSNlbmRpZgotICAg
ICAgICAgICAgICAgIGNoaWxkcmVuID0gW3NlbGYgcmVuZGVyV2lkZ2V0Q2hpbGRyZW5dOwotICAg
ICAgICAgICAgCisgICAgICAgICAgICBOU0FycmF5ICpjaGlsZHJlbiA9IFtzZWxmIF90cmFuc2Zv
cm1TcGVjaWFsQ2hpbGRyZW5DYXNlczpiYWNraW5nT2JqZWN0XTsKICAgICAgICAgICAgIGlmICgh
Y2hpbGRyZW4pCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMzgxNiw4ICszODU4
LDEzIEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAgICAgICAgICAgICAv
LyBUaGUgYXR0YWNobWVudCB2aWV3IHNob3VsZCBiZSByZXR1cm5lZCwgb3RoZXJ3aXNlIEFYIHBh
bGluZHJvbWUgZXJyb3JzIG9jY3VyLgogICAgICAgICAgICAgaWQgYXR0YWNobWVudFZpZXcgPSBu
aWw7Ci0gICAgICAgICAgICBpZiAoW3dyYXBwZXIgaXNLaW5kT2ZDbGFzczpbV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIgY2xhc3NdXSAmJiB3cmFwcGVyLmF4QmFja2luZ09iamVjdCAmJiB3
cmFwcGVyLmF4QmFja2luZ09iamVjdC0+aXNBdHRhY2htZW50KCkpCi0gICAgICAgICAgICAgICAg
YXR0YWNobWVudFZpZXcgPSBbd3JhcHBlciBhdHRhY2htZW50Vmlld107CisgICAgICAgICAgICBp
ZiAoW3dyYXBwZXIgaXNLaW5kT2ZDbGFzczpbV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIg
Y2xhc3NdXSAmJiB3cmFwcGVyLmF4QmFja2luZ09iamVjdCkgeworICAgICAgICAgICAgICAgIGlm
ICh3cmFwcGVyLmF4QmFja2luZ09iamVjdC0+aXNBdHRhY2htZW50KCkpCisgICAgICAgICAgICAg
ICAgICAgIGF0dGFjaG1lbnRWaWV3ID0gW3dyYXBwZXIgYXR0YWNobWVudFZpZXddOworICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKHdyYXBwZXIuYXhCYWNraW5nT2JqZWN0LT5pc1JlbW90ZUZyYW1l
KCkpCisgICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRWaWV3ID0gd3JhcHBlci5heEJhY2tp
bmdPYmplY3QtPnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkuZ2V0KCk7CisgICAgICAgICAg
ICB9CisKICAgICAgICAgICAgIFtzdWJhcnJheSBhZGRPYmplY3Q6YXR0YWNobWVudFZpZXcgPyBh
dHRhY2htZW50VmlldyA6IHdyYXBwZXJdOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggMjU4YzE0Yjg2YThiLi41NzE3YWRlMmE0NTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0xMDg1LDYgKzEwODUsMTEgQEAg
UmVtb3RlQVhPYmplY3RSZWYgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6YWNjZXNzaWJpbGl0eVJl
bW90ZU9iamVjdCgpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK0ludFBvaW50IEVtcHR5RnJh
bWVMb2FkZXJDbGllbnQ6OmFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCgpCit7CisgICAg
cmV0dXJuIHsgfTsKK30KKwogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUp
CiB2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnNldEFYSXNvbGF0ZWRUcmVlUm9vdChXZWJD
b3JlOjpBWENvcmVPYmplY3QqKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZy
YW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMDk4Y2U1OGQxMTE5Li40NjcyZGUyOTg1MzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTg0
LDYgKzE4NCw3IEBAIHByaXZhdGU6CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZW1vdGVB
WE9iamVjdFJlZiBhY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkgZmluYWw7CisgICAgSW50UG9p
bnQgYWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCkgZmluYWw7CiAjaWYgRU5BQkxFKEFD
Q0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKICAgICB2b2lkIHNldEFYSXNvbGF0ZWRUcmVlUm9v
dChXZWJDb3JlOjpBWENvcmVPYmplY3QqKSBmaW5hbDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0xvY2FsRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Mb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggYjJkNTZmMDUwYWU5Li4w
MGQzYWQ1ZTJjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2NhbEZyYW1l
TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvY2FsRnJhbWVMb2Fk
ZXJDbGllbnQuaApAQCAtMjkwLDYgKzI5MCw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICAvLyBBbGxvdyBhbiBhY2Nlc3NpYmlsaXR5IG9iamVjdCB0byByZXRyaWV2ZSBhIEZy
YW1lIHBhcmVudCBpZiB0aGVyZSdzIG5vIFBsYXRmb3JtV2lkZ2V0LgogICAgIHZpcnR1YWwgUmVt
b3RlQVhPYmplY3RSZWYgYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpID0gMDsKKyAgICB2aXJ0
dWFsIEludFBvaW50IGFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCgpID0gMDsKICNpZiBF
TkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQogICAgIHZpcnR1YWwgdm9pZCBzZXRB
WElzb2xhdGVkVHJlZVJvb3QoQVhDb3JlT2JqZWN0KikgPSAwOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAppbmRleCA1OTMzNTVlYmVjZDguLjBiMWZjMGFjMzhjMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CkBAIC0yMjAzLDggKzIyMDMsMTUgQEAgYm9vbCBQYWdlOjpzaG91bGRVcGRhdGVBY2Nlc3NpYmls
aXR5UmVnaW9ucygpIGNvbnN0CiAgICAgQVNTRVJUKG1fbGFzdFJlbmRlcmluZ1VwZGF0ZVRpbWVz
dGFtcCA+PSBtX2xhc3RBY2Nlc3NpYmlsaXR5T2JqZWN0UmVnaW9uc1VwZGF0ZSk7CiAgICAgaWYg
KChtX2xhc3RSZW5kZXJpbmdVcGRhdGVUaW1lc3RhbXAgLSBtX2xhc3RBY2Nlc3NpYmlsaXR5T2Jq
ZWN0UmVnaW9uc1VwZGF0ZSkgPCB1cGRhdGVJbnRlcnZhbCkgewogICAgICAgICAvLyBXZSd2ZSBh
bHJlYWR5IHVwZGF0ZWQgYWNjZXNzaWJpbGl0eSBvYmplY3QgcmVjdHMgcmVjZW50bHksIHNvIHNr
aXAgdGhpcyB1cGRhdGUgYW5kIHNjaGVkdWxlIGFub3RoZXIgZm9yIGxhdGVyLgotICAgICAgICBh
dXRvKiBsb2NhbE1haW5GcmFtZSA9IGR5bmFtaWNEb3duY2FzdDxMb2NhbEZyYW1lPihtYWluRnJh
bWUoKSk7Ci0gICAgICAgIFJlZlB0ciBtYWluRG9jdW1lbnQgPSBsb2NhbE1haW5GcmFtZSA/IGxv
Y2FsTWFpbkZyYW1lLT5kb2N1bWVudCgpIDogbnVsbHB0cjsKKworICAgICAgICBSZWZQdHI8RG9j
dW1lbnQ+IG1haW5Eb2N1bWVudCA9IG51bGxwdHI7CisgICAgICAgIGlmIChhdXRvKiBsb2NhbE1h
aW5GcmFtZSA9IGR5bmFtaWNEb3duY2FzdDxMb2NhbEZyYW1lPihtYWluRnJhbWUoKSkpCisgICAg
ICAgICAgICBtYWluRG9jdW1lbnQgPSBsb2NhbE1haW5GcmFtZSA/IGxvY2FsTWFpbkZyYW1lLT5k
b2N1bWVudCgpIDogbnVsbHB0cjsKKyAgICAgICAgZWxzZSBpZiAoYXV0byogcmVtb3RlRnJhbWUg
PSBkeW5hbWljRG93bmNhc3Q8UmVtb3RlRnJhbWU+KG1haW5GcmFtZSgpKSkgeworICAgICAgICAg
ICAgaWYgKGF1dG8qIG93bmVyID0gcmVtb3RlRnJhbWUtPm93bmVyRWxlbWVudCgpKQorICAgICAg
ICAgICAgICAgIG1haW5Eb2N1bWVudCA9ICYob3duZXItPmRvY3VtZW50KCkpOworICAgICAgICB9
CisKICAgICAgICAgLy8gSWYgYWNjZXNzaWJpbGl0eSBpcyBlbmFibGVkIGFuZCB3ZSBoYXZlIGEg
bWFpbiBkb2N1bWVudCwgdGhhdCBkb2N1bWVudCBzaG91bGQgaGF2ZSBhbiBBWCBvYmplY3QgY2Fj
aGUuCiAgICAgICAgIEFTU0VSVCghbWFpbkRvY3VtZW50IHx8IG1haW5Eb2N1bWVudC0+ZXhpc3Rp
bmdBWE9iamVjdENhY2hlKCkpOwogICAgICAgICBpZiAoQ2hlY2tlZFB0ciB0b3BBeE9iamVjdENh
Y2hlID0gbWFpbkRvY3VtZW50ID8gbWFpbkRvY3VtZW50LT5leGlzdGluZ0FYT2JqZWN0Q2FjaGUo
KSA6IG51bGxwdHIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuY3BwCmluZGV4IDcxMmMwYjIy
MGZkMC4uNTBiMGEyNWNmZGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90
ZUZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmNwcApAQCAt
MTAwLDYgKzEwMCwyMSBAQCB2b2lkIFJlbW90ZUZyYW1lOjpicm9hZGNhc3RGcmFtZVJlbW92YWxU
b090aGVyUHJvY2Vzc2VzKCkKICAgICBtX2NsaWVudC0+YnJvYWRjYXN0RnJhbWVSZW1vdmFsVG9P
dGhlclByb2Nlc3NlcygpOwogfQogCit2b2lkIFJlbW90ZUZyYW1lOjp1cGRhdGVSZW1vdGVGcmFt
ZUFjY2Vzc2liaWxpdHlPZmZzZXQoSW50UG9pbnQgb2Zmc2V0KQoreworICAgIG1fY2xpZW50LT51
cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQoZnJhbWVJRCgpLCBvZmZzZXQpOwor
fQorCit2b2lkIFJlbW90ZUZyYW1lOjp1bmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGlu
dCBwcm9jZXNzSWRlbnRpZmllcikKK3sKKyAgICBtX2NsaWVudC0+dW5iaW5kUmVtb3RlQWNjZXNz
aWJpbGl0eUZyYW1lcyhwcm9jZXNzSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlRnJhbWU6
OmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgc3Rk
OjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGFUb2tlbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIGludCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgcmV0dXJuIG1fY2xpZW50LT5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhw
cm9jZXNzSWRlbnRpZmllciwgZnJhbWVJRCgpLCBkYXRhVG9rZW4sIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKK30KKwogRnJhbWVWaWV3KiBSZW1vdGVGcmFtZTo6dmlydHVhbFZpZXcoKSBj
b25zdAogewogICAgIHJldHVybiBtX3ZpZXcuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1JlbW90ZUZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1l
LmgKaW5kZXggMjdlZDg0MGQwODJlLi5jYTcyYWY4YmM5NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90
ZUZyYW1lLmgKQEAgLTMzLDYgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFz
cyBEYXRhU2VnbWVudDsKIGNsYXNzIFJlbW90ZURPTVdpbmRvdzsKIGNsYXNzIFJlbW90ZUZyYW1l
Q2xpZW50OwogY2xhc3MgUmVtb3RlRnJhbWVWaWV3OwpAQCAtNjIsNiArNjMsOSBAQCBwdWJsaWM6
CiAgICAgTWFya2FibGU8TGF5ZXJIb3N0aW5nQ29udGV4dElkZW50aWZpZXI+IGxheWVySG9zdGlu
Z0NvbnRleHRJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXllckhvc3RpbmdDb250ZXh0
SWRlbnRpZmllcjsgfQogCiAgICAgU3RyaW5nIHJlbmRlclRyZWVBc1RleHQoc2l6ZV90IGJhc2VJ
bmRlbnQsIE9wdGlvblNldDxSZW5kZXJBc1RleHRGbGFnPik7CisgICAgdm9pZCBiaW5kUmVtb3Rl
QWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIHN0ZDo6c3Bhbjxjb25z
dCB1aW50OF90PiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6OnNwYW48Y29uc3QgdWludDhf
dD4sIGludCk+JiYpOworICAgIHZvaWQgdXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zm
c2V0KEludFBvaW50KTsKKyAgICB2b2lkIHVuYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMo
aW50KTsKIAogcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBSZW1vdGVGcmFt
ZShQYWdlJiwgVW5pcXVlUmVmPFJlbW90ZUZyYW1lQ2xpZW50PiYmLCBGcmFtZUlkZW50aWZpZXIs
IEhUTUxGcmFtZU93bmVyRWxlbWVudCosIEZyYW1lKiBwYXJlbnQsIE1hcmthYmxlPExheWVySG9z
dGluZ0NvbnRleHRJZGVudGlmaWVyPiwgRnJhbWUqIG9wZW5lciA9IG51bGxwdHIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZUNsaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9SZW1vdGVGcmFtZUNsaWVudC5oCmluZGV4IDRlZmQxMDNmMzkxMi4uNTQxYTBk
MDFjNTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZUNsaWVudC5oCkBAIC0zMCw2
ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRGF0YVNlZ21lbnQ7CiBj
bGFzcyBGcmFtZUxvYWRSZXF1ZXN0OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFNlY3VyaXR5T3Jp
Z2luRGF0YTsKQEAgLTQ4LDYgKzQ5LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHJl
bmRlclRyZWVBc1RleHQoc2l6ZV90IGJhc2VJbmRlbnQsIE9wdGlvblNldDxSZW5kZXJBc1RleHRG
bGFnPikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBicm9hZGNhc3RGcmFtZVJlbW92YWxUb090aGVy
UHJvY2Vzc2VzKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZVBhZ2UoKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRl
bnRpZmllciwgRnJhbWVJZGVudGlmaWVyIHRhcmdldCwgY29uc3Qgc3RkOjpzcGFuPGNvbnN0IHVp
bnQ4X3Q+IGRhdGFUb2tlbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6OnNwYW48
Y29uc3QgdWludDhfdD4sIGludCk+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVt
b3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KEZyYW1lSWRlbnRpZmllciB0YXJnZXQsIEludFBv
aW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFt
ZXMoaW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZvY3VzKCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCB1bmZvY3VzKCkgPSAwOwogICAgIHZpcnR1YWwgflJlbW90ZUZyYW1lQ2xpZW50KCkgeyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggODRmYzQxOWU1OWNhLi40MmVl
ZTY2YWIxNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTQyLDYgKzQy
LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdBY3Rpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9FZGl0b3JDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvY3VzRGlyZWN0aW9uLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9GcmFtZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lu
cHV0TW9kZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFDb250cm9sc0NvbnRleHRNZW51SXRl
bS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsVHlwZXMuaD4KQEAgLTMxOCw3ICszMTksNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVVbmRvUmVkbyhVbmRvT3JSZWRvKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHdoZWVsRXZlbnRXYXNOb3RIYW5kbGVkQnlXZWJDb3JlKGNv
bnN0IE5hdGl2ZVdlYldoZWVsRXZlbnQmKSA9IDA7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAg
dmlydHVhbCB2b2lkIGFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChzdGQ6OnNw
YW48Y29uc3QgdWludDhfdD4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzaWJpbGl0eVdl
YlByb2Nlc3NUb2tlblJlY2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBwaWRfdCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBleGVjdXRlU2F2
ZWRDb21tYW5kQnlTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9yKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZVNlY3VyZUlucHV0U3RhdGUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHJlc2V0U2VjdXJlSW5wdXRTdGF0ZSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAppbmRleCAwNTAzMDg2MzkxZmIuLjNlM2I4MTk1
ZDA0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdl
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmNwcApAQCAtNTQ1LDcgKzU0NSw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OnJl
cXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QKICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi12b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpyZWdp
c3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+
IGRhdGEpCit2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpyZWdpc3RlcldlYlByb2Nlc3NBY2Nl
c3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEsIEZyYW1lSWRlbnRp
ZmllcikKIHsKICAgICBtX2FjY2Vzc2liaWxpdHlUb2tlbiA9IFZlY3RvcihkYXRhKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCmluZGV4IGRl
ZWNkNzZhMjAyNC4uZDBiN2VjY2VlZmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKQEAgLTE3Miw3ICsxNzIsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgcmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25z
dCBTdHJpbmcmIGZpbGVOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYp
PiYmKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgcmVnaXN0ZXJXZWJQ
cm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Pik7CisgICAg
dm9pZCByZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0
IHVpbnQ4X3Q+LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogI2VuZGlmCiAjaWYgUExBVEZP
Uk0oR1RLKSB8fCBQTEFURk9STShXUEUpCiAgICAgdm9pZCBiaW5kQWNjZXNzaWJpbGl0eVRyZWUo
Y29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJG
cmFtZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3Bw
CmluZGV4IGYyZmM4YTU0ZDg4My4uMjMwMzA3YTE3NGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJGcmFtZVByb3h5LmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIldlYlBh
Z2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViUGFzdGVib2FyZFByb3h5LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgi
CiAjaW5jbHVkZSAiV2Vic2l0ZVBvbGljaWVzRGF0YS5oIgpAQCAtMTg0LDYgKzE4NSwxNCBAQCB2
b2lkIFdlYkZyYW1lUHJveHk6Om5hdmlnYXRlU2VydmljZVdvcmtlckNsaWVudChXZWJDb3JlOjpT
Y3JpcHRFeGVjdXRpb25Db250ZXh0SQogICAgIH0pOwogfQogCit2b2lkIFdlYkZyYW1lUHJveHk6
OmJpbmRBY2Nlc3NpYmlsaXR5RnJhbWVXaXRoRGF0YShzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4g
ZGF0YSkKK3sKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpCaW5kQWNjZXNzaWJpbGl0eUZyYW1lV2l0aERh
dGEobV9mcmFtZUlELCBkYXRhKSk7Cit9CisKIHZvaWQgV2ViRnJhbWVQcm94eTo6bG9hZFVSTChj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKIHsKICAgICBpZiAoIW1fcGFn
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaAppbmRleCBiMGRhZWIwZTY0
ZmMuLjcxNWJiODBiYWI2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
RnJhbWVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHku
aApAQCAtMTcwLDYgKzE3MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW90ZVByb2Nlc3NEaWRU
ZXJtaW5hdGUoKTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiB3
ZWJQYWdlSURJbkN1cnJlbnRQcm9jZXNzKCk7CiAgICAgdm9pZCBub3RpZnlQYXJlbnRPZkxvYWRD
b21wbGV0aW9uKFdlYlByb2Nlc3NQcm94eSYpOworICAgIHZvaWQgcmVtb3ZlUmVtb3RlUGFnZXNG
b3JTdXNwZW5zaW9uKCk7CisgICAgdm9pZCBiaW5kQWNjZXNzaWJpbGl0eUZyYW1lV2l0aERhdGEo
c3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKIAogICAgIGJvb2wgaXNGb2N1c2VkKCkgY29uc3Q7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGMwZmUxMmU4
YjcwMy4uMDExY2ZlYzYzMGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKQEAgLTEyOTUsOCArMTI5NSwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3dhcFRvUHJv
dmlzaW9uYWxQYWdlKHN0ZDo6dW5pcXVlX3B0cjxQcm92aXNpb25hbFBhZ2VQcm94eT4gcAogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgYXV0byBhY2Nlc3NpYmlsaXR5VG9rZW4gPSBwcm92aXNp
b25hbFBhZ2UtPnRha2VBY2Nlc3NpYmlsaXR5VG9rZW4oKTsKLSAgICBpZiAoIWFjY2Vzc2liaWxp
dHlUb2tlbi5pc0VtcHR5KCkpCi0gICAgICAgIHJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxp
dHlUb2tlbih7IGFjY2Vzc2liaWxpdHlUb2tlbi5kYXRhKCksIGFjY2Vzc2liaWxpdHlUb2tlbi5z
aXplKCkgfSk7CisgICAgaWYgKCFhY2Nlc3NpYmlsaXR5VG9rZW4uaXNFbXB0eSgpKSB7CisgICAg
ICAgIHJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbih7IGFjY2Vzc2liaWxpdHlU
b2tlbi5kYXRhKCksIGFjY2Vzc2liaWxpdHlUb2tlbi5zaXplKCkgfSwgV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIHsKKyAgICAgICAgICAgIE9iamVjdElkZW50aWZpZXI8V2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyVHlwZT4oMCksCisgICAgICAgICAgICBPYmplY3RJZGVudGlmaWVyPFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyVHlwZT4oMCkKKyAgICAgICAgfSk7CisgICAgfQogI2VuZGlmCiAj
aWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCiAgICAgYXV0byBhY2Nlc3NpYmlsaXR5
UGx1Z0lEID0gcHJvdmlzaW9uYWxQYWdlLT5hY2Nlc3NpYmlsaXR5UGx1Z0lEKCk7CkBAIC0xMzc0
NCw2ICsxMzc0OCwyMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YWRkQ29uc29sZU1lc3NhZ2UoRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIE1lc3NhZ2VTb3VyY2UgbWVzcwogICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgZnJhbWVJRCwgbWVzc2FnZVNvdXJjZSwg
bWVzc2FnZUxldmVsLCBtZXNzYWdlLCBjb3JlSWRlbnRpZmllciB9KTsKIH0KIAordm9pZCBXZWJQ
YWdlUHJveHk6OmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRp
ZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IHN0ZDo6c3Bhbjxj
b25zdCB1aW50OF90PiBkYXRhVG9rZW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpzcGFu
PGNvbnN0IHVpbnQ4X3Q+LCBpbnQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8g
c2VuZFJlc3VsdCA9IHNlbmRTeW5jVG9Qcm9jZXNzQ29udGFpbmluZ0ZyYW1lKGZyYW1lSUQsIE1l
c3NhZ2VzOjpXZWJQYWdlOjpCaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhwcm9jZXNzSWRl
bnRpZmllciwgZnJhbWVJRCwgZGF0YVRva2VuKSk7CisgICAgaWYgKCFzZW5kUmVzdWx0LnN1Y2Nl
ZWRlZCgpKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9LCAwKTsKKworICAg
IGF1dG8gW2ZyYW1lRGF0YVRva2VuLCBmcmFtZVByb2Nlc3NJZGVudGlmaWVyXSA9IHNlbmRSZXN1
bHQudGFrZVJlcGx5KCk7CisKKyAgICBjb21wbGV0aW9uSGFuZGxlcihmcmFtZURhdGFUb2tlbiwg
ZnJhbWVQcm9jZXNzSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVS
ZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIFdlYkNvcmU6OkludFBvaW50IG9mZnNldCkKK3sKKyAgICBzZW5kVG9Qcm9jZXNzQ29u
dGFpbmluZ0ZyYW1lKGZyYW1lSUQsIE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVSZW1vdGVQYWdl
QWNjZXNzaWJpbGl0eU9mZnNldChmcmFtZUlELCBvZmZzZXQpKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CiAKICN1bmRlZiBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0cKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNWI3Y2Y1NGVkMTQxLi42NjA4ZGMzY2NjNDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMzU0LDcgKzEzNTQs
NyBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAvLyBDYWxsZWQgYnkgdGhl
IHdlYiBwcm9jZXNzIHRocm91Z2ggYSBtZXNzYWdlLgotICAgIHZvaWQgcmVnaXN0ZXJXZWJQcm9j
ZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Pik7CisgICAgdm9p
ZCByZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVp
bnQ4X3Q+LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIC8vIENhbGxlZCBieSB0aGUg
VUkgcHJvY2VzcyB3aGVuIGl0IGlzIHJlYWR5IHRvIHNlbmQgaXRzIHRva2VucyB0byB0aGUgd2Vi
IHByb2Nlc3MuCiAgICAgdm9pZCByZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMo
c3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGVsZW1lbnRUb2tlbiwgc3RkOjpzcGFuPGNvbnN0IHVp
bnQ4X3Q+IHdpbmRvd1Rva2VuKTsKICAgICB2b2lkIHJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVi
b2FyZERhdGEoY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBzdGQ6OnNwYW48Y29uc3QgdWlu
dDhfdD4pOwpAQCAtMjk3Nyw2ICsyOTc3LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGZvY3VzUmVt
b3RlRnJhbWUoSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAg
ICB2b2lkIHBvc3RNZXNzYWdlVG9SZW1vdGUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHNvdXJj
ZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciB0
YXJnZXQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiB0YXJnZXRP
cmlnaW4sIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJik7CiAgICAgdm9p
ZCByZW5kZXJUcmVlQXNUZXh0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgc2l6ZV90IGJhc2VJ
bmRlbnQsIE9wdGlvblNldDxXZWJDb3JlOjpSZW5kZXJBc1RleHRGbGFnPiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdHJpbmcmJik+JiYpOworICAgIHZvaWQgYmluZFJlbW90ZUFjY2Vzc2liaWxp
dHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhVG9rZW4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBpbnQpPiYmKTsKKyAgICB2b2lkIHVwZGF0ZVJl
bW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdl
YkNvcmU6OkludFBvaW50KTsKIAogICAgIHZvaWQgc2V0VGV4dEluZGljYXRvckZyb21GcmFtZShX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhJiYsIHVp
bnQ2NF90KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCmluZGV4IDMxMTU1YjMyOTE0Ni4uNzJiM2Y3MjRkNTkzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zMjQsNyAr
MzI0LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBFeGVjdXRlU2F2ZWRDb21t
YW5kQnlTZWxlY3RvcihTdHJpbmcgc2VsZWN0b3IpIC0+IChib29sIGhhbmRsZWQpIFN5bmNocm9u
b3VzCiAKICAgICAjIFJlbW90ZSBhY2Nlc3NpYmlsaXR5IG1lc3NhZ2VzCi0gICAgUmVnaXN0ZXJX
ZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRh
KQorICAgIFJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29u
c3QgdWludDhfdD4gZGF0YSwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCiAKICAg
ICAjIFNwZWVjaCBtZXNzYWdlcwogICAgIEdldElzU3BlYWtpbmcoKSAtPiAoYm9vbCBpc1NwZWFr
aW5nKSBTeW5jaHJvbm91cwpAQCAtNjMwLDQgKzYzMCw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQ
cm94eSB7CiAgICAgRm9jdXNSZW1vdGVGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCkKICAgICBQb3N0TWVzc2FnZVRvUmVtb3RlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBz
b3VyY2UsIFN0cmluZyBzb3VyY2VPcmlnaW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciB0YXJn
ZXQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiB0YXJnZXRPcmln
aW4sIHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBtZXNzYWdlKQogICAg
IFJlbmRlclRyZWVBc1RleHQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGlkZW50aWZpZXIsIHNp
emVfdCBiYXNlSW5kZW50LCBPcHRpb25TZXQ8V2ViQ29yZTo6UmVuZGVyQXNUZXh0RmxhZz4gYmVo
YXZpb3IpIC0+IChTdHJpbmcgcmVuZGVyVHJlZUR1bXApIFN5bmNocm9ub3VzCisgICAgQmluZFJl
bW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGFUb2tl
bikgLT4gKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiB0b2tlbiwgaW50IHByb2Nlc3NJZGVudGlm
aWVyKSBTeW5jaHJvbm91cworICAgIFVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNl
dChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6SW50UG9pbnQgb2Zm
c2V0KQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MuaAppbmRleCAxMGM0ZjZhZTEyNTAuLjYzODhjYjQ2NzJjOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTExMCw3ICsxMTAsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJBbGxFZGl0Q29tbWFuZHMoKSBvdmVycmlkZTsKICAg
ICBib29sIGNhblVuZG9SZWRvKFVuZG9PclJlZG8pIG92ZXJyaWRlOwogICAgIHZvaWQgZXhlY3V0
ZVVuZG9SZWRvKFVuZG9PclJlZG8pIG92ZXJyaWRlOwotICAgIHZvaWQgYWNjZXNzaWJpbGl0eVdl
YlByb2Nlc3NUb2tlblJlY2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Pikgb3ZlcnJpZGU7
CisgICAgdm9pZCBhY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFu
PGNvbnN0IHVpbnQ4X3Q+LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHBpZF90KSBvdmVycmlk
ZTsKICAgICBib29sIGV4ZWN1dGVTYXZlZENvbW1hbmRCeVNlbGVjdG9yKGNvbnN0IFN0cmluZyYg
c2VsZWN0b3IpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlU2VjdXJlSW5wdXRTdGF0ZSgpIG92
ZXJyaWRlOwogICAgIHZvaWQgcmVzZXRTZWN1cmVJbnB1dFN0YXRlKCkgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXgg
Y2IyM2Y0OTc0YTZiLi5iNWFkZGRjZTIzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTM4OSw3ICszODksNyBAQCB2b2lkIFBh
Z2VDbGllbnRJbXBsOjpleGVjdXRlVW5kb1JlZG8oVW5kb09yUmVkbyB1bmRvT3JSZWRvKQogICAg
IHJldHVybiAodW5kb09yUmVkbyA9PSBVbmRvT3JSZWRvOjpVbmRvKSA/IFtbY29udGVudFZpZXco
KSB1bmRvTWFuYWdlcl0gdW5kb10gOiBbW2NvbnRlbnRWaWV3KCkgdW5kb01hbmFnZXJdIHJlZG9d
OwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2Vu
UmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCit2b2lkIFBhZ2VDbGllbnRJ
bXBsOjphY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0
IHVpbnQ4X3Q+IGRhdGEsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgcGlkX3QpCiB7CiAgICAg
TlNEYXRhICpyZW1vdGVUb2tlbiA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczpkYXRhLmRhdGEoKSBs
ZW5ndGg6ZGF0YS5zaXplKCldOwogICAgIFtjb250ZW50VmlldygpIF9zZXRBY2Nlc3NpYmlsaXR5
V2ViUHJvY2Vzc1Rva2VuOnJlbW90ZVRva2VuXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDk2NGYzMDU5MmFhOC4uOTVjY2QwNTkyYjFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0K
QEAgLTc2Myw5ICs3NjMsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U21hcnRJbnNlcnREZWxl
dGVFbmFibGVkKGJvb2wpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJQYWdl
UHJveHk6OnJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29u
c3QgdWludDhfdD4gZGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWdpc3RlcldlYlByb2Nlc3NB
Y2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEsIEZyYW1lSWRl
bnRpZmllciBmcmFtZUlEKQogewotICAgIHByb3RlY3RlZFBhZ2VDbGllbnQoKS0+YWNjZXNzaWJp
bGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKGRhdGEpOworICAgIHBhZ2VDbGllbnQoKS5hY2Nl
c3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoZGF0YSwgZnJhbWVJRCk7CiB9ICAgIAog
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1w
bE1hYy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgK
aW5kZXggZmI2YzYwNzg2N2FmLi5iZjhkYTQzMGQ4YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCkBAIC0xNzYsNyArMTc2LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGdlc3R1cmVFdmVudFdhc05vdEhhbmRsZWRCeVdlYkNvcmUoY29uc3Qg
TmF0aXZlV2ViR2VzdHVyZUV2ZW50Jikgb3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIHZvaWQgYWNj
ZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90
Pikgb3ZlcnJpZGU7CisgICAgdm9pZCBhY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2
ZWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHBp
ZF90KSBvdmVycmlkZTsKIAogICAgIHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBhc3Npc3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKCkgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGxNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMu
bW0KaW5kZXggMDc4MGYxOGRhMWMyLi4wMTUwZWM0NTEyY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KQEAgLTU4MSw5ICs1ODEsOSBA
QCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRUZXh0SW5kaWNhdG9yQW5pbWF0aW9uUHJvZ3Jlc3Mo
ZmxvYXQgcHJvZ3Jlc3MpCiAgICAgbV9pbXBsLT5zZXRUZXh0SW5kaWNhdG9yQW5pbWF0aW9uUHJv
Z3Jlc3MocHJvZ3Jlc3MpOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5
V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCit2
b2lkIFBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQo
c3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBwaWRfdCBwaWQpCiB7Ci0gICAgbV9pbXBsLT5zZXRBY2Nlc3NpYmlsaXR5V2ViUHJv
Y2Vzc1Rva2VuKFtOU0RhdGEgZGF0YVdpdGhCeXRlczpkYXRhLmRhdGEoKSBsZW5ndGg6ZGF0YS5z
aXplKCldKTsKKyAgICBtX2ltcGwtPnNldEFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW4oW05T
RGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEuZGF0YSgpIGxlbmd0aDpkYXRhLnNpemUoKV0sIGZyYW1l
SUQsIHBpZCk7CiB9CiAgICAgCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjplbnRlckFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGxheWVyVHJlZUNvbnRleHQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFj
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRl
eCBjZmIxMGZkYmI0MTMuLjg2OTYxN2EyOWQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC0zMDYsMTIgKzMwNiwxMiBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAoY29uc3QgRGljdGlvbmFyeVBv
cHVwSW5mbyYgZGljdGlvbgogICAgIHByb3RlY3RlZFBhZ2VDbGllbnQoKS0+ZGlkUGVyZm9ybURp
Y3Rpb25hcnlMb29rdXAoZGljdGlvbmFyeVBvcHVwSW5mbyk7CiB9CiAKLXZvaWQgV2ViUGFnZVBy
b3h5OjpyZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0
IHVpbnQ4X3Q+IGRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNj
ZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhLCBGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCkKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAg
IHJldHVybjsKICAgICAKLSAgICBwcm90ZWN0ZWRQYWdlQ2xpZW50KCktPmFjY2Vzc2liaWxpdHlX
ZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChkYXRhKTsKKyAgICBwcm90ZWN0ZWRQYWdlQ2xpZW50KCkt
PmFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChkYXRhLCBmcmFtZUlELCBtZXNz
YWdlU2VuZGVyQ29ubmVjdGlvbigpLT5yZW1vdGVQcm9jZXNzSUQoKSk7CiB9ICAgIAogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6bWFrZUZpcnN0UmVzcG9uZGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYlZpZXdJbXBsLmgKaW5kZXggMDNkZmRhZWUxNTNjLi41YTJlMTI5ZmRjOGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3SW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3SW1wbC5oCkBAIC00NDgsNyArNDQ4
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SWdub3Jlc01vdXNlRHJhZ2dlZEV2ZW50cyhib29s
KTsKICAgICBib29sIGlnbm9yZXNNb3VzZURyYWdnZWRFdmVudHMoKSBjb25zdCB7IHJldHVybiBt
X2lnbm9yZXNNb3VzZURyYWdnZWRFdmVudHM7IH0KIAotICAgIHZvaWQgc2V0QWNjZXNzaWJpbGl0
eVdlYlByb2Nlc3NUb2tlbihOU0RhdGEgKik7CisgICAgdm9pZCBzZXRBY2Nlc3NpYmlsaXR5V2Vi
UHJvY2Vzc1Rva2VuKE5TRGF0YSAqLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHBpZF90KTsK
ICAgICB2b2lkIGFjY2Vzc2liaWxpdHlSZWdpc3RlclVJUHJvY2Vzc1Rva2VucygpOwogICAgIHZv
aWQgdXBkYXRlUmVtb3RlQWNjZXNzaWJpbGl0eVJlZ2lzdHJhdGlvbihib29sIHJlZ2lzdGVyUHJv
Y2Vzcyk7CiAgICAgaWQgYWNjZXNzaWJpbGl0eUZvY3VzZWRVSUVsZW1lbnQoKTsKQEAgLTkyNyw2
ICs5MjcsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICBib29sIG1f
YWxsb3dzTWFnbmlmaWNhdGlvbiB7IGZhbHNlIH07CiAKICAgICBSZXRhaW5QdHI8TlNBY2Nlc3Np
YmlsaXR5UmVtb3RlVUlFbGVtZW50PiBtX3JlbW90ZUFjY2Vzc2liaWxpdHlDaGlsZDsKKyAgICBS
ZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gbV9yZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVD
YWNoZTsKIAogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZT4gbV9wcm9taXNlZEltYWdlOwogICAg
IFN0cmluZyBtX3Byb21pc2VkRmlsZW5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V2ViVmlld0ltcGwubW0KaW5kZXggNWJkZTExMTYyNzkwLi5hNGIzMDdkNzZlNzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwubW0KQEAgLTM0ODEsMTAgKzM0ODEs
MTIgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0SWdub3Jlc01vdXNlRHJhZ2dlZEV2ZW50cyhib29s
IGlnbm9yZXNNb3VzZURyYWdnZWRFdmVudHMpCiAgICAgbV9pZ25vcmVzTW91c2VEcmFnZ2VkRXZl
bnRzID0gaWdub3Jlc01vdXNlRHJhZ2dlZEV2ZW50czsKIH0KIAotdm9pZCBXZWJWaWV3SW1wbDo6
c2V0QWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlbihOU0RhdGEgKmRhdGEpCit2b2lkIFdlYlZp
ZXdJbXBsOjpzZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuKE5TRGF0YSAqZGF0YSwgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHBpZF90IHBpZCkKIHsKLSAgICBtX3JlbW90
ZUFjY2Vzc2liaWxpdHlDaGlsZCA9IGRhdGEubGVuZ3RoID8gYWRvcHROUyhbW05TQWNjZXNzaWJp
bGl0eVJlbW90ZVVJRWxlbWVudCBhbGxvY10gaW5pdFdpdGhSZW1vdGVUb2tlbjpkYXRhXSkgOiBu
aWw7Ci0gICAgdXBkYXRlUmVtb3RlQWNjZXNzaWJpbGl0eVJlZ2lzdHJhdGlvbih0cnVlKTsKKyAg
ICBpZiAocGlkID09IG1fcGFnZS0+cHJvY2VzcygpLnByb2Nlc3NJRCgpKSB7CisgICAgICAgIG1f
cmVtb3RlQWNjZXNzaWJpbGl0eUNoaWxkID0gZGF0YS5sZW5ndGggPyBhZG9wdE5TKFtbTlNBY2Nl
c3NpYmlsaXR5UmVtb3RlVUlFbGVtZW50IGFsbG9jXSBpbml0V2l0aFJlbW90ZVRva2VuOmRhdGFd
KSA6IG5pbDsKKyAgICAgICAgdXBkYXRlUmVtb3RlQWNjZXNzaWJpbGl0eVJlZ2lzdHJhdGlvbih0
cnVlKTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OnVwZGF0ZVJlbW90ZUFjY2Vzc2li
aWxpdHlSZWdpc3RyYXRpb24oYm9vbCByZWdpc3RlclByb2Nlc3MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9j
YWxGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggN2QyYTQyNjVmZDVjLi5mM2Y3M2YzNjdlYWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJM
b2NhbEZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTE4MDcsNiAr
MTgwNywxMiBAQCB2b2lkIFdlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbERl
c3Ryb3lHbG9iYWxPYmplY3RGb3JET01XaW5kb3dFeHRlbgogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgCitXZWJDb3JlOjpJbnRQb2ludCBXZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50OjphY2Nl
c3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKQoreworICAgIFJlZlB0ciB3ZWJQYWdlID0gbV9m
cmFtZS0+cGFnZSgpOworICAgIHJldHVybiB3ZWJQYWdlID8gd2ViUGFnZS0+YWNjZXNzaWJpbGl0
eVJlbW90ZUZyYW1lT2Zmc2V0KCkgOiBJbnRQb2ludCgpOworfQorCiBSZW1vdGVBWE9iamVjdFJl
ZiBXZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50OjphY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkK
IHsKICAgICBSZWZQdHIgd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJMb2NhbEZyYW1lTG9hZGVy
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9j
YWxGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDg4YzhjYzVjYjcyZS4uOWYzYjY3ZjBmY2I4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9j
YWxGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTI0MCw2ICsyNDAsNyBA
QCBwcml2YXRlOgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmVtb3RlQVhPYmplY3RSZWYg
YWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpIGZpbmFsOworICAgIFdlYkNvcmU6OkludFBvaW50
IGFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCgpIGZpbmFsOwogI2lmIEVOQUJMRShBQ0NF
U1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAgICAgdm9pZCBzZXRBWElzb2xhdGVkVHJlZVJvb3Qo
V2ViQ29yZTo6QVhDb3JlT2JqZWN0KikgZmluYWw7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJh
bWVDbGllbnQuY3BwCmluZGV4IDhjYmZmMmM5YjhjOS4uYTJmMDk0OGQ0MzEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJSZW1vdGVGcmFtZUNsaWVudC5jcHAKQEAgLTk2LDYgKzk2LDM4IEBAIFN0cmluZyBXZWJSZW1v
dGVGcmFtZUNsaWVudDo6cmVuZGVyVHJlZUFzVGV4dChzaXplX3QgYmFzZUluZGVudCwgT3B0aW9u
U2V0PFJlbmRlCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAordm9pZCBXZWJSZW1vdGVGcmFtZUNs
aWVudDo6dW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZp
ZXIpCit7CisgICAgLy8gTWFrZSBzdXJlIEFwcEtpdCBzeXN0ZW0ga25vd3MgYWJvdXQgb3VyIHJl
bW90ZSBVSSBwcm9jZXNzIHN0YXR1cyBub3cuCisgICAgaWYgKFJlZlB0ciBwYWdlID0gbV9mcmFt
ZS0+cGFnZSgpKQorICAgICAgICBwYWdlLT5hY2Nlc3NpYmlsaXR5TWFuYWdlUmVtb3RlRWxlbWVu
dFN0YXR1cyhmYWxzZSwgcHJvY2Vzc0lkZW50aWZpZXIpOworfQorCit2b2lkIFdlYlJlbW90ZUZy
YW1lQ2xpZW50Ojp1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OkludFBvaW50IG9mZnNldCkKK3sKKyAg
ICBpZiAoUmVmUHRyIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpCisgICAgICAgIHBhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6VXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zm
c2V0KGZyYW1lSUQsIG9mZnNldCkpOworfQorCit2b2lkIFdlYlJlbW90ZUZyYW1lQ2xpZW50Ojpi
aW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBzdGQ6OnNwYW48Y29uc3QgdWludDhf
dD4gZGF0YVRva2VuLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6c3Bhbjxjb25zdCB1aW50
OF90PiwgaW50KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBSZWZQdHIgcGFnZSA9IG1f
ZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHsgfSwgMCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBwYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpCaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhwcm9jZXNzSWRlbnRpZmll
ciwgZnJhbWVJRCwgZGF0YVRva2VuKSk7CisgICAgaWYgKCFzZW5kUmVzdWx0LnN1Y2NlZWRlZCgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIFtyZXN1bHRUb2tlbiwgcHJvY2Vzc0lkZW50
aWZpZXJSZXN1bHRdID0gc2VuZFJlc3VsdC50YWtlUmVwbHkoKTsKKworICAgIC8vIE1ha2Ugc3Vy
ZSBBcHBLaXQgc3lzdGVtIGtub3dzIGFib3V0IG91ciByZW1vdGUgVUkgcHJvY2VzcyBzdGF0dXMg
bm93LgorICAgIHBhZ2UtPmFjY2Vzc2liaWxpdHlNYW5hZ2VSZW1vdGVFbGVtZW50U3RhdHVzKHRy
dWUsIHByb2Nlc3NJZGVudGlmaWVyUmVzdWx0KTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1
bHRUb2tlbiwgcHJvY2Vzc0lkZW50aWZpZXJSZXN1bHQpOworfQorCiB2b2lkIFdlYlJlbW90ZUZy
YW1lQ2xpZW50Ojpicm9hZGNhc3RGcmFtZVJlbW92YWxUb090aGVyUHJvY2Vzc2VzKCkKIHsKICAg
ICBXZWJGcmFtZUxvYWRlckNsaWVudDo6YnJvYWRjYXN0RnJhbWVSZW1vdmFsVG9PdGhlclByb2Nl
c3NlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlJlbW90ZUZyYW1lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuaAppbmRleCA2MjZlMDVjM2U4OGIuLmM4
ODllYjdlNWZhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlJlbW90ZUZyYW1lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90ZUZyYW1lQ2xpZW50LmgKQEAgLTQ4LDYgKzQ4LDEw
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwb3N0TWVzc2FnZVRvUmVtb3RlKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciBzb3VyY2UsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgdGFyZ2V0LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YT4gdGFyZ2V0T3JpZ2luLCBjb25zdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQ
b3J0cyYpIGZpbmFsOwogICAgIHZvaWQgY2hhbmdlTG9jYXRpb24oV2ViQ29yZTo6RnJhbWVMb2Fk
UmVxdWVzdCYmKSBmaW5hbDsKICAgICBTdHJpbmcgcmVuZGVyVHJlZUFzVGV4dChzaXplX3QgYmFz
ZUluZGVudCwgT3B0aW9uU2V0PFdlYkNvcmU6OlJlbmRlckFzVGV4dEZsYWc+KSBmaW5hbDsKKyAg
ICB2b2lkIGJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmll
ciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBpbnQpPiYmKSBm
aW5hbDsKKyAgICB2b2lkIHVuYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50KSBmaW5h
bDsKKyAgICB2b2lkIHVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OkludFBvaW50KSBmaW5hbDsKKwogICAgIHZvaWQg
YnJvYWRjYXN0RnJhbWVSZW1vdmFsVG9PdGhlclByb2Nlc3NlcygpIGZpbmFsOwogICAgIHZvaWQg
Y2xvc2VQYWdlKCkgZmluYWw7CiAgICAgdm9pZCBmb2N1cygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCmlu
ZGV4IGFlNDNmMWE0Njk4Yi4uZWZmNjRhMzAxZjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCkBAIC03Nyw2ICs3
Nyw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1VUSVJlZ2lzdHJ5Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1VUSVV0aWxpdGllcy5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQ
SS5oPgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0FjY2Vzc2liaWxpdHlTUEkuaD4KICNpbXBv
cnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3
aW4vU2FuZGJveFNQSS5oPgogCkBAIC00MDQsMTAgKzQwNSw0NiBAQCB2b2lkIFdlYlBhZ2U6OmNs
ZWFyRGljdGF0aW9uQWx0ZXJuYXRpdmVzKFZlY3RvcjxEaWN0YXRpb25Db250ZXh0PiYmIGNvbnRl
eHRzKQogICAgIH0sIERvY3VtZW50TWFya2VyOjpUeXBlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZXMp
OwogfQogCi12b2lkIFdlYlBhZ2U6OmFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKFJl
dGFpblB0cjxOU0RhdGE+IHJlbW90ZVRva2VuKQordm9pZCBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5
VHJhbnNmZXJSZW1vdGVUb2tlbihSZXRhaW5QdHI8TlNEYXRhPiByZW1vdGVUb2tlbiwgRnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQpCiB7CiAgICAgc3RkOjpzcGFuIGRhdGFUb2tlbihyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihbcmVtb3RlVG9rZW4gYnl0ZXNdKSwgW3JlbW90ZVRva2Vu
IGxlbmd0aF0pOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJXZWJQ
cm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKGRhdGFUb2tlbikpOworICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKGRhdGFU
b2tlbiwgZnJhbWVJRCkpOworfQorCit2b2lkIFdlYlBhZ2U6OmFjY2Vzc2liaWxpdHlNYW5hZ2VS
ZW1vdGVFbGVtZW50U3RhdHVzKGJvb2wgcmVnaXN0ZXJTdGF0dXMsIGludCBwcm9jZXNzSWRlbnRp
ZmllcikKK3sKKyAgICBpZiAocmVnaXN0ZXJTdGF0dXMpCisgICAgICAgIFtOU0FjY2Vzc2liaWxp
dHlSZW1vdGVVSUVsZW1lbnQgcmVnaXN0ZXJSZW1vdGVVSVByb2Nlc3NJZGVudGlmaWVyOnByb2Nl
c3NJZGVudGlmaWVyXTsKKyAgICBlbHNlCisgICAgICAgIFtOU0FjY2Vzc2liaWxpdHlSZW1vdGVV
SUVsZW1lbnQgdW5yZWdpc3RlclJlbW90ZVVJUHJvY2Vzc0lkZW50aWZpZXI6cHJvY2Vzc0lkZW50
aWZpZXJdOworfQorCit2b2lkIFdlYlBhZ2U6OmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVz
KGludCBwcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhVG9rZW4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBpbnQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIFJlZlB0ciB3ZWJGcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1l
KGZyYW1lSUQpOworICAgIGlmICghd2ViRnJhbWUpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0sIDApOworICAgIH0K
KworICAgIFJlZlB0ciBjb3JlTG9jYWxGcmFtZSA9IHdlYkZyYW1lLT5jb3JlTG9jYWxGcmFtZSgp
OworICAgIGlmICghY29yZUxvY2FsRnJhbWUpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0sIDApOworICAgIH0KKwor
ICAgIGF1dG8qIHJlbmRlcmVyID0gY29yZUxvY2FsRnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpOwor
ICAgIGlmICghcmVuZGVyZXIpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0sIDApOworICAgIH0KKworICAgIHJlZ2lz
dGVyUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5VG9rZW5zKHByb2Nlc3NJZGVudGlmaWVyLCBkYXRh
VG9rZW4pOworCisgICAgLy8gR2V0IG91ciByZW1vdGUgdG9rZW4gZGF0YSBhbmQgc2VuZCBiYWNr
IHRvIHRoZSBSZW1vdGVGcmFtZS4KKyAgICBhdXRvIHJlbW90ZVRva2VuID0gYWNjZXNzaWJpbGl0
eVJlbW90ZVRva2VuRGF0YSgpOworICAgIHN0ZDo6c3BhbiByZW1vdGVEYXRhVG9rZW4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oW3JlbW90ZVRva2VuIGJ5dGVzXSksIFtyZW1vdGVU
b2tlbiBsZW5ndGhdKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihyZW1vdGVEYXRhVG9rZW4sIGdl
dHBpZCgpKTsKIH0KIAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYzA1ZGRjZGU3ZmFhLi4xNGQ4MjIxYjQyYjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTY3MSw2
ICs2NzEsMTAgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJIaXN0b3J5KCk7CiAKICAgICB2b2lk
IGFjY2Vzc2liaWxpdHlTZXR0aW5nc0RpZENoYW5nZSgpOworI2lmIFBMQVRGT1JNKENPQ09BKQor
ICAgIHZvaWQgYWNjZXNzaWJpbGl0eU1hbmFnZVJlbW90ZUVsZW1lbnRTdGF0dXMoYm9vbCwgaW50
KTsKKyNlbmRpZgorCiAgICAgdm9pZCBzY3JlZW5Qcm9wZXJ0aWVzRGlkQ2hhbmdlKCk7CiAKICAg
ICB2b2lkIHNjYWxlUGFnZShkb3VibGUgc2NhbGUsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBv
cmlnaW4pOwpAQCAtMTA0Myw3ICsxMDQ3LDExIEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZUFjY2Vzc2liaWxpdHkoKTsKICAgICB2b2lk
IHJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VucyhzdGQ6OnNwYW48Y29uc3QgdWlu
dDhfdD4gZWxlbWVudFRva2VuLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gd2luZG93VG9rZW4p
OworICAgIHZvaWQgcmVnaXN0ZXJSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlUb2tlbnMocGlkX3Qs
IHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Pik7CiAgICAgV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9i
amVjdCogYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpOworICAgIFdlYkNvcmU6OkludFBvaW50
IGFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCgpOworICAgIHZvaWQgY3JlYXRlTW9ja0Fj
Y2Vzc2liaWxpdHlFbGVtZW50KHBpZF90KTsKKyAgICB2b2lkIHVwZGF0ZVJlbW90ZVBhZ2VBY2Nl
c3NpYmlsaXR5T2Zmc2V0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6SW50UG9p
bnQpOwogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAgICAgdm9pZCBj
YWNoZUFYUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwogICAgIHZvaWQgY2Fj
aGVBWFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwpAQCAtMjA5NCw3ICsyMTAyLDcgQEAg
cHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHJlcXVlc3RBY3RpdmVOb3dQ
bGF5aW5nU2Vzc2lvbkluZm8oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sLCBXZWJDb3JlOjpO
b3dQbGF5aW5nSW5mbyYmKT4mJik7CiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYWNjZXNzaWJpbGl0
eVJlbW90ZVRva2VuRGF0YSgpIGNvbnN0OwotICAgIHZvaWQgYWNjZXNzaWJpbGl0eVRyYW5zZmVy
UmVtb3RlVG9rZW4oUmV0YWluUHRyPE5TRGF0YT4pOworICAgIHZvaWQgYWNjZXNzaWJpbGl0eVRy
YW5zZmVyUmVtb3RlVG9rZW4oUmV0YWluUHRyPE5TRGF0YT4sIFdlYkNvcmU6OkZyYW1lSWRlbnRp
Zmllcik7CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0U2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3Zl
RXZlbnRzKGJvb2wgZGlzcGF0Y2gpIHsgbV9zaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVu
dHMgPSBkaXNwYXRjaDsgfQpAQCAtMjIwNCw2ICsyMjEyLDkgQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgcmVtb3RlUG9zdE1lc3NhZ2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHNvdXJjZSwgY29u
c3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciB0YXJnZXQs
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmIHRhcmdldE9yaWdp
biwgY29uc3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmKTsKICAgICB2b2lkIHJl
bmRlclRyZWVBc1RleHQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBzaXplX3QgYmFzZUluZGVu
dCwgT3B0aW9uU2V0PFdlYkNvcmU6OlJlbmRlckFzVGV4dEZsYWc+LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0cmluZyYmKT4mJik7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBiaW5k
UmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgaW50KT4mJik7CisjZW5kaWYKIAog
ICAgIHZvaWQgcmVxdWVzdFRleHRFeHRyYWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rmxv
YXRSZWN0PiYmIGNvbGxlY3Rpb25SZWN0SW5Sb290VmlldywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJDb3JlOjpUZXh0RXh0cmFjdGlvbjo6SXRlbSYmKT4mJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDBj
YWY2ZTIyNTM3OC4uYWY3YWQyNmMzYTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTQ5Miw2ICs0OTIsOSBAQCBH
ZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRo
ZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIFdpbmRvd0FuZFZpZXdGcmFtZXNDaGFuZ2VkKHN0
cnVjdCBXZWJLaXQ6OlZpZXdXaW5kb3dDb29yZGluYXRlcyBjb29yZGluYXRlcykKICAgICBTZXRN
YWluRnJhbWVJc1Njcm9sbGFibGUoYm9vbCBpc1Njcm9sbGFibGUpCiAgICAgUmVnaXN0ZXJVSVBy
b2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBlbGVtZW50
VG9rZW4sIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiB3aW5kb3dUb2tlbikKKyAgICBCaW5kUmVt
b3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YVRva2Vu
KSAtPiAoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHRva2VuLCBpbnQgcHJvY2Vzc0lkZW50aWZp
ZXIpIFN5bmNocm9ub3VzCisgICAgVXBkYXRlUmVtb3RlUGFnZUFjY2Vzc2liaWxpdHlPZmZzZXQo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OkludFBvaW50IG9mZnNl
dCk7CisKICAgICBHZXRTdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkgLT4gKFN0cmluZyBz
dHJpbmdWYWx1ZSkgU3luY2hyb25vdXMKICAgICBHZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZChTdHJpbmcgcGFzdGVib2FyZFR5cGUpIC0+IChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBidWZmZXIpIFN5bmNocm9ub3VzCiAgICAgUmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKFN0
cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKGJvb2wgcmVzdWx0KSBTeW5jaHJvbm91cwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRl
eCBhN2ZkNzIzMTI3YzAuLjEwZDk4OGEzNWM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTI0MywxMiArMjQzLDE0IEBA
IHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplQWNjZXNzaWJpbGl0eSgpCiAgICAgbV9t
b2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgPSBhZG9wdE5TKFtbV0tBY2Nlc3NpYmlsaXR5V2ViUGFn
ZU9iamVjdCBhbGxvY10gaW5pdF0pOwogICAgIFttX21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCBz
ZXRXZWJQYWdlOnRoaXNdOwogCi0gICAgYWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4o
YWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0YSgpKTsKKyAgICBSZWYgZnJhbWUgPSBtX3BhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIGFjY2Vzc2liaWxp
dHlUcmFuc2ZlclJlbW90ZVRva2VuKGFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSwgZnJh
bWUuZnJhbWVJRCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybVJlaW5pdGlhbGl6ZSgp
CiB7Ci0gICAgYWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oYWNjZXNzaWJpbGl0eVJl
bW90ZVRva2VuRGF0YSgpKTsKKyAgICBSZWYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90
ZVRva2VuKGFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSwgZnJhbWUuZnJhbWVJRCgpKTsK
IH0KIAogUmV0YWluUHRyPE5TRGF0YT4gV2ViUGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90ZVRva2Vu
RGF0YSgpIGNvbnN0CkBAIC02NjIsNiArNjY0LDEyIEBAIHZvaWQgV2ViUGFnZTo6Z2V0RGF0YVNl
bGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
CiAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIH0KIAorV2ViQ29yZTo6SW50UG9pbnQgV2Vi
UGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiB7IH07Cit9CisKIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmpl
Y3QqIFdlYlBhZ2U6OmFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oCmlu
ZGV4IDM5ZTkwZTNjODk1ZS4uNDk3MDA3MGE0NTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmls
aXR5V2ViUGFnZU9iamVjdEJhc2UuaApAQCAtNDUsNiArNDUsOCBAQCBjbGFzcyBBWENvcmVPYmpl
Y3Q7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX3NpemUgV1RGX0dVQVJERURfQllfTE9DSyhtX2Nh
Y2hlTG9jayk7CiAgICAgVGhyZWFkU2FmZVdlYWtQdHI8V2ViQ29yZTo6QVhDb3JlT2JqZWN0PiBt
X2lzb2xhdGVkVHJlZVJvb3Q7CiAjZW5kaWYKKworICAgIFdlYkNvcmU6OkludFBvaW50IG1fcmVt
b3RlRnJhbWVPZmZzZXQ7CiAgICAgUmV0YWluUHRyPGlkPiBtX3BhcmVudDsKICAgICBib29sIG1f
aGFzTWFpbkZyYW1lUGx1Z2luOwogfQpAQCAtNTYsOSArNTgsMTEgQEAgY2xhc3MgQVhDb3JlT2Jq
ZWN0OwogLSAodm9pZClzZXRJc29sYXRlZFRyZWVSb290OihOYWtlZFB0cjxXZWJDb3JlOjpBWENv
cmVPYmplY3Q+KXJvb3Q7CiAjZW5kaWYKIC0gKHZvaWQpc2V0UmVtb3RlUGFyZW50OihpZClwYXJl
bnQ7CistICh2b2lkKXNldFJlbW90ZUZyYW1lT2Zmc2V0OihXZWJDb3JlOjpJbnRQb2ludClvZmZz
ZXQ7CiAtICh2b2lkKXNldEhhc01haW5GcmFtZVBsdWdpbjooYm9vbCloYXNQbHVnaW47CiAKIC0g
KGlkKWFjY2Vzc2liaWxpdHlSb290T2JqZWN0V3JhcHBlcjsKIC0gKGlkKWFjY2Vzc2liaWxpdHlG
b2N1c2VkVUlFbGVtZW50OworLSAoV2ViQ29yZTo6SW50UG9pbnQpYWNjZXNzaWJpbGl0eVJlbW90
ZUZyYW1lT2Zmc2V0OwogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9i
amVjdEJhc2UubW0KaW5kZXggNmY5OTU0NWFlYmY1Li5iZWM4ZDczZmFhMmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQ
YWdlT2JqZWN0QmFzZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0KQEAgLTM2LDkgKzM2LDExIEBA
CiAjaW1wb3J0ICJXS1N0cmluZ0NGLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0FYT2JqZWN0Q2FjaGUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRnJhbWVU
cmVlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
TG9jYWxGcmFtZVZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZS5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9SZW1vdGVGcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxWaWV3Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1Njcm9sbGJhci5oPgogCkBAIC01NywxMSArNTksMTcgQEAgbmFtZXNwYWNl
IGF4ID0gV2ViQ29yZTo6QWNjZXNzaWJpbGl0eTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgYXV0byogbG9jYWxNYWluRnJhbWUgPSBkeW5hbWljRG93bmNh
c3Q8V2ViQ29yZTo6TG9jYWxGcmFtZT4ocGFnZS0+bWFpbkZyYW1lKCkpOwotICAgIGlmICghbG9j
YWxNYWluRnJhbWUgfHwgIWxvY2FsTWFpbkZyYW1lLT5kb2N1bWVudCgpKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICBpZiAoYXV0byogbG9jYWxNYWluRnJhbWUgPSBkeW5hbWljRG93bmNh
c3Q8V2ViQ29yZTo6TG9jYWxGcmFtZT4ocGFnZS0+bWFpbkZyYW1lKCkpKSB7CisgICAgICAgIGlm
IChhdXRvKiBkb2N1bWVudCA9IGxvY2FsTWFpbkZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICAg
ICAgcmV0dXJuIGRvY3VtZW50LT5heE9iamVjdENhY2hlKCk7CisgICAgfSBlbHNlIGlmIChhdXRv
KiByZW1vdGVNYWluRnJhbWUgPSBkeW5hbWljRG93bmNhc3Q8V2ViQ29yZTo6UmVtb3RlRnJhbWU+
KHBhZ2UtPm1haW5GcmFtZSgpKSkgeworICAgICAgICBhdXRvJiB0cmVlID0gcmVtb3RlTWFpbkZy
YW1lLT50cmVlKCk7CisgICAgICAgIGF1dG8qIGZpcnN0RnJhbWUgPSBkeW5hbWljRG93bmNhc3Q8
V2ViQ29yZTo6TG9jYWxGcmFtZT4odHJlZS5maXJzdENoaWxkKCkpOworICAgICAgICBhdXRvKiBk
b2N1bWVudCA9IGZpcnN0RnJhbWUgPyBmaXJzdEZyYW1lLT5kb2N1bWVudCgpIDogbnVsbHB0cjsK
KyAgICAgICAgcmV0dXJuIGRvY3VtZW50ID8gZG9jdW1lbnQtPmF4T2JqZWN0Q2FjaGUoKSA6IG51
bGxwdHI7CisgICAgfQogCi0gICAgcmV0dXJuIGxvY2FsTWFpbkZyYW1lLT5kb2N1bWVudCgpLT5h
eE9iamVjdENhY2hlKCk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIC0gKGlkKWFjY2Vzc2li
aWxpdHlQbHVnaW5PYmplY3QKQEAgLTE1Miw2ICsxNjAsMTcgQEAgbmFtZXNwYWNlIGF4ID0gV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eTsKICAgICBtX2hhc01haW5GcmFtZVBsdWdpbiA9IGhhc1BsdWdp
bjsKIH0KIAorLSAodm9pZClzZXRSZW1vdGVGcmFtZU9mZnNldDooV2ViQ29yZTo6SW50UG9pbnQp
b2Zmc2V0Cit7CisgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CisgICAgbV9yZW1vdGVGcmFt
ZU9mZnNldCA9IG9mZnNldDsKK30KKworLSAoV2ViQ29yZTo6SW50UG9pbnQpYWNjZXNzaWJpbGl0
eVJlbW90ZUZyYW1lT2Zmc2V0Cit7CisgICAgcmV0dXJuIG1fcmVtb3RlRnJhbWVPZmZzZXQ7Cit9
CisKIC0gKHZvaWQpc2V0UmVtb3RlUGFyZW50OihpZClwYXJlbnQKIHsKICAgICBBU1NFUlQoaXNN
YWluUnVuTG9vcCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggYjJkYzczNWJiZWFlLi44OWVhZTVlOTdmZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1t
CkBAIC0xMjMsMTYgKzEyMywxMiBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6ZUFj
Y2Vzc2liaWxpdHkoKQogICAgIC8vIEN1cnJlbnRseSwgaXQgaXMgYWxzbyBuZWVkZWQgdG8gYWxs
b2NhdGUgYW5kIGluaXRpYWxpemUgYW4gTlNBcHBsaWNhdGlvbiBvYmplY3QuCiAgICAgW05TQXBw
bGljYXRpb24gX2FjY2Vzc2liaWxpdHlJbml0aWFsaXplXTsKIAotICAgIGF1dG8gbW9ja0FjY2Vz
c2liaWxpdHlFbGVtZW50ID0gYWRvcHROUyhbW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3Qg
YWxsb2NdIGluaXRdKTsKLQogICAgIC8vIEdldCB0aGUgcGlkIGZvciB0aGUgc3RhcnRpbmcgcHJv
Y2Vzcy4KICAgICBwaWRfdCBwaWQgPSBXZWJDb3JlOjpwcmVzZW50aW5nQXBwbGljYXRpb25QSUQo
KTsKLSAgICBpZiAoW21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKGFjY2Vzc2liaWxpdHlTZXRQcmVzZW50ZXJQcm9jZXNzSWRlbnRpZmllcjopXSkK
LSAgICAgICAgWyhpZCltb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQuZ2V0KCkgYWNjZXNzaWJpbGl0
eVNldFByZXNlbnRlclByb2Nlc3NJZGVudGlmaWVyOnBpZF07Ci0gICAgW21vY2tBY2Nlc3NpYmls
aXR5RWxlbWVudCBzZXRXZWJQYWdlOnRoaXNdOwotICAgIG1fbW9ja0FjY2Vzc2liaWxpdHlFbGVt
ZW50ID0gV1RGTW92ZShtb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQpOwotCi0gICAgYWNjZXNzaWJp
bGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oYWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0YSgpKTsK
KyAgICBjcmVhdGVNb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQocGlkKTsKKyAgICBSZWZQdHIgbG9j
YWxNYWluRnJhbWUgPSBkeW5hbWljRG93bmNhc3Q8TG9jYWxGcmFtZT4obV9wYWdlLT5tYWluRnJh
bWUoKSk7CisgICAgaWYgKGxvY2FsTWFpbkZyYW1lKQorICAgICAgICBhY2Nlc3NpYmlsaXR5VHJh
bnNmZXJSZW1vdGVUb2tlbihhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCksIGxvY2FsTWFp
bkZyYW1lLT5mcmFtZUlEKCkpOwogCiAgICAgLy8gQ2xvc2UgTWFjaCBjb25uZWN0aW9uIHRvIExh
dW5jaCBTZXJ2aWNlcy4KICNpZiBIQVZFKExTX1NFUlZFUl9DT05ORUNUSU9OX1NUQVRVU19SRUxF
QVNFX05PVElGSUNBVElPTlNfTUFTSykKQEAgLTE0NCw5ICsxNDAsMjAgQEAgdm9pZCBXZWJQYWdl
OjpwbGF0Zm9ybUluaXRpYWxpemVBY2Nlc3NpYmlsaXR5KCkKICAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5yZXZva2VMYXVuY2hTZXJ2aWNlc1NhbmRib3hFeHRlbnNpb24oKTsKIH0KIAordm9p
ZCBXZWJQYWdlOjpjcmVhdGVNb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQocGlkX3QgcGlkKQorewor
ICAgIGF1dG8gbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50ID0gYWRvcHROUyhbW1dLQWNjZXNzaWJp
bGl0eVdlYlBhZ2VPYmplY3QgYWxsb2NdIGluaXRdKTsKKworICAgIGlmIChbbW9ja0FjY2Vzc2li
aWxpdHlFbGVtZW50IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYWNjZXNzaWJpbGl0eVNl
dFByZXNlbnRlclByb2Nlc3NJZGVudGlmaWVyOildKQorICAgICAgICBbKGlkKW1vY2tBY2Nlc3Np
YmlsaXR5RWxlbWVudC5nZXQoKSBhY2Nlc3NpYmlsaXR5U2V0UHJlc2VudGVyUHJvY2Vzc0lkZW50
aWZpZXI6cGlkXTsKKyAgICBbbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50IHNldFdlYlBhZ2U6dGhp
c107CisgICAgbV9tb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgPSBXVEZNb3ZlKG1vY2tBY2Nlc3Np
YmlsaXR5RWxlbWVudCk7Cit9CisKIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1SZWluaXRpYWxpemUo
KQogewotICAgIGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKGFjY2Vzc2liaWxpdHlS
ZW1vdGVUb2tlbkRhdGEoKSk7CisgICAgUmVmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xs
ZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1v
dGVUb2tlbihhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCksIGZyYW1lLT5mcmFtZUlEKCkp
OwogfQogCiBSZXRhaW5QdHI8TlNEYXRhPiBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5UmVtb3RlVG9r
ZW5EYXRhKCkgY29uc3QKQEAgLTQ2OSwxMiArNDc2LDI3IEBAIGJvb2wgV2ViUGFnZTo6cGVyZm9y
bU5vbkVkaXRpbmdCZWhhdmlvckZvclNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIEtl
eWJvCiAgICAgcmV0dXJuIGRpZFBlcmZvcm1BY3Rpb247CiB9CiAKK3ZvaWQgV2ViUGFnZTo6dXBk
YXRlUmVtb3RlUGFnZUFjY2Vzc2liaWxpdHlPZmZzZXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIFdlYkNvcmU6OkludFBvaW50IG9mZnNldCkKK3sKKyAgICBbYWNjZXNzaWJpbGl0
eVJlbW90ZU9iamVjdCgpIHNldFJlbW90ZUZyYW1lT2Zmc2V0Om9mZnNldF07Cit9CisKK3ZvaWQg
V2ViUGFnZTo6cmVnaXN0ZXJSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlUb2tlbnMocGlkX3QgcGlk
LCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZWxlbWVudFRva2VuKQoreworICAgIE5TRGF0YSAq
ZWxlbWVudFRva2VuRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczplbGVtZW50VG9rZW4uZGF0
YSgpIGxlbmd0aDplbGVtZW50VG9rZW4uc2l6ZSgpXTsKKyAgICBhdXRvIHJlbW90ZUVsZW1lbnQg
PSBlbGVtZW50VG9rZW5EYXRhLmxlbmd0aCA/IGFkb3B0TlMoW1tOU0FjY2Vzc2liaWxpdHlSZW1v
dGVVSUVsZW1lbnQgYWxsb2NdIGluaXRXaXRoUmVtb3RlVG9rZW46ZWxlbWVudFRva2VuRGF0YV0p
IDogbmlsOworCisgICAgY3JlYXRlTW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50KHBpZCk7CisgICAg
W2FjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSBzZXRSZW1vdGVQYXJlbnQ6cmVtb3RlRWxlbWVu
dC5nZXQoKV07Cit9CisKIHZvaWQgV2ViUGFnZTo6cmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmls
aXR5VG9rZW5zKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBlbGVtZW50VG9rZW4sIHN0ZDo6c3Bh
bjxjb25zdCB1aW50OF90PiB3aW5kb3dUb2tlbikKIHsKICAgICBOU0RhdGEgKmVsZW1lbnRUb2tl
bkRhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZWxlbWVudFRva2VuLmRhdGEoKSBsZW5ndGg6
ZWxlbWVudFRva2VuLnNpemUoKV07CiAgICAgTlNEYXRhICp3aW5kb3dUb2tlbkRhdGEgPSBbTlNE
YXRhIGRhdGFXaXRoQnl0ZXM6d2luZG93VG9rZW4uZGF0YSgpIGxlbmd0aDp3aW5kb3dUb2tlbi5z
aXplKCldOwogICAgIGF1dG8gcmVtb3RlRWxlbWVudCA9IGVsZW1lbnRUb2tlbkRhdGEubGVuZ3Ro
ID8gYWRvcHROUyhbW05TQWNjZXNzaWJpbGl0eVJlbW90ZVVJRWxlbWVudCBhbGxvY10gaW5pdFdp
dGhSZW1vdGVUb2tlbjplbGVtZW50VG9rZW5EYXRhXSkgOiBuaWw7CiAgICAgYXV0byByZW1vdGVX
aW5kb3cgPSB3aW5kb3dUb2tlbkRhdGEubGVuZ3RoID8gYWRvcHROUyhbW05TQWNjZXNzaWJpbGl0
eVJlbW90ZVVJRWxlbWVudCBhbGxvY10gaW5pdFdpdGhSZW1vdGVUb2tlbjp3aW5kb3dUb2tlbkRh
dGFdKSA6IG5pbDsKKwogICAgIFtyZW1vdGVFbGVtZW50IHNldFdpbmRvd1VJRWxlbWVudDpyZW1v
dGVXaW5kb3cuZ2V0KCldOwogICAgIFtyZW1vdGVFbGVtZW50IHNldFRvcExldmVsVUlFbGVtZW50
OnJlbW90ZVdpbmRvdy5nZXQoKV07CiAKQEAgLTUxNiw2ICs1MzgsMTEgQEAgV0tBY2Nlc3NpYmls
aXR5V2ViUGFnZU9iamVjdCogV2ViUGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpCiAg
ICAgcmV0dXJuIG1fbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50LmdldCgpOwogfQogCitXZWJDb3Jl
OjpJbnRQb2ludCBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKQorewor
ICAgIHJldHVybiBbbV9tb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgYWNjZXNzaWJpbGl0eVJlbW90
ZUZyYW1lT2Zmc2V0XTsKK30KKwogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RS
RUUpCiB2b2lkIFdlYlBhZ2U6OmNhY2hlQVhQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBv
aW50JiBwb2ludCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDA2
MTRiY2Y3YWY1Yy4uYmE4MzY4MDY0NTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKQEAgLTY1LDYgKzY1LDkgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NjcmVlblByb3BlcnRp
ZXMuaD4KICNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRjaC5oPgogI2luY2x1ZGUgPHd0Zi9NYWNo
U2VuZFJpZ2h0Lmg+CisKK09CSkNfQ0xBU1MgTlNNdXRhYmxlRGljdGlvbmFyeTsKKwogI2VuZGlm
CiAKICNpZiBQTEFURk9STShHVEspCkBAIC04Nyw2ICs5MCw3IEBACiAjaW5jbHVkZSAiV2ViU1FM
aXRlRGF0YWJhc2VUcmFja2VyLmgiCiAjZW5kaWYKIAorCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNz
IE9iamVjdDsKIH0KQEAgLTUxMSw2ICs1MTUsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZv
cm1TZXRDYWNoZU1vZGVsKENhY2hlTW9kZWwpOwogCiAgICAgdm9pZCBzZXRFbmhhbmNlZEFjY2Vz
c2liaWxpdHkoYm9vbCk7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBiaW5kQWNjZXNz
aWJpbGl0eUZyYW1lV2l0aERhdGEoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBzdGQ6OnNwYW48
Y29uc3QgdWludDhfdD4pOworI2VuZGlmCiAKICAgICB2b2lkIHN0YXJ0TWVtb3J5U2FtcGxlcihT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgZG91YmxlKTsK
ICAgICB2b2lkIHN0b3BNZW1vcnlTYW1wbGVyKCk7CkBAIC04MjYsNiArODMzLDcgQEAgcHJpdmF0
ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBIYXNoQ291bnRlZFNldDxTdHJpbmc+IG1fcGVu
ZGluZ1Bhc3RlYm9hcmRXcml0ZUNvdW50czsKICAgICBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2Vu
X3Q+IG1fYXVkaXRUb2tlbkZvclNlbGY7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25h
cnk+IG1fYWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lVG9rZW5DYWNoZTsKICNlbmRpZgogCiAjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgppbmRleCA5OWI0MDJhZjExY2EuLmQ3NzVmZTdkMzhkMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTY5
LDYgKzY5LDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciBOb3RSZWZD
b3VudGVkIHsKICAgICBTZXRUZXh0Q2hlY2tlclN0YXRlKHN0cnVjdCBXZWJLaXQ6OlRleHRDaGVj
a2VyU3RhdGUgdGV4dENoZWNrZXJTdGF0ZSkKIAogICAgIFNldEVuaGFuY2VkQWNjZXNzaWJpbGl0
eShib29sIGZsYWcpCisgICAgQmluZEFjY2Vzc2liaWxpdHlGcmFtZVdpdGhEYXRhKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSk7
CiAKICAgICBHYXJiYWdlQ29sbGVjdEphdmFTY3JpcHRPYmplY3RzKCkKICAgICBTZXRKYXZhU2Ny
aXB0R2FyYmFnZUNvbGxlY3RvclRpbWVyRW5hYmxlZChib29sIGVuYWJsZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCmluZGV4IGM1Mzg1
N2ZiZTFkNC4uMTE2MDZlOTYzOTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KQEAgLTIxMyw2ICsyMTMsMTYgQEAgdm9pZCBXZWJQ
cm9jZXNzOjpwbGF0Zm9ybVNldENhY2hlTW9kZWwoQ2FjaGVNb2RlbCkKIHsKIH0KIAordm9pZCBX
ZWJQcm9jZXNzOjpiaW5kQWNjZXNzaWJpbGl0eUZyYW1lV2l0aERhdGEoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhKQoreworICAg
IGlmICghbV9hY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVUb2tlbkNhY2hlKQorICAgICAgICBtX2Fj
Y2Vzc2liaWxpdHlSZW1vdGVGcmFtZVRva2VuQ2FjaGUgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGlj
dGlvbmFyeSBhbGxvY10gaW5pdF0pOworCisgICAgYXV0byBmcmFtZUludCA9IGZyYW1lSUQub2Jq
ZWN0KCkudG9VSW50NjQoKTsKKyAgICBOU0RhdGEgKm5zRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhC
eXRlczpkYXRhLmRhdGEoKSBsZW5ndGg6ZGF0YS5zaXplKCldOworICAgIFttX2FjY2Vzc2liaWxp
dHlSZW1vdGVGcmFtZVRva2VuQ2FjaGUgc2V0T2JqZWN0Om5zRGF0YSBmb3JLZXk6QChmcmFtZUlu
dCldOworfQorCiBpZCBXZWJQcm9jZXNzOjphY2Nlc3NpYmlsaXR5Rm9jdXNlZFVJRWxlbWVudCgp
CiB7CiAgICAgYXV0byByZXRyaWV2ZUZvY3VzZWRVSUVsZW1lbnRGcm9tTWFpblRocmVhZCA9IFtd
ICgpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDIxZTIxZjA4YmQ2NC4uYjRjZjI4
MmMxOGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTIyNSw2ICsyMjUsNyBAQCBw
cml2YXRlOgogI2VuZGlmCiAKICAgICBSZW1vdGVBWE9iamVjdFJlZiBhY2Nlc3NpYmlsaXR5UmVt
b3RlT2JqZWN0KCkgZmluYWwgeyByZXR1cm4gMDsgfQorICAgIFdlYkNvcmU6OkludFBvaW50IGFj
Y2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCgpIGZpbmFsIHsgcmV0dXJuIHsgfTsgfQogI2lm
IEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAgICAgdm9pZCBzZXRBWElzb2xh
dGVkVHJlZVJvb3QoV2ViQ29yZTo6QVhDb3JlT2JqZWN0KikgZmluYWwgeyB9CiAjZW5kaWYK
</data>
<flag name="commit-queue"
          id="496256"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>469890</attachid>
            <date>2024-02-15 11:20:22 -0800</date>
            <delta_ts>2024-02-15 12:20:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-268804-20240215112021.patch</filename>
            <type>text/plain</type>
            <size>116284</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">RnJvbSA5MjRiYzlkY2E0OWY2ZDdmYjY5NzJmOWZmMTcyNzg3NmEyMzVkZTM0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpcyBGbGVpemFjaCA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4K
RGF0ZTogVGh1LCAxNSBGZWIgMjAyNCAwMTo0Mzo0MyAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIEFY
OiBTdXBwb3J0IHNpdGUgaXNvbGF0aW9uIGZvciBWb2ljZU92ZXIKIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjg4MDQgcmRhcjovLzk5NjY1NTYxCgpSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KCkluaXRpYWwgc3VwcG9ydCBmb3Igc2l0ZSBpc29sYXRpb24gZm9y
IFZvaWNlT3Zlci4KCldoZW4gYSBzY3JvbGwgdmlldyBob3N0cyBhIFJlbW90ZUZyYW1lIGl0IGJp
bmRzIGl0c2VsZiB0byB0aGUgb3RoZXIgc2lkZSB0aHJvdWdoIGEgV2ViUGFnZSBtZXNzYWdlLgpU
aGlzIHRyYW5zZmVycyBkYXRhIHRva2VucyBzbyBBY2Nlc3NpYmlsaXR5IHJlbW90ZSBlbGVtZW50
cyBhcmUgY3JlYXRlZCBhbmQgaG9va2VkIHVwLgoKVGhlIGJvdW5kaW5nIGJveGVzIGluc2lkZSB0
aGUgc3ViIGZyYW1lcyBuZWVkIHRvIGhhdmUgdGhlIGluaXRpYWwgb2Zmc2V0IGFwcGxpZWQgYW5k
IHRoZW4gbmVlZCB0byBiZSBjb252ZXJ0ZWQKZWFjaCBzdGVwIHVwIHRoZSBjaGFpbiB0byBhY2Nv
dW50IGZvciBzY3JvbGwgb2Zmc2V0cyB0aGF0IG9ubHkgZWFjaCBwcm9jZXNzIGtub3dzIGFib3V0
LgoKKiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dDoKKiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWENvcmVPYmplY3QuaDoKKFdlYkNvcmU6OmFjY2Vzc2liaWxpdHlSb2xlVG9TdHJpbmcpOgoo
V2ViQ29yZTo6QVhDb3JlT2JqZWN0Ojppc1JlbW90ZUZyYW1lIGNvbnN0KToKKiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcDoKKFdlYkNvcmU6OnN0cmVhbUFYQ29yZU9i
amVjdCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoK
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmNyZWF0ZSk6CihXZWJDb3JlOjpBWE9iamVjdENhY2hl
OjpvblJlbW90ZUZyYW1lSW5pdGlhbGl6ZWQpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5jcHA6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZWxhdGl2
ZUZyYW1lIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnJlbW90ZUZyYW1l
T2Zmc2V0IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW1vdGVGcmFtZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJh
bWVDbGllbnQuaC4KKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6Y3JlYXRlKToK
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6QWNjZXNzaWJpbGl0eVJlbW90ZUZy
YW1lKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6ZWxlbWVudFJlY3QgY29u
c3QpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbW90ZUZy
YW1lLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVDbGllbnQu
aC4KKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkQXR0YWNobWVu
dENoaWxkcmVuKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENoaWxk
cmVuKToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpkZXRhY2hSZW1vdGVQ
YXJ0cyk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6Y2xlYXJDaGlsZHJlbik6
CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkUmVtb3RlRnJhbWVDaGlsZCk6
CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkQ2hpbGRyZW4pOgooV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OndlYkFyZWFPYmplY3QgY29uc3QpOgooV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmRvY3VtZW50IGNvbnN0KToKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpwYXJlbnRPYmplY3QgY29uc3QpOgoqIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaDoKKiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcDoKKFdl
YkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKFdlYkNvcmU6
OkFYSXNvbGF0ZWRPYmplY3Q6OnNldFByb3BlcnR5KToKKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmpl
Y3Q6OnJlbW90ZUZyYW1lT2Zmc2V0IGNvbnN0KToKKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OnJlbGF0aXZlRnJhbWUgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHA6CihXZWJDb3JlOjpBWElzb2xhdGVk
VHJlZTo6dXBkYXRlTm9kZVByb3BlcnRpZXMpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMubW06CihXZWJDb3Jl
OjpBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplUGxhdGZvcm1Qcm9wZXJ0aWVzKToKKFdlYkNv
cmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50IGNvbnN0KToK
KiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFj
Lm1tOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lOjpnZW5lcmF0ZVJlbW90ZVRv
a2VuIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6aW5pdGlhbGl6
ZVBsYXRmb3JtRWxlbWVudFdpdGhSZW1vdGVUb2tlbik6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
OjpjcmVhdGVQbGF0Zm9ybVJvbGVNYXApOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbToKKG1ha2VOU0FycmF5KToK
KiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgcm9sZV0pOgoo
LVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBpc0VtcHR5R3JvdXBdKToKKC1bV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgcm9sZURlc2NyaXB0aW9uXSk6CigtW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIF90cmFuc2Zvcm1TcGVjaWFsQ2hpbGRyZW5DYXNlczpdKToKKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
Ol0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5SGl0VGVz
dDpdKToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgQUxMT1dfREVQUkVDQVRFRF9J
TVBMRU1FTlRBVElPTlNfRU5EXSk6CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpmb3JQYXJhbWV0ZXI6XSk6CigtW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlJbmRleE9mQ2hpbGQ6XSk6CigtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZUNvdW50
Ol0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXJyYXlB
dHRyaWJ1dGVWYWx1ZXM6aW5kZXg6bWF4Q291bnQ6XSk6CiogU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHA6CihXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjphY2Nl
c3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQpOgoqIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUZyYW1lTG9hZGVyQ2xpZW50Lmg6CiogU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvY2FsRnJhbWVM
b2FkZXJDbGllbnQuaDoKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwOgooV2ViQ29yZTo6
UGFnZTo6c2hvdWxkVXBkYXRlQWNjZXNzaWJpbGl0eVJlZ2lvbnMgY29uc3QpOgoqIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuY3BwOgooV2ViQ29yZTo6UmVtb3RlRnJhbWU6OnVwZGF0
ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldCk6CihXZWJDb3JlOjpSZW1vdGVGcmFtZTo6
dW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyk6CihXZWJDb3JlOjpSZW1vdGVGcmFtZTo6
YmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMpOgoqIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVt
b3RlRnJhbWUuaDoKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lQ2xpZW50Lmg6Ciog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcDoKKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdl
UHJveHk6OnJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbik6CiogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaDoKKiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcDoKKFdlYktpdDo6V2ViRnJhbWVQcm94eTo6YmluZEFj
Y2Vzc2liaWxpdHlGcmFtZVdpdGhEYXRhKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJG
cmFtZVByb3h5Lmg6CiogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojpzd2FwVG9Qcm92aXNpb25hbFBhZ2UpOgooV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKToKKFdlYktpdDo6V2Vi
UGFnZVByb3h5Ojp1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQpOgoqIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MubW06CihXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5
V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQpOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW06CihXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9j
ZXNzQWNjZXNzaWJpbGl0eVRva2VuKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGxNYWMuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGxNYWMubW06CihXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5V2ViUHJv
Y2Vzc1Rva2VuUmVjZWl2ZWQpOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW06CihXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNj
ZXNzaWJpbGl0eVRva2VuKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0lt
cGwuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwubW06CihXZWJL
aXQ6OldlYlZpZXdJbXBsOjpzZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuKToKKiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNs
aWVudC5jcHA6CihXZWJLaXQ6OldlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQ6OmFjY2Vzc2liaWxp
dHlSZW1vdGVGcmFtZU9mZnNldCk6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuaDoKKiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuY3BwOgooV2ViS2l0OjpX
ZWJSZW1vdGVGcmFtZUNsaWVudDo6dW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyk6CihX
ZWJLaXQ6OldlYlJlbW90ZUZyYW1lQ2xpZW50Ojp1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxp
dHlPZmZzZXQpOgooV2ViS2l0OjpXZWJSZW1vdGVGcmFtZUNsaWVudDo6YmluZFJlbW90ZUFjY2Vz
c2liaWxpdHlGcmFtZXMpOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJSZW1vdGVGcmFtZUNsaWVudC5oOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKFdlYktpdDo6V2ViUGFnZTo6YWNjZXNzaWJpbGl0
eVRyYW5zZmVyUmVtb3RlVG9rZW4pOgooV2ViS2l0OjpXZWJQYWdlOjphY2Nlc3NpYmlsaXR5TWFu
YWdlUmVtb3RlRWxlbWVudFN0YXR1cyk6CihXZWJLaXQ6OldlYlBhZ2U6OmJpbmRSZW1vdGVBY2Nl
c3NpYmlsaXR5RnJhbWVzKToKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmg6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbjoKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bToKKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplQWNjZXNzaWJpbGl0eSk6CihX
ZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtUmVpbml0aWFsaXplKToKKFdlYktpdDo6V2ViUGFnZTo6
YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KToKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaDoKKiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9i
amVjdEJhc2UubW06CigtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlIGF4T2JqZWN0
Q2FjaGVdKToKKC1bV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2Ugc2V0UmVtb3RlRnJh
bWVPZmZzZXQ6XSk6CigtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlIGFjY2Vzc2li
aWxpdHlSZW1vdGVGcmFtZU9mZnNldF0pOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tOgooV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybUluaXRpYWxp
emVBY2Nlc3NpYmlsaXR5KToKKFdlYktpdDo6V2ViUGFnZTo6Y3JlYXRlTW9ja0FjY2Vzc2liaWxp
dHlFbGVtZW50KToKKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1SZWluaXRpYWxpemUpOgooV2Vi
S2l0OjpXZWJQYWdlOjp1cGRhdGVSZW1vdGVQYWdlQWNjZXNzaWJpbGl0eU9mZnNldCk6CihXZWJL
aXQ6OldlYlBhZ2U6OnJlZ2lzdGVyUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5VG9rZW5zKToKKFdl
YktpdDo6V2ViUGFnZTo6cmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKToKKFdl
YktpdDo6V2ViUGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KToKKiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJQcm9jZXNzQ29jb2EubW06CihXZWJLaXQ6OldlYlByb2Nlc3M6OmJpbmRBY2Nlc3NpYmls
aXR5RnJhbWVXaXRoRGF0YSk6CiogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKLS0tCiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dCAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogLi4uL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIHwgICA0ICsKIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhDb3JlT2JqZWN0LmggICB8ICAxMiArKwogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WExvZ2dlci5jcHAgICAgIHwgICAzICsKIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5jcHAgICB8ICAxNSArLQogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmggIHwgICAyICsKIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhSZW1vdGVG
cmFtZS5jcHAgICB8ICA1MSArKysrKysrCiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
UmVtb3RlRnJhbWUuaCAgfCAgNjMgKysrKysrKysKIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuY3BwICAgICB8ICAyMCArKy0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuaCAgICAgICB8ICAgNSArCiAuLi4vQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHAgICAgICAgICAgICAgfCAgIDQgKy0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlTY3JvbGxWaWV3LmNwcCB8ICA1NyArKysrKystCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5U2Nyb2xsVmlldy5oICAgfCAgIDYgKy0KIC4uLi9pb3MvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJJT1MubW0gICB8ICAgMSArCiAuLi4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRP
YmplY3QuY3BwICAgICAgICAgfCAgMzUgKysrKy0KIC4uLi9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZE9iamVjdC5oICAgICAgICAgICB8ICAgOCArLQogLi4uL2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
VHJlZS5jcHAgICAgICAgICAgIHwgIDYxICsrKy0tLS0tCiAuLi4vaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRUcmVlLmggICAgICAgICAgICAgfCAgMjkgKysrKwogLi4uL2lzb2xhdGVkdHJlZS9tYWMv
QVhJc29sYXRlZE9iamVjdE1hYy5tbSAgIHwgICA3ICsKIC4uLi9tYWMvQWNjZXNzaWJpbGl0eU9i
amVjdE1hYy5tbSAgICAgICAgICAgICB8ICAyOCArKysrCiAuLi4vbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyQmFzZS5tbSAgfCAgIDkgKy0KIC4uLi9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJNYWMubW0gICB8IDE0MyArKysrKysrKysrKystLS0tLS0KIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwICAgICAgICB8ICAgNSArCiAuLi4vV2ViQ29y
ZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oICAgfCAgIDEgKwogLi4uL1dlYkNvcmUv
bG9hZGVyL0xvY2FsRnJhbWVMb2FkZXJDbGllbnQuaCAgIHwgICAxICsKIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAgICAgICAgICAgICAgICAgICB8ICAxMSArLQogU291cmNlL1dlYkNvcmUv
cGFnZS9SZW1vdGVGcmFtZS5jcHAgICAgICAgICAgIHwgIDE1ICsrCiBTb3VyY2UvV2ViQ29yZS9w
YWdlL1JlbW90ZUZyYW1lLmggICAgICAgICAgICAgfCAgIDQgKwogU291cmNlL1dlYkNvcmUvcGFn
ZS9SZW1vdGVGcmFtZUNsaWVudC5oICAgICAgIHwgICA0ICsKIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaCAgICAgICAgICB8ICAgMyArLQogLi4uL1dlYktpdC9VSVByb2Nlc3Mv
UHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIHwgICAyICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9Q
cm92aXNpb25hbFBhZ2VQcm94eS5oICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkZyYW1lUHJveHkuY3BwICAgICB8ICAgOSArKwogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViRnJhbWVQcm94eS5oICAgICAgIHwgICAyICsKIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAgICAgICB8ICAyNCArKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oICAgICAgICB8ICAgNCArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluIHwgICA0ICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MuaCAgfCAgIDIgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5tbSB8ICAgMiArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBh
Z2VQcm94eUlPUy5tbSAgIHwgICA0ICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGxNYWMuaCAgfCAgIDIgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xp
ZW50SW1wbE1hYy5tbSB8ICAgNCArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQ
cm94eU1hYy5tbSAgIHwgICA0ICstCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmll
d0ltcGwuaCAgICAgfCAgIDMgKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3
SW1wbC5tbSAgICB8ICAgOCArLQogLi4uL1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuY3BwICAg
ICAgICAgICAgIHwgICA2ICsKIC4uLi9XZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmggICAgICAg
ICAgICAgICB8ICAgMSArCiAuLi4vV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQu
Y3BwICAgfCAgMzIgKysrKwogLi4uL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90ZUZyYW1lQ2xpZW50
LmggICAgIHwgICA0ICsKIC4uLi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29h
Lm1tICB8ICA0MSArKysrLQogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oICAgIHwgIDEzICstCiAuLi4vV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4gICAgfCAgIDMgKwogLi4uL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSAg
ICAgIHwgIDEyICstCiAuLi4vbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmgg
ICAgfCAgIDQgKwogLi4uL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbSAg
IHwgIDI3ICsrKy0KIC4uLi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gICAg
ICB8ICA0NSArKysrLS0KIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggICAg
ICAgICB8ICAgOCArCiAuLi4vV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
biAgfCAgIDEgKwogLi4uL1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tICAgICAg
IHwgIDEwICsrCiAuLi4vbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmgg
fCAgIDEgKwogNjAgZmlsZXMgY2hhbmdlZCwgNzQyIGluc2VydGlvbnMoKyksIDE1MCBkZWxldGlv
bnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
UmVtb3RlRnJhbWUuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWFJlbW90ZUZyYW1lLmgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDZlZTQxYmUyZGUwZS4u
ZTM2NTU5ODUwZTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtNTI1LDYgKzUyNSw3IEBAIGFjY2Vzc2li
aWxpdHkvQVhHZW9tZXRyeU1hbmFnZXIuY3BwCiBhY2Nlc3NpYmlsaXR5L0FYSW1hZ2UuY3BwCiBh
Y2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcAogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNw
cAorYWNjZXNzaWJpbGl0eS9BWFJlbW90ZUZyYW1lLmNwcAogYWNjZXNzaWJpbGl0eS9BWFRleHRN
YXJrZXIuY3BwCiBhY2Nlc3NpYmlsaXR5L0FYVGV4dFJ1bi5jcHAKIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNmYmU2YmZiNmViMy4uODFhMjIzODYwODA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC04OTU4LDYgKzg5NTgsOCBAQAogCQkyOTQ4OUZDNTEyQzAwRjAzMDBEODNGMEYgLyogQWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Mjk0OTg2ODExOTUzNDE5NDAwNzJEMkJEIC8qIFRleHRVbmRvSW5zZXJ0aW9uTWFya3VwTWFjLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVGV4dFVuZG9JbnNlcnRp
b25NYXJrdXBNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5NEJEQUU2MjFG
RjU4MkEwMDUxMDc3QiAvKiBBY2Nlc3NpYmlsaXR5T2JqZWN0Q29jb2EubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5T2JqZWN0Q29jb2EubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5NTVDRjExMkIyMzBBRTYwMDAxQkY4MiAv
KiBBWFJlbW90ZUZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFYUmVtb3RlRnJhbWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjk1NUNGMTIyQjIzMEFFNjAwMDFCRjgyIC8qIEFYUmVt
b3RlRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVhSZW1vdGVGcmFtZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5N0JFM0Q5MTZDMDQzRDgwMDMzMTZCRCAvKiBQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyOTgxQUJDNDEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eU1hdGhN
TEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1l
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTgxQ0E5RDEzMTgyMkVDMDBE
MTJGMkEgLyogQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFj
Y2Vzc2liaWxpdHlBUklBR3JpZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
MzQzOCw2ICsyMzQ0MCw4IEBACiAJCQkJQzA0OTNFQjcyNDQ2OTlFNDAwOUFBQzgwIC8qIEFYTG9n
Z2VyLmggKi8sCiAJCQkJMjk4MUNBQUYxMzE4MjJFQzAwRDEyRjJBIC8qIEFYT2JqZWN0Q2FjaGUu
Y3BwICovLAogCQkJCTI5QTgxMjFBMEZCQjlDMUQwMDUxMDI5MyAvKiBBWE9iamVjdENhY2hlLmgg
Ki8sCisJCQkJMjk1NUNGMTIyQjIzMEFFNjAwMDFCRjgyIC8qIEFYUmVtb3RlRnJhbWUuY3BwICov
LAorCQkJCTI5NTVDRjExMkIyMzBBRTYwMDAxQkY4MiAvKiBBWFJlbW90ZUZyYW1lLmggKi8sCiAJ
CQkJQzBFMjA4QTEyOTM3OUM2RjAwQzBEMkQzIC8qIEFYVGV4dE1hcmtlci5jcHAgKi8sCiAJCQkJ
QzBFMjA4QTAyOTM3OUM2RTAwQzBEMkQzIC8qIEFYVGV4dE1hcmtlci5oICovLAogCQkJCTQ4QzRF
ODNDMkIzNEQ4MzgwMDgzNDYwQSAvKiBBWFRleHRSdW4uY3BwICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWENvcmVPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhDb3JlT2JqZWN0LmgKaW5kZXggNDQxMDg0ZWNiODA1Li4zZmJjN2Y4
ZGIyOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhDb3JlT2Jq
ZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWENvcmVPYmplY3QuaApA
QCAtMjA1LDYgKzIwNSw3IEBAIGVudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVJvbGUgewogICAgIFBy
b2dyZXNzSW5kaWNhdG9yLAogICAgIFJhZGlvQnV0dG9uLAogICAgIFJhZGlvR3JvdXAsCisgICAg
UmVtb3RlRnJhbWUsCiAgICAgUm93SGVhZGVyLAogICAgIFJvdywKICAgICBSb3dHcm91cCwKQEAg
LTQ0Miw2ICs0NDMsOCBAQCBBTFdBWVNfSU5MSU5FIFN0cmluZyBhY2Nlc3NpYmlsaXR5Um9sZVRv
U3RyaW5nKEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUpCiAgICAgICAgIHJldHVybiAiUmFkaW9CdXR0
b24iX3M7CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9Hcm91cDoKICAgICAgICAg
cmV0dXJuICJSYWRpb0dyb3VwIl9zOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJlbW90
ZUZyYW1lOgorICAgICAgICByZXR1cm4gIlJlbW90ZUZyYW1lIl9zOwogICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OlJvd0hlYWRlcjoKICAgICAgICAgcmV0dXJuICJSb3dIZWFkZXIiX3M7CiAg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Um93OgpAQCAtODE1LDYgKzgxOCw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3dJbnN0YW5jZSgp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxs
SW5zdGFuY2UoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQVhJc29sYXRlZE9iamVj
dEluc3RhbmNlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0FYUmVtb3RlRnJhbWUo
KSBjb25zdCA9IDA7CiAKICAgICBib29sIGlzSGVhZGluZygpIGNvbnN0IHsgcmV0dXJuIHJvbGVW
YWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpIZWFkaW5nOyB9CiAgICAgdmlydHVhbCBib29s
IGlzTGluaygpIGNvbnN0ID0gMDsKQEAgLTkxOSw2ICs5MjMsMTIgQEAgcHVibGljOgogICAgIGJv
b2wgaXNUcmVlR3JpZCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxp
dHlSb2xlOjpUcmVlR3JpZDsgfQogICAgIGJvb2wgaXNUcmVlSXRlbSgpIGNvbnN0IHsgcmV0dXJu
IHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlSXRlbTsgfQogICAgIGJvb2wg
aXNTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5
Um9sZTo6U2Nyb2xsQmFyOyB9CisgICAgYm9vbCBpc1JlbW90ZUZyYW1lKCkgY29uc3QgeyByZXR1
cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJlbW90ZUZyYW1lOyB9CisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgdmlydHVhbCBSZXRhaW5QdHI8aWQ+IHJlbW90ZUZyYW1lUGxh
dGZvcm1FbGVtZW50KCkgY29uc3QgPSAwOworI2VuZGlmCisgICAgdmlydHVhbCBib29sIGhhc1Jl
bW90ZUZyYW1lQ2hpbGQoKSBjb25zdCA9IDA7CisKICAgICBib29sIGlzQnV0dG9uKCkgY29uc3Q7
CiAgICAgdmlydHVhbCBib29sIGlzTWV0ZXIoKSBjb25zdCA9IDA7CiAKQEAgLTExNTksNiArMTE2
OSw4IEBAIHB1YmxpYzoKICAgICAvLyBWaWV3cG9ydC1yZWxhdGl2ZSBtZWFucyB0aGF0IHdoZW4g
dGhlIHBhZ2Ugc2Nyb2xscywgdGhlIHBvcnRpb24gb2YgdGhlIHBhZ2UgaW4gdGhlIHZpZXdwb3J0
IGNoYW5nZXMsIGFuZCB0aHVzCiAgICAgLy8gYW55IHZpZXdwb3J0LXJlbGF0aXZlIHJlY3RzIGRv
IHRvbyAoc2luY2UgdGhleSBhcmUgZWl0aGVyIGNsb3NlciB0byBvciBmYXJ0aGVyIGZyb20gdGhl
IHZpZXdwb3J0IG9yaWdpbiBhZnRlciB0aGUgc2Nyb2xsKS4KICAgICB2aXJ0dWFsIEZsb2F0UG9p
bnQgc2NyZWVuUmVsYXRpdmVQb3NpdGlvbigpIGNvbnN0ID0gMDsKKyAgICAvLyBUaGlzIGlzIHRo
ZSBhbW91bnQgdGhhdCB0aGUgUmVtb3RlRnJhbWUgaXMgb2Zmc2V0IGZyb20gaXRzIGNvbnRhaW5p
bmcgcGFyZW50LgorICAgIHZpcnR1YWwgSW50UG9pbnQgcmVtb3RlRnJhbWVPZmZzZXQoKSBjb25z
dCA9IDA7CiAKICAgICB2aXJ0dWFsIEZsb2F0UmVjdCBjb252ZXJ0RnJhbWVUb1NwYWNlKGNvbnN0
IEZsb2F0UmVjdCYsIEFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2UpIGNvbnN0ID0gMDsKICNp
ZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhMb2dnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWExvZ2dlci5j
cHAKaW5kZXggYjZlMzA2Y2RkZWNmLi43YjM1YzhmOWQxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhMb2dnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhMb2dnZXIuY3BwCkBAIC04ODMsNiArODgzLDkgQEAgdm9pZCBzdHJlYW1B
WENvcmVPYmplY3QoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBBWENvcmVPYmplY3QmIG9iamVj
dCwgY29uc3QgT3AKICAgICBpZiAob3B0aW9ucyAmIEFYU3RyZWFtT3B0aW9uczo6Um9sZSkKICAg
ICAgICAgc3RyZWFtLmR1bXBQcm9wZXJ0eSgicm9sZSIsIG9iamVjdC5yb2xlVmFsdWUoKSk7CiAK
KyAgICBpZiAob2JqZWN0LnJlbmRlcmVyKCkpCisgICAgICAgIHN0cmVhbS5kdW1wUHJvcGVydHko
InJlbmRlck5hbWUiLCBvYmplY3QucmVuZGVyZXIoKS0+cmVuZGVyTmFtZSgpKTsKKwogICAgIGlm
IChvcHRpb25zICYgQVhTdHJlYW1PcHRpb25zOjpQYXJlbnRJRCkgewogICAgICAgICBhdXRvKiBw
YXJlbnQgPSBvYmplY3QucGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgICAgIHN0cmVhbS5k
dW1wUHJvcGVydHkoInBhcmVudElEIiwgcGFyZW50ID8gcGFyZW50LT5vYmplY3RJRCgpIDogQVhJ
RCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RD
YWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3Bw
CmluZGV4IDI4MGZhZDRmMjcwMS4uMWFjOTVmMmVhNmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJBWElzb2xhdGVkT2JqZWN0LmgiCiAjaW5jbHVkZSAiQVhJc29sYXRlZFRyZWUuaCIKICNp
bmNsdWRlICJBWExvZ2dlci5oIgorI2luY2x1ZGUgIkFYUmVtb3RlRnJhbWUuaCIKICNpbmNsdWRl
ICJBWFRleHRNYXJrZXIuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5QVJJQUdyaWQuaCIKICNp
bmNsdWRlICJBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmgiCkBAIC0xMDU0LDcgKzEwNTUsMTAg
QEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Y3JlYXRlKEFjY2Vzc2liaWxp
dHlSb2xlIHJvbGUpCiAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAogICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OlRhYmxlSGVhZGVyQ29udGFpbmVyOgogICAgICAgICBvYmogPSBBY2Nlc3Np
YmlsaXR5VGFibGVIZWFkZXJDb250YWluZXI6OmNyZWF0ZSgpOwotICAgICAgICBicmVhazsgICAK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmVtb3RlRnJhbWU6
CisgICAgICAgIG9iaiA9IEFYUmVtb3RlRnJhbWU6OmNyZWF0ZSgpOworICAgICAgICBicmVhazsK
ICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTbGlkZXJUaHVtYjoKICAgICAgICAgb2JqID0g
QWNjZXNzaWJpbGl0eVNsaWRlclRodW1iOjpjcmVhdGUoKTsKICAgICAgICAgYnJlYWs7CkBAIC0x
MzUwLDYgKzEzNTQsMTUgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVSZWNvbXB1dGVDZWxs
U2xvdHMoQWNjZXNzaWJpbGl0eVRhYmxlJiBheFRhYmxlKQogI2VuZGlmCiB9CiAKK3ZvaWQgQVhP
YmplY3RDYWNoZTo6b25SZW1vdGVGcmFtZUluaXRpYWxpemVkKEFYUmVtb3RlRnJhbWUmIHJlbW90
ZUZyYW1lKQoreworI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCisgICAg
dXBkYXRlSXNvbGF0ZWRUcmVlKHJlbW90ZUZyYW1lLCBBWFByb3BlcnR5TmFtZTo6UmVtb3RlRnJh
bWVQbGF0Zm9ybUVsZW1lbnQpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocmVtb3RlRnJhbWUp
OworI2VuZGlmCit9CisKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQog
dm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVSb3dzcGFuQ2hhbmdlZChBY2Nlc3NpYmlsaXR5VGFi
bGVDZWxsJiBheENlbGwpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5oCmluZGV4IGQxMDQ5Y2M5YmMyMS4uMzhjOThhNDZlYTlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaApAQCAtNDcsNiArNDcsNyBAQCBj
bGFzcyBUZXh0U3RyZWFtOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEFYUmVtb3Rl
RnJhbWU7CiBjbGFzcyBBY2Nlc3NpYmlsaXR5VGFibGU7CiBjbGFzcyBBY2Nlc3NpYmlsaXR5VGFi
bGVDZWxsOwogY2xhc3MgRG9jdW1lbnQ7CkBAIC0yNDYsNiArMjQ3LDcgQEAgcHVibGljOgogICAg
IHZvaWQgZGVmZXJOb2RlQWRkZWRPclJlbW92ZWQoTm9kZSopOwogICAgIHZvaWQgaGFuZGxlU2Ny
b2xsZWRUb0FuY2hvcihjb25zdCBOb2RlKiBhbmNob3JOb2RlKTsKICAgICB2b2lkIG9uU2Nyb2xs
YmFyVXBkYXRlKFNjcm9sbFZpZXcqKTsKKyAgICB2b2lkIG9uUmVtb3RlRnJhbWVJbml0aWFsaXpl
ZChBWFJlbW90ZUZyYW1lJik7CiAKICAgICBib29sIGlzUmV0cmlldmluZ0N1cnJlbnRNb2RhbE5v
ZGUoKSB7IHJldHVybiBtX2lzUmV0cmlldmluZ0N1cnJlbnRNb2RhbE5vZGU7IH0KICAgICBOb2Rl
KiBtb2RhbE5vZGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhSZW1vdGVGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYUmVtb3Rl
RnJhbWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNjA0MzRl
MzQ0NDc3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WFJlbW90ZUZyYW1lLmNwcApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDI0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkFYUmVtb3RlRnJhbWUuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitSZWY8QVhSZW1vdGVGcmFtZT4gQVhSZW1vdGVGcmFtZTo6Y3JlYXRlKCkKK3sKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBWFJlbW90ZUZyYW1lKTsKK30KKworQVhSZW1vdGVGcmFt
ZTo6QVhSZW1vdGVGcmFtZSgpCis6CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgbV9yZW1vdGVG
cmFtZVBsYXRmb3JtRWxlbWVudChudWxscHRyKQorICAgICwgbV9wcm9jZXNzSWRlbnRpZmllcigw
KQorI2VuZGlmCit7Cit9CisKK0xheW91dFJlY3QgQVhSZW1vdGVGcmFtZTo6ZWxlbWVudFJlY3Qo
KSBjb25zdAoreworICAgIGF1dG8qIHBhcmVudCA9IHBhcmVudE9iamVjdCgpOworICAgIHJldHVy
biBwYXJlbnQgPyBwYXJlbnQtPmVsZW1lbnRSZWN0KCkgOiBMYXlvdXRSZWN0KCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQVhSZW1vdGVGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFJl
bW90ZUZyYW1lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42Mzkw
MThmYjE3YWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYUmVtb3RlRnJhbWUuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDI0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5TW9ja09iamVjdC5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIFJlbW90ZUZyYW1lOworCitjbGFzcyBBWFJlbW90ZUZyYW1lIGZp
bmFsIDogcHVibGljIEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUmVmPEFYUmVtb3RlRnJhbWU+IGNyZWF0ZSgpOworCisgICAgdm9pZCBpbml0aWFsaXplUGxh
dGZvcm1FbGVtZW50V2l0aFJlbW90ZVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgaW50
KTsKKworICAgIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBnZW5lcmF0ZVJlbW90ZVRva2VuKCkg
Y29uc3Q7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgUmV0YWluUHRyPGlkPiByZW1vdGVGcmFt
ZVBsYXRmb3JtRWxlbWVudCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcmVtb3RlRnJhbWVQbGF0
Zm9ybUVsZW1lbnQ7IH0KKyAgICBwaWRfdCBwcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1fcHJvY2Vzc0lkZW50aWZpZXI7IH0KKyNlbmRpZgorCitwcml2YXRlOgorICAgIGV4cGxp
Y2l0IEFYUmVtb3RlRnJhbWUoKTsKKyAgICB2aXJ0dWFsIH5BWFJlbW90ZUZyYW1lKCkgPSBkZWZh
dWx0OworCisgICAgQWNjZXNzaWJpbGl0eVJvbGUgZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUo
KSBmaW5hbCB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6UmVtb3RlRnJhbWU7IH0KKyAgICBi
b29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICBib29sIGlzQVhSZW1vdGVGcmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IHRydWU7IH0KKyAgICBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3QgZmluYWw7CisKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyAgICBSZXRhaW5QdHI8aWQ+IG1fcmVtb3RlRnJhbWVQbGF0Zm9y
bUVsZW1lbnQ7CisgICAgcGlkX3QgbV9wcm9jZXNzSWRlbnRpZmllcjsKKyNlbmRpZgorfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0FDQ0VTU0lC
SUxJVFkoQVhSZW1vdGVGcmFtZSwgaXNBWFJlbW90ZUZyYW1lKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCAzZTMy
ZGIwOTNhZmIuLjA5ODQyNjY0MzI4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC01NDQsNyArNTQ0LDEwIEBAIEZs
b2F0UmVjdCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpjb252ZXJ0RnJhbWVUb1NwYWNlKGNvbnN0IEZs
b2F0UmVjdCYgZnJhbWVSZWN0LCBBCiAgICAgCiBGbG9hdFJlY3QgQWNjZXNzaWJpbGl0eU9iamVj
dDo6cmVsYXRpdmVGcmFtZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvbnZlcnRGcmFtZVRvU3Bh
Y2UoZWxlbWVudFJlY3QoKSwgQWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZTo6UGFnZSk7Cisg
ICAgYXV0byByZWN0ID0gZWxlbWVudFJlY3QoKTsKKyAgICBhdXRvIHJlbW90ZU9mZnNldCA9IHJl
bW90ZUZyYW1lT2Zmc2V0KCk7CisgICAgcmVjdC5tb3ZlKHJlbW90ZU9mZnNldC54KCksIHJlbW90
ZU9mZnNldC55KCkpOworICAgIHJldHVybiBjb252ZXJ0RnJhbWVUb1NwYWNlKHJlY3QsIEFjY2Vz
c2liaWxpdHlDb252ZXJzaW9uU3BhY2U6OlBhZ2UpOwogfQogCiBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpuZXh0U2libGluZ1VuaWdub3JlZChpbnQgbGltaXQpIGNv
bnN0CkBAIC0yMDg2LDE0ICsyMDg5LDE5IEBAIGNvbnN0IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
KiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphbmNlc3RvckFjY2Vzc2liaWxpdHlTY3JvbGxWCiAjaWYg
UExBVEZPUk0oQ09DT0EpCiBSZW1vdGVBWE9iamVjdFJlZiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpy
ZW1vdGVQYXJlbnRPYmplY3QoKSBjb25zdAogewotICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IHRo
aXMtPmRvY3VtZW50KCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQtPmZy
YW1lKCkpCi0gICAgICAgICAgICByZXR1cm4gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmFjY2Vz
c2liaWxpdHlSZW1vdGVPYmplY3QoKTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAg
YXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOworICAgIGF1dG8qIGZyYW1lID0gZG9j
dW1lbnQgPyBkb2N1bWVudC0+ZnJhbWUoKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIGZyYW1lID8g
ZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSA6IG51
bGxwdHI7CiB9CiAjZW5kaWYKIAorSW50UG9pbnQgQWNjZXNzaWJpbGl0eU9iamVjdDo6cmVtb3Rl
RnJhbWVPZmZzZXQoKSBjb25zdAoreworICAgIGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1l
bnQoKTsKKyAgICBhdXRvKiBmcmFtZSA9IGRvY3VtZW50ID8gZG9jdW1lbnQtPmZyYW1lKCkgOiBu
dWxscHRyOworICAgIHJldHVybiBmcmFtZSA/IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5hY2Nl
c3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKSA6IEludFBvaW50KCk7Cit9CisKIERvY3VtZW50
KiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpkb2N1bWVudCgpIGNvbnN0CiB7CiAgICAgYXV0byogZnJh
bWVWaWV3ID0gZG9jdW1lbnRGcmFtZVZpZXcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKaW5kZXggNGQyMGY1NWE1NDRjLi42ODQy
YTcxOTQ4Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5oCkBAIC0xMDIsNiArMTAyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBpc0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICBib29sIGlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9sbGJh
cigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0FYUmVtb3RlRnJhbWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vz
c2liaWxpdHlTY3JvbGxWaWV3SW5zdGFuY2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
IHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTVkdSb290KCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KICAgICBib29sIGlzQWNjZXNzaWJpbGl0eVRhYmxlSW5zdGFuY2UoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQpAQCAtNDY0LDggKzQ2NSwxMiBAQCBwdWJsaWM6CiAKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBSZW1vdGVBWE9iamVjdFJlZiByZW1vdGVQYXJlbnRPYmpl
Y3QoKSBjb25zdCBvdmVycmlkZTsKKyAgICBJbnRQb2ludCByZW1vdGVGcmFtZU9mZnNldCgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIEZsb2F0UmVjdCBjb252ZXJ0UmVjdFRvUGxhdGZvcm1TcGFjZShj
b25zdCBGbG9hdFJlY3QmLCBBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBSZXRhaW5QdHI8aWQ+IHJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbmlsOyB9CiAjZW5kaWYKKyAgICBib29sIGhhc1JlbW90ZUZy
YW1lQ2hpbGQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgUGFnZSog
cGFnZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIExvY2FsRnJhbWVWaWV3KiBkb2N1bWVudEZyYW1lVmlldygpIGNvbnN0IG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggZWU4YWJlYzNkN2I1Li4yZjEyZWY3NTNl
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtMjQxMyw3ICsyNDEzLDcgQEAgdm9pZCBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRBdHRhY2htZW50Q2hpbGRyZW4oKQogCiAgICAgLy8g
TG9jYWxGcmFtZVZpZXcncyBuZWVkIHRvIGJlIGluc2VydGVkIGludG8gdGhlIEFYIGhpZXJhcmNo
eSB3aGVuIGVuY291bnRlcmVkLgogICAgIFdpZGdldCogd2lkZ2V0ID0gd2lkZ2V0Rm9yQXR0YWNo
bWVudFZpZXcoKTsKLSAgICBpZiAoIXdpZGdldCB8fCAhd2lkZ2V0LT5pc0xvY2FsRnJhbWVWaWV3
KCkpCisgICAgaWYgKCF3aWRnZXQgfHwgISh3aWRnZXQtPmlzTG9jYWxGcmFtZVZpZXcoKSB8fCB3
aWRnZXQtPmlzUmVtb3RlRnJhbWVWaWV3KCkpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAg
YWRkQ2hpbGQoYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZSh3aWRnZXQpKTsKQEAgLTI1Njgs
NyArMjU2OCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkQ2hpbGRyZW4o
KQogICAgICAgICBhdXRvIG93bmVycyA9IG9iamVjdC5vd25lcnMoKTsKICAgICAgICAgaWYgKG93
bmVycy5zaXplKCkgJiYgIW93bmVycy5jb250YWlucyh0aGlzKSkKICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgCisKICAgICAgICAgYWRkQ2hpbGQoJm9iamVjdCk7CiAgICAgfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xs
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3Jv
bGxWaWV3LmNwcAppbmRleCAyYmJjMzA4N2I5ZjguLmIxZDlmMDczNTViNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dy5jcHAKQEAgLTI3LDEwICsyNywxMiBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3LmgiCiAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCisjaW5jbHVkZSAiQVhSZW1vdGVG
cmFtZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaCIKICNpbmNsdWRlICJI
VE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJMb2NhbEZyYW1lLmgiCiAjaW5jbHVk
ZSAiTG9jYWxGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJSZW1vdGVGcmFtZVZpZXcuaCIKICNpbmNs
dWRlICJSZW5kZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiV2lkZ2V0LmgiCiAKQEAgLTUyLDYgKzU0
LDE0IEBAIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojp+QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXco
KQogdm9pZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6ZGV0YWNoUmVtb3RlUGFydHMoQWNjZXNz
aWJpbGl0eURldGFjaG1lbnRUeXBlIGRldGFjaG1lbnRUeXBlKQogewogICAgIEFjY2Vzc2liaWxp
dHlPYmplY3Q6OmRldGFjaFJlbW90ZVBhcnRzKGRldGFjaG1lbnRUeXBlKTsKKworICAgIGF1dG8q
IHJlbW90ZUZyYW1lVmlldyA9IGR5bmFtaWNEb3duY2FzdDxSZW1vdGVGcmFtZVZpZXc+KG1fc2Ny
b2xsVmlldy5nZXQoKSk7CisgICAgaWYgKHJlbW90ZUZyYW1lVmlldyAmJiBtX3JlbW90ZUZyYW1l
ICYmIChkZXRhY2htZW50VHlwZSA9PSBBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGU6OkVsZW1l
bnREZXN0cm95ZWQgfHwgZGV0YWNobWVudFR5cGUgPT0gQWNjZXNzaWJpbGl0eURldGFjaG1lbnRU
eXBlOjpDYWNoZURlc3Ryb3llZCkpIHsKKyAgICAgICAgYXV0byYgcmVtb3RlRnJhbWUgPSByZW1v
dGVGcmFtZVZpZXctPmZyYW1lKCk7CisgICAgICAgIHJlbW90ZUZyYW1lLnVuYmluZFJlbW90ZUFj
Y2Vzc2liaWxpdHlGcmFtZXMobV9yZW1vdGVGcmFtZS0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7Cisg
ICAgICAgIG1fcmVtb3RlRnJhbWUgPSBudWxscHRyOworICAgIH0KKwogICAgIG1fc2Nyb2xsVmll
dyA9IG51bGxwdHI7CiAgICAgbV9mcmFtZU93bmVyRWxlbWVudCA9IG51bGxwdHI7CiB9CkBAIC0x
NzcsOCArMTg3LDEwIEBAIEFjY2Vzc2liaWxpdHlTY3JvbGxiYXIqIEFjY2Vzc2liaWxpdHlTY3Jv
bGxWaWV3OjphZGRDaGlsZFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjCiB2b2lkIEFjY2Vzc2liaWxp
dHlTY3JvbGxWaWV3OjpjbGVhckNoaWxkcmVuKCkKIHsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpjbGVhckNoaWxkcmVuKCk7CisKICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyID0gbnVsbHB0cjsK
ICAgICBtX2hvcml6b250YWxTY3JvbGxiYXIgPSBudWxscHRyOworCiAgICAgbV9jaGlsZHJlbkRp
cnR5ID0gZmFsc2U7CiB9CiAKQEAgLTE5MSwxMSArMjAzLDQyIEBAIGJvb2wgQWNjZXNzaWJpbGl0
eVNjcm9sbFZpZXc6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKICAgICBy
ZXR1cm4gd2ViQXJlYS0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpOwogfQogCit2b2lkIEFjY2Vz
c2liaWxpdHlTY3JvbGxWaWV3OjphZGRSZW1vdGVGcmFtZUNoaWxkKCkKK3sKKyAgICBpZiAoIWlz
PFJlbW90ZUZyYW1lVmlldz4obV9zY3JvbGxWaWV3KSkKKyAgICAgICAgcmV0dXJuOworICAgIFdl
YWtQdHIgY2FjaGUgPSBheE9iamVjdENhY2hlKCk7CisgICAgaWYgKCFjYWNoZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKCFtX3JlbW90ZUZyYW1lKSB7CisgICAgICAgIC8vIE1ha2UgdGhl
IGZhdXggZWxlbWVudCB0aGF0IHJlcHJlc2VudHMgdGhlIHJlbW90ZSB0cmFuc2ZlciBlbGVtZW50
IGZvciBBWC4KKyAgICAgICAgYXV0byYgcmVtb3RlRnJhbWUgPSBkb3duY2FzdDxSZW1vdGVGcmFt
ZVZpZXc+KCptX3Njcm9sbFZpZXcpLmZyYW1lKCk7CisgICAgICAgIG1fcmVtb3RlRnJhbWUgPSBk
b3duY2FzdDxBWFJlbW90ZUZyYW1lPihjYWNoZS0+Y3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpS
ZW1vdGVGcmFtZSkpOworICAgICAgICBtX3JlbW90ZUZyYW1lLT5zZXRQYXJlbnQodGhpcyk7CisK
KyAgICAgICAgLy8gR2VuZXJhdGUgYSBuZXcgdG9rZW4gYW5kIHBhc3MgaXQgYmFjayB0byB0aGUg
b3RoZXIgcmVtb3RlIGZyYW1lIHNvIGl0IGNhbiBiaW5kIHRoZXNlIG9iamVjdHMgdG9nZXRoZXIu
CisgICAgICAgIGF1dG8gZ2VuZXJhdGVkVG9rZW4gPSBtX3JlbW90ZUZyYW1lLT5nZW5lcmF0ZVJl
bW90ZVRva2VuKCk7CisgICAgICAgIHJlbW90ZUZyYW1lLmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5
RnJhbWVzKGdldHBpZCgpLCBnZW5lcmF0ZWRUb2tlbiwgW3RoaXMsICZyZW1vdGVGcmFtZSwgcHJv
dGVjdGVkQWNjZXNzYmlsaXR5UmVtb3RlRnJhbWUgPSBSZWZQdHIgeyBtX3JlbW90ZUZyYW1lIH1d
IChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gdG9rZW4sIGludCBwcm9jZXNzSWRlbnRpZmllcikg
bXV0YWJsZSB7CisjaWYgT1MoREFSV0lOKQorICAgICAgICAgICAgcHJvdGVjdGVkQWNjZXNzYmls
aXR5UmVtb3RlRnJhbWUtPmluaXRpYWxpemVQbGF0Zm9ybUVsZW1lbnRXaXRoUmVtb3RlVG9rZW4o
dG9rZW4sIHByb2Nlc3NJZGVudGlmaWVyKTsKKyNlbmRpZgorICAgICAgICAgICAgLy8gVXBkYXRl
IHRoZSByZW1vdGUgc2lkZSB3aXRoIHRoZSBvZmZzZXQgb2YgdGhpcyBvYmplY3Qgc28gaXQgY2Fu
IGNhbGN1bGF0ZSBmcmFtZXMgY29ycmVjdGx5LgorICAgICAgICAgICAgYXV0byBsb2NhdGlvbiA9
IGVsZW1lbnRSZWN0KCkubG9jYXRpb24oKTsKKyAgICAgICAgICAgIHJlbW90ZUZyYW1lLnVwZGF0
ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChmbG9vcmVkSW50UG9pbnQobG9jYXRpb24p
KTsKKyAgICAgICAgfSk7CisgICAgfSBlbHNlCisgICAgICAgIG1fcmVtb3RlRnJhbWUtPnNldFBh
cmVudCh0aGlzKTsKKworICAgIGFkZENoaWxkKG1fcmVtb3RlRnJhbWUuZ2V0KCkpOworfQorCiB2
b2lkIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjphZGRDaGlsZHJlbigpCiB7CiAgICAgQVNTRVJU
KCFtX2NoaWxkcmVuSW5pdGlhbGl6ZWQpOwogICAgIG1fY2hpbGRyZW5Jbml0aWFsaXplZCA9IHRy
dWU7CiAKKyAgICBhZGRSZW1vdGVGcmFtZUNoaWxkKCk7CiAgICAgYWRkQ2hpbGQod2ViQXJlYU9i
amVjdCgpKTsKICAgICB1cGRhdGVTY3JvbGxiYXJzKCk7CiB9CkBAIC0yMDMsNyArMjQ2LDcgQEAg
dm9pZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkQ2hpbGRyZW4oKQogQWNjZXNzaWJpbGl0
eU9iamVjdCogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OndlYkFyZWFPYmplY3QoKSBjb25zdAog
ewogICAgIGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsKLSAgICBpZiAoIWRvY3Vt
ZW50IHx8ICFkb2N1bWVudC0+aGFzTGl2aW5nUmVuZGVyVHJlZSgpKQorICAgIGlmICghZG9jdW1l
bnQgfHwgIWRvY3VtZW50LT5oYXNMaXZpbmdSZW5kZXJUcmVlKCkgfHwgbV9yZW1vdGVGcmFtZSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoYXV0byogY2FjaGUgPSBheE9iamVj
dENhY2hlKCkpCkBAIC0yMzQsOSArMjc3LDE1IEBAIExheW91dFJlY3QgQWNjZXNzaWJpbGl0eVNj
cm9sbFZpZXc6OmVsZW1lbnRSZWN0KCkgY29uc3QKIAogRG9jdW1lbnQqIEFjY2Vzc2liaWxpdHlT
Y3JvbGxWaWV3Ojpkb2N1bWVudCgpIGNvbnN0CiB7Ci0gICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9
IGR5bmFtaWNEb3duY2FzdDxMb2NhbEZyYW1lVmlldz4obV9zY3JvbGxWaWV3LmdldCgpKSkgewor
ICAgIGlmIChhdXRvKiBmcmFtZVZpZXcgPSBkeW5hbWljRG93bmNhc3Q8TG9jYWxGcmFtZVZpZXc+
KG1fc2Nyb2xsVmlldy5nZXQoKSkpCiAgICAgICAgIHJldHVybiBmcmFtZVZpZXctPmZyYW1lKCku
ZG9jdW1lbnQoKTsKKworICAgIC8vIEZvciB0aGUgUmVtb3RlRnJhbWVWaWV3IGNhc2UsIHdlIG5l
ZWQgdG8gcmV0dXJuIHRoZSBkb2N1bWVudCBvZiBvdXIgaG9zdGluZyBwYXJlbnQgc28gYXhPYmpl
Y3RDYWNoZSgpIHJlc29sdmVzIGNvcnJlY3RseS4KKyAgICBpZiAoYXV0byogcmVtb3RlRnJhbWVW
aWV3ID0gZHluYW1pY0Rvd25jYXN0PFJlbW90ZUZyYW1lVmlldz4obV9zY3JvbGxWaWV3LmdldCgp
KSkgeworICAgICAgICBpZiAoYXV0byogb3duZXIgPSByZW1vdGVGcmFtZVZpZXctPmZyYW1lKCku
b3duZXJFbGVtZW50KCkpCisgICAgICAgICAgICByZXR1cm4gJihvd25lci0+ZG9jdW1lbnQoKSk7
CiAgICAgfQorCiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRvY3VtZW50KCk7CiB9
CiAKQEAgLTI1OSw4ICszMDgsMTAgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0
eVNjcm9sbFZpZXc6OnBhcmVudE9iamVjdCgpIGNvbnN0CiAgICAgV2Vha1B0ciBvd25lciA9IG1f
ZnJhbWVPd25lckVsZW1lbnQuZ2V0KCk7CiAgICAgaWYgKGF1dG8qIGxvY2FsRnJhbWVWaWV3ID0g
ZHluYW1pY0Rvd25jYXN0PExvY2FsRnJhbWVWaWV3PihtX3Njcm9sbFZpZXcuZ2V0KCkpKQogICAg
ICAgICBvd25lciA9IGxvY2FsRnJhbWVWaWV3LT5mcmFtZSgpLm93bmVyRWxlbWVudCgpOworICAg
IGVsc2UgaWYgKGF1dG8qIHJlbW90ZUZyYW1lVmlldyA9IGR5bmFtaWNEb3duY2FzdDxSZW1vdGVG
cmFtZVZpZXc+KG1fc2Nyb2xsVmlldy5nZXQoKSkpCisgICAgICAgIG93bmVyID0gcmVtb3RlRnJh
bWVWaWV3LT5mcmFtZSgpLm93bmVyRWxlbWVudCgpOwogCi0gICAgaWYgKGNhY2hlICYmIG93bmVy
ICYmIG93bmVyLT5yZW5kZXJlcigpKQorICAgIGlmIChvd25lciAmJiBvd25lci0+cmVuZGVyZXIo
KSkKICAgICAgICAgcmV0dXJuIGNhY2hlLT5nZXRPckNyZWF0ZShvd25lci5nZXQoKSk7CiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgKaW5kZXggNTU3MDQ0NjcxYzdkLi41MjVhYzc4
M2ZiYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVNjcm9sbFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlTY3JvbGxWaWV3LmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIAorY2xhc3MgQVhSZW1vdGVGcmFtZTsKIGNsYXNzIEFjY2Vzc2liaWxpdHlTY3Jv
bGxiYXI7CiBjbGFzcyBTY3JvbGxiYXI7CiBjbGFzcyBTY3JvbGxWaWV3OwpAQCAtNTQsNyArNTUs
OCBAQCBwcml2YXRlOgogICAgIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBj
b25zdCBvdmVycmlkZTsKICAgICBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXdJbnN0YW5j
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIGlzRW5hYmxlZCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICAKKyAgICBib29sIGhhc1JlbW90
ZUZyYW1lQ2hpbGQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3JlbW90ZUZyYW1lOyB9CisKICAg
ICBib29sIGlzQXR0YWNobWVudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFBsYXRmb3JtV2lkZ2V0
IHBsYXRmb3JtV2lkZ2V0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgV2lkZ2V0KiB3aWRnZXRGb3JB
dHRhY2htZW50VmlldygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGN1cnJlbnRTY3JvbGxWaWV3
KCk7IH0KQEAgLTY5LDYgKzcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEZvY3VzZWQoYm9v
bCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBjYW5TZXRGb2N1c0F0dHJpYnV0ZSgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIGJvb2wgaXNGb2N1c2VkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGRS
ZW1vdGVGcmFtZUNoaWxkKCk7CiAKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCBvdmVy
cmlkZTsKICAgICBMb2NhbEZyYW1lVmlldyogZG9jdW1lbnRGcmFtZVZpZXcoKSBjb25zdCBvdmVy
cmlkZTsKQEAgLTg1LDYgKzg4LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8QWNjZXNzaWJpbGl0
eU9iamVjdD4gbV9ob3Jpem9udGFsU2Nyb2xsYmFyOwogICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5
T2JqZWN0PiBtX3ZlcnRpY2FsU2Nyb2xsYmFyOwogICAgIGJvb2wgbV9jaGlsZHJlbkRpcnR5Owor
ICAgIFJlZlB0cjxBWFJlbW90ZUZyYW1lPiBtX3JlbW90ZUZyYW1lOwogfTsKICAgICAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0K
aW5kZXggMmYyOWI3MmZmZTdlLi45MjQzYWQ2YmQzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVySU9TLm1tCkBAIC0xMTEyLDYgKzExMTIsNyBAQCBzdGF0aWMgQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIgKmFuY2VzdG9yV2l0aFJvbGUoY29uc3QgQVhDb3JlT2JqZWN0JiBk
ZXNjZW5kYQogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Oklnbm9yZWQ6CiAgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6TGluZUJyZWFrOgogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OlByZXNlbnRhdGlvbmFsOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJlbW90ZUZyYW1l
OgogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd246CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCmluZGV4IDEwMTQ1NDYyNzhm
My4uMTc3ZDkzOTdhMGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcApAQCAtMzc4LDYg
KzM3OCwxMCBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVQcm9wZXJ0aWVzKGNv
bnN0IFJlZjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiYgYXhPYgogI2VuZGlmCiAKICAgICBzZXRPYmpl
Y3RQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SW50ZXJuYWxMaW5rRWxlbWVudCwgb2JqZWN0Lmlu
dGVybmFsTGlua0VsZW1lbnQoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Okhh
c1JlbW90ZUZyYW1lQ2hpbGQsIG9iamVjdC5oYXNSZW1vdGVGcmFtZUNoaWxkKCkpOworICAgIC8v
IERvbid0IGR1cGxpY2F0ZSB0aGUgcmVtb3RlRnJhbWVPZmZzZXQgZm9yIGV2ZXJ5IG9iamVjdC4g
SnVzdCBzdG9yZSBpbiB0aGUgV2ViQXJlYS4KKyAgICBpZiAob2JqZWN0LmlzV2ViQXJlYSgpKQor
ICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6UmVtb3RlRnJhbWVPZmZzZXQsIG9i
amVjdC5yZW1vdGVGcmFtZU9mZnNldCgpKTsKIAogICAgIGluaXRpYWxpemVQbGF0Zm9ybVByb3Bl
cnRpZXMoYXhPYmplY3QpOwogfQpAQCAtNDY0LDYgKzQ2OCw3IEBAIHZvaWQgQVhJc29sYXRlZE9i
amVjdDo6c2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBBWFByb3BlcnR5
VmFsdWVWCiAgICAgICAgIFtdKE9wdGlvblNldDxBWEFuY2VzdG9yRmxhZz4mIHR5cGVkVmFsdWUp
IHsgcmV0dXJuIHR5cGVkVmFsdWUuaXNFbXB0eSgpOyB9LAogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgICAgICBbXShSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiYgdHlwZWRWYWx1ZSkgeyBy
ZXR1cm4gIXR5cGVkVmFsdWU7IH0sCisgICAgICAgIFtdKFJldGFpblB0cjxpZD4mIHR5cGVkVmFs
dWUpIHsgcmV0dXJuICF0eXBlZFZhbHVlOyB9LAogI2VuZGlmCiAgICAgICAgIFtdKEluc2lkZUxp
bmsmIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWUgPT0gSW5zaWRlTGluaygpOyB9LAog
ICAgICAgICBbXShWZWN0b3I8VmVjdG9yPEFYSUQ+PiYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlw
ZWRWYWx1ZS5pc0VtcHR5KCk7IH0sCkBAIC0xMjA2LDYgKzEyMTEsMjEgQEAgTGF5b3V0UmVjdCBB
WElzb2xhdGVkT2JqZWN0OjplbGVtZW50UmVjdCgpIGNvbnN0CiAgICAgfSk7CiB9CiAKK0ludFBv
aW50IEFYSXNvbGF0ZWRPYmplY3Q6OnJlbW90ZUZyYW1lT2Zmc2V0KCkgY29uc3QKK3sKKyAgICBh
dXRvKiB3ZWJBcmVhID0gQWNjZXNzaWJpbGl0eTo6ZmluZEFuY2VzdG9yPEFYSXNvbGF0ZWRPYmpl
Y3Q+KCp0aGlzLCBmYWxzZSwgW10gKGNvbnN0IGF1dG8mIG9iamVjdCkgeworICAgICAgICByZXR1
cm4gb2JqZWN0LmlzV2ViQXJlYSgpOworICAgIH0pOworCisgICAgaWYgKCF3ZWJBcmVhKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgaWYgKGF1dG8gcG9pbnQgPSB3ZWJBcmVhLT5vcHRpb25h
bEF0dHJpYnV0ZVZhbHVlPEludFBvaW50PihBWFByb3BlcnR5TmFtZTo6UmVtb3RlRnJhbWVPZmZz
ZXQpKQorICAgICAgICByZXR1cm4gKnBvaW50OworCisgICAgcmV0dXJuIHsgfTsKK30KKwogRmxv
YXRQb2ludCBBWElzb2xhdGVkT2JqZWN0OjpzY3JlZW5SZWxhdGl2ZVBvc2l0aW9uKCkgY29uc3QK
IHsKICAgICBpZiAoYXV0byBwb2ludCA9IG9wdGlvbmFsQXR0cmlidXRlVmFsdWU8RmxvYXRQb2lu
dD4oQVhQcm9wZXJ0eU5hbWU6OlNjcmVlblJlbGF0aXZlUG9zaXRpb24pKQpAQCAtMTIyOSwyMiAr
MTI0OSwyMyBAQCBGbG9hdFBvaW50IEFYSXNvbGF0ZWRPYmplY3Q6OnNjcmVlblJlbGF0aXZlUG9z
aXRpb24oKSBjb25zdAogCiBGbG9hdFJlY3QgQVhJc29sYXRlZE9iamVjdDo6cmVsYXRpdmVGcmFt
ZSgpIGNvbnN0CiB7CisgICAgRmxvYXRSZWN0IHJlbGF0aXZlRnJhbWU7CisKICAgICBpZiAoYXV0
byBjYWNoZWRSZWxhdGl2ZUZyYW1lID0gb3B0aW9uYWxBdHRyaWJ1dGVWYWx1ZTxJbnRSZWN0PihB
WFByb3BlcnR5TmFtZTo6UmVsYXRpdmVGcmFtZSkpIHsKICAgICAgICAgLy8gV2Ugc2hvdWxkIG5v
dCBoYXZlIGNhY2hlZCBhIHJlbGF0aXZlIGZyYW1lIGZvciBlbGVtZW50cyB0aGF0IGdldCB0aGVp
ciBnZW9tZXRyeSBmcm9tIHRoZWlyIGNoaWxkcmVuLgogICAgICAgICBBU1NFUlQoIW1fZ2V0c0dl
b21ldHJ5RnJvbUNoaWxkcmVuKTsKLSAgICAgICAgcmV0dXJuICpjYWNoZWRSZWxhdGl2ZUZyYW1l
OwotICAgIH0KLQotICAgIGlmIChtX2dldHNHZW9tZXRyeUZyb21DaGlsZHJlbikgeworICAgICAg
ICByZWxhdGl2ZUZyYW1lID0gKmNhY2hlZFJlbGF0aXZlRnJhbWU7CisgICAgfSBlbHNlIGlmICht
X2dldHNHZW9tZXRyeUZyb21DaGlsZHJlbikgewogICAgICAgICBhdXRvIGZyYW1lID0gZW5jbG9z
aW5nSW50UmVjdChyZWxhdGl2ZUZyYW1lRnJvbUNoaWxkcmVuKCkpOwogICAgICAgICBpZiAoIWZy
YW1lLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBmcmFtZTsKKyAgICAgICAgICAgIHJl
bGF0aXZlRnJhbWUgPSBmcmFtZTsKICAgICAgICAgLy8gRWl0aGVyIHdlIGhhZCBubyBjaGlsZHJl
biwgb3Igb3VyIGNoaWxkcmVuIGhhZCBlbXB0eSBmcmFtZXMuIFRoZSByaWdodCB0aGluZyB0byBk
byB3b3VsZCBiZSB0byByZXR1cm4KICAgICAgICAgLy8gYSByZWN0IGF0IHRoZSBwb3NpdGlvbiBv
ZiB0aGUgbmVhcmVzdCByZW5kZXIgdHJlZSBhbmNlc3RvciB3aXRoIHNvbWUgbWFkZS11cCBzaXpl
IChBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6Ym91bmRpbmdCb3hSZWN0IGRvZXMgdGhpcykuCiAg
ICAgICAgIC8vIEhvd2V2ZXIsIHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIHRoZSByZW5kZXIgdHJl
ZSBpbiB0aGlzIGNvbnRleHQgKG9ubHkgdGhlIEFYIGlzb2xhdGVkIHRyZWUsIHdoaWNoIGlzIHRv
byBzcGFyc2UgZm9yIHRoaXMgcHVycG9zZSksIHNvCiAgICAgICAgIC8vIHVudGlsIHdlIGNhY2hl
IHRoZSBuZWNlc3NhcnkgaW5mb3JtYXRpb24gbGV0J3MgZ28gdG8gdGhlIG1haW4tdGhyZWFkLgog
ICAgIH0gZWxzZSBpZiAocm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNvbHVtbiB8
fCByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFibGVIZWFkZXJDb250YWluZXIp
Ci0gICAgICAgIHJldHVybiBleHBvc2VkVGFibGVBbmNlc3RvcigpID8gcmVsYXRpdmVGcmFtZUZy
b21DaGlsZHJlbigpIDogRmxvYXRSZWN0KCk7CisgICAgICAgIHJlbGF0aXZlRnJhbWUgPSBleHBv
c2VkVGFibGVBbmNlc3RvcigpID8gcmVsYXRpdmVGcmFtZUZyb21DaGlsZHJlbigpIDogRmxvYXRS
ZWN0KCk7CisKIAogICAgIC8vIE1vY2sgb2JqZWN0cyBhbmQgU1ZHIG9iamVjdHMgbmVlZCB1c2Ug
dGhlIG1haW4gdGhyZWFkIHNpbmNlIHRoZXkgZG8gbm90IGhhdmUgcmVuZGVyIG5vZGVzIGFuZCBh
cmUgbm90IHBhaW50ZWQgd2l0aCBsYXllcnMsIHJlc3BlY3RpdmVseS4KICAgICAvLyBGSVhNRTog
UmVtb3ZlIGlzTm9uTGF5ZXJTVkdPYmplY3Qgd2hlbiBMQlNFIGlzIGVuYWJsZWQgJiBTVkcgZnJh
bWVzIGFyZSBjYWNoZWQuCkBAIC0xMjY2LDYgKzEyODcsOCBAQCBGbG9hdFJlY3QgQVhJc29sYXRl
ZE9iamVjdDo6cmVsYXRpdmVGcmFtZSgpIGNvbnN0CiAgICAgaWYgKGFuY2VzdG9yICYmIGZyYW1l
UmVjdC5sb2NhdGlvbigpID09IEZsb2F0UG9pbnQoKSkKICAgICAgICAgZnJhbWVSZWN0LnNldExv
Y2F0aW9uKGFuY2VzdG9yLT5yZWxhdGl2ZUZyYW1lKCkubG9jYXRpb24oKSk7CiAKKyAgICBhdXRv
IHJlbW90ZU9mZnNldCA9IHJlbW90ZUZyYW1lT2Zmc2V0KCk7CisgICAgZnJhbWVSZWN0Lm1vdmVC
eShGbG9hdFBvaW50KHJlbW90ZU9mZnNldCkpOwogICAgIHJldHVybiBmcmFtZVJlY3Q7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRPYmplY3QuaAppbmRleCBkMmE2NmMyZjUzZTQuLmRlODI3ZDVmZTAxNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJ
c29sYXRlZE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0
ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShB
Q0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAKICNpbmNsdWRlICJBWENvcmVPYmplY3QuaCIK
KyNpbmNsdWRlICJBWElzb2xhdGVkVHJlZS5oIgogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIK
ICNpbmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKQEAgLTIxNSw2
ICsyMTYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNGaWxlVXBsb2FkQnV0dG9uKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0ZpbGVV
cGxvYWRCdXR0b24pOyB9CiAgICAgYm9vbCBpc01ldGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
Ym9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01ldGVyKTsgfTsKICAgICBGbG9h
dFBvaW50IHNjcmVlblJlbGF0aXZlUG9zaXRpb24oKSBjb25zdCBmaW5hbDsKKyAgICBJbnRQb2lu
dCByZW1vdGVGcmFtZU9mZnNldCgpIGNvbnN0IGZpbmFsOwogICAgIEZsb2F0UmVjdCByZWxhdGl2
ZUZyYW1lKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBoYXNDYWNoZWRSZWxhdGl2ZUZyYW1lKCkg
Y29uc3QgeyByZXR1cm4gb3B0aW9uYWxBdHRyaWJ1dGVWYWx1ZTxJbnRSZWN0PihBWFByb3BlcnR5
TmFtZTo6UmVsYXRpdmVGcmFtZSkuaGFzX3ZhbHVlKCk7IH0KICNpZiBQTEFURk9STShNQUMpCkBA
IC0yNjMsNyArMjY1LDcgQEAgcHJpdmF0ZToKICAgICBBWElzb2xhdGVkT2JqZWN0KiBhY2Nlc3Np
YmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IGZpbmFsOwogICAgIEFYSXNvbGF0
ZWRPYmplY3QqIGZvY3VzZWRVSUVsZW1lbnQoKSBjb25zdCBmaW5hbDsKICAgICBBWENvcmVPYmpl
Y3QqIGludGVybmFsTGlua0VsZW1lbnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBvYmplY3RBdHRy
aWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SW50ZXJuYWxMaW5rRWxlbWVudCk7IH0KLSAgICBB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgcmFkaW9CdXR0b25Hcm91cCgpIGNvbnN0IHsgcmV0
dXJuIHRyZWUoKS0+b2JqZWN0c0ZvcklEcyh2ZWN0b3JBdHRyaWJ1dGVWYWx1ZTxBWElEPihBWFBy
b3BlcnR5TmFtZTo6UmFkaW9CdXR0b25Hcm91cCkpOyB9CisgICAgQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yIHJhZGlvQnV0dG9uR3JvdXAoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cmVlKCkt
Pm9iamVjdHNGb3JJRHModmVjdG9yQXR0cmlidXRlVmFsdWU8QVhJRD4oQVhQcm9wZXJ0eU5hbWU6
OlJhZGlvQnV0dG9uR3JvdXApKTsgfQogICAgIEFYSXNvbGF0ZWRPYmplY3QqIHNjcm9sbEJhcihB
Y2Nlc3NpYmlsaXR5T3JpZW50YXRpb24pIGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyBwbGFjZWhv
bGRlclZhbHVlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQ
cm9wZXJ0eU5hbWU6OlBsYWNlaG9sZGVyVmFsdWUpOyB9CiAgICAgU3RyaW5nIGV4cGFuZGVkVGV4
dFZhbHVlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9w
ZXJ0eU5hbWU6OkV4cGFuZGVkVGV4dFZhbHVlKTsgfQpAQCAtNDU2LDcgKzQ1OCw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlBUklBR3JpZEluc3RhbmNlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93
SW5zdGFuY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNBY2Nl
c3NpYmlsaXR5QVJJQUdyaWRDZWxsSW5zdGFuY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxz
ZTsgfQotCisgICAgYm9vbCBpc0FYUmVtb3RlRnJhbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBm
YWxzZTsgfQogICAgIGJvb2wgaXNOYXRpdmVUZXh0Q29udHJvbCgpIGNvbnN0IGZpbmFsOwogICAg
IGJvb2wgaXNMaXN0Qm94T3B0aW9uKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc01vY2tPYmpl
Y3QoKSBjb25zdCBmaW5hbDsKQEAgLTUzNyw3ICs1MzksOSBAQCBwcml2YXRlOgogICAgIFN0cmlu
ZyBuYW1lQXR0cmlidXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFs
dWUoQVhQcm9wZXJ0eU5hbWU6Ok5hbWVBdHRyaWJ1dGUpOyB9CiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgYm9vbCBoYXNBcHBsZVBERkFubm90YXRpb25BdHRyaWJ1dGUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Okhhc0FwcGxlUERGQW5u
b3RhdGlvbkF0dHJpYnV0ZSk7IH0KKyAgICBSZXRhaW5QdHI8aWQ+IHJlbW90ZUZyYW1lUGxhdGZv
cm1FbGVtZW50KCkgY29uc3QgZmluYWw7CiAjZW5kaWYKKyAgICBib29sIGhhc1JlbW90ZUZyYW1l
Q2hpbGQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0
eU5hbWU6Okhhc1JlbW90ZUZyYW1lQ2hpbGQpOyB9CiAKICNpZiBQTEFURk9STShDT0NPQSkgJiYg
RU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAgVmVjdG9yPFJldGFpblB0cjxpZD4+IG1vZGVsRWxl
bWVudENoaWxkcmVuKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKaW5kZXggNjk2NjU4
NDQ4ZjY1Li4xYmUzYjc5OTA1MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKQEAgLTMwLDYg
KzMwLDcgQEAKIAogI2luY2x1ZGUgIkFYSXNvbGF0ZWRPYmplY3QuaCIKICNpbmNsdWRlICJBWExv
Z2dlci5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZS5oIgogI2luY2x1ZGUgIkFjY2Vz
c2liaWxpdHlUYWJsZVJvdy5oIgogI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiTG9jYWxGcmFtZVZpZXcuaCIKQEAgLTIyNSw0NiArMjI2LDI2IEBAIFJlZlB0cjxBWElzb2xh
dGVkT2JqZWN0PiBBWElzb2xhdGVkVHJlZTo6b2JqZWN0Rm9ySUQoY29uc3QgQVhJRCBheElEKSBj
b25zdAogICAgIHJldHVybiBheElELmlzVmFsaWQoKSA/IG1fcmVhZGVyVGhyZWFkTm9kZU1hcC5n
ZXQoYXhJRCkgOiBudWxscHRyOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBVPgotVmVjdG9yPFJl
ZlB0cjxBWENvcmVPYmplY3Q+PiBBWElzb2xhdGVkVHJlZTo6b2JqZWN0c0ZvcklEcyhjb25zdCBV
JiBheElEcykKK1JlZlB0cjxBWElzb2xhdGVkT2JqZWN0PiBBWElzb2xhdGVkVHJlZTo6ZmV0Y2hP
YmplY3RGb3JJREZyb21NYWluVGhyZWFkKGNvbnN0IEFYSUQgYXhJRCkgY29uc3QKIHsKLSAgICBB
U1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLQotICAgIFZlY3RvcjxSZWZQdHI8QVhDb3JlT2JqZWN0
Pj4gcmVzdWx0OwotICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGF4SURzLnNpemUo
KSk7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBheElEIDogYXhJRHMpIHsKLSAgICAgICAgUmVmUHRy
IG9iamVjdCA9IG9iamVjdEZvcklEKGF4SUQpOwotICAgICAgICBpZiAob2JqZWN0KSB7Ci0gICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKFdURk1vdmUob2JqZWN0KSk7Ci0gICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFRoZXJlIGlzIG5vIGlzb2xhdGVkIG9iamVj
dCBmb3IgdGhpcyBBWElELiBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlIGNvcnJlc3BvbmRpbmcgbGl2
ZSBvYmplY3QgaXMgaWdub3JlZC4KLSAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBsaXZlIG9iamVj
dCBmb3IgdGhpcyBJRCBhbmQgaXQgaXMgYW4gaWdub3JlZCB0YXJnZXQgb2YgYSByZWxhdGlvbnNo
aXAsIGNyZWF0ZSBhbiBpc29sYXRlZCBvYmplY3QgZm9yIGl0LgotICAgICAgICBvYmplY3QgPSBB
Y2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8UmVmUHRyPEFYSXNvbGF0
ZWRPYmplY3Q+PihbJmF4SUQsIHRoaXNdICgpIC0+IFJlZlB0cjxBWElzb2xhdGVkT2JqZWN0PiB7
Ci0gICAgICAgICAgICBhdXRvKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsKLSAgICAgICAgICAg
IGlmICghY2FjaGUgfHwgIWNhY2hlLT5yZWxhdGlvblRhcmdldElEcygpLmNvbnRhaW5zKGF4SUQp
KQotICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAgICAgICBSZWZQdHIg
YXhPYmplY3QgPSBjYWNoZS0+b2JqZWN0Rm9ySUQoYXhJRCk7Ci0gICAgICAgICAgICBpZiAoIWF4
T2JqZWN0IHx8ICFheE9iamVjdC0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAgICAgICBhdXRvIG9iamVjdCA9IEFYSXNv
bGF0ZWRPYmplY3Q6OmNyZWF0ZSgqYXhPYmplY3QsIGNvbnN0X2Nhc3Q8QVhJc29sYXRlZFRyZWUq
Pih0aGlzKSk7Ci0gICAgICAgICAgICBBU1NFUlQoYXhPYmplY3QtPndyYXBwZXIoKSk7Ci0gICAg
ICAgICAgICBvYmplY3QtPmF0dGFjaFBsYXRmb3JtV3JhcHBlcihheE9iamVjdC0+d3JhcHBlcigp
KTsKLSAgICAgICAgICAgIHJldHVybiBvYmplY3Q7Ci0gICAgICAgIH0pOwotICAgICAgICBpZiAo
b2JqZWN0KSB7Ci0gICAgICAgICAgICBtX3JlYWRlclRocmVhZE5vZGVNYXAuYWRkKGF4SUQsICpv
YmplY3QpOwotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChXVEZNb3ZlKG9iamVjdCkpOwotICAg
ICAgICB9Ci0gICAgfQotICAgIHJlc3VsdC5zaHJpbmtUb0ZpdCgpOwotICAgIHJldHVybiByZXN1
bHQ7CisgICAgLy8gVGhlcmUgaXMgbm8gaXNvbGF0ZWQgb2JqZWN0IGZvciB0aGlzIEFYSUQuIFRo
aXMgY2FuIGhhcHBlbiBpZiB0aGUgY29ycmVzcG9uZGluZyBsaXZlIG9iamVjdCBpcyBpZ25vcmVk
LgorICAgIC8vIElmIHRoZXJlIGlzIGEgbGl2ZSBvYmplY3QgZm9yIHRoaXMgSUQgYW5kIGl0IGlz
IGFuIGlnbm9yZWQgdGFyZ2V0IG9mIGEgcmVsYXRpb25zaGlwLCBjcmVhdGUgYW4gaXNvbGF0ZWQg
b2JqZWN0IGZvciBpdC4KKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZy
b21NYWluVGhyZWFkPFJlZlB0cjxBWElzb2xhdGVkT2JqZWN0Pj4oWyZheElELCB0aGlzXSAoKSAt
PiBSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4geworICAgICAgICBhdXRvKiBjYWNoZSA9IGF4T2Jq
ZWN0Q2FjaGUoKTsKKyAgICAgICAgaWYgKCFjYWNoZSB8fCAhY2FjaGUtPnJlbGF0aW9uVGFyZ2V0
SURzKCkuY29udGFpbnMoYXhJRCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
ICAgICBSZWZQdHIgYXhPYmplY3QgPSBjYWNoZS0+b2JqZWN0Rm9ySUQoYXhJRCk7CisgICAgICAg
IGlmICghYXhPYmplY3QgfHwgIWF4T2JqZWN0LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBhdXRvIG9iamVjdCA9IEFYSXNv
bGF0ZWRPYmplY3Q6OmNyZWF0ZSgqYXhPYmplY3QsIGNvbnN0X2Nhc3Q8QVhJc29sYXRlZFRyZWUq
Pih0aGlzKSk7CisgICAgICAgIEFTU0VSVChheE9iamVjdC0+d3JhcHBlcigpKTsKKyAgICAgICAg
b2JqZWN0LT5hdHRhY2hQbGF0Zm9ybVdyYXBwZXIoYXhPYmplY3QtPndyYXBwZXIoKSk7CisgICAg
ICAgIHJldHVybiBvYmplY3Q7CisgICAgfSk7CiB9CiAKLQogdm9pZCBBWElzb2xhdGVkVHJlZTo6
Z2VuZXJhdGVTdWJ0cmVlKEFjY2Vzc2liaWxpdHlPYmplY3QmIGF4T2JqZWN0KQogewogICAgIEFY
VFJBQ0UoIkFYSXNvbGF0ZWRUcmVlOjpnZW5lcmF0ZVN1YnRyZWUiX3MpOwpAQCAtNjYwLDYgKzY0
MSwxMiBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2RlUHJvcGVydGllcyhBWENvcmVP
YmplY3QmIGF4T2JqZWN0LCBjb25zdCBBWFByb3BlcgogICAgICAgICBjYXNlIEFYUHJvcGVydHlO
YW1lOjpQb3NJblNldDoKICAgICAgICAgICAgIHByb3BlcnR5TWFwLnNldChBWFByb3BlcnR5TmFt
ZTo6UG9zSW5TZXQsIGF4T2JqZWN0LnBvc0luU2V0KCkpOwogICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgQVhQcm9wZXJ0eU5hbWU6OlJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50Ogor
ICAgICAgICAgICAgcHJvcGVydHlNYXAuc2V0KEFYUHJvcGVydHlOYW1lOjpSZW1vdGVGcmFtZVBs
YXRmb3JtRWxlbWVudCwgYXhPYmplY3QucmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBWFByb3BlcnR5TmFtZTo6SGFzUmVtb3Rl
RnJhbWVDaGlsZDoKKyAgICAgICAgICAgIHByb3BlcnR5TWFwLnNldChBWFByb3BlcnR5TmFtZTo6
SGFzUmVtb3RlRnJhbWVDaGlsZCwgYXhPYmplY3QuaGFzUmVtb3RlRnJhbWVDaGlsZCgpKTsKKyAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFYUHJvcGVydHlOYW1lOjpSb2xlRGVzY3Jp
cHRpb246CiAgICAgICAgICAgICBwcm9wZXJ0eU1hcC5zZXQoQVhQcm9wZXJ0eU5hbWU6OlJvbGVE
ZXNjcmlwdGlvbiwgYXhPYmplY3Qucm9sZURlc2NyaXB0aW9uKCkuaXNvbGF0ZWRDb3B5KCkpOwog
ICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaAppbmRleCBhNDE3OTI3OTc4ZDIu
LjZiNGM1ZTgzMzFhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCkBAIC0xMDQsNiArMTA0LDcgQEAg
ZW51bSBjbGFzcyBBWFByb3BlcnR5TmFtZSA6IHVpbnQxNl90IHsKICAgICBIYXNIaWdobGlnaHRp
bmcsCiAgICAgSGFzSXRhbGljRm9udCwKICAgICBIYXNQbGFpblRleHQsCisgICAgSGFzUmVtb3Rl
RnJhbWVDaGlsZCwKICAgICBIYXNVbmRlcmxpbmUsCiAgICAgSGVhZGVyQ29udGFpbmVyLAogICAg
IEhlYWRpbmdMZXZlbCwKQEAgLTIwMSw2ICsyMDIsOCBAQCBlbnVtIGNsYXNzIEFYUHJvcGVydHlO
YW1lIDogdWludDE2X3QgewogICAgIFByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2gsCiAg
ICAgUmFkaW9CdXR0b25Hcm91cCwKICAgICBSZWxhdGl2ZUZyYW1lLAorICAgIFJlbW90ZUZyYW1l
T2Zmc2V0LAorICAgIFJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50LAogICAgIFJvbGVWYWx1ZSwK
ICAgICBSb2xlUGxhdGZvcm1TdHJpbmcsCiAgICAgUm9sZURlc2NyaXB0aW9uLApAQCAtMjU3LDYg
KzI2MCw3IEBAIHVzaW5nIEFYUHJvcGVydHlOYW1lU2V0ID0gSGFzaFNldDxBWFByb3BlcnR5TmFt
ZSwgSW50SGFzaDxBWFByb3BlcnR5TmFtZT4sIFdURjo6CiB1c2luZyBBWFByb3BlcnR5VmFsdWVW
YXJpYW50ID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBBWElELCBTdHJpbmcsIGJvb2ws
IGludCwgdW5zaWduZWQsIGRvdWJsZSwgZmxvYXQsIHVpbnQ2NF90LCBBY2Nlc3NpYmlsaXR5QnV0
dG9uU3RhdGUsIENvbG9yLCBVUkwsIExheW91dFJlY3QsIEZsb2F0UG9pbnQsIEZsb2F0UmVjdCwg
SW50UG9pbnQsIEludFJlY3QsIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+LCBWZWN0b3I8
QWNjZXNzaWJpbGl0eVRleHQ+LCBWZWN0b3I8QVhJRD4sIFZlY3RvcjxzdGQ6OnBhaXI8QVhJRCwg
QVhJRD4+LCBWZWN0b3I8U3RyaW5nPiwgUGF0aCwgT3B0aW9uU2V0PEFYQW5jZXN0b3JGbGFnPiwg
SW5zaWRlTGluaywgVmVjdG9yPFZlY3RvcjxBWElEPj4sIENoYXJhY3RlclJhbmdlLCBzdGQ6OnBh
aXI8QVhJRCwgQ2hhcmFjdGVyUmFuZ2U+CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgLCBSZXRh
aW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPgorICAgICwgUmV0YWluUHRyPGlkPgogI2VuZGlmCiAj
aWYgRU5BQkxFKEFYX1RIUkVBRF9URVhUX0FQSVMpCiAgICAgLCBBWFRleHRSdW5zCkBAIC0zOTcs
NiArNDAxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZUVtcHR5Q29udGVudChBY2Nlc3Np
YmlsaXR5T2JqZWN0Jik7CiAgICAgY29uc3RleHByIGJvb2wgaXNVcGRhdGluZ1N1YnRyZWUoKSBj
b25zdCB7IHJldHVybiBtX3Jvb3RPZlN1YnRyZWVCZWluZ1VwZGF0ZWQ7IH0KICAgICBjb25zdGV4
cHIgdm9pZCB1cGRhdGluZ1N1YnRyZWUoQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmplY3QpIHsg
bV9yb290T2ZTdWJ0cmVlQmVpbmdVcGRhdGVkID0gYXhPYmplY3Q7IH0KKyAgICBSZWZQdHI8QVhJ
c29sYXRlZE9iamVjdD4gZmV0Y2hPYmplY3RGb3JJREZyb21NYWluVGhyZWFkKGNvbnN0IEFYSUQp
IGNvbnN0OwogCiAgICAgZW51bSBjbGFzcyBBdHRhY2hXcmFwcGVyIDogYm9vbCB7IE9uTWFpblRo
cmVhZCwgT25BWFRocmVhZCB9OwogICAgIHN0cnVjdCBOb2RlQ2hhbmdlIHsKQEAgLTQ5Nyw2ICs1
MDIsMzAgQEAgaW5saW5lIFJlZlB0cjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OnRy
ZWVGb3JQYWdlSUQoc3RkOjpvcHRpb25hbDxQYWdlSWQKICAgICByZXR1cm4gcGFnZUlEID8gdHJl
ZUZvclBhZ2VJRCgqcGFnZUlEKSA6IG51bGxwdHI7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFU+
CitpbmxpbmUgVmVjdG9yPFJlZlB0cjxBWENvcmVPYmplY3Q+PiBBWElzb2xhdGVkVHJlZTo6b2Jq
ZWN0c0ZvcklEcyhjb25zdCBVJiBheElEcykKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgp
KTsKKworICAgIFZlY3RvcjxSZWZQdHI8QVhDb3JlT2JqZWN0Pj4gcmVzdWx0OworICAgIHJlc3Vs
dC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGF4SURzLnNpemUoKSk7CisgICAgZm9yIChjb25zdCBh
dXRvJiBheElEIDogYXhJRHMpIHsKKyAgICAgICAgUmVmUHRyIG9iamVjdCA9IG9iamVjdEZvcklE
KGF4SUQpOworICAgICAgICBpZiAob2JqZWN0KSB7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KFdURk1vdmUob2JqZWN0KSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisg
ICAgICAgIG9iamVjdCA9IGZldGNoT2JqZWN0Rm9ySURGcm9tTWFpblRocmVhZChheElEKTsKKyAg
ICAgICAgaWYgKG9iamVjdCkgeworICAgICAgICAgICAgbV9yZWFkZXJUaHJlYWROb2RlTWFwLmFk
ZChheElELCAqb2JqZWN0KTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoV1RGTW92ZShvYmpl
Y3QpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXN1bHQuc2hyaW5rVG9GaXQoKTsKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvbWFjL0FY
SXNvbGF0ZWRPYmplY3RNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9tYWMvQVhJc29sYXRlZE9iamVjdE1hYy5tbQppbmRleCBhZGI3ZWM2NDgzNDUuLmUw
MmRhMGQxMTJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29s
YXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMubW0KQEAg
LTYzLDYgKzYzLDggQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplUGxhdGZvcm1Q
cm9wZXJ0aWVzKGNvbnN0IFJlZjxjb25zdCBBY2Nlc3NpYmlsaXQKICAgICAgICAgfQogICAgIH0K
IAorICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpSZW1vdGVGcmFtZVBsYXRmb3JtRWxl
bWVudCwgb2JqZWN0LT5yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpKTsKKwogICAgIC8vIENh
Y2hlIHRoZSBTdHJpbmdWYWx1ZSBvbmx5IGlmIGl0IGRpZmZlcnMgZnJvbSB0aGUgQXR0cmlidXRl
ZFRleHQuCiAgICAgYXV0byB2YWx1ZSA9IG9iamVjdC0+c3RyaW5nVmFsdWUoKTsKICAgICBpZiAo
IWF0dHJpYnV0ZWRUZXh0IHx8IHZhbHVlICE9IFN0cmluZyhbYXR0cmlidXRlZFRleHQgc3RyaW5n
XSkpCkBAIC0yMDIsNiArMjA0LDExIEBAIHVuc2lnbmVkIEFYSXNvbGF0ZWRPYmplY3Q6OnRleHRM
ZW5ndGgoKSBjb25zdAogICAgIHJldHVybiAwOwogfQogCitSZXRhaW5QdHI8aWQ+IEFYSXNvbGF0
ZWRPYmplY3Q6OnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gcHJvcGVydHlWYWx1ZTxSZXRhaW5QdHI8aWQ+PihBWFByb3BlcnR5TmFtZTo6UmVtb3RlRnJh
bWVQbGF0Zm9ybUVsZW1lbnQpOworfQorCiBSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiBB
WElzb2xhdGVkT2JqZWN0OjphdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKEFYVGV4
dE1hcmtlclJhbmdlJiYgbWFya2VyUmFuZ2UsIFNwZWxsQ2hlY2sgc3BlbGxDaGVjaykgY29uc3QK
IHsKICAgICBpZiAoIW1hcmtlclJhbmdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0KaW5kZXggYmEyYWNj
ZDgwZDA0Li5kYTg0NGYyZmQzODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbQpAQCAtMjYsNiArMjYs
NyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5T2JqZWN0Lmgi
CiAKKyNpbXBvcnQgIkFYUmVtb3RlRnJhbWUuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlMYWJl
bC5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUxpc3QuaCIKICNpbXBvcnQgIkNvbG9yQ29jb2Eu
aCIKQEAgLTUxLDYgKzUyLDcgQEAKICNpbXBvcnQgIldlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyTWFjLmgiCiAjaW1wb3J0ICJXaWRnZXQuaCIKIAorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9O
U0FjY2Vzc2liaWxpdHlTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL05TU3BlbGxDaGVja2Vy
U1BJLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc0OSw2ICs3NTEsMzEgQEAgUmV0YWlu
UHRyPE5TQXR0cmlidXRlZFN0cmluZz4gYXR0cmlidXRlZFN0cmluZ0NyZWF0ZShOb2RlKiBub2Rl
LCBTdHJpbmdWaWV3IHRleHQKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzdGQ6OnNwYW48Y29u
c3QgdWludDhfdD4gQVhSZW1vdGVGcmFtZTo6Z2VuZXJhdGVSZW1vdGVUb2tlbigpIGNvbnN0Cit7
CisjaWYgUExBVEZPUk0oTUFDKQorICAgIC8vIFdlIHVzZSB0aGUgcGFyZW50J3Mgd3JhcHBlciBz
byB0aGF0IHRoZSByZW1vdGUgZnJhbWUgYWN0cyBhcyBhIHBhc3MgdGhyb3VnaCBmb3IgdGhlIHJl
bW90ZSB0b2tlbiBicmlkZ2UuCisgICAgTlNEYXRhICpkYXRhID0gW05TQWNjZXNzaWJpbGl0eVJl
bW90ZVVJRWxlbWVudCByZW1vdGVUb2tlbkZvckxvY2FsVUlFbGVtZW50OnBhcmVudE9iamVjdCgp
LT53cmFwcGVyKCldOworICAgIHJldHVybiBzdGQ6OnNwYW4oc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOworI2Vsc2UKKyAgICAvLyBGSVhN
RTogU3VwcG9ydCBpT1MKKyAgICByZXR1cm4geyB9CisjZW5kaWYKK30KKwordm9pZCBBWFJlbW90
ZUZyYW1lOjppbml0aWFsaXplUGxhdGZvcm1FbGVtZW50V2l0aFJlbW90ZVRva2VuKHN0ZDo6c3Bh
bjxjb25zdCB1aW50OF90PiB0b2tlbiwgaW50IHByb2Nlc3NJZGVudGlmaWVyKQoreworI2lmIFBM
QVRGT1JNKE1BQykKKyAgICBtX3Byb2Nlc3NJZGVudGlmaWVyID0gcHJvY2Vzc0lkZW50aWZpZXI7
CisgICAgaWYgKFt3cmFwcGVyKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihhY2Nlc3Np
YmlsaXR5U2V0UHJlc2VudGVyUHJvY2Vzc0lkZW50aWZpZXI6KV0pCisgICAgICAgIFsoaWQpd3Jh
cHBlcigpIGFjY2Vzc2liaWxpdHlTZXRQcmVzZW50ZXJQcm9jZXNzSWRlbnRpZmllcjpwcm9jZXNz
SWRlbnRpZmllcl07CisgICAgTlNEYXRhICp0b2tlbkRhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0
ZXM6dG9rZW4uZGF0YSgpIGxlbmd0aDp0b2tlbi5zaXplKCldOworICAgIG1fcmVtb3RlRnJhbWVQ
bGF0Zm9ybUVsZW1lbnQgPSBhZG9wdE5TKFtbTlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlFbGVtZW50
IGFsbG9jXSBpbml0V2l0aFJlbW90ZVRva2VuOnRva2VuRGF0YV0pOworCisgICAgYXhPYmplY3RD
YWNoZSgpLT5vblJlbW90ZUZyYW1lSW5pdGlhbGl6ZWQoKnRoaXMpOworI2VuZGlmCit9CisKIG5h
bWVzcGFjZSBBY2Nlc3NpYmlsaXR5IHsKIAogUGxhdGZvcm1Sb2xlTWFwIGNyZWF0ZVBsYXRmb3Jt
Um9sZU1hcCgpCkBAIC04OTEsNiArOTE4LDcgQEAgUGxhdGZvcm1Sb2xlTWFwIGNyZWF0ZVBsYXRm
b3JtUm9sZU1hcCgpCiAgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlN1cGVyc2NyaXB0LCBO
U0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKICAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6
TW9kZWwsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAogICAgICAgICB7IEFjY2Vzc2liaWxp
dHlSb2xlOjpTdWdnZXN0aW9uLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAg
eyBBY2Nlc3NpYmlsaXR5Um9sZTo6UmVtb3RlRnJhbWUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9s
ZSB9LAogICAgIH07CiAgICAgUGxhdGZvcm1Sb2xlTWFwIHJvbGVNYXA7CiAgICAgZm9yIChhdXRv
JiByb2xlIDogcm9sZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0K
aW5kZXggNjM1N2ZhN2MyNzFiLi5mMTQyNDVmYzNiNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlckJhc2UubW0KQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgIkFYQ29yZU9i
amVjdC5oIgogI2ltcG9ydCAiQVhJc29sYXRlZE9iamVjdC5oIgogI2ltcG9ydCAiQVhPYmplY3RD
YWNoZS5oIgorI2ltcG9ydCAiQVhSZW1vdGVGcmFtZS5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0
eUFSSUFHcmlkUm93LmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5TGlzdC5oIgogI2ltcG9ydCAi
QWNjZXNzaWJpbGl0eUxpc3RCb3guaCIKQEAgLTI2NSwxMyArMjY2LDEzIEBAIE5TQXJyYXkgKm1h
a2VOU0FycmF5KGNvbnN0IFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJiBjCiAgICAgICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgICAgIGF1dG8gd3Jh
cHBlciA9IGNoaWxkLT53cmFwcGVyKCk7Ci0KICAgICAgICAgLy8gV2Ugd2FudCB0byByZXR1cm4g
dGhlIGF0dGFjaG1lbnQgdmlldyBpbnN0ZWFkIG9mIHRoZSBvYmplY3QgcmVwcmVzZW50aW5nIHRo
ZSBhdHRhY2htZW50LAogICAgICAgICAvLyBvdGhlcndpc2UsIHdlIGdldCBwYWxpbmRyb21lIGVy
cm9ycyBpbiB0aGUgQVggaGllcmFyY2h5LgogICAgICAgICBpZiAoY2hpbGQtPmlzQXR0YWNobWVu
dCgpKSB7CiAgICAgICAgICAgICBpZiAoaWQgYXR0YWNobWVudFZpZXcgPSB3cmFwcGVyLmF0dGFj
aG1lbnRWaWV3KQogICAgICAgICAgICAgICAgIHJldHVybiBhdHRhY2htZW50VmlldzsKLSAgICAg
ICAgfQorICAgICAgICB9IGVsc2UgaWYgKGNoaWxkLT5pc1JlbW90ZUZyYW1lKCkpCisgICAgICAg
ICAgICByZXR1cm4gY2hpbGQtPnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkuZ2V0KCk7CiAK
ICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgfSkuYXV0b3JlbGVhc2UoKTsKQEAgLTM4OSw3
ICszOTAsNyBAQCBOU0FycmF5ICptYWtlTlNBcnJheShjb25zdCBXZWJDb3JlOjpBWENvcmVPYmpl
Y3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgYwogLSAoQk9PTClpc0lzb2xhdGVkT2Jq
ZWN0CiB7CiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKLSAgICBhdXRv
KiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgUmVmUHRyIGJhY2tp
bmdPYmplY3QgPSBkeW5hbWljRG93bmNhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdD4oc2VsZi5iYXNl
VXBkYXRlQmFja2luZ1N0b3JlKTsKICAgICByZXR1cm4gYmFja2luZ09iamVjdCAmJiBiYWNraW5n
T2JqZWN0LT5pc0FYSXNvbGF0ZWRPYmplY3RJbnN0YW5jZSgpOwogI2Vsc2UKICAgICByZXR1cm4g
Tk87CkBAIC01MjMsNyArNTI0LDcgQEAgc3RhdGljIHZvaWQgY29udmVydFBhdGhUb1NjcmVlblNw
YWNlRnVuY3Rpb24oUGF0aENvbnZlcnNpb25JbmZvJiBjb252ZXJzaW9uLCBjb24KIAogLSAoQ0dS
ZWN0KWNvbnZlcnRSZWN0VG9TcGFjZTooY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JilyZWN0IHNw
YWNlOihBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlKXNwYWNlCiB7Ci0gICAgYXV0byogYmFj
a2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0ciBiYWNraW5nT2Jq
ZWN0ID0gZHluYW1pY0Rvd25jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3Q+KHNlbGYuYmFzZVVwZGF0
ZUJhY2tpbmdTdG9yZSk7CiAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQogICAgICAgICByZXR1cm4g
Q0dSZWN0WmVybzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRl
eCA2YzVlNmI3YWNkOWMuLjc1MDJkOWEwZTQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJNYWMubW0KQEAgLTM0LDYgKzM0LDcgQEAKICNpbXBvcnQgIkFYSXNvbGF0ZWRPYmpl
Y3QuaCIKICNpbXBvcnQgIkFYTG9nZ2VyLmgiCiAjaW1wb3J0ICJBWE9iamVjdENhY2hlLmgiCisj
aW1wb3J0ICJBWFJlbW90ZUZyYW1lLmgiCiAjaW1wb3J0ICJBWFRleHRNYXJrZXIuaCIKICNpbXBv
cnQgIkFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUxh
YmVsLmgiCkBAIC00NzksNiArNDgwLDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogI2Rl
ZmluZSBOU0FjY2Vzc2liaWxpdHlUZXh0SW5wdXRNYXJrZWRUZXh0TWFya2VyUmFuZ2VBdHRyaWJ1
dGUgQCJBWFRleHRJbnB1dE1hcmtlZFRleHRNYXJrZXJSYW5nZSIKICNlbmRpZgogCisjaWZuZGVm
IGtBWENvbnZlcnRSZWxhdGl2ZUZyYW1lUGFyYW1ldGVyaXplZEF0dHJpYnV0ZQorI2RlZmluZSBr
QVhDb252ZXJ0UmVsYXRpdmVGcmFtZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgQCJBWENvbnZlcnRS
ZWxhdGl2ZUZyYW1lIgorI2VuZGlmCisKIEBpbXBsZW1lbnRhdGlvbiBXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlcgogCiAtICh2b2lkKWRldGFjaApAQCAtNjkyLDcgKzY5Nyw3IEBAIHN0YXRp
YyBSZXRhaW5QdHI8QVhUZXh0TWFya2VyUmVmPiBwcmV2aW91c1RleHRNYXJrZXIoQVhPYmplY3RD
YWNoZSogY2FjaGUsIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAg
IGF1dG8qIGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHI8
QVhDb3JlT2JqZWN0PiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CiAgICAg
aWYgKCFiYWNraW5nT2JqZWN0KQogICAgICAgICByZXR1cm4gbmlsOwogCkBAIC0xMjU2LDcgKzEy
NjEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKIAogLSAoTlNBcnJh
eSAqKXJlbmRlcldpZGdldENoaWxkcmVuCiB7Ci0gICAgYXV0byogYmFja2luZ09iamVjdCA9IHNl
bGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+IGJhY2tpbmdPYmpl
Y3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKICAgICBpZiAoIWJhY2tpbmdPYmplY3QgfHwgIWJh
Y2tpbmdPYmplY3QtPmlzV2lkZ2V0KCkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTEyNzks
NyArMTI4NCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAtIChpZCly
ZW1vdGVBY2Nlc3NpYmlsaXR5UGFyZW50T2JqZWN0CiB7Ci0gICAgYXV0byogYmFja2luZ09iamVj
dCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+IGJhY2tp
bmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKICAgICByZXR1cm4gYmFja2luZ09iamVj
dCA/IGJhY2tpbmdPYmplY3QtPnJlbW90ZVBhcmVudE9iamVjdCgpIDogbmlsOwogfQogCkBAIC0x
Mjk2LDcgKzEzMDEsNyBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0VG9WZWN0b3IoTlNBcnJheSogYXJy
YXksIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaAogCiAtIChBWFRleHRNYXJr
ZXJSYW5nZVJlZilzZWxlY3RlZFRleHRNYXJrZXJSYW5nZQogewotICAgIGF1dG8qIGJhY2tpbmdP
YmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBi
YWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CiAgICAgaWYgKCFiYWNraW5nT2Jq
ZWN0KQogICAgICAgICByZXR1cm4gbmlsOwogCkBAIC0xMzY2LDEyICsxMzcxLDE4IEBAIHN0YXRp
YyB2b2lkIFdlYlRyYW5zZm9ybUNHUGF0aFRvTlNCZXppZXJQYXRoKHZvaWQqIGluZm8sIGNvbnN0
IENHUGF0aEVsZW1lbnQgKmVsCiAKIC0gKE5TU3RyaW5nKilyb2xlCiB7CisgICAgUmVmUHRyPEFY
Q29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIGlm
ICghYmFja2luZ09iamVjdCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKwogQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICBpZiAoc2VsZi5heEJhY2tpbmdPYmplY3QtPmlzQXR0
YWNobWVudCgpKQorICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkKICAgICAg
ICAgcmV0dXJuIFtbc2VsZiBhdHRhY2htZW50Vmlld10gYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOk5TQWNjZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGVdOworICAgIGlmIChiYWNraW5nT2JqZWN0
LT5pc1JlbW90ZUZyYW1lKCkpCisgICAgICAgIHJldHVybiBbYmFja2luZ09iamVjdC0+cmVtb3Rl
RnJhbWVQbGF0Zm9ybUVsZW1lbnQoKS5nZXQoKSBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
TlNBY2Nlc3NpYmlsaXR5Um9sZUF0dHJpYnV0ZV07CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19FTkQKIAotICAgIE5TU3RyaW5nICpzdHJpbmcgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+
cm9sZVBsYXRmb3JtU3RyaW5nKCk7CisgICAgTlNTdHJpbmcgKnN0cmluZyA9IGJhY2tpbmdPYmpl
Y3QtPnJvbGVQbGF0Zm9ybVN0cmluZygpOwogICAgIGlmIChzdHJpbmcubGVuZ3RoKQogICAgICAg
ICByZXR1cm4gc3RyaW5nOwogICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlVbmtub3duUm9sZTsK
QEAgLTEzNzksNyArMTM5MCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAog
CiAtIChCT09MKWlzRW1wdHlHcm91cAogewotICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBzZWxm
LmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBiYWNraW5nT2JqZWN0
ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CiAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKQEAgLTEzODgsNiArMTM5OSw5IEBAIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORAogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIAorICAgIGlm
IChiYWNraW5nT2JqZWN0LT5pc1JlbW90ZUZyYW1lKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KwogICAgIHJldHVybiBbW3NlbGYgcm9sZV0gaXNFcXVhbDpOU0FjY2Vzc2liaWxpdHlHcm91cFJv
bGVdCiAgICAgICAgICYmIGJhY2tpbmdPYmplY3QtPmNoaWxkcmVuKCkuaXNFbXB0eSgpCiAgICAg
ICAgICYmICFbW3NlbGYgcmVuZGVyV2lkZ2V0Q2hpbGRyZW5dIGNvdW50XTsKQEAgLTEzOTYsNyAr
MTQxMCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KIC0gKE5TU3RyaW5nKilzdWJyb2xlCiB7Ci0gICAgYXV0
byogYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0cjxBWENv
cmVPYmplY3Q+IGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKICAgICBpZiAo
IWJhY2tpbmdPYmplY3QpCiAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTE0MTMsNyArMTQyNyw3
IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAtIChOU1N0cmluZyopcm9s
ZURlc2NyaXB0aW9uCiB7Ci0gICAgYXV0byogYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5n
T2JqZWN0OworICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+IGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4
QmFja2luZ09iamVjdDsKICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCiAgICAgICAgIHJldHVybiBu
aWw7CiAKQEAgLTE0MjEsNiArMTQzNSw4IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0JFR0lOCiAgICAgLy8gYXR0YWNobWVudHMgaGF2ZSB0aGUgQVhJbWFnZSByb2xlLCBidXQgYSBk
aWZmZXJlbnQgc3Vicm9sZQogICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkK
ICAgICAgICAgcmV0dXJuIFtbc2VsZiBhdHRhY2htZW50Vmlld10gYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJvbGVEZXNjcmlwdGlvbkF0dHJpYnV0ZV07CisgICAg
aWYgKGJhY2tpbmdPYmplY3QtPmlzUmVtb3RlRnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIFtiYWNr
aW5nT2JqZWN0LT5yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpLmdldCgpIGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRpb25BdHRyaWJ1dGVd
OwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBTdHJpbmcgcm9sZURl
c2NyaXB0aW9uID0gYmFja2luZ09iamVjdC0+cm9sZURlc2NyaXB0aW9uKCk7CkBAIC0xNDczLDYg
KzE0ODksMjggQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgcmV0dXJu
IGF4U2Nyb2xsVmlldyA/IFtheFNjcm9sbFZpZXctPnBsYXRmb3JtV2lkZ2V0KCkgd2luZG93XSA6
IG5pbDsKIH0KIAorLSAoTlNBcnJheSAqKV90cmFuc2Zvcm1TcGVjaWFsQ2hpbGRyZW5DYXNlczoo
UmVmUHRyPEFYQ29yZU9iamVjdD4pYmFja2luZ09iamVjdAoreworI2lmIEVOQUJMRShNT0RFTF9F
TEVNRU5UKQorICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc01vZGVsKCkpIHsKKyAgICAgICAgYXV0
byBtb2RlbENoaWxkcmVuID0gYmFja2luZ09iamVjdC0+bW9kZWxFbGVtZW50Q2hpbGRyZW4oKTsK
KyAgICAgICAgaWYgKG1vZGVsQ2hpbGRyZW4uc2l6ZSgpKSB7CisgICAgICAgICAgICByZXR1cm4g
Y3JlYXRlTlNBcnJheShXVEZNb3ZlKG1vZGVsQ2hpbGRyZW4pLCBbXSAoYXV0byYmIGNoaWxkKSAt
PiBpZCB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkLmdldCgpOworICAgICAgICAgICAg
fSkuYXV0b3JlbGVhc2UoKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCisgICAgY29uc3Qg
YXV0byYgY2hpbGRyZW4gPSBiYWNraW5nT2JqZWN0LT5jaGlsZHJlbigpOworICAgIGlmICghY2hp
bGRyZW4uc2l6ZSgpKSB7CisgICAgICAgIGlmIChOU0FycmF5ICpjaGlsZHJlbiA9IFtzZWxmIHJl
bmRlcldpZGdldENoaWxkcmVuXSkKKyAgICAgICAgICAgIHJldHVybiBjaGlsZHJlbjsKKyAgICB9
CisKKyAgICByZXR1cm4gbmlsOworfQorCiAvLyBGSVhNRTogc3BsaXQgdXAgdGhpcyBmdW5jdGlv
biBpbiBhIGJldHRlciB3YXkuCiAvLyBzdWdnZXN0aW9uczogVXNlIGEgaGFzaCB0YWJsZSB0aGF0
IG1hcHMgYXR0cmlidXRlIG5hbWVzIHRvIGZ1bmN0aW9uIGNhbGxzLAogLy8gb3IgbWF5YmUgcG9p
bnRlcnMgdG8gbWVtYmVyIGZ1bmN0aW9ucwpAQCAtMTUzMSwyMiArMTU2OSw5IEBAIEFMTE9XX0RF
UFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIH0KIAogICAgIGlmIChbYXR0cmlidXRl
TmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGVdIHx8
IFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbklu
TmF2aWdhdGlvbk9yZGVyQXR0cmlidXRlXSkgewotI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQot
ICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNNb2RlbCgpKSB7Ci0gICAgICAgICAgICBhdXRv
IG1vZGVsQ2hpbGRyZW4gPSBiYWNraW5nT2JqZWN0LT5tb2RlbEVsZW1lbnRDaGlsZHJlbigpOwot
ICAgICAgICAgICAgaWYgKG1vZGVsQ2hpbGRyZW4uc2l6ZSgpKSB7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIGNyZWF0ZU5TQXJyYXkoV1RGTW92ZShtb2RlbENoaWxkcmVuKSwgW10gKGF1dG8mJiBj
aGlsZCkgLT4gaWQgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGQuZ2V0KCk7Ci0g
ICAgICAgICAgICAgICAgfSkuYXV0b3JlbGVhc2UoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotI2VuZGlmCi0KLSAgICAgICAgY29uc3QgYXV0byYgY2hpbGRyZW4gPSBiYWNraW5nT2JqZWN0
LT5jaGlsZHJlbigpOwotICAgICAgICBpZiAoY2hpbGRyZW4uaXNFbXB0eSgpKSB7Ci0gICAgICAg
ICAgICBpZiAoTlNBcnJheSAqd2lkZ2V0Q2hpbGRyZW4gPSBbc2VsZiByZW5kZXJXaWRnZXRDaGls
ZHJlbl0pCi0gICAgICAgICAgICAgICAgcmV0dXJuIHdpZGdldENoaWxkcmVuOwotICAgICAgICB9
CisgICAgICAgIE5TQXJyYXkgKnNwZWNpYWxDaGlsZHJlbiA9IFtzZWxmIF90cmFuc2Zvcm1TcGVj
aWFsQ2hpbGRyZW5DYXNlczpiYWNraW5nT2JqZWN0XTsKKyAgICAgICAgaWYgKHNwZWNpYWxDaGls
ZHJlbi5jb3VudCkKKyAgICAgICAgICAgIHJldHVybiBzcGVjaWFsQ2hpbGRyZW47CiAKICAgICAg
ICAgLy8gVGhlIHRyZWUncyAoQVhPdXRsaW5lKSBjaGlsZHJlbiBhcmUgc3VwcG9zZWQgdG8gYmUg
aXRzIHJvd3MgYW5kIGNvbHVtbnMuCiAgICAgICAgIC8vIFRoZSBBUklBIHNwZWMgZG9lc24ndCBo
YXZlIGNvbHVtbnMsIHNvIHdlIGp1c3QgbmVlZCByb3dzLgpAQCAtMTU1Nyw3ICsxNTgyLDcgQEAg
QUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIGlmIChiYWNraW5n
T2JqZWN0LT5pc1RyZWVJdGVtKCkpCiAgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFj
a2luZ09iamVjdC0+YXJpYVRyZWVJdGVtQ29udGVudCgpKTsKIAotICAgICAgICByZXR1cm4gbWFr
ZU5TQXJyYXkoY2hpbGRyZW4pOworICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09i
amVjdC0+Y2hpbGRyZW4oKSk7CiAgICAgfQogCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1
YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZV0pIHsK
QEAgLTE3MTMsMTYgKzE3MzgsMTQgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNf
RU5ECiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmls
aXR5RW5hYmxlZEF0dHJpYnV0ZV0pCiAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0
aEJvb2w6IGJhY2tpbmdPYmplY3QtPmlzRW5hYmxlZCgpXTsKIAotICAgIGlmIChbYXR0cmlidXRl
TmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVNpemVBdHRyaWJ1dGVdKSB7Ci0g
ICAgICAgIGF1dG8gc2l6ZSA9IGJhY2tpbmdPYmplY3QtPnNpemUoKTsKLSAgICAgICAgcmV0dXJu
IFtOU1ZhbHVlIHZhbHVlV2l0aFNpemU6TlNNYWtlU2l6ZShzaXplLndpZHRoKCksIHNpemUuaGVp
Z2h0KCkpXTsKLSAgICB9CisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpO
U0FjY2Vzc2liaWxpdHlTaXplQXR0cmlidXRlXSkKKyAgICAgICAgcmV0dXJuIFtOU1ZhbHVlIHZh
bHVlV2l0aFNpemU6KENHU2l6ZSliYWNraW5nT2JqZWN0LT5zaXplKCldOwogCiAgICAgaWYgKFth
dHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlQcmltYXJ5U2NyZWVu
SGVpZ2h0QXR0cmlidXRlXSkKICAgICAgICAgcmV0dXJuIEAoYmFja2luZ09iamVjdC0+cHJpbWFy
eVNjcmVlblJlY3QoKS5oZWlnaHQoKSk7CiAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVh
bFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVBvc2l0aW9uQXR0cmlidXRlXSkKLSAgICAgICAgcmV0
dXJuIEAoQ0dQb2ludChiYWNraW5nT2JqZWN0LT5zY3JlZW5SZWxhdGl2ZVBvc2l0aW9uKCkpKTsK
KyAgICAgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aFBvaW50OihDR1BvaW50KWJhY2tpbmdP
YmplY3QtPnNjcmVlblJlbGF0aXZlUG9zaXRpb24oKV07CiAKICAgICBpZiAoW2F0dHJpYnV0ZU5h
bWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVBhdGhBdHRyaWJ1dGVdKQogICAgICAg
ICByZXR1cm4gW3NlbGYgcGF0aF07CkBAIC0yMjM3LDYgKzIyNjAsMTAgQEAgQUxMT1dfREVQUkVD
QVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIHJldHVybiByYW5nZSA/IHJhbmdlLnBs
YXRmb3JtRGF0YSgpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKSA6IG5pbDsKICAgICB9CiAKKyAgICAv
LyBWb2ljZU92ZXIgcHJvcGVydHkgdG8gaWdub3JlIGNlcnRhaW4gZ3JvdXBzLgorICAgIGlmIChb
YXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWEF1dG9JbnRlcmFjdGFibGUiXSkKKyAg
ICAgICAgcmV0dXJuIEAoYmFja2luZ09iamVjdC0+aXNSZW1vdGVGcmFtZSgpKTsKKwogICAgIC8v
IFVzZWQgYnkgTGF5b3V0VGVzdHMgb25seSwgbm90IGJ5IEFUIGNsaWVudHMuCiAgICAgaWYgKFVO
TElLRUxZKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpAIkFYQVJJQVJvbGUiXSkpCiAg
ICAgICAgIHJldHVybiBiYWNraW5nT2JqZWN0LT5jb21wdXRlZFJvbGVTdHJpbmcoKTsKQEAgLTIz
MzAsNyArMjM1Nyw4IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAg
ICAgICBpZiAoYXhPYmplY3QtPmlzQXR0YWNobWVudCgpKSB7CiAgICAgICAgICAgICBpZiAoaWQg
YXR0YWNobWVudFZpZXcgPSBbYXhPYmplY3QtPndyYXBwZXIoKSBhdHRhY2htZW50Vmlld10pCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGF0dGFjaG1lbnRWaWV3OwotICAgICAgICB9CisgICAgICAg
IH0gZWxzZSBpZiAoYXhPYmplY3QtPmlzUmVtb3RlRnJhbWUoKSkKKyAgICAgICAgICAgIHJldHVy
biBheE9iamVjdC0+cmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKS5nZXQoKTsKIAogICAgICAg
ICAvLyBPbmx5IGNhbGwgb3V0IHRvIHRoZSBtYWluLXRocmVhZCBpZiB0aGlzIG9iamVjdCBoYXMg
YSBiYWNraW5nIHdpZGdldCB0byBxdWVyeS4KICAgICAgICAgaWYgKGF4T2JqZWN0LT5pc1dpZGdl
dCgpKSB7CkBAIC0yNTA3LDYgKzI1MzUsMTAgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRB
VElPTlNfRU5ECiAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzV2ViQXJlYSgpKQogICAgICAgICBy
ZXR1cm4gd2ViQXJlYVBhcmFtQXR0cnM7CiAKKyAgICAvLyBUaGUgb2JqZWN0IHRoYXQgc2VydmVz
IHVwIHRoZSByZW1vdGUgZnJhbWUgYWxzbyBpcyB0aGUgb25lIHRoYXQgZG9lcyB0aGUgZnJhbWUg
Y29udmVyc2lvbi4KKyAgICBpZiAoYmFja2luZ09iamVjdC0+aGFzUmVtb3RlRnJhbWVDaGlsZCgp
KQorICAgICAgICByZXR1cm4gW3BhcmFtQXR0cnMgYXJyYXlCeUFkZGluZ09iamVjdDprQVhDb252
ZXJ0UmVsYXRpdmVGcmFtZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdOworCiAgICAgcmV0dXJuIHBh
cmFtQXR0cnM7CiB9CiAKQEAgLTI1NzgsNyArMjYxMCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAogewogICAgIEFYVFJBQ0UoIldlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyIGFjY2Vzc2liaWxpdHlQZXJmb3JtU2hvd01lbnVBY3Rpb24iX3MpOwogCi0gICAgYXV0byog
YmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0cjxBWENvcmVP
YmplY3Q+IGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKICAgICBpZiAoIWJh
Y2tpbmdPYmplY3QpIHsKICAgICAgICAgQVhMT0cobWFrZVN0cmluZygiTm8gYmFja2luZ09iamVj
dCBmb3Igd3JhcHBlciAiLCBoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHNlbGYpKSkp
OwogICAgICAgICByZXR1cm47CkBAIC0yODIyLDcgKzI4NTQsNyBAQCBBTExPV19ERVBSRUNBVEVE
X0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBpZiAoIXJhbmdlLmxlbmd0aCkKICAgICAgICAgcmV0
dXJuIG5pbDsKIAotICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVj
dDsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tp
bmdPYmplY3Q7CiAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQogICAgICAgICByZXR1cm4gbmlsOwog
CkBAIC0zMTc3LDYgKzMyMDksMTggQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNf
RU5ECiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3aWRnZXRDaGlsZHJlbjsKICAgICAgICAg
ICAgICAgICBjcml0ZXJpYS5yZXN1bHRzTGltaXQgLT0gW3dpZGdldENoaWxkcmVuIGNvdW50XTsK
ICAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChiYWNraW5nT2JqZWN0LT5pc1JlbW90
ZUZyYW1lKCkKKyAgICAgICAgICAgICYmIGNyaXRlcmlhLnNlYXJjaEtleXMuY29udGFpbnMoQWNj
ZXNzaWJpbGl0eVNlYXJjaEtleTo6QW55VHlwZSkKKyAgICAgICAgICAgICYmICghY3JpdGVyaWEu
dmlzaWJsZU9ubHkgfHwgYmFja2luZ09iamVjdC0+aXNWaXNpYmxlKCkpKSB7CisgICAgICAgICAg
ICBOU0FycmF5ICpyZW1vdGVGcmFtZUNoaWxkcmVuID0gW3NlbGYgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXTsKKyAgICAgICAgICAg
IEFTU0VSVChyZW1vdGVGcmFtZUNoaWxkcmVuLmNvdW50ID09IDEpOworICAgICAgICAgICAgaWYg
KHJlbW90ZUZyYW1lQ2hpbGRyZW4uY291bnQgPT0gMSkgeworICAgICAgICAgICAgICAgIE5TVUlu
dGVnZXIgaW5jbHVkZWRDaGlsZHJlbkNvdW50ID0gc3RkOjptaW4oW3JlbW90ZUZyYW1lQ2hpbGRy
ZW4gY291bnRdLCBOU1VJbnRlZ2VyKGNyaXRlcmlhLnJlc3VsdHNMaW1pdCkpOworICAgICAgICAg
ICAgICAgIHdpZGdldENoaWxkcmVuID0gW3JlbW90ZUZyYW1lQ2hpbGRyZW4gc3ViYXJyYXlXaXRo
UmFuZ2U6TlNNYWtlUmFuZ2UoMCwgaW5jbHVkZWRDaGlsZHJlbkNvdW50KV07CisgICAgICAgICAg
ICAgICAgaWYgKFt3aWRnZXRDaGlsZHJlbiBjb3VudF0gPj0gY3JpdGVyaWEucmVzdWx0c0xpbWl0
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVtb3RlRnJhbWVDaGlsZHJlbjsKKyAgICAg
ICAgICAgICAgICBjcml0ZXJpYS5yZXN1bHRzTGltaXQgLT0gW3dpZGdldENoaWxkcmVuIGNvdW50
XTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciByZXN1bHRzOwpAQCAtMzY2OSw2ICszNzEz
LDExIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIGlmIChVTkxJ
S0VMWShbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpfQVhUZXh0TWFya2VyUmFuZ2VGb3JOU1Jh
bmdlQXR0cmlidXRlXSkpCiAgICAgICAgIHJldHVybiBiYWNraW5nT2JqZWN0LT50ZXh0TWFya2Vy
UmFuZ2VGb3JOU1JhbmdlKHJhbmdlKS5wbGF0Zm9ybURhdGEoKS5icmlkZ2luZ0F1dG9yZWxlYXNl
KCk7CiAKKyAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6a0FYQ29udmVydFJlbGF0
aXZlRnJhbWVQYXJhbWV0ZXJpemVkQXR0cmlidXRlXSkgeworICAgICAgICBhdXRvKiBwYXJlbnQg
PSBiYWNraW5nT2JqZWN0LT5wYXJlbnRPYmplY3QoKTsKKyAgICAgICAgcmV0dXJuIHBhcmVudCA/
IFtOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6cGFyZW50LT5jb252ZXJ0RnJhbWVUb1NwYWNlKEZsb2F0
UmVjdChyZWN0KSwgQWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZTo6UGFnZSldIDogbmlsOwor
ICAgIH0KKwogICAgIC8vIFRoZXJlIGFyZSBzb21lIHBhcmFtZXRlcnMgdGhhdCBzdXBlciBoYW5k
bGVzIHRoYXQgYXJlIG5vdCBleHBsaWNpdGx5IHJldHVybmVkIGJ5IHRoZSBsaXN0IG9mIHRoZSBl
bGVtZW50J3MgYXR0cmlidXRlcy4KICAgICAvLyBJbiB0aGF0IGNhc2UgaXQgbXVzdCBiZSBwYXNz
ZWQgdG8gc3VwZXIuCiAgICAgcmV0dXJuIFtzdXBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6YXR0cmlidXRlIGZvclBhcmFtZXRlcjpwYXJhbWV0ZXJdOwpAQCAtMzcyMiw4ICszNzcxLDEw
IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICBpZiAoIWNo
aWxkKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIFdlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyICpjaGlsZFdyYXBwZXIgPSBjaGlsZC0+d3JhcHBlcigpOwotICAgICAgICBpZiAo
Y2hpbGRXcmFwcGVyID09IHRhcmdldENoaWxkIHx8IChjaGlsZC0+aXNBdHRhY2htZW50KCkgJiYg
W2NoaWxkV3JhcHBlciBhdHRhY2htZW50Vmlld10gPT0gdGFyZ2V0Q2hpbGQpKQorICAgICAgICBp
ZiAoY2hpbGRXcmFwcGVyID09IHRhcmdldENoaWxkIHx8IChjaGlsZC0+aXNBdHRhY2htZW50KCkg
JiYgW2NoaWxkV3JhcHBlciBhdHRhY2htZW50Vmlld10gPT0gdGFyZ2V0Q2hpbGQpCisgICAgICAg
ICAgICB8fCAoY2hpbGQtPmlzUmVtb3RlRnJhbWUoKSAmJiBjaGlsZC0+cmVtb3RlRnJhbWVQbGF0
Zm9ybUVsZW1lbnQoKSA9PSB0YXJnZXRDaGlsZCkpIHsKICAgICAgICAgICAgIHJldHVybiBpOwor
ICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBOU05vdEZvdW5kOwogfQpAQCAtMzc0MCw3ICsz
NzkxLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBpZiAoW2F0
dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGVd
KSB7CiAgICAgICAgIC8vIFRyZWUgaXRlbXMgb2JqZWN0IHJldHVybnMgYSBkaWZmZXJlbnQgc2V0
IG9mIGNoaWxkcmVuIHRoYW4gdGhvc2UgdGhhdCBhcmUgaW4gY2hpbGRyZW4oKQogICAgICAgICAv
LyBiZWNhdXNlIGFuIEFYT3V0bGluZSAodGhlIG1hYyByb2xlIGlzIGJlY29tZXMpIGhhcyBzb21l
IG9kZCBzdGlwdWxhdGlvbnMuCi0gICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc1RyZWUoKSB8
fCBiYWNraW5nT2JqZWN0LT5pc1RyZWVJdGVtKCkpCisgICAgICAgIGlmIChiYWNraW5nT2JqZWN0
LT5pc1RyZWUoKSB8fCBiYWNraW5nT2JqZWN0LT5pc1RyZWVJdGVtKCkgfHwgYmFja2luZ09iamVj
dC0+aXNSZW1vdGVGcmFtZSgpKQogICAgICAgICAgICAgcmV0dXJuIFtbc2VsZiBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGVdIGNvdW50
XTsKIAogICAgICAgICBhdXRvIGNoaWxkcmVuU2l6ZSA9IGJhY2tpbmdPYmplY3QtPmNoaWxkcmVu
KCkuc2l6ZSgpOwpAQCAtMzc3NiwxNiArMzgyNyw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0VORAogCiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNz
aWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXSkgewogICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+
Y2hpbGRyZW4oKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIE5TQXJyYXkgKmNoaWxkcmVuID0g
bmlsOwotI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQotICAgICAgICAgICAgaWYgKGJhY2tpbmdP
YmplY3QtPmlzTW9kZWwoKSkgewotICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gY3JlYXRlTlNB
cnJheShiYWNraW5nT2JqZWN0LT5tb2RlbEVsZW1lbnRDaGlsZHJlbigpLCBbXSAoYXV0byYmIGNo
aWxkKSAtPiBpZCB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZC5nZXQoKTsKLSAg
ICAgICAgICAgICAgICB9KS5hdXRvcmVsZWFzZSgpOwotICAgICAgICAgICAgfSBlbHNlCi0jZW5k
aWYKLSAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtzZWxmIHJlbmRlcldpZGdldENoaWxkcmVu
XTsKLSAgICAgICAgICAgIAorICAgICAgICAgICAgTlNBcnJheSAqY2hpbGRyZW4gPSBbc2VsZiBf
dHJhbnNmb3JtU3BlY2lhbENoaWxkcmVuQ2FzZXM6YmFja2luZ09iamVjdF07CiAgICAgICAgICAg
ICBpZiAoIWNoaWxkcmVuKQogICAgICAgICAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTM4MTYs
OCArMzg1OCwxMyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgICAg
ICAgICAgLy8gVGhlIGF0dGFjaG1lbnQgdmlldyBzaG91bGQgYmUgcmV0dXJuZWQsIG90aGVyd2lz
ZSBBWCBwYWxpbmRyb21lIGVycm9ycyBvY2N1ci4KICAgICAgICAgICAgIGlkIGF0dGFjaG1lbnRW
aWV3ID0gbmlsOwotICAgICAgICAgICAgaWYgKFt3cmFwcGVyIGlzS2luZE9mQ2xhc3M6W1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGNsYXNzXV0gJiYgd3JhcHBlci5heEJhY2tpbmdPYmpl
Y3QgJiYgd3JhcHBlci5heEJhY2tpbmdPYmplY3QtPmlzQXR0YWNobWVudCgpKQotICAgICAgICAg
ICAgICAgIGF0dGFjaG1lbnRWaWV3ID0gW3dyYXBwZXIgYXR0YWNobWVudFZpZXddOworICAgICAg
ICAgICAgaWYgKFt3cmFwcGVyIGlzS2luZE9mQ2xhc3M6W1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyIGNsYXNzXV0gJiYgd3JhcHBlci5heEJhY2tpbmdPYmplY3QpIHsKKyAgICAgICAgICAg
ICAgICBpZiAod3JhcHBlci5heEJhY2tpbmdPYmplY3QtPmlzQXR0YWNobWVudCgpKQorICAgICAg
ICAgICAgICAgICAgICBhdHRhY2htZW50VmlldyA9IFt3cmFwcGVyIGF0dGFjaG1lbnRWaWV3XTsK
KyAgICAgICAgICAgICAgICBlbHNlIGlmICh3cmFwcGVyLmF4QmFja2luZ09iamVjdC0+aXNSZW1v
dGVGcmFtZSgpKQorICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50VmlldyA9IHdyYXBwZXIu
YXhCYWNraW5nT2JqZWN0LT5yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpLmdldCgpOworICAg
ICAgICAgICAgfQorCiAgICAgICAgICAgICBbc3ViYXJyYXkgYWRkT2JqZWN0OmF0dGFjaG1lbnRW
aWV3ID8gYXR0YWNobWVudFZpZXcgOiB3cmFwcGVyXTsKICAgICAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDI1OGMxNGI4NmE4Yi4uNTcxN2FkZTJhNDUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtMTA4NSw2ICsxMDg1
LDExIEBAIFJlbW90ZUFYT2JqZWN0UmVmIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmFjY2Vzc2li
aWxpdHlSZW1vdGVPYmplY3QoKQogICAgIHJldHVybiBudWxscHRyOwogfQogCitJbnRQb2ludCBF
bXB0eUZyYW1lTG9hZGVyQ2xpZW50OjphY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKQor
eworICAgIHJldHVybiB7IH07Cit9CisKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRF
RF9UUkVFKQogdm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpzZXRBWElzb2xhdGVkVHJlZVJv
b3QoV2ViQ29yZTo6QVhDb3JlT2JqZWN0KikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDA5OGNlNThkMTExOS4uNDY3MmRlMjk4NTMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgK
QEAgLTE4NCw2ICsxODQsNyBAQCBwcml2YXRlOgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
UmVtb3RlQVhPYmplY3RSZWYgYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpIGZpbmFsOworICAg
IEludFBvaW50IGFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCgpIGZpbmFsOwogI2lmIEVO
QUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAgICAgdm9pZCBzZXRBWElzb2xhdGVk
VHJlZVJvb3QoV2ViQ29yZTo6QVhDb3JlT2JqZWN0KikgZmluYWw7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTG9jYWxGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGIyZDU2ZjA1
MGFlOS4uMDBkM2FkNWUyY2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9j
YWxGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2NhbEZy
YW1lTG9hZGVyQ2xpZW50LmgKQEAgLTI5MCw2ICsyOTAsNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgLy8gQWxsb3cgYW4gYWNjZXNzaWJpbGl0eSBvYmplY3QgdG8gcmV0cmll
dmUgYSBGcmFtZSBwYXJlbnQgaWYgdGhlcmUncyBubyBQbGF0Zm9ybVdpZGdldC4KICAgICB2aXJ0
dWFsIFJlbW90ZUFYT2JqZWN0UmVmIGFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSA9IDA7Cisg
ICAgdmlydHVhbCBJbnRQb2ludCBhY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKSA9IDA7
CiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKICAgICB2aXJ0dWFsIHZv
aWQgc2V0QVhJc29sYXRlZFRyZWVSb290KEFYQ29yZU9iamVjdCopID0gMDsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKaW5kZXggNTkzMzU1ZWJlY2Q4Li4wYjFmYzBhYzM4YzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcApAQCAtMjIwMyw4ICsyMjAzLDE1IEBAIGJvb2wgUGFnZTo6c2hvdWxkVXBkYXRlQWNj
ZXNzaWJpbGl0eVJlZ2lvbnMoKSBjb25zdAogICAgIEFTU0VSVChtX2xhc3RSZW5kZXJpbmdVcGRh
dGVUaW1lc3RhbXAgPj0gbV9sYXN0QWNjZXNzaWJpbGl0eU9iamVjdFJlZ2lvbnNVcGRhdGUpOwog
ICAgIGlmICgobV9sYXN0UmVuZGVyaW5nVXBkYXRlVGltZXN0YW1wIC0gbV9sYXN0QWNjZXNzaWJp
bGl0eU9iamVjdFJlZ2lvbnNVcGRhdGUpIDwgdXBkYXRlSW50ZXJ2YWwpIHsKICAgICAgICAgLy8g
V2UndmUgYWxyZWFkeSB1cGRhdGVkIGFjY2Vzc2liaWxpdHkgb2JqZWN0IHJlY3RzIHJlY2VudGx5
LCBzbyBza2lwIHRoaXMgdXBkYXRlIGFuZCBzY2hlZHVsZSBhbm90aGVyIGZvciBsYXRlci4KLSAg
ICAgICAgYXV0byogbG9jYWxNYWluRnJhbWUgPSBkeW5hbWljRG93bmNhc3Q8TG9jYWxGcmFtZT4o
bWFpbkZyYW1lKCkpOwotICAgICAgICBSZWZQdHIgbWFpbkRvY3VtZW50ID0gbG9jYWxNYWluRnJh
bWUgPyBsb2NhbE1haW5GcmFtZS0+ZG9jdW1lbnQoKSA6IG51bGxwdHI7CisKKyAgICAgICAgUmVm
UHRyPERvY3VtZW50PiBtYWluRG9jdW1lbnQgPSBudWxscHRyOworICAgICAgICBpZiAoYXV0byog
bG9jYWxNYWluRnJhbWUgPSBkeW5hbWljRG93bmNhc3Q8TG9jYWxGcmFtZT4obWFpbkZyYW1lKCkp
KQorICAgICAgICAgICAgbWFpbkRvY3VtZW50ID0gbG9jYWxNYWluRnJhbWUgPyBsb2NhbE1haW5G
cmFtZS0+ZG9jdW1lbnQoKSA6IG51bGxwdHI7CisgICAgICAgIGVsc2UgaWYgKGF1dG8qIHJlbW90
ZUZyYW1lID0gZHluYW1pY0Rvd25jYXN0PFJlbW90ZUZyYW1lPihtYWluRnJhbWUoKSkpIHsKKyAg
ICAgICAgICAgIGlmIChhdXRvKiBvd25lciA9IHJlbW90ZUZyYW1lLT5vd25lckVsZW1lbnQoKSkK
KyAgICAgICAgICAgICAgICBtYWluRG9jdW1lbnQgPSAmKG93bmVyLT5kb2N1bWVudCgpKTsKKyAg
ICAgICAgfQorCiAgICAgICAgIC8vIElmIGFjY2Vzc2liaWxpdHkgaXMgZW5hYmxlZCBhbmQgd2Ug
aGF2ZSBhIG1haW4gZG9jdW1lbnQsIHRoYXQgZG9jdW1lbnQgc2hvdWxkIGhhdmUgYW4gQVggb2Jq
ZWN0IGNhY2hlLgogICAgICAgICBBU1NFUlQoIW1haW5Eb2N1bWVudCB8fCBtYWluRG9jdW1lbnQt
PmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpKTsKICAgICAgICAgaWYgKENoZWNrZWRQdHIgdG9wQXhP
YmplY3RDYWNoZSA9IG1haW5Eb2N1bWVudCA/IG1haW5Eb2N1bWVudC0+ZXhpc3RpbmdBWE9iamVj
dENhY2hlKCkgOiBudWxscHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1v
dGVGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmNwcAppbmRleCA3
MTJjMGIyMjBmZDAuLjUwYjBhMjVjZmRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9SZW1vdGVGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5j
cHAKQEAgLTEwMCw2ICsxMDAsMjEgQEAgdm9pZCBSZW1vdGVGcmFtZTo6YnJvYWRjYXN0RnJhbWVS
ZW1vdmFsVG9PdGhlclByb2Nlc3NlcygpCiAgICAgbV9jbGllbnQtPmJyb2FkY2FzdEZyYW1lUmVt
b3ZhbFRvT3RoZXJQcm9jZXNzZXMoKTsKIH0KIAordm9pZCBSZW1vdGVGcmFtZTo6dXBkYXRlUmVt
b3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KEludFBvaW50IG9mZnNldCkKK3sKKyAgICBtX2Ns
aWVudC0+dXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KGZyYW1lSUQoKSwgb2Zm
c2V0KTsKK30KKwordm9pZCBSZW1vdGVGcmFtZTo6dW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZy
YW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIpCit7CisgICAgbV9jbGllbnQtPnVuYmluZFJlbW90
ZUFjY2Vzc2liaWxpdHlGcmFtZXMocHJvY2Vzc0lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUZyYW1lOjpiaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZp
ZXIsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhVG9rZW4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3Qgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBpbnQpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIHJldHVybiBtX2NsaWVudC0+YmluZFJlbW90ZUFjY2Vzc2liaWxpdHlG
cmFtZXMocHJvY2Vzc0lkZW50aWZpZXIsIGZyYW1lSUQoKSwgZGF0YVRva2VuLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIEZyYW1lVmlldyogUmVtb3RlRnJhbWU6OnZpcnR1YWxW
aWV3KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV92aWV3LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1v
dGVGcmFtZS5oCmluZGV4IDI3ZWQ4NDBkMDgyZS4uY2E3MmFmOGJjOTVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9SZW1vdGVGcmFtZS5oCkBAIC0zMyw2ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorY2xhc3MgRGF0YVNlZ21lbnQ7CiBjbGFzcyBSZW1vdGVET01XaW5kb3c7CiBjbGFzcyBSZW1v
dGVGcmFtZUNsaWVudDsKIGNsYXNzIFJlbW90ZUZyYW1lVmlldzsKQEAgLTYyLDYgKzYzLDkgQEAg
cHVibGljOgogICAgIE1hcmthYmxlPExheWVySG9zdGluZ0NvbnRleHRJZGVudGlmaWVyPiBsYXll
ckhvc3RpbmdDb250ZXh0SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJIb3N0aW5n
Q29udGV4dElkZW50aWZpZXI7IH0KIAogICAgIFN0cmluZyByZW5kZXJUcmVlQXNUZXh0KHNpemVf
dCBiYXNlSW5kZW50LCBPcHRpb25TZXQ8UmVuZGVyQXNUZXh0RmxhZz4pOworICAgIHZvaWQgYmlu
ZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBzdGQ6OnNw
YW48Y29uc3QgdWludDhfdD4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpzcGFuPGNvbnN0
IHVpbnQ4X3Q+LCBpbnQpPiYmKTsKKyAgICB2b2lkIHVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJp
bGl0eU9mZnNldChJbnRQb2ludCk7CisgICAgdm9pZCB1bmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5
RnJhbWVzKGludCk7CiAKIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgUmVt
b3RlRnJhbWUoUGFnZSYsIFVuaXF1ZVJlZjxSZW1vdGVGcmFtZUNsaWVudD4mJiwgRnJhbWVJZGVu
dGlmaWVyLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBGcmFtZSogcGFyZW50LCBNYXJrYWJsZTxM
YXllckhvc3RpbmdDb250ZXh0SWRlbnRpZmllcj4sIEZyYW1lKiBvcGVuZXIgPSBudWxscHRyKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVDbGllbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVDbGllbnQuaAppbmRleCA0ZWZkMTAzZjM5MTIu
LjU0MWEwZDAxYzU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFt
ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVDbGllbnQuaApA
QCAtMzAsNiArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERhdGFTZWdt
ZW50OwogY2xhc3MgRnJhbWVMb2FkUmVxdWVzdDsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBTZWN1
cml0eU9yaWdpbkRhdGE7CkBAIC00OCw2ICs0OSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0
cmluZyByZW5kZXJUcmVlQXNUZXh0KHNpemVfdCBiYXNlSW5kZW50LCBPcHRpb25TZXQ8UmVuZGVy
QXNUZXh0RmxhZz4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYnJvYWRjYXN0RnJhbWVSZW1vdmFs
VG9PdGhlclByb2Nlc3NlcygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VQYWdlKCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBiaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJv
Y2Vzc0lkZW50aWZpZXIsIEZyYW1lSWRlbnRpZmllciB0YXJnZXQsIGNvbnN0IHN0ZDo6c3Bhbjxj
b25zdCB1aW50OF90PiBkYXRhVG9rZW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3Rk
OjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBpbnQpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChGcmFtZUlkZW50aWZpZXIgdGFyZ2V0
LCBJbnRQb2ludCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmJpbmRSZW1vdGVBY2Nlc3NpYmls
aXR5RnJhbWVzKGludCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmb2N1cygpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgdW5mb2N1cygpID0gMDsKICAgICB2aXJ0dWFsIH5SZW1vdGVGcmFtZUNsaWVu
dCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IDg0ZmM0MTllNTlj
YS4uNDJlZWU2NmFiMTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC00
Miw2ICs0Miw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnQWN0aW9ucy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRWRpdG9yQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb2N1c0RpcmVjdGlv
bi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9JbnB1dE1vZGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhQ29udHJvbHNDb250ZXh0
TWVudUl0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+CkBAIC0zMTgsNyAr
MzE5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlVW5kb1JlZG8oVW5kb09y
UmVkbykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aGVlbEV2ZW50V2FzTm90SGFuZGxlZEJ5V2Vi
Q29yZShjb25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50JikgPSAwOwogI2lmIFBMQVRGT1JNKENPQ09B
KQotICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQo
c3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFjY2Vzc2li
aWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciwgcGlkX3QpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgZXhl
Y3V0ZVNhdmVkQ29tbWFuZEJ5U2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxlY3RvcikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTZWN1cmVJbnB1dFN0YXRlKCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCByZXNldFNlY3VyZUlucHV0U3RhdGUoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKaW5kZXggMDUwMzA4NjM5MWZiLi4z
ZTNiODE5NWQwNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lv
bmFsUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25h
bFBhZ2VQcm94eS5jcHAKQEAgLTU0NSw3ICs1NDUsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVBy
b3h5OjpyZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94
eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1
aW50OF90PiBkYXRhKQordm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9j
ZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhLCBGcmFt
ZUlkZW50aWZpZXIpCiB7CiAgICAgbV9hY2Nlc3NpYmlsaXR5VG9rZW4gPSBWZWN0b3IoZGF0YSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaApp
bmRleCBkZWVjZDc2YTIwMjQuLmQwYjdlY2NlZWZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCkBAIC0xNzIsNyArMTcyLDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJh
bWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBT
dHJpbmcmKT4mJik7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIHJlZ2lz
dGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4p
OworICAgIHZvaWQgcmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bh
bjxjb25zdCB1aW50OF90PiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICNlbmRpZgogI2lm
IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgIHZvaWQgYmluZEFjY2Vzc2liaWxp
dHlUcmVlKGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViRnJhbWVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVBy
b3h5LmNwcAppbmRleCBmMmZjOGE1NGQ4ODMuLjIzMDMwN2ExNzRlYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRl
ICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIldlYlBhc3RlYm9hcmRQcm94eS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFT
dG9yZS5oIgogI2luY2x1ZGUgIldlYnNpdGVQb2xpY2llc0RhdGEuaCIKQEAgLTE4NCw2ICsxODUs
MTQgQEAgdm9pZCBXZWJGcmFtZVByb3h5OjpuYXZpZ2F0ZVNlcnZpY2VXb3JrZXJDbGllbnQoV2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dEkKICAgICB9KTsKIH0KIAordm9pZCBXZWJGcmFt
ZVByb3h5OjpiaW5kQWNjZXNzaWJpbGl0eUZyYW1lV2l0aERhdGEoc3RkOjpzcGFuPGNvbnN0IHVp
bnQ4X3Q+IGRhdGEpCit7CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6QmluZEFjY2Vzc2liaWxpdHlGcmFt
ZVdpdGhEYXRhKG1fZnJhbWVJRCwgZGF0YSkpOworfQorCiB2b2lkIFdlYkZyYW1lUHJveHk6Omxv
YWRVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpCiB7CiAgICAgaWYg
KCFtX3BhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKaW5kZXggYjBk
YWViMGU2NGZjLi43MTViYjgwYmFiNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkZyYW1lUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFt
ZVByb3h5LmgKQEAgLTE3MCw2ICsxNzAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdGVQcm9j
ZXNzRGlkVGVybWluYXRlKCk7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4gd2ViUGFnZUlESW5DdXJyZW50UHJvY2VzcygpOwogICAgIHZvaWQgbm90aWZ5UGFyZW50
T2ZMb2FkQ29tcGxldGlvbihXZWJQcm9jZXNzUHJveHkmKTsKKyAgICB2b2lkIHJlbW92ZVJlbW90
ZVBhZ2VzRm9yU3VzcGVuc2lvbigpOworICAgIHZvaWQgYmluZEFjY2Vzc2liaWxpdHlGcmFtZVdp
dGhEYXRhKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Pik7CiAKICAgICBib29sIGlzRm9jdXNlZCgp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBj
MGZlMTJlOGI3MDMuLjAxMWNmZWM2MzBmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCkBAIC0xMjk1LDggKzEyOTUsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN3
YXBUb1Byb3Zpc2lvbmFsUGFnZShzdGQ6OnVuaXF1ZV9wdHI8UHJvdmlzaW9uYWxQYWdlUHJveHk+
IHAKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGF1dG8gYWNjZXNzaWJpbGl0eVRva2VuID0g
cHJvdmlzaW9uYWxQYWdlLT50YWtlQWNjZXNzaWJpbGl0eVRva2VuKCk7Ci0gICAgaWYgKCFhY2Nl
c3NpYmlsaXR5VG9rZW4uaXNFbXB0eSgpKQotICAgICAgICByZWdpc3RlcldlYlByb2Nlc3NBY2Nl
c3NpYmlsaXR5VG9rZW4oeyBhY2Nlc3NpYmlsaXR5VG9rZW4uZGF0YSgpLCBhY2Nlc3NpYmlsaXR5
VG9rZW4uc2l6ZSgpIH0pOworICAgIGlmICghYWNjZXNzaWJpbGl0eVRva2VuLmlzRW1wdHkoKSkg
eworICAgICAgICByZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oeyBhY2Nlc3Np
YmlsaXR5VG9rZW4uZGF0YSgpLCBhY2Nlc3NpYmlsaXR5VG9rZW4uc2l6ZSgpIH0sIFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciB7CisgICAgICAgICAgICBPYmplY3RJZGVudGlmaWVyPFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllclR5cGU+KDApLAorICAgICAgICAgICAgT2JqZWN0SWRlbnRpZmllcjxX
ZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllclR5cGU+KDApCisgICAgICAgIH0pOworICAgIH0KICNl
bmRpZgogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgIGF1dG8gYWNjZXNz
aWJpbGl0eVBsdWdJRCA9IHByb3Zpc2lvbmFsUGFnZS0+YWNjZXNzaWJpbGl0eVBsdWdJRCgpOwpA
QCAtMTM3NDQsNiArMTM3NDgsMjIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmFkZENvbnNvbGVNZXNz
YWdlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBNZXNzYWdlU291cmNlIG1lc3MKICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IGZyYW1lSUQsIG1lc3NhZ2VT
b3VyY2UsIG1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgY29yZUlkZW50aWZpZXIgfSk7CiB9CiAKK3Zv
aWQgV2ViUGFnZVByb3h5OjpiaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vz
c0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBzdGQ6
OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YVRva2VuLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0
ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgaW50KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luY1RvUHJvY2Vzc0NvbnRhaW5pbmdGcmFtZShmcmFt
ZUlELCBNZXNzYWdlczo6V2ViUGFnZTo6QmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMocHJv
Y2Vzc0lkZW50aWZpZXIsIGZyYW1lSUQsIGRhdGFUb2tlbikpOworICAgIGlmICghc2VuZFJlc3Vs
dC5zdWNjZWVkZWQoKSkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgMCk7
CisKKyAgICBhdXRvIFtmcmFtZURhdGFUb2tlbiwgZnJhbWVQcm9jZXNzSWRlbnRpZmllcl0gPSBz
ZW5kUmVzdWx0LnRha2VSZXBseSgpOworCisgICAgY29tcGxldGlvbkhhbmRsZXIoZnJhbWVEYXRh
VG9rZW4sIGZyYW1lUHJvY2Vzc0lkZW50aWZpZXIpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6
dXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBXZWJDb3JlOjpJbnRQb2ludCBvZmZzZXQpCit7CisgICAgc2VuZFRvUHJv
Y2Vzc0NvbnRhaW5pbmdGcmFtZShmcmFtZUlELCBNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlUmVt
b3RlUGFnZUFjY2Vzc2liaWxpdHlPZmZzZXQoZnJhbWVJRCwgb2Zmc2V0KSk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDViN2NmNTRlZDE0MS4uNjYwOGRj
M2NjYzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTM1NCw3
ICsxMzU0LDcgQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgLy8gQ2FsbGVk
IGJ5IHRoZSB3ZWIgcHJvY2VzcyB0aHJvdWdoIGEgbWVzc2FnZS4KLSAgICB2b2lkIHJlZ2lzdGVy
V2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pOwor
ICAgIHZvaWQgcmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxj
b25zdCB1aW50OF90PiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICAvLyBDYWxsZWQg
YnkgdGhlIFVJIHByb2Nlc3Mgd2hlbiBpdCBpcyByZWFkeSB0byBzZW5kIGl0cyB0b2tlbnMgdG8g
dGhlIHdlYiBwcm9jZXNzLgogICAgIHZvaWQgcmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5
VG9rZW5zKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBlbGVtZW50VG9rZW4sIHN0ZDo6c3Bhbjxj
b25zdCB1aW50OF90PiB3aW5kb3dUb2tlbik7CiAgICAgdm9pZCByZXBsYWNlU2VsZWN0aW9uV2l0
aFBhc3RlYm9hcmREYXRhKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgc3RkOjpzcGFuPGNv
bnN0IHVpbnQ4X3Q+KTsKQEAgLTI5NzcsNiArMjk3Nyw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBm
b2N1c1JlbW90ZUZyYW1lKElQQzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
cik7CiAgICAgdm9pZCBwb3N0TWVzc2FnZVRvUmVtb3RlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBzb3VyY2UsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgdGFyZ2V0LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4g
dGFyZ2V0T3JpZ2luLCBjb25zdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYpOwog
ICAgIHZvaWQgcmVuZGVyVHJlZUFzVGV4dChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHNpemVf
dCBiYXNlSW5kZW50LCBPcHRpb25TZXQ8V2ViQ29yZTo6UmVuZGVyQXNUZXh0RmxhZz4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmKTsKKyAgICB2b2lkIGJpbmRSZW1vdGVBY2Nl
c3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YVRva2VuLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgaW50KT4mJik7CisgICAgdm9pZCB1
cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQoV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyLCBXZWJDb3JlOjpJbnRQb2ludCk7CiAKICAgICB2b2lkIHNldFRleHRJbmRpY2F0b3JGcm9t
RnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0
YSYmLCB1aW50NjRfdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbgppbmRleCAzMTE1NWIzMjkxNDYuLjcyYjNmNzI0ZDU5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAt
MzI0LDcgKzMyNCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRXhlY3V0ZVNh
dmVkQ29tbWFuZEJ5U2VsZWN0b3IoU3RyaW5nIHNlbGVjdG9yKSAtPiAoYm9vbCBoYW5kbGVkKSBT
eW5jaHJvbm91cwogCiAgICAgIyBSZW1vdGUgYWNjZXNzaWJpbGl0eSBtZXNzYWdlcwotICAgIFJl
Z2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhf
dD4gZGF0YSkKKyAgICBSZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpz
cGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlE
KQogCiAgICAgIyBTcGVlY2ggbWVzc2FnZXMKICAgICBHZXRJc1NwZWFraW5nKCkgLT4gKGJvb2wg
aXNTcGVha2luZykgU3luY2hyb25vdXMKQEAgLTYzMCw0ICs2MzAsNiBAQCBtZXNzYWdlcyAtPiBX
ZWJQYWdlUHJveHkgewogICAgIEZvY3VzUmVtb3RlRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQpCiAgICAgUG9zdE1lc3NhZ2VUb1JlbW90ZShXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgc291cmNlLCBTdHJpbmcgc291cmNlT3JpZ2luLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgdGFyZ2V0LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gdGFy
Z2V0T3JpZ2luLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMgbWVzc2Fn
ZSkKICAgICBSZW5kZXJUcmVlQXNUZXh0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBpZGVudGlm
aWVyLCBzaXplX3QgYmFzZUluZGVudCwgT3B0aW9uU2V0PFdlYkNvcmU6OlJlbmRlckFzVGV4dEZs
YWc+IGJlaGF2aW9yKSAtPiAoU3RyaW5nIHJlbmRlclRyZWVEdW1wKSBTeW5jaHJvbm91cworICAg
IEJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBk
YXRhVG9rZW4pIC0+IChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gdG9rZW4sIGludCBwcm9jZXNz
SWRlbnRpZmllcikgU3luY2hyb25vdXMKKyAgICBVcGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxp
dHlPZmZzZXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OkludFBv
aW50IG9mZnNldCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLmgKaW5kZXggMTBjNGY2YWUxMjUwLi42Mzg4Y2I0NjcyYzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0xMTAsNyAr
MTEwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyQWxsRWRpdENvbW1hbmRzKCkgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBjYW5VbmRvUmVkbyhVbmRvT3JSZWRvKSBvdmVycmlkZTsKICAgICB2b2lk
IGV4ZWN1dGVVbmRvUmVkbyhVbmRvT3JSZWRvKSBvdmVycmlkZTsKLSAgICB2b2lkIGFjY2Vzc2li
aWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pIG92
ZXJyaWRlOworICAgIHZvaWQgYWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKHN0
ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBwaWRfdCkg
b3ZlcnJpZGU7CiAgICAgYm9vbCBleGVjdXRlU2F2ZWRDb21tYW5kQnlTZWxlY3Rvcihjb25zdCBT
dHJpbmcmIHNlbGVjdG9yKSBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZVNlY3VyZUlucHV0U3Rh
dGUoKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc2V0U2VjdXJlSW5wdXRTdGF0ZSgpIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBs
SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1t
CmluZGV4IGNiMjNmNDk3NGE2Yi4uYjVhZGRkY2UyM2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC0zODksNyArMzg5LDcgQEAg
dm9pZCBQYWdlQ2xpZW50SW1wbDo6ZXhlY3V0ZVVuZG9SZWRvKFVuZG9PclJlZG8gdW5kb09yUmVk
bykKICAgICByZXR1cm4gKHVuZG9PclJlZG8gPT0gVW5kb09yUmVkbzo6VW5kbykgPyBbW2NvbnRl
bnRWaWV3KCkgdW5kb01hbmFnZXJdIHVuZG9dIDogW1tjb250ZW50VmlldygpIHVuZG9NYW5hZ2Vy
XSByZWRvXTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6YWNjZXNzaWJpbGl0eVdlYlByb2Nl
c3NUb2tlblJlY2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhKQordm9pZCBQYWdl
Q2xpZW50SW1wbDo6YWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKHN0ZDo6c3Bh
bjxjb25zdCB1aW50OF90PiBkYXRhLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHBpZF90KQog
ewogICAgIE5TRGF0YSAqcmVtb3RlVG9rZW4gPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5k
YXRhKCkgbGVuZ3RoOmRhdGEuc2l6ZSgpXTsKICAgICBbY29udGVudFZpZXcoKSBfc2V0QWNjZXNz
aWJpbGl0eVdlYlByb2Nlc3NUb2tlbjpyZW1vdGVUb2tlbl07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCA5NjRmMzA1OTJhYTguLjk1Y2Nk
MDU5MmIxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5
SU9TLm1tCkBAIC03NjMsOSArNzYzLDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFNtYXJ0SW5z
ZXJ0RGVsZXRlRW5hYmxlZChib29sKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpyZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpz
cGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQ
cm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhLCBG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKIHsKLSAgICBwcm90ZWN0ZWRQYWdlQ2xpZW50KCktPmFj
Y2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChkYXRhKTsKKyAgICBwYWdlQ2xpZW50
KCkuYWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKGRhdGEsIGZyYW1lSUQpOwog
fSAgICAKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGxNYWMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1w
bE1hYy5oCmluZGV4IGZiNmM2MDc4NjdhZi4uYmY4ZGE0MzBkOGE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaApAQCAtMTc2LDcgKzE3Niw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXN0dXJlRXZlbnRXYXNOb3RIYW5kbGVkQnlXZWJDb3Jl
KGNvbnN0IE5hdGl2ZVdlYkdlc3R1cmVFdmVudCYpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSAgICB2
b2lkIGFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChzdGQ6OnNwYW48Y29uc3Qg
dWludDhfdD4pIG92ZXJyaWRlOworICAgIHZvaWQgYWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tl
blJlY2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyLCBwaWRfdCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIG1ha2VGaXJzdFJlc3BvbmRlcigpIG92
ZXJyaWRlOwogICAgIHZvaWQgYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJlc3BvbmRlcigp
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VD
bGllbnRJbXBsTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJ
bXBsTWFjLm1tCmluZGV4IDA3ODBmMThkYTFjMi4uMDE1MGVjNDUxMmNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCkBAIC01ODEsOSAr
NTgxLDkgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0VGV4dEluZGljYXRvckFuaW1hdGlvblBy
b2dyZXNzKGZsb2F0IHByb2dyZXNzKQogICAgIG1faW1wbC0+c2V0VGV4dEluZGljYXRvckFuaW1h
dGlvblByb2dyZXNzKHByb2dyZXNzKTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6YWNjZXNz
aWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBk
YXRhKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6YWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJl
Y2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhLCBXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgcGlkX3QgcGlkKQogewotICAgIG1faW1wbC0+c2V0QWNjZXNzaWJpbGl0
eVdlYlByb2Nlc3NUb2tlbihbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5kYXRhKCkgbGVuZ3Ro
OmRhdGEuc2l6ZSgpXSk7CisgICAgbV9pbXBsLT5zZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rv
a2VuKFtOU0RhdGEgZGF0YVdpdGhCeXRlczpkYXRhLmRhdGEoKSBsZW5ndGg6ZGF0YS5zaXplKCld
LCBmcmFtZUlELCBwaWQpOwogfQogICAgIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZW50ZXJBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0JiBsYXllclRyZWVD
b250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQ
cm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMu
bW0KaW5kZXggY2ZiMTBmZGJiNDEzLi44Njk2MTdhMjlkOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMzA2LDEyICszMDYsMTIgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKGNvbnN0IERpY3Rp
b25hcnlQb3B1cEluZm8mIGRpY3Rpb24KICAgICBwcm90ZWN0ZWRQYWdlQ2xpZW50KCktPmRpZFBl
cmZvcm1EaWN0aW9uYXJ5TG9va3VwKGRpY3Rpb25hcnlQb3B1cEluZm8pOwogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bh
bjxjb25zdCB1aW50OF90PiBkYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyV2ViUHJv
Y2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSwgRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQog
ICAgICAgICByZXR1cm47CiAgICAgCi0gICAgcHJvdGVjdGVkUGFnZUNsaWVudCgpLT5hY2Nlc3Np
YmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoZGF0YSk7CisgICAgcHJvdGVjdGVkUGFnZUNs
aWVudCgpLT5hY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoZGF0YSwgZnJhbWVJ
RCwgbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKS0+cmVtb3RlUHJvY2Vzc0lEKCkpOwogfSAgICAK
IAogdm9pZCBXZWJQYWdlUHJveHk6Om1ha2VGaXJzdFJlc3BvbmRlcigpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XZWJWaWV3SW1wbC5oCmluZGV4IDAzZGZkYWVlMTUzYy4uNWEyZTEyOWZk
YzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwuaApAQCAtNDQ4
LDcgKzQ0OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElnbm9yZXNNb3VzZURyYWdnZWRFdmVu
dHMoYm9vbCk7CiAgICAgYm9vbCBpZ25vcmVzTW91c2VEcmFnZ2VkRXZlbnRzKCkgY29uc3QgeyBy
ZXR1cm4gbV9pZ25vcmVzTW91c2VEcmFnZ2VkRXZlbnRzOyB9CiAKLSAgICB2b2lkIHNldEFjY2Vz
c2liaWxpdHlXZWJQcm9jZXNzVG9rZW4oTlNEYXRhICopOworICAgIHZvaWQgc2V0QWNjZXNzaWJp
bGl0eVdlYlByb2Nlc3NUb2tlbihOU0RhdGEgKiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBw
aWRfdCk7CiAgICAgdm9pZCBhY2Nlc3NpYmlsaXR5UmVnaXN0ZXJVSVByb2Nlc3NUb2tlbnMoKTsK
ICAgICB2b2lkIHVwZGF0ZVJlbW90ZUFjY2Vzc2liaWxpdHlSZWdpc3RyYXRpb24oYm9vbCByZWdp
c3RlclByb2Nlc3MpOwogICAgIGlkIGFjY2Vzc2liaWxpdHlGb2N1c2VkVUlFbGVtZW50KCk7CkBA
IC05MjcsNiArOTI3LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAg
Ym9vbCBtX2FsbG93c01hZ25pZmljYXRpb24geyBmYWxzZSB9OwogCiAgICAgUmV0YWluUHRyPE5T
QWNjZXNzaWJpbGl0eVJlbW90ZVVJRWxlbWVudD4gbV9yZW1vdGVBY2Nlc3NpYmlsaXR5Q2hpbGQ7
CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IG1fcmVtb3RlQWNjZXNzaWJpbGl0
eUZyYW1lQ2FjaGU7CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2U+IG1fcHJvbWlzZWRJbWFn
ZTsKICAgICBTdHJpbmcgbV9wcm9taXNlZEZpbGVuYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYlZpZXdJbXBsLm1tCmluZGV4IDViZGUxMTE2Mjc5MC4uYTRiMzA3ZDc2ZTczIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJbXBsLm1tCkBAIC0zNDgxLDEw
ICszNDgxLDEyIEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldElnbm9yZXNNb3VzZURyYWdnZWRFdmVu
dHMoYm9vbCBpZ25vcmVzTW91c2VEcmFnZ2VkRXZlbnRzKQogICAgIG1faWdub3Jlc01vdXNlRHJh
Z2dlZEV2ZW50cyA9IGlnbm9yZXNNb3VzZURyYWdnZWRFdmVudHM7CiB9CiAKLXZvaWQgV2ViVmll
d0ltcGw6OnNldEFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW4oTlNEYXRhICpkYXRhKQordm9p
ZCBXZWJWaWV3SW1wbDo6c2V0QWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlbihOU0RhdGEgKmRh
dGEsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBwaWRfdCBwaWQpCiB7Ci0gICAg
bV9yZW1vdGVBY2Nlc3NpYmlsaXR5Q2hpbGQgPSBkYXRhLmxlbmd0aCA/IGFkb3B0TlMoW1tOU0Fj
Y2Vzc2liaWxpdHlSZW1vdGVVSUVsZW1lbnQgYWxsb2NdIGluaXRXaXRoUmVtb3RlVG9rZW46ZGF0
YV0pIDogbmlsOwotICAgIHVwZGF0ZVJlbW90ZUFjY2Vzc2liaWxpdHlSZWdpc3RyYXRpb24odHJ1
ZSk7CisgICAgaWYgKHBpZCA9PSBtX3BhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzSUQoKSkgeworICAg
ICAgICBtX3JlbW90ZUFjY2Vzc2liaWxpdHlDaGlsZCA9IGRhdGEubGVuZ3RoID8gYWRvcHROUyhb
W05TQWNjZXNzaWJpbGl0eVJlbW90ZVVJRWxlbWVudCBhbGxvY10gaW5pdFdpdGhSZW1vdGVUb2tl
bjpkYXRhXSkgOiBuaWw7CisgICAgICAgIHVwZGF0ZVJlbW90ZUFjY2Vzc2liaWxpdHlSZWdpc3Ry
YXRpb24odHJ1ZSk7CisgICAgfQogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjp1cGRhdGVSZW1vdGVB
Y2Nlc3NpYmlsaXR5UmVnaXN0cmF0aW9uKGJvb2wgcmVnaXN0ZXJQcm9jZXNzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkxvY2FsRnJhbWVM
b2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDdkMmE0MjY1ZmQ1Yy4uZjNmNzNm
MzY3ZWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0x
ODA3LDYgKzE4MDcsMTIgQEAgdm9pZCBXZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aFdpbGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0ZW4KIAogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIAorV2ViQ29yZTo6SW50UG9pbnQgV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVu
dDo6YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCkKK3sKKyAgICBSZWZQdHIgd2ViUGFn
ZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICByZXR1cm4gd2ViUGFnZSA/IHdlYlBhZ2UtPmFjY2Vz
c2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCgpIDogSW50UG9pbnQoKTsKK30KKwogUmVtb3RlQVhP
YmplY3RSZWYgV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudDo6YWNjZXNzaWJpbGl0eVJlbW90ZU9i
amVjdCgpCiB7CiAgICAgUmVmUHRyIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFt
ZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA4OGM4Y2M1Y2I3MmUuLjlmM2I2N2Yw
ZmNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0yNDAsNiAr
MjQwLDcgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJlbW90ZUFYT2Jq
ZWN0UmVmIGFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSBmaW5hbDsKKyAgICBXZWJDb3JlOjpJ
bnRQb2ludCBhY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKSBmaW5hbDsKICNpZiBFTkFC
TEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQogICAgIHZvaWQgc2V0QVhJc29sYXRlZFRy
ZWVSb290KFdlYkNvcmU6OkFYQ29yZU9iamVjdCopIGZpbmFsOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJl
bW90ZUZyYW1lQ2xpZW50LmNwcAppbmRleCA4Y2JmZjJjOWI4YzkuLmEyZjA5NDhkNDMxMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90
ZUZyYW1lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuY3BwCkBAIC05Niw2ICs5NiwzOCBAQCBTdHJpbmcg
V2ViUmVtb3RlRnJhbWVDbGllbnQ6OnJlbmRlclRyZWVBc1RleHQoc2l6ZV90IGJhc2VJbmRlbnQs
IE9wdGlvblNldDxSZW5kZQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3ZvaWQgV2ViUmVtb3Rl
RnJhbWVDbGllbnQ6OnVuYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJ
ZGVudGlmaWVyKQoreworICAgIC8vIE1ha2Ugc3VyZSBBcHBLaXQgc3lzdGVtIGtub3dzIGFib3V0
IG91ciByZW1vdGUgVUkgcHJvY2VzcyBzdGF0dXMgbm93LgorICAgIGlmIChSZWZQdHIgcGFnZSA9
IG1fZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgcGFnZS0+YWNjZXNzaWJpbGl0eU1hbmFnZVJlbW90
ZUVsZW1lbnRTdGF0dXMoZmFsc2UsIHByb2Nlc3NJZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJS
ZW1vdGVGcmFtZUNsaWVudDo6dXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpJbnRQb2ludCBvZmZzZXQp
Cit7CisgICAgaWYgKFJlZlB0ciBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKQorICAgICAgICBwYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJp
bGl0eU9mZnNldChmcmFtZUlELCBvZmZzZXQpKTsKK30KKwordm9pZCBXZWJSZW1vdGVGcmFtZUNs
aWVudDo6YmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVy
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3Qgc3RkOjpzcGFuPGNvbnN0
IHVpbnQ4X3Q+IGRhdGFUb2tlbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6OnNwYW48Y29u
c3QgdWludDhfdD4sIGludCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgUmVmUHRyIHBh
Z2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKSB7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiB7IH0sIDApOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgYXV0byBzZW5kUmVzdWx0ID0gcGFnZS0+c2VuZFN5bmMoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6QmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMocHJvY2Vzc0lk
ZW50aWZpZXIsIGZyYW1lSUQsIGRhdGFUb2tlbikpOworICAgIGlmICghc2VuZFJlc3VsdC5zdWNj
ZWVkZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBbcmVzdWx0VG9rZW4sIHByb2Nl
c3NJZGVudGlmaWVyUmVzdWx0XSA9IHNlbmRSZXN1bHQudGFrZVJlcGx5KCk7CisKKyAgICAvLyBN
YWtlIHN1cmUgQXBwS2l0IHN5c3RlbSBrbm93cyBhYm91dCBvdXIgcmVtb3RlIFVJIHByb2Nlc3Mg
c3RhdHVzIG5vdy4KKyAgICBwYWdlLT5hY2Nlc3NpYmlsaXR5TWFuYWdlUmVtb3RlRWxlbWVudFN0
YXR1cyh0cnVlLCBwcm9jZXNzSWRlbnRpZmllclJlc3VsdCk7CisgICAgY29tcGxldGlvbkhhbmRs
ZXIocmVzdWx0VG9rZW4sIHByb2Nlc3NJZGVudGlmaWVyUmVzdWx0KTsKK30KKwogdm9pZCBXZWJS
ZW1vdGVGcmFtZUNsaWVudDo6YnJvYWRjYXN0RnJhbWVSZW1vdmFsVG9PdGhlclByb2Nlc3Nlcygp
CiB7CiAgICAgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmJyb2FkY2FzdEZyYW1lUmVtb3ZhbFRvT3Ro
ZXJQcm9jZXNzZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90ZUZyYW1lQ2xpZW50LmgKaW5kZXggNjI2ZTA1YzNl
ODhiLi5jODg5ZWI3ZTVmYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVudC5oCkBAIC00OCw2
ICs0OCwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1JlbW90ZShXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIgc291cmNlLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyIHRhcmdldCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGE+IHRhcmdldE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhN
ZXNzYWdlUG9ydHMmKSBmaW5hbDsKICAgICB2b2lkIGNoYW5nZUxvY2F0aW9uKFdlYkNvcmU6OkZy
YW1lTG9hZFJlcXVlc3QmJikgZmluYWw7CiAgICAgU3RyaW5nIHJlbmRlclRyZWVBc1RleHQoc2l6
ZV90IGJhc2VJbmRlbnQsIE9wdGlvblNldDxXZWJDb3JlOjpSZW5kZXJBc1RleHRGbGFnPikgZmlu
YWw7CisgICAgdm9pZCBiaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lk
ZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4
X3Q+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgaW50
KT4mJikgZmluYWw7CisgICAgdm9pZCB1bmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGlu
dCkgZmluYWw7CisgICAgdm9pZCB1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpJbnRQb2ludCkgZmluYWw7CisKICAg
ICB2b2lkIGJyb2FkY2FzdEZyYW1lUmVtb3ZhbFRvT3RoZXJQcm9jZXNzZXMoKSBmaW5hbDsKICAg
ICB2b2lkIGNsb3NlUGFnZSgpIGZpbmFsOwogICAgIHZvaWQgZm9jdXMoKSBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2Nv
YS5tbQppbmRleCBhZTQzZjFhNDY5OGIuLmVmZjY0YTMwMWY0ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQpAQCAt
NzcsNiArNzcsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9VVElSZWdpc3RyeS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9VVElVdGlsaXRpZXMuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTGF1bmNoU2Vy
dmljZXNTUEkuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNBY2Nlc3NpYmlsaXR5U1BJLmg+
CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KICNpbXBvcnQgPHd0Zi9z
cGkvZGFyd2luL1NhbmRib3hTUEkuaD4KIApAQCAtNDA0LDEwICs0MDUsNDYgQEAgdm9pZCBXZWJQ
YWdlOjpjbGVhckRpY3RhdGlvbkFsdGVybmF0aXZlcyhWZWN0b3I8RGljdGF0aW9uQ29udGV4dD4m
JiBjb250ZXh0cykKICAgICB9LCBEb2N1bWVudE1hcmtlcjo6VHlwZTo6RGljdGF0aW9uQWx0ZXJu
YXRpdmVzKTsKIH0KIAotdm9pZCBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVU
b2tlbihSZXRhaW5QdHI8TlNEYXRhPiByZW1vdGVUb2tlbikKK3ZvaWQgV2ViUGFnZTo6YWNjZXNz
aWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oUmV0YWluUHRyPE5TRGF0YT4gcmVtb3RlVG9rZW4s
IEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogewogICAgIHN0ZDo6c3BhbiBkYXRhVG9rZW4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oW3JlbW90ZVRva2VuIGJ5dGVzXSksIFtyZW1v
dGVUb2tlbiBsZW5ndGhdKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlZ2lz
dGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihkYXRhVG9rZW4pKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tl
bihkYXRhVG9rZW4sIGZyYW1lSUQpKTsKK30KKwordm9pZCBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5
TWFuYWdlUmVtb3RlRWxlbWVudFN0YXR1cyhib29sIHJlZ2lzdGVyU3RhdHVzLCBpbnQgcHJvY2Vz
c0lkZW50aWZpZXIpCit7CisgICAgaWYgKHJlZ2lzdGVyU3RhdHVzKQorICAgICAgICBbTlNBY2Nl
c3NpYmlsaXR5UmVtb3RlVUlFbGVtZW50IHJlZ2lzdGVyUmVtb3RlVUlQcm9jZXNzSWRlbnRpZmll
cjpwcm9jZXNzSWRlbnRpZmllcl07CisgICAgZWxzZQorICAgICAgICBbTlNBY2Nlc3NpYmlsaXR5
UmVtb3RlVUlFbGVtZW50IHVucmVnaXN0ZXJSZW1vdGVVSVByb2Nlc3NJZGVudGlmaWVyOnByb2Nl
c3NJZGVudGlmaWVyXTsKK30KKwordm9pZCBXZWJQYWdlOjpiaW5kUmVtb3RlQWNjZXNzaWJpbGl0
eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YVRva2VuLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgaW50KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBSZWZQdHIgd2ViRnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53
ZWJGcmFtZShmcmFtZUlEKTsKKyAgICBpZiAoIXdlYkZyYW1lKSB7CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9LCAwKTsK
KyAgICB9CisKKyAgICBSZWZQdHIgY29yZUxvY2FsRnJhbWUgPSB3ZWJGcmFtZS0+Y29yZUxvY2Fs
RnJhbWUoKTsKKyAgICBpZiAoIWNvcmVMb2NhbEZyYW1lKSB7CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9LCAwKTsKKyAg
ICB9CisKKyAgICBhdXRvKiByZW5kZXJlciA9IGNvcmVMb2NhbEZyYW1lLT5jb250ZW50UmVuZGVy
ZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9LCAwKTsKKyAgICB9CisKKyAg
ICByZWdpc3RlclJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eVRva2Vucyhwcm9jZXNzSWRlbnRpZmll
ciwgZGF0YVRva2VuKTsKKworICAgIC8vIEdldCBvdXIgcmVtb3RlIHRva2VuIGRhdGEgYW5kIHNl
bmQgYmFjayB0byB0aGUgUmVtb3RlRnJhbWUuCisgICAgYXV0byByZW1vdGVUb2tlbiA9IGFjY2Vz
c2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKTsKKyAgICBzdGQ6OnNwYW4gcmVtb3RlRGF0YVRva2Vu
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtyZW1vdGVUb2tlbiBieXRlc10pLCBb
cmVtb3RlVG9rZW4gbGVuZ3RoXSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIocmVtb3RlRGF0YVRv
a2VuLCBnZXRwaWQoKSk7CiB9CiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGMwNWRkY2RlN2ZhYS4uMTRkODIy
MWI0MmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBA
IC02NzEsNiArNjcxLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFySGlzdG9yeSgpOwogCiAg
ICAgdm9pZCBhY2Nlc3NpYmlsaXR5U2V0dGluZ3NEaWRDaGFuZ2UoKTsKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICB2b2lkIGFjY2Vzc2liaWxpdHlNYW5hZ2VSZW1vdGVFbGVtZW50U3RhdHVzKGJv
b2wsIGludCk7CisjZW5kaWYKKwogICAgIHZvaWQgc2NyZWVuUHJvcGVydGllc0RpZENoYW5nZSgp
OwogCiAgICAgdm9pZCBzY2FsZVBhZ2UoZG91YmxlIHNjYWxlLCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgb3JpZ2luKTsKQEAgLTEwNDMsNyArMTA0NywxMSBAQCBwdWJsaWM6CiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVBY2Nlc3NpYmlsaXR5KCk7CiAg
ICAgdm9pZCByZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoc3RkOjpzcGFuPGNv
bnN0IHVpbnQ4X3Q+IGVsZW1lbnRUb2tlbiwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHdpbmRv
d1Rva2VuKTsKKyAgICB2b2lkIHJlZ2lzdGVyUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5VG9rZW5z
KHBpZF90LCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pOwogICAgIFdLQWNjZXNzaWJpbGl0eVdl
YlBhZ2VPYmplY3QqIGFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKTsKKyAgICBXZWJDb3JlOjpJ
bnRQb2ludCBhY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKTsKKyAgICB2b2lkIGNyZWF0
ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudChwaWRfdCk7CisgICAgdm9pZCB1cGRhdGVSZW1vdGVQ
YWdlQWNjZXNzaWJpbGl0eU9mZnNldChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6
OkludFBvaW50KTsKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQogICAg
IHZvaWQgY2FjaGVBWFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKICAgICB2
b2lkIGNhY2hlQVhTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKQEAgLTIwOTQsNyArMjEw
Miw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCByZXF1ZXN0QWN0
aXZlTm93UGxheWluZ1Nlc3Npb25JbmZvKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwgV2Vi
Q29yZTo6Tm93UGxheWluZ0luZm8mJik+JiYpOwogICAgIFJldGFpblB0cjxOU0RhdGE+IGFjY2Vz
c2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSBjb25zdDsKLSAgICB2b2lkIGFjY2Vzc2liaWxpdHlU
cmFuc2ZlclJlbW90ZVRva2VuKFJldGFpblB0cjxOU0RhdGE+KTsKKyAgICB2b2lkIGFjY2Vzc2li
aWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKFJldGFpblB0cjxOU0RhdGE+LCBXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIpOwogI2VuZGlmCiAKICAgICB2b2lkIHNldFNob3VsZERpc3BhdGNoRmFrZU1v
dXNlTW92ZUV2ZW50cyhib29sIGRpc3BhdGNoKSB7IG1fc2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VN
b3ZlRXZlbnRzID0gZGlzcGF0Y2g7IH0KQEAgLTIyMDQsNiArMjIxMiw5IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIHJlbW90ZVBvc3RNZXNzYWdlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBzb3Vy
Y2UsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIg
dGFyZ2V0LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJiB0YXJn
ZXRPcmlnaW4sIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJik7CiAgICAg
dm9pZCByZW5kZXJUcmVlQXNUZXh0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgc2l6ZV90IGJh
c2VJbmRlbnQsIE9wdGlvblNldDxXZWJDb3JlOjpSZW5kZXJBc1RleHRGbGFnPiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZv
aWQgYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIGludCk+JiYpOworI2Vu
ZGlmCiAKICAgICB2b2lkIHJlcXVlc3RUZXh0RXh0cmFjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkZsb2F0UmVjdD4mJiBjb2xsZWN0aW9uUmVjdEluUm9vdFZpZXcsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV2ViQ29yZTo6VGV4dEV4dHJhY3Rpb246Okl0ZW0mJik+JiYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpp
bmRleCAwY2FmNmUyMjUzNzguLmFmN2FkMjZjM2E0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC00OTIsNiArNDky
LDkgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0
OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBXaW5kb3dBbmRWaWV3RnJhbWVzQ2hh
bmdlZChzdHJ1Y3QgV2ViS2l0OjpWaWV3V2luZG93Q29vcmRpbmF0ZXMgY29vcmRpbmF0ZXMpCiAg
ICAgU2V0TWFpbkZyYW1lSXNTY3JvbGxhYmxlKGJvb2wgaXNTY3JvbGxhYmxlKQogICAgIFJlZ2lz
dGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VucyhzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4g
ZWxlbWVudFRva2VuLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gd2luZG93VG9rZW4pCisgICAg
QmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRh
dGFUb2tlbikgLT4gKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiB0b2tlbiwgaW50IHByb2Nlc3NJ
ZGVudGlmaWVyKSBTeW5jaHJvbm91cworICAgIFVwZGF0ZVJlbW90ZVBhZ2VBY2Nlc3NpYmlsaXR5
T2Zmc2V0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpJbnRQb2lu
dCBvZmZzZXQpOworCiAgICAgR2V0U3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpIC0+IChT
dHJpbmcgc3RyaW5nVmFsdWUpIFN5bmNocm9ub3VzCiAgICAgR2V0RGF0YVNlbGVjdGlvbkZvclBh
c3RlYm9hcmQoU3RyaW5nIHBhc3RlYm9hcmRUeXBlKSAtPiAoUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyKSBTeW5jaHJvbm91cwogICAgIFJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVi
b2FyZChTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChib29sIHJlc3VsdCkgU3luY2hyb25vdXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0KaW5kZXggYTdmZDcyMzEyN2MwLi4xMGQ5ODhhMzVjOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0yNDMsMTIgKzI0
MywxNCBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6ZUFjY2Vzc2liaWxpdHkoKQog
ICAgIG1fbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50ID0gYWRvcHROUyhbW1dLQWNjZXNzaWJpbGl0
eVdlYlBhZ2VPYmplY3QgYWxsb2NdIGluaXRdKTsKICAgICBbbV9tb2NrQWNjZXNzaWJpbGl0eUVs
ZW1lbnQgc2V0V2ViUGFnZTp0aGlzXTsKIAotICAgIGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90
ZVRva2VuKGFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSk7CisgICAgUmVmIGZyYW1lID0g
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBhY2Nl
c3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tlbihhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRh
KCksIGZyYW1lLmZyYW1lSUQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1SZWluaXRp
YWxpemUoKQogewotICAgIGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKGFjY2Vzc2li
aWxpdHlSZW1vdGVUb2tlbkRhdGEoKSk7CisgICAgUmVmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBhY2Nlc3NpYmlsaXR5VHJhbnNm
ZXJSZW1vdGVUb2tlbihhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCksIGZyYW1lLmZyYW1l
SUQoKSk7CiB9CiAKIFJldGFpblB0cjxOU0RhdGE+IFdlYlBhZ2U6OmFjY2Vzc2liaWxpdHlSZW1v
dGVUb2tlbkRhdGEoKSBjb25zdApAQCAtNjYyLDYgKzY2NCwxMiBAQCB2b2lkIFdlYlBhZ2U6Omdl
dERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZAogICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiB9CiAKK1dlYkNvcmU6OkludFBv
aW50IFdlYlBhZ2U6OmFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCgpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4geyB9OworfQorCiBXS0FjY2Vzc2liaWxpdHlXZWJQ
YWdlT2JqZWN0KiBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJh
c2UuaAppbmRleCAzOWU5MGUzYzg5NWUuLjQ5NzAwNzBhNDU1ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmpl
Y3RCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNj
ZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmgKQEAgLTQ1LDYgKzQ1LDggQEAgY2xhc3MgQVhD
b3JlT2JqZWN0OwogICAgIFdlYkNvcmU6OkludFNpemUgbV9zaXplIFdURl9HVUFSREVEX0JZX0xP
Q0sobV9jYWNoZUxvY2spOwogICAgIFRocmVhZFNhZmVXZWFrUHRyPFdlYkNvcmU6OkFYQ29yZU9i
amVjdD4gbV9pc29sYXRlZFRyZWVSb290OwogI2VuZGlmCisKKyAgICBXZWJDb3JlOjpJbnRQb2lu
dCBtX3JlbW90ZUZyYW1lT2Zmc2V0OwogICAgIFJldGFpblB0cjxpZD4gbV9wYXJlbnQ7CiAgICAg
Ym9vbCBtX2hhc01haW5GcmFtZVBsdWdpbjsKIH0KQEAgLTU2LDkgKzU4LDExIEBAIGNsYXNzIEFY
Q29yZU9iamVjdDsKIC0gKHZvaWQpc2V0SXNvbGF0ZWRUcmVlUm9vdDooTmFrZWRQdHI8V2ViQ29y
ZTo6QVhDb3JlT2JqZWN0Pilyb290OwogI2VuZGlmCiAtICh2b2lkKXNldFJlbW90ZVBhcmVudDoo
aWQpcGFyZW50OworLSAodm9pZClzZXRSZW1vdGVGcmFtZU9mZnNldDooV2ViQ29yZTo6SW50UG9p
bnQpb2Zmc2V0OwogLSAodm9pZClzZXRIYXNNYWluRnJhbWVQbHVnaW46KGJvb2wpaGFzUGx1Z2lu
OwogCiAtIChpZClhY2Nlc3NpYmlsaXR5Um9vdE9iamVjdFdyYXBwZXI7CiAtIChpZClhY2Nlc3Np
YmlsaXR5Rm9jdXNlZFVJRWxlbWVudDsKKy0gKFdlYkNvcmU6OkludFBvaW50KWFjY2Vzc2liaWxp
dHlSZW1vdGVGcmFtZU9mZnNldDsKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdl
YlBhZ2VPYmplY3RCYXNlLm1tCmluZGV4IDZmOTk1NDVhZWJmNS4uYmVjOGQ3M2ZhYTJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmls
aXR5V2ViUGFnZU9iamVjdEJhc2UubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tCkBAIC0zNiw5ICsz
NiwxMSBAQAogI2ltcG9ydCAiV0tTdHJpbmdDRi5oIgogI2ltcG9ydCA8V2ViQ29yZS9BWE9iamVj
dENhY2hlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3Jl
L0ZyYW1lVHJlZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbEZyYW1lLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0xvY2FsRnJhbWVWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KKyNpbXBv
cnQgPFdlYkNvcmUvUmVtb3RlRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsVmlldy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxiYXIuaD4KIApAQCAtNTcsMTEgKzU5LDE3IEBAIG5h
bWVzcGFjZSBheCA9IFdlYkNvcmU6OkFjY2Vzc2liaWxpdHk7CiAgICAgaWYgKCFwYWdlKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8qIGxvY2FsTWFpbkZyYW1lID0gZHluYW1p
Y0Rvd25jYXN0PFdlYkNvcmU6OkxvY2FsRnJhbWU+KHBhZ2UtPm1haW5GcmFtZSgpKTsKLSAgICBp
ZiAoIWxvY2FsTWFpbkZyYW1lIHx8ICFsb2NhbE1haW5GcmFtZS0+ZG9jdW1lbnQoKSkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKGF1dG8qIGxvY2FsTWFpbkZyYW1lID0gZHluYW1p
Y0Rvd25jYXN0PFdlYkNvcmU6OkxvY2FsRnJhbWU+KHBhZ2UtPm1haW5GcmFtZSgpKSkgeworICAg
ICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBsb2NhbE1haW5GcmFtZS0+ZG9jdW1lbnQoKSkKKyAg
ICAgICAgICAgIHJldHVybiBkb2N1bWVudC0+YXhPYmplY3RDYWNoZSgpOworICAgIH0gZWxzZSBp
ZiAoYXV0byogcmVtb3RlTWFpbkZyYW1lID0gZHluYW1pY0Rvd25jYXN0PFdlYkNvcmU6OlJlbW90
ZUZyYW1lPihwYWdlLT5tYWluRnJhbWUoKSkpIHsKKyAgICAgICAgYXV0byYgdHJlZSA9IHJlbW90
ZU1haW5GcmFtZS0+dHJlZSgpOworICAgICAgICBhdXRvKiBmaXJzdEZyYW1lID0gZHluYW1pY0Rv
d25jYXN0PFdlYkNvcmU6OkxvY2FsRnJhbWU+KHRyZWUuZmlyc3RDaGlsZCgpKTsKKyAgICAgICAg
YXV0byogZG9jdW1lbnQgPSBmaXJzdEZyYW1lID8gZmlyc3RGcmFtZS0+ZG9jdW1lbnQoKSA6IG51
bGxwdHI7CisgICAgICAgIHJldHVybiBkb2N1bWVudCA/IGRvY3VtZW50LT5heE9iamVjdENhY2hl
KCkgOiBudWxscHRyOworICAgIH0KIAotICAgIHJldHVybiBsb2NhbE1haW5GcmFtZS0+ZG9jdW1l
bnQoKS0+YXhPYmplY3RDYWNoZSgpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiAtIChpZClh
Y2Nlc3NpYmlsaXR5UGx1Z2luT2JqZWN0CkBAIC0xNTIsNiArMTYwLDE3IEBAIG5hbWVzcGFjZSBh
eCA9IFdlYkNvcmU6OkFjY2Vzc2liaWxpdHk7CiAgICAgbV9oYXNNYWluRnJhbWVQbHVnaW4gPSBo
YXNQbHVnaW47CiB9CiAKKy0gKHZvaWQpc2V0UmVtb3RlRnJhbWVPZmZzZXQ6KFdlYkNvcmU6Oklu
dFBvaW50KW9mZnNldAoreworICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOworICAgIG1fcmVt
b3RlRnJhbWVPZmZzZXQgPSBvZmZzZXQ7Cit9CisKKy0gKFdlYkNvcmU6OkludFBvaW50KWFjY2Vz
c2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldAoreworICAgIHJldHVybiBtX3JlbW90ZUZyYW1lT2Zm
c2V0OworfQorCiAtICh2b2lkKXNldFJlbW90ZVBhcmVudDooaWQpcGFyZW50CiB7CiAgICAgQVNT
RVJUKGlzTWFpblJ1bkxvb3AoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IGIyZGM3MzViYmVhZS4uODllYWU1ZTk3ZmQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFn
ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFn
ZU1hYy5tbQpAQCAtMTIzLDE2ICsxMjMsMTIgQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUluaXRp
YWxpemVBY2Nlc3NpYmlsaXR5KCkKICAgICAvLyBDdXJyZW50bHksIGl0IGlzIGFsc28gbmVlZGVk
IHRvIGFsbG9jYXRlIGFuZCBpbml0aWFsaXplIGFuIE5TQXBwbGljYXRpb24gb2JqZWN0LgogICAg
IFtOU0FwcGxpY2F0aW9uIF9hY2Nlc3NpYmlsaXR5SW5pdGlhbGl6ZV07CiAKLSAgICBhdXRvIG1v
Y2tBY2Nlc3NpYmlsaXR5RWxlbWVudCA9IGFkb3B0TlMoW1tXS0FjY2Vzc2liaWxpdHlXZWJQYWdl
T2JqZWN0IGFsbG9jXSBpbml0XSk7Ci0KICAgICAvLyBHZXQgdGhlIHBpZCBmb3IgdGhlIHN0YXJ0
aW5nIHByb2Nlc3MuCiAgICAgcGlkX3QgcGlkID0gV2ViQ29yZTo6cHJlc2VudGluZ0FwcGxpY2F0
aW9uUElEKCk7Ci0gICAgaWYgKFttb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihhY2Nlc3NpYmlsaXR5U2V0UHJlc2VudGVyUHJvY2Vzc0lkZW50aWZp
ZXI6KV0pCi0gICAgICAgIFsoaWQpbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50LmdldCgpIGFjY2Vz
c2liaWxpdHlTZXRQcmVzZW50ZXJQcm9jZXNzSWRlbnRpZmllcjpwaWRdOwotICAgIFttb2NrQWNj
ZXNzaWJpbGl0eUVsZW1lbnQgc2V0V2ViUGFnZTp0aGlzXTsKLSAgICBtX21vY2tBY2Nlc3NpYmls
aXR5RWxlbWVudCA9IFdURk1vdmUobW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50KTsKLQotICAgIGFj
Y2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKGFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRh
dGEoKSk7CisgICAgY3JlYXRlTW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50KHBpZCk7CisgICAgUmVm
UHRyIGxvY2FsTWFpbkZyYW1lID0gZHluYW1pY0Rvd25jYXN0PExvY2FsRnJhbWU+KG1fcGFnZS0+
bWFpbkZyYW1lKCkpOworICAgIGlmIChsb2NhbE1haW5GcmFtZSkKKyAgICAgICAgYWNjZXNzaWJp
bGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oYWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0YSgpLCBs
b2NhbE1haW5GcmFtZS0+ZnJhbWVJRCgpKTsKIAogICAgIC8vIENsb3NlIE1hY2ggY29ubmVjdGlv
biB0byBMYXVuY2ggU2VydmljZXMuCiAjaWYgSEFWRShMU19TRVJWRVJfQ09OTkVDVElPTl9TVEFU
VVNfUkVMRUFTRV9OT1RJRklDQVRJT05TX01BU0spCkBAIC0xNDQsOSArMTQwLDIwIEBAIHZvaWQg
V2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplQWNjZXNzaWJpbGl0eSgpCiAgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucmV2b2tlTGF1bmNoU2VydmljZXNTYW5kYm94RXh0ZW5zaW9uKCk7CiB9
CiAKK3ZvaWQgV2ViUGFnZTo6Y3JlYXRlTW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50KHBpZF90IHBp
ZCkKK3sKKyAgICBhdXRvIG1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCA9IGFkb3B0TlMoW1tXS0Fj
Y2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0IGFsbG9jXSBpbml0XSk7CisKKyAgICBpZiAoW21vY2tB
Y2Nlc3NpYmlsaXR5RWxlbWVudCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGFjY2Vzc2li
aWxpdHlTZXRQcmVzZW50ZXJQcm9jZXNzSWRlbnRpZmllcjopXSkKKyAgICAgICAgWyhpZCltb2Nr
QWNjZXNzaWJpbGl0eUVsZW1lbnQuZ2V0KCkgYWNjZXNzaWJpbGl0eVNldFByZXNlbnRlclByb2Nl
c3NJZGVudGlmaWVyOnBpZF07CisgICAgW21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCBzZXRXZWJQ
YWdlOnRoaXNdOworICAgIG1fbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50ID0gV1RGTW92ZShtb2Nr
QWNjZXNzaWJpbGl0eUVsZW1lbnQpOworfQorCiB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtUmVpbml0
aWFsaXplKCkKIHsKLSAgICBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tlbihhY2Nlc3Np
YmlsaXR5UmVtb3RlVG9rZW5EYXRhKCkpOworICAgIFJlZiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXND
b250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgYWNjZXNzaWJpbGl0eVRyYW5z
ZmVyUmVtb3RlVG9rZW4oYWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0YSgpLCBmcmFtZS0+ZnJh
bWVJRCgpKTsKIH0KIAogUmV0YWluUHRyPE5TRGF0YT4gV2ViUGFnZTo6YWNjZXNzaWJpbGl0eVJl
bW90ZVRva2VuRGF0YSgpIGNvbnN0CkBAIC00NjksMTIgKzQ3NiwyNyBAQCBib29sIFdlYlBhZ2U6
OnBlcmZvcm1Ob25FZGl0aW5nQmVoYXZpb3JGb3JTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVj
dG9yLCBLZXlibwogICAgIHJldHVybiBkaWRQZXJmb3JtQWN0aW9uOwogfQogCit2b2lkIFdlYlBh
Z2U6OnVwZGF0ZVJlbW90ZVBhZ2VBY2Nlc3NpYmlsaXR5T2Zmc2V0KFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpJbnRQb2ludCBvZmZzZXQpCit7CisgICAgW2FjY2Vz
c2liaWxpdHlSZW1vdGVPYmplY3QoKSBzZXRSZW1vdGVGcmFtZU9mZnNldDpvZmZzZXRdOworfQor
Cit2b2lkIFdlYlBhZ2U6OnJlZ2lzdGVyUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5VG9rZW5zKHBp
ZF90IHBpZCwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGVsZW1lbnRUb2tlbikKK3sKKyAgICBO
U0RhdGEgKmVsZW1lbnRUb2tlbkRhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZWxlbWVudFRv
a2VuLmRhdGEoKSBsZW5ndGg6ZWxlbWVudFRva2VuLnNpemUoKV07CisgICAgYXV0byByZW1vdGVF
bGVtZW50ID0gZWxlbWVudFRva2VuRGF0YS5sZW5ndGggPyBhZG9wdE5TKFtbTlNBY2Nlc3NpYmls
aXR5UmVtb3RlVUlFbGVtZW50IGFsbG9jXSBpbml0V2l0aFJlbW90ZVRva2VuOmVsZW1lbnRUb2tl
bkRhdGFdKSA6IG5pbDsKKworICAgIGNyZWF0ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudChwaWQp
OworICAgIFthY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkgc2V0UmVtb3RlUGFyZW50OnJlbW90
ZUVsZW1lbnQuZ2V0KCldOworfQorCiB2b2lkIFdlYlBhZ2U6OnJlZ2lzdGVyVUlQcm9jZXNzQWNj
ZXNzaWJpbGl0eVRva2VucyhzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZWxlbWVudFRva2VuLCBz
dGQ6OnNwYW48Y29uc3QgdWludDhfdD4gd2luZG93VG9rZW4pCiB7CiAgICAgTlNEYXRhICplbGVt
ZW50VG9rZW5EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmVsZW1lbnRUb2tlbi5kYXRhKCkg
bGVuZ3RoOmVsZW1lbnRUb2tlbi5zaXplKCldOwogICAgIE5TRGF0YSAqd2luZG93VG9rZW5EYXRh
ID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOndpbmRvd1Rva2VuLmRhdGEoKSBsZW5ndGg6d2luZG93
VG9rZW4uc2l6ZSgpXTsKICAgICBhdXRvIHJlbW90ZUVsZW1lbnQgPSBlbGVtZW50VG9rZW5EYXRh
Lmxlbmd0aCA/IGFkb3B0TlMoW1tOU0FjY2Vzc2liaWxpdHlSZW1vdGVVSUVsZW1lbnQgYWxsb2Nd
IGluaXRXaXRoUmVtb3RlVG9rZW46ZWxlbWVudFRva2VuRGF0YV0pIDogbmlsOwogICAgIGF1dG8g
cmVtb3RlV2luZG93ID0gd2luZG93VG9rZW5EYXRhLmxlbmd0aCA/IGFkb3B0TlMoW1tOU0FjY2Vz
c2liaWxpdHlSZW1vdGVVSUVsZW1lbnQgYWxsb2NdIGluaXRXaXRoUmVtb3RlVG9rZW46d2luZG93
VG9rZW5EYXRhXSkgOiBuaWw7CisKICAgICBbcmVtb3RlRWxlbWVudCBzZXRXaW5kb3dVSUVsZW1l
bnQ6cmVtb3RlV2luZG93LmdldCgpXTsKICAgICBbcmVtb3RlRWxlbWVudCBzZXRUb3BMZXZlbFVJ
RWxlbWVudDpyZW1vdGVXaW5kb3cuZ2V0KCldOwogCkBAIC01MTYsNiArNTM4LDExIEBAIFdLQWNj
ZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QqIFdlYlBhZ2U6OmFjY2Vzc2liaWxpdHlSZW1vdGVPYmpl
Y3QoKQogICAgIHJldHVybiBtX21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudC5nZXQoKTsKIH0KIAor
V2ViQ29yZTo6SW50UG9pbnQgV2ViUGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0
KCkKK3sKKyAgICByZXR1cm4gW21fbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50IGFjY2Vzc2liaWxp
dHlSZW1vdGVGcmFtZU9mZnNldF07Cit9CisKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09M
QVRFRF9UUkVFKQogdm9pZCBXZWJQYWdlOjpjYWNoZUFYUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6
RmxvYXRQb2ludCYgcG9pbnQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApp
bmRleCAwNjE0YmNmN2FmNWMuLmJhODM2ODA2NDUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oCkBAIC02NSw2ICs2NSw5IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JlZW5Q
cm9wZXJ0aWVzLmg+CiAjaW5jbHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KICNpbmNsdWRlIDx3
dGYvTWFjaFNlbmRSaWdodC5oPgorCitPQkpDX0NMQVNTIE5TTXV0YWJsZURpY3Rpb25hcnk7CisK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQpAQCAtODcsNiArOTAsNyBAQAogI2luY2x1ZGUg
IldlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5oIgogI2VuZGlmCiAKKwogbmFtZXNwYWNlIEFQSSB7
CiBjbGFzcyBPYmplY3Q7CiB9CkBAIC01MTEsNiArNTE1LDkgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHBsYXRmb3JtU2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVsKTsKIAogICAgIHZvaWQgc2V0RW5oYW5j
ZWRBY2Nlc3NpYmlsaXR5KGJvb2wpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgYmlu
ZEFjY2Vzc2liaWxpdHlGcmFtZVdpdGhEYXRhKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgc3Rk
OjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKKyNlbmRpZgogCiAgICAgdm9pZCBzdGFydE1lbW9yeVNh
bXBsZXIoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IGRv
dWJsZSk7CiAgICAgdm9pZCBzdG9wTWVtb3J5U2FtcGxlcigpOwpAQCAtODI2LDYgKzgzMyw3IEBA
IHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgSGFzaENvdW50ZWRTZXQ8U3RyaW5n
PiBtX3BlbmRpbmdQYXN0ZWJvYXJkV3JpdGVDb3VudHM7CiAgICAgc3RkOjpvcHRpb25hbDxhdWRp
dF90b2tlbl90PiBtX2F1ZGl0VG9rZW5Gb3JTZWxmOworICAgIFJldGFpblB0cjxOU011dGFibGVE
aWN0aW9uYXJ5PiBtX2FjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZVRva2VuQ2FjaGU7CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggOTliNDAyYWYxMWNhLi5kNzc1ZmU3ZDM4ZDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
CkBAIC02OSw2ICs2OSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIg
Tm90UmVmQ291bnRlZCB7CiAgICAgU2V0VGV4dENoZWNrZXJTdGF0ZShzdHJ1Y3QgV2ViS2l0OjpU
ZXh0Q2hlY2tlclN0YXRlIHRleHRDaGVja2VyU3RhdGUpCiAKICAgICBTZXRFbmhhbmNlZEFjY2Vz
c2liaWxpdHkoYm9vbCBmbGFnKQorICAgIEJpbmRBY2Nlc3NpYmlsaXR5RnJhbWVXaXRoRGF0YShX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+
IGRhdGEpOwogCiAgICAgR2FyYmFnZUNvbGxlY3RKYXZhU2NyaXB0T2JqZWN0cygpCiAgICAgU2V0
SmF2YVNjcmlwdEdhcmJhZ2VDb2xsZWN0b3JUaW1lckVuYWJsZWQoYm9vbCBlbmFibGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQppbmRl
eCBjNTM4NTdmYmUxZDQuLjExNjA2ZTk2Mzk1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC0yMTMsNiArMjEzLDE2IEBAIHZv
aWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1TZXRDYWNoZU1vZGVsKENhY2hlTW9kZWwpCiB7CiB9CiAK
K3ZvaWQgV2ViUHJvY2Vzczo6YmluZEFjY2Vzc2liaWxpdHlGcmFtZVdpdGhEYXRhKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSkK
K3sKKyAgICBpZiAoIW1fYWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lVG9rZW5DYWNoZSkKKyAgICAg
ICAgbV9hY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVUb2tlbkNhY2hlID0gYWRvcHROUyhbW05TTXV0
YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKworICAgIGF1dG8gZnJhbWVJbnQgPSBmcmFt
ZUlELm9iamVjdCgpLnRvVUludDY0KCk7CisgICAgTlNEYXRhICpuc0RhdGEgPSBbTlNEYXRhIGRh
dGFXaXRoQnl0ZXM6ZGF0YS5kYXRhKCkgbGVuZ3RoOmRhdGEuc2l6ZSgpXTsKKyAgICBbbV9hY2Nl
c3NpYmlsaXR5UmVtb3RlRnJhbWVUb2tlbkNhY2hlIHNldE9iamVjdDpuc0RhdGEgZm9yS2V5OkAo
ZnJhbWVJbnQpXTsKK30KKwogaWQgV2ViUHJvY2Vzczo6YWNjZXNzaWJpbGl0eUZvY3VzZWRVSUVs
ZW1lbnQoKQogewogICAgIGF1dG8gcmV0cmlldmVGb2N1c2VkVUlFbGVtZW50RnJvbU1haW5UaHJl
YWQgPSBbXSAoKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAyMWUyMWYwOGJkNjQu
LmI0Y2YyODJjMThjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0yMjUsNiArMjI1
LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgUmVtb3RlQVhPYmplY3RSZWYgYWNjZXNzaWJp
bGl0eVJlbW90ZU9iamVjdCgpIGZpbmFsIHsgcmV0dXJuIDA7IH0KKyAgICBXZWJDb3JlOjpJbnRQ
b2ludCBhY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKSBmaW5hbCB7IHJldHVybiB7IH07
IH0KICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQogICAgIHZvaWQgc2V0
QVhJc29sYXRlZFRyZWVSb290KFdlYkNvcmU6OkFYQ29yZU9iamVjdCopIGZpbmFsIHsgfQogI2Vu
ZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>469894</attachid>
            <date>2024-02-15 12:20:56 -0800</date>
            <delta_ts>2024-02-15 12:42:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-268804-20240215122054.patch</filename>
            <type>text/plain</type>
            <size>119930</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">RnJvbSBjOWRhNWEzZjY5MDRkNTBjYWY2Nzk3YzllODMxZTM4ODg2NTU5ODcxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpcyBGbGVpemFjaCA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4K
RGF0ZTogVGh1LCAxNSBGZWIgMjAyNCAwMTo0Mzo0MyAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIEFY
OiBTdXBwb3J0IHNpdGUgaXNvbGF0aW9uIGZvciBWb2ljZU92ZXIKIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjg4MDQgcmRhcjovLzk5NjY1NTYxCgpSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KCkluaXRpYWwgc3VwcG9ydCBmb3Igc2l0ZSBpc29sYXRpb24gZm9y
IFZvaWNlT3Zlci4KCldoZW4gYSBzY3JvbGwgdmlldyBob3N0cyBhIFJlbW90ZUZyYW1lIGl0IGJp
bmRzIGl0c2VsZiB0byB0aGUgb3RoZXIgc2lkZSB0aHJvdWdoIGEgV2ViUGFnZSBtZXNzYWdlLgpU
aGlzIHRyYW5zZmVycyBkYXRhIHRva2VucyBzbyBBY2Nlc3NpYmlsaXR5IHJlbW90ZSBlbGVtZW50
cyBhcmUgY3JlYXRlZCBhbmQgaG9va2VkIHVwLgoKVGhlIGJvdW5kaW5nIGJveGVzIGluc2lkZSB0
aGUgc3ViIGZyYW1lcyBuZWVkIHRvIGhhdmUgdGhlIGluaXRpYWwgb2Zmc2V0IGFwcGxpZWQgYW5k
IHRoZW4gbmVlZCB0byBiZSBjb252ZXJ0ZWQKZWFjaCBzdGVwIHVwIHRoZSBjaGFpbiB0byBhY2Nv
dW50IGZvciBzY3JvbGwgb2Zmc2V0cyB0aGF0IG9ubHkgZWFjaCBwcm9jZXNzIGtub3dzIGFib3V0
LgoKKiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dDoKKiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWENvcmVPYmplY3QuaDoKKFdlYkNvcmU6OmFjY2Vzc2liaWxpdHlSb2xlVG9TdHJpbmcpOgoo
V2ViQ29yZTo6QVhDb3JlT2JqZWN0Ojppc1JlbW90ZUZyYW1lIGNvbnN0KToKKiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcDoKKFdlYkNvcmU6OnN0cmVhbUFYQ29yZU9i
amVjdCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoK
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmNyZWF0ZSk6CihXZWJDb3JlOjpBWE9iamVjdENhY2hl
OjpvblJlbW90ZUZyYW1lSW5pdGlhbGl6ZWQpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5jcHA6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZWxhdGl2
ZUZyYW1lIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnJlbW90ZUZyYW1l
T2Zmc2V0IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW1vdGVGcmFtZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJh
bWVDbGllbnQuaC4KKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6Y3JlYXRlKToK
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6QWNjZXNzaWJpbGl0eVJlbW90ZUZy
YW1lKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6ZWxlbWVudFJlY3QgY29u
c3QpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbW90ZUZy
YW1lLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVDbGllbnQu
aC4KKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkQXR0YWNobWVu
dENoaWxkcmVuKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENoaWxk
cmVuKToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpkZXRhY2hSZW1vdGVQ
YXJ0cyk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6Y2xlYXJDaGlsZHJlbik6
CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkUmVtb3RlRnJhbWVDaGlsZCk6
CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkQ2hpbGRyZW4pOgooV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OndlYkFyZWFPYmplY3QgY29uc3QpOgooV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmRvY3VtZW50IGNvbnN0KToKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpwYXJlbnRPYmplY3QgY29uc3QpOgoqIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaDoKKiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcDoKKFdl
YkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKFdlYkNvcmU6
OkFYSXNvbGF0ZWRPYmplY3Q6OnNldFByb3BlcnR5KToKKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmpl
Y3Q6OnJlbW90ZUZyYW1lT2Zmc2V0IGNvbnN0KToKKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OnJlbGF0aXZlRnJhbWUgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHA6CihXZWJDb3JlOjpBWElzb2xhdGVk
VHJlZTo6dXBkYXRlTm9kZVByb3BlcnRpZXMpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMubW06CihXZWJDb3Jl
OjpBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplUGxhdGZvcm1Qcm9wZXJ0aWVzKToKKFdlYkNv
cmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50IGNvbnN0KToK
KiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFj
Lm1tOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lOjpnZW5lcmF0ZVJlbW90ZVRv
a2VuIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6aW5pdGlhbGl6
ZVBsYXRmb3JtRWxlbWVudFdpdGhSZW1vdGVUb2tlbik6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
OjpjcmVhdGVQbGF0Zm9ybVJvbGVNYXApOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbToKKG1ha2VOU0FycmF5KToK
KiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgcm9sZV0pOgoo
LVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBpc0VtcHR5R3JvdXBdKToKKC1bV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgcm9sZURlc2NyaXB0aW9uXSk6CigtW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIF90cmFuc2Zvcm1TcGVjaWFsQ2hpbGRyZW5DYXNlczpdKToKKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
Ol0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5SGl0VGVz
dDpdKToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgQUxMT1dfREVQUkVDQVRFRF9J
TVBMRU1FTlRBVElPTlNfRU5EXSk6CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpmb3JQYXJhbWV0ZXI6XSk6CigtW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlJbmRleE9mQ2hpbGQ6XSk6CigtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZUNvdW50
Ol0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXJyYXlB
dHRyaWJ1dGVWYWx1ZXM6aW5kZXg6bWF4Q291bnQ6XSk6CiogU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHA6CihXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjphY2Nl
c3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQpOgoqIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUZyYW1lTG9hZGVyQ2xpZW50Lmg6CiogU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvY2FsRnJhbWVM
b2FkZXJDbGllbnQuaDoKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwOgooV2ViQ29yZTo6
UGFnZTo6c2hvdWxkVXBkYXRlQWNjZXNzaWJpbGl0eVJlZ2lvbnMgY29uc3QpOgoqIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuY3BwOgooV2ViQ29yZTo6UmVtb3RlRnJhbWU6OnVwZGF0
ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldCk6CihXZWJDb3JlOjpSZW1vdGVGcmFtZTo6
dW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyk6CihXZWJDb3JlOjpSZW1vdGVGcmFtZTo6
YmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMpOgoqIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVt
b3RlRnJhbWUuaDoKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lQ2xpZW50Lmg6Ciog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcDoKKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdl
UHJveHk6OnJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbik6CiogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaDoKKiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcDoKKFdlYktpdDo6V2ViRnJhbWVQcm94eTo6YmluZEFj
Y2Vzc2liaWxpdHlGcmFtZVdpdGhEYXRhKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJG
cmFtZVByb3h5Lmg6CiogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojpzd2FwVG9Qcm92aXNpb25hbFBhZ2UpOgooV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKToKKFdlYktpdDo6V2Vi
UGFnZVByb3h5Ojp1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQpOgoqIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MubW06CihXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5
V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQpOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW06CihXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9j
ZXNzQWNjZXNzaWJpbGl0eVRva2VuKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGxNYWMuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGxNYWMubW06CihXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5V2ViUHJv
Y2Vzc1Rva2VuUmVjZWl2ZWQpOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW06CihXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNj
ZXNzaWJpbGl0eVRva2VuKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0lt
cGwuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwubW06CihXZWJL
aXQ6OldlYlZpZXdJbXBsOjpzZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuKToKKiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNs
aWVudC5jcHA6CihXZWJLaXQ6OldlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQ6OmFjY2Vzc2liaWxp
dHlSZW1vdGVGcmFtZU9mZnNldCk6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuaDoKKiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuY3BwOgooV2ViS2l0OjpX
ZWJSZW1vdGVGcmFtZUNsaWVudDo6dW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyk6CihX
ZWJLaXQ6OldlYlJlbW90ZUZyYW1lQ2xpZW50Ojp1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxp
dHlPZmZzZXQpOgooV2ViS2l0OjpXZWJSZW1vdGVGcmFtZUNsaWVudDo6YmluZFJlbW90ZUFjY2Vz
c2liaWxpdHlGcmFtZXMpOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJSZW1vdGVGcmFtZUNsaWVudC5oOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKFdlYktpdDo6V2ViUGFnZTo6YWNjZXNzaWJpbGl0
eVRyYW5zZmVyUmVtb3RlVG9rZW4pOgooV2ViS2l0OjpXZWJQYWdlOjphY2Nlc3NpYmlsaXR5TWFu
YWdlUmVtb3RlRWxlbWVudFN0YXR1cyk6CihXZWJLaXQ6OldlYlBhZ2U6OmJpbmRSZW1vdGVBY2Nl
c3NpYmlsaXR5RnJhbWVzKToKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmg6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbjoKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bToKKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplQWNjZXNzaWJpbGl0eSk6CihX
ZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtUmVpbml0aWFsaXplKToKKFdlYktpdDo6V2ViUGFnZTo6
YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KToKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaDoKKiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9i
amVjdEJhc2UubW06CigtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlIGF4T2JqZWN0
Q2FjaGVdKToKKC1bV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2Ugc2V0UmVtb3RlRnJh
bWVPZmZzZXQ6XSk6CigtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlIGFjY2Vzc2li
aWxpdHlSZW1vdGVGcmFtZU9mZnNldF0pOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tOgooV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybUluaXRpYWxp
emVBY2Nlc3NpYmlsaXR5KToKKFdlYktpdDo6V2ViUGFnZTo6Y3JlYXRlTW9ja0FjY2Vzc2liaWxp
dHlFbGVtZW50KToKKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1SZWluaXRpYWxpemUpOgooV2Vi
S2l0OjpXZWJQYWdlOjp1cGRhdGVSZW1vdGVQYWdlQWNjZXNzaWJpbGl0eU9mZnNldCk6CihXZWJL
aXQ6OldlYlBhZ2U6OnJlZ2lzdGVyUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5VG9rZW5zKToKKFdl
YktpdDo6V2ViUGFnZTo6cmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKToKKFdl
YktpdDo6V2ViUGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KToKKiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJQcm9jZXNzQ29jb2EubW06CihXZWJLaXQ6OldlYlByb2Nlc3M6OmJpbmRBY2Nlc3NpYmls
aXR5RnJhbWVXaXRoRGF0YSk6CiogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKLS0tCiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dCAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogLi4uL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIHwgICA4ICstCiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYQ29yZU9iamVjdC5oICAgfCAgMTIgKysKIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhMb2dnZXIuY3BwICAgICB8ICAgMyArCiAuLi4vV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuY3BwICAgfCAgMTUgKy0KIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhP
YmplY3RDYWNoZS5oICB8ICAgMiArCiAuLi4vV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYUmVtb3Rl
RnJhbWUuY3BwICAgfCAgNTEgKysrKysrKwogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WFJlbW90ZUZyYW1lLmggIHwgIDYyICsrKysrKysrCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcCAgICAgfCAgMjAgKystCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmggICAgICAgfCAgIDUgKwogLi4uL0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwICAgICAgICAgICAgIHwgICA0ICstCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5U2Nyb2xsVmlldy5jcHAgfCAgNTggKysrKysrLQogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVNjcm9sbFZpZXcuaCAgIHwgICA2ICstCiAuLi4vaW9zL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVySU9TLm1tICAgfCAgIDEgKwogLi4uL2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
T2JqZWN0LmNwcCAgICAgICAgIHwgIDM1ICsrKystCiAuLi4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRPYmplY3QuaCAgICAgICAgICAgfCAgIDggKy0KIC4uLi9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZFRyZWUuY3BwICAgICAgICAgICB8ICA2MSArKystLS0tLQogLi4uL2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkVHJlZS5oICAgICAgICAgICAgIHwgIDI5ICsrKysKIC4uLi9pc29sYXRlZHRyZWUvbWFj
L0FYSXNvbGF0ZWRPYmplY3RNYWMubW0gICB8ICAgNyArCiAuLi4vbWFjL0FjY2Vzc2liaWxpdHlP
YmplY3RNYWMubW0gICAgICAgICAgICAgfCAgMjEgKysrCiAuLi4vbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyQmFzZS5tbSAgfCAgIDkgKy0KIC4uLi9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJNYWMubW0gICB8IDE0MyArKysrKysrKysrKystLS0tLS0KIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwICAgICAgICB8ICAgNSArCiAuLi4vV2ViQ29y
ZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oICAgfCAgIDEgKwogLi4uL1dlYkNvcmUv
bG9hZGVyL0xvY2FsRnJhbWVMb2FkZXJDbGllbnQuaCAgIHwgICAxICsKIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAgICAgICAgICAgICAgICAgICB8ICAxMSArLQogU291cmNlL1dlYkNvcmUv
cGFnZS9SZW1vdGVGcmFtZS5jcHAgICAgICAgICAgIHwgIDE1ICsrCiBTb3VyY2UvV2ViQ29yZS9w
YWdlL1JlbW90ZUZyYW1lLmggICAgICAgICAgICAgfCAgIDQgKwogU291cmNlL1dlYkNvcmUvcGFn
ZS9SZW1vdGVGcmFtZUNsaWVudC5oICAgICAgIHwgICA0ICsKIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaCAgICAgICAgICB8ICAgMyArLQogLi4uL1dlYktpdC9VSVByb2Nlc3Mv
UHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIHwgICAyICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9Q
cm92aXNpb25hbFBhZ2VQcm94eS5oICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkZyYW1lUHJveHkuY3BwICAgICB8ICAgOSArKwogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViRnJhbWVQcm94eS5oICAgICAgIHwgICAyICsKIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAgICAgICB8ICAyNCArKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oICAgICAgICB8ICAgNCArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluIHwgICA0ICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MuaCAgfCAgIDIgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5tbSB8ICAgMiArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBh
Z2VQcm94eUlPUy5tbSAgIHwgICA0ICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGxNYWMuaCAgfCAgIDIgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xp
ZW50SW1wbE1hYy5tbSB8ICAgNCArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQ
cm94eU1hYy5tbSAgIHwgICA0ICstCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmll
d0ltcGwuaCAgICAgfCAgIDMgKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3
SW1wbC5tbSAgICB8ICAgOCArLQogLi4uL1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuY3BwICAg
ICAgICAgICAgIHwgICA2ICsKIC4uLi9XZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmggICAgICAg
ICAgICAgICB8ICAgMSArCiAuLi4vV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQu
Y3BwICAgfCAgMzIgKysrKwogLi4uL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90ZUZyYW1lQ2xpZW50
LmggICAgIHwgICA0ICsKIC4uLi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29h
Lm1tICB8ICA0MSArKysrLQogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oICAgIHwgIDEzICstCiAuLi4vV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4gICAgfCAgIDMgKwogLi4uL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSAg
ICAgIHwgIDEyICstCiAuLi4vbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmgg
ICAgfCAgIDQgKwogLi4uL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbSAg
IHwgIDI3ICsrKy0KIC4uLi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gICAg
ICB8ICA0NSArKysrLS0KIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggICAg
ICAgICB8ICAgOCArCiAuLi4vV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
biAgfCAgIDEgKwogLi4uL1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tICAgICAg
IHwgIDEwICsrCiAuLi4vbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmgg
fCAgIDEgKwogNjAgZmlsZXMgY2hhbmdlZCwgNzM3IGluc2VydGlvbnMoKyksIDE1MiBkZWxldGlv
bnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
UmVtb3RlRnJhbWUuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWFJlbW90ZUZyYW1lLmgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDZlZTQxYmUyZGUwZS4u
ZTM2NTU5ODUwZTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtNTI1LDYgKzUyNSw3IEBAIGFjY2Vzc2li
aWxpdHkvQVhHZW9tZXRyeU1hbmFnZXIuY3BwCiBhY2Nlc3NpYmlsaXR5L0FYSW1hZ2UuY3BwCiBh
Y2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcAogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNw
cAorYWNjZXNzaWJpbGl0eS9BWFJlbW90ZUZyYW1lLmNwcAogYWNjZXNzaWJpbGl0eS9BWFRleHRN
YXJrZXIuY3BwCiBhY2Nlc3NpYmlsaXR5L0FYVGV4dFJ1bi5jcHAKIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNmYmU2YmZiNmViMy4uZjcyZTU3ZWJiNzhmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xNTI1LDggKzE1MjUsOCBAQAogCQk0MUZGRDJDNjI3NTY1NzNFMDA1MDFCQkYgLyogTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERGOUFGRDcxMTNGQzMxRDgwMDE1RkVCNyAvKiBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tICovOyB9OwogCQk0MjdEQTcxRDEzNzM1
REZBMDA3QzU3RkIgLyogSlNTZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQyN0RBNzFCMTM3MzVERkEwMDdDNTdG
QiAvKiBKU1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwICovOyB9OwogCQk0MjdEQTcxRTEzNzM1
REZBMDA3QzU3RkIgLyogSlNTZXJ2aWNlV29ya2VySW50ZXJuYWxzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MjdEQTcxQzEzNzM1REZBMDA3QzU3RkIg
LyogSlNTZXJ2aWNlV29ya2VySW50ZXJuYWxzLmggKi87IH07Ci0JCTQyRTI4QjU3MkFBQzNDNUYw
MTQ0NTI3QyAvKiBSZW5kZXJTVkdSZXNvdXJjZVBhaW50U2VydmVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0M0Y0OEE1NTJCQUM3QzZFMDAzMzUyN0Mg
LyogUmVuZGVyU1ZHUmVzb3VyY2VQYWludFNlcnZlci5oICovOyB9OwogCQk0MkI2RDBGNzJBQ0FF
QzAzMDBBRTVFQzEgLyogQXBwbGVQYXlEaXNidXJzZW1lbnRQYXltZW50UmVxdWVzdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDJCNkQwRjYyQUNBRUMw
MjAwQUU1RUMxIC8qIEFwcGxlUGF5RGlzYnVyc2VtZW50UGF5bWVudFJlcXVlc3QuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MkUyOEI1NzJBQUMz
QzVGMDE0NDUyN0MgLyogUmVuZGVyU1ZHUmVzb3VyY2VQYWludFNlcnZlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDNGNDhBNTUyQkFDN0M2RTAwMzM1
MjdDIC8qIFJlbmRlclNWR1Jlc291cmNlUGFpbnRTZXJ2ZXIuaCAqLzsgfTsKIAkJNDMxMDdCRTIx
OENDMTlERTAwQ0MxOEU4IC8qIFNlbGVjdG9yUHNldWRvVHlwZU1hcC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDMxMDdCRTExOENDMTlERTAwQ0MxOEU4
IC8qIFNlbGVjdG9yUHNldWRvVHlwZU1hcC5oICovOyB9OwogCQk0MzJEM0ZFODE4QTg2NTg0MDBE
N0RDMDMgLyogU2VsZWN0b3JDaGVja2VyVGVzdEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDMyRDNGRTcxOEE4NjU4NDAwRDdEQzAzIC8q
IFNlbGVjdG9yQ2hlY2tlclRlc3RGdW5jdGlvbnMuaCAqLzsgfTsKIAkJNDM1OEU4N0QxMzYwQTJF
RTAwRTQ3NDhDIC8qIEpTU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM1OEU4N0IxMzYwQTJFRTAwRTQ3NDhDIC8q
IEpTU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5oICovOyB9OwpAQCAtODk1OCw2ICs4OTU4LDggQEAK
IAkJMjk0ODlGQzUxMkMwMEYwMzAwRDgzRjBGIC8qIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5NDk4NjgxMTk1MzQxOTQwMDcyRDJC
RCAvKiBUZXh0VW5kb0luc2VydGlvbk1hcmt1cE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFRleHRVbmRvSW5zZXJ0aW9uTWFya3VwTWFjLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyOTRCREFFNjIxRkY1ODJBMDA1MTA3N0IgLyogQWNjZXNz
aWJpbGl0eU9iamVjdENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gQWNjZXNzaWJpbGl0eU9iamVjdENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkyOTU1Q0YxMTJCMjMwQUU2MDAwMUJGODIgLyogQVhSZW1vdGVGcmFtZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBWFJlbW90ZUZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTI5NTVDRjEyMkIyMzBBRTYwMDAxQkY4MiAvKiBBWFJlbW90ZUZyYW1lLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEFYUmVtb3RlRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyOTdCRTNEOTE2QzA0M0Q4MDAzMzE2QkQgLyogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk4MUFCQzQxMzE4
MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMjk4MUNBOUQxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlB
UklBR3JpZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAzNDcsOSArMTAzNDksOSBAQAogCQk0
MUZGRDJDMjI3NTYzRTAwMDA1MDFCQkYgLyogQXVkaW9TYW1wbGVEYXRhQ29udmVydGVyLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXVkaW9TYW1wbGVEYXRhQ29u
dmVydGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MjdEQTcxQjEzNzM1REZB
MDA3QzU3RkIgLyogSlNTZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2VydmljZVdvcmtlckludGVybmFscy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQyN0RBNzFDMTM3MzVERkEwMDdDNTdGQiAvKiBKU1Nl
cnZpY2VXb3JrZXJJbnRlcm5hbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNTZXJ2aWNlV29ya2VySW50ZXJuYWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTQyRTQ4QjY2MkJBQzdDNkUwMDQ0NTI2QiAvKiBTVkdQYWludFNlcnZlckhhbmRsaW5nLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1BhaW50U2VydmVySGFuZGxpbmcuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDJCNDY1MjAyQUJERjc3NzAwM0ExRjA0IC8q
IEFwcGxlUGF5RGlzYnVyc2VtZW50UGF5bWVudFJlcXVlc3QuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IEFwcGxlUGF5RGlzYnVyc2VtZW50UGF5bWVudFJlcXVlc3QuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MkI2RDBGNjJBQ0FFQzAyMDBBRTVFQzEgLyogQXBwbGVQYXlE
aXNidXJzZW1lbnRQYXltZW50UmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBcHBsZVBheURpc2J1cnNlbWVudFBheW1lbnRSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQyRTQ4QjY2MkJBQzdDNkUwMDQ0NTI2QiAvKiBTVkdQYWludFNlcnZl
ckhhbmRsaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1BhaW50U2Vy
dmVySGFuZGxpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDMxMDdCRTExOEND
MTlERTAwQ0MxOEU4IC8qIFNlbGVjdG9yUHNldWRvVHlwZU1hcC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTZWxlY3RvclBzZXVkb1R5cGVNYXAuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDMyRDNGRTcxOEE4NjU4NDAwRDdEQzAzIC8qIFNlbGVjdG9yQ2hlY2tl
clRlc3RGdW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VsZWN0
b3JDaGVja2VyVGVzdEZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MzU4RTg3QTEzNjBBMkVFMDBFNDc0OEMgLyogSlNTVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHRkVEcm9wU2hhZG93RWxl
bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzQzOCw2ICsyMzQ0MCw4
IEBACiAJCQkJQzA0OTNFQjcyNDQ2OTlFNDAwOUFBQzgwIC8qIEFYTG9nZ2VyLmggKi8sCiAJCQkJ
Mjk4MUNBQUYxMzE4MjJFQzAwRDEyRjJBIC8qIEFYT2JqZWN0Q2FjaGUuY3BwICovLAogCQkJCTI5
QTgxMjFBMEZCQjlDMUQwMDUxMDI5MyAvKiBBWE9iamVjdENhY2hlLmggKi8sCisJCQkJMjk1NUNG
MTIyQjIzMEFFNjAwMDFCRjgyIC8qIEFYUmVtb3RlRnJhbWUuY3BwICovLAorCQkJCTI5NTVDRjEx
MkIyMzBBRTYwMDAxQkY4MiAvKiBBWFJlbW90ZUZyYW1lLmggKi8sCiAJCQkJQzBFMjA4QTEyOTM3
OUM2RjAwQzBEMkQzIC8qIEFYVGV4dE1hcmtlci5jcHAgKi8sCiAJCQkJQzBFMjA4QTAyOTM3OUM2
RTAwQzBEMkQzIC8qIEFYVGV4dE1hcmtlci5oICovLAogCQkJCTQ4QzRFODNDMkIzNEQ4MzgwMDgz
NDYwQSAvKiBBWFRleHRSdW4uY3BwICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWENvcmVPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhDb3JlT2JqZWN0LmgKaW5kZXggNDQxMDg0ZWNiODA1Li4zZmJjN2Y4ZGIyOTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhDb3JlT2JqZWN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWENvcmVPYmplY3QuaApAQCAtMjA1LDYgKzIwNSw3
IEBAIGVudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVJvbGUgewogICAgIFByb2dyZXNzSW5kaWNhdG9y
LAogICAgIFJhZGlvQnV0dG9uLAogICAgIFJhZGlvR3JvdXAsCisgICAgUmVtb3RlRnJhbWUsCiAg
ICAgUm93SGVhZGVyLAogICAgIFJvdywKICAgICBSb3dHcm91cCwKQEAgLTQ0Miw2ICs0NDMsOCBA
QCBBTFdBWVNfSU5MSU5FIFN0cmluZyBhY2Nlc3NpYmlsaXR5Um9sZVRvU3RyaW5nKEFjY2Vzc2li
aWxpdHlSb2xlIHJvbGUpCiAgICAgICAgIHJldHVybiAiUmFkaW9CdXR0b24iX3M7CiAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9Hcm91cDoKICAgICAgICAgcmV0dXJuICJSYWRpb0dy
b3VwIl9zOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJlbW90ZUZyYW1lOgorICAgICAg
ICByZXR1cm4gIlJlbW90ZUZyYW1lIl9zOwogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJv
d0hlYWRlcjoKICAgICAgICAgcmV0dXJuICJSb3dIZWFkZXIiX3M7CiAgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6Um93OgpAQCAtODE1LDYgKzgxOCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgaXNBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3dJbnN0YW5jZSgpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsSW5zdGFuY2UoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQVhJc29sYXRlZE9iamVjdEluc3RhbmNlKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0FYUmVtb3RlRnJhbWUoKSBjb25zdCA9IDA7CiAK
ICAgICBib29sIGlzSGVhZGluZygpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vz
c2liaWxpdHlSb2xlOjpIZWFkaW5nOyB9CiAgICAgdmlydHVhbCBib29sIGlzTGluaygpIGNvbnN0
ID0gMDsKQEAgLTkxOSw2ICs5MjMsMTIgQEAgcHVibGljOgogICAgIGJvb2wgaXNUcmVlR3JpZCgp
IGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlR3Jp
ZDsgfQogICAgIGJvb2wgaXNUcmVlSXRlbSgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09
IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlSXRlbTsgfQogICAgIGJvb2wgaXNTY3JvbGxiYXIoKSBj
b25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2Nyb2xsQmFy
OyB9CisgICAgYm9vbCBpc1JlbW90ZUZyYW1lKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkg
PT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJlbW90ZUZyYW1lOyB9CisjaWYgUExBVEZPUk0oQ09DT0Ep
CisgICAgdmlydHVhbCBSZXRhaW5QdHI8aWQ+IHJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkg
Y29uc3QgPSAwOworI2VuZGlmCisgICAgdmlydHVhbCBib29sIGhhc1JlbW90ZUZyYW1lQ2hpbGQo
KSBjb25zdCA9IDA7CisKICAgICBib29sIGlzQnV0dG9uKCkgY29uc3Q7CiAgICAgdmlydHVhbCBi
b29sIGlzTWV0ZXIoKSBjb25zdCA9IDA7CiAKQEAgLTExNTksNiArMTE2OSw4IEBAIHB1YmxpYzoK
ICAgICAvLyBWaWV3cG9ydC1yZWxhdGl2ZSBtZWFucyB0aGF0IHdoZW4gdGhlIHBhZ2Ugc2Nyb2xs
cywgdGhlIHBvcnRpb24gb2YgdGhlIHBhZ2UgaW4gdGhlIHZpZXdwb3J0IGNoYW5nZXMsIGFuZCB0
aHVzCiAgICAgLy8gYW55IHZpZXdwb3J0LXJlbGF0aXZlIHJlY3RzIGRvIHRvbyAoc2luY2UgdGhl
eSBhcmUgZWl0aGVyIGNsb3NlciB0byBvciBmYXJ0aGVyIGZyb20gdGhlIHZpZXdwb3J0IG9yaWdp
biBhZnRlciB0aGUgc2Nyb2xsKS4KICAgICB2aXJ0dWFsIEZsb2F0UG9pbnQgc2NyZWVuUmVsYXRp
dmVQb3NpdGlvbigpIGNvbnN0ID0gMDsKKyAgICAvLyBUaGlzIGlzIHRoZSBhbW91bnQgdGhhdCB0
aGUgUmVtb3RlRnJhbWUgaXMgb2Zmc2V0IGZyb20gaXRzIGNvbnRhaW5pbmcgcGFyZW50LgorICAg
IHZpcnR1YWwgSW50UG9pbnQgcmVtb3RlRnJhbWVPZmZzZXQoKSBjb25zdCA9IDA7CiAKICAgICB2
aXJ0dWFsIEZsb2F0UmVjdCBjb252ZXJ0RnJhbWVUb1NwYWNlKGNvbnN0IEZsb2F0UmVjdCYsIEFj
Y2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2UpIGNvbnN0ID0gMDsKICNpZiBQTEFURk9STShDT0NP
QSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhMb2dnZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWExvZ2dlci5jcHAKaW5kZXggYjZlMzA2
Y2RkZWNmLi43YjM1YzhmOWQxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQVhMb2dnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhM
b2dnZXIuY3BwCkBAIC04ODMsNiArODgzLDkgQEAgdm9pZCBzdHJlYW1BWENvcmVPYmplY3QoVGV4
dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBBWENvcmVPYmplY3QmIG9iamVjdCwgY29uc3QgT3AKICAg
ICBpZiAob3B0aW9ucyAmIEFYU3RyZWFtT3B0aW9uczo6Um9sZSkKICAgICAgICAgc3RyZWFtLmR1
bXBQcm9wZXJ0eSgicm9sZSIsIG9iamVjdC5yb2xlVmFsdWUoKSk7CiAKKyAgICBpZiAob2JqZWN0
LnJlbmRlcmVyKCkpCisgICAgICAgIHN0cmVhbS5kdW1wUHJvcGVydHkoInJlbmRlck5hbWUiLCBv
YmplY3QucmVuZGVyZXIoKS0+cmVuZGVyTmFtZSgpKTsKKwogICAgIGlmIChvcHRpb25zICYgQVhT
dHJlYW1PcHRpb25zOjpQYXJlbnRJRCkgewogICAgICAgICBhdXRvKiBwYXJlbnQgPSBvYmplY3Qu
cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgICAgIHN0cmVhbS5kdW1wUHJvcGVydHkoInBh
cmVudElEIiwgcGFyZW50ID8gcGFyZW50LT5vYmplY3RJRCgpIDogQVhJRCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IDI4MGZhZDRm
MjcwMS4uMWFjOTVmMmVhNmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJBWElzb2xhdGVk
T2JqZWN0LmgiCiAjaW5jbHVkZSAiQVhJc29sYXRlZFRyZWUuaCIKICNpbmNsdWRlICJBWExvZ2dl
ci5oIgorI2luY2x1ZGUgIkFYUmVtb3RlRnJhbWUuaCIKICNpbmNsdWRlICJBWFRleHRNYXJrZXIu
aCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5QVJJQUdyaWQuaCIKICNpbmNsdWRlICJBY2Nlc3Np
YmlsaXR5QVJJQUdyaWRDZWxsLmgiCkBAIC0xMDU0LDcgKzEwNTUsMTAgQEAgQWNjZXNzaWJpbGl0
eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Y3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUpCiAg
ICAgICAgIGJyZWFrOyAgICAgICAgICAgIAogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRh
YmxlSGVhZGVyQ29udGFpbmVyOgogICAgICAgICBvYmogPSBBY2Nlc3NpYmlsaXR5VGFibGVIZWFk
ZXJDb250YWluZXI6OmNyZWF0ZSgpOwotICAgICAgICBicmVhazsgICAKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmVtb3RlRnJhbWU6CisgICAgICAgIG9iaiA9
IEFYUmVtb3RlRnJhbWU6OmNyZWF0ZSgpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpTbGlkZXJUaHVtYjoKICAgICAgICAgb2JqID0gQWNjZXNzaWJpbGl0eVNs
aWRlclRodW1iOjpjcmVhdGUoKTsKICAgICAgICAgYnJlYWs7CkBAIC0xMzUwLDYgKzEzNTQsMTUg
QEAgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVSZWNvbXB1dGVDZWxsU2xvdHMoQWNjZXNzaWJp
bGl0eVRhYmxlJiBheFRhYmxlKQogI2VuZGlmCiB9CiAKK3ZvaWQgQVhPYmplY3RDYWNoZTo6b25S
ZW1vdGVGcmFtZUluaXRpYWxpemVkKEFYUmVtb3RlRnJhbWUmIHJlbW90ZUZyYW1lKQoreworI2lm
IEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCisgICAgdXBkYXRlSXNvbGF0ZWRU
cmVlKHJlbW90ZUZyYW1lLCBBWFByb3BlcnR5TmFtZTo6UmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1l
bnQpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocmVtb3RlRnJhbWUpOworI2VuZGlmCit9CisK
ICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQogdm9pZCBBWE9iamVjdENh
Y2hlOjpoYW5kbGVSb3dzcGFuQ2hhbmdlZChBY2Nlc3NpYmlsaXR5VGFibGVDZWxsJiBheENlbGwp
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2Fj
aGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCmluZGV4
IGQxMDQ5Y2M5YmMyMS4uMzhjOThhNDZlYTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuaApAQCAtNDcsNiArNDcsNyBAQCBjbGFzcyBUZXh0U3RyZWFt
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEFYUmVtb3RlRnJhbWU7CiBjbGFzcyBB
Y2Nlc3NpYmlsaXR5VGFibGU7CiBjbGFzcyBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOwogY2xhc3Mg
RG9jdW1lbnQ7CkBAIC0yNDYsNiArMjQ3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVmZXJOb2Rl
QWRkZWRPclJlbW92ZWQoTm9kZSopOwogICAgIHZvaWQgaGFuZGxlU2Nyb2xsZWRUb0FuY2hvcihj
b25zdCBOb2RlKiBhbmNob3JOb2RlKTsKICAgICB2b2lkIG9uU2Nyb2xsYmFyVXBkYXRlKFNjcm9s
bFZpZXcqKTsKKyAgICB2b2lkIG9uUmVtb3RlRnJhbWVJbml0aWFsaXplZChBWFJlbW90ZUZyYW1l
Jik7CiAKICAgICBib29sIGlzUmV0cmlldmluZ0N1cnJlbnRNb2RhbE5vZGUoKSB7IHJldHVybiBt
X2lzUmV0cmlldmluZ0N1cnJlbnRNb2RhbE5vZGU7IH0KICAgICBOb2RlKiBtb2RhbE5vZGUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhSZW1vdGVGcmFtZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYUmVtb3RlRnJhbWUuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNjA0MzRlMzQ0NDc3Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFJlbW90ZUZyYW1lLmNw
cApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDI0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkFYUmVtb3RlRnJhbWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8QVhS
ZW1vdGVGcmFtZT4gQVhSZW1vdGVGcmFtZTo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBBWFJlbW90ZUZyYW1lKTsKK30KKworQVhSZW1vdGVGcmFtZTo6QVhSZW1vdGVGcmFt
ZSgpCis6CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgbV9yZW1vdGVGcmFtZVBsYXRmb3JtRWxl
bWVudChudWxscHRyKQorICAgICwgbV9wcm9jZXNzSWRlbnRpZmllcigwKQorI2VuZGlmCit7Cit9
CisKK0xheW91dFJlY3QgQVhSZW1vdGVGcmFtZTo6ZWxlbWVudFJlY3QoKSBjb25zdAoreworICAg
IGF1dG8qIHBhcmVudCA9IHBhcmVudE9iamVjdCgpOworICAgIHJldHVybiBwYXJlbnQgPyBwYXJl
bnQtPmVsZW1lbnRSZWN0KCkgOiBMYXlvdXRSZWN0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhSZW1vdGVG
cmFtZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFJlbW90ZUZyYW1lLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hYmM5NGQzYWE2Y2YKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYUmVtb3RlRnJhbWUu
aApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDI0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJBY2Nlc3NpYmlsaXR5TW9ja09iamVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIFJlbW90ZUZyYW1lOworCitjbGFzcyBBWFJlbW90ZUZyYW1lIGZpbmFsIDogcHVibGljIEFj
Y2Vzc2liaWxpdHlNb2NrT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEFYUmVtb3Rl
RnJhbWU+IGNyZWF0ZSgpOworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBpbml0aWFs
aXplUGxhdGZvcm1FbGVtZW50V2l0aFJlbW90ZVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90
PiwgaW50KTsKKyAgICBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZ2VuZXJhdGVSZW1vdGVUb2tl
bigpIGNvbnN0OworICAgIFJldGFpblB0cjxpZD4gcmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3JlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50OyB9Cisg
ICAgcGlkX3QgcHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3NJZGVu
dGlmaWVyOyB9CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBBWFJlbW90ZUZyYW1l
KCk7CisgICAgdmlydHVhbCB+QVhSZW1vdGVGcmFtZSgpID0gZGVmYXVsdDsKKworICAgIEFjY2Vz
c2liaWxpdHlSb2xlIGRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCkgZmluYWwgeyByZXR1cm4g
QWNjZXNzaWJpbGl0eVJvbGU6OlJlbW90ZUZyYW1lOyB9CisgICAgYm9vbCBjb21wdXRlQWNjZXNz
aWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9v
bCBpc0FYUmVtb3RlRnJhbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgTGF5
b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0IGZpbmFsOworCisjaWYgUExBVEZPUk0oQ09DT0Ep
CisgICAgUmV0YWluUHRyPGlkPiBtX3JlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50OworICAgIHBp
ZF90IG1fcHJvY2Vzc0lkZW50aWZpZXI7CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19BQ0NFU1NJQklMSVRZKEFYUmVtb3RlRnJh
bWUsIGlzQVhSZW1vdGVGcmFtZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggM2UzMmRiMDkzYWZiLi4wOTg0MjY2
NDMyOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcApAQCAtNTQ0LDcgKzU0NCwxMCBAQCBGbG9hdFJlY3QgQWNjZXNzaWJp
bGl0eU9iamVjdDo6Y29udmVydEZyYW1lVG9TcGFjZShjb25zdCBGbG9hdFJlY3QmIGZyYW1lUmVj
dCwgQQogICAgIAogRmxvYXRSZWN0IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnJlbGF0aXZlRnJhbWUo
KSBjb25zdAogewotICAgIHJldHVybiBjb252ZXJ0RnJhbWVUb1NwYWNlKGVsZW1lbnRSZWN0KCks
IEFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2U6OlBhZ2UpOworICAgIGF1dG8gcmVjdCA9IGVs
ZW1lbnRSZWN0KCk7CisgICAgYXV0byByZW1vdGVPZmZzZXQgPSByZW1vdGVGcmFtZU9mZnNldCgp
OworICAgIHJlY3QubW92ZShyZW1vdGVPZmZzZXQueCgpLCByZW1vdGVPZmZzZXQueSgpKTsKKyAg
ICByZXR1cm4gY29udmVydEZyYW1lVG9TcGFjZShyZWN0LCBBY2Nlc3NpYmlsaXR5Q29udmVyc2lv
blNwYWNlOjpQYWdlKTsKIH0KIAogQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU9i
amVjdDo6bmV4dFNpYmxpbmdVbmlnbm9yZWQoaW50IGxpbWl0KSBjb25zdApAQCAtMjA4NiwxNCAr
MjA4OSwxOSBAQCBjb25zdCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyogQWNjZXNzaWJpbGl0eU9i
amVjdDo6YW5jZXN0b3JBY2Nlc3NpYmlsaXR5U2Nyb2xsVgogI2lmIFBMQVRGT1JNKENPQ09BKQog
UmVtb3RlQVhPYmplY3RSZWYgQWNjZXNzaWJpbGl0eU9iamVjdDo6cmVtb3RlUGFyZW50T2JqZWN0
KCkgY29uc3QKIHsKLSAgICBpZiAoYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpKSB7
Ci0gICAgICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpKQotICAgICAgICAg
ICAgcmV0dXJuIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5hY2Nlc3NpYmlsaXR5UmVtb3RlT2Jq
ZWN0KCk7Ci0gICAgfQotICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8qIGRvY3VtZW50ID0g
dGhpcy0+ZG9jdW1lbnQoKTsKKyAgICBhdXRvKiBmcmFtZSA9IGRvY3VtZW50ID8gZG9jdW1lbnQt
PmZyYW1lKCkgOiBudWxscHRyOworICAgIHJldHVybiBmcmFtZSA/IGZyYW1lLT5sb2FkZXIoKS5j
bGllbnQoKS5hY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkgOiBudWxscHRyOwogfQogI2VuZGlm
CiAKK0ludFBvaW50IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnJlbW90ZUZyYW1lT2Zmc2V0KCkgY29u
c3QKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7CisgICAgYXV0byog
ZnJhbWUgPSBkb2N1bWVudCA/IGRvY3VtZW50LT5mcmFtZSgpIDogbnVsbHB0cjsKKyAgICByZXR1
cm4gZnJhbWUgPyBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuYWNjZXNzaWJpbGl0eVJlbW90ZUZy
YW1lT2Zmc2V0KCkgOiBJbnRQb2ludCgpOworfQorCiBEb2N1bWVudCogQWNjZXNzaWJpbGl0eU9i
amVjdDo6ZG9jdW1lbnQoKSBjb25zdAogewogICAgIGF1dG8qIGZyYW1lVmlldyA9IGRvY3VtZW50
RnJhbWVWaWV3KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5oCmluZGV4IDRkMjBmNTVhNTQ0Yy4uNjg0MmE3MTk0OGNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaApA
QCAtMTAyLDYgKzEwMiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQorICAgIGJvb2wgaXNBWFJlbW90ZUZyYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
d0luc3RhbmNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNB
Y2Nlc3NpYmlsaXR5U1ZHUm9vdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBp
c0FjY2Vzc2liaWxpdHlUYWJsZUluc3RhbmNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KQEAgLTQ2NCw4ICs0NjUsMTIgQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgUmVtb3RlQVhPYmplY3RSZWYgcmVtb3RlUGFyZW50T2JqZWN0KCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgSW50UG9pbnQgcmVtb3RlRnJhbWVPZmZzZXQoKSBjb25zdCBvdmVycmlkZTsKICAg
ICBGbG9hdFJlY3QgY29udmVydFJlY3RUb1BsYXRmb3JtU3BhY2UoY29uc3QgRmxvYXRSZWN0Jiwg
QWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmV0YWlu
UHRyPGlkPiByZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG5pbDsgfQogI2VuZGlmCisgICAgYm9vbCBoYXNSZW1vdGVGcmFtZUNoaWxkKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIFBhZ2UqIHBhZ2UoKSBjb25zdCBvdmVy
cmlkZTsKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCBvdmVycmlkZTsKICAgICBMb2Nh
bEZyYW1lVmlldyogZG9jdW1lbnRGcmFtZVZpZXcoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwCmluZGV4IGVlOGFiZWMzZDdiNS4uMmYxMmVmNzUzZTRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5jcHAKQEAgLTI0MTMsNyArMjQxMyw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6YWRkQXR0YWNobWVudENoaWxkcmVuKCkKIAogICAgIC8vIExvY2FsRnJhbWVWaWV3J3Mg
bmVlZCB0byBiZSBpbnNlcnRlZCBpbnRvIHRoZSBBWCBoaWVyYXJjaHkgd2hlbiBlbmNvdW50ZXJl
ZC4KICAgICBXaWRnZXQqIHdpZGdldCA9IHdpZGdldEZvckF0dGFjaG1lbnRWaWV3KCk7Ci0gICAg
aWYgKCF3aWRnZXQgfHwgIXdpZGdldC0+aXNMb2NhbEZyYW1lVmlldygpKQorICAgIGlmICghd2lk
Z2V0IHx8ICEod2lkZ2V0LT5pc0xvY2FsRnJhbWVWaWV3KCkgfHwgd2lkZ2V0LT5pc1JlbW90ZUZy
YW1lVmlldygpKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGFkZENoaWxkKGF4T2JqZWN0
Q2FjaGUoKS0+Z2V0T3JDcmVhdGUod2lkZ2V0KSk7CkBAIC0yNTY4LDcgKzI1NjgsNyBAQCB2b2lk
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENoaWxkcmVuKCkKICAgICAgICAgYXV0byBv
d25lcnMgPSBvYmplY3Qub3duZXJzKCk7CiAgICAgICAgIGlmIChvd25lcnMuc2l6ZSgpICYmICFv
d25lcnMuY29udGFpbnModGhpcykpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIAorCiAg
ICAgICAgIGFkZENoaWxkKCZvYmplY3QpOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAKaW5kZXgg
MmJiYzMwODdiOWY4Li45YmEyNjliZTM5NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwCkBAIC0yNywxMCAr
MjcsMTIgQEAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oIgogCiAjaW5jbHVk
ZSAiQVhPYmplY3RDYWNoZS5oIgorI2luY2x1ZGUgIkFYUmVtb3RlRnJhbWUuaCIKICNpbmNsdWRl
ICJBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiTG9jYWxGcmFtZS5oIgogI2luY2x1ZGUgIkxvY2FsRnJhbWVWaWV3
LmgiCisjaW5jbHVkZSAiUmVtb3RlRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVu
dC5oIgogI2luY2x1ZGUgIldpZGdldC5oIgogCkBAIC01Miw2ICs1NCwxNCBAQCBBY2Nlc3NpYmls
aXR5U2Nyb2xsVmlldzo6fkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KCkKIHZvaWQgQWNjZXNzaWJp
bGl0eVNjcm9sbFZpZXc6OmRldGFjaFJlbW90ZVBhcnRzKEFjY2Vzc2liaWxpdHlEZXRhY2htZW50
VHlwZSBkZXRhY2htZW50VHlwZSkKIHsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpkZXRhY2hS
ZW1vdGVQYXJ0cyhkZXRhY2htZW50VHlwZSk7CisKKyAgICBhdXRvKiByZW1vdGVGcmFtZVZpZXcg
PSBkeW5hbWljRG93bmNhc3Q8UmVtb3RlRnJhbWVWaWV3PihtX3Njcm9sbFZpZXcuZ2V0KCkpOwor
ICAgIGlmIChyZW1vdGVGcmFtZVZpZXcgJiYgbV9yZW1vdGVGcmFtZSAmJiAoZGV0YWNobWVudFR5
cGUgPT0gQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlOjpFbGVtZW50RGVzdHJveWVkIHx8IGRl
dGFjaG1lbnRUeXBlID09IEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZTo6Q2FjaGVEZXN0cm95
ZWQpKSB7CisgICAgICAgIGF1dG8mIHJlbW90ZUZyYW1lID0gcmVtb3RlRnJhbWVWaWV3LT5mcmFt
ZSgpOworICAgICAgICByZW1vdGVGcmFtZS51bmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVz
KG1fcmVtb3RlRnJhbWUtPnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgICAgICBtX3JlbW90ZUZy
YW1lID0gbnVsbHB0cjsKKyAgICB9CisKICAgICBtX3Njcm9sbFZpZXcgPSBudWxscHRyOwogICAg
IG1fZnJhbWVPd25lckVsZW1lbnQgPSBudWxscHRyOwogfQpAQCAtMTc3LDggKzE4NywxMCBAQCBB
Y2Nlc3NpYmlsaXR5U2Nyb2xsYmFyKiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkQ2hpbGRT
Y3JvbGxiYXIoU2Nyb2xsYmFyKiBzYwogdm9pZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6Y2xl
YXJDaGlsZHJlbigpCiB7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6Y2xlYXJDaGlsZHJlbigp
OworCiAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhciA9IG51bGxwdHI7CiAgICAgbV9ob3Jpem9udGFs
U2Nyb2xsYmFyID0gbnVsbHB0cjsKKwogICAgIG1fY2hpbGRyZW5EaXJ0eSA9IGZhbHNlOwogfQog
CkBAIC0xOTEsMTEgKzIwMyw0MyBAQCBib29sIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojpjb21w
dXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0CiAgICAgcmV0dXJuIHdlYkFyZWEtPmFj
Y2Vzc2liaWxpdHlJc0lnbm9yZWQoKTsKIH0KIAordm9pZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dzo6YWRkUmVtb3RlRnJhbWVDaGlsZCgpCit7CisgICAgaWYgKCFpczxSZW1vdGVGcmFtZVZpZXc+
KG1fc2Nyb2xsVmlldykpCisgICAgICAgIHJldHVybjsKKyAgICBXZWFrUHRyIGNhY2hlID0gYXhP
YmplY3RDYWNoZSgpOworICAgIGlmICghY2FjaGUpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
ICghbV9yZW1vdGVGcmFtZSkgeworICAgICAgICAvLyBNYWtlIHRoZSBmYXV4IGVsZW1lbnQgdGhh
dCByZXByZXNlbnRzIHRoZSByZW1vdGUgdHJhbnNmZXIgZWxlbWVudCBmb3IgQVguCisgICAgICAg
IGF1dG8mIHJlbW90ZUZyYW1lID0gZG93bmNhc3Q8UmVtb3RlRnJhbWVWaWV3PigqbV9zY3JvbGxW
aWV3KS5mcmFtZSgpOworICAgICAgICBtX3JlbW90ZUZyYW1lID0gZG93bmNhc3Q8QVhSZW1vdGVG
cmFtZT4oY2FjaGUtPmNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6UmVtb3RlRnJhbWUpKTsKKyAg
ICAgICAgbV9yZW1vdGVGcmFtZS0+c2V0UGFyZW50KHRoaXMpOworCisjaWYgUExBVEZPUk0oTUFD
KQorICAgICAgICAvLyBHZW5lcmF0ZSBhIG5ldyB0b2tlbiBhbmQgcGFzcyBpdCBiYWNrIHRvIHRo
ZSBvdGhlciByZW1vdGUgZnJhbWUgc28gaXQgY2FuIGJpbmQgdGhlc2Ugb2JqZWN0cyB0b2dldGhl
ci4KKyAgICAgICAgYXV0byBnZW5lcmF0ZWRUb2tlbiA9IG1fcmVtb3RlRnJhbWUtPmdlbmVyYXRl
UmVtb3RlVG9rZW4oKTsKKyAgICAgICAgcmVtb3RlRnJhbWUuYmluZFJlbW90ZUFjY2Vzc2liaWxp
dHlGcmFtZXMoZ2V0cGlkKCksIGdlbmVyYXRlZFRva2VuLCBbdGhpcywgJnJlbW90ZUZyYW1lLCBw
cm90ZWN0ZWRBY2Nlc3NiaWxpdHlSZW1vdGVGcmFtZSA9IFJlZlB0ciB7IG1fcmVtb3RlRnJhbWUg
fV0gKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiB0b2tlbiwgaW50IHByb2Nlc3NJZGVudGlmaWVy
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHByb3RlY3RlZEFjY2Vzc2JpbGl0eVJlbW90ZUZyYW1l
LT5pbml0aWFsaXplUGxhdGZvcm1FbGVtZW50V2l0aFJlbW90ZVRva2VuKHRva2VuLCBwcm9jZXNz
SWRlbnRpZmllcik7CisKKyAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgcmVtb3RlIHNpZGUgd2l0
aCB0aGUgb2Zmc2V0IG9mIHRoaXMgb2JqZWN0IHNvIGl0IGNhbiBjYWxjdWxhdGUgZnJhbWVzIGNv
cnJlY3RseS4KKyAgICAgICAgICAgIGF1dG8gbG9jYXRpb24gPSBlbGVtZW50UmVjdCgpLmxvY2F0
aW9uKCk7CisgICAgICAgICAgICByZW1vdGVGcmFtZS51cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2li
aWxpdHlPZmZzZXQoZmxvb3JlZEludFBvaW50KGxvY2F0aW9uKSk7CisgICAgICAgIH0pOworI2Vu
ZGlmCisgICAgfSBlbHNlCisgICAgICAgIG1fcmVtb3RlRnJhbWUtPnNldFBhcmVudCh0aGlzKTsK
KworICAgIGFkZENoaWxkKG1fcmVtb3RlRnJhbWUuZ2V0KCkpOworfQorCiB2b2lkIEFjY2Vzc2li
aWxpdHlTY3JvbGxWaWV3OjphZGRDaGlsZHJlbigpCiB7CiAgICAgQVNTRVJUKCFtX2NoaWxkcmVu
SW5pdGlhbGl6ZWQpOwogICAgIG1fY2hpbGRyZW5Jbml0aWFsaXplZCA9IHRydWU7CiAKKyAgICBh
ZGRSZW1vdGVGcmFtZUNoaWxkKCk7CiAgICAgYWRkQ2hpbGQod2ViQXJlYU9iamVjdCgpKTsKICAg
ICB1cGRhdGVTY3JvbGxiYXJzKCk7CiB9CkBAIC0yMDMsNyArMjQ3LDcgQEAgdm9pZCBBY2Nlc3Np
YmlsaXR5U2Nyb2xsVmlldzo6YWRkQ2hpbGRyZW4oKQogQWNjZXNzaWJpbGl0eU9iamVjdCogQWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXc6OndlYkFyZWFPYmplY3QoKSBjb25zdAogewogICAgIGF1dG8q
IGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsKLSAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1
bWVudC0+aGFzTGl2aW5nUmVuZGVyVHJlZSgpKQorICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3Vt
ZW50LT5oYXNMaXZpbmdSZW5kZXJUcmVlKCkgfHwgbV9yZW1vdGVGcmFtZSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICBpZiAoYXV0byogY2FjaGUgPSBheE9iamVjdENhY2hlKCkpCkBA
IC0yMzQsOSArMjc4LDE1IEBAIExheW91dFJlY3QgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmVs
ZW1lbnRSZWN0KCkgY29uc3QKIAogRG9jdW1lbnQqIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojpk
b2N1bWVudCgpIGNvbnN0CiB7Ci0gICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGR5bmFtaWNEb3du
Y2FzdDxMb2NhbEZyYW1lVmlldz4obV9zY3JvbGxWaWV3LmdldCgpKSkgeworICAgIGlmIChhdXRv
KiBmcmFtZVZpZXcgPSBkeW5hbWljRG93bmNhc3Q8TG9jYWxGcmFtZVZpZXc+KG1fc2Nyb2xsVmll
dy5nZXQoKSkpCiAgICAgICAgIHJldHVybiBmcmFtZVZpZXctPmZyYW1lKCkuZG9jdW1lbnQoKTsK
KworICAgIC8vIEZvciB0aGUgUmVtb3RlRnJhbWVWaWV3IGNhc2UsIHdlIG5lZWQgdG8gcmV0dXJu
IHRoZSBkb2N1bWVudCBvZiBvdXIgaG9zdGluZyBwYXJlbnQgc28gYXhPYmplY3RDYWNoZSgpIHJl
c29sdmVzIGNvcnJlY3RseS4KKyAgICBpZiAoYXV0byogcmVtb3RlRnJhbWVWaWV3ID0gZHluYW1p
Y0Rvd25jYXN0PFJlbW90ZUZyYW1lVmlldz4obV9zY3JvbGxWaWV3LmdldCgpKSkgeworICAgICAg
ICBpZiAoYXV0byogb3duZXIgPSByZW1vdGVGcmFtZVZpZXctPmZyYW1lKCkub3duZXJFbGVtZW50
KCkpCisgICAgICAgICAgICByZXR1cm4gJihvd25lci0+ZG9jdW1lbnQoKSk7CiAgICAgfQorCiAg
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRvY3VtZW50KCk7CiB9CiAKQEAgLTI1OSw4
ICszMDksMTAgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6
OnBhcmVudE9iamVjdCgpIGNvbnN0CiAgICAgV2Vha1B0ciBvd25lciA9IG1fZnJhbWVPd25lckVs
ZW1lbnQuZ2V0KCk7CiAgICAgaWYgKGF1dG8qIGxvY2FsRnJhbWVWaWV3ID0gZHluYW1pY0Rvd25j
YXN0PExvY2FsRnJhbWVWaWV3PihtX3Njcm9sbFZpZXcuZ2V0KCkpKQogICAgICAgICBvd25lciA9
IGxvY2FsRnJhbWVWaWV3LT5mcmFtZSgpLm93bmVyRWxlbWVudCgpOworICAgIGVsc2UgaWYgKGF1
dG8qIHJlbW90ZUZyYW1lVmlldyA9IGR5bmFtaWNEb3duY2FzdDxSZW1vdGVGcmFtZVZpZXc+KG1f
c2Nyb2xsVmlldy5nZXQoKSkpCisgICAgICAgIG93bmVyID0gcmVtb3RlRnJhbWVWaWV3LT5mcmFt
ZSgpLm93bmVyRWxlbWVudCgpOwogCi0gICAgaWYgKGNhY2hlICYmIG93bmVyICYmIG93bmVyLT5y
ZW5kZXJlcigpKQorICAgIGlmIChvd25lciAmJiBvd25lci0+cmVuZGVyZXIoKSkKICAgICAgICAg
cmV0dXJuIGNhY2hlLT5nZXRPckNyZWF0ZShvd25lci5nZXQoKSk7CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlTY3JvbGxWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlTY3JvbGxWaWV3LmgKaW5kZXggNTU3MDQ0NjcxYzdkLi41MjVhYzc4M2ZiYjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZp
ZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3Jv
bGxWaWV3LmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAor
Y2xhc3MgQVhSZW1vdGVGcmFtZTsKIGNsYXNzIEFjY2Vzc2liaWxpdHlTY3JvbGxiYXI7CiBjbGFz
cyBTY3JvbGxiYXI7CiBjbGFzcyBTY3JvbGxWaWV3OwpAQCAtNTQsNyArNTUsOCBAQCBwcml2YXRl
OgogICAgIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdCBvdmVycmlk
ZTsKICAgICBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXdJbnN0YW5jZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIGlzRW5hYmxlZCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICAKKyAgICBib29sIGhhc1JlbW90ZUZyYW1lQ2hpbGQo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3JlbW90ZUZyYW1lOyB9CisKICAgICBib29sIGlzQXR0
YWNobWVudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFBsYXRmb3JtV2lkZ2V0IHBsYXRmb3JtV2lk
Z2V0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgV2lkZ2V0KiB3aWRnZXRGb3JBdHRhY2htZW50Vmll
dygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGN1cnJlbnRTY3JvbGxWaWV3KCk7IH0KQEAgLTY5
LDYgKzcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEZvY3VzZWQoYm9vbCkgb3ZlcnJpZGU7
CiAgICAgYm9vbCBjYW5TZXRGb2N1c0F0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJv
b2wgaXNGb2N1c2VkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGRSZW1vdGVGcmFtZUNo
aWxkKCk7CiAKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCBvdmVycmlkZTsKICAgICBM
b2NhbEZyYW1lVmlldyogZG9jdW1lbnRGcmFtZVZpZXcoKSBjb25zdCBvdmVycmlkZTsKQEAgLTg1
LDYgKzg4LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gbV9o
b3Jpem9udGFsU2Nyb2xsYmFyOwogICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBtX3Zl
cnRpY2FsU2Nyb2xsYmFyOwogICAgIGJvb2wgbV9jaGlsZHJlbkRpcnR5OworICAgIFJlZlB0cjxB
WFJlbW90ZUZyYW1lPiBtX3JlbW90ZUZyYW1lOwogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KaW5kZXggMmYyOWI3
MmZmZTdlLi45MjQzYWQ2YmQzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
SU9TLm1tCkBAIC0xMTEyLDYgKzExMTIsNyBAQCBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIgKmFuY2VzdG9yV2l0aFJvbGUoY29uc3QgQVhDb3JlT2JqZWN0JiBkZXNjZW5kYQogICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Oklnbm9yZWQ6CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6TGluZUJyZWFrOgogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlByZXNlbnRhdGlv
bmFsOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJlbW90ZUZyYW1lOgogICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd246CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9B
WElzb2xhdGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0
ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCmluZGV4IDEwMTQ1NDYyNzhmMy4uMTc3ZDkzOTdh
MGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcApAQCAtMzc4LDYgKzM3OCwxMCBAQCB2
b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVQcm9wZXJ0aWVzKGNvbnN0IFJlZjxBY2Nl
c3NpYmlsaXR5T2JqZWN0PiYgYXhPYgogI2VuZGlmCiAKICAgICBzZXRPYmplY3RQcm9wZXJ0eShB
WFByb3BlcnR5TmFtZTo6SW50ZXJuYWxMaW5rRWxlbWVudCwgb2JqZWN0LmludGVybmFsTGlua0Vs
ZW1lbnQoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Okhhc1JlbW90ZUZyYW1l
Q2hpbGQsIG9iamVjdC5oYXNSZW1vdGVGcmFtZUNoaWxkKCkpOworICAgIC8vIERvbid0IGR1cGxp
Y2F0ZSB0aGUgcmVtb3RlRnJhbWVPZmZzZXQgZm9yIGV2ZXJ5IG9iamVjdC4gSnVzdCBzdG9yZSBp
biB0aGUgV2ViQXJlYS4KKyAgICBpZiAob2JqZWN0LmlzV2ViQXJlYSgpKQorICAgICAgICBzZXRQ
cm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6UmVtb3RlRnJhbWVPZmZzZXQsIG9iamVjdC5yZW1vdGVG
cmFtZU9mZnNldCgpKTsKIAogICAgIGluaXRpYWxpemVQbGF0Zm9ybVByb3BlcnRpZXMoYXhPYmpl
Y3QpOwogfQpAQCAtNDY0LDYgKzQ2OCw3IEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6c2V0UHJv
cGVydHkoQVhQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBBWFByb3BlcnR5VmFsdWVWCiAgICAg
ICAgIFtdKE9wdGlvblNldDxBWEFuY2VzdG9yRmxhZz4mIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5
cGVkVmFsdWUuaXNFbXB0eSgpOyB9LAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBbXShS
ZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gIXR5cGVk
VmFsdWU7IH0sCisgICAgICAgIFtdKFJldGFpblB0cjxpZD4mIHR5cGVkVmFsdWUpIHsgcmV0dXJu
ICF0eXBlZFZhbHVlOyB9LAogI2VuZGlmCiAgICAgICAgIFtdKEluc2lkZUxpbmsmIHR5cGVkVmFs
dWUpIHsgcmV0dXJuIHR5cGVkVmFsdWUgPT0gSW5zaWRlTGluaygpOyB9LAogICAgICAgICBbXShW
ZWN0b3I8VmVjdG9yPEFYSUQ+PiYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZS5pc0Vt
cHR5KCk7IH0sCkBAIC0xMjA2LDYgKzEyMTEsMjEgQEAgTGF5b3V0UmVjdCBBWElzb2xhdGVkT2Jq
ZWN0OjplbGVtZW50UmVjdCgpIGNvbnN0CiAgICAgfSk7CiB9CiAKK0ludFBvaW50IEFYSXNvbGF0
ZWRPYmplY3Q6OnJlbW90ZUZyYW1lT2Zmc2V0KCkgY29uc3QKK3sKKyAgICBhdXRvKiB3ZWJBcmVh
ID0gQWNjZXNzaWJpbGl0eTo6ZmluZEFuY2VzdG9yPEFYSXNvbGF0ZWRPYmplY3Q+KCp0aGlzLCBm
YWxzZSwgW10gKGNvbnN0IGF1dG8mIG9iamVjdCkgeworICAgICAgICByZXR1cm4gb2JqZWN0Lmlz
V2ViQXJlYSgpOworICAgIH0pOworCisgICAgaWYgKCF3ZWJBcmVhKQorICAgICAgICByZXR1cm4g
eyB9OworCisgICAgaWYgKGF1dG8gcG9pbnQgPSB3ZWJBcmVhLT5vcHRpb25hbEF0dHJpYnV0ZVZh
bHVlPEludFBvaW50PihBWFByb3BlcnR5TmFtZTo6UmVtb3RlRnJhbWVPZmZzZXQpKQorICAgICAg
ICByZXR1cm4gKnBvaW50OworCisgICAgcmV0dXJuIHsgfTsKK30KKwogRmxvYXRQb2ludCBBWElz
b2xhdGVkT2JqZWN0OjpzY3JlZW5SZWxhdGl2ZVBvc2l0aW9uKCkgY29uc3QKIHsKICAgICBpZiAo
YXV0byBwb2ludCA9IG9wdGlvbmFsQXR0cmlidXRlVmFsdWU8RmxvYXRQb2ludD4oQVhQcm9wZXJ0
eU5hbWU6OlNjcmVlblJlbGF0aXZlUG9zaXRpb24pKQpAQCAtMTIyOSwyMiArMTI0OSwyMyBAQCBG
bG9hdFBvaW50IEFYSXNvbGF0ZWRPYmplY3Q6OnNjcmVlblJlbGF0aXZlUG9zaXRpb24oKSBjb25z
dAogCiBGbG9hdFJlY3QgQVhJc29sYXRlZE9iamVjdDo6cmVsYXRpdmVGcmFtZSgpIGNvbnN0CiB7
CisgICAgRmxvYXRSZWN0IHJlbGF0aXZlRnJhbWU7CisKICAgICBpZiAoYXV0byBjYWNoZWRSZWxh
dGl2ZUZyYW1lID0gb3B0aW9uYWxBdHRyaWJ1dGVWYWx1ZTxJbnRSZWN0PihBWFByb3BlcnR5TmFt
ZTo6UmVsYXRpdmVGcmFtZSkpIHsKICAgICAgICAgLy8gV2Ugc2hvdWxkIG5vdCBoYXZlIGNhY2hl
ZCBhIHJlbGF0aXZlIGZyYW1lIGZvciBlbGVtZW50cyB0aGF0IGdldCB0aGVpciBnZW9tZXRyeSBm
cm9tIHRoZWlyIGNoaWxkcmVuLgogICAgICAgICBBU1NFUlQoIW1fZ2V0c0dlb21ldHJ5RnJvbUNo
aWxkcmVuKTsKLSAgICAgICAgcmV0dXJuICpjYWNoZWRSZWxhdGl2ZUZyYW1lOwotICAgIH0KLQot
ICAgIGlmIChtX2dldHNHZW9tZXRyeUZyb21DaGlsZHJlbikgeworICAgICAgICByZWxhdGl2ZUZy
YW1lID0gKmNhY2hlZFJlbGF0aXZlRnJhbWU7CisgICAgfSBlbHNlIGlmIChtX2dldHNHZW9tZXRy
eUZyb21DaGlsZHJlbikgewogICAgICAgICBhdXRvIGZyYW1lID0gZW5jbG9zaW5nSW50UmVjdChy
ZWxhdGl2ZUZyYW1lRnJvbUNoaWxkcmVuKCkpOwogICAgICAgICBpZiAoIWZyYW1lLmlzRW1wdHko
KSkKLSAgICAgICAgICAgIHJldHVybiBmcmFtZTsKKyAgICAgICAgICAgIHJlbGF0aXZlRnJhbWUg
PSBmcmFtZTsKICAgICAgICAgLy8gRWl0aGVyIHdlIGhhZCBubyBjaGlsZHJlbiwgb3Igb3VyIGNo
aWxkcmVuIGhhZCBlbXB0eSBmcmFtZXMuIFRoZSByaWdodCB0aGluZyB0byBkbyB3b3VsZCBiZSB0
byByZXR1cm4KICAgICAgICAgLy8gYSByZWN0IGF0IHRoZSBwb3NpdGlvbiBvZiB0aGUgbmVhcmVz
dCByZW5kZXIgdHJlZSBhbmNlc3RvciB3aXRoIHNvbWUgbWFkZS11cCBzaXplIChBY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdDo6Ym91bmRpbmdCb3hSZWN0IGRvZXMgdGhpcykuCiAgICAgICAgIC8vIEhv
d2V2ZXIsIHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIHRoZSByZW5kZXIgdHJlZSBpbiB0aGlzIGNv
bnRleHQgKG9ubHkgdGhlIEFYIGlzb2xhdGVkIHRyZWUsIHdoaWNoIGlzIHRvbyBzcGFyc2UgZm9y
IHRoaXMgcHVycG9zZSksIHNvCiAgICAgICAgIC8vIHVudGlsIHdlIGNhY2hlIHRoZSBuZWNlc3Nh
cnkgaW5mb3JtYXRpb24gbGV0J3MgZ28gdG8gdGhlIG1haW4tdGhyZWFkLgogICAgIH0gZWxzZSBp
ZiAocm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNvbHVtbiB8fCByb2xlVmFsdWUo
KSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFibGVIZWFkZXJDb250YWluZXIpCi0gICAgICAgIHJl
dHVybiBleHBvc2VkVGFibGVBbmNlc3RvcigpID8gcmVsYXRpdmVGcmFtZUZyb21DaGlsZHJlbigp
IDogRmxvYXRSZWN0KCk7CisgICAgICAgIHJlbGF0aXZlRnJhbWUgPSBleHBvc2VkVGFibGVBbmNl
c3RvcigpID8gcmVsYXRpdmVGcmFtZUZyb21DaGlsZHJlbigpIDogRmxvYXRSZWN0KCk7CisKIAog
ICAgIC8vIE1vY2sgb2JqZWN0cyBhbmQgU1ZHIG9iamVjdHMgbmVlZCB1c2UgdGhlIG1haW4gdGhy
ZWFkIHNpbmNlIHRoZXkgZG8gbm90IGhhdmUgcmVuZGVyIG5vZGVzIGFuZCBhcmUgbm90IHBhaW50
ZWQgd2l0aCBsYXllcnMsIHJlc3BlY3RpdmVseS4KICAgICAvLyBGSVhNRTogUmVtb3ZlIGlzTm9u
TGF5ZXJTVkdPYmplY3Qgd2hlbiBMQlNFIGlzIGVuYWJsZWQgJiBTVkcgZnJhbWVzIGFyZSBjYWNo
ZWQuCkBAIC0xMjY2LDYgKzEyODcsOCBAQCBGbG9hdFJlY3QgQVhJc29sYXRlZE9iamVjdDo6cmVs
YXRpdmVGcmFtZSgpIGNvbnN0CiAgICAgaWYgKGFuY2VzdG9yICYmIGZyYW1lUmVjdC5sb2NhdGlv
bigpID09IEZsb2F0UG9pbnQoKSkKICAgICAgICAgZnJhbWVSZWN0LnNldExvY2F0aW9uKGFuY2Vz
dG9yLT5yZWxhdGl2ZUZyYW1lKCkubG9jYXRpb24oKSk7CiAKKyAgICBhdXRvIHJlbW90ZU9mZnNl
dCA9IHJlbW90ZUZyYW1lT2Zmc2V0KCk7CisgICAgZnJhbWVSZWN0Lm1vdmVCeShGbG9hdFBvaW50
KHJlbW90ZU9mZnNldCkpOwogICAgIHJldHVybiBmcmFtZVJlY3Q7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmpl
Y3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRPYmplY3QuaAppbmRleCBkMmE2NmMyZjUzZTQuLmRlODI3ZDVmZTAxNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVj
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRPYmplY3QuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZ
X0lTT0xBVEVEX1RSRUUpCiAKICNpbmNsdWRlICJBWENvcmVPYmplY3QuaCIKKyNpbmNsdWRlICJB
WElzb2xhdGVkVHJlZS5oIgogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJJ
bnRQb2ludC5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKQEAgLTIxNSw2ICsyMTYsNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgaXNGaWxlVXBsb2FkQnV0dG9uKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0ZpbGVVcGxvYWRCdXR0b24p
OyB9CiAgICAgYm9vbCBpc01ldGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gYm9vbEF0dHJpYnV0
ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01ldGVyKTsgfTsKICAgICBGbG9hdFBvaW50IHNjcmVl
blJlbGF0aXZlUG9zaXRpb24oKSBjb25zdCBmaW5hbDsKKyAgICBJbnRQb2ludCByZW1vdGVGcmFt
ZU9mZnNldCgpIGNvbnN0IGZpbmFsOwogICAgIEZsb2F0UmVjdCByZWxhdGl2ZUZyYW1lKCkgY29u
c3QgZmluYWw7CiAgICAgYm9vbCBoYXNDYWNoZWRSZWxhdGl2ZUZyYW1lKCkgY29uc3QgeyByZXR1
cm4gb3B0aW9uYWxBdHRyaWJ1dGVWYWx1ZTxJbnRSZWN0PihBWFByb3BlcnR5TmFtZTo6UmVsYXRp
dmVGcmFtZSkuaGFzX3ZhbHVlKCk7IH0KICNpZiBQTEFURk9STShNQUMpCkBAIC0yNjMsNyArMjY1
LDcgQEAgcHJpdmF0ZToKICAgICBBWElzb2xhdGVkT2JqZWN0KiBhY2Nlc3NpYmlsaXR5SGl0VGVz
dChjb25zdCBJbnRQb2ludCYpIGNvbnN0IGZpbmFsOwogICAgIEFYSXNvbGF0ZWRPYmplY3QqIGZv
Y3VzZWRVSUVsZW1lbnQoKSBjb25zdCBmaW5hbDsKICAgICBBWENvcmVPYmplY3QqIGludGVybmFs
TGlua0VsZW1lbnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBvYmplY3RBdHRyaWJ1dGVWYWx1ZShB
WFByb3BlcnR5TmFtZTo6SW50ZXJuYWxMaW5rRWxlbWVudCk7IH0KLSAgICBBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3IgcmFkaW9CdXR0b25Hcm91cCgpIGNvbnN0IHsgcmV0dXJuIHRyZWUoKS0+
b2JqZWN0c0ZvcklEcyh2ZWN0b3JBdHRyaWJ1dGVWYWx1ZTxBWElEPihBWFByb3BlcnR5TmFtZTo6
UmFkaW9CdXR0b25Hcm91cCkpOyB9CisgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHJh
ZGlvQnV0dG9uR3JvdXAoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cmVlKCktPm9iamVjdHNGb3JJ
RHModmVjdG9yQXR0cmlidXRlVmFsdWU8QVhJRD4oQVhQcm9wZXJ0eU5hbWU6OlJhZGlvQnV0dG9u
R3JvdXApKTsgfQogICAgIEFYSXNvbGF0ZWRPYmplY3QqIHNjcm9sbEJhcihBY2Nlc3NpYmlsaXR5
T3JpZW50YXRpb24pIGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyBwbGFjZWhvbGRlclZhbHVlKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6
OlBsYWNlaG9sZGVyVmFsdWUpOyB9CiAgICAgU3RyaW5nIGV4cGFuZGVkVGV4dFZhbHVlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkV4
cGFuZGVkVGV4dFZhbHVlKTsgfQpAQCAtNDU2LDcgKzQ1OCw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBpc0FjY2Vzc2liaWxpdHlBUklBR3JpZEluc3RhbmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICBib29sIGlzQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93SW5zdGFuY2UoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5QVJJ
QUdyaWRDZWxsSW5zdGFuY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQotCisgICAg
Ym9vbCBpc0FYUmVtb3RlRnJhbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAg
IGJvb2wgaXNOYXRpdmVUZXh0Q29udHJvbCgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaXNMaXN0
Qm94T3B0aW9uKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc01vY2tPYmplY3QoKSBjb25zdCBm
aW5hbDsKQEAgLTUzNyw3ICs1MzksOSBAQCBwcml2YXRlOgogICAgIFN0cmluZyBuYW1lQXR0cmli
dXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0
eU5hbWU6Ok5hbWVBdHRyaWJ1dGUpOyB9CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgYm9vbCBo
YXNBcHBsZVBERkFubm90YXRpb25BdHRyaWJ1dGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBib29s
QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Okhhc0FwcGxlUERGQW5ub3RhdGlvbkF0dHJp
YnV0ZSk7IH0KKyAgICBSZXRhaW5QdHI8aWQ+IHJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkg
Y29uc3QgZmluYWw7CiAjZW5kaWYKKyAgICBib29sIGhhc1JlbW90ZUZyYW1lQ2hpbGQoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Okhhc1Jl
bW90ZUZyYW1lQ2hpbGQpOyB9CiAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1PREVM
X0VMRU1FTlQpCiAgICAgVmVjdG9yPFJldGFpblB0cjxpZD4+IG1vZGVsRWxlbWVudENoaWxkcmVu
KCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKaW5kZXggNjk2NjU4NDQ4ZjY1Li4xYmUz
Yjc5OTA1MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0
ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAog
I2luY2x1ZGUgIkFYSXNvbGF0ZWRPYmplY3QuaCIKICNpbmNsdWRlICJBWExvZ2dlci5oIgorI2lu
Y2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJs
ZVJvdy5oIgogI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAiTG9jYWxGcmFt
ZVZpZXcuaCIKQEAgLTIyNSw0NiArMjI2LDI2IEBAIFJlZlB0cjxBWElzb2xhdGVkT2JqZWN0PiBB
WElzb2xhdGVkVHJlZTo6b2JqZWN0Rm9ySUQoY29uc3QgQVhJRCBheElEKSBjb25zdAogICAgIHJl
dHVybiBheElELmlzVmFsaWQoKSA/IG1fcmVhZGVyVGhyZWFkTm9kZU1hcC5nZXQoYXhJRCkgOiBu
dWxscHRyOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBVPgotVmVjdG9yPFJlZlB0cjxBWENvcmVP
YmplY3Q+PiBBWElzb2xhdGVkVHJlZTo6b2JqZWN0c0ZvcklEcyhjb25zdCBVJiBheElEcykKK1Jl
ZlB0cjxBWElzb2xhdGVkT2JqZWN0PiBBWElzb2xhdGVkVHJlZTo6ZmV0Y2hPYmplY3RGb3JJREZy
b21NYWluVGhyZWFkKGNvbnN0IEFYSUQgYXhJRCkgY29uc3QKIHsKLSAgICBBU1NFUlQoIWlzTWFp
blRocmVhZCgpKTsKLQotICAgIFZlY3RvcjxSZWZQdHI8QVhDb3JlT2JqZWN0Pj4gcmVzdWx0Owot
ICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGF4SURzLnNpemUoKSk7Ci0gICAgZm9y
IChjb25zdCBhdXRvJiBheElEIDogYXhJRHMpIHsKLSAgICAgICAgUmVmUHRyIG9iamVjdCA9IG9i
amVjdEZvcklEKGF4SUQpOwotICAgICAgICBpZiAob2JqZWN0KSB7Ci0gICAgICAgICAgICByZXN1
bHQuYXBwZW5kKFdURk1vdmUob2JqZWN0KSk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgfQotCi0gICAgICAgIC8vIFRoZXJlIGlzIG5vIGlzb2xhdGVkIG9iamVjdCBmb3IgdGhpcyBB
WElELiBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlIGNvcnJlc3BvbmRpbmcgbGl2ZSBvYmplY3QgaXMg
aWdub3JlZC4KLSAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBsaXZlIG9iamVjdCBmb3IgdGhpcyBJ
RCBhbmQgaXQgaXMgYW4gaWdub3JlZCB0YXJnZXQgb2YgYSByZWxhdGlvbnNoaXAsIGNyZWF0ZSBh
biBpc29sYXRlZCBvYmplY3QgZm9yIGl0LgotICAgICAgICBvYmplY3QgPSBBY2Nlc3NpYmlsaXR5
OjpyZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8UmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+Pihb
JmF4SUQsIHRoaXNdICgpIC0+IFJlZlB0cjxBWElzb2xhdGVkT2JqZWN0PiB7Ci0gICAgICAgICAg
ICBhdXRvKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsKLSAgICAgICAgICAgIGlmICghY2FjaGUg
fHwgIWNhY2hlLT5yZWxhdGlvblRhcmdldElEcygpLmNvbnRhaW5zKGF4SUQpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAgICAgICBSZWZQdHIgYXhPYmplY3QgPSBj
YWNoZS0+b2JqZWN0Rm9ySUQoYXhJRCk7Ci0gICAgICAgICAgICBpZiAoIWF4T2JqZWN0IHx8ICFh
eE9iamVjdC0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKQotICAgICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwotCi0gICAgICAgICAgICBhdXRvIG9iamVjdCA9IEFYSXNvbGF0ZWRPYmplY3Q6
OmNyZWF0ZSgqYXhPYmplY3QsIGNvbnN0X2Nhc3Q8QVhJc29sYXRlZFRyZWUqPih0aGlzKSk7Ci0g
ICAgICAgICAgICBBU1NFUlQoYXhPYmplY3QtPndyYXBwZXIoKSk7Ci0gICAgICAgICAgICBvYmpl
Y3QtPmF0dGFjaFBsYXRmb3JtV3JhcHBlcihheE9iamVjdC0+d3JhcHBlcigpKTsKLSAgICAgICAg
ICAgIHJldHVybiBvYmplY3Q7Ci0gICAgICAgIH0pOwotICAgICAgICBpZiAob2JqZWN0KSB7Ci0g
ICAgICAgICAgICBtX3JlYWRlclRocmVhZE5vZGVNYXAuYWRkKGF4SUQsICpvYmplY3QpOwotICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChXVEZNb3ZlKG9iamVjdCkpOwotICAgICAgICB9Ci0gICAg
fQotICAgIHJlc3VsdC5zaHJpbmtUb0ZpdCgpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgLy8g
VGhlcmUgaXMgbm8gaXNvbGF0ZWQgb2JqZWN0IGZvciB0aGlzIEFYSUQuIFRoaXMgY2FuIGhhcHBl
biBpZiB0aGUgY29ycmVzcG9uZGluZyBsaXZlIG9iamVjdCBpcyBpZ25vcmVkLgorICAgIC8vIElm
IHRoZXJlIGlzIGEgbGl2ZSBvYmplY3QgZm9yIHRoaXMgSUQgYW5kIGl0IGlzIGFuIGlnbm9yZWQg
dGFyZ2V0IG9mIGEgcmVsYXRpb25zaGlwLCBjcmVhdGUgYW4gaXNvbGF0ZWQgb2JqZWN0IGZvciBp
dC4KKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhyZWFk
PFJlZlB0cjxBWElzb2xhdGVkT2JqZWN0Pj4oWyZheElELCB0aGlzXSAoKSAtPiBSZWZQdHI8QVhJ
c29sYXRlZE9iamVjdD4geworICAgICAgICBhdXRvKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsK
KyAgICAgICAgaWYgKCFjYWNoZSB8fCAhY2FjaGUtPnJlbGF0aW9uVGFyZ2V0SURzKCkuY29udGFp
bnMoYXhJRCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBSZWZQdHIg
YXhPYmplY3QgPSBjYWNoZS0+b2JqZWN0Rm9ySUQoYXhJRCk7CisgICAgICAgIGlmICghYXhPYmpl
Y3QgfHwgIWF4T2JqZWN0LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBhdXRvIG9iamVjdCA9IEFYSXNvbGF0ZWRPYmplY3Q6
OmNyZWF0ZSgqYXhPYmplY3QsIGNvbnN0X2Nhc3Q8QVhJc29sYXRlZFRyZWUqPih0aGlzKSk7Cisg
ICAgICAgIEFTU0VSVChheE9iamVjdC0+d3JhcHBlcigpKTsKKyAgICAgICAgb2JqZWN0LT5hdHRh
Y2hQbGF0Zm9ybVdyYXBwZXIoYXhPYmplY3QtPndyYXBwZXIoKSk7CisgICAgICAgIHJldHVybiBv
YmplY3Q7CisgICAgfSk7CiB9CiAKLQogdm9pZCBBWElzb2xhdGVkVHJlZTo6Z2VuZXJhdGVTdWJ0
cmVlKEFjY2Vzc2liaWxpdHlPYmplY3QmIGF4T2JqZWN0KQogewogICAgIEFYVFJBQ0UoIkFYSXNv
bGF0ZWRUcmVlOjpnZW5lcmF0ZVN1YnRyZWUiX3MpOwpAQCAtNjYwLDYgKzY0MSwxMiBAQCB2b2lk
IEFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2RlUHJvcGVydGllcyhBWENvcmVPYmplY3QmIGF4T2Jq
ZWN0LCBjb25zdCBBWFByb3BlcgogICAgICAgICBjYXNlIEFYUHJvcGVydHlOYW1lOjpQb3NJblNl
dDoKICAgICAgICAgICAgIHByb3BlcnR5TWFwLnNldChBWFByb3BlcnR5TmFtZTo6UG9zSW5TZXQs
IGF4T2JqZWN0LnBvc0luU2V0KCkpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
QVhQcm9wZXJ0eU5hbWU6OlJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50OgorICAgICAgICAgICAg
cHJvcGVydHlNYXAuc2V0KEFYUHJvcGVydHlOYW1lOjpSZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVu
dCwgYXhPYmplY3QucmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBBWFByb3BlcnR5TmFtZTo6SGFzUmVtb3RlRnJhbWVDaGlsZDoK
KyAgICAgICAgICAgIHByb3BlcnR5TWFwLnNldChBWFByb3BlcnR5TmFtZTo6SGFzUmVtb3RlRnJh
bWVDaGlsZCwgYXhPYmplY3QuaGFzUmVtb3RlRnJhbWVDaGlsZCgpKTsKKyAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIEFYUHJvcGVydHlOYW1lOjpSb2xlRGVzY3JpcHRpb246CiAgICAg
ICAgICAgICBwcm9wZXJ0eU1hcC5zZXQoQVhQcm9wZXJ0eU5hbWU6OlJvbGVEZXNjcmlwdGlvbiwg
YXhPYmplY3Qucm9sZURlc2NyaXB0aW9uKCkuaXNvbGF0ZWRDb3B5KCkpOwogICAgICAgICAgICAg
YnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVk
dHJlZS9BWElzb2xhdGVkVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29s
YXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaAppbmRleCBhNDE3OTI3OTc4ZDIuLjZiNGM1ZTgzMzFh
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZFRyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCkBAIC0xMDQsNiArMTA0LDcgQEAgZW51bSBjbGFzcyBB
WFByb3BlcnR5TmFtZSA6IHVpbnQxNl90IHsKICAgICBIYXNIaWdobGlnaHRpbmcsCiAgICAgSGFz
SXRhbGljRm9udCwKICAgICBIYXNQbGFpblRleHQsCisgICAgSGFzUmVtb3RlRnJhbWVDaGlsZCwK
ICAgICBIYXNVbmRlcmxpbmUsCiAgICAgSGVhZGVyQ29udGFpbmVyLAogICAgIEhlYWRpbmdMZXZl
bCwKQEAgLTIwMSw2ICsyMDIsOCBAQCBlbnVtIGNsYXNzIEFYUHJvcGVydHlOYW1lIDogdWludDE2
X3QgewogICAgIFByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2gsCiAgICAgUmFkaW9CdXR0
b25Hcm91cCwKICAgICBSZWxhdGl2ZUZyYW1lLAorICAgIFJlbW90ZUZyYW1lT2Zmc2V0LAorICAg
IFJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50LAogICAgIFJvbGVWYWx1ZSwKICAgICBSb2xlUGxh
dGZvcm1TdHJpbmcsCiAgICAgUm9sZURlc2NyaXB0aW9uLApAQCAtMjU3LDYgKzI2MCw3IEBAIHVz
aW5nIEFYUHJvcGVydHlOYW1lU2V0ID0gSGFzaFNldDxBWFByb3BlcnR5TmFtZSwgSW50SGFzaDxB
WFByb3BlcnR5TmFtZT4sIFdURjo6CiB1c2luZyBBWFByb3BlcnR5VmFsdWVWYXJpYW50ID0gc3Rk
Ojp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBBWElELCBTdHJpbmcsIGJvb2wsIGludCwgdW5zaWdu
ZWQsIGRvdWJsZSwgZmxvYXQsIHVpbnQ2NF90LCBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGUsIENv
bG9yLCBVUkwsIExheW91dFJlY3QsIEZsb2F0UG9pbnQsIEZsb2F0UmVjdCwgSW50UG9pbnQsIElu
dFJlY3QsIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+LCBWZWN0b3I8QWNjZXNzaWJpbGl0
eVRleHQ+LCBWZWN0b3I8QVhJRD4sIFZlY3RvcjxzdGQ6OnBhaXI8QVhJRCwgQVhJRD4+LCBWZWN0
b3I8U3RyaW5nPiwgUGF0aCwgT3B0aW9uU2V0PEFYQW5jZXN0b3JGbGFnPiwgSW5zaWRlTGluaywg
VmVjdG9yPFZlY3RvcjxBWElEPj4sIENoYXJhY3RlclJhbmdlLCBzdGQ6OnBhaXI8QVhJRCwgQ2hh
cmFjdGVyUmFuZ2U+CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgLCBSZXRhaW5QdHI8TlNBdHRy
aWJ1dGVkU3RyaW5nPgorICAgICwgUmV0YWluUHRyPGlkPgogI2VuZGlmCiAjaWYgRU5BQkxFKEFY
X1RIUkVBRF9URVhUX0FQSVMpCiAgICAgLCBBWFRleHRSdW5zCkBAIC0zOTcsNiArNDAxLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZUVtcHR5Q29udGVudChBY2Nlc3NpYmlsaXR5T2JqZWN0
Jik7CiAgICAgY29uc3RleHByIGJvb2wgaXNVcGRhdGluZ1N1YnRyZWUoKSBjb25zdCB7IHJldHVy
biBtX3Jvb3RPZlN1YnRyZWVCZWluZ1VwZGF0ZWQ7IH0KICAgICBjb25zdGV4cHIgdm9pZCB1cGRh
dGluZ1N1YnRyZWUoQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmplY3QpIHsgbV9yb290T2ZTdWJ0
cmVlQmVpbmdVcGRhdGVkID0gYXhPYmplY3Q7IH0KKyAgICBSZWZQdHI8QVhJc29sYXRlZE9iamVj
dD4gZmV0Y2hPYmplY3RGb3JJREZyb21NYWluVGhyZWFkKGNvbnN0IEFYSUQpIGNvbnN0OwogCiAg
ICAgZW51bSBjbGFzcyBBdHRhY2hXcmFwcGVyIDogYm9vbCB7IE9uTWFpblRocmVhZCwgT25BWFRo
cmVhZCB9OwogICAgIHN0cnVjdCBOb2RlQ2hhbmdlIHsKQEAgLTQ5Nyw2ICs1MDIsMzAgQEAgaW5s
aW5lIFJlZlB0cjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OnRyZWVGb3JQYWdlSUQo
c3RkOjpvcHRpb25hbDxQYWdlSWQKICAgICByZXR1cm4gcGFnZUlEID8gdHJlZUZvclBhZ2VJRCgq
cGFnZUlEKSA6IG51bGxwdHI7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFU+CitpbmxpbmUgVmVj
dG9yPFJlZlB0cjxBWENvcmVPYmplY3Q+PiBBWElzb2xhdGVkVHJlZTo6b2JqZWN0c0ZvcklEcyhj
b25zdCBVJiBheElEcykKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKworICAgIFZl
Y3RvcjxSZWZQdHI8QVhDb3JlT2JqZWN0Pj4gcmVzdWx0OworICAgIHJlc3VsdC5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGF4SURzLnNpemUoKSk7CisgICAgZm9yIChjb25zdCBhdXRvJiBheElEIDog
YXhJRHMpIHsKKyAgICAgICAgUmVmUHRyIG9iamVjdCA9IG9iamVjdEZvcklEKGF4SUQpOworICAg
ICAgICBpZiAob2JqZWN0KSB7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFdURk1vdmUob2Jq
ZWN0KSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIG9iamVj
dCA9IGZldGNoT2JqZWN0Rm9ySURGcm9tTWFpblRocmVhZChheElEKTsKKyAgICAgICAgaWYgKG9i
amVjdCkgeworICAgICAgICAgICAgbV9yZWFkZXJUaHJlYWROb2RlTWFwLmFkZChheElELCAqb2Jq
ZWN0KTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoV1RGTW92ZShvYmplY3QpKTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICByZXN1bHQuc2hyaW5rVG9GaXQoKTsKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmpl
Y3RNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9tYWMv
QVhJc29sYXRlZE9iamVjdE1hYy5tbQppbmRleCBhZGI3ZWM2NDgzNDUuLmUwMmRhMGQxMTJiNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvbWFj
L0FYSXNvbGF0ZWRPYmplY3RNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMubW0KQEAgLTYzLDYgKzYzLDgg
QEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplUGxhdGZvcm1Qcm9wZXJ0aWVzKGNv
bnN0IFJlZjxjb25zdCBBY2Nlc3NpYmlsaXQKICAgICAgICAgfQogICAgIH0KIAorICAgIHNldFBy
b3BlcnR5KEFYUHJvcGVydHlOYW1lOjpSZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCwgb2JqZWN0
LT5yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpKTsKKwogICAgIC8vIENhY2hlIHRoZSBTdHJp
bmdWYWx1ZSBvbmx5IGlmIGl0IGRpZmZlcnMgZnJvbSB0aGUgQXR0cmlidXRlZFRleHQuCiAgICAg
YXV0byB2YWx1ZSA9IG9iamVjdC0+c3RyaW5nVmFsdWUoKTsKICAgICBpZiAoIWF0dHJpYnV0ZWRU
ZXh0IHx8IHZhbHVlICE9IFN0cmluZyhbYXR0cmlidXRlZFRleHQgc3RyaW5nXSkpCkBAIC0yMDIs
NiArMjA0LDExIEBAIHVuc2lnbmVkIEFYSXNvbGF0ZWRPYmplY3Q6OnRleHRMZW5ndGgoKSBjb25z
dAogICAgIHJldHVybiAwOwogfQogCitSZXRhaW5QdHI8aWQ+IEFYSXNvbGF0ZWRPYmplY3Q6OnJl
bW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gcHJvcGVydHlW
YWx1ZTxSZXRhaW5QdHI8aWQ+PihBWFByb3BlcnR5TmFtZTo6UmVtb3RlRnJhbWVQbGF0Zm9ybUVs
ZW1lbnQpOworfQorCiBSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiBBWElzb2xhdGVkT2Jq
ZWN0OjphdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKEFYVGV4dE1hcmtlclJhbmdl
JiYgbWFya2VyUmFuZ2UsIFNwZWxsQ2hlY2sgc3BlbGxDaGVjaykgY29uc3QKIHsKICAgICBpZiAo
IW1hcmtlclJhbmdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0KaW5kZXggYmEyYWNjZDgwZDA0Li43Yzdh
NGYwNDk1N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0Fj
Y2Vzc2liaWxpdHlPYmplY3RNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9y
dCAiY29uZmlnLmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCiAKKyNpbXBvcnQg
IkFYUmVtb3RlRnJhbWUuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlMYWJlbC5oIgogI2ltcG9y
dCAiQWNjZXNzaWJpbGl0eUxpc3QuaCIKICNpbXBvcnQgIkNvbG9yQ29jb2EuaCIKQEAgLTUxLDYg
KzUyLDcgQEAKICNpbXBvcnQgIldlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLmgiCiAj
aW1wb3J0ICJXaWRnZXQuaCIKIAorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0FjY2Vzc2liaWxp
dHlTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL05TU3BlbGxDaGVja2VyU1BJLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc0OSw2ICs3NTEsMjQgQEAgUmV0YWluUHRyPE5TQXR0cmli
dXRlZFN0cmluZz4gYXR0cmlidXRlZFN0cmluZ0NyZWF0ZShOb2RlKiBub2RlLCBTdHJpbmdWaWV3
IHRleHQKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4g
QVhSZW1vdGVGcmFtZTo6Z2VuZXJhdGVSZW1vdGVUb2tlbigpIGNvbnN0Cit7CisgICAgLy8gV2Ug
dXNlIHRoZSBwYXJlbnQncyB3cmFwcGVyIHNvIHRoYXQgdGhlIHJlbW90ZSBmcmFtZSBhY3RzIGFz
IGEgcGFzcyB0aHJvdWdoIGZvciB0aGUgcmVtb3RlIHRva2VuIGJyaWRnZS4KKyAgICBOU0RhdGEg
KmRhdGEgPSBbTlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlFbGVtZW50IHJlbW90ZVRva2VuRm9yTG9j
YWxVSUVsZW1lbnQ6cGFyZW50T2JqZWN0KCktPndyYXBwZXIoKV07CisgICAgcmV0dXJuIHN0ZDo6
c3BhbihzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVu
Z3RoXSk7Cit9CisKK3ZvaWQgQVhSZW1vdGVGcmFtZTo6aW5pdGlhbGl6ZVBsYXRmb3JtRWxlbWVu
dFdpdGhSZW1vdGVUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gdG9rZW4sIGludCBwcm9j
ZXNzSWRlbnRpZmllcikKK3sKKyAgICBtX3Byb2Nlc3NJZGVudGlmaWVyID0gcHJvY2Vzc0lkZW50
aWZpZXI7CisgICAgaWYgKFt3cmFwcGVyKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihh
Y2Nlc3NpYmlsaXR5U2V0UHJlc2VudGVyUHJvY2Vzc0lkZW50aWZpZXI6KV0pCisgICAgICAgIFso
aWQpd3JhcHBlcigpIGFjY2Vzc2liaWxpdHlTZXRQcmVzZW50ZXJQcm9jZXNzSWRlbnRpZmllcjpw
cm9jZXNzSWRlbnRpZmllcl07CisgICAgTlNEYXRhICp0b2tlbkRhdGEgPSBbTlNEYXRhIGRhdGFX
aXRoQnl0ZXM6dG9rZW4uZGF0YSgpIGxlbmd0aDp0b2tlbi5zaXplKCldOworICAgIG1fcmVtb3Rl
RnJhbWVQbGF0Zm9ybUVsZW1lbnQgPSBhZG9wdE5TKFtbTlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlF
bGVtZW50IGFsbG9jXSBpbml0V2l0aFJlbW90ZVRva2VuOnRva2VuRGF0YV0pOworCisgICAgYXhP
YmplY3RDYWNoZSgpLT5vblJlbW90ZUZyYW1lSW5pdGlhbGl6ZWQoKnRoaXMpOworfQorCiBuYW1l
c3BhY2UgQWNjZXNzaWJpbGl0eSB7CiAKIFBsYXRmb3JtUm9sZU1hcCBjcmVhdGVQbGF0Zm9ybVJv
bGVNYXAoKQpAQCAtODkxLDYgKzkxMSw3IEBAIFBsYXRmb3JtUm9sZU1hcCBjcmVhdGVQbGF0Zm9y
bVJvbGVNYXAoKQogICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpTdXBlcnNjcmlwdCwgTlNB
Y2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCiAgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6Ok1v
ZGVsLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKICAgICAgICAgeyBBY2Nlc3NpYmlsaXR5
Um9sZTo6U3VnZ2VzdGlvbiwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsg
QWNjZXNzaWJpbGl0eVJvbGU6OlJlbW90ZUZyYW1lLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUg
fSwKICAgICB9OwogICAgIFBsYXRmb3JtUm9sZU1hcCByb2xlTWFwOwogICAgIGZvciAoYXV0byYg
cm9sZSA6IHJvbGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCmlu
ZGV4IDYzNTdmYTdjMjcxYi4uZjE0MjQ1ZmMzYjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJCYXNlLm1tCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0ICJBWENvcmVPYmpl
Y3QuaCIKICNpbXBvcnQgIkFYSXNvbGF0ZWRPYmplY3QuaCIKICNpbXBvcnQgIkFYT2JqZWN0Q2Fj
aGUuaCIKKyNpbXBvcnQgIkFYUmVtb3RlRnJhbWUuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlB
UklBR3JpZFJvdy5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUxpc3QuaCIKICNpbXBvcnQgIkFj
Y2Vzc2liaWxpdHlMaXN0Qm94LmgiCkBAIC0yNjUsMTMgKzI2NiwxMyBAQCBOU0FycmF5ICptYWtl
TlNBcnJheShjb25zdCBXZWJDb3JlOjpBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYgYwogICAgICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgICAgICBhdXRvIHdyYXBw
ZXIgPSBjaGlsZC0+d3JhcHBlcigpOwotCiAgICAgICAgIC8vIFdlIHdhbnQgdG8gcmV0dXJuIHRo
ZSBhdHRhY2htZW50IHZpZXcgaW5zdGVhZCBvZiB0aGUgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUg
YXR0YWNobWVudCwKICAgICAgICAgLy8gb3RoZXJ3aXNlLCB3ZSBnZXQgcGFsaW5kcm9tZSBlcnJv
cnMgaW4gdGhlIEFYIGhpZXJhcmNoeS4KICAgICAgICAgaWYgKGNoaWxkLT5pc0F0dGFjaG1lbnQo
KSkgewogICAgICAgICAgICAgaWYgKGlkIGF0dGFjaG1lbnRWaWV3ID0gd3JhcHBlci5hdHRhY2ht
ZW50VmlldykKICAgICAgICAgICAgICAgICByZXR1cm4gYXR0YWNobWVudFZpZXc7Ci0gICAgICAg
IH0KKyAgICAgICAgfSBlbHNlIGlmIChjaGlsZC0+aXNSZW1vdGVGcmFtZSgpKQorICAgICAgICAg
ICAgcmV0dXJuIGNoaWxkLT5yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpLmdldCgpOwogCiAg
ICAgICAgIHJldHVybiB3cmFwcGVyOwogICAgIH0pLmF1dG9yZWxlYXNlKCk7CkBAIC0zODksNyAr
MzkwLDcgQEAgTlNBcnJheSAqbWFrZU5TQXJyYXkoY29uc3QgV2ViQ29yZTo6QVhDb3JlT2JqZWN0
OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGMKIC0gKEJPT0wpaXNJc29sYXRlZE9iamVj
dAogewogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCi0gICAgYXV0byog
YmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0ciBiYWNraW5n
T2JqZWN0ID0gZHluYW1pY0Rvd25jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3Q+KHNlbGYuYmFzZVVw
ZGF0ZUJhY2tpbmdTdG9yZSk7CiAgICAgcmV0dXJuIGJhY2tpbmdPYmplY3QgJiYgYmFja2luZ09i
amVjdC0+aXNBWElzb2xhdGVkT2JqZWN0SW5zdGFuY2UoKTsKICNlbHNlCiAgICAgcmV0dXJuIE5P
OwpAQCAtNTIzLDcgKzUyNCw3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRQYXRoVG9TY3JlZW5TcGFj
ZUZ1bmN0aW9uKFBhdGhDb252ZXJzaW9uSW5mbyYgY29udmVyc2lvbiwgY29uCiAKIC0gKENHUmVj
dCljb252ZXJ0UmVjdFRvU3BhY2U6KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpcmVjdCBzcGFj
ZTooQWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZSlzcGFjZQogewotICAgIGF1dG8qIGJhY2tp
bmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHIgYmFja2luZ09iamVj
dCA9IGR5bmFtaWNEb3duY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0PihzZWxmLmJhc2VVcGRhdGVC
YWNraW5nU3RvcmUpOwogICAgIGlmICghYmFja2luZ09iamVjdCkKICAgICAgICAgcmV0dXJuIENH
UmVjdFplcm87CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFj
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXgg
NmM1ZTZiN2FjZDljLi43NTAyZDlhMGU0OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyTWFjLm1tCkBAIC0zNCw2ICszNCw3IEBACiAjaW1wb3J0ICJBWElzb2xhdGVkT2JqZWN0
LmgiCiAjaW1wb3J0ICJBWExvZ2dlci5oIgogI2ltcG9ydCAiQVhPYmplY3RDYWNoZS5oIgorI2lt
cG9ydCAiQVhSZW1vdGVGcmFtZS5oIgogI2ltcG9ydCAiQVhUZXh0TWFya2VyLmgiCiAjaW1wb3J0
ICJBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlMYWJl
bC5oIgpAQCAtNDc5LDYgKzQ4MCwxMCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICNkZWZp
bmUgTlNBY2Nlc3NpYmlsaXR5VGV4dElucHV0TWFya2VkVGV4dE1hcmtlclJhbmdlQXR0cmlidXRl
IEAiQVhUZXh0SW5wdXRNYXJrZWRUZXh0TWFya2VyUmFuZ2UiCiAjZW5kaWYKIAorI2lmbmRlZiBr
QVhDb252ZXJ0UmVsYXRpdmVGcmFtZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUKKyNkZWZpbmUga0FY
Q29udmVydFJlbGF0aXZlRnJhbWVQYXJhbWV0ZXJpemVkQXR0cmlidXRlIEAiQVhDb252ZXJ0UmVs
YXRpdmVGcmFtZSIKKyNlbmRpZgorCiBAaW1wbGVtZW50YXRpb24gV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIKIAogLSAodm9pZClkZXRhY2gKQEAgLTY5Miw3ICs2OTcsNyBAQCBzdGF0aWMg
UmV0YWluUHRyPEFYVGV4dE1hcmtlclJlZj4gcHJldmlvdXNUZXh0TWFya2VyKEFYT2JqZWN0Q2Fj
aGUqIGNhY2hlLCBjb25zdAogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBh
dXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgUmVmUHRyPEFY
Q29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OwogICAgIGlm
ICghYmFja2luZ09iamVjdCkKICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMTI1Niw3ICsxMjYx
LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAKIC0gKE5TQXJyYXkg
KilyZW5kZXJXaWRnZXRDaGlsZHJlbgogewotICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBzZWxm
LmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBiYWNraW5nT2JqZWN0
ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CiAgICAgaWYgKCFiYWNraW5nT2JqZWN0IHx8ICFiYWNr
aW5nT2JqZWN0LT5pc1dpZGdldCgpKQogICAgICAgICByZXR1cm4gbmlsOwogCkBAIC0xMjc5LDcg
KzEyODQsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogLSAoaWQpcmVt
b3RlQWNjZXNzaWJpbGl0eVBhcmVudE9iamVjdAogewotICAgIGF1dG8qIGJhY2tpbmdPYmplY3Qg
PSBzZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBiYWNraW5n
T2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CiAgICAgcmV0dXJuIGJhY2tpbmdPYmplY3Qg
PyBiYWNraW5nT2JqZWN0LT5yZW1vdGVQYXJlbnRPYmplY3QoKSA6IG5pbDsKIH0KIApAQCAtMTI5
Niw3ICsxMzAxLDcgQEAgc3RhdGljIHZvaWQgY29udmVydFRvVmVjdG9yKE5TQXJyYXkqIGFycmF5
LCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2gKIAogLSAoQVhUZXh0TWFya2Vy
UmFuZ2VSZWYpc2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UKIHsKLSAgICBhdXRvKiBiYWNraW5nT2Jq
ZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFj
a2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OwogICAgIGlmICghYmFja2luZ09iamVj
dCkKICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMTM2NiwxMiArMTM3MSwxOCBAQCBzdGF0aWMg
dm9pZCBXZWJUcmFuc2Zvcm1DR1BhdGhUb05TQmV6aWVyUGF0aCh2b2lkKiBpbmZvLCBjb25zdCBD
R1BhdGhFbGVtZW50ICplbAogCiAtIChOU1N0cmluZyopcm9sZQogeworICAgIFJlZlB0cjxBWENv
cmVPYmplY3Q+IGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBpZiAo
IWJhY2tpbmdPYmplY3QpCisgICAgICAgIHJldHVybiBuaWw7CisKIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0JFR0lOCi0gICAgaWYgKHNlbGYuYXhCYWNraW5nT2JqZWN0LT5pc0F0dGFj
aG1lbnQoKSkKKyAgICBpZiAoYmFja2luZ09iamVjdC0+aXNBdHRhY2htZW50KCkpCiAgICAgICAg
IHJldHVybiBbW3NlbGYgYXR0YWNobWVudFZpZXddIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZTpOU0FjY2Vzc2liaWxpdHlSb2xlQXR0cmlidXRlXTsKKyAgICBpZiAoYmFja2luZ09iamVjdC0+
aXNSZW1vdGVGcmFtZSgpKQorICAgICAgICByZXR1cm4gW2JhY2tpbmdPYmplY3QtPnJlbW90ZUZy
YW1lUGxhdGZvcm1FbGVtZW50KCkuZ2V0KCkgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5T
QWNjZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGVdOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfRU5ECiAKLSAgICBOU1N0cmluZyAqc3RyaW5nID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPnJv
bGVQbGF0Zm9ybVN0cmluZygpOworICAgIE5TU3RyaW5nICpzdHJpbmcgPSBiYWNraW5nT2JqZWN0
LT5yb2xlUGxhdGZvcm1TdHJpbmcoKTsKICAgICBpZiAoc3RyaW5nLmxlbmd0aCkKICAgICAgICAg
cmV0dXJuIHN0cmluZzsKICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5VW5rbm93blJvbGU7CkBA
IC0xMzc5LDcgKzEzOTAsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAog
LSAoQk9PTClpc0VtcHR5R3JvdXAKIHsKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5h
eEJhY2tpbmdPYmplY3Q7CisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9
IHNlbGYuYXhCYWNraW5nT2JqZWN0OwogICAgIGlmICghYmFja2luZ09iamVjdCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCkBAIC0xMzg4LDYgKzEzOTksOSBAQCBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAKKyAgICBpZiAo
YmFja2luZ09iamVjdC0+aXNSZW1vdGVGcmFtZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
ICAgICByZXR1cm4gW1tzZWxmIHJvbGVdIGlzRXF1YWw6TlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xl
XQogICAgICAgICAmJiBiYWNraW5nT2JqZWN0LT5jaGlsZHJlbigpLmlzRW1wdHkoKQogICAgICAg
ICAmJiAhW1tzZWxmIHJlbmRlcldpZGdldENoaWxkcmVuXSBjb3VudF07CkBAIC0xMzk2LDcgKzE0
MTAsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0JFR0lOCiAtIChOU1N0cmluZyopc3Vicm9sZQogewotICAgIGF1dG8q
IGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHI8QVhDb3Jl
T2JqZWN0PiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CiAgICAgaWYgKCFi
YWNraW5nT2JqZWN0KQogICAgICAgICByZXR1cm4gbmlsOwogCkBAIC0xNDEzLDcgKzE0MjcsNyBA
QCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogLSAoTlNTdHJpbmcqKXJvbGVE
ZXNjcmlwdGlvbgogewotICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09i
amVjdDsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJh
Y2tpbmdPYmplY3Q7CiAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQogICAgICAgICByZXR1cm4gbmls
OwogCkBAIC0xNDIxLDYgKzE0MzUsOCBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19C
RUdJTgogICAgIC8vIGF0dGFjaG1lbnRzIGhhdmUgdGhlIEFYSW1hZ2Ugcm9sZSwgYnV0IGEgZGlm
ZmVyZW50IHN1YnJvbGUKICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNBdHRhY2htZW50KCkpCiAg
ICAgICAgIHJldHVybiBbW3NlbGYgYXR0YWNobWVudFZpZXddIGFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRpb25BdHRyaWJ1dGVdOworICAgIGlm
IChiYWNraW5nT2JqZWN0LT5pc1JlbW90ZUZyYW1lKCkpCisgICAgICAgIHJldHVybiBbYmFja2lu
Z09iamVjdC0+cmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKS5nZXQoKSBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlXTsK
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAgICAgU3RyaW5nIHJvbGVEZXNj
cmlwdGlvbiA9IGJhY2tpbmdPYmplY3QtPnJvbGVEZXNjcmlwdGlvbigpOwpAQCAtMTQ3Myw2ICsx
NDg5LDI4IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIHJldHVybiBh
eFNjcm9sbFZpZXcgPyBbYXhTY3JvbGxWaWV3LT5wbGF0Zm9ybVdpZGdldCgpIHdpbmRvd10gOiBu
aWw7CiB9CiAKKy0gKE5TQXJyYXkgKilfdHJhbnNmb3JtU3BlY2lhbENoaWxkcmVuQ2FzZXM6KFJl
ZlB0cjxBWENvcmVPYmplY3Q+KWJhY2tpbmdPYmplY3QKK3sKKyNpZiBFTkFCTEUoTU9ERUxfRUxF
TUVOVCkKKyAgICBpZiAoYmFja2luZ09iamVjdC0+aXNNb2RlbCgpKSB7CisgICAgICAgIGF1dG8g
bW9kZWxDaGlsZHJlbiA9IGJhY2tpbmdPYmplY3QtPm1vZGVsRWxlbWVudENoaWxkcmVuKCk7Cisg
ICAgICAgIGlmIChtb2RlbENoaWxkcmVuLnNpemUoKSkgeworICAgICAgICAgICAgcmV0dXJuIGNy
ZWF0ZU5TQXJyYXkoV1RGTW92ZShtb2RlbENoaWxkcmVuKSwgW10gKGF1dG8mJiBjaGlsZCkgLT4g
aWQgeworICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZC5nZXQoKTsKKyAgICAgICAgICAgIH0p
LmF1dG9yZWxlYXNlKCk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKworICAgIGNvbnN0IGF1
dG8mIGNoaWxkcmVuID0gYmFja2luZ09iamVjdC0+Y2hpbGRyZW4oKTsKKyAgICBpZiAoIWNoaWxk
cmVuLnNpemUoKSkgeworICAgICAgICBpZiAoTlNBcnJheSAqY2hpbGRyZW4gPSBbc2VsZiByZW5k
ZXJXaWRnZXRDaGlsZHJlbl0pCisgICAgICAgICAgICByZXR1cm4gY2hpbGRyZW47CisgICAgfQor
CisgICAgcmV0dXJuIG5pbDsKK30KKwogLy8gRklYTUU6IHNwbGl0IHVwIHRoaXMgZnVuY3Rpb24g
aW4gYSBiZXR0ZXIgd2F5LgogLy8gc3VnZ2VzdGlvbnM6IFVzZSBhIGhhc2ggdGFibGUgdGhhdCBt
YXBzIGF0dHJpYnV0ZSBuYW1lcyB0byBmdW5jdGlvbiBjYWxscywKIC8vIG9yIG1heWJlIHBvaW50
ZXJzIHRvIG1lbWJlciBmdW5jdGlvbnMKQEAgLTE1MzEsMjIgKzE1NjksOSBAQCBBTExPV19ERVBS
RUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICB9CiAKICAgICBpZiAoW2F0dHJpYnV0ZU5h
bWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXSB8fCBb
YXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5Jbk5h
dmlnYXRpb25PcmRlckF0dHJpYnV0ZV0pIHsKLSNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKLSAg
ICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzTW9kZWwoKSkgewotICAgICAgICAgICAgYXV0byBt
b2RlbENoaWxkcmVuID0gYmFja2luZ09iamVjdC0+bW9kZWxFbGVtZW50Q2hpbGRyZW4oKTsKLSAg
ICAgICAgICAgIGlmIChtb2RlbENoaWxkcmVuLnNpemUoKSkgewotICAgICAgICAgICAgICAgIHJl
dHVybiBjcmVhdGVOU0FycmF5KFdURk1vdmUobW9kZWxDaGlsZHJlbiksIFtdIChhdXRvJiYgY2hp
bGQpIC0+IGlkIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkLmdldCgpOwotICAg
ICAgICAgICAgICAgIH0pLmF1dG9yZWxlYXNlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSNlbmRpZgotCi0gICAgICAgIGNvbnN0IGF1dG8mIGNoaWxkcmVuID0gYmFja2luZ09iamVjdC0+
Y2hpbGRyZW4oKTsKLSAgICAgICAgaWYgKGNoaWxkcmVuLmlzRW1wdHkoKSkgewotICAgICAgICAg
ICAgaWYgKE5TQXJyYXkgKndpZGdldENoaWxkcmVuID0gW3NlbGYgcmVuZGVyV2lkZ2V0Q2hpbGRy
ZW5dKQotICAgICAgICAgICAgICAgIHJldHVybiB3aWRnZXRDaGlsZHJlbjsKLSAgICAgICAgfQor
ICAgICAgICBOU0FycmF5ICpzcGVjaWFsQ2hpbGRyZW4gPSBbc2VsZiBfdHJhbnNmb3JtU3BlY2lh
bENoaWxkcmVuQ2FzZXM6YmFja2luZ09iamVjdF07CisgICAgICAgIGlmIChzcGVjaWFsQ2hpbGRy
ZW4uY291bnQpCisgICAgICAgICAgICByZXR1cm4gc3BlY2lhbENoaWxkcmVuOwogCiAgICAgICAg
IC8vIFRoZSB0cmVlJ3MgKEFYT3V0bGluZSkgY2hpbGRyZW4gYXJlIHN1cHBvc2VkIHRvIGJlIGl0
cyByb3dzIGFuZCBjb2x1bW5zLgogICAgICAgICAvLyBUaGUgQVJJQSBzcGVjIGRvZXNuJ3QgaGF2
ZSBjb2x1bW5zLCBzbyB3ZSBqdXN0IG5lZWQgcm93cy4KQEAgLTE1NTcsNyArMTU4Miw3IEBAIEFM
TE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICBpZiAoYmFja2luZ09i
amVjdC0+aXNUcmVlSXRlbSgpKQogICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGJhY2tp
bmdPYmplY3QtPmFyaWFUcmVlSXRlbUNvbnRlbnQoKSk7CiAKLSAgICAgICAgcmV0dXJuIG1ha2VO
U0FycmF5KGNoaWxkcmVuKTsKKyAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdPYmpl
Y3QtPmNoaWxkcmVuKCkpOwogICAgIH0KIAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGVdKSB7CkBA
IC0xNzEzLDE2ICsxNzM4LDE0IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VO
RAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0
eUVuYWJsZWRBdHRyaWJ1dGVdKQogICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhC
b29sOiBiYWNraW5nT2JqZWN0LT5pc0VuYWJsZWQoKV07CiAKLSAgICBpZiAoW2F0dHJpYnV0ZU5h
bWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlTaXplQXR0cmlidXRlXSkgewotICAg
ICAgICBhdXRvIHNpemUgPSBiYWNraW5nT2JqZWN0LT5zaXplKCk7Ci0gICAgICAgIHJldHVybiBb
TlNWYWx1ZSB2YWx1ZVdpdGhTaXplOk5TTWFrZVNpemUoc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdo
dCgpKV07Ci0gICAgfQorICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNB
Y2Nlc3NpYmlsaXR5U2l6ZUF0dHJpYnV0ZV0pCisgICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1
ZVdpdGhTaXplOihDR1NpemUpYmFja2luZ09iamVjdC0+c2l6ZSgpXTsKIAogICAgIGlmIChbYXR0
cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5UHJpbWFyeVNjcmVlbkhl
aWdodEF0dHJpYnV0ZV0pCiAgICAgICAgIHJldHVybiBAKGJhY2tpbmdPYmplY3QtPnByaW1hcnlT
Y3JlZW5SZWN0KCkuaGVpZ2h0KCkpOwogCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxU
b1N0cmluZzpOU0FjY2Vzc2liaWxpdHlQb3NpdGlvbkF0dHJpYnV0ZV0pCi0gICAgICAgIHJldHVy
biBAKENHUG9pbnQoYmFja2luZ09iamVjdC0+c2NyZWVuUmVsYXRpdmVQb3NpdGlvbigpKSk7Cisg
ICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhQb2ludDooQ0dQb2ludCliYWNraW5nT2Jq
ZWN0LT5zY3JlZW5SZWxhdGl2ZVBvc2l0aW9uKCldOwogCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1l
IGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlQYXRoQXR0cmlidXRlXSkKICAgICAgICAg
cmV0dXJuIFtzZWxmIHBhdGhdOwpAQCAtMjIzNyw2ICsyMjYwLDEwIEBAIEFMTE9XX0RFUFJFQ0FU
RURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICByZXR1cm4gcmFuZ2UgPyByYW5nZS5wbGF0
Zm9ybURhdGEoKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCkgOiBuaWw7CiAgICAgfQogCisgICAgLy8g
Vm9pY2VPdmVyIHByb3BlcnR5IHRvIGlnbm9yZSBjZXJ0YWluIGdyb3Vwcy4KKyAgICBpZiAoW2F0
dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiQVhBdXRvSW50ZXJhY3RhYmxlIl0pCisgICAg
ICAgIHJldHVybiBAKGJhY2tpbmdPYmplY3QtPmlzUmVtb3RlRnJhbWUoKSk7CisKICAgICAvLyBV
c2VkIGJ5IExheW91dFRlc3RzIG9ubHksIG5vdCBieSBBVCBjbGllbnRzLgogICAgIGlmIChVTkxJ
S0VMWShbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWEFSSUFSb2xlIl0pKQogICAg
ICAgICByZXR1cm4gYmFja2luZ09iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCk7CkBAIC0yMzMw
LDcgKzIzNTcsOCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAg
ICAgaWYgKGF4T2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkgewogICAgICAgICAgICAgaWYgKGlkIGF0
dGFjaG1lbnRWaWV3ID0gW2F4T2JqZWN0LT53cmFwcGVyKCkgYXR0YWNobWVudFZpZXddKQogICAg
ICAgICAgICAgICAgIHJldHVybiBhdHRhY2htZW50VmlldzsKLSAgICAgICAgfQorICAgICAgICB9
IGVsc2UgaWYgKGF4T2JqZWN0LT5pc1JlbW90ZUZyYW1lKCkpCisgICAgICAgICAgICByZXR1cm4g
YXhPYmplY3QtPnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkuZ2V0KCk7CiAKICAgICAgICAg
Ly8gT25seSBjYWxsIG91dCB0byB0aGUgbWFpbi10aHJlYWQgaWYgdGhpcyBvYmplY3QgaGFzIGEg
YmFja2luZyB3aWRnZXQgdG8gcXVlcnkuCiAgICAgICAgIGlmIChheE9iamVjdC0+aXNXaWRnZXQo
KSkgewpAQCAtMjUwNyw2ICsyNTM1LDEwIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJ
T05TX0VORAogICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc1dlYkFyZWEoKSkKICAgICAgICAgcmV0
dXJuIHdlYkFyZWFQYXJhbUF0dHJzOwogCisgICAgLy8gVGhlIG9iamVjdCB0aGF0IHNlcnZlcyB1
cCB0aGUgcmVtb3RlIGZyYW1lIGFsc28gaXMgdGhlIG9uZSB0aGF0IGRvZXMgdGhlIGZyYW1lIGNv
bnZlcnNpb24uCisgICAgaWYgKGJhY2tpbmdPYmplY3QtPmhhc1JlbW90ZUZyYW1lQ2hpbGQoKSkK
KyAgICAgICAgcmV0dXJuIFtwYXJhbUF0dHJzIGFycmF5QnlBZGRpbmdPYmplY3Q6a0FYQ29udmVy
dFJlbGF0aXZlRnJhbWVQYXJhbWV0ZXJpemVkQXR0cmlidXRlXTsKKwogICAgIHJldHVybiBwYXJh
bUF0dHJzOwogfQogCkBAIC0yNTc4LDcgKzI2MTAsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19FTkQKIHsKICAgICBBWFRSQUNFKCJXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ciBhY2Nlc3NpYmlsaXR5UGVyZm9ybVNob3dNZW51QWN0aW9uIl9zKTsKIAotICAgIGF1dG8qIGJh
Y2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHI8QVhDb3JlT2Jq
ZWN0PiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CiAgICAgaWYgKCFiYWNr
aW5nT2JqZWN0KSB7CiAgICAgICAgIEFYTE9HKG1ha2VTdHJpbmcoIk5vIGJhY2tpbmdPYmplY3Qg
Zm9yIHdyYXBwZXIgIiwgaGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihzZWxmKSkpKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjgyMiw3ICsyODU0LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9J
TVBMRU1FTlRBVElPTlNfRU5ECiAgICAgaWYgKCFyYW5nZS5sZW5ndGgpCiAgICAgICAgIHJldHVy
biBuaWw7CiAKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7
CisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5n
T2JqZWN0OwogICAgIGlmICghYmFja2luZ09iamVjdCkKICAgICAgICAgcmV0dXJuIG5pbDsKIApA
QCAtMzE3Nyw2ICszMjA5LDE4IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VO
RAogICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2lkZ2V0Q2hpbGRyZW47CiAgICAgICAgICAg
ICAgICAgY3JpdGVyaWEucmVzdWx0c0xpbWl0IC09IFt3aWRnZXRDaGlsZHJlbiBjb3VudF07CiAg
ICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoYmFja2luZ09iamVjdC0+aXNSZW1vdGVG
cmFtZSgpCisgICAgICAgICAgICAmJiBjcml0ZXJpYS5zZWFyY2hLZXlzLmNvbnRhaW5zKEFjY2Vz
c2liaWxpdHlTZWFyY2hLZXk6OkFueVR5cGUpCisgICAgICAgICAgICAmJiAoIWNyaXRlcmlhLnZp
c2libGVPbmx5IHx8IGJhY2tpbmdPYmplY3QtPmlzVmlzaWJsZSgpKSkgeworICAgICAgICAgICAg
TlNBcnJheSAqcmVtb3RlRnJhbWVDaGlsZHJlbiA9IFtzZWxmIGFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZV07CisgICAgICAgICAgICBB
U1NFUlQocmVtb3RlRnJhbWVDaGlsZHJlbi5jb3VudCA9PSAxKTsKKyAgICAgICAgICAgIGlmIChy
ZW1vdGVGcmFtZUNoaWxkcmVuLmNvdW50ID09IDEpIHsKKyAgICAgICAgICAgICAgICBOU1VJbnRl
Z2VyIGluY2x1ZGVkQ2hpbGRyZW5Db3VudCA9IHN0ZDo6bWluKFtyZW1vdGVGcmFtZUNoaWxkcmVu
IGNvdW50XSwgTlNVSW50ZWdlcihjcml0ZXJpYS5yZXN1bHRzTGltaXQpKTsKKyAgICAgICAgICAg
ICAgICB3aWRnZXRDaGlsZHJlbiA9IFtyZW1vdGVGcmFtZUNoaWxkcmVuIHN1YmFycmF5V2l0aFJh
bmdlOk5TTWFrZVJhbmdlKDAsIGluY2x1ZGVkQ2hpbGRyZW5Db3VudCldOworICAgICAgICAgICAg
ICAgIGlmIChbd2lkZ2V0Q2hpbGRyZW4gY291bnRdID49IGNyaXRlcmlhLnJlc3VsdHNMaW1pdCkK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlbW90ZUZyYW1lQ2hpbGRyZW47CisgICAgICAg
ICAgICAgICAgY3JpdGVyaWEucmVzdWx0c0xpbWl0IC09IFt3aWRnZXRDaGlsZHJlbiBjb3VudF07
CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgcmVzdWx0czsKQEAgLTM2NjksNiArMzcxMywx
MSBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBpZiAoVU5MSUtF
TFkoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6X0FYVGV4dE1hcmtlclJhbmdlRm9yTlNSYW5n
ZUF0dHJpYnV0ZV0pKQogICAgICAgICByZXR1cm4gYmFja2luZ09iamVjdC0+dGV4dE1hcmtlclJh
bmdlRm9yTlNSYW5nZShyYW5nZSkucGxhdGZvcm1EYXRhKCkuYnJpZGdpbmdBdXRvcmVsZWFzZSgp
OwogCisgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOmtBWENvbnZlcnRSZWxhdGl2
ZUZyYW1lUGFyYW1ldGVyaXplZEF0dHJpYnV0ZV0pIHsKKyAgICAgICAgYXV0byogcGFyZW50ID0g
YmFja2luZ09iamVjdC0+cGFyZW50T2JqZWN0KCk7CisgICAgICAgIHJldHVybiBwYXJlbnQgPyBb
TlNWYWx1ZSB2YWx1ZVdpdGhSZWN0OnBhcmVudC0+Y29udmVydEZyYW1lVG9TcGFjZShGbG9hdFJl
Y3QocmVjdCksIEFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2U6OlBhZ2UpXSA6IG5pbDsKKyAg
ICB9CisKICAgICAvLyBUaGVyZSBhcmUgc29tZSBwYXJhbWV0ZXJzIHRoYXQgc3VwZXIgaGFuZGxl
cyB0aGF0IGFyZSBub3QgZXhwbGljaXRseSByZXR1cm5lZCBieSB0aGUgbGlzdCBvZiB0aGUgZWxl
bWVudCdzIGF0dHJpYnV0ZXMuCiAgICAgLy8gSW4gdGhhdCBjYXNlIGl0IG11c3QgYmUgcGFzc2Vk
IHRvIHN1cGVyLgogICAgIHJldHVybiBbc3VwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
OmF0dHJpYnV0ZSBmb3JQYXJhbWV0ZXI6cGFyYW1ldGVyXTsKQEAgLTM3MjIsOCArMzc3MSwxMCBA
QCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgaWYgKCFjaGls
ZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlciAqY2hpbGRXcmFwcGVyID0gY2hpbGQtPndyYXBwZXIoKTsKLSAgICAgICAgaWYgKGNo
aWxkV3JhcHBlciA9PSB0YXJnZXRDaGlsZCB8fCAoY2hpbGQtPmlzQXR0YWNobWVudCgpICYmIFtj
aGlsZFdyYXBwZXIgYXR0YWNobWVudFZpZXddID09IHRhcmdldENoaWxkKSkKKyAgICAgICAgaWYg
KGNoaWxkV3JhcHBlciA9PSB0YXJnZXRDaGlsZCB8fCAoY2hpbGQtPmlzQXR0YWNobWVudCgpICYm
IFtjaGlsZFdyYXBwZXIgYXR0YWNobWVudFZpZXddID09IHRhcmdldENoaWxkKQorICAgICAgICAg
ICAgfHwgKGNoaWxkLT5pc1JlbW90ZUZyYW1lKCkgJiYgY2hpbGQtPnJlbW90ZUZyYW1lUGxhdGZv
cm1FbGVtZW50KCkgPT0gdGFyZ2V0Q2hpbGQpKSB7CiAgICAgICAgICAgICByZXR1cm4gaTsKKyAg
ICAgICAgfQogICAgIH0KICAgICByZXR1cm4gTlNOb3RGb3VuZDsKIH0KQEAgLTM3NDAsNyArMzc5
MSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgaWYgKFthdHRy
aWJ1dGUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXSkg
ewogICAgICAgICAvLyBUcmVlIGl0ZW1zIG9iamVjdCByZXR1cm5zIGEgZGlmZmVyZW50IHNldCBv
ZiBjaGlsZHJlbiB0aGFuIHRob3NlIHRoYXQgYXJlIGluIGNoaWxkcmVuKCkKICAgICAgICAgLy8g
YmVjYXVzZSBhbiBBWE91dGxpbmUgKHRoZSBtYWMgcm9sZSBpcyBiZWNvbWVzKSBoYXMgc29tZSBv
ZGQgc3RpcHVsYXRpb25zLgotICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNUcmVlKCkgfHwg
YmFja2luZ09iamVjdC0+aXNUcmVlSXRlbSgpKQorICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+
aXNUcmVlKCkgfHwgYmFja2luZ09iamVjdC0+aXNUcmVlSXRlbSgpIHx8IGJhY2tpbmdPYmplY3Qt
PmlzUmVtb3RlRnJhbWUoKSkKICAgICAgICAgICAgIHJldHVybiBbW3NlbGYgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXSBjb3VudF07
CiAKICAgICAgICAgYXV0byBjaGlsZHJlblNpemUgPSBiYWNraW5nT2JqZWN0LT5jaGlsZHJlbigp
LnNpemUoKTsKQEAgLTM3NzYsMTYgKzM4MjcsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19FTkQKIAogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2li
aWxpdHlDaGlsZHJlbkF0dHJpYnV0ZV0pIHsKICAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmNo
aWxkcmVuKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBOU0FycmF5ICpjaGlsZHJlbiA9IG5p
bDsKLSNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKLSAgICAgICAgICAgIGlmIChiYWNraW5nT2Jq
ZWN0LT5pc01vZGVsKCkpIHsKLSAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IGNyZWF0ZU5TQXJy
YXkoYmFja2luZ09iamVjdC0+bW9kZWxFbGVtZW50Q2hpbGRyZW4oKSwgW10gKGF1dG8mJiBjaGls
ZCkgLT4gaWQgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGQuZ2V0KCk7Ci0gICAg
ICAgICAgICAgICAgfSkuYXV0b3JlbGVhc2UoKTsKLSAgICAgICAgICAgIH0gZWxzZQotI2VuZGlm
Ci0gICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbc2VsZiByZW5kZXJXaWRnZXRDaGlsZHJlbl07
Ci0gICAgICAgICAgICAKKyAgICAgICAgICAgIE5TQXJyYXkgKmNoaWxkcmVuID0gW3NlbGYgX3Ry
YW5zZm9ybVNwZWNpYWxDaGlsZHJlbkNhc2VzOmJhY2tpbmdPYmplY3RdOwogICAgICAgICAgICAg
aWYgKCFjaGlsZHJlbikKICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwogCkBAIC0zODE2LDgg
KzM4NTgsMTMgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICAgICAg
ICAgIC8vIFRoZSBhdHRhY2htZW50IHZpZXcgc2hvdWxkIGJlIHJldHVybmVkLCBvdGhlcndpc2Ug
QVggcGFsaW5kcm9tZSBlcnJvcnMgb2NjdXIuCiAgICAgICAgICAgICBpZCBhdHRhY2htZW50Vmll
dyA9IG5pbDsKLSAgICAgICAgICAgIGlmIChbd3JhcHBlciBpc0tpbmRPZkNsYXNzOltXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlciBjbGFzc11dICYmIHdyYXBwZXIuYXhCYWNraW5nT2JqZWN0
ICYmIHdyYXBwZXIuYXhCYWNraW5nT2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkKLSAgICAgICAgICAg
ICAgICBhdHRhY2htZW50VmlldyA9IFt3cmFwcGVyIGF0dGFjaG1lbnRWaWV3XTsKKyAgICAgICAg
ICAgIGlmIChbd3JhcHBlciBpc0tpbmRPZkNsYXNzOltXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlciBjbGFzc11dICYmIHdyYXBwZXIuYXhCYWNraW5nT2JqZWN0KSB7CisgICAgICAgICAgICAg
ICAgaWYgKHdyYXBwZXIuYXhCYWNraW5nT2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkKKyAgICAgICAg
ICAgICAgICAgICAgYXR0YWNobWVudFZpZXcgPSBbd3JhcHBlciBhdHRhY2htZW50Vmlld107Cisg
ICAgICAgICAgICAgICAgZWxzZSBpZiAod3JhcHBlci5heEJhY2tpbmdPYmplY3QtPmlzUmVtb3Rl
RnJhbWUoKSkKKyAgICAgICAgICAgICAgICAgICAgYXR0YWNobWVudFZpZXcgPSB3cmFwcGVyLmF4
QmFja2luZ09iamVjdC0+cmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKS5nZXQoKTsKKyAgICAg
ICAgICAgIH0KKwogICAgICAgICAgICAgW3N1YmFycmF5IGFkZE9iamVjdDphdHRhY2htZW50Vmll
dyA/IGF0dGFjaG1lbnRWaWV3IDogd3JhcHBlcl07CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCAyNThjMTRiODZhOGIuLjU3MTdhZGUyYTQ1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTEwODUsNiArMTA4NSwx
MSBAQCBSZW1vdGVBWE9iamVjdFJlZiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjphY2Nlc3NpYmls
aXR5UmVtb3RlT2JqZWN0KCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorSW50UG9pbnQgRW1w
dHlGcmFtZUxvYWRlckNsaWVudDo6YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCkKK3sK
KyAgICByZXR1cm4geyB9OworfQorCiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURf
VFJFRSkKIHZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6c2V0QVhJc29sYXRlZFRyZWVSb290
KFdlYkNvcmU6OkFYQ29yZU9iamVjdCopCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5RnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAwOThjZTU4ZDExMTkuLjQ2NzJkZTI5ODUzMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCkBA
IC0xODQsNiArMTg0LDcgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJl
bW90ZUFYT2JqZWN0UmVmIGFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSBmaW5hbDsKKyAgICBJ
bnRQb2ludCBhY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKSBmaW5hbDsKICNpZiBFTkFC
TEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQogICAgIHZvaWQgc2V0QVhJc29sYXRlZFRy
ZWVSb290KFdlYkNvcmU6OkFYQ29yZU9iamVjdCopIGZpbmFsOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9jYWxGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0xvY2FsRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBiMmQ1NmYwNTBh
ZTkuLjAwZDNhZDVlMmNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvY2Fs
RnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9jYWxGcmFt
ZUxvYWRlckNsaWVudC5oCkBAIC0yOTAsNiArMjkwLDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIC8vIEFsbG93IGFuIGFjY2Vzc2liaWxpdHkgb2JqZWN0IHRvIHJldHJpZXZl
IGEgRnJhbWUgcGFyZW50IGlmIHRoZXJlJ3Mgbm8gUGxhdGZvcm1XaWRnZXQuCiAgICAgdmlydHVh
bCBSZW1vdGVBWE9iamVjdFJlZiBhY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkgPSAwOworICAg
IHZpcnR1YWwgSW50UG9pbnQgYWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCkgPSAwOwog
I2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAgICAgdmlydHVhbCB2b2lk
IHNldEFYSXNvbGF0ZWRUcmVlUm9vdChBWENvcmVPYmplY3QqKSA9IDA7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCmluZGV4IDU5MzM1NWViZWNkOC4uMGIxZmMwYWMzOGMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKQEAgLTIyMDMsOCArMjIwMywxNSBAQCBib29sIFBhZ2U6OnNob3VsZFVwZGF0ZUFjY2Vz
c2liaWxpdHlSZWdpb25zKCkgY29uc3QKICAgICBBU1NFUlQobV9sYXN0UmVuZGVyaW5nVXBkYXRl
VGltZXN0YW1wID49IG1fbGFzdEFjY2Vzc2liaWxpdHlPYmplY3RSZWdpb25zVXBkYXRlKTsKICAg
ICBpZiAoKG1fbGFzdFJlbmRlcmluZ1VwZGF0ZVRpbWVzdGFtcCAtIG1fbGFzdEFjY2Vzc2liaWxp
dHlPYmplY3RSZWdpb25zVXBkYXRlKSA8IHVwZGF0ZUludGVydmFsKSB7CiAgICAgICAgIC8vIFdl
J3ZlIGFscmVhZHkgdXBkYXRlZCBhY2Nlc3NpYmlsaXR5IG9iamVjdCByZWN0cyByZWNlbnRseSwg
c28gc2tpcCB0aGlzIHVwZGF0ZSBhbmQgc2NoZWR1bGUgYW5vdGhlciBmb3IgbGF0ZXIuCi0gICAg
ICAgIGF1dG8qIGxvY2FsTWFpbkZyYW1lID0gZHluYW1pY0Rvd25jYXN0PExvY2FsRnJhbWU+KG1h
aW5GcmFtZSgpKTsKLSAgICAgICAgUmVmUHRyIG1haW5Eb2N1bWVudCA9IGxvY2FsTWFpbkZyYW1l
ID8gbG9jYWxNYWluRnJhbWUtPmRvY3VtZW50KCkgOiBudWxscHRyOworCisgICAgICAgIFJlZlB0
cjxEb2N1bWVudD4gbWFpbkRvY3VtZW50ID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKGF1dG8qIGxv
Y2FsTWFpbkZyYW1lID0gZHluYW1pY0Rvd25jYXN0PExvY2FsRnJhbWU+KG1haW5GcmFtZSgpKSkK
KyAgICAgICAgICAgIG1haW5Eb2N1bWVudCA9IGxvY2FsTWFpbkZyYW1lID8gbG9jYWxNYWluRnJh
bWUtPmRvY3VtZW50KCkgOiBudWxscHRyOworICAgICAgICBlbHNlIGlmIChhdXRvKiByZW1vdGVG
cmFtZSA9IGR5bmFtaWNEb3duY2FzdDxSZW1vdGVGcmFtZT4obWFpbkZyYW1lKCkpKSB7CisgICAg
ICAgICAgICBpZiAoYXV0byogb3duZXIgPSByZW1vdGVGcmFtZS0+b3duZXJFbGVtZW50KCkpCisg
ICAgICAgICAgICAgICAgbWFpbkRvY3VtZW50ID0gJihvd25lci0+ZG9jdW1lbnQoKSk7CisgICAg
ICAgIH0KKwogICAgICAgICAvLyBJZiBhY2Nlc3NpYmlsaXR5IGlzIGVuYWJsZWQgYW5kIHdlIGhh
dmUgYSBtYWluIGRvY3VtZW50LCB0aGF0IGRvY3VtZW50IHNob3VsZCBoYXZlIGFuIEFYIG9iamVj
dCBjYWNoZS4KICAgICAgICAgQVNTRVJUKCFtYWluRG9jdW1lbnQgfHwgbWFpbkRvY3VtZW50LT5l
eGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSk7CiAgICAgICAgIGlmIChDaGVja2VkUHRyIHRvcEF4T2Jq
ZWN0Q2FjaGUgPSBtYWluRG9jdW1lbnQgPyBtYWluRG9jdW1lbnQtPmV4aXN0aW5nQVhPYmplY3RD
YWNoZSgpIDogbnVsbHB0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3Rl
RnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5jcHAKaW5kZXggNzEy
YzBiMjIwZmQwLi41MGIwYTI1Y2ZkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UmVtb3RlRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuY3Bw
CkBAIC0xMDAsNiArMTAwLDIxIEBAIHZvaWQgUmVtb3RlRnJhbWU6OmJyb2FkY2FzdEZyYW1lUmVt
b3ZhbFRvT3RoZXJQcm9jZXNzZXMoKQogICAgIG1fY2xpZW50LT5icm9hZGNhc3RGcmFtZVJlbW92
YWxUb090aGVyUHJvY2Vzc2VzKCk7CiB9CiAKK3ZvaWQgUmVtb3RlRnJhbWU6OnVwZGF0ZVJlbW90
ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChJbnRQb2ludCBvZmZzZXQpCit7CisgICAgbV9jbGll
bnQtPnVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChmcmFtZUlEKCksIG9mZnNl
dCk7Cit9CisKK3ZvaWQgUmVtb3RlRnJhbWU6OnVuYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFt
ZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyKQoreworICAgIG1fY2xpZW50LT51bmJpbmRSZW1vdGVB
Y2Nlc3NpYmlsaXR5RnJhbWVzKHByb2Nlc3NJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVG
cmFtZTo6YmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVy
LCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YVRva2VuLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgaW50KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICByZXR1cm4gbV9jbGllbnQtPmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJh
bWVzKHByb2Nlc3NJZGVudGlmaWVyLCBmcmFtZUlEKCksIGRhdGFUb2tlbiwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworfQorCiBGcmFtZVZpZXcqIFJlbW90ZUZyYW1lOjp2aXJ0dWFsVmll
dygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdmlldy5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3Rl
RnJhbWUuaAppbmRleCAyN2VkODQwZDA4MmUuLmNhNzJhZjhiYzk1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UmVtb3RlRnJhbWUuaApAQCAtMzMsNiArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K2NsYXNzIERhdGFTZWdtZW50OwogY2xhc3MgUmVtb3RlRE9NV2luZG93OwogY2xhc3MgUmVtb3Rl
RnJhbWVDbGllbnQ7CiBjbGFzcyBSZW1vdGVGcmFtZVZpZXc7CkBAIC02Miw2ICs2Myw5IEBAIHB1
YmxpYzoKICAgICBNYXJrYWJsZTxMYXllckhvc3RpbmdDb250ZXh0SWRlbnRpZmllcj4gbGF5ZXJI
b3N0aW5nQ29udGV4dElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2xheWVySG9zdGluZ0Nv
bnRleHRJZGVudGlmaWVyOyB9CiAKICAgICBTdHJpbmcgcmVuZGVyVHJlZUFzVGV4dChzaXplX3Qg
YmFzZUluZGVudCwgT3B0aW9uU2V0PFJlbmRlckFzVGV4dEZsYWc+KTsKKyAgICB2b2lkIGJpbmRS
ZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgc3RkOjpzcGFu
PGNvbnN0IHVpbnQ4X3Q+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6c3Bhbjxjb25zdCB1
aW50OF90PiwgaW50KT4mJik7CisgICAgdm9pZCB1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxp
dHlPZmZzZXQoSW50UG9pbnQpOworICAgIHZvaWQgdW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZy
YW1lcyhpbnQpOwogCiBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFJlbW90
ZUZyYW1lKFBhZ2UmLCBVbmlxdWVSZWY8UmVtb3RlRnJhbWVDbGllbnQ+JiYsIEZyYW1lSWRlbnRp
ZmllciwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgRnJhbWUqIHBhcmVudCwgTWFya2FibGU8TGF5
ZXJIb3N0aW5nQ29udGV4dElkZW50aWZpZXI+LCBGcmFtZSogb3BlbmVyID0gbnVsbHB0cik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lQ2xpZW50LmgKaW5kZXggNGVmZDEwM2YzOTEyLi41
NDFhMGQwMWM1NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lQ2xpZW50LmgKQEAg
LTMwLDYgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBEYXRhU2VnbWVu
dDsKIGNsYXNzIEZyYW1lTG9hZFJlcXVlc3Q7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgU2VjdXJp
dHlPcmlnaW5EYXRhOwpAQCAtNDgsNiArNDksOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJp
bmcgcmVuZGVyVHJlZUFzVGV4dChzaXplX3QgYmFzZUluZGVudCwgT3B0aW9uU2V0PFJlbmRlckFz
VGV4dEZsYWc+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGJyb2FkY2FzdEZyYW1lUmVtb3ZhbFRv
T3RoZXJQcm9jZXNzZXMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlUGFnZSgpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nl
c3NJZGVudGlmaWVyLCBGcmFtZUlkZW50aWZpZXIgdGFyZ2V0LCBjb25zdCBzdGQ6OnNwYW48Y29u
c3QgdWludDhfdD4gZGF0YVRva2VuLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6
c3Bhbjxjb25zdCB1aW50OF90PiwgaW50KT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQoRnJhbWVJZGVudGlmaWVyIHRhcmdldCwg
SW50UG9pbnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0
eUZyYW1lcyhpbnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZm9jdXMoKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHVuZm9jdXMoKSA9IDA7CiAgICAgdmlydHVhbCB+UmVtb3RlRnJhbWVDbGllbnQo
KSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCA4NGZjNDE5ZTU5Y2Eu
LjQyZWVlNjZhYjE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtNDIs
NiArNDIsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0FjdGlvbnMuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0VkaXRvckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9jdXNEaXJlY3Rpb24u
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvSW5wdXRNb2RlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYUNvbnRyb2xzQ29udGV4dE1l
bnVJdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxUeXBlcy5oPgpAQCAtMzE4LDcgKzMx
OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVVuZG9SZWRvKFVuZG9PclJl
ZG8pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2hlZWxFdmVudFdhc05vdEhhbmRsZWRCeVdlYkNv
cmUoY29uc3QgTmF0aXZlV2ViV2hlZWxFdmVudCYpID0gMDsKICNpZiBQTEFURk9STShDT0NPQSkK
LSAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKHN0
ZDo6c3Bhbjxjb25zdCB1aW50OF90PikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NpYmls
aXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIHBpZF90KSA9IDA7CiAgICAgdmlydHVhbCBib29sIGV4ZWN1
dGVTYXZlZENvbW1hbmRCeVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2VjdXJlSW5wdXRTdGF0ZSgpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgcmVzZXRTZWN1cmVJbnB1dFN0YXRlKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IDA1MDMwODYzOTFmYi4uM2Uz
YjgxOTVkMDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25h
bFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQ
YWdlUHJveHkuY3BwCkBAIC01NDUsNyArNTQ1LDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94
eTo6cmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdAog
I2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLXZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6
OnJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWlu
dDhfdD4gZGF0YSkKK3ZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OnJlZ2lzdGVyV2ViUHJvY2Vz
c0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSwgRnJhbWVJ
ZGVudGlmaWVyKQogewogICAgIG1fYWNjZXNzaWJpbGl0eVRva2VuID0gVmVjdG9yKGRhdGEpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKaW5k
ZXggZGVlY2Q3NmEyMDI0Li5kMGI3ZWNjZWVmZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaApAQCAtMTcyLDcgKzE3Miw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCByZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1l
KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3Ry
aW5nJik+JiYpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCByZWdpc3Rl
cldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KTsK
KyAgICB2b2lkIHJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48
Y29uc3QgdWludDhfdD4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAjZW5kaWYKICNpZiBQ
TEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKICAgICB2b2lkIGJpbmRBY2Nlc3NpYmlsaXR5
VHJlZShjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkZyYW1lUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94
eS5jcHAKaW5kZXggZjJmYzhhNTRkODgzLi4yMzAzMDdhMTc0ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAi
V2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNs
dWRlICJXZWJQYXN0ZWJvYXJkUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3Rv
cmUuaCIKICNpbmNsdWRlICJXZWJzaXRlUG9saWNpZXNEYXRhLmgiCkBAIC0xODQsNiArMTg1LDE0
IEBAIHZvaWQgV2ViRnJhbWVQcm94eTo6bmF2aWdhdGVTZXJ2aWNlV29ya2VyQ2xpZW50KFdlYkNv
cmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJCiAgICAgfSk7CiB9CiAKK3ZvaWQgV2ViRnJhbWVQ
cm94eTo6YmluZEFjY2Vzc2liaWxpdHlGcmFtZVdpdGhEYXRhKHN0ZDo6c3Bhbjxjb25zdCB1aW50
OF90PiBkYXRhKQoreworICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkJpbmRBY2Nlc3NpYmlsaXR5RnJhbWVX
aXRoRGF0YShtX2ZyYW1lSUQsIGRhdGEpKTsKK30KKwogdm9pZCBXZWJGcmFtZVByb3h5Ojpsb2Fk
VVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQogewogICAgIGlmICgh
bV9wYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oCmluZGV4IGIwZGFl
YjBlNjRmYy4uNzE1YmI4MGJhYjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJGcmFtZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQ
cm94eS5oCkBAIC0xNzAsNiArMTcwLDggQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3RlUHJvY2Vz
c0RpZFRlcm1pbmF0ZSgpOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXI+IHdlYlBhZ2VJREluQ3VycmVudFByb2Nlc3MoKTsKICAgICB2b2lkIG5vdGlmeVBhcmVudE9m
TG9hZENvbXBsZXRpb24oV2ViUHJvY2Vzc1Byb3h5Jik7CisgICAgdm9pZCByZW1vdmVSZW1vdGVQ
YWdlc0ZvclN1c3BlbnNpb24oKTsKKyAgICB2b2lkIGJpbmRBY2Nlc3NpYmlsaXR5RnJhbWVXaXRo
RGF0YShzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pOwogCiAgICAgYm9vbCBpc0ZvY3VzZWQoKSBj
b25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYzBm
ZTEyZThiNzAzLi4wMTFjZmVjNjMwZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcApAQCAtMTI5NSw4ICsxMjk1LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpzd2Fw
VG9Qcm92aXNpb25hbFBhZ2Uoc3RkOjp1bmlxdWVfcHRyPFByb3Zpc2lvbmFsUGFnZVByb3h5PiBw
CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBhdXRvIGFjY2Vzc2liaWxpdHlUb2tlbiA9IHBy
b3Zpc2lvbmFsUGFnZS0+dGFrZUFjY2Vzc2liaWxpdHlUb2tlbigpOwotICAgIGlmICghYWNjZXNz
aWJpbGl0eVRva2VuLmlzRW1wdHkoKSkKLSAgICAgICAgcmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNz
aWJpbGl0eVRva2VuKHsgYWNjZXNzaWJpbGl0eVRva2VuLmRhdGEoKSwgYWNjZXNzaWJpbGl0eVRv
a2VuLnNpemUoKSB9KTsKKyAgICBpZiAoIWFjY2Vzc2liaWxpdHlUb2tlbi5pc0VtcHR5KCkpIHsK
KyAgICAgICAgcmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHsgYWNjZXNzaWJp
bGl0eVRva2VuLmRhdGEoKSwgYWNjZXNzaWJpbGl0eVRva2VuLnNpemUoKSB9LCBXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgeworICAgICAgICAgICAgT2JqZWN0SWRlbnRpZmllcjxXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXJUeXBlPigwKSwKKyAgICAgICAgICAgIE9iamVjdElkZW50aWZpZXI8V2Vi
Q29yZTo6UHJvY2Vzc0lkZW50aWZpZXJUeXBlPigwKQorICAgICAgICB9KTsKKyAgICB9CiAjZW5k
aWYKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKICAgICBhdXRvIGFjY2Vzc2li
aWxpdHlQbHVnSUQgPSBwcm92aXNpb25hbFBhZ2UtPmFjY2Vzc2liaWxpdHlQbHVnSUQoKTsKQEAg
LTEzNzQ0LDYgKzEzNzQ4LDIyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjphZGRDb25zb2xlTWVzc2Fn
ZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgTWVzc2FnZVNvdXJjZSBtZXNzCiAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBmcmFtZUlELCBtZXNzYWdlU291
cmNlLCBtZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIGNvcmVJZGVudGlmaWVyIH0pOwogfQogCit2b2lk
IFdlYlBhZ2VQcm94eTo6YmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3Qgc3RkOjpz
cGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGFUb2tlbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6
OnNwYW48Y29uc3QgdWludDhfdD4sIGludCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
YXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmNUb1Byb2Nlc3NDb250YWluaW5nRnJhbWUoZnJhbWVJ
RCwgTWVzc2FnZXM6OldlYlBhZ2U6OkJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKHByb2Nl
c3NJZGVudGlmaWVyLCBmcmFtZUlELCBkYXRhVG9rZW4pKTsKKyAgICBpZiAoIXNlbmRSZXN1bHQu
c3VjY2VlZGVkKCkpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0sIDApOwor
CisgICAgYXV0byBbZnJhbWVEYXRhVG9rZW4sIGZyYW1lUHJvY2Vzc0lkZW50aWZpZXJdID0gc2Vu
ZFJlc3VsdC50YWtlUmVwbHkoKTsKKworICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lRGF0YVRv
a2VuLCBmcmFtZVByb2Nlc3NJZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnVw
ZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgV2ViQ29yZTo6SW50UG9pbnQgb2Zmc2V0KQoreworICAgIHNlbmRUb1Byb2Nl
c3NDb250YWluaW5nRnJhbWUoZnJhbWVJRCwgTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZVJlbW90
ZVBhZ2VBY2Nlc3NpYmlsaXR5T2Zmc2V0KGZyYW1lSUQsIG9mZnNldCkpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA1YjdjZjU0ZWQxNDEuLjY2MDhkYzNj
Y2M0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTEzNTQsNyAr
MTM1NCw3IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIC8vIENhbGxlZCBi
eSB0aGUgd2ViIHByb2Nlc3MgdGhyb3VnaCBhIG1lc3NhZ2UuCi0gICAgdm9pZCByZWdpc3Rlcldl
YlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKKyAg
ICB2b2lkIHJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29u
c3QgdWludDhfdD4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAgICAgLy8gQ2FsbGVkIGJ5
IHRoZSBVSSBwcm9jZXNzIHdoZW4gaXQgaXMgcmVhZHkgdG8gc2VuZCBpdHMgdG9rZW5zIHRvIHRo
ZSB3ZWIgcHJvY2Vzcy4KICAgICB2b2lkIHJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRv
a2VucyhzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZWxlbWVudFRva2VuLCBzdGQ6OnNwYW48Y29u
c3QgdWludDhfdD4gd2luZG93VG9rZW4pOwogICAgIHZvaWQgcmVwbGFjZVNlbGVjdGlvbldpdGhQ
YXN0ZWJvYXJkRGF0YShjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIHN0ZDo6c3Bhbjxjb25z
dCB1aW50OF90Pik7CkBAIC0yOTc3LDYgKzI5NzcsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZm9j
dXNSZW1vdGVGcmFtZShJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIp
OwogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1JlbW90ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIg
c291cmNlLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyIHRhcmdldCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IHRh
cmdldE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmKTsKICAg
ICB2b2lkIHJlbmRlclRyZWVBc1RleHQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBzaXplX3Qg
YmFzZUluZGVudCwgT3B0aW9uU2V0PFdlYkNvcmU6OlJlbmRlckFzVGV4dEZsYWc+LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJik7CisgICAgdm9pZCBiaW5kUmVtb3RlQWNjZXNz
aWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRp
Zmllciwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGFUb2tlbiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIGludCk+JiYpOworICAgIHZvaWQgdXBk
YXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciwgV2ViQ29yZTo6SW50UG9pbnQpOwogCiAgICAgdm9pZCBzZXRUZXh0SW5kaWNhdG9yRnJvbUZy
YW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGEm
JiwgdWludDY0X3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4KaW5kZXggMzExNTViMzI5MTQ2Li43MmIzZjcyNGQ1OTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTMy
NCw3ICszMjQsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIEV4ZWN1dGVTYXZl
ZENvbW1hbmRCeVNlbGVjdG9yKFN0cmluZyBzZWxlY3RvcikgLT4gKGJvb2wgaGFuZGxlZCkgU3lu
Y2hyb25vdXMKIAogICAgICMgUmVtb3RlIGFjY2Vzc2liaWxpdHkgbWVzc2FnZXMKLSAgICBSZWdp
c3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+
IGRhdGEpCisgICAgUmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bh
bjxjb25zdCB1aW50OF90PiBkYXRhLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkK
IAogICAgICMgU3BlZWNoIG1lc3NhZ2VzCiAgICAgR2V0SXNTcGVha2luZygpIC0+IChib29sIGlz
U3BlYWtpbmcpIFN5bmNocm9ub3VzCkBAIC02MzAsNCArNjMwLDYgQEAgbWVzc2FnZXMgLT4gV2Vi
UGFnZVByb3h5IHsKICAgICBGb2N1c1JlbW90ZUZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlEKQogICAgIFBvc3RNZXNzYWdlVG9SZW1vdGUoV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyIHNvdXJjZSwgU3RyaW5nIHNvdXJjZU9yaWdpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IHRhcmdldCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IHRhcmdl
dE9yaWdpbiwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2Up
CiAgICAgUmVuZGVyVHJlZUFzVGV4dChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgaWRlbnRpZmll
ciwgc2l6ZV90IGJhc2VJbmRlbnQsIE9wdGlvblNldDxXZWJDb3JlOjpSZW5kZXJBc1RleHRGbGFn
PiBiZWhhdmlvcikgLT4gKFN0cmluZyByZW5kZXJUcmVlRHVtcCkgU3luY2hyb25vdXMKKyAgICBC
aW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0
YVRva2VuKSAtPiAoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHRva2VuLCBpbnQgcHJvY2Vzc0lk
ZW50aWZpZXIpIFN5bmNocm9ub3VzCisgICAgVXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5
T2Zmc2V0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpJbnRQb2lu
dCBvZmZzZXQpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5oCmluZGV4IDEwYzRmNmFlMTI1MC4uNjM4OGNiNDY3MmM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaApAQCAtMTEwLDcgKzEx
MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhckFsbEVkaXRDb21tYW5kcygpIG92ZXJyaWRl
OwogICAgIGJvb2wgY2FuVW5kb1JlZG8oVW5kb09yUmVkbykgb3ZlcnJpZGU7CiAgICAgdm9pZCBl
eGVjdXRlVW5kb1JlZG8oVW5kb09yUmVkbykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhY2Nlc3NpYmls
aXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KSBvdmVy
cmlkZTsKKyAgICB2b2lkIGFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChzdGQ6
OnNwYW48Y29uc3QgdWludDhfdD4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgcGlkX3QpIG92
ZXJyaWRlOwogICAgIGJvb2wgZXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2VsZWN0b3IoY29uc3QgU3Ry
aW5nJiBzZWxlY3Rvcikgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVTZWN1cmVJbnB1dFN0YXRl
KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXNldFNlY3VyZUlucHV0U3RhdGUoKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpp
bmRleCBjYjIzZjQ5NzRhNmIuLmI1YWRkZGNlMjNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtMzg5LDcgKzM4OSw3IEBAIHZv
aWQgUGFnZUNsaWVudEltcGw6OmV4ZWN1dGVVbmRvUmVkbyhVbmRvT3JSZWRvIHVuZG9PclJlZG8p
CiAgICAgcmV0dXJuICh1bmRvT3JSZWRvID09IFVuZG9PclJlZG86OlVuZG8pID8gW1tjb250ZW50
VmlldygpIHVuZG9NYW5hZ2VyXSB1bmRvXSA6IFtbY29udGVudFZpZXcoKSB1bmRvTWFuYWdlcl0g
cmVkb107CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OmFjY2Vzc2liaWxpdHlXZWJQcm9jZXNz
VG9rZW5SZWNlaXZlZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSkKK3ZvaWQgUGFnZUNs
aWVudEltcGw6OmFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChzdGQ6OnNwYW48
Y29uc3QgdWludDhfdD4gZGF0YSwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBwaWRfdCkKIHsK
ICAgICBOU0RhdGEgKnJlbW90ZVRva2VuID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEuZGF0
YSgpIGxlbmd0aDpkYXRhLnNpemUoKV07CiAgICAgW2NvbnRlbnRWaWV3KCkgX3NldEFjY2Vzc2li
aWxpdHlXZWJQcm9jZXNzVG9rZW46cmVtb3RlVG9rZW5dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggOTY0ZjMwNTkyYWE4Li45NWNjZDA1
OTJiMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJv
eHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbQpAQCAtNzYzLDkgKzc2Myw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTbWFydEluc2Vy
dERlbGV0ZUVuYWJsZWQoYm9vbCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bh
bjxjb25zdCB1aW50OF90PiBkYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyV2ViUHJv
Y2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSwgRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQpCiB7Ci0gICAgcHJvdGVjdGVkUGFnZUNsaWVudCgpLT5hY2Nl
c3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoZGF0YSk7CisgICAgcGFnZUNsaWVudCgp
LmFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChkYXRhLCBmcmFtZUlEKTsKIH0g
ICAgCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsTWFjLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxN
YWMuaAppbmRleCBmYjZjNjA3ODY3YWYuLmJmOGRhNDMwZDhhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKQEAgLTE3Niw3ICsxNzYsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZ2VzdHVyZUV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShj
b25zdCBOYXRpdmVXZWJHZXN0dXJlRXZlbnQmKSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgdm9p
ZCBhY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVp
bnQ4X3Q+KSBvdmVycmlkZTsKKyAgICB2b2lkIGFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5S
ZWNlaXZlZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciwgcGlkX3QpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBtYWtlRmlyc3RSZXNwb25kZXIoKSBvdmVy
cmlkZTsKICAgICB2b2lkIGFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xp
ZW50SW1wbE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1w
bE1hYy5tbQppbmRleCAwNzgwZjE4ZGExYzIuLjAxNTBlYzQ1MTJjYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQpAQCAtNTgxLDkgKzU4
MSw5IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnNldFRleHRJbmRpY2F0b3JBbmltYXRpb25Qcm9n
cmVzcyhmbG9hdCBwcm9ncmVzcykKICAgICBtX2ltcGwtPnNldFRleHRJbmRpY2F0b3JBbmltYXRp
b25Qcm9ncmVzcyhwcm9ncmVzcyk7CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OmFjY2Vzc2li
aWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0
YSkKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNl
aXZlZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSwgV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIHBpZF90IHBpZCkKIHsKLSAgICBtX2ltcGwtPnNldEFjY2Vzc2liaWxpdHlX
ZWJQcm9jZXNzVG9rZW4oW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEuZGF0YSgpIGxlbmd0aDpk
YXRhLnNpemUoKV0pOworICAgIG1faW1wbC0+c2V0QWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tl
bihbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5kYXRhKCkgbGVuZ3RoOmRhdGEuc2l6ZSgpXSwg
ZnJhbWVJRCwgcGlkKTsKIH0KICAgICAKIHZvaWQgUGFnZUNsaWVudEltcGw6OmVudGVyQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgbGF5ZXJUcmVlQ29u
dGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJv
eHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1t
CmluZGV4IGNmYjEwZmRiYjQxMy4uODY5NjE3YTI5ZDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTMwNiwxMiArMzA2LDEyIEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChjb25zdCBEaWN0aW9u
YXJ5UG9wdXBJbmZvJiBkaWN0aW9uCiAgICAgcHJvdGVjdGVkUGFnZUNsaWVudCgpLT5kaWRQZXJm
b3JtRGljdGlvbmFyeUxvb2t1cChkaWN0aW9uYXJ5UG9wdXBJbmZvKTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OnJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48
Y29uc3QgdWludDhfdD4gZGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWdpc3RlcldlYlByb2Nl
c3NBY2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEsIEZyYW1l
SWRlbnRpZmllciBmcmFtZUlEKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIAotICAgIHByb3RlY3RlZFBhZ2VDbGllbnQoKS0+YWNjZXNzaWJp
bGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKGRhdGEpOworICAgIHByb3RlY3RlZFBhZ2VDbGll
bnQoKS0+YWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKGRhdGEsIGZyYW1lSUQs
IG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCktPnJlbW90ZVByb2Nlc3NJRCgpKTsKIH0gICAgCiAK
IHZvaWQgV2ViUGFnZVByb3h5OjptYWtlRmlyc3RSZXNwb25kZXIoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwuaAppbmRleCAwM2RmZGFlZTE1M2MuLjVhMmUxMjlmZGM4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJbXBsLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJbXBsLmgKQEAgLTQ0OCw3
ICs0NDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJZ25vcmVzTW91c2VEcmFnZ2VkRXZlbnRz
KGJvb2wpOwogICAgIGJvb2wgaWdub3Jlc01vdXNlRHJhZ2dlZEV2ZW50cygpIGNvbnN0IHsgcmV0
dXJuIG1faWdub3Jlc01vdXNlRHJhZ2dlZEV2ZW50czsgfQogCi0gICAgdm9pZCBzZXRBY2Nlc3Np
YmlsaXR5V2ViUHJvY2Vzc1Rva2VuKE5TRGF0YSAqKTsKKyAgICB2b2lkIHNldEFjY2Vzc2liaWxp
dHlXZWJQcm9jZXNzVG9rZW4oTlNEYXRhICosIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgcGlk
X3QpOwogICAgIHZvaWQgYWNjZXNzaWJpbGl0eVJlZ2lzdGVyVUlQcm9jZXNzVG9rZW5zKCk7CiAg
ICAgdm9pZCB1cGRhdGVSZW1vdGVBY2Nlc3NpYmlsaXR5UmVnaXN0cmF0aW9uKGJvb2wgcmVnaXN0
ZXJQcm9jZXNzKTsKICAgICBpZCBhY2Nlc3NpYmlsaXR5Rm9jdXNlZFVJRWxlbWVudCgpOwpAQCAt
OTI3LDYgKzkyNyw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIGJv
b2wgbV9hbGxvd3NNYWduaWZpY2F0aW9uIHsgZmFsc2UgfTsKIAogICAgIFJldGFpblB0cjxOU0Fj
Y2Vzc2liaWxpdHlSZW1vdGVVSUVsZW1lbnQ+IG1fcmVtb3RlQWNjZXNzaWJpbGl0eUNoaWxkOwor
ICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBtX3JlbW90ZUFjY2Vzc2liaWxpdHlG
cmFtZUNhY2hlOwogCiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlPiBtX3Byb21pc2VkSW1hZ2U7
CiAgICAgU3RyaW5nIG1fcHJvbWlzZWRGaWxlbmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XZWJWaWV3SW1wbC5tbQppbmRleCA1YmRlMTExNjI3OTAuLmE0YjMwN2Q3NmU3MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJbXBsLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3SW1wbC5tbQpAQCAtMzQ4MSwxMCAr
MzQ4MSwxMiBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRJZ25vcmVzTW91c2VEcmFnZ2VkRXZlbnRz
KGJvb2wgaWdub3Jlc01vdXNlRHJhZ2dlZEV2ZW50cykKICAgICBtX2lnbm9yZXNNb3VzZURyYWdn
ZWRFdmVudHMgPSBpZ25vcmVzTW91c2VEcmFnZ2VkRXZlbnRzOwogfQogCi12b2lkIFdlYlZpZXdJ
bXBsOjpzZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuKE5TRGF0YSAqZGF0YSkKK3ZvaWQg
V2ViVmlld0ltcGw6OnNldEFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW4oTlNEYXRhICpkYXRh
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgcGlkX3QgcGlkKQogewotICAgIG1f
cmVtb3RlQWNjZXNzaWJpbGl0eUNoaWxkID0gZGF0YS5sZW5ndGggPyBhZG9wdE5TKFtbTlNBY2Nl
c3NpYmlsaXR5UmVtb3RlVUlFbGVtZW50IGFsbG9jXSBpbml0V2l0aFJlbW90ZVRva2VuOmRhdGFd
KSA6IG5pbDsKLSAgICB1cGRhdGVSZW1vdGVBY2Nlc3NpYmlsaXR5UmVnaXN0cmF0aW9uKHRydWUp
OworICAgIGlmIChwaWQgPT0gbV9wYWdlLT5wcm9jZXNzKCkucHJvY2Vzc0lEKCkpIHsKKyAgICAg
ICAgbV9yZW1vdGVBY2Nlc3NpYmlsaXR5Q2hpbGQgPSBkYXRhLmxlbmd0aCA/IGFkb3B0TlMoW1tO
U0FjY2Vzc2liaWxpdHlSZW1vdGVVSUVsZW1lbnQgYWxsb2NdIGluaXRXaXRoUmVtb3RlVG9rZW46
ZGF0YV0pIDogbmlsOworICAgICAgICB1cGRhdGVSZW1vdGVBY2Nlc3NpYmlsaXR5UmVnaXN0cmF0
aW9uKHRydWUpOworICAgIH0KIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6dXBkYXRlUmVtb3RlQWNj
ZXNzaWJpbGl0eVJlZ2lzdHJhdGlvbihib29sIHJlZ2lzdGVyUHJvY2VzcykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJMb2NhbEZyYW1lTG9h
ZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA3ZDJhNDI2NWZkNWMuLmYzZjczZjM2
N2VhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTgw
Nyw2ICsxODA3LDEyIEBAIHZvaWQgV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hX
aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVuCiAKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICAKK1dlYkNvcmU6OkludFBvaW50IFdlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQ6
OmFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCgpCit7CisgICAgUmVmUHRyIHdlYlBhZ2Ug
PSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgcmV0dXJuIHdlYlBhZ2UgPyB3ZWJQYWdlLT5hY2Nlc3Np
YmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKSA6IEludFBvaW50KCk7Cit9CisKIFJlbW90ZUFYT2Jq
ZWN0UmVmIFdlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQ6OmFjY2Vzc2liaWxpdHlSZW1vdGVPYmpl
Y3QoKQogewogICAgIFJlZlB0ciB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkxvY2FsRnJhbWVM
b2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggODhjOGNjNWNiNzJlLi45ZjNiNjdmMGZj
YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMjQwLDYgKzI0
MCw3IEBAIHByaXZhdGU6CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZW1vdGVBWE9iamVj
dFJlZiBhY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkgZmluYWw7CisgICAgV2ViQ29yZTo6SW50
UG9pbnQgYWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCkgZmluYWw7CiAjaWYgRU5BQkxF
KEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKICAgICB2b2lkIHNldEFYSXNvbGF0ZWRUcmVl
Um9vdChXZWJDb3JlOjpBWENvcmVPYmplY3QqKSBmaW5hbDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90ZUZyYW1lQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZW1v
dGVGcmFtZUNsaWVudC5jcHAKaW5kZXggOGNiZmYyYzliOGM5Li5hMmYwOTQ4ZDQzMTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVG
cmFtZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlJlbW90ZUZyYW1lQ2xpZW50LmNwcApAQCAtOTYsNiArOTYsMzggQEAgU3RyaW5nIFdl
YlJlbW90ZUZyYW1lQ2xpZW50OjpyZW5kZXJUcmVlQXNUZXh0KHNpemVfdCBiYXNlSW5kZW50LCBP
cHRpb25TZXQ8UmVuZGUKICAgICByZXR1cm4gcmVzdWx0OwogfQogCit2b2lkIFdlYlJlbW90ZUZy
YW1lQ2xpZW50Ojp1bmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRl
bnRpZmllcikKK3sKKyAgICAvLyBNYWtlIHN1cmUgQXBwS2l0IHN5c3RlbSBrbm93cyBhYm91dCBv
dXIgcmVtb3RlIFVJIHByb2Nlc3Mgc3RhdHVzIG5vdy4KKyAgICBpZiAoUmVmUHRyIHBhZ2UgPSBt
X2ZyYW1lLT5wYWdlKCkpCisgICAgICAgIHBhZ2UtPmFjY2Vzc2liaWxpdHlNYW5hZ2VSZW1vdGVF
bGVtZW50U3RhdHVzKGZhbHNlLCBwcm9jZXNzSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViUmVt
b3RlRnJhbWVDbGllbnQ6OnVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6SW50UG9pbnQgb2Zmc2V0KQor
eworICAgIGlmIChSZWZQdHIgcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgcGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpVcGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxp
dHlPZmZzZXQoZnJhbWVJRCwgb2Zmc2V0KSk7Cit9CisKK3ZvaWQgV2ViUmVtb3RlRnJhbWVDbGll
bnQ6OmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IHN0ZDo6c3Bhbjxjb25zdCB1
aW50OF90PiBkYXRhVG9rZW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpzcGFuPGNvbnN0
IHVpbnQ4X3Q+LCBpbnQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFJlZlB0ciBwYWdl
ID0gbV9mcmFtZS0+cGFnZSgpOworICAgIGlmICghcGFnZSkgeworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4geyB9LCAwKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHBhZ2UtPnNlbmRTeW5jKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKHByb2Nlc3NJZGVu
dGlmaWVyLCBmcmFtZUlELCBkYXRhVG9rZW4pKTsKKyAgICBpZiAoIXNlbmRSZXN1bHQuc3VjY2Vl
ZGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gW3Jlc3VsdFRva2VuLCBwcm9jZXNz
SWRlbnRpZmllclJlc3VsdF0gPSBzZW5kUmVzdWx0LnRha2VSZXBseSgpOworCisgICAgLy8gTWFr
ZSBzdXJlIEFwcEtpdCBzeXN0ZW0ga25vd3MgYWJvdXQgb3VyIHJlbW90ZSBVSSBwcm9jZXNzIHN0
YXR1cyBub3cuCisgICAgcGFnZS0+YWNjZXNzaWJpbGl0eU1hbmFnZVJlbW90ZUVsZW1lbnRTdGF0
dXModHJ1ZSwgcHJvY2Vzc0lkZW50aWZpZXJSZXN1bHQpOworICAgIGNvbXBsZXRpb25IYW5kbGVy
KHJlc3VsdFRva2VuLCBwcm9jZXNzSWRlbnRpZmllclJlc3VsdCk7Cit9CisKIHZvaWQgV2ViUmVt
b3RlRnJhbWVDbGllbnQ6OmJyb2FkY2FzdEZyYW1lUmVtb3ZhbFRvT3RoZXJQcm9jZXNzZXMoKQog
ewogICAgIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpicm9hZGNhc3RGcmFtZVJlbW92YWxUb090aGVy
UHJvY2Vzc2VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVudC5oCmluZGV4IDYyNmUwNWMzZTg4
Yi4uYzg4OWViN2U1ZmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuaApAQCAtNDgsNiAr
NDgsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBvc3RNZXNzYWdlVG9SZW1vdGUoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciB0YXJnZXQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhPiB0YXJnZXRPcmlnaW4sIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVz
c2FnZVBvcnRzJikgZmluYWw7CiAgICAgdm9pZCBjaGFuZ2VMb2NhdGlvbihXZWJDb3JlOjpGcmFt
ZUxvYWRSZXF1ZXN0JiYpIGZpbmFsOwogICAgIFN0cmluZyByZW5kZXJUcmVlQXNUZXh0KHNpemVf
dCBiYXNlSW5kZW50LCBPcHRpb25TZXQ8V2ViQ29yZTo6UmVuZGVyQXNUZXh0RmxhZz4pIGZpbmFs
OworICAgIHZvaWQgYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVu
dGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90
PiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIGludCk+
JiYpIGZpbmFsOworICAgIHZvaWQgdW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQp
IGZpbmFsOworICAgIHZvaWQgdXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6SW50UG9pbnQpIGZpbmFsOworCiAgICAg
dm9pZCBicm9hZGNhc3RGcmFtZVJlbW92YWxUb090aGVyUHJvY2Vzc2VzKCkgZmluYWw7CiAgICAg
dm9pZCBjbG9zZVBhZ2UoKSBmaW5hbDsKICAgICB2b2lkIGZvY3VzKCkgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2Eu
bW0KaW5kZXggYWU0M2YxYTQ2OThiLi5lZmY2NGEzMDFmNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KQEAgLTc3
LDYgKzc3LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvVVRJUmVnaXN0cnkuaD4KICNpbXBvcnQgPFdl
YkNvcmUvVVRJVXRpbGl0aWVzLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZp
Y2VzU1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TQWNjZXNzaWJpbGl0eVNQSS5oPgog
I2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAjaW1wb3J0IDx3dGYvc3Bp
L2Rhcndpbi9TYW5kYm94U1BJLmg+CiAKQEAgLTQwNCwxMCArNDA1LDQ2IEBAIHZvaWQgV2ViUGFn
ZTo6Y2xlYXJEaWN0YXRpb25BbHRlcm5hdGl2ZXMoVmVjdG9yPERpY3RhdGlvbkNvbnRleHQ+JiYg
Y29udGV4dHMpCiAgICAgfSwgRG9jdW1lbnRNYXJrZXI6OlR5cGU6OkRpY3RhdGlvbkFsdGVybmF0
aXZlcyk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6YWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9r
ZW4oUmV0YWluUHRyPE5TRGF0YT4gcmVtb3RlVG9rZW4pCit2b2lkIFdlYlBhZ2U6OmFjY2Vzc2li
aWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKFJldGFpblB0cjxOU0RhdGE+IHJlbW90ZVRva2VuLCBG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKIHsKICAgICBzdGQ6OnNwYW4gZGF0YVRva2VuKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtyZW1vdGVUb2tlbiBieXRlc10pLCBbcmVtb3Rl
VG9rZW4gbGVuZ3RoXSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWdpc3Rl
cldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oZGF0YVRva2VuKSk7CisgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpSZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4o
ZGF0YVRva2VuLCBmcmFtZUlEKSk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6YWNjZXNzaWJpbGl0eU1h
bmFnZVJlbW90ZUVsZW1lbnRTdGF0dXMoYm9vbCByZWdpc3RlclN0YXR1cywgaW50IHByb2Nlc3NJ
ZGVudGlmaWVyKQoreworICAgIGlmIChyZWdpc3RlclN0YXR1cykKKyAgICAgICAgW05TQWNjZXNz
aWJpbGl0eVJlbW90ZVVJRWxlbWVudCByZWdpc3RlclJlbW90ZVVJUHJvY2Vzc0lkZW50aWZpZXI6
cHJvY2Vzc0lkZW50aWZpZXJdOworICAgIGVsc2UKKyAgICAgICAgW05TQWNjZXNzaWJpbGl0eVJl
bW90ZVVJRWxlbWVudCB1bnJlZ2lzdGVyUmVtb3RlVUlQcm9jZXNzSWRlbnRpZmllcjpwcm9jZXNz
SWRlbnRpZmllcl07Cit9CisKK3ZvaWQgV2ViUGFnZTo6YmluZFJlbW90ZUFjY2Vzc2liaWxpdHlG
cmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGFUb2tlbiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIGludCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgUmVmUHRyIHdlYkZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2Vi
RnJhbWUoZnJhbWVJRCk7CisgICAgaWYgKCF3ZWJGcmFtZSkgeworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgMCk7Cisg
ICAgfQorCisgICAgUmVmUHRyIGNvcmVMb2NhbEZyYW1lID0gd2ViRnJhbWUtPmNvcmVMb2NhbEZy
YW1lKCk7CisgICAgaWYgKCFjb3JlTG9jYWxGcmFtZSkgeworICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgMCk7CisgICAg
fQorCisgICAgYXV0byogcmVuZGVyZXIgPSBjb3JlTG9jYWxGcmFtZS0+Y29udGVudFJlbmRlcmVy
KCk7CisgICAgaWYgKCFyZW5kZXJlcikgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgMCk7CisgICAgfQorCisgICAg
cmVnaXN0ZXJSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlUb2tlbnMocHJvY2Vzc0lkZW50aWZpZXIs
IGRhdGFUb2tlbik7CisKKyAgICAvLyBHZXQgb3VyIHJlbW90ZSB0b2tlbiBkYXRhIGFuZCBzZW5k
IGJhY2sgdG8gdGhlIFJlbW90ZUZyYW1lLgorICAgIGF1dG8gcmVtb3RlVG9rZW4gPSBhY2Nlc3Np
YmlsaXR5UmVtb3RlVG9rZW5EYXRhKCk7CisgICAgc3RkOjpzcGFuIHJlbW90ZURhdGFUb2tlbihy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihbcmVtb3RlVG9rZW4gYnl0ZXNdKSwgW3Jl
bW90ZVRva2VuIGxlbmd0aF0pOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlbW90ZURhdGFUb2tl
biwgZ2V0cGlkKCkpOwogfQogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBjMDVkZGNkZTdmYWEuLjE0ZDgyMjFi
NDJiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAt
NjcxLDYgKzY3MSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhckhpc3RvcnkoKTsKIAogICAg
IHZvaWQgYWNjZXNzaWJpbGl0eVNldHRpbmdzRGlkQ2hhbmdlKCk7CisjaWYgUExBVEZPUk0oQ09D
T0EpCisgICAgdm9pZCBhY2Nlc3NpYmlsaXR5TWFuYWdlUmVtb3RlRWxlbWVudFN0YXR1cyhib29s
LCBpbnQpOworI2VuZGlmCisKICAgICB2b2lkIHNjcmVlblByb3BlcnRpZXNEaWRDaGFuZ2UoKTsK
IAogICAgIHZvaWQgc2NhbGVQYWdlKGRvdWJsZSBzY2FsZSwgY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIG9yaWdpbik7CkBAIC0xMDQzLDcgKzEwNDcsMTEgQEAgcHVibGljOgogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplQWNjZXNzaWJpbGl0eSgpOwogICAg
IHZvaWQgcmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKHN0ZDo6c3Bhbjxjb25z
dCB1aW50OF90PiBlbGVtZW50VG9rZW4sIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiB3aW5kb3dU
b2tlbik7CisgICAgdm9pZCByZWdpc3RlclJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eVRva2Vucyhw
aWRfdCwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKICAgICBXS0FjY2Vzc2liaWxpdHlXZWJQ
YWdlT2JqZWN0KiBhY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCk7CisgICAgV2ViQ29yZTo6SW50
UG9pbnQgYWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCk7CisgICAgdm9pZCBjcmVhdGVN
b2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQocGlkX3QpOworICAgIHZvaWQgdXBkYXRlUmVtb3RlUGFn
ZUFjY2Vzc2liaWxpdHlPZmZzZXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpJ
bnRQb2ludCk7CiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKICAgICB2
b2lkIGNhY2hlQVhQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAgICAgdm9p
ZCBjYWNoZUFYU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CkBAIC0yMDk0LDcgKzIxMDIs
NyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgcmVxdWVzdEFjdGl2
ZU5vd1BsYXlpbmdTZXNzaW9uSW5mbyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wsIFdlYkNv
cmU6Ok5vd1BsYXlpbmdJbmZvJiYpPiYmKTsKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhY2Nlc3Np
YmlsaXR5UmVtb3RlVG9rZW5EYXRhKCkgY29uc3Q7Ci0gICAgdm9pZCBhY2Nlc3NpYmlsaXR5VHJh
bnNmZXJSZW1vdGVUb2tlbihSZXRhaW5QdHI8TlNEYXRhPik7CisgICAgdm9pZCBhY2Nlc3NpYmls
aXR5VHJhbnNmZXJSZW1vdGVUb2tlbihSZXRhaW5QdHI8TlNEYXRhPiwgV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyKTsKICNlbmRpZgogCiAgICAgdm9pZCBzZXRTaG91bGREaXNwYXRjaEZha2VNb3Vz
ZU1vdmVFdmVudHMoYm9vbCBkaXNwYXRjaCkgeyBtX3Nob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92
ZUV2ZW50cyA9IGRpc3BhdGNoOyB9CkBAIC0yMjA0LDYgKzIyMTIsOSBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCByZW1vdGVQb3N0TWVzc2FnZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgc291cmNl
LCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHRh
cmdldCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiYgdGFyZ2V0
T3JpZ2luLCBjb25zdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYpOwogICAgIHZv
aWQgcmVuZGVyVHJlZUFzVGV4dChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHNpemVfdCBiYXNl
SW5kZW50LCBPcHRpb25TZXQ8V2ViQ29yZTo6UmVuZGVyQXNUZXh0RmxhZz4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lk
IGJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBpbnQpPiYmKTsKKyNlbmRp
ZgogCiAgICAgdm9pZCByZXF1ZXN0VGV4dEV4dHJhY3Rpb24oc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpGbG9hdFJlY3Q+JiYgY29sbGVjdGlvblJlY3RJblJvb3RWaWV3LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFdlYkNvcmU6OlRleHRFeHRyYWN0aW9uOjpJdGVtJiYpPiYmKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5k
ZXggMGNhZjZlMjI1Mzc4Li5hZjdhZDI2YzNhNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNDkyLDYgKzQ5Miw5
IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6
U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgV2luZG93QW5kVmlld0ZyYW1lc0NoYW5n
ZWQoc3RydWN0IFdlYktpdDo6Vmlld1dpbmRvd0Nvb3JkaW5hdGVzIGNvb3JkaW5hdGVzKQogICAg
IFNldE1haW5GcmFtZUlzU2Nyb2xsYWJsZShib29sIGlzU2Nyb2xsYWJsZSkKICAgICBSZWdpc3Rl
clVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGVs
ZW1lbnRUb2tlbiwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHdpbmRvd1Rva2VuKQorICAgIEJp
bmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRh
VG9rZW4pIC0+IChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gdG9rZW4sIGludCBwcm9jZXNzSWRl
bnRpZmllcikgU3luY2hyb25vdXMKKyAgICBVcGRhdGVSZW1vdGVQYWdlQWNjZXNzaWJpbGl0eU9m
ZnNldChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6SW50UG9pbnQg
b2Zmc2V0KTsKKwogICAgIEdldFN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKSAtPiAoU3Ry
aW5nIHN0cmluZ1ZhbHVlKSBTeW5jaHJvbm91cwogICAgIEdldERhdGFTZWxlY3Rpb25Gb3JQYXN0
ZWJvYXJkKFN0cmluZyBwYXN0ZWJvYXJkVHlwZSkgLT4gKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IGJ1ZmZlcikgU3luY2hyb25vdXMKICAgICBSZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9h
cmQoU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoYm9vbCByZXN1bHQpIFN5bmNocm9ub3VzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
CmluZGV4IGE3ZmQ3MjMxMjdjMC4uMTBkOTg4YTM1YzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMjQzLDEyICsyNDMs
MTQgQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemVBY2Nlc3NpYmlsaXR5KCkKICAg
ICBtX21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCA9IGFkb3B0TlMoW1tXS0FjY2Vzc2liaWxpdHlX
ZWJQYWdlT2JqZWN0IGFsbG9jXSBpbml0XSk7CiAgICAgW21fbW9ja0FjY2Vzc2liaWxpdHlFbGVt
ZW50IHNldFdlYlBhZ2U6dGhpc107CiAKLSAgICBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVU
b2tlbihhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCkpOworICAgIFJlZiBmcmFtZSA9IG1f
cGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgYWNjZXNz
aWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oYWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0YSgp
LCBmcmFtZS5mcmFtZUlEKCkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtUmVpbml0aWFs
aXplKCkKIHsKLSAgICBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tlbihhY2Nlc3NpYmls
aXR5UmVtb3RlVG9rZW5EYXRhKCkpOworICAgIFJlZiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgYWNjZXNzaWJpbGl0eVRyYW5zZmVy
UmVtb3RlVG9rZW4oYWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0YSgpLCBmcmFtZS5mcmFtZUlE
KCkpOwogfQogCiBSZXRhaW5QdHI8TlNEYXRhPiBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5UmVtb3Rl
VG9rZW5EYXRhKCkgY29uc3QKQEAgLTY2Miw2ICs2NjQsMTIgQEAgdm9pZCBXZWJQYWdlOjpnZXRE
YXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQKICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogfQogCitXZWJDb3JlOjpJbnRQb2lu
dCBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKwogV0tBY2Nlc3NpYmlsaXR5V2ViUGFn
ZU9iamVjdCogV2ViUGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpCiB7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNl
LmgKaW5kZXggMzllOTBlM2M4OTVlLi40OTcwMDcwYTQ1NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0
QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vz
c2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oCkBAIC00NSw2ICs0NSw4IEBAIGNsYXNzIEFYQ29y
ZU9iamVjdDsKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fc2l6ZSBXVEZfR1VBUkRFRF9CWV9MT0NL
KG1fY2FjaGVMb2NrKTsKICAgICBUaHJlYWRTYWZlV2Vha1B0cjxXZWJDb3JlOjpBWENvcmVPYmpl
Y3Q+IG1faXNvbGF0ZWRUcmVlUm9vdDsKICNlbmRpZgorCisgICAgV2ViQ29yZTo6SW50UG9pbnQg
bV9yZW1vdGVGcmFtZU9mZnNldDsKICAgICBSZXRhaW5QdHI8aWQ+IG1fcGFyZW50OwogICAgIGJv
b2wgbV9oYXNNYWluRnJhbWVQbHVnaW47CiB9CkBAIC01Niw5ICs1OCwxMSBAQCBjbGFzcyBBWENv
cmVPYmplY3Q7CiAtICh2b2lkKXNldElzb2xhdGVkVHJlZVJvb3Q6KE5ha2VkUHRyPFdlYkNvcmU6
OkFYQ29yZU9iamVjdD4pcm9vdDsKICNlbmRpZgogLSAodm9pZClzZXRSZW1vdGVQYXJlbnQ6KGlk
KXBhcmVudDsKKy0gKHZvaWQpc2V0UmVtb3RlRnJhbWVPZmZzZXQ6KFdlYkNvcmU6OkludFBvaW50
KW9mZnNldDsKIC0gKHZvaWQpc2V0SGFzTWFpbkZyYW1lUGx1Z2luOihib29sKWhhc1BsdWdpbjsK
IAogLSAoaWQpYWNjZXNzaWJpbGl0eVJvb3RPYmplY3RXcmFwcGVyOwogLSAoaWQpYWNjZXNzaWJp
bGl0eUZvY3VzZWRVSUVsZW1lbnQ7CistIChXZWJDb3JlOjpJbnRQb2ludClhY2Nlc3NpYmlsaXR5
UmVtb3RlRnJhbWVPZmZzZXQ7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQ
YWdlT2JqZWN0QmFzZS5tbQppbmRleCA2Zjk5NTQ1YWViZjUuLmJlYzhkNzNmYWEyZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0
eVdlYlBhZ2VPYmplY3RCYXNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbQpAQCAtMzYsOSArMzYs
MTEgQEAKICNpbXBvcnQgIldLU3RyaW5nQ0YuaCIKICNpbXBvcnQgPFdlYkNvcmUvQVhPYmplY3RD
YWNoZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9G
cmFtZVRyZWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxGcmFtZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9Mb2NhbEZyYW1lVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CisjaW1wb3J0
IDxXZWJDb3JlL1JlbW90ZUZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbFZpZXcuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsYmFyLmg+CiAKQEAgLTU3LDExICs1OSwxNyBAQCBuYW1l
c3BhY2UgYXggPSBXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5OwogICAgIGlmICghcGFnZSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvKiBsb2NhbE1haW5GcmFtZSA9IGR5bmFtaWNE
b3duY2FzdDxXZWJDb3JlOjpMb2NhbEZyYW1lPihwYWdlLT5tYWluRnJhbWUoKSk7Ci0gICAgaWYg
KCFsb2NhbE1haW5GcmFtZSB8fCAhbG9jYWxNYWluRnJhbWUtPmRvY3VtZW50KCkpCi0gICAgICAg
IHJldHVybiBudWxscHRyOworICAgIGlmIChhdXRvKiBsb2NhbE1haW5GcmFtZSA9IGR5bmFtaWNE
b3duY2FzdDxXZWJDb3JlOjpMb2NhbEZyYW1lPihwYWdlLT5tYWluRnJhbWUoKSkpIHsKKyAgICAg
ICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gbG9jYWxNYWluRnJhbWUtPmRvY3VtZW50KCkpCisgICAg
ICAgICAgICByZXR1cm4gZG9jdW1lbnQtPmF4T2JqZWN0Q2FjaGUoKTsKKyAgICB9IGVsc2UgaWYg
KGF1dG8qIHJlbW90ZU1haW5GcmFtZSA9IGR5bmFtaWNEb3duY2FzdDxXZWJDb3JlOjpSZW1vdGVG
cmFtZT4ocGFnZS0+bWFpbkZyYW1lKCkpKSB7CisgICAgICAgIGF1dG8mIHRyZWUgPSByZW1vdGVN
YWluRnJhbWUtPnRyZWUoKTsKKyAgICAgICAgYXV0byogZmlyc3RGcmFtZSA9IGR5bmFtaWNEb3du
Y2FzdDxXZWJDb3JlOjpMb2NhbEZyYW1lPih0cmVlLmZpcnN0Q2hpbGQoKSk7CisgICAgICAgIGF1
dG8qIGRvY3VtZW50ID0gZmlyc3RGcmFtZSA/IGZpcnN0RnJhbWUtPmRvY3VtZW50KCkgOiBudWxs
cHRyOworICAgICAgICByZXR1cm4gZG9jdW1lbnQgPyBkb2N1bWVudC0+YXhPYmplY3RDYWNoZSgp
IDogbnVsbHB0cjsKKyAgICB9CiAKLSAgICByZXR1cm4gbG9jYWxNYWluRnJhbWUtPmRvY3VtZW50
KCktPmF4T2JqZWN0Q2FjaGUoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogLSAoaWQpYWNj
ZXNzaWJpbGl0eVBsdWdpbk9iamVjdApAQCAtMTUyLDYgKzE2MCwxNyBAQCBuYW1lc3BhY2UgYXgg
PSBXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5OwogICAgIG1faGFzTWFpbkZyYW1lUGx1Z2luID0gaGFz
UGx1Z2luOwogfQogCistICh2b2lkKXNldFJlbW90ZUZyYW1lT2Zmc2V0OihXZWJDb3JlOjpJbnRQ
b2ludClvZmZzZXQKK3sKKyAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKKyAgICBtX3JlbW90
ZUZyYW1lT2Zmc2V0ID0gb2Zmc2V0OworfQorCistIChXZWJDb3JlOjpJbnRQb2ludClhY2Nlc3Np
YmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQKK3sKKyAgICByZXR1cm4gbV9yZW1vdGVGcmFtZU9mZnNl
dDsKK30KKwogLSAodm9pZClzZXRSZW1vdGVQYXJlbnQ6KGlkKXBhcmVudAogewogICAgIEFTU0VS
VChpc01haW5SdW5Mb29wKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCBiMmRjNzM1YmJlYWUuLjg5ZWFlNWU5N2ZkNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VN
YWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VN
YWMubW0KQEAgLTEyMywxNiArMTIzLDEyIEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFs
aXplQWNjZXNzaWJpbGl0eSgpCiAgICAgLy8gQ3VycmVudGx5LCBpdCBpcyBhbHNvIG5lZWRlZCB0
byBhbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSBhbiBOU0FwcGxpY2F0aW9uIG9iamVjdC4KICAgICBb
TlNBcHBsaWNhdGlvbiBfYWNjZXNzaWJpbGl0eUluaXRpYWxpemVdOwogCi0gICAgYXV0byBtb2Nr
QWNjZXNzaWJpbGl0eUVsZW1lbnQgPSBhZG9wdE5TKFtbV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9i
amVjdCBhbGxvY10gaW5pdF0pOwotCiAgICAgLy8gR2V0IHRoZSBwaWQgZm9yIHRoZSBzdGFydGlu
ZyBwcm9jZXNzLgogICAgIHBpZF90IHBpZCA9IFdlYkNvcmU6OnByZXNlbnRpbmdBcHBsaWNhdGlv
blBJRCgpOwotICAgIGlmIChbbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50IHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3IoYWNjZXNzaWJpbGl0eVNldFByZXNlbnRlclByb2Nlc3NJZGVudGlmaWVy
OildKQotICAgICAgICBbKGlkKW1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudC5nZXQoKSBhY2Nlc3Np
YmlsaXR5U2V0UHJlc2VudGVyUHJvY2Vzc0lkZW50aWZpZXI6cGlkXTsKLSAgICBbbW9ja0FjY2Vz
c2liaWxpdHlFbGVtZW50IHNldFdlYlBhZ2U6dGhpc107Ci0gICAgbV9tb2NrQWNjZXNzaWJpbGl0
eUVsZW1lbnQgPSBXVEZNb3ZlKG1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCk7Ci0KLSAgICBhY2Nl
c3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tlbihhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRh
KCkpOworICAgIGNyZWF0ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudChwaWQpOworICAgIFJlZlB0
ciBsb2NhbE1haW5GcmFtZSA9IGR5bmFtaWNEb3duY2FzdDxMb2NhbEZyYW1lPihtX3BhZ2UtPm1h
aW5GcmFtZSgpKTsKKyAgICBpZiAobG9jYWxNYWluRnJhbWUpCisgICAgICAgIGFjY2Vzc2liaWxp
dHlUcmFuc2ZlclJlbW90ZVRva2VuKGFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSwgbG9j
YWxNYWluRnJhbWUtPmZyYW1lSUQoKSk7CiAKICAgICAvLyBDbG9zZSBNYWNoIGNvbm5lY3Rpb24g
dG8gTGF1bmNoIFNlcnZpY2VzLgogI2lmIEhBVkUoTFNfU0VSVkVSX0NPTk5FQ1RJT05fU1RBVFVT
X1JFTEVBU0VfTk9USUZJQ0FUSU9OU19NQVNLKQpAQCAtMTQ0LDkgKzE0MCwyMCBAQCB2b2lkIFdl
YlBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6ZUFjY2Vzc2liaWxpdHkoKQogICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnJldm9rZUxhdW5jaFNlcnZpY2VzU2FuZGJveEV4dGVuc2lvbigpOwogfQog
Cit2b2lkIFdlYlBhZ2U6OmNyZWF0ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudChwaWRfdCBwaWQp
Cit7CisgICAgYXV0byBtb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgPSBhZG9wdE5TKFtbV0tBY2Nl
c3NpYmlsaXR5V2ViUGFnZU9iamVjdCBhbGxvY10gaW5pdF0pOworCisgICAgaWYgKFttb2NrQWNj
ZXNzaWJpbGl0eUVsZW1lbnQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihhY2Nlc3NpYmls
aXR5U2V0UHJlc2VudGVyUHJvY2Vzc0lkZW50aWZpZXI6KV0pCisgICAgICAgIFsoaWQpbW9ja0Fj
Y2Vzc2liaWxpdHlFbGVtZW50LmdldCgpIGFjY2Vzc2liaWxpdHlTZXRQcmVzZW50ZXJQcm9jZXNz
SWRlbnRpZmllcjpwaWRdOworICAgIFttb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgc2V0V2ViUGFn
ZTp0aGlzXTsKKyAgICBtX21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCA9IFdURk1vdmUobW9ja0Fj
Y2Vzc2liaWxpdHlFbGVtZW50KTsKK30KKwogdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybVJlaW5pdGlh
bGl6ZSgpCiB7Ci0gICAgYWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oYWNjZXNzaWJp
bGl0eVJlbW90ZVRva2VuRGF0YSgpKTsKKyAgICBSZWYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIGFjY2Vzc2liaWxpdHlUcmFuc2Zl
clJlbW90ZVRva2VuKGFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSwgZnJhbWUtPmZyYW1l
SUQoKSk7CiB9CiAKIFJldGFpblB0cjxOU0RhdGE+IFdlYlBhZ2U6OmFjY2Vzc2liaWxpdHlSZW1v
dGVUb2tlbkRhdGEoKSBjb25zdApAQCAtNDY5LDEyICs0NzYsMjcgQEAgYm9vbCBXZWJQYWdlOjpw
ZXJmb3JtTm9uRWRpdGluZ0JlaGF2aW9yRm9yU2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxlY3Rv
ciwgS2V5Ym8KICAgICByZXR1cm4gZGlkUGVyZm9ybUFjdGlvbjsKIH0KIAordm9pZCBXZWJQYWdl
Ojp1cGRhdGVSZW1vdGVQYWdlQWNjZXNzaWJpbGl0eU9mZnNldChXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6SW50UG9pbnQgb2Zmc2V0KQoreworICAgIFthY2Nlc3Np
YmlsaXR5UmVtb3RlT2JqZWN0KCkgc2V0UmVtb3RlRnJhbWVPZmZzZXQ6b2Zmc2V0XTsKK30KKwor
dm9pZCBXZWJQYWdlOjpyZWdpc3RlclJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eVRva2VucyhwaWRf
dCBwaWQsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBlbGVtZW50VG9rZW4pCit7CisgICAgTlNE
YXRhICplbGVtZW50VG9rZW5EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmVsZW1lbnRUb2tl
bi5kYXRhKCkgbGVuZ3RoOmVsZW1lbnRUb2tlbi5zaXplKCldOworICAgIGF1dG8gcmVtb3RlRWxl
bWVudCA9IGVsZW1lbnRUb2tlbkRhdGEubGVuZ3RoID8gYWRvcHROUyhbW05TQWNjZXNzaWJpbGl0
eVJlbW90ZVVJRWxlbWVudCBhbGxvY10gaW5pdFdpdGhSZW1vdGVUb2tlbjplbGVtZW50VG9rZW5E
YXRhXSkgOiBuaWw7CisKKyAgICBjcmVhdGVNb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQocGlkKTsK
KyAgICBbYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpIHNldFJlbW90ZVBhcmVudDpyZW1vdGVF
bGVtZW50LmdldCgpXTsKK30KKwogdm9pZCBXZWJQYWdlOjpyZWdpc3RlclVJUHJvY2Vzc0FjY2Vz
c2liaWxpdHlUb2tlbnMoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGVsZW1lbnRUb2tlbiwgc3Rk
OjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHdpbmRvd1Rva2VuKQogewogICAgIE5TRGF0YSAqZWxlbWVu
dFRva2VuRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczplbGVtZW50VG9rZW4uZGF0YSgpIGxl
bmd0aDplbGVtZW50VG9rZW4uc2l6ZSgpXTsKICAgICBOU0RhdGEgKndpbmRvd1Rva2VuRGF0YSA9
IFtOU0RhdGEgZGF0YVdpdGhCeXRlczp3aW5kb3dUb2tlbi5kYXRhKCkgbGVuZ3RoOndpbmRvd1Rv
a2VuLnNpemUoKV07CiAgICAgYXV0byByZW1vdGVFbGVtZW50ID0gZWxlbWVudFRva2VuRGF0YS5s
ZW5ndGggPyBhZG9wdE5TKFtbTlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlFbGVtZW50IGFsbG9jXSBp
bml0V2l0aFJlbW90ZVRva2VuOmVsZW1lbnRUb2tlbkRhdGFdKSA6IG5pbDsKICAgICBhdXRvIHJl
bW90ZVdpbmRvdyA9IHdpbmRvd1Rva2VuRGF0YS5sZW5ndGggPyBhZG9wdE5TKFtbTlNBY2Nlc3Np
YmlsaXR5UmVtb3RlVUlFbGVtZW50IGFsbG9jXSBpbml0V2l0aFJlbW90ZVRva2VuOndpbmRvd1Rv
a2VuRGF0YV0pIDogbmlsOworCiAgICAgW3JlbW90ZUVsZW1lbnQgc2V0V2luZG93VUlFbGVtZW50
OnJlbW90ZVdpbmRvdy5nZXQoKV07CiAgICAgW3JlbW90ZUVsZW1lbnQgc2V0VG9wTGV2ZWxVSUVs
ZW1lbnQ6cmVtb3RlV2luZG93LmdldCgpXTsKIApAQCAtNTE2LDYgKzUzOCwxMSBAQCBXS0FjY2Vz
c2liaWxpdHlXZWJQYWdlT2JqZWN0KiBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0
KCkKICAgICByZXR1cm4gbV9tb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQuZ2V0KCk7CiB9CiAKK1dl
YkNvcmU6OkludFBvaW50IFdlYlBhZ2U6OmFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCgp
Cit7CisgICAgcmV0dXJuIFttX21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCBhY2Nlc3NpYmlsaXR5
UmVtb3RlRnJhbWVPZmZzZXRdOworfQorCiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFU
RURfVFJFRSkKIHZvaWQgV2ViUGFnZTo6Y2FjaGVBWFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZs
b2F0UG9pbnQmIHBvaW50KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5k
ZXggMDYxNGJjZjdhZjVjLi5iYTgzNjgwNjQ1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaApAQCAtNjUsNiArNjUsOSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2NyZWVuUHJv
cGVydGllcy5oPgogI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAjaW5jbHVkZSA8d3Rm
L01hY2hTZW5kUmlnaHQuaD4KKworT0JKQ19DTEFTUyBOU011dGFibGVEaWN0aW9uYXJ5OworCiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykKQEAgLTg3LDYgKzkwLDcgQEAKICNpbmNsdWRlICJX
ZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuaCIKICNlbmRpZgogCisKIG5hbWVzcGFjZSBBUEkgewog
Y2xhc3MgT2JqZWN0OwogfQpAQCAtNTExLDYgKzUxNSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBw
bGF0Zm9ybVNldENhY2hlTW9kZWwoQ2FjaGVNb2RlbCk7CiAKICAgICB2b2lkIHNldEVuaGFuY2Vk
QWNjZXNzaWJpbGl0eShib29sKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIGJpbmRB
Y2Nlc3NpYmlsaXR5RnJhbWVXaXRoRGF0YShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHN0ZDo6
c3Bhbjxjb25zdCB1aW50OF90Pik7CisjZW5kaWYKIAogICAgIHZvaWQgc3RhcnRNZW1vcnlTYW1w
bGVyKFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBkb3Vi
bGUpOwogICAgIHZvaWQgc3RvcE1lbW9yeVNhbXBsZXIoKTsKQEAgLTgyNiw2ICs4MzMsNyBAQCBw
cml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIEhhc2hDb3VudGVkU2V0PFN0cmluZz4g
bV9wZW5kaW5nUGFzdGVib2FyZFdyaXRlQ291bnRzOwogICAgIHN0ZDo6b3B0aW9uYWw8YXVkaXRf
dG9rZW5fdD4gbV9hdWRpdFRva2VuRm9yU2VsZjsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGlj
dGlvbmFyeT4gbV9hY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVUb2tlbkNhY2hlOwogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDk5YjQwMmFmMTFjYS4uZDc3NWZlN2QzOGQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpA
QCAtNjksNiArNjksNyBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIE5v
dFJlZkNvdW50ZWQgewogICAgIFNldFRleHRDaGVja2VyU3RhdGUoc3RydWN0IFdlYktpdDo6VGV4
dENoZWNrZXJTdGF0ZSB0ZXh0Q2hlY2tlclN0YXRlKQogCiAgICAgU2V0RW5oYW5jZWRBY2Nlc3Np
YmlsaXR5KGJvb2wgZmxhZykKKyAgICBCaW5kQWNjZXNzaWJpbGl0eUZyYW1lV2l0aERhdGEoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBk
YXRhKTsKIAogICAgIEdhcmJhZ2VDb2xsZWN0SmF2YVNjcmlwdE9iamVjdHMoKQogICAgIFNldEph
dmFTY3JpcHRHYXJiYWdlQ29sbGVjdG9yVGltZXJFbmFibGVkKGJvb2wgZW5hYmxlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXgg
YzUzODU3ZmJlMWQ0Li4xMTYwNmU5NjM5NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAtMjEzLDYgKzIxMywxNiBAQCB2b2lk
IFdlYlByb2Nlc3M6OnBsYXRmb3JtU2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVsKQogewogfQogCit2
b2lkIFdlYlByb2Nlc3M6OmJpbmRBY2Nlc3NpYmlsaXR5RnJhbWVXaXRoRGF0YShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCit7
CisgICAgaWYgKCFtX2FjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZVRva2VuQ2FjaGUpCisgICAgICAg
IG1fYWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lVG9rZW5DYWNoZSA9IGFkb3B0TlMoW1tOU011dGFi
bGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisKKyAgICBhdXRvIGZyYW1lSW50ID0gZnJhbWVJ
RC5vYmplY3QoKS50b1VJbnQ2NCgpOworICAgIE5TRGF0YSAqbnNEYXRhID0gW05TRGF0YSBkYXRh
V2l0aEJ5dGVzOmRhdGEuZGF0YSgpIGxlbmd0aDpkYXRhLnNpemUoKV07CisgICAgW21fYWNjZXNz
aWJpbGl0eVJlbW90ZUZyYW1lVG9rZW5DYWNoZSBzZXRPYmplY3Q6bnNEYXRhIGZvcktleTpAKGZy
YW1lSW50KV07Cit9CisKIGlkIFdlYlByb2Nlc3M6OmFjY2Vzc2liaWxpdHlGb2N1c2VkVUlFbGVt
ZW50KCkKIHsKICAgICBhdXRvIHJldHJpZXZlRm9jdXNlZFVJRWxlbWVudEZyb21NYWluVGhyZWFk
ID0gW10gKCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMjFlMjFmMDhiZDY0Li5i
NGNmMjgyYzE4Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMjI1LDYgKzIyNSw3
IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFJlbW90ZUFYT2JqZWN0UmVmIGFjY2Vzc2liaWxp
dHlSZW1vdGVPYmplY3QoKSBmaW5hbCB7IHJldHVybiAwOyB9CisgICAgV2ViQ29yZTo6SW50UG9p
bnQgYWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCkgZmluYWwgeyByZXR1cm4geyB9OyB9
CiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKICAgICB2b2lkIHNldEFY
SXNvbGF0ZWRUcmVlUm9vdChXZWJDb3JlOjpBWENvcmVPYmplY3QqKSBmaW5hbCB7IH0KICNlbmRp
Zgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>469895</attachid>
            <date>2024-02-15 12:42:17 -0800</date>
            <delta_ts>2024-02-15 14:13:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-268804-20240215124216.patch</filename>
            <type>text/plain</type>
            <size>116182</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">RnJvbSA1ZGFlYjk0MWVkMTRmZDFmMjBlN2Y1MDk3YTMwMGMzZDVlOTkzMDc5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpcyBGbGVpemFjaCA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4K
RGF0ZTogVGh1LCAxNSBGZWIgMjAyNCAxMjo0MDozOCAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIEFY
OiBTdXBwb3J0IHNpdGUgaXNvbGF0aW9uIGZvciBWb2ljZU92ZXIKIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjg4MDQgcmRhcjovLzk5NjY1NTYxCgpSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KCkluaXRpYWwgc3VwcG9ydCBmb3Igc2l0ZSBpc29sYXRpb24gZm9y
IFZvaWNlT3Zlci4KCldoZW4gYSBzY3JvbGwgdmlldyBob3N0cyBhIFJlbW90ZUZyYW1lIGl0IGJp
bmRzIGl0c2VsZiB0byB0aGUgb3RoZXIgc2lkZSB0aHJvdWdoIGEgV2ViUGFnZSBtZXNzYWdlLgpU
aGlzIHRyYW5zZmVycyBkYXRhIHRva2VucyBzbyBBY2Nlc3NpYmlsaXR5IHJlbW90ZSBlbGVtZW50
cyBhcmUgY3JlYXRlZCBhbmQgaG9va2VkIHVwLgoKVGhlIGJvdW5kaW5nIGJveGVzIGluc2lkZSB0
aGUgc3ViIGZyYW1lcyBuZWVkIHRvIGhhdmUgdGhlIGluaXRpYWwgb2Zmc2V0IGFwcGxpZWQgYW5k
IHRoZW4gbmVlZCB0byBiZSBjb252ZXJ0ZWQKZWFjaCBzdGVwIHVwIHRoZSBjaGFpbiB0byBhY2Nv
dW50IGZvciBzY3JvbGwgb2Zmc2V0cyB0aGF0IG9ubHkgZWFjaCBwcm9jZXNzIGtub3dzIGFib3V0
LgoKKiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dDoKKiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWENvcmVPYmplY3QuaDoKKFdlYkNvcmU6OmFjY2Vzc2liaWxpdHlSb2xlVG9TdHJpbmcpOgoo
V2ViQ29yZTo6QVhDb3JlT2JqZWN0Ojppc1JlbW90ZUZyYW1lIGNvbnN0KToKKiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcDoKKFdlYkNvcmU6OnN0cmVhbUFYQ29yZU9i
amVjdCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoK
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmNyZWF0ZSk6CihXZWJDb3JlOjpBWE9iamVjdENhY2hl
OjpvblJlbW90ZUZyYW1lSW5pdGlhbGl6ZWQpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5jcHA6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZWxhdGl2
ZUZyYW1lIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnJlbW90ZUZyYW1l
T2Zmc2V0IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW1vdGVGcmFtZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJh
bWVDbGllbnQuaC4KKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6Y3JlYXRlKToK
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6QWNjZXNzaWJpbGl0eVJlbW90ZUZy
YW1lKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6ZWxlbWVudFJlY3QgY29u
c3QpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbW90ZUZy
YW1lLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVDbGllbnQu
aC4KKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkQXR0YWNobWVu
dENoaWxkcmVuKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENoaWxk
cmVuKToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpkZXRhY2hSZW1vdGVQ
YXJ0cyk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6Y2xlYXJDaGlsZHJlbik6
CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkUmVtb3RlRnJhbWVDaGlsZCk6
CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkQ2hpbGRyZW4pOgooV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OndlYkFyZWFPYmplY3QgY29uc3QpOgooV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmRvY3VtZW50IGNvbnN0KToKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpwYXJlbnRPYmplY3QgY29uc3QpOgoqIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaDoKKiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcDoKKFdl
YkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKFdlYkNvcmU6
OkFYSXNvbGF0ZWRPYmplY3Q6OnNldFByb3BlcnR5KToKKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmpl
Y3Q6OnJlbW90ZUZyYW1lT2Zmc2V0IGNvbnN0KToKKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OnJlbGF0aXZlRnJhbWUgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHA6CihXZWJDb3JlOjpBWElzb2xhdGVk
VHJlZTo6dXBkYXRlTm9kZVByb3BlcnRpZXMpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMubW06CihXZWJDb3Jl
OjpBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplUGxhdGZvcm1Qcm9wZXJ0aWVzKToKKFdlYkNv
cmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50IGNvbnN0KToK
KiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFj
Lm1tOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lOjpnZW5lcmF0ZVJlbW90ZVRv
a2VuIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6aW5pdGlhbGl6
ZVBsYXRmb3JtRWxlbWVudFdpdGhSZW1vdGVUb2tlbik6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
OjpjcmVhdGVQbGF0Zm9ybVJvbGVNYXApOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbToKKG1ha2VOU0FycmF5KToK
KiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgcm9sZV0pOgoo
LVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBpc0VtcHR5R3JvdXBdKToKKC1bV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgcm9sZURlc2NyaXB0aW9uXSk6CigtW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIF90cmFuc2Zvcm1TcGVjaWFsQ2hpbGRyZW5DYXNlczpdKToKKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
Ol0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5SGl0VGVz
dDpdKToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgQUxMT1dfREVQUkVDQVRFRF9J
TVBMRU1FTlRBVElPTlNfRU5EXSk6CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpmb3JQYXJhbWV0ZXI6XSk6CigtW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlJbmRleE9mQ2hpbGQ6XSk6CigtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZUNvdW50
Ol0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXJyYXlB
dHRyaWJ1dGVWYWx1ZXM6aW5kZXg6bWF4Q291bnQ6XSk6CiogU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHA6CihXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjphY2Nl
c3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQpOgoqIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUZyYW1lTG9hZGVyQ2xpZW50Lmg6CiogU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvY2FsRnJhbWVM
b2FkZXJDbGllbnQuaDoKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwOgooV2ViQ29yZTo6
UGFnZTo6c2hvdWxkVXBkYXRlQWNjZXNzaWJpbGl0eVJlZ2lvbnMgY29uc3QpOgoqIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuY3BwOgooV2ViQ29yZTo6UmVtb3RlRnJhbWU6OnVwZGF0
ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldCk6CihXZWJDb3JlOjpSZW1vdGVGcmFtZTo6
dW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyk6CihXZWJDb3JlOjpSZW1vdGVGcmFtZTo6
YmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMpOgoqIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVt
b3RlRnJhbWUuaDoKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lQ2xpZW50Lmg6Ciog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcDoKKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdl
UHJveHk6OnJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbik6CiogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaDoKKiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcDoKKFdlYktpdDo6V2ViRnJhbWVQcm94eTo6YmluZEFj
Y2Vzc2liaWxpdHlGcmFtZVdpdGhEYXRhKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJG
cmFtZVByb3h5Lmg6CiogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojpzd2FwVG9Qcm92aXNpb25hbFBhZ2UpOgooV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKToKKFdlYktpdDo6V2Vi
UGFnZVByb3h5Ojp1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQpOgoqIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MubW06CihXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5
V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQpOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW06CihXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9j
ZXNzQWNjZXNzaWJpbGl0eVRva2VuKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGxNYWMuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGxNYWMubW06CihXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5V2ViUHJv
Y2Vzc1Rva2VuUmVjZWl2ZWQpOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW06CihXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNj
ZXNzaWJpbGl0eVRva2VuKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0lt
cGwuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwubW06CihXZWJL
aXQ6OldlYlZpZXdJbXBsOjpzZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuKToKKiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNs
aWVudC5jcHA6CihXZWJLaXQ6OldlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQ6OmFjY2Vzc2liaWxp
dHlSZW1vdGVGcmFtZU9mZnNldCk6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuaDoKKiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuY3BwOgooV2ViS2l0OjpX
ZWJSZW1vdGVGcmFtZUNsaWVudDo6dW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyk6CihX
ZWJLaXQ6OldlYlJlbW90ZUZyYW1lQ2xpZW50Ojp1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxp
dHlPZmZzZXQpOgooV2ViS2l0OjpXZWJSZW1vdGVGcmFtZUNsaWVudDo6YmluZFJlbW90ZUFjY2Vz
c2liaWxpdHlGcmFtZXMpOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJSZW1vdGVGcmFtZUNsaWVudC5oOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKFdlYktpdDo6V2ViUGFnZTo6YWNjZXNzaWJpbGl0
eVRyYW5zZmVyUmVtb3RlVG9rZW4pOgooV2ViS2l0OjpXZWJQYWdlOjphY2Nlc3NpYmlsaXR5TWFu
YWdlUmVtb3RlRWxlbWVudFN0YXR1cyk6CihXZWJLaXQ6OldlYlBhZ2U6OmJpbmRSZW1vdGVBY2Nl
c3NpYmlsaXR5RnJhbWVzKToKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmg6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbjoKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bToKKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplQWNjZXNzaWJpbGl0eSk6CihX
ZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtUmVpbml0aWFsaXplKToKKFdlYktpdDo6V2ViUGFnZTo6
YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KToKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaDoKKiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9i
amVjdEJhc2UubW06CigtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlIGF4T2JqZWN0
Q2FjaGVdKToKKC1bV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2Ugc2V0UmVtb3RlRnJh
bWVPZmZzZXQ6XSk6CigtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlIGFjY2Vzc2li
aWxpdHlSZW1vdGVGcmFtZU9mZnNldF0pOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tOgooV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybUluaXRpYWxp
emVBY2Nlc3NpYmlsaXR5KToKKFdlYktpdDo6V2ViUGFnZTo6Y3JlYXRlTW9ja0FjY2Vzc2liaWxp
dHlFbGVtZW50KToKKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1SZWluaXRpYWxpemUpOgooV2Vi
S2l0OjpXZWJQYWdlOjp1cGRhdGVSZW1vdGVQYWdlQWNjZXNzaWJpbGl0eU9mZnNldCk6CihXZWJL
aXQ6OldlYlBhZ2U6OnJlZ2lzdGVyUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5VG9rZW5zKToKKFdl
YktpdDo6V2ViUGFnZTo6cmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKToKKFdl
YktpdDo6V2ViUGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KToKKiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJQcm9jZXNzQ29jb2EubW06CihXZWJLaXQ6OldlYlByb2Nlc3M6OmJpbmRBY2Nlc3NpYmls
aXR5RnJhbWVXaXRoRGF0YSk6CiogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKLS0tCiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dCAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogLi4uL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIHwgICA0ICsKIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhDb3JlT2JqZWN0LmggICB8ICAxMiArKwogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WExvZ2dlci5jcHAgICAgIHwgICAzICsKIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5jcHAgICB8ICAxNSArLQogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmggIHwgICAyICsKIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhSZW1vdGVG
cmFtZS5jcHAgICB8ICA1MSArKysrKysrCiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
UmVtb3RlRnJhbWUuaCAgfCAgNjIgKysrKysrKysKIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuY3BwICAgICB8ICAyMCArKy0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuaCAgICAgICB8ICAgNSArCiAuLi4vQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHAgICAgICAgICAgICAgfCAgIDQgKy0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlTY3JvbGxWaWV3LmNwcCB8ICA1OCArKysrKystCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5U2Nyb2xsVmlldy5oICAgfCAgIDYgKy0KIC4uLi9pb3MvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJJT1MubW0gICB8ICAgMSArCiAuLi4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRP
YmplY3QuY3BwICAgICAgICAgfCAgMzUgKysrKy0KIC4uLi9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZE9iamVjdC5oICAgICAgICAgICB8ICAgOCArLQogLi4uL2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
VHJlZS5jcHAgICAgICAgICAgIHwgIDYxICsrKy0tLS0tCiAuLi4vaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRUcmVlLmggICAgICAgICAgICAgfCAgMjkgKysrKwogLi4uL2lzb2xhdGVkdHJlZS9tYWMv
QVhJc29sYXRlZE9iamVjdE1hYy5tbSAgIHwgICA3ICsKIC4uLi9tYWMvQWNjZXNzaWJpbGl0eU9i
amVjdE1hYy5tbSAgICAgICAgICAgICB8ICAyMSArKysKIC4uLi9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJCYXNlLm1tICB8ICAgOSArLQogLi4uL21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlck1hYy5tbSAgIHwgMTQzICsrKysrKysrKysrKy0tLS0tLQogU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgICAgICAgIHwgICA1ICsKIC4uLi9XZWJDb3Jl
L2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmggICB8ICAgMSArCiAuLi4vV2ViQ29yZS9s
b2FkZXIvTG9jYWxGcmFtZUxvYWRlckNsaWVudC5oICAgfCAgIDEgKwogU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcCAgICAgICAgICAgICAgICAgIHwgIDExICstCiBTb3VyY2UvV2ViQ29yZS9w
YWdlL1JlbW90ZUZyYW1lLmNwcCAgICAgICAgICAgfCAgMTUgKysKIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUmVtb3RlRnJhbWUuaCAgICAgICAgICAgICB8ICAgNCArCiBTb3VyY2UvV2ViQ29yZS9wYWdl
L1JlbW90ZUZyYW1lQ2xpZW50LmggICAgICAgfCAgIDQgKwogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGFnZUNsaWVudC5oICAgICAgICAgIHwgICAzICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9Q
cm92aXNpb25hbFBhZ2VQcm94eS5jcHAgfCAgIDIgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL1By
b3Zpc2lvbmFsUGFnZVByb3h5LmggICB8ICAgMiArLQogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViRnJhbWVQcm94eS5jcHAgICAgIHwgICA5ICsrCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJGcmFtZVByb3h5LmggICAgICAgfCAgIDIgKwogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcCAgICAgIHwgIDI0ICsrLQogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmggICAgICAgIHwgICA0ICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4gfCAgIDQgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5oICB8ICAgMiArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLm1tIHwgICAyICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tICAgfCAgIDQgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xp
ZW50SW1wbE1hYy5oICB8ICAgMiArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsTWFjLm1tIHwgICA0ICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVBy
b3h5TWFjLm1tICAgfCAgIDQgKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3
SW1wbC5oICAgICB8ICAgMyArLQogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJ
bXBsLm1tICAgIHwgICA4ICstCiAuLi4vV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudC5jcHAgICAg
ICAgICAgICAgfCAgIDYgKwogLi4uL1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuaCAgICAgICAg
ICAgICAgIHwgICAxICsKIC4uLi9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVudC5j
cHAgICB8ICAzMiArKysrCiAuLi4vV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQu
aCAgICAgfCAgIDQgKwogLi4uL1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2Eu
bW0gIHwgIDQxICsrKystCiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmggICAgfCAgMTMgKy0KIC4uLi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
biAgICB8ICAgMyArCiAuLi4vV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tICAg
ICAgfCAgMTIgKy0KIC4uLi9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaCAg
ICB8ICAgNCArCiAuLi4vbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tICAg
fCAgMjcgKysrLQogLi4uL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSAgICAg
IHwgIDQ1ICsrKystLQogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCAgICAg
ICAgIHwgICA4ICsKIC4uLi9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
ICB8ICAgMSArCiAuLi4vV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0gICAgICAg
fCAgMTAgKysKIC4uLi9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCB8
ICAgMSArCiA2MCBmaWxlcyBjaGFuZ2VkLCA3MzUgaW5zZXJ0aW9ucygrKSwgMTUwIGRlbGV0aW9u
cygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhS
ZW1vdGVGcmFtZS5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYUmVtb3RlRnJhbWUuaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMWY1N2I5YWEwYTM0Li5h
NTBmZTg5NDkzZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC01MjUsNiArNTI1LDcgQEAgYWNjZXNzaWJp
bGl0eS9BWEdlb21ldHJ5TWFuYWdlci5jcHAKIGFjY2Vzc2liaWxpdHkvQVhJbWFnZS5jcHAKIGFj
Y2Vzc2liaWxpdHkvQVhMb2dnZXIuY3BwCiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3Bw
CithY2Nlc3NpYmlsaXR5L0FYUmVtb3RlRnJhbWUuY3BwCiBhY2Nlc3NpYmlsaXR5L0FYVGV4dE1h
cmtlci5jcHAKIGFjY2Vzc2liaWxpdHkvQVhUZXh0UnVuLmNwcAogYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5QVJJQUdyaWQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMmE3ZWM4NjgwMDAyLi42N2RmYzBlZGI0NjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTg5NjAsNiArODk2MCw4IEBACiAJCTI5NDg5RkM1MTJDMDBGMDMwMEQ4M0YwRiAvKiBBY2Nl
c3NpYmlsaXR5U2Nyb2xsVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
Y2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
OTQ5ODY4MTE5NTM0MTk0MDA3MkQyQkQgLyogVGV4dFVuZG9JbnNlcnRpb25NYXJrdXBNYWMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUZXh0VW5kb0luc2VydGlv
bk1hcmt1cE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk0QkRBRTYyMUZG
NTgyQTAwNTEwNzdCIC8qIEFjY2Vzc2liaWxpdHlPYmplY3RDb2NvYS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlPYmplY3RDb2NvYS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjk1NUNGMTEyQjIzMEFFNjAwMDFCRjgyIC8q
IEFYUmVtb3RlRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVhSZW1vdGVGcmFtZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkyOTU1Q0YxMjJCMjMwQUU2MDAwMUJGODIgLyogQVhSZW1v
dGVGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBWFJlbW90ZUZyYW1lLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk3QkUzRDkxNkMwNDNEODAwMzMxNkJEIC8qIFBsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTI5ODFBQkM0MTMxODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5TWF0aE1M
RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5ODFDQTlEMTMxODIyRUMwMEQx
MkYyQSAvKiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIz
NDQ1LDYgKzIzNDQ3LDggQEAKIAkJCQlDMDQ5M0VCNzI0NDY5OUU0MDA5QUFDODAgLyogQVhMb2dn
ZXIuaCAqLywKIAkJCQkyOTgxQ0FBRjEzMTgyMkVDMDBEMTJGMkEgLyogQVhPYmplY3RDYWNoZS5j
cHAgKi8sCiAJCQkJMjlBODEyMUEwRkJCOUMxRDAwNTEwMjkzIC8qIEFYT2JqZWN0Q2FjaGUuaCAq
LywKKwkJCQkyOTU1Q0YxMjJCMjMwQUU2MDAwMUJGODIgLyogQVhSZW1vdGVGcmFtZS5jcHAgKi8s
CisJCQkJMjk1NUNGMTEyQjIzMEFFNjAwMDFCRjgyIC8qIEFYUmVtb3RlRnJhbWUuaCAqLywKIAkJ
CQlDMEUyMDhBMTI5Mzc5QzZGMDBDMEQyRDMgLyogQVhUZXh0TWFya2VyLmNwcCAqLywKIAkJCQlD
MEUyMDhBMDI5Mzc5QzZFMDBDMEQyRDMgLyogQVhUZXh0TWFya2VyLmggKi8sCiAJCQkJNDhDNEU4
M0MyQjM0RDgzODAwODM0NjBBIC8qIEFYVGV4dFJ1bi5jcHAgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYQ29yZU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWENvcmVPYmplY3QuaAppbmRleCA0NDEwODRlY2I4MDUuLjNmYmM3Zjhk
YjI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWENvcmVPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYQ29yZU9iamVjdC5oCkBA
IC0yMDUsNiArMjA1LDcgQEAgZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5Um9sZSB7CiAgICAgUHJv
Z3Jlc3NJbmRpY2F0b3IsCiAgICAgUmFkaW9CdXR0b24sCiAgICAgUmFkaW9Hcm91cCwKKyAgICBS
ZW1vdGVGcmFtZSwKICAgICBSb3dIZWFkZXIsCiAgICAgUm93LAogICAgIFJvd0dyb3VwLApAQCAt
NDQyLDYgKzQ0Myw4IEBAIEFMV0FZU19JTkxJTkUgU3RyaW5nIGFjY2Vzc2liaWxpdHlSb2xlVG9T
dHJpbmcoQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSkKICAgICAgICAgcmV0dXJuICJSYWRpb0J1dHRv
biJfczsKICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0dyb3VwOgogICAgICAgICBy
ZXR1cm4gIlJhZGlvR3JvdXAiX3M7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmVtb3Rl
RnJhbWU6CisgICAgICAgIHJldHVybiAiUmVtb3RlRnJhbWUiX3M7CiAgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6Um93SGVhZGVyOgogICAgICAgICByZXR1cm4gIlJvd0hlYWRlciJfczsKICAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSb3c6CkBAIC04MTUsNiArODE4LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvd0luc3RhbmNlKCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGxJ
bnN0YW5jZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNBWElzb2xhdGVkT2JqZWN0
SW5zdGFuY2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQVhSZW1vdGVGcmFtZSgp
IGNvbnN0ID0gMDsKIAogICAgIGJvb2wgaXNIZWFkaW5nKCkgY29uc3QgeyByZXR1cm4gcm9sZVZh
bHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkhlYWRpbmc7IH0KICAgICB2aXJ0dWFsIGJvb2wg
aXNMaW5rKCkgY29uc3QgPSAwOwpAQCAtOTE5LDYgKzkyMywxMiBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc1RyZWVHcmlkKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0
eVJvbGU6OlRyZWVHcmlkOyB9CiAgICAgYm9vbCBpc1RyZWVJdGVtKCkgY29uc3QgeyByZXR1cm4g
cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVJdGVtOyB9CiAgICAgYm9vbCBp
c1Njcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpTY3JvbGxCYXI7IH0KKyAgICBib29sIGlzUmVtb3RlRnJhbWUoKSBjb25zdCB7IHJldHVy
biByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmVtb3RlRnJhbWU7IH0KKyNpZiBQ
TEFURk9STShDT0NPQSkKKyAgICB2aXJ0dWFsIFJldGFpblB0cjxpZD4gcmVtb3RlRnJhbWVQbGF0
Zm9ybUVsZW1lbnQoKSBjb25zdCA9IDA7CisjZW5kaWYKKyAgICB2aXJ0dWFsIGJvb2wgaGFzUmVt
b3RlRnJhbWVDaGlsZCgpIGNvbnN0ID0gMDsKKwogICAgIGJvb2wgaXNCdXR0b24oKSBjb25zdDsK
ICAgICB2aXJ0dWFsIGJvb2wgaXNNZXRlcigpIGNvbnN0ID0gMDsKIApAQCAtMTE1OSw2ICsxMTY5
LDggQEAgcHVibGljOgogICAgIC8vIFZpZXdwb3J0LXJlbGF0aXZlIG1lYW5zIHRoYXQgd2hlbiB0
aGUgcGFnZSBzY3JvbGxzLCB0aGUgcG9ydGlvbiBvZiB0aGUgcGFnZSBpbiB0aGUgdmlld3BvcnQg
Y2hhbmdlcywgYW5kIHRodXMKICAgICAvLyBhbnkgdmlld3BvcnQtcmVsYXRpdmUgcmVjdHMgZG8g
dG9vIChzaW5jZSB0aGV5IGFyZSBlaXRoZXIgY2xvc2VyIHRvIG9yIGZhcnRoZXIgZnJvbSB0aGUg
dmlld3BvcnQgb3JpZ2luIGFmdGVyIHRoZSBzY3JvbGwpLgogICAgIHZpcnR1YWwgRmxvYXRQb2lu
dCBzY3JlZW5SZWxhdGl2ZVBvc2l0aW9uKCkgY29uc3QgPSAwOworICAgIC8vIFRoaXMgaXMgdGhl
IGFtb3VudCB0aGF0IHRoZSBSZW1vdGVGcmFtZSBpcyBvZmZzZXQgZnJvbSBpdHMgY29udGFpbmlu
ZyBwYXJlbnQuCisgICAgdmlydHVhbCBJbnRQb2ludCByZW1vdGVGcmFtZU9mZnNldCgpIGNvbnN0
ID0gMDsKIAogICAgIHZpcnR1YWwgRmxvYXRSZWN0IGNvbnZlcnRGcmFtZVRvU3BhY2UoY29uc3Qg
RmxvYXRSZWN0JiwgQWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZSkgY29uc3QgPSAwOwogI2lm
IFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWExvZ2dlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNw
cAppbmRleCBiNmUzMDZjZGRlY2YuLjdiMzVjOGY5ZDEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BWExvZ2dlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWExvZ2dlci5jcHAKQEAgLTg4Myw2ICs4ODMsOSBAQCB2b2lkIHN0cmVhbUFY
Q29yZU9iamVjdChUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IEFYQ29yZU9iamVjdCYgb2JqZWN0
LCBjb25zdCBPcAogICAgIGlmIChvcHRpb25zICYgQVhTdHJlYW1PcHRpb25zOjpSb2xlKQogICAg
ICAgICBzdHJlYW0uZHVtcFByb3BlcnR5KCJyb2xlIiwgb2JqZWN0LnJvbGVWYWx1ZSgpKTsKIAor
ICAgIGlmIChvYmplY3QucmVuZGVyZXIoKSkKKyAgICAgICAgc3RyZWFtLmR1bXBQcm9wZXJ0eSgi
cmVuZGVyTmFtZSIsIG9iamVjdC5yZW5kZXJlcigpLT5yZW5kZXJOYW1lKCkpOworCiAgICAgaWYg
KG9wdGlvbnMgJiBBWFN0cmVhbU9wdGlvbnM6OlBhcmVudElEKSB7CiAgICAgICAgIGF1dG8qIHBh
cmVudCA9IG9iamVjdC5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICAgICAgc3RyZWFtLmR1
bXBQcm9wZXJ0eSgicGFyZW50SUQiLCBwYXJlbnQgPyBwYXJlbnQtPm9iamVjdElEKCkgOiBBWElE
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAK
aW5kZXggMjgwZmFkNGYyNzAxLi4xYWM5NWYyZWE2YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1
ZGUgIkFYSXNvbGF0ZWRPYmplY3QuaCIKICNpbmNsdWRlICJBWElzb2xhdGVkVHJlZS5oIgogI2lu
Y2x1ZGUgIkFYTG9nZ2VyLmgiCisjaW5jbHVkZSAiQVhSZW1vdGVGcmFtZS5oIgogI2luY2x1ZGUg
IkFYVGV4dE1hcmtlci5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlBUklBR3JpZC5oIgogI2lu
Y2x1ZGUgIkFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaCIKQEAgLTEwNTQsNyArMTA1NSwxMCBA
QCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpjcmVhdGUoQWNjZXNzaWJpbGl0
eVJvbGUgcm9sZSkKICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCiAgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6VGFibGVIZWFkZXJDb250YWluZXI6CiAgICAgICAgIG9iaiA9IEFjY2Vzc2li
aWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lcjo6Y3JlYXRlKCk7Ci0gICAgICAgIGJyZWFrOyAgIAor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSZW1vdGVGcmFtZToK
KyAgICAgICAgb2JqID0gQVhSZW1vdGVGcmFtZTo6Y3JlYXRlKCk7CisgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNsaWRlclRodW1iOgogICAgICAgICBvYmogPSBB
Y2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWI6OmNyZWF0ZSgpOwogICAgICAgICBicmVhazsKQEAgLTEz
NTAsNiArMTM1NCwxNSBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZVJlY29tcHV0ZUNlbGxT
bG90cyhBY2Nlc3NpYmlsaXR5VGFibGUmIGF4VGFibGUpCiAjZW5kaWYKIH0KIAordm9pZCBBWE9i
amVjdENhY2hlOjpvblJlbW90ZUZyYW1lSW5pdGlhbGl6ZWQoQVhSZW1vdGVGcmFtZSYgcmVtb3Rl
RnJhbWUpCit7CisjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKKyAgICB1
cGRhdGVJc29sYXRlZFRyZWUocmVtb3RlRnJhbWUsIEFYUHJvcGVydHlOYW1lOjpSZW1vdGVGcmFt
ZVBsYXRmb3JtRWxlbWVudCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShyZW1vdGVGcmFtZSk7
CisjZW5kaWYKK30KKwogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiB2
b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZVJvd3NwYW5DaGFuZ2VkKEFjY2Vzc2liaWxpdHlUYWJs
ZUNlbGwmIGF4Q2VsbCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVj
dENhY2hlLmgKaW5kZXggZDEwNDljYzliYzIxLi4zOGM5OGE0NmVhOWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCkBAIC00Nyw2ICs0Nyw3IEBAIGNs
YXNzIFRleHRTdHJlYW07CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQVhSZW1vdGVG
cmFtZTsKIGNsYXNzIEFjY2Vzc2liaWxpdHlUYWJsZTsKIGNsYXNzIEFjY2Vzc2liaWxpdHlUYWJs
ZUNlbGw7CiBjbGFzcyBEb2N1bWVudDsKQEAgLTI0Niw2ICsyNDcsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBkZWZlck5vZGVBZGRlZE9yUmVtb3ZlZChOb2RlKik7CiAgICAgdm9pZCBoYW5kbGVTY3Jv
bGxlZFRvQW5jaG9yKGNvbnN0IE5vZGUqIGFuY2hvck5vZGUpOwogICAgIHZvaWQgb25TY3JvbGxi
YXJVcGRhdGUoU2Nyb2xsVmlldyopOworICAgIHZvaWQgb25SZW1vdGVGcmFtZUluaXRpYWxpemVk
KEFYUmVtb3RlRnJhbWUmKTsKIAogICAgIGJvb2wgaXNSZXRyaWV2aW5nQ3VycmVudE1vZGFsTm9k
ZSgpIHsgcmV0dXJuIG1faXNSZXRyaWV2aW5nQ3VycmVudE1vZGFsTm9kZTsgfQogICAgIE5vZGUq
IG1vZGFsTm9kZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WFJlbW90ZUZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhSZW1vdGVG
cmFtZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42MDQzNGUz
NDQ0NzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
UmVtb3RlRnJhbWUuY3BwCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiQVhSZW1vdGVGcmFtZS5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1JlZjxBWFJlbW90ZUZyYW1lPiBBWFJlbW90ZUZyYW1lOjpjcmVhdGUoKQoreworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEFYUmVtb3RlRnJhbWUpOworfQorCitBWFJlbW90ZUZyYW1l
OjpBWFJlbW90ZUZyYW1lKCkKKzoKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBtX3JlbW90ZUZy
YW1lUGxhdGZvcm1FbGVtZW50KG51bGxwdHIpCisgICAgLCBtX3Byb2Nlc3NJZGVudGlmaWVyKDAp
CisjZW5kaWYKK3sKK30KKworTGF5b3V0UmVjdCBBWFJlbW90ZUZyYW1lOjplbGVtZW50UmVjdCgp
IGNvbnN0Cit7CisgICAgYXV0byogcGFyZW50ID0gcGFyZW50T2JqZWN0KCk7CisgICAgcmV0dXJu
IHBhcmVudCA/IHBhcmVudC0+ZWxlbWVudFJlY3QoKSA6IExheW91dFJlY3QoKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWFJlbW90ZUZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYUmVt
b3RlRnJhbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmFiYzk0
ZDNhYTZjZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhSZW1vdGVGcmFtZS5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgUmVtb3RlRnJhbWU7CisKK2NsYXNzIEFYUmVtb3RlRnJhbWUgZmlu
YWwgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eU1vY2tPYmplY3QgeworcHVibGljOgorICAgIHN0YXRp
YyBSZWY8QVhSZW1vdGVGcmFtZT4gY3JlYXRlKCk7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAg
ICB2b2lkIGluaXRpYWxpemVQbGF0Zm9ybUVsZW1lbnRXaXRoUmVtb3RlVG9rZW4oc3RkOjpzcGFu
PGNvbnN0IHVpbnQ4X3Q+LCBpbnQpOworICAgIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBnZW5l
cmF0ZVJlbW90ZVRva2VuKCkgY29uc3Q7CisgICAgUmV0YWluUHRyPGlkPiByZW1vdGVGcmFtZVBs
YXRmb3JtRWxlbWVudCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcmVtb3RlRnJhbWVQbGF0Zm9y
bUVsZW1lbnQ7IH0KKyAgICBwaWRfdCBwcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJu
IG1fcHJvY2Vzc0lkZW50aWZpZXI7IH0KKyNlbmRpZgorCitwcml2YXRlOgorICAgIGV4cGxpY2l0
IEFYUmVtb3RlRnJhbWUoKTsKKyAgICB2aXJ0dWFsIH5BWFJlbW90ZUZyYW1lKCkgPSBkZWZhdWx0
OworCisgICAgQWNjZXNzaWJpbGl0eVJvbGUgZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUoKSBm
aW5hbCB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6UmVtb3RlRnJhbWU7IH0KKyAgICBib29s
IGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICBib29sIGlzQVhSZW1vdGVGcmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRy
dWU7IH0KKyAgICBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3QgZmluYWw7CisKKyNpZiBQ
TEFURk9STShDT0NPQSkKKyAgICBSZXRhaW5QdHI8aWQ+IG1fcmVtb3RlRnJhbWVQbGF0Zm9ybUVs
ZW1lbnQ7CisgICAgcGlkX3QgbV9wcm9jZXNzSWRlbnRpZmllcjsKKyNlbmRpZgorfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0FDQ0VTU0lCSUxJ
VFkoQVhSZW1vdGVGcmFtZSwgaXNBWFJlbW90ZUZyYW1lKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCAzZTMyZGIw
OTNhZmIuLjA5ODQyNjY0MzI4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC01NDQsNyArNTQ0LDEwIEBAIEZsb2F0
UmVjdCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpjb252ZXJ0RnJhbWVUb1NwYWNlKGNvbnN0IEZsb2F0
UmVjdCYgZnJhbWVSZWN0LCBBCiAgICAgCiBGbG9hdFJlY3QgQWNjZXNzaWJpbGl0eU9iamVjdDo6
cmVsYXRpdmVGcmFtZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvbnZlcnRGcmFtZVRvU3BhY2Uo
ZWxlbWVudFJlY3QoKSwgQWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZTo6UGFnZSk7CisgICAg
YXV0byByZWN0ID0gZWxlbWVudFJlY3QoKTsKKyAgICBhdXRvIHJlbW90ZU9mZnNldCA9IHJlbW90
ZUZyYW1lT2Zmc2V0KCk7CisgICAgcmVjdC5tb3ZlKHJlbW90ZU9mZnNldC54KCksIHJlbW90ZU9m
ZnNldC55KCkpOworICAgIHJldHVybiBjb252ZXJ0RnJhbWVUb1NwYWNlKHJlY3QsIEFjY2Vzc2li
aWxpdHlDb252ZXJzaW9uU3BhY2U6OlBhZ2UpOwogfQogCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpuZXh0U2libGluZ1VuaWdub3JlZChpbnQgbGltaXQpIGNvbnN0
CkBAIC0yMDg2LDE0ICsyMDg5LDE5IEBAIGNvbnN0IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KiBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjphbmNlc3RvckFjY2Vzc2liaWxpdHlTY3JvbGxWCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiBSZW1vdGVBWE9iamVjdFJlZiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZW1v
dGVQYXJlbnRPYmplY3QoKSBjb25zdAogewotICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IHRoaXMt
PmRvY3VtZW50KCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1l
KCkpCi0gICAgICAgICAgICByZXR1cm4gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmFjY2Vzc2li
aWxpdHlSZW1vdGVPYmplY3QoKTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0
byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOworICAgIGF1dG8qIGZyYW1lID0gZG9jdW1l
bnQgPyBkb2N1bWVudC0+ZnJhbWUoKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIGZyYW1lID8gZnJh
bWUtPmxvYWRlcigpLmNsaWVudCgpLmFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSA6IG51bGxw
dHI7CiB9CiAjZW5kaWYKIAorSW50UG9pbnQgQWNjZXNzaWJpbGl0eU9iamVjdDo6cmVtb3RlRnJh
bWVPZmZzZXQoKSBjb25zdAoreworICAgIGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQo
KTsKKyAgICBhdXRvKiBmcmFtZSA9IGRvY3VtZW50ID8gZG9jdW1lbnQtPmZyYW1lKCkgOiBudWxs
cHRyOworICAgIHJldHVybiBmcmFtZSA/IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5hY2Nlc3Np
YmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKSA6IEludFBvaW50KCk7Cit9CisKIERvY3VtZW50KiBB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojpkb2N1bWVudCgpIGNvbnN0CiB7CiAgICAgYXV0byogZnJhbWVW
aWV3ID0gZG9jdW1lbnRGcmFtZVZpZXcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKaW5kZXggNGQyMGY1NWE1NDRjLi42ODQyYTcx
OTQ4Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5oCkBAIC0xMDIsNiArMTAyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBpc0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICBib29sIGlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9sbGJhcigp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0FYUmVtb3RlRnJhbWUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2li
aWxpdHlTY3JvbGxWaWV3SW5zdGFuY2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTVkdSb290KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KICAgICBib29sIGlzQWNjZXNzaWJpbGl0eVRhYmxlSW5zdGFuY2UoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQpAQCAtNDY0LDggKzQ2NSwxMiBAQCBwdWJsaWM6CiAKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICBSZW1vdGVBWE9iamVjdFJlZiByZW1vdGVQYXJlbnRPYmplY3Qo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBJbnRQb2ludCByZW1vdGVGcmFtZU9mZnNldCgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIEZsb2F0UmVjdCBjb252ZXJ0UmVjdFRvUGxhdGZvcm1TcGFjZShjb25z
dCBGbG9hdFJlY3QmLCBBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBSZXRhaW5QdHI8aWQ+IHJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbmlsOyB9CiAjZW5kaWYKKyAgICBib29sIGhhc1JlbW90ZUZyYW1l
Q2hpbGQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgUGFnZSogcGFn
ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIExvY2FsRnJhbWVWaWV3KiBkb2N1bWVudEZyYW1lVmlldygpIGNvbnN0IG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggZWU4YWJlYzNkN2I1Li4yZjEyZWY3NTNlNGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtMjQxMyw3ICsyNDEzLDcgQEAgdm9pZCBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjphZGRBdHRhY2htZW50Q2hpbGRyZW4oKQogCiAgICAgLy8gTG9j
YWxGcmFtZVZpZXcncyBuZWVkIHRvIGJlIGluc2VydGVkIGludG8gdGhlIEFYIGhpZXJhcmNoeSB3
aGVuIGVuY291bnRlcmVkLgogICAgIFdpZGdldCogd2lkZ2V0ID0gd2lkZ2V0Rm9yQXR0YWNobWVu
dFZpZXcoKTsKLSAgICBpZiAoIXdpZGdldCB8fCAhd2lkZ2V0LT5pc0xvY2FsRnJhbWVWaWV3KCkp
CisgICAgaWYgKCF3aWRnZXQgfHwgISh3aWRnZXQtPmlzTG9jYWxGcmFtZVZpZXcoKSB8fCB3aWRn
ZXQtPmlzUmVtb3RlRnJhbWVWaWV3KCkpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgYWRk
Q2hpbGQoYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZSh3aWRnZXQpKTsKQEAgLTI1NjgsNyAr
MjU2OCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkQ2hpbGRyZW4oKQog
ICAgICAgICBhdXRvIG93bmVycyA9IG9iamVjdC5vd25lcnMoKTsKICAgICAgICAgaWYgKG93bmVy
cy5zaXplKCkgJiYgIW93bmVycy5jb250YWlucyh0aGlzKSkKICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgCisKICAgICAgICAgYWRkQ2hpbGQoJm9iamVjdCk7CiAgICAgfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3LmNwcAppbmRleCAyYmJjMzA4N2I5ZjguLjliYTI2OWJlMzk2MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5j
cHAKQEAgLTI3LDEwICsyNywxMiBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
LmgiCiAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCisjaW5jbHVkZSAiQVhSZW1vdGVGcmFt
ZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaCIKICNpbmNsdWRlICJIVE1M
RnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJMb2NhbEZyYW1lLmgiCiAjaW5jbHVkZSAi
TG9jYWxGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJSZW1vdGVGcmFtZVZpZXcuaCIKICNpbmNsdWRl
ICJSZW5kZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiV2lkZ2V0LmgiCiAKQEAgLTUyLDYgKzU0LDE0
IEBAIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojp+QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoKQog
dm9pZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6ZGV0YWNoUmVtb3RlUGFydHMoQWNjZXNzaWJp
bGl0eURldGFjaG1lbnRUeXBlIGRldGFjaG1lbnRUeXBlKQogewogICAgIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OmRldGFjaFJlbW90ZVBhcnRzKGRldGFjaG1lbnRUeXBlKTsKKworICAgIGF1dG8qIHJl
bW90ZUZyYW1lVmlldyA9IGR5bmFtaWNEb3duY2FzdDxSZW1vdGVGcmFtZVZpZXc+KG1fc2Nyb2xs
Vmlldy5nZXQoKSk7CisgICAgaWYgKHJlbW90ZUZyYW1lVmlldyAmJiBtX3JlbW90ZUZyYW1lICYm
IChkZXRhY2htZW50VHlwZSA9PSBBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGU6OkVsZW1lbnRE
ZXN0cm95ZWQgfHwgZGV0YWNobWVudFR5cGUgPT0gQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBl
OjpDYWNoZURlc3Ryb3llZCkpIHsKKyAgICAgICAgYXV0byYgcmVtb3RlRnJhbWUgPSByZW1vdGVG
cmFtZVZpZXctPmZyYW1lKCk7CisgICAgICAgIHJlbW90ZUZyYW1lLnVuYmluZFJlbW90ZUFjY2Vz
c2liaWxpdHlGcmFtZXMobV9yZW1vdGVGcmFtZS0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAg
ICAgIG1fcmVtb3RlRnJhbWUgPSBudWxscHRyOworICAgIH0KKwogICAgIG1fc2Nyb2xsVmlldyA9
IG51bGxwdHI7CiAgICAgbV9mcmFtZU93bmVyRWxlbWVudCA9IG51bGxwdHI7CiB9CkBAIC0xNzcs
OCArMTg3LDEwIEBAIEFjY2Vzc2liaWxpdHlTY3JvbGxiYXIqIEFjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3OjphZGRDaGlsZFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjCiB2b2lkIEFjY2Vzc2liaWxpdHlT
Y3JvbGxWaWV3OjpjbGVhckNoaWxkcmVuKCkKIHsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpj
bGVhckNoaWxkcmVuKCk7CisKICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyID0gbnVsbHB0cjsKICAg
ICBtX2hvcml6b250YWxTY3JvbGxiYXIgPSBudWxscHRyOworCiAgICAgbV9jaGlsZHJlbkRpcnR5
ID0gZmFsc2U7CiB9CiAKQEAgLTE5MSwxMSArMjAzLDQzIEBAIGJvb2wgQWNjZXNzaWJpbGl0eVNj
cm9sbFZpZXc6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKICAgICByZXR1
cm4gd2ViQXJlYS0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpOwogfQogCit2b2lkIEFjY2Vzc2li
aWxpdHlTY3JvbGxWaWV3OjphZGRSZW1vdGVGcmFtZUNoaWxkKCkKK3sKKyAgICBpZiAoIWlzPFJl
bW90ZUZyYW1lVmlldz4obV9zY3JvbGxWaWV3KSkKKyAgICAgICAgcmV0dXJuOworICAgIFdlYWtQ
dHIgY2FjaGUgPSBheE9iamVjdENhY2hlKCk7CisgICAgaWYgKCFjYWNoZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKCFtX3JlbW90ZUZyYW1lKSB7CisgICAgICAgIC8vIE1ha2UgdGhlIGZh
dXggZWxlbWVudCB0aGF0IHJlcHJlc2VudHMgdGhlIHJlbW90ZSB0cmFuc2ZlciBlbGVtZW50IGZv
ciBBWC4KKyAgICAgICAgYXV0byYgcmVtb3RlRnJhbWUgPSBkb3duY2FzdDxSZW1vdGVGcmFtZVZp
ZXc+KCptX3Njcm9sbFZpZXcpLmZyYW1lKCk7CisgICAgICAgIG1fcmVtb3RlRnJhbWUgPSBkb3du
Y2FzdDxBWFJlbW90ZUZyYW1lPihjYWNoZS0+Y3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpSZW1v
dGVGcmFtZSkpOworICAgICAgICBtX3JlbW90ZUZyYW1lLT5zZXRQYXJlbnQodGhpcyk7CisKKyNp
ZiBQTEFURk9STShNQUMpCisgICAgICAgIC8vIEdlbmVyYXRlIGEgbmV3IHRva2VuIGFuZCBwYXNz
IGl0IGJhY2sgdG8gdGhlIG90aGVyIHJlbW90ZSBmcmFtZSBzbyBpdCBjYW4gYmluZCB0aGVzZSBv
YmplY3RzIHRvZ2V0aGVyLgorICAgICAgICBhdXRvIGdlbmVyYXRlZFRva2VuID0gbV9yZW1vdGVG
cmFtZS0+Z2VuZXJhdGVSZW1vdGVUb2tlbigpOworICAgICAgICByZW1vdGVGcmFtZS5iaW5kUmVt
b3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhnZXRwaWQoKSwgZ2VuZXJhdGVkVG9rZW4sIFt0aGlzLCAm
cmVtb3RlRnJhbWUsIHByb3RlY3RlZEFjY2Vzc2JpbGl0eVJlbW90ZUZyYW1lID0gUmVmUHRyIHsg
bV9yZW1vdGVGcmFtZSB9XSAoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHRva2VuLCBpbnQgcHJv
Y2Vzc0lkZW50aWZpZXIpIG11dGFibGUgeworICAgICAgICAgICAgcHJvdGVjdGVkQWNjZXNzYmls
aXR5UmVtb3RlRnJhbWUtPmluaXRpYWxpemVQbGF0Zm9ybUVsZW1lbnRXaXRoUmVtb3RlVG9rZW4o
dG9rZW4sIHByb2Nlc3NJZGVudGlmaWVyKTsKKworICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBy
ZW1vdGUgc2lkZSB3aXRoIHRoZSBvZmZzZXQgb2YgdGhpcyBvYmplY3Qgc28gaXQgY2FuIGNhbGN1
bGF0ZSBmcmFtZXMgY29ycmVjdGx5LgorICAgICAgICAgICAgYXV0byBsb2NhdGlvbiA9IGVsZW1l
bnRSZWN0KCkubG9jYXRpb24oKTsKKyAgICAgICAgICAgIHJlbW90ZUZyYW1lLnVwZGF0ZVJlbW90
ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChmbG9vcmVkSW50UG9pbnQobG9jYXRpb24pKTsKKyAg
ICAgICAgfSk7CisjZW5kaWYKKyAgICB9IGVsc2UKKyAgICAgICAgbV9yZW1vdGVGcmFtZS0+c2V0
UGFyZW50KHRoaXMpOworCisgICAgYWRkQ2hpbGQobV9yZW1vdGVGcmFtZS5nZXQoKSk7Cit9CisK
IHZvaWQgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmFkZENoaWxkcmVuKCkKIHsKICAgICBBU1NF
UlQoIW1fY2hpbGRyZW5Jbml0aWFsaXplZCk7CiAgICAgbV9jaGlsZHJlbkluaXRpYWxpemVkID0g
dHJ1ZTsKIAorICAgIGFkZFJlbW90ZUZyYW1lQ2hpbGQoKTsKICAgICBhZGRDaGlsZCh3ZWJBcmVh
T2JqZWN0KCkpOwogICAgIHVwZGF0ZVNjcm9sbGJhcnMoKTsKIH0KQEAgLTIwMyw3ICsyNDcsNyBA
QCB2b2lkIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjphZGRDaGlsZHJlbigpCiBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6d2ViQXJlYU9iamVjdCgpIGNvbnN0
CiB7CiAgICAgYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOwotICAgIGlmICghZG9j
dW1lbnQgfHwgIWRvY3VtZW50LT5oYXNMaXZpbmdSZW5kZXJUcmVlKCkpCisgICAgaWYgKCFkb2N1
bWVudCB8fCAhZG9jdW1lbnQtPmhhc0xpdmluZ1JlbmRlclRyZWUoKSB8fCBtX3JlbW90ZUZyYW1l
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmIChhdXRvKiBjYWNoZSA9IGF4T2Jq
ZWN0Q2FjaGUoKSkKQEAgLTIzNCw5ICsyNzgsMTUgQEAgTGF5b3V0UmVjdCBBY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldzo6ZWxlbWVudFJlY3QoKSBjb25zdAogCiBEb2N1bWVudCogQWNjZXNzaWJpbGl0
eVNjcm9sbFZpZXc6OmRvY3VtZW50KCkgY29uc3QKIHsKLSAgICBpZiAoYXV0byogZnJhbWVWaWV3
ID0gZHluYW1pY0Rvd25jYXN0PExvY2FsRnJhbWVWaWV3PihtX3Njcm9sbFZpZXcuZ2V0KCkpKSB7
CisgICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGR5bmFtaWNEb3duY2FzdDxMb2NhbEZyYW1lVmll
dz4obV9zY3JvbGxWaWV3LmdldCgpKSkKICAgICAgICAgcmV0dXJuIGZyYW1lVmlldy0+ZnJhbWUo
KS5kb2N1bWVudCgpOworCisgICAgLy8gRm9yIHRoZSBSZW1vdGVGcmFtZVZpZXcgY2FzZSwgd2Ug
bmVlZCB0byByZXR1cm4gdGhlIGRvY3VtZW50IG9mIG91ciBob3N0aW5nIHBhcmVudCBzbyBheE9i
amVjdENhY2hlKCkgcmVzb2x2ZXMgY29ycmVjdGx5LgorICAgIGlmIChhdXRvKiByZW1vdGVGcmFt
ZVZpZXcgPSBkeW5hbWljRG93bmNhc3Q8UmVtb3RlRnJhbWVWaWV3PihtX3Njcm9sbFZpZXcuZ2V0
KCkpKSB7CisgICAgICAgIGlmIChhdXRvKiBvd25lciA9IHJlbW90ZUZyYW1lVmlldy0+ZnJhbWUo
KS5vd25lckVsZW1lbnQoKSkKKyAgICAgICAgICAgIHJldHVybiAmKG93bmVyLT5kb2N1bWVudCgp
KTsKICAgICB9CisKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdDo6ZG9jdW1lbnQoKTsK
IH0KIApAQCAtMjU5LDggKzMwOSwxMCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmls
aXR5U2Nyb2xsVmlldzo6cGFyZW50T2JqZWN0KCkgY29uc3QKICAgICBXZWFrUHRyIG93bmVyID0g
bV9mcmFtZU93bmVyRWxlbWVudC5nZXQoKTsKICAgICBpZiAoYXV0byogbG9jYWxGcmFtZVZpZXcg
PSBkeW5hbWljRG93bmNhc3Q8TG9jYWxGcmFtZVZpZXc+KG1fc2Nyb2xsVmlldy5nZXQoKSkpCiAg
ICAgICAgIG93bmVyID0gbG9jYWxGcmFtZVZpZXctPmZyYW1lKCkub3duZXJFbGVtZW50KCk7Cisg
ICAgZWxzZSBpZiAoYXV0byogcmVtb3RlRnJhbWVWaWV3ID0gZHluYW1pY0Rvd25jYXN0PFJlbW90
ZUZyYW1lVmlldz4obV9zY3JvbGxWaWV3LmdldCgpKSkKKyAgICAgICAgb3duZXIgPSByZW1vdGVG
cmFtZVZpZXctPmZyYW1lKCkub3duZXJFbGVtZW50KCk7CiAKLSAgICBpZiAoY2FjaGUgJiYgb3du
ZXIgJiYgb3duZXItPnJlbmRlcmVyKCkpCisgICAgaWYgKG93bmVyICYmIG93bmVyLT5yZW5kZXJl
cigpKQogICAgICAgICByZXR1cm4gY2FjaGUtPmdldE9yQ3JlYXRlKG93bmVyLmdldCgpKTsKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaAppbmRleCA1NTcwNDQ2NzFjN2QuLjUyNWFj
NzgzZmJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5U2Nyb2xsVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXcuaApAQCAtMzAsNiArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgCitjbGFzcyBBWFJlbW90ZUZyYW1lOwogY2xhc3MgQWNjZXNzaWJpbGl0eVNj
cm9sbGJhcjsKIGNsYXNzIFNjcm9sbGJhcjsKIGNsYXNzIFNjcm9sbFZpZXc7CkBAIC01NCw3ICs1
NSw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlld0luc3Rh
bmNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgaXNFbmFibGVk
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIAorICAgIGJvb2wgaGFzUmVt
b3RlRnJhbWVDaGlsZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcmVtb3RlRnJhbWU7IH0KKwog
ICAgIGJvb2wgaXNBdHRhY2htZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUGxhdGZvcm1XaWRn
ZXQgcGxhdGZvcm1XaWRnZXQoKSBjb25zdCBvdmVycmlkZTsKICAgICBXaWRnZXQqIHdpZGdldEZv
ckF0dGFjaG1lbnRWaWV3KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gY3VycmVudFNjcm9sbFZp
ZXcoKTsgfQpAQCAtNjksNiArNzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0Rm9jdXNlZChi
b29sKSBvdmVycmlkZTsKICAgICBib29sIGNhblNldEZvY3VzQXR0cmlidXRlKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgYm9vbCBpc0ZvY3VzZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFk
ZFJlbW90ZUZyYW1lQ2hpbGQoKTsKIAogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIExvY2FsRnJhbWVWaWV3KiBkb2N1bWVudEZyYW1lVmlldygpIGNvbnN0IG92
ZXJyaWRlOwpAQCAtODUsNiArODgsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxBY2Nlc3NpYmls
aXR5T2JqZWN0PiBtX2hvcml6b250YWxTY3JvbGxiYXI7CiAgICAgUmVmUHRyPEFjY2Vzc2liaWxp
dHlPYmplY3Q+IG1fdmVydGljYWxTY3JvbGxiYXI7CiAgICAgYm9vbCBtX2NoaWxkcmVuRGlydHk7
CisgICAgUmVmUHRyPEFYUmVtb3RlRnJhbWU+IG1fcmVtb3RlRnJhbWU7CiB9OwogICAgIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5t
bQppbmRleCAyZjI5YjcyZmZlN2UuLjkyNDNhZDZiZDM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1Mu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJJT1MubW0KQEAgLTExMTIsNiArMTExMiw3IEBAIHN0YXRpYyBBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlciAqYW5jZXN0b3JXaXRoUm9sZShjb25zdCBBWENvcmVPYmplY3Qm
IGRlc2NlbmRhCiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6SWdub3JlZDoKICAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpMaW5lQnJlYWs6CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6UHJlc2VudGF0aW9uYWw6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmVtb3RlRnJh
bWU6CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bjoKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKaW5kZXggMTAxNDU0NjI3
OGYzLi4xNzdkOTM5N2EwYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCkBAIC0zNzgs
NiArMzc4LDEwIEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZVByb3BlcnRpZXMo
Y29uc3QgUmVmPEFjY2Vzc2liaWxpdHlPYmplY3Q+JiBheE9iCiAjZW5kaWYKIAogICAgIHNldE9i
amVjdFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJbnRlcm5hbExpbmtFbGVtZW50LCBvYmplY3Qu
aW50ZXJuYWxMaW5rRWxlbWVudCgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6
SGFzUmVtb3RlRnJhbWVDaGlsZCwgb2JqZWN0Lmhhc1JlbW90ZUZyYW1lQ2hpbGQoKSk7CisgICAg
Ly8gRG9uJ3QgZHVwbGljYXRlIHRoZSByZW1vdGVGcmFtZU9mZnNldCBmb3IgZXZlcnkgb2JqZWN0
LiBKdXN0IHN0b3JlIGluIHRoZSBXZWJBcmVhLgorICAgIGlmIChvYmplY3QuaXNXZWJBcmVhKCkp
CisgICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpSZW1vdGVGcmFtZU9mZnNldCwg
b2JqZWN0LnJlbW90ZUZyYW1lT2Zmc2V0KCkpOwogCiAgICAgaW5pdGlhbGl6ZVBsYXRmb3JtUHJv
cGVydGllcyhheE9iamVjdCk7CiB9CkBAIC00NjQsNiArNDY4LDcgQEAgdm9pZCBBWElzb2xhdGVk
T2JqZWN0OjpzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEFYUHJvcGVy
dHlWYWx1ZVYKICAgICAgICAgW10oT3B0aW9uU2V0PEFYQW5jZXN0b3JGbGFnPiYgdHlwZWRWYWx1
ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZS5pc0VtcHR5KCk7IH0sCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgICAgIFtdKFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+JiB0eXBlZFZhbHVlKSB7
IHJldHVybiAhdHlwZWRWYWx1ZTsgfSwKKyAgICAgICAgW10oUmV0YWluUHRyPGlkPiYgdHlwZWRW
YWx1ZSkgeyByZXR1cm4gIXR5cGVkVmFsdWU7IH0sCiAjZW5kaWYKICAgICAgICAgW10oSW5zaWRl
TGluayYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZSA9PSBJbnNpZGVMaW5rKCk7IH0s
CiAgICAgICAgIFtdKFZlY3RvcjxWZWN0b3I8QVhJRD4+JiB0eXBlZFZhbHVlKSB7IHJldHVybiB0
eXBlZFZhbHVlLmlzRW1wdHkoKTsgfSwKQEAgLTEyMDYsNiArMTIxMSwyMSBAQCBMYXlvdXRSZWN0
IEFYSXNvbGF0ZWRPYmplY3Q6OmVsZW1lbnRSZWN0KCkgY29uc3QKICAgICB9KTsKIH0KIAorSW50
UG9pbnQgQVhJc29sYXRlZE9iamVjdDo6cmVtb3RlRnJhbWVPZmZzZXQoKSBjb25zdAoreworICAg
IGF1dG8qIHdlYkFyZWEgPSBBY2Nlc3NpYmlsaXR5OjpmaW5kQW5jZXN0b3I8QVhJc29sYXRlZE9i
amVjdD4oKnRoaXMsIGZhbHNlLCBbXSAoY29uc3QgYXV0byYgb2JqZWN0KSB7CisgICAgICAgIHJl
dHVybiBvYmplY3QuaXNXZWJBcmVhKCk7CisgICAgfSk7CisKKyAgICBpZiAoIXdlYkFyZWEpCisg
ICAgICAgIHJldHVybiB7IH07CisKKyAgICBpZiAoYXV0byBwb2ludCA9IHdlYkFyZWEtPm9wdGlv
bmFsQXR0cmlidXRlVmFsdWU8SW50UG9pbnQ+KEFYUHJvcGVydHlOYW1lOjpSZW1vdGVGcmFtZU9m
ZnNldCkpCisgICAgICAgIHJldHVybiAqcG9pbnQ7CisKKyAgICByZXR1cm4geyB9OworfQorCiBG
bG9hdFBvaW50IEFYSXNvbGF0ZWRPYmplY3Q6OnNjcmVlblJlbGF0aXZlUG9zaXRpb24oKSBjb25z
dAogewogICAgIGlmIChhdXRvIHBvaW50ID0gb3B0aW9uYWxBdHRyaWJ1dGVWYWx1ZTxGbG9hdFBv
aW50PihBWFByb3BlcnR5TmFtZTo6U2NyZWVuUmVsYXRpdmVQb3NpdGlvbikpCkBAIC0xMjI5LDIy
ICsxMjQ5LDIzIEBAIEZsb2F0UG9pbnQgQVhJc29sYXRlZE9iamVjdDo6c2NyZWVuUmVsYXRpdmVQ
b3NpdGlvbigpIGNvbnN0CiAKIEZsb2F0UmVjdCBBWElzb2xhdGVkT2JqZWN0OjpyZWxhdGl2ZUZy
YW1lKCkgY29uc3QKIHsKKyAgICBGbG9hdFJlY3QgcmVsYXRpdmVGcmFtZTsKKwogICAgIGlmIChh
dXRvIGNhY2hlZFJlbGF0aXZlRnJhbWUgPSBvcHRpb25hbEF0dHJpYnV0ZVZhbHVlPEludFJlY3Q+
KEFYUHJvcGVydHlOYW1lOjpSZWxhdGl2ZUZyYW1lKSkgewogICAgICAgICAvLyBXZSBzaG91bGQg
bm90IGhhdmUgY2FjaGVkIGEgcmVsYXRpdmUgZnJhbWUgZm9yIGVsZW1lbnRzIHRoYXQgZ2V0IHRo
ZWlyIGdlb21ldHJ5IGZyb20gdGhlaXIgY2hpbGRyZW4uCiAgICAgICAgIEFTU0VSVCghbV9nZXRz
R2VvbWV0cnlGcm9tQ2hpbGRyZW4pOwotICAgICAgICByZXR1cm4gKmNhY2hlZFJlbGF0aXZlRnJh
bWU7Ci0gICAgfQotCi0gICAgaWYgKG1fZ2V0c0dlb21ldHJ5RnJvbUNoaWxkcmVuKSB7CisgICAg
ICAgIHJlbGF0aXZlRnJhbWUgPSAqY2FjaGVkUmVsYXRpdmVGcmFtZTsKKyAgICB9IGVsc2UgaWYg
KG1fZ2V0c0dlb21ldHJ5RnJvbUNoaWxkcmVuKSB7CiAgICAgICAgIGF1dG8gZnJhbWUgPSBlbmNs
b3NpbmdJbnRSZWN0KHJlbGF0aXZlRnJhbWVGcm9tQ2hpbGRyZW4oKSk7CiAgICAgICAgIGlmICgh
ZnJhbWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIGZyYW1lOworICAgICAgICAgICAg
cmVsYXRpdmVGcmFtZSA9IGZyYW1lOwogICAgICAgICAvLyBFaXRoZXIgd2UgaGFkIG5vIGNoaWxk
cmVuLCBvciBvdXIgY2hpbGRyZW4gaGFkIGVtcHR5IGZyYW1lcy4gVGhlIHJpZ2h0IHRoaW5nIHRv
IGRvIHdvdWxkIGJlIHRvIHJldHVybgogICAgICAgICAvLyBhIHJlY3QgYXQgdGhlIHBvc2l0aW9u
IG9mIHRoZSBuZWFyZXN0IHJlbmRlciB0cmVlIGFuY2VzdG9yIHdpdGggc29tZSBtYWRlLXVwIHNp
emUgKEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojpib3VuZGluZ0JveFJlY3QgZG9lcyB0aGlzKS4K
ICAgICAgICAgLy8gSG93ZXZlciwgd2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIHJlbmRlciB0
cmVlIGluIHRoaXMgY29udGV4dCAob25seSB0aGUgQVggaXNvbGF0ZWQgdHJlZSwgd2hpY2ggaXMg
dG9vIHNwYXJzZSBmb3IgdGhpcyBwdXJwb3NlKSwgc28KICAgICAgICAgLy8gdW50aWwgd2UgY2Fj
aGUgdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBsZXQncyBnbyB0byB0aGUgbWFpbi10aHJlYWQu
CiAgICAgfSBlbHNlIGlmIChyb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1u
IHx8IHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJsZUhlYWRlckNvbnRhaW5l
cikKLSAgICAgICAgcmV0dXJuIGV4cG9zZWRUYWJsZUFuY2VzdG9yKCkgPyByZWxhdGl2ZUZyYW1l
RnJvbUNoaWxkcmVuKCkgOiBGbG9hdFJlY3QoKTsKKyAgICAgICAgcmVsYXRpdmVGcmFtZSA9IGV4
cG9zZWRUYWJsZUFuY2VzdG9yKCkgPyByZWxhdGl2ZUZyYW1lRnJvbUNoaWxkcmVuKCkgOiBGbG9h
dFJlY3QoKTsKKwogCiAgICAgLy8gTW9jayBvYmplY3RzIGFuZCBTVkcgb2JqZWN0cyBuZWVkIHVz
ZSB0aGUgbWFpbiB0aHJlYWQgc2luY2UgdGhleSBkbyBub3QgaGF2ZSByZW5kZXIgbm9kZXMgYW5k
IGFyZSBub3QgcGFpbnRlZCB3aXRoIGxheWVycywgcmVzcGVjdGl2ZWx5LgogICAgIC8vIEZJWE1F
OiBSZW1vdmUgaXNOb25MYXllclNWR09iamVjdCB3aGVuIExCU0UgaXMgZW5hYmxlZCAmIFNWRyBm
cmFtZXMgYXJlIGNhY2hlZC4KQEAgLTEyNjYsNiArMTI4Nyw4IEBAIEZsb2F0UmVjdCBBWElzb2xh
dGVkT2JqZWN0OjpyZWxhdGl2ZUZyYW1lKCkgY29uc3QKICAgICBpZiAoYW5jZXN0b3IgJiYgZnJh
bWVSZWN0LmxvY2F0aW9uKCkgPT0gRmxvYXRQb2ludCgpKQogICAgICAgICBmcmFtZVJlY3Quc2V0
TG9jYXRpb24oYW5jZXN0b3ItPnJlbGF0aXZlRnJhbWUoKS5sb2NhdGlvbigpKTsKIAorICAgIGF1
dG8gcmVtb3RlT2Zmc2V0ID0gcmVtb3RlRnJhbWVPZmZzZXQoKTsKKyAgICBmcmFtZVJlY3QubW92
ZUJ5KEZsb2F0UG9pbnQocmVtb3RlT2Zmc2V0KSk7CiAgICAgcmV0dXJuIGZyYW1lUmVjdDsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCmluZGV4IGQyYTY2YzJmNTNlNC4uZGU4MjdkNWZlMDE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9B
WElzb2xhdGVkT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29s
YXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxF
KEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKIAogI2luY2x1ZGUgIkFYQ29yZU9iamVjdC5o
IgorI2luY2x1ZGUgIkFYSXNvbGF0ZWRUcmVlLmgiCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5o
IgogI2luY2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgpAQCAtMjE1
LDYgKzIxNiw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0ZpbGVVcGxvYWRCdXR0b24oKSBjb25z
dCBmaW5hbCB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzRmls
ZVVwbG9hZEJ1dHRvbik7IH0KICAgICBib29sIGlzTWV0ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWV0ZXIpOyB9OwogICAgIEZs
b2F0UG9pbnQgc2NyZWVuUmVsYXRpdmVQb3NpdGlvbigpIGNvbnN0IGZpbmFsOworICAgIEludFBv
aW50IHJlbW90ZUZyYW1lT2Zmc2V0KCkgY29uc3QgZmluYWw7CiAgICAgRmxvYXRSZWN0IHJlbGF0
aXZlRnJhbWUoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGhhc0NhY2hlZFJlbGF0aXZlRnJhbWUo
KSBjb25zdCB7IHJldHVybiBvcHRpb25hbEF0dHJpYnV0ZVZhbHVlPEludFJlY3Q+KEFYUHJvcGVy
dHlOYW1lOjpSZWxhdGl2ZUZyYW1lKS5oYXNfdmFsdWUoKTsgfQogI2lmIFBMQVRGT1JNKE1BQykK
QEAgLTI2Myw3ICsyNjUsNyBAQCBwcml2YXRlOgogICAgIEFYSXNvbGF0ZWRPYmplY3QqIGFjY2Vz
c2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3QgZmluYWw7CiAgICAgQVhJc29s
YXRlZE9iamVjdCogZm9jdXNlZFVJRWxlbWVudCgpIGNvbnN0IGZpbmFsOwogICAgIEFYQ29yZU9i
amVjdCogaW50ZXJuYWxMaW5rRWxlbWVudCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG9iamVjdEF0
dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJbnRlcm5hbExpbmtFbGVtZW50KTsgfQotICAg
IEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciByYWRpb0J1dHRvbkdyb3VwKCkgY29uc3QgeyBy
ZXR1cm4gdHJlZSgpLT5vYmplY3RzRm9ySURzKHZlY3RvckF0dHJpYnV0ZVZhbHVlPEFYSUQ+KEFY
UHJvcGVydHlOYW1lOjpSYWRpb0J1dHRvbkdyb3VwKSk7IH0KKyAgICBBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3IgcmFkaW9CdXR0b25Hcm91cCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRyZWUo
KS0+b2JqZWN0c0ZvcklEcyh2ZWN0b3JBdHRyaWJ1dGVWYWx1ZTxBWElEPihBWFByb3BlcnR5TmFt
ZTo6UmFkaW9CdXR0b25Hcm91cCkpOyB9CiAgICAgQVhJc29sYXRlZE9iamVjdCogc2Nyb2xsQmFy
KEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nIHBsYWNl
aG9sZGVyVmFsdWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShB
WFByb3BlcnR5TmFtZTo6UGxhY2Vob2xkZXJWYWx1ZSk7IH0KICAgICBTdHJpbmcgZXhwYW5kZWRU
ZXh0VmFsdWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFBy
b3BlcnR5TmFtZTo6RXhwYW5kZWRUZXh0VmFsdWUpOyB9CkBAIC00NTYsNyArNDU4LDcgQEAgcHJp
dmF0ZToKICAgICBib29sIGlzQWNjZXNzaWJpbGl0eUFSSUFHcmlkSW5zdGFuY2UoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5QVJJQUdyaWRS
b3dJbnN0YW5jZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0Fj
Y2Vzc2liaWxpdHlBUklBR3JpZENlbGxJbnN0YW5jZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZh
bHNlOyB9Ci0KKyAgICBib29sIGlzQVhSZW1vdGVGcmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgYm9vbCBpc05hdGl2ZVRleHRDb250cm9sKCkgY29uc3QgZmluYWw7CiAg
ICAgYm9vbCBpc0xpc3RCb3hPcHRpb24oKSBjb25zdCBmaW5hbDsKICAgICBib29sIGlzTW9ja09i
amVjdCgpIGNvbnN0IGZpbmFsOwpAQCAtNTM3LDcgKzUzOSw5IEBAIHByaXZhdGU6CiAgICAgU3Ry
aW5nIG5hbWVBdHRyaWJ1dGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVW
YWx1ZShBWFByb3BlcnR5TmFtZTo6TmFtZUF0dHJpYnV0ZSk7IH0KICNpZiBQTEFURk9STShDT0NP
QSkKICAgICBib29sIGhhc0FwcGxlUERGQW5ub3RhdGlvbkF0dHJpYnV0ZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SGFzQXBwbGVQREZB
bm5vdGF0aW9uQXR0cmlidXRlKTsgfQorICAgIFJldGFpblB0cjxpZD4gcmVtb3RlRnJhbWVQbGF0
Zm9ybUVsZW1lbnQoKSBjb25zdCBmaW5hbDsKICNlbmRpZgorICAgIGJvb2wgaGFzUmVtb3RlRnJh
bWVDaGlsZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3Bl
cnR5TmFtZTo6SGFzUmVtb3RlRnJhbWVDaGlsZCk7IH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKSAm
JiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICBWZWN0b3I8UmV0YWluUHRyPGlkPj4gbW9kZWxF
bGVtZW50Q2hpbGRyZW4oKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAppbmRleCA2OTY2
NTg0NDhmNjUuLjFiZTNiNzk5MDUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcApAQCAtMzAs
NiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQVhJc29sYXRlZE9iamVjdC5oIgogI2luY2x1ZGUgIkFY
TG9nZ2VyLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlLmgiCiAjaW5jbHVkZSAiQWNj
ZXNzaWJpbGl0eVRhYmxlUm93LmgiCiAjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24uaCIKICNpbmNs
dWRlICJMb2NhbEZyYW1lVmlldy5oIgpAQCAtMjI1LDQ2ICsyMjYsMjYgQEAgUmVmUHRyPEFYSXNv
bGF0ZWRPYmplY3Q+IEFYSXNvbGF0ZWRUcmVlOjpvYmplY3RGb3JJRChjb25zdCBBWElEIGF4SUQp
IGNvbnN0CiAgICAgcmV0dXJuIGF4SUQuaXNWYWxpZCgpID8gbV9yZWFkZXJUaHJlYWROb2RlTWFw
LmdldChheElEKSA6IG51bGxwdHI7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFU+Ci1WZWN0b3I8
UmVmUHRyPEFYQ29yZU9iamVjdD4+IEFYSXNvbGF0ZWRUcmVlOjpvYmplY3RzRm9ySURzKGNvbnN0
IFUmIGF4SURzKQorUmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+IEFYSXNvbGF0ZWRUcmVlOjpmZXRj
aE9iamVjdEZvcklERnJvbU1haW5UaHJlYWQoY29uc3QgQVhJRCBheElEKSBjb25zdAogewotICAg
IEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwotCi0gICAgVmVjdG9yPFJlZlB0cjxBWENvcmVPYmpl
Y3Q+PiByZXN1bHQ7Ci0gICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYXhJRHMuc2l6
ZSgpKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGF4SUQgOiBheElEcykgewotICAgICAgICBSZWZQ
dHIgb2JqZWN0ID0gb2JqZWN0Rm9ySUQoYXhJRCk7Ci0gICAgICAgIGlmIChvYmplY3QpIHsKLSAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoV1RGTW92ZShvYmplY3QpKTsKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gVGhlcmUgaXMgbm8gaXNvbGF0ZWQgb2Jq
ZWN0IGZvciB0aGlzIEFYSUQuIFRoaXMgY2FuIGhhcHBlbiBpZiB0aGUgY29ycmVzcG9uZGluZyBs
aXZlIG9iamVjdCBpcyBpZ25vcmVkLgotICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIGxpdmUgb2Jq
ZWN0IGZvciB0aGlzIElEIGFuZCBpdCBpcyBhbiBpZ25vcmVkIHRhcmdldCBvZiBhIHJlbGF0aW9u
c2hpcCwgY3JlYXRlIGFuIGlzb2xhdGVkIG9iamVjdCBmb3IgaXQuCi0gICAgICAgIG9iamVjdCA9
IEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxSZWZQdHI8QVhJc29s
YXRlZE9iamVjdD4+KFsmYXhJRCwgdGhpc10gKCkgLT4gUmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+
IHsKLSAgICAgICAgICAgIGF1dG8qIGNhY2hlID0gYXhPYmplY3RDYWNoZSgpOwotICAgICAgICAg
ICAgaWYgKCFjYWNoZSB8fCAhY2FjaGUtPnJlbGF0aW9uVGFyZ2V0SURzKCkuY29udGFpbnMoYXhJ
RCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAgICAgICAgIFJlZlB0
ciBheE9iamVjdCA9IGNhY2hlLT5vYmplY3RGb3JJRChheElEKTsKLSAgICAgICAgICAgIGlmICgh
YXhPYmplY3QgfHwgIWF4T2JqZWN0LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAgICAgICAgIGF1dG8gb2JqZWN0ID0gQVhJ
c29sYXRlZE9iamVjdDo6Y3JlYXRlKCpheE9iamVjdCwgY29uc3RfY2FzdDxBWElzb2xhdGVkVHJl
ZSo+KHRoaXMpKTsKLSAgICAgICAgICAgIEFTU0VSVChheE9iamVjdC0+d3JhcHBlcigpKTsKLSAg
ICAgICAgICAgIG9iamVjdC0+YXR0YWNoUGxhdGZvcm1XcmFwcGVyKGF4T2JqZWN0LT53cmFwcGVy
KCkpOwotICAgICAgICAgICAgcmV0dXJuIG9iamVjdDsKLSAgICAgICAgfSk7Ci0gICAgICAgIGlm
IChvYmplY3QpIHsKLSAgICAgICAgICAgIG1fcmVhZGVyVGhyZWFkTm9kZU1hcC5hZGQoYXhJRCwg
Km9iamVjdCk7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKFdURk1vdmUob2JqZWN0KSk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgcmVzdWx0LnNocmlua1RvRml0KCk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKKyAgICAvLyBUaGVyZSBpcyBubyBpc29sYXRlZCBvYmplY3QgZm9yIHRoaXMgQVhJRC4g
VGhpcyBjYW4gaGFwcGVuIGlmIHRoZSBjb3JyZXNwb25kaW5nIGxpdmUgb2JqZWN0IGlzIGlnbm9y
ZWQuCisgICAgLy8gSWYgdGhlcmUgaXMgYSBsaXZlIG9iamVjdCBmb3IgdGhpcyBJRCBhbmQgaXQg
aXMgYW4gaWdub3JlZCB0YXJnZXQgb2YgYSByZWxhdGlvbnNoaXAsIGNyZWF0ZSBhbiBpc29sYXRl
ZCBvYmplY3QgZm9yIGl0LgorICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZVZhbHVl
RnJvbU1haW5UaHJlYWQ8UmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+PihbJmF4SUQsIHRoaXNdICgp
IC0+IFJlZlB0cjxBWElzb2xhdGVkT2JqZWN0PiB7CisgICAgICAgIGF1dG8qIGNhY2hlID0gYXhP
YmplY3RDYWNoZSgpOworICAgICAgICBpZiAoIWNhY2hlIHx8ICFjYWNoZS0+cmVsYXRpb25UYXJn
ZXRJRHMoKS5jb250YWlucyhheElEKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgICAgIFJlZlB0ciBheE9iamVjdCA9IGNhY2hlLT5vYmplY3RGb3JJRChheElEKTsKKyAgICAg
ICAgaWYgKCFheE9iamVjdCB8fCAhYXhPYmplY3QtPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGF1dG8gb2JqZWN0ID0gQVhJ
c29sYXRlZE9iamVjdDo6Y3JlYXRlKCpheE9iamVjdCwgY29uc3RfY2FzdDxBWElzb2xhdGVkVHJl
ZSo+KHRoaXMpKTsKKyAgICAgICAgQVNTRVJUKGF4T2JqZWN0LT53cmFwcGVyKCkpOworICAgICAg
ICBvYmplY3QtPmF0dGFjaFBsYXRmb3JtV3JhcHBlcihheE9iamVjdC0+d3JhcHBlcigpKTsKKyAg
ICAgICAgcmV0dXJuIG9iamVjdDsKKyAgICB9KTsKIH0KIAotCiB2b2lkIEFYSXNvbGF0ZWRUcmVl
OjpnZW5lcmF0ZVN1YnRyZWUoQWNjZXNzaWJpbGl0eU9iamVjdCYgYXhPYmplY3QpCiB7CiAgICAg
QVhUUkFDRSgiQVhJc29sYXRlZFRyZWU6OmdlbmVyYXRlU3VidHJlZSJfcyk7CkBAIC02NjAsNiAr
NjQxLDEyIEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZU5vZGVQcm9wZXJ0aWVzKEFYQ29y
ZU9iamVjdCYgYXhPYmplY3QsIGNvbnN0IEFYUHJvcGVyCiAgICAgICAgIGNhc2UgQVhQcm9wZXJ0
eU5hbWU6OlBvc0luU2V0OgogICAgICAgICAgICAgcHJvcGVydHlNYXAuc2V0KEFYUHJvcGVydHlO
YW1lOjpQb3NJblNldCwgYXhPYmplY3QucG9zSW5TZXQoKSk7CiAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBBWFByb3BlcnR5TmFtZTo6UmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQ6
CisgICAgICAgICAgICBwcm9wZXJ0eU1hcC5zZXQoQVhQcm9wZXJ0eU5hbWU6OlJlbW90ZUZyYW1l
UGxhdGZvcm1FbGVtZW50LCBheE9iamVjdC5yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFYUHJvcGVydHlOYW1lOjpIYXNSZW1v
dGVGcmFtZUNoaWxkOgorICAgICAgICAgICAgcHJvcGVydHlNYXAuc2V0KEFYUHJvcGVydHlOYW1l
OjpIYXNSZW1vdGVGcmFtZUNoaWxkLCBheE9iamVjdC5oYXNSZW1vdGVGcmFtZUNoaWxkKCkpOwor
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQVhQcm9wZXJ0eU5hbWU6OlJvbGVEZXNj
cmlwdGlvbjoKICAgICAgICAgICAgIHByb3BlcnR5TWFwLnNldChBWFByb3BlcnR5TmFtZTo6Um9s
ZURlc2NyaXB0aW9uLCBheE9iamVjdC5yb2xlRGVzY3JpcHRpb24oKS5pc29sYXRlZENvcHkoKSk7
CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4IGE0MTc5Mjc5Nzhk
Mi4uNmI0YzVlODMzMWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKQEAgLTEwNCw2ICsxMDQsNyBA
QCBlbnVtIGNsYXNzIEFYUHJvcGVydHlOYW1lIDogdWludDE2X3QgewogICAgIEhhc0hpZ2hsaWdo
dGluZywKICAgICBIYXNJdGFsaWNGb250LAogICAgIEhhc1BsYWluVGV4dCwKKyAgICBIYXNSZW1v
dGVGcmFtZUNoaWxkLAogICAgIEhhc1VuZGVybGluZSwKICAgICBIZWFkZXJDb250YWluZXIsCiAg
ICAgSGVhZGluZ0xldmVsLApAQCAtMjAxLDYgKzIwMiw4IEBAIGVudW0gY2xhc3MgQVhQcm9wZXJ0
eU5hbWUgOiB1aW50MTZfdCB7CiAgICAgUHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaCwK
ICAgICBSYWRpb0J1dHRvbkdyb3VwLAogICAgIFJlbGF0aXZlRnJhbWUsCisgICAgUmVtb3RlRnJh
bWVPZmZzZXQsCisgICAgUmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQsCiAgICAgUm9sZVZhbHVl
LAogICAgIFJvbGVQbGF0Zm9ybVN0cmluZywKICAgICBSb2xlRGVzY3JpcHRpb24sCkBAIC0yNTcs
NiArMjYwLDcgQEAgdXNpbmcgQVhQcm9wZXJ0eU5hbWVTZXQgPSBIYXNoU2V0PEFYUHJvcGVydHlO
YW1lLCBJbnRIYXNoPEFYUHJvcGVydHlOYW1lPiwgV1RGOjoKIHVzaW5nIEFYUHJvcGVydHlWYWx1
ZVZhcmlhbnQgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIEFYSUQsIFN0cmluZywgYm9v
bCwgaW50LCB1bnNpZ25lZCwgZG91YmxlLCBmbG9hdCwgdWludDY0X3QsIEFjY2Vzc2liaWxpdHlC
dXR0b25TdGF0ZSwgQ29sb3IsIFVSTCwgTGF5b3V0UmVjdCwgRmxvYXRQb2ludCwgRmxvYXRSZWN0
LCBJbnRQb2ludCwgSW50UmVjdCwgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4sIFZlY3Rv
cjxBY2Nlc3NpYmlsaXR5VGV4dD4sIFZlY3RvcjxBWElEPiwgVmVjdG9yPHN0ZDo6cGFpcjxBWElE
LCBBWElEPj4sIFZlY3RvcjxTdHJpbmc+LCBQYXRoLCBPcHRpb25TZXQ8QVhBbmNlc3RvckZsYWc+
LCBJbnNpZGVMaW5rLCBWZWN0b3I8VmVjdG9yPEFYSUQ+PiwgQ2hhcmFjdGVyUmFuZ2UsIHN0ZDo6
cGFpcjxBWElELCBDaGFyYWN0ZXJSYW5nZT4KICNpZiBQTEFURk9STShDT0NPQSkKICAgICAsIFJl
dGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+CisgICAgLCBSZXRhaW5QdHI8aWQ+CiAjZW5kaWYK
ICNpZiBFTkFCTEUoQVhfVEhSRUFEX1RFWFRfQVBJUykKICAgICAsIEFYVGV4dFJ1bnMKQEAgLTM5
Nyw2ICs0MDEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlRW1wdHlDb250ZW50KEFjY2Vz
c2liaWxpdHlPYmplY3QmKTsKICAgICBjb25zdGV4cHIgYm9vbCBpc1VwZGF0aW5nU3VidHJlZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcm9vdE9mU3VidHJlZUJlaW5nVXBkYXRlZDsgfQogICAgIGNvbnN0
ZXhwciB2b2lkIHVwZGF0aW5nU3VidHJlZShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCkg
eyBtX3Jvb3RPZlN1YnRyZWVCZWluZ1VwZGF0ZWQgPSBheE9iamVjdDsgfQorICAgIFJlZlB0cjxB
WElzb2xhdGVkT2JqZWN0PiBmZXRjaE9iamVjdEZvcklERnJvbU1haW5UaHJlYWQoY29uc3QgQVhJ
RCkgY29uc3Q7CiAKICAgICBlbnVtIGNsYXNzIEF0dGFjaFdyYXBwZXIgOiBib29sIHsgT25NYWlu
VGhyZWFkLCBPbkFYVGhyZWFkIH07CiAgICAgc3RydWN0IE5vZGVDaGFuZ2UgewpAQCAtNDk3LDYg
KzUwMiwzMCBAQCBpbmxpbmUgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6
dHJlZUZvclBhZ2VJRChzdGQ6Om9wdGlvbmFsPFBhZ2VJZAogICAgIHJldHVybiBwYWdlSUQgPyB0
cmVlRm9yUGFnZUlEKCpwYWdlSUQpIDogbnVsbHB0cjsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUg
VT4KK2lubGluZSBWZWN0b3I8UmVmUHRyPEFYQ29yZU9iamVjdD4+IEFYSXNvbGF0ZWRUcmVlOjpv
YmplY3RzRm9ySURzKGNvbnN0IFUmIGF4SURzKQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFk
KCkpOworCisgICAgVmVjdG9yPFJlZlB0cjxBWENvcmVPYmplY3Q+PiByZXN1bHQ7CisgICAgcmVz
dWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYXhJRHMuc2l6ZSgpKTsKKyAgICBmb3IgKGNvbnN0
IGF1dG8mIGF4SUQgOiBheElEcykgeworICAgICAgICBSZWZQdHIgb2JqZWN0ID0gb2JqZWN0Rm9y
SUQoYXhJRCk7CisgICAgICAgIGlmIChvYmplY3QpIHsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoV1RGTW92ZShvYmplY3QpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisK
KyAgICAgICAgb2JqZWN0ID0gZmV0Y2hPYmplY3RGb3JJREZyb21NYWluVGhyZWFkKGF4SUQpOwor
ICAgICAgICBpZiAob2JqZWN0KSB7CisgICAgICAgICAgICBtX3JlYWRlclRocmVhZE5vZGVNYXAu
YWRkKGF4SUQsICpvYmplY3QpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChXVEZNb3ZlKG9i
amVjdCkpOworICAgICAgICB9CisgICAgfQorICAgIHJlc3VsdC5zaHJpbmtUb0ZpdCgpOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9tYWMv
QVhJc29sYXRlZE9iamVjdE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL21hYy9BWElzb2xhdGVkT2JqZWN0TWFjLm1tCmluZGV4IGFkYjdlYzY0ODM0NS4u
ZTAyZGEwZDExMmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9tYWMvQVhJc29sYXRlZE9iamVjdE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9tYWMvQVhJc29sYXRlZE9iamVjdE1hYy5tbQpA
QCAtNjMsNiArNjMsOCBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVQbGF0Zm9y
bVByb3BlcnRpZXMoY29uc3QgUmVmPGNvbnN0IEFjY2Vzc2liaWxpdAogICAgICAgICB9CiAgICAg
fQogCisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlJlbW90ZUZyYW1lUGxhdGZvcm1F
bGVtZW50LCBvYmplY3QtPnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkpOworCiAgICAgLy8g
Q2FjaGUgdGhlIFN0cmluZ1ZhbHVlIG9ubHkgaWYgaXQgZGlmZmVycyBmcm9tIHRoZSBBdHRyaWJ1
dGVkVGV4dC4KICAgICBhdXRvIHZhbHVlID0gb2JqZWN0LT5zdHJpbmdWYWx1ZSgpOwogICAgIGlm
ICghYXR0cmlidXRlZFRleHQgfHwgdmFsdWUgIT0gU3RyaW5nKFthdHRyaWJ1dGVkVGV4dCBzdHJp
bmddKSkKQEAgLTIwMiw2ICsyMDQsMTEgQEAgdW5zaWduZWQgQVhJc29sYXRlZE9iamVjdDo6dGV4
dExlbmd0aCgpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKK1JldGFpblB0cjxpZD4gQVhJc29s
YXRlZE9iamVjdDo6cmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKSBjb25zdAoreworICAgIHJl
dHVybiBwcm9wZXJ0eVZhbHVlPFJldGFpblB0cjxpZD4+KEFYUHJvcGVydHlOYW1lOjpSZW1vdGVG
cmFtZVBsYXRmb3JtRWxlbWVudCk7Cit9CisKIFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+
IEFYSXNvbGF0ZWRPYmplY3Q6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UoQVhU
ZXh0TWFya2VyUmFuZ2UmJiBtYXJrZXJSYW5nZSwgU3BlbGxDaGVjayBzcGVsbENoZWNrKSBjb25z
dAogewogICAgIGlmICghbWFya2VyUmFuZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbQppbmRleCBiYTJh
Y2NkODBkMDQuLjdjN2E0ZjA0OTU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tCkBAIC0yNiw2ICsy
Niw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlPYmplY3Qu
aCIKIAorI2ltcG9ydCAiQVhSZW1vdGVGcmFtZS5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUxh
YmVsLmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5TGlzdC5oIgogI2ltcG9ydCAiQ29sb3JDb2Nv
YS5oIgpAQCAtNTEsNiArNTIsNyBAQAogI2ltcG9ydCAiV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJNYWMuaCIKICNpbXBvcnQgIldpZGdldC5oIgogCisjaW1wb3J0IDxwYWwvc3BpL2NvY29h
L05TQWNjZXNzaWJpbGl0eVNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNTcGVsbENoZWNr
ZXJTUEkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzQ5LDYgKzc1MSwyNCBAQCBSZXRh
aW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiBhdHRyaWJ1dGVkU3RyaW5nQ3JlYXRlKE5vZGUqIG5v
ZGUsIFN0cmluZ1ZpZXcgdGV4dAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0ZDo6c3Bhbjxj
b25zdCB1aW50OF90PiBBWFJlbW90ZUZyYW1lOjpnZW5lcmF0ZVJlbW90ZVRva2VuKCkgY29uc3QK
K3sKKyAgICAvLyBXZSB1c2UgdGhlIHBhcmVudCdzIHdyYXBwZXIgc28gdGhhdCB0aGUgcmVtb3Rl
IGZyYW1lIGFjdHMgYXMgYSBwYXNzIHRocm91Z2ggZm9yIHRoZSByZW1vdGUgdG9rZW4gYnJpZGdl
LgorICAgIE5TRGF0YSAqZGF0YSA9IFtOU0FjY2Vzc2liaWxpdHlSZW1vdGVVSUVsZW1lbnQgcmVt
b3RlVG9rZW5Gb3JMb2NhbFVJRWxlbWVudDpwYXJlbnRPYmplY3QoKS0+d3JhcHBlcigpXTsKKyAg
ICByZXR1cm4gc3RkOjpzcGFuKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbZGF0YSBieXRl
c10pLCBbZGF0YSBsZW5ndGhdKTsKK30KKwordm9pZCBBWFJlbW90ZUZyYW1lOjppbml0aWFsaXpl
UGxhdGZvcm1FbGVtZW50V2l0aFJlbW90ZVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiB0
b2tlbiwgaW50IHByb2Nlc3NJZGVudGlmaWVyKQoreworICAgIG1fcHJvY2Vzc0lkZW50aWZpZXIg
PSBwcm9jZXNzSWRlbnRpZmllcjsKKyAgICBpZiAoW3dyYXBwZXIoKSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKGFjY2Vzc2liaWxpdHlTZXRQcmVzZW50ZXJQcm9jZXNzSWRlbnRpZmllcjop
XSkKKyAgICAgICAgWyhpZCl3cmFwcGVyKCkgYWNjZXNzaWJpbGl0eVNldFByZXNlbnRlclByb2Nl
c3NJZGVudGlmaWVyOnByb2Nlc3NJZGVudGlmaWVyXTsKKyAgICBOU0RhdGEgKnRva2VuRGF0YSA9
IFtOU0RhdGEgZGF0YVdpdGhCeXRlczp0b2tlbi5kYXRhKCkgbGVuZ3RoOnRva2VuLnNpemUoKV07
CisgICAgbV9yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCA9IGFkb3B0TlMoW1tOU0FjY2Vzc2li
aWxpdHlSZW1vdGVVSUVsZW1lbnQgYWxsb2NdIGluaXRXaXRoUmVtb3RlVG9rZW46dG9rZW5EYXRh
XSk7CisKKyAgICBheE9iamVjdENhY2hlKCktPm9uUmVtb3RlRnJhbWVJbml0aWFsaXplZCgqdGhp
cyk7Cit9CisKIG5hbWVzcGFjZSBBY2Nlc3NpYmlsaXR5IHsKIAogUGxhdGZvcm1Sb2xlTWFwIGNy
ZWF0ZVBsYXRmb3JtUm9sZU1hcCgpCkBAIC04OTEsNiArOTExLDcgQEAgUGxhdGZvcm1Sb2xlTWFw
IGNyZWF0ZVBsYXRmb3JtUm9sZU1hcCgpCiAgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlN1
cGVyc2NyaXB0LCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKICAgICAgICAgeyBBY2Nlc3Np
YmlsaXR5Um9sZTo6TW9kZWwsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAogICAgICAgICB7
IEFjY2Vzc2liaWxpdHlSb2xlOjpTdWdnZXN0aW9uLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUg
fSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6UmVtb3RlRnJhbWUsIE5TQWNjZXNzaWJp
bGl0eUdyb3VwUm9sZSB9LAogICAgIH07CiAgICAgUGxhdGZvcm1Sb2xlTWFwIHJvbGVNYXA7CiAg
ICAgZm9yIChhdXRvJiByb2xlIDogcm9sZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0gYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlckJhc2UubW0KaW5kZXggNjM1N2ZhN2MyNzFiLi5mMTQyNDVmYzNiNjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyQmFzZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0KQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBv
cnQgIkFYQ29yZU9iamVjdC5oIgogI2ltcG9ydCAiQVhJc29sYXRlZE9iamVjdC5oIgogI2ltcG9y
dCAiQVhPYmplY3RDYWNoZS5oIgorI2ltcG9ydCAiQVhSZW1vdGVGcmFtZS5oIgogI2ltcG9ydCAi
QWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5TGlzdC5o
IgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUxpc3RCb3guaCIKQEAgLTI2NSwxMyArMjY2LDEzIEBA
IE5TQXJyYXkgKm1ha2VOU0FycmF5KGNvbnN0IFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6QWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBjCiAgICAgICAgICAgICByZXR1cm4gbmlsOwogCiAgICAg
ICAgIGF1dG8gd3JhcHBlciA9IGNoaWxkLT53cmFwcGVyKCk7Ci0KICAgICAgICAgLy8gV2Ugd2Fu
dCB0byByZXR1cm4gdGhlIGF0dGFjaG1lbnQgdmlldyBpbnN0ZWFkIG9mIHRoZSBvYmplY3QgcmVw
cmVzZW50aW5nIHRoZSBhdHRhY2htZW50LAogICAgICAgICAvLyBvdGhlcndpc2UsIHdlIGdldCBw
YWxpbmRyb21lIGVycm9ycyBpbiB0aGUgQVggaGllcmFyY2h5LgogICAgICAgICBpZiAoY2hpbGQt
PmlzQXR0YWNobWVudCgpKSB7CiAgICAgICAgICAgICBpZiAoaWQgYXR0YWNobWVudFZpZXcgPSB3
cmFwcGVyLmF0dGFjaG1lbnRWaWV3KQogICAgICAgICAgICAgICAgIHJldHVybiBhdHRhY2htZW50
VmlldzsKLSAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGNoaWxkLT5pc1JlbW90ZUZyYW1l
KCkpCisgICAgICAgICAgICByZXR1cm4gY2hpbGQtPnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50
KCkuZ2V0KCk7CiAKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgfSkuYXV0b3JlbGVhc2Uo
KTsKQEAgLTM4OSw3ICszOTAsNyBAQCBOU0FycmF5ICptYWtlTlNBcnJheShjb25zdCBXZWJDb3Jl
OjpBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgYwogLSAoQk9PTClp
c0lzb2xhdGVkT2JqZWN0CiB7CiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJF
RSkKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAg
UmVmUHRyIGJhY2tpbmdPYmplY3QgPSBkeW5hbWljRG93bmNhc3Q8QWNjZXNzaWJpbGl0eU9iamVj
dD4oc2VsZi5iYXNlVXBkYXRlQmFja2luZ1N0b3JlKTsKICAgICByZXR1cm4gYmFja2luZ09iamVj
dCAmJiBiYWNraW5nT2JqZWN0LT5pc0FYSXNvbGF0ZWRPYmplY3RJbnN0YW5jZSgpOwogI2Vsc2UK
ICAgICByZXR1cm4gTk87CkBAIC01MjMsNyArNTI0LDcgQEAgc3RhdGljIHZvaWQgY29udmVydFBh
dGhUb1NjcmVlblNwYWNlRnVuY3Rpb24oUGF0aENvbnZlcnNpb25JbmZvJiBjb252ZXJzaW9uLCBj
b24KIAogLSAoQ0dSZWN0KWNvbnZlcnRSZWN0VG9TcGFjZTooY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JilyZWN0IHNwYWNlOihBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlKXNwYWNlCiB7Ci0g
ICAgYXV0byogYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0
ciBiYWNraW5nT2JqZWN0ID0gZHluYW1pY0Rvd25jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3Q+KHNl
bGYuYmFzZVVwZGF0ZUJhY2tpbmdTdG9yZSk7CiAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQogICAg
ICAgICByZXR1cm4gQ0dSZWN0WmVybzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ck1hYy5tbQppbmRleCA2YzVlNmI3YWNkOWMuLjc1MDJkOWEwZTQ5OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAgLTM0LDYgKzM0LDcgQEAKICNpbXBvcnQgIkFY
SXNvbGF0ZWRPYmplY3QuaCIKICNpbXBvcnQgIkFYTG9nZ2VyLmgiCiAjaW1wb3J0ICJBWE9iamVj
dENhY2hlLmgiCisjaW1wb3J0ICJBWFJlbW90ZUZyYW1lLmgiCiAjaW1wb3J0ICJBWFRleHRNYXJr
ZXIuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5oIgogI2ltcG9ydCAiQWNj
ZXNzaWJpbGl0eUxhYmVsLmgiCkBAIC00NzksNiArNDgwLDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlUZXh0SW5wdXRNYXJrZWRUZXh0TWFya2Vy
UmFuZ2VBdHRyaWJ1dGUgQCJBWFRleHRJbnB1dE1hcmtlZFRleHRNYXJrZXJSYW5nZSIKICNlbmRp
ZgogCisjaWZuZGVmIGtBWENvbnZlcnRSZWxhdGl2ZUZyYW1lUGFyYW1ldGVyaXplZEF0dHJpYnV0
ZQorI2RlZmluZSBrQVhDb252ZXJ0UmVsYXRpdmVGcmFtZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUg
QCJBWENvbnZlcnRSZWxhdGl2ZUZyYW1lIgorI2VuZGlmCisKIEBpbXBsZW1lbnRhdGlvbiBXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcgogCiAtICh2b2lkKWRldGFjaApAQCAtNjkyLDcgKzY5
Nyw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8QVhUZXh0TWFya2VyUmVmPiBwcmV2aW91c1RleHRNYXJr
ZXIoQVhPYmplY3RDYWNoZSogY2FjaGUsIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKIAotICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsK
KyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdP
YmplY3Q7CiAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQogICAgICAgICByZXR1cm4gbmlsOwogCkBA
IC0xMjU2LDcgKzEyNjEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQK
IAogLSAoTlNBcnJheSAqKXJlbmRlcldpZGdldENoaWxkcmVuCiB7Ci0gICAgYXV0byogYmFja2lu
Z09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+
IGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKICAgICBpZiAoIWJhY2tpbmdP
YmplY3QgfHwgIWJhY2tpbmdPYmplY3QtPmlzV2lkZ2V0KCkpCiAgICAgICAgIHJldHVybiBuaWw7
CiAKQEAgLTEyNzksNyArMTI4NCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VO
RAogCiAtIChpZClyZW1vdGVBY2Nlc3NpYmlsaXR5UGFyZW50T2JqZWN0CiB7Ci0gICAgYXV0byog
YmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0cjxBWENvcmVP
YmplY3Q+IGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKICAgICByZXR1cm4g
YmFja2luZ09iamVjdCA/IGJhY2tpbmdPYmplY3QtPnJlbW90ZVBhcmVudE9iamVjdCgpIDogbmls
OwogfQogCkBAIC0xMjk2LDcgKzEzMDEsNyBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0VG9WZWN0b3Io
TlNBcnJheSogYXJyYXksIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaAogCiAt
IChBWFRleHRNYXJrZXJSYW5nZVJlZilzZWxlY3RlZFRleHRNYXJrZXJSYW5nZQogewotICAgIGF1
dG8qIGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHI8QVhD
b3JlT2JqZWN0PiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CiAgICAgaWYg
KCFiYWNraW5nT2JqZWN0KQogICAgICAgICByZXR1cm4gbmlsOwogCkBAIC0xMzY2LDEyICsxMzcx
LDE4IEBAIHN0YXRpYyB2b2lkIFdlYlRyYW5zZm9ybUNHUGF0aFRvTlNCZXppZXJQYXRoKHZvaWQq
IGluZm8sIGNvbnN0IENHUGF0aEVsZW1lbnQgKmVsCiAKIC0gKE5TU3RyaW5nKilyb2xlCiB7Cisg
ICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2Jq
ZWN0OworICAgIGlmICghYmFja2luZ09iamVjdCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKwogQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICBpZiAoc2VsZi5heEJhY2tpbmdP
YmplY3QtPmlzQXR0YWNobWVudCgpKQorICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc0F0dGFjaG1l
bnQoKSkKICAgICAgICAgcmV0dXJuIFtbc2VsZiBhdHRhY2htZW50Vmlld10gYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGVdOworICAgIGlmIChi
YWNraW5nT2JqZWN0LT5pc1JlbW90ZUZyYW1lKCkpCisgICAgICAgIHJldHVybiBbYmFja2luZ09i
amVjdC0+cmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKS5nZXQoKSBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Um9sZUF0dHJpYnV0ZV07CiBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19FTkQKIAotICAgIE5TU3RyaW5nICpzdHJpbmcgPSBzZWxmLmF4QmFj
a2luZ09iamVjdC0+cm9sZVBsYXRmb3JtU3RyaW5nKCk7CisgICAgTlNTdHJpbmcgKnN0cmluZyA9
IGJhY2tpbmdPYmplY3QtPnJvbGVQbGF0Zm9ybVN0cmluZygpOwogICAgIGlmIChzdHJpbmcubGVu
Z3RoKQogICAgICAgICByZXR1cm4gc3RyaW5nOwogICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlV
bmtub3duUm9sZTsKQEAgLTEzNzksNyArMTM5MCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0VORAogCiAtIChCT09MKWlzRW1wdHlHcm91cAogewotICAgIGF1dG8qIGJhY2tpbmdP
YmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBi
YWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CiAgICAgaWYgKCFiYWNraW5nT2Jq
ZWN0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTEzODgsNiArMTM5OSw5IEBAIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5k
aWYKIAorICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc1JlbW90ZUZyYW1lKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKwogICAgIHJldHVybiBbW3NlbGYgcm9sZV0gaXNFcXVhbDpOU0FjY2Vzc2li
aWxpdHlHcm91cFJvbGVdCiAgICAgICAgICYmIGJhY2tpbmdPYmplY3QtPmNoaWxkcmVuKCkuaXNF
bXB0eSgpCiAgICAgICAgICYmICFbW3NlbGYgcmVuZGVyV2lkZ2V0Q2hpbGRyZW5dIGNvdW50XTsK
QEAgLTEzOTYsNyArMTQxMCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAog
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KIC0gKE5TU3RyaW5nKilzdWJyb2xl
CiB7Ci0gICAgYXV0byogYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAg
IFJlZlB0cjxBWENvcmVPYmplY3Q+IGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVj
dDsKICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCiAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTE0
MTMsNyArMTQyNyw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAtIChO
U1N0cmluZyopcm9sZURlc2NyaXB0aW9uCiB7Ci0gICAgYXV0byogYmFja2luZ09iamVjdCA9IHNl
bGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+IGJhY2tpbmdPYmpl
Y3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCiAgICAg
ICAgIHJldHVybiBuaWw7CiAKQEAgLTE0MjEsNiArMTQzNSw4IEBAIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0JFR0lOCiAgICAgLy8gYXR0YWNobWVudHMgaGF2ZSB0aGUgQVhJbWFnZSBy
b2xlLCBidXQgYSBkaWZmZXJlbnQgc3Vicm9sZQogICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc0F0
dGFjaG1lbnQoKSkKICAgICAgICAgcmV0dXJuIFtbc2VsZiBhdHRhY2htZW50Vmlld10gYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJvbGVEZXNjcmlwdGlvbkF0dHJp
YnV0ZV07CisgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzUmVtb3RlRnJhbWUoKSkKKyAgICAgICAg
cmV0dXJuIFtiYWNraW5nT2JqZWN0LT5yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpLmdldCgp
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRp
b25BdHRyaWJ1dGVdOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBT
dHJpbmcgcm9sZURlc2NyaXB0aW9uID0gYmFja2luZ09iamVjdC0+cm9sZURlc2NyaXB0aW9uKCk7
CkBAIC0xNDczLDYgKzE0ODksMjggQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
CiAgICAgcmV0dXJuIGF4U2Nyb2xsVmlldyA/IFtheFNjcm9sbFZpZXctPnBsYXRmb3JtV2lkZ2V0
KCkgd2luZG93XSA6IG5pbDsKIH0KIAorLSAoTlNBcnJheSAqKV90cmFuc2Zvcm1TcGVjaWFsQ2hp
bGRyZW5DYXNlczooUmVmUHRyPEFYQ29yZU9iamVjdD4pYmFja2luZ09iamVjdAoreworI2lmIEVO
QUJMRShNT0RFTF9FTEVNRU5UKQorICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc01vZGVsKCkpIHsK
KyAgICAgICAgYXV0byBtb2RlbENoaWxkcmVuID0gYmFja2luZ09iamVjdC0+bW9kZWxFbGVtZW50
Q2hpbGRyZW4oKTsKKyAgICAgICAgaWYgKG1vZGVsQ2hpbGRyZW4uc2l6ZSgpKSB7CisgICAgICAg
ICAgICByZXR1cm4gY3JlYXRlTlNBcnJheShXVEZNb3ZlKG1vZGVsQ2hpbGRyZW4pLCBbXSAoYXV0
byYmIGNoaWxkKSAtPiBpZCB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkLmdldCgpOwor
ICAgICAgICAgICAgfSkuYXV0b3JlbGVhc2UoKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgor
CisgICAgY29uc3QgYXV0byYgY2hpbGRyZW4gPSBiYWNraW5nT2JqZWN0LT5jaGlsZHJlbigpOwor
ICAgIGlmICghY2hpbGRyZW4uc2l6ZSgpKSB7CisgICAgICAgIGlmIChOU0FycmF5ICpjaGlsZHJl
biA9IFtzZWxmIHJlbmRlcldpZGdldENoaWxkcmVuXSkKKyAgICAgICAgICAgIHJldHVybiBjaGls
ZHJlbjsKKyAgICB9CisKKyAgICByZXR1cm4gbmlsOworfQorCiAvLyBGSVhNRTogc3BsaXQgdXAg
dGhpcyBmdW5jdGlvbiBpbiBhIGJldHRlciB3YXkuCiAvLyBzdWdnZXN0aW9uczogVXNlIGEgaGFz
aCB0YWJsZSB0aGF0IG1hcHMgYXR0cmlidXRlIG5hbWVzIHRvIGZ1bmN0aW9uIGNhbGxzLAogLy8g
b3IgbWF5YmUgcG9pbnRlcnMgdG8gbWVtYmVyIGZ1bmN0aW9ucwpAQCAtMTUzMSwyMiArMTU2OSw5
IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIH0KIAogICAgIGlm
IChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5B
dHRyaWJ1dGVdIHx8IFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxp
dHlDaGlsZHJlbkluTmF2aWdhdGlvbk9yZGVyQXR0cmlidXRlXSkgewotI2lmIEVOQUJMRShNT0RF
TF9FTEVNRU5UKQotICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNNb2RlbCgpKSB7Ci0gICAg
ICAgICAgICBhdXRvIG1vZGVsQ2hpbGRyZW4gPSBiYWNraW5nT2JqZWN0LT5tb2RlbEVsZW1lbnRD
aGlsZHJlbigpOwotICAgICAgICAgICAgaWYgKG1vZGVsQ2hpbGRyZW4uc2l6ZSgpKSB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkoV1RGTW92ZShtb2RlbENoaWxkcmVuKSwg
W10gKGF1dG8mJiBjaGlsZCkgLT4gaWQgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hp
bGQuZ2V0KCk7Ci0gICAgICAgICAgICAgICAgfSkuYXV0b3JlbGVhc2UoKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotI2VuZGlmCi0KLSAgICAgICAgY29uc3QgYXV0byYgY2hpbGRyZW4gPSBi
YWNraW5nT2JqZWN0LT5jaGlsZHJlbigpOwotICAgICAgICBpZiAoY2hpbGRyZW4uaXNFbXB0eSgp
KSB7Ci0gICAgICAgICAgICBpZiAoTlNBcnJheSAqd2lkZ2V0Q2hpbGRyZW4gPSBbc2VsZiByZW5k
ZXJXaWRnZXRDaGlsZHJlbl0pCi0gICAgICAgICAgICAgICAgcmV0dXJuIHdpZGdldENoaWxkcmVu
OwotICAgICAgICB9CisgICAgICAgIE5TQXJyYXkgKnNwZWNpYWxDaGlsZHJlbiA9IFtzZWxmIF90
cmFuc2Zvcm1TcGVjaWFsQ2hpbGRyZW5DYXNlczpiYWNraW5nT2JqZWN0XTsKKyAgICAgICAgaWYg
KHNwZWNpYWxDaGlsZHJlbi5jb3VudCkKKyAgICAgICAgICAgIHJldHVybiBzcGVjaWFsQ2hpbGRy
ZW47CiAKICAgICAgICAgLy8gVGhlIHRyZWUncyAoQVhPdXRsaW5lKSBjaGlsZHJlbiBhcmUgc3Vw
cG9zZWQgdG8gYmUgaXRzIHJvd3MgYW5kIGNvbHVtbnMuCiAgICAgICAgIC8vIFRoZSBBUklBIHNw
ZWMgZG9lc24ndCBoYXZlIGNvbHVtbnMsIHNvIHdlIGp1c3QgbmVlZCByb3dzLgpAQCAtMTU1Nyw3
ICsxNTgyLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAg
IGlmIChiYWNraW5nT2JqZWN0LT5pc1RyZWVJdGVtKCkpCiAgICAgICAgICAgICByZXR1cm4gbWFr
ZU5TQXJyYXkoYmFja2luZ09iamVjdC0+YXJpYVRyZWVJdGVtQ29udGVudCgpKTsKIAotICAgICAg
ICByZXR1cm4gbWFrZU5TQXJyYXkoY2hpbGRyZW4pOworICAgICAgICByZXR1cm4gbWFrZU5TQXJy
YXkoYmFja2luZ09iamVjdC0+Y2hpbGRyZW4oKSk7CiAgICAgfQogCiAgICAgaWYgKFthdHRyaWJ1
dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDaGlsZHJlbkF0
dHJpYnV0ZV0pIHsKQEAgLTE3MTMsMTYgKzE3MzgsMTQgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBM
RU1FTlRBVElPTlNfRU5ECiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzog
TlNBY2Nlc3NpYmlsaXR5RW5hYmxlZEF0dHJpYnV0ZV0pCiAgICAgICAgIHJldHVybiBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEJvb2w6IGJhY2tpbmdPYmplY3QtPmlzRW5hYmxlZCgpXTsKIAotICAgIGlm
IChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVNpemVBdHRy
aWJ1dGVdKSB7Ci0gICAgICAgIGF1dG8gc2l6ZSA9IGJhY2tpbmdPYmplY3QtPnNpemUoKTsKLSAg
ICAgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aFNpemU6TlNNYWtlU2l6ZShzaXplLndpZHRo
KCksIHNpemUuaGVpZ2h0KCkpXTsKLSAgICB9CisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1
YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlTaXplQXR0cmlidXRlXSkKKyAgICAgICAgcmV0dXJu
IFtOU1ZhbHVlIHZhbHVlV2l0aFNpemU6KENHU2l6ZSliYWNraW5nT2JqZWN0LT5zaXplKCldOwog
CiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlQ
cmltYXJ5U2NyZWVuSGVpZ2h0QXR0cmlidXRlXSkKICAgICAgICAgcmV0dXJuIEAoYmFja2luZ09i
amVjdC0+cHJpbWFyeVNjcmVlblJlY3QoKS5oZWlnaHQoKSk7CiAKICAgICBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVBvc2l0aW9uQXR0cmlidXRlXSkK
LSAgICAgICAgcmV0dXJuIEAoQ0dQb2ludChiYWNraW5nT2JqZWN0LT5zY3JlZW5SZWxhdGl2ZVBv
c2l0aW9uKCkpKTsKKyAgICAgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aFBvaW50OihDR1Bv
aW50KWJhY2tpbmdPYmplY3QtPnNjcmVlblJlbGF0aXZlUG9zaXRpb24oKV07CiAKICAgICBpZiAo
W2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVBhdGhBdHRyaWJ1
dGVdKQogICAgICAgICByZXR1cm4gW3NlbGYgcGF0aF07CkBAIC0yMjM3LDYgKzIyNjAsMTAgQEAg
QUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIHJldHVybiByYW5n
ZSA/IHJhbmdlLnBsYXRmb3JtRGF0YSgpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKSA6IG5pbDsKICAg
ICB9CiAKKyAgICAvLyBWb2ljZU92ZXIgcHJvcGVydHkgdG8gaWdub3JlIGNlcnRhaW4gZ3JvdXBz
LgorICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWEF1dG9JbnRlcmFj
dGFibGUiXSkKKyAgICAgICAgcmV0dXJuIEAoYmFja2luZ09iamVjdC0+aXNSZW1vdGVGcmFtZSgp
KTsKKwogICAgIC8vIFVzZWQgYnkgTGF5b3V0VGVzdHMgb25seSwgbm90IGJ5IEFUIGNsaWVudHMu
CiAgICAgaWYgKFVOTElLRUxZKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpAIkFYQVJJ
QVJvbGUiXSkpCiAgICAgICAgIHJldHVybiBiYWNraW5nT2JqZWN0LT5jb21wdXRlZFJvbGVTdHJp
bmcoKTsKQEAgLTIzMzAsNyArMjM1Nyw4IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJ
T05TX0VORAogICAgICAgICBpZiAoYXhPYmplY3QtPmlzQXR0YWNobWVudCgpKSB7CiAgICAgICAg
ICAgICBpZiAoaWQgYXR0YWNobWVudFZpZXcgPSBbYXhPYmplY3QtPndyYXBwZXIoKSBhdHRhY2ht
ZW50Vmlld10pCiAgICAgICAgICAgICAgICAgcmV0dXJuIGF0dGFjaG1lbnRWaWV3OwotICAgICAg
ICB9CisgICAgICAgIH0gZWxzZSBpZiAoYXhPYmplY3QtPmlzUmVtb3RlRnJhbWUoKSkKKyAgICAg
ICAgICAgIHJldHVybiBheE9iamVjdC0+cmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKS5nZXQo
KTsKIAogICAgICAgICAvLyBPbmx5IGNhbGwgb3V0IHRvIHRoZSBtYWluLXRocmVhZCBpZiB0aGlz
IG9iamVjdCBoYXMgYSBiYWNraW5nIHdpZGdldCB0byBxdWVyeS4KICAgICAgICAgaWYgKGF4T2Jq
ZWN0LT5pc1dpZGdldCgpKSB7CkBAIC0yNTA3LDYgKzI1MzUsMTAgQEAgQUxMT1dfREVQUkVDQVRF
RF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzV2ViQXJlYSgp
KQogICAgICAgICByZXR1cm4gd2ViQXJlYVBhcmFtQXR0cnM7CiAKKyAgICAvLyBUaGUgb2JqZWN0
IHRoYXQgc2VydmVzIHVwIHRoZSByZW1vdGUgZnJhbWUgYWxzbyBpcyB0aGUgb25lIHRoYXQgZG9l
cyB0aGUgZnJhbWUgY29udmVyc2lvbi4KKyAgICBpZiAoYmFja2luZ09iamVjdC0+aGFzUmVtb3Rl
RnJhbWVDaGlsZCgpKQorICAgICAgICByZXR1cm4gW3BhcmFtQXR0cnMgYXJyYXlCeUFkZGluZ09i
amVjdDprQVhDb252ZXJ0UmVsYXRpdmVGcmFtZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdOworCiAg
ICAgcmV0dXJuIHBhcmFtQXR0cnM7CiB9CiAKQEAgLTI1NzgsNyArMjYxMCw3IEBAIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogewogICAgIEFYVFJBQ0UoIldlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlQZXJmb3JtU2hvd01lbnVBY3Rpb24iX3MpOwog
Ci0gICAgYXV0byogYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJl
ZlB0cjxBWENvcmVPYmplY3Q+IGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsK
ICAgICBpZiAoIWJhY2tpbmdPYmplY3QpIHsKICAgICAgICAgQVhMT0cobWFrZVN0cmluZygiTm8g
YmFja2luZ09iamVjdCBmb3Igd3JhcHBlciAiLCBoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRy
X3Q+KHNlbGYpKSkpOwogICAgICAgICByZXR1cm47CkBAIC0yODIyLDcgKzI4NTQsNyBAQCBBTExP
V19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBpZiAoIXJhbmdlLmxlbmd0aCkK
ICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4
QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBiYWNraW5nT2JqZWN0ID0g
c2VsZi5heEJhY2tpbmdPYmplY3Q7CiAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQogICAgICAgICBy
ZXR1cm4gbmlsOwogCkBAIC0zMTc3LDYgKzMyMDksMTggQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBM
RU1FTlRBVElPTlNfRU5ECiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3aWRnZXRDaGlsZHJl
bjsKICAgICAgICAgICAgICAgICBjcml0ZXJpYS5yZXN1bHRzTGltaXQgLT0gW3dpZGdldENoaWxk
cmVuIGNvdW50XTsKICAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChiYWNraW5nT2Jq
ZWN0LT5pc1JlbW90ZUZyYW1lKCkKKyAgICAgICAgICAgICYmIGNyaXRlcmlhLnNlYXJjaEtleXMu
Y29udGFpbnMoQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6QW55VHlwZSkKKyAgICAgICAgICAgICYm
ICghY3JpdGVyaWEudmlzaWJsZU9ubHkgfHwgYmFja2luZ09iamVjdC0+aXNWaXNpYmxlKCkpKSB7
CisgICAgICAgICAgICBOU0FycmF5ICpyZW1vdGVGcmFtZUNoaWxkcmVuID0gW3NlbGYgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXTsK
KyAgICAgICAgICAgIEFTU0VSVChyZW1vdGVGcmFtZUNoaWxkcmVuLmNvdW50ID09IDEpOworICAg
ICAgICAgICAgaWYgKHJlbW90ZUZyYW1lQ2hpbGRyZW4uY291bnQgPT0gMSkgeworICAgICAgICAg
ICAgICAgIE5TVUludGVnZXIgaW5jbHVkZWRDaGlsZHJlbkNvdW50ID0gc3RkOjptaW4oW3JlbW90
ZUZyYW1lQ2hpbGRyZW4gY291bnRdLCBOU1VJbnRlZ2VyKGNyaXRlcmlhLnJlc3VsdHNMaW1pdCkp
OworICAgICAgICAgICAgICAgIHdpZGdldENoaWxkcmVuID0gW3JlbW90ZUZyYW1lQ2hpbGRyZW4g
c3ViYXJyYXlXaXRoUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgaW5jbHVkZWRDaGlsZHJlbkNvdW50KV07
CisgICAgICAgICAgICAgICAgaWYgKFt3aWRnZXRDaGlsZHJlbiBjb3VudF0gPj0gY3JpdGVyaWEu
cmVzdWx0c0xpbWl0KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVtb3RlRnJhbWVDaGls
ZHJlbjsKKyAgICAgICAgICAgICAgICBjcml0ZXJpYS5yZXN1bHRzTGltaXQgLT0gW3dpZGdldENo
aWxkcmVuIGNvdW50XTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciByZXN1bHRzOwpAQCAt
MzY2OSw2ICszNzEzLDExIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAog
ICAgIGlmIChVTkxJS0VMWShbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpfQVhUZXh0TWFya2Vy
UmFuZ2VGb3JOU1JhbmdlQXR0cmlidXRlXSkpCiAgICAgICAgIHJldHVybiBiYWNraW5nT2JqZWN0
LT50ZXh0TWFya2VyUmFuZ2VGb3JOU1JhbmdlKHJhbmdlKS5wbGF0Zm9ybURhdGEoKS5icmlkZ2lu
Z0F1dG9yZWxlYXNlKCk7CiAKKyAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6a0FY
Q29udmVydFJlbGF0aXZlRnJhbWVQYXJhbWV0ZXJpemVkQXR0cmlidXRlXSkgeworICAgICAgICBh
dXRvKiBwYXJlbnQgPSBiYWNraW5nT2JqZWN0LT5wYXJlbnRPYmplY3QoKTsKKyAgICAgICAgcmV0
dXJuIHBhcmVudCA/IFtOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6cGFyZW50LT5jb252ZXJ0RnJhbWVU
b1NwYWNlKEZsb2F0UmVjdChyZWN0KSwgQWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZTo6UGFn
ZSldIDogbmlsOworICAgIH0KKwogICAgIC8vIFRoZXJlIGFyZSBzb21lIHBhcmFtZXRlcnMgdGhh
dCBzdXBlciBoYW5kbGVzIHRoYXQgYXJlIG5vdCBleHBsaWNpdGx5IHJldHVybmVkIGJ5IHRoZSBs
aXN0IG9mIHRoZSBlbGVtZW50J3MgYXR0cmlidXRlcy4KICAgICAvLyBJbiB0aGF0IGNhc2UgaXQg
bXVzdCBiZSBwYXNzZWQgdG8gc3VwZXIuCiAgICAgcmV0dXJuIFtzdXBlciBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6YXR0cmlidXRlIGZvclBhcmFtZXRlcjpwYXJhbWV0ZXJdOwpAQCAtMzcy
Miw4ICszNzcxLDEwIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAg
ICAgICBpZiAoIWNoaWxkKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIFdlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyICpjaGlsZFdyYXBwZXIgPSBjaGlsZC0+d3JhcHBlcigpOwot
ICAgICAgICBpZiAoY2hpbGRXcmFwcGVyID09IHRhcmdldENoaWxkIHx8IChjaGlsZC0+aXNBdHRh
Y2htZW50KCkgJiYgW2NoaWxkV3JhcHBlciBhdHRhY2htZW50Vmlld10gPT0gdGFyZ2V0Q2hpbGQp
KQorICAgICAgICBpZiAoY2hpbGRXcmFwcGVyID09IHRhcmdldENoaWxkIHx8IChjaGlsZC0+aXNB
dHRhY2htZW50KCkgJiYgW2NoaWxkV3JhcHBlciBhdHRhY2htZW50Vmlld10gPT0gdGFyZ2V0Q2hp
bGQpCisgICAgICAgICAgICB8fCAoY2hpbGQtPmlzUmVtb3RlRnJhbWUoKSAmJiBjaGlsZC0+cmVt
b3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKSA9PSB0YXJnZXRDaGlsZCkpIHsKICAgICAgICAgICAg
IHJldHVybiBpOworICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBOU05vdEZvdW5kOwogfQpA
QCAtMzc0MCw3ICszNzkxLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4K
ICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5BdHRyaWJ1dGVdKSB7CiAgICAgICAgIC8vIFRyZWUgaXRlbXMgb2JqZWN0IHJldHVybnMgYSBk
aWZmZXJlbnQgc2V0IG9mIGNoaWxkcmVuIHRoYW4gdGhvc2UgdGhhdCBhcmUgaW4gY2hpbGRyZW4o
KQogICAgICAgICAvLyBiZWNhdXNlIGFuIEFYT3V0bGluZSAodGhlIG1hYyByb2xlIGlzIGJlY29t
ZXMpIGhhcyBzb21lIG9kZCBzdGlwdWxhdGlvbnMuCi0gICAgICAgIGlmIChiYWNraW5nT2JqZWN0
LT5pc1RyZWUoKSB8fCBiYWNraW5nT2JqZWN0LT5pc1RyZWVJdGVtKCkpCisgICAgICAgIGlmIChi
YWNraW5nT2JqZWN0LT5pc1RyZWUoKSB8fCBiYWNraW5nT2JqZWN0LT5pc1RyZWVJdGVtKCkgfHwg
YmFja2luZ09iamVjdC0+aXNSZW1vdGVGcmFtZSgpKQogICAgICAgICAgICAgcmV0dXJuIFtbc2Vs
ZiBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRy
aWJ1dGVdIGNvdW50XTsKIAogICAgICAgICBhdXRvIGNoaWxkcmVuU2l6ZSA9IGJhY2tpbmdPYmpl
Y3QtPmNoaWxkcmVuKCkuc2l6ZSgpOwpAQCAtMzc3NiwxNiArMzgyNyw3IEBAIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0VORAogCiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3Ry
aW5nOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXSkgewogICAgICAgICBpZiAoYmFj
a2luZ09iamVjdC0+Y2hpbGRyZW4oKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIE5TQXJyYXkg
KmNoaWxkcmVuID0gbmlsOwotI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQotICAgICAgICAgICAg
aWYgKGJhY2tpbmdPYmplY3QtPmlzTW9kZWwoKSkgewotICAgICAgICAgICAgICAgIGNoaWxkcmVu
ID0gY3JlYXRlTlNBcnJheShiYWNraW5nT2JqZWN0LT5tb2RlbEVsZW1lbnRDaGlsZHJlbigpLCBb
XSAoYXV0byYmIGNoaWxkKSAtPiBpZCB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGls
ZC5nZXQoKTsKLSAgICAgICAgICAgICAgICB9KS5hdXRvcmVsZWFzZSgpOwotICAgICAgICAgICAg
fSBlbHNlCi0jZW5kaWYKLSAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtzZWxmIHJlbmRlcldp
ZGdldENoaWxkcmVuXTsKLSAgICAgICAgICAgIAorICAgICAgICAgICAgTlNBcnJheSAqY2hpbGRy
ZW4gPSBbc2VsZiBfdHJhbnNmb3JtU3BlY2lhbENoaWxkcmVuQ2FzZXM6YmFja2luZ09iamVjdF07
CiAgICAgICAgICAgICBpZiAoIWNoaWxkcmVuKQogICAgICAgICAgICAgICAgIHJldHVybiBuaWw7
CiAKQEAgLTM4MTYsOCArMzg1OCwxMyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19F
TkQKIAogICAgICAgICAgICAgLy8gVGhlIGF0dGFjaG1lbnQgdmlldyBzaG91bGQgYmUgcmV0dXJu
ZWQsIG90aGVyd2lzZSBBWCBwYWxpbmRyb21lIGVycm9ycyBvY2N1ci4KICAgICAgICAgICAgIGlk
IGF0dGFjaG1lbnRWaWV3ID0gbmlsOwotICAgICAgICAgICAgaWYgKFt3cmFwcGVyIGlzS2luZE9m
Q2xhc3M6W1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGNsYXNzXV0gJiYgd3JhcHBlci5h
eEJhY2tpbmdPYmplY3QgJiYgd3JhcHBlci5heEJhY2tpbmdPYmplY3QtPmlzQXR0YWNobWVudCgp
KQotICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRWaWV3ID0gW3dyYXBwZXIgYXR0YWNobWVudFZp
ZXddOworICAgICAgICAgICAgaWYgKFt3cmFwcGVyIGlzS2luZE9mQ2xhc3M6W1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIGNsYXNzXV0gJiYgd3JhcHBlci5heEJhY2tpbmdPYmplY3QpIHsK
KyAgICAgICAgICAgICAgICBpZiAod3JhcHBlci5heEJhY2tpbmdPYmplY3QtPmlzQXR0YWNobWVu
dCgpKQorICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50VmlldyA9IFt3cmFwcGVyIGF0dGFj
aG1lbnRWaWV3XTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmICh3cmFwcGVyLmF4QmFja2luZ09i
amVjdC0+aXNSZW1vdGVGcmFtZSgpKQorICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50Vmll
dyA9IHdyYXBwZXIuYXhCYWNraW5nT2JqZWN0LT5yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgp
LmdldCgpOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBbc3ViYXJyYXkgYWRkT2JqZWN0
OmF0dGFjaG1lbnRWaWV3ID8gYXR0YWNobWVudFZpZXcgOiB3cmFwcGVyXTsKICAgICAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDI1OGMxNGI4NmE4Yi4u
NTcxN2FkZTJhNDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAt
MTA4NSw2ICsxMDg1LDExIEBAIFJlbW90ZUFYT2JqZWN0UmVmIEVtcHR5RnJhbWVMb2FkZXJDbGll
bnQ6OmFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKQogICAgIHJldHVybiBudWxscHRyOwogfQog
CitJbnRQb2ludCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjphY2Nlc3NpYmlsaXR5UmVtb3RlRnJh
bWVPZmZzZXQoKQoreworICAgIHJldHVybiB7IH07Cit9CisKICNpZiBFTkFCTEUoQUNDRVNTSUJJ
TElUWV9JU09MQVRFRF9UUkVFKQogdm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpzZXRBWElz
b2xhdGVkVHJlZVJvb3QoV2ViQ29yZTo6QVhDb3JlT2JqZWN0KikKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDA5OGNlNThkMTExOS4u
NDY3MmRlMjk4NTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFt
ZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9h
ZGVyQ2xpZW50LmgKQEAgLTE4NCw2ICsxODQsNyBAQCBwcml2YXRlOgogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgUmVtb3RlQVhPYmplY3RSZWYgYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgp
IGZpbmFsOworICAgIEludFBvaW50IGFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCgpIGZp
bmFsOwogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAgICAgdm9pZCBz
ZXRBWElzb2xhdGVkVHJlZVJvb3QoV2ViQ29yZTo6QVhDb3JlT2JqZWN0KikgZmluYWw7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2NhbEZyYW1lTG9hZGVyQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9jYWxGcmFtZUxvYWRlckNsaWVudC5oCmlu
ZGV4IGIyZDU2ZjA1MGFlOS4uMDBkM2FkNWUyY2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTG9jYWxGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Mb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTI5MCw2ICsyOTAsNyBAQCBwdWJsaWM6
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgLy8gQWxsb3cgYW4gYWNjZXNzaWJpbGl0eSBvYmpl
Y3QgdG8gcmV0cmlldmUgYSBGcmFtZSBwYXJlbnQgaWYgdGhlcmUncyBubyBQbGF0Zm9ybVdpZGdl
dC4KICAgICB2aXJ0dWFsIFJlbW90ZUFYT2JqZWN0UmVmIGFjY2Vzc2liaWxpdHlSZW1vdGVPYmpl
Y3QoKSA9IDA7CisgICAgdmlydHVhbCBJbnRQb2ludCBhY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVP
ZmZzZXQoKSA9IDA7CiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0QVhJc29sYXRlZFRyZWVSb290KEFYQ29yZU9iamVjdCopID0gMDsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggNWQyZmVhYjY1Nzk2Li44NDI2YzhmMzcwZjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMjIwOCw4ICsyMjA4LDE1IEBAIGJvb2wgUGFnZTo6c2hv
dWxkVXBkYXRlQWNjZXNzaWJpbGl0eVJlZ2lvbnMoKSBjb25zdAogICAgIEFTU0VSVChtX2xhc3RS
ZW5kZXJpbmdVcGRhdGVUaW1lc3RhbXAgPj0gbV9sYXN0QWNjZXNzaWJpbGl0eU9iamVjdFJlZ2lv
bnNVcGRhdGUpOwogICAgIGlmICgobV9sYXN0UmVuZGVyaW5nVXBkYXRlVGltZXN0YW1wIC0gbV9s
YXN0QWNjZXNzaWJpbGl0eU9iamVjdFJlZ2lvbnNVcGRhdGUpIDwgdXBkYXRlSW50ZXJ2YWwpIHsK
ICAgICAgICAgLy8gV2UndmUgYWxyZWFkeSB1cGRhdGVkIGFjY2Vzc2liaWxpdHkgb2JqZWN0IHJl
Y3RzIHJlY2VudGx5LCBzbyBza2lwIHRoaXMgdXBkYXRlIGFuZCBzY2hlZHVsZSBhbm90aGVyIGZv
ciBsYXRlci4KLSAgICAgICAgYXV0byogbG9jYWxNYWluRnJhbWUgPSBkeW5hbWljRG93bmNhc3Q8
TG9jYWxGcmFtZT4obWFpbkZyYW1lKCkpOwotICAgICAgICBSZWZQdHIgbWFpbkRvY3VtZW50ID0g
bG9jYWxNYWluRnJhbWUgPyBsb2NhbE1haW5GcmFtZS0+ZG9jdW1lbnQoKSA6IG51bGxwdHI7CisK
KyAgICAgICAgUmVmUHRyPERvY3VtZW50PiBtYWluRG9jdW1lbnQgPSBudWxscHRyOworICAgICAg
ICBpZiAoYXV0byogbG9jYWxNYWluRnJhbWUgPSBkeW5hbWljRG93bmNhc3Q8TG9jYWxGcmFtZT4o
bWFpbkZyYW1lKCkpKQorICAgICAgICAgICAgbWFpbkRvY3VtZW50ID0gbG9jYWxNYWluRnJhbWUg
PyBsb2NhbE1haW5GcmFtZS0+ZG9jdW1lbnQoKSA6IG51bGxwdHI7CisgICAgICAgIGVsc2UgaWYg
KGF1dG8qIHJlbW90ZUZyYW1lID0gZHluYW1pY0Rvd25jYXN0PFJlbW90ZUZyYW1lPihtYWluRnJh
bWUoKSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBvd25lciA9IHJlbW90ZUZyYW1lLT5vd25l
ckVsZW1lbnQoKSkKKyAgICAgICAgICAgICAgICBtYWluRG9jdW1lbnQgPSAmKG93bmVyLT5kb2N1
bWVudCgpKTsKKyAgICAgICAgfQorCiAgICAgICAgIC8vIElmIGFjY2Vzc2liaWxpdHkgaXMgZW5h
YmxlZCBhbmQgd2UgaGF2ZSBhIG1haW4gZG9jdW1lbnQsIHRoYXQgZG9jdW1lbnQgc2hvdWxkIGhh
dmUgYW4gQVggb2JqZWN0IGNhY2hlLgogICAgICAgICBBU1NFUlQoIW1haW5Eb2N1bWVudCB8fCBt
YWluRG9jdW1lbnQtPmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpKTsKICAgICAgICAgaWYgKENoZWNr
ZWRQdHIgdG9wQXhPYmplY3RDYWNoZSA9IG1haW5Eb2N1bWVudCA/IG1haW5Eb2N1bWVudC0+ZXhp
c3RpbmdBWE9iamVjdENhY2hlKCkgOiBudWxscHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9SZW1vdGVGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1l
LmNwcAppbmRleCA3MTJjMGIyMjBmZDAuLjUwYjBhMjVjZmRiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9S
ZW1vdGVGcmFtZS5jcHAKQEAgLTEwMCw2ICsxMDAsMjEgQEAgdm9pZCBSZW1vdGVGcmFtZTo6YnJv
YWRjYXN0RnJhbWVSZW1vdmFsVG9PdGhlclByb2Nlc3NlcygpCiAgICAgbV9jbGllbnQtPmJyb2Fk
Y2FzdEZyYW1lUmVtb3ZhbFRvT3RoZXJQcm9jZXNzZXMoKTsKIH0KIAordm9pZCBSZW1vdGVGcmFt
ZTo6dXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KEludFBvaW50IG9mZnNldCkK
K3sKKyAgICBtX2NsaWVudC0+dXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KGZy
YW1lSUQoKSwgb2Zmc2V0KTsKK30KKwordm9pZCBSZW1vdGVGcmFtZTo6dW5iaW5kUmVtb3RlQWNj
ZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIpCit7CisgICAgbV9jbGllbnQt
PnVuYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMocHJvY2Vzc0lkZW50aWZpZXIpOworfQor
Cit2b2lkIFJlbW90ZUZyYW1lOjpiaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJv
Y2Vzc0lkZW50aWZpZXIsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhVG9rZW4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBpbnQpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHJldHVybiBtX2NsaWVudC0+YmluZFJlbW90ZUFj
Y2Vzc2liaWxpdHlGcmFtZXMocHJvY2Vzc0lkZW50aWZpZXIsIGZyYW1lSUQoKSwgZGF0YVRva2Vu
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIEZyYW1lVmlldyogUmVtb3RlRnJh
bWU6OnZpcnR1YWxWaWV3KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV92aWV3LmdldCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9SZW1vdGVGcmFtZS5oCmluZGV4IDI3ZWQ4NDBkMDgyZS4uY2E3MmFmOGJjOTVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5oCkBAIC0zMyw2ICszMyw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgRGF0YVNlZ21lbnQ7CiBjbGFzcyBSZW1vdGVET01XaW5kb3c7
CiBjbGFzcyBSZW1vdGVGcmFtZUNsaWVudDsKIGNsYXNzIFJlbW90ZUZyYW1lVmlldzsKQEAgLTYy
LDYgKzYzLDkgQEAgcHVibGljOgogICAgIE1hcmthYmxlPExheWVySG9zdGluZ0NvbnRleHRJZGVu
dGlmaWVyPiBsYXllckhvc3RpbmdDb250ZXh0SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1f
bGF5ZXJIb3N0aW5nQ29udGV4dElkZW50aWZpZXI7IH0KIAogICAgIFN0cmluZyByZW5kZXJUcmVl
QXNUZXh0KHNpemVfdCBiYXNlSW5kZW50LCBPcHRpb25TZXQ8UmVuZGVyQXNUZXh0RmxhZz4pOwor
ICAgIHZvaWQgYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlm
aWVyLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3Rk
OjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBpbnQpPiYmKTsKKyAgICB2b2lkIHVwZGF0ZVJlbW90ZUZy
YW1lQWNjZXNzaWJpbGl0eU9mZnNldChJbnRQb2ludCk7CisgICAgdm9pZCB1bmJpbmRSZW1vdGVB
Y2Nlc3NpYmlsaXR5RnJhbWVzKGludCk7CiAKIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQg
ZXhwbGljaXQgUmVtb3RlRnJhbWUoUGFnZSYsIFVuaXF1ZVJlZjxSZW1vdGVGcmFtZUNsaWVudD4m
JiwgRnJhbWVJZGVudGlmaWVyLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBGcmFtZSogcGFyZW50
LCBNYXJrYWJsZTxMYXllckhvc3RpbmdDb250ZXh0SWRlbnRpZmllcj4sIEZyYW1lKiBvcGVuZXIg
PSBudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVDbGllbnQuaAppbmRleCA0
ZWZkMTAzZjM5MTIuLjU0MWEwZDAxYzU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9SZW1vdGVGcmFtZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJh
bWVDbGllbnQuaApAQCAtMzAsNiArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIERhdGFTZWdtZW50OwogY2xhc3MgRnJhbWVMb2FkUmVxdWVzdDsKIGNsYXNzIEludFNpemU7
CiBjbGFzcyBTZWN1cml0eU9yaWdpbkRhdGE7CkBAIC00OCw2ICs0OSw5IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIFN0cmluZyByZW5kZXJUcmVlQXNUZXh0KHNpemVfdCBiYXNlSW5kZW50LCBPcHRp
b25TZXQ8UmVuZGVyQXNUZXh0RmxhZz4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYnJvYWRjYXN0
RnJhbWVSZW1vdmFsVG9PdGhlclByb2Nlc3NlcygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xv
c2VQYWdlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBiaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZy
YW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIEZyYW1lSWRlbnRpZmllciB0YXJnZXQsIGNvbnN0
IHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhVG9rZW4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3Qgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBpbnQpPiYmKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChGcmFtZUlkZW50
aWZpZXIgdGFyZ2V0LCBJbnRQb2ludCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmJpbmRSZW1v
dGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmb2N1cygp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdW5mb2N1cygpID0gMDsKICAgICB2aXJ0dWFsIH5SZW1v
dGVGcmFtZUNsaWVudCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4
IDg0ZmM0MTllNTljYS4uNDJlZWU2NmFiMTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNs
aWVudC5oCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnQWN0aW9ucy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9yQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9G
b2N1c0RpcmVjdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVJZGVudGlmaWVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9JbnB1dE1vZGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhQ29u
dHJvbHNDb250ZXh0TWVudUl0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+
CkBAIC0zMTgsNyArMzE5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlVW5k
b1JlZG8oVW5kb09yUmVkbykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aGVlbEV2ZW50V2FzTm90
SGFuZGxlZEJ5V2ViQ29yZShjb25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50JikgPSAwOwogI2lmIFBM
QVRGT1JNKENPQ09BKQotICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rv
a2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChzdGQ6OnNwYW48Y29uc3Qg
dWludDhfdD4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgcGlkX3QpID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgZXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxl
Y3RvcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTZWN1cmVJbnB1dFN0YXRlKCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCByZXNldFNlY3VyZUlucHV0U3RhdGUoKSA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKaW5kZXggMDUw
MzA4NjM5MWZiLi4zZTNiODE5NWQwNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKQEAgLTU0NSw3ICs1NDUsNyBAQCB2b2lkIFByb3Zp
c2lvbmFsUGFnZVByb3h5OjpyZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFp
bkZyYW1lKGNvbnN0CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotdm9pZCBQcm92aXNp
b25hbFBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6
c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhKQordm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6cmVn
aXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90
PiBkYXRhLCBGcmFtZUlkZW50aWZpZXIpCiB7CiAgICAgbV9hY2Nlc3NpYmlsaXR5VG9rZW4gPSBW
ZWN0b3IoZGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92
aXNpb25hbFBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQ
YWdlUHJveHkuaAppbmRleCBkZWVjZDc2YTIwMjQuLmQwYjdlY2NlZWZkMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCkBAIC0xNzIsNyArMTcy
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3Vt
ZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKLSAg
ICB2b2lkIHJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29u
c3QgdWludDhfdD4pOworICAgIHZvaWQgcmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRv
a2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsK
ICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgIHZvaWQgYmlu
ZEFjY2Vzc2liaWxpdHlUcmVlKGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJGcmFtZVByb3h5LmNwcAppbmRleCBmMmZjOGE1NGQ4ODMuLjIzMDMwN2ExNzRlYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKQEAgLTQ1LDYgKzQ1LDcg
QEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYlBhc3RlYm9hcmRQcm94eS5oIgorI2luY2x1ZGUgIldlYlBy
b2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAi
V2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIldlYnNpdGVQb2xpY2llc0RhdGEuaCIKQEAg
LTE4NCw2ICsxODUsMTQgQEAgdm9pZCBXZWJGcmFtZVByb3h5OjpuYXZpZ2F0ZVNlcnZpY2VXb3Jr
ZXJDbGllbnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dEkKICAgICB9KTsKIH0KIAor
dm9pZCBXZWJGcmFtZVByb3h5OjpiaW5kQWNjZXNzaWJpbGl0eUZyYW1lV2l0aERhdGEoc3RkOjpz
cGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCit7CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6QmluZEFjY2Vz
c2liaWxpdHlGcmFtZVdpdGhEYXRhKG1fZnJhbWVJRCwgZGF0YSkpOworfQorCiB2b2lkIFdlYkZy
YW1lUHJveHk6OmxvYWRVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIp
CiB7CiAgICAgaWYgKCFtX3BhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJGcmFtZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5
LmgKaW5kZXggYjBkYWViMGU2NGZjLi43MTViYjgwYmFiNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJGcmFtZVByb3h5LmgKQEAgLTE3MCw2ICsxNzAsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCByZW1vdGVQcm9jZXNzRGlkVGVybWluYXRlKCk7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4gd2ViUGFnZUlESW5DdXJyZW50UHJvY2VzcygpOwogICAgIHZvaWQg
bm90aWZ5UGFyZW50T2ZMb2FkQ29tcGxldGlvbihXZWJQcm9jZXNzUHJveHkmKTsKKyAgICB2b2lk
IHJlbW92ZVJlbW90ZVBhZ2VzRm9yU3VzcGVuc2lvbigpOworICAgIHZvaWQgYmluZEFjY2Vzc2li
aWxpdHlGcmFtZVdpdGhEYXRhKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Pik7CiAKICAgICBib29s
IGlzRm9jdXNlZCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAppbmRleCA0NmMyMTQzYTk0YWIuLmYzNzExZTg1NzIxNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMjk1LDggKzEyOTUsMTIgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnN3YXBUb1Byb3Zpc2lvbmFsUGFnZShzdGQ6OnVuaXF1ZV9wdHI8UHJvdmlzaW9u
YWxQYWdlUHJveHk+IHAKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGF1dG8gYWNjZXNzaWJp
bGl0eVRva2VuID0gcHJvdmlzaW9uYWxQYWdlLT50YWtlQWNjZXNzaWJpbGl0eVRva2VuKCk7Ci0g
ICAgaWYgKCFhY2Nlc3NpYmlsaXR5VG9rZW4uaXNFbXB0eSgpKQotICAgICAgICByZWdpc3Rlcldl
YlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oeyBhY2Nlc3NpYmlsaXR5VG9rZW4uZGF0YSgpLCBh
Y2Nlc3NpYmlsaXR5VG9rZW4uc2l6ZSgpIH0pOworICAgIGlmICghYWNjZXNzaWJpbGl0eVRva2Vu
LmlzRW1wdHkoKSkgeworICAgICAgICByZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9r
ZW4oeyBhY2Nlc3NpYmlsaXR5VG9rZW4uZGF0YSgpLCBhY2Nlc3NpYmlsaXR5VG9rZW4uc2l6ZSgp
IH0sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciB7CisgICAgICAgICAgICBPYmplY3RJZGVudGlm
aWVyPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllclR5cGU+KDApLAorICAgICAgICAgICAgT2JqZWN0
SWRlbnRpZmllcjxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllclR5cGU+KDApCisgICAgICAgIH0p
OworICAgIH0KICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAg
IGF1dG8gYWNjZXNzaWJpbGl0eVBsdWdJRCA9IHByb3Zpc2lvbmFsUGFnZS0+YWNjZXNzaWJpbGl0
eVBsdWdJRCgpOwpAQCAtMTM3NDQsNiArMTM3NDgsMjIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmFk
ZENvbnNvbGVNZXNzYWdlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBNZXNzYWdlU291cmNlIG1l
c3MKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IGZyYW1l
SUQsIG1lc3NhZ2VTb3VyY2UsIG1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgY29yZUlkZW50aWZpZXIg
fSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpiaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1l
cyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBjb25zdCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YVRva2VuLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgaW50KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luY1RvUHJvY2Vzc0NvbnRhaW5p
bmdGcmFtZShmcmFtZUlELCBNZXNzYWdlczo6V2ViUGFnZTo6QmluZFJlbW90ZUFjY2Vzc2liaWxp
dHlGcmFtZXMocHJvY2Vzc0lkZW50aWZpZXIsIGZyYW1lSUQsIGRhdGFUb2tlbikpOworICAgIGlm
ICghc2VuZFJlc3VsdC5zdWNjZWVkZWQoKSkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKHsgfSwgMCk7CisKKyAgICBhdXRvIFtmcmFtZURhdGFUb2tlbiwgZnJhbWVQcm9jZXNzSWRl
bnRpZmllcl0gPSBzZW5kUmVzdWx0LnRha2VSZXBseSgpOworCisgICAgY29tcGxldGlvbkhhbmRs
ZXIoZnJhbWVEYXRhVG9rZW4sIGZyYW1lUHJvY2Vzc0lkZW50aWZpZXIpOworfQorCit2b2lkIFdl
YlBhZ2VQcm94eTo6dXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpJbnRQb2ludCBvZmZzZXQpCit7Cisg
ICAgc2VuZFRvUHJvY2Vzc0NvbnRhaW5pbmdGcmFtZShmcmFtZUlELCBNZXNzYWdlczo6V2ViUGFn
ZTo6VXBkYXRlUmVtb3RlUGFnZUFjY2Vzc2liaWxpdHlPZmZzZXQoZnJhbWVJRCwgb2Zmc2V0KSk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgV0VCUEFHRVBST1hZX1JFTEVB
U0VfTE9HCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGNjODZkZGM2
YTViZi4uNzAzNDhjNmY2NjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aApAQCAtMTM1NSw3ICsxMzU1LDcgQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgLy8gQ2FsbGVkIGJ5IHRoZSB3ZWIgcHJvY2VzcyB0aHJvdWdoIGEgbWVzc2FnZS4KLSAgICB2
b2lkIHJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3Qg
dWludDhfdD4pOworICAgIHZvaWQgcmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vu
KHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAg
ICAvLyBDYWxsZWQgYnkgdGhlIFVJIHByb2Nlc3Mgd2hlbiBpdCBpcyByZWFkeSB0byBzZW5kIGl0
cyB0b2tlbnMgdG8gdGhlIHdlYiBwcm9jZXNzLgogICAgIHZvaWQgcmVnaXN0ZXJVSVByb2Nlc3NB
Y2Nlc3NpYmlsaXR5VG9rZW5zKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBlbGVtZW50VG9rZW4s
IHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiB3aW5kb3dUb2tlbik7CiAgICAgdm9pZCByZXBsYWNl
U2VsZWN0aW9uV2l0aFBhc3RlYm9hcmREYXRhKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywg
c3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKQEAgLTI5NzgsNiArMjk3OCw4IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBmb2N1c1JlbW90ZUZyYW1lKElQQzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllcik7CiAgICAgdm9pZCBwb3N0TWVzc2FnZVRvUmVtb3RlKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciBzb3VyY2UsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIgdGFyZ2V0LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YT4gdGFyZ2V0T3JpZ2luLCBjb25zdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3Nh
Z2VQb3J0cyYpOwogICAgIHZvaWQgcmVuZGVyVHJlZUFzVGV4dChXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIsIHNpemVfdCBiYXNlSW5kZW50LCBPcHRpb25TZXQ8V2ViQ29yZTo6UmVuZGVyQXNUZXh0
RmxhZz4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmKTsKKyAgICB2b2lkIGJp
bmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YVRva2VuLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgaW50KT4mJik7
CisgICAgdm9pZCB1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpJbnRQb2ludCk7CiAKICAgICB2b2lkIHNldFRleHRJ
bmRpY2F0b3JGcm9tRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpUZXh0
SW5kaWNhdG9yRGF0YSYmLCB1aW50NjRfdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA0OTM4NjI2YmY4YTIuLmE1NDJmMTc2
YjU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgpAQCAtMzI0LDcgKzMyNCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAg
ICAgRXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2VsZWN0b3IoU3RyaW5nIHNlbGVjdG9yKSAtPiAoYm9v
bCBoYW5kbGVkKSBTeW5jaHJvbm91cwogCiAgICAgIyBSZW1vdGUgYWNjZXNzaWJpbGl0eSBtZXNz
YWdlcwotICAgIFJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48
Y29uc3QgdWludDhfdD4gZGF0YSkKKyAgICBSZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5
VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEsIFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciBmcmFtZUlEKQogCiAgICAgIyBTcGVlY2ggbWVzc2FnZXMKICAgICBHZXRJc1NwZWFraW5n
KCkgLT4gKGJvb2wgaXNTcGVha2luZykgU3luY2hyb25vdXMKQEAgLTYzMCw0ICs2MzAsNiBAQCBt
ZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIEZvY3VzUmVtb3RlRnJhbWUoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCiAgICAgUG9zdE1lc3NhZ2VUb1JlbW90ZShXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIgc291cmNlLCBTdHJpbmcgc291cmNlT3JpZ2luLCBXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgdGFyZ2V0LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YT4gdGFyZ2V0T3JpZ2luLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdl
UG9ydHMgbWVzc2FnZSkKICAgICBSZW5kZXJUcmVlQXNUZXh0KFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBzaXplX3QgYmFzZUluZGVudCwgT3B0aW9uU2V0PFdlYkNvcmU6OlJl
bmRlckFzVGV4dEZsYWc+IGJlaGF2aW9yKSAtPiAoU3RyaW5nIHJlbmRlclRyZWVEdW1wKSBTeW5j
aHJvbm91cworICAgIEJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRl
bnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0ZDo6c3Bhbjxjb25z
dCB1aW50OF90PiBkYXRhVG9rZW4pIC0+IChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gdG9rZW4s
IGludCBwcm9jZXNzSWRlbnRpZmllcikgU3luY2hyb25vdXMKKyAgICBVcGRhdGVSZW1vdGVGcmFt
ZUFjY2Vzc2liaWxpdHlPZmZzZXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdl
YkNvcmU6OkludFBvaW50IG9mZnNldCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggMTBjNGY2YWUxMjUwLi42Mzg4Y2I0NjcyYzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5o
CkBAIC0xMTAsNyArMTEwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyQWxsRWRpdENvbW1h
bmRzKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBjYW5VbmRvUmVkbyhVbmRvT3JSZWRvKSBvdmVycmlk
ZTsKICAgICB2b2lkIGV4ZWN1dGVVbmRvUmVkbyhVbmRvT3JSZWRvKSBvdmVycmlkZTsKLSAgICB2
b2lkIGFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChzdGQ6OnNwYW48Y29uc3Qg
dWludDhfdD4pIG92ZXJyaWRlOworICAgIHZvaWQgYWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tl
blJlY2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyLCBwaWRfdCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBleGVjdXRlU2F2ZWRDb21tYW5kQnlTZWxl
Y3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9yKSBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZVNl
Y3VyZUlucHV0U3RhdGUoKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc2V0U2VjdXJlSW5wdXRTdGF0
ZSgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Bh
Z2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLm1tCmluZGV4IGNiMjNmNDk3NGE2Yi4uYjVhZGRkY2UyM2ZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC0zODks
NyArMzg5LDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZXhlY3V0ZVVuZG9SZWRvKFVuZG9PclJl
ZG8gdW5kb09yUmVkbykKICAgICByZXR1cm4gKHVuZG9PclJlZG8gPT0gVW5kb09yUmVkbzo6VW5k
bykgPyBbW2NvbnRlbnRWaWV3KCkgdW5kb01hbmFnZXJdIHVuZG9dIDogW1tjb250ZW50Vmlldygp
IHVuZG9NYW5hZ2VyXSByZWRvXTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6YWNjZXNzaWJp
bGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRh
KQordm9pZCBQYWdlQ2xpZW50SW1wbDo6YWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2Vp
dmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIHBpZF90KQogewogICAgIE5TRGF0YSAqcmVtb3RlVG9rZW4gPSBbTlNEYXRhIGRhdGFXaXRo
Qnl0ZXM6ZGF0YS5kYXRhKCkgbGVuZ3RoOmRhdGEuc2l6ZSgpXTsKICAgICBbY29udGVudFZpZXco
KSBfc2V0QWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlbjpyZW1vdGVUb2tlbl07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCA1YjEwZjU5
YzY2NjEuLjA0NzNjNzhmY2MxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V2ViUGFnZVByb3h5SU9TLm1tCkBAIC03NjMsOSArNzYzLDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChib29sKQogICAgIG5vdEltcGxlbWVudGVkKCk7
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5
VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6
cmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50
OF90PiBkYXRhLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKIHsKLSAgICBwcm90ZWN0ZWRQYWdl
Q2xpZW50KCktPmFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChkYXRhKTsKKyAg
ICBwYWdlQ2xpZW50KCkuYWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKGRhdGEs
IGZyYW1lSUQpOwogfSAgICAKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9Q
YWdlQ2xpZW50SW1wbE1hYy5oCmluZGV4IGZiNmM2MDc4NjdhZi4uYmY4ZGE0MzBkOGE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaApAQCAt
MTc2LDcgKzE3Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXN0dXJlRXZlbnRXYXNOb3RIYW5k
bGVkQnlXZWJDb3JlKGNvbnN0IE5hdGl2ZVdlYkdlc3R1cmVFdmVudCYpIG92ZXJyaWRlOwogI2Vu
ZGlmCiAKLSAgICB2b2lkIGFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChzdGQ6
OnNwYW48Y29uc3QgdWludDhfdD4pIG92ZXJyaWRlOworICAgIHZvaWQgYWNjZXNzaWJpbGl0eVdl
YlByb2Nlc3NUb2tlblJlY2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBwaWRfdCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIG1ha2VGaXJzdFJl
c3BvbmRlcigpIG92ZXJyaWRlOwogICAgIHZvaWQgYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJz
dFJlc3BvbmRlcigpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1BhZ2VDbGllbnRJbXBsTWFjLm1tCmluZGV4IDA3ODBmMThkYTFjMi4uMDE1MGVjNDUxMmNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1t
CkBAIC01ODEsOSArNTgxLDkgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0VGV4dEluZGljYXRv
ckFuaW1hdGlvblByb2dyZXNzKGZsb2F0IHByb2dyZXNzKQogICAgIG1faW1wbC0+c2V0VGV4dElu
ZGljYXRvckFuaW1hdGlvblByb2dyZXNzKHByb2dyZXNzKTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50
SW1wbDo6YWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKHN0ZDo6c3Bhbjxjb25z
dCB1aW50OF90PiBkYXRhKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6YWNjZXNzaWJpbGl0eVdlYlBy
b2Nlc3NUb2tlblJlY2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhLCBXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgcGlkX3QgcGlkKQogewotICAgIG1faW1wbC0+c2V0
QWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlbihbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5k
YXRhKCkgbGVuZ3RoOmRhdGEuc2l6ZSgpXSk7CisgICAgbV9pbXBsLT5zZXRBY2Nlc3NpYmlsaXR5
V2ViUHJvY2Vzc1Rva2VuKFtOU0RhdGEgZGF0YVdpdGhCeXRlczpkYXRhLmRhdGEoKSBsZW5ndGg6
ZGF0YS5zaXplKCldLCBmcmFtZUlELCBwaWQpOwogfQogICAgIAogdm9pZCBQYWdlQ2xpZW50SW1w
bDo6ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0
JiBsYXllclRyZWVDb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQ
YWdlUHJveHlNYWMubW0KaW5kZXggY2ZiMTBmZGJiNDEzLi44Njk2MTdhMjlkOGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMzA2LDEy
ICszMDYsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3Vw
KGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8mIGRpY3Rpb24KICAgICBwcm90ZWN0ZWRQYWdlQ2xp
ZW50KCktPmRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKGRpY3Rpb25hcnlQb3B1cEluZm8pOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRv
a2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OnJl
Z2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhf
dD4gZGF0YSwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgcHJvdGVjdGVkUGFnZUNsaWVu
dCgpLT5hY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoZGF0YSk7CisgICAgcHJv
dGVjdGVkUGFnZUNsaWVudCgpLT5hY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQo
ZGF0YSwgZnJhbWVJRCwgbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKS0+cmVtb3RlUHJvY2Vzc0lE
KCkpOwogfSAgICAKIAogdm9pZCBXZWJQYWdlUHJveHk6Om1ha2VGaXJzdFJlc3BvbmRlcigpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3SW1wbC5oCmluZGV4IDAzZGZkYWVlMTUz
Yy4uNWEyZTEyOWZkYzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0lt
cGwuaApAQCAtNDQ4LDcgKzQ0OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElnbm9yZXNNb3Vz
ZURyYWdnZWRFdmVudHMoYm9vbCk7CiAgICAgYm9vbCBpZ25vcmVzTW91c2VEcmFnZ2VkRXZlbnRz
KCkgY29uc3QgeyByZXR1cm4gbV9pZ25vcmVzTW91c2VEcmFnZ2VkRXZlbnRzOyB9CiAKLSAgICB2
b2lkIHNldEFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW4oTlNEYXRhICopOworICAgIHZvaWQg
c2V0QWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlbihOU0RhdGEgKiwgV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBwaWRfdCk7CiAgICAgdm9pZCBhY2Nlc3NpYmlsaXR5UmVnaXN0ZXJVSVByb2Nl
c3NUb2tlbnMoKTsKICAgICB2b2lkIHVwZGF0ZVJlbW90ZUFjY2Vzc2liaWxpdHlSZWdpc3RyYXRp
b24oYm9vbCByZWdpc3RlclByb2Nlc3MpOwogICAgIGlkIGFjY2Vzc2liaWxpdHlGb2N1c2VkVUlF
bGVtZW50KCk7CkBAIC05MjcsNiArOTI3LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfRU5ECiAgICAgYm9vbCBtX2FsbG93c01hZ25pZmljYXRpb24geyBmYWxzZSB9OwogCiAgICAg
UmV0YWluUHRyPE5TQWNjZXNzaWJpbGl0eVJlbW90ZVVJRWxlbWVudD4gbV9yZW1vdGVBY2Nlc3Np
YmlsaXR5Q2hpbGQ7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IG1fcmVtb3Rl
QWNjZXNzaWJpbGl0eUZyYW1lQ2FjaGU7CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2U+IG1f
cHJvbWlzZWRJbWFnZTsKICAgICBTdHJpbmcgbV9wcm9taXNlZEZpbGVuYW1lOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJbXBsLm1tCmluZGV4IDViZGUxMTE2Mjc5MC4uYTRi
MzA3ZDc2ZTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmll
d0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJbXBsLm1t
CkBAIC0zNDgxLDEwICszNDgxLDEyIEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldElnbm9yZXNNb3Vz
ZURyYWdnZWRFdmVudHMoYm9vbCBpZ25vcmVzTW91c2VEcmFnZ2VkRXZlbnRzKQogICAgIG1faWdu
b3Jlc01vdXNlRHJhZ2dlZEV2ZW50cyA9IGlnbm9yZXNNb3VzZURyYWdnZWRFdmVudHM7CiB9CiAK
LXZvaWQgV2ViVmlld0ltcGw6OnNldEFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW4oTlNEYXRh
ICpkYXRhKQordm9pZCBXZWJWaWV3SW1wbDo6c2V0QWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tl
bihOU0RhdGEgKmRhdGEsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBwaWRfdCBw
aWQpCiB7Ci0gICAgbV9yZW1vdGVBY2Nlc3NpYmlsaXR5Q2hpbGQgPSBkYXRhLmxlbmd0aCA/IGFk
b3B0TlMoW1tOU0FjY2Vzc2liaWxpdHlSZW1vdGVVSUVsZW1lbnQgYWxsb2NdIGluaXRXaXRoUmVt
b3RlVG9rZW46ZGF0YV0pIDogbmlsOwotICAgIHVwZGF0ZVJlbW90ZUFjY2Vzc2liaWxpdHlSZWdp
c3RyYXRpb24odHJ1ZSk7CisgICAgaWYgKHBpZCA9PSBtX3BhZ2UtPnByb2Nlc3MoKS5wcm9jZXNz
SUQoKSkgeworICAgICAgICBtX3JlbW90ZUFjY2Vzc2liaWxpdHlDaGlsZCA9IGRhdGEubGVuZ3Ro
ID8gYWRvcHROUyhbW05TQWNjZXNzaWJpbGl0eVJlbW90ZVVJRWxlbWVudCBhbGxvY10gaW5pdFdp
dGhSZW1vdGVUb2tlbjpkYXRhXSkgOiBuaWw7CisgICAgICAgIHVwZGF0ZVJlbW90ZUFjY2Vzc2li
aWxpdHlSZWdpc3RyYXRpb24odHJ1ZSk7CisgICAgfQogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjp1
cGRhdGVSZW1vdGVBY2Nlc3NpYmlsaXR5UmVnaXN0cmF0aW9uKGJvb2wgcmVnaXN0ZXJQcm9jZXNz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDdkMmE0MjY1
ZmQ1Yy4uZjNmNzNmMzY3ZWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGll
bnQuY3BwCkBAIC0xODA3LDYgKzE4MDcsMTIgQEAgdm9pZCBXZWJMb2NhbEZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaFdpbGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0ZW4KIAog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIAorV2ViQ29yZTo6SW50UG9pbnQgV2ViTG9jYWxGcmFt
ZUxvYWRlckNsaWVudDo6YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCkKK3sKKyAgICBS
ZWZQdHIgd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICByZXR1cm4gd2ViUGFnZSA/IHdl
YlBhZ2UtPmFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCgpIDogSW50UG9pbnQoKTsKK30K
KwogUmVtb3RlQVhPYmplY3RSZWYgV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudDo6YWNjZXNzaWJp
bGl0eVJlbW90ZU9iamVjdCgpCiB7CiAgICAgUmVmUHRyIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA4OGM4Y2M1Y2I3
MmUuLjlmM2I2N2YwZmNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudC5o
CkBAIC0yNDAsNiArMjQwLDcgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IFJlbW90ZUFYT2JqZWN0UmVmIGFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSBmaW5hbDsKKyAg
ICBXZWJDb3JlOjpJbnRQb2ludCBhY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKSBmaW5h
bDsKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQogICAgIHZvaWQgc2V0
QVhJc29sYXRlZFRyZWVSb290KFdlYkNvcmU6OkFYQ29yZU9iamVjdCopIGZpbmFsOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UmVtb3RlRnJhbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlJlbW90ZUZyYW1lQ2xpZW50LmNwcAppbmRleCA4Y2JmZjJjOWI4YzkuLmEyZjA5
NDhkNDMxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlJlbW90ZUZyYW1lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuY3BwCkBAIC05Niw2ICs5Niwz
OCBAQCBTdHJpbmcgV2ViUmVtb3RlRnJhbWVDbGllbnQ6OnJlbmRlclRyZWVBc1RleHQoc2l6ZV90
IGJhc2VJbmRlbnQsIE9wdGlvblNldDxSZW5kZQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3Zv
aWQgV2ViUmVtb3RlRnJhbWVDbGllbnQ6OnVuYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMo
aW50IHByb2Nlc3NJZGVudGlmaWVyKQoreworICAgIC8vIE1ha2Ugc3VyZSBBcHBLaXQgc3lzdGVt
IGtub3dzIGFib3V0IG91ciByZW1vdGUgVUkgcHJvY2VzcyBzdGF0dXMgbm93LgorICAgIGlmIChS
ZWZQdHIgcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgcGFnZS0+YWNjZXNzaWJpbGl0
eU1hbmFnZVJlbW90ZUVsZW1lbnRTdGF0dXMoZmFsc2UsIHByb2Nlc3NJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBXZWJSZW1vdGVGcmFtZUNsaWVudDo6dXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmls
aXR5T2Zmc2V0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpJbnRQ
b2ludCBvZmZzZXQpCit7CisgICAgaWYgKFJlZlB0ciBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKQor
ICAgICAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlVwZGF0ZVJlbW90ZUZy
YW1lQWNjZXNzaWJpbGl0eU9mZnNldChmcmFtZUlELCBvZmZzZXQpKTsKK30KKwordm9pZCBXZWJS
ZW1vdGVGcmFtZUNsaWVudDo6YmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nl
c3NJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3Qgc3Rk
OjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGFUb2tlbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChz
dGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIGludCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgUmVmUHRyIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKSB7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiB7IH0sIDApOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBzZW5kUmVzdWx0ID0gcGFnZS0+c2Vu
ZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFt
ZXMocHJvY2Vzc0lkZW50aWZpZXIsIGZyYW1lSUQsIGRhdGFUb2tlbikpOworICAgIGlmICghc2Vu
ZFJlc3VsdC5zdWNjZWVkZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBbcmVzdWx0
VG9rZW4sIHByb2Nlc3NJZGVudGlmaWVyUmVzdWx0XSA9IHNlbmRSZXN1bHQudGFrZVJlcGx5KCk7
CisKKyAgICAvLyBNYWtlIHN1cmUgQXBwS2l0IHN5c3RlbSBrbm93cyBhYm91dCBvdXIgcmVtb3Rl
IFVJIHByb2Nlc3Mgc3RhdHVzIG5vdy4KKyAgICBwYWdlLT5hY2Nlc3NpYmlsaXR5TWFuYWdlUmVt
b3RlRWxlbWVudFN0YXR1cyh0cnVlLCBwcm9jZXNzSWRlbnRpZmllclJlc3VsdCk7CisgICAgY29t
cGxldGlvbkhhbmRsZXIocmVzdWx0VG9rZW4sIHByb2Nlc3NJZGVudGlmaWVyUmVzdWx0KTsKK30K
Kwogdm9pZCBXZWJSZW1vdGVGcmFtZUNsaWVudDo6YnJvYWRjYXN0RnJhbWVSZW1vdmFsVG9PdGhl
clByb2Nlc3NlcygpCiB7CiAgICAgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmJyb2FkY2FzdEZyYW1l
UmVtb3ZhbFRvT3RoZXJQcm9jZXNzZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90ZUZyYW1lQ2xpZW50LmgKaW5k
ZXggNjI2ZTA1YzNlODhiLi5jODg5ZWI3ZTVmYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVu
dC5oCkBAIC00OCw2ICs0OCwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1Jl
bW90ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgc291cmNlLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZU9yaWdpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHRhcmdldCwgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IHRhcmdldE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6
TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmKSBmaW5hbDsKICAgICB2b2lkIGNoYW5nZUxvY2F0aW9u
KFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3QmJikgZmluYWw7CiAgICAgU3RyaW5nIHJlbmRlclRy
ZWVBc1RleHQoc2l6ZV90IGJhc2VJbmRlbnQsIE9wdGlvblNldDxXZWJDb3JlOjpSZW5kZXJBc1Rl
eHRGbGFnPikgZmluYWw7CisgICAgdm9pZCBiaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhp
bnQgcHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgc3RkOjpzcGFu
PGNvbnN0IHVpbnQ4X3Q+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6c3Bhbjxjb25zdCB1
aW50OF90PiwgaW50KT4mJikgZmluYWw7CisgICAgdm9pZCB1bmJpbmRSZW1vdGVBY2Nlc3NpYmls
aXR5RnJhbWVzKGludCkgZmluYWw7CisgICAgdm9pZCB1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2li
aWxpdHlPZmZzZXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpJbnRQb2ludCkg
ZmluYWw7CisKICAgICB2b2lkIGJyb2FkY2FzdEZyYW1lUmVtb3ZhbFRvT3RoZXJQcm9jZXNzZXMo
KSBmaW5hbDsKICAgICB2b2lkIGNsb3NlUGFnZSgpIGZpbmFsOwogICAgIHZvaWQgZm9jdXMoKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29h
L1dlYlBhZ2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29h
L1dlYlBhZ2VDb2NvYS5tbQppbmRleCBhZTQzZjFhNDY5OGIuLmVmZjY0YTMwMWY0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VD
b2NvYS5tbQpAQCAtNzcsNiArNzcsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9VVElSZWdpc3RyeS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9VVElVdGlsaXRpZXMuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29j
b2EvTGF1bmNoU2VydmljZXNTUEkuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNBY2Nlc3Np
YmlsaXR5U1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KICNp
bXBvcnQgPHd0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaD4KIApAQCAtNDA0LDEwICs0MDUsNDYg
QEAgdm9pZCBXZWJQYWdlOjpjbGVhckRpY3RhdGlvbkFsdGVybmF0aXZlcyhWZWN0b3I8RGljdGF0
aW9uQ29udGV4dD4mJiBjb250ZXh0cykKICAgICB9LCBEb2N1bWVudE1hcmtlcjo6VHlwZTo6RGlj
dGF0aW9uQWx0ZXJuYXRpdmVzKTsKIH0KIAotdm9pZCBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5VHJh
bnNmZXJSZW1vdGVUb2tlbihSZXRhaW5QdHI8TlNEYXRhPiByZW1vdGVUb2tlbikKK3ZvaWQgV2Vi
UGFnZTo6YWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oUmV0YWluUHRyPE5TRGF0YT4g
cmVtb3RlVG9rZW4sIEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogewogICAgIHN0ZDo6c3BhbiBk
YXRhVG9rZW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oW3JlbW90ZVRva2VuIGJ5
dGVzXSksIFtyZW1vdGVUb2tlbiBsZW5ndGhdKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihkYXRhVG9rZW4pKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vz
c2liaWxpdHlUb2tlbihkYXRhVG9rZW4sIGZyYW1lSUQpKTsKK30KKwordm9pZCBXZWJQYWdlOjph
Y2Nlc3NpYmlsaXR5TWFuYWdlUmVtb3RlRWxlbWVudFN0YXR1cyhib29sIHJlZ2lzdGVyU3RhdHVz
LCBpbnQgcHJvY2Vzc0lkZW50aWZpZXIpCit7CisgICAgaWYgKHJlZ2lzdGVyU3RhdHVzKQorICAg
ICAgICBbTlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlFbGVtZW50IHJlZ2lzdGVyUmVtb3RlVUlQcm9j
ZXNzSWRlbnRpZmllcjpwcm9jZXNzSWRlbnRpZmllcl07CisgICAgZWxzZQorICAgICAgICBbTlNB
Y2Nlc3NpYmlsaXR5UmVtb3RlVUlFbGVtZW50IHVucmVnaXN0ZXJSZW1vdGVVSVByb2Nlc3NJZGVu
dGlmaWVyOnByb2Nlc3NJZGVudGlmaWVyXTsKK30KKwordm9pZCBXZWJQYWdlOjpiaW5kUmVtb3Rl
QWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YVRva2VuLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgaW50KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBSZWZQdHIgd2ViRnJhbWUgPSBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKTsKKyAgICBpZiAoIXdlYkZyYW1lKSB7CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRs
ZXIoeyB9LCAwKTsKKyAgICB9CisKKyAgICBSZWZQdHIgY29yZUxvY2FsRnJhbWUgPSB3ZWJGcmFt
ZS0+Y29yZUxvY2FsRnJhbWUoKTsKKyAgICBpZiAoIWNvcmVMb2NhbEZyYW1lKSB7CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIo
eyB9LCAwKTsKKyAgICB9CisKKyAgICBhdXRvKiByZW5kZXJlciA9IGNvcmVMb2NhbEZyYW1lLT5j
b250ZW50UmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKSB7CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9LCAwKTsK
KyAgICB9CisKKyAgICByZWdpc3RlclJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eVRva2Vucyhwcm9j
ZXNzSWRlbnRpZmllciwgZGF0YVRva2VuKTsKKworICAgIC8vIEdldCBvdXIgcmVtb3RlIHRva2Vu
IGRhdGEgYW5kIHNlbmQgYmFjayB0byB0aGUgUmVtb3RlRnJhbWUuCisgICAgYXV0byByZW1vdGVU
b2tlbiA9IGFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKTsKKyAgICBzdGQ6OnNwYW4gcmVt
b3RlRGF0YVRva2VuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtyZW1vdGVUb2tl
biBieXRlc10pLCBbcmVtb3RlVG9rZW4gbGVuZ3RoXSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIo
cmVtb3RlRGF0YVRva2VuLCBnZXRwaWQoKSk7CiB9CiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDA5YjNlN2U1
OTU3NS4uZWM4ZjUyZTRhYzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCkBAIC02NzEsNiArNjcxLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFySGlz
dG9yeSgpOwogCiAgICAgdm9pZCBhY2Nlc3NpYmlsaXR5U2V0dGluZ3NEaWRDaGFuZ2UoKTsKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIGFjY2Vzc2liaWxpdHlNYW5hZ2VSZW1vdGVFbGVt
ZW50U3RhdHVzKGJvb2wsIGludCk7CisjZW5kaWYKKwogICAgIHZvaWQgc2NyZWVuUHJvcGVydGll
c0RpZENoYW5nZSgpOwogCiAgICAgdm9pZCBzY2FsZVBhZ2UoZG91YmxlIHNjYWxlLCBjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgb3JpZ2luKTsKQEAgLTEwNDMsNyArMTA0NywxMSBAQCBwdWJsaWM6
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVBY2Nlc3Np
YmlsaXR5KCk7CiAgICAgdm9pZCByZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMo
c3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGVsZW1lbnRUb2tlbiwgc3RkOjpzcGFuPGNvbnN0IHVp
bnQ4X3Q+IHdpbmRvd1Rva2VuKTsKKyAgICB2b2lkIHJlZ2lzdGVyUmVtb3RlRnJhbWVBY2Nlc3Np
YmlsaXR5VG9rZW5zKHBpZF90LCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pOwogICAgIFdLQWNj
ZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QqIGFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKTsKKyAg
ICBXZWJDb3JlOjpJbnRQb2ludCBhY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKTsKKyAg
ICB2b2lkIGNyZWF0ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudChwaWRfdCk7CisgICAgdm9pZCB1
cGRhdGVSZW1vdGVQYWdlQWNjZXNzaWJpbGl0eU9mZnNldChXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIFdlYkNvcmU6OkludFBvaW50KTsKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRF
RF9UUkVFKQogICAgIHZvaWQgY2FjaGVBWFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9p
bnQmKTsKICAgICB2b2lkIGNhY2hlQVhTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKQEAg
LTIwOTQsNyArMjEwMiw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9p
ZCByZXF1ZXN0QWN0aXZlTm93UGxheWluZ1Nlc3Npb25JbmZvKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCwgV2ViQ29yZTo6Tm93UGxheWluZ0luZm8mJik+JiYpOwogICAgIFJldGFpblB0cjxO
U0RhdGE+IGFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSBjb25zdDsKLSAgICB2b2lkIGFj
Y2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKFJldGFpblB0cjxOU0RhdGE+KTsKKyAgICB2
b2lkIGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKFJldGFpblB0cjxOU0RhdGE+LCBX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogI2VuZGlmCiAKICAgICB2b2lkIHNldFNob3VsZERp
c3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cyhib29sIGRpc3BhdGNoKSB7IG1fc2hvdWxkRGlzcGF0
Y2hGYWtlTW91c2VNb3ZlRXZlbnRzID0gZGlzcGF0Y2g7IH0KQEAgLTIyMDQsNiArMjIxMiw5IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIHJlbW90ZVBvc3RNZXNzYWdlKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciBzb3VyY2UsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIgdGFyZ2V0LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YT4mJiB0YXJnZXRPcmlnaW4sIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBv
cnRzJik7CiAgICAgdm9pZCByZW5kZXJUcmVlQXNUZXh0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciwgc2l6ZV90IGJhc2VJbmRlbnQsIE9wdGlvblNldDxXZWJDb3JlOjpSZW5kZXJBc1RleHRGbGFn
PiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYpOworI2lmIFBMQVRGT1JNKENP
Q09BKQorICAgIHZvaWQgYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHN0ZDo6c3Bhbjxjb25zdCB1aW50
OF90PiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIGlu
dCk+JiYpOworI2VuZGlmCiAKICAgICB2b2lkIHJlcXVlc3RUZXh0RXh0cmFjdGlvbihzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4mJiBjb2xsZWN0aW9uUmVjdEluUm9vdFZpZXcsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6VGV4dEV4dHJhY3Rpb246Okl0ZW0mJik+JiYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgppbmRleCBlZDljMDFhYmQxNWYuLjgxN2RlY2Q2ZGNmZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBA
IC00OTIsNiArNDkyLDkgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVp
bnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBXaW5kb3dBbmRW
aWV3RnJhbWVzQ2hhbmdlZChzdHJ1Y3QgV2ViS2l0OjpWaWV3V2luZG93Q29vcmRpbmF0ZXMgY29v
cmRpbmF0ZXMpCiAgICAgU2V0TWFpbkZyYW1lSXNTY3JvbGxhYmxlKGJvb2wgaXNTY3JvbGxhYmxl
KQogICAgIFJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VucyhzdGQ6OnNwYW48Y29u
c3QgdWludDhfdD4gZWxlbWVudFRva2VuLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gd2luZG93
VG9rZW4pCisgICAgQmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVu
dGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RkOjpzcGFuPGNvbnN0
IHVpbnQ4X3Q+IGRhdGFUb2tlbikgLT4gKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiB0b2tlbiwg
aW50IHByb2Nlc3NJZGVudGlmaWVyKSBTeW5jaHJvbm91cworICAgIFVwZGF0ZVJlbW90ZVBhZ2VB
Y2Nlc3NpYmlsaXR5T2Zmc2V0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJD
b3JlOjpJbnRQb2ludCBvZmZzZXQpOworCiAgICAgR2V0U3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZCgpIC0+IChTdHJpbmcgc3RyaW5nVmFsdWUpIFN5bmNocm9ub3VzCiAgICAgR2V0RGF0YVNl
bGVjdGlvbkZvclBhc3RlYm9hcmQoU3RyaW5nIHBhc3RlYm9hcmRUeXBlKSAtPiAoUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyKSBTeW5jaHJvbm91cwogICAgIFJlYWRTZWxlY3Rp
b25Gcm9tUGFzdGVib2FyZChTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChib29sIHJlc3VsdCkg
U3luY2hyb25vdXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0KaW5kZXggYTdmZDcyMzEyN2MwLi4xMGQ5ODhhMzVjOGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBA
IC0yNDMsMTIgKzI0MywxNCBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6ZUFjY2Vz
c2liaWxpdHkoKQogICAgIG1fbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50ID0gYWRvcHROUyhbW1dL
QWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QgYWxsb2NdIGluaXRdKTsKICAgICBbbV9tb2NrQWNj
ZXNzaWJpbGl0eUVsZW1lbnQgc2V0V2ViUGFnZTp0aGlzXTsKIAotICAgIGFjY2Vzc2liaWxpdHlU
cmFuc2ZlclJlbW90ZVRva2VuKGFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSk7CisgICAg
UmVmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUo
KTsKKyAgICBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tlbihhY2Nlc3NpYmlsaXR5UmVt
b3RlVG9rZW5EYXRhKCksIGZyYW1lLmZyYW1lSUQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6cGxh
dGZvcm1SZWluaXRpYWxpemUoKQogewotICAgIGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRv
a2VuKGFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSk7CisgICAgUmVmIGZyYW1lID0gbV9w
YWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBhY2Nlc3Np
YmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tlbihhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCks
IGZyYW1lLmZyYW1lSUQoKSk7CiB9CiAKIFJldGFpblB0cjxOU0RhdGE+IFdlYlBhZ2U6OmFjY2Vz
c2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSBjb25zdApAQCAtNjYyLDYgKzY2NCwxMiBAQCB2b2lk
IFdlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZAogICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiB9CiAKK1dl
YkNvcmU6OkludFBvaW50IFdlYlBhZ2U6OmFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCgp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4geyB9OworfQorCiBXS0FjY2Vz
c2liaWxpdHlXZWJQYWdlT2JqZWN0KiBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0
KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2Vi
UGFnZU9iamVjdEJhc2UuaAppbmRleCAzOWU5MGUzYzg5NWUuLjQ5NzAwNzBhNDU1ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0
eVdlYlBhZ2VPYmplY3RCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmgKQEAgLTQ1LDYgKzQ1LDgg
QEAgY2xhc3MgQVhDb3JlT2JqZWN0OwogICAgIFdlYkNvcmU6OkludFNpemUgbV9zaXplIFdURl9H
VUFSREVEX0JZX0xPQ0sobV9jYWNoZUxvY2spOwogICAgIFRocmVhZFNhZmVXZWFrUHRyPFdlYkNv
cmU6OkFYQ29yZU9iamVjdD4gbV9pc29sYXRlZFRyZWVSb290OwogI2VuZGlmCisKKyAgICBXZWJD
b3JlOjpJbnRQb2ludCBtX3JlbW90ZUZyYW1lT2Zmc2V0OwogICAgIFJldGFpblB0cjxpZD4gbV9w
YXJlbnQ7CiAgICAgYm9vbCBtX2hhc01haW5GcmFtZVBsdWdpbjsKIH0KQEAgLTU2LDkgKzU4LDEx
IEBAIGNsYXNzIEFYQ29yZU9iamVjdDsKIC0gKHZvaWQpc2V0SXNvbGF0ZWRUcmVlUm9vdDooTmFr
ZWRQdHI8V2ViQ29yZTo6QVhDb3JlT2JqZWN0Pilyb290OwogI2VuZGlmCiAtICh2b2lkKXNldFJl
bW90ZVBhcmVudDooaWQpcGFyZW50OworLSAodm9pZClzZXRSZW1vdGVGcmFtZU9mZnNldDooV2Vi
Q29yZTo6SW50UG9pbnQpb2Zmc2V0OwogLSAodm9pZClzZXRIYXNNYWluRnJhbWVQbHVnaW46KGJv
b2wpaGFzUGx1Z2luOwogCiAtIChpZClhY2Nlc3NpYmlsaXR5Um9vdE9iamVjdFdyYXBwZXI7CiAt
IChpZClhY2Nlc3NpYmlsaXR5Rm9jdXNlZFVJRWxlbWVudDsKKy0gKFdlYkNvcmU6OkludFBvaW50
KWFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldDsKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VP
YmplY3RCYXNlLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNj
ZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tCmluZGV4IDZmOTk1NDVhZWJmNS4uYmVjOGQ3
M2ZhYTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1t
CkBAIC0zNiw5ICszNiwxMSBAQAogI2ltcG9ydCAiV0tTdHJpbmdDRi5oIgogI2ltcG9ydCA8V2Vi
Q29yZS9BWE9iamVjdENhY2hlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50Lmg+CisjaW1w
b3J0IDxXZWJDb3JlL0ZyYW1lVHJlZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbEZyYW1lLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsRnJhbWVWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Bh
Z2UuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUmVtb3RlRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
U2Nyb2xsVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxiYXIuaD4KIApAQCAtNTcsMTEg
KzU5LDE3IEBAIG5hbWVzcGFjZSBheCA9IFdlYkNvcmU6OkFjY2Vzc2liaWxpdHk7CiAgICAgaWYg
KCFwYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8qIGxvY2FsTWFpbkZy
YW1lID0gZHluYW1pY0Rvd25jYXN0PFdlYkNvcmU6OkxvY2FsRnJhbWU+KHBhZ2UtPm1haW5GcmFt
ZSgpKTsKLSAgICBpZiAoIWxvY2FsTWFpbkZyYW1lIHx8ICFsb2NhbE1haW5GcmFtZS0+ZG9jdW1l
bnQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKGF1dG8qIGxvY2FsTWFpbkZy
YW1lID0gZHluYW1pY0Rvd25jYXN0PFdlYkNvcmU6OkxvY2FsRnJhbWU+KHBhZ2UtPm1haW5GcmFt
ZSgpKSkgeworICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBsb2NhbE1haW5GcmFtZS0+ZG9j
dW1lbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBkb2N1bWVudC0+YXhPYmplY3RDYWNoZSgpOwor
ICAgIH0gZWxzZSBpZiAoYXV0byogcmVtb3RlTWFpbkZyYW1lID0gZHluYW1pY0Rvd25jYXN0PFdl
YkNvcmU6OlJlbW90ZUZyYW1lPihwYWdlLT5tYWluRnJhbWUoKSkpIHsKKyAgICAgICAgYXV0byYg
dHJlZSA9IHJlbW90ZU1haW5GcmFtZS0+dHJlZSgpOworICAgICAgICBhdXRvKiBmaXJzdEZyYW1l
ID0gZHluYW1pY0Rvd25jYXN0PFdlYkNvcmU6OkxvY2FsRnJhbWU+KHRyZWUuZmlyc3RDaGlsZCgp
KTsKKyAgICAgICAgYXV0byogZG9jdW1lbnQgPSBmaXJzdEZyYW1lID8gZmlyc3RGcmFtZS0+ZG9j
dW1lbnQoKSA6IG51bGxwdHI7CisgICAgICAgIHJldHVybiBkb2N1bWVudCA/IGRvY3VtZW50LT5h
eE9iamVjdENhY2hlKCkgOiBudWxscHRyOworICAgIH0KIAotICAgIHJldHVybiBsb2NhbE1haW5G
cmFtZS0+ZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpOworICAgIHJldHVybiBudWxscHRyOwog
fQogCiAtIChpZClhY2Nlc3NpYmlsaXR5UGx1Z2luT2JqZWN0CkBAIC0xNTIsNiArMTYwLDE3IEBA
IG5hbWVzcGFjZSBheCA9IFdlYkNvcmU6OkFjY2Vzc2liaWxpdHk7CiAgICAgbV9oYXNNYWluRnJh
bWVQbHVnaW4gPSBoYXNQbHVnaW47CiB9CiAKKy0gKHZvaWQpc2V0UmVtb3RlRnJhbWVPZmZzZXQ6
KFdlYkNvcmU6OkludFBvaW50KW9mZnNldAoreworICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkp
OworICAgIG1fcmVtb3RlRnJhbWVPZmZzZXQgPSBvZmZzZXQ7Cit9CisKKy0gKFdlYkNvcmU6Oklu
dFBvaW50KWFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldAoreworICAgIHJldHVybiBtX3Jl
bW90ZUZyYW1lT2Zmc2V0OworfQorCiAtICh2b2lkKXNldFJlbW90ZVBhcmVudDooaWQpcGFyZW50
CiB7CiAgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IDk2ZWQ2NGFkYmNmZi4u
NWY5Yjg4MGM4MGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtMTIzLDE2ICsxMjMsMTIgQEAgdm9pZCBXZWJQYWdlOjpw
bGF0Zm9ybUluaXRpYWxpemVBY2Nlc3NpYmlsaXR5KCkKICAgICAvLyBDdXJyZW50bHksIGl0IGlz
IGFsc28gbmVlZGVkIHRvIGFsbG9jYXRlIGFuZCBpbml0aWFsaXplIGFuIE5TQXBwbGljYXRpb24g
b2JqZWN0LgogICAgIFtOU0FwcGxpY2F0aW9uIF9hY2Nlc3NpYmlsaXR5SW5pdGlhbGl6ZV07CiAK
LSAgICBhdXRvIG1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCA9IGFkb3B0TlMoW1tXS0FjY2Vzc2li
aWxpdHlXZWJQYWdlT2JqZWN0IGFsbG9jXSBpbml0XSk7Ci0KICAgICAvLyBHZXQgdGhlIHBpZCBm
b3IgdGhlIHN0YXJ0aW5nIHByb2Nlc3MuCiAgICAgcGlkX3QgcGlkID0gV2ViQ29yZTo6cHJlc2Vu
dGluZ0FwcGxpY2F0aW9uUElEKCk7Ci0gICAgaWYgKFttb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihhY2Nlc3NpYmlsaXR5U2V0UHJlc2VudGVyUHJv
Y2Vzc0lkZW50aWZpZXI6KV0pCi0gICAgICAgIFsoaWQpbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50
LmdldCgpIGFjY2Vzc2liaWxpdHlTZXRQcmVzZW50ZXJQcm9jZXNzSWRlbnRpZmllcjpwaWRdOwot
ICAgIFttb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgc2V0V2ViUGFnZTp0aGlzXTsKLSAgICBtX21v
Y2tBY2Nlc3NpYmlsaXR5RWxlbWVudCA9IFdURk1vdmUobW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50
KTsKLQotICAgIGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKGFjY2Vzc2liaWxpdHlS
ZW1vdGVUb2tlbkRhdGEoKSk7CisgICAgY3JlYXRlTW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50KHBp
ZCk7CisgICAgUmVmUHRyIGxvY2FsTWFpbkZyYW1lID0gZHluYW1pY0Rvd25jYXN0PExvY2FsRnJh
bWU+KG1fcGFnZS0+bWFpbkZyYW1lKCkpOworICAgIGlmIChsb2NhbE1haW5GcmFtZSkKKyAgICAg
ICAgYWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oYWNjZXNzaWJpbGl0eVJlbW90ZVRv
a2VuRGF0YSgpLCBsb2NhbE1haW5GcmFtZS0+ZnJhbWVJRCgpKTsKIAogICAgIC8vIENsb3NlIE1h
Y2ggY29ubmVjdGlvbiB0byBMYXVuY2ggU2VydmljZXMuCiAjaWYgSEFWRShMU19TRVJWRVJfQ09O
TkVDVElPTl9TVEFUVVNfUkVMRUFTRV9OT1RJRklDQVRJT05TX01BU0spCkBAIC0xNDQsOSArMTQw
LDIwIEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplQWNjZXNzaWJpbGl0eSgpCiAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmV2b2tlTGF1bmNoU2VydmljZXNTYW5kYm94RXh0
ZW5zaW9uKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6Y3JlYXRlTW9ja0FjY2Vzc2liaWxpdHlFbGVt
ZW50KHBpZF90IHBpZCkKK3sKKyAgICBhdXRvIG1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCA9IGFk
b3B0TlMoW1tXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0IGFsbG9jXSBpbml0XSk7CisKKyAg
ICBpZiAoW21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKGFjY2Vzc2liaWxpdHlTZXRQcmVzZW50ZXJQcm9jZXNzSWRlbnRpZmllcjopXSkKKyAgICAg
ICAgWyhpZCltb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQuZ2V0KCkgYWNjZXNzaWJpbGl0eVNldFBy
ZXNlbnRlclByb2Nlc3NJZGVudGlmaWVyOnBpZF07CisgICAgW21vY2tBY2Nlc3NpYmlsaXR5RWxl
bWVudCBzZXRXZWJQYWdlOnRoaXNdOworICAgIG1fbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50ID0g
V1RGTW92ZShtb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQpOworfQorCiB2b2lkIFdlYlBhZ2U6OnBs
YXRmb3JtUmVpbml0aWFsaXplKCkKIHsKLSAgICBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVU
b2tlbihhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCkpOworICAgIFJlZiBmcmFtZSA9IG1f
cGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgYWNjZXNz
aWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oYWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0YSgp
LCBmcmFtZS0+ZnJhbWVJRCgpKTsKIH0KIAogUmV0YWluUHRyPE5TRGF0YT4gV2ViUGFnZTo6YWNj
ZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0YSgpIGNvbnN0CkBAIC00NjksMTIgKzQ3NiwyNyBAQCBi
b29sIFdlYlBhZ2U6OnBlcmZvcm1Ob25FZGl0aW5nQmVoYXZpb3JGb3JTZWxlY3Rvcihjb25zdCBT
dHJpbmcmIHNlbGVjdG9yLCBLZXlibwogICAgIHJldHVybiBkaWRQZXJmb3JtQWN0aW9uOwogfQog
Cit2b2lkIFdlYlBhZ2U6OnVwZGF0ZVJlbW90ZVBhZ2VBY2Nlc3NpYmlsaXR5T2Zmc2V0KFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpJbnRQb2ludCBvZmZzZXQpCit7
CisgICAgW2FjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSBzZXRSZW1vdGVGcmFtZU9mZnNldDpv
ZmZzZXRdOworfQorCit2b2lkIFdlYlBhZ2U6OnJlZ2lzdGVyUmVtb3RlRnJhbWVBY2Nlc3NpYmls
aXR5VG9rZW5zKHBpZF90IHBpZCwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGVsZW1lbnRUb2tl
bikKK3sKKyAgICBOU0RhdGEgKmVsZW1lbnRUb2tlbkRhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0
ZXM6ZWxlbWVudFRva2VuLmRhdGEoKSBsZW5ndGg6ZWxlbWVudFRva2VuLnNpemUoKV07CisgICAg
YXV0byByZW1vdGVFbGVtZW50ID0gZWxlbWVudFRva2VuRGF0YS5sZW5ndGggPyBhZG9wdE5TKFtb
TlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlFbGVtZW50IGFsbG9jXSBpbml0V2l0aFJlbW90ZVRva2Vu
OmVsZW1lbnRUb2tlbkRhdGFdKSA6IG5pbDsKKworICAgIGNyZWF0ZU1vY2tBY2Nlc3NpYmlsaXR5
RWxlbWVudChwaWQpOworICAgIFthY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkgc2V0UmVtb3Rl
UGFyZW50OnJlbW90ZUVsZW1lbnQuZ2V0KCldOworfQorCiB2b2lkIFdlYlBhZ2U6OnJlZ2lzdGVy
VUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VucyhzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZWxl
bWVudFRva2VuLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gd2luZG93VG9rZW4pCiB7CiAgICAg
TlNEYXRhICplbGVtZW50VG9rZW5EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmVsZW1lbnRU
b2tlbi5kYXRhKCkgbGVuZ3RoOmVsZW1lbnRUb2tlbi5zaXplKCldOwogICAgIE5TRGF0YSAqd2lu
ZG93VG9rZW5EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOndpbmRvd1Rva2VuLmRhdGEoKSBs
ZW5ndGg6d2luZG93VG9rZW4uc2l6ZSgpXTsKICAgICBhdXRvIHJlbW90ZUVsZW1lbnQgPSBlbGVt
ZW50VG9rZW5EYXRhLmxlbmd0aCA/IGFkb3B0TlMoW1tOU0FjY2Vzc2liaWxpdHlSZW1vdGVVSUVs
ZW1lbnQgYWxsb2NdIGluaXRXaXRoUmVtb3RlVG9rZW46ZWxlbWVudFRva2VuRGF0YV0pIDogbmls
OwogICAgIGF1dG8gcmVtb3RlV2luZG93ID0gd2luZG93VG9rZW5EYXRhLmxlbmd0aCA/IGFkb3B0
TlMoW1tOU0FjY2Vzc2liaWxpdHlSZW1vdGVVSUVsZW1lbnQgYWxsb2NdIGluaXRXaXRoUmVtb3Rl
VG9rZW46d2luZG93VG9rZW5EYXRhXSkgOiBuaWw7CisKICAgICBbcmVtb3RlRWxlbWVudCBzZXRX
aW5kb3dVSUVsZW1lbnQ6cmVtb3RlV2luZG93LmdldCgpXTsKICAgICBbcmVtb3RlRWxlbWVudCBz
ZXRUb3BMZXZlbFVJRWxlbWVudDpyZW1vdGVXaW5kb3cuZ2V0KCldOwogCkBAIC01MTYsNiArNTM4
LDExIEBAIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QqIFdlYlBhZ2U6OmFjY2Vzc2liaWxp
dHlSZW1vdGVPYmplY3QoKQogICAgIHJldHVybiBtX21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudC5n
ZXQoKTsKIH0KIAorV2ViQ29yZTo6SW50UG9pbnQgV2ViUGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90
ZUZyYW1lT2Zmc2V0KCkKK3sKKyAgICByZXR1cm4gW21fbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50
IGFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldF07Cit9CisKICNpZiBFTkFCTEUoQUNDRVNT
SUJJTElUWV9JU09MQVRFRF9UUkVFKQogdm9pZCBXZWJQYWdlOjpjYWNoZUFYUG9zaXRpb24oY29u
c3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgcG9pbnQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaAppbmRleCAwNjE0YmNmN2FmNWMuLmJhODM2ODA2NDUzMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC02NSw2ICs2NSw5IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9TY3JlZW5Qcm9wZXJ0aWVzLmg+CiAjaW5jbHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4K
ICNpbmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgorCitPQkpDX0NMQVNTIE5TTXV0YWJsZURp
Y3Rpb25hcnk7CisKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQpAQCAtODcsNiArOTAsNyBA
QAogI2luY2x1ZGUgIldlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5oIgogI2VuZGlmCiAKKwogbmFt
ZXNwYWNlIEFQSSB7CiBjbGFzcyBPYmplY3Q7CiB9CkBAIC01MTEsNiArNTE1LDkgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHBsYXRmb3JtU2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVsKTsKIAogICAgIHZv
aWQgc2V0RW5oYW5jZWRBY2Nlc3NpYmlsaXR5KGJvb2wpOworI2lmIFBMQVRGT1JNKENPQ09BKQor
ICAgIHZvaWQgYmluZEFjY2Vzc2liaWxpdHlGcmFtZVdpdGhEYXRhKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKKyNlbmRpZgogCiAgICAgdm9pZCBz
dGFydE1lbW9yeVNhbXBsZXIoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IGRvdWJsZSk7CiAgICAgdm9pZCBzdG9wTWVtb3J5U2FtcGxlcigpOwpAQCAtODI2
LDYgKzgzMyw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgSGFzaENvdW50
ZWRTZXQ8U3RyaW5nPiBtX3BlbmRpbmdQYXN0ZWJvYXJkV3JpdGVDb3VudHM7CiAgICAgc3RkOjpv
cHRpb25hbDxhdWRpdF90b2tlbl90PiBtX2F1ZGl0VG9rZW5Gb3JTZWxmOworICAgIFJldGFpblB0
cjxOU011dGFibGVEaWN0aW9uYXJ5PiBtX2FjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZVRva2VuQ2Fj
aGU7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggOTliNDAyYWYxMWNhLi5k
Nzc1ZmU3ZDM4ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCkBAIC02OSw2ICs2OSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVn
YWN5UmVjZWl2ZXIgTm90UmVmQ291bnRlZCB7CiAgICAgU2V0VGV4dENoZWNrZXJTdGF0ZShzdHJ1
Y3QgV2ViS2l0OjpUZXh0Q2hlY2tlclN0YXRlIHRleHRDaGVja2VyU3RhdGUpCiAKICAgICBTZXRF
bmhhbmNlZEFjY2Vzc2liaWxpdHkoYm9vbCBmbGFnKQorICAgIEJpbmRBY2Nlc3NpYmlsaXR5RnJh
bWVXaXRoRGF0YShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RkOjpzcGFuPGNv
bnN0IHVpbnQ4X3Q+IGRhdGEpOwogCiAgICAgR2FyYmFnZUNvbGxlY3RKYXZhU2NyaXB0T2JqZWN0
cygpCiAgICAgU2V0SmF2YVNjcmlwdEdhcmJhZ2VDb2xsZWN0b3JUaW1lckVuYWJsZWQoYm9vbCBl
bmFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJv
Y2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3ND
b2NvYS5tbQppbmRleCBjNTM4NTdmYmUxZDQuLjExNjA2ZTk2Mzk1NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC0yMTMsNiAr
MjEzLDE2IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1TZXRDYWNoZU1vZGVsKENhY2hlTW9k
ZWwpCiB7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzczo6YmluZEFjY2Vzc2liaWxpdHlGcmFtZVdpdGhE
YXRhKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdGQ6OnNwYW48Y29uc3QgdWlu
dDhfdD4gZGF0YSkKK3sKKyAgICBpZiAoIW1fYWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lVG9rZW5D
YWNoZSkKKyAgICAgICAgbV9hY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVUb2tlbkNhY2hlID0gYWRv
cHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKworICAgIGF1dG8gZnJh
bWVJbnQgPSBmcmFtZUlELm9iamVjdCgpLnRvVUludDY0KCk7CisgICAgTlNEYXRhICpuc0RhdGEg
PSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5kYXRhKCkgbGVuZ3RoOmRhdGEuc2l6ZSgpXTsK
KyAgICBbbV9hY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVUb2tlbkNhY2hlIHNldE9iamVjdDpuc0Rh
dGEgZm9yS2V5OkAoZnJhbWVJbnQpXTsKK30KKwogaWQgV2ViUHJvY2Vzczo6YWNjZXNzaWJpbGl0
eUZvY3VzZWRVSUVsZW1lbnQoKQogewogICAgIGF1dG8gcmV0cmlldmVGb2N1c2VkVUlFbGVtZW50
RnJvbU1haW5UaHJlYWQgPSBbXSAoKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAy
MWUyMWYwOGJkNjQuLmI0Y2YyODJjMThjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBA
IC0yMjUsNiArMjI1LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgUmVtb3RlQVhPYmplY3RS
ZWYgYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpIGZpbmFsIHsgcmV0dXJuIDA7IH0KKyAgICBX
ZWJDb3JlOjpJbnRQb2ludCBhY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKSBmaW5hbCB7
IHJldHVybiB7IH07IH0KICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQog
ICAgIHZvaWQgc2V0QVhJc29sYXRlZFRyZWVSb290KFdlYkNvcmU6OkFYQ29yZU9iamVjdCopIGZp
bmFsIHsgfQogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>469897</attachid>
            <date>2024-02-15 14:13:25 -0800</date>
            <delta_ts>2024-02-15 15:57:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-268804-20240215141323.patch</filename>
            <type>text/plain</type>
            <size>116093</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">RnJvbSBlYjFjZDczNGZkYWIwNzY3NWE5ZmJjNDM0MjgxZjhhYTM5ZDdlNjk2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpcyBGbGVpemFjaCA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4K
RGF0ZTogVGh1LCAxNSBGZWIgMjAyNCAxMjo0MDozOCAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIEFY
OiBTdXBwb3J0IHNpdGUgaXNvbGF0aW9uIGZvciBWb2ljZU92ZXIKIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjg4MDQgcmRhcjovLzk5NjY1NTYxCgpSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KCkluaXRpYWwgc3VwcG9ydCBmb3Igc2l0ZSBpc29sYXRpb24gZm9y
IFZvaWNlT3Zlci4KCldoZW4gYSBzY3JvbGwgdmlldyBob3N0cyBhIFJlbW90ZUZyYW1lIGl0IGJp
bmRzIGl0c2VsZiB0byB0aGUgb3RoZXIgc2lkZSB0aHJvdWdoIGEgV2ViUGFnZSBtZXNzYWdlLgpU
aGlzIHRyYW5zZmVycyBkYXRhIHRva2VucyBzbyBBY2Nlc3NpYmlsaXR5IHJlbW90ZSBlbGVtZW50
cyBhcmUgY3JlYXRlZCBhbmQgaG9va2VkIHVwLgoKVGhlIGJvdW5kaW5nIGJveGVzIGluc2lkZSB0
aGUgc3ViIGZyYW1lcyBuZWVkIHRvIGhhdmUgdGhlIGluaXRpYWwgb2Zmc2V0IGFwcGxpZWQgYW5k
IHRoZW4gbmVlZCB0byBiZSBjb252ZXJ0ZWQKZWFjaCBzdGVwIHVwIHRoZSBjaGFpbiB0byBhY2Nv
dW50IGZvciBzY3JvbGwgb2Zmc2V0cyB0aGF0IG9ubHkgZWFjaCBwcm9jZXNzIGtub3dzIGFib3V0
LgoKKiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dDoKKiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWENvcmVPYmplY3QuaDoKKFdlYkNvcmU6OmFjY2Vzc2liaWxpdHlSb2xlVG9TdHJpbmcpOgoo
V2ViQ29yZTo6QVhDb3JlT2JqZWN0Ojppc1JlbW90ZUZyYW1lIGNvbnN0KToKKiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcDoKKFdlYkNvcmU6OnN0cmVhbUFYQ29yZU9i
amVjdCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoK
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmNyZWF0ZSk6CihXZWJDb3JlOjpBWE9iamVjdENhY2hl
OjpvblJlbW90ZUZyYW1lSW5pdGlhbGl6ZWQpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5jcHA6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZWxhdGl2
ZUZyYW1lIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnJlbW90ZUZyYW1l
T2Zmc2V0IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW1vdGVGcmFtZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJh
bWVDbGllbnQuaC4KKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6Y3JlYXRlKToK
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6QWNjZXNzaWJpbGl0eVJlbW90ZUZy
YW1lKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6ZWxlbWVudFJlY3QgY29u
c3QpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbW90ZUZy
YW1lLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVDbGllbnQu
aC4KKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkQXR0YWNobWVu
dENoaWxkcmVuKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENoaWxk
cmVuKToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpkZXRhY2hSZW1vdGVQ
YXJ0cyk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6Y2xlYXJDaGlsZHJlbik6
CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkUmVtb3RlRnJhbWVDaGlsZCk6
CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkQ2hpbGRyZW4pOgooV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OndlYkFyZWFPYmplY3QgY29uc3QpOgooV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmRvY3VtZW50IGNvbnN0KToKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpwYXJlbnRPYmplY3QgY29uc3QpOgoqIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaDoKKiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcDoKKFdl
YkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKFdlYkNvcmU6
OkFYSXNvbGF0ZWRPYmplY3Q6OnNldFByb3BlcnR5KToKKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmpl
Y3Q6OnJlbW90ZUZyYW1lT2Zmc2V0IGNvbnN0KToKKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OnJlbGF0aXZlRnJhbWUgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHA6CihXZWJDb3JlOjpBWElzb2xhdGVk
VHJlZTo6dXBkYXRlTm9kZVByb3BlcnRpZXMpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMubW06CihXZWJDb3Jl
OjpBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplUGxhdGZvcm1Qcm9wZXJ0aWVzKToKKFdlYkNv
cmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50IGNvbnN0KToK
KiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFj
Lm1tOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lOjpnZW5lcmF0ZVJlbW90ZVRv
a2VuIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6aW5pdGlhbGl6
ZVBsYXRmb3JtRWxlbWVudFdpdGhSZW1vdGVUb2tlbik6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
OjpjcmVhdGVQbGF0Zm9ybVJvbGVNYXApOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbToKKG1ha2VOU0FycmF5KToK
KiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgcm9sZV0pOgoo
LVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBpc0VtcHR5R3JvdXBdKToKKC1bV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgcm9sZURlc2NyaXB0aW9uXSk6CigtW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIF90cmFuc2Zvcm1TcGVjaWFsQ2hpbGRyZW5DYXNlczpdKToKKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
Ol0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5SGl0VGVz
dDpdKToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgQUxMT1dfREVQUkVDQVRFRF9J
TVBMRU1FTlRBVElPTlNfRU5EXSk6CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpmb3JQYXJhbWV0ZXI6XSk6CigtW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlJbmRleE9mQ2hpbGQ6XSk6CigtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZUNvdW50
Ol0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXJyYXlB
dHRyaWJ1dGVWYWx1ZXM6aW5kZXg6bWF4Q291bnQ6XSk6CiogU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHA6CihXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjphY2Nl
c3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQpOgoqIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUZyYW1lTG9hZGVyQ2xpZW50Lmg6CiogU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvY2FsRnJhbWVM
b2FkZXJDbGllbnQuaDoKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwOgooV2ViQ29yZTo6
UGFnZTo6c2hvdWxkVXBkYXRlQWNjZXNzaWJpbGl0eVJlZ2lvbnMgY29uc3QpOgoqIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuY3BwOgooV2ViQ29yZTo6UmVtb3RlRnJhbWU6OnVwZGF0
ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldCk6CihXZWJDb3JlOjpSZW1vdGVGcmFtZTo6
dW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyk6CihXZWJDb3JlOjpSZW1vdGVGcmFtZTo6
YmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMpOgoqIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVt
b3RlRnJhbWUuaDoKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lQ2xpZW50Lmg6Ciog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcDoKKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdl
UHJveHk6OnJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbik6CiogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaDoKKiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcDoKKFdlYktpdDo6V2ViRnJhbWVQcm94eTo6YmluZEFj
Y2Vzc2liaWxpdHlGcmFtZVdpdGhEYXRhKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJG
cmFtZVByb3h5Lmg6CiogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojpzd2FwVG9Qcm92aXNpb25hbFBhZ2UpOgooV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKToKKFdlYktpdDo6V2Vi
UGFnZVByb3h5Ojp1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQpOgoqIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MubW06CihXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5
V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQpOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW06CihXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9j
ZXNzQWNjZXNzaWJpbGl0eVRva2VuKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGxNYWMuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGxNYWMubW06CihXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5V2ViUHJv
Y2Vzc1Rva2VuUmVjZWl2ZWQpOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW06CihXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNj
ZXNzaWJpbGl0eVRva2VuKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0lt
cGwuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwubW06CihXZWJL
aXQ6OldlYlZpZXdJbXBsOjpzZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuKToKKiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNs
aWVudC5jcHA6CihXZWJLaXQ6OldlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQ6OmFjY2Vzc2liaWxp
dHlSZW1vdGVGcmFtZU9mZnNldCk6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuaDoKKiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuY3BwOgooV2ViS2l0OjpX
ZWJSZW1vdGVGcmFtZUNsaWVudDo6dW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyk6CihX
ZWJLaXQ6OldlYlJlbW90ZUZyYW1lQ2xpZW50Ojp1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxp
dHlPZmZzZXQpOgooV2ViS2l0OjpXZWJSZW1vdGVGcmFtZUNsaWVudDo6YmluZFJlbW90ZUFjY2Vz
c2liaWxpdHlGcmFtZXMpOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJSZW1vdGVGcmFtZUNsaWVudC5oOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKFdlYktpdDo6V2ViUGFnZTo6YWNjZXNzaWJpbGl0
eVRyYW5zZmVyUmVtb3RlVG9rZW4pOgooV2ViS2l0OjpXZWJQYWdlOjphY2Nlc3NpYmlsaXR5TWFu
YWdlUmVtb3RlRWxlbWVudFN0YXR1cyk6CihXZWJLaXQ6OldlYlBhZ2U6OmJpbmRSZW1vdGVBY2Nl
c3NpYmlsaXR5RnJhbWVzKToKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmg6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbjoKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bToKKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplQWNjZXNzaWJpbGl0eSk6CihX
ZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtUmVpbml0aWFsaXplKToKKFdlYktpdDo6V2ViUGFnZTo6
YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KToKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaDoKKiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9i
amVjdEJhc2UubW06CigtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlIGF4T2JqZWN0
Q2FjaGVdKToKKC1bV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2Ugc2V0UmVtb3RlRnJh
bWVPZmZzZXQ6XSk6CigtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlIGFjY2Vzc2li
aWxpdHlSZW1vdGVGcmFtZU9mZnNldF0pOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tOgooV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybUluaXRpYWxp
emVBY2Nlc3NpYmlsaXR5KToKKFdlYktpdDo6V2ViUGFnZTo6Y3JlYXRlTW9ja0FjY2Vzc2liaWxp
dHlFbGVtZW50KToKKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1SZWluaXRpYWxpemUpOgooV2Vi
S2l0OjpXZWJQYWdlOjp1cGRhdGVSZW1vdGVQYWdlQWNjZXNzaWJpbGl0eU9mZnNldCk6CihXZWJL
aXQ6OldlYlBhZ2U6OnJlZ2lzdGVyUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5VG9rZW5zKToKKFdl
YktpdDo6V2ViUGFnZTo6cmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKToKKFdl
YktpdDo6V2ViUGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KToKKiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJQcm9jZXNzQ29jb2EubW06CihXZWJLaXQ6OldlYlByb2Nlc3M6OmJpbmRBY2Nlc3NpYmls
aXR5RnJhbWVXaXRoRGF0YSk6CiogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKLS0tCiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dCAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogLi4uL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIHwgICA0ICsKIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhDb3JlT2JqZWN0LmggICB8ICAxMiArKwogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WExvZ2dlci5jcHAgICAgIHwgICAzICsKIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5jcHAgICB8ICAxNSArLQogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmggIHwgICAyICsKIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhSZW1vdGVG
cmFtZS5jcHAgICB8ICA0MiArKysrKwogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFJl
bW90ZUZyYW1lLmggIHwgIDYxICsrKysrKysrCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcCAgICAgfCAgMTkgKystCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmggICAgICAgfCAgIDUgKwogLi4uL0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
Y3BwICAgICAgICAgICAgIHwgICA0ICstCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldy5jcHAgfCAgNjAgKysrKysrKy0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlTY3JvbGxWaWV3LmggICB8ICAgNiArLQogLi4uL2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlcklPUy5tbSAgIHwgICAxICsKIC4uLi9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9i
amVjdC5jcHAgICAgICAgICB8ICAzNSArKysrLQogLi4uL2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
T2JqZWN0LmggICAgICAgICAgIHwgICA4ICstCiAuLi4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRU
cmVlLmNwcCAgICAgICAgICAgfCAgNjEgKysrLS0tLS0KIC4uLi9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZFRyZWUuaCAgICAgICAgICAgICB8ICAyOSArKysrCiAuLi4vaXNvbGF0ZWR0cmVlL21hYy9B
WElzb2xhdGVkT2JqZWN0TWFjLm1tICAgfCAgIDcgKwogLi4uL21hYy9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0TWFjLm1tICAgICAgICAgICAgIHwgIDIxICsrKwogLi4uL21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlckJhc2UubW0gIHwgICA5ICstCiAuLi4vbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyTWFjLm1tICAgfCAxNDMgKysrKysrKysrKysrLS0tLS0tCiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCAgICAgICAgfCAgIDUgKwogLi4uL1dlYkNvcmUv
bG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaCAgIHwgICAxICsKIC4uLi9XZWJDb3JlL2xv
YWRlci9Mb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmggICB8ICAgMSArCiBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwICAgICAgICAgICAgICAgICAgfCAgMTEgKy0KIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUmVtb3RlRnJhbWUuY3BwICAgICAgICAgICB8ICAxNSArKwogU291cmNlL1dlYkNvcmUvcGFn
ZS9SZW1vdGVGcmFtZS5oICAgICAgICAgICAgIHwgICA0ICsKIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UmVtb3RlRnJhbWVDbGllbnQuaCAgICAgICB8ICAgNCArCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QYWdlQ2xpZW50LmggICAgICAgICAgfCAgIDMgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL1By
b3Zpc2lvbmFsUGFnZVByb3h5LmNwcCB8ICAgMiArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvUHJv
dmlzaW9uYWxQYWdlUHJveHkuaCAgIHwgICAyICstCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJGcmFtZVByb3h5LmNwcCAgICAgfCAgIDkgKysKIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkZyYW1lUHJveHkuaCAgICAgICB8ICAgMiArCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwICAgICAgfCAgMjQgKystCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaCAgICAgICAgfCAgIDQgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbiB8ICAgNCArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLmggIHwgICAyICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MubW0gfCAgIDIgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdl
UHJveHlJT1MubW0gICB8ICAgNCArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsTWFjLmggIHwgICAyICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGxNYWMubW0gfCAgIDQgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJv
eHlNYWMubW0gICB8ICAgNCArLQogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJ
bXBsLmggICAgIHwgICAzICstCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0lt
cGwubW0gICAgfCAgIDggKy0KIC4uLi9XZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmNwcCAgICAg
ICAgICAgICB8ICAgNiArCiAuLi4vV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudC5oICAgICAgICAg
ICAgICAgfCAgIDEgKwogLi4uL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90ZUZyYW1lQ2xpZW50LmNw
cCAgIHwgIDMyICsrKysKIC4uLi9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVudC5o
ICAgICB8ICAgNCArCiAuLi4vV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5t
bSAgfCAgNDEgKysrKy0KIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aCAgICB8ICAxMyArLQogLi4uL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
ICAgIHwgICAzICsKIC4uLi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gICAg
ICB8ICAxMiArLQogLi4uL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oICAg
IHwgICA0ICsKIC4uLi9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0gICB8
ICAyNyArKystCiAuLi4vV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tICAgICAg
fCAgNDUgKysrKy0tCiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oICAgICAg
ICAgfCAgIDggKwogLi4uL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4g
IHwgICAxICsKIC4uLi9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSAgICAgICB8
ICAxMCArKwogLi4uL21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIHwg
ICAxICsKIDYwIGZpbGVzIGNoYW5nZWQsIDcyNiBpbnNlcnRpb25zKCspLCAxNTAgZGVsZXRpb25z
KC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFJl
bW90ZUZyYW1lLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQVhSZW1vdGVGcmFtZS5oCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAxZjU3YjlhYTBhMzQuLmE1
MGZlODk0OTNkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTUyNSw2ICs1MjUsNyBAQCBhY2Nlc3NpYmls
aXR5L0FYR2VvbWV0cnlNYW5hZ2VyLmNwcAogYWNjZXNzaWJpbGl0eS9BWEltYWdlLmNwcAogYWNj
ZXNzaWJpbGl0eS9BWExvZ2dlci5jcHAKIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAK
K2FjY2Vzc2liaWxpdHkvQVhSZW1vdGVGcmFtZS5jcHAKIGFjY2Vzc2liaWxpdHkvQVhUZXh0TWFy
a2VyLmNwcAogYWNjZXNzaWJpbGl0eS9BWFRleHRSdW4uY3BwCiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlBUklBR3JpZC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyYTdlYzg2ODAwMDIuLjY3ZGZjMGVkYjQ2MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtODk2MCw2ICs4OTYwLDggQEAKIAkJMjk0ODlGQzUxMkMwMEYwMzAwRDgzRjBGIC8qIEFjY2Vz
c2liaWxpdHlTY3JvbGxWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5
NDk4NjgxMTk1MzQxOTQwMDcyRDJCRCAvKiBUZXh0VW5kb0luc2VydGlvbk1hcmt1cE1hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRleHRVbmRvSW5zZXJ0aW9u
TWFya3VwTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTRCREFFNjIxRkY1
ODJBMDA1MTA3N0IgLyogQWNjZXNzaWJpbGl0eU9iamVjdENvY29hLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eU9iamVjdENvY29hLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOTU1Q0YxMTJCMjMwQUU2MDAwMUJGODIgLyog
QVhSZW1vdGVGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBWFJlbW90ZUZyYW1lLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5NTVDRjEyMkIyMzBBRTYwMDAxQkY4MiAvKiBBWFJlbW90
ZUZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFYUmVtb3RlRnJhbWUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyOTdCRTNEOTE2QzA0M0Q4MDAzMzE2QkQgLyogUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMjk4MUFCQzQxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlNYXRoTUxF
bGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk4MUNBOUQxMzE4MjJFQzAwRDEy
RjJBIC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nl
c3NpYmlsaXR5QVJJQUdyaWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjM0
NDUsNiArMjM0NDcsOCBAQAogCQkJCUMwNDkzRUI3MjQ0Njk5RTQwMDlBQUM4MCAvKiBBWExvZ2dl
ci5oICovLAogCQkJCTI5ODFDQUFGMTMxODIyRUMwMEQxMkYyQSAvKiBBWE9iamVjdENhY2hlLmNw
cCAqLywKIAkJCQkyOUE4MTIxQTBGQkI5QzFEMDA1MTAyOTMgLyogQVhPYmplY3RDYWNoZS5oICov
LAorCQkJCTI5NTVDRjEyMkIyMzBBRTYwMDAxQkY4MiAvKiBBWFJlbW90ZUZyYW1lLmNwcCAqLywK
KwkJCQkyOTU1Q0YxMTJCMjMwQUU2MDAwMUJGODIgLyogQVhSZW1vdGVGcmFtZS5oICovLAogCQkJ
CUMwRTIwOEExMjkzNzlDNkYwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXIuY3BwICovLAogCQkJCUMw
RTIwOEEwMjkzNzlDNkUwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXIuaCAqLywKIAkJCQk0OEM0RTgz
QzJCMzREODM4MDA4MzQ2MEEgLyogQVhUZXh0UnVuLmNwcCAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhDb3JlT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYQ29yZU9iamVjdC5oCmluZGV4IDQ0MTA4NGVjYjgwNS4uM2ZiYzdmOGRi
MjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYQ29yZU9iamVj
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhDb3JlT2JqZWN0LmgKQEAg
LTIwNSw2ICsyMDUsNyBAQCBlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlSb2xlIHsKICAgICBQcm9n
cmVzc0luZGljYXRvciwKICAgICBSYWRpb0J1dHRvbiwKICAgICBSYWRpb0dyb3VwLAorICAgIFJl
bW90ZUZyYW1lLAogICAgIFJvd0hlYWRlciwKICAgICBSb3csCiAgICAgUm93R3JvdXAsCkBAIC00
NDIsNiArNDQzLDggQEAgQUxXQVlTX0lOTElORSBTdHJpbmcgYWNjZXNzaWJpbGl0eVJvbGVUb1N0
cmluZyhBY2Nlc3NpYmlsaXR5Um9sZSByb2xlKQogICAgICAgICByZXR1cm4gIlJhZGlvQnV0dG9u
Il9zOwogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvR3JvdXA6CiAgICAgICAgIHJl
dHVybiAiUmFkaW9Hcm91cCJfczsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSZW1vdGVG
cmFtZToKKyAgICAgICAgcmV0dXJuICJSZW1vdGVGcmFtZSJfczsKICAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpSb3dIZWFkZXI6CiAgICAgICAgIHJldHVybiAiUm93SGVhZGVyIl9zOwogICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJvdzoKQEAgLTgxNSw2ICs4MTgsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93SW5zdGFuY2UoKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbElu
c3RhbmNlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0FYSXNvbGF0ZWRPYmplY3RJ
bnN0YW5jZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBWFJlbW90ZUZyYW1lKCkg
Y29uc3QgPSAwOwogCiAgICAgYm9vbCBpc0hlYWRpbmcoKSBjb25zdCB7IHJldHVybiByb2xlVmFs
dWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6SGVhZGluZzsgfQogICAgIHZpcnR1YWwgYm9vbCBp
c0xpbmsoKSBjb25zdCA9IDA7CkBAIC05MTksNiArOTIzLDEyIEBAIHB1YmxpYzoKICAgICBib29s
IGlzVHJlZUdyaWQoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5
Um9sZTo6VHJlZUdyaWQ7IH0KICAgICBib29sIGlzVHJlZUl0ZW0oKSBjb25zdCB7IHJldHVybiBy
b2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUl0ZW07IH0KICAgICBib29sIGlz
U2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OlNjcm9sbEJhcjsgfQorICAgIGJvb2wgaXNSZW1vdGVGcmFtZSgpIGNvbnN0IHsgcmV0dXJu
IHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpSZW1vdGVGcmFtZTsgfQorI2lmIFBM
QVRGT1JNKENPQ09BKQorICAgIHZpcnR1YWwgUmV0YWluUHRyPGlkPiByZW1vdGVGcmFtZVBsYXRm
b3JtRWxlbWVudCgpIGNvbnN0ID0gMDsKKyNlbmRpZgorICAgIHZpcnR1YWwgYm9vbCBoYXNSZW1v
dGVGcmFtZUNoaWxkKCkgY29uc3QgPSAwOworCiAgICAgYm9vbCBpc0J1dHRvbigpIGNvbnN0Owog
ICAgIHZpcnR1YWwgYm9vbCBpc01ldGVyKCkgY29uc3QgPSAwOwogCkBAIC0xMTU5LDYgKzExNjks
OCBAQCBwdWJsaWM6CiAgICAgLy8gVmlld3BvcnQtcmVsYXRpdmUgbWVhbnMgdGhhdCB3aGVuIHRo
ZSBwYWdlIHNjcm9sbHMsIHRoZSBwb3J0aW9uIG9mIHRoZSBwYWdlIGluIHRoZSB2aWV3cG9ydCBj
aGFuZ2VzLCBhbmQgdGh1cwogICAgIC8vIGFueSB2aWV3cG9ydC1yZWxhdGl2ZSByZWN0cyBkbyB0
b28gKHNpbmNlIHRoZXkgYXJlIGVpdGhlciBjbG9zZXIgdG8gb3IgZmFydGhlciBmcm9tIHRoZSB2
aWV3cG9ydCBvcmlnaW4gYWZ0ZXIgdGhlIHNjcm9sbCkuCiAgICAgdmlydHVhbCBGbG9hdFBvaW50
IHNjcmVlblJlbGF0aXZlUG9zaXRpb24oKSBjb25zdCA9IDA7CisgICAgLy8gVGhpcyBpcyB0aGUg
YW1vdW50IHRoYXQgdGhlIFJlbW90ZUZyYW1lIGlzIG9mZnNldCBmcm9tIGl0cyBjb250YWluaW5n
IHBhcmVudC4KKyAgICB2aXJ0dWFsIEludFBvaW50IHJlbW90ZUZyYW1lT2Zmc2V0KCkgY29uc3Qg
PSAwOwogCiAgICAgdmlydHVhbCBGbG9hdFJlY3QgY29udmVydEZyYW1lVG9TcGFjZShjb25zdCBG
bG9hdFJlY3QmLCBBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlKSBjb25zdCA9IDA7CiAjaWYg
UExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYTG9nZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhMb2dnZXIuY3Bw
CmluZGV4IGI2ZTMwNmNkZGVjZi4uN2IzNWM4ZjlkMTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYTG9nZ2VyLmNwcApAQCAtODgzLDYgKzg4Myw5IEBAIHZvaWQgc3RyZWFtQVhD
b3JlT2JqZWN0KFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgQVhDb3JlT2JqZWN0JiBvYmplY3Qs
IGNvbnN0IE9wCiAgICAgaWYgKG9wdGlvbnMgJiBBWFN0cmVhbU9wdGlvbnM6OlJvbGUpCiAgICAg
ICAgIHN0cmVhbS5kdW1wUHJvcGVydHkoInJvbGUiLCBvYmplY3Qucm9sZVZhbHVlKCkpOwogCisg
ICAgaWYgKG9iamVjdC5yZW5kZXJlcigpKQorICAgICAgICBzdHJlYW0uZHVtcFByb3BlcnR5KCJy
ZW5kZXJOYW1lIiwgb2JqZWN0LnJlbmRlcmVyKCktPnJlbmRlck5hbWUoKSk7CisKICAgICBpZiAo
b3B0aW9ucyAmIEFYU3RyZWFtT3B0aW9uczo6UGFyZW50SUQpIHsKICAgICAgICAgYXV0byogcGFy
ZW50ID0gb2JqZWN0LnBhcmVudE9iamVjdFVuaWdub3JlZCgpOwogICAgICAgICBzdHJlYW0uZHVt
cFByb3BlcnR5KCJwYXJlbnRJRCIsIHBhcmVudCA/IHBhcmVudC0+b2JqZWN0SUQoKSA6IEFYSUQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2Fj
aGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApp
bmRleCAyODBmYWQ0ZjI3MDEuLjFhYzk1ZjJlYTZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVk
ZSAiQVhJc29sYXRlZE9iamVjdC5oIgogI2luY2x1ZGUgIkFYSXNvbGF0ZWRUcmVlLmgiCiAjaW5j
bHVkZSAiQVhMb2dnZXIuaCIKKyNpbmNsdWRlICJBWFJlbW90ZUZyYW1lLmgiCiAjaW5jbHVkZSAi
QVhUZXh0TWFya2VyLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmgiCiAjaW5j
bHVkZSAiQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oIgpAQCAtMTA1NCw3ICsxMDU1LDEwIEBA
IEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmNyZWF0ZShBY2Nlc3NpYmlsaXR5
Um9sZSByb2xlKQogICAgICAgICBicmVhazsgICAgICAgICAgICAKICAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpUYWJsZUhlYWRlckNvbnRhaW5lcjoKICAgICAgICAgb2JqID0gQWNjZXNzaWJp
bGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyOjpjcmVhdGUoKTsKLSAgICAgICAgYnJlYWs7ICAgCisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJlbW90ZUZyYW1lOgor
ICAgICAgICBvYmogPSBBWFJlbW90ZUZyYW1lOjpjcmVhdGUoKTsKKyAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyVGh1bWI6CiAgICAgICAgIG9iaiA9IEFj
Y2Vzc2liaWxpdHlTbGlkZXJUaHVtYjo6Y3JlYXRlKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTM1
MCw2ICsxMzU0LDE1IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlUmVjb21wdXRlQ2VsbFNs
b3RzKEFjY2Vzc2liaWxpdHlUYWJsZSYgYXhUYWJsZSkKICNlbmRpZgogfQogCit2b2lkIEFYT2Jq
ZWN0Q2FjaGU6Om9uUmVtb3RlRnJhbWVJbml0aWFsaXplZChBWFJlbW90ZUZyYW1lJiByZW1vdGVG
cmFtZSkKK3sKKyNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQorICAgIHVw
ZGF0ZUlzb2xhdGVkVHJlZShyZW1vdGVGcmFtZSwgQVhQcm9wZXJ0eU5hbWU6OlJlbW90ZUZyYW1l
UGxhdGZvcm1FbGVtZW50KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHJlbW90ZUZyYW1lKTsK
KyNlbmRpZgorfQorCiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKIHZv
aWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlUm93c3BhbkNoYW5nZWQoQWNjZXNzaWJpbGl0eVRhYmxl
Q2VsbCYgYXhDZWxsKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0
Q2FjaGUuaAppbmRleCBkMTA0OWNjOWJjMjEuLjM4Yzk4YTQ2ZWE5ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgY2xh
c3MgVGV4dFN0cmVhbTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBBWFJlbW90ZUZy
YW1lOwogY2xhc3MgQWNjZXNzaWJpbGl0eVRhYmxlOwogY2xhc3MgQWNjZXNzaWJpbGl0eVRhYmxl
Q2VsbDsKIGNsYXNzIERvY3VtZW50OwpAQCAtMjQ2LDYgKzI0Nyw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRlZmVyTm9kZUFkZGVkT3JSZW1vdmVkKE5vZGUqKTsKICAgICB2b2lkIGhhbmRsZVNjcm9s
bGVkVG9BbmNob3IoY29uc3QgTm9kZSogYW5jaG9yTm9kZSk7CiAgICAgdm9pZCBvblNjcm9sbGJh
clVwZGF0ZShTY3JvbGxWaWV3Kik7CisgICAgdm9pZCBvblJlbW90ZUZyYW1lSW5pdGlhbGl6ZWQo
QVhSZW1vdGVGcmFtZSYpOwogCiAgICAgYm9vbCBpc1JldHJpZXZpbmdDdXJyZW50TW9kYWxOb2Rl
KCkgeyByZXR1cm4gbV9pc1JldHJpZXZpbmdDdXJyZW50TW9kYWxOb2RlOyB9CiAgICAgTm9kZSog
bW9kYWxOb2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
UmVtb3RlRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFJlbW90ZUZy
YW1lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmNmYmRlZGQ5
ODFjYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhS
ZW1vdGVGcmFtZS5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJBWFJlbW90ZUZyYW1lLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworUmVmPEFYUmVtb3RlRnJhbWU+IEFYUmVtb3RlRnJhbWU6OmNyZWF0ZSgpCit7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQVhSZW1vdGVGcmFtZSk7Cit9CisKK0xheW91dFJlY3QgQVhS
ZW1vdGVGcmFtZTo6ZWxlbWVudFJlY3QoKSBjb25zdAoreworICAgIGF1dG8qIHBhcmVudCA9IHBh
cmVudE9iamVjdCgpOworICAgIHJldHVybiBwYXJlbnQgPyBwYXJlbnQtPmVsZW1lbnRSZWN0KCkg
OiBMYXlvdXRSZWN0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhSZW1vdGVGcmFtZS5oIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BWFJlbW90ZUZyYW1lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi45NGQyZGYwMzA0ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYUmVtb3RlRnJhbWUuaApAQCAtMCwwICsxLDYxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDI0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5TW9j
a09iamVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlbW90ZUZyYW1lOwor
CitjbGFzcyBBWFJlbW90ZUZyYW1lIGZpbmFsIDogcHVibGljIEFjY2Vzc2liaWxpdHlNb2NrT2Jq
ZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEFYUmVtb3RlRnJhbWU+IGNyZWF0ZSgpOwor
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBpbml0aWFsaXplUGxhdGZvcm1FbGVtZW50
V2l0aFJlbW90ZVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgaW50KTsKKyAgICBzdGQ6
OnNwYW48Y29uc3QgdWludDhfdD4gZ2VuZXJhdGVSZW1vdGVUb2tlbigpIGNvbnN0OworICAgIFJl
dGFpblB0cjxpZD4gcmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBt
X3JlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50OyB9CisgICAgcGlkX3QgcHJvY2Vzc0lkZW50aWZp
ZXIoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3NJZGVudGlmaWVyOyB9CisjZW5kaWYKKworcHJp
dmF0ZToKKyAgICB2aXJ0dWFsIH5BWFJlbW90ZUZyYW1lKCkgPSBkZWZhdWx0OworCisgICAgQWNj
ZXNzaWJpbGl0eVJvbGUgZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUoKSB7IHJldHVybiBBY2Nl
c3NpYmlsaXR5Um9sZTo6UmVtb3RlRnJhbWU7IH0KKyAgICBib29sIGNvbXB1dGVBY2Nlc3NpYmls
aXR5SXNJZ25vcmVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzQVhSZW1v
dGVGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICBMYXlvdXRSZWN0IGVsZW1lbnRS
ZWN0KCkgY29uc3Q7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBSZXRhaW5QdHI8aWQ+IG1f
cmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQ7CisgICAgcGlkX3QgbV9wcm9jZXNzSWRlbnRpZmll
ciB7IDAgfTsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0FDQ0VTU0lCSUxJVFkoQVhSZW1vdGVGcmFtZSwgaXNBWFJlbW90ZUZy
YW1lKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcAppbmRleCAzZTMyZGIwOTNhZmIuLmE5MjBhYzVlMDg5MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3Bw
CkBAIC01NDQsNyArNTQ0LDkgQEAgRmxvYXRSZWN0IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmNvbnZl
cnRGcmFtZVRvU3BhY2UoY29uc3QgRmxvYXRSZWN0JiBmcmFtZVJlY3QsIEEKICAgICAKIEZsb2F0
UmVjdCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZWxhdGl2ZUZyYW1lKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gY29udmVydEZyYW1lVG9TcGFjZShlbGVtZW50UmVjdCgpLCBBY2Nlc3NpYmlsaXR5Q29u
dmVyc2lvblNwYWNlOjpQYWdlKTsKKyAgICBhdXRvIHJlY3QgPSBlbGVtZW50UmVjdCgpOworICAg
IHJlY3QubW92ZUJ5KHJlbW90ZUZyYW1lT2Zmc2V0KCkpOworICAgIHJldHVybiBjb252ZXJ0RnJh
bWVUb1NwYWNlKHJlY3QsIEFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2U6OlBhZ2UpOwogfQog
CiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpuZXh0U2libGluZ1Vu
aWdub3JlZChpbnQgbGltaXQpIGNvbnN0CkBAIC0yMDg2LDE0ICsyMDg4LDE5IEBAIGNvbnN0IEFj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3KiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphbmNlc3RvckFjY2Vz
c2liaWxpdHlTY3JvbGxWCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBSZW1vdGVBWE9iamVjdFJlZiBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpyZW1vdGVQYXJlbnRPYmplY3QoKSBjb25zdAogewotICAgIGlm
IChhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCkpIHsKLSAgICAgICAgaWYgKGF1dG8q
IGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCkpCi0gICAgICAgICAgICByZXR1cm4gZnJhbWUtPmxv
YWRlcigpLmNsaWVudCgpLmFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKTsKLSAgICB9Ci0gICAg
cmV0dXJuIG51bGxwdHI7CisgICAgYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOwor
ICAgIGF1dG8qIGZyYW1lID0gZG9jdW1lbnQgPyBkb2N1bWVudC0+ZnJhbWUoKSA6IG51bGxwdHI7
CisgICAgcmV0dXJuIGZyYW1lID8gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmFjY2Vzc2liaWxp
dHlSZW1vdGVPYmplY3QoKSA6IG51bGxwdHI7CiB9CiAjZW5kaWYKIAorSW50UG9pbnQgQWNjZXNz
aWJpbGl0eU9iamVjdDo6cmVtb3RlRnJhbWVPZmZzZXQoKSBjb25zdAoreworICAgIGF1dG8qIGRv
Y3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsKKyAgICBhdXRvKiBmcmFtZSA9IGRvY3VtZW50ID8g
ZG9jdW1lbnQtPmZyYW1lKCkgOiBudWxscHRyOworICAgIHJldHVybiBmcmFtZSA/IGZyYW1lLT5s
b2FkZXIoKS5jbGllbnQoKS5hY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKSA6IEludFBv
aW50KCk7Cit9CisKIERvY3VtZW50KiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpkb2N1bWVudCgpIGNv
bnN0CiB7CiAgICAgYXV0byogZnJhbWVWaWV3ID0gZG9jdW1lbnRGcmFtZVZpZXcoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5o
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKaW5k
ZXggNGQyMGY1NWE1NDRjLi4zNTk1ZDMxZTcxYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCkBAIC0xMDIsNiArMTAyLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0KCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlz
QWNjZXNzaWJpbGl0eVNjcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9v
bCBpc0FYUmVtb3RlRnJhbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAg
IHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3SW5zdGFuY2UoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTVkdSb290
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzQWNjZXNzaWJpbGl0eVRhYmxl
SW5zdGFuY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQpAQCAtNDYyLDEwICs0
NjMsMTQgQEAgcHVibGljOgogICAgIFdpZGdldCogd2lkZ2V0Rm9yQXR0YWNobWVudFZpZXcoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgYm9vbCBpc1BsdWdpbigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICBJbnRQb2ludCByZW1vdGVGcmFt
ZU9mZnNldCgpIGNvbnN0IG92ZXJyaWRlOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJlbW90
ZUFYT2JqZWN0UmVmIHJlbW90ZVBhcmVudE9iamVjdCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIEZs
b2F0UmVjdCBjb252ZXJ0UmVjdFRvUGxhdGZvcm1TcGFjZShjb25zdCBGbG9hdFJlY3QmLCBBY2Nl
c3NpYmlsaXR5Q29udmVyc2lvblNwYWNlKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZXRhaW5QdHI8
aWQ+IHJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bmlsOyB9CiAjZW5kaWYKKyAgICBib29sIGhhc1JlbW90ZUZyYW1lQ2hpbGQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgUGFnZSogcGFnZSgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIExvY2FsRnJh
bWVWaWV3KiBkb2N1bWVudEZyYW1lVmlldygpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHAKaW5kZXggZWU4YWJlYzNkN2I1Li4yZjEyZWY3NTNlNGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
LmNwcApAQCAtMjQxMyw3ICsyNDEzLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjphZGRBdHRhY2htZW50Q2hpbGRyZW4oKQogCiAgICAgLy8gTG9jYWxGcmFtZVZpZXcncyBuZWVk
IHRvIGJlIGluc2VydGVkIGludG8gdGhlIEFYIGhpZXJhcmNoeSB3aGVuIGVuY291bnRlcmVkLgog
ICAgIFdpZGdldCogd2lkZ2V0ID0gd2lkZ2V0Rm9yQXR0YWNobWVudFZpZXcoKTsKLSAgICBpZiAo
IXdpZGdldCB8fCAhd2lkZ2V0LT5pc0xvY2FsRnJhbWVWaWV3KCkpCisgICAgaWYgKCF3aWRnZXQg
fHwgISh3aWRnZXQtPmlzTG9jYWxGcmFtZVZpZXcoKSB8fCB3aWRnZXQtPmlzUmVtb3RlRnJhbWVW
aWV3KCkpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgYWRkQ2hpbGQoYXhPYmplY3RDYWNo
ZSgpLT5nZXRPckNyZWF0ZSh3aWRnZXQpKTsKQEAgLTI1NjgsNyArMjU2OCw3IEBAIHZvaWQgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkQ2hpbGRyZW4oKQogICAgICAgICBhdXRvIG93bmVy
cyA9IG9iamVjdC5vd25lcnMoKTsKICAgICAgICAgaWYgKG93bmVycy5zaXplKCkgJiYgIW93bmVy
cy5jb250YWlucyh0aGlzKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisKICAgICAg
ICAgYWRkQ2hpbGQoJm9iamVjdCk7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcAppbmRleCAyYmJj
MzA4N2I5ZjguLmRlYTRlZmFjMzgzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAKQEAgLTI3LDEwICsyNywx
MiBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgiCiAKICNpbmNsdWRlICJB
WE9iamVjdENhY2hlLmgiCisjaW5jbHVkZSAiQVhSZW1vdGVGcmFtZS5oIgogI2luY2x1ZGUgIkFj
Y2Vzc2liaWxpdHlTY3JvbGxiYXIuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQu
aCIKICNpbmNsdWRlICJMb2NhbEZyYW1lLmgiCiAjaW5jbHVkZSAiTG9jYWxGcmFtZVZpZXcuaCIK
KyNpbmNsdWRlICJSZW1vdGVGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJSZW5kZXJFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiV2lkZ2V0LmgiCiAKQEAgLTUyLDYgKzU0LDE0IEBAIEFjY2Vzc2liaWxpdHlT
Y3JvbGxWaWV3Ojp+QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoKQogdm9pZCBBY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldzo6ZGV0YWNoUmVtb3RlUGFydHMoQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBl
IGRldGFjaG1lbnRUeXBlKQogewogICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRldGFjaFJlbW90
ZVBhcnRzKGRldGFjaG1lbnRUeXBlKTsKKworICAgIGF1dG8qIHJlbW90ZUZyYW1lVmlldyA9IGR5
bmFtaWNEb3duY2FzdDxSZW1vdGVGcmFtZVZpZXc+KG1fc2Nyb2xsVmlldy5nZXQoKSk7CisgICAg
aWYgKHJlbW90ZUZyYW1lVmlldyAmJiBtX3JlbW90ZUZyYW1lICYmIChkZXRhY2htZW50VHlwZSA9
PSBBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGU6OkVsZW1lbnREZXN0cm95ZWQgfHwgZGV0YWNo
bWVudFR5cGUgPT0gQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlOjpDYWNoZURlc3Ryb3llZCkp
IHsKKyAgICAgICAgYXV0byYgcmVtb3RlRnJhbWUgPSByZW1vdGVGcmFtZVZpZXctPmZyYW1lKCk7
CisgICAgICAgIHJlbW90ZUZyYW1lLnVuYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMobV9y
ZW1vdGVGcmFtZS0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgICAgIG1fcmVtb3RlRnJhbWUg
PSBudWxscHRyOworICAgIH0KKwogICAgIG1fc2Nyb2xsVmlldyA9IG51bGxwdHI7CiAgICAgbV9m
cmFtZU93bmVyRWxlbWVudCA9IG51bGxwdHI7CiB9CkBAIC0xNzcsOCArMTg3LDEwIEBAIEFjY2Vz
c2liaWxpdHlTY3JvbGxiYXIqIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjphZGRDaGlsZFNjcm9s
bGJhcihTY3JvbGxiYXIqIHNjCiB2b2lkIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpjbGVhckNo
aWxkcmVuKCkKIHsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjbGVhckNoaWxkcmVuKCk7CisK
ICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyID0gbnVsbHB0cjsKICAgICBtX2hvcml6b250YWxTY3Jv
bGxiYXIgPSBudWxscHRyOworCiAgICAgbV9jaGlsZHJlbkRpcnR5ID0gZmFsc2U7CiB9CiAKQEAg
LTE5MSwxMSArMjAzLDQ1IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmNvbXB1dGVB
Y2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKICAgICByZXR1cm4gd2ViQXJlYS0+YWNjZXNz
aWJpbGl0eUlzSWdub3JlZCgpOwogfQogCit2b2lkIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojph
ZGRSZW1vdGVGcmFtZUNoaWxkKCkKK3sKKyAgICBhdXRvKiByZW1vdGVGcmFtZVZpZXcgPSBkeW5h
bWljRG93bmNhc3Q8UmVtb3RlRnJhbWVWaWV3PihtX3Njcm9sbFZpZXcuZ2V0KCkpOworICAgIGlm
ICghcmVtb3RlRnJhbWVWaWV3KQorICAgICAgICByZXR1cm47CisKKyAgICBXZWFrUHRyIGNhY2hl
ID0gYXhPYmplY3RDYWNoZSgpOworICAgIGlmICghY2FjaGUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmICghbV9yZW1vdGVGcmFtZSkgeworICAgICAgICAvLyBNYWtlIHRoZSBmYXV4IGVsZW1l
bnQgdGhhdCByZXByZXNlbnRzIHRoZSByZW1vdGUgdHJhbnNmZXIgZWxlbWVudCBmb3IgQVguCisg
ICAgICAgIG1fcmVtb3RlRnJhbWUgPSBkb3duY2FzdDxBWFJlbW90ZUZyYW1lPihjYWNoZS0+Y3Jl
YXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpSZW1vdGVGcmFtZSkpOworICAgICAgICBtX3JlbW90ZUZy
YW1lLT5zZXRQYXJlbnQodGhpcyk7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIC8vIEdl
bmVyYXRlIGEgbmV3IHRva2VuIGFuZCBwYXNzIGl0IGJhY2sgdG8gdGhlIG90aGVyIHJlbW90ZSBm
cmFtZSBzbyBpdCBjYW4gYmluZCB0aGVzZSBvYmplY3RzIHRvZ2V0aGVyLgorICAgICAgICBhdXRv
IGdlbmVyYXRlZFRva2VuID0gbV9yZW1vdGVGcmFtZS0+Z2VuZXJhdGVSZW1vdGVUb2tlbigpOwor
ICAgICAgICBhdXRvJiByZW1vdGVGcmFtZSA9IHJlbW90ZUZyYW1lVmlldy0+ZnJhbWUoKTsKKyAg
ICAgICAgcmVtb3RlRnJhbWUuYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoZ2V0cGlkKCks
IGdlbmVyYXRlZFRva2VuLCBbdGhpcywgJnJlbW90ZUZyYW1lLCBwcm90ZWN0ZWRBY2Nlc3NiaWxp
dHlSZW1vdGVGcmFtZSA9IFJlZlB0ciB7IG1fcmVtb3RlRnJhbWUgfV0gKHN0ZDo6c3Bhbjxjb25z
dCB1aW50OF90PiB0b2tlbiwgaW50IHByb2Nlc3NJZGVudGlmaWVyKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgIHByb3RlY3RlZEFjY2Vzc2JpbGl0eVJlbW90ZUZyYW1lLT5pbml0aWFsaXplUGxhdGZv
cm1FbGVtZW50V2l0aFJlbW90ZVRva2VuKHRva2VuLCBwcm9jZXNzSWRlbnRpZmllcik7CisKKyAg
ICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgcmVtb3RlIHNpZGUgd2l0aCB0aGUgb2Zmc2V0IG9mIHRo
aXMgb2JqZWN0IHNvIGl0IGNhbiBjYWxjdWxhdGUgZnJhbWVzIGNvcnJlY3RseS4KKyAgICAgICAg
ICAgIGF1dG8gbG9jYXRpb24gPSBlbGVtZW50UmVjdCgpLmxvY2F0aW9uKCk7CisgICAgICAgICAg
ICByZW1vdGVGcmFtZS51cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQoZmxvb3Jl
ZEludFBvaW50KGxvY2F0aW9uKSk7CisgICAgICAgIH0pOworI2VuZGlmCisgICAgfSBlbHNlCisg
ICAgICAgIG1fcmVtb3RlRnJhbWUtPnNldFBhcmVudCh0aGlzKTsKKworICAgIGFkZENoaWxkKG1f
cmVtb3RlRnJhbWUuZ2V0KCkpOworfQorCiB2b2lkIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojph
ZGRDaGlsZHJlbigpCiB7CiAgICAgQVNTRVJUKCFtX2NoaWxkcmVuSW5pdGlhbGl6ZWQpOwogICAg
IG1fY2hpbGRyZW5Jbml0aWFsaXplZCA9IHRydWU7CiAKKyAgICBhZGRSZW1vdGVGcmFtZUNoaWxk
KCk7CiAgICAgYWRkQ2hpbGQod2ViQXJlYU9iamVjdCgpKTsKICAgICB1cGRhdGVTY3JvbGxiYXJz
KCk7CiB9CkBAIC0yMDMsNyArMjQ5LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6
YWRkQ2hpbGRyZW4oKQogQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVNjcm9sbFZp
ZXc6OndlYkFyZWFPYmplY3QoKSBjb25zdAogewogICAgIGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+
ZG9jdW1lbnQoKTsKLSAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+aGFzTGl2aW5nUmVu
ZGVyVHJlZSgpKQorICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5oYXNMaXZpbmdSZW5k
ZXJUcmVlKCkgfHwgbV9yZW1vdGVGcmFtZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICBpZiAoYXV0byogY2FjaGUgPSBheE9iamVjdENhY2hlKCkpCkBAIC0yMzQsOSArMjgwLDE1IEBA
IExheW91dFJlY3QgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmVsZW1lbnRSZWN0KCkgY29uc3QK
IAogRG9jdW1lbnQqIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojpkb2N1bWVudCgpIGNvbnN0CiB7
Ci0gICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGR5bmFtaWNEb3duY2FzdDxMb2NhbEZyYW1lVmll
dz4obV9zY3JvbGxWaWV3LmdldCgpKSkgeworICAgIGlmIChhdXRvKiBmcmFtZVZpZXcgPSBkeW5h
bWljRG93bmNhc3Q8TG9jYWxGcmFtZVZpZXc+KG1fc2Nyb2xsVmlldy5nZXQoKSkpCiAgICAgICAg
IHJldHVybiBmcmFtZVZpZXctPmZyYW1lKCkuZG9jdW1lbnQoKTsKKworICAgIC8vIEZvciB0aGUg
UmVtb3RlRnJhbWVWaWV3IGNhc2UsIHdlIG5lZWQgdG8gcmV0dXJuIHRoZSBkb2N1bWVudCBvZiBv
dXIgaG9zdGluZyBwYXJlbnQgc28gYXhPYmplY3RDYWNoZSgpIHJlc29sdmVzIGNvcnJlY3RseS4K
KyAgICBpZiAoYXV0byogcmVtb3RlRnJhbWVWaWV3ID0gZHluYW1pY0Rvd25jYXN0PFJlbW90ZUZy
YW1lVmlldz4obV9zY3JvbGxWaWV3LmdldCgpKSkgeworICAgICAgICBpZiAoYXV0byogb3duZXIg
PSByZW1vdGVGcmFtZVZpZXctPmZyYW1lKCkub3duZXJFbGVtZW50KCkpCisgICAgICAgICAgICBy
ZXR1cm4gJihvd25lci0+ZG9jdW1lbnQoKSk7CiAgICAgfQorCiAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OmRvY3VtZW50KCk7CiB9CiAKQEAgLTI1OSw4ICszMTEsMTAgQEAgQWNjZXNz
aWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OnBhcmVudE9iamVjdCgpIGNv
bnN0CiAgICAgV2Vha1B0ciBvd25lciA9IG1fZnJhbWVPd25lckVsZW1lbnQuZ2V0KCk7CiAgICAg
aWYgKGF1dG8qIGxvY2FsRnJhbWVWaWV3ID0gZHluYW1pY0Rvd25jYXN0PExvY2FsRnJhbWVWaWV3
PihtX3Njcm9sbFZpZXcuZ2V0KCkpKQogICAgICAgICBvd25lciA9IGxvY2FsRnJhbWVWaWV3LT5m
cmFtZSgpLm93bmVyRWxlbWVudCgpOworICAgIGVsc2UgaWYgKGF1dG8qIHJlbW90ZUZyYW1lVmll
dyA9IGR5bmFtaWNEb3duY2FzdDxSZW1vdGVGcmFtZVZpZXc+KG1fc2Nyb2xsVmlldy5nZXQoKSkp
CisgICAgICAgIG93bmVyID0gcmVtb3RlRnJhbWVWaWV3LT5mcmFtZSgpLm93bmVyRWxlbWVudCgp
OwogCi0gICAgaWYgKGNhY2hlICYmIG93bmVyICYmIG93bmVyLT5yZW5kZXJlcigpKQorICAgIGlm
IChvd25lciAmJiBvd25lci0+cmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIGNhY2hlLT5nZXRP
ckNyZWF0ZShvd25lci5nZXQoKSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgK
aW5kZXggNTU3MDQ0NjcxYzdkLi41MjVhYzc4M2ZiYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgKQEAgLTMwLDYg
KzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAorY2xhc3MgQVhSZW1vdGVGcmFt
ZTsKIGNsYXNzIEFjY2Vzc2liaWxpdHlTY3JvbGxiYXI7CiBjbGFzcyBTY3JvbGxiYXI7CiBjbGFz
cyBTY3JvbGxWaWV3OwpAQCAtNTQsNyArNTUsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgY29tcHV0
ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzQWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXdJbnN0YW5jZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KICAgICBib29sIGlzRW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KLSAgICAKKyAgICBib29sIGhhc1JlbW90ZUZyYW1lQ2hpbGQoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX3JlbW90ZUZyYW1lOyB9CisKICAgICBib29sIGlzQXR0YWNobWVudCgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIFBsYXRmb3JtV2lkZ2V0IHBsYXRmb3JtV2lkZ2V0KCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgV2lkZ2V0KiB3aWRnZXRGb3JBdHRhY2htZW50VmlldygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGN1cnJlbnRTY3JvbGxWaWV3KCk7IH0KQEAgLTY5LDYgKzcxLDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHNldEZvY3VzZWQoYm9vbCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBjYW5TZXRG
b2N1c0F0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNGb2N1c2VkKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGRSZW1vdGVGcmFtZUNoaWxkKCk7CiAKICAgICBEb2N1
bWVudCogZG9jdW1lbnQoKSBjb25zdCBvdmVycmlkZTsKICAgICBMb2NhbEZyYW1lVmlldyogZG9j
dW1lbnRGcmFtZVZpZXcoKSBjb25zdCBvdmVycmlkZTsKQEAgLTg1LDYgKzg4LDcgQEAgcHJpdmF0
ZToKICAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gbV9ob3Jpem9udGFsU2Nyb2xsYmFy
OwogICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBtX3ZlcnRpY2FsU2Nyb2xsYmFyOwog
ICAgIGJvb2wgbV9jaGlsZHJlbkRpcnR5OworICAgIFJlZlB0cjxBWFJlbW90ZUZyYW1lPiBtX3Jl
bW90ZUZyYW1lOwogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KaW5kZXggMmYyOWI3MmZmZTdlLi45MjQzYWQ2YmQz
NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC0xMTEyLDYg
KzExMTIsNyBAQCBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgKmFuY2VzdG9yV2l0
aFJvbGUoY29uc3QgQVhDb3JlT2JqZWN0JiBkZXNjZW5kYQogICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6Oklnbm9yZWQ6CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGluZUJyZWFrOgog
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlByZXNlbnRhdGlvbmFsOgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6OlJlbW90ZUZyYW1lOgogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OlVua25vd246CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRP
YmplY3QuY3BwCmluZGV4IDEwMTQ1NDYyNzhmMy4uMTc3ZDkzOTdhMGE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkT2JqZWN0LmNwcApAQCAtMzc4LDYgKzM3OCwxMCBAQCB2b2lkIEFYSXNvbGF0ZWRPYmpl
Y3Q6OmluaXRpYWxpemVQcm9wZXJ0aWVzKGNvbnN0IFJlZjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiYg
YXhPYgogI2VuZGlmCiAKICAgICBzZXRPYmplY3RQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SW50
ZXJuYWxMaW5rRWxlbWVudCwgb2JqZWN0LmludGVybmFsTGlua0VsZW1lbnQoKSk7CisgICAgc2V0
UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Okhhc1JlbW90ZUZyYW1lQ2hpbGQsIG9iamVjdC5oYXNS
ZW1vdGVGcmFtZUNoaWxkKCkpOworICAgIC8vIERvbid0IGR1cGxpY2F0ZSB0aGUgcmVtb3RlRnJh
bWVPZmZzZXQgZm9yIGV2ZXJ5IG9iamVjdC4gSnVzdCBzdG9yZSBpbiB0aGUgV2ViQXJlYS4KKyAg
ICBpZiAob2JqZWN0LmlzV2ViQXJlYSgpKQorICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5
TmFtZTo6UmVtb3RlRnJhbWVPZmZzZXQsIG9iamVjdC5yZW1vdGVGcmFtZU9mZnNldCgpKTsKIAog
ICAgIGluaXRpYWxpemVQbGF0Zm9ybVByb3BlcnRpZXMoYXhPYmplY3QpOwogfQpAQCAtNDY0LDYg
KzQ2OCw3IEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6c2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBBWFByb3BlcnR5VmFsdWVWCiAgICAgICAgIFtdKE9wdGlvblNldDxB
WEFuY2VzdG9yRmxhZz4mIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWUuaXNFbXB0eSgp
OyB9LAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBbXShSZXRhaW5QdHI8TlNBdHRyaWJ1
dGVkU3RyaW5nPiYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gIXR5cGVkVmFsdWU7IH0sCisgICAgICAg
IFtdKFJldGFpblB0cjxpZD4mIHR5cGVkVmFsdWUpIHsgcmV0dXJuICF0eXBlZFZhbHVlOyB9LAog
I2VuZGlmCiAgICAgICAgIFtdKEluc2lkZUxpbmsmIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVk
VmFsdWUgPT0gSW5zaWRlTGluaygpOyB9LAogICAgICAgICBbXShWZWN0b3I8VmVjdG9yPEFYSUQ+
PiYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZS5pc0VtcHR5KCk7IH0sCkBAIC0xMjA2
LDYgKzEyMTEsMjEgQEAgTGF5b3V0UmVjdCBBWElzb2xhdGVkT2JqZWN0OjplbGVtZW50UmVjdCgp
IGNvbnN0CiAgICAgfSk7CiB9CiAKK0ludFBvaW50IEFYSXNvbGF0ZWRPYmplY3Q6OnJlbW90ZUZy
YW1lT2Zmc2V0KCkgY29uc3QKK3sKKyAgICBhdXRvKiB3ZWJBcmVhID0gQWNjZXNzaWJpbGl0eTo6
ZmluZEFuY2VzdG9yPEFYSXNvbGF0ZWRPYmplY3Q+KCp0aGlzLCBmYWxzZSwgW10gKGNvbnN0IGF1
dG8mIG9iamVjdCkgeworICAgICAgICByZXR1cm4gb2JqZWN0LmlzV2ViQXJlYSgpOworICAgIH0p
OworCisgICAgaWYgKCF3ZWJBcmVhKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgaWYgKGF1
dG8gcG9pbnQgPSB3ZWJBcmVhLT5vcHRpb25hbEF0dHJpYnV0ZVZhbHVlPEludFBvaW50PihBWFBy
b3BlcnR5TmFtZTo6UmVtb3RlRnJhbWVPZmZzZXQpKQorICAgICAgICByZXR1cm4gKnBvaW50Owor
CisgICAgcmV0dXJuIHsgfTsKK30KKwogRmxvYXRQb2ludCBBWElzb2xhdGVkT2JqZWN0OjpzY3Jl
ZW5SZWxhdGl2ZVBvc2l0aW9uKCkgY29uc3QKIHsKICAgICBpZiAoYXV0byBwb2ludCA9IG9wdGlv
bmFsQXR0cmlidXRlVmFsdWU8RmxvYXRQb2ludD4oQVhQcm9wZXJ0eU5hbWU6OlNjcmVlblJlbGF0
aXZlUG9zaXRpb24pKQpAQCAtMTIyOSwyMiArMTI0OSwyMyBAQCBGbG9hdFBvaW50IEFYSXNvbGF0
ZWRPYmplY3Q6OnNjcmVlblJlbGF0aXZlUG9zaXRpb24oKSBjb25zdAogCiBGbG9hdFJlY3QgQVhJ
c29sYXRlZE9iamVjdDo6cmVsYXRpdmVGcmFtZSgpIGNvbnN0CiB7CisgICAgRmxvYXRSZWN0IHJl
bGF0aXZlRnJhbWU7CisKICAgICBpZiAoYXV0byBjYWNoZWRSZWxhdGl2ZUZyYW1lID0gb3B0aW9u
YWxBdHRyaWJ1dGVWYWx1ZTxJbnRSZWN0PihBWFByb3BlcnR5TmFtZTo6UmVsYXRpdmVGcmFtZSkp
IHsKICAgICAgICAgLy8gV2Ugc2hvdWxkIG5vdCBoYXZlIGNhY2hlZCBhIHJlbGF0aXZlIGZyYW1l
IGZvciBlbGVtZW50cyB0aGF0IGdldCB0aGVpciBnZW9tZXRyeSBmcm9tIHRoZWlyIGNoaWxkcmVu
LgogICAgICAgICBBU1NFUlQoIW1fZ2V0c0dlb21ldHJ5RnJvbUNoaWxkcmVuKTsKLSAgICAgICAg
cmV0dXJuICpjYWNoZWRSZWxhdGl2ZUZyYW1lOwotICAgIH0KLQotICAgIGlmIChtX2dldHNHZW9t
ZXRyeUZyb21DaGlsZHJlbikgeworICAgICAgICByZWxhdGl2ZUZyYW1lID0gKmNhY2hlZFJlbGF0
aXZlRnJhbWU7CisgICAgfSBlbHNlIGlmIChtX2dldHNHZW9tZXRyeUZyb21DaGlsZHJlbikgewog
ICAgICAgICBhdXRvIGZyYW1lID0gZW5jbG9zaW5nSW50UmVjdChyZWxhdGl2ZUZyYW1lRnJvbUNo
aWxkcmVuKCkpOwogICAgICAgICBpZiAoIWZyYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJl
dHVybiBmcmFtZTsKKyAgICAgICAgICAgIHJlbGF0aXZlRnJhbWUgPSBmcmFtZTsKICAgICAgICAg
Ly8gRWl0aGVyIHdlIGhhZCBubyBjaGlsZHJlbiwgb3Igb3VyIGNoaWxkcmVuIGhhZCBlbXB0eSBm
cmFtZXMuIFRoZSByaWdodCB0aGluZyB0byBkbyB3b3VsZCBiZSB0byByZXR1cm4KICAgICAgICAg
Ly8gYSByZWN0IGF0IHRoZSBwb3NpdGlvbiBvZiB0aGUgbmVhcmVzdCByZW5kZXIgdHJlZSBhbmNl
c3RvciB3aXRoIHNvbWUgbWFkZS11cCBzaXplIChBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6Ym91
bmRpbmdCb3hSZWN0IGRvZXMgdGhpcykuCiAgICAgICAgIC8vIEhvd2V2ZXIsIHdlIGRvbid0IGhh
dmUgYWNjZXNzIHRvIHRoZSByZW5kZXIgdHJlZSBpbiB0aGlzIGNvbnRleHQgKG9ubHkgdGhlIEFY
IGlzb2xhdGVkIHRyZWUsIHdoaWNoIGlzIHRvbyBzcGFyc2UgZm9yIHRoaXMgcHVycG9zZSksIHNv
CiAgICAgICAgIC8vIHVudGlsIHdlIGNhY2hlIHRoZSBuZWNlc3NhcnkgaW5mb3JtYXRpb24gbGV0
J3MgZ28gdG8gdGhlIG1haW4tdGhyZWFkLgogICAgIH0gZWxzZSBpZiAocm9sZVZhbHVlKCkgPT0g
QWNjZXNzaWJpbGl0eVJvbGU6OkNvbHVtbiB8fCByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5
Um9sZTo6VGFibGVIZWFkZXJDb250YWluZXIpCi0gICAgICAgIHJldHVybiBleHBvc2VkVGFibGVB
bmNlc3RvcigpID8gcmVsYXRpdmVGcmFtZUZyb21DaGlsZHJlbigpIDogRmxvYXRSZWN0KCk7Cisg
ICAgICAgIHJlbGF0aXZlRnJhbWUgPSBleHBvc2VkVGFibGVBbmNlc3RvcigpID8gcmVsYXRpdmVG
cmFtZUZyb21DaGlsZHJlbigpIDogRmxvYXRSZWN0KCk7CisKIAogICAgIC8vIE1vY2sgb2JqZWN0
cyBhbmQgU1ZHIG9iamVjdHMgbmVlZCB1c2UgdGhlIG1haW4gdGhyZWFkIHNpbmNlIHRoZXkgZG8g
bm90IGhhdmUgcmVuZGVyIG5vZGVzIGFuZCBhcmUgbm90IHBhaW50ZWQgd2l0aCBsYXllcnMsIHJl
c3BlY3RpdmVseS4KICAgICAvLyBGSVhNRTogUmVtb3ZlIGlzTm9uTGF5ZXJTVkdPYmplY3Qgd2hl
biBMQlNFIGlzIGVuYWJsZWQgJiBTVkcgZnJhbWVzIGFyZSBjYWNoZWQuCkBAIC0xMjY2LDYgKzEy
ODcsOCBAQCBGbG9hdFJlY3QgQVhJc29sYXRlZE9iamVjdDo6cmVsYXRpdmVGcmFtZSgpIGNvbnN0
CiAgICAgaWYgKGFuY2VzdG9yICYmIGZyYW1lUmVjdC5sb2NhdGlvbigpID09IEZsb2F0UG9pbnQo
KSkKICAgICAgICAgZnJhbWVSZWN0LnNldExvY2F0aW9uKGFuY2VzdG9yLT5yZWxhdGl2ZUZyYW1l
KCkubG9jYXRpb24oKSk7CiAKKyAgICBhdXRvIHJlbW90ZU9mZnNldCA9IHJlbW90ZUZyYW1lT2Zm
c2V0KCk7CisgICAgZnJhbWVSZWN0Lm1vdmVCeShGbG9hdFBvaW50KHJlbW90ZU9mZnNldCkpOwog
ICAgIHJldHVybiBmcmFtZVJlY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaAppbmRleCBk
MmE2NmMyZjUzZTQuLmRlODI3ZDVmZTAxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaApAQCAt
MjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAK
ICNpbmNsdWRlICJBWENvcmVPYmplY3QuaCIKKyNpbmNsdWRlICJBWElzb2xhdGVkVHJlZS5oIgog
I2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1
ZGUgIkxheW91dFJlY3QuaCIKQEAgLTIxNSw2ICsyMTYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
aXNGaWxlVXBsb2FkQnV0dG9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZh
bHVlKEFYUHJvcGVydHlOYW1lOjpJc0ZpbGVVcGxvYWRCdXR0b24pOyB9CiAgICAgYm9vbCBpc01l
dGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlO
YW1lOjpJc01ldGVyKTsgfTsKICAgICBGbG9hdFBvaW50IHNjcmVlblJlbGF0aXZlUG9zaXRpb24o
KSBjb25zdCBmaW5hbDsKKyAgICBJbnRQb2ludCByZW1vdGVGcmFtZU9mZnNldCgpIGNvbnN0IGZp
bmFsOwogICAgIEZsb2F0UmVjdCByZWxhdGl2ZUZyYW1lKCkgY29uc3QgZmluYWw7CiAgICAgYm9v
bCBoYXNDYWNoZWRSZWxhdGl2ZUZyYW1lKCkgY29uc3QgeyByZXR1cm4gb3B0aW9uYWxBdHRyaWJ1
dGVWYWx1ZTxJbnRSZWN0PihBWFByb3BlcnR5TmFtZTo6UmVsYXRpdmVGcmFtZSkuaGFzX3ZhbHVl
KCk7IH0KICNpZiBQTEFURk9STShNQUMpCkBAIC0yNjMsNyArMjY1LDcgQEAgcHJpdmF0ZToKICAg
ICBBWElzb2xhdGVkT2JqZWN0KiBhY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYp
IGNvbnN0IGZpbmFsOwogICAgIEFYSXNvbGF0ZWRPYmplY3QqIGZvY3VzZWRVSUVsZW1lbnQoKSBj
b25zdCBmaW5hbDsKICAgICBBWENvcmVPYmplY3QqIGludGVybmFsTGlua0VsZW1lbnQoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBvYmplY3RBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SW50
ZXJuYWxMaW5rRWxlbWVudCk7IH0KLSAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgcmFk
aW9CdXR0b25Hcm91cCgpIGNvbnN0IHsgcmV0dXJuIHRyZWUoKS0+b2JqZWN0c0ZvcklEcyh2ZWN0
b3JBdHRyaWJ1dGVWYWx1ZTxBWElEPihBWFByb3BlcnR5TmFtZTo6UmFkaW9CdXR0b25Hcm91cCkp
OyB9CisgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHJhZGlvQnV0dG9uR3JvdXAoKSBj
b25zdCBmaW5hbCB7IHJldHVybiB0cmVlKCktPm9iamVjdHNGb3JJRHModmVjdG9yQXR0cmlidXRl
VmFsdWU8QVhJRD4oQVhQcm9wZXJ0eU5hbWU6OlJhZGlvQnV0dG9uR3JvdXApKTsgfQogICAgIEFY
SXNvbGF0ZWRPYmplY3QqIHNjcm9sbEJhcihBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24pIGZpbmFs
OwogICAgIGNvbnN0IFN0cmluZyBwbGFjZWhvbGRlclZhbHVlKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlBsYWNlaG9sZGVyVmFsdWUp
OyB9CiAgICAgU3RyaW5nIGV4cGFuZGVkVGV4dFZhbHVlKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
c3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkV4cGFuZGVkVGV4dFZhbHVlKTsg
fQpAQCAtNDU2LDcgKzQ1OCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlB
UklBR3JpZEluc3RhbmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29s
IGlzQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93SW5zdGFuY2UoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBmYWxzZTsgfQogICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsSW5zdGFuY2Uo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQotCisgICAgYm9vbCBpc0FYUmVtb3RlRnJh
bWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNOYXRpdmVUZXh0
Q29udHJvbCgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaXNMaXN0Qm94T3B0aW9uKCkgY29uc3Qg
ZmluYWw7CiAgICAgYm9vbCBpc01vY2tPYmplY3QoKSBjb25zdCBmaW5hbDsKQEAgLTUzNyw3ICs1
MzksOSBAQCBwcml2YXRlOgogICAgIFN0cmluZyBuYW1lQXR0cmlidXRlKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Ok5hbWVBdHRyaWJ1
dGUpOyB9CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgYm9vbCBoYXNBcHBsZVBERkFubm90YXRp
b25BdHRyaWJ1dGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQ
cm9wZXJ0eU5hbWU6Okhhc0FwcGxlUERGQW5ub3RhdGlvbkF0dHJpYnV0ZSk7IH0KKyAgICBSZXRh
aW5QdHI8aWQ+IHJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkgY29uc3QgZmluYWw7CiAjZW5k
aWYKKyAgICBib29sIGhhc1JlbW90ZUZyYW1lQ2hpbGQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBi
b29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Okhhc1JlbW90ZUZyYW1lQ2hpbGQpOyB9
CiAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAgVmVj
dG9yPFJldGFpblB0cjxpZD4+IG1vZGVsRWxlbWVudENoaWxkcmVuKCkgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
VHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkVHJlZS5jcHAKaW5kZXggNjk2NjU4NDQ4ZjY1Li4xYmUzYjc5OTA1MzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRU
cmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9B
WElzb2xhdGVkVHJlZS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkFYSXNvbGF0
ZWRPYmplY3QuaCIKICNpbmNsdWRlICJBWExvZ2dlci5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxp
dHlUYWJsZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZVJvdy5oIgogI2luY2x1ZGUg
IkZyYW1lU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAiTG9jYWxGcmFtZVZpZXcuaCIKQEAgLTIyNSw0
NiArMjI2LDI2IEBAIFJlZlB0cjxBWElzb2xhdGVkT2JqZWN0PiBBWElzb2xhdGVkVHJlZTo6b2Jq
ZWN0Rm9ySUQoY29uc3QgQVhJRCBheElEKSBjb25zdAogICAgIHJldHVybiBheElELmlzVmFsaWQo
KSA/IG1fcmVhZGVyVGhyZWFkTm9kZU1hcC5nZXQoYXhJRCkgOiBudWxscHRyOwogfQogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBVPgotVmVjdG9yPFJlZlB0cjxBWENvcmVPYmplY3Q+PiBBWElzb2xhdGVk
VHJlZTo6b2JqZWN0c0ZvcklEcyhjb25zdCBVJiBheElEcykKK1JlZlB0cjxBWElzb2xhdGVkT2Jq
ZWN0PiBBWElzb2xhdGVkVHJlZTo6ZmV0Y2hPYmplY3RGb3JJREZyb21NYWluVGhyZWFkKGNvbnN0
IEFYSUQgYXhJRCkgY29uc3QKIHsKLSAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLQotICAg
IFZlY3RvcjxSZWZQdHI8QVhDb3JlT2JqZWN0Pj4gcmVzdWx0OwotICAgIHJlc3VsdC5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KGF4SURzLnNpemUoKSk7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBheElE
IDogYXhJRHMpIHsKLSAgICAgICAgUmVmUHRyIG9iamVjdCA9IG9iamVjdEZvcklEKGF4SUQpOwot
ICAgICAgICBpZiAob2JqZWN0KSB7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKFdURk1vdmUo
b2JqZWN0KSk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8v
IFRoZXJlIGlzIG5vIGlzb2xhdGVkIG9iamVjdCBmb3IgdGhpcyBBWElELiBUaGlzIGNhbiBoYXBw
ZW4gaWYgdGhlIGNvcnJlc3BvbmRpbmcgbGl2ZSBvYmplY3QgaXMgaWdub3JlZC4KLSAgICAgICAg
Ly8gSWYgdGhlcmUgaXMgYSBsaXZlIG9iamVjdCBmb3IgdGhpcyBJRCBhbmQgaXQgaXMgYW4gaWdu
b3JlZCB0YXJnZXQgb2YgYSByZWxhdGlvbnNoaXAsIGNyZWF0ZSBhbiBpc29sYXRlZCBvYmplY3Qg
Zm9yIGl0LgotICAgICAgICBvYmplY3QgPSBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZVZhbHVlRnJv
bU1haW5UaHJlYWQ8UmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+PihbJmF4SUQsIHRoaXNdICgpIC0+
IFJlZlB0cjxBWElzb2xhdGVkT2JqZWN0PiB7Ci0gICAgICAgICAgICBhdXRvKiBjYWNoZSA9IGF4
T2JqZWN0Q2FjaGUoKTsKLSAgICAgICAgICAgIGlmICghY2FjaGUgfHwgIWNhY2hlLT5yZWxhdGlv
blRhcmdldElEcygpLmNvbnRhaW5zKGF4SUQpKQotICAgICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwotCi0gICAgICAgICAgICBSZWZQdHIgYXhPYmplY3QgPSBjYWNoZS0+b2JqZWN0Rm9ySUQo
YXhJRCk7Ci0gICAgICAgICAgICBpZiAoIWF4T2JqZWN0IHx8ICFheE9iamVjdC0+YWNjZXNzaWJp
bGl0eUlzSWdub3JlZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAg
ICAgICAgICBhdXRvIG9iamVjdCA9IEFYSXNvbGF0ZWRPYmplY3Q6OmNyZWF0ZSgqYXhPYmplY3Qs
IGNvbnN0X2Nhc3Q8QVhJc29sYXRlZFRyZWUqPih0aGlzKSk7Ci0gICAgICAgICAgICBBU1NFUlQo
YXhPYmplY3QtPndyYXBwZXIoKSk7Ci0gICAgICAgICAgICBvYmplY3QtPmF0dGFjaFBsYXRmb3Jt
V3JhcHBlcihheE9iamVjdC0+d3JhcHBlcigpKTsKLSAgICAgICAgICAgIHJldHVybiBvYmplY3Q7
Ci0gICAgICAgIH0pOwotICAgICAgICBpZiAob2JqZWN0KSB7Ci0gICAgICAgICAgICBtX3JlYWRl
clRocmVhZE5vZGVNYXAuYWRkKGF4SUQsICpvYmplY3QpOwotICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZChXVEZNb3ZlKG9iamVjdCkpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJlc3VsdC5zaHJp
bmtUb0ZpdCgpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgLy8gVGhlcmUgaXMgbm8gaXNvbGF0
ZWQgb2JqZWN0IGZvciB0aGlzIEFYSUQuIFRoaXMgY2FuIGhhcHBlbiBpZiB0aGUgY29ycmVzcG9u
ZGluZyBsaXZlIG9iamVjdCBpcyBpZ25vcmVkLgorICAgIC8vIElmIHRoZXJlIGlzIGEgbGl2ZSBv
YmplY3QgZm9yIHRoaXMgSUQgYW5kIGl0IGlzIGFuIGlnbm9yZWQgdGFyZ2V0IG9mIGEgcmVsYXRp
b25zaGlwLCBjcmVhdGUgYW4gaXNvbGF0ZWQgb2JqZWN0IGZvciBpdC4KKyAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhyZWFkPFJlZlB0cjxBWElzb2xhdGVk
T2JqZWN0Pj4oWyZheElELCB0aGlzXSAoKSAtPiBSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4gewor
ICAgICAgICBhdXRvKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsKKyAgICAgICAgaWYgKCFjYWNo
ZSB8fCAhY2FjaGUtPnJlbGF0aW9uVGFyZ2V0SURzKCkuY29udGFpbnMoYXhJRCkpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBSZWZQdHIgYXhPYmplY3QgPSBjYWNoZS0+
b2JqZWN0Rm9ySUQoYXhJRCk7CisgICAgICAgIGlmICghYXhPYmplY3QgfHwgIWF4T2JqZWN0LT5h
Y2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgICAgICBhdXRvIG9iamVjdCA9IEFYSXNvbGF0ZWRPYmplY3Q6OmNyZWF0ZSgqYXhPYmplY3Qs
IGNvbnN0X2Nhc3Q8QVhJc29sYXRlZFRyZWUqPih0aGlzKSk7CisgICAgICAgIEFTU0VSVChheE9i
amVjdC0+d3JhcHBlcigpKTsKKyAgICAgICAgb2JqZWN0LT5hdHRhY2hQbGF0Zm9ybVdyYXBwZXIo
YXhPYmplY3QtPndyYXBwZXIoKSk7CisgICAgICAgIHJldHVybiBvYmplY3Q7CisgICAgfSk7CiB9
CiAKLQogdm9pZCBBWElzb2xhdGVkVHJlZTo6Z2VuZXJhdGVTdWJ0cmVlKEFjY2Vzc2liaWxpdHlP
YmplY3QmIGF4T2JqZWN0KQogewogICAgIEFYVFJBQ0UoIkFYSXNvbGF0ZWRUcmVlOjpnZW5lcmF0
ZVN1YnRyZWUiX3MpOwpAQCAtNjYwLDYgKzY0MSwxMiBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjp1
cGRhdGVOb2RlUHJvcGVydGllcyhBWENvcmVPYmplY3QmIGF4T2JqZWN0LCBjb25zdCBBWFByb3Bl
cgogICAgICAgICBjYXNlIEFYUHJvcGVydHlOYW1lOjpQb3NJblNldDoKICAgICAgICAgICAgIHBy
b3BlcnR5TWFwLnNldChBWFByb3BlcnR5TmFtZTo6UG9zSW5TZXQsIGF4T2JqZWN0LnBvc0luU2V0
KCkpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQVhQcm9wZXJ0eU5hbWU6OlJl
bW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50OgorICAgICAgICAgICAgcHJvcGVydHlNYXAuc2V0KEFY
UHJvcGVydHlOYW1lOjpSZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCwgYXhPYmplY3QucmVtb3Rl
RnJhbWVQbGF0Zm9ybUVsZW1lbnQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBBWFByb3BlcnR5TmFtZTo6SGFzUmVtb3RlRnJhbWVDaGlsZDoKKyAgICAgICAgICAgIHByb3Bl
cnR5TWFwLnNldChBWFByb3BlcnR5TmFtZTo6SGFzUmVtb3RlRnJhbWVDaGlsZCwgYXhPYmplY3Qu
aGFzUmVtb3RlRnJhbWVDaGlsZCgpKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IEFYUHJvcGVydHlOYW1lOjpSb2xlRGVzY3JpcHRpb246CiAgICAgICAgICAgICBwcm9wZXJ0eU1h
cC5zZXQoQVhQcm9wZXJ0eU5hbWU6OlJvbGVEZXNjcmlwdGlvbiwgYXhPYmplY3Qucm9sZURlc2Ny
aXB0aW9uKCkuaXNvbGF0ZWRDb3B5KCkpOwogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJl
ZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZFRyZWUuaAppbmRleCBhNDE3OTI3OTc4ZDIuLjZiNGM1ZTgzMzFhMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
VHJlZS5oCkBAIC0xMDQsNiArMTA0LDcgQEAgZW51bSBjbGFzcyBBWFByb3BlcnR5TmFtZSA6IHVp
bnQxNl90IHsKICAgICBIYXNIaWdobGlnaHRpbmcsCiAgICAgSGFzSXRhbGljRm9udCwKICAgICBI
YXNQbGFpblRleHQsCisgICAgSGFzUmVtb3RlRnJhbWVDaGlsZCwKICAgICBIYXNVbmRlcmxpbmUs
CiAgICAgSGVhZGVyQ29udGFpbmVyLAogICAgIEhlYWRpbmdMZXZlbCwKQEAgLTIwMSw2ICsyMDIs
OCBAQCBlbnVtIGNsYXNzIEFYUHJvcGVydHlOYW1lIDogdWludDE2X3QgewogICAgIFByZXZlbnRL
ZXlib2FyZERPTUV2ZW50RGlzcGF0Y2gsCiAgICAgUmFkaW9CdXR0b25Hcm91cCwKICAgICBSZWxh
dGl2ZUZyYW1lLAorICAgIFJlbW90ZUZyYW1lT2Zmc2V0LAorICAgIFJlbW90ZUZyYW1lUGxhdGZv
cm1FbGVtZW50LAogICAgIFJvbGVWYWx1ZSwKICAgICBSb2xlUGxhdGZvcm1TdHJpbmcsCiAgICAg
Um9sZURlc2NyaXB0aW9uLApAQCAtMjU3LDYgKzI2MCw3IEBAIHVzaW5nIEFYUHJvcGVydHlOYW1l
U2V0ID0gSGFzaFNldDxBWFByb3BlcnR5TmFtZSwgSW50SGFzaDxBWFByb3BlcnR5TmFtZT4sIFdU
Rjo6CiB1c2luZyBBWFByb3BlcnR5VmFsdWVWYXJpYW50ID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVs
bHB0cl90LCBBWElELCBTdHJpbmcsIGJvb2wsIGludCwgdW5zaWduZWQsIGRvdWJsZSwgZmxvYXQs
IHVpbnQ2NF90LCBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGUsIENvbG9yLCBVUkwsIExheW91dFJl
Y3QsIEZsb2F0UG9pbnQsIEZsb2F0UmVjdCwgSW50UG9pbnQsIEludFJlY3QsIHN0ZDo6cGFpcjx1
bnNpZ25lZCwgdW5zaWduZWQ+LCBWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+LCBWZWN0b3I8QVhJ
RD4sIFZlY3RvcjxzdGQ6OnBhaXI8QVhJRCwgQVhJRD4+LCBWZWN0b3I8U3RyaW5nPiwgUGF0aCwg
T3B0aW9uU2V0PEFYQW5jZXN0b3JGbGFnPiwgSW5zaWRlTGluaywgVmVjdG9yPFZlY3RvcjxBWElE
Pj4sIENoYXJhY3RlclJhbmdlLCBzdGQ6OnBhaXI8QVhJRCwgQ2hhcmFjdGVyUmFuZ2U+CiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgLCBSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPgorICAg
ICwgUmV0YWluUHRyPGlkPgogI2VuZGlmCiAjaWYgRU5BQkxFKEFYX1RIUkVBRF9URVhUX0FQSVMp
CiAgICAgLCBBWFRleHRSdW5zCkBAIC0zOTcsNiArNDAxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGNyZWF0ZUVtcHR5Q29udGVudChBY2Nlc3NpYmlsaXR5T2JqZWN0Jik7CiAgICAgY29uc3RleHBy
IGJvb2wgaXNVcGRhdGluZ1N1YnRyZWUoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RPZlN1YnRyZWVC
ZWluZ1VwZGF0ZWQ7IH0KICAgICBjb25zdGV4cHIgdm9pZCB1cGRhdGluZ1N1YnRyZWUoQWNjZXNz
aWJpbGl0eU9iamVjdCogYXhPYmplY3QpIHsgbV9yb290T2ZTdWJ0cmVlQmVpbmdVcGRhdGVkID0g
YXhPYmplY3Q7IH0KKyAgICBSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4gZmV0Y2hPYmplY3RGb3JJ
REZyb21NYWluVGhyZWFkKGNvbnN0IEFYSUQpIGNvbnN0OwogCiAgICAgZW51bSBjbGFzcyBBdHRh
Y2hXcmFwcGVyIDogYm9vbCB7IE9uTWFpblRocmVhZCwgT25BWFRocmVhZCB9OwogICAgIHN0cnVj
dCBOb2RlQ2hhbmdlIHsKQEAgLTQ5Nyw2ICs1MDIsMzAgQEAgaW5saW5lIFJlZlB0cjxBWElzb2xh
dGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OnRyZWVGb3JQYWdlSUQoc3RkOjpvcHRpb25hbDxQYWdl
SWQKICAgICByZXR1cm4gcGFnZUlEID8gdHJlZUZvclBhZ2VJRCgqcGFnZUlEKSA6IG51bGxwdHI7
CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFU+CitpbmxpbmUgVmVjdG9yPFJlZlB0cjxBWENvcmVP
YmplY3Q+PiBBWElzb2xhdGVkVHJlZTo6b2JqZWN0c0ZvcklEcyhjb25zdCBVJiBheElEcykKK3sK
KyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKworICAgIFZlY3RvcjxSZWZQdHI8QVhDb3Jl
T2JqZWN0Pj4gcmVzdWx0OworICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGF4SURz
LnNpemUoKSk7CisgICAgZm9yIChjb25zdCBhdXRvJiBheElEIDogYXhJRHMpIHsKKyAgICAgICAg
UmVmUHRyIG9iamVjdCA9IG9iamVjdEZvcklEKGF4SUQpOworICAgICAgICBpZiAob2JqZWN0KSB7
CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFdURk1vdmUob2JqZWN0KSk7CisgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIG9iamVjdCA9IGZldGNoT2JqZWN0Rm9y
SURGcm9tTWFpblRocmVhZChheElEKTsKKyAgICAgICAgaWYgKG9iamVjdCkgeworICAgICAgICAg
ICAgbV9yZWFkZXJUaHJlYWROb2RlTWFwLmFkZChheElELCAqb2JqZWN0KTsKKyAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoV1RGTW92ZShvYmplY3QpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBy
ZXN1bHQuc2hyaW5rVG9GaXQoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9tYWMvQVhJc29sYXRlZE9iamVjdE1h
Yy5tbQppbmRleCBhZGI3ZWM2NDgzNDUuLmUwMmRhMGQxMTJiNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvbWFj
L0FYSXNvbGF0ZWRPYmplY3RNYWMubW0KQEAgLTYzLDYgKzYzLDggQEAgdm9pZCBBWElzb2xhdGVk
T2JqZWN0Ojppbml0aWFsaXplUGxhdGZvcm1Qcm9wZXJ0aWVzKGNvbnN0IFJlZjxjb25zdCBBY2Nl
c3NpYmlsaXQKICAgICAgICAgfQogICAgIH0KIAorICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlO
YW1lOjpSZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCwgb2JqZWN0LT5yZW1vdGVGcmFtZVBsYXRm
b3JtRWxlbWVudCgpKTsKKwogICAgIC8vIENhY2hlIHRoZSBTdHJpbmdWYWx1ZSBvbmx5IGlmIGl0
IGRpZmZlcnMgZnJvbSB0aGUgQXR0cmlidXRlZFRleHQuCiAgICAgYXV0byB2YWx1ZSA9IG9iamVj
dC0+c3RyaW5nVmFsdWUoKTsKICAgICBpZiAoIWF0dHJpYnV0ZWRUZXh0IHx8IHZhbHVlICE9IFN0
cmluZyhbYXR0cmlidXRlZFRleHQgc3RyaW5nXSkpCkBAIC0yMDIsNiArMjA0LDExIEBAIHVuc2ln
bmVkIEFYSXNvbGF0ZWRPYmplY3Q6OnRleHRMZW5ndGgoKSBjb25zdAogICAgIHJldHVybiAwOwog
fQogCitSZXRhaW5QdHI8aWQ+IEFYSXNvbGF0ZWRPYmplY3Q6OnJlbW90ZUZyYW1lUGxhdGZvcm1F
bGVtZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gcHJvcGVydHlWYWx1ZTxSZXRhaW5QdHI8aWQ+
PihBWFByb3BlcnR5TmFtZTo6UmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQpOworfQorCiBSZXRh
aW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiBBWElzb2xhdGVkT2JqZWN0OjphdHRyaWJ1dGVkU3Ry
aW5nRm9yVGV4dE1hcmtlclJhbmdlKEFYVGV4dE1hcmtlclJhbmdlJiYgbWFya2VyUmFuZ2UsIFNw
ZWxsQ2hlY2sgc3BlbGxDaGVjaykgY29uc3QKIHsKICAgICBpZiAoIW1hcmtlclJhbmdlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9i
amVjdE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxp
dHlPYmplY3RNYWMubW0KaW5kZXggYmEyYWNjZDgwZDA0Li43YzdhNGYwNDk1N2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0
eU9iamVjdE1hYy5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1w
b3J0ICJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCiAKKyNpbXBvcnQgIkFYUmVtb3RlRnJhbWUuaCIK
ICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlMYWJlbC5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUxp
c3QuaCIKICNpbXBvcnQgIkNvbG9yQ29jb2EuaCIKQEAgLTUxLDYgKzUyLDcgQEAKICNpbXBvcnQg
IldlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLmgiCiAjaW1wb3J0ICJXaWRnZXQuaCIK
IAorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0FjY2Vzc2liaWxpdHlTUEkuaD4KICNpbXBvcnQg
PHBhbC9zcGkvbWFjL05TU3BlbGxDaGVja2VyU1BJLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTc0OSw2ICs3NTEsMjQgQEAgUmV0YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4gYXR0cmli
dXRlZFN0cmluZ0NyZWF0ZShOb2RlKiBub2RlLCBTdHJpbmdWaWV3IHRleHQKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCitzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gQVhSZW1vdGVGcmFtZTo6Z2Vu
ZXJhdGVSZW1vdGVUb2tlbigpIGNvbnN0Cit7CisgICAgLy8gV2UgdXNlIHRoZSBwYXJlbnQncyB3
cmFwcGVyIHNvIHRoYXQgdGhlIHJlbW90ZSBmcmFtZSBhY3RzIGFzIGEgcGFzcyB0aHJvdWdoIGZv
ciB0aGUgcmVtb3RlIHRva2VuIGJyaWRnZS4KKyAgICBOU0RhdGEgKmRhdGEgPSBbTlNBY2Nlc3Np
YmlsaXR5UmVtb3RlVUlFbGVtZW50IHJlbW90ZVRva2VuRm9yTG9jYWxVSUVsZW1lbnQ6cGFyZW50
T2JqZWN0KCktPndyYXBwZXIoKV07CisgICAgcmV0dXJuIHN0ZDo6c3BhbihzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7Cit9CisKK3ZvaWQg
QVhSZW1vdGVGcmFtZTo6aW5pdGlhbGl6ZVBsYXRmb3JtRWxlbWVudFdpdGhSZW1vdGVUb2tlbihz
dGQ6OnNwYW48Y29uc3QgdWludDhfdD4gdG9rZW4sIGludCBwcm9jZXNzSWRlbnRpZmllcikKK3sK
KyAgICBtX3Byb2Nlc3NJZGVudGlmaWVyID0gcHJvY2Vzc0lkZW50aWZpZXI7CisgICAgaWYgKFt3
cmFwcGVyKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihhY2Nlc3NpYmlsaXR5U2V0UHJl
c2VudGVyUHJvY2Vzc0lkZW50aWZpZXI6KV0pCisgICAgICAgIFsoaWQpd3JhcHBlcigpIGFjY2Vz
c2liaWxpdHlTZXRQcmVzZW50ZXJQcm9jZXNzSWRlbnRpZmllcjpwcm9jZXNzSWRlbnRpZmllcl07
CisgICAgTlNEYXRhICp0b2tlbkRhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6dG9rZW4uZGF0
YSgpIGxlbmd0aDp0b2tlbi5zaXplKCldOworICAgIG1fcmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1l
bnQgPSBhZG9wdE5TKFtbTlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlFbGVtZW50IGFsbG9jXSBpbml0
V2l0aFJlbW90ZVRva2VuOnRva2VuRGF0YV0pOworCisgICAgYXhPYmplY3RDYWNoZSgpLT5vblJl
bW90ZUZyYW1lSW5pdGlhbGl6ZWQoKnRoaXMpOworfQorCiBuYW1lc3BhY2UgQWNjZXNzaWJpbGl0
eSB7CiAKIFBsYXRmb3JtUm9sZU1hcCBjcmVhdGVQbGF0Zm9ybVJvbGVNYXAoKQpAQCAtODkxLDYg
KzkxMSw3IEBAIFBsYXRmb3JtUm9sZU1hcCBjcmVhdGVQbGF0Zm9ybVJvbGVNYXAoKQogICAgICAg
ICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpTdXBlcnNjcmlwdCwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBS
b2xlIH0sCiAgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6Ok1vZGVsLCBOU0FjY2Vzc2liaWxp
dHlHcm91cFJvbGUgfSwKICAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6U3VnZ2VzdGlvbiwg
TlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6
OlJlbW90ZUZyYW1lLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKICAgICB9OwogICAgIFBs
YXRmb3JtUm9sZU1hcCByb2xlTWFwOwogICAgIGZvciAoYXV0byYgcm9sZSA6IHJvbGVzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJCYXNlLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCmluZGV4IDYzNTdmYTdjMjcxYi4u
ZjE0MjQ1ZmMzYjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1t
CkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0ICJBWENvcmVPYmplY3QuaCIKICNpbXBvcnQgIkFY
SXNvbGF0ZWRPYmplY3QuaCIKICNpbXBvcnQgIkFYT2JqZWN0Q2FjaGUuaCIKKyNpbXBvcnQgIkFY
UmVtb3RlRnJhbWUuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5oIgogI2lt
cG9ydCAiQWNjZXNzaWJpbGl0eUxpc3QuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlMaXN0Qm94
LmgiCkBAIC0yNjUsMTMgKzI2NiwxMyBAQCBOU0FycmF5ICptYWtlTlNBcnJheShjb25zdCBXZWJD
b3JlOjpBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgYwogICAgICAg
ICAgICAgcmV0dXJuIG5pbDsKIAogICAgICAgICBhdXRvIHdyYXBwZXIgPSBjaGlsZC0+d3JhcHBl
cigpOwotCiAgICAgICAgIC8vIFdlIHdhbnQgdG8gcmV0dXJuIHRoZSBhdHRhY2htZW50IHZpZXcg
aW5zdGVhZCBvZiB0aGUgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgYXR0YWNobWVudCwKICAgICAg
ICAgLy8gb3RoZXJ3aXNlLCB3ZSBnZXQgcGFsaW5kcm9tZSBlcnJvcnMgaW4gdGhlIEFYIGhpZXJh
cmNoeS4KICAgICAgICAgaWYgKGNoaWxkLT5pc0F0dGFjaG1lbnQoKSkgewogICAgICAgICAgICAg
aWYgKGlkIGF0dGFjaG1lbnRWaWV3ID0gd3JhcHBlci5hdHRhY2htZW50VmlldykKICAgICAgICAg
ICAgICAgICByZXR1cm4gYXR0YWNobWVudFZpZXc7Ci0gICAgICAgIH0KKyAgICAgICAgfSBlbHNl
IGlmIChjaGlsZC0+aXNSZW1vdGVGcmFtZSgpKQorICAgICAgICAgICAgcmV0dXJuIGNoaWxkLT5y
ZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpLmdldCgpOwogCiAgICAgICAgIHJldHVybiB3cmFw
cGVyOwogICAgIH0pLmF1dG9yZWxlYXNlKCk7CkBAIC0zODksNyArMzkwLDcgQEAgTlNBcnJheSAq
bWFrZU5TQXJyYXkoY29uc3QgV2ViQ29yZTo6QVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImIGMKIC0gKEJPT0wpaXNJc29sYXRlZE9iamVjdAogewogI2lmIEVOQUJMRShB
Q0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCi0gICAgYXV0byogYmFja2luZ09iamVjdCA9IHNl
bGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0ciBiYWNraW5nT2JqZWN0ID0gZHluYW1pY0Rv
d25jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3Q+KHNlbGYuYmFzZVVwZGF0ZUJhY2tpbmdTdG9yZSk7
CiAgICAgcmV0dXJuIGJhY2tpbmdPYmplY3QgJiYgYmFja2luZ09iamVjdC0+aXNBWElzb2xhdGVk
T2JqZWN0SW5zdGFuY2UoKTsKICNlbHNlCiAgICAgcmV0dXJuIE5POwpAQCAtNTIzLDcgKzUyNCw3
IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRQYXRoVG9TY3JlZW5TcGFjZUZ1bmN0aW9uKFBhdGhDb252
ZXJzaW9uSW5mbyYgY29udmVyc2lvbiwgY29uCiAKIC0gKENHUmVjdCljb252ZXJ0UmVjdFRvU3Bh
Y2U6KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpcmVjdCBzcGFjZTooQWNjZXNzaWJpbGl0eUNv
bnZlcnNpb25TcGFjZSlzcGFjZQogewotICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4
QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHIgYmFja2luZ09iamVjdCA9IGR5bmFtaWNEb3duY2Fz
dDxBY2Nlc3NpYmlsaXR5T2JqZWN0PihzZWxmLmJhc2VVcGRhdGVCYWNraW5nU3RvcmUpOwogICAg
IGlmICghYmFja2luZ09iamVjdCkKICAgICAgICAgcmV0dXJuIENHUmVjdFplcm87CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggNmM1ZTZiN2FjZDljLi43NTAy
ZDlhMGU0OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC0z
NCw2ICszNCw3IEBACiAjaW1wb3J0ICJBWElzb2xhdGVkT2JqZWN0LmgiCiAjaW1wb3J0ICJBWExv
Z2dlci5oIgogI2ltcG9ydCAiQVhPYmplY3RDYWNoZS5oIgorI2ltcG9ydCAiQVhSZW1vdGVGcmFt
ZS5oIgogI2ltcG9ydCAiQVhUZXh0TWFya2VyLmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5QVJJ
QUdyaWRSb3cuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlMYWJlbC5oIgpAQCAtNDc5LDYgKzQ4
MCwxMCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5
VGV4dElucHV0TWFya2VkVGV4dE1hcmtlclJhbmdlQXR0cmlidXRlIEAiQVhUZXh0SW5wdXRNYXJr
ZWRUZXh0TWFya2VyUmFuZ2UiCiAjZW5kaWYKIAorI2lmbmRlZiBrQVhDb252ZXJ0UmVsYXRpdmVG
cmFtZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUKKyNkZWZpbmUga0FYQ29udmVydFJlbGF0aXZlRnJh
bWVQYXJhbWV0ZXJpemVkQXR0cmlidXRlIEAiQVhDb252ZXJ0UmVsYXRpdmVGcmFtZSIKKyNlbmRp
ZgorCiBAaW1wbGVtZW50YXRpb24gV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIKIAogLSAo
dm9pZClkZXRhY2gKQEAgLTY5Miw3ICs2OTcsNyBAQCBzdGF0aWMgUmV0YWluUHRyPEFYVGV4dE1h
cmtlclJlZj4gcHJldmlvdXNUZXh0TWFya2VyKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdAog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0
ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2lu
Z09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OwogICAgIGlmICghYmFja2luZ09iamVjdCkK
ICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMTI1Niw3ICsxMjYxLDcgQEAgQUxMT1dfREVQUkVD
QVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAKIC0gKE5TQXJyYXkgKilyZW5kZXJXaWRnZXRDaGls
ZHJlbgogewotICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsK
KyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdP
YmplY3Q7CiAgICAgaWYgKCFiYWNraW5nT2JqZWN0IHx8ICFiYWNraW5nT2JqZWN0LT5pc1dpZGdl
dCgpKQogICAgICAgICByZXR1cm4gbmlsOwogCkBAIC0xMjc5LDcgKzEyODQsNyBAQCBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogLSAoaWQpcmVtb3RlQWNjZXNzaWJpbGl0eVBh
cmVudE9iamVjdAogewotICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09i
amVjdDsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJh
Y2tpbmdPYmplY3Q7CiAgICAgcmV0dXJuIGJhY2tpbmdPYmplY3QgPyBiYWNraW5nT2JqZWN0LT5y
ZW1vdGVQYXJlbnRPYmplY3QoKSA6IG5pbDsKIH0KIApAQCAtMTI5Niw3ICsxMzAxLDcgQEAgc3Rh
dGljIHZvaWQgY29udmVydFRvVmVjdG9yKE5TQXJyYXkqIGFycmF5LCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpBY2Nlc3NpYmlsaXR5Q2gKIAogLSAoQVhUZXh0TWFya2VyUmFuZ2VSZWYpc2VsZWN0ZWRU
ZXh0TWFya2VyUmFuZ2UKIHsKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tp
bmdPYmplY3Q7CisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNlbGYu
YXhCYWNraW5nT2JqZWN0OwogICAgIGlmICghYmFja2luZ09iamVjdCkKICAgICAgICAgcmV0dXJu
IG5pbDsKIApAQCAtMTM2NiwxMiArMTM3MSwxOCBAQCBzdGF0aWMgdm9pZCBXZWJUcmFuc2Zvcm1D
R1BhdGhUb05TQmV6aWVyUGF0aCh2b2lkKiBpbmZvLCBjb25zdCBDR1BhdGhFbGVtZW50ICplbAog
CiAtIChOU1N0cmluZyopcm9sZQogeworICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+IGJhY2tpbmdP
YmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBpZiAoIWJhY2tpbmdPYmplY3QpCisg
ICAgICAgIHJldHVybiBuaWw7CisKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lO
Ci0gICAgaWYgKHNlbGYuYXhCYWNraW5nT2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkKKyAgICBpZiAo
YmFja2luZ09iamVjdC0+aXNBdHRhY2htZW50KCkpCiAgICAgICAgIHJldHVybiBbW3NlbGYgYXR0
YWNobWVudFZpZXddIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlS
b2xlQXR0cmlidXRlXTsKKyAgICBpZiAoYmFja2luZ09iamVjdC0+aXNSZW1vdGVGcmFtZSgpKQor
ICAgICAgICByZXR1cm4gW2JhY2tpbmdPYmplY3QtPnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50
KCkuZ2V0KCkgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJvbGVB
dHRyaWJ1dGVdOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKLSAgICBOU1N0
cmluZyAqc3RyaW5nID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPnJvbGVQbGF0Zm9ybVN0cmluZygp
OworICAgIE5TU3RyaW5nICpzdHJpbmcgPSBiYWNraW5nT2JqZWN0LT5yb2xlUGxhdGZvcm1TdHJp
bmcoKTsKICAgICBpZiAoc3RyaW5nLmxlbmd0aCkKICAgICAgICAgcmV0dXJuIHN0cmluZzsKICAg
ICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5VW5rbm93blJvbGU7CkBAIC0xMzc5LDcgKzEzOTAsNyBA
QCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogLSAoQk9PTClpc0VtcHR5R3Jv
dXAKIHsKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7Cisg
ICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2Jq
ZWN0OwogICAgIGlmICghYmFja2luZ09iamVjdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBA
IC0xMzg4LDYgKzEzOTksOSBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAKKyAgICBpZiAoYmFja2luZ09iamVjdC0+aXNS
ZW1vdGVGcmFtZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICByZXR1cm4gW1tzZWxm
IHJvbGVdIGlzRXF1YWw6TlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlXQogICAgICAgICAmJiBiYWNr
aW5nT2JqZWN0LT5jaGlsZHJlbigpLmlzRW1wdHkoKQogICAgICAgICAmJiAhW1tzZWxmIHJlbmRl
cldpZGdldENoaWxkcmVuXSBjb3VudF07CkBAIC0xMzk2LDcgKzE0MTAsNyBAQCBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JF
R0lOCiAtIChOU1N0cmluZyopc3Vicm9sZQogewotICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBz
ZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBiYWNraW5nT2Jq
ZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CiAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQogICAg
ICAgICByZXR1cm4gbmlsOwogCkBAIC0xNDEzLDcgKzE0MjcsNyBAQCBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19FTkQKIAogLSAoTlNTdHJpbmcqKXJvbGVEZXNjcmlwdGlvbgogewotICAg
IGF1dG8qIGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHI8
QVhDb3JlT2JqZWN0PiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CiAgICAg
aWYgKCFiYWNraW5nT2JqZWN0KQogICAgICAgICByZXR1cm4gbmlsOwogCkBAIC0xNDIxLDYgKzE0
MzUsOCBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIC8vIGF0dGFj
aG1lbnRzIGhhdmUgdGhlIEFYSW1hZ2Ugcm9sZSwgYnV0IGEgZGlmZmVyZW50IHN1YnJvbGUKICAg
ICBpZiAoYmFja2luZ09iamVjdC0+aXNBdHRhY2htZW50KCkpCiAgICAgICAgIHJldHVybiBbW3Nl
bGYgYXR0YWNobWVudFZpZXddIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2li
aWxpdHlSb2xlRGVzY3JpcHRpb25BdHRyaWJ1dGVdOworICAgIGlmIChiYWNraW5nT2JqZWN0LT5p
c1JlbW90ZUZyYW1lKCkpCisgICAgICAgIHJldHVybiBbYmFja2luZ09iamVjdC0+cmVtb3RlRnJh
bWVQbGF0Zm9ybUVsZW1lbnQoKS5nZXQoKSBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNB
Y2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlXTsKIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORAogCiAgICAgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbiA9IGJhY2tpbmdP
YmplY3QtPnJvbGVEZXNjcmlwdGlvbigpOwpAQCAtMTQ3Myw2ICsxNDg5LDI4IEBAIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIHJldHVybiBheFNjcm9sbFZpZXcgPyBbYXhT
Y3JvbGxWaWV3LT5wbGF0Zm9ybVdpZGdldCgpIHdpbmRvd10gOiBuaWw7CiB9CiAKKy0gKE5TQXJy
YXkgKilfdHJhbnNmb3JtU3BlY2lhbENoaWxkcmVuQ2FzZXM6KFJlZlB0cjxBWENvcmVPYmplY3Q+
KWJhY2tpbmdPYmplY3QKK3sKKyNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKKyAgICBpZiAoYmFj
a2luZ09iamVjdC0+aXNNb2RlbCgpKSB7CisgICAgICAgIGF1dG8gbW9kZWxDaGlsZHJlbiA9IGJh
Y2tpbmdPYmplY3QtPm1vZGVsRWxlbWVudENoaWxkcmVuKCk7CisgICAgICAgIGlmIChtb2RlbENo
aWxkcmVuLnNpemUoKSkgeworICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkoV1RGTW92
ZShtb2RlbENoaWxkcmVuKSwgW10gKGF1dG8mJiBjaGlsZCkgLT4gaWQgeworICAgICAgICAgICAg
ICAgIHJldHVybiBjaGlsZC5nZXQoKTsKKyAgICAgICAgICAgIH0pLmF1dG9yZWxlYXNlKCk7Cisg
ICAgICAgIH0KKyAgICB9CisjZW5kaWYKKworICAgIGNvbnN0IGF1dG8mIGNoaWxkcmVuID0gYmFj
a2luZ09iamVjdC0+Y2hpbGRyZW4oKTsKKyAgICBpZiAoIWNoaWxkcmVuLnNpemUoKSkgeworICAg
ICAgICBpZiAoTlNBcnJheSAqY2hpbGRyZW4gPSBbc2VsZiByZW5kZXJXaWRnZXRDaGlsZHJlbl0p
CisgICAgICAgICAgICByZXR1cm4gY2hpbGRyZW47CisgICAgfQorCisgICAgcmV0dXJuIG5pbDsK
K30KKwogLy8gRklYTUU6IHNwbGl0IHVwIHRoaXMgZnVuY3Rpb24gaW4gYSBiZXR0ZXIgd2F5Lgog
Ly8gc3VnZ2VzdGlvbnM6IFVzZSBhIGhhc2ggdGFibGUgdGhhdCBtYXBzIGF0dHJpYnV0ZSBuYW1l
cyB0byBmdW5jdGlvbiBjYWxscywKIC8vIG9yIG1heWJlIHBvaW50ZXJzIHRvIG1lbWJlciBmdW5j
dGlvbnMKQEAgLTE1MzEsMjIgKzE1NjksOSBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFU
SU9OU19FTkQKICAgICB9CiAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5n
Ok5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXSB8fCBbYXR0cmlidXRlTmFtZSBpc0Vx
dWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5Jbk5hdmlnYXRpb25PcmRlckF0dHJp
YnV0ZV0pIHsKLSNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKLSAgICAgICAgaWYgKGJhY2tpbmdP
YmplY3QtPmlzTW9kZWwoKSkgewotICAgICAgICAgICAgYXV0byBtb2RlbENoaWxkcmVuID0gYmFj
a2luZ09iamVjdC0+bW9kZWxFbGVtZW50Q2hpbGRyZW4oKTsKLSAgICAgICAgICAgIGlmIChtb2Rl
bENoaWxkcmVuLnNpemUoKSkgewotICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVOU0FycmF5
KFdURk1vdmUobW9kZWxDaGlsZHJlbiksIFtdIChhdXRvJiYgY2hpbGQpIC0+IGlkIHsKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkLmdldCgpOwotICAgICAgICAgICAgICAgIH0pLmF1
dG9yZWxlYXNlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSNlbmRpZgotCi0gICAgICAg
IGNvbnN0IGF1dG8mIGNoaWxkcmVuID0gYmFja2luZ09iamVjdC0+Y2hpbGRyZW4oKTsKLSAgICAg
ICAgaWYgKGNoaWxkcmVuLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgaWYgKE5TQXJyYXkgKndp
ZGdldENoaWxkcmVuID0gW3NlbGYgcmVuZGVyV2lkZ2V0Q2hpbGRyZW5dKQotICAgICAgICAgICAg
ICAgIHJldHVybiB3aWRnZXRDaGlsZHJlbjsKLSAgICAgICAgfQorICAgICAgICBOU0FycmF5ICpz
cGVjaWFsQ2hpbGRyZW4gPSBbc2VsZiBfdHJhbnNmb3JtU3BlY2lhbENoaWxkcmVuQ2FzZXM6YmFj
a2luZ09iamVjdF07CisgICAgICAgIGlmIChzcGVjaWFsQ2hpbGRyZW4uY291bnQpCisgICAgICAg
ICAgICByZXR1cm4gc3BlY2lhbENoaWxkcmVuOwogCiAgICAgICAgIC8vIFRoZSB0cmVlJ3MgKEFY
T3V0bGluZSkgY2hpbGRyZW4gYXJlIHN1cHBvc2VkIHRvIGJlIGl0cyByb3dzIGFuZCBjb2x1bW5z
LgogICAgICAgICAvLyBUaGUgQVJJQSBzcGVjIGRvZXNuJ3QgaGF2ZSBjb2x1bW5zLCBzbyB3ZSBq
dXN0IG5lZWQgcm93cy4KQEAgLTE1NTcsNyArMTU4Miw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1Q
TEVNRU5UQVRJT05TX0VORAogICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNUcmVlSXRlbSgp
KQogICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdPYmplY3QtPmFyaWFUcmVl
SXRlbUNvbnRlbnQoKSk7CiAKLSAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGNoaWxkcmVuKTsK
KyAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdPYmplY3QtPmNoaWxkcmVuKCkpOwog
ICAgIH0KIAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNz
aWJpbGl0eVNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGVdKSB7CkBAIC0xNzEzLDE2ICsxNzM4LDE0
IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIGlmIChbYXR0cmli
dXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eUVuYWJsZWRBdHRyaWJ1dGVd
KQogICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOiBiYWNraW5nT2JqZWN0
LT5pc0VuYWJsZWQoKV07CiAKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5n
OiBOU0FjY2Vzc2liaWxpdHlTaXplQXR0cmlidXRlXSkgewotICAgICAgICBhdXRvIHNpemUgPSBi
YWNraW5nT2JqZWN0LT5zaXplKCk7Ci0gICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhT
aXplOk5TTWFrZVNpemUoc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKV07Ci0gICAgfQorICAg
IGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5U2l6ZUF0
dHJpYnV0ZV0pCisgICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhTaXplOihDR1NpemUp
YmFja2luZ09iamVjdC0+c2l6ZSgpXTsKIAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5UHJpbWFyeVNjcmVlbkhlaWdodEF0dHJpYnV0ZV0pCiAg
ICAgICAgIHJldHVybiBAKGJhY2tpbmdPYmplY3QtPnByaW1hcnlTY3JlZW5SZWN0KCkuaGVpZ2h0
KCkpOwogCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2li
aWxpdHlQb3NpdGlvbkF0dHJpYnV0ZV0pCi0gICAgICAgIHJldHVybiBAKENHUG9pbnQoYmFja2lu
Z09iamVjdC0+c2NyZWVuUmVsYXRpdmVQb3NpdGlvbigpKSk7CisgICAgICAgIHJldHVybiBbTlNW
YWx1ZSB2YWx1ZVdpdGhQb2ludDooQ0dQb2ludCliYWNraW5nT2JqZWN0LT5zY3JlZW5SZWxhdGl2
ZVBvc2l0aW9uKCldOwogCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpO
U0FjY2Vzc2liaWxpdHlQYXRoQXR0cmlidXRlXSkKICAgICAgICAgcmV0dXJuIFtzZWxmIHBhdGhd
OwpAQCAtMjIzNyw2ICsyMjYwLDEwIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05T
X0VORAogICAgICAgICByZXR1cm4gcmFuZ2UgPyByYW5nZS5wbGF0Zm9ybURhdGEoKS5icmlkZ2lu
Z0F1dG9yZWxlYXNlKCkgOiBuaWw7CiAgICAgfQogCisgICAgLy8gVm9pY2VPdmVyIHByb3BlcnR5
IHRvIGlnbm9yZSBjZXJ0YWluIGdyb3Vwcy4KKyAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVh
bFRvU3RyaW5nOkAiQVhBdXRvSW50ZXJhY3RhYmxlIl0pCisgICAgICAgIHJldHVybiBAKGJhY2tp
bmdPYmplY3QtPmlzUmVtb3RlRnJhbWUoKSk7CisKICAgICAvLyBVc2VkIGJ5IExheW91dFRlc3Rz
IG9ubHksIG5vdCBieSBBVCBjbGllbnRzLgogICAgIGlmIChVTkxJS0VMWShbYXR0cmlidXRlTmFt
ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWEFSSUFSb2xlIl0pKQogICAgICAgICByZXR1cm4gYmFja2lu
Z09iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCk7CkBAIC0yMzMwLDcgKzIzNTcsOCBAQCBBTExP
V19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgaWYgKGF4T2JqZWN0LT5p
c0F0dGFjaG1lbnQoKSkgewogICAgICAgICAgICAgaWYgKGlkIGF0dGFjaG1lbnRWaWV3ID0gW2F4
T2JqZWN0LT53cmFwcGVyKCkgYXR0YWNobWVudFZpZXddKQogICAgICAgICAgICAgICAgIHJldHVy
biBhdHRhY2htZW50VmlldzsKLSAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGF4T2JqZWN0
LT5pc1JlbW90ZUZyYW1lKCkpCisgICAgICAgICAgICByZXR1cm4gYXhPYmplY3QtPnJlbW90ZUZy
YW1lUGxhdGZvcm1FbGVtZW50KCkuZ2V0KCk7CiAKICAgICAgICAgLy8gT25seSBjYWxsIG91dCB0
byB0aGUgbWFpbi10aHJlYWQgaWYgdGhpcyBvYmplY3QgaGFzIGEgYmFja2luZyB3aWRnZXQgdG8g
cXVlcnkuCiAgICAgICAgIGlmIChheE9iamVjdC0+aXNXaWRnZXQoKSkgewpAQCAtMjUwNyw2ICsy
NTM1LDEwIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIGlmIChi
YWNraW5nT2JqZWN0LT5pc1dlYkFyZWEoKSkKICAgICAgICAgcmV0dXJuIHdlYkFyZWFQYXJhbUF0
dHJzOwogCisgICAgLy8gVGhlIG9iamVjdCB0aGF0IHNlcnZlcyB1cCB0aGUgcmVtb3RlIGZyYW1l
IGFsc28gaXMgdGhlIG9uZSB0aGF0IGRvZXMgdGhlIGZyYW1lIGNvbnZlcnNpb24uCisgICAgaWYg
KGJhY2tpbmdPYmplY3QtPmhhc1JlbW90ZUZyYW1lQ2hpbGQoKSkKKyAgICAgICAgcmV0dXJuIFtw
YXJhbUF0dHJzIGFycmF5QnlBZGRpbmdPYmplY3Q6a0FYQ29udmVydFJlbGF0aXZlRnJhbWVQYXJh
bWV0ZXJpemVkQXR0cmlidXRlXTsKKwogICAgIHJldHVybiBwYXJhbUF0dHJzOwogfQogCkBAIC0y
NTc4LDcgKzI2MTAsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIHsKICAg
ICBBWFRSQUNFKCJXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5UGVy
Zm9ybVNob3dNZW51QWN0aW9uIl9zKTsKIAotICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBzZWxm
LmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBiYWNraW5nT2JqZWN0
ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CiAgICAgaWYgKCFiYWNraW5nT2JqZWN0KSB7CiAgICAg
ICAgIEFYTE9HKG1ha2VTdHJpbmcoIk5vIGJhY2tpbmdPYmplY3QgZm9yIHdyYXBwZXIgIiwgaGV4
KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihzZWxmKSkpKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtMjgyMiw3ICsyODU0LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5E
CiAgICAgaWYgKCFyYW5nZS5sZW5ndGgpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBhdXRv
KiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgUmVmUHRyPEFYQ29y
ZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OwogICAgIGlmICgh
YmFja2luZ09iamVjdCkKICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMzE3Nyw2ICszMjA5LDE4
IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gd2lkZ2V0Q2hpbGRyZW47CiAgICAgICAgICAgICAgICAgY3JpdGVyaWEucmVz
dWx0c0xpbWl0IC09IFt3aWRnZXRDaGlsZHJlbiBjb3VudF07CiAgICAgICAgICAgICB9CisgICAg
ICAgIH0gZWxzZSBpZiAoYmFja2luZ09iamVjdC0+aXNSZW1vdGVGcmFtZSgpCisgICAgICAgICAg
ICAmJiBjcml0ZXJpYS5zZWFyY2hLZXlzLmNvbnRhaW5zKEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6
OkFueVR5cGUpCisgICAgICAgICAgICAmJiAoIWNyaXRlcmlhLnZpc2libGVPbmx5IHx8IGJhY2tp
bmdPYmplY3QtPmlzVmlzaWJsZSgpKSkgeworICAgICAgICAgICAgTlNBcnJheSAqcmVtb3RlRnJh
bWVDaGlsZHJlbiA9IFtzZWxmIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2li
aWxpdHlDaGlsZHJlbkF0dHJpYnV0ZV07CisgICAgICAgICAgICBBU1NFUlQocmVtb3RlRnJhbWVD
aGlsZHJlbi5jb3VudCA9PSAxKTsKKyAgICAgICAgICAgIGlmIChyZW1vdGVGcmFtZUNoaWxkcmVu
LmNvdW50ID09IDEpIHsKKyAgICAgICAgICAgICAgICBOU1VJbnRlZ2VyIGluY2x1ZGVkQ2hpbGRy
ZW5Db3VudCA9IHN0ZDo6bWluKFtyZW1vdGVGcmFtZUNoaWxkcmVuIGNvdW50XSwgTlNVSW50ZWdl
cihjcml0ZXJpYS5yZXN1bHRzTGltaXQpKTsKKyAgICAgICAgICAgICAgICB3aWRnZXRDaGlsZHJl
biA9IFtyZW1vdGVGcmFtZUNoaWxkcmVuIHN1YmFycmF5V2l0aFJhbmdlOk5TTWFrZVJhbmdlKDAs
IGluY2x1ZGVkQ2hpbGRyZW5Db3VudCldOworICAgICAgICAgICAgICAgIGlmIChbd2lkZ2V0Q2hp
bGRyZW4gY291bnRdID49IGNyaXRlcmlhLnJlc3VsdHNMaW1pdCkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHJlbW90ZUZyYW1lQ2hpbGRyZW47CisgICAgICAgICAgICAgICAgY3JpdGVyaWEu
cmVzdWx0c0xpbWl0IC09IFt3aWRnZXRDaGlsZHJlbiBjb3VudF07CisgICAgICAgICAgICB9CiAg
ICAgICAgIH0KIAogICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3IgcmVzdWx0czsKQEAgLTM2NjksNiArMzcxMywxMSBAQCBBTExPV19ERVBSRUNB
VEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBpZiAoVU5MSUtFTFkoW2F0dHJpYnV0ZSBpc0Vx
dWFsVG9TdHJpbmc6X0FYVGV4dE1hcmtlclJhbmdlRm9yTlNSYW5nZUF0dHJpYnV0ZV0pKQogICAg
ICAgICByZXR1cm4gYmFja2luZ09iamVjdC0+dGV4dE1hcmtlclJhbmdlRm9yTlNSYW5nZShyYW5n
ZSkucGxhdGZvcm1EYXRhKCkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogCisgICAgaWYgKFthdHRy
aWJ1dGUgaXNFcXVhbFRvU3RyaW5nOmtBWENvbnZlcnRSZWxhdGl2ZUZyYW1lUGFyYW1ldGVyaXpl
ZEF0dHJpYnV0ZV0pIHsKKyAgICAgICAgYXV0byogcGFyZW50ID0gYmFja2luZ09iamVjdC0+cGFy
ZW50T2JqZWN0KCk7CisgICAgICAgIHJldHVybiBwYXJlbnQgPyBbTlNWYWx1ZSB2YWx1ZVdpdGhS
ZWN0OnBhcmVudC0+Y29udmVydEZyYW1lVG9TcGFjZShGbG9hdFJlY3QocmVjdCksIEFjY2Vzc2li
aWxpdHlDb252ZXJzaW9uU3BhY2U6OlBhZ2UpXSA6IG5pbDsKKyAgICB9CisKICAgICAvLyBUaGVy
ZSBhcmUgc29tZSBwYXJhbWV0ZXJzIHRoYXQgc3VwZXIgaGFuZGxlcyB0aGF0IGFyZSBub3QgZXhw
bGljaXRseSByZXR1cm5lZCBieSB0aGUgbGlzdCBvZiB0aGUgZWxlbWVudCdzIGF0dHJpYnV0ZXMu
CiAgICAgLy8gSW4gdGhhdCBjYXNlIGl0IG11c3QgYmUgcGFzc2VkIHRvIHN1cGVyLgogICAgIHJl
dHVybiBbc3VwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOmF0dHJpYnV0ZSBmb3JQYXJh
bWV0ZXI6cGFyYW1ldGVyXTsKQEAgLTM3MjIsOCArMzc3MSwxMCBAQCBBTExPV19ERVBSRUNBVEVE
X0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgaWYgKCFjaGlsZCkKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciAqY2hpbGRXcmFw
cGVyID0gY2hpbGQtPndyYXBwZXIoKTsKLSAgICAgICAgaWYgKGNoaWxkV3JhcHBlciA9PSB0YXJn
ZXRDaGlsZCB8fCAoY2hpbGQtPmlzQXR0YWNobWVudCgpICYmIFtjaGlsZFdyYXBwZXIgYXR0YWNo
bWVudFZpZXddID09IHRhcmdldENoaWxkKSkKKyAgICAgICAgaWYgKGNoaWxkV3JhcHBlciA9PSB0
YXJnZXRDaGlsZCB8fCAoY2hpbGQtPmlzQXR0YWNobWVudCgpICYmIFtjaGlsZFdyYXBwZXIgYXR0
YWNobWVudFZpZXddID09IHRhcmdldENoaWxkKQorICAgICAgICAgICAgfHwgKGNoaWxkLT5pc1Jl
bW90ZUZyYW1lKCkgJiYgY2hpbGQtPnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkgPT0gdGFy
Z2V0Q2hpbGQpKSB7CiAgICAgICAgICAgICByZXR1cm4gaTsKKyAgICAgICAgfQogICAgIH0KICAg
ICByZXR1cm4gTlNOb3RGb3VuZDsKIH0KQEAgLTM3NDAsNyArMzc5MSw3IEBAIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3Ry
aW5nOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXSkgewogICAgICAgICAvLyBUcmVl
IGl0ZW1zIG9iamVjdCByZXR1cm5zIGEgZGlmZmVyZW50IHNldCBvZiBjaGlsZHJlbiB0aGFuIHRo
b3NlIHRoYXQgYXJlIGluIGNoaWxkcmVuKCkKICAgICAgICAgLy8gYmVjYXVzZSBhbiBBWE91dGxp
bmUgKHRoZSBtYWMgcm9sZSBpcyBiZWNvbWVzKSBoYXMgc29tZSBvZGQgc3RpcHVsYXRpb25zLgot
ICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNUcmVlKCkgfHwgYmFja2luZ09iamVjdC0+aXNU
cmVlSXRlbSgpKQorICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNUcmVlKCkgfHwgYmFja2lu
Z09iamVjdC0+aXNUcmVlSXRlbSgpIHx8IGJhY2tpbmdPYmplY3QtPmlzUmVtb3RlRnJhbWUoKSkK
ICAgICAgICAgICAgIHJldHVybiBbW3NlbGYgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5T
QWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXSBjb3VudF07CiAKICAgICAgICAgYXV0byBj
aGlsZHJlblNpemUgPSBiYWNraW5nT2JqZWN0LT5jaGlsZHJlbigpLnNpemUoKTsKQEAgLTM3NzYs
MTYgKzM4MjcsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgIGlm
IChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJp
YnV0ZV0pIHsKICAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmNoaWxkcmVuKCkuaXNFbXB0eSgp
KSB7Ci0gICAgICAgICAgICBOU0FycmF5ICpjaGlsZHJlbiA9IG5pbDsKLSNpZiBFTkFCTEUoTU9E
RUxfRUxFTUVOVCkKLSAgICAgICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc01vZGVsKCkpIHsK
LSAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IGNyZWF0ZU5TQXJyYXkoYmFja2luZ09iamVjdC0+
bW9kZWxFbGVtZW50Q2hpbGRyZW4oKSwgW10gKGF1dG8mJiBjaGlsZCkgLT4gaWQgewotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gY2hpbGQuZ2V0KCk7Ci0gICAgICAgICAgICAgICAgfSkuYXV0
b3JlbGVhc2UoKTsKLSAgICAgICAgICAgIH0gZWxzZQotI2VuZGlmCi0gICAgICAgICAgICAgICAg
Y2hpbGRyZW4gPSBbc2VsZiByZW5kZXJXaWRnZXRDaGlsZHJlbl07Ci0gICAgICAgICAgICAKKyAg
ICAgICAgICAgIE5TQXJyYXkgKmNoaWxkcmVuID0gW3NlbGYgX3RyYW5zZm9ybVNwZWNpYWxDaGls
ZHJlbkNhc2VzOmJhY2tpbmdPYmplY3RdOwogICAgICAgICAgICAgaWYgKCFjaGlsZHJlbikKICAg
ICAgICAgICAgICAgICByZXR1cm4gbmlsOwogCkBAIC0zODE2LDggKzM4NTgsMTMgQEAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICAgICAgICAgIC8vIFRoZSBhdHRhY2ht
ZW50IHZpZXcgc2hvdWxkIGJlIHJldHVybmVkLCBvdGhlcndpc2UgQVggcGFsaW5kcm9tZSBlcnJv
cnMgb2NjdXIuCiAgICAgICAgICAgICBpZCBhdHRhY2htZW50VmlldyA9IG5pbDsKLSAgICAgICAg
ICAgIGlmIChbd3JhcHBlciBpc0tpbmRPZkNsYXNzOltXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlciBjbGFzc11dICYmIHdyYXBwZXIuYXhCYWNraW5nT2JqZWN0ICYmIHdyYXBwZXIuYXhCYWNr
aW5nT2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkKLSAgICAgICAgICAgICAgICBhdHRhY2htZW50Vmll
dyA9IFt3cmFwcGVyIGF0dGFjaG1lbnRWaWV3XTsKKyAgICAgICAgICAgIGlmIChbd3JhcHBlciBp
c0tpbmRPZkNsYXNzOltXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBjbGFzc11dICYmIHdy
YXBwZXIuYXhCYWNraW5nT2JqZWN0KSB7CisgICAgICAgICAgICAgICAgaWYgKHdyYXBwZXIuYXhC
YWNraW5nT2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkKKyAgICAgICAgICAgICAgICAgICAgYXR0YWNo
bWVudFZpZXcgPSBbd3JhcHBlciBhdHRhY2htZW50Vmlld107CisgICAgICAgICAgICAgICAgZWxz
ZSBpZiAod3JhcHBlci5heEJhY2tpbmdPYmplY3QtPmlzUmVtb3RlRnJhbWUoKSkKKyAgICAgICAg
ICAgICAgICAgICAgYXR0YWNobWVudFZpZXcgPSB3cmFwcGVyLmF4QmFja2luZ09iamVjdC0+cmVt
b3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKS5nZXQoKTsKKyAgICAgICAgICAgIH0KKwogICAgICAg
ICAgICAgW3N1YmFycmF5IGFkZE9iamVjdDphdHRhY2htZW50VmlldyA/IGF0dGFjaG1lbnRWaWV3
IDogd3JhcHBlcl07CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmNwcAppbmRleCAyNThjMTRiODZhOGIuLjU3MTdhZGUyYTQ1MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTEwODUsNiArMTA4NSwxMSBAQCBSZW1vdGVBWE9iamVj
dFJlZiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjphY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorSW50UG9pbnQgRW1wdHlGcmFtZUxvYWRlckNsaWVu
dDo6YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCkKK3sKKyAgICByZXR1cm4geyB9Owor
fQorCiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKIHZvaWQgRW1wdHlG
cmFtZUxvYWRlckNsaWVudDo6c2V0QVhJc29sYXRlZFRyZWVSb290KFdlYkNvcmU6OkFYQ29yZU9i
amVjdCopCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxv
YWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGll
bnQuaAppbmRleCAwOThjZTU4ZDExMTkuLjQ2NzJkZTI5ODUzMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xODQsNiArMTg0LDcgQEAg
cHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJlbW90ZUFYT2JqZWN0UmVmIGFj
Y2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSBmaW5hbDsKKyAgICBJbnRQb2ludCBhY2Nlc3NpYmls
aXR5UmVtb3RlRnJhbWVPZmZzZXQoKSBmaW5hbDsKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9J
U09MQVRFRF9UUkVFKQogICAgIHZvaWQgc2V0QVhJc29sYXRlZFRyZWVSb290KFdlYkNvcmU6OkFY
Q29yZU9iamVjdCopIGZpbmFsOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTG9jYWxGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xv
Y2FsRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBiMmQ1NmYwNTBhZTkuLjAwZDNhZDVlMmNjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvY2FsRnJhbWVMb2FkZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9jYWxGcmFtZUxvYWRlckNsaWVudC5oCkBA
IC0yOTAsNiArMjkwLDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIC8vIEFs
bG93IGFuIGFjY2Vzc2liaWxpdHkgb2JqZWN0IHRvIHJldHJpZXZlIGEgRnJhbWUgcGFyZW50IGlm
IHRoZXJlJ3Mgbm8gUGxhdGZvcm1XaWRnZXQuCiAgICAgdmlydHVhbCBSZW1vdGVBWE9iamVjdFJl
ZiBhY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkgPSAwOworICAgIHZpcnR1YWwgSW50UG9pbnQg
YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCkgPSAwOwogI2lmIEVOQUJMRShBQ0NFU1NJ
QklMSVRZX0lTT0xBVEVEX1RSRUUpCiAgICAgdmlydHVhbCB2b2lkIHNldEFYSXNvbGF0ZWRUcmVl
Um9vdChBWENvcmVPYmplY3QqKSA9IDA7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDVk
MmZlYWI2NTc5Ni4uODQyNmM4ZjM3MGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTIyMDgsOCAr
MjIwOCwxNSBAQCBib29sIFBhZ2U6OnNob3VsZFVwZGF0ZUFjY2Vzc2liaWxpdHlSZWdpb25zKCkg
Y29uc3QKICAgICBBU1NFUlQobV9sYXN0UmVuZGVyaW5nVXBkYXRlVGltZXN0YW1wID49IG1fbGFz
dEFjY2Vzc2liaWxpdHlPYmplY3RSZWdpb25zVXBkYXRlKTsKICAgICBpZiAoKG1fbGFzdFJlbmRl
cmluZ1VwZGF0ZVRpbWVzdGFtcCAtIG1fbGFzdEFjY2Vzc2liaWxpdHlPYmplY3RSZWdpb25zVXBk
YXRlKSA8IHVwZGF0ZUludGVydmFsKSB7CiAgICAgICAgIC8vIFdlJ3ZlIGFscmVhZHkgdXBkYXRl
ZCBhY2Nlc3NpYmlsaXR5IG9iamVjdCByZWN0cyByZWNlbnRseSwgc28gc2tpcCB0aGlzIHVwZGF0
ZSBhbmQgc2NoZWR1bGUgYW5vdGhlciBmb3IgbGF0ZXIuCi0gICAgICAgIGF1dG8qIGxvY2FsTWFp
bkZyYW1lID0gZHluYW1pY0Rvd25jYXN0PExvY2FsRnJhbWU+KG1haW5GcmFtZSgpKTsKLSAgICAg
ICAgUmVmUHRyIG1haW5Eb2N1bWVudCA9IGxvY2FsTWFpbkZyYW1lID8gbG9jYWxNYWluRnJhbWUt
PmRvY3VtZW50KCkgOiBudWxscHRyOworCisgICAgICAgIFJlZlB0cjxEb2N1bWVudD4gbWFpbkRv
Y3VtZW50ID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKGF1dG8qIGxvY2FsTWFpbkZyYW1lID0gZHlu
YW1pY0Rvd25jYXN0PExvY2FsRnJhbWU+KG1haW5GcmFtZSgpKSkKKyAgICAgICAgICAgIG1haW5E
b2N1bWVudCA9IGxvY2FsTWFpbkZyYW1lID8gbG9jYWxNYWluRnJhbWUtPmRvY3VtZW50KCkgOiBu
dWxscHRyOworICAgICAgICBlbHNlIGlmIChhdXRvKiByZW1vdGVGcmFtZSA9IGR5bmFtaWNEb3du
Y2FzdDxSZW1vdGVGcmFtZT4obWFpbkZyYW1lKCkpKSB7CisgICAgICAgICAgICBpZiAoYXV0byog
b3duZXIgPSByZW1vdGVGcmFtZS0+b3duZXJFbGVtZW50KCkpCisgICAgICAgICAgICAgICAgbWFp
bkRvY3VtZW50ID0gJihvd25lci0+ZG9jdW1lbnQoKSk7CisgICAgICAgIH0KKwogICAgICAgICAv
LyBJZiBhY2Nlc3NpYmlsaXR5IGlzIGVuYWJsZWQgYW5kIHdlIGhhdmUgYSBtYWluIGRvY3VtZW50
LCB0aGF0IGRvY3VtZW50IHNob3VsZCBoYXZlIGFuIEFYIG9iamVjdCBjYWNoZS4KICAgICAgICAg
QVNTRVJUKCFtYWluRG9jdW1lbnQgfHwgbWFpbkRvY3VtZW50LT5leGlzdGluZ0FYT2JqZWN0Q2Fj
aGUoKSk7CiAgICAgICAgIGlmIChDaGVja2VkUHRyIHRvcEF4T2JqZWN0Q2FjaGUgPSBtYWluRG9j
dW1lbnQgPyBtYWluRG9jdW1lbnQtPmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpIDogbnVsbHB0cikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5jcHAKaW5kZXggNzEyYzBiMjIwZmQwLi41MGIwYTI1
Y2ZkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuY3BwCkBAIC0xMDAsNiArMTAwLDIx
IEBAIHZvaWQgUmVtb3RlRnJhbWU6OmJyb2FkY2FzdEZyYW1lUmVtb3ZhbFRvT3RoZXJQcm9jZXNz
ZXMoKQogICAgIG1fY2xpZW50LT5icm9hZGNhc3RGcmFtZVJlbW92YWxUb090aGVyUHJvY2Vzc2Vz
KCk7CiB9CiAKK3ZvaWQgUmVtb3RlRnJhbWU6OnVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0
eU9mZnNldChJbnRQb2ludCBvZmZzZXQpCit7CisgICAgbV9jbGllbnQtPnVwZGF0ZVJlbW90ZUZy
YW1lQWNjZXNzaWJpbGl0eU9mZnNldChmcmFtZUlEKCksIG9mZnNldCk7Cit9CisKK3ZvaWQgUmVt
b3RlRnJhbWU6OnVuYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVu
dGlmaWVyKQoreworICAgIG1fY2xpZW50LT51bmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVz
KHByb2Nlc3NJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVGcmFtZTo6YmluZFJlbW90ZUFj
Y2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBzdGQ6OnNwYW48Y29uc3Qg
dWludDhfdD4gZGF0YVRva2VuLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6c3Bh
bjxjb25zdCB1aW50OF90PiwgaW50KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICByZXR1
cm4gbV9jbGllbnQtPmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKHByb2Nlc3NJZGVudGlm
aWVyLCBmcmFtZUlEKCksIGRhdGFUb2tlbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
fQorCiBGcmFtZVZpZXcqIFJlbW90ZUZyYW1lOjp2aXJ0dWFsVmlldygpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1fdmlldy5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVt
b3RlRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuaAppbmRleCAyN2Vk
ODQwZDA4MmUuLmNhNzJhZjhiYzk1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9S
ZW1vdGVGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuaApAQCAt
MzMsNiArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERhdGFTZWdtZW50
OwogY2xhc3MgUmVtb3RlRE9NV2luZG93OwogY2xhc3MgUmVtb3RlRnJhbWVDbGllbnQ7CiBjbGFz
cyBSZW1vdGVGcmFtZVZpZXc7CkBAIC02Miw2ICs2Myw5IEBAIHB1YmxpYzoKICAgICBNYXJrYWJs
ZTxMYXllckhvc3RpbmdDb250ZXh0SWRlbnRpZmllcj4gbGF5ZXJIb3N0aW5nQ29udGV4dElkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2xheWVySG9zdGluZ0NvbnRleHRJZGVudGlmaWVyOyB9
CiAKICAgICBTdHJpbmcgcmVuZGVyVHJlZUFzVGV4dChzaXplX3QgYmFzZUluZGVudCwgT3B0aW9u
U2V0PFJlbmRlckFzVGV4dEZsYWc+KTsKKyAgICB2b2lkIGJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5
RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgaW50KT4mJik7
CisgICAgdm9pZCB1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQoSW50UG9pbnQp
OworICAgIHZvaWQgdW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQpOwogCiBwcml2
YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFJlbW90ZUZyYW1lKFBhZ2UmLCBVbmlx
dWVSZWY8UmVtb3RlRnJhbWVDbGllbnQ+JiYsIEZyYW1lSWRlbnRpZmllciwgSFRNTEZyYW1lT3du
ZXJFbGVtZW50KiwgRnJhbWUqIHBhcmVudCwgTWFya2FibGU8TGF5ZXJIb3N0aW5nQ29udGV4dElk
ZW50aWZpZXI+LCBGcmFtZSogb3BlbmVyID0gbnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jl
bW90ZUZyYW1lQ2xpZW50LmgKaW5kZXggNGVmZDEwM2YzOTEyLi41NDFhMGQwMWM1NjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lQ2xpZW50LmgKQEAgLTMwLDYgKzMwLDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBEYXRhU2VnbWVudDsKIGNsYXNzIEZyYW1lTG9h
ZFJlcXVlc3Q7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgU2VjdXJpdHlPcmlnaW5EYXRhOwpAQCAt
NDgsNiArNDksOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgcmVuZGVyVHJlZUFzVGV4
dChzaXplX3QgYmFzZUluZGVudCwgT3B0aW9uU2V0PFJlbmRlckFzVGV4dEZsYWc+KSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGJyb2FkY2FzdEZyYW1lUmVtb3ZhbFRvT3RoZXJQcm9jZXNzZXMoKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlUGFnZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
YmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBGcmFt
ZUlkZW50aWZpZXIgdGFyZ2V0LCBjb25zdCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YVRv
a2VuLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90
PiwgaW50KT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZW1vdGVGcmFtZUFjY2Vz
c2liaWxpdHlPZmZzZXQoRnJhbWVJZGVudGlmaWVyIHRhcmdldCwgSW50UG9pbnQpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgdW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZm9jdXMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVuZm9jdXMo
KSA9IDA7CiAgICAgdmlydHVhbCB+UmVtb3RlRnJhbWVDbGllbnQoKSB7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCA4NGZjNDE5ZTU5Y2EuLjQyZWVlNjZhYjE2YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvRHJhZ0FjdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvckNsaWVu
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9jdXNEaXJlY3Rpb24uaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0ZyYW1lSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5wdXRNb2RlLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9NZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVJdGVtLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TY3JvbGxUeXBlcy5oPgpAQCAtMzE4LDcgKzMxOSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVVuZG9SZWRvKFVuZG9PclJlZG8pID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgd2hlZWxFdmVudFdhc05vdEhhbmRsZWRCeVdlYkNvcmUoY29uc3QgTmF0aXZlV2Vi
V2hlZWxFdmVudCYpID0gMDsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2aXJ0dWFsIHZvaWQg
YWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50
OF90PikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2Vu
UmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIHBpZF90KSA9IDA7CiAgICAgdmlydHVhbCBib29sIGV4ZWN1dGVTYXZlZENvbW1hbmRCeVNl
bGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlU2VjdXJlSW5wdXRTdGF0ZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRTZWN1cmVJ
bnB1dFN0YXRlKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJv
dmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9u
YWxQYWdlUHJveHkuY3BwCmluZGV4IDA1MDMwODYzOTFmYi4uM2UzYjgxOTVkMDQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCkBAIC01
NDUsNyArNTQ1LDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6cmVxdWVzdFBhc3N3b3Jk
Rm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdAogI2VuZGlmCiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKLXZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OnJlZ2lzdGVyV2ViUHJvY2Vz
c0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSkKK3ZvaWQg
UHJvdmlzaW9uYWxQYWdlUHJveHk6OnJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tl
bihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSwgRnJhbWVJZGVudGlmaWVyKQogewogICAg
IG1fYWNjZXNzaWJpbGl0eVRva2VuID0gVmVjdG9yKGRhdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKaW5kZXggZGVlY2Q3NmEyMDI0Li5k
MGI3ZWNjZWVmZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lv
bmFsUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQ
YWdlUHJveHkuaApAQCAtMTcyLDcgKzE3Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXF1ZXN0
UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmls
ZU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogI2VuZGlm
CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCByZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3Np
YmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKKyAgICB2b2lkIHJlZ2lzdGVy
V2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspIHx8IFBM
QVRGT1JNKFdQRSkKICAgICB2b2lkIGJpbmRBY2Nlc3NpYmlsaXR5VHJlZShjb25zdCBTdHJpbmcm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKaW5kZXggZjJmYzhh
NTRkODgzLi4yMzAzMDdhMTc0ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkZyYW1lUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1l
UHJveHkuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAj
aW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYXN0ZWJvYXJk
UHJveHkuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQ
cm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJX
ZWJzaXRlUG9saWNpZXNEYXRhLmgiCkBAIC0xODQsNiArMTg1LDE0IEBAIHZvaWQgV2ViRnJhbWVQ
cm94eTo6bmF2aWdhdGVTZXJ2aWNlV29ya2VyQ2xpZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRJCiAgICAgfSk7CiB9CiAKK3ZvaWQgV2ViRnJhbWVQcm94eTo6YmluZEFjY2Vzc2li
aWxpdHlGcmFtZVdpdGhEYXRhKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhKQoreworICAg
IGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlByb2Nlc3M6OkJpbmRBY2Nlc3NpYmlsaXR5RnJhbWVXaXRoRGF0YShtX2ZyYW1lSUQs
IGRhdGEpKTsKK30KKwogdm9pZCBXZWJGcmFtZVByb3h5Ojpsb2FkVVJMKGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQogewogICAgIGlmICghbV9wYWdlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oCmluZGV4IGIwZGFlYjBlNjRmYy4uNzE1YmI4MGJh
YjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oCkBAIC0xNzAsNiAr
MTcwLDggQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3RlUHJvY2Vzc0RpZFRlcm1pbmF0ZSgpOwog
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHdlYlBhZ2VJREluQ3Vy
cmVudFByb2Nlc3MoKTsKICAgICB2b2lkIG5vdGlmeVBhcmVudE9mTG9hZENvbXBsZXRpb24oV2Vi
UHJvY2Vzc1Byb3h5Jik7CisgICAgdm9pZCByZW1vdmVSZW1vdGVQYWdlc0ZvclN1c3BlbnNpb24o
KTsKKyAgICB2b2lkIGJpbmRBY2Nlc3NpYmlsaXR5RnJhbWVXaXRoRGF0YShzdGQ6OnNwYW48Y29u
c3QgdWludDhfdD4pOwogCiAgICAgYm9vbCBpc0ZvY3VzZWQoKSBjb25zdDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNDZjMjE0M2E5NGFiLi5mMzcxMWU4
NTcyMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTI5
NSw4ICsxMjk1LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpzd2FwVG9Qcm92aXNpb25hbFBhZ2Uo
c3RkOjp1bmlxdWVfcHRyPFByb3Zpc2lvbmFsUGFnZVByb3h5PiBwCiAKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICBhdXRvIGFjY2Vzc2liaWxpdHlUb2tlbiA9IHByb3Zpc2lvbmFsUGFnZS0+dGFr
ZUFjY2Vzc2liaWxpdHlUb2tlbigpOwotICAgIGlmICghYWNjZXNzaWJpbGl0eVRva2VuLmlzRW1w
dHkoKSkKLSAgICAgICAgcmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHsgYWNj
ZXNzaWJpbGl0eVRva2VuLmRhdGEoKSwgYWNjZXNzaWJpbGl0eVRva2VuLnNpemUoKSB9KTsKKyAg
ICBpZiAoIWFjY2Vzc2liaWxpdHlUb2tlbi5pc0VtcHR5KCkpIHsKKyAgICAgICAgcmVnaXN0ZXJX
ZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHsgYWNjZXNzaWJpbGl0eVRva2VuLmRhdGEoKSwg
YWNjZXNzaWJpbGl0eVRva2VuLnNpemUoKSB9LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgewor
ICAgICAgICAgICAgT2JqZWN0SWRlbnRpZmllcjxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXJUeXBl
PigwKSwKKyAgICAgICAgICAgIE9iamVjdElkZW50aWZpZXI8V2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXJUeXBlPigwKQorICAgICAgICB9KTsKKyAgICB9CiAjZW5kaWYKICNpZiBQTEFURk9STShH
VEspIHx8IFBMQVRGT1JNKFdQRSkKICAgICBhdXRvIGFjY2Vzc2liaWxpdHlQbHVnSUQgPSBwcm92
aXNpb25hbFBhZ2UtPmFjY2Vzc2liaWxpdHlQbHVnSUQoKTsKQEAgLTEzNzQ0LDYgKzEzNzQ4LDIy
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjphZGRDb25zb2xlTWVzc2FnZShGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgTWVzc2FnZVNvdXJjZSBtZXNzCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
QWRkQ29uc29sZU1lc3NhZ2UgeyBmcmFtZUlELCBtZXNzYWdlU291cmNlLCBtZXNzYWdlTGV2ZWws
IG1lc3NhZ2UsIGNvcmVJZGVudGlmaWVyIH0pOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6Ymlu
ZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3Qgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+
IGRhdGFUb2tlbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6OnNwYW48Y29uc3QgdWludDhf
dD4sIGludCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byBzZW5kUmVzdWx0ID0g
c2VuZFN5bmNUb1Byb2Nlc3NDb250YWluaW5nRnJhbWUoZnJhbWVJRCwgTWVzc2FnZXM6OldlYlBh
Z2U6OkJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKHByb2Nlc3NJZGVudGlmaWVyLCBmcmFt
ZUlELCBkYXRhVG9rZW4pKTsKKyAgICBpZiAoIXNlbmRSZXN1bHQuc3VjY2VlZGVkKCkpCisgICAg
ICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0sIDApOworCisgICAgYXV0byBbZnJhbWVE
YXRhVG9rZW4sIGZyYW1lUHJvY2Vzc0lkZW50aWZpZXJdID0gc2VuZFJlc3VsdC50YWtlUmVwbHko
KTsKKworICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lRGF0YVRva2VuLCBmcmFtZVByb2Nlc3NJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVJlbW90ZUZyYW1lQWNj
ZXNzaWJpbGl0eU9mZnNldChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29y
ZTo6SW50UG9pbnQgb2Zmc2V0KQoreworICAgIHNlbmRUb1Byb2Nlc3NDb250YWluaW5nRnJhbWUo
ZnJhbWVJRCwgTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZVJlbW90ZVBhZ2VBY2Nlc3NpYmlsaXR5
T2Zmc2V0KGZyYW1lSUQsIG9mZnNldCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAog
I3VuZGVmIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAppbmRleCBjYzg2ZGRjNmE1YmYuLjcwMzQ4YzZmNjYxYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTEzNTUsNyArMTM1NSw3IEBAIHB1YmxpYzoK
IAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIC8vIENhbGxlZCBieSB0aGUgd2ViIHByb2Nlc3Mg
dGhyb3VnaCBhIG1lc3NhZ2UuCi0gICAgdm9pZCByZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmls
aXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKKyAgICB2b2lkIHJlZ2lzdGVyV2Vi
UHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllcik7CiAgICAgLy8gQ2FsbGVkIGJ5IHRoZSBVSSBwcm9jZXNzIHdo
ZW4gaXQgaXMgcmVhZHkgdG8gc2VuZCBpdHMgdG9rZW5zIHRvIHRoZSB3ZWIgcHJvY2Vzcy4KICAg
ICB2b2lkIHJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VucyhzdGQ6OnNwYW48Y29u
c3QgdWludDhfdD4gZWxlbWVudFRva2VuLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gd2luZG93
VG9rZW4pOwogICAgIHZvaWQgcmVwbGFjZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJkRGF0YShjb25z
dCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Pik7CkBAIC0y
OTc4LDYgKzI5NzgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZm9jdXNSZW1vdGVGcmFtZShJUEM6
OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZvaWQgcG9zdE1l
c3NhZ2VUb1JlbW90ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgc291cmNlLCBjb25zdCBTdHJp
bmcmIHNvdXJjZU9yaWdpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHRhcmdldCwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IHRhcmdldE9yaWdpbiwgY29uc3Qg
V2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmKTsKICAgICB2b2lkIHJlbmRlclRyZWVB
c1RleHQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBzaXplX3QgYmFzZUluZGVudCwgT3B0aW9u
U2V0PFdlYkNvcmU6OlJlbmRlckFzVGV4dEZsYWc+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0
cmluZyYmKT4mJik7CisgICAgdm9pZCBiaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQg
cHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgc3RkOjpzcGFuPGNv
bnN0IHVpbnQ4X3Q+IGRhdGFUb2tlbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6OnNwYW48
Y29uc3QgdWludDhfdD4sIGludCk+JiYpOworICAgIHZvaWQgdXBkYXRlUmVtb3RlRnJhbWVBY2Nl
c3NpYmlsaXR5T2Zmc2V0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6SW50UG9p
bnQpOwogCiAgICAgdm9pZCBzZXRUZXh0SW5kaWNhdG9yRnJvbUZyYW1lKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgV2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGEmJiwgdWludDY0X3QpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5k
ZXggNDkzODYyNmJmOGEyLi5hNTQyZjE3NmI1OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTMyNCw3ICszMjQsNyBAQCBtZXNz
YWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIEV4ZWN1dGVTYXZlZENvbW1hbmRCeVNlbGVjdG9y
KFN0cmluZyBzZWxlY3RvcikgLT4gKGJvb2wgaGFuZGxlZCkgU3luY2hyb25vdXMKIAogICAgICMg
UmVtb3RlIGFjY2Vzc2liaWxpdHkgbWVzc2FnZXMKLSAgICBSZWdpc3RlcldlYlByb2Nlc3NBY2Nl
c3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCisgICAgUmVnaXN0
ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBk
YXRhLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKIAogICAgICMgU3BlZWNoIG1l
c3NhZ2VzCiAgICAgR2V0SXNTcGVha2luZygpIC0+IChib29sIGlzU3BlYWtpbmcpIFN5bmNocm9u
b3VzCkBAIC02MzAsNCArNjMwLDYgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBG
b2N1c1JlbW90ZUZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogICAgIFBv
c3RNZXNzYWdlVG9SZW1vdGUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHNvdXJjZSwgU3RyaW5n
IHNvdXJjZU9yaWdpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHRhcmdldCwgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IHRhcmdldE9yaWdpbiwgc3RydWN0IFdl
YkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2UpCiAgICAgUmVuZGVyVHJlZUFz
VGV4dChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgaWRlbnRpZmllciwgc2l6ZV90IGJhc2VJbmRl
bnQsIE9wdGlvblNldDxXZWJDb3JlOjpSZW5kZXJBc1RleHRGbGFnPiBiZWhhdmlvcikgLT4gKFN0
cmluZyByZW5kZXJUcmVlRHVtcCkgU3luY2hyb25vdXMKKyAgICBCaW5kUmVtb3RlQWNjZXNzaWJp
bGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YVRva2VuKSAtPiAoc3RkOjpz
cGFuPGNvbnN0IHVpbnQ4X3Q+IHRva2VuLCBpbnQgcHJvY2Vzc0lkZW50aWZpZXIpIFN5bmNocm9u
b3VzCisgICAgVXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpJbnRQb2ludCBvZmZzZXQpCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCmluZGV4IDEw
YzRmNmFlMTI1MC4uNjM4OGNiNDY3MmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaApAQCAtMTEwLDcgKzExMCw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBjbGVhckFsbEVkaXRDb21tYW5kcygpIG92ZXJyaWRlOwogICAgIGJvb2wgY2FuVW5k
b1JlZG8oVW5kb09yUmVkbykgb3ZlcnJpZGU7CiAgICAgdm9pZCBleGVjdXRlVW5kb1JlZG8oVW5k
b09yUmVkbykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2Vu
UmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KSBvdmVycmlkZTsKKyAgICB2b2lkIGFj
Y2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChzdGQ6OnNwYW48Y29uc3QgdWludDhf
dD4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgcGlkX3QpIG92ZXJyaWRlOwogICAgIGJvb2wg
ZXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxlY3Rvcikgb3Zl
cnJpZGU7CiAgICAgdm9pZCB1cGRhdGVTZWN1cmVJbnB1dFN0YXRlKCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCByZXNldFNlY3VyZUlucHV0U3RhdGUoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCBjYjIzZjQ5NzRhNmIu
LmI1YWRkZGNlMjNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Bh
Z2VDbGllbnRJbXBsSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5tbQpAQCAtMzg5LDcgKzM4OSw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6
OmV4ZWN1dGVVbmRvUmVkbyhVbmRvT3JSZWRvIHVuZG9PclJlZG8pCiAgICAgcmV0dXJuICh1bmRv
T3JSZWRvID09IFVuZG9PclJlZG86OlVuZG8pID8gW1tjb250ZW50VmlldygpIHVuZG9NYW5hZ2Vy
XSB1bmRvXSA6IFtbY29udGVudFZpZXcoKSB1bmRvTWFuYWdlcl0gcmVkb107CiB9CiAKLXZvaWQg
UGFnZUNsaWVudEltcGw6OmFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChzdGQ6
OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSkKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmFjY2Vzc2li
aWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0
YSwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBwaWRfdCkKIHsKICAgICBOU0RhdGEgKnJlbW90
ZVRva2VuID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEuZGF0YSgpIGxlbmd0aDpkYXRhLnNp
emUoKV07CiAgICAgW2NvbnRlbnRWaWV3KCkgX3NldEFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9r
ZW46cmVtb3RlVG9rZW5dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdl
UHJveHlJT1MubW0KaW5kZXggNWIxMGY1OWM2NjYxLi4wNDczYzc4ZmNjMWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtNzYzLDkgKzc2
Myw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoYm9v
bCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0
ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBk
YXRhKQordm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlU
b2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSwgRnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQpCiB7Ci0gICAgcHJvdGVjdGVkUGFnZUNsaWVudCgpLT5hY2Nlc3NpYmlsaXR5V2ViUHJvY2Vz
c1Rva2VuUmVjZWl2ZWQoZGF0YSk7CisgICAgcGFnZUNsaWVudCgpLmFjY2Vzc2liaWxpdHlXZWJQ
cm9jZXNzVG9rZW5SZWNlaXZlZChkYXRhLCBmcmFtZUlEKTsKIH0gICAgCiAKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaAppbmRleCBmYjZjNjA3
ODY3YWYuLmJmOGRhNDMwZDhhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1BhZ2VDbGllbnRJbXBsTWFjLmgKQEAgLTE3Niw3ICsxNzYsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgZ2VzdHVyZUV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShjb25zdCBOYXRpdmVXZWJHZXN0
dXJlRXZlbnQmKSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgdm9pZCBhY2Nlc3NpYmlsaXR5V2Vi
UHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KSBvdmVycmlkZTsK
KyAgICB2b2lkIGFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChzdGQ6OnNwYW48
Y29uc3QgdWludDhfdD4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgcGlkX3QpIG92ZXJyaWRl
OwogCiAgICAgdm9pZCBtYWtlRmlyc3RSZXNwb25kZXIoKSBvdmVycmlkZTsKICAgICB2b2lkIGFz
c2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQppbmRleCAwNzgw
ZjE4ZGExYzIuLjAxNTBlYzQ1MTJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQpAQCAtNTgxLDkgKzU4MSw5IEBAIHZvaWQgUGFnZUNs
aWVudEltcGw6OnNldFRleHRJbmRpY2F0b3JBbmltYXRpb25Qcm9ncmVzcyhmbG9hdCBwcm9ncmVz
cykKICAgICBtX2ltcGwtPnNldFRleHRJbmRpY2F0b3JBbmltYXRpb25Qcm9ncmVzcyhwcm9ncmVz
cyk7CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OmFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9r
ZW5SZWNlaXZlZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSkKK3ZvaWQgUGFnZUNsaWVu
dEltcGw6OmFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChzdGQ6OnNwYW48Y29u
c3QgdWludDhfdD4gZGF0YSwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHBpZF90
IHBpZCkKIHsKLSAgICBtX2ltcGwtPnNldEFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW4oW05T
RGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEuZGF0YSgpIGxlbmd0aDpkYXRhLnNpemUoKV0pOworICAg
IG1faW1wbC0+c2V0QWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlbihbTlNEYXRhIGRhdGFXaXRo
Qnl0ZXM6ZGF0YS5kYXRhKCkgbGVuZ3RoOmRhdGEuc2l6ZSgpXSwgZnJhbWVJRCwgcGlkKTsKIH0K
ICAgICAKIHZvaWQgUGFnZUNsaWVudEltcGw6OmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01v
ZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgbGF5ZXJUcmVlQ29udGV4dCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IGNmYjEwZmRiYjQx
My4uODY5NjE3YTI5ZDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQ
YWdlUHJveHlNYWMubW0KQEAgLTMwNiwxMiArMzA2LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChjb25zdCBEaWN0aW9uYXJ5UG9wdXBJbmZvJiBkaWN0
aW9uCiAgICAgcHJvdGVjdGVkUGFnZUNsaWVudCgpLT5kaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1
cChkaWN0aW9uYXJ5UG9wdXBJbmZvKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVy
V2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0
YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9r
ZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
KQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogICAg
IAotICAgIHByb3RlY3RlZFBhZ2VDbGllbnQoKS0+YWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tl
blJlY2VpdmVkKGRhdGEpOworICAgIHByb3RlY3RlZFBhZ2VDbGllbnQoKS0+YWNjZXNzaWJpbGl0
eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKGRhdGEsIGZyYW1lSUQsIG1lc3NhZ2VTZW5kZXJDb25u
ZWN0aW9uKCktPnJlbW90ZVByb2Nlc3NJRCgpKTsKIH0gICAgCiAKIHZvaWQgV2ViUGFnZVByb3h5
OjptYWtlRmlyc3RSZXNwb25kZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmll
d0ltcGwuaAppbmRleCAwM2RmZGFlZTE1M2MuLjVhMmUxMjlmZGM4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJbXBsLmgKQEAgLTQ0OCw3ICs0NDgsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRJZ25vcmVzTW91c2VEcmFnZ2VkRXZlbnRzKGJvb2wpOwogICAgIGJvb2wg
aWdub3Jlc01vdXNlRHJhZ2dlZEV2ZW50cygpIGNvbnN0IHsgcmV0dXJuIG1faWdub3Jlc01vdXNl
RHJhZ2dlZEV2ZW50czsgfQogCi0gICAgdm9pZCBzZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rv
a2VuKE5TRGF0YSAqKTsKKyAgICB2b2lkIHNldEFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW4o
TlNEYXRhICosIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgcGlkX3QpOwogICAgIHZvaWQgYWNj
ZXNzaWJpbGl0eVJlZ2lzdGVyVUlQcm9jZXNzVG9rZW5zKCk7CiAgICAgdm9pZCB1cGRhdGVSZW1v
dGVBY2Nlc3NpYmlsaXR5UmVnaXN0cmF0aW9uKGJvb2wgcmVnaXN0ZXJQcm9jZXNzKTsKICAgICBp
ZCBhY2Nlc3NpYmlsaXR5Rm9jdXNlZFVJRWxlbWVudCgpOwpAQCAtOTI3LDYgKzkyNyw3IEBAIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIGJvb2wgbV9hbGxvd3NNYWduaWZp
Y2F0aW9uIHsgZmFsc2UgfTsKIAogICAgIFJldGFpblB0cjxOU0FjY2Vzc2liaWxpdHlSZW1vdGVV
SUVsZW1lbnQ+IG1fcmVtb3RlQWNjZXNzaWJpbGl0eUNoaWxkOworICAgIFJldGFpblB0cjxOU011
dGFibGVEaWN0aW9uYXJ5PiBtX3JlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZUNhY2hlOwogCiAgICAg
UmVmUHRyPFdlYkNvcmU6OkltYWdlPiBtX3Byb21pc2VkSW1hZ2U7CiAgICAgU3RyaW5nIG1fcHJv
bWlzZWRGaWxlbmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
ZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3SW1wbC5t
bQppbmRleCA1YmRlMTExNjI3OTAuLmE0YjMwN2Q3NmU3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9XZWJWaWV3SW1wbC5tbQpAQCAtMzQ4MSwxMCArMzQ4MSwxMiBAQCB2b2lkIFdl
YlZpZXdJbXBsOjpzZXRJZ25vcmVzTW91c2VEcmFnZ2VkRXZlbnRzKGJvb2wgaWdub3Jlc01vdXNl
RHJhZ2dlZEV2ZW50cykKICAgICBtX2lnbm9yZXNNb3VzZURyYWdnZWRFdmVudHMgPSBpZ25vcmVz
TW91c2VEcmFnZ2VkRXZlbnRzOwogfQogCi12b2lkIFdlYlZpZXdJbXBsOjpzZXRBY2Nlc3NpYmls
aXR5V2ViUHJvY2Vzc1Rva2VuKE5TRGF0YSAqZGF0YSkKK3ZvaWQgV2ViVmlld0ltcGw6OnNldEFj
Y2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW4oTlNEYXRhICpkYXRhLCBXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgcGlkX3QgcGlkKQogewotICAgIG1fcmVtb3RlQWNjZXNzaWJpbGl0
eUNoaWxkID0gZGF0YS5sZW5ndGggPyBhZG9wdE5TKFtbTlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlF
bGVtZW50IGFsbG9jXSBpbml0V2l0aFJlbW90ZVRva2VuOmRhdGFdKSA6IG5pbDsKLSAgICB1cGRh
dGVSZW1vdGVBY2Nlc3NpYmlsaXR5UmVnaXN0cmF0aW9uKHRydWUpOworICAgIGlmIChwaWQgPT0g
bV9wYWdlLT5wcm9jZXNzKCkucHJvY2Vzc0lEKCkpIHsKKyAgICAgICAgbV9yZW1vdGVBY2Nlc3Np
YmlsaXR5Q2hpbGQgPSBkYXRhLmxlbmd0aCA/IGFkb3B0TlMoW1tOU0FjY2Vzc2liaWxpdHlSZW1v
dGVVSUVsZW1lbnQgYWxsb2NdIGluaXRXaXRoUmVtb3RlVG9rZW46ZGF0YV0pIDogbmlsOworICAg
ICAgICB1cGRhdGVSZW1vdGVBY2Nlc3NpYmlsaXR5UmVnaXN0cmF0aW9uKHRydWUpOworICAgIH0K
IH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6dXBkYXRlUmVtb3RlQWNjZXNzaWJpbGl0eVJlZ2lzdHJh
dGlvbihib29sIHJlZ2lzdGVyUHJvY2VzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJMb2NhbEZyYW1lTG9hZGVy
Q2xpZW50LmNwcAppbmRleCA3ZDJhNDI2NWZkNWMuLmYzZjczZjM2N2VhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkxvY2FsRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTgwNyw2ICsxODA3LDEyIEBAIHZv
aWQgV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsRGVzdHJveUdsb2JhbE9i
amVjdEZvckRPTVdpbmRvd0V4dGVuCiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAKK1dlYkNv
cmU6OkludFBvaW50IFdlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQ6OmFjY2Vzc2liaWxpdHlSZW1v
dGVGcmFtZU9mZnNldCgpCit7CisgICAgUmVmUHRyIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7
CisgICAgcmV0dXJuIHdlYlBhZ2UgPyB3ZWJQYWdlLT5hY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVP
ZmZzZXQoKSA6IEludFBvaW50KCk7Cit9CisKIFJlbW90ZUFYT2JqZWN0UmVmIFdlYkxvY2FsRnJh
bWVMb2FkZXJDbGllbnQ6OmFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKQogewogICAgIFJlZlB0
ciB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJMb2NhbEZyYW1lTG9hZGVy
Q2xpZW50LmgKaW5kZXggODhjOGNjNWNiNzJlLi45ZjNiNjdmMGZjYjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJMb2NhbEZyYW1lTG9hZGVy
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMjQwLDYgKzI0MCw3IEBAIHByaXZhdGU6CiAK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZW1vdGVBWE9iamVjdFJlZiBhY2Nlc3NpYmlsaXR5
UmVtb3RlT2JqZWN0KCkgZmluYWw7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgYWNjZXNzaWJpbGl0
eVJlbW90ZUZyYW1lT2Zmc2V0KCkgZmluYWw7CiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNP
TEFURURfVFJFRSkKICAgICB2b2lkIHNldEFYSXNvbGF0ZWRUcmVlUm9vdChXZWJDb3JlOjpBWENv
cmVPYmplY3QqKSBmaW5hbDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90ZUZyYW1lQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVudC5jcHAK
aW5kZXggOGNiZmYyYzliOGM5Li5hMmYwOTQ4ZDQzMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90ZUZyYW1l
Q2xpZW50LmNwcApAQCAtOTYsNiArOTYsMzggQEAgU3RyaW5nIFdlYlJlbW90ZUZyYW1lQ2xpZW50
OjpyZW5kZXJUcmVlQXNUZXh0KHNpemVfdCBiYXNlSW5kZW50LCBPcHRpb25TZXQ8UmVuZGUKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCit2b2lkIFdlYlJlbW90ZUZyYW1lQ2xpZW50Ojp1bmJpbmRS
ZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllcikKK3sKKyAgICAv
LyBNYWtlIHN1cmUgQXBwS2l0IHN5c3RlbSBrbm93cyBhYm91dCBvdXIgcmVtb3RlIFVJIHByb2Nl
c3Mgc3RhdHVzIG5vdy4KKyAgICBpZiAoUmVmUHRyIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpCisg
ICAgICAgIHBhZ2UtPmFjY2Vzc2liaWxpdHlNYW5hZ2VSZW1vdGVFbGVtZW50U3RhdHVzKGZhbHNl
LCBwcm9jZXNzSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViUmVtb3RlRnJhbWVDbGllbnQ6OnVw
ZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgV2ViQ29yZTo6SW50UG9pbnQgb2Zmc2V0KQoreworICAgIGlmIChSZWZQdHIg
cGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgcGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpVcGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQoZnJhbWVJRCwg
b2Zmc2V0KSk7Cit9CisKK3ZvaWQgV2ViUmVtb3RlRnJhbWVDbGllbnQ6OmJpbmRSZW1vdGVBY2Nl
c3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIGNvbnN0IHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhVG9rZW4s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBpbnQpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFJlZlB0ciBwYWdlID0gbV9mcmFtZS0+cGFnZSgp
OworICAgIGlmICghcGFnZSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6OnNwYW48
Y29uc3QgdWludDhfdD4geyB9LCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHBhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJp
bmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKHByb2Nlc3NJZGVudGlmaWVyLCBmcmFtZUlELCBk
YXRhVG9rZW4pKTsKKyAgICBpZiAoIXNlbmRSZXN1bHQuc3VjY2VlZGVkKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGF1dG8gW3Jlc3VsdFRva2VuLCBwcm9jZXNzSWRlbnRpZmllclJlc3VsdF0g
PSBzZW5kUmVzdWx0LnRha2VSZXBseSgpOworCisgICAgLy8gTWFrZSBzdXJlIEFwcEtpdCBzeXN0
ZW0ga25vd3MgYWJvdXQgb3VyIHJlbW90ZSBVSSBwcm9jZXNzIHN0YXR1cyBub3cuCisgICAgcGFn
ZS0+YWNjZXNzaWJpbGl0eU1hbmFnZVJlbW90ZUVsZW1lbnRTdGF0dXModHJ1ZSwgcHJvY2Vzc0lk
ZW50aWZpZXJSZXN1bHQpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdFRva2VuLCBwcm9j
ZXNzSWRlbnRpZmllclJlc3VsdCk7Cit9CisKIHZvaWQgV2ViUmVtb3RlRnJhbWVDbGllbnQ6OmJy
b2FkY2FzdEZyYW1lUmVtb3ZhbFRvT3RoZXJQcm9jZXNzZXMoKQogewogICAgIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50Ojpicm9hZGNhc3RGcmFtZVJlbW92YWxUb090aGVyUHJvY2Vzc2VzKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3Rl
RnJhbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJSZW1vdGVGcmFtZUNsaWVudC5oCmluZGV4IDYyNmUwNWMzZTg4Yi4uYzg4OWViN2U1ZmFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVt
b3RlRnJhbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuaApAQCAtNDgsNiArNDgsMTAgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHBvc3RNZXNzYWdlVG9SZW1vdGUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHNv
dXJjZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciB0YXJnZXQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiB0YXJn
ZXRPcmlnaW4sIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJikgZmluYWw7
CiAgICAgdm9pZCBjaGFuZ2VMb2NhdGlvbihXZWJDb3JlOjpGcmFtZUxvYWRSZXF1ZXN0JiYpIGZp
bmFsOwogICAgIFN0cmluZyByZW5kZXJUcmVlQXNUZXh0KHNpemVfdCBiYXNlSW5kZW50LCBPcHRp
b25TZXQ8V2ViQ29yZTo6UmVuZGVyQXNUZXh0RmxhZz4pIGZpbmFsOworICAgIHZvaWQgYmluZFJl
bW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIGludCk+JiYpIGZpbmFsOworICAgIHZv
aWQgdW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQpIGZpbmFsOworICAgIHZvaWQg
dXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciwgV2ViQ29yZTo6SW50UG9pbnQpIGZpbmFsOworCiAgICAgdm9pZCBicm9hZGNhc3RGcmFt
ZVJlbW92YWxUb090aGVyUHJvY2Vzc2VzKCkgZmluYWw7CiAgICAgdm9pZCBjbG9zZVBhZ2UoKSBm
aW5hbDsKICAgICB2b2lkIGZvY3VzKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KaW5kZXggYWU0M2YxYTQ2
OThiLi5lZmY2NGEzMDFmNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KQEAgLTc3LDYgKzc3LDcgQEAKICNpbXBv
cnQgPFdlYkNvcmUvVVRJUmVnaXN0cnkuaD4KICNpbXBvcnQgPFdlYkNvcmUvVVRJVXRpbGl0aWVz
Lmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmg+CisjaW1wb3J0
IDxwYWwvc3BpL2NvY29hL05TQWNjZXNzaWJpbGl0eVNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9j
b2NvYS9RdWFydHpDb3JlU1BJLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJ
Lmg+CiAKQEAgLTQwNCwxMCArNDA1LDQ2IEBAIHZvaWQgV2ViUGFnZTo6Y2xlYXJEaWN0YXRpb25B
bHRlcm5hdGl2ZXMoVmVjdG9yPERpY3RhdGlvbkNvbnRleHQ+JiYgY29udGV4dHMpCiAgICAgfSwg
RG9jdW1lbnRNYXJrZXI6OlR5cGU6OkRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CiB9CiAKLXZvaWQg
V2ViUGFnZTo6YWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oUmV0YWluUHRyPE5TRGF0
YT4gcmVtb3RlVG9rZW4pCit2b2lkIFdlYlBhZ2U6OmFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90
ZVRva2VuKFJldGFpblB0cjxOU0RhdGE+IHJlbW90ZVRva2VuLCBGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCkKIHsKICAgICBzdGQ6OnNwYW4gZGF0YVRva2VuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KFtyZW1vdGVUb2tlbiBieXRlc10pLCBbcmVtb3RlVG9rZW4gbGVuZ3RoXSk7Ci0g
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3Np
YmlsaXR5VG9rZW4oZGF0YVRva2VuKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpSZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oZGF0YVRva2VuLCBmcmFtZUlE
KSk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6YWNjZXNzaWJpbGl0eU1hbmFnZVJlbW90ZUVsZW1lbnRT
dGF0dXMoYm9vbCByZWdpc3RlclN0YXR1cywgaW50IHByb2Nlc3NJZGVudGlmaWVyKQoreworICAg
IGlmIChyZWdpc3RlclN0YXR1cykKKyAgICAgICAgW05TQWNjZXNzaWJpbGl0eVJlbW90ZVVJRWxl
bWVudCByZWdpc3RlclJlbW90ZVVJUHJvY2Vzc0lkZW50aWZpZXI6cHJvY2Vzc0lkZW50aWZpZXJd
OworICAgIGVsc2UKKyAgICAgICAgW05TQWNjZXNzaWJpbGl0eVJlbW90ZVVJRWxlbWVudCB1bnJl
Z2lzdGVyUmVtb3RlVUlQcm9jZXNzSWRlbnRpZmllcjpwcm9jZXNzSWRlbnRpZmllcl07Cit9CisK
K3ZvaWQgV2ViUGFnZTo6YmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RkOjpzcGFuPGNv
bnN0IHVpbnQ4X3Q+IGRhdGFUb2tlbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6OnNwYW48
Y29uc3QgdWludDhfdD4sIGludCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgUmVmUHRy
IHdlYkZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCk7Cisg
ICAgaWYgKCF3ZWJGcmFtZSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgMCk7CisgICAgfQorCisgICAgUmVmUHRy
IGNvcmVMb2NhbEZyYW1lID0gd2ViRnJhbWUtPmNvcmVMb2NhbEZyYW1lKCk7CisgICAgaWYgKCFj
b3JlTG9jYWxGcmFtZSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgMCk7CisgICAgfQorCisgICAgYXV0byogcmVu
ZGVyZXIgPSBjb3JlTG9jYWxGcmFtZS0+Y29udGVudFJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5k
ZXJlcikgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSwgMCk7CisgICAgfQorCisgICAgcmVnaXN0ZXJSZW1vdGVGcmFt
ZUFjY2Vzc2liaWxpdHlUb2tlbnMocHJvY2Vzc0lkZW50aWZpZXIsIGRhdGFUb2tlbik7CisKKyAg
ICAvLyBHZXQgb3VyIHJlbW90ZSB0b2tlbiBkYXRhIGFuZCBzZW5kIGJhY2sgdG8gdGhlIFJlbW90
ZUZyYW1lLgorICAgIGF1dG8gcmVtb3RlVG9rZW4gPSBhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5E
YXRhKCk7CisgICAgc3RkOjpzcGFuIHJlbW90ZURhdGFUb2tlbihyZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihbcmVtb3RlVG9rZW4gYnl0ZXNdKSwgW3JlbW90ZVRva2VuIGxlbmd0aF0p
OworICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlbW90ZURhdGFUb2tlbiwgZ2V0cGlkKCkpOwogfQog
CiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAppbmRleCAwOWIzZTdlNTk1NzUuLmVjOGY1MmU0YWM3MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNjcxLDYgKzY3MSwxMCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBjbGVhckhpc3RvcnkoKTsKIAogICAgIHZvaWQgYWNjZXNzaWJpbGl0
eVNldHRpbmdzRGlkQ2hhbmdlKCk7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBhY2Nl
c3NpYmlsaXR5TWFuYWdlUmVtb3RlRWxlbWVudFN0YXR1cyhib29sLCBpbnQpOworI2VuZGlmCisK
ICAgICB2b2lkIHNjcmVlblByb3BlcnRpZXNEaWRDaGFuZ2UoKTsKIAogICAgIHZvaWQgc2NhbGVQ
YWdlKGRvdWJsZSBzY2FsZSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIG9yaWdpbik7CkBAIC0x
MDQzLDcgKzEwNDcsMTEgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQg
cGxhdGZvcm1Jbml0aWFsaXplQWNjZXNzaWJpbGl0eSgpOwogICAgIHZvaWQgcmVnaXN0ZXJVSVBy
b2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBlbGVtZW50
VG9rZW4sIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiB3aW5kb3dUb2tlbik7CisgICAgdm9pZCBy
ZWdpc3RlclJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eVRva2VucyhwaWRfdCwgc3RkOjpzcGFuPGNv
bnN0IHVpbnQ4X3Q+KTsKICAgICBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0KiBhY2Nlc3Np
YmlsaXR5UmVtb3RlT2JqZWN0KCk7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgYWNjZXNzaWJpbGl0
eVJlbW90ZUZyYW1lT2Zmc2V0KCk7CisgICAgdm9pZCBjcmVhdGVNb2NrQWNjZXNzaWJpbGl0eUVs
ZW1lbnQocGlkX3QpOworICAgIHZvaWQgdXBkYXRlUmVtb3RlUGFnZUFjY2Vzc2liaWxpdHlPZmZz
ZXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpJbnRQb2ludCk7CiAjaWYgRU5B
QkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKICAgICB2b2lkIGNhY2hlQVhQb3NpdGlv
bihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAgICAgdm9pZCBjYWNoZUFYU2l6ZShjb25z
dCBXZWJDb3JlOjpJbnRTaXplJik7CkBAIC0yMDk0LDcgKzIxMDIsNyBAQCBwcml2YXRlOgogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgcmVxdWVzdEFjdGl2ZU5vd1BsYXlpbmdTZXNzaW9u
SW5mbyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wsIFdlYkNvcmU6Ok5vd1BsYXlpbmdJbmZv
JiYpPiYmKTsKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5E
YXRhKCkgY29uc3Q7Ci0gICAgdm9pZCBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tlbihS
ZXRhaW5QdHI8TlNEYXRhPik7CisgICAgdm9pZCBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVU
b2tlbihSZXRhaW5QdHI8TlNEYXRhPiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICNlbmRp
ZgogCiAgICAgdm9pZCBzZXRTaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMoYm9vbCBk
aXNwYXRjaCkgeyBtX3Nob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cyA9IGRpc3BhdGNo
OyB9CkBAIC0yMjA0LDYgKzIyMTIsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZW1vdGVQb3N0
TWVzc2FnZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgc291cmNlLCBjb25zdCBTdHJpbmcmIHNv
dXJjZU9yaWdpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHRhcmdldCwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiYgdGFyZ2V0T3JpZ2luLCBjb25zdCBXZWJD
b3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYpOwogICAgIHZvaWQgcmVuZGVyVHJlZUFzVGV4
dChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHNpemVfdCBiYXNlSW5kZW50LCBPcHRpb25TZXQ8
V2ViQ29yZTo6UmVuZGVyQXNUZXh0RmxhZz4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5n
JiYpPiYmKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIGJpbmRSZW1vdGVBY2Nlc3Np
YmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3Rk
OjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBpbnQpPiYmKTsKKyNlbmRpZgogCiAgICAgdm9pZCByZXF1
ZXN0VGV4dEV4dHJhY3Rpb24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+JiYgY29s
bGVjdGlvblJlY3RJblJvb3RWaWV3LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlRl
eHRFeHRyYWN0aW9uOjpJdGVtJiYpPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggZWQ5YzAxYWJkMTVmLi44
MTdkZWNkNmRjZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNDkyLDYgKzQ5Miw5IEBAIEdlbmVyYXRlU3ludGhl
dGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0Nv
bW1hbmRUeXBlCiAgICAgV2luZG93QW5kVmlld0ZyYW1lc0NoYW5nZWQoc3RydWN0IFdlYktpdDo6
Vmlld1dpbmRvd0Nvb3JkaW5hdGVzIGNvb3JkaW5hdGVzKQogICAgIFNldE1haW5GcmFtZUlzU2Ny
b2xsYWJsZShib29sIGlzU2Nyb2xsYWJsZSkKICAgICBSZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2li
aWxpdHlUb2tlbnMoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGVsZW1lbnRUb2tlbiwgc3RkOjpz
cGFuPGNvbnN0IHVpbnQ4X3Q+IHdpbmRvd1Rva2VuKQorICAgIEJpbmRSZW1vdGVBY2Nlc3NpYmls
aXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhVG9rZW4pIC0+IChzdGQ6OnNw
YW48Y29uc3QgdWludDhfdD4gdG9rZW4sIGludCBwcm9jZXNzSWRlbnRpZmllcikgU3luY2hyb25v
dXMKKyAgICBVcGRhdGVSZW1vdGVQYWdlQWNjZXNzaWJpbGl0eU9mZnNldChXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6SW50UG9pbnQgb2Zmc2V0KTsKKwogICAgIEdl
dFN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKSAtPiAoU3RyaW5nIHN0cmluZ1ZhbHVlKSBT
eW5jaHJvbm91cwogICAgIEdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFN0cmluZyBwYXN0
ZWJvYXJkVHlwZSkgLT4gKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlcikgU3lu
Y2hyb25vdXMKICAgICBSZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoU3RyaW5nIHBhc3RlYm9h
cmROYW1lKSAtPiAoYm9vbCByZXN1bHQpIFN5bmNocm9ub3VzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IGE3ZmQ3MjMxMjdj
MC4uMTBkOTg4YTM1YzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMjQzLDEyICsyNDMsMTQgQEAgdm9pZCBXZWJQYWdl
OjpwbGF0Zm9ybUluaXRpYWxpemVBY2Nlc3NpYmlsaXR5KCkKICAgICBtX21vY2tBY2Nlc3NpYmls
aXR5RWxlbWVudCA9IGFkb3B0TlMoW1tXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0IGFsbG9j
XSBpbml0XSk7CiAgICAgW21fbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50IHNldFdlYlBhZ2U6dGhp
c107CiAKLSAgICBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tlbihhY2Nlc3NpYmlsaXR5
UmVtb3RlVG9rZW5EYXRhKCkpOworICAgIFJlZiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9s
bGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgYWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVt
b3RlVG9rZW4oYWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0YSgpLCBmcmFtZS5mcmFtZUlEKCkp
OwogfQogCiB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtUmVpbml0aWFsaXplKCkKIHsKLSAgICBhY2Nl
c3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tlbihhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRh
KCkpOworICAgIFJlZiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9y
TWFpbkZyYW1lKCk7CisgICAgYWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oYWNjZXNz
aWJpbGl0eVJlbW90ZVRva2VuRGF0YSgpLCBmcmFtZS5mcmFtZUlEKCkpOwogfQogCiBSZXRhaW5Q
dHI8TlNEYXRhPiBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCkgY29uc3QK
QEAgLTY2Miw2ICs2NjQsMTIgQEAgdm9pZCBXZWJQYWdlOjpnZXREYXRhU2VsZWN0aW9uRm9yUGFz
dGVib2FyZChjb25zdCBTdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQKICAgICBjb21wbGV0
aW9uSGFuZGxlcih7IH0pOwogfQogCitXZWJDb3JlOjpJbnRQb2ludCBXZWJQYWdlOjphY2Nlc3Np
YmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIHsgfTsKK30KKwogV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdCogV2ViUGFnZTo6
YWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2li
aWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmgKaW5kZXggMzllOTBlM2M4
OTVlLi40OTcwMDcwYTQ1NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2Jq
ZWN0QmFzZS5oCkBAIC00NSw2ICs0NSw4IEBAIGNsYXNzIEFYQ29yZU9iamVjdDsKICAgICBXZWJD
b3JlOjpJbnRTaXplIG1fc2l6ZSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fY2FjaGVMb2NrKTsKICAg
ICBUaHJlYWRTYWZlV2Vha1B0cjxXZWJDb3JlOjpBWENvcmVPYmplY3Q+IG1faXNvbGF0ZWRUcmVl
Um9vdDsKICNlbmRpZgorCisgICAgV2ViQ29yZTo6SW50UG9pbnQgbV9yZW1vdGVGcmFtZU9mZnNl
dDsKICAgICBSZXRhaW5QdHI8aWQ+IG1fcGFyZW50OwogICAgIGJvb2wgbV9oYXNNYWluRnJhbWVQ
bHVnaW47CiB9CkBAIC01Niw5ICs1OCwxMSBAQCBjbGFzcyBBWENvcmVPYmplY3Q7CiAtICh2b2lk
KXNldElzb2xhdGVkVHJlZVJvb3Q6KE5ha2VkUHRyPFdlYkNvcmU6OkFYQ29yZU9iamVjdD4pcm9v
dDsKICNlbmRpZgogLSAodm9pZClzZXRSZW1vdGVQYXJlbnQ6KGlkKXBhcmVudDsKKy0gKHZvaWQp
c2V0UmVtb3RlRnJhbWVPZmZzZXQ6KFdlYkNvcmU6OkludFBvaW50KW9mZnNldDsKIC0gKHZvaWQp
c2V0SGFzTWFpbkZyYW1lUGx1Z2luOihib29sKWhhc1BsdWdpbjsKIAogLSAoaWQpYWNjZXNzaWJp
bGl0eVJvb3RPYmplY3RXcmFwcGVyOwogLSAoaWQpYWNjZXNzaWJpbGl0eUZvY3VzZWRVSUVsZW1l
bnQ7CistIChXZWJDb3JlOjpJbnRQb2ludClhY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQ7
CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbQpp
bmRleCA2Zjk5NTQ1YWViZjUuLmJlYzhkNzNmYWEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2li
aWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbQpAQCAtMzYsOSArMzYsMTEgQEAKICNpbXBvcnQgIldL
U3RyaW5nQ0YuaCIKICNpbXBvcnQgPFdlYkNvcmUvQVhPYmplY3RDYWNoZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9Eb2N1bWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVRyZWUuaD4KICNpbXBv
cnQgPFdlYkNvcmUvTG9jYWxGcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbEZyYW1lVmll
dy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1JlbW90ZUZy
YW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbFZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUv
U2Nyb2xsYmFyLmg+CiAKQEAgLTU3LDExICs1OSwxNyBAQCBuYW1lc3BhY2UgYXggPSBXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5OwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBhdXRvKiBsb2NhbE1haW5GcmFtZSA9IGR5bmFtaWNEb3duY2FzdDxXZWJDb3JlOjpM
b2NhbEZyYW1lPihwYWdlLT5tYWluRnJhbWUoKSk7Ci0gICAgaWYgKCFsb2NhbE1haW5GcmFtZSB8
fCAhbG9jYWxNYWluRnJhbWUtPmRvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIGlmIChhdXRvKiBsb2NhbE1haW5GcmFtZSA9IGR5bmFtaWNEb3duY2FzdDxXZWJDb3JlOjpM
b2NhbEZyYW1lPihwYWdlLT5tYWluRnJhbWUoKSkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGRvY3Vt
ZW50ID0gbG9jYWxNYWluRnJhbWUtPmRvY3VtZW50KCkpCisgICAgICAgICAgICByZXR1cm4gZG9j
dW1lbnQtPmF4T2JqZWN0Q2FjaGUoKTsKKyAgICB9IGVsc2UgaWYgKGF1dG8qIHJlbW90ZU1haW5G
cmFtZSA9IGR5bmFtaWNEb3duY2FzdDxXZWJDb3JlOjpSZW1vdGVGcmFtZT4ocGFnZS0+bWFpbkZy
YW1lKCkpKSB7CisgICAgICAgIGF1dG8mIHRyZWUgPSByZW1vdGVNYWluRnJhbWUtPnRyZWUoKTsK
KyAgICAgICAgYXV0byogZmlyc3RGcmFtZSA9IGR5bmFtaWNEb3duY2FzdDxXZWJDb3JlOjpMb2Nh
bEZyYW1lPih0cmVlLmZpcnN0Q2hpbGQoKSk7CisgICAgICAgIGF1dG8qIGRvY3VtZW50ID0gZmly
c3RGcmFtZSA/IGZpcnN0RnJhbWUtPmRvY3VtZW50KCkgOiBudWxscHRyOworICAgICAgICByZXR1
cm4gZG9jdW1lbnQgPyBkb2N1bWVudC0+YXhPYmplY3RDYWNoZSgpIDogbnVsbHB0cjsKKyAgICB9
CiAKLSAgICByZXR1cm4gbG9jYWxNYWluRnJhbWUtPmRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUo
KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogLSAoaWQpYWNjZXNzaWJpbGl0eVBsdWdpbk9i
amVjdApAQCAtMTUyLDYgKzE2MCwxNyBAQCBuYW1lc3BhY2UgYXggPSBXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5OwogICAgIG1faGFzTWFpbkZyYW1lUGx1Z2luID0gaGFzUGx1Z2luOwogfQogCistICh2
b2lkKXNldFJlbW90ZUZyYW1lT2Zmc2V0OihXZWJDb3JlOjpJbnRQb2ludClvZmZzZXQKK3sKKyAg
ICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKKyAgICBtX3JlbW90ZUZyYW1lT2Zmc2V0ID0gb2Zm
c2V0OworfQorCistIChXZWJDb3JlOjpJbnRQb2ludClhY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVP
ZmZzZXQKK3sKKyAgICByZXR1cm4gbV9yZW1vdGVGcmFtZU9mZnNldDsKK30KKwogLSAodm9pZClz
ZXRSZW1vdGVQYXJlbnQ6KGlkKXBhcmVudAogewogICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1h
Yy5tbQppbmRleCA5NmVkNjRhZGJjZmYuLjVmOWI4ODBjODBiZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTEyMywxNiAr
MTIzLDEyIEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplQWNjZXNzaWJpbGl0eSgp
CiAgICAgLy8gQ3VycmVudGx5LCBpdCBpcyBhbHNvIG5lZWRlZCB0byBhbGxvY2F0ZSBhbmQgaW5p
dGlhbGl6ZSBhbiBOU0FwcGxpY2F0aW9uIG9iamVjdC4KICAgICBbTlNBcHBsaWNhdGlvbiBfYWNj
ZXNzaWJpbGl0eUluaXRpYWxpemVdOwogCi0gICAgYXV0byBtb2NrQWNjZXNzaWJpbGl0eUVsZW1l
bnQgPSBhZG9wdE5TKFtbV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdCBhbGxvY10gaW5pdF0p
OwotCiAgICAgLy8gR2V0IHRoZSBwaWQgZm9yIHRoZSBzdGFydGluZyBwcm9jZXNzLgogICAgIHBp
ZF90IHBpZCA9IFdlYkNvcmU6OnByZXNlbnRpbmdBcHBsaWNhdGlvblBJRCgpOwotICAgIGlmIChb
bW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYWNj
ZXNzaWJpbGl0eVNldFByZXNlbnRlclByb2Nlc3NJZGVudGlmaWVyOildKQotICAgICAgICBbKGlk
KW1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudC5nZXQoKSBhY2Nlc3NpYmlsaXR5U2V0UHJlc2VudGVy
UHJvY2Vzc0lkZW50aWZpZXI6cGlkXTsKLSAgICBbbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50IHNl
dFdlYlBhZ2U6dGhpc107Ci0gICAgbV9tb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgPSBXVEZNb3Zl
KG1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCk7Ci0KLSAgICBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJS
ZW1vdGVUb2tlbihhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCkpOworICAgIGNyZWF0ZU1v
Y2tBY2Nlc3NpYmlsaXR5RWxlbWVudChwaWQpOworICAgIFJlZlB0ciBsb2NhbE1haW5GcmFtZSA9
IGR5bmFtaWNEb3duY2FzdDxMb2NhbEZyYW1lPihtX3BhZ2UtPm1haW5GcmFtZSgpKTsKKyAgICBp
ZiAobG9jYWxNYWluRnJhbWUpCisgICAgICAgIGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRv
a2VuKGFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSwgbG9jYWxNYWluRnJhbWUtPmZyYW1l
SUQoKSk7CiAKICAgICAvLyBDbG9zZSBNYWNoIGNvbm5lY3Rpb24gdG8gTGF1bmNoIFNlcnZpY2Vz
LgogI2lmIEhBVkUoTFNfU0VSVkVSX0NPTk5FQ1RJT05fU1RBVFVTX1JFTEVBU0VfTk9USUZJQ0FU
SU9OU19NQVNLKQpAQCAtMTQ0LDkgKzE0MCwyMCBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtSW5p
dGlhbGl6ZUFjY2Vzc2liaWxpdHkoKQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJldm9r
ZUxhdW5jaFNlcnZpY2VzU2FuZGJveEV4dGVuc2lvbigpOwogfQogCit2b2lkIFdlYlBhZ2U6OmNy
ZWF0ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudChwaWRfdCBwaWQpCit7CisgICAgYXV0byBtb2Nr
QWNjZXNzaWJpbGl0eUVsZW1lbnQgPSBhZG9wdE5TKFtbV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9i
amVjdCBhbGxvY10gaW5pdF0pOworCisgICAgaWYgKFttb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihhY2Nlc3NpYmlsaXR5U2V0UHJlc2VudGVyUHJv
Y2Vzc0lkZW50aWZpZXI6KV0pCisgICAgICAgIFsoaWQpbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50
LmdldCgpIGFjY2Vzc2liaWxpdHlTZXRQcmVzZW50ZXJQcm9jZXNzSWRlbnRpZmllcjpwaWRdOwor
ICAgIFttb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgc2V0V2ViUGFnZTp0aGlzXTsKKyAgICBtX21v
Y2tBY2Nlc3NpYmlsaXR5RWxlbWVudCA9IFdURk1vdmUobW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50
KTsKK30KKwogdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybVJlaW5pdGlhbGl6ZSgpCiB7Ci0gICAgYWNj
ZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oYWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0
YSgpKTsKKyAgICBSZWYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRP
ck1haW5GcmFtZSgpOworICAgIGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKGFjY2Vz
c2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSwgZnJhbWUtPmZyYW1lSUQoKSk7CiB9CiAKIFJldGFp
blB0cjxOU0RhdGE+IFdlYlBhZ2U6OmFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSBjb25z
dApAQCAtNDY5LDEyICs0NzYsMjcgQEAgYm9vbCBXZWJQYWdlOjpwZXJmb3JtTm9uRWRpdGluZ0Jl
aGF2aW9yRm9yU2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgS2V5Ym8KICAgICByZXR1
cm4gZGlkUGVyZm9ybUFjdGlvbjsKIH0KIAordm9pZCBXZWJQYWdlOjp1cGRhdGVSZW1vdGVQYWdl
QWNjZXNzaWJpbGl0eU9mZnNldChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2Vi
Q29yZTo6SW50UG9pbnQgb2Zmc2V0KQoreworICAgIFthY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0
KCkgc2V0UmVtb3RlRnJhbWVPZmZzZXQ6b2Zmc2V0XTsKK30KKwordm9pZCBXZWJQYWdlOjpyZWdp
c3RlclJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eVRva2VucyhwaWRfdCBwaWQsIHN0ZDo6c3Bhbjxj
b25zdCB1aW50OF90PiBlbGVtZW50VG9rZW4pCit7CisgICAgTlNEYXRhICplbGVtZW50VG9rZW5E
YXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmVsZW1lbnRUb2tlbi5kYXRhKCkgbGVuZ3RoOmVs
ZW1lbnRUb2tlbi5zaXplKCldOworICAgIGF1dG8gcmVtb3RlRWxlbWVudCA9IGVsZW1lbnRUb2tl
bkRhdGEubGVuZ3RoID8gYWRvcHROUyhbW05TQWNjZXNzaWJpbGl0eVJlbW90ZVVJRWxlbWVudCBh
bGxvY10gaW5pdFdpdGhSZW1vdGVUb2tlbjplbGVtZW50VG9rZW5EYXRhXSkgOiBuaWw7CisKKyAg
ICBjcmVhdGVNb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQocGlkKTsKKyAgICBbYWNjZXNzaWJpbGl0
eVJlbW90ZU9iamVjdCgpIHNldFJlbW90ZVBhcmVudDpyZW1vdGVFbGVtZW50LmdldCgpXTsKK30K
Kwogdm9pZCBXZWJQYWdlOjpyZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoc3Rk
OjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGVsZW1lbnRUb2tlbiwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4
X3Q+IHdpbmRvd1Rva2VuKQogewogICAgIE5TRGF0YSAqZWxlbWVudFRva2VuRGF0YSA9IFtOU0Rh
dGEgZGF0YVdpdGhCeXRlczplbGVtZW50VG9rZW4uZGF0YSgpIGxlbmd0aDplbGVtZW50VG9rZW4u
c2l6ZSgpXTsKICAgICBOU0RhdGEgKndpbmRvd1Rva2VuRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhC
eXRlczp3aW5kb3dUb2tlbi5kYXRhKCkgbGVuZ3RoOndpbmRvd1Rva2VuLnNpemUoKV07CiAgICAg
YXV0byByZW1vdGVFbGVtZW50ID0gZWxlbWVudFRva2VuRGF0YS5sZW5ndGggPyBhZG9wdE5TKFtb
TlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlFbGVtZW50IGFsbG9jXSBpbml0V2l0aFJlbW90ZVRva2Vu
OmVsZW1lbnRUb2tlbkRhdGFdKSA6IG5pbDsKICAgICBhdXRvIHJlbW90ZVdpbmRvdyA9IHdpbmRv
d1Rva2VuRGF0YS5sZW5ndGggPyBhZG9wdE5TKFtbTlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlFbGVt
ZW50IGFsbG9jXSBpbml0V2l0aFJlbW90ZVRva2VuOndpbmRvd1Rva2VuRGF0YV0pIDogbmlsOwor
CiAgICAgW3JlbW90ZUVsZW1lbnQgc2V0V2luZG93VUlFbGVtZW50OnJlbW90ZVdpbmRvdy5nZXQo
KV07CiAgICAgW3JlbW90ZUVsZW1lbnQgc2V0VG9wTGV2ZWxVSUVsZW1lbnQ6cmVtb3RlV2luZG93
LmdldCgpXTsKIApAQCAtNTE2LDYgKzUzOCwxMSBAQCBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2Jq
ZWN0KiBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkKICAgICByZXR1cm4gbV9t
b2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQuZ2V0KCk7CiB9CiAKK1dlYkNvcmU6OkludFBvaW50IFdl
YlBhZ2U6OmFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCgpCit7CisgICAgcmV0dXJuIFtt
X21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCBhY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXRd
OworfQorCiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKIHZvaWQgV2Vi
UGFnZTo6Y2FjaGVBWFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBvaW50KQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggMDYxNGJjZjdhZjVjLi5i
YTgzNjgwNjQ1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtNjUs
NiArNjUsOSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2NyZWVuUHJvcGVydGllcy5oPgogI2luY2x1
ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAjaW5jbHVkZSA8d3RmL01hY2hTZW5kUmlnaHQuaD4K
KworT0JKQ19DTEFTUyBOU011dGFibGVEaWN0aW9uYXJ5OworCiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKEdUSykKQEAgLTg3LDYgKzkwLDcgQEAKICNpbmNsdWRlICJXZWJTUUxpdGVEYXRhYmFzZVRy
YWNrZXIuaCIKICNlbmRpZgogCisKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgT2JqZWN0OwogfQpA
QCAtNTExLDYgKzUxNSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybVNldENhY2hlTW9k
ZWwoQ2FjaGVNb2RlbCk7CiAKICAgICB2b2lkIHNldEVuaGFuY2VkQWNjZXNzaWJpbGl0eShib29s
KTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIGJpbmRBY2Nlc3NpYmlsaXR5RnJhbWVX
aXRoRGF0YShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90
Pik7CisjZW5kaWYKIAogICAgIHZvaWQgc3RhcnRNZW1vcnlTYW1wbGVyKFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSYmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBkb3VibGUpOwogICAgIHZvaWQgc3Rv
cE1lbW9yeVNhbXBsZXIoKTsKQEAgLTgyNiw2ICs4MzMsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIEhhc2hDb3VudGVkU2V0PFN0cmluZz4gbV9wZW5kaW5nUGFzdGVib2Fy
ZFdyaXRlQ291bnRzOwogICAgIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gbV9hdWRpdFRv
a2VuRm9yU2VsZjsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gbV9hY2Nlc3Np
YmlsaXR5UmVtb3RlRnJhbWVUb2tlbkNhY2hlOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCmluZGV4IDk5YjQwMmFmMTFjYS4uZDc3NWZlN2QzOGQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNjksNiArNjksNyBAQCBt
ZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIE5vdFJlZkNvdW50ZWQgewogICAg
IFNldFRleHRDaGVja2VyU3RhdGUoc3RydWN0IFdlYktpdDo6VGV4dENoZWNrZXJTdGF0ZSB0ZXh0
Q2hlY2tlclN0YXRlKQogCiAgICAgU2V0RW5oYW5jZWRBY2Nlc3NpYmlsaXR5KGJvb2wgZmxhZykK
KyAgICBCaW5kQWNjZXNzaWJpbGl0eUZyYW1lV2l0aERhdGEoV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhKTsKIAogICAgIEdhcmJh
Z2VDb2xsZWN0SmF2YVNjcmlwdE9iamVjdHMoKQogICAgIFNldEphdmFTY3JpcHRHYXJiYWdlQ29s
bGVjdG9yVGltZXJFbmFibGVkKGJvb2wgZW5hYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggYzUzODU3ZmJlMWQ0Li4xMTYw
NmU5NjM5NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
cm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlBy
b2Nlc3NDb2NvYS5tbQpAQCAtMjEzLDYgKzIxMywxNiBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRm
b3JtU2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVsKQogewogfQogCit2b2lkIFdlYlByb2Nlc3M6OmJp
bmRBY2Nlc3NpYmlsaXR5RnJhbWVXaXRoRGF0YShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCit7CisgICAgaWYgKCFtX2FjY2Vz
c2liaWxpdHlSZW1vdGVGcmFtZVRva2VuQ2FjaGUpCisgICAgICAgIG1fYWNjZXNzaWJpbGl0eVJl
bW90ZUZyYW1lVG9rZW5DYWNoZSA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9j
XSBpbml0XSk7CisKKyAgICBhdXRvIGZyYW1lSW50ID0gZnJhbWVJRC5vYmplY3QoKS50b1VJbnQ2
NCgpOworICAgIE5TRGF0YSAqbnNEYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEuZGF0
YSgpIGxlbmd0aDpkYXRhLnNpemUoKV07CisgICAgW21fYWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1l
VG9rZW5DYWNoZSBzZXRPYmplY3Q6bnNEYXRhIGZvcktleTpAKGZyYW1lSW50KV07Cit9CisKIGlk
IFdlYlByb2Nlc3M6OmFjY2Vzc2liaWxpdHlGb2N1c2VkVUlFbGVtZW50KCkKIHsKICAgICBhdXRv
IHJldHJpZXZlRm9jdXNlZFVJRWxlbWVudEZyb21NYWluVGhyZWFkID0gW10gKCkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMjFlMjFmMDhiZDY0Li5iNGNmMjgyYzE4Y2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMjI1LDYgKzIyNSw3IEBAIHByaXZhdGU6CiAjZW5k
aWYKIAogICAgIFJlbW90ZUFYT2JqZWN0UmVmIGFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSBm
aW5hbCB7IHJldHVybiAwOyB9CisgICAgV2ViQ29yZTo6SW50UG9pbnQgYWNjZXNzaWJpbGl0eVJl
bW90ZUZyYW1lT2Zmc2V0KCkgZmluYWwgeyByZXR1cm4geyB9OyB9CiAjaWYgRU5BQkxFKEFDQ0VT
U0lCSUxJVFlfSVNPTEFURURfVFJFRSkKICAgICB2b2lkIHNldEFYSXNvbGF0ZWRUcmVlUm9vdChX
ZWJDb3JlOjpBWENvcmVPYmplY3QqKSBmaW5hbCB7IH0KICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>469902</attachid>
            <date>2024-02-15 15:57:17 -0800</date>
            <delta_ts>2024-02-15 17:42:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-268804-20240215155715.patch</filename>
            <type>text/plain</type>
            <size>116378</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">RnJvbSA1OTBmMmM0MDVmM2FhNWZmOWYwMjY3NjlhMjkwZTJlNjU4OTc1NjNjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpcyBGbGVpemFjaCA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4K
RGF0ZTogVGh1LCAxNSBGZWIgMjAyNCAxMjo0MDozOCAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIEFY
OiBTdXBwb3J0IHNpdGUgaXNvbGF0aW9uIGZvciBWb2ljZU92ZXIKIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjg4MDQgcmRhcjovLzk5NjY1NTYxCgpSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KCkluaXRpYWwgc3VwcG9ydCBmb3Igc2l0ZSBpc29sYXRpb24gZm9y
IFZvaWNlT3Zlci4KCldoZW4gYSBzY3JvbGwgdmlldyBob3N0cyBhIFJlbW90ZUZyYW1lIGl0IGJp
bmRzIGl0c2VsZiB0byB0aGUgb3RoZXIgc2lkZSB0aHJvdWdoIGEgV2ViUGFnZSBtZXNzYWdlLgpU
aGlzIHRyYW5zZmVycyBkYXRhIHRva2VucyBzbyBBY2Nlc3NpYmlsaXR5IHJlbW90ZSBlbGVtZW50
cyBhcmUgY3JlYXRlZCBhbmQgaG9va2VkIHVwLgoKVGhlIGJvdW5kaW5nIGJveGVzIGluc2lkZSB0
aGUgc3ViIGZyYW1lcyBuZWVkIHRvIGhhdmUgdGhlIGluaXRpYWwgb2Zmc2V0IGFwcGxpZWQgYW5k
IHRoZW4gbmVlZCB0byBiZSBjb252ZXJ0ZWQKZWFjaCBzdGVwIHVwIHRoZSBjaGFpbiB0byBhY2Nv
dW50IGZvciBzY3JvbGwgb2Zmc2V0cyB0aGF0IG9ubHkgZWFjaCBwcm9jZXNzIGtub3dzIGFib3V0
LgoKKiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dDoKKiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWENvcmVPYmplY3QuaDoKKFdlYkNvcmU6OmFjY2Vzc2liaWxpdHlSb2xlVG9TdHJpbmcpOgoo
V2ViQ29yZTo6QVhDb3JlT2JqZWN0Ojppc1JlbW90ZUZyYW1lIGNvbnN0KToKKiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcDoKKFdlYkNvcmU6OnN0cmVhbUFYQ29yZU9i
amVjdCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoK
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmNyZWF0ZSk6CihXZWJDb3JlOjpBWE9iamVjdENhY2hl
OjpvblJlbW90ZUZyYW1lSW5pdGlhbGl6ZWQpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5jcHA6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZWxhdGl2
ZUZyYW1lIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnJlbW90ZUZyYW1l
T2Zmc2V0IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW1vdGVGcmFtZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJh
bWVDbGllbnQuaC4KKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6Y3JlYXRlKToK
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6QWNjZXNzaWJpbGl0eVJlbW90ZUZy
YW1lKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6ZWxlbWVudFJlY3QgY29u
c3QpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbW90ZUZy
YW1lLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVDbGllbnQu
aC4KKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkQXR0YWNobWVu
dENoaWxkcmVuKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENoaWxk
cmVuKToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpkZXRhY2hSZW1vdGVQ
YXJ0cyk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6Y2xlYXJDaGlsZHJlbik6
CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkUmVtb3RlRnJhbWVDaGlsZCk6
CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkQ2hpbGRyZW4pOgooV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OndlYkFyZWFPYmplY3QgY29uc3QpOgooV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmRvY3VtZW50IGNvbnN0KToKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpwYXJlbnRPYmplY3QgY29uc3QpOgoqIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaDoKKiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcDoKKFdl
YkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKFdlYkNvcmU6
OkFYSXNvbGF0ZWRPYmplY3Q6OnNldFByb3BlcnR5KToKKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmpl
Y3Q6OnJlbW90ZUZyYW1lT2Zmc2V0IGNvbnN0KToKKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OnJlbGF0aXZlRnJhbWUgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHA6CihXZWJDb3JlOjpBWElzb2xhdGVk
VHJlZTo6dXBkYXRlTm9kZVByb3BlcnRpZXMpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMubW06CihXZWJDb3Jl
OjpBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplUGxhdGZvcm1Qcm9wZXJ0aWVzKToKKFdlYkNv
cmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50IGNvbnN0KToK
KiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFj
Lm1tOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lOjpnZW5lcmF0ZVJlbW90ZVRv
a2VuIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6aW5pdGlhbGl6
ZVBsYXRmb3JtRWxlbWVudFdpdGhSZW1vdGVUb2tlbik6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
OjpjcmVhdGVQbGF0Zm9ybVJvbGVNYXApOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbToKKG1ha2VOU0FycmF5KToK
KiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgcm9sZV0pOgoo
LVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBpc0VtcHR5R3JvdXBdKToKKC1bV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgcm9sZURlc2NyaXB0aW9uXSk6CigtW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIF90cmFuc2Zvcm1TcGVjaWFsQ2hpbGRyZW5DYXNlczpdKToKKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
Ol0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5SGl0VGVz
dDpdKToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgQUxMT1dfREVQUkVDQVRFRF9J
TVBMRU1FTlRBVElPTlNfRU5EXSk6CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpmb3JQYXJhbWV0ZXI6XSk6CigtW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlJbmRleE9mQ2hpbGQ6XSk6CigtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZUNvdW50
Ol0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXJyYXlB
dHRyaWJ1dGVWYWx1ZXM6aW5kZXg6bWF4Q291bnQ6XSk6CiogU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHA6CihXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjphY2Nl
c3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQpOgoqIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUZyYW1lTG9hZGVyQ2xpZW50Lmg6CiogU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvY2FsRnJhbWVM
b2FkZXJDbGllbnQuaDoKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwOgooV2ViQ29yZTo6
UGFnZTo6c2hvdWxkVXBkYXRlQWNjZXNzaWJpbGl0eVJlZ2lvbnMgY29uc3QpOgoqIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuY3BwOgooV2ViQ29yZTo6UmVtb3RlRnJhbWU6OnVwZGF0
ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldCk6CihXZWJDb3JlOjpSZW1vdGVGcmFtZTo6
dW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyk6CihXZWJDb3JlOjpSZW1vdGVGcmFtZTo6
YmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMpOgoqIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVt
b3RlRnJhbWUuaDoKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lQ2xpZW50Lmg6Ciog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcDoKKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdl
UHJveHk6OnJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbik6CiogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaDoKKiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcDoKKFdlYktpdDo6V2ViRnJhbWVQcm94eTo6YmluZEFj
Y2Vzc2liaWxpdHlGcmFtZVdpdGhEYXRhKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJG
cmFtZVByb3h5Lmg6CiogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojpzd2FwVG9Qcm92aXNpb25hbFBhZ2UpOgooV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKToKKFdlYktpdDo6V2Vi
UGFnZVByb3h5Ojp1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQpOgoqIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MubW06CihXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5
V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQpOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW06CihXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9j
ZXNzQWNjZXNzaWJpbGl0eVRva2VuKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGxNYWMuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGxNYWMubW06CihXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5V2ViUHJv
Y2Vzc1Rva2VuUmVjZWl2ZWQpOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW06CihXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNj
ZXNzaWJpbGl0eVRva2VuKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0lt
cGwuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwubW06CihXZWJL
aXQ6OldlYlZpZXdJbXBsOjpzZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuKToKKiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNs
aWVudC5jcHA6CihXZWJLaXQ6OldlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQ6OmFjY2Vzc2liaWxp
dHlSZW1vdGVGcmFtZU9mZnNldCk6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuaDoKKiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuY3BwOgooV2ViS2l0OjpX
ZWJSZW1vdGVGcmFtZUNsaWVudDo6dW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyk6CihX
ZWJLaXQ6OldlYlJlbW90ZUZyYW1lQ2xpZW50Ojp1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxp
dHlPZmZzZXQpOgooV2ViS2l0OjpXZWJSZW1vdGVGcmFtZUNsaWVudDo6YmluZFJlbW90ZUFjY2Vz
c2liaWxpdHlGcmFtZXMpOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJSZW1vdGVGcmFtZUNsaWVudC5oOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKFdlYktpdDo6V2ViUGFnZTo6YWNjZXNzaWJpbGl0
eVRyYW5zZmVyUmVtb3RlVG9rZW4pOgooV2ViS2l0OjpXZWJQYWdlOjphY2Nlc3NpYmlsaXR5TWFu
YWdlUmVtb3RlRWxlbWVudFN0YXR1cyk6CihXZWJLaXQ6OldlYlBhZ2U6OmJpbmRSZW1vdGVBY2Nl
c3NpYmlsaXR5RnJhbWVzKToKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmg6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbjoKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bToKKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplQWNjZXNzaWJpbGl0eSk6CihX
ZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtUmVpbml0aWFsaXplKToKKFdlYktpdDo6V2ViUGFnZTo6
YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KToKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaDoKKiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9i
amVjdEJhc2UubW06CigtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlIGF4T2JqZWN0
Q2FjaGVdKToKKC1bV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2Ugc2V0UmVtb3RlRnJh
bWVPZmZzZXQ6XSk6CigtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlIGFjY2Vzc2li
aWxpdHlSZW1vdGVGcmFtZU9mZnNldF0pOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tOgooV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybUluaXRpYWxp
emVBY2Nlc3NpYmlsaXR5KToKKFdlYktpdDo6V2ViUGFnZTo6Y3JlYXRlTW9ja0FjY2Vzc2liaWxp
dHlFbGVtZW50KToKKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1SZWluaXRpYWxpemUpOgooV2Vi
S2l0OjpXZWJQYWdlOjp1cGRhdGVSZW1vdGVQYWdlQWNjZXNzaWJpbGl0eU9mZnNldCk6CihXZWJL
aXQ6OldlYlBhZ2U6OnJlZ2lzdGVyUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5VG9rZW5zKToKKFdl
YktpdDo6V2ViUGFnZTo6cmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKToKKFdl
YktpdDo6V2ViUGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KToKKiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJQcm9jZXNzQ29jb2EubW06CihXZWJLaXQ6OldlYlByb2Nlc3M6OmJpbmRBY2Nlc3NpYmls
aXR5RnJhbWVXaXRoRGF0YSk6CiogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKLS0tCiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dCAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogLi4uL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIHwgICA0ICsKIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhDb3JlT2JqZWN0LmggICB8ICAxMiArKwogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WExvZ2dlci5jcHAgICAgIHwgICAzICsKIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5jcHAgICB8ICAxNSArLQogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmggIHwgICAyICsKIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhSZW1vdGVG
cmFtZS5jcHAgICB8ICA0MiArKysrKwogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFJl
bW90ZUZyYW1lLmggIHwgIDYxICsrKysrKysrCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcCAgICAgfCAgMjMgKystCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmggICAgICAgfCAgIDUgKwogLi4uL0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
Y3BwICAgICAgICAgICAgIHwgICA0ICstCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldy5jcHAgfCAgNjIgKysrKysrKy0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlTY3JvbGxWaWV3LmggICB8ICAgNiArLQogLi4uL2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlcklPUy5tbSAgIHwgICAxICsKIC4uLi9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9i
amVjdC5jcHAgICAgICAgICB8ICAzNCArKysrLQogLi4uL2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
T2JqZWN0LmggICAgICAgICAgIHwgICA4ICstCiAuLi4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRU
cmVlLmNwcCAgICAgICAgICAgfCAgNjEgKysrLS0tLS0KIC4uLi9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZFRyZWUuaCAgICAgICAgICAgICB8ICAyOSArKysrCiAuLi4vaXNvbGF0ZWR0cmVlL21hYy9B
WElzb2xhdGVkT2JqZWN0TWFjLm1tICAgfCAgIDcgKwogLi4uL21hYy9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0TWFjLm1tICAgICAgICAgICAgIHwgIDI2ICsrKysKIC4uLi9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJCYXNlLm1tICB8ICAgOSArLQogLi4uL21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlck1hYy5tbSAgIHwgMTQzICsrKysrKysrKysrKy0tLS0tLQogU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgICAgICAgIHwgICA1ICsKIC4uLi9XZWJDb3Jl
L2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmggICB8ICAgMSArCiAuLi4vV2ViQ29yZS9s
b2FkZXIvTG9jYWxGcmFtZUxvYWRlckNsaWVudC5oICAgfCAgIDEgKwogU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcCAgICAgICAgICAgICAgICAgIHwgIDExICstCiBTb3VyY2UvV2ViQ29yZS9w
YWdlL1JlbW90ZUZyYW1lLmNwcCAgICAgICAgICAgfCAgMTUgKysKIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUmVtb3RlRnJhbWUuaCAgICAgICAgICAgICB8ICAgNCArCiBTb3VyY2UvV2ViQ29yZS9wYWdl
L1JlbW90ZUZyYW1lQ2xpZW50LmggICAgICAgfCAgIDQgKwogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGFnZUNsaWVudC5oICAgICAgICAgIHwgICAzICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9Q
cm92aXNpb25hbFBhZ2VQcm94eS5jcHAgfCAgIDIgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL1By
b3Zpc2lvbmFsUGFnZVByb3h5LmggICB8ICAgMiArLQogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViRnJhbWVQcm94eS5jcHAgICAgIHwgICA5ICsrCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJGcmFtZVByb3h5LmggICAgICAgfCAgIDIgKwogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcCAgICAgIHwgIDI0ICsrLQogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmggICAgICAgIHwgICA0ICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4gfCAgIDQgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5oICB8ICAgMiArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLm1tIHwgICAyICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tICAgfCAgIDQgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xp
ZW50SW1wbE1hYy5oICB8ICAgMiArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsTWFjLm1tIHwgICA0ICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVBy
b3h5TWFjLm1tICAgfCAgIDQgKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3
SW1wbC5oICAgICB8ICAgMyArLQogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJ
bXBsLm1tICAgIHwgICA4ICstCiAuLi4vV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudC5jcHAgICAg
ICAgICAgICAgfCAgIDYgKwogLi4uL1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuaCAgICAgICAg
ICAgICAgIHwgICAxICsKIC4uLi9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVudC5j
cHAgICB8ICAzMiArKysrCiAuLi4vV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQu
aCAgICAgfCAgIDQgKwogLi4uL1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2Eu
bW0gIHwgIDQ2ICsrKysrLQogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oICAgIHwgIDEzICstCiAuLi4vV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4gICAgfCAgIDMgKwogLi4uL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSAg
ICAgIHwgIDEyICstCiAuLi4vbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmgg
ICAgfCAgIDQgKwogLi4uL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbSAg
IHwgIDI3ICsrKy0KIC4uLi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gICAg
ICB8ICA0NSArKysrLS0KIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggICAg
ICAgICB8ICAgOCArCiAuLi4vV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
biAgfCAgIDEgKwogLi4uL1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tICAgICAg
IHwgIDEwICsrCiAuLi4vbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmgg
fCAgIDEgKwogNjAgZmlsZXMgY2hhbmdlZCwgNzQxIGluc2VydGlvbnMoKyksIDE1MCBkZWxldGlv
bnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
UmVtb3RlRnJhbWUuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWFJlbW90ZUZyYW1lLmgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDFmNTdiOWFhMGEzNC4u
YTUwZmU4OTQ5M2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtNTI1LDYgKzUyNSw3IEBAIGFjY2Vzc2li
aWxpdHkvQVhHZW9tZXRyeU1hbmFnZXIuY3BwCiBhY2Nlc3NpYmlsaXR5L0FYSW1hZ2UuY3BwCiBh
Y2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcAogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNw
cAorYWNjZXNzaWJpbGl0eS9BWFJlbW90ZUZyYW1lLmNwcAogYWNjZXNzaWJpbGl0eS9BWFRleHRN
YXJrZXIuY3BwCiBhY2Nlc3NpYmlsaXR5L0FYVGV4dFJ1bi5jcHAKIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDJhN2VjODY4MDAwMi4uNjdkZmMwZWRiNDYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC04OTYwLDYgKzg5NjAsOCBAQAogCQkyOTQ4OUZDNTEyQzAwRjAzMDBEODNGMEYgLyogQWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Mjk0OTg2ODExOTUzNDE5NDAwNzJEMkJEIC8qIFRleHRVbmRvSW5zZXJ0aW9uTWFya3VwTWFjLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVGV4dFVuZG9JbnNlcnRp
b25NYXJrdXBNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5NEJEQUU2MjFG
RjU4MkEwMDUxMDc3QiAvKiBBY2Nlc3NpYmlsaXR5T2JqZWN0Q29jb2EubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5T2JqZWN0Q29jb2EubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5NTVDRjExMkIyMzBBRTYwMDAxQkY4MiAv
KiBBWFJlbW90ZUZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFYUmVtb3RlRnJhbWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjk1NUNGMTIyQjIzMEFFNjAwMDFCRjgyIC8qIEFYUmVt
b3RlRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVhSZW1vdGVGcmFtZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5N0JFM0Q5MTZDMDQzRDgwMDMzMTZCRCAvKiBQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyOTgxQUJDNDEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eU1hdGhN
TEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1l
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTgxQ0E5RDEzMTgyMkVDMDBE
MTJGMkEgLyogQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFj
Y2Vzc2liaWxpdHlBUklBR3JpZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
MzQ0NSw2ICsyMzQ0Nyw4IEBACiAJCQkJQzA0OTNFQjcyNDQ2OTlFNDAwOUFBQzgwIC8qIEFYTG9n
Z2VyLmggKi8sCiAJCQkJMjk4MUNBQUYxMzE4MjJFQzAwRDEyRjJBIC8qIEFYT2JqZWN0Q2FjaGUu
Y3BwICovLAogCQkJCTI5QTgxMjFBMEZCQjlDMUQwMDUxMDI5MyAvKiBBWE9iamVjdENhY2hlLmgg
Ki8sCisJCQkJMjk1NUNGMTIyQjIzMEFFNjAwMDFCRjgyIC8qIEFYUmVtb3RlRnJhbWUuY3BwICov
LAorCQkJCTI5NTVDRjExMkIyMzBBRTYwMDAxQkY4MiAvKiBBWFJlbW90ZUZyYW1lLmggKi8sCiAJ
CQkJQzBFMjA4QTEyOTM3OUM2RjAwQzBEMkQzIC8qIEFYVGV4dE1hcmtlci5jcHAgKi8sCiAJCQkJ
QzBFMjA4QTAyOTM3OUM2RTAwQzBEMkQzIC8qIEFYVGV4dE1hcmtlci5oICovLAogCQkJCTQ4QzRF
ODNDMkIzNEQ4MzgwMDgzNDYwQSAvKiBBWFRleHRSdW4uY3BwICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWENvcmVPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhDb3JlT2JqZWN0LmgKaW5kZXggNDQxMDg0ZWNiODA1Li4zZmJjN2Y4
ZGIyOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhDb3JlT2Jq
ZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWENvcmVPYmplY3QuaApA
QCAtMjA1LDYgKzIwNSw3IEBAIGVudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVJvbGUgewogICAgIFBy
b2dyZXNzSW5kaWNhdG9yLAogICAgIFJhZGlvQnV0dG9uLAogICAgIFJhZGlvR3JvdXAsCisgICAg
UmVtb3RlRnJhbWUsCiAgICAgUm93SGVhZGVyLAogICAgIFJvdywKICAgICBSb3dHcm91cCwKQEAg
LTQ0Miw2ICs0NDMsOCBAQCBBTFdBWVNfSU5MSU5FIFN0cmluZyBhY2Nlc3NpYmlsaXR5Um9sZVRv
U3RyaW5nKEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUpCiAgICAgICAgIHJldHVybiAiUmFkaW9CdXR0
b24iX3M7CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9Hcm91cDoKICAgICAgICAg
cmV0dXJuICJSYWRpb0dyb3VwIl9zOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJlbW90
ZUZyYW1lOgorICAgICAgICByZXR1cm4gIlJlbW90ZUZyYW1lIl9zOwogICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OlJvd0hlYWRlcjoKICAgICAgICAgcmV0dXJuICJSb3dIZWFkZXIiX3M7CiAg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Um93OgpAQCAtODE1LDYgKzgxOCw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3dJbnN0YW5jZSgp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxs
SW5zdGFuY2UoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQVhJc29sYXRlZE9iamVj
dEluc3RhbmNlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0FYUmVtb3RlRnJhbWUo
KSBjb25zdCA9IDA7CiAKICAgICBib29sIGlzSGVhZGluZygpIGNvbnN0IHsgcmV0dXJuIHJvbGVW
YWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpIZWFkaW5nOyB9CiAgICAgdmlydHVhbCBib29s
IGlzTGluaygpIGNvbnN0ID0gMDsKQEAgLTkxOSw2ICs5MjMsMTIgQEAgcHVibGljOgogICAgIGJv
b2wgaXNUcmVlR3JpZCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxp
dHlSb2xlOjpUcmVlR3JpZDsgfQogICAgIGJvb2wgaXNUcmVlSXRlbSgpIGNvbnN0IHsgcmV0dXJu
IHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlSXRlbTsgfQogICAgIGJvb2wg
aXNTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5
Um9sZTo6U2Nyb2xsQmFyOyB9CisgICAgYm9vbCBpc1JlbW90ZUZyYW1lKCkgY29uc3QgeyByZXR1
cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJlbW90ZUZyYW1lOyB9CisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgdmlydHVhbCBSZXRhaW5QdHI8aWQ+IHJlbW90ZUZyYW1lUGxh
dGZvcm1FbGVtZW50KCkgY29uc3QgPSAwOworI2VuZGlmCisgICAgdmlydHVhbCBib29sIGhhc1Jl
bW90ZUZyYW1lQ2hpbGQoKSBjb25zdCA9IDA7CisKICAgICBib29sIGlzQnV0dG9uKCkgY29uc3Q7
CiAgICAgdmlydHVhbCBib29sIGlzTWV0ZXIoKSBjb25zdCA9IDA7CiAKQEAgLTExNTksNiArMTE2
OSw4IEBAIHB1YmxpYzoKICAgICAvLyBWaWV3cG9ydC1yZWxhdGl2ZSBtZWFucyB0aGF0IHdoZW4g
dGhlIHBhZ2Ugc2Nyb2xscywgdGhlIHBvcnRpb24gb2YgdGhlIHBhZ2UgaW4gdGhlIHZpZXdwb3J0
IGNoYW5nZXMsIGFuZCB0aHVzCiAgICAgLy8gYW55IHZpZXdwb3J0LXJlbGF0aXZlIHJlY3RzIGRv
IHRvbyAoc2luY2UgdGhleSBhcmUgZWl0aGVyIGNsb3NlciB0byBvciBmYXJ0aGVyIGZyb20gdGhl
IHZpZXdwb3J0IG9yaWdpbiBhZnRlciB0aGUgc2Nyb2xsKS4KICAgICB2aXJ0dWFsIEZsb2F0UG9p
bnQgc2NyZWVuUmVsYXRpdmVQb3NpdGlvbigpIGNvbnN0ID0gMDsKKyAgICAvLyBUaGlzIGlzIHRo
ZSBhbW91bnQgdGhhdCB0aGUgUmVtb3RlRnJhbWUgaXMgb2Zmc2V0IGZyb20gaXRzIGNvbnRhaW5p
bmcgcGFyZW50LgorICAgIHZpcnR1YWwgSW50UG9pbnQgcmVtb3RlRnJhbWVPZmZzZXQoKSBjb25z
dCA9IDA7CiAKICAgICB2aXJ0dWFsIEZsb2F0UmVjdCBjb252ZXJ0RnJhbWVUb1NwYWNlKGNvbnN0
IEZsb2F0UmVjdCYsIEFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2UpIGNvbnN0ID0gMDsKICNp
ZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhMb2dnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWExvZ2dlci5j
cHAKaW5kZXggYjZlMzA2Y2RkZWNmLi43YjM1YzhmOWQxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhMb2dnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhMb2dnZXIuY3BwCkBAIC04ODMsNiArODgzLDkgQEAgdm9pZCBzdHJlYW1B
WENvcmVPYmplY3QoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBBWENvcmVPYmplY3QmIG9iamVj
dCwgY29uc3QgT3AKICAgICBpZiAob3B0aW9ucyAmIEFYU3RyZWFtT3B0aW9uczo6Um9sZSkKICAg
ICAgICAgc3RyZWFtLmR1bXBQcm9wZXJ0eSgicm9sZSIsIG9iamVjdC5yb2xlVmFsdWUoKSk7CiAK
KyAgICBpZiAob2JqZWN0LnJlbmRlcmVyKCkpCisgICAgICAgIHN0cmVhbS5kdW1wUHJvcGVydHko
InJlbmRlck5hbWUiLCBvYmplY3QucmVuZGVyZXIoKS0+cmVuZGVyTmFtZSgpKTsKKwogICAgIGlm
IChvcHRpb25zICYgQVhTdHJlYW1PcHRpb25zOjpQYXJlbnRJRCkgewogICAgICAgICBhdXRvKiBw
YXJlbnQgPSBvYmplY3QucGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgICAgIHN0cmVhbS5k
dW1wUHJvcGVydHkoInBhcmVudElEIiwgcGFyZW50ID8gcGFyZW50LT5vYmplY3RJRCgpIDogQVhJ
RCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RD
YWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3Bw
CmluZGV4IDI4MGZhZDRmMjcwMS4uMWFjOTVmMmVhNmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJBWElzb2xhdGVkT2JqZWN0LmgiCiAjaW5jbHVkZSAiQVhJc29sYXRlZFRyZWUuaCIKICNp
bmNsdWRlICJBWExvZ2dlci5oIgorI2luY2x1ZGUgIkFYUmVtb3RlRnJhbWUuaCIKICNpbmNsdWRl
ICJBWFRleHRNYXJrZXIuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5QVJJQUdyaWQuaCIKICNp
bmNsdWRlICJBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmgiCkBAIC0xMDU0LDcgKzEwNTUsMTAg
QEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Y3JlYXRlKEFjY2Vzc2liaWxp
dHlSb2xlIHJvbGUpCiAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAogICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OlRhYmxlSGVhZGVyQ29udGFpbmVyOgogICAgICAgICBvYmogPSBBY2Nlc3Np
YmlsaXR5VGFibGVIZWFkZXJDb250YWluZXI6OmNyZWF0ZSgpOwotICAgICAgICBicmVhazsgICAK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmVtb3RlRnJhbWU6
CisgICAgICAgIG9iaiA9IEFYUmVtb3RlRnJhbWU6OmNyZWF0ZSgpOworICAgICAgICBicmVhazsK
ICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTbGlkZXJUaHVtYjoKICAgICAgICAgb2JqID0g
QWNjZXNzaWJpbGl0eVNsaWRlclRodW1iOjpjcmVhdGUoKTsKICAgICAgICAgYnJlYWs7CkBAIC0x
MzUwLDYgKzEzNTQsMTUgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVSZWNvbXB1dGVDZWxs
U2xvdHMoQWNjZXNzaWJpbGl0eVRhYmxlJiBheFRhYmxlKQogI2VuZGlmCiB9CiAKK3ZvaWQgQVhP
YmplY3RDYWNoZTo6b25SZW1vdGVGcmFtZUluaXRpYWxpemVkKEFYUmVtb3RlRnJhbWUmIHJlbW90
ZUZyYW1lKQoreworI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCisgICAg
dXBkYXRlSXNvbGF0ZWRUcmVlKHJlbW90ZUZyYW1lLCBBWFByb3BlcnR5TmFtZTo6UmVtb3RlRnJh
bWVQbGF0Zm9ybUVsZW1lbnQpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocmVtb3RlRnJhbWUp
OworI2VuZGlmCit9CisKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQog
dm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVSb3dzcGFuQ2hhbmdlZChBY2Nlc3NpYmlsaXR5VGFi
bGVDZWxsJiBheENlbGwpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5oCmluZGV4IGQxMDQ5Y2M5YmMyMS4uMzhjOThhNDZlYTlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaApAQCAtNDcsNiArNDcsNyBAQCBj
bGFzcyBUZXh0U3RyZWFtOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEFYUmVtb3Rl
RnJhbWU7CiBjbGFzcyBBY2Nlc3NpYmlsaXR5VGFibGU7CiBjbGFzcyBBY2Nlc3NpYmlsaXR5VGFi
bGVDZWxsOwogY2xhc3MgRG9jdW1lbnQ7CkBAIC0yNDYsNiArMjQ3LDcgQEAgcHVibGljOgogICAg
IHZvaWQgZGVmZXJOb2RlQWRkZWRPclJlbW92ZWQoTm9kZSopOwogICAgIHZvaWQgaGFuZGxlU2Ny
b2xsZWRUb0FuY2hvcihjb25zdCBOb2RlKiBhbmNob3JOb2RlKTsKICAgICB2b2lkIG9uU2Nyb2xs
YmFyVXBkYXRlKFNjcm9sbFZpZXcqKTsKKyAgICB2b2lkIG9uUmVtb3RlRnJhbWVJbml0aWFsaXpl
ZChBWFJlbW90ZUZyYW1lJik7CiAKICAgICBib29sIGlzUmV0cmlldmluZ0N1cnJlbnRNb2RhbE5v
ZGUoKSB7IHJldHVybiBtX2lzUmV0cmlldmluZ0N1cnJlbnRNb2RhbE5vZGU7IH0KICAgICBOb2Rl
KiBtb2RhbE5vZGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhSZW1vdGVGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYUmVtb3Rl
RnJhbWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uY2ZiZGVk
ZDk4MWNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WFJlbW90ZUZyYW1lLmNwcApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDI0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkFYUmVtb3RlRnJhbWUuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitSZWY8QVhSZW1vdGVGcmFtZT4gQVhSZW1vdGVGcmFtZTo6Y3JlYXRlKCkKK3sKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBWFJlbW90ZUZyYW1lKTsKK30KKworTGF5b3V0UmVjdCBB
WFJlbW90ZUZyYW1lOjplbGVtZW50UmVjdCgpIGNvbnN0Cit7CisgICAgYXV0byogcGFyZW50ID0g
cGFyZW50T2JqZWN0KCk7CisgICAgcmV0dXJuIHBhcmVudCA/IHBhcmVudC0+ZWxlbWVudFJlY3Qo
KSA6IExheW91dFJlY3QoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFJlbW90ZUZyYW1lLmggYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYUmVtb3RlRnJhbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLjk0ZDJkZjAzMDRkMgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhSZW1vdGVGcmFtZS5oCkBAIC0wLDAgKzEsNjEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlN
b2NrT2JqZWN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVtb3RlRnJhbWU7
CisKK2NsYXNzIEFYUmVtb3RlRnJhbWUgZmluYWwgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eU1vY2tP
YmplY3QgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8QVhSZW1vdGVGcmFtZT4gY3JlYXRlKCk7
CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIGluaXRpYWxpemVQbGF0Zm9ybUVsZW1l
bnRXaXRoUmVtb3RlVG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBpbnQpOworICAgIHN0
ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBnZW5lcmF0ZVJlbW90ZVRva2VuKCkgY29uc3Q7CisgICAg
UmV0YWluUHRyPGlkPiByZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQ7IH0KKyAgICBwaWRfdCBwcm9jZXNzSWRlbnRp
ZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2Vzc0lkZW50aWZpZXI7IH0KKyNlbmRpZgorCitw
cml2YXRlOgorICAgIHZpcnR1YWwgfkFYUmVtb3RlRnJhbWUoKSA9IGRlZmF1bHQ7CisKKyAgICBB
Y2Nlc3NpYmlsaXR5Um9sZSBkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpIHsgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlSb2xlOjpSZW1vdGVGcmFtZTsgfQorICAgIGJvb2wgY29tcHV0ZUFjY2Vzc2li
aWxpdHlJc0lnbm9yZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNBWFJl
bW90ZUZyYW1lKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIExheW91dFJlY3QgZWxlbWVu
dFJlY3QoKSBjb25zdDsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFJldGFpblB0cjxpZD4g
bV9yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudDsKKyAgICBwaWRfdCBtX3Byb2Nlc3NJZGVudGlm
aWVyIHsgMCB9OworI2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfQUNDRVNTSUJJTElUWShBWFJlbW90ZUZyYW1lLCBpc0FYUmVtb3Rl
RnJhbWUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuY3BwCmluZGV4IDNlMzJkYjA5M2FmYi4uZmQ2ZjdjNGUyNTU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5j
cHAKQEAgLTU0NCw3ICs1NDQsOSBAQCBGbG9hdFJlY3QgQWNjZXNzaWJpbGl0eU9iamVjdDo6Y29u
dmVydEZyYW1lVG9TcGFjZShjb25zdCBGbG9hdFJlY3QmIGZyYW1lUmVjdCwgQQogICAgIAogRmxv
YXRSZWN0IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnJlbGF0aXZlRnJhbWUoKSBjb25zdAogewotICAg
IHJldHVybiBjb252ZXJ0RnJhbWVUb1NwYWNlKGVsZW1lbnRSZWN0KCksIEFjY2Vzc2liaWxpdHlD
b252ZXJzaW9uU3BhY2U6OlBhZ2UpOworICAgIGF1dG8gcmVjdCA9IGVsZW1lbnRSZWN0KCk7Cisg
ICAgcmVjdC5tb3ZlQnkocmVtb3RlRnJhbWVPZmZzZXQoKSk7CisgICAgcmV0dXJuIGNvbnZlcnRG
cmFtZVRvU3BhY2UocmVjdCwgQWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZTo6UGFnZSk7CiB9
CiAKIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlPYmplY3Q6Om5leHRTaWJsaW5n
VW5pZ25vcmVkKGludCBsaW1pdCkgY29uc3QKQEAgLTIwODYsMTQgKzIwODgsMjMgQEAgY29uc3Qg
QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFuY2VzdG9yQWNj
ZXNzaWJpbGl0eVNjcm9sbFYKICNpZiBQTEFURk9STShDT0NPQSkKIFJlbW90ZUFYT2JqZWN0UmVm
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnJlbW90ZVBhcmVudE9iamVjdCgpIGNvbnN0CiB7Ci0gICAg
aWYgKGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKSkgewotICAgICAgICBpZiAoYXV0
byogZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUoKSkKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS0+
bG9hZGVyKCkuY2xpZW50KCkuYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpOwotICAgIH0KLSAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7
CisgICAgYXV0byogZnJhbWUgPSBkb2N1bWVudCA/IGRvY3VtZW50LT5mcmFtZSgpIDogbnVsbHB0
cjsKKyAgICByZXR1cm4gZnJhbWUgPyBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuYWNjZXNzaWJp
bGl0eVJlbW90ZU9iamVjdCgpIDogbnVsbHB0cjsKIH0KICNlbmRpZgogCitJbnRQb2ludCBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpyZW1vdGVGcmFtZU9mZnNldCgpIGNvbnN0Cit7CisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOworICAgIGF1
dG8qIGZyYW1lID0gZG9jdW1lbnQgPyBkb2N1bWVudC0+ZnJhbWUoKSA6IG51bGxwdHI7CisgICAg
cmV0dXJuIGZyYW1lID8gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmFjY2Vzc2liaWxpdHlSZW1v
dGVGcmFtZU9mZnNldCgpIDogSW50UG9pbnQoKTsKKyNlbHNlCisgICAgcmV0dXJuIEludFBvaW50
KCk7CisjZW5kaWYKK30KKwogRG9jdW1lbnQqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRvY3VtZW50
KCkgY29uc3QKIHsKICAgICBhdXRvKiBmcmFtZVZpZXcgPSBkb2N1bWVudEZyYW1lVmlldygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
aAppbmRleCA0ZDIwZjU1YTU0NGMuLjM1OTVkMzFlNzFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTEwMiw2ICsxMDIs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Qo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJv
b2wgaXNBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICBib29sIGlzQVhSZW1vdGVGcmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXdJbnN0YW5jZSgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNW
R1Jvb3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5
VGFibGVJbnN0YW5jZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC00NjIs
MTAgKzQ2MywxNCBAQCBwdWJsaWM6CiAgICAgV2lkZ2V0KiB3aWRnZXRGb3JBdHRhY2htZW50Vmll
dygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICBib29sIGlzUGx1Z2lu
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIEludFBvaW50IHJlbW90
ZUZyYW1lT2Zmc2V0KCkgY29uc3Qgb3ZlcnJpZGU7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
UmVtb3RlQVhPYmplY3RSZWYgcmVtb3RlUGFyZW50T2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgRmxvYXRSZWN0IGNvbnZlcnRSZWN0VG9QbGF0Zm9ybVNwYWNlKGNvbnN0IEZsb2F0UmVjdCYs
IEFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2UpIGNvbnN0IG92ZXJyaWRlOworICAgIFJldGFp
blB0cjxpZD4gcmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBuaWw7IH0KICNlbmRpZgorICAgIGJvb2wgaGFzUmVtb3RlRnJhbWVDaGlsZCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisKICAgICBQYWdlKiBwYWdlKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgTG9j
YWxGcmFtZVZpZXcqIGRvY3VtZW50RnJhbWVWaWV3KCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcAppbmRleCBlZThhYmVjM2Q3YjUuLjJmMTJlZjc1M2U0YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwCkBAIC0yNDEzLDcgKzI0MTMsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmFkZEF0dGFjaG1lbnRDaGlsZHJlbigpCiAKICAgICAvLyBMb2NhbEZyYW1lVmlldydz
IG5lZWQgdG8gYmUgaW5zZXJ0ZWQgaW50byB0aGUgQVggaGllcmFyY2h5IHdoZW4gZW5jb3VudGVy
ZWQuCiAgICAgV2lkZ2V0KiB3aWRnZXQgPSB3aWRnZXRGb3JBdHRhY2htZW50VmlldygpOwotICAg
IGlmICghd2lkZ2V0IHx8ICF3aWRnZXQtPmlzTG9jYWxGcmFtZVZpZXcoKSkKKyAgICBpZiAoIXdp
ZGdldCB8fCAhKHdpZGdldC0+aXNMb2NhbEZyYW1lVmlldygpIHx8IHdpZGdldC0+aXNSZW1vdGVG
cmFtZVZpZXcoKSkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBhZGRDaGlsZChheE9iamVj
dENhY2hlKCktPmdldE9yQ3JlYXRlKHdpZGdldCkpOwpAQCAtMjU2OCw3ICsyNTY4LDcgQEAgdm9p
ZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRDaGlsZHJlbigpCiAgICAgICAgIGF1dG8g
b3duZXJzID0gb2JqZWN0Lm93bmVycygpOwogICAgICAgICBpZiAob3duZXJzLnNpemUoKSAmJiAh
b3duZXJzLmNvbnRhaW5zKHRoaXMpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKwog
ICAgICAgICBhZGRDaGlsZCgmb2JqZWN0KTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwCmluZGV4
IDJiYmMzMDg3YjlmOC4uNTIxMjIyYWY2MDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcApAQCAtMjcsMTAg
KzI3LDEyIEBACiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaCIKIAogI2luY2x1
ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKKyNpbmNsdWRlICJBWFJlbW90ZUZyYW1lLmgiCiAjaW5jbHVk
ZSAiQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxl
bWVudC5oIgogI2luY2x1ZGUgIkxvY2FsRnJhbWUuaCIKICNpbmNsdWRlICJMb2NhbEZyYW1lVmll
dy5oIgorI2luY2x1ZGUgIlJlbW90ZUZyYW1lVmlldy5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1l
bnQuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKIApAQCAtNTIsNiArNTQsMTYgQEAgQWNjZXNzaWJp
bGl0eVNjcm9sbFZpZXc6On5BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldygpCiB2b2lkIEFjY2Vzc2li
aWxpdHlTY3JvbGxWaWV3OjpkZXRhY2hSZW1vdGVQYXJ0cyhBY2Nlc3NpYmlsaXR5RGV0YWNobWVu
dFR5cGUgZGV0YWNobWVudFR5cGUpCiB7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZGV0YWNo
UmVtb3RlUGFydHMoZGV0YWNobWVudFR5cGUpOworCisgICAgYXV0byogcmVtb3RlRnJhbWVWaWV3
ID0gZHluYW1pY0Rvd25jYXN0PFJlbW90ZUZyYW1lVmlldz4obV9zY3JvbGxWaWV3LmdldCgpKTsK
KyAgICBpZiAocmVtb3RlRnJhbWVWaWV3ICYmIG1fcmVtb3RlRnJhbWUgJiYgKGRldGFjaG1lbnRU
eXBlID09IEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZTo6RWxlbWVudERlc3Ryb3llZCB8fCBk
ZXRhY2htZW50VHlwZSA9PSBBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGU6OkNhY2hlRGVzdHJv
eWVkKSkgeworI2lmIFBMQVRGT1JNKE1BQykKKyAgICAgICAgYXV0byYgcmVtb3RlRnJhbWUgPSBy
ZW1vdGVGcmFtZVZpZXctPmZyYW1lKCk7CisgICAgICAgIHJlbW90ZUZyYW1lLnVuYmluZFJlbW90
ZUFjY2Vzc2liaWxpdHlGcmFtZXMobV9yZW1vdGVGcmFtZS0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7
CisjZW5kaWYKKyAgICAgICAgbV9yZW1vdGVGcmFtZSA9IG51bGxwdHI7CisgICAgfQorCiAgICAg
bV9zY3JvbGxWaWV3ID0gbnVsbHB0cjsKICAgICBtX2ZyYW1lT3duZXJFbGVtZW50ID0gbnVsbHB0
cjsKIH0KQEAgLTE3Nyw4ICsxODksMTAgQEAgQWNjZXNzaWJpbGl0eVNjcm9sbGJhciogQWNjZXNz
aWJpbGl0eVNjcm9sbFZpZXc6OmFkZENoaWxkU2Nyb2xsYmFyKFNjcm9sbGJhciogc2MKIHZvaWQg
QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmNsZWFyQ2hpbGRyZW4oKQogewogICAgIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OmNsZWFyQ2hpbGRyZW4oKTsKKwogICAgIG1fdmVydGljYWxTY3JvbGxiYXIg
PSBudWxscHRyOwogICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhciA9IG51bGxwdHI7CisKICAgICBt
X2NoaWxkcmVuRGlydHkgPSBmYWxzZTsKIH0KIApAQCAtMTkxLDExICsyMDUsNDUgQEAgYm9vbCBB
Y2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBj
b25zdAogICAgIHJldHVybiB3ZWJBcmVhLT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCk7CiB9CiAK
K3ZvaWQgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmFkZFJlbW90ZUZyYW1lQ2hpbGQoKQorewor
ICAgIGF1dG8qIHJlbW90ZUZyYW1lVmlldyA9IGR5bmFtaWNEb3duY2FzdDxSZW1vdGVGcmFtZVZp
ZXc+KG1fc2Nyb2xsVmlldy5nZXQoKSk7CisgICAgaWYgKCFyZW1vdGVGcmFtZVZpZXcpCisgICAg
ICAgIHJldHVybjsKKworICAgIFdlYWtQdHIgY2FjaGUgPSBheE9iamVjdENhY2hlKCk7CisgICAg
aWYgKCFjYWNoZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX3JlbW90ZUZyYW1lKSB7
CisgICAgICAgIC8vIE1ha2UgdGhlIGZhdXggZWxlbWVudCB0aGF0IHJlcHJlc2VudHMgdGhlIHJl
bW90ZSB0cmFuc2ZlciBlbGVtZW50IGZvciBBWC4KKyAgICAgICAgbV9yZW1vdGVGcmFtZSA9IGRv
d25jYXN0PEFYUmVtb3RlRnJhbWU+KGNhY2hlLT5jcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGU6OlJl
bW90ZUZyYW1lKSk7CisgICAgICAgIG1fcmVtb3RlRnJhbWUtPnNldFBhcmVudCh0aGlzKTsKKwor
I2lmIFBMQVRGT1JNKE1BQykKKyAgICAgICAgLy8gR2VuZXJhdGUgYSBuZXcgdG9rZW4gYW5kIHBh
c3MgaXQgYmFjayB0byB0aGUgb3RoZXIgcmVtb3RlIGZyYW1lIHNvIGl0IGNhbiBiaW5kIHRoZXNl
IG9iamVjdHMgdG9nZXRoZXIuCisgICAgICAgIGF1dG8gZ2VuZXJhdGVkVG9rZW4gPSBtX3JlbW90
ZUZyYW1lLT5nZW5lcmF0ZVJlbW90ZVRva2VuKCk7CisgICAgICAgIGF1dG8mIHJlbW90ZUZyYW1l
ID0gcmVtb3RlRnJhbWVWaWV3LT5mcmFtZSgpOworICAgICAgICByZW1vdGVGcmFtZS5iaW5kUmVt
b3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhnZXRwaWQoKSwgZ2VuZXJhdGVkVG9rZW4sIFt0aGlzLCAm
cmVtb3RlRnJhbWUsIHByb3RlY3RlZEFjY2Vzc2JpbGl0eVJlbW90ZUZyYW1lID0gUmVmUHRyIHsg
bV9yZW1vdGVGcmFtZSB9XSAoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHRva2VuLCBpbnQgcHJv
Y2Vzc0lkZW50aWZpZXIpIG11dGFibGUgeworICAgICAgICAgICAgcHJvdGVjdGVkQWNjZXNzYmls
aXR5UmVtb3RlRnJhbWUtPmluaXRpYWxpemVQbGF0Zm9ybUVsZW1lbnRXaXRoUmVtb3RlVG9rZW4o
dG9rZW4sIHByb2Nlc3NJZGVudGlmaWVyKTsKKworICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBy
ZW1vdGUgc2lkZSB3aXRoIHRoZSBvZmZzZXQgb2YgdGhpcyBvYmplY3Qgc28gaXQgY2FuIGNhbGN1
bGF0ZSBmcmFtZXMgY29ycmVjdGx5LgorICAgICAgICAgICAgYXV0byBsb2NhdGlvbiA9IGVsZW1l
bnRSZWN0KCkubG9jYXRpb24oKTsKKyAgICAgICAgICAgIHJlbW90ZUZyYW1lLnVwZGF0ZVJlbW90
ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChmbG9vcmVkSW50UG9pbnQobG9jYXRpb24pKTsKKyAg
ICAgICAgfSk7CisjZW5kaWYKKyAgICB9IGVsc2UKKyAgICAgICAgbV9yZW1vdGVGcmFtZS0+c2V0
UGFyZW50KHRoaXMpOworCisgICAgYWRkQ2hpbGQobV9yZW1vdGVGcmFtZS5nZXQoKSk7Cit9CisK
IHZvaWQgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmFkZENoaWxkcmVuKCkKIHsKICAgICBBU1NF
UlQoIW1fY2hpbGRyZW5Jbml0aWFsaXplZCk7CiAgICAgbV9jaGlsZHJlbkluaXRpYWxpemVkID0g
dHJ1ZTsKIAorICAgIGFkZFJlbW90ZUZyYW1lQ2hpbGQoKTsKICAgICBhZGRDaGlsZCh3ZWJBcmVh
T2JqZWN0KCkpOwogICAgIHVwZGF0ZVNjcm9sbGJhcnMoKTsKIH0KQEAgLTIwMyw3ICsyNTEsNyBA
QCB2b2lkIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjphZGRDaGlsZHJlbigpCiBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6d2ViQXJlYU9iamVjdCgpIGNvbnN0
CiB7CiAgICAgYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOwotICAgIGlmICghZG9j
dW1lbnQgfHwgIWRvY3VtZW50LT5oYXNMaXZpbmdSZW5kZXJUcmVlKCkpCisgICAgaWYgKCFkb2N1
bWVudCB8fCAhZG9jdW1lbnQtPmhhc0xpdmluZ1JlbmRlclRyZWUoKSB8fCBtX3JlbW90ZUZyYW1l
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmIChhdXRvKiBjYWNoZSA9IGF4T2Jq
ZWN0Q2FjaGUoKSkKQEAgLTIzNCw5ICsyODIsMTUgQEAgTGF5b3V0UmVjdCBBY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldzo6ZWxlbWVudFJlY3QoKSBjb25zdAogCiBEb2N1bWVudCogQWNjZXNzaWJpbGl0
eVNjcm9sbFZpZXc6OmRvY3VtZW50KCkgY29uc3QKIHsKLSAgICBpZiAoYXV0byogZnJhbWVWaWV3
ID0gZHluYW1pY0Rvd25jYXN0PExvY2FsRnJhbWVWaWV3PihtX3Njcm9sbFZpZXcuZ2V0KCkpKSB7
CisgICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGR5bmFtaWNEb3duY2FzdDxMb2NhbEZyYW1lVmll
dz4obV9zY3JvbGxWaWV3LmdldCgpKSkKICAgICAgICAgcmV0dXJuIGZyYW1lVmlldy0+ZnJhbWUo
KS5kb2N1bWVudCgpOworCisgICAgLy8gRm9yIHRoZSBSZW1vdGVGcmFtZVZpZXcgY2FzZSwgd2Ug
bmVlZCB0byByZXR1cm4gdGhlIGRvY3VtZW50IG9mIG91ciBob3N0aW5nIHBhcmVudCBzbyBheE9i
amVjdENhY2hlKCkgcmVzb2x2ZXMgY29ycmVjdGx5LgorICAgIGlmIChhdXRvKiByZW1vdGVGcmFt
ZVZpZXcgPSBkeW5hbWljRG93bmNhc3Q8UmVtb3RlRnJhbWVWaWV3PihtX3Njcm9sbFZpZXcuZ2V0
KCkpKSB7CisgICAgICAgIGlmIChhdXRvKiBvd25lciA9IHJlbW90ZUZyYW1lVmlldy0+ZnJhbWUo
KS5vd25lckVsZW1lbnQoKSkKKyAgICAgICAgICAgIHJldHVybiAmKG93bmVyLT5kb2N1bWVudCgp
KTsKICAgICB9CisKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdDo6ZG9jdW1lbnQoKTsK
IH0KIApAQCAtMjU5LDggKzMxMywxMCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmls
aXR5U2Nyb2xsVmlldzo6cGFyZW50T2JqZWN0KCkgY29uc3QKICAgICBXZWFrUHRyIG93bmVyID0g
bV9mcmFtZU93bmVyRWxlbWVudC5nZXQoKTsKICAgICBpZiAoYXV0byogbG9jYWxGcmFtZVZpZXcg
PSBkeW5hbWljRG93bmNhc3Q8TG9jYWxGcmFtZVZpZXc+KG1fc2Nyb2xsVmlldy5nZXQoKSkpCiAg
ICAgICAgIG93bmVyID0gbG9jYWxGcmFtZVZpZXctPmZyYW1lKCkub3duZXJFbGVtZW50KCk7Cisg
ICAgZWxzZSBpZiAoYXV0byogcmVtb3RlRnJhbWVWaWV3ID0gZHluYW1pY0Rvd25jYXN0PFJlbW90
ZUZyYW1lVmlldz4obV9zY3JvbGxWaWV3LmdldCgpKSkKKyAgICAgICAgb3duZXIgPSByZW1vdGVG
cmFtZVZpZXctPmZyYW1lKCkub3duZXJFbGVtZW50KCk7CiAKLSAgICBpZiAoY2FjaGUgJiYgb3du
ZXIgJiYgb3duZXItPnJlbmRlcmVyKCkpCisgICAgaWYgKG93bmVyICYmIG93bmVyLT5yZW5kZXJl
cigpKQogICAgICAgICByZXR1cm4gY2FjaGUtPmdldE9yQ3JlYXRlKG93bmVyLmdldCgpKTsKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaAppbmRleCA1NTcwNDQ2NzFjN2QuLjUyNWFj
NzgzZmJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5U2Nyb2xsVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXcuaApAQCAtMzAsNiArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgCitjbGFzcyBBWFJlbW90ZUZyYW1lOwogY2xhc3MgQWNjZXNzaWJpbGl0eVNj
cm9sbGJhcjsKIGNsYXNzIFNjcm9sbGJhcjsKIGNsYXNzIFNjcm9sbFZpZXc7CkBAIC01NCw3ICs1
NSw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlld0luc3Rh
bmNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgaXNFbmFibGVk
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIAorICAgIGJvb2wgaGFzUmVt
b3RlRnJhbWVDaGlsZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcmVtb3RlRnJhbWU7IH0KKwog
ICAgIGJvb2wgaXNBdHRhY2htZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUGxhdGZvcm1XaWRn
ZXQgcGxhdGZvcm1XaWRnZXQoKSBjb25zdCBvdmVycmlkZTsKICAgICBXaWRnZXQqIHdpZGdldEZv
ckF0dGFjaG1lbnRWaWV3KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gY3VycmVudFNjcm9sbFZp
ZXcoKTsgfQpAQCAtNjksNiArNzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0Rm9jdXNlZChi
b29sKSBvdmVycmlkZTsKICAgICBib29sIGNhblNldEZvY3VzQXR0cmlidXRlKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgYm9vbCBpc0ZvY3VzZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFk
ZFJlbW90ZUZyYW1lQ2hpbGQoKTsKIAogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIExvY2FsRnJhbWVWaWV3KiBkb2N1bWVudEZyYW1lVmlldygpIGNvbnN0IG92
ZXJyaWRlOwpAQCAtODUsNiArODgsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxBY2Nlc3NpYmls
aXR5T2JqZWN0PiBtX2hvcml6b250YWxTY3JvbGxiYXI7CiAgICAgUmVmUHRyPEFjY2Vzc2liaWxp
dHlPYmplY3Q+IG1fdmVydGljYWxTY3JvbGxiYXI7CiAgICAgYm9vbCBtX2NoaWxkcmVuRGlydHk7
CisgICAgUmVmUHRyPEFYUmVtb3RlRnJhbWU+IG1fcmVtb3RlRnJhbWU7CiB9OwogICAgIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5t
bQppbmRleCAyZjI5YjcyZmZlN2UuLjkyNDNhZDZiZDM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1Mu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJJT1MubW0KQEAgLTExMTIsNiArMTExMiw3IEBAIHN0YXRpYyBBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlciAqYW5jZXN0b3JXaXRoUm9sZShjb25zdCBBWENvcmVPYmplY3Qm
IGRlc2NlbmRhCiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6SWdub3JlZDoKICAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpMaW5lQnJlYWs6CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6UHJlc2VudGF0aW9uYWw6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmVtb3RlRnJh
bWU6CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bjoKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKaW5kZXggMTAxNDU0NjI3
OGYzLi4zNDJkNGM3MmU2NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCkBAIC0zNzgs
NiArMzc4LDEwIEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZVByb3BlcnRpZXMo
Y29uc3QgUmVmPEFjY2Vzc2liaWxpdHlPYmplY3Q+JiBheE9iCiAjZW5kaWYKIAogICAgIHNldE9i
amVjdFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJbnRlcm5hbExpbmtFbGVtZW50LCBvYmplY3Qu
aW50ZXJuYWxMaW5rRWxlbWVudCgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6
SGFzUmVtb3RlRnJhbWVDaGlsZCwgb2JqZWN0Lmhhc1JlbW90ZUZyYW1lQ2hpbGQoKSk7CisgICAg
Ly8gRG9uJ3QgZHVwbGljYXRlIHRoZSByZW1vdGVGcmFtZU9mZnNldCBmb3IgZXZlcnkgb2JqZWN0
LiBKdXN0IHN0b3JlIGluIHRoZSBXZWJBcmVhLgorICAgIGlmIChvYmplY3QuaXNXZWJBcmVhKCkp
CisgICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpSZW1vdGVGcmFtZU9mZnNldCwg
b2JqZWN0LnJlbW90ZUZyYW1lT2Zmc2V0KCkpOwogCiAgICAgaW5pdGlhbGl6ZVBsYXRmb3JtUHJv
cGVydGllcyhheE9iamVjdCk7CiB9CkBAIC00NjQsNiArNDY4LDcgQEAgdm9pZCBBWElzb2xhdGVk
T2JqZWN0OjpzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEFYUHJvcGVy
dHlWYWx1ZVYKICAgICAgICAgW10oT3B0aW9uU2V0PEFYQW5jZXN0b3JGbGFnPiYgdHlwZWRWYWx1
ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZS5pc0VtcHR5KCk7IH0sCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgICAgIFtdKFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+JiB0eXBlZFZhbHVlKSB7
IHJldHVybiAhdHlwZWRWYWx1ZTsgfSwKKyAgICAgICAgW10oUmV0YWluUHRyPGlkPiYgdHlwZWRW
YWx1ZSkgeyByZXR1cm4gIXR5cGVkVmFsdWU7IH0sCiAjZW5kaWYKICAgICAgICAgW10oSW5zaWRl
TGluayYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZSA9PSBJbnNpZGVMaW5rKCk7IH0s
CiAgICAgICAgIFtdKFZlY3RvcjxWZWN0b3I8QVhJRD4+JiB0eXBlZFZhbHVlKSB7IHJldHVybiB0
eXBlZFZhbHVlLmlzRW1wdHkoKTsgfSwKQEAgLTEyMDYsNiArMTIxMSwyMSBAQCBMYXlvdXRSZWN0
IEFYSXNvbGF0ZWRPYmplY3Q6OmVsZW1lbnRSZWN0KCkgY29uc3QKICAgICB9KTsKIH0KIAorSW50
UG9pbnQgQVhJc29sYXRlZE9iamVjdDo6cmVtb3RlRnJhbWVPZmZzZXQoKSBjb25zdAoreworICAg
IGF1dG8qIHdlYkFyZWEgPSBBY2Nlc3NpYmlsaXR5OjpmaW5kQW5jZXN0b3I8QVhJc29sYXRlZE9i
amVjdD4oKnRoaXMsIHRydWUsIFtdIChjb25zdCBhdXRvJiBvYmplY3QpIHsKKyAgICAgICAgcmV0
dXJuIG9iamVjdC5pc1dlYkFyZWEoKTsKKyAgICB9KTsKKworICAgIGlmICghd2ViQXJlYSkKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKworICAgIGlmIChhdXRvIHBvaW50ID0gd2ViQXJlYS0+b3B0aW9u
YWxBdHRyaWJ1dGVWYWx1ZTxJbnRQb2ludD4oQVhQcm9wZXJ0eU5hbWU6OlJlbW90ZUZyYW1lT2Zm
c2V0KSkKKyAgICAgICAgcmV0dXJuICpwb2ludDsKKworICAgIHJldHVybiB7IH07Cit9CisKIEZs
b2F0UG9pbnQgQVhJc29sYXRlZE9iamVjdDo6c2NyZWVuUmVsYXRpdmVQb3NpdGlvbigpIGNvbnN0
CiB7CiAgICAgaWYgKGF1dG8gcG9pbnQgPSBvcHRpb25hbEF0dHJpYnV0ZVZhbHVlPEZsb2F0UG9p
bnQ+KEFYUHJvcGVydHlOYW1lOjpTY3JlZW5SZWxhdGl2ZVBvc2l0aW9uKSkKQEAgLTEyMjksMjIg
KzEyNDksMjMgQEAgRmxvYXRQb2ludCBBWElzb2xhdGVkT2JqZWN0OjpzY3JlZW5SZWxhdGl2ZVBv
c2l0aW9uKCkgY29uc3QKIAogRmxvYXRSZWN0IEFYSXNvbGF0ZWRPYmplY3Q6OnJlbGF0aXZlRnJh
bWUoKSBjb25zdAogeworICAgIEZsb2F0UmVjdCByZWxhdGl2ZUZyYW1lOworCiAgICAgaWYgKGF1
dG8gY2FjaGVkUmVsYXRpdmVGcmFtZSA9IG9wdGlvbmFsQXR0cmlidXRlVmFsdWU8SW50UmVjdD4o
QVhQcm9wZXJ0eU5hbWU6OlJlbGF0aXZlRnJhbWUpKSB7CiAgICAgICAgIC8vIFdlIHNob3VsZCBu
b3QgaGF2ZSBjYWNoZWQgYSByZWxhdGl2ZSBmcmFtZSBmb3IgZWxlbWVudHMgdGhhdCBnZXQgdGhl
aXIgZ2VvbWV0cnkgZnJvbSB0aGVpciBjaGlsZHJlbi4KICAgICAgICAgQVNTRVJUKCFtX2dldHNH
ZW9tZXRyeUZyb21DaGlsZHJlbik7Ci0gICAgICAgIHJldHVybiAqY2FjaGVkUmVsYXRpdmVGcmFt
ZTsKLSAgICB9Ci0KLSAgICBpZiAobV9nZXRzR2VvbWV0cnlGcm9tQ2hpbGRyZW4pIHsKKyAgICAg
ICAgcmVsYXRpdmVGcmFtZSA9ICpjYWNoZWRSZWxhdGl2ZUZyYW1lOworICAgIH0gZWxzZSBpZiAo
bV9nZXRzR2VvbWV0cnlGcm9tQ2hpbGRyZW4pIHsKICAgICAgICAgYXV0byBmcmFtZSA9IGVuY2xv
c2luZ0ludFJlY3QocmVsYXRpdmVGcmFtZUZyb21DaGlsZHJlbigpKTsKICAgICAgICAgaWYgKCFm
cmFtZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gZnJhbWU7CisgICAgICAgICAgICBy
ZWxhdGl2ZUZyYW1lID0gZnJhbWU7CiAgICAgICAgIC8vIEVpdGhlciB3ZSBoYWQgbm8gY2hpbGRy
ZW4sIG9yIG91ciBjaGlsZHJlbiBoYWQgZW1wdHkgZnJhbWVzLiBUaGUgcmlnaHQgdGhpbmcgdG8g
ZG8gd291bGQgYmUgdG8gcmV0dXJuCiAgICAgICAgIC8vIGEgcmVjdCBhdCB0aGUgcG9zaXRpb24g
b2YgdGhlIG5lYXJlc3QgcmVuZGVyIHRyZWUgYW5jZXN0b3Igd2l0aCBzb21lIG1hZGUtdXAgc2l6
ZSAoQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmJvdW5kaW5nQm94UmVjdCBkb2VzIHRoaXMpLgog
ICAgICAgICAvLyBIb3dldmVyLCB3ZSBkb24ndCBoYXZlIGFjY2VzcyB0byB0aGUgcmVuZGVyIHRy
ZWUgaW4gdGhpcyBjb250ZXh0IChvbmx5IHRoZSBBWCBpc29sYXRlZCB0cmVlLCB3aGljaCBpcyB0
b28gc3BhcnNlIGZvciB0aGlzIHB1cnBvc2UpLCBzbwogICAgICAgICAvLyB1bnRpbCB3ZSBjYWNo
ZSB0aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIGxldCdzIGdvIHRvIHRoZSBtYWluLXRocmVhZC4K
ICAgICB9IGVsc2UgaWYgKHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpDb2x1bW4g
fHwgcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRhYmxlSGVhZGVyQ29udGFpbmVy
KQotICAgICAgICByZXR1cm4gZXhwb3NlZFRhYmxlQW5jZXN0b3IoKSA/IHJlbGF0aXZlRnJhbWVG
cm9tQ2hpbGRyZW4oKSA6IEZsb2F0UmVjdCgpOworICAgICAgICByZWxhdGl2ZUZyYW1lID0gZXhw
b3NlZFRhYmxlQW5jZXN0b3IoKSA/IHJlbGF0aXZlRnJhbWVGcm9tQ2hpbGRyZW4oKSA6IEZsb2F0
UmVjdCgpOworCiAKICAgICAvLyBNb2NrIG9iamVjdHMgYW5kIFNWRyBvYmplY3RzIG5lZWQgdXNl
IHRoZSBtYWluIHRocmVhZCBzaW5jZSB0aGV5IGRvIG5vdCBoYXZlIHJlbmRlciBub2RlcyBhbmQg
YXJlIG5vdCBwYWludGVkIHdpdGggbGF5ZXJzLCByZXNwZWN0aXZlbHkuCiAgICAgLy8gRklYTUU6
IFJlbW92ZSBpc05vbkxheWVyU1ZHT2JqZWN0IHdoZW4gTEJTRSBpcyBlbmFibGVkICYgU1ZHIGZy
YW1lcyBhcmUgY2FjaGVkLgpAQCAtMTI2Niw2ICsxMjg3LDcgQEAgRmxvYXRSZWN0IEFYSXNvbGF0
ZWRPYmplY3Q6OnJlbGF0aXZlRnJhbWUoKSBjb25zdAogICAgIGlmIChhbmNlc3RvciAmJiBmcmFt
ZVJlY3QubG9jYXRpb24oKSA9PSBGbG9hdFBvaW50KCkpCiAgICAgICAgIGZyYW1lUmVjdC5zZXRM
b2NhdGlvbihhbmNlc3Rvci0+cmVsYXRpdmVGcmFtZSgpLmxvY2F0aW9uKCkpOwogCisgICAgZnJh
bWVSZWN0Lm1vdmVCeSh7IHJlbW90ZUZyYW1lT2Zmc2V0KCkgfSk7CiAgICAgcmV0dXJuIGZyYW1l
UmVjdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29s
YXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCmluZGV4IGQyYTY2YzJmNTNlNC4uZGU4
MjdkNWZlMDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCkBAIC0yOCw2ICsyOCw3IEBACiAj
aWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKIAogI2luY2x1ZGUgIkFYQ29y
ZU9iamVjdC5oIgorI2luY2x1ZGUgIkFYSXNvbGF0ZWRUcmVlLmgiCiAjaW5jbHVkZSAiQVhPYmpl
Y3RDYWNoZS5oIgogI2luY2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5o
IgpAQCAtMjE1LDYgKzIxNiw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0ZpbGVVcGxvYWRCdXR0
b24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5h
bWU6OklzRmlsZVVwbG9hZEJ1dHRvbik7IH0KICAgICBib29sIGlzTWV0ZXIoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWV0ZXIpOyB9
OwogICAgIEZsb2F0UG9pbnQgc2NyZWVuUmVsYXRpdmVQb3NpdGlvbigpIGNvbnN0IGZpbmFsOwor
ICAgIEludFBvaW50IHJlbW90ZUZyYW1lT2Zmc2V0KCkgY29uc3QgZmluYWw7CiAgICAgRmxvYXRS
ZWN0IHJlbGF0aXZlRnJhbWUoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGhhc0NhY2hlZFJlbGF0
aXZlRnJhbWUoKSBjb25zdCB7IHJldHVybiBvcHRpb25hbEF0dHJpYnV0ZVZhbHVlPEludFJlY3Q+
KEFYUHJvcGVydHlOYW1lOjpSZWxhdGl2ZUZyYW1lKS5oYXNfdmFsdWUoKTsgfQogI2lmIFBMQVRG
T1JNKE1BQykKQEAgLTI2Myw3ICsyNjUsNyBAQCBwcml2YXRlOgogICAgIEFYSXNvbGF0ZWRPYmpl
Y3QqIGFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3QgZmluYWw7CiAg
ICAgQVhJc29sYXRlZE9iamVjdCogZm9jdXNlZFVJRWxlbWVudCgpIGNvbnN0IGZpbmFsOwogICAg
IEFYQ29yZU9iamVjdCogaW50ZXJuYWxMaW5rRWxlbWVudCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG9iamVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJbnRlcm5hbExpbmtFbGVtZW50
KTsgfQotICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciByYWRpb0J1dHRvbkdyb3VwKCkg
Y29uc3QgeyByZXR1cm4gdHJlZSgpLT5vYmplY3RzRm9ySURzKHZlY3RvckF0dHJpYnV0ZVZhbHVl
PEFYSUQ+KEFYUHJvcGVydHlOYW1lOjpSYWRpb0J1dHRvbkdyb3VwKSk7IH0KKyAgICBBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3IgcmFkaW9CdXR0b25Hcm91cCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIHRyZWUoKS0+b2JqZWN0c0ZvcklEcyh2ZWN0b3JBdHRyaWJ1dGVWYWx1ZTxBWElEPihBWFBy
b3BlcnR5TmFtZTo6UmFkaW9CdXR0b25Hcm91cCkpOyB9CiAgICAgQVhJc29sYXRlZE9iamVjdCog
c2Nyb2xsQmFyKEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbikgZmluYWw7CiAgICAgY29uc3QgU3Ry
aW5nIHBsYWNlaG9sZGVyVmFsdWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdHJpbmdBdHRyaWJ1
dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6UGxhY2Vob2xkZXJWYWx1ZSk7IH0KICAgICBTdHJpbmcg
ZXhwYW5kZWRUZXh0VmFsdWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVW
YWx1ZShBWFByb3BlcnR5TmFtZTo6RXhwYW5kZWRUZXh0VmFsdWUpOyB9CkBAIC00NTYsNyArNDU4
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzQWNjZXNzaWJpbGl0eUFSSUFHcmlkSW5zdGFuY2Uo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5
QVJJQUdyaWRSb3dJbnN0YW5jZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
Ym9vbCBpc0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGxJbnN0YW5jZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIGZhbHNlOyB9Ci0KKyAgICBib29sIGlzQVhSZW1vdGVGcmFtZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc05hdGl2ZVRleHRDb250cm9sKCkgY29uc3Qg
ZmluYWw7CiAgICAgYm9vbCBpc0xpc3RCb3hPcHRpb24oKSBjb25zdCBmaW5hbDsKICAgICBib29s
IGlzTW9ja09iamVjdCgpIGNvbnN0IGZpbmFsOwpAQCAtNTM3LDcgKzUzOSw5IEBAIHByaXZhdGU6
CiAgICAgU3RyaW5nIG5hbWVBdHRyaWJ1dGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdHJpbmdB
dHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6TmFtZUF0dHJpYnV0ZSk7IH0KICNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICBib29sIGhhc0FwcGxlUERGQW5ub3RhdGlvbkF0dHJpYnV0ZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SGFz
QXBwbGVQREZBbm5vdGF0aW9uQXR0cmlidXRlKTsgfQorICAgIFJldGFpblB0cjxpZD4gcmVtb3Rl
RnJhbWVQbGF0Zm9ybUVsZW1lbnQoKSBjb25zdCBmaW5hbDsKICNlbmRpZgorICAgIGJvb2wgaGFz
UmVtb3RlRnJhbWVDaGlsZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1
ZShBWFByb3BlcnR5TmFtZTo6SGFzUmVtb3RlRnJhbWVDaGlsZCk7IH0KIAogI2lmIFBMQVRGT1JN
KENPQ09BKSAmJiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICBWZWN0b3I8UmV0YWluUHRyPGlk
Pj4gbW9kZWxFbGVtZW50Q2hpbGRyZW4oKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcApp
bmRleCA2OTY2NTg0NDhmNjUuLjNhY2MxOTk4YjFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNw
cApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQVhJc29sYXRlZE9iamVjdC5oIgogI2lu
Y2x1ZGUgIkFYTG9nZ2VyLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlLmgiCiAjaW5j
bHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlUm93LmgiCiAjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24u
aCIKICNpbmNsdWRlICJMb2NhbEZyYW1lVmlldy5oIgpAQCAtMjI1LDQ2ICsyMjYsMjYgQEAgUmVm
UHRyPEFYSXNvbGF0ZWRPYmplY3Q+IEFYSXNvbGF0ZWRUcmVlOjpvYmplY3RGb3JJRChjb25zdCBB
WElEIGF4SUQpIGNvbnN0CiAgICAgcmV0dXJuIGF4SUQuaXNWYWxpZCgpID8gbV9yZWFkZXJUaHJl
YWROb2RlTWFwLmdldChheElEKSA6IG51bGxwdHI7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFU+
Ci1WZWN0b3I8UmVmUHRyPEFYQ29yZU9iamVjdD4+IEFYSXNvbGF0ZWRUcmVlOjpvYmplY3RzRm9y
SURzKGNvbnN0IFUmIGF4SURzKQorUmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+IEFYSXNvbGF0ZWRU
cmVlOjpyZXRyaWV2ZU9iamVjdEZvcklERnJvbU1haW5UaHJlYWQoY29uc3QgQVhJRCBheElEKSBj
b25zdAogewotICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwotCi0gICAgVmVjdG9yPFJlZlB0
cjxBWENvcmVPYmplY3Q+PiByZXN1bHQ7Ci0gICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkoYXhJRHMuc2l6ZSgpKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGF4SUQgOiBheElEcykgewot
ICAgICAgICBSZWZQdHIgb2JqZWN0ID0gb2JqZWN0Rm9ySUQoYXhJRCk7Ci0gICAgICAgIGlmIChv
YmplY3QpIHsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoV1RGTW92ZShvYmplY3QpKTsKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gVGhlcmUgaXMgbm8g
aXNvbGF0ZWQgb2JqZWN0IGZvciB0aGlzIEFYSUQuIFRoaXMgY2FuIGhhcHBlbiBpZiB0aGUgY29y
cmVzcG9uZGluZyBsaXZlIG9iamVjdCBpcyBpZ25vcmVkLgotICAgICAgICAvLyBJZiB0aGVyZSBp
cyBhIGxpdmUgb2JqZWN0IGZvciB0aGlzIElEIGFuZCBpdCBpcyBhbiBpZ25vcmVkIHRhcmdldCBv
ZiBhIHJlbGF0aW9uc2hpcCwgY3JlYXRlIGFuIGlzb2xhdGVkIG9iamVjdCBmb3IgaXQuCi0gICAg
ICAgIG9iamVjdCA9IEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxS
ZWZQdHI8QVhJc29sYXRlZE9iamVjdD4+KFsmYXhJRCwgdGhpc10gKCkgLT4gUmVmUHRyPEFYSXNv
bGF0ZWRPYmplY3Q+IHsKLSAgICAgICAgICAgIGF1dG8qIGNhY2hlID0gYXhPYmplY3RDYWNoZSgp
OwotICAgICAgICAgICAgaWYgKCFjYWNoZSB8fCAhY2FjaGUtPnJlbGF0aW9uVGFyZ2V0SURzKCku
Y29udGFpbnMoYXhJRCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAg
ICAgICAgIFJlZlB0ciBheE9iamVjdCA9IGNhY2hlLT5vYmplY3RGb3JJRChheElEKTsKLSAgICAg
ICAgICAgIGlmICghYXhPYmplY3QgfHwgIWF4T2JqZWN0LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVk
KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAgICAgICAgIGF1dG8g
b2JqZWN0ID0gQVhJc29sYXRlZE9iamVjdDo6Y3JlYXRlKCpheE9iamVjdCwgY29uc3RfY2FzdDxB
WElzb2xhdGVkVHJlZSo+KHRoaXMpKTsKLSAgICAgICAgICAgIEFTU0VSVChheE9iamVjdC0+d3Jh
cHBlcigpKTsKLSAgICAgICAgICAgIG9iamVjdC0+YXR0YWNoUGxhdGZvcm1XcmFwcGVyKGF4T2Jq
ZWN0LT53cmFwcGVyKCkpOwotICAgICAgICAgICAgcmV0dXJuIG9iamVjdDsKLSAgICAgICAgfSk7
Ci0gICAgICAgIGlmIChvYmplY3QpIHsKLSAgICAgICAgICAgIG1fcmVhZGVyVGhyZWFkTm9kZU1h
cC5hZGQoYXhJRCwgKm9iamVjdCk7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKFdURk1vdmUo
b2JqZWN0KSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmVzdWx0LnNocmlua1RvRml0KCk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICAvLyBUaGVyZSBpcyBubyBpc29sYXRlZCBvYmplY3QgZm9y
IHRoaXMgQVhJRC4gVGhpcyBjYW4gaGFwcGVuIGlmIHRoZSBjb3JyZXNwb25kaW5nIGxpdmUgb2Jq
ZWN0IGlzIGlnbm9yZWQuCisgICAgLy8gSWYgdGhlcmUgaXMgYSBsaXZlIG9iamVjdCBmb3IgdGhp
cyBJRCBhbmQgaXQgaXMgYW4gaWdub3JlZCB0YXJnZXQgb2YgYSByZWxhdGlvbnNoaXAsIGNyZWF0
ZSBhbiBpc29sYXRlZCBvYmplY3QgZm9yIGl0LgorICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Ojpy
ZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8UmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+PihbJmF4
SUQsIHRoaXNdICgpIC0+IFJlZlB0cjxBWElzb2xhdGVkT2JqZWN0PiB7CisgICAgICAgIGF1dG8q
IGNhY2hlID0gYXhPYmplY3RDYWNoZSgpOworICAgICAgICBpZiAoIWNhY2hlIHx8ICFjYWNoZS0+
cmVsYXRpb25UYXJnZXRJRHMoKS5jb250YWlucyhheElEKSkKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgICAgIFJlZlB0ciBheE9iamVjdCA9IGNhY2hlLT5vYmplY3RGb3JJRChh
eElEKTsKKyAgICAgICAgaWYgKCFheE9iamVjdCB8fCAhYXhPYmplY3QtPmFjY2Vzc2liaWxpdHlJ
c0lnbm9yZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGF1dG8g
b2JqZWN0ID0gQVhJc29sYXRlZE9iamVjdDo6Y3JlYXRlKCpheE9iamVjdCwgY29uc3RfY2FzdDxB
WElzb2xhdGVkVHJlZSo+KHRoaXMpKTsKKyAgICAgICAgQVNTRVJUKGF4T2JqZWN0LT53cmFwcGVy
KCkpOworICAgICAgICBvYmplY3QtPmF0dGFjaFBsYXRmb3JtV3JhcHBlcihheE9iamVjdC0+d3Jh
cHBlcigpKTsKKyAgICAgICAgcmV0dXJuIG9iamVjdDsKKyAgICB9KTsKIH0KIAotCiB2b2lkIEFY
SXNvbGF0ZWRUcmVlOjpnZW5lcmF0ZVN1YnRyZWUoQWNjZXNzaWJpbGl0eU9iamVjdCYgYXhPYmpl
Y3QpCiB7CiAgICAgQVhUUkFDRSgiQVhJc29sYXRlZFRyZWU6OmdlbmVyYXRlU3VidHJlZSJfcyk7
CkBAIC02NjAsNiArNjQxLDEyIEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZU5vZGVQcm9w
ZXJ0aWVzKEFYQ29yZU9iamVjdCYgYXhPYmplY3QsIGNvbnN0IEFYUHJvcGVyCiAgICAgICAgIGNh
c2UgQVhQcm9wZXJ0eU5hbWU6OlBvc0luU2V0OgogICAgICAgICAgICAgcHJvcGVydHlNYXAuc2V0
KEFYUHJvcGVydHlOYW1lOjpQb3NJblNldCwgYXhPYmplY3QucG9zSW5TZXQoKSk7CiAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBWFByb3BlcnR5TmFtZTo6UmVtb3RlRnJhbWVQbGF0
Zm9ybUVsZW1lbnQ6CisgICAgICAgICAgICBwcm9wZXJ0eU1hcC5zZXQoQVhQcm9wZXJ0eU5hbWU6
OlJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50LCBheE9iamVjdC5yZW1vdGVGcmFtZVBsYXRmb3Jt
RWxlbWVudCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFYUHJvcGVydHlO
YW1lOjpIYXNSZW1vdGVGcmFtZUNoaWxkOgorICAgICAgICAgICAgcHJvcGVydHlNYXAuc2V0KEFY
UHJvcGVydHlOYW1lOjpIYXNSZW1vdGVGcmFtZUNoaWxkLCBheE9iamVjdC5oYXNSZW1vdGVGcmFt
ZUNoaWxkKCkpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQVhQcm9wZXJ0eU5h
bWU6OlJvbGVEZXNjcmlwdGlvbjoKICAgICAgICAgICAgIHByb3BlcnR5TWFwLnNldChBWFByb3Bl
cnR5TmFtZTo6Um9sZURlc2NyaXB0aW9uLCBheE9iamVjdC5yb2xlRGVzY3JpcHRpb24oKS5pc29s
YXRlZENvcHkoKSk7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4
IGE0MTc5Mjc5NzhkMi4uNDYxZWVhZTYwYWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKQEAgLTEw
NCw2ICsxMDQsNyBAQCBlbnVtIGNsYXNzIEFYUHJvcGVydHlOYW1lIDogdWludDE2X3QgewogICAg
IEhhc0hpZ2hsaWdodGluZywKICAgICBIYXNJdGFsaWNGb250LAogICAgIEhhc1BsYWluVGV4dCwK
KyAgICBIYXNSZW1vdGVGcmFtZUNoaWxkLAogICAgIEhhc1VuZGVybGluZSwKICAgICBIZWFkZXJD
b250YWluZXIsCiAgICAgSGVhZGluZ0xldmVsLApAQCAtMjAxLDYgKzIwMiw4IEBAIGVudW0gY2xh
c3MgQVhQcm9wZXJ0eU5hbWUgOiB1aW50MTZfdCB7CiAgICAgUHJldmVudEtleWJvYXJkRE9NRXZl
bnREaXNwYXRjaCwKICAgICBSYWRpb0J1dHRvbkdyb3VwLAogICAgIFJlbGF0aXZlRnJhbWUsCisg
ICAgUmVtb3RlRnJhbWVPZmZzZXQsCisgICAgUmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQsCiAg
ICAgUm9sZVZhbHVlLAogICAgIFJvbGVQbGF0Zm9ybVN0cmluZywKICAgICBSb2xlRGVzY3JpcHRp
b24sCkBAIC0yNTcsNiArMjYwLDcgQEAgdXNpbmcgQVhQcm9wZXJ0eU5hbWVTZXQgPSBIYXNoU2V0
PEFYUHJvcGVydHlOYW1lLCBJbnRIYXNoPEFYUHJvcGVydHlOYW1lPiwgV1RGOjoKIHVzaW5nIEFY
UHJvcGVydHlWYWx1ZVZhcmlhbnQgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIEFYSUQs
IFN0cmluZywgYm9vbCwgaW50LCB1bnNpZ25lZCwgZG91YmxlLCBmbG9hdCwgdWludDY0X3QsIEFj
Y2Vzc2liaWxpdHlCdXR0b25TdGF0ZSwgQ29sb3IsIFVSTCwgTGF5b3V0UmVjdCwgRmxvYXRQb2lu
dCwgRmxvYXRSZWN0LCBJbnRQb2ludCwgSW50UmVjdCwgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNp
Z25lZD4sIFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4sIFZlY3RvcjxBWElEPiwgVmVjdG9yPHN0
ZDo6cGFpcjxBWElELCBBWElEPj4sIFZlY3RvcjxTdHJpbmc+LCBQYXRoLCBPcHRpb25TZXQ8QVhB
bmNlc3RvckZsYWc+LCBJbnNpZGVMaW5rLCBWZWN0b3I8VmVjdG9yPEFYSUQ+PiwgQ2hhcmFjdGVy
UmFuZ2UsIHN0ZDo6cGFpcjxBWElELCBDaGFyYWN0ZXJSYW5nZT4KICNpZiBQTEFURk9STShDT0NP
QSkKICAgICAsIFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+CisgICAgLCBSZXRhaW5QdHI8
aWQ+CiAjZW5kaWYKICNpZiBFTkFCTEUoQVhfVEhSRUFEX1RFWFRfQVBJUykKICAgICAsIEFYVGV4
dFJ1bnMKQEAgLTM5Nyw2ICs0MDEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlRW1wdHlD
b250ZW50KEFjY2Vzc2liaWxpdHlPYmplY3QmKTsKICAgICBjb25zdGV4cHIgYm9vbCBpc1VwZGF0
aW5nU3VidHJlZSgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdE9mU3VidHJlZUJlaW5nVXBkYXRlZDsg
fQogICAgIGNvbnN0ZXhwciB2b2lkIHVwZGF0aW5nU3VidHJlZShBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBheE9iamVjdCkgeyBtX3Jvb3RPZlN1YnRyZWVCZWluZ1VwZGF0ZWQgPSBheE9iamVjdDsgfQor
ICAgIFJlZlB0cjxBWElzb2xhdGVkT2JqZWN0PiByZXRyaWV2ZU9iamVjdEZvcklERnJvbU1haW5U
aHJlYWQoY29uc3QgQVhJRCkgY29uc3Q7CiAKICAgICBlbnVtIGNsYXNzIEF0dGFjaFdyYXBwZXIg
OiBib29sIHsgT25NYWluVGhyZWFkLCBPbkFYVGhyZWFkIH07CiAgICAgc3RydWN0IE5vZGVDaGFu
Z2UgewpAQCAtNDk3LDYgKzUwMiwzMCBAQCBpbmxpbmUgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiBB
WElzb2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJRChzdGQ6Om9wdGlvbmFsPFBhZ2VJZAogICAgIHJl
dHVybiBwYWdlSUQgPyB0cmVlRm9yUGFnZUlEKCpwYWdlSUQpIDogbnVsbHB0cjsKIH0KIAordGVt
cGxhdGU8dHlwZW5hbWUgVT4KK2lubGluZSBWZWN0b3I8UmVmUHRyPEFYQ29yZU9iamVjdD4+IEFY
SXNvbGF0ZWRUcmVlOjpvYmplY3RzRm9ySURzKGNvbnN0IFUmIGF4SURzKQoreworICAgIEFTU0VS
VCghaXNNYWluVGhyZWFkKCkpOworCisgICAgVmVjdG9yPFJlZlB0cjxBWENvcmVPYmplY3Q+PiBy
ZXN1bHQ7CisgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYXhJRHMuc2l6ZSgpKTsK
KyAgICBmb3IgKGNvbnN0IGF1dG8mIGF4SUQgOiBheElEcykgeworICAgICAgICBSZWZQdHIgb2Jq
ZWN0ID0gb2JqZWN0Rm9ySUQoYXhJRCk7CisgICAgICAgIGlmIChvYmplY3QpIHsKKyAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoV1RGTW92ZShvYmplY3QpKTsKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICB9CisKKyAgICAgICAgb2JqZWN0ID0gcmV0cmlldmVPYmplY3RGb3JJREZyb21N
YWluVGhyZWFkKGF4SUQpOworICAgICAgICBpZiAob2JqZWN0KSB7CisgICAgICAgICAgICBtX3Jl
YWRlclRocmVhZE5vZGVNYXAuYWRkKGF4SUQsICpvYmplY3QpOworICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZChXVEZNb3ZlKG9iamVjdCkpOworICAgICAgICB9CisgICAgfQorICAgIHJlc3VsdC5z
aHJpbmtUb0ZpdCgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9tYWMvQVhJc29sYXRlZE9iamVjdE1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL21hYy9BWElzb2xhdGVkT2JqZWN0TWFjLm1tCmlu
ZGV4IGFkYjdlYzY0ODM0NS4uZTAyZGEwZDExMmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9tYWMvQVhJc29sYXRlZE9iamVjdE1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9tYWMvQVhJc29s
YXRlZE9iamVjdE1hYy5tbQpAQCAtNjMsNiArNjMsOCBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6
OmluaXRpYWxpemVQbGF0Zm9ybVByb3BlcnRpZXMoY29uc3QgUmVmPGNvbnN0IEFjY2Vzc2liaWxp
dAogICAgICAgICB9CiAgICAgfQogCisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlJl
bW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50LCBvYmplY3QtPnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVt
ZW50KCkpOworCiAgICAgLy8gQ2FjaGUgdGhlIFN0cmluZ1ZhbHVlIG9ubHkgaWYgaXQgZGlmZmVy
cyBmcm9tIHRoZSBBdHRyaWJ1dGVkVGV4dC4KICAgICBhdXRvIHZhbHVlID0gb2JqZWN0LT5zdHJp
bmdWYWx1ZSgpOwogICAgIGlmICghYXR0cmlidXRlZFRleHQgfHwgdmFsdWUgIT0gU3RyaW5nKFth
dHRyaWJ1dGVkVGV4dCBzdHJpbmddKSkKQEAgLTIwMiw2ICsyMDQsMTEgQEAgdW5zaWduZWQgQVhJ
c29sYXRlZE9iamVjdDo6dGV4dExlbmd0aCgpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKK1Jl
dGFpblB0cjxpZD4gQVhJc29sYXRlZE9iamVjdDo6cmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQo
KSBjb25zdAoreworICAgIHJldHVybiBwcm9wZXJ0eVZhbHVlPFJldGFpblB0cjxpZD4+KEFYUHJv
cGVydHlOYW1lOjpSZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCk7Cit9CisKIFJldGFpblB0cjxO
U0F0dHJpYnV0ZWRTdHJpbmc+IEFYSXNvbGF0ZWRPYmplY3Q6OmF0dHJpYnV0ZWRTdHJpbmdGb3JU
ZXh0TWFya2VyUmFuZ2UoQVhUZXh0TWFya2VyUmFuZ2UmJiBtYXJrZXJSYW5nZSwgU3BlbGxDaGVj
ayBzcGVsbENoZWNrKSBjb25zdAogewogICAgIGlmICghbWFya2VyUmFuZ2UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVj
dE1hYy5tbQppbmRleCBiYTJhY2NkODBkMDQuLmZiYmUwYmIyYTA2NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0
TWFjLm1tCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkFj
Y2Vzc2liaWxpdHlPYmplY3QuaCIKIAorI2ltcG9ydCAiQVhSZW1vdGVGcmFtZS5oIgogI2ltcG9y
dCAiQWNjZXNzaWJpbGl0eUxhYmVsLmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5TGlzdC5oIgog
I2ltcG9ydCAiQ29sb3JDb2NvYS5oIgpAQCAtNTEsNiArNTIsNyBAQAogI2ltcG9ydCAiV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMuaCIKICNpbXBvcnQgIldpZGdldC5oIgogCisjaW1w
b3J0IDxwYWwvc3BpL2NvY29hL05TQWNjZXNzaWJpbGl0eVNQSS5oPgogI2ltcG9ydCA8cGFsL3Nw
aS9tYWMvTlNTcGVsbENoZWNrZXJTUEkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzQ5
LDYgKzc1MSwyOSBAQCBSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiBhdHRyaWJ1dGVkU3Ry
aW5nQ3JlYXRlKE5vZGUqIG5vZGUsIFN0cmluZ1ZpZXcgdGV4dAogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKK3N0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBBWFJlbW90ZUZyYW1lOjpnZW5lcmF0ZVJl
bW90ZVRva2VuKCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byogcGFyZW50ID0gcGFyZW50T2JqZWN0
KCkpIHsKKyAgICAgICAgLy8gV2UgdXNlIHRoZSBwYXJlbnQncyB3cmFwcGVyIHNvIHRoYXQgdGhl
IHJlbW90ZSBmcmFtZSBhY3RzIGFzIGEgcGFzcyB0aHJvdWdoIGZvciB0aGUgcmVtb3RlIHRva2Vu
IGJyaWRnZS4KKyAgICAgICAgTlNEYXRhICpkYXRhID0gW05TQWNjZXNzaWJpbGl0eVJlbW90ZVVJ
RWxlbWVudCByZW1vdGVUb2tlbkZvckxvY2FsVUlFbGVtZW50OnBhcmVudC0+d3JhcHBlcigpXTsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6c3BhbihzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW2Rh
dGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7CisgICAgfQorCisgICAgcmV0dXJuIHN0ZDo6c3Bh
bjxjb25zdCB1aW50OF90PiB7IH07Cit9CisKK3ZvaWQgQVhSZW1vdGVGcmFtZTo6aW5pdGlhbGl6
ZVBsYXRmb3JtRWxlbWVudFdpdGhSZW1vdGVUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4g
dG9rZW4sIGludCBwcm9jZXNzSWRlbnRpZmllcikKK3sKKyAgICBtX3Byb2Nlc3NJZGVudGlmaWVy
ID0gcHJvY2Vzc0lkZW50aWZpZXI7CisgICAgaWYgKFt3cmFwcGVyKCkgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3RvcihhY2Nlc3NpYmlsaXR5U2V0UHJlc2VudGVyUHJvY2Vzc0lkZW50aWZpZXI6
KV0pCisgICAgICAgIFsoaWQpd3JhcHBlcigpIGFjY2Vzc2liaWxpdHlTZXRQcmVzZW50ZXJQcm9j
ZXNzSWRlbnRpZmllcjpwcm9jZXNzSWRlbnRpZmllcl07CisgICAgTlNEYXRhICp0b2tlbkRhdGEg
PSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6dG9rZW4uZGF0YSgpIGxlbmd0aDp0b2tlbi5zaXplKCld
OworICAgIG1fcmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQgPSBhZG9wdE5TKFtbTlNBY2Nlc3Np
YmlsaXR5UmVtb3RlVUlFbGVtZW50IGFsbG9jXSBpbml0V2l0aFJlbW90ZVRva2VuOnRva2VuRGF0
YV0pOworCisgICAgaWYgKGF1dG8qIGNhY2hlID0gYXhPYmplY3RDYWNoZSgpKQorICAgICAgICBj
YWNoZS0+b25SZW1vdGVGcmFtZUluaXRpYWxpemVkKCp0aGlzKTsKK30KKwogbmFtZXNwYWNlIEFj
Y2Vzc2liaWxpdHkgewogCiBQbGF0Zm9ybVJvbGVNYXAgY3JlYXRlUGxhdGZvcm1Sb2xlTWFwKCkK
QEAgLTg5MSw2ICs5MTYsNyBAQCBQbGF0Zm9ybVJvbGVNYXAgY3JlYXRlUGxhdGZvcm1Sb2xlTWFw
KCkKICAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6U3VwZXJzY3JpcHQsIE5TQWNjZXNzaWJp
bGl0eUdyb3VwUm9sZSB9LAogICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpNb2RlbCwgTlNB
Y2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCiAgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlN1
Z2dlc3Rpb24sIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2li
aWxpdHlSb2xlOjpSZW1vdGVGcmFtZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCiAgICAg
fTsKICAgICBQbGF0Zm9ybVJvbGVNYXAgcm9sZU1hcDsKICAgICBmb3IgKGF1dG8mIHJvbGUgOiBy
b2xlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQppbmRleCA2MzU3
ZmE3YzI3MWIuLmYxNDI0NWZjM2I2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyQmFzZS5tbQpAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCAiQVhDb3JlT2JqZWN0LmgiCiAj
aW1wb3J0ICJBWElzb2xhdGVkT2JqZWN0LmgiCiAjaW1wb3J0ICJBWE9iamVjdENhY2hlLmgiCisj
aW1wb3J0ICJBWFJlbW90ZUZyYW1lLmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5QVJJQUdyaWRS
b3cuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlMaXN0LmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmls
aXR5TGlzdEJveC5oIgpAQCAtMjY1LDEzICsyNjYsMTMgQEAgTlNBcnJheSAqbWFrZU5TQXJyYXko
Y29uc3QgV2ViQ29yZTo6QVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
IGMKICAgICAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICAgICAgYXV0byB3cmFwcGVyID0gY2hp
bGQtPndyYXBwZXIoKTsKLQogICAgICAgICAvLyBXZSB3YW50IHRvIHJldHVybiB0aGUgYXR0YWNo
bWVudCB2aWV3IGluc3RlYWQgb2YgdGhlIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIGF0dGFjaG1l
bnQsCiAgICAgICAgIC8vIG90aGVyd2lzZSwgd2UgZ2V0IHBhbGluZHJvbWUgZXJyb3JzIGluIHRo
ZSBBWCBoaWVyYXJjaHkuCiAgICAgICAgIGlmIChjaGlsZC0+aXNBdHRhY2htZW50KCkpIHsKICAg
ICAgICAgICAgIGlmIChpZCBhdHRhY2htZW50VmlldyA9IHdyYXBwZXIuYXR0YWNobWVudFZpZXcp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGF0dGFjaG1lbnRWaWV3OwotICAgICAgICB9CisgICAg
ICAgIH0gZWxzZSBpZiAoY2hpbGQtPmlzUmVtb3RlRnJhbWUoKSkKKyAgICAgICAgICAgIHJldHVy
biBjaGlsZC0+cmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKS5nZXQoKTsKIAogICAgICAgICBy
ZXR1cm4gd3JhcHBlcjsKICAgICB9KS5hdXRvcmVsZWFzZSgpOwpAQCAtMzg5LDcgKzM5MCw3IEBA
IE5TQXJyYXkgKm1ha2VOU0FycmF5KGNvbnN0IFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6QWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBjCiAtIChCT09MKWlzSXNvbGF0ZWRPYmplY3QKIHsKICNp
ZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQotICAgIGF1dG8qIGJhY2tpbmdP
YmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHIgYmFja2luZ09iamVjdCA9
IGR5bmFtaWNEb3duY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0PihzZWxmLmJhc2VVcGRhdGVCYWNr
aW5nU3RvcmUpOwogICAgIHJldHVybiBiYWNraW5nT2JqZWN0ICYmIGJhY2tpbmdPYmplY3QtPmlz
QVhJc29sYXRlZE9iamVjdEluc3RhbmNlKCk7CiAjZWxzZQogICAgIHJldHVybiBOTzsKQEAgLTUy
Myw3ICs1MjQsNyBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0UGF0aFRvU2NyZWVuU3BhY2VGdW5jdGlv
bihQYXRoQ29udmVyc2lvbkluZm8mIGNvbnZlcnNpb24sIGNvbgogCiAtIChDR1JlY3QpY29udmVy
dFJlY3RUb1NwYWNlOihjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKXJlY3Qgc3BhY2U6KEFjY2Vz
c2liaWxpdHlDb252ZXJzaW9uU3BhY2Upc3BhY2UKIHsKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0
ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgUmVmUHRyIGJhY2tpbmdPYmplY3QgPSBkeW5h
bWljRG93bmNhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdD4oc2VsZi5iYXNlVXBkYXRlQmFja2luZ1N0
b3JlKTsKICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCiAgICAgICAgIHJldHVybiBDR1JlY3RaZXJv
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDZjNWU2Yjdh
Y2Q5Yy4uNzUwMmQ5YTBlNDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1h
Yy5tbQpAQCAtMzQsNiArMzQsNyBAQAogI2ltcG9ydCAiQVhJc29sYXRlZE9iamVjdC5oIgogI2lt
cG9ydCAiQVhMb2dnZXIuaCIKICNpbXBvcnQgIkFYT2JqZWN0Q2FjaGUuaCIKKyNpbXBvcnQgIkFY
UmVtb3RlRnJhbWUuaCIKICNpbXBvcnQgIkFYVGV4dE1hcmtlci5oIgogI2ltcG9ydCAiQWNjZXNz
aWJpbGl0eUFSSUFHcmlkUm93LmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5TGFiZWwuaCIKQEAg
LTQ3OSw2ICs0ODAsMTAgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAjZGVmaW5lIE5TQWNj
ZXNzaWJpbGl0eVRleHRJbnB1dE1hcmtlZFRleHRNYXJrZXJSYW5nZUF0dHJpYnV0ZSBAIkFYVGV4
dElucHV0TWFya2VkVGV4dE1hcmtlclJhbmdlIgogI2VuZGlmCiAKKyNpZm5kZWYga0FYQ29udmVy
dFJlbGF0aXZlRnJhbWVQYXJhbWV0ZXJpemVkQXR0cmlidXRlCisjZGVmaW5lIGtBWENvbnZlcnRS
ZWxhdGl2ZUZyYW1lUGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBAIkFYQ29udmVydFJlbGF0aXZlRnJh
bWUiCisjZW5kaWYKKwogQGltcGxlbWVudGF0aW9uIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyCiAKIC0gKHZvaWQpZGV0YWNoCkBAIC02OTIsNyArNjk3LDcgQEAgc3RhdGljIFJldGFpblB0
cjxBWFRleHRNYXJrZXJSZWY+IHByZXZpb3VzVGV4dE1hcmtlcihBWE9iamVjdENhY2hlKiBjYWNo
ZSwgY29uc3QKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgYXV0byogYmFj
a2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0cjxBWENvcmVPYmpl
Y3Q+IGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKICAgICBpZiAoIWJhY2tp
bmdPYmplY3QpCiAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTEyNTYsNyArMTI2MSw3IEBAIEFM
TE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogCiAtIChOU0FycmF5ICopcmVuZGVy
V2lkZ2V0Q2hpbGRyZW4KIHsKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tp
bmdPYmplY3Q7CisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNlbGYu
YXhCYWNraW5nT2JqZWN0OwogICAgIGlmICghYmFja2luZ09iamVjdCB8fCAhYmFja2luZ09iamVj
dC0+aXNXaWRnZXQoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMTI3OSw3ICsxMjg0LDcg
QEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKIC0gKGlkKXJlbW90ZUFjY2Vz
c2liaWxpdHlQYXJlbnRPYmplY3QKIHsKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5h
eEJhY2tpbmdPYmplY3Q7CisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9
IHNlbGYuYXhCYWNraW5nT2JqZWN0OwogICAgIHJldHVybiBiYWNraW5nT2JqZWN0ID8gYmFja2lu
Z09iamVjdC0+cmVtb3RlUGFyZW50T2JqZWN0KCkgOiBuaWw7CiB9CiAKQEAgLTEyOTYsNyArMTMw
MSw3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRUb1ZlY3RvcihOU0FycmF5KiBhcnJheSwgQWNjZXNz
aWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoCiAKIC0gKEFYVGV4dE1hcmtlclJhbmdlUmVm
KXNlbGVjdGVkVGV4dE1hcmtlclJhbmdlCiB7Ci0gICAgYXV0byogYmFja2luZ09iamVjdCA9IHNl
bGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+IGJhY2tpbmdPYmpl
Y3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCiAgICAg
ICAgIHJldHVybiBuaWw7CiAKQEAgLTEzNjYsMTIgKzEzNzEsMTggQEAgc3RhdGljIHZvaWQgV2Vi
VHJhbnNmb3JtQ0dQYXRoVG9OU0JlemllclBhdGgodm9pZCogaW5mbywgY29uc3QgQ0dQYXRoRWxl
bWVudCAqZWwKIAogLSAoTlNTdHJpbmcqKXJvbGUKIHsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0
PiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgaWYgKCFiYWNraW5n
T2JqZWN0KQorICAgICAgICByZXR1cm4gbmlsOworCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19CRUdJTgotICAgIGlmIChzZWxmLmF4QmFja2luZ09iamVjdC0+aXNBdHRhY2htZW50KCkp
CisgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzQXR0YWNobWVudCgpKQogICAgICAgICByZXR1cm4g
W1tzZWxmIGF0dGFjaG1lbnRWaWV3XSBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nl
c3NpYmlsaXR5Um9sZUF0dHJpYnV0ZV07CisgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzUmVtb3Rl
RnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIFtiYWNraW5nT2JqZWN0LT5yZW1vdGVGcmFtZVBsYXRm
b3JtRWxlbWVudCgpLmdldCgpIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2li
aWxpdHlSb2xlQXR0cmlidXRlXTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAog
Ci0gICAgTlNTdHJpbmcgKnN0cmluZyA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5yb2xlUGxhdGZv
cm1TdHJpbmcoKTsKKyAgICBOU1N0cmluZyAqc3RyaW5nID0gYmFja2luZ09iamVjdC0+cm9sZVBs
YXRmb3JtU3RyaW5nKCk7CiAgICAgaWYgKHN0cmluZy5sZW5ndGgpCiAgICAgICAgIHJldHVybiBz
dHJpbmc7CiAgICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eVVua25vd25Sb2xlOwpAQCAtMTM3OSw3
ICsxMzkwLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKIC0gKEJPT0wp
aXNFbXB0eUdyb3VwCiB7Ci0gICAgYXV0byogYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5n
T2JqZWN0OworICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+IGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4
QmFja2luZ09iamVjdDsKICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIApAQCAtMTM4OCw2ICsxMzk5LDkgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfRU5ECiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogCisgICAgaWYgKGJhY2tpbmdP
YmplY3QtPmlzUmVtb3RlRnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgcmV0
dXJuIFtbc2VsZiByb2xlXSBpc0VxdWFsOk5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZV0KICAgICAg
ICAgJiYgYmFja2luZ09iamVjdC0+Y2hpbGRyZW4oKS5pc0VtcHR5KCkKICAgICAgICAgJiYgIVtb
c2VsZiByZW5kZXJXaWRnZXRDaGlsZHJlbl0gY291bnRdOwpAQCAtMTM5Niw3ICsxNDEwLDcgQEAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19CRUdJTgogLSAoTlNTdHJpbmcqKXN1YnJvbGUKIHsKLSAgICBhdXRvKiBiYWNraW5n
T2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4g
YmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OwogICAgIGlmICghYmFja2luZ09i
amVjdCkKICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMTQxMyw3ICsxNDI3LDcgQEAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKIC0gKE5TU3RyaW5nKilyb2xlRGVzY3JpcHRp
b24KIHsKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7Cisg
ICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2Jq
ZWN0OwogICAgIGlmICghYmFja2luZ09iamVjdCkKICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAt
MTQyMSw2ICsxNDM1LDggQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAg
ICAvLyBhdHRhY2htZW50cyBoYXZlIHRoZSBBWEltYWdlIHJvbGUsIGJ1dCBhIGRpZmZlcmVudCBz
dWJyb2xlCiAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzQXR0YWNobWVudCgpKQogICAgICAgICBy
ZXR1cm4gW1tzZWxmIGF0dGFjaG1lbnRWaWV3XSBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
TlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlXTsKKyAgICBpZiAoYmFja2lu
Z09iamVjdC0+aXNSZW1vdGVGcmFtZSgpKQorICAgICAgICByZXR1cm4gW2JhY2tpbmdPYmplY3Qt
PnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkuZ2V0KCkgYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJvbGVEZXNjcmlwdGlvbkF0dHJpYnV0ZV07CiBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgIFN0cmluZyByb2xlRGVzY3JpcHRpb24g
PSBiYWNraW5nT2JqZWN0LT5yb2xlRGVzY3JpcHRpb24oKTsKQEAgLTE0NzMsNiArMTQ4OSwyOCBA
QCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICByZXR1cm4gYXhTY3JvbGxW
aWV3ID8gW2F4U2Nyb2xsVmlldy0+cGxhdGZvcm1XaWRnZXQoKSB3aW5kb3ddIDogbmlsOwogfQog
CistIChOU0FycmF5ICopX3RyYW5zZm9ybVNwZWNpYWxDaGlsZHJlbkNhc2VzOihSZWZQdHI8QVhD
b3JlT2JqZWN0PiliYWNraW5nT2JqZWN0Cit7CisjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCisg
ICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzTW9kZWwoKSkgeworICAgICAgICBhdXRvIG1vZGVsQ2hp
bGRyZW4gPSBiYWNraW5nT2JqZWN0LT5tb2RlbEVsZW1lbnRDaGlsZHJlbigpOworICAgICAgICBp
ZiAobW9kZWxDaGlsZHJlbi5zaXplKCkpIHsKKyAgICAgICAgICAgIHJldHVybiBjcmVhdGVOU0Fy
cmF5KFdURk1vdmUobW9kZWxDaGlsZHJlbiksIFtdIChhdXRvJiYgY2hpbGQpIC0+IGlkIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gY2hpbGQuZ2V0KCk7CisgICAgICAgICAgICB9KS5hdXRvcmVs
ZWFzZSgpOworICAgICAgICB9CisgICAgfQorI2VuZGlmCisKKyAgICBjb25zdCBhdXRvJiBjaGls
ZHJlbiA9IGJhY2tpbmdPYmplY3QtPmNoaWxkcmVuKCk7CisgICAgaWYgKCFjaGlsZHJlbi5zaXpl
KCkpIHsKKyAgICAgICAgaWYgKE5TQXJyYXkgKmNoaWxkcmVuID0gW3NlbGYgcmVuZGVyV2lkZ2V0
Q2hpbGRyZW5dKQorICAgICAgICAgICAgcmV0dXJuIGNoaWxkcmVuOworICAgIH0KKworICAgIHJl
dHVybiBuaWw7Cit9CisKIC8vIEZJWE1FOiBzcGxpdCB1cCB0aGlzIGZ1bmN0aW9uIGluIGEgYmV0
dGVyIHdheS4KIC8vIHN1Z2dlc3Rpb25zOiBVc2UgYSBoYXNoIHRhYmxlIHRoYXQgbWFwcyBhdHRy
aWJ1dGUgbmFtZXMgdG8gZnVuY3Rpb24gY2FsbHMsCiAvLyBvciBtYXliZSBwb2ludGVycyB0byBt
ZW1iZXIgZnVuY3Rpb25zCkBAIC0xNTMxLDIyICsxNTY5LDkgQEAgQUxMT1dfREVQUkVDQVRFRF9J
TVBMRU1FTlRBVElPTlNfRU5ECiAgICAgfQogCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1
YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZV0gfHwgW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuSW5OYXZpZ2F0aW9u
T3JkZXJBdHRyaWJ1dGVdKSB7Ci0jaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCi0gICAgICAgIGlm
IChiYWNraW5nT2JqZWN0LT5pc01vZGVsKCkpIHsKLSAgICAgICAgICAgIGF1dG8gbW9kZWxDaGls
ZHJlbiA9IGJhY2tpbmdPYmplY3QtPm1vZGVsRWxlbWVudENoaWxkcmVuKCk7Ci0gICAgICAgICAg
ICBpZiAobW9kZWxDaGlsZHJlbi5zaXplKCkpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gY3Jl
YXRlTlNBcnJheShXVEZNb3ZlKG1vZGVsQ2hpbGRyZW4pLCBbXSAoYXV0byYmIGNoaWxkKSAtPiBp
ZCB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZC5nZXQoKTsKLSAgICAgICAgICAg
ICAgICB9KS5hdXRvcmVsZWFzZSgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0jZW5kaWYK
LQotICAgICAgICBjb25zdCBhdXRvJiBjaGlsZHJlbiA9IGJhY2tpbmdPYmplY3QtPmNoaWxkcmVu
KCk7Ci0gICAgICAgIGlmIChjaGlsZHJlbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGlmIChO
U0FycmF5ICp3aWRnZXRDaGlsZHJlbiA9IFtzZWxmIHJlbmRlcldpZGdldENoaWxkcmVuXSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gd2lkZ2V0Q2hpbGRyZW47Ci0gICAgICAgIH0KKyAgICAgICAg
TlNBcnJheSAqc3BlY2lhbENoaWxkcmVuID0gW3NlbGYgX3RyYW5zZm9ybVNwZWNpYWxDaGlsZHJl
bkNhc2VzOmJhY2tpbmdPYmplY3RdOworICAgICAgICBpZiAoc3BlY2lhbENoaWxkcmVuLmNvdW50
KQorICAgICAgICAgICAgcmV0dXJuIHNwZWNpYWxDaGlsZHJlbjsKIAogICAgICAgICAvLyBUaGUg
dHJlZSdzIChBWE91dGxpbmUpIGNoaWxkcmVuIGFyZSBzdXBwb3NlZCB0byBiZSBpdHMgcm93cyBh
bmQgY29sdW1ucy4KICAgICAgICAgLy8gVGhlIEFSSUEgc3BlYyBkb2Vzbid0IGhhdmUgY29sdW1u
cywgc28gd2UganVzdCBuZWVkIHJvd3MuCkBAIC0xNTU3LDcgKzE1ODIsNyBAQCBBTExPV19ERVBS
RUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlz
VHJlZUl0ZW0oKSkKICAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0
LT5hcmlhVHJlZUl0ZW1Db250ZW50KCkpOwogCi0gICAgICAgIHJldHVybiBtYWtlTlNBcnJheShj
aGlsZHJlbik7CisgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT5jaGls
ZHJlbigpKTsKICAgICB9CiAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5n
OiBOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlXSkgewpAQCAtMTcxMywx
NiArMTczOCwxNCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBp
ZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlFbmFibGVk
QXR0cmlidXRlXSkKICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDogYmFj
a2luZ09iamVjdC0+aXNFbmFibGVkKCldOwogCi0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1
YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5U2l6ZUF0dHJpYnV0ZV0pIHsKLSAgICAgICAgYXV0
byBzaXplID0gYmFja2luZ09iamVjdC0+c2l6ZSgpOwotICAgICAgICByZXR1cm4gW05TVmFsdWUg
dmFsdWVXaXRoU2l6ZTpOU01ha2VTaXplKHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSldOwot
ICAgIH0KKyAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJp
bGl0eVNpemVBdHRyaWJ1dGVdKQorICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoU2l6
ZTooQ0dTaXplKWJhY2tpbmdPYmplY3QtPnNpemUoKV07CiAKICAgICBpZiAoW2F0dHJpYnV0ZU5h
bWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVByaW1hcnlTY3JlZW5IZWlnaHRBdHRy
aWJ1dGVdKQogICAgICAgICByZXR1cm4gQChiYWNraW5nT2JqZWN0LT5wcmltYXJ5U2NyZWVuUmVj
dCgpLmhlaWdodCgpKTsKIAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6
TlNBY2Nlc3NpYmlsaXR5UG9zaXRpb25BdHRyaWJ1dGVdKQotICAgICAgICByZXR1cm4gQChDR1Bv
aW50KGJhY2tpbmdPYmplY3QtPnNjcmVlblJlbGF0aXZlUG9zaXRpb24oKSkpOworICAgICAgICBy
ZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUG9pbnQ6KENHUG9pbnQpYmFja2luZ09iamVjdC0+c2Ny
ZWVuUmVsYXRpdmVQb3NpdGlvbigpXTsKIAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5UGF0aEF0dHJpYnV0ZV0pCiAgICAgICAgIHJldHVybiBb
c2VsZiBwYXRoXTsKQEAgLTIyMzcsNiArMjI2MCwxMCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExF
TUVOVEFUSU9OU19FTkQKICAgICAgICAgcmV0dXJuIHJhbmdlID8gcmFuZ2UucGxhdGZvcm1EYXRh
KCkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpIDogbmlsOwogICAgIH0KIAorICAgIC8vIFZvaWNlT3Zl
ciBwcm9wZXJ0eSB0byBpZ25vcmUgY2VydGFpbiBncm91cHMuCisgICAgaWYgKFthdHRyaWJ1dGVO
YW1lIGlzRXF1YWxUb1N0cmluZzpAIkFYQXV0b0ludGVyYWN0YWJsZSJdKQorICAgICAgICByZXR1
cm4gQChiYWNraW5nT2JqZWN0LT5pc1JlbW90ZUZyYW1lKCkpOworCiAgICAgLy8gVXNlZCBieSBM
YXlvdXRUZXN0cyBvbmx5LCBub3QgYnkgQVQgY2xpZW50cy4KICAgICBpZiAoVU5MSUtFTFkoW2F0
dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiQVhBUklBUm9sZSJdKSkKICAgICAgICAgcmV0
dXJuIGJhY2tpbmdPYmplY3QtPmNvbXB1dGVkUm9sZVN0cmluZygpOwpAQCAtMjMzMCw3ICsyMzU3
LDggQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIGlmIChh
eE9iamVjdC0+aXNBdHRhY2htZW50KCkpIHsKICAgICAgICAgICAgIGlmIChpZCBhdHRhY2htZW50
VmlldyA9IFtheE9iamVjdC0+d3JhcHBlcigpIGF0dGFjaG1lbnRWaWV3XSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gYXR0YWNobWVudFZpZXc7Ci0gICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlm
IChheE9iamVjdC0+aXNSZW1vdGVGcmFtZSgpKQorICAgICAgICAgICAgcmV0dXJuIGF4T2JqZWN0
LT5yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpLmdldCgpOwogCiAgICAgICAgIC8vIE9ubHkg
Y2FsbCBvdXQgdG8gdGhlIG1haW4tdGhyZWFkIGlmIHRoaXMgb2JqZWN0IGhhcyBhIGJhY2tpbmcg
d2lkZ2V0IHRvIHF1ZXJ5LgogICAgICAgICBpZiAoYXhPYmplY3QtPmlzV2lkZ2V0KCkpIHsKQEAg
LTI1MDcsNiArMjUzNSwxMCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQK
ICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNXZWJBcmVhKCkpCiAgICAgICAgIHJldHVybiB3ZWJB
cmVhUGFyYW1BdHRyczsKIAorICAgIC8vIFRoZSBvYmplY3QgdGhhdCBzZXJ2ZXMgdXAgdGhlIHJl
bW90ZSBmcmFtZSBhbHNvIGlzIHRoZSBvbmUgdGhhdCBkb2VzIHRoZSBmcmFtZSBjb252ZXJzaW9u
LgorICAgIGlmIChiYWNraW5nT2JqZWN0LT5oYXNSZW1vdGVGcmFtZUNoaWxkKCkpCisgICAgICAg
IHJldHVybiBbcGFyYW1BdHRycyBhcnJheUJ5QWRkaW5nT2JqZWN0OmtBWENvbnZlcnRSZWxhdGl2
ZUZyYW1lUGFyYW1ldGVyaXplZEF0dHJpYnV0ZV07CisKICAgICByZXR1cm4gcGFyYW1BdHRyczsK
IH0KIApAQCAtMjU3OCw3ICsyNjEwLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECiB7CiAgICAgQVhUUkFDRSgiV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNz
aWJpbGl0eVBlcmZvcm1TaG93TWVudUFjdGlvbiJfcyk7CiAKLSAgICBhdXRvKiBiYWNraW5nT2Jq
ZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFj
a2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OwogICAgIGlmICghYmFja2luZ09iamVj
dCkgewogICAgICAgICBBWExPRyhtYWtlU3RyaW5nKCJObyBiYWNraW5nT2JqZWN0IGZvciB3cmFw
cGVyICIsIGhleChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oc2VsZikpKSk7CiAgICAgICAg
IHJldHVybjsKQEAgLTI4MjIsNyArMjg1NCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5U
QVRJT05TX0VORAogICAgIGlmICghcmFuZ2UubGVuZ3RoKQogICAgICAgICByZXR1cm4gbmlsOwog
Ci0gICAgYXV0byogYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJl
ZlB0cjxBWENvcmVPYmplY3Q+IGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsK
ICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCiAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTMxNzcs
NiArMzIwOSwxOCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHdpZGdldENoaWxkcmVuOwogICAgICAgICAgICAgICAgIGNy
aXRlcmlhLnJlc3VsdHNMaW1pdCAtPSBbd2lkZ2V0Q2hpbGRyZW4gY291bnRdOwogICAgICAgICAg
ICAgfQorICAgICAgICB9IGVsc2UgaWYgKGJhY2tpbmdPYmplY3QtPmlzUmVtb3RlRnJhbWUoKQor
ICAgICAgICAgICAgJiYgY3JpdGVyaWEuc2VhcmNoS2V5cy5jb250YWlucyhBY2Nlc3NpYmlsaXR5
U2VhcmNoS2V5OjpBbnlUeXBlKQorICAgICAgICAgICAgJiYgKCFjcml0ZXJpYS52aXNpYmxlT25s
eSB8fCBiYWNraW5nT2JqZWN0LT5pc1Zpc2libGUoKSkpIHsKKyAgICAgICAgICAgIE5TQXJyYXkg
KnJlbW90ZUZyYW1lQ2hpbGRyZW4gPSBbc2VsZiBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGVdOworICAgICAgICAgICAgQVNTRVJUKHJl
bW90ZUZyYW1lQ2hpbGRyZW4uY291bnQgPT0gMSk7CisgICAgICAgICAgICBpZiAocmVtb3RlRnJh
bWVDaGlsZHJlbi5jb3VudCA9PSAxKSB7CisgICAgICAgICAgICAgICAgTlNVSW50ZWdlciBpbmNs
dWRlZENoaWxkcmVuQ291bnQgPSBzdGQ6Om1pbihbcmVtb3RlRnJhbWVDaGlsZHJlbiBjb3VudF0s
IE5TVUludGVnZXIoY3JpdGVyaWEucmVzdWx0c0xpbWl0KSk7CisgICAgICAgICAgICAgICAgd2lk
Z2V0Q2hpbGRyZW4gPSBbcmVtb3RlRnJhbWVDaGlsZHJlbiBzdWJhcnJheVdpdGhSYW5nZTpOU01h
a2VSYW5nZSgwLCBpbmNsdWRlZENoaWxkcmVuQ291bnQpXTsKKyAgICAgICAgICAgICAgICBpZiAo
W3dpZGdldENoaWxkcmVuIGNvdW50XSA+PSBjcml0ZXJpYS5yZXN1bHRzTGltaXQpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiByZW1vdGVGcmFtZUNoaWxkcmVuOworICAgICAgICAgICAgICAg
IGNyaXRlcmlhLnJlc3VsdHNMaW1pdCAtPSBbd2lkZ2V0Q2hpbGRyZW4gY291bnRdOworICAgICAg
ICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yIHJlc3VsdHM7CkBAIC0zNjY5LDYgKzM3MTMsMTEgQEAgQUxM
T1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgaWYgKFVOTElLRUxZKFthdHRy
aWJ1dGUgaXNFcXVhbFRvU3RyaW5nOl9BWFRleHRNYXJrZXJSYW5nZUZvck5TUmFuZ2VBdHRyaWJ1
dGVdKSkKICAgICAgICAgcmV0dXJuIGJhY2tpbmdPYmplY3QtPnRleHRNYXJrZXJSYW5nZUZvck5T
UmFuZ2UocmFuZ2UpLnBsYXRmb3JtRGF0YSgpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKIAorICAg
IGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzprQVhDb252ZXJ0UmVsYXRpdmVGcmFtZVBh
cmFtZXRlcml6ZWRBdHRyaWJ1dGVdKSB7CisgICAgICAgIGF1dG8qIHBhcmVudCA9IGJhY2tpbmdP
YmplY3QtPnBhcmVudE9iamVjdCgpOworICAgICAgICByZXR1cm4gcGFyZW50ID8gW05TVmFsdWUg
dmFsdWVXaXRoUmVjdDpwYXJlbnQtPmNvbnZlcnRGcmFtZVRvU3BhY2UoRmxvYXRSZWN0KHJlY3Qp
LCBBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlOjpQYWdlKV0gOiBuaWw7CisgICAgfQorCiAg
ICAgLy8gVGhlcmUgYXJlIHNvbWUgcGFyYW1ldGVycyB0aGF0IHN1cGVyIGhhbmRsZXMgdGhhdCBh
cmUgbm90IGV4cGxpY2l0bHkgcmV0dXJuZWQgYnkgdGhlIGxpc3Qgb2YgdGhlIGVsZW1lbnQncyBh
dHRyaWJ1dGVzLgogICAgIC8vIEluIHRoYXQgY2FzZSBpdCBtdXN0IGJlIHBhc3NlZCB0byBzdXBl
ci4KICAgICByZXR1cm4gW3N1cGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTphdHRyaWJ1
dGUgZm9yUGFyYW1ldGVyOnBhcmFtZXRlcl07CkBAIC0zNzIyLDggKzM3NzEsMTAgQEAgQUxMT1df
REVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIGlmICghY2hpbGQpCiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIg
KmNoaWxkV3JhcHBlciA9IGNoaWxkLT53cmFwcGVyKCk7Ci0gICAgICAgIGlmIChjaGlsZFdyYXBw
ZXIgPT0gdGFyZ2V0Q2hpbGQgfHwgKGNoaWxkLT5pc0F0dGFjaG1lbnQoKSAmJiBbY2hpbGRXcmFw
cGVyIGF0dGFjaG1lbnRWaWV3XSA9PSB0YXJnZXRDaGlsZCkpCisgICAgICAgIGlmIChjaGlsZFdy
YXBwZXIgPT0gdGFyZ2V0Q2hpbGQgfHwgKGNoaWxkLT5pc0F0dGFjaG1lbnQoKSAmJiBbY2hpbGRX
cmFwcGVyIGF0dGFjaG1lbnRWaWV3XSA9PSB0YXJnZXRDaGlsZCkKKyAgICAgICAgICAgIHx8IChj
aGlsZC0+aXNSZW1vdGVGcmFtZSgpICYmIGNoaWxkLT5yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVu
dCgpID09IHRhcmdldENoaWxkKSkgewogICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgIH0K
ICAgICB9CiAgICAgcmV0dXJuIE5TTm90Rm91bmQ7CiB9CkBAIC0zNzQwLDcgKzM3OTEsNyBAQCBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIGlmIChbYXR0cmlidXRlIGlz
RXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZV0pIHsKICAgICAg
ICAgLy8gVHJlZSBpdGVtcyBvYmplY3QgcmV0dXJucyBhIGRpZmZlcmVudCBzZXQgb2YgY2hpbGRy
ZW4gdGhhbiB0aG9zZSB0aGF0IGFyZSBpbiBjaGlsZHJlbigpCiAgICAgICAgIC8vIGJlY2F1c2Ug
YW4gQVhPdXRsaW5lICh0aGUgbWFjIHJvbGUgaXMgYmVjb21lcykgaGFzIHNvbWUgb2RkIHN0aXB1
bGF0aW9ucy4KLSAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzVHJlZSgpIHx8IGJhY2tpbmdP
YmplY3QtPmlzVHJlZUl0ZW0oKSkKKyAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzVHJlZSgp
IHx8IGJhY2tpbmdPYmplY3QtPmlzVHJlZUl0ZW0oKSB8fCBiYWNraW5nT2JqZWN0LT5pc1JlbW90
ZUZyYW1lKCkpCiAgICAgICAgICAgICByZXR1cm4gW1tzZWxmIGFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZV0gY291bnRdOwogCiAgICAg
ICAgIGF1dG8gY2hpbGRyZW5TaXplID0gYmFja2luZ09iamVjdC0+Y2hpbGRyZW4oKS5zaXplKCk7
CkBAIC0zNzc2LDE2ICszODI3LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
CiAKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5BdHRyaWJ1dGVdKSB7CiAgICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5jaGlsZHJlbigp
LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgTlNBcnJheSAqY2hpbGRyZW4gPSBuaWw7Ci0jaWYg
RU5BQkxFKE1PREVMX0VMRU1FTlQpCi0gICAgICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNN
b2RlbCgpKSB7Ci0gICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBjcmVhdGVOU0FycmF5KGJhY2tp
bmdPYmplY3QtPm1vZGVsRWxlbWVudENoaWxkcmVuKCksIFtdIChhdXRvJiYgY2hpbGQpIC0+IGlk
IHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkLmdldCgpOwotICAgICAgICAgICAg
ICAgIH0pLmF1dG9yZWxlYXNlKCk7Ci0gICAgICAgICAgICB9IGVsc2UKLSNlbmRpZgotICAgICAg
ICAgICAgICAgIGNoaWxkcmVuID0gW3NlbGYgcmVuZGVyV2lkZ2V0Q2hpbGRyZW5dOwotICAgICAg
ICAgICAgCisgICAgICAgICAgICBOU0FycmF5ICpjaGlsZHJlbiA9IFtzZWxmIF90cmFuc2Zvcm1T
cGVjaWFsQ2hpbGRyZW5DYXNlczpiYWNraW5nT2JqZWN0XTsKICAgICAgICAgICAgIGlmICghY2hp
bGRyZW4pCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMzgxNiw4ICszODU4LDEz
IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAgICAgICAgICAgICAvLyBU
aGUgYXR0YWNobWVudCB2aWV3IHNob3VsZCBiZSByZXR1cm5lZCwgb3RoZXJ3aXNlIEFYIHBhbGlu
ZHJvbWUgZXJyb3JzIG9jY3VyLgogICAgICAgICAgICAgaWQgYXR0YWNobWVudFZpZXcgPSBuaWw7
Ci0gICAgICAgICAgICBpZiAoW3dyYXBwZXIgaXNLaW5kT2ZDbGFzczpbV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIgY2xhc3NdXSAmJiB3cmFwcGVyLmF4QmFja2luZ09iamVjdCAmJiB3cmFw
cGVyLmF4QmFja2luZ09iamVjdC0+aXNBdHRhY2htZW50KCkpCi0gICAgICAgICAgICAgICAgYXR0
YWNobWVudFZpZXcgPSBbd3JhcHBlciBhdHRhY2htZW50Vmlld107CisgICAgICAgICAgICBpZiAo
W3dyYXBwZXIgaXNLaW5kT2ZDbGFzczpbV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgY2xh
c3NdXSAmJiB3cmFwcGVyLmF4QmFja2luZ09iamVjdCkgeworICAgICAgICAgICAgICAgIGlmICh3
cmFwcGVyLmF4QmFja2luZ09iamVjdC0+aXNBdHRhY2htZW50KCkpCisgICAgICAgICAgICAgICAg
ICAgIGF0dGFjaG1lbnRWaWV3ID0gW3dyYXBwZXIgYXR0YWNobWVudFZpZXddOworICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKHdyYXBwZXIuYXhCYWNraW5nT2JqZWN0LT5pc1JlbW90ZUZyYW1lKCkp
CisgICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRWaWV3ID0gd3JhcHBlci5heEJhY2tpbmdP
YmplY3QtPnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkuZ2V0KCk7CisgICAgICAgICAgICB9
CisKICAgICAgICAgICAgIFtzdWJhcnJheSBhZGRPYmplY3Q6YXR0YWNobWVudFZpZXcgPyBhdHRh
Y2htZW50VmlldyA6IHdyYXBwZXJdOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5jcHAKaW5kZXggMjU4YzE0Yjg2YThiLi41NzE3YWRlMmE0NTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0xMDg1LDYgKzEwODUsMTEgQEAgUmVt
b3RlQVhPYmplY3RSZWYgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6YWNjZXNzaWJpbGl0eVJlbW90
ZU9iamVjdCgpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK0ludFBvaW50IEVtcHR5RnJhbWVM
b2FkZXJDbGllbnQ6OmFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCgpCit7CisgICAgcmV0
dXJuIHsgfTsKK30KKwogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiB2
b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnNldEFYSXNvbGF0ZWRUcmVlUm9vdChXZWJDb3Jl
OjpBWENvcmVPYmplY3QqKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5RnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1l
TG9hZGVyQ2xpZW50LmgKaW5kZXggMDk4Y2U1OGQxMTE5Li40NjcyZGUyOTg1MzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTg0LDYg
KzE4NCw3IEBAIHByaXZhdGU6CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZW1vdGVBWE9i
amVjdFJlZiBhY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkgZmluYWw7CisgICAgSW50UG9pbnQg
YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCkgZmluYWw7CiAjaWYgRU5BQkxFKEFDQ0VT
U0lCSUxJVFlfSVNPTEFURURfVFJFRSkKICAgICB2b2lkIHNldEFYSXNvbGF0ZWRUcmVlUm9vdChX
ZWJDb3JlOjpBWENvcmVPYmplY3QqKSBmaW5hbDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0xvY2FsRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Mb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggYjJkNTZmMDUwYWU5Li4wMGQz
YWQ1ZTJjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2NhbEZyYW1lTG9h
ZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvY2FsRnJhbWVMb2FkZXJD
bGllbnQuaApAQCAtMjkwLDYgKzI5MCw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICAvLyBBbGxvdyBhbiBhY2Nlc3NpYmlsaXR5IG9iamVjdCB0byByZXRyaWV2ZSBhIEZyYW1l
IHBhcmVudCBpZiB0aGVyZSdzIG5vIFBsYXRmb3JtV2lkZ2V0LgogICAgIHZpcnR1YWwgUmVtb3Rl
QVhPYmplY3RSZWYgYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpID0gMDsKKyAgICB2aXJ0dWFs
IEludFBvaW50IGFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCgpID0gMDsKICNpZiBFTkFC
TEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQogICAgIHZpcnR1YWwgdm9pZCBzZXRBWElz
b2xhdGVkVHJlZVJvb3QoQVhDb3JlT2JqZWN0KikgPSAwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cAppbmRleCA1ZDJmZWFiNjU3OTYuLjg0MjZjOGYzNzBmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBA
IC0yMjA4LDggKzIyMDgsMTUgQEAgYm9vbCBQYWdlOjpzaG91bGRVcGRhdGVBY2Nlc3NpYmlsaXR5
UmVnaW9ucygpIGNvbnN0CiAgICAgQVNTRVJUKG1fbGFzdFJlbmRlcmluZ1VwZGF0ZVRpbWVzdGFt
cCA+PSBtX2xhc3RBY2Nlc3NpYmlsaXR5T2JqZWN0UmVnaW9uc1VwZGF0ZSk7CiAgICAgaWYgKCht
X2xhc3RSZW5kZXJpbmdVcGRhdGVUaW1lc3RhbXAgLSBtX2xhc3RBY2Nlc3NpYmlsaXR5T2JqZWN0
UmVnaW9uc1VwZGF0ZSkgPCB1cGRhdGVJbnRlcnZhbCkgewogICAgICAgICAvLyBXZSd2ZSBhbHJl
YWR5IHVwZGF0ZWQgYWNjZXNzaWJpbGl0eSBvYmplY3QgcmVjdHMgcmVjZW50bHksIHNvIHNraXAg
dGhpcyB1cGRhdGUgYW5kIHNjaGVkdWxlIGFub3RoZXIgZm9yIGxhdGVyLgotICAgICAgICBhdXRv
KiBsb2NhbE1haW5GcmFtZSA9IGR5bmFtaWNEb3duY2FzdDxMb2NhbEZyYW1lPihtYWluRnJhbWUo
KSk7Ci0gICAgICAgIFJlZlB0ciBtYWluRG9jdW1lbnQgPSBsb2NhbE1haW5GcmFtZSA/IGxvY2Fs
TWFpbkZyYW1lLT5kb2N1bWVudCgpIDogbnVsbHB0cjsKKworICAgICAgICBSZWZQdHI8RG9jdW1l
bnQ+IG1haW5Eb2N1bWVudCA9IG51bGxwdHI7CisgICAgICAgIGlmIChhdXRvKiBsb2NhbE1haW5G
cmFtZSA9IGR5bmFtaWNEb3duY2FzdDxMb2NhbEZyYW1lPihtYWluRnJhbWUoKSkpCisgICAgICAg
ICAgICBtYWluRG9jdW1lbnQgPSBsb2NhbE1haW5GcmFtZSA/IGxvY2FsTWFpbkZyYW1lLT5kb2N1
bWVudCgpIDogbnVsbHB0cjsKKyAgICAgICAgZWxzZSBpZiAoYXV0byogcmVtb3RlRnJhbWUgPSBk
eW5hbWljRG93bmNhc3Q8UmVtb3RlRnJhbWU+KG1haW5GcmFtZSgpKSkgeworICAgICAgICAgICAg
aWYgKGF1dG8qIG93bmVyID0gcmVtb3RlRnJhbWUtPm93bmVyRWxlbWVudCgpKQorICAgICAgICAg
ICAgICAgIG1haW5Eb2N1bWVudCA9ICYob3duZXItPmRvY3VtZW50KCkpOworICAgICAgICB9CisK
ICAgICAgICAgLy8gSWYgYWNjZXNzaWJpbGl0eSBpcyBlbmFibGVkIGFuZCB3ZSBoYXZlIGEgbWFp
biBkb2N1bWVudCwgdGhhdCBkb2N1bWVudCBzaG91bGQgaGF2ZSBhbiBBWCBvYmplY3QgY2FjaGUu
CiAgICAgICAgIEFTU0VSVCghbWFpbkRvY3VtZW50IHx8IG1haW5Eb2N1bWVudC0+ZXhpc3RpbmdB
WE9iamVjdENhY2hlKCkpOwogICAgICAgICBpZiAoQ2hlY2tlZFB0ciB0b3BBeE9iamVjdENhY2hl
ID0gbWFpbkRvY3VtZW50ID8gbWFpbkRvY3VtZW50LT5leGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSA6
IG51bGxwdHIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuY3BwCmluZGV4IDcxMmMwYjIyMGZk
MC4uNTBiMGEyNWNmZGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZy
YW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmNwcApAQCAtMTAw
LDYgKzEwMCwyMSBAQCB2b2lkIFJlbW90ZUZyYW1lOjpicm9hZGNhc3RGcmFtZVJlbW92YWxUb090
aGVyUHJvY2Vzc2VzKCkKICAgICBtX2NsaWVudC0+YnJvYWRjYXN0RnJhbWVSZW1vdmFsVG9PdGhl
clByb2Nlc3NlcygpOwogfQogCit2b2lkIFJlbW90ZUZyYW1lOjp1cGRhdGVSZW1vdGVGcmFtZUFj
Y2Vzc2liaWxpdHlPZmZzZXQoSW50UG9pbnQgb2Zmc2V0KQoreworICAgIG1fY2xpZW50LT51cGRh
dGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQoZnJhbWVJRCgpLCBvZmZzZXQpOworfQor
Cit2b2lkIFJlbW90ZUZyYW1lOjp1bmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBw
cm9jZXNzSWRlbnRpZmllcikKK3sKKyAgICBtX2NsaWVudC0+dW5iaW5kUmVtb3RlQWNjZXNzaWJp
bGl0eUZyYW1lcyhwcm9jZXNzSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlRnJhbWU6OmJp
bmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgc3RkOjpz
cGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGFUb2tlbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIGludCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgcmV0dXJuIG1fY2xpZW50LT5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhwcm9j
ZXNzSWRlbnRpZmllciwgZnJhbWVJRCgpLCBkYXRhVG9rZW4sIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKK30KKwogRnJhbWVWaWV3KiBSZW1vdGVGcmFtZTo6dmlydHVhbFZpZXcoKSBjb25z
dAogewogICAgIHJldHVybiBtX3ZpZXcuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1JlbW90ZUZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmgK
aW5kZXggMjdlZDg0MGQwODJlLi5jZDgyYTc5Y2MzMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUmVtb3RlRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZy
YW1lLmgKQEAgLTMzLDYgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBJ
bnRQb2ludDsKIGNsYXNzIFJlbW90ZURPTVdpbmRvdzsKIGNsYXNzIFJlbW90ZUZyYW1lQ2xpZW50
OwogY2xhc3MgUmVtb3RlRnJhbWVWaWV3OwpAQCAtNjIsNiArNjMsOSBAQCBwdWJsaWM6CiAgICAg
TWFya2FibGU8TGF5ZXJIb3N0aW5nQ29udGV4dElkZW50aWZpZXI+IGxheWVySG9zdGluZ0NvbnRl
eHRJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXllckhvc3RpbmdDb250ZXh0SWRlbnRp
ZmllcjsgfQogCiAgICAgU3RyaW5nIHJlbmRlclRyZWVBc1RleHQoc2l6ZV90IGJhc2VJbmRlbnQs
IE9wdGlvblNldDxSZW5kZXJBc1RleHRGbGFnPik7CisgICAgdm9pZCBiaW5kUmVtb3RlQWNjZXNz
aWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIHN0ZDo6c3Bhbjxjb25zdCB1aW50
OF90PiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIGlu
dCk+JiYpOworICAgIHZvaWQgdXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KElu
dFBvaW50KTsKKyAgICB2b2lkIHVuYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50KTsK
IAogcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBSZW1vdGVGcmFtZShQYWdl
JiwgVW5pcXVlUmVmPFJlbW90ZUZyYW1lQ2xpZW50PiYmLCBGcmFtZUlkZW50aWZpZXIsIEhUTUxG
cmFtZU93bmVyRWxlbWVudCosIEZyYW1lKiBwYXJlbnQsIE1hcmthYmxlPExheWVySG9zdGluZ0Nv
bnRleHRJZGVudGlmaWVyPiwgRnJhbWUqIG9wZW5lciA9IG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9SZW1vdGVGcmFtZUNsaWVudC5oCmluZGV4IDRlZmQxMDNmMzkxMi4uNTQxYTBkMDFjNTYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZUNsaWVudC5oCkBAIC0zMCw2ICszMCw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRGF0YVNlZ21lbnQ7CiBjbGFzcyBG
cmFtZUxvYWRSZXF1ZXN0OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luRGF0
YTsKQEAgLTQ4LDYgKzQ5LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHJlbmRlclRy
ZWVBc1RleHQoc2l6ZV90IGJhc2VJbmRlbnQsIE9wdGlvblNldDxSZW5kZXJBc1RleHRGbGFnPikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBicm9hZGNhc3RGcmFtZVJlbW92YWxUb090aGVyUHJvY2Vz
c2VzKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZVBhZ2UoKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmll
ciwgRnJhbWVJZGVudGlmaWVyIHRhcmdldCwgY29uc3Qgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+
IGRhdGFUb2tlbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6OnNwYW48Y29uc3Qg
dWludDhfdD4sIGludCk+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVtb3RlRnJh
bWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KEZyYW1lSWRlbnRpZmllciB0YXJnZXQsIEludFBvaW50KSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHVuYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZvY3VzKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1
bmZvY3VzKCkgPSAwOwogICAgIHZpcnR1YWwgflJlbW90ZUZyYW1lQ2xpZW50KCkgeyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggODRmYzQxOWU1OWNhLi40MmVlZTY2YWIx
NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTQyLDYgKzQyLDcgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdBY3Rpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0
b3JDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvY3VzRGlyZWN0aW9uLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9GcmFtZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lucHV0TW9k
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFDb250cm9sc0NvbnRleHRNZW51SXRlbS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsVHlwZXMuaD4KQEAgLTMxOCw3ICszMTksNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVVbmRvUmVkbyhVbmRvT3JSZWRvKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHdoZWVsRXZlbnRXYXNOb3RIYW5kbGVkQnlXZWJDb3JlKGNvbnN0IE5h
dGl2ZVdlYldoZWVsRXZlbnQmKSA9IDA7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdmlydHVh
bCB2b2lkIGFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChzdGQ6OnNwYW48Y29u
c3QgdWludDhfdD4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzaWJpbGl0eVdlYlByb2Nl
c3NUb2tlblJlY2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBwaWRfdCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBleGVjdXRlU2F2ZWRDb21t
YW5kQnlTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9yKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZVNlY3VyZUlucHV0U3RhdGUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0
U2VjdXJlSW5wdXRTdGF0ZSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1By
b3Zpc2lvbmFsUGFnZVByb3h5LmNwcAppbmRleCAwNTAzMDg2MzkxZmIuLjNlM2I4MTk1ZDA0OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNw
cApAQCAtNTQ1LDcgKzU0NSw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OnJlcXVlc3RQ
YXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QKICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCi12b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpyZWdpc3Rlcldl
YlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEp
Cit2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpyZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmls
aXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEsIEZyYW1lSWRlbnRpZmllcikK
IHsKICAgICBtX2FjY2Vzc2liaWxpdHlUb2tlbiA9IFZlY3RvcihkYXRhKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCmluZGV4IGRlZWNkNzZh
MjAyNC4uZDBiN2VjY2VlZmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
cm92aXNpb25hbFBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zp
c2lvbmFsUGFnZVByb3h5LmgKQEAgLTE3Miw3ICsxNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
cmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJp
bmcmIGZpbGVOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsK
ICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgcmVnaXN0ZXJXZWJQcm9jZXNz
QWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Pik7CisgICAgdm9pZCBy
ZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4
X3Q+LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RL
KSB8fCBQTEFURk9STShXUEUpCiAgICAgdm9pZCBiaW5kQWNjZXNzaWJpbGl0eVRyZWUoY29uc3Qg
U3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCmluZGV4
IGYyZmM4YTU0ZDg4My4uMjMwMzA3YTE3NGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJGcmFtZVByb3h5LmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VQcm94
eS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFz
dGVib2FyZFByb3h5LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5j
bHVkZSAiV2Vic2l0ZVBvbGljaWVzRGF0YS5oIgpAQCAtMTg0LDYgKzE4NSwxNCBAQCB2b2lkIFdl
YkZyYW1lUHJveHk6Om5hdmlnYXRlU2VydmljZVdvcmtlckNsaWVudChXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0SQogICAgIH0pOwogfQogCit2b2lkIFdlYkZyYW1lUHJveHk6OmJpbmRB
Y2Nlc3NpYmlsaXR5RnJhbWVXaXRoRGF0YShzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSkK
K3sKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpCaW5kQWNjZXNzaWJpbGl0eUZyYW1lV2l0aERhdGEobV9m
cmFtZUlELCBkYXRhKSk7Cit9CisKIHZvaWQgV2ViRnJhbWVQcm94eTo6bG9hZFVSTChjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKIHsKICAgICBpZiAoIW1fcGFnZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaAppbmRleCBiMGRhZWIwZTY0ZmMuLjcx
NWJiODBiYWI2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaApAQCAt
MTcwLDYgKzE3MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW90ZVByb2Nlc3NEaWRUZXJtaW5h
dGUoKTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiB3ZWJQYWdl
SURJbkN1cnJlbnRQcm9jZXNzKCk7CiAgICAgdm9pZCBub3RpZnlQYXJlbnRPZkxvYWRDb21wbGV0
aW9uKFdlYlByb2Nlc3NQcm94eSYpOworICAgIHZvaWQgcmVtb3ZlUmVtb3RlUGFnZXNGb3JTdXNw
ZW5zaW9uKCk7CisgICAgdm9pZCBiaW5kQWNjZXNzaWJpbGl0eUZyYW1lV2l0aERhdGEoc3RkOjpz
cGFuPGNvbnN0IHVpbnQ4X3Q+KTsKIAogICAgIGJvb2wgaXNGb2N1c2VkKCkgY29uc3Q7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDQ2YzIxNDNhOTRhYi4u
ZjM3MTFlODU3MjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
QEAgLTEyOTUsOCArMTI5NSwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3dhcFRvUHJvdmlzaW9u
YWxQYWdlKHN0ZDo6dW5pcXVlX3B0cjxQcm92aXNpb25hbFBhZ2VQcm94eT4gcAogCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgYXV0byBhY2Nlc3NpYmlsaXR5VG9rZW4gPSBwcm92aXNpb25hbFBh
Z2UtPnRha2VBY2Nlc3NpYmlsaXR5VG9rZW4oKTsKLSAgICBpZiAoIWFjY2Vzc2liaWxpdHlUb2tl
bi5pc0VtcHR5KCkpCi0gICAgICAgIHJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tl
bih7IGFjY2Vzc2liaWxpdHlUb2tlbi5kYXRhKCksIGFjY2Vzc2liaWxpdHlUb2tlbi5zaXplKCkg
fSk7CisgICAgaWYgKCFhY2Nlc3NpYmlsaXR5VG9rZW4uaXNFbXB0eSgpKSB7CisgICAgICAgIHJl
Z2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbih7IGFjY2Vzc2liaWxpdHlUb2tlbi5k
YXRhKCksIGFjY2Vzc2liaWxpdHlUb2tlbi5zaXplKCkgfSwgV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyIHsKKyAgICAgICAgICAgIE9iamVjdElkZW50aWZpZXI8V2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyVHlwZT4oMCksCisgICAgICAgICAgICBPYmplY3RJZGVudGlmaWVyPFdlYkNvcmU6OlByb2Nl
c3NJZGVudGlmaWVyVHlwZT4oMCkKKyAgICAgICAgfSk7CisgICAgfQogI2VuZGlmCiAjaWYgUExB
VEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCiAgICAgYXV0byBhY2Nlc3NpYmlsaXR5UGx1Z0lE
ID0gcHJvdmlzaW9uYWxQYWdlLT5hY2Nlc3NpYmlsaXR5UGx1Z0lEKCk7CkBAIC0xMzc0NCw2ICsx
Mzc0OCwyMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YWRkQ29uc29sZU1lc3NhZ2UoRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIE1lc3NhZ2VTb3VyY2UgbWVzcwogICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgZnJhbWVJRCwgbWVzc2FnZVNvdXJjZSwgbWVzc2Fn
ZUxldmVsLCBtZXNzYWdlLCBjb3JlSWRlbnRpZmllciB9KTsKIH0KIAordm9pZCBXZWJQYWdlUHJv
eHk6OmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IHN0ZDo6c3Bhbjxjb25zdCB1
aW50OF90PiBkYXRhVG9rZW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpzcGFuPGNvbnN0
IHVpbnQ4X3Q+LCBpbnQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8gc2VuZFJl
c3VsdCA9IHNlbmRTeW5jVG9Qcm9jZXNzQ29udGFpbmluZ0ZyYW1lKGZyYW1lSUQsIE1lc3NhZ2Vz
OjpXZWJQYWdlOjpCaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhwcm9jZXNzSWRlbnRpZmll
ciwgZnJhbWVJRCwgZGF0YVRva2VuKSk7CisgICAgaWYgKCFzZW5kUmVzdWx0LnN1Y2NlZWRlZCgp
KQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9LCAwKTsKKworICAgIGF1dG8g
W2ZyYW1lRGF0YVRva2VuLCBmcmFtZVByb2Nlc3NJZGVudGlmaWVyXSA9IHNlbmRSZXN1bHQudGFr
ZVJlcGx5KCk7CisKKyAgICBjb21wbGV0aW9uSGFuZGxlcihmcmFtZURhdGFUb2tlbiwgZnJhbWVQ
cm9jZXNzSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVSZW1vdGVG
cmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IFdlYkNvcmU6OkludFBvaW50IG9mZnNldCkKK3sKKyAgICBzZW5kVG9Qcm9jZXNzQ29udGFpbmlu
Z0ZyYW1lKGZyYW1lSUQsIE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVSZW1vdGVQYWdlQWNjZXNz
aWJpbGl0eU9mZnNldChmcmFtZUlELCBvZmZzZXQpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CiAKICN1bmRlZiBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0cKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKaW5kZXggY2M4NmRkYzZhNWJmLi43MDM0OGM2ZjY2MWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMzU1LDcgKzEzNTUsNyBAQCBw
dWJsaWM6CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAvLyBDYWxsZWQgYnkgdGhlIHdlYiBw
cm9jZXNzIHRocm91Z2ggYSBtZXNzYWdlLgotICAgIHZvaWQgcmVnaXN0ZXJXZWJQcm9jZXNzQWNj
ZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Pik7CisgICAgdm9pZCByZWdp
c3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIC8vIENhbGxlZCBieSB0aGUgVUkgcHJv
Y2VzcyB3aGVuIGl0IGlzIHJlYWR5IHRvIHNlbmQgaXRzIHRva2VucyB0byB0aGUgd2ViIHByb2Nl
c3MuCiAgICAgdm9pZCByZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoc3RkOjpz
cGFuPGNvbnN0IHVpbnQ4X3Q+IGVsZW1lbnRUb2tlbiwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+
IHdpbmRvd1Rva2VuKTsKICAgICB2b2lkIHJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERh
dGEoY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4p
OwpAQCAtMjk3OCw2ICsyOTc4LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGZvY3VzUmVtb3RlRnJh
bWUoSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lk
IHBvc3RNZXNzYWdlVG9SZW1vdGUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHNvdXJjZSwgY29u
c3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciB0YXJnZXQs
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiB0YXJnZXRPcmlnaW4s
IGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJik7CiAgICAgdm9pZCByZW5k
ZXJUcmVlQXNUZXh0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgc2l6ZV90IGJhc2VJbmRlbnQs
IE9wdGlvblNldDxXZWJDb3JlOjpSZW5kZXJBc1RleHRGbGFnPiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdHJpbmcmJik+JiYpOworICAgIHZvaWQgYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFt
ZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHN0ZDo6
c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhVG9rZW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3Rk
OjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBpbnQpPiYmKTsKKyAgICB2b2lkIHVwZGF0ZVJlbW90ZUZy
YW1lQWNjZXNzaWJpbGl0eU9mZnNldChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6
OkludFBvaW50KTsKIAogICAgIHZvaWQgc2V0VGV4dEluZGljYXRvckZyb21GcmFtZShXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhJiYsIHVpbnQ2NF90
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCmluZGV4IDQ5Mzg2MjZiZjhhMi4uYTU0MmYxNzZiNTlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zMjQsNyArMzI0LDcg
QEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBFeGVjdXRlU2F2ZWRDb21tYW5kQnlT
ZWxlY3RvcihTdHJpbmcgc2VsZWN0b3IpIC0+IChib29sIGhhbmRsZWQpIFN5bmNocm9ub3VzCiAK
ICAgICAjIFJlbW90ZSBhY2Nlc3NpYmlsaXR5IG1lc3NhZ2VzCi0gICAgUmVnaXN0ZXJXZWJQcm9j
ZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhKQorICAg
IFJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWlu
dDhfdD4gZGF0YSwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCiAKICAgICAjIFNw
ZWVjaCBtZXNzYWdlcwogICAgIEdldElzU3BlYWtpbmcoKSAtPiAoYm9vbCBpc1NwZWFraW5nKSBT
eW5jaHJvbm91cwpAQCAtNjMwLDQgKzYzMCw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7
CiAgICAgRm9jdXNSZW1vdGVGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkK
ICAgICBQb3N0TWVzc2FnZVRvUmVtb3RlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBzb3VyY2Us
IFN0cmluZyBzb3VyY2VPcmlnaW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciB0YXJnZXQsIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiB0YXJnZXRPcmlnaW4sIHN0
cnVjdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBtZXNzYWdlKQogICAgIFJlbmRl
clRyZWVBc1RleHQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGlkZW50aWZpZXIsIHNpemVfdCBi
YXNlSW5kZW50LCBPcHRpb25TZXQ8V2ViQ29yZTo6UmVuZGVyQXNUZXh0RmxhZz4gYmVoYXZpb3Ip
IC0+IChTdHJpbmcgcmVuZGVyVHJlZUR1bXApIFN5bmNocm9ub3VzCisgICAgQmluZFJlbW90ZUFj
Y2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGFUb2tlbikgLT4g
KHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiB0b2tlbiwgaW50IHByb2Nlc3NJZGVudGlmaWVyKSBT
eW5jaHJvbm91cworICAgIFVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6SW50UG9pbnQgb2Zmc2V0KQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBs
SU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaApp
bmRleCAxMGM0ZjZhZTEyNTAuLjYzODhjYjQ2NzJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTExMCw3ICsxMTAsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgY2xlYXJBbGxFZGl0Q29tbWFuZHMoKSBvdmVycmlkZTsKICAgICBib29s
IGNhblVuZG9SZWRvKFVuZG9PclJlZG8pIG92ZXJyaWRlOwogICAgIHZvaWQgZXhlY3V0ZVVuZG9S
ZWRvKFVuZG9PclJlZG8pIG92ZXJyaWRlOwotICAgIHZvaWQgYWNjZXNzaWJpbGl0eVdlYlByb2Nl
c3NUb2tlblJlY2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Pikgb3ZlcnJpZGU7CisgICAg
dm9pZCBhY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0
IHVpbnQ4X3Q+LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHBpZF90KSBvdmVycmlkZTsKICAg
ICBib29sIGV4ZWN1dGVTYXZlZENvbW1hbmRCeVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0
b3IpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlU2VjdXJlSW5wdXRTdGF0ZSgpIG92ZXJyaWRl
OwogICAgIHZvaWQgcmVzZXRTZWN1cmVJbnB1dFN0YXRlKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggY2IyM2Y0
OTc0YTZiLi5iNWFkZGRjZTIzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTM4OSw3ICszODksNyBAQCB2b2lkIFBhZ2VDbGll
bnRJbXBsOjpleGVjdXRlVW5kb1JlZG8oVW5kb09yUmVkbyB1bmRvT3JSZWRvKQogICAgIHJldHVy
biAodW5kb09yUmVkbyA9PSBVbmRvT3JSZWRvOjpVbmRvKSA/IFtbY29udGVudFZpZXcoKSB1bmRv
TWFuYWdlcl0gdW5kb10gOiBbW2NvbnRlbnRWaWV3KCkgdW5kb01hbmFnZXJdIHJlZG9dOwogfQog
Ci12b2lkIFBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2
ZWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjph
Y2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4
X3Q+IGRhdGEsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgcGlkX3QpCiB7CiAgICAgTlNEYXRh
ICpyZW1vdGVUb2tlbiA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczpkYXRhLmRhdGEoKSBsZW5ndGg6
ZGF0YS5zaXplKCldOwogICAgIFtjb250ZW50VmlldygpIF9zZXRBY2Nlc3NpYmlsaXR5V2ViUHJv
Y2Vzc1Rva2VuOnJlbW90ZVRva2VuXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDViMTBmNTljNjY2MS4uMDQ3M2M3OGZjYzFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTc2
Myw5ICs3NjMsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U21hcnRJbnNlcnREZWxldGVFbmFi
bGVkKGJvb2wpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6
OnJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWlu
dDhfdD4gZGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3Np
YmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEsIEZyYW1lSWRlbnRpZmll
ciBmcmFtZUlEKQogewotICAgIHByb3RlY3RlZFBhZ2VDbGllbnQoKS0+YWNjZXNzaWJpbGl0eVdl
YlByb2Nlc3NUb2tlblJlY2VpdmVkKGRhdGEpOworICAgIHBhZ2VDbGllbnQoKS5hY2Nlc3NpYmls
aXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoZGF0YSwgZnJhbWVJRCk7CiB9ICAgIAogCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKaW5kZXgg
ZmI2YzYwNzg2N2FmLi5iZjhkYTQzMGQ4YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCkBAIC0xNzYsNyArMTc2LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGdlc3R1cmVFdmVudFdhc05vdEhhbmRsZWRCeVdlYkNvcmUoY29uc3QgTmF0aXZl
V2ViR2VzdHVyZUV2ZW50Jikgb3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIHZvaWQgYWNjZXNzaWJp
bGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Pikgb3Zl
cnJpZGU7CisgICAgdm9pZCBhY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3Rk
OjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHBpZF90KSBv
dmVycmlkZTsKIAogICAgIHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBhc3Npc3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKCkgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KaW5k
ZXggMDc4MGYxOGRhMWMyLi4wMTUwZWM0NTEyY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KQEAgLTU4MSw5ICs1ODEsOSBAQCB2b2lk
IFBhZ2VDbGllbnRJbXBsOjpzZXRUZXh0SW5kaWNhdG9yQW5pbWF0aW9uUHJvZ3Jlc3MoZmxvYXQg
cHJvZ3Jlc3MpCiAgICAgbV9pbXBsLT5zZXRUZXh0SW5kaWNhdG9yQW5pbWF0aW9uUHJvZ3Jlc3Mo
cHJvZ3Jlc3MpOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5V2ViUHJv
Y2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCit2b2lkIFBh
Z2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpz
cGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBwaWRfdCBwaWQpCiB7Ci0gICAgbV9pbXBsLT5zZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rv
a2VuKFtOU0RhdGEgZGF0YVdpdGhCeXRlczpkYXRhLmRhdGEoKSBsZW5ndGg6ZGF0YS5zaXplKCld
KTsKKyAgICBtX2ltcGwtPnNldEFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW4oW05TRGF0YSBk
YXRhV2l0aEJ5dGVzOmRhdGEuZGF0YSgpIGxlbmd0aDpkYXRhLnNpemUoKV0sIGZyYW1lSUQsIHBp
ZCk7CiB9CiAgICAgCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjplbnRlckFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGxheWVyVHJlZUNvbnRleHQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCBjZmIx
MGZkYmI0MTMuLjg2OTYxN2EyOWQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC0zMDYsMTIgKzMwNiwxMiBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAoY29uc3QgRGljdGlvbmFyeVBvcHVwSW5m
byYgZGljdGlvbgogICAgIHByb3RlY3RlZFBhZ2VDbGllbnQoKS0+ZGlkUGVyZm9ybURpY3Rpb25h
cnlMb29rdXAoZGljdGlvbmFyeVBvcHVwSW5mbyk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpy
ZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4
X3Q+IGRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJp
bGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhLCBGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCkKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVy
bjsKICAgICAKLSAgICBwcm90ZWN0ZWRQYWdlQ2xpZW50KCktPmFjY2Vzc2liaWxpdHlXZWJQcm9j
ZXNzVG9rZW5SZWNlaXZlZChkYXRhKTsKKyAgICBwcm90ZWN0ZWRQYWdlQ2xpZW50KCktPmFjY2Vz
c2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChkYXRhLCBmcmFtZUlELCBtZXNzYWdlU2Vu
ZGVyQ29ubmVjdGlvbigpLT5yZW1vdGVQcm9jZXNzSUQoKSk7CiB9ICAgIAogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6bWFrZUZpcnN0UmVzcG9uZGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1dlYlZpZXdJbXBsLmgKaW5kZXggMDNkZmRhZWUxNTNjLi41YTJlMTI5ZmRjOGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3SW1wbC5oCkBAIC00NDgsNyArNDQ4LDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0SWdub3Jlc01vdXNlRHJhZ2dlZEV2ZW50cyhib29sKTsKICAg
ICBib29sIGlnbm9yZXNNb3VzZURyYWdnZWRFdmVudHMoKSBjb25zdCB7IHJldHVybiBtX2lnbm9y
ZXNNb3VzZURyYWdnZWRFdmVudHM7IH0KIAotICAgIHZvaWQgc2V0QWNjZXNzaWJpbGl0eVdlYlBy
b2Nlc3NUb2tlbihOU0RhdGEgKik7CisgICAgdm9pZCBzZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vz
c1Rva2VuKE5TRGF0YSAqLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHBpZF90KTsKICAgICB2
b2lkIGFjY2Vzc2liaWxpdHlSZWdpc3RlclVJUHJvY2Vzc1Rva2VucygpOwogICAgIHZvaWQgdXBk
YXRlUmVtb3RlQWNjZXNzaWJpbGl0eVJlZ2lzdHJhdGlvbihib29sIHJlZ2lzdGVyUHJvY2Vzcyk7
CiAgICAgaWQgYWNjZXNzaWJpbGl0eUZvY3VzZWRVSUVsZW1lbnQoKTsKQEAgLTkyNyw2ICs5Mjcs
NyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICBib29sIG1fYWxsb3dz
TWFnbmlmaWNhdGlvbiB7IGZhbHNlIH07CiAKICAgICBSZXRhaW5QdHI8TlNBY2Nlc3NpYmlsaXR5
UmVtb3RlVUlFbGVtZW50PiBtX3JlbW90ZUFjY2Vzc2liaWxpdHlDaGlsZDsKKyAgICBSZXRhaW5Q
dHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gbV9yZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVDYWNoZTsK
IAogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZT4gbV9wcm9taXNlZEltYWdlOwogICAgIFN0cmlu
ZyBtX3Byb21pc2VkRmlsZW5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmll
d0ltcGwubW0KaW5kZXggNWJkZTExMTYyNzkwLi5hNGIzMDdkNzZlNzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwubW0KQEAgLTM0ODEsMTAgKzM0ODEsMTIgQEAg
dm9pZCBXZWJWaWV3SW1wbDo6c2V0SWdub3Jlc01vdXNlRHJhZ2dlZEV2ZW50cyhib29sIGlnbm9y
ZXNNb3VzZURyYWdnZWRFdmVudHMpCiAgICAgbV9pZ25vcmVzTW91c2VEcmFnZ2VkRXZlbnRzID0g
aWdub3Jlc01vdXNlRHJhZ2dlZEV2ZW50czsKIH0KIAotdm9pZCBXZWJWaWV3SW1wbDo6c2V0QWNj
ZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlbihOU0RhdGEgKmRhdGEpCit2b2lkIFdlYlZpZXdJbXBs
OjpzZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuKE5TRGF0YSAqZGF0YSwgV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHBpZF90IHBpZCkKIHsKLSAgICBtX3JlbW90ZUFjY2Vz
c2liaWxpdHlDaGlsZCA9IGRhdGEubGVuZ3RoID8gYWRvcHROUyhbW05TQWNjZXNzaWJpbGl0eVJl
bW90ZVVJRWxlbWVudCBhbGxvY10gaW5pdFdpdGhSZW1vdGVUb2tlbjpkYXRhXSkgOiBuaWw7Ci0g
ICAgdXBkYXRlUmVtb3RlQWNjZXNzaWJpbGl0eVJlZ2lzdHJhdGlvbih0cnVlKTsKKyAgICBpZiAo
cGlkID09IG1fcGFnZS0+cHJvY2VzcygpLnByb2Nlc3NJRCgpKSB7CisgICAgICAgIG1fcmVtb3Rl
QWNjZXNzaWJpbGl0eUNoaWxkID0gZGF0YS5sZW5ndGggPyBhZG9wdE5TKFtbTlNBY2Nlc3NpYmls
aXR5UmVtb3RlVUlFbGVtZW50IGFsbG9jXSBpbml0V2l0aFJlbW90ZVRva2VuOmRhdGFdKSA6IG5p
bDsKKyAgICAgICAgdXBkYXRlUmVtb3RlQWNjZXNzaWJpbGl0eVJlZ2lzdHJhdGlvbih0cnVlKTsK
KyAgICB9CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OnVwZGF0ZVJlbW90ZUFjY2Vzc2liaWxpdHlS
ZWdpc3RyYXRpb24oYm9vbCByZWdpc3RlclByb2Nlc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFt
ZUxvYWRlckNsaWVudC5jcHAKaW5kZXggN2QyYTQyNjVmZDVjLi5mM2Y3M2YzNjdlYWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJMb2NhbEZy
YW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTE4MDcsNiArMTgwNywx
MiBAQCB2b2lkIFdlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbERlc3Ryb3lH
bG9iYWxPYmplY3RGb3JET01XaW5kb3dFeHRlbgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
CitXZWJDb3JlOjpJbnRQb2ludCBXZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50OjphY2Nlc3NpYmls
aXR5UmVtb3RlRnJhbWVPZmZzZXQoKQoreworICAgIFJlZlB0ciB3ZWJQYWdlID0gbV9mcmFtZS0+
cGFnZSgpOworICAgIHJldHVybiB3ZWJQYWdlID8gd2ViUGFnZS0+YWNjZXNzaWJpbGl0eVJlbW90
ZUZyYW1lT2Zmc2V0KCkgOiBJbnRQb2ludCgpOworfQorCiBSZW1vdGVBWE9iamVjdFJlZiBXZWJM
b2NhbEZyYW1lTG9hZGVyQ2xpZW50OjphY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkKIHsKICAg
ICBSZWZQdHIgd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFt
ZUxvYWRlckNsaWVudC5oCmluZGV4IDg4YzhjYzVjYjcyZS4uOWYzYjY3ZjBmY2I4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFt
ZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTI0MCw2ICsyNDAsNyBAQCBwcml2
YXRlOgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmVtb3RlQVhPYmplY3RSZWYgYWNjZXNz
aWJpbGl0eVJlbW90ZU9iamVjdCgpIGZpbmFsOworICAgIFdlYkNvcmU6OkludFBvaW50IGFjY2Vz
c2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCgpIGZpbmFsOwogI2lmIEVOQUJMRShBQ0NFU1NJQklM
SVRZX0lTT0xBVEVEX1RSRUUpCiAgICAgdm9pZCBzZXRBWElzb2xhdGVkVHJlZVJvb3QoV2ViQ29y
ZTo6QVhDb3JlT2JqZWN0KikgZmluYWw7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGll
bnQuY3BwCmluZGV4IDhjYmZmMmM5YjhjOS4uYTJmMDk0OGQ0MzEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZW1v
dGVGcmFtZUNsaWVudC5jcHAKQEAgLTk2LDYgKzk2LDM4IEBAIFN0cmluZyBXZWJSZW1vdGVGcmFt
ZUNsaWVudDo6cmVuZGVyVHJlZUFzVGV4dChzaXplX3QgYmFzZUluZGVudCwgT3B0aW9uU2V0PFJl
bmRlCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAordm9pZCBXZWJSZW1vdGVGcmFtZUNsaWVudDo6
dW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIpCit7
CisgICAgLy8gTWFrZSBzdXJlIEFwcEtpdCBzeXN0ZW0ga25vd3MgYWJvdXQgb3VyIHJlbW90ZSBV
SSBwcm9jZXNzIHN0YXR1cyBub3cuCisgICAgaWYgKFJlZlB0ciBwYWdlID0gbV9mcmFtZS0+cGFn
ZSgpKQorICAgICAgICBwYWdlLT5hY2Nlc3NpYmlsaXR5TWFuYWdlUmVtb3RlRWxlbWVudFN0YXR1
cyhmYWxzZSwgcHJvY2Vzc0lkZW50aWZpZXIpOworfQorCit2b2lkIFdlYlJlbW90ZUZyYW1lQ2xp
ZW50Ojp1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OkludFBvaW50IG9mZnNldCkKK3sKKyAgICBpZiAo
UmVmUHRyIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpCisgICAgICAgIHBhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6VXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KGZy
YW1lSUQsIG9mZnNldCkpOworfQorCit2b2lkIFdlYlJlbW90ZUZyYW1lQ2xpZW50OjpiaW5kUmVt
b3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0
YVRva2VuLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Piwg
aW50KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBSZWZQdHIgcGFnZSA9IG1fZnJhbWUt
PnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3Rk
OjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHsgfSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBhdXRvIHNlbmRSZXN1bHQgPSBwYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpCaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhwcm9jZXNzSWRlbnRpZmllciwgZnJh
bWVJRCwgZGF0YVRva2VuKSk7CisgICAgaWYgKCFzZW5kUmVzdWx0LnN1Y2NlZWRlZCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBhdXRvIFtyZXN1bHRUb2tlbiwgcHJvY2Vzc0lkZW50aWZpZXJS
ZXN1bHRdID0gc2VuZFJlc3VsdC50YWtlUmVwbHkoKTsKKworICAgIC8vIE1ha2Ugc3VyZSBBcHBL
aXQgc3lzdGVtIGtub3dzIGFib3V0IG91ciByZW1vdGUgVUkgcHJvY2VzcyBzdGF0dXMgbm93Lgor
ICAgIHBhZ2UtPmFjY2Vzc2liaWxpdHlNYW5hZ2VSZW1vdGVFbGVtZW50U3RhdHVzKHRydWUsIHBy
b2Nlc3NJZGVudGlmaWVyUmVzdWx0KTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHRUb2tl
biwgcHJvY2Vzc0lkZW50aWZpZXJSZXN1bHQpOworfQorCiB2b2lkIFdlYlJlbW90ZUZyYW1lQ2xp
ZW50Ojpicm9hZGNhc3RGcmFtZVJlbW92YWxUb090aGVyUHJvY2Vzc2VzKCkKIHsKICAgICBXZWJG
cmFtZUxvYWRlckNsaWVudDo6YnJvYWRjYXN0RnJhbWVSZW1vdmFsVG9PdGhlclByb2Nlc3Nlcygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlJlbW90ZUZyYW1lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuaAppbmRleCA2MjZlMDVjM2U4OGIuLmM4ODllYjdl
NWZhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlJlbW90ZUZyYW1lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlJlbW90ZUZyYW1lQ2xpZW50LmgKQEAgLTQ4LDYgKzQ4LDEwIEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBwb3N0TWVzc2FnZVRvUmVtb3RlKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciBzb3VyY2UsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIgdGFyZ2V0LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YT4gdGFyZ2V0T3JpZ2luLCBjb25zdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYp
IGZpbmFsOwogICAgIHZvaWQgY2hhbmdlTG9jYXRpb24oV2ViQ29yZTo6RnJhbWVMb2FkUmVxdWVz
dCYmKSBmaW5hbDsKICAgICBTdHJpbmcgcmVuZGVyVHJlZUFzVGV4dChzaXplX3QgYmFzZUluZGVu
dCwgT3B0aW9uU2V0PFdlYkNvcmU6OlJlbmRlckFzVGV4dEZsYWc+KSBmaW5hbDsKKyAgICB2b2lk
IGJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBpbnQpPiYmKSBmaW5hbDsK
KyAgICB2b2lkIHVuYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50KSBmaW5hbDsKKyAg
ICB2b2lkIHVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OkludFBvaW50KSBmaW5hbDsKKwogICAgIHZvaWQgYnJvYWRj
YXN0RnJhbWVSZW1vdmFsVG9PdGhlclByb2Nlc3NlcygpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VQ
YWdlKCkgZmluYWw7CiAgICAgdm9pZCBmb2N1cygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCmluZGV4IGFl
NDNmMWE0Njk4Yi4uMDI0NjQzN2UxMmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCkBAIC03Nyw2ICs3Nyw3IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL1VUSVJlZ2lzdHJ5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VUSVV0
aWxpdGllcy5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oPgor
I2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0FjY2Vzc2liaWxpdHlTUEkuaD4KICNpbXBvcnQgPHBh
bC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vU2Fu
ZGJveFNQSS5oPgogCkBAIC00MDQsMTAgKzQwNSw1MSBAQCB2b2lkIFdlYlBhZ2U6OmNsZWFyRGlj
dGF0aW9uQWx0ZXJuYXRpdmVzKFZlY3RvcjxEaWN0YXRpb25Db250ZXh0PiYmIGNvbnRleHRzKQog
ICAgIH0sIERvY3VtZW50TWFya2VyOjpUeXBlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZXMpOwogfQog
Ci12b2lkIFdlYlBhZ2U6OmFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKFJldGFpblB0
cjxOU0RhdGE+IHJlbW90ZVRva2VuKQordm9pZCBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5VHJhbnNm
ZXJSZW1vdGVUb2tlbihSZXRhaW5QdHI8TlNEYXRhPiByZW1vdGVUb2tlbiwgRnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQpCiB7CiAgICAgc3RkOjpzcGFuIGRhdGFUb2tlbihyZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihbcmVtb3RlVG9rZW4gYnl0ZXNdKSwgW3JlbW90ZVRva2VuIGxlbmd0
aF0pOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJXZWJQcm9jZXNz
QWNjZXNzaWJpbGl0eVRva2VuKGRhdGFUb2tlbikpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6UmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKGRhdGFUb2tlbiwg
ZnJhbWVJRCkpOworfQorCit2b2lkIFdlYlBhZ2U6OmFjY2Vzc2liaWxpdHlNYW5hZ2VSZW1vdGVF
bGVtZW50U3RhdHVzKGJvb2wgcmVnaXN0ZXJTdGF0dXMsIGludCBwcm9jZXNzSWRlbnRpZmllcikK
K3sKKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKHJlZ2lzdGVyU3RhdHVzKQorICAgICAgICBb
TlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlFbGVtZW50IHJlZ2lzdGVyUmVtb3RlVUlQcm9jZXNzSWRl
bnRpZmllcjpwcm9jZXNzSWRlbnRpZmllcl07CisgICAgZWxzZQorICAgICAgICBbTlNBY2Nlc3Np
YmlsaXR5UmVtb3RlVUlFbGVtZW50IHVucmVnaXN0ZXJSZW1vdGVVSVByb2Nlc3NJZGVudGlmaWVy
OnByb2Nlc3NJZGVudGlmaWVyXTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHJlZ2lzdGVyU3Rh
dHVzKTsKKyAgICBVTlVTRURfUEFSQU0ocHJvY2Vzc0lkZW50aWZpZXIpOworI2VuZGlmCit9CisK
K3ZvaWQgV2ViUGFnZTo6YmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RkOjpzcGFuPGNv
bnN0IHVpbnQ4X3Q+IGRhdGFUb2tlbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6OnNwYW48
Y29uc3QgdWludDhfdD4sIGludCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgUmVmUHRy
IHdlYkZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCk7Cisg
ICAgaWYgKCF3ZWJGcmFtZSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgMCk7CisgICAgfQorCisgICAgUmVmUHRy
IGNvcmVMb2NhbEZyYW1lID0gd2ViRnJhbWUtPmNvcmVMb2NhbEZyYW1lKCk7CisgICAgaWYgKCFj
b3JlTG9jYWxGcmFtZSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgMCk7CisgICAgfQorCisgICAgYXV0byogcmVu
ZGVyZXIgPSBjb3JlTG9jYWxGcmFtZS0+Y29udGVudFJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5k
ZXJlcikgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSwgMCk7CisgICAgfQorCisgICAgcmVnaXN0ZXJSZW1vdGVGcmFt
ZUFjY2Vzc2liaWxpdHlUb2tlbnMocHJvY2Vzc0lkZW50aWZpZXIsIGRhdGFUb2tlbik7CisKKyAg
ICAvLyBHZXQgb3VyIHJlbW90ZSB0b2tlbiBkYXRhIGFuZCBzZW5kIGJhY2sgdG8gdGhlIFJlbW90
ZUZyYW1lLgorICAgIGF1dG8gcmVtb3RlVG9rZW4gPSBhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5E
YXRhKCk7CisgICAgc3RkOjpzcGFuIHJlbW90ZURhdGFUb2tlbihyZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihbcmVtb3RlVG9rZW4gYnl0ZXNdKSwgW3JlbW90ZVRva2VuIGxlbmd0aF0p
OworICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlbW90ZURhdGFUb2tlbiwgZ2V0cGlkKCkpOwogfQog
CiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAppbmRleCAwOWIzZTdlNTk1NzUuLmVjOGY1MmU0YWM3MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNjcxLDYgKzY3MSwxMCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBjbGVhckhpc3RvcnkoKTsKIAogICAgIHZvaWQgYWNjZXNzaWJpbGl0
eVNldHRpbmdzRGlkQ2hhbmdlKCk7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBhY2Nl
c3NpYmlsaXR5TWFuYWdlUmVtb3RlRWxlbWVudFN0YXR1cyhib29sLCBpbnQpOworI2VuZGlmCisK
ICAgICB2b2lkIHNjcmVlblByb3BlcnRpZXNEaWRDaGFuZ2UoKTsKIAogICAgIHZvaWQgc2NhbGVQ
YWdlKGRvdWJsZSBzY2FsZSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIG9yaWdpbik7CkBAIC0x
MDQzLDcgKzEwNDcsMTEgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQg
cGxhdGZvcm1Jbml0aWFsaXplQWNjZXNzaWJpbGl0eSgpOwogICAgIHZvaWQgcmVnaXN0ZXJVSVBy
b2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBlbGVtZW50
VG9rZW4sIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiB3aW5kb3dUb2tlbik7CisgICAgdm9pZCBy
ZWdpc3RlclJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eVRva2VucyhwaWRfdCwgc3RkOjpzcGFuPGNv
bnN0IHVpbnQ4X3Q+KTsKICAgICBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0KiBhY2Nlc3Np
YmlsaXR5UmVtb3RlT2JqZWN0KCk7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgYWNjZXNzaWJpbGl0
eVJlbW90ZUZyYW1lT2Zmc2V0KCk7CisgICAgdm9pZCBjcmVhdGVNb2NrQWNjZXNzaWJpbGl0eUVs
ZW1lbnQocGlkX3QpOworICAgIHZvaWQgdXBkYXRlUmVtb3RlUGFnZUFjY2Vzc2liaWxpdHlPZmZz
ZXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpJbnRQb2ludCk7CiAjaWYgRU5B
QkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKICAgICB2b2lkIGNhY2hlQVhQb3NpdGlv
bihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAgICAgdm9pZCBjYWNoZUFYU2l6ZShjb25z
dCBXZWJDb3JlOjpJbnRTaXplJik7CkBAIC0yMDk0LDcgKzIxMDIsNyBAQCBwcml2YXRlOgogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgcmVxdWVzdEFjdGl2ZU5vd1BsYXlpbmdTZXNzaW9u
SW5mbyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wsIFdlYkNvcmU6Ok5vd1BsYXlpbmdJbmZv
JiYpPiYmKTsKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5E
YXRhKCkgY29uc3Q7Ci0gICAgdm9pZCBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tlbihS
ZXRhaW5QdHI8TlNEYXRhPik7CisgICAgdm9pZCBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVU
b2tlbihSZXRhaW5QdHI8TlNEYXRhPiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICNlbmRp
ZgogCiAgICAgdm9pZCBzZXRTaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMoYm9vbCBk
aXNwYXRjaCkgeyBtX3Nob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cyA9IGRpc3BhdGNo
OyB9CkBAIC0yMjA0LDYgKzIyMTIsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZW1vdGVQb3N0
TWVzc2FnZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgc291cmNlLCBjb25zdCBTdHJpbmcmIHNv
dXJjZU9yaWdpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHRhcmdldCwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiYgdGFyZ2V0T3JpZ2luLCBjb25zdCBXZWJD
b3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYpOwogICAgIHZvaWQgcmVuZGVyVHJlZUFzVGV4
dChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHNpemVfdCBiYXNlSW5kZW50LCBPcHRpb25TZXQ8
V2ViQ29yZTo6UmVuZGVyQXNUZXh0RmxhZz4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5n
JiYpPiYmKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIGJpbmRSZW1vdGVBY2Nlc3Np
YmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3Rk
OjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBpbnQpPiYmKTsKKyNlbmRpZgogCiAgICAgdm9pZCByZXF1
ZXN0VGV4dEV4dHJhY3Rpb24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+JiYgY29s
bGVjdGlvblJlY3RJblJvb3RWaWV3LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlRl
eHRFeHRyYWN0aW9uOjpJdGVtJiYpPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggZWQ5YzAxYWJkMTVmLi44
MTdkZWNkNmRjZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNDkyLDYgKzQ5Miw5IEBAIEdlbmVyYXRlU3ludGhl
dGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0Nv
bW1hbmRUeXBlCiAgICAgV2luZG93QW5kVmlld0ZyYW1lc0NoYW5nZWQoc3RydWN0IFdlYktpdDo6
Vmlld1dpbmRvd0Nvb3JkaW5hdGVzIGNvb3JkaW5hdGVzKQogICAgIFNldE1haW5GcmFtZUlzU2Ny
b2xsYWJsZShib29sIGlzU2Nyb2xsYWJsZSkKICAgICBSZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2li
aWxpdHlUb2tlbnMoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGVsZW1lbnRUb2tlbiwgc3RkOjpz
cGFuPGNvbnN0IHVpbnQ4X3Q+IHdpbmRvd1Rva2VuKQorICAgIEJpbmRSZW1vdGVBY2Nlc3NpYmls
aXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhVG9rZW4pIC0+IChzdGQ6OnNw
YW48Y29uc3QgdWludDhfdD4gdG9rZW4sIGludCBwcm9jZXNzSWRlbnRpZmllcikgU3luY2hyb25v
dXMKKyAgICBVcGRhdGVSZW1vdGVQYWdlQWNjZXNzaWJpbGl0eU9mZnNldChXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6SW50UG9pbnQgb2Zmc2V0KTsKKwogICAgIEdl
dFN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKSAtPiAoU3RyaW5nIHN0cmluZ1ZhbHVlKSBT
eW5jaHJvbm91cwogICAgIEdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFN0cmluZyBwYXN0
ZWJvYXJkVHlwZSkgLT4gKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlcikgU3lu
Y2hyb25vdXMKICAgICBSZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoU3RyaW5nIHBhc3RlYm9h
cmROYW1lKSAtPiAoYm9vbCByZXN1bHQpIFN5bmNocm9ub3VzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IGE3ZmQ3MjMxMjdj
MC4uMTBkOTg4YTM1YzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMjQzLDEyICsyNDMsMTQgQEAgdm9pZCBXZWJQYWdl
OjpwbGF0Zm9ybUluaXRpYWxpemVBY2Nlc3NpYmlsaXR5KCkKICAgICBtX21vY2tBY2Nlc3NpYmls
aXR5RWxlbWVudCA9IGFkb3B0TlMoW1tXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0IGFsbG9j
XSBpbml0XSk7CiAgICAgW21fbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50IHNldFdlYlBhZ2U6dGhp
c107CiAKLSAgICBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tlbihhY2Nlc3NpYmlsaXR5
UmVtb3RlVG9rZW5EYXRhKCkpOworICAgIFJlZiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9s
bGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgYWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVt
b3RlVG9rZW4oYWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0YSgpLCBmcmFtZS5mcmFtZUlEKCkp
OwogfQogCiB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtUmVpbml0aWFsaXplKCkKIHsKLSAgICBhY2Nl
c3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tlbihhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRh
KCkpOworICAgIFJlZiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9y
TWFpbkZyYW1lKCk7CisgICAgYWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oYWNjZXNz
aWJpbGl0eVJlbW90ZVRva2VuRGF0YSgpLCBmcmFtZS5mcmFtZUlEKCkpOwogfQogCiBSZXRhaW5Q
dHI8TlNEYXRhPiBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCkgY29uc3QK
QEAgLTY2Miw2ICs2NjQsMTIgQEAgdm9pZCBXZWJQYWdlOjpnZXREYXRhU2VsZWN0aW9uRm9yUGFz
dGVib2FyZChjb25zdCBTdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQKICAgICBjb21wbGV0
aW9uSGFuZGxlcih7IH0pOwogfQogCitXZWJDb3JlOjpJbnRQb2ludCBXZWJQYWdlOjphY2Nlc3Np
YmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIHsgfTsKK30KKwogV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdCogV2ViUGFnZTo6
YWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2li
aWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmgKaW5kZXggMzllOTBlM2M4
OTVlLi40OTcwMDcwYTQ1NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2Jq
ZWN0QmFzZS5oCkBAIC00NSw2ICs0NSw4IEBAIGNsYXNzIEFYQ29yZU9iamVjdDsKICAgICBXZWJD
b3JlOjpJbnRTaXplIG1fc2l6ZSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fY2FjaGVMb2NrKTsKICAg
ICBUaHJlYWRTYWZlV2Vha1B0cjxXZWJDb3JlOjpBWENvcmVPYmplY3Q+IG1faXNvbGF0ZWRUcmVl
Um9vdDsKICNlbmRpZgorCisgICAgV2ViQ29yZTo6SW50UG9pbnQgbV9yZW1vdGVGcmFtZU9mZnNl
dDsKICAgICBSZXRhaW5QdHI8aWQ+IG1fcGFyZW50OwogICAgIGJvb2wgbV9oYXNNYWluRnJhbWVQ
bHVnaW47CiB9CkBAIC01Niw5ICs1OCwxMSBAQCBjbGFzcyBBWENvcmVPYmplY3Q7CiAtICh2b2lk
KXNldElzb2xhdGVkVHJlZVJvb3Q6KE5ha2VkUHRyPFdlYkNvcmU6OkFYQ29yZU9iamVjdD4pcm9v
dDsKICNlbmRpZgogLSAodm9pZClzZXRSZW1vdGVQYXJlbnQ6KGlkKXBhcmVudDsKKy0gKHZvaWQp
c2V0UmVtb3RlRnJhbWVPZmZzZXQ6KFdlYkNvcmU6OkludFBvaW50KW9mZnNldDsKIC0gKHZvaWQp
c2V0SGFzTWFpbkZyYW1lUGx1Z2luOihib29sKWhhc1BsdWdpbjsKIAogLSAoaWQpYWNjZXNzaWJp
bGl0eVJvb3RPYmplY3RXcmFwcGVyOwogLSAoaWQpYWNjZXNzaWJpbGl0eUZvY3VzZWRVSUVsZW1l
bnQ7CistIChXZWJDb3JlOjpJbnRQb2ludClhY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQ7
CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbQpp
bmRleCA2Zjk5NTQ1YWViZjUuLmJlYzhkNzNmYWEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2li
aWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbQpAQCAtMzYsOSArMzYsMTEgQEAKICNpbXBvcnQgIldL
U3RyaW5nQ0YuaCIKICNpbXBvcnQgPFdlYkNvcmUvQVhPYmplY3RDYWNoZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9Eb2N1bWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVRyZWUuaD4KICNpbXBv
cnQgPFdlYkNvcmUvTG9jYWxGcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbEZyYW1lVmll
dy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1JlbW90ZUZy
YW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbFZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUv
U2Nyb2xsYmFyLmg+CiAKQEAgLTU3LDExICs1OSwxNyBAQCBuYW1lc3BhY2UgYXggPSBXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5OwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBhdXRvKiBsb2NhbE1haW5GcmFtZSA9IGR5bmFtaWNEb3duY2FzdDxXZWJDb3JlOjpM
b2NhbEZyYW1lPihwYWdlLT5tYWluRnJhbWUoKSk7Ci0gICAgaWYgKCFsb2NhbE1haW5GcmFtZSB8
fCAhbG9jYWxNYWluRnJhbWUtPmRvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIGlmIChhdXRvKiBsb2NhbE1haW5GcmFtZSA9IGR5bmFtaWNEb3duY2FzdDxXZWJDb3JlOjpM
b2NhbEZyYW1lPihwYWdlLT5tYWluRnJhbWUoKSkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGRvY3Vt
ZW50ID0gbG9jYWxNYWluRnJhbWUtPmRvY3VtZW50KCkpCisgICAgICAgICAgICByZXR1cm4gZG9j
dW1lbnQtPmF4T2JqZWN0Q2FjaGUoKTsKKyAgICB9IGVsc2UgaWYgKGF1dG8qIHJlbW90ZU1haW5G
cmFtZSA9IGR5bmFtaWNEb3duY2FzdDxXZWJDb3JlOjpSZW1vdGVGcmFtZT4ocGFnZS0+bWFpbkZy
YW1lKCkpKSB7CisgICAgICAgIGF1dG8mIHRyZWUgPSByZW1vdGVNYWluRnJhbWUtPnRyZWUoKTsK
KyAgICAgICAgYXV0byogZmlyc3RGcmFtZSA9IGR5bmFtaWNEb3duY2FzdDxXZWJDb3JlOjpMb2Nh
bEZyYW1lPih0cmVlLmZpcnN0Q2hpbGQoKSk7CisgICAgICAgIGF1dG8qIGRvY3VtZW50ID0gZmly
c3RGcmFtZSA/IGZpcnN0RnJhbWUtPmRvY3VtZW50KCkgOiBudWxscHRyOworICAgICAgICByZXR1
cm4gZG9jdW1lbnQgPyBkb2N1bWVudC0+YXhPYmplY3RDYWNoZSgpIDogbnVsbHB0cjsKKyAgICB9
CiAKLSAgICByZXR1cm4gbG9jYWxNYWluRnJhbWUtPmRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUo
KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogLSAoaWQpYWNjZXNzaWJpbGl0eVBsdWdpbk9i
amVjdApAQCAtMTUyLDYgKzE2MCwxNyBAQCBuYW1lc3BhY2UgYXggPSBXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5OwogICAgIG1faGFzTWFpbkZyYW1lUGx1Z2luID0gaGFzUGx1Z2luOwogfQogCistICh2
b2lkKXNldFJlbW90ZUZyYW1lT2Zmc2V0OihXZWJDb3JlOjpJbnRQb2ludClvZmZzZXQKK3sKKyAg
ICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKKyAgICBtX3JlbW90ZUZyYW1lT2Zmc2V0ID0gb2Zm
c2V0OworfQorCistIChXZWJDb3JlOjpJbnRQb2ludClhY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVP
ZmZzZXQKK3sKKyAgICByZXR1cm4gbV9yZW1vdGVGcmFtZU9mZnNldDsKK30KKwogLSAodm9pZClz
ZXRSZW1vdGVQYXJlbnQ6KGlkKXBhcmVudAogewogICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1h
Yy5tbQppbmRleCA5NmVkNjRhZGJjZmYuLjVmOWI4ODBjODBiZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTEyMywxNiAr
MTIzLDEyIEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplQWNjZXNzaWJpbGl0eSgp
CiAgICAgLy8gQ3VycmVudGx5LCBpdCBpcyBhbHNvIG5lZWRlZCB0byBhbGxvY2F0ZSBhbmQgaW5p
dGlhbGl6ZSBhbiBOU0FwcGxpY2F0aW9uIG9iamVjdC4KICAgICBbTlNBcHBsaWNhdGlvbiBfYWNj
ZXNzaWJpbGl0eUluaXRpYWxpemVdOwogCi0gICAgYXV0byBtb2NrQWNjZXNzaWJpbGl0eUVsZW1l
bnQgPSBhZG9wdE5TKFtbV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdCBhbGxvY10gaW5pdF0p
OwotCiAgICAgLy8gR2V0IHRoZSBwaWQgZm9yIHRoZSBzdGFydGluZyBwcm9jZXNzLgogICAgIHBp
ZF90IHBpZCA9IFdlYkNvcmU6OnByZXNlbnRpbmdBcHBsaWNhdGlvblBJRCgpOwotICAgIGlmIChb
bW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYWNj
ZXNzaWJpbGl0eVNldFByZXNlbnRlclByb2Nlc3NJZGVudGlmaWVyOildKQotICAgICAgICBbKGlk
KW1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudC5nZXQoKSBhY2Nlc3NpYmlsaXR5U2V0UHJlc2VudGVy
UHJvY2Vzc0lkZW50aWZpZXI6cGlkXTsKLSAgICBbbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50IHNl
dFdlYlBhZ2U6dGhpc107Ci0gICAgbV9tb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgPSBXVEZNb3Zl
KG1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCk7Ci0KLSAgICBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJS
ZW1vdGVUb2tlbihhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCkpOworICAgIGNyZWF0ZU1v
Y2tBY2Nlc3NpYmlsaXR5RWxlbWVudChwaWQpOworICAgIFJlZlB0ciBsb2NhbE1haW5GcmFtZSA9
IGR5bmFtaWNEb3duY2FzdDxMb2NhbEZyYW1lPihtX3BhZ2UtPm1haW5GcmFtZSgpKTsKKyAgICBp
ZiAobG9jYWxNYWluRnJhbWUpCisgICAgICAgIGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRv
a2VuKGFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSwgbG9jYWxNYWluRnJhbWUtPmZyYW1l
SUQoKSk7CiAKICAgICAvLyBDbG9zZSBNYWNoIGNvbm5lY3Rpb24gdG8gTGF1bmNoIFNlcnZpY2Vz
LgogI2lmIEhBVkUoTFNfU0VSVkVSX0NPTk5FQ1RJT05fU1RBVFVTX1JFTEVBU0VfTk9USUZJQ0FU
SU9OU19NQVNLKQpAQCAtMTQ0LDkgKzE0MCwyMCBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtSW5p
dGlhbGl6ZUFjY2Vzc2liaWxpdHkoKQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJldm9r
ZUxhdW5jaFNlcnZpY2VzU2FuZGJveEV4dGVuc2lvbigpOwogfQogCit2b2lkIFdlYlBhZ2U6OmNy
ZWF0ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudChwaWRfdCBwaWQpCit7CisgICAgYXV0byBtb2Nr
QWNjZXNzaWJpbGl0eUVsZW1lbnQgPSBhZG9wdE5TKFtbV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9i
amVjdCBhbGxvY10gaW5pdF0pOworCisgICAgaWYgKFttb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihhY2Nlc3NpYmlsaXR5U2V0UHJlc2VudGVyUHJv
Y2Vzc0lkZW50aWZpZXI6KV0pCisgICAgICAgIFsoaWQpbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50
LmdldCgpIGFjY2Vzc2liaWxpdHlTZXRQcmVzZW50ZXJQcm9jZXNzSWRlbnRpZmllcjpwaWRdOwor
ICAgIFttb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgc2V0V2ViUGFnZTp0aGlzXTsKKyAgICBtX21v
Y2tBY2Nlc3NpYmlsaXR5RWxlbWVudCA9IFdURk1vdmUobW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50
KTsKK30KKwogdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybVJlaW5pdGlhbGl6ZSgpCiB7Ci0gICAgYWNj
ZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oYWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0
YSgpKTsKKyAgICBSZWYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRP
ck1haW5GcmFtZSgpOworICAgIGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKGFjY2Vz
c2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSwgZnJhbWUtPmZyYW1lSUQoKSk7CiB9CiAKIFJldGFp
blB0cjxOU0RhdGE+IFdlYlBhZ2U6OmFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSBjb25z
dApAQCAtNDY5LDEyICs0NzYsMjcgQEAgYm9vbCBXZWJQYWdlOjpwZXJmb3JtTm9uRWRpdGluZ0Jl
aGF2aW9yRm9yU2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgS2V5Ym8KICAgICByZXR1
cm4gZGlkUGVyZm9ybUFjdGlvbjsKIH0KIAordm9pZCBXZWJQYWdlOjp1cGRhdGVSZW1vdGVQYWdl
QWNjZXNzaWJpbGl0eU9mZnNldChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2Vi
Q29yZTo6SW50UG9pbnQgb2Zmc2V0KQoreworICAgIFthY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0
KCkgc2V0UmVtb3RlRnJhbWVPZmZzZXQ6b2Zmc2V0XTsKK30KKwordm9pZCBXZWJQYWdlOjpyZWdp
c3RlclJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eVRva2VucyhwaWRfdCBwaWQsIHN0ZDo6c3Bhbjxj
b25zdCB1aW50OF90PiBlbGVtZW50VG9rZW4pCit7CisgICAgTlNEYXRhICplbGVtZW50VG9rZW5E
YXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmVsZW1lbnRUb2tlbi5kYXRhKCkgbGVuZ3RoOmVs
ZW1lbnRUb2tlbi5zaXplKCldOworICAgIGF1dG8gcmVtb3RlRWxlbWVudCA9IGVsZW1lbnRUb2tl
bkRhdGEubGVuZ3RoID8gYWRvcHROUyhbW05TQWNjZXNzaWJpbGl0eVJlbW90ZVVJRWxlbWVudCBh
bGxvY10gaW5pdFdpdGhSZW1vdGVUb2tlbjplbGVtZW50VG9rZW5EYXRhXSkgOiBuaWw7CisKKyAg
ICBjcmVhdGVNb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQocGlkKTsKKyAgICBbYWNjZXNzaWJpbGl0
eVJlbW90ZU9iamVjdCgpIHNldFJlbW90ZVBhcmVudDpyZW1vdGVFbGVtZW50LmdldCgpXTsKK30K
Kwogdm9pZCBXZWJQYWdlOjpyZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoc3Rk
OjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGVsZW1lbnRUb2tlbiwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4
X3Q+IHdpbmRvd1Rva2VuKQogewogICAgIE5TRGF0YSAqZWxlbWVudFRva2VuRGF0YSA9IFtOU0Rh
dGEgZGF0YVdpdGhCeXRlczplbGVtZW50VG9rZW4uZGF0YSgpIGxlbmd0aDplbGVtZW50VG9rZW4u
c2l6ZSgpXTsKICAgICBOU0RhdGEgKndpbmRvd1Rva2VuRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhC
eXRlczp3aW5kb3dUb2tlbi5kYXRhKCkgbGVuZ3RoOndpbmRvd1Rva2VuLnNpemUoKV07CiAgICAg
YXV0byByZW1vdGVFbGVtZW50ID0gZWxlbWVudFRva2VuRGF0YS5sZW5ndGggPyBhZG9wdE5TKFtb
TlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlFbGVtZW50IGFsbG9jXSBpbml0V2l0aFJlbW90ZVRva2Vu
OmVsZW1lbnRUb2tlbkRhdGFdKSA6IG5pbDsKICAgICBhdXRvIHJlbW90ZVdpbmRvdyA9IHdpbmRv
d1Rva2VuRGF0YS5sZW5ndGggPyBhZG9wdE5TKFtbTlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlFbGVt
ZW50IGFsbG9jXSBpbml0V2l0aFJlbW90ZVRva2VuOndpbmRvd1Rva2VuRGF0YV0pIDogbmlsOwor
CiAgICAgW3JlbW90ZUVsZW1lbnQgc2V0V2luZG93VUlFbGVtZW50OnJlbW90ZVdpbmRvdy5nZXQo
KV07CiAgICAgW3JlbW90ZUVsZW1lbnQgc2V0VG9wTGV2ZWxVSUVsZW1lbnQ6cmVtb3RlV2luZG93
LmdldCgpXTsKIApAQCAtNTE2LDYgKzUzOCwxMSBAQCBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2Jq
ZWN0KiBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkKICAgICByZXR1cm4gbV9t
b2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQuZ2V0KCk7CiB9CiAKK1dlYkNvcmU6OkludFBvaW50IFdl
YlBhZ2U6OmFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCgpCit7CisgICAgcmV0dXJuIFtt
X21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCBhY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXRd
OworfQorCiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKIHZvaWQgV2Vi
UGFnZTo6Y2FjaGVBWFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBvaW50KQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggMDYxNGJjZjdhZjVjLi5i
YTgzNjgwNjQ1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtNjUs
NiArNjUsOSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2NyZWVuUHJvcGVydGllcy5oPgogI2luY2x1
ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAjaW5jbHVkZSA8d3RmL01hY2hTZW5kUmlnaHQuaD4K
KworT0JKQ19DTEFTUyBOU011dGFibGVEaWN0aW9uYXJ5OworCiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKEdUSykKQEAgLTg3LDYgKzkwLDcgQEAKICNpbmNsdWRlICJXZWJTUUxpdGVEYXRhYmFzZVRy
YWNrZXIuaCIKICNlbmRpZgogCisKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgT2JqZWN0OwogfQpA
QCAtNTExLDYgKzUxNSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybVNldENhY2hlTW9k
ZWwoQ2FjaGVNb2RlbCk7CiAKICAgICB2b2lkIHNldEVuaGFuY2VkQWNjZXNzaWJpbGl0eShib29s
KTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIGJpbmRBY2Nlc3NpYmlsaXR5RnJhbWVX
aXRoRGF0YShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90
Pik7CisjZW5kaWYKIAogICAgIHZvaWQgc3RhcnRNZW1vcnlTYW1wbGVyKFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSYmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBkb3VibGUpOwogICAgIHZvaWQgc3Rv
cE1lbW9yeVNhbXBsZXIoKTsKQEAgLTgyNiw2ICs4MzMsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIEhhc2hDb3VudGVkU2V0PFN0cmluZz4gbV9wZW5kaW5nUGFzdGVib2Fy
ZFdyaXRlQ291bnRzOwogICAgIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gbV9hdWRpdFRv
a2VuRm9yU2VsZjsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gbV9hY2Nlc3Np
YmlsaXR5UmVtb3RlRnJhbWVUb2tlbkNhY2hlOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCmluZGV4IDk5YjQwMmFmMTFjYS4uZDc3NWZlN2QzOGQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNjksNiArNjksNyBAQCBt
ZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIE5vdFJlZkNvdW50ZWQgewogICAg
IFNldFRleHRDaGVja2VyU3RhdGUoc3RydWN0IFdlYktpdDo6VGV4dENoZWNrZXJTdGF0ZSB0ZXh0
Q2hlY2tlclN0YXRlKQogCiAgICAgU2V0RW5oYW5jZWRBY2Nlc3NpYmlsaXR5KGJvb2wgZmxhZykK
KyAgICBCaW5kQWNjZXNzaWJpbGl0eUZyYW1lV2l0aERhdGEoV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhKTsKIAogICAgIEdhcmJh
Z2VDb2xsZWN0SmF2YVNjcmlwdE9iamVjdHMoKQogICAgIFNldEphdmFTY3JpcHRHYXJiYWdlQ29s
bGVjdG9yVGltZXJFbmFibGVkKGJvb2wgZW5hYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggYzUzODU3ZmJlMWQ0Li4xMTYw
NmU5NjM5NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
cm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlBy
b2Nlc3NDb2NvYS5tbQpAQCAtMjEzLDYgKzIxMywxNiBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRm
b3JtU2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVsKQogewogfQogCit2b2lkIFdlYlByb2Nlc3M6OmJp
bmRBY2Nlc3NpYmlsaXR5RnJhbWVXaXRoRGF0YShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCit7CisgICAgaWYgKCFtX2FjY2Vz
c2liaWxpdHlSZW1vdGVGcmFtZVRva2VuQ2FjaGUpCisgICAgICAgIG1fYWNjZXNzaWJpbGl0eVJl
bW90ZUZyYW1lVG9rZW5DYWNoZSA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9j
XSBpbml0XSk7CisKKyAgICBhdXRvIGZyYW1lSW50ID0gZnJhbWVJRC5vYmplY3QoKS50b1VJbnQ2
NCgpOworICAgIE5TRGF0YSAqbnNEYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEuZGF0
YSgpIGxlbmd0aDpkYXRhLnNpemUoKV07CisgICAgW21fYWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1l
VG9rZW5DYWNoZSBzZXRPYmplY3Q6bnNEYXRhIGZvcktleTpAKGZyYW1lSW50KV07Cit9CisKIGlk
IFdlYlByb2Nlc3M6OmFjY2Vzc2liaWxpdHlGb2N1c2VkVUlFbGVtZW50KCkKIHsKICAgICBhdXRv
IHJldHJpZXZlRm9jdXNlZFVJRWxlbWVudEZyb21NYWluVGhyZWFkID0gW10gKCkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMjFlMjFmMDhiZDY0Li5iNGNmMjgyYzE4Y2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMjI1LDYgKzIyNSw3IEBAIHByaXZhdGU6CiAjZW5k
aWYKIAogICAgIFJlbW90ZUFYT2JqZWN0UmVmIGFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSBm
aW5hbCB7IHJldHVybiAwOyB9CisgICAgV2ViQ29yZTo6SW50UG9pbnQgYWNjZXNzaWJpbGl0eVJl
bW90ZUZyYW1lT2Zmc2V0KCkgZmluYWwgeyByZXR1cm4geyB9OyB9CiAjaWYgRU5BQkxFKEFDQ0VT
U0lCSUxJVFlfSVNPTEFURURfVFJFRSkKICAgICB2b2lkIHNldEFYSXNvbGF0ZWRUcmVlUm9vdChX
ZWJDb3JlOjpBWENvcmVPYmplY3QqKSBmaW5hbCB7IH0KICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>469907</attachid>
            <date>2024-02-15 17:42:17 -0800</date>
            <delta_ts>2024-02-15 20:37:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-268804-20240215174215.patch</filename>
            <type>text/plain</type>
            <size>117153</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">RnJvbSAyOTJmZWZiMjAyOWQzNWI3Mjk2ZGQ1Y2E5MTMwNmFkMjcxMzgwZTJiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpcyBGbGVpemFjaCA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4K
RGF0ZTogVGh1LCAxNSBGZWIgMjAyNCAxMjo0MDozOCAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIEFY
OiBTdXBwb3J0IHNpdGUgaXNvbGF0aW9uIGZvciBWb2ljZU92ZXIKIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjg4MDQgcmRhcjovLzk5NjY1NTYxCgpSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KCkluaXRpYWwgc3VwcG9ydCBmb3Igc2l0ZSBpc29sYXRpb24gZm9y
IFZvaWNlT3Zlci4KCldoZW4gYSBzY3JvbGwgdmlldyBob3N0cyBhIFJlbW90ZUZyYW1lIGl0IGJp
bmRzIGl0c2VsZiB0byB0aGUgb3RoZXIgc2lkZSB0aHJvdWdoIGEgV2ViUGFnZSBtZXNzYWdlLgpU
aGlzIHRyYW5zZmVycyBkYXRhIHRva2VucyBzbyBBY2Nlc3NpYmlsaXR5IHJlbW90ZSBlbGVtZW50
cyBhcmUgY3JlYXRlZCBhbmQgaG9va2VkIHVwLgoKVGhlIGJvdW5kaW5nIGJveGVzIGluc2lkZSB0
aGUgc3ViIGZyYW1lcyBuZWVkIHRvIGhhdmUgdGhlIGluaXRpYWwgb2Zmc2V0IGFwcGxpZWQgYW5k
IHRoZW4gbmVlZCB0byBiZSBjb252ZXJ0ZWQKZWFjaCBzdGVwIHVwIHRoZSBjaGFpbiB0byBhY2Nv
dW50IGZvciBzY3JvbGwgb2Zmc2V0cyB0aGF0IG9ubHkgZWFjaCBwcm9jZXNzIGtub3dzIGFib3V0
LgoKKiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dDoKKiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWENvcmVPYmplY3QuaDoKKFdlYkNvcmU6OmFjY2Vzc2liaWxpdHlSb2xlVG9TdHJpbmcpOgoo
V2ViQ29yZTo6QVhDb3JlT2JqZWN0Ojppc1JlbW90ZUZyYW1lIGNvbnN0KToKKiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcDoKKFdlYkNvcmU6OnN0cmVhbUFYQ29yZU9i
amVjdCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoK
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmNyZWF0ZSk6CihXZWJDb3JlOjpBWE9iamVjdENhY2hl
OjpvblJlbW90ZUZyYW1lSW5pdGlhbGl6ZWQpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5jcHA6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZWxhdGl2
ZUZyYW1lIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnJlbW90ZUZyYW1l
T2Zmc2V0IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW1vdGVGcmFtZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJh
bWVDbGllbnQuaC4KKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6Y3JlYXRlKToK
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6QWNjZXNzaWJpbGl0eVJlbW90ZUZy
YW1lKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6ZWxlbWVudFJlY3QgY29u
c3QpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbW90ZUZy
YW1lLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVDbGllbnQu
aC4KKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkQXR0YWNobWVu
dENoaWxkcmVuKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENoaWxk
cmVuKToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpkZXRhY2hSZW1vdGVQ
YXJ0cyk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6Y2xlYXJDaGlsZHJlbik6
CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkUmVtb3RlRnJhbWVDaGlsZCk6
CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkQ2hpbGRyZW4pOgooV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OndlYkFyZWFPYmplY3QgY29uc3QpOgooV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmRvY3VtZW50IGNvbnN0KToKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpwYXJlbnRPYmplY3QgY29uc3QpOgoqIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaDoKKiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcDoKKFdl
YkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKFdlYkNvcmU6
OkFYSXNvbGF0ZWRPYmplY3Q6OnNldFByb3BlcnR5KToKKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmpl
Y3Q6OnJlbW90ZUZyYW1lT2Zmc2V0IGNvbnN0KToKKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OnJlbGF0aXZlRnJhbWUgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHA6CihXZWJDb3JlOjpBWElzb2xhdGVk
VHJlZTo6dXBkYXRlTm9kZVByb3BlcnRpZXMpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMubW06CihXZWJDb3Jl
OjpBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplUGxhdGZvcm1Qcm9wZXJ0aWVzKToKKFdlYkNv
cmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50IGNvbnN0KToK
KiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFj
Lm1tOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lOjpnZW5lcmF0ZVJlbW90ZVRv
a2VuIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6aW5pdGlhbGl6
ZVBsYXRmb3JtRWxlbWVudFdpdGhSZW1vdGVUb2tlbik6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
OjpjcmVhdGVQbGF0Zm9ybVJvbGVNYXApOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbToKKG1ha2VOU0FycmF5KToK
KiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgcm9sZV0pOgoo
LVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBpc0VtcHR5R3JvdXBdKToKKC1bV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgcm9sZURlc2NyaXB0aW9uXSk6CigtW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIF90cmFuc2Zvcm1TcGVjaWFsQ2hpbGRyZW5DYXNlczpdKToKKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
Ol0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5SGl0VGVz
dDpdKToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgQUxMT1dfREVQUkVDQVRFRF9J
TVBMRU1FTlRBVElPTlNfRU5EXSk6CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpmb3JQYXJhbWV0ZXI6XSk6CigtW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlJbmRleE9mQ2hpbGQ6XSk6CigtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZUNvdW50
Ol0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXJyYXlB
dHRyaWJ1dGVWYWx1ZXM6aW5kZXg6bWF4Q291bnQ6XSk6CiogU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHA6CihXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjphY2Nl
c3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQpOgoqIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUZyYW1lTG9hZGVyQ2xpZW50Lmg6CiogU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvY2FsRnJhbWVM
b2FkZXJDbGllbnQuaDoKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwOgooV2ViQ29yZTo6
UGFnZTo6c2hvdWxkVXBkYXRlQWNjZXNzaWJpbGl0eVJlZ2lvbnMgY29uc3QpOgoqIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuY3BwOgooV2ViQ29yZTo6UmVtb3RlRnJhbWU6OnVwZGF0
ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldCk6CihXZWJDb3JlOjpSZW1vdGVGcmFtZTo6
dW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyk6CihXZWJDb3JlOjpSZW1vdGVGcmFtZTo6
YmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMpOgoqIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVt
b3RlRnJhbWUuaDoKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lQ2xpZW50Lmg6Ciog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcDoKKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdl
UHJveHk6OnJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbik6CiogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaDoKKiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcDoKKFdlYktpdDo6V2ViRnJhbWVQcm94eTo6YmluZEFj
Y2Vzc2liaWxpdHlGcmFtZVdpdGhEYXRhKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJG
cmFtZVByb3h5Lmg6CiogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojpzd2FwVG9Qcm92aXNpb25hbFBhZ2UpOgooV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKToKKFdlYktpdDo6V2Vi
UGFnZVByb3h5Ojp1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQpOgoqIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MubW06CihXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5
V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQpOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW06CihXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9j
ZXNzQWNjZXNzaWJpbGl0eVRva2VuKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGxNYWMuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGxNYWMubW06CihXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5V2ViUHJv
Y2Vzc1Rva2VuUmVjZWl2ZWQpOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW06CihXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNj
ZXNzaWJpbGl0eVRva2VuKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0lt
cGwuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwubW06CihXZWJL
aXQ6OldlYlZpZXdJbXBsOjpzZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuKToKKiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNs
aWVudC5jcHA6CihXZWJLaXQ6OldlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQ6OmFjY2Vzc2liaWxp
dHlSZW1vdGVGcmFtZU9mZnNldCk6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuaDoKKiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuY3BwOgooV2ViS2l0OjpX
ZWJSZW1vdGVGcmFtZUNsaWVudDo6dW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyk6CihX
ZWJLaXQ6OldlYlJlbW90ZUZyYW1lQ2xpZW50Ojp1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxp
dHlPZmZzZXQpOgooV2ViS2l0OjpXZWJSZW1vdGVGcmFtZUNsaWVudDo6YmluZFJlbW90ZUFjY2Vz
c2liaWxpdHlGcmFtZXMpOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJSZW1vdGVGcmFtZUNsaWVudC5oOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKFdlYktpdDo6V2ViUGFnZTo6YWNjZXNzaWJpbGl0
eVRyYW5zZmVyUmVtb3RlVG9rZW4pOgooV2ViS2l0OjpXZWJQYWdlOjphY2Nlc3NpYmlsaXR5TWFu
YWdlUmVtb3RlRWxlbWVudFN0YXR1cyk6CihXZWJLaXQ6OldlYlBhZ2U6OmJpbmRSZW1vdGVBY2Nl
c3NpYmlsaXR5RnJhbWVzKToKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmg6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbjoKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bToKKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplQWNjZXNzaWJpbGl0eSk6CihX
ZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtUmVpbml0aWFsaXplKToKKFdlYktpdDo6V2ViUGFnZTo6
YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KToKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaDoKKiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9i
amVjdEJhc2UubW06CigtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlIGF4T2JqZWN0
Q2FjaGVdKToKKC1bV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2Ugc2V0UmVtb3RlRnJh
bWVPZmZzZXQ6XSk6CigtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlIGFjY2Vzc2li
aWxpdHlSZW1vdGVGcmFtZU9mZnNldF0pOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tOgooV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybUluaXRpYWxp
emVBY2Nlc3NpYmlsaXR5KToKKFdlYktpdDo6V2ViUGFnZTo6Y3JlYXRlTW9ja0FjY2Vzc2liaWxp
dHlFbGVtZW50KToKKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1SZWluaXRpYWxpemUpOgooV2Vi
S2l0OjpXZWJQYWdlOjp1cGRhdGVSZW1vdGVQYWdlQWNjZXNzaWJpbGl0eU9mZnNldCk6CihXZWJL
aXQ6OldlYlBhZ2U6OnJlZ2lzdGVyUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5VG9rZW5zKToKKFdl
YktpdDo6V2ViUGFnZTo6cmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKToKKFdl
YktpdDo6V2ViUGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KToKKiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJQcm9jZXNzQ29jb2EubW06CihXZWJLaXQ6OldlYlByb2Nlc3M6OmJpbmRBY2Nlc3NpYmls
aXR5RnJhbWVXaXRoRGF0YSk6CiogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKLS0tCiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dCAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogLi4uL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIHwgICA0ICsKIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhDb3JlT2JqZWN0LmggICB8ICAxMiArKwogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WExvZ2dlci5jcHAgICAgIHwgICAzICsKIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5jcHAgICB8ICAxNSArLQogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmggIHwgICAyICsKIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhSZW1vdGVG
cmFtZS5jcHAgICB8ICA0MiArKysrKwogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFJl
bW90ZUZyYW1lLmggIHwgIDYxICsrKysrKysrCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcCAgICAgfCAgMjMgKystCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmggICAgICAgfCAgIDUgKwogLi4uL0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
Y3BwICAgICAgICAgICAgIHwgICA0ICstCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldy5jcHAgfCAgNjIgKysrKysrKy0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlTY3JvbGxWaWV3LmggICB8ICAgNiArLQogLi4uL2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlcklPUy5tbSAgIHwgICAxICsKIC4uLi9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9i
amVjdC5jcHAgICAgICAgICB8ICAzNCArKysrLQogLi4uL2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
T2JqZWN0LmggICAgICAgICAgIHwgICA4ICstCiAuLi4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRU
cmVlLmNwcCAgICAgICAgICAgfCAgNjEgKysrLS0tLS0KIC4uLi9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZFRyZWUuaCAgICAgICAgICAgICB8ICAyOSArKysrCiAuLi4vaXNvbGF0ZWR0cmVlL21hYy9B
WElzb2xhdGVkT2JqZWN0TWFjLm1tICAgfCAgIDcgKwogLi4uL21hYy9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0TWFjLm1tICAgICAgICAgICAgIHwgIDI2ICsrKysKIC4uLi9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJCYXNlLm1tICB8ICAgOSArLQogLi4uL21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlck1hYy5tbSAgIHwgMTQzICsrKysrKysrKysrKy0tLS0tLQogU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgICAgICAgIHwgICA1ICsKIC4uLi9XZWJDb3Jl
L2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmggICB8ICAgMSArCiAuLi4vV2ViQ29yZS9s
b2FkZXIvTG9jYWxGcmFtZUxvYWRlckNsaWVudC5oICAgfCAgIDEgKwogU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcCAgICAgICAgICAgICAgICAgIHwgIDExICstCiBTb3VyY2UvV2ViQ29yZS9w
YWdlL1JlbW90ZUZyYW1lLmNwcCAgICAgICAgICAgfCAgMTUgKysKIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUmVtb3RlRnJhbWUuaCAgICAgICAgICAgICB8ICAgNCArCiBTb3VyY2UvV2ViQ29yZS9wYWdl
L1JlbW90ZUZyYW1lQ2xpZW50LmggICAgICAgfCAgIDQgKwogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGFnZUNsaWVudC5oICAgICAgICAgIHwgICAzICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9Q
cm92aXNpb25hbFBhZ2VQcm94eS5jcHAgfCAgIDIgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL1By
b3Zpc2lvbmFsUGFnZVByb3h5LmggICB8ICAgMiArLQogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViRnJhbWVQcm94eS5jcHAgICAgIHwgICA5ICsrCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJGcmFtZVByb3h5LmggICAgICAgfCAgIDIgKwogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcCAgICAgIHwgIDI0ICsrLQogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmggICAgICAgIHwgICA0ICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4gfCAgIDQgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5oICB8ICAgMiArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLm1tIHwgICAyICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tICAgfCAgIDcgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xp
ZW50SW1wbE1hYy5oICB8ICAgMiArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsTWFjLm1tIHwgICA0ICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVBy
b3h5TWFjLm1tICAgfCAgIDQgKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3
SW1wbC5oICAgICB8ICAgMyArLQogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJ
bXBsLm1tICAgIHwgICA4ICstCiAuLi4vV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudC5jcHAgICAg
ICAgICAgICAgfCAgIDYgKwogLi4uL1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuaCAgICAgICAg
ICAgICAgIHwgICAxICsKIC4uLi9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVudC5j
cHAgICB8ICAzMiArKysrCiAuLi4vV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQu
aCAgICAgfCAgIDQgKwogLi4uL1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2Eu
bW0gIHwgIDQ2ICsrKysrLQogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oICAgIHwgIDEzICstCiAuLi4vV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4gICAgfCAgIDMgKwogLi4uL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSAg
ICAgIHwgIDIyICsrLQogLi4uL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5o
ICAgIHwgICA0ICsKIC4uLi9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0g
ICB8ICAyNyArKystCiAuLi4vV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tICAg
ICAgfCAgNDUgKysrKy0tCiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oICAg
ICAgICAgfCAgIDggKwogLi4uL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMu
aW4gIHwgICAxICsKIC4uLi9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSAgICAg
ICB8ICAxMCArKwogLi4uL21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5o
IHwgICAxICsKIDYwIGZpbGVzIGNoYW5nZWQsIDc1MiBpbnNlcnRpb25zKCspLCAxNTIgZGVsZXRp
b25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WFJlbW90ZUZyYW1lLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhSZW1vdGVGcmFtZS5oCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAxZjU3YjlhYTBhMzQu
LmE1MGZlODk0OTNkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTUyNSw2ICs1MjUsNyBAQCBhY2Nlc3Np
YmlsaXR5L0FYR2VvbWV0cnlNYW5hZ2VyLmNwcAogYWNjZXNzaWJpbGl0eS9BWEltYWdlLmNwcAog
YWNjZXNzaWJpbGl0eS9BWExvZ2dlci5jcHAKIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHAKK2FjY2Vzc2liaWxpdHkvQVhSZW1vdGVGcmFtZS5jcHAKIGFjY2Vzc2liaWxpdHkvQVhUZXh0
TWFya2VyLmNwcAogYWNjZXNzaWJpbGl0eS9BWFRleHRSdW4uY3BwCiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyYTdlYzg2ODAwMDIuLjY3ZGZjMGVkYjQ2MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtODk2MCw2ICs4OTYwLDggQEAKIAkJMjk0ODlGQzUxMkMwMEYwMzAwRDgzRjBGIC8qIEFj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTI5NDk4NjgxMTk1MzQxOTQwMDcyRDJCRCAvKiBUZXh0VW5kb0luc2VydGlvbk1hcmt1cE1hYy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRleHRVbmRvSW5zZXJ0
aW9uTWFya3VwTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTRCREFFNjIx
RkY1ODJBMDA1MTA3N0IgLyogQWNjZXNzaWJpbGl0eU9iamVjdENvY29hLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eU9iamVjdENvY29hLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOTU1Q0YxMTJCMjMwQUU2MDAwMUJGODIg
LyogQVhSZW1vdGVGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBWFJlbW90ZUZyYW1lLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5NTVDRjEyMkIyMzBBRTYwMDAxQkY4MiAvKiBBWFJl
bW90ZUZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFYUmVtb3RlRnJhbWUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTdCRTNEOTE2QzA0M0Q4MDAzMzE2QkQgLyogUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMjk4MUFCQzQxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlNYXRo
TUxFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVt
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk4MUNBOUQxMzE4MjJFQzAw
RDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBB
Y2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjM0NDUsNiArMjM0NDcsOCBAQAogCQkJCUMwNDkzRUI3MjQ0Njk5RTQwMDlBQUM4MCAvKiBBWExv
Z2dlci5oICovLAogCQkJCTI5ODFDQUFGMTMxODIyRUMwMEQxMkYyQSAvKiBBWE9iamVjdENhY2hl
LmNwcCAqLywKIAkJCQkyOUE4MTIxQTBGQkI5QzFEMDA1MTAyOTMgLyogQVhPYmplY3RDYWNoZS5o
ICovLAorCQkJCTI5NTVDRjEyMkIyMzBBRTYwMDAxQkY4MiAvKiBBWFJlbW90ZUZyYW1lLmNwcCAq
LywKKwkJCQkyOTU1Q0YxMTJCMjMwQUU2MDAwMUJGODIgLyogQVhSZW1vdGVGcmFtZS5oICovLAog
CQkJCUMwRTIwOEExMjkzNzlDNkYwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXIuY3BwICovLAogCQkJ
CUMwRTIwOEEwMjkzNzlDNkUwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXIuaCAqLywKIAkJCQk0OEM0
RTgzQzJCMzREODM4MDA4MzQ2MEEgLyogQVhUZXh0UnVuLmNwcCAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhDb3JlT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYQ29yZU9iamVjdC5oCmluZGV4IDQ0MTA4NGVjYjgwNS4uM2ZiYzdm
OGRiMjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYQ29yZU9i
amVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhDb3JlT2JqZWN0LmgK
QEAgLTIwNSw2ICsyMDUsNyBAQCBlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlSb2xlIHsKICAgICBQ
cm9ncmVzc0luZGljYXRvciwKICAgICBSYWRpb0J1dHRvbiwKICAgICBSYWRpb0dyb3VwLAorICAg
IFJlbW90ZUZyYW1lLAogICAgIFJvd0hlYWRlciwKICAgICBSb3csCiAgICAgUm93R3JvdXAsCkBA
IC00NDIsNiArNDQzLDggQEAgQUxXQVlTX0lOTElORSBTdHJpbmcgYWNjZXNzaWJpbGl0eVJvbGVU
b1N0cmluZyhBY2Nlc3NpYmlsaXR5Um9sZSByb2xlKQogICAgICAgICByZXR1cm4gIlJhZGlvQnV0
dG9uIl9zOwogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvR3JvdXA6CiAgICAgICAg
IHJldHVybiAiUmFkaW9Hcm91cCJfczsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSZW1v
dGVGcmFtZToKKyAgICAgICAgcmV0dXJuICJSZW1vdGVGcmFtZSJfczsKICAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpSb3dIZWFkZXI6CiAgICAgICAgIHJldHVybiAiUm93SGVhZGVyIl9zOwog
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJvdzoKQEAgLTgxNSw2ICs4MTgsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93SW5zdGFuY2Uo
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2Vs
bEluc3RhbmNlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0FYSXNvbGF0ZWRPYmpl
Y3RJbnN0YW5jZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBWFJlbW90ZUZyYW1l
KCkgY29uc3QgPSAwOwogCiAgICAgYm9vbCBpc0hlYWRpbmcoKSBjb25zdCB7IHJldHVybiByb2xl
VmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6SGVhZGluZzsgfQogICAgIHZpcnR1YWwgYm9v
bCBpc0xpbmsoKSBjb25zdCA9IDA7CkBAIC05MTksNiArOTIzLDEyIEBAIHB1YmxpYzoKICAgICBi
b29sIGlzVHJlZUdyaWQoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmls
aXR5Um9sZTo6VHJlZUdyaWQ7IH0KICAgICBib29sIGlzVHJlZUl0ZW0oKSBjb25zdCB7IHJldHVy
biByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUl0ZW07IH0KICAgICBib29s
IGlzU2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0
eVJvbGU6OlNjcm9sbEJhcjsgfQorICAgIGJvb2wgaXNSZW1vdGVGcmFtZSgpIGNvbnN0IHsgcmV0
dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpSZW1vdGVGcmFtZTsgfQorI2lm
IFBMQVRGT1JNKENPQ09BKQorICAgIHZpcnR1YWwgUmV0YWluUHRyPGlkPiByZW1vdGVGcmFtZVBs
YXRmb3JtRWxlbWVudCgpIGNvbnN0ID0gMDsKKyNlbmRpZgorICAgIHZpcnR1YWwgYm9vbCBoYXNS
ZW1vdGVGcmFtZUNoaWxkKCkgY29uc3QgPSAwOworCiAgICAgYm9vbCBpc0J1dHRvbigpIGNvbnN0
OwogICAgIHZpcnR1YWwgYm9vbCBpc01ldGVyKCkgY29uc3QgPSAwOwogCkBAIC0xMTU5LDYgKzEx
NjksOCBAQCBwdWJsaWM6CiAgICAgLy8gVmlld3BvcnQtcmVsYXRpdmUgbWVhbnMgdGhhdCB3aGVu
IHRoZSBwYWdlIHNjcm9sbHMsIHRoZSBwb3J0aW9uIG9mIHRoZSBwYWdlIGluIHRoZSB2aWV3cG9y
dCBjaGFuZ2VzLCBhbmQgdGh1cwogICAgIC8vIGFueSB2aWV3cG9ydC1yZWxhdGl2ZSByZWN0cyBk
byB0b28gKHNpbmNlIHRoZXkgYXJlIGVpdGhlciBjbG9zZXIgdG8gb3IgZmFydGhlciBmcm9tIHRo
ZSB2aWV3cG9ydCBvcmlnaW4gYWZ0ZXIgdGhlIHNjcm9sbCkuCiAgICAgdmlydHVhbCBGbG9hdFBv
aW50IHNjcmVlblJlbGF0aXZlUG9zaXRpb24oKSBjb25zdCA9IDA7CisgICAgLy8gVGhpcyBpcyB0
aGUgYW1vdW50IHRoYXQgdGhlIFJlbW90ZUZyYW1lIGlzIG9mZnNldCBmcm9tIGl0cyBjb250YWlu
aW5nIHBhcmVudC4KKyAgICB2aXJ0dWFsIEludFBvaW50IHJlbW90ZUZyYW1lT2Zmc2V0KCkgY29u
c3QgPSAwOwogCiAgICAgdmlydHVhbCBGbG9hdFJlY3QgY29udmVydEZyYW1lVG9TcGFjZShjb25z
dCBGbG9hdFJlY3QmLCBBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlKSBjb25zdCA9IDA7CiAj
aWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYTG9nZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhMb2dnZXIu
Y3BwCmluZGV4IGI2ZTMwNmNkZGVjZi4uN2IzNWM4ZjlkMTAxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcApAQCAtODgzLDYgKzg4Myw5IEBAIHZvaWQgc3RyZWFt
QVhDb3JlT2JqZWN0KFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgQVhDb3JlT2JqZWN0JiBvYmpl
Y3QsIGNvbnN0IE9wCiAgICAgaWYgKG9wdGlvbnMgJiBBWFN0cmVhbU9wdGlvbnM6OlJvbGUpCiAg
ICAgICAgIHN0cmVhbS5kdW1wUHJvcGVydHkoInJvbGUiLCBvYmplY3Qucm9sZVZhbHVlKCkpOwog
CisgICAgaWYgKG9iamVjdC5yZW5kZXJlcigpKQorICAgICAgICBzdHJlYW0uZHVtcFByb3BlcnR5
KCJyZW5kZXJOYW1lIiwgb2JqZWN0LnJlbmRlcmVyKCktPnJlbmRlck5hbWUoKSk7CisKICAgICBp
ZiAob3B0aW9ucyAmIEFYU3RyZWFtT3B0aW9uczo6UGFyZW50SUQpIHsKICAgICAgICAgYXV0byog
cGFyZW50ID0gb2JqZWN0LnBhcmVudE9iamVjdFVuaWdub3JlZCgpOwogICAgICAgICBzdHJlYW0u
ZHVtcFByb3BlcnR5KCJwYXJlbnRJRCIsIHBhcmVudCA/IHBhcmVudC0+b2JqZWN0SUQoKSA6IEFY
SUQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0
Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNw
cAppbmRleCAyODBmYWQ0ZjI3MDEuLjFhYzk1ZjJlYTZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5j
bHVkZSAiQVhJc29sYXRlZE9iamVjdC5oIgogI2luY2x1ZGUgIkFYSXNvbGF0ZWRUcmVlLmgiCiAj
aW5jbHVkZSAiQVhMb2dnZXIuaCIKKyNpbmNsdWRlICJBWFJlbW90ZUZyYW1lLmgiCiAjaW5jbHVk
ZSAiQVhUZXh0TWFya2VyLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmgiCiAj
aW5jbHVkZSAiQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oIgpAQCAtMTA1NCw3ICsxMDU1LDEw
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmNyZWF0ZShBY2Nlc3NpYmls
aXR5Um9sZSByb2xlKQogICAgICAgICBicmVhazsgICAgICAgICAgICAKICAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpUYWJsZUhlYWRlckNvbnRhaW5lcjoKICAgICAgICAgb2JqID0gQWNjZXNz
aWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyOjpjcmVhdGUoKTsKLSAgICAgICAgYnJlYWs7ICAg
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJlbW90ZUZyYW1l
OgorICAgICAgICBvYmogPSBBWFJlbW90ZUZyYW1lOjpjcmVhdGUoKTsKKyAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyVGh1bWI6CiAgICAgICAgIG9iaiA9
IEFjY2Vzc2liaWxpdHlTbGlkZXJUaHVtYjo6Y3JlYXRlKCk7CiAgICAgICAgIGJyZWFrOwpAQCAt
MTM1MCw2ICsxMzU0LDE1IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlUmVjb21wdXRlQ2Vs
bFNsb3RzKEFjY2Vzc2liaWxpdHlUYWJsZSYgYXhUYWJsZSkKICNlbmRpZgogfQogCit2b2lkIEFY
T2JqZWN0Q2FjaGU6Om9uUmVtb3RlRnJhbWVJbml0aWFsaXplZChBWFJlbW90ZUZyYW1lJiByZW1v
dGVGcmFtZSkKK3sKKyNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQorICAg
IHVwZGF0ZUlzb2xhdGVkVHJlZShyZW1vdGVGcmFtZSwgQVhQcm9wZXJ0eU5hbWU6OlJlbW90ZUZy
YW1lUGxhdGZvcm1FbGVtZW50KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHJlbW90ZUZyYW1l
KTsKKyNlbmRpZgorfQorCiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkK
IHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlUm93c3BhbkNoYW5nZWQoQWNjZXNzaWJpbGl0eVRh
YmxlQ2VsbCYgYXhDZWxsKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuaAppbmRleCBkMTA0OWNjOWJjMjEuLjM4Yzk4YTQ2ZWE5ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTQ3LDYgKzQ3LDcgQEAg
Y2xhc3MgVGV4dFN0cmVhbTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBBWFJlbW90
ZUZyYW1lOwogY2xhc3MgQWNjZXNzaWJpbGl0eVRhYmxlOwogY2xhc3MgQWNjZXNzaWJpbGl0eVRh
YmxlQ2VsbDsKIGNsYXNzIERvY3VtZW50OwpAQCAtMjQ2LDYgKzI0Nyw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRlZmVyTm9kZUFkZGVkT3JSZW1vdmVkKE5vZGUqKTsKICAgICB2b2lkIGhhbmRsZVNj
cm9sbGVkVG9BbmNob3IoY29uc3QgTm9kZSogYW5jaG9yTm9kZSk7CiAgICAgdm9pZCBvblNjcm9s
bGJhclVwZGF0ZShTY3JvbGxWaWV3Kik7CisgICAgdm9pZCBvblJlbW90ZUZyYW1lSW5pdGlhbGl6
ZWQoQVhSZW1vdGVGcmFtZSYpOwogCiAgICAgYm9vbCBpc1JldHJpZXZpbmdDdXJyZW50TW9kYWxO
b2RlKCkgeyByZXR1cm4gbV9pc1JldHJpZXZpbmdDdXJyZW50TW9kYWxOb2RlOyB9CiAgICAgTm9k
ZSogbW9kYWxOb2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYUmVtb3RlRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFJlbW90
ZUZyYW1lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmNmYmRl
ZGQ5ODFjYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhSZW1vdGVGcmFtZS5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJBWFJlbW90ZUZyYW1lLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworUmVmPEFYUmVtb3RlRnJhbWU+IEFYUmVtb3RlRnJhbWU6OmNyZWF0ZSgpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQVhSZW1vdGVGcmFtZSk7Cit9CisKK0xheW91dFJlY3Qg
QVhSZW1vdGVGcmFtZTo6ZWxlbWVudFJlY3QoKSBjb25zdAoreworICAgIGF1dG8qIHBhcmVudCA9
IHBhcmVudE9iamVjdCgpOworICAgIHJldHVybiBwYXJlbnQgPyBwYXJlbnQtPmVsZW1lbnRSZWN0
KCkgOiBMYXlvdXRSZWN0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhSZW1vdGVGcmFtZS5oIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFJlbW90ZUZyYW1lLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45NGQyZGYwMzA0ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYUmVtb3RlRnJhbWUuaApAQCAtMCwwICsxLDYx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDI0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5
TW9ja09iamVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlbW90ZUZyYW1l
OworCitjbGFzcyBBWFJlbW90ZUZyYW1lIGZpbmFsIDogcHVibGljIEFjY2Vzc2liaWxpdHlNb2Nr
T2JqZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEFYUmVtb3RlRnJhbWU+IGNyZWF0ZSgp
OworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBpbml0aWFsaXplUGxhdGZvcm1FbGVt
ZW50V2l0aFJlbW90ZVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgaW50KTsKKyAgICBz
dGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZ2VuZXJhdGVSZW1vdGVUb2tlbigpIGNvbnN0OworICAg
IFJldGFpblB0cjxpZD4gcmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKSBjb25zdCB7IHJldHVy
biBtX3JlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50OyB9CisgICAgcGlkX3QgcHJvY2Vzc0lkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3NJZGVudGlmaWVyOyB9CisjZW5kaWYKKwor
cHJpdmF0ZToKKyAgICB2aXJ0dWFsIH5BWFJlbW90ZUZyYW1lKCkgPSBkZWZhdWx0OworCisgICAg
QWNjZXNzaWJpbGl0eVJvbGUgZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUoKSB7IHJldHVybiBB
Y2Nlc3NpYmlsaXR5Um9sZTo6UmVtb3RlRnJhbWU7IH0KKyAgICBib29sIGNvbXB1dGVBY2Nlc3Np
YmlsaXR5SXNJZ25vcmVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzQVhS
ZW1vdGVGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICBMYXlvdXRSZWN0IGVsZW1l
bnRSZWN0KCkgY29uc3Q7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBSZXRhaW5QdHI8aWQ+
IG1fcmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQ7CisgICAgcGlkX3QgbV9wcm9jZXNzSWRlbnRp
ZmllciB7IDAgfTsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0FDQ0VTU0lCSUxJVFkoQVhSZW1vdGVGcmFtZSwgaXNBWFJlbW90
ZUZyYW1lKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcAppbmRleCAzZTMyZGIwOTNhZmIuLmZkNmY3YzRlMjU1OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
Y3BwCkBAIC01NDQsNyArNTQ0LDkgQEAgRmxvYXRSZWN0IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmNv
bnZlcnRGcmFtZVRvU3BhY2UoY29uc3QgRmxvYXRSZWN0JiBmcmFtZVJlY3QsIEEKICAgICAKIEZs
b2F0UmVjdCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZWxhdGl2ZUZyYW1lKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gY29udmVydEZyYW1lVG9TcGFjZShlbGVtZW50UmVjdCgpLCBBY2Nlc3NpYmlsaXR5
Q29udmVyc2lvblNwYWNlOjpQYWdlKTsKKyAgICBhdXRvIHJlY3QgPSBlbGVtZW50UmVjdCgpOwor
ICAgIHJlY3QubW92ZUJ5KHJlbW90ZUZyYW1lT2Zmc2V0KCkpOworICAgIHJldHVybiBjb252ZXJ0
RnJhbWVUb1NwYWNlKHJlY3QsIEFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2U6OlBhZ2UpOwog
fQogCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpuZXh0U2libGlu
Z1VuaWdub3JlZChpbnQgbGltaXQpIGNvbnN0CkBAIC0yMDg2LDE0ICsyMDg4LDIzIEBAIGNvbnN0
IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphbmNlc3RvckFj
Y2Vzc2liaWxpdHlTY3JvbGxWCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBSZW1vdGVBWE9iamVjdFJl
ZiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZW1vdGVQYXJlbnRPYmplY3QoKSBjb25zdAogewotICAg
IGlmIChhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCkpIHsKLSAgICAgICAgaWYgKGF1
dG8qIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCkpCi0gICAgICAgICAgICByZXR1cm4gZnJhbWUt
PmxvYWRlcigpLmNsaWVudCgpLmFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKTsKLSAgICB9Ci0g
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgp
OworICAgIGF1dG8qIGZyYW1lID0gZG9jdW1lbnQgPyBkb2N1bWVudC0+ZnJhbWUoKSA6IG51bGxw
dHI7CisgICAgcmV0dXJuIGZyYW1lID8gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmFjY2Vzc2li
aWxpdHlSZW1vdGVPYmplY3QoKSA6IG51bGxwdHI7CiB9CiAjZW5kaWYKIAorSW50UG9pbnQgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6cmVtb3RlRnJhbWVPZmZzZXQoKSBjb25zdAoreworI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgIGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsKKyAgICBh
dXRvKiBmcmFtZSA9IGRvY3VtZW50ID8gZG9jdW1lbnQtPmZyYW1lKCkgOiBudWxscHRyOworICAg
IHJldHVybiBmcmFtZSA/IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5hY2Nlc3NpYmlsaXR5UmVt
b3RlRnJhbWVPZmZzZXQoKSA6IEludFBvaW50KCk7CisjZWxzZQorICAgIHJldHVybiBJbnRQb2lu
dCgpOworI2VuZGlmCit9CisKIERvY3VtZW50KiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpkb2N1bWVu
dCgpIGNvbnN0CiB7CiAgICAgYXV0byogZnJhbWVWaWV3ID0gZG9jdW1lbnRGcmFtZVZpZXcoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmgKaW5kZXggNGQyMGY1NWE1NDRjLi4zNTk1ZDMxZTcxYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCkBAIC0xMDIsNiArMTAy
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBi
b29sIGlzQWNjZXNzaWJpbGl0eVNjcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgYm9vbCBpc0FYUmVtb3RlRnJhbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3SW5zdGFuY2UoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlT
VkdSb290KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzQWNjZXNzaWJpbGl0
eVRhYmxlSW5zdGFuY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQpAQCAtNDYy
LDEwICs0NjMsMTQgQEAgcHVibGljOgogICAgIFdpZGdldCogd2lkZ2V0Rm9yQXR0YWNobWVudFZp
ZXcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgYm9vbCBpc1BsdWdp
bigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICBJbnRQb2ludCByZW1v
dGVGcmFtZU9mZnNldCgpIGNvbnN0IG92ZXJyaWRlOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IFJlbW90ZUFYT2JqZWN0UmVmIHJlbW90ZVBhcmVudE9iamVjdCgpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIEZsb2F0UmVjdCBjb252ZXJ0UmVjdFRvUGxhdGZvcm1TcGFjZShjb25zdCBGbG9hdFJlY3Qm
LCBBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZXRh
aW5QdHI8aWQ+IHJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbmlsOyB9CiAjZW5kaWYKKyAgICBib29sIGhhc1JlbW90ZUZyYW1lQ2hpbGQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgUGFnZSogcGFnZSgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIExv
Y2FsRnJhbWVWaWV3KiBkb2N1bWVudEZyYW1lVmlldygpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHAKaW5kZXggZWU4YWJlYzNkN2I1Li4yZjEyZWY3NTNlNGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcApAQCAtMjQxMyw3ICsyNDEzLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjphZGRBdHRhY2htZW50Q2hpbGRyZW4oKQogCiAgICAgLy8gTG9jYWxGcmFtZVZpZXcn
cyBuZWVkIHRvIGJlIGluc2VydGVkIGludG8gdGhlIEFYIGhpZXJhcmNoeSB3aGVuIGVuY291bnRl
cmVkLgogICAgIFdpZGdldCogd2lkZ2V0ID0gd2lkZ2V0Rm9yQXR0YWNobWVudFZpZXcoKTsKLSAg
ICBpZiAoIXdpZGdldCB8fCAhd2lkZ2V0LT5pc0xvY2FsRnJhbWVWaWV3KCkpCisgICAgaWYgKCF3
aWRnZXQgfHwgISh3aWRnZXQtPmlzTG9jYWxGcmFtZVZpZXcoKSB8fCB3aWRnZXQtPmlzUmVtb3Rl
RnJhbWVWaWV3KCkpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgYWRkQ2hpbGQoYXhPYmpl
Y3RDYWNoZSgpLT5nZXRPckNyZWF0ZSh3aWRnZXQpKTsKQEAgLTI1NjgsNyArMjU2OCw3IEBAIHZv
aWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkQ2hpbGRyZW4oKQogICAgICAgICBhdXRv
IG93bmVycyA9IG9iamVjdC5vd25lcnMoKTsKICAgICAgICAgaWYgKG93bmVycy5zaXplKCkgJiYg
IW93bmVycy5jb250YWlucyh0aGlzKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisK
ICAgICAgICAgYWRkQ2hpbGQoJm9iamVjdCk7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcAppbmRl
eCAyYmJjMzA4N2I5ZjguLjUyMTIyMmFmNjAwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAKQEAgLTI3LDEw
ICsyNywxMiBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgiCiAKICNpbmNs
dWRlICJBWE9iamVjdENhY2hlLmgiCisjaW5jbHVkZSAiQVhSZW1vdGVGcmFtZS5oIgogI2luY2x1
ZGUgIkFjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVs
ZW1lbnQuaCIKICNpbmNsdWRlICJMb2NhbEZyYW1lLmgiCiAjaW5jbHVkZSAiTG9jYWxGcmFtZVZp
ZXcuaCIKKyNpbmNsdWRlICJSZW1vdGVGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJSZW5kZXJFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiV2lkZ2V0LmgiCiAKQEAgLTUyLDYgKzU0LDE2IEBAIEFjY2Vzc2li
aWxpdHlTY3JvbGxWaWV3Ojp+QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoKQogdm9pZCBBY2Nlc3Np
YmlsaXR5U2Nyb2xsVmlldzo6ZGV0YWNoUmVtb3RlUGFydHMoQWNjZXNzaWJpbGl0eURldGFjaG1l
bnRUeXBlIGRldGFjaG1lbnRUeXBlKQogewogICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRldGFj
aFJlbW90ZVBhcnRzKGRldGFjaG1lbnRUeXBlKTsKKworICAgIGF1dG8qIHJlbW90ZUZyYW1lVmll
dyA9IGR5bmFtaWNEb3duY2FzdDxSZW1vdGVGcmFtZVZpZXc+KG1fc2Nyb2xsVmlldy5nZXQoKSk7
CisgICAgaWYgKHJlbW90ZUZyYW1lVmlldyAmJiBtX3JlbW90ZUZyYW1lICYmIChkZXRhY2htZW50
VHlwZSA9PSBBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGU6OkVsZW1lbnREZXN0cm95ZWQgfHwg
ZGV0YWNobWVudFR5cGUgPT0gQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlOjpDYWNoZURlc3Ry
b3llZCkpIHsKKyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIGF1dG8mIHJlbW90ZUZyYW1lID0g
cmVtb3RlRnJhbWVWaWV3LT5mcmFtZSgpOworICAgICAgICByZW1vdGVGcmFtZS51bmJpbmRSZW1v
dGVBY2Nlc3NpYmlsaXR5RnJhbWVzKG1fcmVtb3RlRnJhbWUtPnByb2Nlc3NJZGVudGlmaWVyKCkp
OworI2VuZGlmCisgICAgICAgIG1fcmVtb3RlRnJhbWUgPSBudWxscHRyOworICAgIH0KKwogICAg
IG1fc2Nyb2xsVmlldyA9IG51bGxwdHI7CiAgICAgbV9mcmFtZU93bmVyRWxlbWVudCA9IG51bGxw
dHI7CiB9CkBAIC0xNzcsOCArMTg5LDEwIEBAIEFjY2Vzc2liaWxpdHlTY3JvbGxiYXIqIEFjY2Vz
c2liaWxpdHlTY3JvbGxWaWV3OjphZGRDaGlsZFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjCiB2b2lk
IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpjbGVhckNoaWxkcmVuKCkKIHsKICAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpjbGVhckNoaWxkcmVuKCk7CisKICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFy
ID0gbnVsbHB0cjsKICAgICBtX2hvcml6b250YWxTY3JvbGxiYXIgPSBudWxscHRyOworCiAgICAg
bV9jaGlsZHJlbkRpcnR5ID0gZmFsc2U7CiB9CiAKQEAgLTE5MSwxMSArMjA1LDQ1IEBAIGJvb2wg
QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkg
Y29uc3QKICAgICByZXR1cm4gd2ViQXJlYS0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpOwogfQog
Cit2b2lkIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjphZGRSZW1vdGVGcmFtZUNoaWxkKCkKK3sK
KyAgICBhdXRvKiByZW1vdGVGcmFtZVZpZXcgPSBkeW5hbWljRG93bmNhc3Q8UmVtb3RlRnJhbWVW
aWV3PihtX3Njcm9sbFZpZXcuZ2V0KCkpOworICAgIGlmICghcmVtb3RlRnJhbWVWaWV3KQorICAg
ICAgICByZXR1cm47CisKKyAgICBXZWFrUHRyIGNhY2hlID0gYXhPYmplY3RDYWNoZSgpOworICAg
IGlmICghY2FjaGUpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9yZW1vdGVGcmFtZSkg
eworICAgICAgICAvLyBNYWtlIHRoZSBmYXV4IGVsZW1lbnQgdGhhdCByZXByZXNlbnRzIHRoZSBy
ZW1vdGUgdHJhbnNmZXIgZWxlbWVudCBmb3IgQVguCisgICAgICAgIG1fcmVtb3RlRnJhbWUgPSBk
b3duY2FzdDxBWFJlbW90ZUZyYW1lPihjYWNoZS0+Y3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpS
ZW1vdGVGcmFtZSkpOworICAgICAgICBtX3JlbW90ZUZyYW1lLT5zZXRQYXJlbnQodGhpcyk7CisK
KyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIC8vIEdlbmVyYXRlIGEgbmV3IHRva2VuIGFuZCBw
YXNzIGl0IGJhY2sgdG8gdGhlIG90aGVyIHJlbW90ZSBmcmFtZSBzbyBpdCBjYW4gYmluZCB0aGVz
ZSBvYmplY3RzIHRvZ2V0aGVyLgorICAgICAgICBhdXRvIGdlbmVyYXRlZFRva2VuID0gbV9yZW1v
dGVGcmFtZS0+Z2VuZXJhdGVSZW1vdGVUb2tlbigpOworICAgICAgICBhdXRvJiByZW1vdGVGcmFt
ZSA9IHJlbW90ZUZyYW1lVmlldy0+ZnJhbWUoKTsKKyAgICAgICAgcmVtb3RlRnJhbWUuYmluZFJl
bW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoZ2V0cGlkKCksIGdlbmVyYXRlZFRva2VuLCBbdGhpcywg
JnJlbW90ZUZyYW1lLCBwcm90ZWN0ZWRBY2Nlc3NiaWxpdHlSZW1vdGVGcmFtZSA9IFJlZlB0ciB7
IG1fcmVtb3RlRnJhbWUgfV0gKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiB0b2tlbiwgaW50IHBy
b2Nlc3NJZGVudGlmaWVyKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHByb3RlY3RlZEFjY2Vzc2Jp
bGl0eVJlbW90ZUZyYW1lLT5pbml0aWFsaXplUGxhdGZvcm1FbGVtZW50V2l0aFJlbW90ZVRva2Vu
KHRva2VuLCBwcm9jZXNzSWRlbnRpZmllcik7CisKKyAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUg
cmVtb3RlIHNpZGUgd2l0aCB0aGUgb2Zmc2V0IG9mIHRoaXMgb2JqZWN0IHNvIGl0IGNhbiBjYWxj
dWxhdGUgZnJhbWVzIGNvcnJlY3RseS4KKyAgICAgICAgICAgIGF1dG8gbG9jYXRpb24gPSBlbGVt
ZW50UmVjdCgpLmxvY2F0aW9uKCk7CisgICAgICAgICAgICByZW1vdGVGcmFtZS51cGRhdGVSZW1v
dGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQoZmxvb3JlZEludFBvaW50KGxvY2F0aW9uKSk7Cisg
ICAgICAgIH0pOworI2VuZGlmCisgICAgfSBlbHNlCisgICAgICAgIG1fcmVtb3RlRnJhbWUtPnNl
dFBhcmVudCh0aGlzKTsKKworICAgIGFkZENoaWxkKG1fcmVtb3RlRnJhbWUuZ2V0KCkpOworfQor
CiB2b2lkIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjphZGRDaGlsZHJlbigpCiB7CiAgICAgQVNT
RVJUKCFtX2NoaWxkcmVuSW5pdGlhbGl6ZWQpOwogICAgIG1fY2hpbGRyZW5Jbml0aWFsaXplZCA9
IHRydWU7CiAKKyAgICBhZGRSZW1vdGVGcmFtZUNoaWxkKCk7CiAgICAgYWRkQ2hpbGQod2ViQXJl
YU9iamVjdCgpKTsKICAgICB1cGRhdGVTY3JvbGxiYXJzKCk7CiB9CkBAIC0yMDMsNyArMjUxLDcg
QEAgdm9pZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkQ2hpbGRyZW4oKQogQWNjZXNzaWJp
bGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OndlYkFyZWFPYmplY3QoKSBjb25z
dAogewogICAgIGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsKLSAgICBpZiAoIWRv
Y3VtZW50IHx8ICFkb2N1bWVudC0+aGFzTGl2aW5nUmVuZGVyVHJlZSgpKQorICAgIGlmICghZG9j
dW1lbnQgfHwgIWRvY3VtZW50LT5oYXNMaXZpbmdSZW5kZXJUcmVlKCkgfHwgbV9yZW1vdGVGcmFt
ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoYXV0byogY2FjaGUgPSBheE9i
amVjdENhY2hlKCkpCkBAIC0yMzQsOSArMjgyLDE1IEBAIExheW91dFJlY3QgQWNjZXNzaWJpbGl0
eVNjcm9sbFZpZXc6OmVsZW1lbnRSZWN0KCkgY29uc3QKIAogRG9jdW1lbnQqIEFjY2Vzc2liaWxp
dHlTY3JvbGxWaWV3Ojpkb2N1bWVudCgpIGNvbnN0CiB7Ci0gICAgaWYgKGF1dG8qIGZyYW1lVmll
dyA9IGR5bmFtaWNEb3duY2FzdDxMb2NhbEZyYW1lVmlldz4obV9zY3JvbGxWaWV3LmdldCgpKSkg
eworICAgIGlmIChhdXRvKiBmcmFtZVZpZXcgPSBkeW5hbWljRG93bmNhc3Q8TG9jYWxGcmFtZVZp
ZXc+KG1fc2Nyb2xsVmlldy5nZXQoKSkpCiAgICAgICAgIHJldHVybiBmcmFtZVZpZXctPmZyYW1l
KCkuZG9jdW1lbnQoKTsKKworICAgIC8vIEZvciB0aGUgUmVtb3RlRnJhbWVWaWV3IGNhc2UsIHdl
IG5lZWQgdG8gcmV0dXJuIHRoZSBkb2N1bWVudCBvZiBvdXIgaG9zdGluZyBwYXJlbnQgc28gYXhP
YmplY3RDYWNoZSgpIHJlc29sdmVzIGNvcnJlY3RseS4KKyAgICBpZiAoYXV0byogcmVtb3RlRnJh
bWVWaWV3ID0gZHluYW1pY0Rvd25jYXN0PFJlbW90ZUZyYW1lVmlldz4obV9zY3JvbGxWaWV3Lmdl
dCgpKSkgeworICAgICAgICBpZiAoYXV0byogb3duZXIgPSByZW1vdGVGcmFtZVZpZXctPmZyYW1l
KCkub3duZXJFbGVtZW50KCkpCisgICAgICAgICAgICByZXR1cm4gJihvd25lci0+ZG9jdW1lbnQo
KSk7CiAgICAgfQorCiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRvY3VtZW50KCk7
CiB9CiAKQEAgLTI1OSw4ICszMTMsMTAgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJp
bGl0eVNjcm9sbFZpZXc6OnBhcmVudE9iamVjdCgpIGNvbnN0CiAgICAgV2Vha1B0ciBvd25lciA9
IG1fZnJhbWVPd25lckVsZW1lbnQuZ2V0KCk7CiAgICAgaWYgKGF1dG8qIGxvY2FsRnJhbWVWaWV3
ID0gZHluYW1pY0Rvd25jYXN0PExvY2FsRnJhbWVWaWV3PihtX3Njcm9sbFZpZXcuZ2V0KCkpKQog
ICAgICAgICBvd25lciA9IGxvY2FsRnJhbWVWaWV3LT5mcmFtZSgpLm93bmVyRWxlbWVudCgpOwor
ICAgIGVsc2UgaWYgKGF1dG8qIHJlbW90ZUZyYW1lVmlldyA9IGR5bmFtaWNEb3duY2FzdDxSZW1v
dGVGcmFtZVZpZXc+KG1fc2Nyb2xsVmlldy5nZXQoKSkpCisgICAgICAgIG93bmVyID0gcmVtb3Rl
RnJhbWVWaWV3LT5mcmFtZSgpLm93bmVyRWxlbWVudCgpOwogCi0gICAgaWYgKGNhY2hlICYmIG93
bmVyICYmIG93bmVyLT5yZW5kZXJlcigpKQorICAgIGlmIChvd25lciAmJiBvd25lci0+cmVuZGVy
ZXIoKSkKICAgICAgICAgcmV0dXJuIGNhY2hlLT5nZXRPckNyZWF0ZShvd25lci5nZXQoKSk7CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgKaW5kZXggNTU3MDQ0NjcxYzdkLi41MjVh
Yzc4M2ZiYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVNjcm9sbFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIAorY2xhc3MgQVhSZW1vdGVGcmFtZTsKIGNsYXNzIEFjY2Vzc2liaWxpdHlT
Y3JvbGxiYXI7CiBjbGFzcyBTY3JvbGxiYXI7CiBjbGFzcyBTY3JvbGxWaWV3OwpAQCAtNTQsNyAr
NTUsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQo
KSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXdJbnN0
YW5jZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIGlzRW5hYmxl
ZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICAKKyAgICBib29sIGhhc1Jl
bW90ZUZyYW1lQ2hpbGQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3JlbW90ZUZyYW1lOyB9CisK
ICAgICBib29sIGlzQXR0YWNobWVudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFBsYXRmb3JtV2lk
Z2V0IHBsYXRmb3JtV2lkZ2V0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgV2lkZ2V0KiB3aWRnZXRG
b3JBdHRhY2htZW50VmlldygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGN1cnJlbnRTY3JvbGxW
aWV3KCk7IH0KQEAgLTY5LDYgKzcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEZvY3VzZWQo
Ym9vbCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBjYW5TZXRGb2N1c0F0dHJpYnV0ZSgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIGJvb2wgaXNGb2N1c2VkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBh
ZGRSZW1vdGVGcmFtZUNoaWxkKCk7CiAKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCBv
dmVycmlkZTsKICAgICBMb2NhbEZyYW1lVmlldyogZG9jdW1lbnRGcmFtZVZpZXcoKSBjb25zdCBv
dmVycmlkZTsKQEAgLTg1LDYgKzg4LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8QWNjZXNzaWJp
bGl0eU9iamVjdD4gbV9ob3Jpem9udGFsU2Nyb2xsYmFyOwogICAgIFJlZlB0cjxBY2Nlc3NpYmls
aXR5T2JqZWN0PiBtX3ZlcnRpY2FsU2Nyb2xsYmFyOwogICAgIGJvb2wgbV9jaGlsZHJlbkRpcnR5
OworICAgIFJlZlB0cjxBWFJlbW90ZUZyYW1lPiBtX3JlbW90ZUZyYW1lOwogfTsKICAgICAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1Mu
bW0KaW5kZXggMmYyOWI3MmZmZTdlLi45MjQzYWQ2YmQzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC0xMTEyLDYgKzExMTIsNyBAQCBzdGF0aWMgQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXIgKmFuY2VzdG9yV2l0aFJvbGUoY29uc3QgQVhDb3JlT2JqZWN0
JiBkZXNjZW5kYQogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Oklnbm9yZWQ6CiAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGluZUJyZWFrOgogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OlByZXNlbnRhdGlvbmFsOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJlbW90ZUZy
YW1lOgogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd246CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCmluZGV4IDEwMTQ1NDYy
NzhmMy4uMzQyZDRjNzJlNjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcApAQCAtMzc4
LDYgKzM3OCwxMCBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVQcm9wZXJ0aWVz
KGNvbnN0IFJlZjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiYgYXhPYgogI2VuZGlmCiAKICAgICBzZXRP
YmplY3RQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SW50ZXJuYWxMaW5rRWxlbWVudCwgb2JqZWN0
LmludGVybmFsTGlua0VsZW1lbnQoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6
Okhhc1JlbW90ZUZyYW1lQ2hpbGQsIG9iamVjdC5oYXNSZW1vdGVGcmFtZUNoaWxkKCkpOworICAg
IC8vIERvbid0IGR1cGxpY2F0ZSB0aGUgcmVtb3RlRnJhbWVPZmZzZXQgZm9yIGV2ZXJ5IG9iamVj
dC4gSnVzdCBzdG9yZSBpbiB0aGUgV2ViQXJlYS4KKyAgICBpZiAob2JqZWN0LmlzV2ViQXJlYSgp
KQorICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6UmVtb3RlRnJhbWVPZmZzZXQs
IG9iamVjdC5yZW1vdGVGcmFtZU9mZnNldCgpKTsKIAogICAgIGluaXRpYWxpemVQbGF0Zm9ybVBy
b3BlcnRpZXMoYXhPYmplY3QpOwogfQpAQCAtNDY0LDYgKzQ2OCw3IEBAIHZvaWQgQVhJc29sYXRl
ZE9iamVjdDo6c2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBBWFByb3Bl
cnR5VmFsdWVWCiAgICAgICAgIFtdKE9wdGlvblNldDxBWEFuY2VzdG9yRmxhZz4mIHR5cGVkVmFs
dWUpIHsgcmV0dXJuIHR5cGVkVmFsdWUuaXNFbXB0eSgpOyB9LAogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgICAgICBbXShSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiYgdHlwZWRWYWx1ZSkg
eyByZXR1cm4gIXR5cGVkVmFsdWU7IH0sCisgICAgICAgIFtdKFJldGFpblB0cjxpZD4mIHR5cGVk
VmFsdWUpIHsgcmV0dXJuICF0eXBlZFZhbHVlOyB9LAogI2VuZGlmCiAgICAgICAgIFtdKEluc2lk
ZUxpbmsmIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWUgPT0gSW5zaWRlTGluaygpOyB9
LAogICAgICAgICBbXShWZWN0b3I8VmVjdG9yPEFYSUQ+PiYgdHlwZWRWYWx1ZSkgeyByZXR1cm4g
dHlwZWRWYWx1ZS5pc0VtcHR5KCk7IH0sCkBAIC0xMjA2LDYgKzEyMTEsMjEgQEAgTGF5b3V0UmVj
dCBBWElzb2xhdGVkT2JqZWN0OjplbGVtZW50UmVjdCgpIGNvbnN0CiAgICAgfSk7CiB9CiAKK0lu
dFBvaW50IEFYSXNvbGF0ZWRPYmplY3Q6OnJlbW90ZUZyYW1lT2Zmc2V0KCkgY29uc3QKK3sKKyAg
ICBhdXRvKiB3ZWJBcmVhID0gQWNjZXNzaWJpbGl0eTo6ZmluZEFuY2VzdG9yPEFYSXNvbGF0ZWRP
YmplY3Q+KCp0aGlzLCB0cnVlLCBbXSAoY29uc3QgYXV0byYgb2JqZWN0KSB7CisgICAgICAgIHJl
dHVybiBvYmplY3QuaXNXZWJBcmVhKCk7CisgICAgfSk7CisKKyAgICBpZiAoIXdlYkFyZWEpCisg
ICAgICAgIHJldHVybiB7IH07CisKKyAgICBpZiAoYXV0byBwb2ludCA9IHdlYkFyZWEtPm9wdGlv
bmFsQXR0cmlidXRlVmFsdWU8SW50UG9pbnQ+KEFYUHJvcGVydHlOYW1lOjpSZW1vdGVGcmFtZU9m
ZnNldCkpCisgICAgICAgIHJldHVybiAqcG9pbnQ7CisKKyAgICByZXR1cm4geyB9OworfQorCiBG
bG9hdFBvaW50IEFYSXNvbGF0ZWRPYmplY3Q6OnNjcmVlblJlbGF0aXZlUG9zaXRpb24oKSBjb25z
dAogewogICAgIGlmIChhdXRvIHBvaW50ID0gb3B0aW9uYWxBdHRyaWJ1dGVWYWx1ZTxGbG9hdFBv
aW50PihBWFByb3BlcnR5TmFtZTo6U2NyZWVuUmVsYXRpdmVQb3NpdGlvbikpCkBAIC0xMjI5LDIy
ICsxMjQ5LDIzIEBAIEZsb2F0UG9pbnQgQVhJc29sYXRlZE9iamVjdDo6c2NyZWVuUmVsYXRpdmVQ
b3NpdGlvbigpIGNvbnN0CiAKIEZsb2F0UmVjdCBBWElzb2xhdGVkT2JqZWN0OjpyZWxhdGl2ZUZy
YW1lKCkgY29uc3QKIHsKKyAgICBGbG9hdFJlY3QgcmVsYXRpdmVGcmFtZTsKKwogICAgIGlmIChh
dXRvIGNhY2hlZFJlbGF0aXZlRnJhbWUgPSBvcHRpb25hbEF0dHJpYnV0ZVZhbHVlPEludFJlY3Q+
KEFYUHJvcGVydHlOYW1lOjpSZWxhdGl2ZUZyYW1lKSkgewogICAgICAgICAvLyBXZSBzaG91bGQg
bm90IGhhdmUgY2FjaGVkIGEgcmVsYXRpdmUgZnJhbWUgZm9yIGVsZW1lbnRzIHRoYXQgZ2V0IHRo
ZWlyIGdlb21ldHJ5IGZyb20gdGhlaXIgY2hpbGRyZW4uCiAgICAgICAgIEFTU0VSVCghbV9nZXRz
R2VvbWV0cnlGcm9tQ2hpbGRyZW4pOwotICAgICAgICByZXR1cm4gKmNhY2hlZFJlbGF0aXZlRnJh
bWU7Ci0gICAgfQotCi0gICAgaWYgKG1fZ2V0c0dlb21ldHJ5RnJvbUNoaWxkcmVuKSB7CisgICAg
ICAgIHJlbGF0aXZlRnJhbWUgPSAqY2FjaGVkUmVsYXRpdmVGcmFtZTsKKyAgICB9IGVsc2UgaWYg
KG1fZ2V0c0dlb21ldHJ5RnJvbUNoaWxkcmVuKSB7CiAgICAgICAgIGF1dG8gZnJhbWUgPSBlbmNs
b3NpbmdJbnRSZWN0KHJlbGF0aXZlRnJhbWVGcm9tQ2hpbGRyZW4oKSk7CiAgICAgICAgIGlmICgh
ZnJhbWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIGZyYW1lOworICAgICAgICAgICAg
cmVsYXRpdmVGcmFtZSA9IGZyYW1lOwogICAgICAgICAvLyBFaXRoZXIgd2UgaGFkIG5vIGNoaWxk
cmVuLCBvciBvdXIgY2hpbGRyZW4gaGFkIGVtcHR5IGZyYW1lcy4gVGhlIHJpZ2h0IHRoaW5nIHRv
IGRvIHdvdWxkIGJlIHRvIHJldHVybgogICAgICAgICAvLyBhIHJlY3QgYXQgdGhlIHBvc2l0aW9u
IG9mIHRoZSBuZWFyZXN0IHJlbmRlciB0cmVlIGFuY2VzdG9yIHdpdGggc29tZSBtYWRlLXVwIHNp
emUgKEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojpib3VuZGluZ0JveFJlY3QgZG9lcyB0aGlzKS4K
ICAgICAgICAgLy8gSG93ZXZlciwgd2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIHJlbmRlciB0
cmVlIGluIHRoaXMgY29udGV4dCAob25seSB0aGUgQVggaXNvbGF0ZWQgdHJlZSwgd2hpY2ggaXMg
dG9vIHNwYXJzZSBmb3IgdGhpcyBwdXJwb3NlKSwgc28KICAgICAgICAgLy8gdW50aWwgd2UgY2Fj
aGUgdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBsZXQncyBnbyB0byB0aGUgbWFpbi10aHJlYWQu
CiAgICAgfSBlbHNlIGlmIChyb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1u
IHx8IHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJsZUhlYWRlckNvbnRhaW5l
cikKLSAgICAgICAgcmV0dXJuIGV4cG9zZWRUYWJsZUFuY2VzdG9yKCkgPyByZWxhdGl2ZUZyYW1l
RnJvbUNoaWxkcmVuKCkgOiBGbG9hdFJlY3QoKTsKKyAgICAgICAgcmVsYXRpdmVGcmFtZSA9IGV4
cG9zZWRUYWJsZUFuY2VzdG9yKCkgPyByZWxhdGl2ZUZyYW1lRnJvbUNoaWxkcmVuKCkgOiBGbG9h
dFJlY3QoKTsKKwogCiAgICAgLy8gTW9jayBvYmplY3RzIGFuZCBTVkcgb2JqZWN0cyBuZWVkIHVz
ZSB0aGUgbWFpbiB0aHJlYWQgc2luY2UgdGhleSBkbyBub3QgaGF2ZSByZW5kZXIgbm9kZXMgYW5k
IGFyZSBub3QgcGFpbnRlZCB3aXRoIGxheWVycywgcmVzcGVjdGl2ZWx5LgogICAgIC8vIEZJWE1F
OiBSZW1vdmUgaXNOb25MYXllclNWR09iamVjdCB3aGVuIExCU0UgaXMgZW5hYmxlZCAmIFNWRyBm
cmFtZXMgYXJlIGNhY2hlZC4KQEAgLTEyNjYsNiArMTI4Nyw3IEBAIEZsb2F0UmVjdCBBWElzb2xh
dGVkT2JqZWN0OjpyZWxhdGl2ZUZyYW1lKCkgY29uc3QKICAgICBpZiAoYW5jZXN0b3IgJiYgZnJh
bWVSZWN0LmxvY2F0aW9uKCkgPT0gRmxvYXRQb2ludCgpKQogICAgICAgICBmcmFtZVJlY3Quc2V0
TG9jYXRpb24oYW5jZXN0b3ItPnJlbGF0aXZlRnJhbWUoKS5sb2NhdGlvbigpKTsKIAorICAgIGZy
YW1lUmVjdC5tb3ZlQnkoeyByZW1vdGVGcmFtZU9mZnNldCgpIH0pOwogICAgIHJldHVybiBmcmFt
ZVJlY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaAppbmRleCBkMmE2NmMyZjUzZTQuLmRl
ODI3ZDVmZTAxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29s
YXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaApAQCAtMjgsNiArMjgsNyBAQAog
I2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAKICNpbmNsdWRlICJBWENv
cmVPYmplY3QuaCIKKyNpbmNsdWRlICJBWElzb2xhdGVkVHJlZS5oIgogI2luY2x1ZGUgIkFYT2Jq
ZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1ZGUgIkxheW91dFJlY3Qu
aCIKQEAgLTIxNSw2ICsyMTYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNGaWxlVXBsb2FkQnV0
dG9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlO
YW1lOjpJc0ZpbGVVcGxvYWRCdXR0b24pOyB9CiAgICAgYm9vbCBpc01ldGVyKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01ldGVyKTsg
fTsKICAgICBGbG9hdFBvaW50IHNjcmVlblJlbGF0aXZlUG9zaXRpb24oKSBjb25zdCBmaW5hbDsK
KyAgICBJbnRQb2ludCByZW1vdGVGcmFtZU9mZnNldCgpIGNvbnN0IGZpbmFsOwogICAgIEZsb2F0
UmVjdCByZWxhdGl2ZUZyYW1lKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBoYXNDYWNoZWRSZWxh
dGl2ZUZyYW1lKCkgY29uc3QgeyByZXR1cm4gb3B0aW9uYWxBdHRyaWJ1dGVWYWx1ZTxJbnRSZWN0
PihBWFByb3BlcnR5TmFtZTo6UmVsYXRpdmVGcmFtZSkuaGFzX3ZhbHVlKCk7IH0KICNpZiBQTEFU
Rk9STShNQUMpCkBAIC0yNjMsNyArMjY1LDcgQEAgcHJpdmF0ZToKICAgICBBWElzb2xhdGVkT2Jq
ZWN0KiBhY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IGZpbmFsOwog
ICAgIEFYSXNvbGF0ZWRPYmplY3QqIGZvY3VzZWRVSUVsZW1lbnQoKSBjb25zdCBmaW5hbDsKICAg
ICBBWENvcmVPYmplY3QqIGludGVybmFsTGlua0VsZW1lbnQoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBvYmplY3RBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SW50ZXJuYWxMaW5rRWxlbWVu
dCk7IH0KLSAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgcmFkaW9CdXR0b25Hcm91cCgp
IGNvbnN0IHsgcmV0dXJuIHRyZWUoKS0+b2JqZWN0c0ZvcklEcyh2ZWN0b3JBdHRyaWJ1dGVWYWx1
ZTxBWElEPihBWFByb3BlcnR5TmFtZTo6UmFkaW9CdXR0b25Hcm91cCkpOyB9CisgICAgQWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yIHJhZGlvQnV0dG9uR3JvdXAoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiB0cmVlKCktPm9iamVjdHNGb3JJRHModmVjdG9yQXR0cmlidXRlVmFsdWU8QVhJRD4oQVhQ
cm9wZXJ0eU5hbWU6OlJhZGlvQnV0dG9uR3JvdXApKTsgfQogICAgIEFYSXNvbGF0ZWRPYmplY3Qq
IHNjcm9sbEJhcihBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24pIGZpbmFsOwogICAgIGNvbnN0IFN0
cmluZyBwbGFjZWhvbGRlclZhbHVlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RyaW5nQXR0cmli
dXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlBsYWNlaG9sZGVyVmFsdWUpOyB9CiAgICAgU3RyaW5n
IGV4cGFuZGVkVGV4dFZhbHVlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRl
VmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkV4cGFuZGVkVGV4dFZhbHVlKTsgfQpAQCAtNDU2LDcgKzQ1
OCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlBUklBR3JpZEluc3RhbmNl
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzQWNjZXNzaWJpbGl0
eUFSSUFHcmlkUm93SW5zdGFuY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAg
IGJvb2wgaXNBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsSW5zdGFuY2UoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBmYWxzZTsgfQotCisgICAgYm9vbCBpc0FYUmVtb3RlRnJhbWUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNOYXRpdmVUZXh0Q29udHJvbCgpIGNvbnN0
IGZpbmFsOwogICAgIGJvb2wgaXNMaXN0Qm94T3B0aW9uKCkgY29uc3QgZmluYWw7CiAgICAgYm9v
bCBpc01vY2tPYmplY3QoKSBjb25zdCBmaW5hbDsKQEAgLTUzNyw3ICs1MzksOSBAQCBwcml2YXRl
OgogICAgIFN0cmluZyBuYW1lQXR0cmlidXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RyaW5n
QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Ok5hbWVBdHRyaWJ1dGUpOyB9CiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgYm9vbCBoYXNBcHBsZVBERkFubm90YXRpb25BdHRyaWJ1dGUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Okhh
c0FwcGxlUERGQW5ub3RhdGlvbkF0dHJpYnV0ZSk7IH0KKyAgICBSZXRhaW5QdHI8aWQ+IHJlbW90
ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkgY29uc3QgZmluYWw7CiAjZW5kaWYKKyAgICBib29sIGhh
c1JlbW90ZUZyYW1lQ2hpbGQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBib29sQXR0cmlidXRlVmFs
dWUoQVhQcm9wZXJ0eU5hbWU6Okhhc1JlbW90ZUZyYW1lQ2hpbGQpOyB9CiAKICNpZiBQTEFURk9S
TShDT0NPQSkgJiYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAgVmVjdG9yPFJldGFpblB0cjxp
ZD4+IG1vZGVsRWxlbWVudENoaWxkcmVuKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAK
aW5kZXggNjk2NjU4NDQ4ZjY1Li4zYWNjMTk5OGIxYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5j
cHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkFYSXNvbGF0ZWRPYmplY3QuaCIKICNp
bmNsdWRlICJBWExvZ2dlci5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZS5oIgogI2lu
Y2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZVJvdy5oIgogI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9u
LmgiCiAjaW5jbHVkZSAiTG9jYWxGcmFtZVZpZXcuaCIKQEAgLTIyNSw0NiArMjI2LDI2IEBAIFJl
ZlB0cjxBWElzb2xhdGVkT2JqZWN0PiBBWElzb2xhdGVkVHJlZTo6b2JqZWN0Rm9ySUQoY29uc3Qg
QVhJRCBheElEKSBjb25zdAogICAgIHJldHVybiBheElELmlzVmFsaWQoKSA/IG1fcmVhZGVyVGhy
ZWFkTm9kZU1hcC5nZXQoYXhJRCkgOiBudWxscHRyOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBV
PgotVmVjdG9yPFJlZlB0cjxBWENvcmVPYmplY3Q+PiBBWElzb2xhdGVkVHJlZTo6b2JqZWN0c0Zv
cklEcyhjb25zdCBVJiBheElEcykKK1JlZlB0cjxBWElzb2xhdGVkT2JqZWN0PiBBWElzb2xhdGVk
VHJlZTo6cmV0cmlldmVPYmplY3RGb3JJREZyb21NYWluVGhyZWFkKGNvbnN0IEFYSUQgYXhJRCkg
Y29uc3QKIHsKLSAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLQotICAgIFZlY3RvcjxSZWZQ
dHI8QVhDb3JlT2JqZWN0Pj4gcmVzdWx0OwotICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KGF4SURzLnNpemUoKSk7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBheElEIDogYXhJRHMpIHsK
LSAgICAgICAgUmVmUHRyIG9iamVjdCA9IG9iamVjdEZvcklEKGF4SUQpOwotICAgICAgICBpZiAo
b2JqZWN0KSB7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKFdURk1vdmUob2JqZWN0KSk7Ci0g
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFRoZXJlIGlzIG5v
IGlzb2xhdGVkIG9iamVjdCBmb3IgdGhpcyBBWElELiBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlIGNv
cnJlc3BvbmRpbmcgbGl2ZSBvYmplY3QgaXMgaWdub3JlZC4KLSAgICAgICAgLy8gSWYgdGhlcmUg
aXMgYSBsaXZlIG9iamVjdCBmb3IgdGhpcyBJRCBhbmQgaXQgaXMgYW4gaWdub3JlZCB0YXJnZXQg
b2YgYSByZWxhdGlvbnNoaXAsIGNyZWF0ZSBhbiBpc29sYXRlZCBvYmplY3QgZm9yIGl0LgotICAg
ICAgICBvYmplY3QgPSBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8
UmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+PihbJmF4SUQsIHRoaXNdICgpIC0+IFJlZlB0cjxBWElz
b2xhdGVkT2JqZWN0PiB7Ci0gICAgICAgICAgICBhdXRvKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUo
KTsKLSAgICAgICAgICAgIGlmICghY2FjaGUgfHwgIWNhY2hlLT5yZWxhdGlvblRhcmdldElEcygp
LmNvbnRhaW5zKGF4SUQpKQotICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAg
ICAgICAgICBSZWZQdHIgYXhPYmplY3QgPSBjYWNoZS0+b2JqZWN0Rm9ySUQoYXhJRCk7Ci0gICAg
ICAgICAgICBpZiAoIWF4T2JqZWN0IHx8ICFheE9iamVjdC0+YWNjZXNzaWJpbGl0eUlzSWdub3Jl
ZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAgICAgICBhdXRv
IG9iamVjdCA9IEFYSXNvbGF0ZWRPYmplY3Q6OmNyZWF0ZSgqYXhPYmplY3QsIGNvbnN0X2Nhc3Q8
QVhJc29sYXRlZFRyZWUqPih0aGlzKSk7Ci0gICAgICAgICAgICBBU1NFUlQoYXhPYmplY3QtPndy
YXBwZXIoKSk7Ci0gICAgICAgICAgICBvYmplY3QtPmF0dGFjaFBsYXRmb3JtV3JhcHBlcihheE9i
amVjdC0+d3JhcHBlcigpKTsKLSAgICAgICAgICAgIHJldHVybiBvYmplY3Q7Ci0gICAgICAgIH0p
OwotICAgICAgICBpZiAob2JqZWN0KSB7Ci0gICAgICAgICAgICBtX3JlYWRlclRocmVhZE5vZGVN
YXAuYWRkKGF4SUQsICpvYmplY3QpOwotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChXVEZNb3Zl
KG9iamVjdCkpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJlc3VsdC5zaHJpbmtUb0ZpdCgpOwot
ICAgIHJldHVybiByZXN1bHQ7CisgICAgLy8gVGhlcmUgaXMgbm8gaXNvbGF0ZWQgb2JqZWN0IGZv
ciB0aGlzIEFYSUQuIFRoaXMgY2FuIGhhcHBlbiBpZiB0aGUgY29ycmVzcG9uZGluZyBsaXZlIG9i
amVjdCBpcyBpZ25vcmVkLgorICAgIC8vIElmIHRoZXJlIGlzIGEgbGl2ZSBvYmplY3QgZm9yIHRo
aXMgSUQgYW5kIGl0IGlzIGFuIGlnbm9yZWQgdGFyZ2V0IG9mIGEgcmVsYXRpb25zaGlwLCBjcmVh
dGUgYW4gaXNvbGF0ZWQgb2JqZWN0IGZvciBpdC4KKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6
cmV0cmlldmVWYWx1ZUZyb21NYWluVGhyZWFkPFJlZlB0cjxBWElzb2xhdGVkT2JqZWN0Pj4oWyZh
eElELCB0aGlzXSAoKSAtPiBSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4geworICAgICAgICBhdXRv
KiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsKKyAgICAgICAgaWYgKCFjYWNoZSB8fCAhY2FjaGUt
PnJlbGF0aW9uVGFyZ2V0SURzKCkuY29udGFpbnMoYXhJRCkpCisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgICAgICBSZWZQdHIgYXhPYmplY3QgPSBjYWNoZS0+b2JqZWN0Rm9ySUQo
YXhJRCk7CisgICAgICAgIGlmICghYXhPYmplY3QgfHwgIWF4T2JqZWN0LT5hY2Nlc3NpYmlsaXR5
SXNJZ25vcmVkKCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBhdXRv
IG9iamVjdCA9IEFYSXNvbGF0ZWRPYmplY3Q6OmNyZWF0ZSgqYXhPYmplY3QsIGNvbnN0X2Nhc3Q8
QVhJc29sYXRlZFRyZWUqPih0aGlzKSk7CisgICAgICAgIEFTU0VSVChheE9iamVjdC0+d3JhcHBl
cigpKTsKKyAgICAgICAgb2JqZWN0LT5hdHRhY2hQbGF0Zm9ybVdyYXBwZXIoYXhPYmplY3QtPndy
YXBwZXIoKSk7CisgICAgICAgIHJldHVybiBvYmplY3Q7CisgICAgfSk7CiB9CiAKLQogdm9pZCBB
WElzb2xhdGVkVHJlZTo6Z2VuZXJhdGVTdWJ0cmVlKEFjY2Vzc2liaWxpdHlPYmplY3QmIGF4T2Jq
ZWN0KQogewogICAgIEFYVFJBQ0UoIkFYSXNvbGF0ZWRUcmVlOjpnZW5lcmF0ZVN1YnRyZWUiX3Mp
OwpAQCAtNjYwLDYgKzY0MSwxMiBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2RlUHJv
cGVydGllcyhBWENvcmVPYmplY3QmIGF4T2JqZWN0LCBjb25zdCBBWFByb3BlcgogICAgICAgICBj
YXNlIEFYUHJvcGVydHlOYW1lOjpQb3NJblNldDoKICAgICAgICAgICAgIHByb3BlcnR5TWFwLnNl
dChBWFByb3BlcnR5TmFtZTo6UG9zSW5TZXQsIGF4T2JqZWN0LnBvc0luU2V0KCkpOwogICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQVhQcm9wZXJ0eU5hbWU6OlJlbW90ZUZyYW1lUGxh
dGZvcm1FbGVtZW50OgorICAgICAgICAgICAgcHJvcGVydHlNYXAuc2V0KEFYUHJvcGVydHlOYW1l
OjpSZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCwgYXhPYmplY3QucmVtb3RlRnJhbWVQbGF0Zm9y
bUVsZW1lbnQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBWFByb3BlcnR5
TmFtZTo6SGFzUmVtb3RlRnJhbWVDaGlsZDoKKyAgICAgICAgICAgIHByb3BlcnR5TWFwLnNldChB
WFByb3BlcnR5TmFtZTo6SGFzUmVtb3RlRnJhbWVDaGlsZCwgYXhPYmplY3QuaGFzUmVtb3RlRnJh
bWVDaGlsZCgpKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFYUHJvcGVydHlO
YW1lOjpSb2xlRGVzY3JpcHRpb246CiAgICAgICAgICAgICBwcm9wZXJ0eU1hcC5zZXQoQVhQcm9w
ZXJ0eU5hbWU6OlJvbGVEZXNjcmlwdGlvbiwgYXhPYmplY3Qucm9sZURlc2NyaXB0aW9uKCkuaXNv
bGF0ZWRDb3B5KCkpOwogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaAppbmRl
eCBhNDE3OTI3OTc4ZDIuLjQ2MWVlYWU2MGFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCkBAIC0x
MDQsNiArMTA0LDcgQEAgZW51bSBjbGFzcyBBWFByb3BlcnR5TmFtZSA6IHVpbnQxNl90IHsKICAg
ICBIYXNIaWdobGlnaHRpbmcsCiAgICAgSGFzSXRhbGljRm9udCwKICAgICBIYXNQbGFpblRleHQs
CisgICAgSGFzUmVtb3RlRnJhbWVDaGlsZCwKICAgICBIYXNVbmRlcmxpbmUsCiAgICAgSGVhZGVy
Q29udGFpbmVyLAogICAgIEhlYWRpbmdMZXZlbCwKQEAgLTIwMSw2ICsyMDIsOCBAQCBlbnVtIGNs
YXNzIEFYUHJvcGVydHlOYW1lIDogdWludDE2X3QgewogICAgIFByZXZlbnRLZXlib2FyZERPTUV2
ZW50RGlzcGF0Y2gsCiAgICAgUmFkaW9CdXR0b25Hcm91cCwKICAgICBSZWxhdGl2ZUZyYW1lLAor
ICAgIFJlbW90ZUZyYW1lT2Zmc2V0LAorICAgIFJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50LAog
ICAgIFJvbGVWYWx1ZSwKICAgICBSb2xlUGxhdGZvcm1TdHJpbmcsCiAgICAgUm9sZURlc2NyaXB0
aW9uLApAQCAtMjU3LDYgKzI2MCw3IEBAIHVzaW5nIEFYUHJvcGVydHlOYW1lU2V0ID0gSGFzaFNl
dDxBWFByb3BlcnR5TmFtZSwgSW50SGFzaDxBWFByb3BlcnR5TmFtZT4sIFdURjo6CiB1c2luZyBB
WFByb3BlcnR5VmFsdWVWYXJpYW50ID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBBWElE
LCBTdHJpbmcsIGJvb2wsIGludCwgdW5zaWduZWQsIGRvdWJsZSwgZmxvYXQsIHVpbnQ2NF90LCBB
Y2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGUsIENvbG9yLCBVUkwsIExheW91dFJlY3QsIEZsb2F0UG9p
bnQsIEZsb2F0UmVjdCwgSW50UG9pbnQsIEludFJlY3QsIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5z
aWduZWQ+LCBWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+LCBWZWN0b3I8QVhJRD4sIFZlY3Rvcjxz
dGQ6OnBhaXI8QVhJRCwgQVhJRD4+LCBWZWN0b3I8U3RyaW5nPiwgUGF0aCwgT3B0aW9uU2V0PEFY
QW5jZXN0b3JGbGFnPiwgSW5zaWRlTGluaywgVmVjdG9yPFZlY3RvcjxBWElEPj4sIENoYXJhY3Rl
clJhbmdlLCBzdGQ6OnBhaXI8QVhJRCwgQ2hhcmFjdGVyUmFuZ2U+CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgLCBSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPgorICAgICwgUmV0YWluUHRy
PGlkPgogI2VuZGlmCiAjaWYgRU5BQkxFKEFYX1RIUkVBRF9URVhUX0FQSVMpCiAgICAgLCBBWFRl
eHRSdW5zCkBAIC0zOTcsNiArNDAxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZUVtcHR5
Q29udGVudChBY2Nlc3NpYmlsaXR5T2JqZWN0Jik7CiAgICAgY29uc3RleHByIGJvb2wgaXNVcGRh
dGluZ1N1YnRyZWUoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RPZlN1YnRyZWVCZWluZ1VwZGF0ZWQ7
IH0KICAgICBjb25zdGV4cHIgdm9pZCB1cGRhdGluZ1N1YnRyZWUoQWNjZXNzaWJpbGl0eU9iamVj
dCogYXhPYmplY3QpIHsgbV9yb290T2ZTdWJ0cmVlQmVpbmdVcGRhdGVkID0gYXhPYmplY3Q7IH0K
KyAgICBSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4gcmV0cmlldmVPYmplY3RGb3JJREZyb21NYWlu
VGhyZWFkKGNvbnN0IEFYSUQpIGNvbnN0OwogCiAgICAgZW51bSBjbGFzcyBBdHRhY2hXcmFwcGVy
IDogYm9vbCB7IE9uTWFpblRocmVhZCwgT25BWFRocmVhZCB9OwogICAgIHN0cnVjdCBOb2RlQ2hh
bmdlIHsKQEAgLTQ5Nyw2ICs1MDIsMzAgQEAgaW5saW5lIFJlZlB0cjxBWElzb2xhdGVkVHJlZT4g
QVhJc29sYXRlZFRyZWU6OnRyZWVGb3JQYWdlSUQoc3RkOjpvcHRpb25hbDxQYWdlSWQKICAgICBy
ZXR1cm4gcGFnZUlEID8gdHJlZUZvclBhZ2VJRCgqcGFnZUlEKSA6IG51bGxwdHI7CiB9CiAKK3Rl
bXBsYXRlPHR5cGVuYW1lIFU+CitpbmxpbmUgVmVjdG9yPFJlZlB0cjxBWENvcmVPYmplY3Q+PiBB
WElzb2xhdGVkVHJlZTo6b2JqZWN0c0ZvcklEcyhjb25zdCBVJiBheElEcykKK3sKKyAgICBBU1NF
UlQoIWlzTWFpblRocmVhZCgpKTsKKworICAgIFZlY3RvcjxSZWZQdHI8QVhDb3JlT2JqZWN0Pj4g
cmVzdWx0OworICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGF4SURzLnNpemUoKSk7
CisgICAgZm9yIChjb25zdCBhdXRvJiBheElEIDogYXhJRHMpIHsKKyAgICAgICAgUmVmUHRyIG9i
amVjdCA9IG9iamVjdEZvcklEKGF4SUQpOworICAgICAgICBpZiAob2JqZWN0KSB7CisgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKFdURk1vdmUob2JqZWN0KSk7CisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgfQorCisgICAgICAgIG9iamVjdCA9IHJldHJpZXZlT2JqZWN0Rm9ySURGcm9t
TWFpblRocmVhZChheElEKTsKKyAgICAgICAgaWYgKG9iamVjdCkgeworICAgICAgICAgICAgbV9y
ZWFkZXJUaHJlYWROb2RlTWFwLmFkZChheElELCAqb2JqZWN0KTsKKyAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoV1RGTW92ZShvYmplY3QpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXN1bHQu
c2hyaW5rVG9GaXQoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9tYWMvQVhJc29sYXRlZE9iamVjdE1hYy5tbQpp
bmRleCBhZGI3ZWM2NDgzNDUuLmUwMmRhMGQxMTJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNv
bGF0ZWRPYmplY3RNYWMubW0KQEAgLTYzLDYgKzYzLDggQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0
Ojppbml0aWFsaXplUGxhdGZvcm1Qcm9wZXJ0aWVzKGNvbnN0IFJlZjxjb25zdCBBY2Nlc3NpYmls
aXQKICAgICAgICAgfQogICAgIH0KIAorICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpS
ZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCwgb2JqZWN0LT5yZW1vdGVGcmFtZVBsYXRmb3JtRWxl
bWVudCgpKTsKKwogICAgIC8vIENhY2hlIHRoZSBTdHJpbmdWYWx1ZSBvbmx5IGlmIGl0IGRpZmZl
cnMgZnJvbSB0aGUgQXR0cmlidXRlZFRleHQuCiAgICAgYXV0byB2YWx1ZSA9IG9iamVjdC0+c3Ry
aW5nVmFsdWUoKTsKICAgICBpZiAoIWF0dHJpYnV0ZWRUZXh0IHx8IHZhbHVlICE9IFN0cmluZyhb
YXR0cmlidXRlZFRleHQgc3RyaW5nXSkpCkBAIC0yMDIsNiArMjA0LDExIEBAIHVuc2lnbmVkIEFY
SXNvbGF0ZWRPYmplY3Q6OnRleHRMZW5ndGgoKSBjb25zdAogICAgIHJldHVybiAwOwogfQogCitS
ZXRhaW5QdHI8aWQ+IEFYSXNvbGF0ZWRPYmplY3Q6OnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gcHJvcGVydHlWYWx1ZTxSZXRhaW5QdHI8aWQ+PihBWFBy
b3BlcnR5TmFtZTo6UmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQpOworfQorCiBSZXRhaW5QdHI8
TlNBdHRyaWJ1dGVkU3RyaW5nPiBBWElzb2xhdGVkT2JqZWN0OjphdHRyaWJ1dGVkU3RyaW5nRm9y
VGV4dE1hcmtlclJhbmdlKEFYVGV4dE1hcmtlclJhbmdlJiYgbWFya2VyUmFuZ2UsIFNwZWxsQ2hl
Y2sgc3BlbGxDaGVjaykgY29uc3QKIHsKICAgICBpZiAoIW1hcmtlclJhbmdlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmpl
Y3RNYWMubW0KaW5kZXggYmEyYWNjZDgwZDA0Li5mYmJlMGJiMmEwNjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVj
dE1hYy5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJB
Y2Nlc3NpYmlsaXR5T2JqZWN0LmgiCiAKKyNpbXBvcnQgIkFYUmVtb3RlRnJhbWUuaCIKICNpbXBv
cnQgIkFjY2Vzc2liaWxpdHlMYWJlbC5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUxpc3QuaCIK
ICNpbXBvcnQgIkNvbG9yQ29jb2EuaCIKQEAgLTUxLDYgKzUyLDcgQEAKICNpbXBvcnQgIldlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLmgiCiAjaW1wb3J0ICJXaWRnZXQuaCIKIAorI2lt
cG9ydCA8cGFsL3NwaS9jb2NvYS9OU0FjY2Vzc2liaWxpdHlTUEkuaD4KICNpbXBvcnQgPHBhbC9z
cGkvbWFjL05TU3BlbGxDaGVja2VyU1BJLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc0
OSw2ICs3NTEsMjkgQEAgUmV0YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4gYXR0cmlidXRlZFN0
cmluZ0NyZWF0ZShOb2RlKiBub2RlLCBTdHJpbmdWaWV3IHRleHQKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCitzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gQVhSZW1vdGVGcmFtZTo6Z2VuZXJhdGVS
ZW1vdGVUb2tlbigpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8qIHBhcmVudCA9IHBhcmVudE9iamVj
dCgpKSB7CisgICAgICAgIC8vIFdlIHVzZSB0aGUgcGFyZW50J3Mgd3JhcHBlciBzbyB0aGF0IHRo
ZSByZW1vdGUgZnJhbWUgYWN0cyBhcyBhIHBhc3MgdGhyb3VnaCBmb3IgdGhlIHJlbW90ZSB0b2tl
biBicmlkZ2UuCisgICAgICAgIE5TRGF0YSAqZGF0YSA9IFtOU0FjY2Vzc2liaWxpdHlSZW1vdGVV
SUVsZW1lbnQgcmVtb3RlVG9rZW5Gb3JMb2NhbFVJRWxlbWVudDpwYXJlbnQtPndyYXBwZXIoKV07
CisgICAgICAgIHJldHVybiBzdGQ6OnNwYW4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtk
YXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOworICAgIH0KKworICAgIHJldHVybiBzdGQ6OnNw
YW48Y29uc3QgdWludDhfdD4geyB9OworfQorCit2b2lkIEFYUmVtb3RlRnJhbWU6OmluaXRpYWxp
emVQbGF0Zm9ybUVsZW1lbnRXaXRoUmVtb3RlVG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+
IHRva2VuLCBpbnQgcHJvY2Vzc0lkZW50aWZpZXIpCit7CisgICAgbV9wcm9jZXNzSWRlbnRpZmll
ciA9IHByb2Nlc3NJZGVudGlmaWVyOworICAgIGlmIChbd3JhcHBlcigpIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3IoYWNjZXNzaWJpbGl0eVNldFByZXNlbnRlclByb2Nlc3NJZGVudGlmaWVy
OildKQorICAgICAgICBbKGlkKXdyYXBwZXIoKSBhY2Nlc3NpYmlsaXR5U2V0UHJlc2VudGVyUHJv
Y2Vzc0lkZW50aWZpZXI6cHJvY2Vzc0lkZW50aWZpZXJdOworICAgIE5TRGF0YSAqdG9rZW5EYXRh
ID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOnRva2VuLmRhdGEoKSBsZW5ndGg6dG9rZW4uc2l6ZSgp
XTsKKyAgICBtX3JlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50ID0gYWRvcHROUyhbW05TQWNjZXNz
aWJpbGl0eVJlbW90ZVVJRWxlbWVudCBhbGxvY10gaW5pdFdpdGhSZW1vdGVUb2tlbjp0b2tlbkRh
dGFdKTsKKworICAgIGlmIChhdXRvKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKSkKKyAgICAgICAg
Y2FjaGUtPm9uUmVtb3RlRnJhbWVJbml0aWFsaXplZCgqdGhpcyk7Cit9CisKIG5hbWVzcGFjZSBB
Y2Nlc3NpYmlsaXR5IHsKIAogUGxhdGZvcm1Sb2xlTWFwIGNyZWF0ZVBsYXRmb3JtUm9sZU1hcCgp
CkBAIC04OTEsNiArOTE2LDcgQEAgUGxhdGZvcm1Sb2xlTWFwIGNyZWF0ZVBsYXRmb3JtUm9sZU1h
cCgpCiAgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlN1cGVyc2NyaXB0LCBOU0FjY2Vzc2li
aWxpdHlHcm91cFJvbGUgfSwKICAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6TW9kZWwsIE5T
QWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAogICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpT
dWdnZXN0aW9uLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3Np
YmlsaXR5Um9sZTo6UmVtb3RlRnJhbWUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAogICAg
IH07CiAgICAgUGxhdGZvcm1Sb2xlTWFwIHJvbGVNYXA7CiAgICAgZm9yIChhdXRvJiByb2xlIDog
cm9sZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0KaW5kZXggNjM1
N2ZhN2MyNzFiLi5mMTQyNDVmYzNiNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlckJhc2UubW0KQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgIkFYQ29yZU9iamVjdC5oIgog
I2ltcG9ydCAiQVhJc29sYXRlZE9iamVjdC5oIgogI2ltcG9ydCAiQVhPYmplY3RDYWNoZS5oIgor
I2ltcG9ydCAiQVhSZW1vdGVGcmFtZS5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUFSSUFHcmlk
Um93LmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5TGlzdC5oIgogI2ltcG9ydCAiQWNjZXNzaWJp
bGl0eUxpc3RCb3guaCIKQEAgLTI2NSwxMyArMjY2LDEzIEBAIE5TQXJyYXkgKm1ha2VOU0FycmF5
KGNvbnN0IFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
JiBjCiAgICAgICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgICAgIGF1dG8gd3JhcHBlciA9IGNo
aWxkLT53cmFwcGVyKCk7Ci0KICAgICAgICAgLy8gV2Ugd2FudCB0byByZXR1cm4gdGhlIGF0dGFj
aG1lbnQgdmlldyBpbnN0ZWFkIG9mIHRoZSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBhdHRhY2ht
ZW50LAogICAgICAgICAvLyBvdGhlcndpc2UsIHdlIGdldCBwYWxpbmRyb21lIGVycm9ycyBpbiB0
aGUgQVggaGllcmFyY2h5LgogICAgICAgICBpZiAoY2hpbGQtPmlzQXR0YWNobWVudCgpKSB7CiAg
ICAgICAgICAgICBpZiAoaWQgYXR0YWNobWVudFZpZXcgPSB3cmFwcGVyLmF0dGFjaG1lbnRWaWV3
KQogICAgICAgICAgICAgICAgIHJldHVybiBhdHRhY2htZW50VmlldzsKLSAgICAgICAgfQorICAg
ICAgICB9IGVsc2UgaWYgKGNoaWxkLT5pc1JlbW90ZUZyYW1lKCkpCisgICAgICAgICAgICByZXR1
cm4gY2hpbGQtPnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkuZ2V0KCk7CiAKICAgICAgICAg
cmV0dXJuIHdyYXBwZXI7CiAgICAgfSkuYXV0b3JlbGVhc2UoKTsKQEAgLTM4OSw3ICszOTAsNyBA
QCBOU0FycmF5ICptYWtlTlNBcnJheShjb25zdCBXZWJDb3JlOjpBWENvcmVPYmplY3Q6OkFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciYgYwogLSAoQk9PTClpc0lzb2xhdGVkT2JqZWN0CiB7CiAj
aWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKLSAgICBhdXRvKiBiYWNraW5n
T2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgUmVmUHRyIGJhY2tpbmdPYmplY3Qg
PSBkeW5hbWljRG93bmNhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdD4oc2VsZi5iYXNlVXBkYXRlQmFj
a2luZ1N0b3JlKTsKICAgICByZXR1cm4gYmFja2luZ09iamVjdCAmJiBiYWNraW5nT2JqZWN0LT5p
c0FYSXNvbGF0ZWRPYmplY3RJbnN0YW5jZSgpOwogI2Vsc2UKICAgICByZXR1cm4gTk87CkBAIC01
MjMsNyArNTI0LDcgQEAgc3RhdGljIHZvaWQgY29udmVydFBhdGhUb1NjcmVlblNwYWNlRnVuY3Rp
b24oUGF0aENvbnZlcnNpb25JbmZvJiBjb252ZXJzaW9uLCBjb24KIAogLSAoQ0dSZWN0KWNvbnZl
cnRSZWN0VG9TcGFjZTooY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JilyZWN0IHNwYWNlOihBY2Nl
c3NpYmlsaXR5Q29udmVyc2lvblNwYWNlKXNwYWNlCiB7Ci0gICAgYXV0byogYmFja2luZ09iamVj
dCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0ciBiYWNraW5nT2JqZWN0ID0gZHlu
YW1pY0Rvd25jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3Q+KHNlbGYuYmFzZVVwZGF0ZUJhY2tpbmdT
dG9yZSk7CiAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQogICAgICAgICByZXR1cm4gQ0dSZWN0WmVy
bzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCA2YzVlNmI3
YWNkOWMuLjc1MDJkOWEwZTQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJN
YWMubW0KQEAgLTM0LDYgKzM0LDcgQEAKICNpbXBvcnQgIkFYSXNvbGF0ZWRPYmplY3QuaCIKICNp
bXBvcnQgIkFYTG9nZ2VyLmgiCiAjaW1wb3J0ICJBWE9iamVjdENhY2hlLmgiCisjaW1wb3J0ICJB
WFJlbW90ZUZyYW1lLmgiCiAjaW1wb3J0ICJBWFRleHRNYXJrZXIuaCIKICNpbXBvcnQgIkFjY2Vz
c2liaWxpdHlBUklBR3JpZFJvdy5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUxhYmVsLmgiCkBA
IC00NzksNiArNDgwLDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogI2RlZmluZSBOU0Fj
Y2Vzc2liaWxpdHlUZXh0SW5wdXRNYXJrZWRUZXh0TWFya2VyUmFuZ2VBdHRyaWJ1dGUgQCJBWFRl
eHRJbnB1dE1hcmtlZFRleHRNYXJrZXJSYW5nZSIKICNlbmRpZgogCisjaWZuZGVmIGtBWENvbnZl
cnRSZWxhdGl2ZUZyYW1lUGFyYW1ldGVyaXplZEF0dHJpYnV0ZQorI2RlZmluZSBrQVhDb252ZXJ0
UmVsYXRpdmVGcmFtZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgQCJBWENvbnZlcnRSZWxhdGl2ZUZy
YW1lIgorI2VuZGlmCisKIEBpbXBsZW1lbnRhdGlvbiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlcgogCiAtICh2b2lkKWRldGFjaApAQCAtNjkyLDcgKzY5Nyw3IEBAIHN0YXRpYyBSZXRhaW5Q
dHI8QVhUZXh0TWFya2VyUmVmPiBwcmV2aW91c1RleHRNYXJrZXIoQVhPYmplY3RDYWNoZSogY2Fj
aGUsIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIGF1dG8qIGJh
Y2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHI8QVhDb3JlT2Jq
ZWN0PiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CiAgICAgaWYgKCFiYWNr
aW5nT2JqZWN0KQogICAgICAgICByZXR1cm4gbmlsOwogCkBAIC0xMjU2LDcgKzEyNjEsNyBAQCBB
TExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKIAogLSAoTlNBcnJheSAqKXJlbmRl
cldpZGdldENoaWxkcmVuCiB7Ci0gICAgYXV0byogYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNr
aW5nT2JqZWN0OworICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+IGJhY2tpbmdPYmplY3QgPSBzZWxm
LmF4QmFja2luZ09iamVjdDsKICAgICBpZiAoIWJhY2tpbmdPYmplY3QgfHwgIWJhY2tpbmdPYmpl
Y3QtPmlzV2lkZ2V0KCkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTEyNzksNyArMTI4NCw3
IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAtIChpZClyZW1vdGVBY2Nl
c3NpYmlsaXR5UGFyZW50T2JqZWN0CiB7Ci0gICAgYXV0byogYmFja2luZ09iamVjdCA9IHNlbGYu
YXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+IGJhY2tpbmdPYmplY3Qg
PSBzZWxmLmF4QmFja2luZ09iamVjdDsKICAgICByZXR1cm4gYmFja2luZ09iamVjdCA/IGJhY2tp
bmdPYmplY3QtPnJlbW90ZVBhcmVudE9iamVjdCgpIDogbmlsOwogfQogCkBAIC0xMjk2LDcgKzEz
MDEsNyBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0VG9WZWN0b3IoTlNBcnJheSogYXJyYXksIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaAogCiAtIChBWFRleHRNYXJrZXJSYW5nZVJl
ZilzZWxlY3RlZFRleHRNYXJrZXJSYW5nZQogewotICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBz
ZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBiYWNraW5nT2Jq
ZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CiAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQogICAg
ICAgICByZXR1cm4gbmlsOwogCkBAIC0xMzY2LDEyICsxMzcxLDE4IEBAIHN0YXRpYyB2b2lkIFdl
YlRyYW5zZm9ybUNHUGF0aFRvTlNCZXppZXJQYXRoKHZvaWQqIGluZm8sIGNvbnN0IENHUGF0aEVs
ZW1lbnQgKmVsCiAKIC0gKE5TU3RyaW5nKilyb2xlCiB7CisgICAgUmVmUHRyPEFYQ29yZU9iamVj
dD4gYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIGlmICghYmFja2lu
Z09iamVjdCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfQkVHSU4KLSAgICBpZiAoc2VsZi5heEJhY2tpbmdPYmplY3QtPmlzQXR0YWNobWVudCgp
KQorICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkKICAgICAgICAgcmV0dXJu
IFtbc2VsZiBhdHRhY2htZW50Vmlld10gYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNj
ZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGVdOworICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc1JlbW90
ZUZyYW1lKCkpCisgICAgICAgIHJldHVybiBbYmFja2luZ09iamVjdC0+cmVtb3RlRnJhbWVQbGF0
Zm9ybUVsZW1lbnQoKS5nZXQoKSBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3Np
YmlsaXR5Um9sZUF0dHJpYnV0ZV07CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQK
IAotICAgIE5TU3RyaW5nICpzdHJpbmcgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+cm9sZVBsYXRm
b3JtU3RyaW5nKCk7CisgICAgTlNTdHJpbmcgKnN0cmluZyA9IGJhY2tpbmdPYmplY3QtPnJvbGVQ
bGF0Zm9ybVN0cmluZygpOwogICAgIGlmIChzdHJpbmcubGVuZ3RoKQogICAgICAgICByZXR1cm4g
c3RyaW5nOwogICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlVbmtub3duUm9sZTsKQEAgLTEzNzks
NyArMTM5MCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAtIChCT09M
KWlzRW1wdHlHcm91cAogewotICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2lu
Z09iamVjdDsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBiYWNraW5nT2JqZWN0ID0gc2VsZi5h
eEJhY2tpbmdPYmplY3Q7CiAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKQEAgLTEzODgsNiArMTM5OSw5IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0VORAogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIAorICAgIGlmIChiYWNraW5n
T2JqZWN0LT5pc1JlbW90ZUZyYW1lKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIHJl
dHVybiBbW3NlbGYgcm9sZV0gaXNFcXVhbDpOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGVdCiAgICAg
ICAgICYmIGJhY2tpbmdPYmplY3QtPmNoaWxkcmVuKCkuaXNFbXB0eSgpCiAgICAgICAgICYmICFb
W3NlbGYgcmVuZGVyV2lkZ2V0Q2hpbGRyZW5dIGNvdW50XTsKQEAgLTEzOTYsNyArMTQxMCw3IEBA
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfQkVHSU4KIC0gKE5TU3RyaW5nKilzdWJyb2xlCiB7Ci0gICAgYXV0byogYmFja2lu
Z09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+
IGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKICAgICBpZiAoIWJhY2tpbmdP
YmplY3QpCiAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTE0MTMsNyArMTQyNyw3IEBAIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAtIChOU1N0cmluZyopcm9sZURlc2NyaXB0
aW9uCiB7Ci0gICAgYXV0byogYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0Owor
ICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+IGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09i
amVjdDsKICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCiAgICAgICAgIHJldHVybiBuaWw7CiAKQEAg
LTE0MjEsNiArMTQzNSw4IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAg
ICAgLy8gYXR0YWNobWVudHMgaGF2ZSB0aGUgQVhJbWFnZSByb2xlLCBidXQgYSBkaWZmZXJlbnQg
c3Vicm9sZQogICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkKICAgICAgICAg
cmV0dXJuIFtbc2VsZiBhdHRhY2htZW50Vmlld10gYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
Ok5TQWNjZXNzaWJpbGl0eVJvbGVEZXNjcmlwdGlvbkF0dHJpYnV0ZV07CisgICAgaWYgKGJhY2tp
bmdPYmplY3QtPmlzUmVtb3RlRnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIFtiYWNraW5nT2JqZWN0
LT5yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpLmdldCgpIGFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRpb25BdHRyaWJ1dGVdOwogQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBTdHJpbmcgcm9sZURlc2NyaXB0aW9u
ID0gYmFja2luZ09iamVjdC0+cm9sZURlc2NyaXB0aW9uKCk7CkBAIC0xNDczLDYgKzE0ODksMjgg
QEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgcmV0dXJuIGF4U2Nyb2xs
VmlldyA/IFtheFNjcm9sbFZpZXctPnBsYXRmb3JtV2lkZ2V0KCkgd2luZG93XSA6IG5pbDsKIH0K
IAorLSAoTlNBcnJheSAqKV90cmFuc2Zvcm1TcGVjaWFsQ2hpbGRyZW5DYXNlczooUmVmUHRyPEFY
Q29yZU9iamVjdD4pYmFja2luZ09iamVjdAoreworI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQor
ICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc01vZGVsKCkpIHsKKyAgICAgICAgYXV0byBtb2RlbENo
aWxkcmVuID0gYmFja2luZ09iamVjdC0+bW9kZWxFbGVtZW50Q2hpbGRyZW4oKTsKKyAgICAgICAg
aWYgKG1vZGVsQ2hpbGRyZW4uc2l6ZSgpKSB7CisgICAgICAgICAgICByZXR1cm4gY3JlYXRlTlNB
cnJheShXVEZNb3ZlKG1vZGVsQ2hpbGRyZW4pLCBbXSAoYXV0byYmIGNoaWxkKSAtPiBpZCB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkLmdldCgpOworICAgICAgICAgICAgfSkuYXV0b3Jl
bGVhc2UoKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCisgICAgY29uc3QgYXV0byYgY2hp
bGRyZW4gPSBiYWNraW5nT2JqZWN0LT5jaGlsZHJlbigpOworICAgIGlmICghY2hpbGRyZW4uc2l6
ZSgpKSB7CisgICAgICAgIGlmIChOU0FycmF5ICpjaGlsZHJlbiA9IFtzZWxmIHJlbmRlcldpZGdl
dENoaWxkcmVuXSkKKyAgICAgICAgICAgIHJldHVybiBjaGlsZHJlbjsKKyAgICB9CisKKyAgICBy
ZXR1cm4gbmlsOworfQorCiAvLyBGSVhNRTogc3BsaXQgdXAgdGhpcyBmdW5jdGlvbiBpbiBhIGJl
dHRlciB3YXkuCiAvLyBzdWdnZXN0aW9uczogVXNlIGEgaGFzaCB0YWJsZSB0aGF0IG1hcHMgYXR0
cmlidXRlIG5hbWVzIHRvIGZ1bmN0aW9uIGNhbGxzLAogLy8gb3IgbWF5YmUgcG9pbnRlcnMgdG8g
bWVtYmVyIGZ1bmN0aW9ucwpAQCAtMTUzMSwyMiArMTU2OSw5IEBAIEFMTE9XX0RFUFJFQ0FURURf
SU1QTEVNRU5UQVRJT05TX0VORAogICAgIH0KIAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0Vx
dWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGVdIHx8IFthdHRyaWJ1
dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkluTmF2aWdhdGlv
bk9yZGVyQXR0cmlidXRlXSkgewotI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQotICAgICAgICBp
ZiAoYmFja2luZ09iamVjdC0+aXNNb2RlbCgpKSB7Ci0gICAgICAgICAgICBhdXRvIG1vZGVsQ2hp
bGRyZW4gPSBiYWNraW5nT2JqZWN0LT5tb2RlbEVsZW1lbnRDaGlsZHJlbigpOwotICAgICAgICAg
ICAgaWYgKG1vZGVsQ2hpbGRyZW4uc2l6ZSgpKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNy
ZWF0ZU5TQXJyYXkoV1RGTW92ZShtb2RlbENoaWxkcmVuKSwgW10gKGF1dG8mJiBjaGlsZCkgLT4g
aWQgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGQuZ2V0KCk7Ci0gICAgICAgICAg
ICAgICAgfSkuYXV0b3JlbGVhc2UoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotI2VuZGlm
Ci0KLSAgICAgICAgY29uc3QgYXV0byYgY2hpbGRyZW4gPSBiYWNraW5nT2JqZWN0LT5jaGlsZHJl
bigpOwotICAgICAgICBpZiAoY2hpbGRyZW4uaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBpZiAo
TlNBcnJheSAqd2lkZ2V0Q2hpbGRyZW4gPSBbc2VsZiByZW5kZXJXaWRnZXRDaGlsZHJlbl0pCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIHdpZGdldENoaWxkcmVuOwotICAgICAgICB9CisgICAgICAg
IE5TQXJyYXkgKnNwZWNpYWxDaGlsZHJlbiA9IFtzZWxmIF90cmFuc2Zvcm1TcGVjaWFsQ2hpbGRy
ZW5DYXNlczpiYWNraW5nT2JqZWN0XTsKKyAgICAgICAgaWYgKHNwZWNpYWxDaGlsZHJlbi5jb3Vu
dCkKKyAgICAgICAgICAgIHJldHVybiBzcGVjaWFsQ2hpbGRyZW47CiAKICAgICAgICAgLy8gVGhl
IHRyZWUncyAoQVhPdXRsaW5lKSBjaGlsZHJlbiBhcmUgc3VwcG9zZWQgdG8gYmUgaXRzIHJvd3Mg
YW5kIGNvbHVtbnMuCiAgICAgICAgIC8vIFRoZSBBUklBIHNwZWMgZG9lc24ndCBoYXZlIGNvbHVt
bnMsIHNvIHdlIGp1c3QgbmVlZCByb3dzLgpAQCAtMTU1Nyw3ICsxNTgyLDcgQEAgQUxMT1dfREVQ
UkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5p
c1RyZWVJdGVtKCkpCiAgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVj
dC0+YXJpYVRyZWVJdGVtQ29udGVudCgpKTsKIAotICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXko
Y2hpbGRyZW4pOworICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVjdC0+Y2hp
bGRyZW4oKSk7CiAgICAgfQogCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmlu
ZzogTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZV0pIHsKQEAgLTE3MTMs
MTYgKzE3MzgsMTQgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAg
aWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5RW5hYmxl
ZEF0dHJpYnV0ZV0pCiAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6IGJh
Y2tpbmdPYmplY3QtPmlzRW5hYmxlZCgpXTsKIAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0Vx
dWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVNpemVBdHRyaWJ1dGVdKSB7Ci0gICAgICAgIGF1
dG8gc2l6ZSA9IGJhY2tpbmdPYmplY3QtPnNpemUoKTsKLSAgICAgICAgcmV0dXJuIFtOU1ZhbHVl
IHZhbHVlV2l0aFNpemU6TlNNYWtlU2l6ZShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpXTsK
LSAgICB9CisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2li
aWxpdHlTaXplQXR0cmlidXRlXSkKKyAgICAgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aFNp
emU6KENHU2l6ZSliYWNraW5nT2JqZWN0LT5zaXplKCldOwogCiAgICAgaWYgKFthdHRyaWJ1dGVO
YW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlQcmltYXJ5U2NyZWVuSGVpZ2h0QXR0
cmlidXRlXSkKICAgICAgICAgcmV0dXJuIEAoYmFja2luZ09iamVjdC0+cHJpbWFyeVNjcmVlblJl
Y3QoKS5oZWlnaHQoKSk7CiAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5n
Ok5TQWNjZXNzaWJpbGl0eVBvc2l0aW9uQXR0cmlidXRlXSkKLSAgICAgICAgcmV0dXJuIEAoQ0dQ
b2ludChiYWNraW5nT2JqZWN0LT5zY3JlZW5SZWxhdGl2ZVBvc2l0aW9uKCkpKTsKKyAgICAgICAg
cmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aFBvaW50OihDR1BvaW50KWJhY2tpbmdPYmplY3QtPnNj
cmVlblJlbGF0aXZlUG9zaXRpb24oKV07CiAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVh
bFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVBhdGhBdHRyaWJ1dGVdKQogICAgICAgICByZXR1cm4g
W3NlbGYgcGF0aF07CkBAIC0yMjM3LDYgKzIyNjAsMTAgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBM
RU1FTlRBVElPTlNfRU5ECiAgICAgICAgIHJldHVybiByYW5nZSA/IHJhbmdlLnBsYXRmb3JtRGF0
YSgpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKSA6IG5pbDsKICAgICB9CiAKKyAgICAvLyBWb2ljZU92
ZXIgcHJvcGVydHkgdG8gaWdub3JlIGNlcnRhaW4gZ3JvdXBzLgorICAgIGlmIChbYXR0cmlidXRl
TmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWEF1dG9JbnRlcmFjdGFibGUiXSkKKyAgICAgICAgcmV0
dXJuIEAoYmFja2luZ09iamVjdC0+aXNSZW1vdGVGcmFtZSgpKTsKKwogICAgIC8vIFVzZWQgYnkg
TGF5b3V0VGVzdHMgb25seSwgbm90IGJ5IEFUIGNsaWVudHMuCiAgICAgaWYgKFVOTElLRUxZKFth
dHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpAIkFYQVJJQVJvbGUiXSkpCiAgICAgICAgIHJl
dHVybiBiYWNraW5nT2JqZWN0LT5jb21wdXRlZFJvbGVTdHJpbmcoKTsKQEAgLTIzMzAsNyArMjM1
Nyw4IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICBpZiAo
YXhPYmplY3QtPmlzQXR0YWNobWVudCgpKSB7CiAgICAgICAgICAgICBpZiAoaWQgYXR0YWNobWVu
dFZpZXcgPSBbYXhPYmplY3QtPndyYXBwZXIoKSBhdHRhY2htZW50Vmlld10pCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGF0dGFjaG1lbnRWaWV3OwotICAgICAgICB9CisgICAgICAgIH0gZWxzZSBp
ZiAoYXhPYmplY3QtPmlzUmVtb3RlRnJhbWUoKSkKKyAgICAgICAgICAgIHJldHVybiBheE9iamVj
dC0+cmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKS5nZXQoKTsKIAogICAgICAgICAvLyBPbmx5
IGNhbGwgb3V0IHRvIHRoZSBtYWluLXRocmVhZCBpZiB0aGlzIG9iamVjdCBoYXMgYSBiYWNraW5n
IHdpZGdldCB0byBxdWVyeS4KICAgICAgICAgaWYgKGF4T2JqZWN0LT5pc1dpZGdldCgpKSB7CkBA
IC0yNTA3LDYgKzI1MzUsMTAgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5E
CiAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzV2ViQXJlYSgpKQogICAgICAgICByZXR1cm4gd2Vi
QXJlYVBhcmFtQXR0cnM7CiAKKyAgICAvLyBUaGUgb2JqZWN0IHRoYXQgc2VydmVzIHVwIHRoZSBy
ZW1vdGUgZnJhbWUgYWxzbyBpcyB0aGUgb25lIHRoYXQgZG9lcyB0aGUgZnJhbWUgY29udmVyc2lv
bi4KKyAgICBpZiAoYmFja2luZ09iamVjdC0+aGFzUmVtb3RlRnJhbWVDaGlsZCgpKQorICAgICAg
ICByZXR1cm4gW3BhcmFtQXR0cnMgYXJyYXlCeUFkZGluZ09iamVjdDprQVhDb252ZXJ0UmVsYXRp
dmVGcmFtZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdOworCiAgICAgcmV0dXJuIHBhcmFtQXR0cnM7
CiB9CiAKQEAgLTI1NzgsNyArMjYxMCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0VORAogewogICAgIEFYVFJBQ0UoIldlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vz
c2liaWxpdHlQZXJmb3JtU2hvd01lbnVBY3Rpb24iX3MpOwogCi0gICAgYXV0byogYmFja2luZ09i
amVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+IGJh
Y2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKICAgICBpZiAoIWJhY2tpbmdPYmpl
Y3QpIHsKICAgICAgICAgQVhMT0cobWFrZVN0cmluZygiTm8gYmFja2luZ09iamVjdCBmb3Igd3Jh
cHBlciAiLCBoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHNlbGYpKSkpOwogICAgICAg
ICByZXR1cm47CkBAIC0yODIyLDcgKzI4NTQsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVO
VEFUSU9OU19FTkQKICAgICBpZiAoIXJhbmdlLmxlbmd0aCkKICAgICAgICAgcmV0dXJuIG5pbDsK
IAotICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBS
ZWZQdHI8QVhDb3JlT2JqZWN0PiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7
CiAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQogICAgICAgICByZXR1cm4gbmlsOwogCkBAIC0zMTc3
LDYgKzMyMDksMTggQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB3aWRnZXRDaGlsZHJlbjsKICAgICAgICAgICAgICAgICBj
cml0ZXJpYS5yZXN1bHRzTGltaXQgLT0gW3dpZGdldENoaWxkcmVuIGNvdW50XTsKICAgICAgICAg
ICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChiYWNraW5nT2JqZWN0LT5pc1JlbW90ZUZyYW1lKCkK
KyAgICAgICAgICAgICYmIGNyaXRlcmlhLnNlYXJjaEtleXMuY29udGFpbnMoQWNjZXNzaWJpbGl0
eVNlYXJjaEtleTo6QW55VHlwZSkKKyAgICAgICAgICAgICYmICghY3JpdGVyaWEudmlzaWJsZU9u
bHkgfHwgYmFja2luZ09iamVjdC0+aXNWaXNpYmxlKCkpKSB7CisgICAgICAgICAgICBOU0FycmF5
ICpyZW1vdGVGcmFtZUNoaWxkcmVuID0gW3NlbGYgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
Ok5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXTsKKyAgICAgICAgICAgIEFTU0VSVChy
ZW1vdGVGcmFtZUNoaWxkcmVuLmNvdW50ID09IDEpOworICAgICAgICAgICAgaWYgKHJlbW90ZUZy
YW1lQ2hpbGRyZW4uY291bnQgPT0gMSkgeworICAgICAgICAgICAgICAgIE5TVUludGVnZXIgaW5j
bHVkZWRDaGlsZHJlbkNvdW50ID0gc3RkOjptaW4oW3JlbW90ZUZyYW1lQ2hpbGRyZW4gY291bnRd
LCBOU1VJbnRlZ2VyKGNyaXRlcmlhLnJlc3VsdHNMaW1pdCkpOworICAgICAgICAgICAgICAgIHdp
ZGdldENoaWxkcmVuID0gW3JlbW90ZUZyYW1lQ2hpbGRyZW4gc3ViYXJyYXlXaXRoUmFuZ2U6TlNN
YWtlUmFuZ2UoMCwgaW5jbHVkZWRDaGlsZHJlbkNvdW50KV07CisgICAgICAgICAgICAgICAgaWYg
KFt3aWRnZXRDaGlsZHJlbiBjb3VudF0gPj0gY3JpdGVyaWEucmVzdWx0c0xpbWl0KQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gcmVtb3RlRnJhbWVDaGlsZHJlbjsKKyAgICAgICAgICAgICAg
ICBjcml0ZXJpYS5yZXN1bHRzTGltaXQgLT0gW3dpZGdldENoaWxkcmVuIGNvdW50XTsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciByZXN1bHRzOwpAQCAtMzY2OSw2ICszNzEzLDExIEBAIEFM
TE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIGlmIChVTkxJS0VMWShbYXR0
cmlidXRlIGlzRXF1YWxUb1N0cmluZzpfQVhUZXh0TWFya2VyUmFuZ2VGb3JOU1JhbmdlQXR0cmli
dXRlXSkpCiAgICAgICAgIHJldHVybiBiYWNraW5nT2JqZWN0LT50ZXh0TWFya2VyUmFuZ2VGb3JO
U1JhbmdlKHJhbmdlKS5wbGF0Zm9ybURhdGEoKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiAKKyAg
ICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6a0FYQ29udmVydFJlbGF0aXZlRnJhbWVQ
YXJhbWV0ZXJpemVkQXR0cmlidXRlXSkgeworICAgICAgICBhdXRvKiBwYXJlbnQgPSBiYWNraW5n
T2JqZWN0LT5wYXJlbnRPYmplY3QoKTsKKyAgICAgICAgcmV0dXJuIHBhcmVudCA/IFtOU1ZhbHVl
IHZhbHVlV2l0aFJlY3Q6cGFyZW50LT5jb252ZXJ0RnJhbWVUb1NwYWNlKEZsb2F0UmVjdChyZWN0
KSwgQWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZTo6UGFnZSldIDogbmlsOworICAgIH0KKwog
ICAgIC8vIFRoZXJlIGFyZSBzb21lIHBhcmFtZXRlcnMgdGhhdCBzdXBlciBoYW5kbGVzIHRoYXQg
YXJlIG5vdCBleHBsaWNpdGx5IHJldHVybmVkIGJ5IHRoZSBsaXN0IG9mIHRoZSBlbGVtZW50J3Mg
YXR0cmlidXRlcy4KICAgICAvLyBJbiB0aGF0IGNhc2UgaXQgbXVzdCBiZSBwYXNzZWQgdG8gc3Vw
ZXIuCiAgICAgcmV0dXJuIFtzdXBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6YXR0cmli
dXRlIGZvclBhcmFtZXRlcjpwYXJhbWV0ZXJdOwpAQCAtMzcyMiw4ICszNzcxLDEwIEBAIEFMTE9X
X0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICBpZiAoIWNoaWxkKQogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
ICpjaGlsZFdyYXBwZXIgPSBjaGlsZC0+d3JhcHBlcigpOwotICAgICAgICBpZiAoY2hpbGRXcmFw
cGVyID09IHRhcmdldENoaWxkIHx8IChjaGlsZC0+aXNBdHRhY2htZW50KCkgJiYgW2NoaWxkV3Jh
cHBlciBhdHRhY2htZW50Vmlld10gPT0gdGFyZ2V0Q2hpbGQpKQorICAgICAgICBpZiAoY2hpbGRX
cmFwcGVyID09IHRhcmdldENoaWxkIHx8IChjaGlsZC0+aXNBdHRhY2htZW50KCkgJiYgW2NoaWxk
V3JhcHBlciBhdHRhY2htZW50Vmlld10gPT0gdGFyZ2V0Q2hpbGQpCisgICAgICAgICAgICB8fCAo
Y2hpbGQtPmlzUmVtb3RlRnJhbWUoKSAmJiBjaGlsZC0+cmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1l
bnQoKSA9PSB0YXJnZXRDaGlsZCkpIHsKICAgICAgICAgICAgIHJldHVybiBpOworICAgICAgICB9
CiAgICAgfQogICAgIHJldHVybiBOU05vdEZvdW5kOwogfQpAQCAtMzc0MCw3ICszNzkxLDcgQEAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBpZiAoW2F0dHJpYnV0ZSBp
c0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGVdKSB7CiAgICAg
ICAgIC8vIFRyZWUgaXRlbXMgb2JqZWN0IHJldHVybnMgYSBkaWZmZXJlbnQgc2V0IG9mIGNoaWxk
cmVuIHRoYW4gdGhvc2UgdGhhdCBhcmUgaW4gY2hpbGRyZW4oKQogICAgICAgICAvLyBiZWNhdXNl
IGFuIEFYT3V0bGluZSAodGhlIG1hYyByb2xlIGlzIGJlY29tZXMpIGhhcyBzb21lIG9kZCBzdGlw
dWxhdGlvbnMuCi0gICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc1RyZWUoKSB8fCBiYWNraW5n
T2JqZWN0LT5pc1RyZWVJdGVtKCkpCisgICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc1RyZWUo
KSB8fCBiYWNraW5nT2JqZWN0LT5pc1RyZWVJdGVtKCkgfHwgYmFja2luZ09iamVjdC0+aXNSZW1v
dGVGcmFtZSgpKQogICAgICAgICAgICAgcmV0dXJuIFtbc2VsZiBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGVdIGNvdW50XTsKIAogICAg
ICAgICBhdXRvIGNoaWxkcmVuU2l6ZSA9IGJhY2tpbmdPYmplY3QtPmNoaWxkcmVuKCkuc2l6ZSgp
OwpAQCAtMzc3NiwxNiArMzgyNyw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VO
RAogCiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNo
aWxkcmVuQXR0cmlidXRlXSkgewogICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+Y2hpbGRyZW4o
KS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIE5TQXJyYXkgKmNoaWxkcmVuID0gbmlsOwotI2lm
IEVOQUJMRShNT0RFTF9FTEVNRU5UKQotICAgICAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlz
TW9kZWwoKSkgewotICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gY3JlYXRlTlNBcnJheShiYWNr
aW5nT2JqZWN0LT5tb2RlbEVsZW1lbnRDaGlsZHJlbigpLCBbXSAoYXV0byYmIGNoaWxkKSAtPiBp
ZCB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZC5nZXQoKTsKLSAgICAgICAgICAg
ICAgICB9KS5hdXRvcmVsZWFzZSgpOwotICAgICAgICAgICAgfSBlbHNlCi0jZW5kaWYKLSAgICAg
ICAgICAgICAgICBjaGlsZHJlbiA9IFtzZWxmIHJlbmRlcldpZGdldENoaWxkcmVuXTsKLSAgICAg
ICAgICAgIAorICAgICAgICAgICAgTlNBcnJheSAqY2hpbGRyZW4gPSBbc2VsZiBfdHJhbnNmb3Jt
U3BlY2lhbENoaWxkcmVuQ2FzZXM6YmFja2luZ09iamVjdF07CiAgICAgICAgICAgICBpZiAoIWNo
aWxkcmVuKQogICAgICAgICAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTM4MTYsOCArMzg1OCwx
MyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgICAgICAgICAgLy8g
VGhlIGF0dGFjaG1lbnQgdmlldyBzaG91bGQgYmUgcmV0dXJuZWQsIG90aGVyd2lzZSBBWCBwYWxp
bmRyb21lIGVycm9ycyBvY2N1ci4KICAgICAgICAgICAgIGlkIGF0dGFjaG1lbnRWaWV3ID0gbmls
OwotICAgICAgICAgICAgaWYgKFt3cmFwcGVyIGlzS2luZE9mQ2xhc3M6W1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyIGNsYXNzXV0gJiYgd3JhcHBlci5heEJhY2tpbmdPYmplY3QgJiYgd3Jh
cHBlci5heEJhY2tpbmdPYmplY3QtPmlzQXR0YWNobWVudCgpKQotICAgICAgICAgICAgICAgIGF0
dGFjaG1lbnRWaWV3ID0gW3dyYXBwZXIgYXR0YWNobWVudFZpZXddOworICAgICAgICAgICAgaWYg
KFt3cmFwcGVyIGlzS2luZE9mQ2xhc3M6W1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGNs
YXNzXV0gJiYgd3JhcHBlci5heEJhY2tpbmdPYmplY3QpIHsKKyAgICAgICAgICAgICAgICBpZiAo
d3JhcHBlci5heEJhY2tpbmdPYmplY3QtPmlzQXR0YWNobWVudCgpKQorICAgICAgICAgICAgICAg
ICAgICBhdHRhY2htZW50VmlldyA9IFt3cmFwcGVyIGF0dGFjaG1lbnRWaWV3XTsKKyAgICAgICAg
ICAgICAgICBlbHNlIGlmICh3cmFwcGVyLmF4QmFja2luZ09iamVjdC0+aXNSZW1vdGVGcmFtZSgp
KQorICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50VmlldyA9IHdyYXBwZXIuYXhCYWNraW5n
T2JqZWN0LT5yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpLmdldCgpOworICAgICAgICAgICAg
fQorCiAgICAgICAgICAgICBbc3ViYXJyYXkgYWRkT2JqZWN0OmF0dGFjaG1lbnRWaWV3ID8gYXR0
YWNobWVudFZpZXcgOiB3cmFwcGVyXTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuY3BwCmluZGV4IDI1OGMxNGI4NmE4Yi4uNTcxN2FkZTJhNDUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtMTA4NSw2ICsxMDg1LDExIEBAIFJl
bW90ZUFYT2JqZWN0UmVmIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmFjY2Vzc2liaWxpdHlSZW1v
dGVPYmplY3QoKQogICAgIHJldHVybiBudWxscHRyOwogfQogCitJbnRQb2ludCBFbXB0eUZyYW1l
TG9hZGVyQ2xpZW50OjphY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKQoreworICAgIHJl
dHVybiB7IH07Cit9CisKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQog
dm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpzZXRBWElzb2xhdGVkVHJlZVJvb3QoV2ViQ29y
ZTo6QVhDb3JlT2JqZWN0KikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFt
ZUxvYWRlckNsaWVudC5oCmluZGV4IDA5OGNlNThkMTExOS4uNDY3MmRlMjk4NTMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTE4NCw2
ICsxODQsNyBAQCBwcml2YXRlOgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmVtb3RlQVhP
YmplY3RSZWYgYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpIGZpbmFsOworICAgIEludFBvaW50
IGFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCgpIGZpbmFsOwogI2lmIEVOQUJMRShBQ0NF
U1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAgICAgdm9pZCBzZXRBWElzb2xhdGVkVHJlZVJvb3Qo
V2ViQ29yZTo6QVhDb3JlT2JqZWN0KikgZmluYWw7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Mb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTG9jYWxGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGIyZDU2ZjA1MGFlOS4uMDBk
M2FkNWUyY2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9jYWxGcmFtZUxv
YWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2NhbEZyYW1lTG9hZGVy
Q2xpZW50LmgKQEAgLTI5MCw2ICsyOTAsNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgLy8gQWxsb3cgYW4gYWNjZXNzaWJpbGl0eSBvYmplY3QgdG8gcmV0cmlldmUgYSBGcmFt
ZSBwYXJlbnQgaWYgdGhlcmUncyBubyBQbGF0Zm9ybVdpZGdldC4KICAgICB2aXJ0dWFsIFJlbW90
ZUFYT2JqZWN0UmVmIGFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSA9IDA7CisgICAgdmlydHVh
bCBJbnRQb2ludCBhY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKSA9IDA7CiAjaWYgRU5B
QkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKICAgICB2aXJ0dWFsIHZvaWQgc2V0QVhJ
c29sYXRlZFRyZWVSb290KEFYQ29yZU9iamVjdCopID0gMDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKaW5kZXggNWQyZmVhYjY1Nzk2Li44NDI2YzhmMzcwZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApA
QCAtMjIwOCw4ICsyMjA4LDE1IEBAIGJvb2wgUGFnZTo6c2hvdWxkVXBkYXRlQWNjZXNzaWJpbGl0
eVJlZ2lvbnMoKSBjb25zdAogICAgIEFTU0VSVChtX2xhc3RSZW5kZXJpbmdVcGRhdGVUaW1lc3Rh
bXAgPj0gbV9sYXN0QWNjZXNzaWJpbGl0eU9iamVjdFJlZ2lvbnNVcGRhdGUpOwogICAgIGlmICgo
bV9sYXN0UmVuZGVyaW5nVXBkYXRlVGltZXN0YW1wIC0gbV9sYXN0QWNjZXNzaWJpbGl0eU9iamVj
dFJlZ2lvbnNVcGRhdGUpIDwgdXBkYXRlSW50ZXJ2YWwpIHsKICAgICAgICAgLy8gV2UndmUgYWxy
ZWFkeSB1cGRhdGVkIGFjY2Vzc2liaWxpdHkgb2JqZWN0IHJlY3RzIHJlY2VudGx5LCBzbyBza2lw
IHRoaXMgdXBkYXRlIGFuZCBzY2hlZHVsZSBhbm90aGVyIGZvciBsYXRlci4KLSAgICAgICAgYXV0
byogbG9jYWxNYWluRnJhbWUgPSBkeW5hbWljRG93bmNhc3Q8TG9jYWxGcmFtZT4obWFpbkZyYW1l
KCkpOwotICAgICAgICBSZWZQdHIgbWFpbkRvY3VtZW50ID0gbG9jYWxNYWluRnJhbWUgPyBsb2Nh
bE1haW5GcmFtZS0+ZG9jdW1lbnQoKSA6IG51bGxwdHI7CisKKyAgICAgICAgUmVmUHRyPERvY3Vt
ZW50PiBtYWluRG9jdW1lbnQgPSBudWxscHRyOworICAgICAgICBpZiAoYXV0byogbG9jYWxNYWlu
RnJhbWUgPSBkeW5hbWljRG93bmNhc3Q8TG9jYWxGcmFtZT4obWFpbkZyYW1lKCkpKQorICAgICAg
ICAgICAgbWFpbkRvY3VtZW50ID0gbG9jYWxNYWluRnJhbWUgPyBsb2NhbE1haW5GcmFtZS0+ZG9j
dW1lbnQoKSA6IG51bGxwdHI7CisgICAgICAgIGVsc2UgaWYgKGF1dG8qIHJlbW90ZUZyYW1lID0g
ZHluYW1pY0Rvd25jYXN0PFJlbW90ZUZyYW1lPihtYWluRnJhbWUoKSkpIHsKKyAgICAgICAgICAg
IGlmIChhdXRvKiBvd25lciA9IHJlbW90ZUZyYW1lLT5vd25lckVsZW1lbnQoKSkKKyAgICAgICAg
ICAgICAgICBtYWluRG9jdW1lbnQgPSAmKG93bmVyLT5kb2N1bWVudCgpKTsKKyAgICAgICAgfQor
CiAgICAgICAgIC8vIElmIGFjY2Vzc2liaWxpdHkgaXMgZW5hYmxlZCBhbmQgd2UgaGF2ZSBhIG1h
aW4gZG9jdW1lbnQsIHRoYXQgZG9jdW1lbnQgc2hvdWxkIGhhdmUgYW4gQVggb2JqZWN0IGNhY2hl
LgogICAgICAgICBBU1NFUlQoIW1haW5Eb2N1bWVudCB8fCBtYWluRG9jdW1lbnQtPmV4aXN0aW5n
QVhPYmplY3RDYWNoZSgpKTsKICAgICAgICAgaWYgKENoZWNrZWRQdHIgdG9wQXhPYmplY3RDYWNo
ZSA9IG1haW5Eb2N1bWVudCA/IG1haW5Eb2N1bWVudC0+ZXhpc3RpbmdBWE9iamVjdENhY2hlKCkg
OiBudWxscHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmNwcAppbmRleCA3MTJjMGIyMjBm
ZDAuLjUwYjBhMjVjZmRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVG
cmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5jcHAKQEAgLTEw
MCw2ICsxMDAsMjEgQEAgdm9pZCBSZW1vdGVGcmFtZTo6YnJvYWRjYXN0RnJhbWVSZW1vdmFsVG9P
dGhlclByb2Nlc3NlcygpCiAgICAgbV9jbGllbnQtPmJyb2FkY2FzdEZyYW1lUmVtb3ZhbFRvT3Ro
ZXJQcm9jZXNzZXMoKTsKIH0KIAordm9pZCBSZW1vdGVGcmFtZTo6dXBkYXRlUmVtb3RlRnJhbWVB
Y2Nlc3NpYmlsaXR5T2Zmc2V0KEludFBvaW50IG9mZnNldCkKK3sKKyAgICBtX2NsaWVudC0+dXBk
YXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KGZyYW1lSUQoKSwgb2Zmc2V0KTsKK30K
Kwordm9pZCBSZW1vdGVGcmFtZTo6dW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQg
cHJvY2Vzc0lkZW50aWZpZXIpCit7CisgICAgbV9jbGllbnQtPnVuYmluZFJlbW90ZUFjY2Vzc2li
aWxpdHlGcmFtZXMocHJvY2Vzc0lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUZyYW1lOjpi
aW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIHN0ZDo6
c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhVG9rZW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3Qgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBpbnQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIHJldHVybiBtX2NsaWVudC0+YmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMocHJv
Y2Vzc0lkZW50aWZpZXIsIGZyYW1lSUQoKSwgZGF0YVRva2VuLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7Cit9CisKIEZyYW1lVmlldyogUmVtb3RlRnJhbWU6OnZpcnR1YWxWaWV3KCkgY29u
c3QKIHsKICAgICByZXR1cm4gbV92aWV3LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9SZW1vdGVGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5o
CmluZGV4IDI3ZWQ4NDBkMDgyZS4uY2Q4MmE3OWNjMzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1JlbW90ZUZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVG
cmFtZS5oCkBAIC0zMyw2ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
SW50UG9pbnQ7CiBjbGFzcyBSZW1vdGVET01XaW5kb3c7CiBjbGFzcyBSZW1vdGVGcmFtZUNsaWVu
dDsKIGNsYXNzIFJlbW90ZUZyYW1lVmlldzsKQEAgLTYyLDYgKzYzLDkgQEAgcHVibGljOgogICAg
IE1hcmthYmxlPExheWVySG9zdGluZ0NvbnRleHRJZGVudGlmaWVyPiBsYXllckhvc3RpbmdDb250
ZXh0SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJIb3N0aW5nQ29udGV4dElkZW50
aWZpZXI7IH0KIAogICAgIFN0cmluZyByZW5kZXJUcmVlQXNUZXh0KHNpemVfdCBiYXNlSW5kZW50
LCBPcHRpb25TZXQ8UmVuZGVyQXNUZXh0RmxhZz4pOworICAgIHZvaWQgYmluZFJlbW90ZUFjY2Vz
c2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBzdGQ6OnNwYW48Y29uc3QgdWlu
dDhfdD4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBp
bnQpPiYmKTsKKyAgICB2b2lkIHVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChJ
bnRQb2ludCk7CisgICAgdm9pZCB1bmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCk7
CiAKIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgUmVtb3RlRnJhbWUoUGFn
ZSYsIFVuaXF1ZVJlZjxSZW1vdGVGcmFtZUNsaWVudD4mJiwgRnJhbWVJZGVudGlmaWVyLCBIVE1M
RnJhbWVPd25lckVsZW1lbnQqLCBGcmFtZSogcGFyZW50LCBNYXJrYWJsZTxMYXllckhvc3RpbmdD
b250ZXh0SWRlbnRpZmllcj4sIEZyYW1lKiBvcGVuZXIgPSBudWxscHRyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUmVtb3RlRnJhbWVDbGllbnQuaAppbmRleCA0ZWZkMTAzZjM5MTIuLjU0MWEwZDAxYzU2
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZUNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVDbGllbnQuaApAQCAtMzAsNiArMzAs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERhdGFTZWdtZW50OwogY2xhc3Mg
RnJhbWVMb2FkUmVxdWVzdDsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBTZWN1cml0eU9yaWdpbkRh
dGE7CkBAIC00OCw2ICs0OSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyByZW5kZXJU
cmVlQXNUZXh0KHNpemVfdCBiYXNlSW5kZW50LCBPcHRpb25TZXQ8UmVuZGVyQXNUZXh0RmxhZz4p
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYnJvYWRjYXN0RnJhbWVSZW1vdmFsVG9PdGhlclByb2Nl
c3NlcygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VQYWdlKCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBiaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZp
ZXIsIEZyYW1lSWRlbnRpZmllciB0YXJnZXQsIGNvbnN0IHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90
PiBkYXRhVG9rZW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpzcGFuPGNvbnN0
IHVpbnQ4X3Q+LCBpbnQpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlbW90ZUZy
YW1lQWNjZXNzaWJpbGl0eU9mZnNldChGcmFtZUlkZW50aWZpZXIgdGFyZ2V0LCBJbnRQb2ludCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGlu
dCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmb2N1cygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
dW5mb2N1cygpID0gMDsKICAgICB2aXJ0dWFsIH5SZW1vdGVGcmFtZUNsaWVudCgpIHsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IDg0ZmM0MTllNTljYS4uNDJlZWU2NmFi
MTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC00Miw2ICs0Miw3IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnQWN0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRWRp
dG9yQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb2N1c0RpcmVjdGlvbi5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvRnJhbWVJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnB1dE1v
ZGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhQ29udHJvbHNDb250ZXh0TWVudUl0ZW0uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+CkBAIC0zMTgsNyArMzE5LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlVW5kb1JlZG8oVW5kb09yUmVkbykgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCB3aGVlbEV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShjb25zdCBO
YXRpdmVXZWJXaGVlbEV2ZW50JikgPSAwOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZpcnR1
YWwgdm9pZCBhY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNv
bnN0IHVpbnQ4X3Q+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFjY2Vzc2liaWxpdHlXZWJQcm9j
ZXNzVG9rZW5SZWNlaXZlZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgcGlkX3QpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgZXhlY3V0ZVNhdmVkQ29t
bWFuZEJ5U2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxlY3RvcikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVTZWN1cmVJbnB1dFN0YXRlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXNl
dFNlY3VyZUlucHV0U3RhdGUoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
cm92aXNpb25hbFBhZ2VQcm94eS5jcHAKaW5kZXggMDUwMzA4NjM5MWZiLi4zZTNiODE5NWQwNDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5j
cHAKQEAgLTU0NSw3ICs1NDUsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpyZXF1ZXN0
UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0CiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQotdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6cmVnaXN0ZXJX
ZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRh
KQordm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJp
bGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhLCBGcmFtZUlkZW50aWZpZXIp
CiB7CiAgICAgbV9hY2Nlc3NpYmlsaXR5VG9rZW4gPSBWZWN0b3IoZGF0YSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAppbmRleCBkZWVjZDc2
YTIwMjQuLmQwYjdlY2NlZWZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UHJvdmlzaW9uYWxQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92
aXNpb25hbFBhZ2VQcm94eS5oCkBAIC0xNzIsNyArMTcyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3Ry
aW5nJiBmaWxlTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7
CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIHJlZ2lzdGVyV2ViUHJvY2Vz
c0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pOworICAgIHZvaWQg
cmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50
OF90PiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdU
SykgfHwgUExBVEZPUk0oV1BFKQogICAgIHZvaWQgYmluZEFjY2Vzc2liaWxpdHlUcmVlKGNvbnN0
IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcAppbmRl
eCBmMmZjOGE1NGQ4ODMuLjIzMDMwN2ExNzRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViRnJhbWVQcm94eS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJv
eHkuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBh
c3RlYm9hcmRQcm94eS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2lu
Y2x1ZGUgIldlYnNpdGVQb2xpY2llc0RhdGEuaCIKQEAgLTE4NCw2ICsxODUsMTQgQEAgdm9pZCBX
ZWJGcmFtZVByb3h5OjpuYXZpZ2F0ZVNlcnZpY2VXb3JrZXJDbGllbnQoV2ViQ29yZTo6U2NyaXB0
RXhlY3V0aW9uQ29udGV4dEkKICAgICB9KTsKIH0KIAordm9pZCBXZWJGcmFtZVByb3h5OjpiaW5k
QWNjZXNzaWJpbGl0eUZyYW1lV2l0aERhdGEoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEp
Cit7CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6QmluZEFjY2Vzc2liaWxpdHlGcmFtZVdpdGhEYXRhKG1f
ZnJhbWVJRCwgZGF0YSkpOworfQorCiB2b2lkIFdlYkZyYW1lUHJveHk6OmxvYWRVUkwoY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpCiB7CiAgICAgaWYgKCFtX3BhZ2UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKaW5kZXggYjBkYWViMGU2NGZjLi43
MTViYjgwYmFiNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1l
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKQEAg
LTE3MCw2ICsxNzAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdGVQcm9jZXNzRGlkVGVybWlu
YXRlKCk7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gd2ViUGFn
ZUlESW5DdXJyZW50UHJvY2VzcygpOwogICAgIHZvaWQgbm90aWZ5UGFyZW50T2ZMb2FkQ29tcGxl
dGlvbihXZWJQcm9jZXNzUHJveHkmKTsKKyAgICB2b2lkIHJlbW92ZVJlbW90ZVBhZ2VzRm9yU3Vz
cGVuc2lvbigpOworICAgIHZvaWQgYmluZEFjY2Vzc2liaWxpdHlGcmFtZVdpdGhEYXRhKHN0ZDo6
c3Bhbjxjb25zdCB1aW50OF90Pik7CiAKICAgICBib29sIGlzRm9jdXNlZCgpIGNvbnN0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA0NmMyMTQzYTk0YWIu
LmYzNzExZTg1NzIxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CkBAIC0xMjk1LDggKzEyOTUsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN3YXBUb1Byb3Zpc2lv
bmFsUGFnZShzdGQ6OnVuaXF1ZV9wdHI8UHJvdmlzaW9uYWxQYWdlUHJveHk+IHAKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIGF1dG8gYWNjZXNzaWJpbGl0eVRva2VuID0gcHJvdmlzaW9uYWxQ
YWdlLT50YWtlQWNjZXNzaWJpbGl0eVRva2VuKCk7Ci0gICAgaWYgKCFhY2Nlc3NpYmlsaXR5VG9r
ZW4uaXNFbXB0eSgpKQotICAgICAgICByZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9r
ZW4oeyBhY2Nlc3NpYmlsaXR5VG9rZW4uZGF0YSgpLCBhY2Nlc3NpYmlsaXR5VG9rZW4uc2l6ZSgp
IH0pOworICAgIGlmICghYWNjZXNzaWJpbGl0eVRva2VuLmlzRW1wdHkoKSkgeworICAgICAgICBy
ZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oeyBhY2Nlc3NpYmlsaXR5VG9rZW4u
ZGF0YSgpLCBhY2Nlc3NpYmlsaXR5VG9rZW4uc2l6ZSgpIH0sIFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciB7CisgICAgICAgICAgICBPYmplY3RJZGVudGlmaWVyPFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllclR5cGU+KDApLAorICAgICAgICAgICAgT2JqZWN0SWRlbnRpZmllcjxXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllclR5cGU+KDApCisgICAgICAgIH0pOworICAgIH0KICNlbmRpZgogI2lmIFBM
QVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgIGF1dG8gYWNjZXNzaWJpbGl0eVBsdWdJ
RCA9IHByb3Zpc2lvbmFsUGFnZS0+YWNjZXNzaWJpbGl0eVBsdWdJRCgpOwpAQCAtMTM3NDQsNiAr
MTM3NDgsMjIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmFkZENvbnNvbGVNZXNzYWdlKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBNZXNzYWdlU291cmNlIG1lc3MKICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IGZyYW1lSUQsIG1lc3NhZ2VTb3VyY2UsIG1lc3Nh
Z2VMZXZlbCwgbWVzc2FnZSwgY29yZUlkZW50aWZpZXIgfSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpiaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIs
IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBzdGQ6OnNwYW48Y29uc3Qg
dWludDhfdD4gZGF0YVRva2VuLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6c3Bhbjxjb25z
dCB1aW50OF90PiwgaW50KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kU3luY1RvUHJvY2Vzc0NvbnRhaW5pbmdGcmFtZShmcmFtZUlELCBNZXNzYWdl
czo6V2ViUGFnZTo6QmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMocHJvY2Vzc0lkZW50aWZp
ZXIsIGZyYW1lSUQsIGRhdGFUb2tlbikpOworICAgIGlmICghc2VuZFJlc3VsdC5zdWNjZWVkZWQo
KSkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgMCk7CisKKyAgICBhdXRv
IFtmcmFtZURhdGFUb2tlbiwgZnJhbWVQcm9jZXNzSWRlbnRpZmllcl0gPSBzZW5kUmVzdWx0LnRh
a2VSZXBseSgpOworCisgICAgY29tcGxldGlvbkhhbmRsZXIoZnJhbWVEYXRhVG9rZW4sIGZyYW1l
UHJvY2Vzc0lkZW50aWZpZXIpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlUmVtb3Rl
RnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBXZWJDb3JlOjpJbnRQb2ludCBvZmZzZXQpCit7CisgICAgc2VuZFRvUHJvY2Vzc0NvbnRhaW5p
bmdGcmFtZShmcmFtZUlELCBNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlUmVtb3RlUGFnZUFjY2Vz
c2liaWxpdHlPZmZzZXQoZnJhbWVJRCwgb2Zmc2V0KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAogCiAjdW5kZWYgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGNjODZkZGM2YTViZi4uNzAzNDhjNmY2NjFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTM1NSw3ICsxMzU1LDcgQEAg
cHVibGljOgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgLy8gQ2FsbGVkIGJ5IHRoZSB3ZWIg
cHJvY2VzcyB0aHJvdWdoIGEgbWVzc2FnZS4KLSAgICB2b2lkIHJlZ2lzdGVyV2ViUHJvY2Vzc0Fj
Y2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pOworICAgIHZvaWQgcmVn
aXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90
PiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICAvLyBDYWxsZWQgYnkgdGhlIFVJIHBy
b2Nlc3Mgd2hlbiBpdCBpcyByZWFkeSB0byBzZW5kIGl0cyB0b2tlbnMgdG8gdGhlIHdlYiBwcm9j
ZXNzLgogICAgIHZvaWQgcmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKHN0ZDo6
c3Bhbjxjb25zdCB1aW50OF90PiBlbGVtZW50VG9rZW4sIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90
PiB3aW5kb3dUb2tlbik7CiAgICAgdm9pZCByZXBsYWNlU2VsZWN0aW9uV2l0aFBhc3RlYm9hcmRE
YXRhKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+
KTsKQEAgLTI5NzgsNiArMjk3OCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmb2N1c1JlbW90ZUZy
YW1lKElQQzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAgICAgdm9p
ZCBwb3N0TWVzc2FnZVRvUmVtb3RlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBzb3VyY2UsIGNv
bnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgdGFyZ2V0
LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gdGFyZ2V0T3JpZ2lu
LCBjb25zdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYpOwogICAgIHZvaWQgcmVu
ZGVyVHJlZUFzVGV4dChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHNpemVfdCBiYXNlSW5kZW50
LCBPcHRpb25TZXQ8V2ViQ29yZTo6UmVuZGVyQXNUZXh0RmxhZz4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RyaW5nJiYpPiYmKTsKKyAgICB2b2lkIGJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJh
bWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBzdGQ6
OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YVRva2VuLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0
ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgaW50KT4mJik7CisgICAgdm9pZCB1cGRhdGVSZW1vdGVG
cmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3Jl
OjpJbnRQb2ludCk7CiAKICAgICB2b2lkIHNldFRleHRJbmRpY2F0b3JGcm9tRnJhbWUoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YSYmLCB1aW50NjRf
dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbgppbmRleCA0OTM4NjI2YmY4YTIuLmE1NDJmMTc2YjU5YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzI0LDcgKzMyNCw3
IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRXhlY3V0ZVNhdmVkQ29tbWFuZEJ5
U2VsZWN0b3IoU3RyaW5nIHNlbGVjdG9yKSAtPiAoYm9vbCBoYW5kbGVkKSBTeW5jaHJvbm91cwog
CiAgICAgIyBSZW1vdGUgYWNjZXNzaWJpbGl0eSBtZXNzYWdlcwotICAgIFJlZ2lzdGVyV2ViUHJv
Y2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSkKKyAg
ICBSZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVp
bnQ4X3Q+IGRhdGEsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogCiAgICAgIyBT
cGVlY2ggbWVzc2FnZXMKICAgICBHZXRJc1NwZWFraW5nKCkgLT4gKGJvb2wgaXNTcGVha2luZykg
U3luY2hyb25vdXMKQEAgLTYzMCw0ICs2MzAsNiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkg
ewogICAgIEZvY3VzUmVtb3RlRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQp
CiAgICAgUG9zdE1lc3NhZ2VUb1JlbW90ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgc291cmNl
LCBTdHJpbmcgc291cmNlT3JpZ2luLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgdGFyZ2V0LCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gdGFyZ2V0T3JpZ2luLCBz
dHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMgbWVzc2FnZSkKICAgICBSZW5k
ZXJUcmVlQXNUZXh0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBpZGVudGlmaWVyLCBzaXplX3Qg
YmFzZUluZGVudCwgT3B0aW9uU2V0PFdlYkNvcmU6OlJlbmRlckFzVGV4dEZsYWc+IGJlaGF2aW9y
KSAtPiAoU3RyaW5nIHJlbmRlclRyZWVEdW1wKSBTeW5jaHJvbm91cworICAgIEJpbmRSZW1vdGVB
Y2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhVG9rZW4pIC0+
IChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gdG9rZW4sIGludCBwcm9jZXNzSWRlbnRpZmllcikg
U3luY2hyb25vdXMKKyAgICBVcGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OkludFBvaW50IG9mZnNldCkK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgK
aW5kZXggMTBjNGY2YWUxMjUwLi42Mzg4Y2I0NjcyYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0xMTAsNyArMTEwLDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGNsZWFyQWxsRWRpdENvbW1hbmRzKCkgb3ZlcnJpZGU7CiAgICAgYm9v
bCBjYW5VbmRvUmVkbyhVbmRvT3JSZWRvKSBvdmVycmlkZTsKICAgICB2b2lkIGV4ZWN1dGVVbmRv
UmVkbyhVbmRvT3JSZWRvKSBvdmVycmlkZTsKLSAgICB2b2lkIGFjY2Vzc2liaWxpdHlXZWJQcm9j
ZXNzVG9rZW5SZWNlaXZlZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pIG92ZXJyaWRlOworICAg
IHZvaWQgYWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKHN0ZDo6c3Bhbjxjb25z
dCB1aW50OF90PiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBwaWRfdCkgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBleGVjdXRlU2F2ZWRDb21tYW5kQnlTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVj
dG9yKSBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZVNlY3VyZUlucHV0U3RhdGUoKSBvdmVycmlk
ZTsKICAgICB2b2lkIHJlc2V0U2VjdXJlSW5wdXRTdGF0ZSgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IGNiMjNm
NDk3NGE2Yi4uYjVhZGRkY2UyM2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC0zODksNyArMzg5LDcgQEAgdm9pZCBQYWdlQ2xp
ZW50SW1wbDo6ZXhlY3V0ZVVuZG9SZWRvKFVuZG9PclJlZG8gdW5kb09yUmVkbykKICAgICByZXR1
cm4gKHVuZG9PclJlZG8gPT0gVW5kb09yUmVkbzo6VW5kbykgPyBbW2NvbnRlbnRWaWV3KCkgdW5k
b01hbmFnZXJdIHVuZG9dIDogW1tjb250ZW50VmlldygpIHVuZG9NYW5hZ2VyXSByZWRvXTsKIH0K
IAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6YWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2Vp
dmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6
YWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50
OF90PiBkYXRhLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHBpZF90KQogewogICAgIE5TRGF0
YSAqcmVtb3RlVG9rZW4gPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5kYXRhKCkgbGVuZ3Ro
OmRhdGEuc2l6ZSgpXTsKICAgICBbY29udGVudFZpZXcoKSBfc2V0QWNjZXNzaWJpbGl0eVdlYlBy
b2Nlc3NUb2tlbjpyZW1vdGVUb2tlbl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCA1YjEwZjU5YzY2NjEuLmRlYjRkNThlNWZkNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC03
NjMsMTEgKzc2MywxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U21hcnRJbnNlcnREZWxldGVF
bmFibGVkKGJvb2wpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJv
eHk6OnJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3Qg
dWludDhfdD4gZGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWdpc3RlcldlYlByb2Nlc3NBY2Nl
c3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEsIEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlEKQogewotICAgIHByb3RlY3RlZFBhZ2VDbGllbnQoKS0+YWNjZXNzaWJpbGl0
eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKGRhdGEpOwotfSAgICAKLQorICAgIHBhZ2VDbGllbnQo
KS5hY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoZGF0YSwgZnJhbWVJRCwgbWVz
c2FnZVNlbmRlckNvbm5lY3Rpb24oKS0+cmVtb3RlUHJvY2Vzc0lEKCkpOworfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6cmVsYXlBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYg
bm90aWZpY2F0aW9uTmFtZSwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCmluZGV4IGZi
NmM2MDc4NjdhZi4uYmY4ZGE0MzBkOGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaApAQCAtMTc2LDcgKzE3Niw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBnZXN0dXJlRXZlbnRXYXNOb3RIYW5kbGVkQnlXZWJDb3JlKGNvbnN0IE5hdGl2ZVdl
Ykdlc3R1cmVFdmVudCYpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSAgICB2b2lkIGFjY2Vzc2liaWxp
dHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pIG92ZXJy
aWRlOworICAgIHZvaWQgYWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKHN0ZDo6
c3Bhbjxjb25zdCB1aW50OF90PiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBwaWRfdCkgb3Zl
cnJpZGU7CiAKICAgICB2b2lkIG1ha2VGaXJzdFJlc3BvbmRlcigpIG92ZXJyaWRlOwogICAgIHZv
aWQgYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJlc3BvbmRlcigpIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCmluZGV4
IDA3ODBmMThkYTFjMi4uMDE1MGVjNDUxMmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCkBAIC01ODEsOSArNTgxLDkgQEAgdm9pZCBQ
YWdlQ2xpZW50SW1wbDo6c2V0VGV4dEluZGljYXRvckFuaW1hdGlvblByb2dyZXNzKGZsb2F0IHBy
b2dyZXNzKQogICAgIG1faW1wbC0+c2V0VGV4dEluZGljYXRvckFuaW1hdGlvblByb2dyZXNzKHBy
b2dyZXNzKTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6YWNjZXNzaWJpbGl0eVdlYlByb2Nl
c3NUb2tlblJlY2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhKQordm9pZCBQYWdl
Q2xpZW50SW1wbDo6YWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKHN0ZDo6c3Bh
bjxjb25zdCB1aW50OF90PiBkYXRhLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
cGlkX3QgcGlkKQogewotICAgIG1faW1wbC0+c2V0QWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tl
bihbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5kYXRhKCkgbGVuZ3RoOmRhdGEuc2l6ZSgpXSk7
CisgICAgbV9pbXBsLT5zZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuKFtOU0RhdGEgZGF0
YVdpdGhCeXRlczpkYXRhLmRhdGEoKSBsZW5ndGg6ZGF0YS5zaXplKCldLCBmcmFtZUlELCBwaWQp
OwogfQogICAgIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0
aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0JiBsYXllclRyZWVDb250ZXh0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggY2ZiMTBm
ZGJiNDEzLi44Njk2MTdhMjlkOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMzA2LDEyICszMDYsMTIgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8m
IGRpY3Rpb24KICAgICBwcm90ZWN0ZWRQYWdlQ2xpZW50KCktPmRpZFBlcmZvcm1EaWN0aW9uYXJ5
TG9va3VwKGRpY3Rpb25hcnlQb3B1cEluZm8pOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVn
aXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90
PiBkYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxp
dHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSwgRnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47
CiAgICAgCi0gICAgcHJvdGVjdGVkUGFnZUNsaWVudCgpLT5hY2Nlc3NpYmlsaXR5V2ViUHJvY2Vz
c1Rva2VuUmVjZWl2ZWQoZGF0YSk7CisgICAgcHJvdGVjdGVkUGFnZUNsaWVudCgpLT5hY2Nlc3Np
YmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoZGF0YSwgZnJhbWVJRCwgbWVzc2FnZVNlbmRl
ckNvbm5lY3Rpb24oKS0+cmVtb3RlUHJvY2Vzc0lEKCkpOwogfSAgICAKIAogdm9pZCBXZWJQYWdl
UHJveHk6Om1ha2VGaXJzdFJlc3BvbmRlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
ZWJWaWV3SW1wbC5oCmluZGV4IDAzZGZkYWVlMTUzYy4uNWEyZTEyOWZkYzhjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwuaApAQCAtNDQ4LDcgKzQ0OCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldElnbm9yZXNNb3VzZURyYWdnZWRFdmVudHMoYm9vbCk7CiAgICAg
Ym9vbCBpZ25vcmVzTW91c2VEcmFnZ2VkRXZlbnRzKCkgY29uc3QgeyByZXR1cm4gbV9pZ25vcmVz
TW91c2VEcmFnZ2VkRXZlbnRzOyB9CiAKLSAgICB2b2lkIHNldEFjY2Vzc2liaWxpdHlXZWJQcm9j
ZXNzVG9rZW4oTlNEYXRhICopOworICAgIHZvaWQgc2V0QWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NU
b2tlbihOU0RhdGEgKiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBwaWRfdCk7CiAgICAgdm9p
ZCBhY2Nlc3NpYmlsaXR5UmVnaXN0ZXJVSVByb2Nlc3NUb2tlbnMoKTsKICAgICB2b2lkIHVwZGF0
ZVJlbW90ZUFjY2Vzc2liaWxpdHlSZWdpc3RyYXRpb24oYm9vbCByZWdpc3RlclByb2Nlc3MpOwog
ICAgIGlkIGFjY2Vzc2liaWxpdHlGb2N1c2VkVUlFbGVtZW50KCk7CkBAIC05MjcsNiArOTI3LDcg
QEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgYm9vbCBtX2FsbG93c01h
Z25pZmljYXRpb24geyBmYWxzZSB9OwogCiAgICAgUmV0YWluUHRyPE5TQWNjZXNzaWJpbGl0eVJl
bW90ZVVJRWxlbWVudD4gbV9yZW1vdGVBY2Nlc3NpYmlsaXR5Q2hpbGQ7CisgICAgUmV0YWluUHRy
PE5TTXV0YWJsZURpY3Rpb25hcnk+IG1fcmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lQ2FjaGU7CiAK
ICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2U+IG1fcHJvbWlzZWRJbWFnZTsKICAgICBTdHJpbmcg
bV9wcm9taXNlZEZpbGVuYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJ
bXBsLm1tCmluZGV4IDViZGUxMTE2Mjc5MC4uYTRiMzA3ZDc2ZTczIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJbXBsLm1tCkBAIC0zNDgxLDEwICszNDgxLDEyIEBAIHZv
aWQgV2ViVmlld0ltcGw6OnNldElnbm9yZXNNb3VzZURyYWdnZWRFdmVudHMoYm9vbCBpZ25vcmVz
TW91c2VEcmFnZ2VkRXZlbnRzKQogICAgIG1faWdub3Jlc01vdXNlRHJhZ2dlZEV2ZW50cyA9IGln
bm9yZXNNb3VzZURyYWdnZWRFdmVudHM7CiB9CiAKLXZvaWQgV2ViVmlld0ltcGw6OnNldEFjY2Vz
c2liaWxpdHlXZWJQcm9jZXNzVG9rZW4oTlNEYXRhICpkYXRhKQordm9pZCBXZWJWaWV3SW1wbDo6
c2V0QWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlbihOU0RhdGEgKmRhdGEsIFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBwaWRfdCBwaWQpCiB7Ci0gICAgbV9yZW1vdGVBY2Nlc3Np
YmlsaXR5Q2hpbGQgPSBkYXRhLmxlbmd0aCA/IGFkb3B0TlMoW1tOU0FjY2Vzc2liaWxpdHlSZW1v
dGVVSUVsZW1lbnQgYWxsb2NdIGluaXRXaXRoUmVtb3RlVG9rZW46ZGF0YV0pIDogbmlsOwotICAg
IHVwZGF0ZVJlbW90ZUFjY2Vzc2liaWxpdHlSZWdpc3RyYXRpb24odHJ1ZSk7CisgICAgaWYgKHBp
ZCA9PSBtX3BhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzSUQoKSkgeworICAgICAgICBtX3JlbW90ZUFj
Y2Vzc2liaWxpdHlDaGlsZCA9IGRhdGEubGVuZ3RoID8gYWRvcHROUyhbW05TQWNjZXNzaWJpbGl0
eVJlbW90ZVVJRWxlbWVudCBhbGxvY10gaW5pdFdpdGhSZW1vdGVUb2tlbjpkYXRhXSkgOiBuaWw7
CisgICAgICAgIHVwZGF0ZVJlbW90ZUFjY2Vzc2liaWxpdHlSZWdpc3RyYXRpb24odHJ1ZSk7Cisg
ICAgfQogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjp1cGRhdGVSZW1vdGVBY2Nlc3NpYmlsaXR5UmVn
aXN0cmF0aW9uKGJvb2wgcmVnaXN0ZXJQcm9jZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkxvY2FsRnJhbWVM
b2FkZXJDbGllbnQuY3BwCmluZGV4IDdkMmE0MjY1ZmQ1Yy4uZjNmNzNmMzY3ZWFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFt
ZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xODA3LDYgKzE4MDcsMTIg
QEAgdm9pZCBXZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxEZXN0cm95R2xv
YmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0ZW4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIAor
V2ViQ29yZTo6SW50UG9pbnQgV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudDo6YWNjZXNzaWJpbGl0
eVJlbW90ZUZyYW1lT2Zmc2V0KCkKK3sKKyAgICBSZWZQdHIgd2ViUGFnZSA9IG1fZnJhbWUtPnBh
Z2UoKTsKKyAgICByZXR1cm4gd2ViUGFnZSA/IHdlYlBhZ2UtPmFjY2Vzc2liaWxpdHlSZW1vdGVG
cmFtZU9mZnNldCgpIDogSW50UG9pbnQoKTsKK30KKwogUmVtb3RlQVhPYmplY3RSZWYgV2ViTG9j
YWxGcmFtZUxvYWRlckNsaWVudDo6YWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpCiB7CiAgICAg
UmVmUHRyIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudC5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkxvY2FsRnJhbWVM
b2FkZXJDbGllbnQuaAppbmRleCA4OGM4Y2M1Y2I3MmUuLjlmM2I2N2YwZmNiOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkxvY2FsRnJhbWVM
b2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0yNDAsNiArMjQwLDcgQEAgcHJpdmF0
ZToKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJlbW90ZUFYT2JqZWN0UmVmIGFjY2Vzc2li
aWxpdHlSZW1vdGVPYmplY3QoKSBmaW5hbDsKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBhY2Nlc3Np
YmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKSBmaW5hbDsKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElU
WV9JU09MQVRFRF9UUkVFKQogICAgIHZvaWQgc2V0QVhJc29sYXRlZFRyZWVSb290KFdlYkNvcmU6
OkFYQ29yZU9iamVjdCopIGZpbmFsOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90ZUZyYW1lQ2xpZW50
LmNwcAppbmRleCA4Y2JmZjJjOWI4YzkuLmEyZjA5NDhkNDMxMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90ZUZyYW1lQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3Rl
RnJhbWVDbGllbnQuY3BwCkBAIC05Niw2ICs5NiwzOCBAQCBTdHJpbmcgV2ViUmVtb3RlRnJhbWVD
bGllbnQ6OnJlbmRlclRyZWVBc1RleHQoc2l6ZV90IGJhc2VJbmRlbnQsIE9wdGlvblNldDxSZW5k
ZQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3ZvaWQgV2ViUmVtb3RlRnJhbWVDbGllbnQ6OnVu
YmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyKQorewor
ICAgIC8vIE1ha2Ugc3VyZSBBcHBLaXQgc3lzdGVtIGtub3dzIGFib3V0IG91ciByZW1vdGUgVUkg
cHJvY2VzcyBzdGF0dXMgbm93LgorICAgIGlmIChSZWZQdHIgcGFnZSA9IG1fZnJhbWUtPnBhZ2Uo
KSkKKyAgICAgICAgcGFnZS0+YWNjZXNzaWJpbGl0eU1hbmFnZVJlbW90ZUVsZW1lbnRTdGF0dXMo
ZmFsc2UsIHByb2Nlc3NJZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJSZW1vdGVGcmFtZUNsaWVu
dDo6dXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpJbnRQb2ludCBvZmZzZXQpCit7CisgICAgaWYgKFJl
ZlB0ciBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKQorICAgICAgICBwYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChmcmFt
ZUlELCBvZmZzZXQpKTsKK30KKwordm9pZCBXZWJSZW1vdGVGcmFtZUNsaWVudDo6YmluZFJlbW90
ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3Qgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGFU
b2tlbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIGlu
dCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgUmVmUHRyIHBhZ2UgPSBtX2ZyYW1lLT5w
YWdlKCk7CisgICAgaWYgKCFwYWdlKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6
c3Bhbjxjb25zdCB1aW50OF90PiB7IH0sIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgYXV0byBzZW5kUmVzdWx0ID0gcGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6QmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMocHJvY2Vzc0lkZW50aWZpZXIsIGZyYW1l
SUQsIGRhdGFUb2tlbikpOworICAgIGlmICghc2VuZFJlc3VsdC5zdWNjZWVkZWQoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYXV0byBbcmVzdWx0VG9rZW4sIHByb2Nlc3NJZGVudGlmaWVyUmVz
dWx0XSA9IHNlbmRSZXN1bHQudGFrZVJlcGx5KCk7CisKKyAgICAvLyBNYWtlIHN1cmUgQXBwS2l0
IHN5c3RlbSBrbm93cyBhYm91dCBvdXIgcmVtb3RlIFVJIHByb2Nlc3Mgc3RhdHVzIG5vdy4KKyAg
ICBwYWdlLT5hY2Nlc3NpYmlsaXR5TWFuYWdlUmVtb3RlRWxlbWVudFN0YXR1cyh0cnVlLCBwcm9j
ZXNzSWRlbnRpZmllclJlc3VsdCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0VG9rZW4s
IHByb2Nlc3NJZGVudGlmaWVyUmVzdWx0KTsKK30KKwogdm9pZCBXZWJSZW1vdGVGcmFtZUNsaWVu
dDo6YnJvYWRjYXN0RnJhbWVSZW1vdmFsVG9PdGhlclByb2Nlc3NlcygpCiB7CiAgICAgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmJyb2FkY2FzdEZyYW1lUmVtb3ZhbFRvT3RoZXJQcm9jZXNzZXMoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJS
ZW1vdGVGcmFtZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlJlbW90ZUZyYW1lQ2xpZW50LmgKaW5kZXggNjI2ZTA1YzNlODhiLi5jODg5ZWI3ZTVm
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJSZW1vdGVGcmFtZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVudC5oCkBAIC00OCw2ICs0OCwxMCBAQCBwcml2
YXRlOgogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1JlbW90ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgc291cmNlLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyIHRhcmdldCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+
IHRhcmdldE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmKSBm
aW5hbDsKICAgICB2b2lkIGNoYW5nZUxvY2F0aW9uKFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3Qm
JikgZmluYWw7CiAgICAgU3RyaW5nIHJlbmRlclRyZWVBc1RleHQoc2l6ZV90IGJhc2VJbmRlbnQs
IE9wdGlvblNldDxXZWJDb3JlOjpSZW5kZXJBc1RleHRGbGFnPikgZmluYWw7CisgICAgdm9pZCBi
aW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgaW50KT4mJikgZmluYWw7Cisg
ICAgdm9pZCB1bmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCkgZmluYWw7CisgICAg
dm9pZCB1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpJbnRQb2ludCkgZmluYWw7CisKICAgICB2b2lkIGJyb2FkY2Fz
dEZyYW1lUmVtb3ZhbFRvT3RoZXJQcm9jZXNzZXMoKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlUGFn
ZSgpIGZpbmFsOwogICAgIHZvaWQgZm9jdXMoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQppbmRleCBhZTQz
ZjFhNDY5OGIuLjAyNDY0MzdlMTJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQpAQCAtNzcsNiArNzcsNyBAQAog
I2ltcG9ydCA8V2ViQ29yZS9VVElSZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9VVElVdGls
aXRpZXMuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTGF1bmNoU2VydmljZXNTUEkuaD4KKyNp
bXBvcnQgPHBhbC9zcGkvY29jb2EvTlNBY2Nlc3NpYmlsaXR5U1BJLmg+CiAjaW1wb3J0IDxwYWwv
c3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1NhbmRi
b3hTUEkuaD4KIApAQCAtNDA0LDEwICs0MDUsNTEgQEAgdm9pZCBXZWJQYWdlOjpjbGVhckRpY3Rh
dGlvbkFsdGVybmF0aXZlcyhWZWN0b3I8RGljdGF0aW9uQ29udGV4dD4mJiBjb250ZXh0cykKICAg
ICB9LCBEb2N1bWVudE1hcmtlcjo6VHlwZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKIH0KIAot
dm9pZCBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tlbihSZXRhaW5QdHI8
TlNEYXRhPiByZW1vdGVUb2tlbikKK3ZvaWQgV2ViUGFnZTo6YWNjZXNzaWJpbGl0eVRyYW5zZmVy
UmVtb3RlVG9rZW4oUmV0YWluUHRyPE5TRGF0YT4gcmVtb3RlVG9rZW4sIEZyYW1lSWRlbnRpZmll
ciBmcmFtZUlEKQogewogICAgIHN0ZDo6c3BhbiBkYXRhVG9rZW4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4oW3JlbW90ZVRva2VuIGJ5dGVzXSksIFtyZW1vdGVUb2tlbiBsZW5ndGhd
KTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlZ2lzdGVyV2ViUHJvY2Vzc0Fj
Y2Vzc2liaWxpdHlUb2tlbihkYXRhVG9rZW4pKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihkYXRhVG9rZW4sIGZy
YW1lSUQpKTsKK30KKwordm9pZCBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5TWFuYWdlUmVtb3RlRWxl
bWVudFN0YXR1cyhib29sIHJlZ2lzdGVyU3RhdHVzLCBpbnQgcHJvY2Vzc0lkZW50aWZpZXIpCit7
CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmIChyZWdpc3RlclN0YXR1cykKKyAgICAgICAgW05T
QWNjZXNzaWJpbGl0eVJlbW90ZVVJRWxlbWVudCByZWdpc3RlclJlbW90ZVVJUHJvY2Vzc0lkZW50
aWZpZXI6cHJvY2Vzc0lkZW50aWZpZXJdOworICAgIGVsc2UKKyAgICAgICAgW05TQWNjZXNzaWJp
bGl0eVJlbW90ZVVJRWxlbWVudCB1bnJlZ2lzdGVyUmVtb3RlVUlQcm9jZXNzSWRlbnRpZmllcjpw
cm9jZXNzSWRlbnRpZmllcl07CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShyZWdpc3RlclN0YXR1
cyk7CisgICAgVU5VU0VEX1BBUkFNKHByb2Nlc3NJZGVudGlmaWVyKTsKKyNlbmRpZgorfQorCit2
b2lkIFdlYlBhZ2U6OmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRl
bnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0ZDo6c3Bhbjxjb25z
dCB1aW50OF90PiBkYXRhVG9rZW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpzcGFuPGNv
bnN0IHVpbnQ4X3Q+LCBpbnQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFJlZlB0ciB3
ZWJGcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpOworICAg
IGlmICghd2ViRnJhbWUpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0sIDApOworICAgIH0KKworICAgIFJlZlB0ciBj
b3JlTG9jYWxGcmFtZSA9IHdlYkZyYW1lLT5jb3JlTG9jYWxGcmFtZSgpOworICAgIGlmICghY29y
ZUxvY2FsRnJhbWUpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0sIDApOworICAgIH0KKworICAgIGF1dG8qIHJlbmRl
cmVyID0gY29yZUxvY2FsRnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpOworICAgIGlmICghcmVuZGVy
ZXIpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcih7IH0sIDApOworICAgIH0KKworICAgIHJlZ2lzdGVyUmVtb3RlRnJhbWVB
Y2Nlc3NpYmlsaXR5VG9rZW5zKHByb2Nlc3NJZGVudGlmaWVyLCBkYXRhVG9rZW4pOworCisgICAg
Ly8gR2V0IG91ciByZW1vdGUgdG9rZW4gZGF0YSBhbmQgc2VuZCBiYWNrIHRvIHRoZSBSZW1vdGVG
cmFtZS4KKyAgICBhdXRvIHJlbW90ZVRva2VuID0gYWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0
YSgpOworICAgIHN0ZDo6c3BhbiByZW1vdGVEYXRhVG9rZW4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oW3JlbW90ZVRva2VuIGJ5dGVzXSksIFtyZW1vdGVUb2tlbiBsZW5ndGhdKTsK
KyAgICBjb21wbGV0aW9uSGFuZGxlcihyZW1vdGVEYXRhVG9rZW4sIGdldHBpZCgpKTsKIH0KIAog
I2lmIEVOQUJMRShBUFBMRV9QQVkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKaW5kZXggMDliM2U3ZTU5NTc1Li5lYzhmNTJlNGFjNzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTY3MSw2ICs2NzEsMTAgQEAgcHVi
bGljOgogICAgIHZvaWQgY2xlYXJIaXN0b3J5KCk7CiAKICAgICB2b2lkIGFjY2Vzc2liaWxpdHlT
ZXR0aW5nc0RpZENoYW5nZSgpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgYWNjZXNz
aWJpbGl0eU1hbmFnZVJlbW90ZUVsZW1lbnRTdGF0dXMoYm9vbCwgaW50KTsKKyNlbmRpZgorCiAg
ICAgdm9pZCBzY3JlZW5Qcm9wZXJ0aWVzRGlkQ2hhbmdlKCk7CiAKICAgICB2b2lkIHNjYWxlUGFn
ZShkb3VibGUgc2NhbGUsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBvcmlnaW4pOwpAQCAtMTA0
Myw3ICsxMDQ3LDExIEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHBs
YXRmb3JtSW5pdGlhbGl6ZUFjY2Vzc2liaWxpdHkoKTsKICAgICB2b2lkIHJlZ2lzdGVyVUlQcm9j
ZXNzQWNjZXNzaWJpbGl0eVRva2VucyhzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZWxlbWVudFRv
a2VuLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gd2luZG93VG9rZW4pOworICAgIHZvaWQgcmVn
aXN0ZXJSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlUb2tlbnMocGlkX3QsIHN0ZDo6c3Bhbjxjb25z
dCB1aW50OF90Pik7CiAgICAgV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdCogYWNjZXNzaWJp
bGl0eVJlbW90ZU9iamVjdCgpOworICAgIFdlYkNvcmU6OkludFBvaW50IGFjY2Vzc2liaWxpdHlS
ZW1vdGVGcmFtZU9mZnNldCgpOworICAgIHZvaWQgY3JlYXRlTW9ja0FjY2Vzc2liaWxpdHlFbGVt
ZW50KHBpZF90KTsKKyAgICB2b2lkIHVwZGF0ZVJlbW90ZVBhZ2VBY2Nlc3NpYmlsaXR5T2Zmc2V0
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6SW50UG9pbnQpOwogI2lmIEVOQUJM
RShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAgICAgdm9pZCBjYWNoZUFYUG9zaXRpb24o
Y29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwogICAgIHZvaWQgY2FjaGVBWFNpemUoY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYpOwpAQCAtMjA5NCw3ICsyMTAyLDcgQEAgcHJpdmF0ZToKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICB2b2lkIHJlcXVlc3RBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbklu
Zm8oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sLCBXZWJDb3JlOjpOb3dQbGF5aW5nSW5mbyYm
KT4mJik7CiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0
YSgpIGNvbnN0OwotICAgIHZvaWQgYWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oUmV0
YWluUHRyPE5TRGF0YT4pOworICAgIHZvaWQgYWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9r
ZW4oUmV0YWluUHRyPE5TRGF0YT4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAjZW5kaWYK
IAogICAgIHZvaWQgc2V0U2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKGJvb2wgZGlz
cGF0Y2gpIHsgbV9zaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMgPSBkaXNwYXRjaDsg
fQpAQCAtMjIwNCw2ICsyMjEyLDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVtb3RlUG9zdE1l
c3NhZ2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VPcmlnaW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciB0YXJnZXQsIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmIHRhcmdldE9yaWdpbiwgY29uc3QgV2ViQ29y
ZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmKTsKICAgICB2b2lkIHJlbmRlclRyZWVBc1RleHQo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBzaXplX3QgYmFzZUluZGVudCwgT3B0aW9uU2V0PFdl
YkNvcmU6OlJlbmRlckFzVGV4dEZsYWc+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYm
KT4mJik7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBiaW5kUmVtb3RlQWNjZXNzaWJp
bGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6
c3Bhbjxjb25zdCB1aW50OF90PiwgaW50KT4mJik7CisjZW5kaWYKIAogICAgIHZvaWQgcmVxdWVz
dFRleHRFeHRyYWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiYmIGNvbGxl
Y3Rpb25SZWN0SW5Sb290VmlldywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpUZXh0
RXh0cmFjdGlvbjo6SXRlbSYmKT4mJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IGVkOWMwMWFiZDE1Zi4uODE3
ZGVjZDZkY2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTQ5Miw2ICs0OTIsOSBAQCBHZW5lcmF0ZVN5bnRoZXRp
Y0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21t
YW5kVHlwZQogICAgIFdpbmRvd0FuZFZpZXdGcmFtZXNDaGFuZ2VkKHN0cnVjdCBXZWJLaXQ6OlZp
ZXdXaW5kb3dDb29yZGluYXRlcyBjb29yZGluYXRlcykKICAgICBTZXRNYWluRnJhbWVJc1Njcm9s
bGFibGUoYm9vbCBpc1Njcm9sbGFibGUpCiAgICAgUmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmls
aXR5VG9rZW5zKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBlbGVtZW50VG9rZW4sIHN0ZDo6c3Bh
bjxjb25zdCB1aW50OF90PiB3aW5kb3dUb2tlbikKKyAgICBCaW5kUmVtb3RlQWNjZXNzaWJpbGl0
eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YVRva2VuKSAtPiAoc3RkOjpzcGFu
PGNvbnN0IHVpbnQ4X3Q+IHRva2VuLCBpbnQgcHJvY2Vzc0lkZW50aWZpZXIpIFN5bmNocm9ub3Vz
CisgICAgVXBkYXRlUmVtb3RlUGFnZUFjY2Vzc2liaWxpdHlPZmZzZXQoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OkludFBvaW50IG9mZnNldCk7CisKICAgICBHZXRT
dHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkgLT4gKFN0cmluZyBzdHJpbmdWYWx1ZSkgU3lu
Y2hyb25vdXMKICAgICBHZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChTdHJpbmcgcGFzdGVi
b2FyZFR5cGUpIC0+IChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIpIFN5bmNo
cm9ub3VzCiAgICAgUmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKFN0cmluZyBwYXN0ZWJvYXJk
TmFtZSkgLT4gKGJvb2wgcmVzdWx0KSBTeW5jaHJvbm91cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCBhN2ZkNzIzMTI3YzAu
LjI4ZWU1ZGI3MGVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTI0MywxMiArMjQzLDE0IEBAIHZvaWQgV2ViUGFnZTo6
cGxhdGZvcm1Jbml0aWFsaXplQWNjZXNzaWJpbGl0eSgpCiAgICAgbV9tb2NrQWNjZXNzaWJpbGl0
eUVsZW1lbnQgPSBhZG9wdE5TKFtbV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdCBhbGxvY10g
aW5pdF0pOwogICAgIFttX21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCBzZXRXZWJQYWdlOnRoaXNd
OwogCi0gICAgYWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oYWNjZXNzaWJpbGl0eVJl
bW90ZVRva2VuRGF0YSgpKTsKKyAgICBSZWYgZnJhbWUgPSBDaGVja2VkUmVmKG1fcGFnZS0+Zm9j
dXNDb250cm9sbGVyKCkpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBhY2Nlc3NpYmlsaXR5
VHJhbnNmZXJSZW1vdGVUb2tlbihhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCksIGZyYW1l
LT5mcmFtZUlEKCkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtUmVpbml0aWFsaXplKCkK
IHsKLSAgICBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tlbihhY2Nlc3NpYmlsaXR5UmVt
b3RlVG9rZW5EYXRhKCkpOworICAgIFJlZiBmcmFtZSA9IENoZWNrZWRSZWYobV9wYWdlLT5mb2N1
c0NvbnRyb2xsZXIoKSktPmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIGFjY2Vzc2liaWxpdHlU
cmFuc2ZlclJlbW90ZVRva2VuKGFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSwgZnJhbWUt
PmZyYW1lSUQoKSk7CiB9CiAKIFJldGFpblB0cjxOU0RhdGE+IFdlYlBhZ2U6OmFjY2Vzc2liaWxp
dHlSZW1vdGVUb2tlbkRhdGEoKSBjb25zdApAQCAtNjQ0LDYgKzY0NiwxNiBAQCBOU09iamVjdCAq
V2ViUGFnZTo6YWNjZXNzaWJpbGl0eU9iamVjdEZvck1haW5GcmFtZVBsdWdpbigpCiAgICAgcmV0
dXJuIG5pbDsKIH0KICAgICAKK3ZvaWQgV2ViUGFnZTo6dXBkYXRlUmVtb3RlUGFnZUFjY2Vzc2li
aWxpdHlPZmZzZXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpJbnRQb2ludCkK
K3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50Cit9CisKK3ZvaWQgV2ViUGFnZTo6cmVnaXN0ZXJS
ZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlUb2tlbnMocGlkX3QsIHN0ZDo6c3Bhbjxjb25zdCB1aW50
OF90PikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50Cit9CisKIHZvaWQgV2ViUGFnZTo6cmVn
aXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90
PiBlbGVtZW50VG9rZW4sIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PikKIHsKICAgICBOU0RhdGEg
KmVsZW1lbnRUb2tlbkRhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZWxlbWVudFRva2VuLmRh
dGEoKSBsZW5ndGg6ZWxlbWVudFRva2VuLnNpemUoKV07CkBAIC02NjIsNiArNjc0LDEyIEBAIHZv
aWQgV2ViUGFnZTo6Z2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkCiAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIH0KIAor
V2ViQ29yZTo6SW50UG9pbnQgV2ViUGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0
KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiB7IH07Cit9CisKIFdLQWNj
ZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QqIFdlYlBhZ2U6OmFjY2Vzc2liaWxpdHlSZW1vdGVPYmpl
Y3QoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2Uu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlX
ZWJQYWdlT2JqZWN0QmFzZS5oCmluZGV4IDM5ZTkwZTNjODk1ZS4uNDk3MDA3MGE0NTVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmls
aXR5V2ViUGFnZU9iamVjdEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaApAQCAtNDUsNiArNDUs
OCBAQCBjbGFzcyBBWENvcmVPYmplY3Q7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX3NpemUgV1RG
X0dVQVJERURfQllfTE9DSyhtX2NhY2hlTG9jayk7CiAgICAgVGhyZWFkU2FmZVdlYWtQdHI8V2Vi
Q29yZTo6QVhDb3JlT2JqZWN0PiBtX2lzb2xhdGVkVHJlZVJvb3Q7CiAjZW5kaWYKKworICAgIFdl
YkNvcmU6OkludFBvaW50IG1fcmVtb3RlRnJhbWVPZmZzZXQ7CiAgICAgUmV0YWluUHRyPGlkPiBt
X3BhcmVudDsKICAgICBib29sIG1faGFzTWFpbkZyYW1lUGx1Z2luOwogfQpAQCAtNTYsOSArNTgs
MTEgQEAgY2xhc3MgQVhDb3JlT2JqZWN0OwogLSAodm9pZClzZXRJc29sYXRlZFRyZWVSb290OihO
YWtlZFB0cjxXZWJDb3JlOjpBWENvcmVPYmplY3Q+KXJvb3Q7CiAjZW5kaWYKIC0gKHZvaWQpc2V0
UmVtb3RlUGFyZW50OihpZClwYXJlbnQ7CistICh2b2lkKXNldFJlbW90ZUZyYW1lT2Zmc2V0OihX
ZWJDb3JlOjpJbnRQb2ludClvZmZzZXQ7CiAtICh2b2lkKXNldEhhc01haW5GcmFtZVBsdWdpbjoo
Ym9vbCloYXNQbHVnaW47CiAKIC0gKGlkKWFjY2Vzc2liaWxpdHlSb290T2JqZWN0V3JhcHBlcjsK
IC0gKGlkKWFjY2Vzc2liaWxpdHlGb2N1c2VkVUlFbGVtZW50OworLSAoV2ViQ29yZTo6SW50UG9p
bnQpYWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0OwogCiBAZW5kCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFn
ZU9iamVjdEJhc2UubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tB
Y2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0KaW5kZXggNmY5OTU0NWFlYmY1Li5iZWM4
ZDczZmFhMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2Uu
bW0KQEAgLTM2LDkgKzM2LDExIEBACiAjaW1wb3J0ICJXS1N0cmluZ0NGLmgiCiAjaW1wb3J0IDxX
ZWJDb3JlL0FYT2JqZWN0Q2FjaGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnQuaD4KKyNp
bXBvcnQgPFdlYkNvcmUvRnJhbWVUcmVlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsRnJhbWUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxGcmFtZVZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUv
UGFnZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9SZW1vdGVGcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9TY3JvbGxWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbGJhci5oPgogCkBAIC01Nywx
MSArNTksMTcgQEAgbmFtZXNwYWNlIGF4ID0gV2ViQ29yZTo6QWNjZXNzaWJpbGl0eTsKICAgICBp
ZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byogbG9jYWxNYWlu
RnJhbWUgPSBkeW5hbWljRG93bmNhc3Q8V2ViQ29yZTo6TG9jYWxGcmFtZT4ocGFnZS0+bWFpbkZy
YW1lKCkpOwotICAgIGlmICghbG9jYWxNYWluRnJhbWUgfHwgIWxvY2FsTWFpbkZyYW1lLT5kb2N1
bWVudCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoYXV0byogbG9jYWxNYWlu
RnJhbWUgPSBkeW5hbWljRG93bmNhc3Q8V2ViQ29yZTo6TG9jYWxGcmFtZT4ocGFnZS0+bWFpbkZy
YW1lKCkpKSB7CisgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGxvY2FsTWFpbkZyYW1lLT5k
b2N1bWVudCgpKQorICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50LT5heE9iamVjdENhY2hlKCk7
CisgICAgfSBlbHNlIGlmIChhdXRvKiByZW1vdGVNYWluRnJhbWUgPSBkeW5hbWljRG93bmNhc3Q8
V2ViQ29yZTo6UmVtb3RlRnJhbWU+KHBhZ2UtPm1haW5GcmFtZSgpKSkgeworICAgICAgICBhdXRv
JiB0cmVlID0gcmVtb3RlTWFpbkZyYW1lLT50cmVlKCk7CisgICAgICAgIGF1dG8qIGZpcnN0RnJh
bWUgPSBkeW5hbWljRG93bmNhc3Q8V2ViQ29yZTo6TG9jYWxGcmFtZT4odHJlZS5maXJzdENoaWxk
KCkpOworICAgICAgICBhdXRvKiBkb2N1bWVudCA9IGZpcnN0RnJhbWUgPyBmaXJzdEZyYW1lLT5k
b2N1bWVudCgpIDogbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIGRvY3VtZW50ID8gZG9jdW1lbnQt
PmF4T2JqZWN0Q2FjaGUoKSA6IG51bGxwdHI7CisgICAgfQogCi0gICAgcmV0dXJuIGxvY2FsTWFp
bkZyYW1lLT5kb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCk7CisgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKIC0gKGlkKWFjY2Vzc2liaWxpdHlQbHVnaW5PYmplY3QKQEAgLTE1Miw2ICsxNjAsMTcg
QEAgbmFtZXNwYWNlIGF4ID0gV2ViQ29yZTo6QWNjZXNzaWJpbGl0eTsKICAgICBtX2hhc01haW5G
cmFtZVBsdWdpbiA9IGhhc1BsdWdpbjsKIH0KIAorLSAodm9pZClzZXRSZW1vdGVGcmFtZU9mZnNl
dDooV2ViQ29yZTo6SW50UG9pbnQpb2Zmc2V0Cit7CisgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3Ao
KSk7CisgICAgbV9yZW1vdGVGcmFtZU9mZnNldCA9IG9mZnNldDsKK30KKworLSAoV2ViQ29yZTo6
SW50UG9pbnQpYWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0Cit7CisgICAgcmV0dXJuIG1f
cmVtb3RlRnJhbWVPZmZzZXQ7Cit9CisKIC0gKHZvaWQpc2V0UmVtb3RlUGFyZW50OihpZClwYXJl
bnQKIHsKICAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggOTZlZDY0YWRiY2Zm
Li41ZjliODgwYzgwYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC0xMjMsMTYgKzEyMywxMiBAQCB2b2lkIFdlYlBhZ2U6
OnBsYXRmb3JtSW5pdGlhbGl6ZUFjY2Vzc2liaWxpdHkoKQogICAgIC8vIEN1cnJlbnRseSwgaXQg
aXMgYWxzbyBuZWVkZWQgdG8gYWxsb2NhdGUgYW5kIGluaXRpYWxpemUgYW4gTlNBcHBsaWNhdGlv
biBvYmplY3QuCiAgICAgW05TQXBwbGljYXRpb24gX2FjY2Vzc2liaWxpdHlJbml0aWFsaXplXTsK
IAotICAgIGF1dG8gbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50ID0gYWRvcHROUyhbW1dLQWNjZXNz
aWJpbGl0eVdlYlBhZ2VPYmplY3QgYWxsb2NdIGluaXRdKTsKLQogICAgIC8vIEdldCB0aGUgcGlk
IGZvciB0aGUgc3RhcnRpbmcgcHJvY2Vzcy4KICAgICBwaWRfdCBwaWQgPSBXZWJDb3JlOjpwcmVz
ZW50aW5nQXBwbGljYXRpb25QSUQoKTsKLSAgICBpZiAoW21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVu
dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGFjY2Vzc2liaWxpdHlTZXRQcmVzZW50ZXJQ
cm9jZXNzSWRlbnRpZmllcjopXSkKLSAgICAgICAgWyhpZCltb2NrQWNjZXNzaWJpbGl0eUVsZW1l
bnQuZ2V0KCkgYWNjZXNzaWJpbGl0eVNldFByZXNlbnRlclByb2Nlc3NJZGVudGlmaWVyOnBpZF07
Ci0gICAgW21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCBzZXRXZWJQYWdlOnRoaXNdOwotICAgIG1f
bW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50ID0gV1RGTW92ZShtb2NrQWNjZXNzaWJpbGl0eUVsZW1l
bnQpOwotCi0gICAgYWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oYWNjZXNzaWJpbGl0
eVJlbW90ZVRva2VuRGF0YSgpKTsKKyAgICBjcmVhdGVNb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQo
cGlkKTsKKyAgICBSZWZQdHIgbG9jYWxNYWluRnJhbWUgPSBkeW5hbWljRG93bmNhc3Q8TG9jYWxG
cmFtZT4obV9wYWdlLT5tYWluRnJhbWUoKSk7CisgICAgaWYgKGxvY2FsTWFpbkZyYW1lKQorICAg
ICAgICBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tlbihhY2Nlc3NpYmlsaXR5UmVtb3Rl
VG9rZW5EYXRhKCksIGxvY2FsTWFpbkZyYW1lLT5mcmFtZUlEKCkpOwogCiAgICAgLy8gQ2xvc2Ug
TWFjaCBjb25uZWN0aW9uIHRvIExhdW5jaCBTZXJ2aWNlcy4KICNpZiBIQVZFKExTX1NFUlZFUl9D
T05ORUNUSU9OX1NUQVRVU19SRUxFQVNFX05PVElGSUNBVElPTlNfTUFTSykKQEAgLTE0NCw5ICsx
NDAsMjAgQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemVBY2Nlc3NpYmlsaXR5KCkK
ICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZXZva2VMYXVuY2hTZXJ2aWNlc1NhbmRib3hF
eHRlbnNpb24oKTsKIH0KIAordm9pZCBXZWJQYWdlOjpjcmVhdGVNb2NrQWNjZXNzaWJpbGl0eUVs
ZW1lbnQocGlkX3QgcGlkKQoreworICAgIGF1dG8gbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50ID0g
YWRvcHROUyhbW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QgYWxsb2NdIGluaXRdKTsKKwor
ICAgIGlmIChbbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IoYWNjZXNzaWJpbGl0eVNldFByZXNlbnRlclByb2Nlc3NJZGVudGlmaWVyOildKQorICAg
ICAgICBbKGlkKW1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudC5nZXQoKSBhY2Nlc3NpYmlsaXR5U2V0
UHJlc2VudGVyUHJvY2Vzc0lkZW50aWZpZXI6cGlkXTsKKyAgICBbbW9ja0FjY2Vzc2liaWxpdHlF
bGVtZW50IHNldFdlYlBhZ2U6dGhpc107CisgICAgbV9tb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQg
PSBXVEZNb3ZlKG1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCk7Cit9CisKIHZvaWQgV2ViUGFnZTo6
cGxhdGZvcm1SZWluaXRpYWxpemUoKQogewotICAgIGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90
ZVRva2VuKGFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSk7CisgICAgUmVmIGZyYW1lID0g
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBhY2Nl
c3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tlbihhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRh
KCksIGZyYW1lLT5mcmFtZUlEKCkpOwogfQogCiBSZXRhaW5QdHI8TlNEYXRhPiBXZWJQYWdlOjph
Y2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCkgY29uc3QKQEAgLTQ2OSwxMiArNDc2LDI3IEBA
IGJvb2wgV2ViUGFnZTo6cGVyZm9ybU5vbkVkaXRpbmdCZWhhdmlvckZvclNlbGVjdG9yKGNvbnN0
IFN0cmluZyYgc2VsZWN0b3IsIEtleWJvCiAgICAgcmV0dXJuIGRpZFBlcmZvcm1BY3Rpb247CiB9
CiAKK3ZvaWQgV2ViUGFnZTo6dXBkYXRlUmVtb3RlUGFnZUFjY2Vzc2liaWxpdHlPZmZzZXQoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OkludFBvaW50IG9mZnNldCkK
K3sKKyAgICBbYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpIHNldFJlbW90ZUZyYW1lT2Zmc2V0
Om9mZnNldF07Cit9CisKK3ZvaWQgV2ViUGFnZTo6cmVnaXN0ZXJSZW1vdGVGcmFtZUFjY2Vzc2li
aWxpdHlUb2tlbnMocGlkX3QgcGlkLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZWxlbWVudFRv
a2VuKQoreworICAgIE5TRGF0YSAqZWxlbWVudFRva2VuRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhC
eXRlczplbGVtZW50VG9rZW4uZGF0YSgpIGxlbmd0aDplbGVtZW50VG9rZW4uc2l6ZSgpXTsKKyAg
ICBhdXRvIHJlbW90ZUVsZW1lbnQgPSBlbGVtZW50VG9rZW5EYXRhLmxlbmd0aCA/IGFkb3B0TlMo
W1tOU0FjY2Vzc2liaWxpdHlSZW1vdGVVSUVsZW1lbnQgYWxsb2NdIGluaXRXaXRoUmVtb3RlVG9r
ZW46ZWxlbWVudFRva2VuRGF0YV0pIDogbmlsOworCisgICAgY3JlYXRlTW9ja0FjY2Vzc2liaWxp
dHlFbGVtZW50KHBpZCk7CisgICAgW2FjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSBzZXRSZW1v
dGVQYXJlbnQ6cmVtb3RlRWxlbWVudC5nZXQoKV07Cit9CisKIHZvaWQgV2ViUGFnZTo6cmVnaXN0
ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBl
bGVtZW50VG9rZW4sIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiB3aW5kb3dUb2tlbikKIHsKICAg
ICBOU0RhdGEgKmVsZW1lbnRUb2tlbkRhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZWxlbWVu
dFRva2VuLmRhdGEoKSBsZW5ndGg6ZWxlbWVudFRva2VuLnNpemUoKV07CiAgICAgTlNEYXRhICp3
aW5kb3dUb2tlbkRhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6d2luZG93VG9rZW4uZGF0YSgp
IGxlbmd0aDp3aW5kb3dUb2tlbi5zaXplKCldOwogICAgIGF1dG8gcmVtb3RlRWxlbWVudCA9IGVs
ZW1lbnRUb2tlbkRhdGEubGVuZ3RoID8gYWRvcHROUyhbW05TQWNjZXNzaWJpbGl0eVJlbW90ZVVJ
RWxlbWVudCBhbGxvY10gaW5pdFdpdGhSZW1vdGVUb2tlbjplbGVtZW50VG9rZW5EYXRhXSkgOiBu
aWw7CiAgICAgYXV0byByZW1vdGVXaW5kb3cgPSB3aW5kb3dUb2tlbkRhdGEubGVuZ3RoID8gYWRv
cHROUyhbW05TQWNjZXNzaWJpbGl0eVJlbW90ZVVJRWxlbWVudCBhbGxvY10gaW5pdFdpdGhSZW1v
dGVUb2tlbjp3aW5kb3dUb2tlbkRhdGFdKSA6IG5pbDsKKwogICAgIFtyZW1vdGVFbGVtZW50IHNl
dFdpbmRvd1VJRWxlbWVudDpyZW1vdGVXaW5kb3cuZ2V0KCldOwogICAgIFtyZW1vdGVFbGVtZW50
IHNldFRvcExldmVsVUlFbGVtZW50OnJlbW90ZVdpbmRvdy5nZXQoKV07CiAKQEAgLTUxNiw2ICs1
MzgsMTEgQEAgV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdCogV2ViUGFnZTo6YWNjZXNzaWJp
bGl0eVJlbW90ZU9iamVjdCgpCiAgICAgcmV0dXJuIG1fbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50
LmdldCgpOwogfQogCitXZWJDb3JlOjpJbnRQb2ludCBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5UmVt
b3RlRnJhbWVPZmZzZXQoKQoreworICAgIHJldHVybiBbbV9tb2NrQWNjZXNzaWJpbGl0eUVsZW1l
bnQgYWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0XTsKK30KKwogI2lmIEVOQUJMRShBQ0NF
U1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiB2b2lkIFdlYlBhZ2U6OmNhY2hlQVhQb3NpdGlvbihj
b25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBwb2ludCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oCmluZGV4IDA2MTRiY2Y3YWY1Yy4uYmE4MzY4MDY0NTMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTY1LDYgKzY1LDkgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL1NjcmVlblByb3BlcnRpZXMuaD4KICNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRjaC5o
PgogI2luY2x1ZGUgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CisKK09CSkNfQ0xBU1MgTlNNdXRhYmxl
RGljdGlvbmFyeTsKKwogI2VuZGlmCiAKICNpZiBQTEFURk9STShHVEspCkBAIC04Nyw2ICs5MCw3
IEBACiAjaW5jbHVkZSAiV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmgiCiAjZW5kaWYKIAorCiBu
YW1lc3BhY2UgQVBJIHsKIGNsYXNzIE9iamVjdDsKIH0KQEAgLTUxMSw2ICs1MTUsOSBAQCBwcml2
YXRlOgogICAgIHZvaWQgcGxhdGZvcm1TZXRDYWNoZU1vZGVsKENhY2hlTW9kZWwpOwogCiAgICAg
dm9pZCBzZXRFbmhhbmNlZEFjY2Vzc2liaWxpdHkoYm9vbCk7CisjaWYgUExBVEZPUk0oQ09DT0Ep
CisgICAgdm9pZCBiaW5kQWNjZXNzaWJpbGl0eUZyYW1lV2l0aERhdGEoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pOworI2VuZGlmCiAKICAgICB2b2lk
IHN0YXJ0TWVtb3J5U2FtcGxlcihTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgZG91YmxlKTsKICAgICB2b2lkIHN0b3BNZW1vcnlTYW1wbGVyKCk7CkBAIC04
MjYsNiArODMzLDcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBIYXNoQ291
bnRlZFNldDxTdHJpbmc+IG1fcGVuZGluZ1Bhc3RlYm9hcmRXcml0ZUNvdW50czsKICAgICBzdGQ6
Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IG1fYXVkaXRUb2tlbkZvclNlbGY7CisgICAgUmV0YWlu
UHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IG1fYWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lVG9rZW5D
YWNoZTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA5OWI0MDJhZjExY2Eu
LmQ3NzVmZTdkMzhkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KQEAgLTY5LDYgKzY5LDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBM
ZWdhY3lSZWNlaXZlciBOb3RSZWZDb3VudGVkIHsKICAgICBTZXRUZXh0Q2hlY2tlclN0YXRlKHN0
cnVjdCBXZWJLaXQ6OlRleHRDaGVja2VyU3RhdGUgdGV4dENoZWNrZXJTdGF0ZSkKIAogICAgIFNl
dEVuaGFuY2VkQWNjZXNzaWJpbGl0eShib29sIGZsYWcpCisgICAgQmluZEFjY2Vzc2liaWxpdHlG
cmFtZVdpdGhEYXRhKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdGQ6OnNwYW48
Y29uc3QgdWludDhfdD4gZGF0YSk7CiAKICAgICBHYXJiYWdlQ29sbGVjdEphdmFTY3JpcHRPYmpl
Y3RzKCkKICAgICBTZXRKYXZhU2NyaXB0R2FyYmFnZUNvbGxlY3RvclRpbWVyRW5hYmxlZChib29s
IGVuYWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
cm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vz
c0NvY29hLm1tCmluZGV4IGM1Mzg1N2ZiZTFkNC4uMTE2MDZlOTYzOTU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KQEAgLTIxMyw2
ICsyMTMsMTYgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybVNldENhY2hlTW9kZWwoQ2FjaGVN
b2RlbCkKIHsKIH0KIAordm9pZCBXZWJQcm9jZXNzOjpiaW5kQWNjZXNzaWJpbGl0eUZyYW1lV2l0
aERhdGEoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0ZDo6c3Bhbjxjb25zdCB1
aW50OF90PiBkYXRhKQoreworICAgIGlmICghbV9hY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVUb2tl
bkNhY2hlKQorICAgICAgICBtX2FjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZVRva2VuQ2FjaGUgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOworCisgICAgYXV0byBm
cmFtZUludCA9IGZyYW1lSUQub2JqZWN0KCkudG9VSW50NjQoKTsKKyAgICBOU0RhdGEgKm5zRGF0
YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczpkYXRhLmRhdGEoKSBsZW5ndGg6ZGF0YS5zaXplKCld
OworICAgIFttX2FjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZVRva2VuQ2FjaGUgc2V0T2JqZWN0Om5z
RGF0YSBmb3JLZXk6QChmcmFtZUludCldOworfQorCiBpZCBXZWJQcm9jZXNzOjphY2Nlc3NpYmls
aXR5Rm9jdXNlZFVJRWxlbWVudCgpCiB7CiAgICAgYXV0byByZXRyaWV2ZUZvY3VzZWRVSUVsZW1l
bnRGcm9tTWFpblRocmVhZCA9IFtdICgpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4
IDIxZTIxZjA4YmQ2NC4uYjRjZjI4MmMxOGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgK
QEAgLTIyNSw2ICsyMjUsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBSZW1vdGVBWE9iamVj
dFJlZiBhY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkgZmluYWwgeyByZXR1cm4gMDsgfQorICAg
IFdlYkNvcmU6OkludFBvaW50IGFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCgpIGZpbmFs
IHsgcmV0dXJuIHsgfTsgfQogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUp
CiAgICAgdm9pZCBzZXRBWElzb2xhdGVkVHJlZVJvb3QoV2ViQ29yZTo6QVhDb3JlT2JqZWN0Kikg
ZmluYWwgeyB9CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>469912</attachid>
            <date>2024-02-15 20:37:26 -0800</date>
            <delta_ts>2024-02-15 23:22:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-268804-20240215203724.patch</filename>
            <type>text/plain</type>
            <size>117949</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">RnJvbSA5NWZjOTQ1YjhmYWRmOTYzMzk0NmQ5YmYzNDJlM2Q3M2VkODJkMjA4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpcyBGbGVpemFjaCA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4K
RGF0ZTogVGh1LCAxNSBGZWIgMjAyNCAxMjo0MDozOCAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIEFY
OiBTdXBwb3J0IHNpdGUgaXNvbGF0aW9uIGZvciBWb2ljZU92ZXIKIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjg4MDQgcmRhcjovLzk5NjY1NTYxCgpSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KCkluaXRpYWwgc3VwcG9ydCBmb3Igc2l0ZSBpc29sYXRpb24gZm9y
IFZvaWNlT3Zlci4KCldoZW4gYSBzY3JvbGwgdmlldyBob3N0cyBhIFJlbW90ZUZyYW1lIGl0IGJp
bmRzIGl0c2VsZiB0byB0aGUgb3RoZXIgc2lkZSB0aHJvdWdoIGEgV2ViUGFnZSBtZXNzYWdlLgpU
aGlzIHRyYW5zZmVycyBkYXRhIHRva2VucyBzbyBBY2Nlc3NpYmlsaXR5IHJlbW90ZSBlbGVtZW50
cyBhcmUgY3JlYXRlZCBhbmQgaG9va2VkIHVwLgoKVGhlIGJvdW5kaW5nIGJveGVzIGluc2lkZSB0
aGUgc3ViIGZyYW1lcyBuZWVkIHRvIGhhdmUgdGhlIGluaXRpYWwgb2Zmc2V0IGFwcGxpZWQgYW5k
IHRoZW4gbmVlZCB0byBiZSBjb252ZXJ0ZWQKZWFjaCBzdGVwIHVwIHRoZSBjaGFpbiB0byBhY2Nv
dW50IGZvciBzY3JvbGwgb2Zmc2V0cyB0aGF0IG9ubHkgZWFjaCBwcm9jZXNzIGtub3dzIGFib3V0
LgoKKiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dDoKKiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWENvcmVPYmplY3QuaDoKKFdlYkNvcmU6OmFjY2Vzc2liaWxpdHlSb2xlVG9TdHJpbmcpOgoo
V2ViQ29yZTo6QVhDb3JlT2JqZWN0Ojppc1JlbW90ZUZyYW1lIGNvbnN0KToKKiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcDoKKFdlYkNvcmU6OnN0cmVhbUFYQ29yZU9i
amVjdCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoK
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmNyZWF0ZSk6CihXZWJDb3JlOjpBWE9iamVjdENhY2hl
OjpvblJlbW90ZUZyYW1lSW5pdGlhbGl6ZWQpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5jcHA6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZWxhdGl2
ZUZyYW1lIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnJlbW90ZUZyYW1l
T2Zmc2V0IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW1vdGVGcmFtZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJh
bWVDbGllbnQuaC4KKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6Y3JlYXRlKToK
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6QWNjZXNzaWJpbGl0eVJlbW90ZUZy
YW1lKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6ZWxlbWVudFJlY3QgY29u
c3QpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbW90ZUZy
YW1lLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVDbGllbnQu
aC4KKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkQXR0YWNobWVu
dENoaWxkcmVuKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENoaWxk
cmVuKToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpkZXRhY2hSZW1vdGVQ
YXJ0cyk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6Y2xlYXJDaGlsZHJlbik6
CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkUmVtb3RlRnJhbWVDaGlsZCk6
CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkQ2hpbGRyZW4pOgooV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OndlYkFyZWFPYmplY3QgY29uc3QpOgooV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmRvY3VtZW50IGNvbnN0KToKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpwYXJlbnRPYmplY3QgY29uc3QpOgoqIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaDoKKiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcDoKKFdl
YkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKFdlYkNvcmU6
OkFYSXNvbGF0ZWRPYmplY3Q6OnNldFByb3BlcnR5KToKKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmpl
Y3Q6OnJlbW90ZUZyYW1lT2Zmc2V0IGNvbnN0KToKKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OnJlbGF0aXZlRnJhbWUgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHA6CihXZWJDb3JlOjpBWElzb2xhdGVk
VHJlZTo6dXBkYXRlTm9kZVByb3BlcnRpZXMpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMubW06CihXZWJDb3Jl
OjpBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplUGxhdGZvcm1Qcm9wZXJ0aWVzKToKKFdlYkNv
cmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50IGNvbnN0KToK
KiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFj
Lm1tOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lOjpnZW5lcmF0ZVJlbW90ZVRv
a2VuIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6aW5pdGlhbGl6
ZVBsYXRmb3JtRWxlbWVudFdpdGhSZW1vdGVUb2tlbik6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
OjpjcmVhdGVQbGF0Zm9ybVJvbGVNYXApOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbToKKG1ha2VOU0FycmF5KToK
KiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgcm9sZV0pOgoo
LVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBpc0VtcHR5R3JvdXBdKToKKC1bV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgcm9sZURlc2NyaXB0aW9uXSk6CigtW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIF90cmFuc2Zvcm1TcGVjaWFsQ2hpbGRyZW5DYXNlczpdKToKKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
Ol0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5SGl0VGVz
dDpdKToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgQUxMT1dfREVQUkVDQVRFRF9J
TVBMRU1FTlRBVElPTlNfRU5EXSk6CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpmb3JQYXJhbWV0ZXI6XSk6CigtW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlJbmRleE9mQ2hpbGQ6XSk6CigtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZUNvdW50
Ol0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXJyYXlB
dHRyaWJ1dGVWYWx1ZXM6aW5kZXg6bWF4Q291bnQ6XSk6CiogU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHA6CihXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjphY2Nl
c3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQpOgoqIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUZyYW1lTG9hZGVyQ2xpZW50Lmg6CiogU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvY2FsRnJhbWVM
b2FkZXJDbGllbnQuaDoKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwOgooV2ViQ29yZTo6
UGFnZTo6c2hvdWxkVXBkYXRlQWNjZXNzaWJpbGl0eVJlZ2lvbnMgY29uc3QpOgoqIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuY3BwOgooV2ViQ29yZTo6UmVtb3RlRnJhbWU6OnVwZGF0
ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldCk6CihXZWJDb3JlOjpSZW1vdGVGcmFtZTo6
dW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyk6CihXZWJDb3JlOjpSZW1vdGVGcmFtZTo6
YmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMpOgoqIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVt
b3RlRnJhbWUuaDoKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lQ2xpZW50Lmg6Ciog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcDoKKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdl
UHJveHk6OnJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbik6CiogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaDoKKiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcDoKKFdlYktpdDo6V2ViRnJhbWVQcm94eTo6YmluZEFj
Y2Vzc2liaWxpdHlGcmFtZVdpdGhEYXRhKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJG
cmFtZVByb3h5Lmg6CiogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojpzd2FwVG9Qcm92aXNpb25hbFBhZ2UpOgooV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKToKKFdlYktpdDo6V2Vi
UGFnZVByb3h5Ojp1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQpOgoqIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MubW06CihXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5
V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQpOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW06CihXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9j
ZXNzQWNjZXNzaWJpbGl0eVRva2VuKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGxNYWMuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGxNYWMubW06CihXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5V2ViUHJv
Y2Vzc1Rva2VuUmVjZWl2ZWQpOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW06CihXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNj
ZXNzaWJpbGl0eVRva2VuKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0lt
cGwuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwubW06CihXZWJL
aXQ6OldlYlZpZXdJbXBsOjpzZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuKToKKiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNs
aWVudC5jcHA6CihXZWJLaXQ6OldlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQ6OmFjY2Vzc2liaWxp
dHlSZW1vdGVGcmFtZU9mZnNldCk6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuaDoKKiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuY3BwOgooV2ViS2l0OjpX
ZWJSZW1vdGVGcmFtZUNsaWVudDo6dW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyk6CihX
ZWJLaXQ6OldlYlJlbW90ZUZyYW1lQ2xpZW50Ojp1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxp
dHlPZmZzZXQpOgooV2ViS2l0OjpXZWJSZW1vdGVGcmFtZUNsaWVudDo6YmluZFJlbW90ZUFjY2Vz
c2liaWxpdHlGcmFtZXMpOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJSZW1vdGVGcmFtZUNsaWVudC5oOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKFdlYktpdDo6V2ViUGFnZTo6YWNjZXNzaWJpbGl0
eVRyYW5zZmVyUmVtb3RlVG9rZW4pOgooV2ViS2l0OjpXZWJQYWdlOjphY2Nlc3NpYmlsaXR5TWFu
YWdlUmVtb3RlRWxlbWVudFN0YXR1cyk6CihXZWJLaXQ6OldlYlBhZ2U6OmJpbmRSZW1vdGVBY2Nl
c3NpYmlsaXR5RnJhbWVzKToKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmg6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbjoKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bToKKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplQWNjZXNzaWJpbGl0eSk6CihX
ZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtUmVpbml0aWFsaXplKToKKFdlYktpdDo6V2ViUGFnZTo6
YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KToKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaDoKKiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9i
amVjdEJhc2UubW06CigtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlIGF4T2JqZWN0
Q2FjaGVdKToKKC1bV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2Ugc2V0UmVtb3RlRnJh
bWVPZmZzZXQ6XSk6CigtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlIGFjY2Vzc2li
aWxpdHlSZW1vdGVGcmFtZU9mZnNldF0pOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tOgooV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybUluaXRpYWxp
emVBY2Nlc3NpYmlsaXR5KToKKFdlYktpdDo6V2ViUGFnZTo6Y3JlYXRlTW9ja0FjY2Vzc2liaWxp
dHlFbGVtZW50KToKKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1SZWluaXRpYWxpemUpOgooV2Vi
S2l0OjpXZWJQYWdlOjp1cGRhdGVSZW1vdGVQYWdlQWNjZXNzaWJpbGl0eU9mZnNldCk6CihXZWJL
aXQ6OldlYlBhZ2U6OnJlZ2lzdGVyUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5VG9rZW5zKToKKFdl
YktpdDo6V2ViUGFnZTo6cmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKToKKFdl
YktpdDo6V2ViUGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KToKKiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJQcm9jZXNzQ29jb2EubW06CihXZWJLaXQ6OldlYlByb2Nlc3M6OmJpbmRBY2Nlc3NpYmls
aXR5RnJhbWVXaXRoRGF0YSk6CiogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKLS0tCiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dCAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogLi4uL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIHwgICA0ICsKIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhDb3JlT2JqZWN0LmggICB8ICAxMiArKwogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WExvZ2dlci5jcHAgICAgIHwgICAzICsKIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5jcHAgICB8ICAxNSArLQogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmggIHwgICAyICsKIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhSZW1vdGVG
cmFtZS5jcHAgICB8ICA0MiArKysrKwogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFJl
bW90ZUZyYW1lLmggIHwgIDYxICsrKysrKysrCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcCAgICAgfCAgMjMgKystCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmggICAgICAgfCAgIDUgKwogLi4uL0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
Y3BwICAgICAgICAgICAgIHwgICA0ICstCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldy5jcHAgfCAgNjIgKysrKysrKy0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlTY3JvbGxWaWV3LmggICB8ICAgNiArLQogLi4uL2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaS5jcHAgICAgICAgIHwgICAxICsKIC4uLi9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJJT1MubW0gICB8ICAgMSArCiAuLi4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmpl
Y3QuY3BwICAgICAgICAgfCAgMzQgKysrKy0KIC4uLi9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9i
amVjdC5oICAgICAgICAgICB8ICAgOCArLQogLi4uL2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJl
ZS5jcHAgICAgICAgICAgIHwgIDYxICsrKy0tLS0tCiAuLi4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRUcmVlLmggICAgICAgICAgICAgfCAgMjkgKysrKwogLi4uL2lzb2xhdGVkdHJlZS9tYWMvQVhJ
c29sYXRlZE9iamVjdE1hYy5tbSAgIHwgICA3ICsKIC4uLi9tYWMvQWNjZXNzaWJpbGl0eU9iamVj
dE1hYy5tbSAgICAgICAgICAgICB8ICAyNiArKysrCiAuLi4vbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyQmFzZS5tbSAgfCAgIDkgKy0KIC4uLi9tYWMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJNYWMubW0gICB8IDE0MyArKysrKysrKysrKystLS0tLS0KIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwICAgICAgICB8ICAgNSArCiAuLi4vV2ViQ29yZS9s
b2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oICAgfCAgIDEgKwogLi4uL1dlYkNvcmUvbG9h
ZGVyL0xvY2FsRnJhbWVMb2FkZXJDbGllbnQuaCAgIHwgICAxICsKIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAgICAgICAgICAgICAgICAgICB8ICAxMSArLQogU291cmNlL1dlYkNvcmUvcGFn
ZS9SZW1vdGVGcmFtZS5jcHAgICAgICAgICAgIHwgIDE1ICsrCiBTb3VyY2UvV2ViQ29yZS9wYWdl
L1JlbW90ZUZyYW1lLmggICAgICAgICAgICAgfCAgIDQgKwogU291cmNlL1dlYkNvcmUvcGFnZS9S
ZW1vdGVGcmFtZUNsaWVudC5oICAgICAgIHwgICA0ICsKIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1BhZ2VDbGllbnQuaCAgICAgICAgICB8ICAgMyArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvUHJv
dmlzaW9uYWxQYWdlUHJveHkuY3BwIHwgICAyICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9Qcm92
aXNpb25hbFBhZ2VQcm94eS5oICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkZyYW1lUHJveHkuY3BwICAgICB8ICAgOSArKwogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
RnJhbWVQcm94eS5oICAgICAgIHwgICAyICsKIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAgICAgICB8ICAyNCArKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oICAgICAgICB8ICAgNCArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluIHwgICA0ICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MuaCAgfCAgIDIgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5tbSB8ICAgMiArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbSAgIHwgICA3ICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGxNYWMuaCAgfCAgIDIgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbE1hYy5tbSB8ICAgNCArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94
eU1hYy5tbSAgIHwgICA0ICstCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0lt
cGwuaCAgICAgfCAgIDMgKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3SW1w
bC5tbSAgICB8ICAgOCArLQogLi4uL1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuY3BwICAgICAg
ICAgICAgIHwgICA2ICsKIC4uLi9XZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmggICAgICAgICAg
ICAgICB8ICAgMSArCiAuLi4vV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuY3Bw
ICAgfCAgMzIgKysrKwogLi4uL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90ZUZyYW1lQ2xpZW50Lmgg
ICAgIHwgICA0ICsKIC4uLi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1t
ICB8ICA0NiArKysrKy0KIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aCAgICB8ICAxMyArLQogLi4uL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
ICAgIHwgICAzICsKIC4uLi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gICAg
ICB8ICAyMiArKy0KIC4uLi9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaCAg
ICB8ICAgNCArCiAuLi4vbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tICAg
fCAgMjcgKysrLQogLi4uL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSAgICAg
IHwgIDQ1ICsrKystLQogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCAgICAg
ICAgIHwgICA4ICsKIC4uLi9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
ICB8ICAgMSArCiAuLi4vV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0gICAgICAg
fCAgMTAgKysKIC4uLi9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCB8
ICAgMSArCiA2MSBmaWxlcyBjaGFuZ2VkLCA3NTMgaW5zZXJ0aW9ucygrKSwgMTUyIGRlbGV0aW9u
cygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhS
ZW1vdGVGcmFtZS5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYUmVtb3RlRnJhbWUuaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMWY1N2I5YWEwYTM0Li5h
NTBmZTg5NDkzZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC01MjUsNiArNTI1LDcgQEAgYWNjZXNzaWJp
bGl0eS9BWEdlb21ldHJ5TWFuYWdlci5jcHAKIGFjY2Vzc2liaWxpdHkvQVhJbWFnZS5jcHAKIGFj
Y2Vzc2liaWxpdHkvQVhMb2dnZXIuY3BwCiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3Bw
CithY2Nlc3NpYmlsaXR5L0FYUmVtb3RlRnJhbWUuY3BwCiBhY2Nlc3NpYmlsaXR5L0FYVGV4dE1h
cmtlci5jcHAKIGFjY2Vzc2liaWxpdHkvQVhUZXh0UnVuLmNwcAogYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5QVJJQUdyaWQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMmE3ZWM4NjgwMDAyLi42N2RmYzBlZGI0NjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTg5NjAsNiArODk2MCw4IEBACiAJCTI5NDg5RkM1MTJDMDBGMDMwMEQ4M0YwRiAvKiBBY2Nl
c3NpYmlsaXR5U2Nyb2xsVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
Y2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
OTQ5ODY4MTE5NTM0MTk0MDA3MkQyQkQgLyogVGV4dFVuZG9JbnNlcnRpb25NYXJrdXBNYWMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUZXh0VW5kb0luc2VydGlv
bk1hcmt1cE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk0QkRBRTYyMUZG
NTgyQTAwNTEwNzdCIC8qIEFjY2Vzc2liaWxpdHlPYmplY3RDb2NvYS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlPYmplY3RDb2NvYS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjk1NUNGMTEyQjIzMEFFNjAwMDFCRjgyIC8q
IEFYUmVtb3RlRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVhSZW1vdGVGcmFtZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkyOTU1Q0YxMjJCMjMwQUU2MDAwMUJGODIgLyogQVhSZW1v
dGVGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBWFJlbW90ZUZyYW1lLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk3QkUzRDkxNkMwNDNEODAwMzMxNkJEIC8qIFBsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTI5ODFBQkM0MTMxODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5TWF0aE1M
RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5ODFDQTlEMTMxODIyRUMwMEQx
MkYyQSAvKiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIz
NDQ1LDYgKzIzNDQ3LDggQEAKIAkJCQlDMDQ5M0VCNzI0NDY5OUU0MDA5QUFDODAgLyogQVhMb2dn
ZXIuaCAqLywKIAkJCQkyOTgxQ0FBRjEzMTgyMkVDMDBEMTJGMkEgLyogQVhPYmplY3RDYWNoZS5j
cHAgKi8sCiAJCQkJMjlBODEyMUEwRkJCOUMxRDAwNTEwMjkzIC8qIEFYT2JqZWN0Q2FjaGUuaCAq
LywKKwkJCQkyOTU1Q0YxMjJCMjMwQUU2MDAwMUJGODIgLyogQVhSZW1vdGVGcmFtZS5jcHAgKi8s
CisJCQkJMjk1NUNGMTEyQjIzMEFFNjAwMDFCRjgyIC8qIEFYUmVtb3RlRnJhbWUuaCAqLywKIAkJ
CQlDMEUyMDhBMTI5Mzc5QzZGMDBDMEQyRDMgLyogQVhUZXh0TWFya2VyLmNwcCAqLywKIAkJCQlD
MEUyMDhBMDI5Mzc5QzZFMDBDMEQyRDMgLyogQVhUZXh0TWFya2VyLmggKi8sCiAJCQkJNDhDNEU4
M0MyQjM0RDgzODAwODM0NjBBIC8qIEFYVGV4dFJ1bi5jcHAgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYQ29yZU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWENvcmVPYmplY3QuaAppbmRleCA0NDEwODRlY2I4MDUuLjNmYmM3Zjhk
YjI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWENvcmVPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYQ29yZU9iamVjdC5oCkBA
IC0yMDUsNiArMjA1LDcgQEAgZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5Um9sZSB7CiAgICAgUHJv
Z3Jlc3NJbmRpY2F0b3IsCiAgICAgUmFkaW9CdXR0b24sCiAgICAgUmFkaW9Hcm91cCwKKyAgICBS
ZW1vdGVGcmFtZSwKICAgICBSb3dIZWFkZXIsCiAgICAgUm93LAogICAgIFJvd0dyb3VwLApAQCAt
NDQyLDYgKzQ0Myw4IEBAIEFMV0FZU19JTkxJTkUgU3RyaW5nIGFjY2Vzc2liaWxpdHlSb2xlVG9T
dHJpbmcoQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSkKICAgICAgICAgcmV0dXJuICJSYWRpb0J1dHRv
biJfczsKICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0dyb3VwOgogICAgICAgICBy
ZXR1cm4gIlJhZGlvR3JvdXAiX3M7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmVtb3Rl
RnJhbWU6CisgICAgICAgIHJldHVybiAiUmVtb3RlRnJhbWUiX3M7CiAgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6Um93SGVhZGVyOgogICAgICAgICByZXR1cm4gIlJvd0hlYWRlciJfczsKICAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSb3c6CkBAIC04MTUsNiArODE4LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvd0luc3RhbmNlKCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGxJ
bnN0YW5jZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNBWElzb2xhdGVkT2JqZWN0
SW5zdGFuY2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQVhSZW1vdGVGcmFtZSgp
IGNvbnN0ID0gMDsKIAogICAgIGJvb2wgaXNIZWFkaW5nKCkgY29uc3QgeyByZXR1cm4gcm9sZVZh
bHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkhlYWRpbmc7IH0KICAgICB2aXJ0dWFsIGJvb2wg
aXNMaW5rKCkgY29uc3QgPSAwOwpAQCAtOTE5LDYgKzkyMywxMiBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc1RyZWVHcmlkKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0
eVJvbGU6OlRyZWVHcmlkOyB9CiAgICAgYm9vbCBpc1RyZWVJdGVtKCkgY29uc3QgeyByZXR1cm4g
cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVJdGVtOyB9CiAgICAgYm9vbCBp
c1Njcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpTY3JvbGxCYXI7IH0KKyAgICBib29sIGlzUmVtb3RlRnJhbWUoKSBjb25zdCB7IHJldHVy
biByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmVtb3RlRnJhbWU7IH0KKyNpZiBQ
TEFURk9STShDT0NPQSkKKyAgICB2aXJ0dWFsIFJldGFpblB0cjxpZD4gcmVtb3RlRnJhbWVQbGF0
Zm9ybUVsZW1lbnQoKSBjb25zdCA9IDA7CisjZW5kaWYKKyAgICB2aXJ0dWFsIGJvb2wgaGFzUmVt
b3RlRnJhbWVDaGlsZCgpIGNvbnN0ID0gMDsKKwogICAgIGJvb2wgaXNCdXR0b24oKSBjb25zdDsK
ICAgICB2aXJ0dWFsIGJvb2wgaXNNZXRlcigpIGNvbnN0ID0gMDsKIApAQCAtMTE1OSw2ICsxMTY5
LDggQEAgcHVibGljOgogICAgIC8vIFZpZXdwb3J0LXJlbGF0aXZlIG1lYW5zIHRoYXQgd2hlbiB0
aGUgcGFnZSBzY3JvbGxzLCB0aGUgcG9ydGlvbiBvZiB0aGUgcGFnZSBpbiB0aGUgdmlld3BvcnQg
Y2hhbmdlcywgYW5kIHRodXMKICAgICAvLyBhbnkgdmlld3BvcnQtcmVsYXRpdmUgcmVjdHMgZG8g
dG9vIChzaW5jZSB0aGV5IGFyZSBlaXRoZXIgY2xvc2VyIHRvIG9yIGZhcnRoZXIgZnJvbSB0aGUg
dmlld3BvcnQgb3JpZ2luIGFmdGVyIHRoZSBzY3JvbGwpLgogICAgIHZpcnR1YWwgRmxvYXRQb2lu
dCBzY3JlZW5SZWxhdGl2ZVBvc2l0aW9uKCkgY29uc3QgPSAwOworICAgIC8vIFRoaXMgaXMgdGhl
IGFtb3VudCB0aGF0IHRoZSBSZW1vdGVGcmFtZSBpcyBvZmZzZXQgZnJvbSBpdHMgY29udGFpbmlu
ZyBwYXJlbnQuCisgICAgdmlydHVhbCBJbnRQb2ludCByZW1vdGVGcmFtZU9mZnNldCgpIGNvbnN0
ID0gMDsKIAogICAgIHZpcnR1YWwgRmxvYXRSZWN0IGNvbnZlcnRGcmFtZVRvU3BhY2UoY29uc3Qg
RmxvYXRSZWN0JiwgQWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZSkgY29uc3QgPSAwOwogI2lm
IFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWExvZ2dlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNw
cAppbmRleCBiNmUzMDZjZGRlY2YuLjdiMzVjOGY5ZDEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BWExvZ2dlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWExvZ2dlci5jcHAKQEAgLTg4Myw2ICs4ODMsOSBAQCB2b2lkIHN0cmVhbUFY
Q29yZU9iamVjdChUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IEFYQ29yZU9iamVjdCYgb2JqZWN0
LCBjb25zdCBPcAogICAgIGlmIChvcHRpb25zICYgQVhTdHJlYW1PcHRpb25zOjpSb2xlKQogICAg
ICAgICBzdHJlYW0uZHVtcFByb3BlcnR5KCJyb2xlIiwgb2JqZWN0LnJvbGVWYWx1ZSgpKTsKIAor
ICAgIGlmIChvYmplY3QucmVuZGVyZXIoKSkKKyAgICAgICAgc3RyZWFtLmR1bXBQcm9wZXJ0eSgi
cmVuZGVyTmFtZSIsIG9iamVjdC5yZW5kZXJlcigpLT5yZW5kZXJOYW1lKCkpOworCiAgICAgaWYg
KG9wdGlvbnMgJiBBWFN0cmVhbU9wdGlvbnM6OlBhcmVudElEKSB7CiAgICAgICAgIGF1dG8qIHBh
cmVudCA9IG9iamVjdC5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICAgICAgc3RyZWFtLmR1
bXBQcm9wZXJ0eSgicGFyZW50SUQiLCBwYXJlbnQgPyBwYXJlbnQtPm9iamVjdElEKCkgOiBBWElE
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAK
aW5kZXggMjgwZmFkNGYyNzAxLi4xYWM5NWYyZWE2YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1
ZGUgIkFYSXNvbGF0ZWRPYmplY3QuaCIKICNpbmNsdWRlICJBWElzb2xhdGVkVHJlZS5oIgogI2lu
Y2x1ZGUgIkFYTG9nZ2VyLmgiCisjaW5jbHVkZSAiQVhSZW1vdGVGcmFtZS5oIgogI2luY2x1ZGUg
IkFYVGV4dE1hcmtlci5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlBUklBR3JpZC5oIgogI2lu
Y2x1ZGUgIkFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaCIKQEAgLTEwNTQsNyArMTA1NSwxMCBA
QCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpjcmVhdGUoQWNjZXNzaWJpbGl0
eVJvbGUgcm9sZSkKICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCiAgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6VGFibGVIZWFkZXJDb250YWluZXI6CiAgICAgICAgIG9iaiA9IEFjY2Vzc2li
aWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lcjo6Y3JlYXRlKCk7Ci0gICAgICAgIGJyZWFrOyAgIAor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSZW1vdGVGcmFtZToK
KyAgICAgICAgb2JqID0gQVhSZW1vdGVGcmFtZTo6Y3JlYXRlKCk7CisgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNsaWRlclRodW1iOgogICAgICAgICBvYmogPSBB
Y2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWI6OmNyZWF0ZSgpOwogICAgICAgICBicmVhazsKQEAgLTEz
NTAsNiArMTM1NCwxNSBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZVJlY29tcHV0ZUNlbGxT
bG90cyhBY2Nlc3NpYmlsaXR5VGFibGUmIGF4VGFibGUpCiAjZW5kaWYKIH0KIAordm9pZCBBWE9i
amVjdENhY2hlOjpvblJlbW90ZUZyYW1lSW5pdGlhbGl6ZWQoQVhSZW1vdGVGcmFtZSYgcmVtb3Rl
RnJhbWUpCit7CisjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKKyAgICB1
cGRhdGVJc29sYXRlZFRyZWUocmVtb3RlRnJhbWUsIEFYUHJvcGVydHlOYW1lOjpSZW1vdGVGcmFt
ZVBsYXRmb3JtRWxlbWVudCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShyZW1vdGVGcmFtZSk7
CisjZW5kaWYKK30KKwogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiB2
b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZVJvd3NwYW5DaGFuZ2VkKEFjY2Vzc2liaWxpdHlUYWJs
ZUNlbGwmIGF4Q2VsbCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVj
dENhY2hlLmgKaW5kZXggZDEwNDljYzliYzIxLi4zOGM5OGE0NmVhOWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCkBAIC00Nyw2ICs0Nyw3IEBAIGNs
YXNzIFRleHRTdHJlYW07CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQVhSZW1vdGVG
cmFtZTsKIGNsYXNzIEFjY2Vzc2liaWxpdHlUYWJsZTsKIGNsYXNzIEFjY2Vzc2liaWxpdHlUYWJs
ZUNlbGw7CiBjbGFzcyBEb2N1bWVudDsKQEAgLTI0Niw2ICsyNDcsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBkZWZlck5vZGVBZGRlZE9yUmVtb3ZlZChOb2RlKik7CiAgICAgdm9pZCBoYW5kbGVTY3Jv
bGxlZFRvQW5jaG9yKGNvbnN0IE5vZGUqIGFuY2hvck5vZGUpOwogICAgIHZvaWQgb25TY3JvbGxi
YXJVcGRhdGUoU2Nyb2xsVmlldyopOworICAgIHZvaWQgb25SZW1vdGVGcmFtZUluaXRpYWxpemVk
KEFYUmVtb3RlRnJhbWUmKTsKIAogICAgIGJvb2wgaXNSZXRyaWV2aW5nQ3VycmVudE1vZGFsTm9k
ZSgpIHsgcmV0dXJuIG1faXNSZXRyaWV2aW5nQ3VycmVudE1vZGFsTm9kZTsgfQogICAgIE5vZGUq
IG1vZGFsTm9kZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WFJlbW90ZUZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhSZW1vdGVG
cmFtZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jZmJkZWRk
OTgxY2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
UmVtb3RlRnJhbWUuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiQVhSZW1vdGVGcmFtZS5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1JlZjxBWFJlbW90ZUZyYW1lPiBBWFJlbW90ZUZyYW1lOjpjcmVhdGUoKQoreworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEFYUmVtb3RlRnJhbWUpOworfQorCitMYXlvdXRSZWN0IEFY
UmVtb3RlRnJhbWU6OmVsZW1lbnRSZWN0KCkgY29uc3QKK3sKKyAgICBhdXRvKiBwYXJlbnQgPSBw
YXJlbnRPYmplY3QoKTsKKyAgICByZXR1cm4gcGFyZW50ID8gcGFyZW50LT5lbGVtZW50UmVjdCgp
IDogTGF5b3V0UmVjdCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYUmVtb3RlRnJhbWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhSZW1vdGVGcmFtZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uOTRkMmRmMDMwNGQyCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFJlbW90ZUZyYW1lLmgKQEAgLTAsMCArMSw2MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU1v
Y2tPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSZW1vdGVGcmFtZTsK
KworY2xhc3MgQVhSZW1vdGVGcmFtZSBmaW5hbCA6IHB1YmxpYyBBY2Nlc3NpYmlsaXR5TW9ja09i
amVjdCB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxBWFJlbW90ZUZyYW1lPiBjcmVhdGUoKTsK
KworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgaW5pdGlhbGl6ZVBsYXRmb3JtRWxlbWVu
dFdpdGhSZW1vdGVUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIGludCk7CisgICAgc3Rk
OjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGdlbmVyYXRlUmVtb3RlVG9rZW4oKSBjb25zdDsKKyAgICBS
ZXRhaW5QdHI8aWQ+IHJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkgY29uc3QgeyByZXR1cm4g
bV9yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudDsgfQorICAgIHBpZF90IHByb2Nlc3NJZGVudGlm
aWVyKCkgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzSWRlbnRpZmllcjsgfQorI2VuZGlmCisKK3By
aXZhdGU6CisgICAgdmlydHVhbCB+QVhSZW1vdGVGcmFtZSgpID0gZGVmYXVsdDsKKworICAgIEFj
Y2Vzc2liaWxpdHlSb2xlIGRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCkgeyByZXR1cm4gQWNj
ZXNzaWJpbGl0eVJvbGU6OlJlbW90ZUZyYW1lOyB9CisgICAgYm9vbCBjb21wdXRlQWNjZXNzaWJp
bGl0eUlzSWdub3JlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0FYUmVt
b3RlRnJhbWUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgTGF5b3V0UmVjdCBlbGVtZW50
UmVjdCgpIGNvbnN0OworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgUmV0YWluUHRyPGlkPiBt
X3JlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50OworICAgIHBpZF90IG1fcHJvY2Vzc0lkZW50aWZp
ZXIgeyAwIH07CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19BQ0NFU1NJQklMSVRZKEFYUmVtb3RlRnJhbWUsIGlzQVhSZW1vdGVG
cmFtZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5jcHAKaW5kZXggM2UzMmRiMDkzYWZiLi5mZDZmN2M0ZTI1NTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cApAQCAtNTQ0LDcgKzU0NCw5IEBAIEZsb2F0UmVjdCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpjb252
ZXJ0RnJhbWVUb1NwYWNlKGNvbnN0IEZsb2F0UmVjdCYgZnJhbWVSZWN0LCBBCiAgICAgCiBGbG9h
dFJlY3QgQWNjZXNzaWJpbGl0eU9iamVjdDo6cmVsYXRpdmVGcmFtZSgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGNvbnZlcnRGcmFtZVRvU3BhY2UoZWxlbWVudFJlY3QoKSwgQWNjZXNzaWJpbGl0eUNv
bnZlcnNpb25TcGFjZTo6UGFnZSk7CisgICAgYXV0byByZWN0ID0gZWxlbWVudFJlY3QoKTsKKyAg
ICByZWN0Lm1vdmVCeShyZW1vdGVGcmFtZU9mZnNldCgpKTsKKyAgICByZXR1cm4gY29udmVydEZy
YW1lVG9TcGFjZShyZWN0LCBBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlOjpQYWdlKTsKIH0K
IAogQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU9iamVjdDo6bmV4dFNpYmxpbmdV
bmlnbm9yZWQoaW50IGxpbWl0KSBjb25zdApAQCAtMjA4NiwxNCArMjA4OCwyMyBAQCBjb25zdCBB
Y2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyogQWNjZXNzaWJpbGl0eU9iamVjdDo6YW5jZXN0b3JBY2Nl
c3NpYmlsaXR5U2Nyb2xsVgogI2lmIFBMQVRGT1JNKENPQ09BKQogUmVtb3RlQVhPYmplY3RSZWYg
QWNjZXNzaWJpbGl0eU9iamVjdDo6cmVtb3RlUGFyZW50T2JqZWN0KCkgY29uc3QKIHsKLSAgICBp
ZiAoYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpKSB7Ci0gICAgICAgIGlmIChhdXRv
KiBmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpKQotICAgICAgICAgICAgcmV0dXJuIGZyYW1lLT5s
b2FkZXIoKS5jbGllbnQoKS5hY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCk7Ci0gICAgfQotICAg
IHJldHVybiBudWxscHRyOworICAgIGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsK
KyAgICBhdXRvKiBmcmFtZSA9IGRvY3VtZW50ID8gZG9jdW1lbnQtPmZyYW1lKCkgOiBudWxscHRy
OworICAgIHJldHVybiBmcmFtZSA/IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5hY2Nlc3NpYmls
aXR5UmVtb3RlT2JqZWN0KCkgOiBudWxscHRyOwogfQogI2VuZGlmCiAKK0ludFBvaW50IEFjY2Vz
c2liaWxpdHlPYmplY3Q6OnJlbW90ZUZyYW1lT2Zmc2V0KCkgY29uc3QKK3sKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyAgICBhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7CisgICAgYXV0
byogZnJhbWUgPSBkb2N1bWVudCA/IGRvY3VtZW50LT5mcmFtZSgpIDogbnVsbHB0cjsKKyAgICBy
ZXR1cm4gZnJhbWUgPyBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuYWNjZXNzaWJpbGl0eVJlbW90
ZUZyYW1lT2Zmc2V0KCkgOiBJbnRQb2ludCgpOworI2Vsc2UKKyAgICByZXR1cm4gSW50UG9pbnQo
KTsKKyNlbmRpZgorfQorCiBEb2N1bWVudCogQWNjZXNzaWJpbGl0eU9iamVjdDo6ZG9jdW1lbnQo
KSBjb25zdAogewogICAgIGF1dG8qIGZyYW1lVmlldyA9IGRvY3VtZW50RnJhbWVWaWV3KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5o
CmluZGV4IDRkMjBmNTVhNTQ0Yy4uMzU5NWQzMWU3MWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaApAQCAtMTAyLDYgKzEwMiw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9v
bCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAg
IGJvb2wgaXNBWFJlbW90ZUZyYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlld0luc3RhbmNlKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5U1ZH
Um9vdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlU
YWJsZUluc3RhbmNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTQ2Miwx
MCArNDYzLDE0IEBAIHB1YmxpYzoKICAgICBXaWRnZXQqIHdpZGdldEZvckF0dGFjaG1lbnRWaWV3
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIGJvb2wgaXNQbHVnaW4o
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCisgICAgSW50UG9pbnQgcmVtb3Rl
RnJhbWVPZmZzZXQoKSBjb25zdCBvdmVycmlkZTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBS
ZW1vdGVBWE9iamVjdFJlZiByZW1vdGVQYXJlbnRPYmplY3QoKSBjb25zdCBvdmVycmlkZTsKICAg
ICBGbG9hdFJlY3QgY29udmVydFJlY3RUb1BsYXRmb3JtU3BhY2UoY29uc3QgRmxvYXRSZWN0Jiwg
QWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmV0YWlu
UHRyPGlkPiByZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG5pbDsgfQogI2VuZGlmCisgICAgYm9vbCBoYXNSZW1vdGVGcmFtZUNoaWxkKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIFBhZ2UqIHBhZ2UoKSBjb25zdCBvdmVy
cmlkZTsKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCBvdmVycmlkZTsKICAgICBMb2Nh
bEZyYW1lVmlldyogZG9jdW1lbnRGcmFtZVZpZXcoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwCmluZGV4IGVlOGFiZWMzZDdiNS4uMmYxMmVmNzUzZTRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5jcHAKQEAgLTI0MTMsNyArMjQxMyw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6YWRkQXR0YWNobWVudENoaWxkcmVuKCkKIAogICAgIC8vIExvY2FsRnJhbWVWaWV3J3Mg
bmVlZCB0byBiZSBpbnNlcnRlZCBpbnRvIHRoZSBBWCBoaWVyYXJjaHkgd2hlbiBlbmNvdW50ZXJl
ZC4KICAgICBXaWRnZXQqIHdpZGdldCA9IHdpZGdldEZvckF0dGFjaG1lbnRWaWV3KCk7Ci0gICAg
aWYgKCF3aWRnZXQgfHwgIXdpZGdldC0+aXNMb2NhbEZyYW1lVmlldygpKQorICAgIGlmICghd2lk
Z2V0IHx8ICEod2lkZ2V0LT5pc0xvY2FsRnJhbWVWaWV3KCkgfHwgd2lkZ2V0LT5pc1JlbW90ZUZy
YW1lVmlldygpKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGFkZENoaWxkKGF4T2JqZWN0
Q2FjaGUoKS0+Z2V0T3JDcmVhdGUod2lkZ2V0KSk7CkBAIC0yNTY4LDcgKzI1NjgsNyBAQCB2b2lk
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENoaWxkcmVuKCkKICAgICAgICAgYXV0byBv
d25lcnMgPSBvYmplY3Qub3duZXJzKCk7CiAgICAgICAgIGlmIChvd25lcnMuc2l6ZSgpICYmICFv
d25lcnMuY29udGFpbnModGhpcykpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIAorCiAg
ICAgICAgIGFkZENoaWxkKCZvYmplY3QpOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAKaW5kZXgg
MmJiYzMwODdiOWY4Li41MjEyMjJhZjYwMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwCkBAIC0yNywxMCAr
MjcsMTIgQEAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oIgogCiAjaW5jbHVk
ZSAiQVhPYmplY3RDYWNoZS5oIgorI2luY2x1ZGUgIkFYUmVtb3RlRnJhbWUuaCIKICNpbmNsdWRl
ICJBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiTG9jYWxGcmFtZS5oIgogI2luY2x1ZGUgIkxvY2FsRnJhbWVWaWV3
LmgiCisjaW5jbHVkZSAiUmVtb3RlRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVu
dC5oIgogI2luY2x1ZGUgIldpZGdldC5oIgogCkBAIC01Miw2ICs1NCwxNiBAQCBBY2Nlc3NpYmls
aXR5U2Nyb2xsVmlldzo6fkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KCkKIHZvaWQgQWNjZXNzaWJp
bGl0eVNjcm9sbFZpZXc6OmRldGFjaFJlbW90ZVBhcnRzKEFjY2Vzc2liaWxpdHlEZXRhY2htZW50
VHlwZSBkZXRhY2htZW50VHlwZSkKIHsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpkZXRhY2hS
ZW1vdGVQYXJ0cyhkZXRhY2htZW50VHlwZSk7CisKKyAgICBhdXRvKiByZW1vdGVGcmFtZVZpZXcg
PSBkeW5hbWljRG93bmNhc3Q8UmVtb3RlRnJhbWVWaWV3PihtX3Njcm9sbFZpZXcuZ2V0KCkpOwor
ICAgIGlmIChyZW1vdGVGcmFtZVZpZXcgJiYgbV9yZW1vdGVGcmFtZSAmJiAoZGV0YWNobWVudFR5
cGUgPT0gQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlOjpFbGVtZW50RGVzdHJveWVkIHx8IGRl
dGFjaG1lbnRUeXBlID09IEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZTo6Q2FjaGVEZXN0cm95
ZWQpKSB7CisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICBhdXRvJiByZW1vdGVGcmFtZSA9IHJl
bW90ZUZyYW1lVmlldy0+ZnJhbWUoKTsKKyAgICAgICAgcmVtb3RlRnJhbWUudW5iaW5kUmVtb3Rl
QWNjZXNzaWJpbGl0eUZyYW1lcyhtX3JlbW90ZUZyYW1lLT5wcm9jZXNzSWRlbnRpZmllcigpKTsK
KyNlbmRpZgorICAgICAgICBtX3JlbW90ZUZyYW1lID0gbnVsbHB0cjsKKyAgICB9CisKICAgICBt
X3Njcm9sbFZpZXcgPSBudWxscHRyOwogICAgIG1fZnJhbWVPd25lckVsZW1lbnQgPSBudWxscHRy
OwogfQpAQCAtMTc3LDggKzE4OSwxMCBAQCBBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyKiBBY2Nlc3Np
YmlsaXR5U2Nyb2xsVmlldzo6YWRkQ2hpbGRTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzYwogdm9pZCBB
Y2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6Y2xlYXJDaGlsZHJlbigpCiB7CiAgICAgQWNjZXNzaWJp
bGl0eU9iamVjdDo6Y2xlYXJDaGlsZHJlbigpOworCiAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhciA9
IG51bGxwdHI7CiAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyID0gbnVsbHB0cjsKKwogICAgIG1f
Y2hpbGRyZW5EaXJ0eSA9IGZhbHNlOwogfQogCkBAIC0xOTEsMTEgKzIwNSw0NSBAQCBib29sIEFj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNv
bnN0CiAgICAgcmV0dXJuIHdlYkFyZWEtPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKTsKIH0KIAor
dm9pZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkUmVtb3RlRnJhbWVDaGlsZCgpCit7Cisg
ICAgYXV0byogcmVtb3RlRnJhbWVWaWV3ID0gZHluYW1pY0Rvd25jYXN0PFJlbW90ZUZyYW1lVmll
dz4obV9zY3JvbGxWaWV3LmdldCgpKTsKKyAgICBpZiAoIXJlbW90ZUZyYW1lVmlldykKKyAgICAg
ICAgcmV0dXJuOworCisgICAgV2Vha1B0ciBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsKKyAgICBp
ZiAoIWNhY2hlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1fcmVtb3RlRnJhbWUpIHsK
KyAgICAgICAgLy8gTWFrZSB0aGUgZmF1eCBlbGVtZW50IHRoYXQgcmVwcmVzZW50cyB0aGUgcmVt
b3RlIHRyYW5zZmVyIGVsZW1lbnQgZm9yIEFYLgorICAgICAgICBtX3JlbW90ZUZyYW1lID0gZG93
bmNhc3Q8QVhSZW1vdGVGcmFtZT4oY2FjaGUtPmNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6UmVt
b3RlRnJhbWUpKTsKKyAgICAgICAgbV9yZW1vdGVGcmFtZS0+c2V0UGFyZW50KHRoaXMpOworCisj
aWYgUExBVEZPUk0oTUFDKQorICAgICAgICAvLyBHZW5lcmF0ZSBhIG5ldyB0b2tlbiBhbmQgcGFz
cyBpdCBiYWNrIHRvIHRoZSBvdGhlciByZW1vdGUgZnJhbWUgc28gaXQgY2FuIGJpbmQgdGhlc2Ug
b2JqZWN0cyB0b2dldGhlci4KKyAgICAgICAgYXV0byBnZW5lcmF0ZWRUb2tlbiA9IG1fcmVtb3Rl
RnJhbWUtPmdlbmVyYXRlUmVtb3RlVG9rZW4oKTsKKyAgICAgICAgYXV0byYgcmVtb3RlRnJhbWUg
PSByZW1vdGVGcmFtZVZpZXctPmZyYW1lKCk7CisgICAgICAgIHJlbW90ZUZyYW1lLmJpbmRSZW1v
dGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGdldHBpZCgpLCBnZW5lcmF0ZWRUb2tlbiwgW3RoaXMsICZy
ZW1vdGVGcmFtZSwgcHJvdGVjdGVkQWNjZXNzYmlsaXR5UmVtb3RlRnJhbWUgPSBSZWZQdHIgeyBt
X3JlbW90ZUZyYW1lIH1dIChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gdG9rZW4sIGludCBwcm9j
ZXNzSWRlbnRpZmllcikgbXV0YWJsZSB7CisgICAgICAgICAgICBwcm90ZWN0ZWRBY2Nlc3NiaWxp
dHlSZW1vdGVGcmFtZS0+aW5pdGlhbGl6ZVBsYXRmb3JtRWxlbWVudFdpdGhSZW1vdGVUb2tlbih0
b2tlbiwgcHJvY2Vzc0lkZW50aWZpZXIpOworCisgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHJl
bW90ZSBzaWRlIHdpdGggdGhlIG9mZnNldCBvZiB0aGlzIG9iamVjdCBzbyBpdCBjYW4gY2FsY3Vs
YXRlIGZyYW1lcyBjb3JyZWN0bHkuCisgICAgICAgICAgICBhdXRvIGxvY2F0aW9uID0gZWxlbWVu
dFJlY3QoKS5sb2NhdGlvbigpOworICAgICAgICAgICAgcmVtb3RlRnJhbWUudXBkYXRlUmVtb3Rl
RnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KGZsb29yZWRJbnRQb2ludChsb2NhdGlvbikpOworICAg
ICAgICB9KTsKKyNlbmRpZgorICAgIH0gZWxzZQorICAgICAgICBtX3JlbW90ZUZyYW1lLT5zZXRQ
YXJlbnQodGhpcyk7CisKKyAgICBhZGRDaGlsZChtX3JlbW90ZUZyYW1lLmdldCgpKTsKK30KKwog
dm9pZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkQ2hpbGRyZW4oKQogewogICAgIEFTU0VS
VCghbV9jaGlsZHJlbkluaXRpYWxpemVkKTsKICAgICBtX2NoaWxkcmVuSW5pdGlhbGl6ZWQgPSB0
cnVlOwogCisgICAgYWRkUmVtb3RlRnJhbWVDaGlsZCgpOwogICAgIGFkZENoaWxkKHdlYkFyZWFP
YmplY3QoKSk7CiAgICAgdXBkYXRlU2Nyb2xsYmFycygpOwogfQpAQCAtMjAzLDcgKzI1MSw3IEBA
IHZvaWQgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmFkZENoaWxkcmVuKCkKIEFjY2Vzc2liaWxp
dHlPYmplY3QqIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojp3ZWJBcmVhT2JqZWN0KCkgY29uc3QK
IHsKICAgICBhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7Ci0gICAgaWYgKCFkb2N1
bWVudCB8fCAhZG9jdW1lbnQtPmhhc0xpdmluZ1JlbmRlclRyZWUoKSkKKyAgICBpZiAoIWRvY3Vt
ZW50IHx8ICFkb2N1bWVudC0+aGFzTGl2aW5nUmVuZGVyVHJlZSgpIHx8IG1fcmVtb3RlRnJhbWUp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKGF1dG8qIGNhY2hlID0gYXhPYmpl
Y3RDYWNoZSgpKQpAQCAtMjM0LDkgKzI4MiwxNSBAQCBMYXlvdXRSZWN0IEFjY2Vzc2liaWxpdHlT
Y3JvbGxWaWV3OjplbGVtZW50UmVjdCgpIGNvbnN0CiAKIERvY3VtZW50KiBBY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldzo6ZG9jdW1lbnQoKSBjb25zdAogewotICAgIGlmIChhdXRvKiBmcmFtZVZpZXcg
PSBkeW5hbWljRG93bmNhc3Q8TG9jYWxGcmFtZVZpZXc+KG1fc2Nyb2xsVmlldy5nZXQoKSkpIHsK
KyAgICBpZiAoYXV0byogZnJhbWVWaWV3ID0gZHluYW1pY0Rvd25jYXN0PExvY2FsRnJhbWVWaWV3
PihtX3Njcm9sbFZpZXcuZ2V0KCkpKQogICAgICAgICByZXR1cm4gZnJhbWVWaWV3LT5mcmFtZSgp
LmRvY3VtZW50KCk7CisKKyAgICAvLyBGb3IgdGhlIFJlbW90ZUZyYW1lVmlldyBjYXNlLCB3ZSBu
ZWVkIHRvIHJldHVybiB0aGUgZG9jdW1lbnQgb2Ygb3VyIGhvc3RpbmcgcGFyZW50IHNvIGF4T2Jq
ZWN0Q2FjaGUoKSByZXNvbHZlcyBjb3JyZWN0bHkuCisgICAgaWYgKGF1dG8qIHJlbW90ZUZyYW1l
VmlldyA9IGR5bmFtaWNEb3duY2FzdDxSZW1vdGVGcmFtZVZpZXc+KG1fc2Nyb2xsVmlldy5nZXQo
KSkpIHsKKyAgICAgICAgaWYgKGF1dG8qIG93bmVyID0gcmVtb3RlRnJhbWVWaWV3LT5mcmFtZSgp
Lm93bmVyRWxlbWVudCgpKQorICAgICAgICAgICAgcmV0dXJuICYob3duZXItPmRvY3VtZW50KCkp
OwogICAgIH0KKwogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpkb2N1bWVudCgpOwog
fQogCkBAIC0yNTksOCArMzEzLDEwIEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxp
dHlTY3JvbGxWaWV3OjpwYXJlbnRPYmplY3QoKSBjb25zdAogICAgIFdlYWtQdHIgb3duZXIgPSBt
X2ZyYW1lT3duZXJFbGVtZW50LmdldCgpOwogICAgIGlmIChhdXRvKiBsb2NhbEZyYW1lVmlldyA9
IGR5bmFtaWNEb3duY2FzdDxMb2NhbEZyYW1lVmlldz4obV9zY3JvbGxWaWV3LmdldCgpKSkKICAg
ICAgICAgb3duZXIgPSBsb2NhbEZyYW1lVmlldy0+ZnJhbWUoKS5vd25lckVsZW1lbnQoKTsKKyAg
ICBlbHNlIGlmIChhdXRvKiByZW1vdGVGcmFtZVZpZXcgPSBkeW5hbWljRG93bmNhc3Q8UmVtb3Rl
RnJhbWVWaWV3PihtX3Njcm9sbFZpZXcuZ2V0KCkpKQorICAgICAgICBvd25lciA9IHJlbW90ZUZy
YW1lVmlldy0+ZnJhbWUoKS5vd25lckVsZW1lbnQoKTsKIAotICAgIGlmIChjYWNoZSAmJiBvd25l
ciAmJiBvd25lci0+cmVuZGVyZXIoKSkKKyAgICBpZiAob3duZXIgJiYgb3duZXItPnJlbmRlcmVy
KCkpCiAgICAgICAgIHJldHVybiBjYWNoZS0+Z2V0T3JDcmVhdGUob3duZXIuZ2V0KCkpOwogICAg
IHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oCmluZGV4IDU1NzA0NDY3MWM3ZC4uNTI1YWM3
ODNmYmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlTY3JvbGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5U2Nyb2xsVmlldy5oCkBAIC0zMCw2ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAKK2NsYXNzIEFYUmVtb3RlRnJhbWU7CiBjbGFzcyBBY2Nlc3NpYmlsaXR5U2Ny
b2xsYmFyOwogY2xhc3MgU2Nyb2xsYmFyOwogY2xhc3MgU2Nyb2xsVmlldzsKQEAgLTU0LDcgKzU1
LDggQEAgcHJpdmF0ZToKICAgICBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3SW5zdGFu
Y2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBpc0VuYWJsZWQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgCisgICAgYm9vbCBoYXNSZW1v
dGVGcmFtZUNoaWxkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9yZW1vdGVGcmFtZTsgfQorCiAg
ICAgYm9vbCBpc0F0dGFjaG1lbnQoKSBjb25zdCBvdmVycmlkZTsKICAgICBQbGF0Zm9ybVdpZGdl
dCBwbGF0Zm9ybVdpZGdldCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFdpZGdldCogd2lkZ2V0Rm9y
QXR0YWNobWVudFZpZXcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBjdXJyZW50U2Nyb2xsVmll
dygpOyB9CkBAIC02OSw2ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRGb2N1c2VkKGJv
b2wpIG92ZXJyaWRlOwogICAgIGJvb2wgY2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSBjb25zdCBvdmVy
cmlkZTsKICAgICBib29sIGlzRm9jdXNlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgYWRk
UmVtb3RlRnJhbWVDaGlsZCgpOwogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgTG9jYWxGcmFtZVZpZXcqIGRvY3VtZW50RnJhbWVWaWV3KCkgY29uc3Qgb3Zl
cnJpZGU7CkBAIC04NSw2ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEFjY2Vzc2liaWxp
dHlPYmplY3Q+IG1faG9yaXpvbnRhbFNjcm9sbGJhcjsKICAgICBSZWZQdHI8QWNjZXNzaWJpbGl0
eU9iamVjdD4gbV92ZXJ0aWNhbFNjcm9sbGJhcjsKICAgICBib29sIG1fY2hpbGRyZW5EaXJ0eTsK
KyAgICBSZWZQdHI8QVhSZW1vdGVGcmFtZT4gbV9yZW1vdGVGcmFtZTsKIH07CiAgICAgCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKaW5kZXggNWRl
OTcwZjFmNzBkLi41MTg3YjJmYTM1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAK
QEAgLTM3MCw2ICszNzAsNyBAQCBzdGF0aWMgQXRzcGk6OlJvbGUgYXRzcGlSb2xlKEFjY2Vzc2li
aWxpdHlSb2xlIHJvbGUpCiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3VtbWFyeToKICAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJsZUhlYWRlckNvbnRhaW5lcjoKICAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpTdWdnZXN0aW9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OlJlbW90ZUZyYW1lOgogICAgICAgICByZXR1cm4gQXRzcGk6OlJvbGU6OlVua25vd247CiAg
ICAgLy8gQWRkIG1vc3QgbmV3IHJvbGVzIGFib3ZlLiBUaGUgcmVsZWFzZSBhc3NlcnQgaXMgZm9y
IHJvbGVzIHRoYXQgYXJlIGhhbmRsZWQgc3BlY2lhbGx5LgogICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6Okxpc3RNYXJrZXI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1t
CmluZGV4IDJmMjliNzJmZmU3ZS4uOTI0M2FkNmJkMzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlcklPUy5tbQpAQCAtMTExMiw2ICsxMTEyLDcgQEAgc3RhdGljIEFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyICphbmNlc3RvcldpdGhSb2xlKGNvbnN0IEFYQ29yZU9iamVjdCYg
ZGVzY2VuZGEKICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpJZ25vcmVkOgogICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OkxpbmVCcmVhazoKICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpQcmVzZW50YXRpb25hbDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSZW1vdGVGcmFt
ZToKICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duOgogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcAppbmRleCAxMDE0NTQ2Mjc4
ZjMuLjM0MmQ0YzcyZTY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKQEAgLTM3OCw2
ICszNzgsMTAgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplUHJvcGVydGllcyhj
b25zdCBSZWY8QWNjZXNzaWJpbGl0eU9iamVjdD4mIGF4T2IKICNlbmRpZgogCiAgICAgc2V0T2Jq
ZWN0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkludGVybmFsTGlua0VsZW1lbnQsIG9iamVjdC5p
bnRlcm5hbExpbmtFbGVtZW50KCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpI
YXNSZW1vdGVGcmFtZUNoaWxkLCBvYmplY3QuaGFzUmVtb3RlRnJhbWVDaGlsZCgpKTsKKyAgICAv
LyBEb24ndCBkdXBsaWNhdGUgdGhlIHJlbW90ZUZyYW1lT2Zmc2V0IGZvciBldmVyeSBvYmplY3Qu
IEp1c3Qgc3RvcmUgaW4gdGhlIFdlYkFyZWEuCisgICAgaWYgKG9iamVjdC5pc1dlYkFyZWEoKSkK
KyAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlJlbW90ZUZyYW1lT2Zmc2V0LCBv
YmplY3QucmVtb3RlRnJhbWVPZmZzZXQoKSk7CiAKICAgICBpbml0aWFsaXplUGxhdGZvcm1Qcm9w
ZXJ0aWVzKGF4T2JqZWN0KTsKIH0KQEAgLTQ2NCw2ICs0NjgsNyBAQCB2b2lkIEFYSXNvbGF0ZWRP
YmplY3Q6OnNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgQVhQcm9wZXJ0
eVZhbHVlVgogICAgICAgICBbXShPcHRpb25TZXQ8QVhBbmNlc3RvckZsYWc+JiB0eXBlZFZhbHVl
KSB7IHJldHVybiB0eXBlZFZhbHVlLmlzRW1wdHkoKTsgfSwKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICAgICAgW10oUmV0YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4mIHR5cGVkVmFsdWUpIHsg
cmV0dXJuICF0eXBlZFZhbHVlOyB9LAorICAgICAgICBbXShSZXRhaW5QdHI8aWQ+JiB0eXBlZFZh
bHVlKSB7IHJldHVybiAhdHlwZWRWYWx1ZTsgfSwKICNlbmRpZgogICAgICAgICBbXShJbnNpZGVM
aW5rJiB0eXBlZFZhbHVlKSB7IHJldHVybiB0eXBlZFZhbHVlID09IEluc2lkZUxpbmsoKTsgfSwK
ICAgICAgICAgW10oVmVjdG9yPFZlY3RvcjxBWElEPj4mIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5
cGVkVmFsdWUuaXNFbXB0eSgpOyB9LApAQCAtMTIwNiw2ICsxMjExLDIxIEBAIExheW91dFJlY3Qg
QVhJc29sYXRlZE9iamVjdDo6ZWxlbWVudFJlY3QoKSBjb25zdAogICAgIH0pOwogfQogCitJbnRQ
b2ludCBBWElzb2xhdGVkT2JqZWN0OjpyZW1vdGVGcmFtZU9mZnNldCgpIGNvbnN0Cit7CisgICAg
YXV0byogd2ViQXJlYSA9IEFjY2Vzc2liaWxpdHk6OmZpbmRBbmNlc3RvcjxBWElzb2xhdGVkT2Jq
ZWN0PigqdGhpcywgdHJ1ZSwgW10gKGNvbnN0IGF1dG8mIG9iamVjdCkgeworICAgICAgICByZXR1
cm4gb2JqZWN0LmlzV2ViQXJlYSgpOworICAgIH0pOworCisgICAgaWYgKCF3ZWJBcmVhKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgaWYgKGF1dG8gcG9pbnQgPSB3ZWJBcmVhLT5vcHRpb25h
bEF0dHJpYnV0ZVZhbHVlPEludFBvaW50PihBWFByb3BlcnR5TmFtZTo6UmVtb3RlRnJhbWVPZmZz
ZXQpKQorICAgICAgICByZXR1cm4gKnBvaW50OworCisgICAgcmV0dXJuIHsgfTsKK30KKwogRmxv
YXRQb2ludCBBWElzb2xhdGVkT2JqZWN0OjpzY3JlZW5SZWxhdGl2ZVBvc2l0aW9uKCkgY29uc3QK
IHsKICAgICBpZiAoYXV0byBwb2ludCA9IG9wdGlvbmFsQXR0cmlidXRlVmFsdWU8RmxvYXRQb2lu
dD4oQVhQcm9wZXJ0eU5hbWU6OlNjcmVlblJlbGF0aXZlUG9zaXRpb24pKQpAQCAtMTIyOSwyMiAr
MTI0OSwyMyBAQCBGbG9hdFBvaW50IEFYSXNvbGF0ZWRPYmplY3Q6OnNjcmVlblJlbGF0aXZlUG9z
aXRpb24oKSBjb25zdAogCiBGbG9hdFJlY3QgQVhJc29sYXRlZE9iamVjdDo6cmVsYXRpdmVGcmFt
ZSgpIGNvbnN0CiB7CisgICAgRmxvYXRSZWN0IHJlbGF0aXZlRnJhbWU7CisKICAgICBpZiAoYXV0
byBjYWNoZWRSZWxhdGl2ZUZyYW1lID0gb3B0aW9uYWxBdHRyaWJ1dGVWYWx1ZTxJbnRSZWN0PihB
WFByb3BlcnR5TmFtZTo6UmVsYXRpdmVGcmFtZSkpIHsKICAgICAgICAgLy8gV2Ugc2hvdWxkIG5v
dCBoYXZlIGNhY2hlZCBhIHJlbGF0aXZlIGZyYW1lIGZvciBlbGVtZW50cyB0aGF0IGdldCB0aGVp
ciBnZW9tZXRyeSBmcm9tIHRoZWlyIGNoaWxkcmVuLgogICAgICAgICBBU1NFUlQoIW1fZ2V0c0dl
b21ldHJ5RnJvbUNoaWxkcmVuKTsKLSAgICAgICAgcmV0dXJuICpjYWNoZWRSZWxhdGl2ZUZyYW1l
OwotICAgIH0KLQotICAgIGlmIChtX2dldHNHZW9tZXRyeUZyb21DaGlsZHJlbikgeworICAgICAg
ICByZWxhdGl2ZUZyYW1lID0gKmNhY2hlZFJlbGF0aXZlRnJhbWU7CisgICAgfSBlbHNlIGlmICht
X2dldHNHZW9tZXRyeUZyb21DaGlsZHJlbikgewogICAgICAgICBhdXRvIGZyYW1lID0gZW5jbG9z
aW5nSW50UmVjdChyZWxhdGl2ZUZyYW1lRnJvbUNoaWxkcmVuKCkpOwogICAgICAgICBpZiAoIWZy
YW1lLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBmcmFtZTsKKyAgICAgICAgICAgIHJl
bGF0aXZlRnJhbWUgPSBmcmFtZTsKICAgICAgICAgLy8gRWl0aGVyIHdlIGhhZCBubyBjaGlsZHJl
biwgb3Igb3VyIGNoaWxkcmVuIGhhZCBlbXB0eSBmcmFtZXMuIFRoZSByaWdodCB0aGluZyB0byBk
byB3b3VsZCBiZSB0byByZXR1cm4KICAgICAgICAgLy8gYSByZWN0IGF0IHRoZSBwb3NpdGlvbiBv
ZiB0aGUgbmVhcmVzdCByZW5kZXIgdHJlZSBhbmNlc3RvciB3aXRoIHNvbWUgbWFkZS11cCBzaXpl
IChBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6Ym91bmRpbmdCb3hSZWN0IGRvZXMgdGhpcykuCiAg
ICAgICAgIC8vIEhvd2V2ZXIsIHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIHRoZSByZW5kZXIgdHJl
ZSBpbiB0aGlzIGNvbnRleHQgKG9ubHkgdGhlIEFYIGlzb2xhdGVkIHRyZWUsIHdoaWNoIGlzIHRv
byBzcGFyc2UgZm9yIHRoaXMgcHVycG9zZSksIHNvCiAgICAgICAgIC8vIHVudGlsIHdlIGNhY2hl
IHRoZSBuZWNlc3NhcnkgaW5mb3JtYXRpb24gbGV0J3MgZ28gdG8gdGhlIG1haW4tdGhyZWFkLgog
ICAgIH0gZWxzZSBpZiAocm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNvbHVtbiB8
fCByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFibGVIZWFkZXJDb250YWluZXIp
Ci0gICAgICAgIHJldHVybiBleHBvc2VkVGFibGVBbmNlc3RvcigpID8gcmVsYXRpdmVGcmFtZUZy
b21DaGlsZHJlbigpIDogRmxvYXRSZWN0KCk7CisgICAgICAgIHJlbGF0aXZlRnJhbWUgPSBleHBv
c2VkVGFibGVBbmNlc3RvcigpID8gcmVsYXRpdmVGcmFtZUZyb21DaGlsZHJlbigpIDogRmxvYXRS
ZWN0KCk7CisKIAogICAgIC8vIE1vY2sgb2JqZWN0cyBhbmQgU1ZHIG9iamVjdHMgbmVlZCB1c2Ug
dGhlIG1haW4gdGhyZWFkIHNpbmNlIHRoZXkgZG8gbm90IGhhdmUgcmVuZGVyIG5vZGVzIGFuZCBh
cmUgbm90IHBhaW50ZWQgd2l0aCBsYXllcnMsIHJlc3BlY3RpdmVseS4KICAgICAvLyBGSVhNRTog
UmVtb3ZlIGlzTm9uTGF5ZXJTVkdPYmplY3Qgd2hlbiBMQlNFIGlzIGVuYWJsZWQgJiBTVkcgZnJh
bWVzIGFyZSBjYWNoZWQuCkBAIC0xMjY2LDYgKzEyODcsNyBAQCBGbG9hdFJlY3QgQVhJc29sYXRl
ZE9iamVjdDo6cmVsYXRpdmVGcmFtZSgpIGNvbnN0CiAgICAgaWYgKGFuY2VzdG9yICYmIGZyYW1l
UmVjdC5sb2NhdGlvbigpID09IEZsb2F0UG9pbnQoKSkKICAgICAgICAgZnJhbWVSZWN0LnNldExv
Y2F0aW9uKGFuY2VzdG9yLT5yZWxhdGl2ZUZyYW1lKCkubG9jYXRpb24oKSk7CiAKKyAgICBmcmFt
ZVJlY3QubW92ZUJ5KHsgcmVtb3RlRnJhbWVPZmZzZXQoKSB9KTsKICAgICByZXR1cm4gZnJhbWVS
ZWN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgKaW5kZXggZDJhNjZjMmY1M2U0Li5kZTgy
N2Q1ZmUwMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0
ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNp
ZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQogCiAjaW5jbHVkZSAiQVhDb3Jl
T2JqZWN0LmgiCisjaW5jbHVkZSAiQVhJc29sYXRlZFRyZWUuaCIKICNpbmNsdWRlICJBWE9iamVj
dENhY2hlLmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNsdWRlICJMYXlvdXRSZWN0Lmgi
CkBAIC0yMTUsNiArMjE2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzRmlsZVVwbG9hZEJ1dHRv
bigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFt
ZTo6SXNGaWxlVXBsb2FkQnV0dG9uKTsgfQogICAgIGJvb2wgaXNNZXRlcigpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNZXRlcik7IH07
CiAgICAgRmxvYXRQb2ludCBzY3JlZW5SZWxhdGl2ZVBvc2l0aW9uKCkgY29uc3QgZmluYWw7Cisg
ICAgSW50UG9pbnQgcmVtb3RlRnJhbWVPZmZzZXQoKSBjb25zdCBmaW5hbDsKICAgICBGbG9hdFJl
Y3QgcmVsYXRpdmVGcmFtZSgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaGFzQ2FjaGVkUmVsYXRp
dmVGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG9wdGlvbmFsQXR0cmlidXRlVmFsdWU8SW50UmVjdD4o
QVhQcm9wZXJ0eU5hbWU6OlJlbGF0aXZlRnJhbWUpLmhhc192YWx1ZSgpOyB9CiAjaWYgUExBVEZP
Uk0oTUFDKQpAQCAtMjYzLDcgKzI2NSw3IEBAIHByaXZhdGU6CiAgICAgQVhJc29sYXRlZE9iamVj
dCogYWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCBmaW5hbDsKICAg
ICBBWElzb2xhdGVkT2JqZWN0KiBmb2N1c2VkVUlFbGVtZW50KCkgY29uc3QgZmluYWw7CiAgICAg
QVhDb3JlT2JqZWN0KiBpbnRlcm5hbExpbmtFbGVtZW50KCkgY29uc3QgZmluYWwgeyByZXR1cm4g
b2JqZWN0QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkludGVybmFsTGlua0VsZW1lbnQp
OyB9Ci0gICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHJhZGlvQnV0dG9uR3JvdXAoKSBj
b25zdCB7IHJldHVybiB0cmVlKCktPm9iamVjdHNGb3JJRHModmVjdG9yQXR0cmlidXRlVmFsdWU8
QVhJRD4oQVhQcm9wZXJ0eU5hbWU6OlJhZGlvQnV0dG9uR3JvdXApKTsgfQorICAgIEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciByYWRpb0J1dHRvbkdyb3VwKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gdHJlZSgpLT5vYmplY3RzRm9ySURzKHZlY3RvckF0dHJpYnV0ZVZhbHVlPEFYSUQ+KEFYUHJv
cGVydHlOYW1lOjpSYWRpb0J1dHRvbkdyb3VwKSk7IH0KICAgICBBWElzb2xhdGVkT2JqZWN0KiBz
Y3JvbGxCYXIoQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uKSBmaW5hbDsKICAgICBjb25zdCBTdHJp
bmcgcGxhY2Vob2xkZXJWYWx1ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0cmluZ0F0dHJpYnV0
ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpQbGFjZWhvbGRlclZhbHVlKTsgfQogICAgIFN0cmluZyBl
eHBhbmRlZFRleHRWYWx1ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0cmluZ0F0dHJpYnV0ZVZh
bHVlKEFYUHJvcGVydHlOYW1lOjpFeHBhbmRlZFRleHRWYWx1ZSk7IH0KQEAgLTQ1Niw3ICs0NTgs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5QVJJQUdyaWRJbnN0YW5jZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlB
UklBR3JpZFJvd0luc3RhbmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBi
b29sIGlzQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbEluc3RhbmNlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gZmFsc2U7IH0KLQorICAgIGJvb2wgaXNBWFJlbW90ZUZyYW1lKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzTmF0aXZlVGV4dENvbnRyb2woKSBjb25zdCBm
aW5hbDsKICAgICBib29sIGlzTGlzdEJveE9wdGlvbigpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wg
aXNNb2NrT2JqZWN0KCkgY29uc3QgZmluYWw7CkBAIC01MzcsNyArNTM5LDkgQEAgcHJpdmF0ZToK
ICAgICBTdHJpbmcgbmFtZUF0dHJpYnV0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0cmluZ0F0
dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpOYW1lQXR0cmlidXRlKTsgfQogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIGJvb2wgaGFzQXBwbGVQREZBbm5vdGF0aW9uQXR0cmlidXRlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpIYXNB
cHBsZVBERkFubm90YXRpb25BdHRyaWJ1dGUpOyB9CisgICAgUmV0YWluUHRyPGlkPiByZW1vdGVG
cmFtZVBsYXRmb3JtRWxlbWVudCgpIGNvbnN0IGZpbmFsOwogI2VuZGlmCisgICAgYm9vbCBoYXNS
ZW1vdGVGcmFtZUNoaWxkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVl
KEFYUHJvcGVydHlOYW1lOjpIYXNSZW1vdGVGcmFtZUNoaWxkKTsgfQogCiAjaWYgUExBVEZPUk0o
Q09DT0EpICYmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIFZlY3RvcjxSZXRhaW5QdHI8aWQ+
PiBtb2RlbEVsZW1lbnRDaGlsZHJlbigpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCmlu
ZGV4IDY5NjY1ODQ0OGY2NS4uM2FjYzE5OThiMWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3Bw
CkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJBWElzb2xhdGVkT2JqZWN0LmgiCiAjaW5j
bHVkZSAiQVhMb2dnZXIuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGUuaCIKICNpbmNs
dWRlICJBY2Nlc3NpYmlsaXR5VGFibGVSb3cuaCIKICNpbmNsdWRlICJGcmFtZVNlbGVjdGlvbi5o
IgogI2luY2x1ZGUgIkxvY2FsRnJhbWVWaWV3LmgiCkBAIC0yMjUsNDYgKzIyNiwyNiBAQCBSZWZQ
dHI8QVhJc29sYXRlZE9iamVjdD4gQVhJc29sYXRlZFRyZWU6Om9iamVjdEZvcklEKGNvbnN0IEFY
SUQgYXhJRCkgY29uc3QKICAgICByZXR1cm4gYXhJRC5pc1ZhbGlkKCkgPyBtX3JlYWRlclRocmVh
ZE5vZGVNYXAuZ2V0KGF4SUQpIDogbnVsbHB0cjsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVT4K
LVZlY3RvcjxSZWZQdHI8QVhDb3JlT2JqZWN0Pj4gQVhJc29sYXRlZFRyZWU6Om9iamVjdHNGb3JJ
RHMoY29uc3QgVSYgYXhJRHMpCitSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4gQVhJc29sYXRlZFRy
ZWU6OnJldHJpZXZlT2JqZWN0Rm9ySURGcm9tTWFpblRocmVhZChjb25zdCBBWElEIGF4SUQpIGNv
bnN0CiB7Ci0gICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Ci0KLSAgICBWZWN0b3I8UmVmUHRy
PEFYQ29yZU9iamVjdD4+IHJlc3VsdDsKLSAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShheElEcy5zaXplKCkpOwotICAgIGZvciAoY29uc3QgYXV0byYgYXhJRCA6IGF4SURzKSB7Ci0g
ICAgICAgIFJlZlB0ciBvYmplY3QgPSBvYmplY3RGb3JJRChheElEKTsKLSAgICAgICAgaWYgKG9i
amVjdCkgewotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChXVEZNb3ZlKG9iamVjdCkpOwotICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBUaGVyZSBpcyBubyBp
c29sYXRlZCBvYmplY3QgZm9yIHRoaXMgQVhJRC4gVGhpcyBjYW4gaGFwcGVuIGlmIHRoZSBjb3Jy
ZXNwb25kaW5nIGxpdmUgb2JqZWN0IGlzIGlnbm9yZWQuCi0gICAgICAgIC8vIElmIHRoZXJlIGlz
IGEgbGl2ZSBvYmplY3QgZm9yIHRoaXMgSUQgYW5kIGl0IGlzIGFuIGlnbm9yZWQgdGFyZ2V0IG9m
IGEgcmVsYXRpb25zaGlwLCBjcmVhdGUgYW4gaXNvbGF0ZWQgb2JqZWN0IGZvciBpdC4KLSAgICAg
ICAgb2JqZWN0ID0gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhyZWFkPFJl
ZlB0cjxBWElzb2xhdGVkT2JqZWN0Pj4oWyZheElELCB0aGlzXSAoKSAtPiBSZWZQdHI8QVhJc29s
YXRlZE9iamVjdD4gewotICAgICAgICAgICAgYXV0byogY2FjaGUgPSBheE9iamVjdENhY2hlKCk7
Ci0gICAgICAgICAgICBpZiAoIWNhY2hlIHx8ICFjYWNoZS0+cmVsYXRpb25UYXJnZXRJRHMoKS5j
b250YWlucyhheElEKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgICAg
ICAgICAgUmVmUHRyIGF4T2JqZWN0ID0gY2FjaGUtPm9iamVjdEZvcklEKGF4SUQpOwotICAgICAg
ICAgICAgaWYgKCFheE9iamVjdCB8fCAhYXhPYmplY3QtPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQo
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgICAgICAgICAgYXV0byBv
YmplY3QgPSBBWElzb2xhdGVkT2JqZWN0OjpjcmVhdGUoKmF4T2JqZWN0LCBjb25zdF9jYXN0PEFY
SXNvbGF0ZWRUcmVlKj4odGhpcykpOwotICAgICAgICAgICAgQVNTRVJUKGF4T2JqZWN0LT53cmFw
cGVyKCkpOwotICAgICAgICAgICAgb2JqZWN0LT5hdHRhY2hQbGF0Zm9ybVdyYXBwZXIoYXhPYmpl
Y3QtPndyYXBwZXIoKSk7Ci0gICAgICAgICAgICByZXR1cm4gb2JqZWN0OwotICAgICAgICB9KTsK
LSAgICAgICAgaWYgKG9iamVjdCkgewotICAgICAgICAgICAgbV9yZWFkZXJUaHJlYWROb2RlTWFw
LmFkZChheElELCAqb2JqZWN0KTsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoV1RGTW92ZShv
YmplY3QpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXN1bHQuc2hyaW5rVG9GaXQoKTsKLSAg
ICByZXR1cm4gcmVzdWx0OworICAgIC8vIFRoZXJlIGlzIG5vIGlzb2xhdGVkIG9iamVjdCBmb3Ig
dGhpcyBBWElELiBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlIGNvcnJlc3BvbmRpbmcgbGl2ZSBvYmpl
Y3QgaXMgaWdub3JlZC4KKyAgICAvLyBJZiB0aGVyZSBpcyBhIGxpdmUgb2JqZWN0IGZvciB0aGlz
IElEIGFuZCBpdCBpcyBhbiBpZ25vcmVkIHRhcmdldCBvZiBhIHJlbGF0aW9uc2hpcCwgY3JlYXRl
IGFuIGlzb2xhdGVkIG9iamVjdCBmb3IgaXQuCisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJl
dHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4+KFsmYXhJ
RCwgdGhpc10gKCkgLT4gUmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+IHsKKyAgICAgICAgYXV0byog
Y2FjaGUgPSBheE9iamVjdENhY2hlKCk7CisgICAgICAgIGlmICghY2FjaGUgfHwgIWNhY2hlLT5y
ZWxhdGlvblRhcmdldElEcygpLmNvbnRhaW5zKGF4SUQpKQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICAgICAgUmVmUHRyIGF4T2JqZWN0ID0gY2FjaGUtPm9iamVjdEZvcklEKGF4
SUQpOworICAgICAgICBpZiAoIWF4T2JqZWN0IHx8ICFheE9iamVjdC0+YWNjZXNzaWJpbGl0eUlz
SWdub3JlZCgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgYXV0byBv
YmplY3QgPSBBWElzb2xhdGVkT2JqZWN0OjpjcmVhdGUoKmF4T2JqZWN0LCBjb25zdF9jYXN0PEFY
SXNvbGF0ZWRUcmVlKj4odGhpcykpOworICAgICAgICBBU1NFUlQoYXhPYmplY3QtPndyYXBwZXIo
KSk7CisgICAgICAgIG9iamVjdC0+YXR0YWNoUGxhdGZvcm1XcmFwcGVyKGF4T2JqZWN0LT53cmFw
cGVyKCkpOworICAgICAgICByZXR1cm4gb2JqZWN0OworICAgIH0pOwogfQogCi0KIHZvaWQgQVhJ
c29sYXRlZFRyZWU6OmdlbmVyYXRlU3VidHJlZShBY2Nlc3NpYmlsaXR5T2JqZWN0JiBheE9iamVj
dCkKIHsKICAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6Z2VuZXJhdGVTdWJ0cmVlIl9zKTsK
QEAgLTY2MCw2ICs2NDEsMTIgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6dXBkYXRlTm9kZVByb3Bl
cnRpZXMoQVhDb3JlT2JqZWN0JiBheE9iamVjdCwgY29uc3QgQVhQcm9wZXIKICAgICAgICAgY2Fz
ZSBBWFByb3BlcnR5TmFtZTo6UG9zSW5TZXQ6CiAgICAgICAgICAgICBwcm9wZXJ0eU1hcC5zZXQo
QVhQcm9wZXJ0eU5hbWU6OlBvc0luU2V0LCBheE9iamVjdC5wb3NJblNldCgpKTsKICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIEFYUHJvcGVydHlOYW1lOjpSZW1vdGVGcmFtZVBsYXRm
b3JtRWxlbWVudDoKKyAgICAgICAgICAgIHByb3BlcnR5TWFwLnNldChBWFByb3BlcnR5TmFtZTo6
UmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQsIGF4T2JqZWN0LnJlbW90ZUZyYW1lUGxhdGZvcm1F
bGVtZW50KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQVhQcm9wZXJ0eU5h
bWU6Okhhc1JlbW90ZUZyYW1lQ2hpbGQ6CisgICAgICAgICAgICBwcm9wZXJ0eU1hcC5zZXQoQVhQ
cm9wZXJ0eU5hbWU6Okhhc1JlbW90ZUZyYW1lQ2hpbGQsIGF4T2JqZWN0Lmhhc1JlbW90ZUZyYW1l
Q2hpbGQoKSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBWFByb3BlcnR5TmFt
ZTo6Um9sZURlc2NyaXB0aW9uOgogICAgICAgICAgICAgcHJvcGVydHlNYXAuc2V0KEFYUHJvcGVy
dHlOYW1lOjpSb2xlRGVzY3JpcHRpb24sIGF4T2JqZWN0LnJvbGVEZXNjcmlwdGlvbigpLmlzb2xh
dGVkQ29weSgpKTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKaW5kZXgg
YTQxNzkyNzk3OGQyLi40NjFlZWFlNjBhZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaApAQCAtMTA0
LDYgKzEwNCw3IEBAIGVudW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUgOiB1aW50MTZfdCB7CiAgICAg
SGFzSGlnaGxpZ2h0aW5nLAogICAgIEhhc0l0YWxpY0ZvbnQsCiAgICAgSGFzUGxhaW5UZXh0LAor
ICAgIEhhc1JlbW90ZUZyYW1lQ2hpbGQsCiAgICAgSGFzVW5kZXJsaW5lLAogICAgIEhlYWRlckNv
bnRhaW5lciwKICAgICBIZWFkaW5nTGV2ZWwsCkBAIC0yMDEsNiArMjAyLDggQEAgZW51bSBjbGFz
cyBBWFByb3BlcnR5TmFtZSA6IHVpbnQxNl90IHsKICAgICBQcmV2ZW50S2V5Ym9hcmRET01FdmVu
dERpc3BhdGNoLAogICAgIFJhZGlvQnV0dG9uR3JvdXAsCiAgICAgUmVsYXRpdmVGcmFtZSwKKyAg
ICBSZW1vdGVGcmFtZU9mZnNldCwKKyAgICBSZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCwKICAg
ICBSb2xlVmFsdWUsCiAgICAgUm9sZVBsYXRmb3JtU3RyaW5nLAogICAgIFJvbGVEZXNjcmlwdGlv
biwKQEAgLTI1Nyw2ICsyNjAsNyBAQCB1c2luZyBBWFByb3BlcnR5TmFtZVNldCA9IEhhc2hTZXQ8
QVhQcm9wZXJ0eU5hbWUsIEludEhhc2g8QVhQcm9wZXJ0eU5hbWU+LCBXVEY6OgogdXNpbmcgQVhQ
cm9wZXJ0eVZhbHVlVmFyaWFudCA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgQVhJRCwg
U3RyaW5nLCBib29sLCBpbnQsIHVuc2lnbmVkLCBkb3VibGUsIGZsb2F0LCB1aW50NjRfdCwgQWNj
ZXNzaWJpbGl0eUJ1dHRvblN0YXRlLCBDb2xvciwgVVJMLCBMYXlvdXRSZWN0LCBGbG9hdFBvaW50
LCBGbG9hdFJlY3QsIEludFBvaW50LCBJbnRSZWN0LCBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2ln
bmVkPiwgVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiwgVmVjdG9yPEFYSUQ+LCBWZWN0b3I8c3Rk
OjpwYWlyPEFYSUQsIEFYSUQ+PiwgVmVjdG9yPFN0cmluZz4sIFBhdGgsIE9wdGlvblNldDxBWEFu
Y2VzdG9yRmxhZz4sIEluc2lkZUxpbmssIFZlY3RvcjxWZWN0b3I8QVhJRD4+LCBDaGFyYWN0ZXJS
YW5nZSwgc3RkOjpwYWlyPEFYSUQsIENoYXJhY3RlclJhbmdlPgogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgICwgUmV0YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4KKyAgICAsIFJldGFpblB0cjxp
ZD4KICNlbmRpZgogI2lmIEVOQUJMRShBWF9USFJFQURfVEVYVF9BUElTKQogICAgICwgQVhUZXh0
UnVucwpAQCAtMzk3LDYgKzQwMSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVFbXB0eUNv
bnRlbnQoQWNjZXNzaWJpbGl0eU9iamVjdCYpOwogICAgIGNvbnN0ZXhwciBib29sIGlzVXBkYXRp
bmdTdWJ0cmVlKCkgY29uc3QgeyByZXR1cm4gbV9yb290T2ZTdWJ0cmVlQmVpbmdVcGRhdGVkOyB9
CiAgICAgY29uc3RleHByIHZvaWQgdXBkYXRpbmdTdWJ0cmVlKEFjY2Vzc2liaWxpdHlPYmplY3Qq
IGF4T2JqZWN0KSB7IG1fcm9vdE9mU3VidHJlZUJlaW5nVXBkYXRlZCA9IGF4T2JqZWN0OyB9Cisg
ICAgUmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+IHJldHJpZXZlT2JqZWN0Rm9ySURGcm9tTWFpblRo
cmVhZChjb25zdCBBWElEKSBjb25zdDsKIAogICAgIGVudW0gY2xhc3MgQXR0YWNoV3JhcHBlciA6
IGJvb2wgeyBPbk1haW5UaHJlYWQsIE9uQVhUaHJlYWQgfTsKICAgICBzdHJ1Y3QgTm9kZUNoYW5n
ZSB7CkBAIC00OTcsNiArNTAyLDMwIEBAIGlubGluZSBSZWZQdHI8QVhJc29sYXRlZFRyZWU+IEFY
SXNvbGF0ZWRUcmVlOjp0cmVlRm9yUGFnZUlEKHN0ZDo6b3B0aW9uYWw8UGFnZUlkCiAgICAgcmV0
dXJuIHBhZ2VJRCA/IHRyZWVGb3JQYWdlSUQoKnBhZ2VJRCkgOiBudWxscHRyOwogfQogCit0ZW1w
bGF0ZTx0eXBlbmFtZSBVPgoraW5saW5lIFZlY3RvcjxSZWZQdHI8QVhDb3JlT2JqZWN0Pj4gQVhJ
c29sYXRlZFRyZWU6Om9iamVjdHNGb3JJRHMoY29uc3QgVSYgYXhJRHMpCit7CisgICAgQVNTRVJU
KCFpc01haW5UaHJlYWQoKSk7CisKKyAgICBWZWN0b3I8UmVmUHRyPEFYQ29yZU9iamVjdD4+IHJl
c3VsdDsKKyAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShheElEcy5zaXplKCkpOwor
ICAgIGZvciAoY29uc3QgYXV0byYgYXhJRCA6IGF4SURzKSB7CisgICAgICAgIFJlZlB0ciBvYmpl
Y3QgPSBvYmplY3RGb3JJRChheElEKTsKKyAgICAgICAgaWYgKG9iamVjdCkgeworICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZChXVEZNb3ZlKG9iamVjdCkpOworICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIH0KKworICAgICAgICBvYmplY3QgPSByZXRyaWV2ZU9iamVjdEZvcklERnJvbU1h
aW5UaHJlYWQoYXhJRCk7CisgICAgICAgIGlmIChvYmplY3QpIHsKKyAgICAgICAgICAgIG1fcmVh
ZGVyVGhyZWFkTm9kZU1hcC5hZGQoYXhJRCwgKm9iamVjdCk7CisgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKFdURk1vdmUob2JqZWN0KSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmVzdWx0LnNo
cmlua1RvRml0KCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aXNvbGF0ZWR0cmVlL21hYy9BWElzb2xhdGVkT2JqZWN0TWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMubW0KaW5k
ZXggYWRiN2VjNjQ4MzQ1Li5lMDJkYTBkMTEyYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL21hYy9BWElzb2xhdGVkT2JqZWN0TWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL21hYy9BWElzb2xh
dGVkT2JqZWN0TWFjLm1tCkBAIC02Myw2ICs2Myw4IEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6
aW5pdGlhbGl6ZVBsYXRmb3JtUHJvcGVydGllcyhjb25zdCBSZWY8Y29uc3QgQWNjZXNzaWJpbGl0
CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6UmVt
b3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQsIG9iamVjdC0+cmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1l
bnQoKSk7CisKICAgICAvLyBDYWNoZSB0aGUgU3RyaW5nVmFsdWUgb25seSBpZiBpdCBkaWZmZXJz
IGZyb20gdGhlIEF0dHJpYnV0ZWRUZXh0LgogICAgIGF1dG8gdmFsdWUgPSBvYmplY3QtPnN0cmlu
Z1ZhbHVlKCk7CiAgICAgaWYgKCFhdHRyaWJ1dGVkVGV4dCB8fCB2YWx1ZSAhPSBTdHJpbmcoW2F0
dHJpYnV0ZWRUZXh0IHN0cmluZ10pKQpAQCAtMjAyLDYgKzIwNCwxMSBAQCB1bnNpZ25lZCBBWElz
b2xhdGVkT2JqZWN0Ojp0ZXh0TGVuZ3RoKCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAorUmV0
YWluUHRyPGlkPiBBWElzb2xhdGVkT2JqZWN0OjpyZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIHByb3BlcnR5VmFsdWU8UmV0YWluUHRyPGlkPj4oQVhQcm9w
ZXJ0eU5hbWU6OlJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KTsKK30KKwogUmV0YWluUHRyPE5T
QXR0cmlidXRlZFN0cmluZz4gQVhJc29sYXRlZE9iamVjdDo6YXR0cmlidXRlZFN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZShBWFRleHRNYXJrZXJSYW5nZSYmIG1hcmtlclJhbmdlLCBTcGVsbENoZWNr
IHNwZWxsQ2hlY2spIGNvbnN0CiB7CiAgICAgaWYgKCFtYXJrZXJSYW5nZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0
TWFjLm1tCmluZGV4IGJhMmFjY2Q4MGQwNC4uZmJiZTBiYjJhMDY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RN
YWMubW0KQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiQWNj
ZXNzaWJpbGl0eU9iamVjdC5oIgogCisjaW1wb3J0ICJBWFJlbW90ZUZyYW1lLmgiCiAjaW1wb3J0
ICJBY2Nlc3NpYmlsaXR5TGFiZWwuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlMaXN0LmgiCiAj
aW1wb3J0ICJDb2xvckNvY29hLmgiCkBAIC01MSw2ICs1Miw3IEBACiAjaW1wb3J0ICJXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5oIgogI2ltcG9ydCAiV2lkZ2V0LmgiCiAKKyNpbXBv
cnQgPHBhbC9zcGkvY29jb2EvTlNBY2Nlc3NpYmlsaXR5U1BJLmg+CiAjaW1wb3J0IDxwYWwvc3Bp
L21hYy9OU1NwZWxsQ2hlY2tlclNQSS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03NDks
NiArNzUxLDI5IEBAIFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+IGF0dHJpYnV0ZWRTdHJp
bmdDcmVhdGUoTm9kZSogbm9kZSwgU3RyaW5nVmlldyB0ZXh0CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAorc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IEFYUmVtb3RlRnJhbWU6OmdlbmVyYXRlUmVt
b3RlVG9rZW4oKSBjb25zdAoreworICAgIGlmIChhdXRvKiBwYXJlbnQgPSBwYXJlbnRPYmplY3Qo
KSkgeworICAgICAgICAvLyBXZSB1c2UgdGhlIHBhcmVudCdzIHdyYXBwZXIgc28gdGhhdCB0aGUg
cmVtb3RlIGZyYW1lIGFjdHMgYXMgYSBwYXNzIHRocm91Z2ggZm9yIHRoZSByZW1vdGUgdG9rZW4g
YnJpZGdlLgorICAgICAgICBOU0RhdGEgKmRhdGEgPSBbTlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlF
bGVtZW50IHJlbW90ZVRva2VuRm9yTG9jYWxVSUVsZW1lbnQ6cGFyZW50LT53cmFwcGVyKCldOwor
ICAgICAgICByZXR1cm4gc3RkOjpzcGFuKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbZGF0
YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKKyAgICB9CisKKyAgICByZXR1cm4gc3RkOjpzcGFu
PGNvbnN0IHVpbnQ4X3Q+IHsgfTsKK30KKwordm9pZCBBWFJlbW90ZUZyYW1lOjppbml0aWFsaXpl
UGxhdGZvcm1FbGVtZW50V2l0aFJlbW90ZVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiB0
b2tlbiwgaW50IHByb2Nlc3NJZGVudGlmaWVyKQoreworICAgIG1fcHJvY2Vzc0lkZW50aWZpZXIg
PSBwcm9jZXNzSWRlbnRpZmllcjsKKyAgICBpZiAoW3dyYXBwZXIoKSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKGFjY2Vzc2liaWxpdHlTZXRQcmVzZW50ZXJQcm9jZXNzSWRlbnRpZmllcjop
XSkKKyAgICAgICAgWyhpZCl3cmFwcGVyKCkgYWNjZXNzaWJpbGl0eVNldFByZXNlbnRlclByb2Nl
c3NJZGVudGlmaWVyOnByb2Nlc3NJZGVudGlmaWVyXTsKKyAgICBOU0RhdGEgKnRva2VuRGF0YSA9
IFtOU0RhdGEgZGF0YVdpdGhCeXRlczp0b2tlbi5kYXRhKCkgbGVuZ3RoOnRva2VuLnNpemUoKV07
CisgICAgbV9yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCA9IGFkb3B0TlMoW1tOU0FjY2Vzc2li
aWxpdHlSZW1vdGVVSUVsZW1lbnQgYWxsb2NdIGluaXRXaXRoUmVtb3RlVG9rZW46dG9rZW5EYXRh
XSk7CisKKyAgICBpZiAoYXV0byogY2FjaGUgPSBheE9iamVjdENhY2hlKCkpCisgICAgICAgIGNh
Y2hlLT5vblJlbW90ZUZyYW1lSW5pdGlhbGl6ZWQoKnRoaXMpOworfQorCiBuYW1lc3BhY2UgQWNj
ZXNzaWJpbGl0eSB7CiAKIFBsYXRmb3JtUm9sZU1hcCBjcmVhdGVQbGF0Zm9ybVJvbGVNYXAoKQpA
QCAtODkxLDYgKzkxNiw3IEBAIFBsYXRmb3JtUm9sZU1hcCBjcmVhdGVQbGF0Zm9ybVJvbGVNYXAo
KQogICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpTdXBlcnNjcmlwdCwgTlNBY2Nlc3NpYmls
aXR5R3JvdXBSb2xlIH0sCiAgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6Ok1vZGVsLCBOU0Fj
Y2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKICAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6U3Vn
Z2VzdGlvbiwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJp
bGl0eVJvbGU6OlJlbW90ZUZyYW1lLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKICAgICB9
OwogICAgIFBsYXRmb3JtUm9sZU1hcCByb2xlTWFwOwogICAgIGZvciAoYXV0byYgcm9sZSA6IHJv
bGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCmluZGV4IDYzNTdm
YTdjMjcxYi4uZjE0MjQ1ZmMzYjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJCYXNlLm1tCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0ICJBWENvcmVPYmplY3QuaCIKICNp
bXBvcnQgIkFYSXNvbGF0ZWRPYmplY3QuaCIKICNpbXBvcnQgIkFYT2JqZWN0Q2FjaGUuaCIKKyNp
bXBvcnQgIkFYUmVtb3RlRnJhbWUuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlBUklBR3JpZFJv
dy5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUxpc3QuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxp
dHlMaXN0Qm94LmgiCkBAIC0yNjUsMTMgKzI2NiwxMyBAQCBOU0FycmF5ICptYWtlTlNBcnJheShj
b25zdCBXZWJDb3JlOjpBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYg
YwogICAgICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgICAgICBhdXRvIHdyYXBwZXIgPSBjaGls
ZC0+d3JhcHBlcigpOwotCiAgICAgICAgIC8vIFdlIHdhbnQgdG8gcmV0dXJuIHRoZSBhdHRhY2ht
ZW50IHZpZXcgaW5zdGVhZCBvZiB0aGUgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgYXR0YWNobWVu
dCwKICAgICAgICAgLy8gb3RoZXJ3aXNlLCB3ZSBnZXQgcGFsaW5kcm9tZSBlcnJvcnMgaW4gdGhl
IEFYIGhpZXJhcmNoeS4KICAgICAgICAgaWYgKGNoaWxkLT5pc0F0dGFjaG1lbnQoKSkgewogICAg
ICAgICAgICAgaWYgKGlkIGF0dGFjaG1lbnRWaWV3ID0gd3JhcHBlci5hdHRhY2htZW50VmlldykK
ICAgICAgICAgICAgICAgICByZXR1cm4gYXR0YWNobWVudFZpZXc7Ci0gICAgICAgIH0KKyAgICAg
ICAgfSBlbHNlIGlmIChjaGlsZC0+aXNSZW1vdGVGcmFtZSgpKQorICAgICAgICAgICAgcmV0dXJu
IGNoaWxkLT5yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpLmdldCgpOwogCiAgICAgICAgIHJl
dHVybiB3cmFwcGVyOwogICAgIH0pLmF1dG9yZWxlYXNlKCk7CkBAIC0zODksNyArMzkwLDcgQEAg
TlNBcnJheSAqbWFrZU5TQXJyYXkoY29uc3QgV2ViQ29yZTo6QVhDb3JlT2JqZWN0OjpBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGMKIC0gKEJPT0wpaXNJc29sYXRlZE9iamVjdAogewogI2lm
IEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCi0gICAgYXV0byogYmFja2luZ09i
amVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0ciBiYWNraW5nT2JqZWN0ID0g
ZHluYW1pY0Rvd25jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3Q+KHNlbGYuYmFzZVVwZGF0ZUJhY2tp
bmdTdG9yZSk7CiAgICAgcmV0dXJuIGJhY2tpbmdPYmplY3QgJiYgYmFja2luZ09iamVjdC0+aXNB
WElzb2xhdGVkT2JqZWN0SW5zdGFuY2UoKTsKICNlbHNlCiAgICAgcmV0dXJuIE5POwpAQCAtNTIz
LDcgKzUyNCw3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRQYXRoVG9TY3JlZW5TcGFjZUZ1bmN0aW9u
KFBhdGhDb252ZXJzaW9uSW5mbyYgY29udmVyc2lvbiwgY29uCiAKIC0gKENHUmVjdCljb252ZXJ0
UmVjdFRvU3BhY2U6KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpcmVjdCBzcGFjZTooQWNjZXNz
aWJpbGl0eUNvbnZlcnNpb25TcGFjZSlzcGFjZQogewotICAgIGF1dG8qIGJhY2tpbmdPYmplY3Qg
PSBzZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHIgYmFja2luZ09iamVjdCA9IGR5bmFt
aWNEb3duY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0PihzZWxmLmJhc2VVcGRhdGVCYWNraW5nU3Rv
cmUpOwogICAgIGlmICghYmFja2luZ09iamVjdCkKICAgICAgICAgcmV0dXJuIENHUmVjdFplcm87
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggNmM1ZTZiN2Fj
ZDljLi43NTAyZDlhMGU0OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFj
Lm1tCkBAIC0zNCw2ICszNCw3IEBACiAjaW1wb3J0ICJBWElzb2xhdGVkT2JqZWN0LmgiCiAjaW1w
b3J0ICJBWExvZ2dlci5oIgogI2ltcG9ydCAiQVhPYmplY3RDYWNoZS5oIgorI2ltcG9ydCAiQVhS
ZW1vdGVGcmFtZS5oIgogI2ltcG9ydCAiQVhUZXh0TWFya2VyLmgiCiAjaW1wb3J0ICJBY2Nlc3Np
YmlsaXR5QVJJQUdyaWRSb3cuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlMYWJlbC5oIgpAQCAt
NDc5LDYgKzQ4MCwxMCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICNkZWZpbmUgTlNBY2Nl
c3NpYmlsaXR5VGV4dElucHV0TWFya2VkVGV4dE1hcmtlclJhbmdlQXR0cmlidXRlIEAiQVhUZXh0
SW5wdXRNYXJrZWRUZXh0TWFya2VyUmFuZ2UiCiAjZW5kaWYKIAorI2lmbmRlZiBrQVhDb252ZXJ0
UmVsYXRpdmVGcmFtZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUKKyNkZWZpbmUga0FYQ29udmVydFJl
bGF0aXZlRnJhbWVQYXJhbWV0ZXJpemVkQXR0cmlidXRlIEAiQVhDb252ZXJ0UmVsYXRpdmVGcmFt
ZSIKKyNlbmRpZgorCiBAaW1wbGVtZW50YXRpb24gV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXIKIAogLSAodm9pZClkZXRhY2gKQEAgLTY5Miw3ICs2OTcsNyBAQCBzdGF0aWMgUmV0YWluUHRy
PEFYVGV4dE1hcmtlclJlZj4gcHJldmlvdXNUZXh0TWFya2VyKEFYT2JqZWN0Q2FjaGUqIGNhY2hl
LCBjb25zdAogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBhdXRvKiBiYWNr
aW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgUmVmUHRyPEFYQ29yZU9iamVj
dD4gYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OwogICAgIGlmICghYmFja2lu
Z09iamVjdCkKICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMTI1Niw3ICsxMjYxLDcgQEAgQUxM
T1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAKIC0gKE5TQXJyYXkgKilyZW5kZXJX
aWRnZXRDaGlsZHJlbgogewotICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2lu
Z09iamVjdDsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBiYWNraW5nT2JqZWN0ID0gc2VsZi5h
eEJhY2tpbmdPYmplY3Q7CiAgICAgaWYgKCFiYWNraW5nT2JqZWN0IHx8ICFiYWNraW5nT2JqZWN0
LT5pc1dpZGdldCgpKQogICAgICAgICByZXR1cm4gbmlsOwogCkBAIC0xMjc5LDcgKzEyODQsNyBA
QCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogLSAoaWQpcmVtb3RlQWNjZXNz
aWJpbGl0eVBhcmVudE9iamVjdAogewotICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4
QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBiYWNraW5nT2JqZWN0ID0g
c2VsZi5heEJhY2tpbmdPYmplY3Q7CiAgICAgcmV0dXJuIGJhY2tpbmdPYmplY3QgPyBiYWNraW5n
T2JqZWN0LT5yZW1vdGVQYXJlbnRPYmplY3QoKSA6IG5pbDsKIH0KIApAQCAtMTI5Niw3ICsxMzAx
LDcgQEAgc3RhdGljIHZvaWQgY29udmVydFRvVmVjdG9yKE5TQXJyYXkqIGFycmF5LCBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2gKIAogLSAoQVhUZXh0TWFya2VyUmFuZ2VSZWYp
c2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UKIHsKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2Vs
Zi5heEJhY2tpbmdPYmplY3Q7CisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2luZ09iamVj
dCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OwogICAgIGlmICghYmFja2luZ09iamVjdCkKICAgICAg
ICAgcmV0dXJuIG5pbDsKIApAQCAtMTM2NiwxMiArMTM3MSwxOCBAQCBzdGF0aWMgdm9pZCBXZWJU
cmFuc2Zvcm1DR1BhdGhUb05TQmV6aWVyUGF0aCh2b2lkKiBpbmZvLCBjb25zdCBDR1BhdGhFbGVt
ZW50ICplbAogCiAtIChOU1N0cmluZyopcm9sZQogeworICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+
IGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBpZiAoIWJhY2tpbmdP
YmplY3QpCisgICAgICAgIHJldHVybiBuaWw7CisKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCi0gICAgaWYgKHNlbGYuYXhCYWNraW5nT2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkK
KyAgICBpZiAoYmFja2luZ09iamVjdC0+aXNBdHRhY2htZW50KCkpCiAgICAgICAgIHJldHVybiBb
W3NlbGYgYXR0YWNobWVudFZpZXddIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vz
c2liaWxpdHlSb2xlQXR0cmlidXRlXTsKKyAgICBpZiAoYmFja2luZ09iamVjdC0+aXNSZW1vdGVG
cmFtZSgpKQorICAgICAgICByZXR1cm4gW2JhY2tpbmdPYmplY3QtPnJlbW90ZUZyYW1lUGxhdGZv
cm1FbGVtZW50KCkuZ2V0KCkgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJp
bGl0eVJvbGVBdHRyaWJ1dGVdOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAK
LSAgICBOU1N0cmluZyAqc3RyaW5nID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPnJvbGVQbGF0Zm9y
bVN0cmluZygpOworICAgIE5TU3RyaW5nICpzdHJpbmcgPSBiYWNraW5nT2JqZWN0LT5yb2xlUGxh
dGZvcm1TdHJpbmcoKTsKICAgICBpZiAoc3RyaW5nLmxlbmd0aCkKICAgICAgICAgcmV0dXJuIHN0
cmluZzsKICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5VW5rbm93blJvbGU7CkBAIC0xMzc5LDcg
KzEzOTAsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogLSAoQk9PTClp
c0VtcHR5R3JvdXAKIHsKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdP
YmplY3Q7CisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNlbGYuYXhC
YWNraW5nT2JqZWN0OwogICAgIGlmICghYmFja2luZ09iamVjdCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCkBAIC0xMzg4LDYgKzEzOTksOSBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19FTkQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAKKyAgICBpZiAoYmFja2luZ09i
amVjdC0+aXNSZW1vdGVGcmFtZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICByZXR1
cm4gW1tzZWxmIHJvbGVdIGlzRXF1YWw6TlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlXQogICAgICAg
ICAmJiBiYWNraW5nT2JqZWN0LT5jaGlsZHJlbigpLmlzRW1wdHkoKQogICAgICAgICAmJiAhW1tz
ZWxmIHJlbmRlcldpZGdldENoaWxkcmVuXSBjb3VudF07CkBAIC0xMzk2LDcgKzE0MTAsNyBAQCBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0JFR0lOCiAtIChOU1N0cmluZyopc3Vicm9sZQogewotICAgIGF1dG8qIGJhY2tpbmdP
YmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBi
YWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CiAgICAgaWYgKCFiYWNraW5nT2Jq
ZWN0KQogICAgICAgICByZXR1cm4gbmlsOwogCkBAIC0xNDEzLDcgKzE0MjcsNyBAQCBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogLSAoTlNTdHJpbmcqKXJvbGVEZXNjcmlwdGlv
bgogewotICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKKyAg
ICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmpl
Y3Q7CiAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQogICAgICAgICByZXR1cm4gbmlsOwogCkBAIC0x
NDIxLDYgKzE0MzUsOCBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAg
IC8vIGF0dGFjaG1lbnRzIGhhdmUgdGhlIEFYSW1hZ2Ugcm9sZSwgYnV0IGEgZGlmZmVyZW50IHN1
YnJvbGUKICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNBdHRhY2htZW50KCkpCiAgICAgICAgIHJl
dHVybiBbW3NlbGYgYXR0YWNobWVudFZpZXddIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpO
U0FjY2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRpb25BdHRyaWJ1dGVdOworICAgIGlmIChiYWNraW5n
T2JqZWN0LT5pc1JlbW90ZUZyYW1lKCkpCisgICAgICAgIHJldHVybiBbYmFja2luZ09iamVjdC0+
cmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKS5nZXQoKSBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6TlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlXTsKIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAgICAgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbiA9
IGJhY2tpbmdPYmplY3QtPnJvbGVEZXNjcmlwdGlvbigpOwpAQCAtMTQ3Myw2ICsxNDg5LDI4IEBA
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIHJldHVybiBheFNjcm9sbFZp
ZXcgPyBbYXhTY3JvbGxWaWV3LT5wbGF0Zm9ybVdpZGdldCgpIHdpbmRvd10gOiBuaWw7CiB9CiAK
Ky0gKE5TQXJyYXkgKilfdHJhbnNmb3JtU3BlY2lhbENoaWxkcmVuQ2FzZXM6KFJlZlB0cjxBWENv
cmVPYmplY3Q+KWJhY2tpbmdPYmplY3QKK3sKKyNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKKyAg
ICBpZiAoYmFja2luZ09iamVjdC0+aXNNb2RlbCgpKSB7CisgICAgICAgIGF1dG8gbW9kZWxDaGls
ZHJlbiA9IGJhY2tpbmdPYmplY3QtPm1vZGVsRWxlbWVudENoaWxkcmVuKCk7CisgICAgICAgIGlm
IChtb2RlbENoaWxkcmVuLnNpemUoKSkgeworICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZU5TQXJy
YXkoV1RGTW92ZShtb2RlbENoaWxkcmVuKSwgW10gKGF1dG8mJiBjaGlsZCkgLT4gaWQgeworICAg
ICAgICAgICAgICAgIHJldHVybiBjaGlsZC5nZXQoKTsKKyAgICAgICAgICAgIH0pLmF1dG9yZWxl
YXNlKCk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKworICAgIGNvbnN0IGF1dG8mIGNoaWxk
cmVuID0gYmFja2luZ09iamVjdC0+Y2hpbGRyZW4oKTsKKyAgICBpZiAoIWNoaWxkcmVuLnNpemUo
KSkgeworICAgICAgICBpZiAoTlNBcnJheSAqY2hpbGRyZW4gPSBbc2VsZiByZW5kZXJXaWRnZXRD
aGlsZHJlbl0pCisgICAgICAgICAgICByZXR1cm4gY2hpbGRyZW47CisgICAgfQorCisgICAgcmV0
dXJuIG5pbDsKK30KKwogLy8gRklYTUU6IHNwbGl0IHVwIHRoaXMgZnVuY3Rpb24gaW4gYSBiZXR0
ZXIgd2F5LgogLy8gc3VnZ2VzdGlvbnM6IFVzZSBhIGhhc2ggdGFibGUgdGhhdCBtYXBzIGF0dHJp
YnV0ZSBuYW1lcyB0byBmdW5jdGlvbiBjYWxscywKIC8vIG9yIG1heWJlIHBvaW50ZXJzIHRvIG1l
bWJlciBmdW5jdGlvbnMKQEAgLTE1MzEsMjIgKzE1NjksOSBAQCBBTExPV19ERVBSRUNBVEVEX0lN
UExFTUVOVEFUSU9OU19FTkQKICAgICB9CiAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVh
bFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXSB8fCBbYXR0cmlidXRl
TmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5Jbk5hdmlnYXRpb25P
cmRlckF0dHJpYnV0ZV0pIHsKLSNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKLSAgICAgICAgaWYg
KGJhY2tpbmdPYmplY3QtPmlzTW9kZWwoKSkgewotICAgICAgICAgICAgYXV0byBtb2RlbENoaWxk
cmVuID0gYmFja2luZ09iamVjdC0+bW9kZWxFbGVtZW50Q2hpbGRyZW4oKTsKLSAgICAgICAgICAg
IGlmIChtb2RlbENoaWxkcmVuLnNpemUoKSkgewotICAgICAgICAgICAgICAgIHJldHVybiBjcmVh
dGVOU0FycmF5KFdURk1vdmUobW9kZWxDaGlsZHJlbiksIFtdIChhdXRvJiYgY2hpbGQpIC0+IGlk
IHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkLmdldCgpOwotICAgICAgICAgICAg
ICAgIH0pLmF1dG9yZWxlYXNlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSNlbmRpZgot
Ci0gICAgICAgIGNvbnN0IGF1dG8mIGNoaWxkcmVuID0gYmFja2luZ09iamVjdC0+Y2hpbGRyZW4o
KTsKLSAgICAgICAgaWYgKGNoaWxkcmVuLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgaWYgKE5T
QXJyYXkgKndpZGdldENoaWxkcmVuID0gW3NlbGYgcmVuZGVyV2lkZ2V0Q2hpbGRyZW5dKQotICAg
ICAgICAgICAgICAgIHJldHVybiB3aWRnZXRDaGlsZHJlbjsKLSAgICAgICAgfQorICAgICAgICBO
U0FycmF5ICpzcGVjaWFsQ2hpbGRyZW4gPSBbc2VsZiBfdHJhbnNmb3JtU3BlY2lhbENoaWxkcmVu
Q2FzZXM6YmFja2luZ09iamVjdF07CisgICAgICAgIGlmIChzcGVjaWFsQ2hpbGRyZW4uY291bnQp
CisgICAgICAgICAgICByZXR1cm4gc3BlY2lhbENoaWxkcmVuOwogCiAgICAgICAgIC8vIFRoZSB0
cmVlJ3MgKEFYT3V0bGluZSkgY2hpbGRyZW4gYXJlIHN1cHBvc2VkIHRvIGJlIGl0cyByb3dzIGFu
ZCBjb2x1bW5zLgogICAgICAgICAvLyBUaGUgQVJJQSBzcGVjIGRvZXNuJ3QgaGF2ZSBjb2x1bW5z
LCBzbyB3ZSBqdXN0IG5lZWQgcm93cy4KQEAgLTE1NTcsNyArMTU4Miw3IEBAIEFMTE9XX0RFUFJF
Q0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNU
cmVlSXRlbSgpKQogICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdPYmplY3Qt
PmFyaWFUcmVlSXRlbUNvbnRlbnQoKSk7CiAKLSAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGNo
aWxkcmVuKTsKKyAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdPYmplY3QtPmNoaWxk
cmVuKCkpOwogICAgIH0KIAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6
IE5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGVdKSB7CkBAIC0xNzEzLDE2
ICsxNzM4LDE0IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIGlm
IChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eUVuYWJsZWRB
dHRyaWJ1dGVdKQogICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOiBiYWNr
aW5nT2JqZWN0LT5pc0VuYWJsZWQoKV07CiAKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVh
bFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlTaXplQXR0cmlidXRlXSkgewotICAgICAgICBhdXRv
IHNpemUgPSBiYWNraW5nT2JqZWN0LT5zaXplKCk7Ci0gICAgICAgIHJldHVybiBbTlNWYWx1ZSB2
YWx1ZVdpdGhTaXplOk5TTWFrZVNpemUoc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKV07Ci0g
ICAgfQorICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmls
aXR5U2l6ZUF0dHJpYnV0ZV0pCisgICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhTaXpl
OihDR1NpemUpYmFja2luZ09iamVjdC0+c2l6ZSgpXTsKIAogICAgIGlmIChbYXR0cmlidXRlTmFt
ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5UHJpbWFyeVNjcmVlbkhlaWdodEF0dHJp
YnV0ZV0pCiAgICAgICAgIHJldHVybiBAKGJhY2tpbmdPYmplY3QtPnByaW1hcnlTY3JlZW5SZWN0
KCkuaGVpZ2h0KCkpOwogCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpO
U0FjY2Vzc2liaWxpdHlQb3NpdGlvbkF0dHJpYnV0ZV0pCi0gICAgICAgIHJldHVybiBAKENHUG9p
bnQoYmFja2luZ09iamVjdC0+c2NyZWVuUmVsYXRpdmVQb3NpdGlvbigpKSk7CisgICAgICAgIHJl
dHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhQb2ludDooQ0dQb2ludCliYWNraW5nT2JqZWN0LT5zY3Jl
ZW5SZWxhdGl2ZVBvc2l0aW9uKCldOwogCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxU
b1N0cmluZzpOU0FjY2Vzc2liaWxpdHlQYXRoQXR0cmlidXRlXSkKICAgICAgICAgcmV0dXJuIFtz
ZWxmIHBhdGhdOwpAQCAtMjIzNyw2ICsyMjYwLDEwIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVN
RU5UQVRJT05TX0VORAogICAgICAgICByZXR1cm4gcmFuZ2UgPyByYW5nZS5wbGF0Zm9ybURhdGEo
KS5icmlkZ2luZ0F1dG9yZWxlYXNlKCkgOiBuaWw7CiAgICAgfQogCisgICAgLy8gVm9pY2VPdmVy
IHByb3BlcnR5IHRvIGlnbm9yZSBjZXJ0YWluIGdyb3Vwcy4KKyAgICBpZiAoW2F0dHJpYnV0ZU5h
bWUgaXNFcXVhbFRvU3RyaW5nOkAiQVhBdXRvSW50ZXJhY3RhYmxlIl0pCisgICAgICAgIHJldHVy
biBAKGJhY2tpbmdPYmplY3QtPmlzUmVtb3RlRnJhbWUoKSk7CisKICAgICAvLyBVc2VkIGJ5IExh
eW91dFRlc3RzIG9ubHksIG5vdCBieSBBVCBjbGllbnRzLgogICAgIGlmIChVTkxJS0VMWShbYXR0
cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWEFSSUFSb2xlIl0pKQogICAgICAgICByZXR1
cm4gYmFja2luZ09iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCk7CkBAIC0yMzMwLDcgKzIzNTcs
OCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgaWYgKGF4
T2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkgewogICAgICAgICAgICAgaWYgKGlkIGF0dGFjaG1lbnRW
aWV3ID0gW2F4T2JqZWN0LT53cmFwcGVyKCkgYXR0YWNobWVudFZpZXddKQogICAgICAgICAgICAg
ICAgIHJldHVybiBhdHRhY2htZW50VmlldzsKLSAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYg
KGF4T2JqZWN0LT5pc1JlbW90ZUZyYW1lKCkpCisgICAgICAgICAgICByZXR1cm4gYXhPYmplY3Qt
PnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkuZ2V0KCk7CiAKICAgICAgICAgLy8gT25seSBj
YWxsIG91dCB0byB0aGUgbWFpbi10aHJlYWQgaWYgdGhpcyBvYmplY3QgaGFzIGEgYmFja2luZyB3
aWRnZXQgdG8gcXVlcnkuCiAgICAgICAgIGlmIChheE9iamVjdC0+aXNXaWRnZXQoKSkgewpAQCAt
MjUwNyw2ICsyNTM1LDEwIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAog
ICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc1dlYkFyZWEoKSkKICAgICAgICAgcmV0dXJuIHdlYkFy
ZWFQYXJhbUF0dHJzOwogCisgICAgLy8gVGhlIG9iamVjdCB0aGF0IHNlcnZlcyB1cCB0aGUgcmVt
b3RlIGZyYW1lIGFsc28gaXMgdGhlIG9uZSB0aGF0IGRvZXMgdGhlIGZyYW1lIGNvbnZlcnNpb24u
CisgICAgaWYgKGJhY2tpbmdPYmplY3QtPmhhc1JlbW90ZUZyYW1lQ2hpbGQoKSkKKyAgICAgICAg
cmV0dXJuIFtwYXJhbUF0dHJzIGFycmF5QnlBZGRpbmdPYmplY3Q6a0FYQ29udmVydFJlbGF0aXZl
RnJhbWVQYXJhbWV0ZXJpemVkQXR0cmlidXRlXTsKKwogICAgIHJldHVybiBwYXJhbUF0dHJzOwog
fQogCkBAIC0yNTc4LDcgKzI2MTAsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19F
TkQKIHsKICAgICBBWFRSQUNFKCJXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3Np
YmlsaXR5UGVyZm9ybVNob3dNZW51QWN0aW9uIl9zKTsKIAotICAgIGF1dG8qIGJhY2tpbmdPYmpl
Y3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBiYWNr
aW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CiAgICAgaWYgKCFiYWNraW5nT2JqZWN0
KSB7CiAgICAgICAgIEFYTE9HKG1ha2VTdHJpbmcoIk5vIGJhY2tpbmdPYmplY3QgZm9yIHdyYXBw
ZXIgIiwgaGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihzZWxmKSkpKTsKICAgICAgICAg
cmV0dXJuOwpAQCAtMjgyMiw3ICsyODU0LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRB
VElPTlNfRU5ECiAgICAgaWYgKCFyYW5nZS5sZW5ndGgpCiAgICAgICAgIHJldHVybiBuaWw7CiAK
LSAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgUmVm
UHRyPEFYQ29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0Owog
ICAgIGlmICghYmFja2luZ09iamVjdCkKICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMzE3Nyw2
ICszMjA5LDE4IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gd2lkZ2V0Q2hpbGRyZW47CiAgICAgICAgICAgICAgICAgY3Jp
dGVyaWEucmVzdWx0c0xpbWl0IC09IFt3aWRnZXRDaGlsZHJlbiBjb3VudF07CiAgICAgICAgICAg
ICB9CisgICAgICAgIH0gZWxzZSBpZiAoYmFja2luZ09iamVjdC0+aXNSZW1vdGVGcmFtZSgpCisg
ICAgICAgICAgICAmJiBjcml0ZXJpYS5zZWFyY2hLZXlzLmNvbnRhaW5zKEFjY2Vzc2liaWxpdHlT
ZWFyY2hLZXk6OkFueVR5cGUpCisgICAgICAgICAgICAmJiAoIWNyaXRlcmlhLnZpc2libGVPbmx5
IHx8IGJhY2tpbmdPYmplY3QtPmlzVmlzaWJsZSgpKSkgeworICAgICAgICAgICAgTlNBcnJheSAq
cmVtb3RlRnJhbWVDaGlsZHJlbiA9IFtzZWxmIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpO
U0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZV07CisgICAgICAgICAgICBBU1NFUlQocmVt
b3RlRnJhbWVDaGlsZHJlbi5jb3VudCA9PSAxKTsKKyAgICAgICAgICAgIGlmIChyZW1vdGVGcmFt
ZUNoaWxkcmVuLmNvdW50ID09IDEpIHsKKyAgICAgICAgICAgICAgICBOU1VJbnRlZ2VyIGluY2x1
ZGVkQ2hpbGRyZW5Db3VudCA9IHN0ZDo6bWluKFtyZW1vdGVGcmFtZUNoaWxkcmVuIGNvdW50XSwg
TlNVSW50ZWdlcihjcml0ZXJpYS5yZXN1bHRzTGltaXQpKTsKKyAgICAgICAgICAgICAgICB3aWRn
ZXRDaGlsZHJlbiA9IFtyZW1vdGVGcmFtZUNoaWxkcmVuIHN1YmFycmF5V2l0aFJhbmdlOk5TTWFr
ZVJhbmdlKDAsIGluY2x1ZGVkQ2hpbGRyZW5Db3VudCldOworICAgICAgICAgICAgICAgIGlmIChb
d2lkZ2V0Q2hpbGRyZW4gY291bnRdID49IGNyaXRlcmlhLnJlc3VsdHNMaW1pdCkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlbW90ZUZyYW1lQ2hpbGRyZW47CisgICAgICAgICAgICAgICAg
Y3JpdGVyaWEucmVzdWx0c0xpbWl0IC09IFt3aWRnZXRDaGlsZHJlbiBjb3VudF07CisgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3IgcmVzdWx0czsKQEAgLTM2NjksNiArMzcxMywxMSBAQCBBTExP
V19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBpZiAoVU5MSUtFTFkoW2F0dHJp
YnV0ZSBpc0VxdWFsVG9TdHJpbmc6X0FYVGV4dE1hcmtlclJhbmdlRm9yTlNSYW5nZUF0dHJpYnV0
ZV0pKQogICAgICAgICByZXR1cm4gYmFja2luZ09iamVjdC0+dGV4dE1hcmtlclJhbmdlRm9yTlNS
YW5nZShyYW5nZSkucGxhdGZvcm1EYXRhKCkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogCisgICAg
aWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOmtBWENvbnZlcnRSZWxhdGl2ZUZyYW1lUGFy
YW1ldGVyaXplZEF0dHJpYnV0ZV0pIHsKKyAgICAgICAgYXV0byogcGFyZW50ID0gYmFja2luZ09i
amVjdC0+cGFyZW50T2JqZWN0KCk7CisgICAgICAgIHJldHVybiBwYXJlbnQgPyBbTlNWYWx1ZSB2
YWx1ZVdpdGhSZWN0OnBhcmVudC0+Y29udmVydEZyYW1lVG9TcGFjZShGbG9hdFJlY3QocmVjdCks
IEFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2U6OlBhZ2UpXSA6IG5pbDsKKyAgICB9CisKICAg
ICAvLyBUaGVyZSBhcmUgc29tZSBwYXJhbWV0ZXJzIHRoYXQgc3VwZXIgaGFuZGxlcyB0aGF0IGFy
ZSBub3QgZXhwbGljaXRseSByZXR1cm5lZCBieSB0aGUgbGlzdCBvZiB0aGUgZWxlbWVudCdzIGF0
dHJpYnV0ZXMuCiAgICAgLy8gSW4gdGhhdCBjYXNlIGl0IG11c3QgYmUgcGFzc2VkIHRvIHN1cGVy
LgogICAgIHJldHVybiBbc3VwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOmF0dHJpYnV0
ZSBmb3JQYXJhbWV0ZXI6cGFyYW1ldGVyXTsKQEAgLTM3MjIsOCArMzc3MSwxMCBAQCBBTExPV19E
RVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgaWYgKCFjaGlsZCkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciAq
Y2hpbGRXcmFwcGVyID0gY2hpbGQtPndyYXBwZXIoKTsKLSAgICAgICAgaWYgKGNoaWxkV3JhcHBl
ciA9PSB0YXJnZXRDaGlsZCB8fCAoY2hpbGQtPmlzQXR0YWNobWVudCgpICYmIFtjaGlsZFdyYXBw
ZXIgYXR0YWNobWVudFZpZXddID09IHRhcmdldENoaWxkKSkKKyAgICAgICAgaWYgKGNoaWxkV3Jh
cHBlciA9PSB0YXJnZXRDaGlsZCB8fCAoY2hpbGQtPmlzQXR0YWNobWVudCgpICYmIFtjaGlsZFdy
YXBwZXIgYXR0YWNobWVudFZpZXddID09IHRhcmdldENoaWxkKQorICAgICAgICAgICAgfHwgKGNo
aWxkLT5pc1JlbW90ZUZyYW1lKCkgJiYgY2hpbGQtPnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50
KCkgPT0gdGFyZ2V0Q2hpbGQpKSB7CiAgICAgICAgICAgICByZXR1cm4gaTsKKyAgICAgICAgfQog
ICAgIH0KICAgICByZXR1cm4gTlNOb3RGb3VuZDsKIH0KQEAgLTM3NDAsNyArMzc5MSw3IEBAIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgaWYgKFthdHRyaWJ1dGUgaXNF
cXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXSkgewogICAgICAg
ICAvLyBUcmVlIGl0ZW1zIG9iamVjdCByZXR1cm5zIGEgZGlmZmVyZW50IHNldCBvZiBjaGlsZHJl
biB0aGFuIHRob3NlIHRoYXQgYXJlIGluIGNoaWxkcmVuKCkKICAgICAgICAgLy8gYmVjYXVzZSBh
biBBWE91dGxpbmUgKHRoZSBtYWMgcm9sZSBpcyBiZWNvbWVzKSBoYXMgc29tZSBvZGQgc3RpcHVs
YXRpb25zLgotICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNUcmVlKCkgfHwgYmFja2luZ09i
amVjdC0+aXNUcmVlSXRlbSgpKQorICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNUcmVlKCkg
fHwgYmFja2luZ09iamVjdC0+aXNUcmVlSXRlbSgpIHx8IGJhY2tpbmdPYmplY3QtPmlzUmVtb3Rl
RnJhbWUoKSkKICAgICAgICAgICAgIHJldHVybiBbW3NlbGYgYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXSBjb3VudF07CiAKICAgICAg
ICAgYXV0byBjaGlsZHJlblNpemUgPSBiYWNraW5nT2JqZWN0LT5jaGlsZHJlbigpLnNpemUoKTsK
QEAgLTM3NzYsMTYgKzM4MjcsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQK
IAogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDaGls
ZHJlbkF0dHJpYnV0ZV0pIHsKICAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmNoaWxkcmVuKCku
aXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBOU0FycmF5ICpjaGlsZHJlbiA9IG5pbDsKLSNpZiBF
TkFCTEUoTU9ERUxfRUxFTUVOVCkKLSAgICAgICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc01v
ZGVsKCkpIHsKLSAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IGNyZWF0ZU5TQXJyYXkoYmFja2lu
Z09iamVjdC0+bW9kZWxFbGVtZW50Q2hpbGRyZW4oKSwgW10gKGF1dG8mJiBjaGlsZCkgLT4gaWQg
ewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGQuZ2V0KCk7Ci0gICAgICAgICAgICAg
ICAgfSkuYXV0b3JlbGVhc2UoKTsKLSAgICAgICAgICAgIH0gZWxzZQotI2VuZGlmCi0gICAgICAg
ICAgICAgICAgY2hpbGRyZW4gPSBbc2VsZiByZW5kZXJXaWRnZXRDaGlsZHJlbl07Ci0gICAgICAg
ICAgICAKKyAgICAgICAgICAgIE5TQXJyYXkgKmNoaWxkcmVuID0gW3NlbGYgX3RyYW5zZm9ybVNw
ZWNpYWxDaGlsZHJlbkNhc2VzOmJhY2tpbmdPYmplY3RdOwogICAgICAgICAgICAgaWYgKCFjaGls
ZHJlbikKICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwogCkBAIC0zODE2LDggKzM4NTgsMTMg
QEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICAgICAgICAgIC8vIFRo
ZSBhdHRhY2htZW50IHZpZXcgc2hvdWxkIGJlIHJldHVybmVkLCBvdGhlcndpc2UgQVggcGFsaW5k
cm9tZSBlcnJvcnMgb2NjdXIuCiAgICAgICAgICAgICBpZCBhdHRhY2htZW50VmlldyA9IG5pbDsK
LSAgICAgICAgICAgIGlmIChbd3JhcHBlciBpc0tpbmRPZkNsYXNzOltXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlciBjbGFzc11dICYmIHdyYXBwZXIuYXhCYWNraW5nT2JqZWN0ICYmIHdyYXBw
ZXIuYXhCYWNraW5nT2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkKLSAgICAgICAgICAgICAgICBhdHRh
Y2htZW50VmlldyA9IFt3cmFwcGVyIGF0dGFjaG1lbnRWaWV3XTsKKyAgICAgICAgICAgIGlmIChb
d3JhcHBlciBpc0tpbmRPZkNsYXNzOltXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBjbGFz
c11dICYmIHdyYXBwZXIuYXhCYWNraW5nT2JqZWN0KSB7CisgICAgICAgICAgICAgICAgaWYgKHdy
YXBwZXIuYXhCYWNraW5nT2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkKKyAgICAgICAgICAgICAgICAg
ICAgYXR0YWNobWVudFZpZXcgPSBbd3JhcHBlciBhdHRhY2htZW50Vmlld107CisgICAgICAgICAg
ICAgICAgZWxzZSBpZiAod3JhcHBlci5heEJhY2tpbmdPYmplY3QtPmlzUmVtb3RlRnJhbWUoKSkK
KyAgICAgICAgICAgICAgICAgICAgYXR0YWNobWVudFZpZXcgPSB3cmFwcGVyLmF4QmFja2luZ09i
amVjdC0+cmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKS5nZXQoKTsKKyAgICAgICAgICAgIH0K
KwogICAgICAgICAgICAgW3N1YmFycmF5IGFkZE9iamVjdDphdHRhY2htZW50VmlldyA/IGF0dGFj
aG1lbnRWaWV3IDogd3JhcHBlcl07CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1w
dHlDbGllbnRzLmNwcAppbmRleCAyNThjMTRiODZhOGIuLjU3MTdhZGUyYTQ1MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTEwODUsNiArMTA4NSwxMSBAQCBSZW1v
dGVBWE9iamVjdFJlZiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjphY2Nlc3NpYmlsaXR5UmVtb3Rl
T2JqZWN0KCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorSW50UG9pbnQgRW1wdHlGcmFtZUxv
YWRlckNsaWVudDo6YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCkKK3sKKyAgICByZXR1
cm4geyB9OworfQorCiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKIHZv
aWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6c2V0QVhJc29sYXRlZFRyZWVSb290KFdlYkNvcmU6
OkFYQ29yZU9iamVjdCopCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1w
dHlGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVM
b2FkZXJDbGllbnQuaAppbmRleCAwOThjZTU4ZDExMTkuLjQ2NzJkZTI5ODUzMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xODQsNiAr
MTg0LDcgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJlbW90ZUFYT2Jq
ZWN0UmVmIGFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSBmaW5hbDsKKyAgICBJbnRQb2ludCBh
Y2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKSBmaW5hbDsKICNpZiBFTkFCTEUoQUNDRVNT
SUJJTElUWV9JU09MQVRFRF9UUkVFKQogICAgIHZvaWQgc2V0QVhJc29sYXRlZFRyZWVSb290KFdl
YkNvcmU6OkFYQ29yZU9iamVjdCopIGZpbmFsOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTG9jYWxGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0xvY2FsRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBiMmQ1NmYwNTBhZTkuLjAwZDNh
ZDVlMmNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvY2FsRnJhbWVMb2Fk
ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9jYWxGcmFtZUxvYWRlckNs
aWVudC5oCkBAIC0yOTAsNiArMjkwLDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIC8vIEFsbG93IGFuIGFjY2Vzc2liaWxpdHkgb2JqZWN0IHRvIHJldHJpZXZlIGEgRnJhbWUg
cGFyZW50IGlmIHRoZXJlJ3Mgbm8gUGxhdGZvcm1XaWRnZXQuCiAgICAgdmlydHVhbCBSZW1vdGVB
WE9iamVjdFJlZiBhY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkgPSAwOworICAgIHZpcnR1YWwg
SW50UG9pbnQgYWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCkgPSAwOwogI2lmIEVOQUJM
RShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAgICAgdmlydHVhbCB2b2lkIHNldEFYSXNv
bGF0ZWRUcmVlUm9vdChBWENvcmVPYmplY3QqKSA9IDA7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CmluZGV4IDVkMmZlYWI2NTc5Ni4uODQyNmM4ZjM3MGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAg
LTIyMDgsOCArMjIwOCwxNSBAQCBib29sIFBhZ2U6OnNob3VsZFVwZGF0ZUFjY2Vzc2liaWxpdHlS
ZWdpb25zKCkgY29uc3QKICAgICBBU1NFUlQobV9sYXN0UmVuZGVyaW5nVXBkYXRlVGltZXN0YW1w
ID49IG1fbGFzdEFjY2Vzc2liaWxpdHlPYmplY3RSZWdpb25zVXBkYXRlKTsKICAgICBpZiAoKG1f
bGFzdFJlbmRlcmluZ1VwZGF0ZVRpbWVzdGFtcCAtIG1fbGFzdEFjY2Vzc2liaWxpdHlPYmplY3RS
ZWdpb25zVXBkYXRlKSA8IHVwZGF0ZUludGVydmFsKSB7CiAgICAgICAgIC8vIFdlJ3ZlIGFscmVh
ZHkgdXBkYXRlZCBhY2Nlc3NpYmlsaXR5IG9iamVjdCByZWN0cyByZWNlbnRseSwgc28gc2tpcCB0
aGlzIHVwZGF0ZSBhbmQgc2NoZWR1bGUgYW5vdGhlciBmb3IgbGF0ZXIuCi0gICAgICAgIGF1dG8q
IGxvY2FsTWFpbkZyYW1lID0gZHluYW1pY0Rvd25jYXN0PExvY2FsRnJhbWU+KG1haW5GcmFtZSgp
KTsKLSAgICAgICAgUmVmUHRyIG1haW5Eb2N1bWVudCA9IGxvY2FsTWFpbkZyYW1lID8gbG9jYWxN
YWluRnJhbWUtPmRvY3VtZW50KCkgOiBudWxscHRyOworCisgICAgICAgIFJlZlB0cjxEb2N1bWVu
dD4gbWFpbkRvY3VtZW50ID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKGF1dG8qIGxvY2FsTWFpbkZy
YW1lID0gZHluYW1pY0Rvd25jYXN0PExvY2FsRnJhbWU+KG1haW5GcmFtZSgpKSkKKyAgICAgICAg
ICAgIG1haW5Eb2N1bWVudCA9IGxvY2FsTWFpbkZyYW1lID8gbG9jYWxNYWluRnJhbWUtPmRvY3Vt
ZW50KCkgOiBudWxscHRyOworICAgICAgICBlbHNlIGlmIChhdXRvKiByZW1vdGVGcmFtZSA9IGR5
bmFtaWNEb3duY2FzdDxSZW1vdGVGcmFtZT4obWFpbkZyYW1lKCkpKSB7CisgICAgICAgICAgICBp
ZiAoYXV0byogb3duZXIgPSByZW1vdGVGcmFtZS0+b3duZXJFbGVtZW50KCkpCisgICAgICAgICAg
ICAgICAgbWFpbkRvY3VtZW50ID0gJihvd25lci0+ZG9jdW1lbnQoKSk7CisgICAgICAgIH0KKwog
ICAgICAgICAvLyBJZiBhY2Nlc3NpYmlsaXR5IGlzIGVuYWJsZWQgYW5kIHdlIGhhdmUgYSBtYWlu
IGRvY3VtZW50LCB0aGF0IGRvY3VtZW50IHNob3VsZCBoYXZlIGFuIEFYIG9iamVjdCBjYWNoZS4K
ICAgICAgICAgQVNTRVJUKCFtYWluRG9jdW1lbnQgfHwgbWFpbkRvY3VtZW50LT5leGlzdGluZ0FY
T2JqZWN0Q2FjaGUoKSk7CiAgICAgICAgIGlmIChDaGVja2VkUHRyIHRvcEF4T2JqZWN0Q2FjaGUg
PSBtYWluRG9jdW1lbnQgPyBtYWluRG9jdW1lbnQtPmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpIDog
bnVsbHB0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5jcHAKaW5kZXggNzEyYzBiMjIwZmQw
Li41MGIwYTI1Y2ZkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuY3BwCkBAIC0xMDAs
NiArMTAwLDIxIEBAIHZvaWQgUmVtb3RlRnJhbWU6OmJyb2FkY2FzdEZyYW1lUmVtb3ZhbFRvT3Ro
ZXJQcm9jZXNzZXMoKQogICAgIG1fY2xpZW50LT5icm9hZGNhc3RGcmFtZVJlbW92YWxUb090aGVy
UHJvY2Vzc2VzKCk7CiB9CiAKK3ZvaWQgUmVtb3RlRnJhbWU6OnVwZGF0ZVJlbW90ZUZyYW1lQWNj
ZXNzaWJpbGl0eU9mZnNldChJbnRQb2ludCBvZmZzZXQpCit7CisgICAgbV9jbGllbnQtPnVwZGF0
ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChmcmFtZUlEKCksIG9mZnNldCk7Cit9CisK
K3ZvaWQgUmVtb3RlRnJhbWU6OnVuYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHBy
b2Nlc3NJZGVudGlmaWVyKQoreworICAgIG1fY2xpZW50LT51bmJpbmRSZW1vdGVBY2Nlc3NpYmls
aXR5RnJhbWVzKHByb2Nlc3NJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVGcmFtZTo6Ymlu
ZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBzdGQ6OnNw
YW48Y29uc3QgdWludDhfdD4gZGF0YVRva2VuLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgaW50KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICByZXR1cm4gbV9jbGllbnQtPmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKHByb2Nl
c3NJZGVudGlmaWVyLCBmcmFtZUlEKCksIGRhdGFUb2tlbiwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworfQorCiBGcmFtZVZpZXcqIFJlbW90ZUZyYW1lOjp2aXJ0dWFsVmlldygpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1fdmlldy5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUmVtb3RlRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuaApp
bmRleCAyN2VkODQwZDA4MmUuLmNkODJhNzljYzMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9SZW1vdGVGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJh
bWUuaApAQCAtMzMsNiArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIElu
dFBvaW50OwogY2xhc3MgUmVtb3RlRE9NV2luZG93OwogY2xhc3MgUmVtb3RlRnJhbWVDbGllbnQ7
CiBjbGFzcyBSZW1vdGVGcmFtZVZpZXc7CkBAIC02Miw2ICs2Myw5IEBAIHB1YmxpYzoKICAgICBN
YXJrYWJsZTxMYXllckhvc3RpbmdDb250ZXh0SWRlbnRpZmllcj4gbGF5ZXJIb3N0aW5nQ29udGV4
dElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2xheWVySG9zdGluZ0NvbnRleHRJZGVudGlm
aWVyOyB9CiAKICAgICBTdHJpbmcgcmVuZGVyVHJlZUFzVGV4dChzaXplX3QgYmFzZUluZGVudCwg
T3B0aW9uU2V0PFJlbmRlckFzVGV4dEZsYWc+KTsKKyAgICB2b2lkIGJpbmRSZW1vdGVBY2Nlc3Np
YmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4
X3Q+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgaW50
KT4mJik7CisgICAgdm9pZCB1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQoSW50
UG9pbnQpOworICAgIHZvaWQgdW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQpOwog
CiBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFJlbW90ZUZyYW1lKFBhZ2Um
LCBVbmlxdWVSZWY8UmVtb3RlRnJhbWVDbGllbnQ+JiYsIEZyYW1lSWRlbnRpZmllciwgSFRNTEZy
YW1lT3duZXJFbGVtZW50KiwgRnJhbWUqIHBhcmVudCwgTWFya2FibGU8TGF5ZXJIb3N0aW5nQ29u
dGV4dElkZW50aWZpZXI+LCBGcmFtZSogb3BlbmVyID0gbnVsbHB0cik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1JlbW90ZUZyYW1lQ2xpZW50LmgKaW5kZXggNGVmZDEwM2YzOTEyLi41NDFhMGQwMWM1NjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lQ2xpZW50LmgKQEAgLTMwLDYgKzMwLDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBEYXRhU2VnbWVudDsKIGNsYXNzIEZy
YW1lTG9hZFJlcXVlc3Q7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgU2VjdXJpdHlPcmlnaW5EYXRh
OwpAQCAtNDgsNiArNDksOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgcmVuZGVyVHJl
ZUFzVGV4dChzaXplX3QgYmFzZUluZGVudCwgT3B0aW9uU2V0PFJlbmRlckFzVGV4dEZsYWc+KSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGJyb2FkY2FzdEZyYW1lUmVtb3ZhbFRvT3RoZXJQcm9jZXNz
ZXMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlUGFnZSgpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVy
LCBGcmFtZUlkZW50aWZpZXIgdGFyZ2V0LCBjb25zdCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4g
ZGF0YVRva2VuLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6c3Bhbjxjb25zdCB1
aW50OF90PiwgaW50KT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZW1vdGVGcmFt
ZUFjY2Vzc2liaWxpdHlPZmZzZXQoRnJhbWVJZGVudGlmaWVyIHRhcmdldCwgSW50UG9pbnQpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZm9jdXMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVu
Zm9jdXMoKSA9IDA7CiAgICAgdmlydHVhbCB+UmVtb3RlRnJhbWVDbGllbnQoKSB7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCA4NGZjNDE5ZTU5Y2EuLjQyZWVlNjZhYjE2
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtNDIsNiArNDIsNyBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0FjdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRv
ckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9jdXNEaXJlY3Rpb24uaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL0ZyYW1lSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5wdXRNb2Rl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVJdGVtLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxUeXBlcy5oPgpAQCAtMzE4LDcgKzMxOSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVVuZG9SZWRvKFVuZG9PclJlZG8pID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgd2hlZWxFdmVudFdhc05vdEhhbmRsZWRCeVdlYkNvcmUoY29uc3QgTmF0
aXZlV2ViV2hlZWxFdmVudCYpID0gMDsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2aXJ0dWFs
IHZvaWQgYWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKHN0ZDo6c3Bhbjxjb25z
dCB1aW50OF90PikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NpYmlsaXR5V2ViUHJvY2Vz
c1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIHBpZF90KSA9IDA7CiAgICAgdmlydHVhbCBib29sIGV4ZWN1dGVTYXZlZENvbW1h
bmRCeVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlU2VjdXJlSW5wdXRTdGF0ZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRT
ZWN1cmVJbnB1dFN0YXRlKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJv
dmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IDA1MDMwODYzOTFmYi4uM2UzYjgxOTVkMDQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3Bw
CkBAIC01NDUsNyArNTQ1LDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6cmVxdWVzdFBh
c3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdAogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShDT0NPQSkKLXZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OnJlZ2lzdGVyV2Vi
UHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSkK
K3ZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OnJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxp
dHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSwgRnJhbWVJZGVudGlmaWVyKQog
ewogICAgIG1fYWNjZXNzaWJpbGl0eVRva2VuID0gVmVjdG9yKGRhdGEpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKaW5kZXggZGVlY2Q3NmEy
MDI0Li5kMGI3ZWNjZWVmZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1By
b3Zpc2lvbmFsUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlz
aW9uYWxQYWdlUHJveHkuaApAQCAtMTcyLDcgKzE3Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBy
ZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmlu
ZyYgZmlsZU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwog
I2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCByZWdpc3RlcldlYlByb2Nlc3NB
Y2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKKyAgICB2b2lkIHJl
Z2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhf
dD4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEsp
IHx8IFBMQVRGT1JNKFdQRSkKICAgICB2b2lkIGJpbmRBY2Nlc3NpYmlsaXR5VHJlZShjb25zdCBT
dHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKaW5kZXgg
ZjJmYzhhNTRkODgzLi4yMzAzMDdhMTc0ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkZyYW1lUHJveHkuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5
LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYXN0
ZWJvYXJkUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNs
dWRlICJXZWJzaXRlUG9saWNpZXNEYXRhLmgiCkBAIC0xODQsNiArMTg1LDE0IEBAIHZvaWQgV2Vi
RnJhbWVQcm94eTo6bmF2aWdhdGVTZXJ2aWNlV29ya2VyQ2xpZW50KFdlYkNvcmU6OlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJCiAgICAgfSk7CiB9CiAKK3ZvaWQgV2ViRnJhbWVQcm94eTo6YmluZEFj
Y2Vzc2liaWxpdHlGcmFtZVdpdGhEYXRhKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhKQor
eworICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYlByb2Nlc3M6OkJpbmRBY2Nlc3NpYmlsaXR5RnJhbWVXaXRoRGF0YShtX2Zy
YW1lSUQsIGRhdGEpKTsKK30KKwogdm9pZCBXZWJGcmFtZVByb3h5Ojpsb2FkVVJMKGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQogewogICAgIGlmICghbV9wYWdlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oCmluZGV4IGIwZGFlYjBlNjRmYy4uNzE1
YmI4MGJhYjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oCkBAIC0x
NzAsNiArMTcwLDggQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3RlUHJvY2Vzc0RpZFRlcm1pbmF0
ZSgpOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHdlYlBhZ2VJ
REluQ3VycmVudFByb2Nlc3MoKTsKICAgICB2b2lkIG5vdGlmeVBhcmVudE9mTG9hZENvbXBsZXRp
b24oV2ViUHJvY2Vzc1Byb3h5Jik7CisgICAgdm9pZCByZW1vdmVSZW1vdGVQYWdlc0ZvclN1c3Bl
bnNpb24oKTsKKyAgICB2b2lkIGJpbmRBY2Nlc3NpYmlsaXR5RnJhbWVXaXRoRGF0YShzdGQ6OnNw
YW48Y29uc3QgdWludDhfdD4pOwogCiAgICAgYm9vbCBpc0ZvY3VzZWQoKSBjb25zdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNDZjMjE0M2E5NGFiLi5m
MzcxMWU4NTcyMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApA
QCAtMTI5NSw4ICsxMjk1LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpzd2FwVG9Qcm92aXNpb25h
bFBhZ2Uoc3RkOjp1bmlxdWVfcHRyPFByb3Zpc2lvbmFsUGFnZVByb3h5PiBwCiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICBhdXRvIGFjY2Vzc2liaWxpdHlUb2tlbiA9IHByb3Zpc2lvbmFsUGFn
ZS0+dGFrZUFjY2Vzc2liaWxpdHlUb2tlbigpOwotICAgIGlmICghYWNjZXNzaWJpbGl0eVRva2Vu
LmlzRW1wdHkoKSkKLSAgICAgICAgcmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vu
KHsgYWNjZXNzaWJpbGl0eVRva2VuLmRhdGEoKSwgYWNjZXNzaWJpbGl0eVRva2VuLnNpemUoKSB9
KTsKKyAgICBpZiAoIWFjY2Vzc2liaWxpdHlUb2tlbi5pc0VtcHR5KCkpIHsKKyAgICAgICAgcmVn
aXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHsgYWNjZXNzaWJpbGl0eVRva2VuLmRh
dGEoKSwgYWNjZXNzaWJpbGl0eVRva2VuLnNpemUoKSB9LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgeworICAgICAgICAgICAgT2JqZWN0SWRlbnRpZmllcjxXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXJUeXBlPigwKSwKKyAgICAgICAgICAgIE9iamVjdElkZW50aWZpZXI8V2ViQ29yZTo6UHJvY2Vz
c0lkZW50aWZpZXJUeXBlPigwKQorICAgICAgICB9KTsKKyAgICB9CiAjZW5kaWYKICNpZiBQTEFU
Rk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKICAgICBhdXRvIGFjY2Vzc2liaWxpdHlQbHVnSUQg
PSBwcm92aXNpb25hbFBhZ2UtPmFjY2Vzc2liaWxpdHlQbHVnSUQoKTsKQEAgLTEzNzQ0LDYgKzEz
NzQ4LDIyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjphZGRDb25zb2xlTWVzc2FnZShGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgTWVzc2FnZVNvdXJjZSBtZXNzCiAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBmcmFtZUlELCBtZXNzYWdlU291cmNlLCBtZXNzYWdl
TGV2ZWwsIG1lc3NhZ2UsIGNvcmVJZGVudGlmaWVyIH0pOwogfQogCit2b2lkIFdlYlBhZ2VQcm94
eTo6YmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3Qgc3RkOjpzcGFuPGNvbnN0IHVp
bnQ4X3Q+IGRhdGFUb2tlbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6OnNwYW48Y29uc3Qg
dWludDhfdD4sIGludCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byBzZW5kUmVz
dWx0ID0gc2VuZFN5bmNUb1Byb2Nlc3NDb250YWluaW5nRnJhbWUoZnJhbWVJRCwgTWVzc2FnZXM6
OldlYlBhZ2U6OkJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKHByb2Nlc3NJZGVudGlmaWVy
LCBmcmFtZUlELCBkYXRhVG9rZW4pKTsKKyAgICBpZiAoIXNlbmRSZXN1bHQuc3VjY2VlZGVkKCkp
CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0sIDApOworCisgICAgYXV0byBb
ZnJhbWVEYXRhVG9rZW4sIGZyYW1lUHJvY2Vzc0lkZW50aWZpZXJdID0gc2VuZFJlc3VsdC50YWtl
UmVwbHkoKTsKKworICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lRGF0YVRva2VuLCBmcmFtZVBy
b2Nlc3NJZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVJlbW90ZUZy
YW1lQWNjZXNzaWJpbGl0eU9mZnNldChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
V2ViQ29yZTo6SW50UG9pbnQgb2Zmc2V0KQoreworICAgIHNlbmRUb1Byb2Nlc3NDb250YWluaW5n
RnJhbWUoZnJhbWVJRCwgTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZVJlbW90ZVBhZ2VBY2Nlc3Np
YmlsaXR5T2Zmc2V0KGZyYW1lSUQsIG9mZnNldCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKIAogI3VuZGVmIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAppbmRleCBjYzg2ZGRjNmE1YmYuLjcwMzQ4YzZmNjYxYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTEzNTUsNyArMTM1NSw3IEBAIHB1
YmxpYzoKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIC8vIENhbGxlZCBieSB0aGUgd2ViIHBy
b2Nlc3MgdGhyb3VnaCBhIG1lc3NhZ2UuCi0gICAgdm9pZCByZWdpc3RlcldlYlByb2Nlc3NBY2Nl
c3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKKyAgICB2b2lkIHJlZ2lz
dGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4s
IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAgICAgLy8gQ2FsbGVkIGJ5IHRoZSBVSSBwcm9j
ZXNzIHdoZW4gaXQgaXMgcmVhZHkgdG8gc2VuZCBpdHMgdG9rZW5zIHRvIHRoZSB3ZWIgcHJvY2Vz
cy4KICAgICB2b2lkIHJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VucyhzdGQ6OnNw
YW48Y29uc3QgdWludDhfdD4gZWxlbWVudFRva2VuLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4g
d2luZG93VG9rZW4pOwogICAgIHZvaWQgcmVwbGFjZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJkRGF0
YShjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Pik7
CkBAIC0yOTc4LDYgKzI5NzgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZm9jdXNSZW1vdGVGcmFt
ZShJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZvaWQg
cG9zdE1lc3NhZ2VUb1JlbW90ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgc291cmNlLCBjb25z
dCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHRhcmdldCwg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IHRhcmdldE9yaWdpbiwg
Y29uc3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmKTsKICAgICB2b2lkIHJlbmRl
clRyZWVBc1RleHQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBzaXplX3QgYmFzZUluZGVudCwg
T3B0aW9uU2V0PFdlYkNvcmU6OlJlbmRlckFzVGV4dEZsYWc+LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFN0cmluZyYmKT4mJik7CisgICAgdm9pZCBiaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1l
cyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgc3RkOjpz
cGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGFUb2tlbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6
OnNwYW48Y29uc3QgdWludDhfdD4sIGludCk+JiYpOworICAgIHZvaWQgdXBkYXRlUmVtb3RlRnJh
bWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6
SW50UG9pbnQpOwogCiAgICAgdm9pZCBzZXRUZXh0SW5kaWNhdG9yRnJvbUZyYW1lKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGEmJiwgdWludDY0X3Qp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4KaW5kZXggNDkzODYyNmJmOGEyLi5hNTQyZjE3NmI1OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTMyNCw3ICszMjQsNyBA
QCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIEV4ZWN1dGVTYXZlZENvbW1hbmRCeVNl
bGVjdG9yKFN0cmluZyBzZWxlY3RvcikgLT4gKGJvb2wgaGFuZGxlZCkgU3luY2hyb25vdXMKIAog
ICAgICMgUmVtb3RlIGFjY2Vzc2liaWxpdHkgbWVzc2FnZXMKLSAgICBSZWdpc3RlcldlYlByb2Nl
c3NBY2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCisgICAg
UmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50
OF90PiBkYXRhLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKIAogICAgICMgU3Bl
ZWNoIG1lc3NhZ2VzCiAgICAgR2V0SXNTcGVha2luZygpIC0+IChib29sIGlzU3BlYWtpbmcpIFN5
bmNocm9ub3VzCkBAIC02MzAsNCArNjMwLDYgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsK
ICAgICBGb2N1c1JlbW90ZUZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQog
ICAgIFBvc3RNZXNzYWdlVG9SZW1vdGUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHNvdXJjZSwg
U3RyaW5nIHNvdXJjZU9yaWdpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHRhcmdldCwgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IHRhcmdldE9yaWdpbiwgc3Ry
dWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2UpCiAgICAgUmVuZGVy
VHJlZUFzVGV4dChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgaWRlbnRpZmllciwgc2l6ZV90IGJh
c2VJbmRlbnQsIE9wdGlvblNldDxXZWJDb3JlOjpSZW5kZXJBc1RleHRGbGFnPiBiZWhhdmlvcikg
LT4gKFN0cmluZyByZW5kZXJUcmVlRHVtcCkgU3luY2hyb25vdXMKKyAgICBCaW5kUmVtb3RlQWNj
ZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YVRva2VuKSAtPiAo
c3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHRva2VuLCBpbnQgcHJvY2Vzc0lkZW50aWZpZXIpIFN5
bmNocm9ub3VzCisgICAgVXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpJbnRQb2ludCBvZmZzZXQpCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCmlu
ZGV4IDEwYzRmNmFlMTI1MC4uNjM4OGNiNDY3MmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaApAQCAtMTEwLDcgKzExMCw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBjbGVhckFsbEVkaXRDb21tYW5kcygpIG92ZXJyaWRlOwogICAgIGJvb2wg
Y2FuVW5kb1JlZG8oVW5kb09yUmVkbykgb3ZlcnJpZGU7CiAgICAgdm9pZCBleGVjdXRlVW5kb1Jl
ZG8oVW5kb09yUmVkbykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhY2Nlc3NpYmlsaXR5V2ViUHJvY2Vz
c1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KSBvdmVycmlkZTsKKyAgICB2
b2lkIGFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChzdGQ6OnNwYW48Y29uc3Qg
dWludDhfdD4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgcGlkX3QpIG92ZXJyaWRlOwogICAg
IGJvb2wgZXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxlY3Rv
cikgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVTZWN1cmVJbnB1dFN0YXRlKCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCByZXNldFNlY3VyZUlucHV0U3RhdGUoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCBjYjIzZjQ5
NzRhNmIuLmI1YWRkZGNlMjNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtMzg5LDcgKzM4OSw3IEBAIHZvaWQgUGFnZUNsaWVu
dEltcGw6OmV4ZWN1dGVVbmRvUmVkbyhVbmRvT3JSZWRvIHVuZG9PclJlZG8pCiAgICAgcmV0dXJu
ICh1bmRvT3JSZWRvID09IFVuZG9PclJlZG86OlVuZG8pID8gW1tjb250ZW50VmlldygpIHVuZG9N
YW5hZ2VyXSB1bmRvXSA6IFtbY29udGVudFZpZXcoKSB1bmRvTWFuYWdlcl0gcmVkb107CiB9CiAK
LXZvaWQgUGFnZUNsaWVudEltcGw6OmFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZl
ZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSkKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmFj
Y2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChzdGQ6OnNwYW48Y29uc3QgdWludDhf
dD4gZGF0YSwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBwaWRfdCkKIHsKICAgICBOU0RhdGEg
KnJlbW90ZVRva2VuID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEuZGF0YSgpIGxlbmd0aDpk
YXRhLnNpemUoKV07CiAgICAgW2NvbnRlbnRWaWV3KCkgX3NldEFjY2Vzc2liaWxpdHlXZWJQcm9j
ZXNzVG9rZW46cmVtb3RlVG9rZW5dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW0KaW5kZXggNWIxMGY1OWM2NjYxLi5kZWI0ZDU4ZTVmZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtNzYz
LDExICs3NjMsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5h
YmxlZChib29sKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5
OjpyZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVp
bnQ4X3Q+IGRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNz
aWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhLCBGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCkKIHsKLSAgICBwcm90ZWN0ZWRQYWdlQ2xpZW50KCktPmFjY2Vzc2liaWxpdHlX
ZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChkYXRhKTsKLX0gICAgCi0KKyAgICBwYWdlQ2xpZW50KCku
YWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKGRhdGEsIGZyYW1lSUQsIG1lc3Nh
Z2VTZW5kZXJDb25uZWN0aW9uKCktPnJlbW90ZVByb2Nlc3NJRCgpKTsKK30KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OnJlbGF5QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIG5v
dGlmaWNhdGlvbk5hbWUsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaAppbmRleCBmYjZj
NjA3ODY3YWYuLmJmOGRhNDMwZDhhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKQEAgLTE3Niw3ICsxNzYsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZ2VzdHVyZUV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShjb25zdCBOYXRpdmVXZWJH
ZXN0dXJlRXZlbnQmKSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgdm9pZCBhY2Nlc3NpYmlsaXR5
V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KSBvdmVycmlk
ZTsKKyAgICB2b2lkIGFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChzdGQ6OnNw
YW48Y29uc3QgdWludDhfdD4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgcGlkX3QpIG92ZXJy
aWRlOwogCiAgICAgdm9pZCBtYWtlRmlyc3RSZXNwb25kZXIoKSBvdmVycmlkZTsKICAgICB2b2lk
IGFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQppbmRleCAw
NzgwZjE4ZGExYzIuLjAxNTBlYzQ1MTJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQpAQCAtNTgxLDkgKzU4MSw5IEBAIHZvaWQgUGFn
ZUNsaWVudEltcGw6OnNldFRleHRJbmRpY2F0b3JBbmltYXRpb25Qcm9ncmVzcyhmbG9hdCBwcm9n
cmVzcykKICAgICBtX2ltcGwtPnNldFRleHRJbmRpY2F0b3JBbmltYXRpb25Qcm9ncmVzcyhwcm9n
cmVzcyk7CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OmFjY2Vzc2liaWxpdHlXZWJQcm9jZXNz
VG9rZW5SZWNlaXZlZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSkKK3ZvaWQgUGFnZUNs
aWVudEltcGw6OmFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChzdGQ6OnNwYW48
Y29uc3QgdWludDhfdD4gZGF0YSwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHBp
ZF90IHBpZCkKIHsKLSAgICBtX2ltcGwtPnNldEFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW4o
W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEuZGF0YSgpIGxlbmd0aDpkYXRhLnNpemUoKV0pOwor
ICAgIG1faW1wbC0+c2V0QWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlbihbTlNEYXRhIGRhdGFX
aXRoQnl0ZXM6ZGF0YS5kYXRhKCkgbGVuZ3RoOmRhdGEuc2l6ZSgpXSwgZnJhbWVJRCwgcGlkKTsK
IH0KICAgICAKIHZvaWQgUGFnZUNsaWVudEltcGw6OmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgbGF5ZXJUcmVlQ29udGV4dCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IGNmYjEwZmRi
YjQxMy4uODY5NjE3YTI5ZDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
ZWJQYWdlUHJveHlNYWMubW0KQEAgLTMwNiwxMiArMzA2LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChjb25zdCBEaWN0aW9uYXJ5UG9wdXBJbmZvJiBk
aWN0aW9uCiAgICAgcHJvdGVjdGVkUGFnZUNsaWVudCgpLT5kaWRQZXJmb3JtRGljdGlvbmFyeUxv
b2t1cChkaWN0aW9uYXJ5UG9wdXBJbmZvKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lz
dGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4g
ZGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5
VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEsIEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlEKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwog
ICAgIAotICAgIHByb3RlY3RlZFBhZ2VDbGllbnQoKS0+YWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NU
b2tlblJlY2VpdmVkKGRhdGEpOworICAgIHByb3RlY3RlZFBhZ2VDbGllbnQoKS0+YWNjZXNzaWJp
bGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKGRhdGEsIGZyYW1lSUQsIG1lc3NhZ2VTZW5kZXJD
b25uZWN0aW9uKCktPnJlbW90ZVByb2Nlc3NJRCgpKTsKIH0gICAgCiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjptYWtlRmlyc3RSZXNwb25kZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2Vi
Vmlld0ltcGwuaAppbmRleCAwM2RmZGFlZTE1M2MuLjVhMmUxMjlmZGM4YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJbXBsLmgKQEAgLTQ0OCw3ICs0NDgsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRJZ25vcmVzTW91c2VEcmFnZ2VkRXZlbnRzKGJvb2wpOwogICAgIGJv
b2wgaWdub3Jlc01vdXNlRHJhZ2dlZEV2ZW50cygpIGNvbnN0IHsgcmV0dXJuIG1faWdub3Jlc01v
dXNlRHJhZ2dlZEV2ZW50czsgfQogCi0gICAgdm9pZCBzZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vz
c1Rva2VuKE5TRGF0YSAqKTsKKyAgICB2b2lkIHNldEFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9r
ZW4oTlNEYXRhICosIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgcGlkX3QpOwogICAgIHZvaWQg
YWNjZXNzaWJpbGl0eVJlZ2lzdGVyVUlQcm9jZXNzVG9rZW5zKCk7CiAgICAgdm9pZCB1cGRhdGVS
ZW1vdGVBY2Nlc3NpYmlsaXR5UmVnaXN0cmF0aW9uKGJvb2wgcmVnaXN0ZXJQcm9jZXNzKTsKICAg
ICBpZCBhY2Nlc3NpYmlsaXR5Rm9jdXNlZFVJRWxlbWVudCgpOwpAQCAtOTI3LDYgKzkyNyw3IEBA
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIGJvb2wgbV9hbGxvd3NNYWdu
aWZpY2F0aW9uIHsgZmFsc2UgfTsKIAogICAgIFJldGFpblB0cjxOU0FjY2Vzc2liaWxpdHlSZW1v
dGVVSUVsZW1lbnQ+IG1fcmVtb3RlQWNjZXNzaWJpbGl0eUNoaWxkOworICAgIFJldGFpblB0cjxO
U011dGFibGVEaWN0aW9uYXJ5PiBtX3JlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZUNhY2hlOwogCiAg
ICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlPiBtX3Byb21pc2VkSW1hZ2U7CiAgICAgU3RyaW5nIG1f
cHJvbWlzZWRGaWxlbmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3SW1w
bC5tbQppbmRleCA1YmRlMTExNjI3OTAuLmE0YjMwN2Q3NmU3MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XZWJWaWV3SW1wbC5tbQpAQCAtMzQ4MSwxMCArMzQ4MSwxMiBAQCB2b2lk
IFdlYlZpZXdJbXBsOjpzZXRJZ25vcmVzTW91c2VEcmFnZ2VkRXZlbnRzKGJvb2wgaWdub3Jlc01v
dXNlRHJhZ2dlZEV2ZW50cykKICAgICBtX2lnbm9yZXNNb3VzZURyYWdnZWRFdmVudHMgPSBpZ25v
cmVzTW91c2VEcmFnZ2VkRXZlbnRzOwogfQogCi12b2lkIFdlYlZpZXdJbXBsOjpzZXRBY2Nlc3Np
YmlsaXR5V2ViUHJvY2Vzc1Rva2VuKE5TRGF0YSAqZGF0YSkKK3ZvaWQgV2ViVmlld0ltcGw6OnNl
dEFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW4oTlNEYXRhICpkYXRhLCBXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgcGlkX3QgcGlkKQogewotICAgIG1fcmVtb3RlQWNjZXNzaWJp
bGl0eUNoaWxkID0gZGF0YS5sZW5ndGggPyBhZG9wdE5TKFtbTlNBY2Nlc3NpYmlsaXR5UmVtb3Rl
VUlFbGVtZW50IGFsbG9jXSBpbml0V2l0aFJlbW90ZVRva2VuOmRhdGFdKSA6IG5pbDsKLSAgICB1
cGRhdGVSZW1vdGVBY2Nlc3NpYmlsaXR5UmVnaXN0cmF0aW9uKHRydWUpOworICAgIGlmIChwaWQg
PT0gbV9wYWdlLT5wcm9jZXNzKCkucHJvY2Vzc0lEKCkpIHsKKyAgICAgICAgbV9yZW1vdGVBY2Nl
c3NpYmlsaXR5Q2hpbGQgPSBkYXRhLmxlbmd0aCA/IGFkb3B0TlMoW1tOU0FjY2Vzc2liaWxpdHlS
ZW1vdGVVSUVsZW1lbnQgYWxsb2NdIGluaXRXaXRoUmVtb3RlVG9rZW46ZGF0YV0pIDogbmlsOwor
ICAgICAgICB1cGRhdGVSZW1vdGVBY2Nlc3NpYmlsaXR5UmVnaXN0cmF0aW9uKHRydWUpOworICAg
IH0KIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6dXBkYXRlUmVtb3RlQWNjZXNzaWJpbGl0eVJlZ2lz
dHJhdGlvbihib29sIHJlZ2lzdGVyUHJvY2VzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJMb2NhbEZyYW1lTG9h
ZGVyQ2xpZW50LmNwcAppbmRleCA3ZDJhNDI2NWZkNWMuLmYzZjczZjM2N2VhZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkxvY2FsRnJhbWVM
b2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTgwNyw2ICsxODA3LDEyIEBA
IHZvaWQgV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsRGVzdHJveUdsb2Jh
bE9iamVjdEZvckRPTVdpbmRvd0V4dGVuCiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAKK1dl
YkNvcmU6OkludFBvaW50IFdlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQ6OmFjY2Vzc2liaWxpdHlS
ZW1vdGVGcmFtZU9mZnNldCgpCit7CisgICAgUmVmUHRyIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdl
KCk7CisgICAgcmV0dXJuIHdlYlBhZ2UgPyB3ZWJQYWdlLT5hY2Nlc3NpYmlsaXR5UmVtb3RlRnJh
bWVPZmZzZXQoKSA6IEludFBvaW50KCk7Cit9CisKIFJlbW90ZUFYT2JqZWN0UmVmIFdlYkxvY2Fs
RnJhbWVMb2FkZXJDbGllbnQ6OmFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKQogewogICAgIFJl
ZlB0ciB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJMb2NhbEZyYW1lTG9h
ZGVyQ2xpZW50LmgKaW5kZXggODhjOGNjNWNiNzJlLi45ZjNiNjdmMGZjYjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJMb2NhbEZyYW1lTG9h
ZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMjQwLDYgKzI0MCw3IEBAIHByaXZhdGU6
CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZW1vdGVBWE9iamVjdFJlZiBhY2Nlc3NpYmls
aXR5UmVtb3RlT2JqZWN0KCkgZmluYWw7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgYWNjZXNzaWJp
bGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCkgZmluYWw7CiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlf
SVNPTEFURURfVFJFRSkKICAgICB2b2lkIHNldEFYSXNvbGF0ZWRUcmVlUm9vdChXZWJDb3JlOjpB
WENvcmVPYmplY3QqKSBmaW5hbDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90ZUZyYW1lQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVudC5j
cHAKaW5kZXggOGNiZmYyYzliOGM5Li5hMmYwOTQ4ZDQzMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90ZUZy
YW1lQ2xpZW50LmNwcApAQCAtOTYsNiArOTYsMzggQEAgU3RyaW5nIFdlYlJlbW90ZUZyYW1lQ2xp
ZW50OjpyZW5kZXJUcmVlQXNUZXh0KHNpemVfdCBiYXNlSW5kZW50LCBPcHRpb25TZXQ8UmVuZGUK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCit2b2lkIFdlYlJlbW90ZUZyYW1lQ2xpZW50Ojp1bmJp
bmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllcikKK3sKKyAg
ICAvLyBNYWtlIHN1cmUgQXBwS2l0IHN5c3RlbSBrbm93cyBhYm91dCBvdXIgcmVtb3RlIFVJIHBy
b2Nlc3Mgc3RhdHVzIG5vdy4KKyAgICBpZiAoUmVmUHRyIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkp
CisgICAgICAgIHBhZ2UtPmFjY2Vzc2liaWxpdHlNYW5hZ2VSZW1vdGVFbGVtZW50U3RhdHVzKGZh
bHNlLCBwcm9jZXNzSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViUmVtb3RlRnJhbWVDbGllbnQ6
OnVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6SW50UG9pbnQgb2Zmc2V0KQoreworICAgIGlmIChSZWZQ
dHIgcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgcGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpVcGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQoZnJhbWVJ
RCwgb2Zmc2V0KSk7Cit9CisKK3ZvaWQgV2ViUmVtb3RlRnJhbWVDbGllbnQ6OmJpbmRSZW1vdGVB
Y2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhVG9r
ZW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBpbnQp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFJlZlB0ciBwYWdlID0gbV9mcmFtZS0+cGFn
ZSgpOworICAgIGlmICghcGFnZSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6OnNw
YW48Y29uc3QgdWludDhfdD4geyB9LCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGF1dG8gc2VuZFJlc3VsdCA9IHBhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKHByb2Nlc3NJZGVudGlmaWVyLCBmcmFtZUlE
LCBkYXRhVG9rZW4pKTsKKyAgICBpZiAoIXNlbmRSZXN1bHQuc3VjY2VlZGVkKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGF1dG8gW3Jlc3VsdFRva2VuLCBwcm9jZXNzSWRlbnRpZmllclJlc3Vs
dF0gPSBzZW5kUmVzdWx0LnRha2VSZXBseSgpOworCisgICAgLy8gTWFrZSBzdXJlIEFwcEtpdCBz
eXN0ZW0ga25vd3MgYWJvdXQgb3VyIHJlbW90ZSBVSSBwcm9jZXNzIHN0YXR1cyBub3cuCisgICAg
cGFnZS0+YWNjZXNzaWJpbGl0eU1hbmFnZVJlbW90ZUVsZW1lbnRTdGF0dXModHJ1ZSwgcHJvY2Vz
c0lkZW50aWZpZXJSZXN1bHQpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdFRva2VuLCBw
cm9jZXNzSWRlbnRpZmllclJlc3VsdCk7Cit9CisKIHZvaWQgV2ViUmVtb3RlRnJhbWVDbGllbnQ6
OmJyb2FkY2FzdEZyYW1lUmVtb3ZhbFRvT3RoZXJQcm9jZXNzZXMoKQogewogICAgIFdlYkZyYW1l
TG9hZGVyQ2xpZW50Ojpicm9hZGNhc3RGcmFtZVJlbW92YWxUb090aGVyUHJvY2Vzc2VzKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVt
b3RlRnJhbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJSZW1vdGVGcmFtZUNsaWVudC5oCmluZGV4IDYyNmUwNWMzZTg4Yi4uYzg4OWViN2U1ZmFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UmVtb3RlRnJhbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuaApAQCAtNDgsNiArNDgsMTAgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHBvc3RNZXNzYWdlVG9SZW1vdGUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IHNvdXJjZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciB0YXJnZXQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiB0
YXJnZXRPcmlnaW4sIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJikgZmlu
YWw7CiAgICAgdm9pZCBjaGFuZ2VMb2NhdGlvbihXZWJDb3JlOjpGcmFtZUxvYWRSZXF1ZXN0JiYp
IGZpbmFsOwogICAgIFN0cmluZyByZW5kZXJUcmVlQXNUZXh0KHNpemVfdCBiYXNlSW5kZW50LCBP
cHRpb25TZXQ8V2ViQ29yZTo6UmVuZGVyQXNUZXh0RmxhZz4pIGZpbmFsOworICAgIHZvaWQgYmlu
ZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIGludCk+JiYpIGZpbmFsOworICAg
IHZvaWQgdW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQpIGZpbmFsOworICAgIHZv
aWQgdXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciwgV2ViQ29yZTo6SW50UG9pbnQpIGZpbmFsOworCiAgICAgdm9pZCBicm9hZGNhc3RG
cmFtZVJlbW92YWxUb090aGVyUHJvY2Vzc2VzKCkgZmluYWw7CiAgICAgdm9pZCBjbG9zZVBhZ2Uo
KSBmaW5hbDsKICAgICB2b2lkIGZvY3VzKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KaW5kZXggYWU0M2Yx
YTQ2OThiLi4wMjQ2NDM3ZTEyZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KQEAgLTc3LDYgKzc3LDcgQEAKICNp
bXBvcnQgPFdlYkNvcmUvVVRJUmVnaXN0cnkuaD4KICNpbXBvcnQgPFdlYkNvcmUvVVRJVXRpbGl0
aWVzLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmg+CisjaW1w
b3J0IDxwYWwvc3BpL2NvY29hL05TQWNjZXNzaWJpbGl0eVNQSS5oPgogI2ltcG9ydCA8cGFsL3Nw
aS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9TYW5kYm94
U1BJLmg+CiAKQEAgLTQwNCwxMCArNDA1LDUxIEBAIHZvaWQgV2ViUGFnZTo6Y2xlYXJEaWN0YXRp
b25BbHRlcm5hdGl2ZXMoVmVjdG9yPERpY3RhdGlvbkNvbnRleHQ+JiYgY29udGV4dHMpCiAgICAg
fSwgRG9jdW1lbnRNYXJrZXI6OlR5cGU6OkRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CiB9CiAKLXZv
aWQgV2ViUGFnZTo6YWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oUmV0YWluUHRyPE5T
RGF0YT4gcmVtb3RlVG9rZW4pCit2b2lkIFdlYlBhZ2U6OmFjY2Vzc2liaWxpdHlUcmFuc2ZlclJl
bW90ZVRva2VuKFJldGFpblB0cjxOU0RhdGE+IHJlbW90ZVRva2VuLCBGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCkKIHsKICAgICBzdGQ6OnNwYW4gZGF0YVRva2VuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KFtyZW1vdGVUb2tlbiBieXRlc10pLCBbcmVtb3RlVG9rZW4gbGVuZ3RoXSk7
Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWdpc3RlcldlYlByb2Nlc3NBY2Nl
c3NpYmlsaXR5VG9rZW4oZGF0YVRva2VuKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpSZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oZGF0YVRva2VuLCBmcmFt
ZUlEKSk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6YWNjZXNzaWJpbGl0eU1hbmFnZVJlbW90ZUVsZW1l
bnRTdGF0dXMoYm9vbCByZWdpc3RlclN0YXR1cywgaW50IHByb2Nlc3NJZGVudGlmaWVyKQorewor
I2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAocmVnaXN0ZXJTdGF0dXMpCisgICAgICAgIFtOU0Fj
Y2Vzc2liaWxpdHlSZW1vdGVVSUVsZW1lbnQgcmVnaXN0ZXJSZW1vdGVVSVByb2Nlc3NJZGVudGlm
aWVyOnByb2Nlc3NJZGVudGlmaWVyXTsKKyAgICBlbHNlCisgICAgICAgIFtOU0FjY2Vzc2liaWxp
dHlSZW1vdGVVSUVsZW1lbnQgdW5yZWdpc3RlclJlbW90ZVVJUHJvY2Vzc0lkZW50aWZpZXI6cHJv
Y2Vzc0lkZW50aWZpZXJdOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocmVnaXN0ZXJTdGF0dXMp
OworICAgIFVOVVNFRF9QQVJBTShwcm9jZXNzSWRlbnRpZmllcik7CisjZW5kaWYKK30KKwordm9p
ZCBXZWJQYWdlOjpiaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50
aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdGQ6OnNwYW48Y29uc3Qg
dWludDhfdD4gZGF0YVRva2VuLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6c3Bhbjxjb25z
dCB1aW50OF90PiwgaW50KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBSZWZQdHIgd2Vi
RnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKTsKKyAgICBp
ZiAoIXdlYkZyYW1lKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9LCAwKTsKKyAgICB9CisKKyAgICBSZWZQdHIgY29y
ZUxvY2FsRnJhbWUgPSB3ZWJGcmFtZS0+Y29yZUxvY2FsRnJhbWUoKTsKKyAgICBpZiAoIWNvcmVM
b2NhbEZyYW1lKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9LCAwKTsKKyAgICB9CisKKyAgICBhdXRvKiByZW5kZXJl
ciA9IGNvcmVMb2NhbEZyYW1lLT5jb250ZW50UmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVy
KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoeyB9LCAwKTsKKyAgICB9CisKKyAgICByZWdpc3RlclJlbW90ZUZyYW1lQWNj
ZXNzaWJpbGl0eVRva2Vucyhwcm9jZXNzSWRlbnRpZmllciwgZGF0YVRva2VuKTsKKworICAgIC8v
IEdldCBvdXIgcmVtb3RlIHRva2VuIGRhdGEgYW5kIHNlbmQgYmFjayB0byB0aGUgUmVtb3RlRnJh
bWUuCisgICAgYXV0byByZW1vdGVUb2tlbiA9IGFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEo
KTsKKyAgICBzdGQ6OnNwYW4gcmVtb3RlRGF0YVRva2VuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KFtyZW1vdGVUb2tlbiBieXRlc10pLCBbcmVtb3RlVG9rZW4gbGVuZ3RoXSk7Cisg
ICAgY29tcGxldGlvbkhhbmRsZXIocmVtb3RlRGF0YVRva2VuLCBnZXRwaWQoKSk7CiB9CiAKICNp
ZiBFTkFCTEUoQVBQTEVfUEFZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCmluZGV4IDA5YjNlN2U1OTU3NS4uZWM4ZjUyZTRhYzcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC02NzEsNiArNjcxLDEwIEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNsZWFySGlzdG9yeSgpOwogCiAgICAgdm9pZCBhY2Nlc3NpYmlsaXR5U2V0
dGluZ3NEaWRDaGFuZ2UoKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIGFjY2Vzc2li
aWxpdHlNYW5hZ2VSZW1vdGVFbGVtZW50U3RhdHVzKGJvb2wsIGludCk7CisjZW5kaWYKKwogICAg
IHZvaWQgc2NyZWVuUHJvcGVydGllc0RpZENoYW5nZSgpOwogCiAgICAgdm9pZCBzY2FsZVBhZ2Uo
ZG91YmxlIHNjYWxlLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgb3JpZ2luKTsKQEAgLTEwNDMs
NyArMTA0NywxMSBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBwbGF0
Zm9ybUluaXRpYWxpemVBY2Nlc3NpYmlsaXR5KCk7CiAgICAgdm9pZCByZWdpc3RlclVJUHJvY2Vz
c0FjY2Vzc2liaWxpdHlUb2tlbnMoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGVsZW1lbnRUb2tl
biwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHdpbmRvd1Rva2VuKTsKKyAgICB2b2lkIHJlZ2lz
dGVyUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5VG9rZW5zKHBpZF90LCBzdGQ6OnNwYW48Y29uc3Qg
dWludDhfdD4pOwogICAgIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QqIGFjY2Vzc2liaWxp
dHlSZW1vdGVPYmplY3QoKTsKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBhY2Nlc3NpYmlsaXR5UmVt
b3RlRnJhbWVPZmZzZXQoKTsKKyAgICB2b2lkIGNyZWF0ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVu
dChwaWRfdCk7CisgICAgdm9pZCB1cGRhdGVSZW1vdGVQYWdlQWNjZXNzaWJpbGl0eU9mZnNldChX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OkludFBvaW50KTsKICNpZiBFTkFCTEUo
QUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQogICAgIHZvaWQgY2FjaGVBWFBvc2l0aW9uKGNv
bnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKICAgICB2b2lkIGNhY2hlQVhTaXplKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmKTsKQEAgLTIwOTQsNyArMjEwMiw3IEBAIHByaXZhdGU6CiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgdm9pZCByZXF1ZXN0QWN0aXZlTm93UGxheWluZ1Nlc3Npb25JbmZv
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwgV2ViQ29yZTo6Tm93UGxheWluZ0luZm8mJik+
JiYpOwogICAgIFJldGFpblB0cjxOU0RhdGE+IGFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEo
KSBjb25zdDsKLSAgICB2b2lkIGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKFJldGFp
blB0cjxOU0RhdGE+KTsKKyAgICB2b2lkIGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2Vu
KFJldGFpblB0cjxOU0RhdGE+LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogI2VuZGlmCiAK
ICAgICB2b2lkIHNldFNob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cyhib29sIGRpc3Bh
dGNoKSB7IG1fc2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzID0gZGlzcGF0Y2g7IH0K
QEAgLTIyMDQsNiArMjIxMiw5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJlbW90ZVBvc3RNZXNz
YWdlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBzb3VyY2UsIGNvbnN0IFN0cmluZyYgc291cmNl
T3JpZ2luLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgdGFyZ2V0LCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJiB0YXJnZXRPcmlnaW4sIGNvbnN0IFdlYkNvcmU6
Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJik7CiAgICAgdm9pZCByZW5kZXJUcmVlQXNUZXh0KFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciwgc2l6ZV90IGJhc2VJbmRlbnQsIE9wdGlvblNldDxXZWJD
b3JlOjpSZW5kZXJBc1RleHRGbGFnPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+
JiYpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgYmluZFJlbW90ZUFjY2Vzc2liaWxp
dHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6OnNw
YW48Y29uc3QgdWludDhfdD4sIGludCk+JiYpOworI2VuZGlmCiAKICAgICB2b2lkIHJlcXVlc3RU
ZXh0RXh0cmFjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4mJiBjb2xsZWN0
aW9uUmVjdEluUm9vdFZpZXcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6VGV4dEV4
dHJhY3Rpb246Okl0ZW0mJik+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBlZDljMDFhYmQxNWYuLjgxN2Rl
Y2Q2ZGNmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC00OTIsNiArNDkyLDkgQEAgR2VuZXJhdGVTeW50aGV0aWNF
ZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFu
ZFR5cGUKICAgICBXaW5kb3dBbmRWaWV3RnJhbWVzQ2hhbmdlZChzdHJ1Y3QgV2ViS2l0OjpWaWV3
V2luZG93Q29vcmRpbmF0ZXMgY29vcmRpbmF0ZXMpCiAgICAgU2V0TWFpbkZyYW1lSXNTY3JvbGxh
YmxlKGJvb2wgaXNTY3JvbGxhYmxlKQogICAgIFJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0
eVRva2VucyhzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZWxlbWVudFRva2VuLCBzdGQ6OnNwYW48
Y29uc3QgdWludDhfdD4gd2luZG93VG9rZW4pCisgICAgQmluZFJlbW90ZUFjY2Vzc2liaWxpdHlG
cmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGFUb2tlbikgLT4gKHN0ZDo6c3Bhbjxj
b25zdCB1aW50OF90PiB0b2tlbiwgaW50IHByb2Nlc3NJZGVudGlmaWVyKSBTeW5jaHJvbm91cwor
ICAgIFVwZGF0ZVJlbW90ZVBhZ2VBY2Nlc3NpYmlsaXR5T2Zmc2V0KFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpJbnRQb2ludCBvZmZzZXQpOworCiAgICAgR2V0U3Ry
aW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpIC0+IChTdHJpbmcgc3RyaW5nVmFsdWUpIFN5bmNo
cm9ub3VzCiAgICAgR2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoU3RyaW5nIHBhc3RlYm9h
cmRUeXBlKSAtPiAoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyKSBTeW5jaHJv
bm91cwogICAgIFJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChTdHJpbmcgcGFzdGVib2FyZE5h
bWUpIC0+IChib29sIHJlc3VsdCkgU3luY2hyb25vdXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggYTdmZDcyMzEyN2MwLi4y
OGVlNWRiNzBlYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0yNDMsMTIgKzI0MywxNCBAQCB2b2lkIFdlYlBhZ2U6OnBs
YXRmb3JtSW5pdGlhbGl6ZUFjY2Vzc2liaWxpdHkoKQogICAgIG1fbW9ja0FjY2Vzc2liaWxpdHlF
bGVtZW50ID0gYWRvcHROUyhbW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QgYWxsb2NdIGlu
aXRdKTsKICAgICBbbV9tb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgc2V0V2ViUGFnZTp0aGlzXTsK
IAotICAgIGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKGFjY2Vzc2liaWxpdHlSZW1v
dGVUb2tlbkRhdGEoKSk7CisgICAgUmVmIGZyYW1lID0gQ2hlY2tlZFJlZihtX3BhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgYWNjZXNzaWJpbGl0eVRy
YW5zZmVyUmVtb3RlVG9rZW4oYWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0YSgpLCBmcmFtZS0+
ZnJhbWVJRCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybVJlaW5pdGlhbGl6ZSgpCiB7
Ci0gICAgYWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oYWNjZXNzaWJpbGl0eVJlbW90
ZVRva2VuRGF0YSgpKTsKKyAgICBSZWYgZnJhbWUgPSBDaGVja2VkUmVmKG1fcGFnZS0+Zm9jdXND
b250cm9sbGVyKCkpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBhY2Nlc3NpYmlsaXR5VHJh
bnNmZXJSZW1vdGVUb2tlbihhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCksIGZyYW1lLT5m
cmFtZUlEKCkpOwogfQogCiBSZXRhaW5QdHI8TlNEYXRhPiBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5
UmVtb3RlVG9rZW5EYXRhKCkgY29uc3QKQEAgLTY0NCw2ICs2NDYsMTYgQEAgTlNPYmplY3QgKldl
YlBhZ2U6OmFjY2Vzc2liaWxpdHlPYmplY3RGb3JNYWluRnJhbWVQbHVnaW4oKQogICAgIHJldHVy
biBuaWw7CiB9CiAgICAgCit2b2lkIFdlYlBhZ2U6OnVwZGF0ZVJlbW90ZVBhZ2VBY2Nlc3NpYmls
aXR5T2Zmc2V0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6SW50UG9pbnQpCit7
CisgICAgLy8gRklYTUU6IEltcGxlbWVudAorfQorCit2b2lkIFdlYlBhZ2U6OnJlZ2lzdGVyUmVt
b3RlRnJhbWVBY2Nlc3NpYmlsaXR5VG9rZW5zKHBpZF90LCBzdGQ6OnNwYW48Y29uc3QgdWludDhf
dD4pCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudAorfQorCiB2b2lkIFdlYlBhZ2U6OnJlZ2lz
dGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VucyhzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4g
ZWxlbWVudFRva2VuLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pCiB7CiAgICAgTlNEYXRhICpl
bGVtZW50VG9rZW5EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmVsZW1lbnRUb2tlbi5kYXRh
KCkgbGVuZ3RoOmVsZW1lbnRUb2tlbi5zaXplKCldOwpAQCAtNjYyLDYgKzY3NCwxMiBAQCB2b2lk
IFdlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZAogICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiB9CiAKK1dl
YkNvcmU6OkludFBvaW50IFdlYlBhZ2U6OmFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCgp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4geyB9OworfQorCiBXS0FjY2Vz
c2liaWxpdHlXZWJQYWdlT2JqZWN0KiBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0
KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2Vi
UGFnZU9iamVjdEJhc2UuaAppbmRleCAzOWU5MGUzYzg5NWUuLjQ5NzAwNzBhNDU1ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0
eVdlYlBhZ2VPYmplY3RCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmgKQEAgLTQ1LDYgKzQ1LDgg
QEAgY2xhc3MgQVhDb3JlT2JqZWN0OwogICAgIFdlYkNvcmU6OkludFNpemUgbV9zaXplIFdURl9H
VUFSREVEX0JZX0xPQ0sobV9jYWNoZUxvY2spOwogICAgIFRocmVhZFNhZmVXZWFrUHRyPFdlYkNv
cmU6OkFYQ29yZU9iamVjdD4gbV9pc29sYXRlZFRyZWVSb290OwogI2VuZGlmCisKKyAgICBXZWJD
b3JlOjpJbnRQb2ludCBtX3JlbW90ZUZyYW1lT2Zmc2V0OwogICAgIFJldGFpblB0cjxpZD4gbV9w
YXJlbnQ7CiAgICAgYm9vbCBtX2hhc01haW5GcmFtZVBsdWdpbjsKIH0KQEAgLTU2LDkgKzU4LDEx
IEBAIGNsYXNzIEFYQ29yZU9iamVjdDsKIC0gKHZvaWQpc2V0SXNvbGF0ZWRUcmVlUm9vdDooTmFr
ZWRQdHI8V2ViQ29yZTo6QVhDb3JlT2JqZWN0Pilyb290OwogI2VuZGlmCiAtICh2b2lkKXNldFJl
bW90ZVBhcmVudDooaWQpcGFyZW50OworLSAodm9pZClzZXRSZW1vdGVGcmFtZU9mZnNldDooV2Vi
Q29yZTo6SW50UG9pbnQpb2Zmc2V0OwogLSAodm9pZClzZXRIYXNNYWluRnJhbWVQbHVnaW46KGJv
b2wpaGFzUGx1Z2luOwogCiAtIChpZClhY2Nlc3NpYmlsaXR5Um9vdE9iamVjdFdyYXBwZXI7CiAt
IChpZClhY2Nlc3NpYmlsaXR5Rm9jdXNlZFVJRWxlbWVudDsKKy0gKFdlYkNvcmU6OkludFBvaW50
KWFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldDsKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VP
YmplY3RCYXNlLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNj
ZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tCmluZGV4IDZmOTk1NDVhZWJmNS4uYmVjOGQ3
M2ZhYTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1t
CkBAIC0zNiw5ICszNiwxMSBAQAogI2ltcG9ydCAiV0tTdHJpbmdDRi5oIgogI2ltcG9ydCA8V2Vi
Q29yZS9BWE9iamVjdENhY2hlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50Lmg+CisjaW1w
b3J0IDxXZWJDb3JlL0ZyYW1lVHJlZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbEZyYW1lLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsRnJhbWVWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Bh
Z2UuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUmVtb3RlRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
U2Nyb2xsVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxiYXIuaD4KIApAQCAtNTcsMTEg
KzU5LDE3IEBAIG5hbWVzcGFjZSBheCA9IFdlYkNvcmU6OkFjY2Vzc2liaWxpdHk7CiAgICAgaWYg
KCFwYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8qIGxvY2FsTWFpbkZy
YW1lID0gZHluYW1pY0Rvd25jYXN0PFdlYkNvcmU6OkxvY2FsRnJhbWU+KHBhZ2UtPm1haW5GcmFt
ZSgpKTsKLSAgICBpZiAoIWxvY2FsTWFpbkZyYW1lIHx8ICFsb2NhbE1haW5GcmFtZS0+ZG9jdW1l
bnQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKGF1dG8qIGxvY2FsTWFpbkZy
YW1lID0gZHluYW1pY0Rvd25jYXN0PFdlYkNvcmU6OkxvY2FsRnJhbWU+KHBhZ2UtPm1haW5GcmFt
ZSgpKSkgeworICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBsb2NhbE1haW5GcmFtZS0+ZG9j
dW1lbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBkb2N1bWVudC0+YXhPYmplY3RDYWNoZSgpOwor
ICAgIH0gZWxzZSBpZiAoYXV0byogcmVtb3RlTWFpbkZyYW1lID0gZHluYW1pY0Rvd25jYXN0PFdl
YkNvcmU6OlJlbW90ZUZyYW1lPihwYWdlLT5tYWluRnJhbWUoKSkpIHsKKyAgICAgICAgYXV0byYg
dHJlZSA9IHJlbW90ZU1haW5GcmFtZS0+dHJlZSgpOworICAgICAgICBhdXRvKiBmaXJzdEZyYW1l
ID0gZHluYW1pY0Rvd25jYXN0PFdlYkNvcmU6OkxvY2FsRnJhbWU+KHRyZWUuZmlyc3RDaGlsZCgp
KTsKKyAgICAgICAgYXV0byogZG9jdW1lbnQgPSBmaXJzdEZyYW1lID8gZmlyc3RGcmFtZS0+ZG9j
dW1lbnQoKSA6IG51bGxwdHI7CisgICAgICAgIHJldHVybiBkb2N1bWVudCA/IGRvY3VtZW50LT5h
eE9iamVjdENhY2hlKCkgOiBudWxscHRyOworICAgIH0KIAotICAgIHJldHVybiBsb2NhbE1haW5G
cmFtZS0+ZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpOworICAgIHJldHVybiBudWxscHRyOwog
fQogCiAtIChpZClhY2Nlc3NpYmlsaXR5UGx1Z2luT2JqZWN0CkBAIC0xNTIsNiArMTYwLDE3IEBA
IG5hbWVzcGFjZSBheCA9IFdlYkNvcmU6OkFjY2Vzc2liaWxpdHk7CiAgICAgbV9oYXNNYWluRnJh
bWVQbHVnaW4gPSBoYXNQbHVnaW47CiB9CiAKKy0gKHZvaWQpc2V0UmVtb3RlRnJhbWVPZmZzZXQ6
KFdlYkNvcmU6OkludFBvaW50KW9mZnNldAoreworICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkp
OworICAgIG1fcmVtb3RlRnJhbWVPZmZzZXQgPSBvZmZzZXQ7Cit9CisKKy0gKFdlYkNvcmU6Oklu
dFBvaW50KWFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldAoreworICAgIHJldHVybiBtX3Jl
bW90ZUZyYW1lT2Zmc2V0OworfQorCiAtICh2b2lkKXNldFJlbW90ZVBhcmVudDooaWQpcGFyZW50
CiB7CiAgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IDk2ZWQ2NGFkYmNmZi4u
NWY5Yjg4MGM4MGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtMTIzLDE2ICsxMjMsMTIgQEAgdm9pZCBXZWJQYWdlOjpw
bGF0Zm9ybUluaXRpYWxpemVBY2Nlc3NpYmlsaXR5KCkKICAgICAvLyBDdXJyZW50bHksIGl0IGlz
IGFsc28gbmVlZGVkIHRvIGFsbG9jYXRlIGFuZCBpbml0aWFsaXplIGFuIE5TQXBwbGljYXRpb24g
b2JqZWN0LgogICAgIFtOU0FwcGxpY2F0aW9uIF9hY2Nlc3NpYmlsaXR5SW5pdGlhbGl6ZV07CiAK
LSAgICBhdXRvIG1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCA9IGFkb3B0TlMoW1tXS0FjY2Vzc2li
aWxpdHlXZWJQYWdlT2JqZWN0IGFsbG9jXSBpbml0XSk7Ci0KICAgICAvLyBHZXQgdGhlIHBpZCBm
b3IgdGhlIHN0YXJ0aW5nIHByb2Nlc3MuCiAgICAgcGlkX3QgcGlkID0gV2ViQ29yZTo6cHJlc2Vu
dGluZ0FwcGxpY2F0aW9uUElEKCk7Ci0gICAgaWYgKFttb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihhY2Nlc3NpYmlsaXR5U2V0UHJlc2VudGVyUHJv
Y2Vzc0lkZW50aWZpZXI6KV0pCi0gICAgICAgIFsoaWQpbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50
LmdldCgpIGFjY2Vzc2liaWxpdHlTZXRQcmVzZW50ZXJQcm9jZXNzSWRlbnRpZmllcjpwaWRdOwot
ICAgIFttb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgc2V0V2ViUGFnZTp0aGlzXTsKLSAgICBtX21v
Y2tBY2Nlc3NpYmlsaXR5RWxlbWVudCA9IFdURk1vdmUobW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50
KTsKLQotICAgIGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKGFjY2Vzc2liaWxpdHlS
ZW1vdGVUb2tlbkRhdGEoKSk7CisgICAgY3JlYXRlTW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50KHBp
ZCk7CisgICAgUmVmUHRyIGxvY2FsTWFpbkZyYW1lID0gZHluYW1pY0Rvd25jYXN0PExvY2FsRnJh
bWU+KG1fcGFnZS0+bWFpbkZyYW1lKCkpOworICAgIGlmIChsb2NhbE1haW5GcmFtZSkKKyAgICAg
ICAgYWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oYWNjZXNzaWJpbGl0eVJlbW90ZVRv
a2VuRGF0YSgpLCBsb2NhbE1haW5GcmFtZS0+ZnJhbWVJRCgpKTsKIAogICAgIC8vIENsb3NlIE1h
Y2ggY29ubmVjdGlvbiB0byBMYXVuY2ggU2VydmljZXMuCiAjaWYgSEFWRShMU19TRVJWRVJfQ09O
TkVDVElPTl9TVEFUVVNfUkVMRUFTRV9OT1RJRklDQVRJT05TX01BU0spCkBAIC0xNDQsOSArMTQw
LDIwIEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplQWNjZXNzaWJpbGl0eSgpCiAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmV2b2tlTGF1bmNoU2VydmljZXNTYW5kYm94RXh0
ZW5zaW9uKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6Y3JlYXRlTW9ja0FjY2Vzc2liaWxpdHlFbGVt
ZW50KHBpZF90IHBpZCkKK3sKKyAgICBhdXRvIG1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCA9IGFk
b3B0TlMoW1tXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0IGFsbG9jXSBpbml0XSk7CisKKyAg
ICBpZiAoW21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKGFjY2Vzc2liaWxpdHlTZXRQcmVzZW50ZXJQcm9jZXNzSWRlbnRpZmllcjopXSkKKyAgICAg
ICAgWyhpZCltb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQuZ2V0KCkgYWNjZXNzaWJpbGl0eVNldFBy
ZXNlbnRlclByb2Nlc3NJZGVudGlmaWVyOnBpZF07CisgICAgW21vY2tBY2Nlc3NpYmlsaXR5RWxl
bWVudCBzZXRXZWJQYWdlOnRoaXNdOworICAgIG1fbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50ID0g
V1RGTW92ZShtb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQpOworfQorCiB2b2lkIFdlYlBhZ2U6OnBs
YXRmb3JtUmVpbml0aWFsaXplKCkKIHsKLSAgICBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVU
b2tlbihhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCkpOworICAgIFJlZiBmcmFtZSA9IG1f
cGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgYWNjZXNz
aWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oYWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0YSgp
LCBmcmFtZS0+ZnJhbWVJRCgpKTsKIH0KIAogUmV0YWluUHRyPE5TRGF0YT4gV2ViUGFnZTo6YWNj
ZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0YSgpIGNvbnN0CkBAIC00NjksMTIgKzQ3NiwyNyBAQCBi
b29sIFdlYlBhZ2U6OnBlcmZvcm1Ob25FZGl0aW5nQmVoYXZpb3JGb3JTZWxlY3Rvcihjb25zdCBT
dHJpbmcmIHNlbGVjdG9yLCBLZXlibwogICAgIHJldHVybiBkaWRQZXJmb3JtQWN0aW9uOwogfQog
Cit2b2lkIFdlYlBhZ2U6OnVwZGF0ZVJlbW90ZVBhZ2VBY2Nlc3NpYmlsaXR5T2Zmc2V0KFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpJbnRQb2ludCBvZmZzZXQpCit7
CisgICAgW2FjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSBzZXRSZW1vdGVGcmFtZU9mZnNldDpv
ZmZzZXRdOworfQorCit2b2lkIFdlYlBhZ2U6OnJlZ2lzdGVyUmVtb3RlRnJhbWVBY2Nlc3NpYmls
aXR5VG9rZW5zKHBpZF90IHBpZCwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGVsZW1lbnRUb2tl
bikKK3sKKyAgICBOU0RhdGEgKmVsZW1lbnRUb2tlbkRhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0
ZXM6ZWxlbWVudFRva2VuLmRhdGEoKSBsZW5ndGg6ZWxlbWVudFRva2VuLnNpemUoKV07CisgICAg
YXV0byByZW1vdGVFbGVtZW50ID0gZWxlbWVudFRva2VuRGF0YS5sZW5ndGggPyBhZG9wdE5TKFtb
TlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlFbGVtZW50IGFsbG9jXSBpbml0V2l0aFJlbW90ZVRva2Vu
OmVsZW1lbnRUb2tlbkRhdGFdKSA6IG5pbDsKKworICAgIGNyZWF0ZU1vY2tBY2Nlc3NpYmlsaXR5
RWxlbWVudChwaWQpOworICAgIFthY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkgc2V0UmVtb3Rl
UGFyZW50OnJlbW90ZUVsZW1lbnQuZ2V0KCldOworfQorCiB2b2lkIFdlYlBhZ2U6OnJlZ2lzdGVy
VUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VucyhzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZWxl
bWVudFRva2VuLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gd2luZG93VG9rZW4pCiB7CiAgICAg
TlNEYXRhICplbGVtZW50VG9rZW5EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmVsZW1lbnRU
b2tlbi5kYXRhKCkgbGVuZ3RoOmVsZW1lbnRUb2tlbi5zaXplKCldOwogICAgIE5TRGF0YSAqd2lu
ZG93VG9rZW5EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOndpbmRvd1Rva2VuLmRhdGEoKSBs
ZW5ndGg6d2luZG93VG9rZW4uc2l6ZSgpXTsKICAgICBhdXRvIHJlbW90ZUVsZW1lbnQgPSBlbGVt
ZW50VG9rZW5EYXRhLmxlbmd0aCA/IGFkb3B0TlMoW1tOU0FjY2Vzc2liaWxpdHlSZW1vdGVVSUVs
ZW1lbnQgYWxsb2NdIGluaXRXaXRoUmVtb3RlVG9rZW46ZWxlbWVudFRva2VuRGF0YV0pIDogbmls
OwogICAgIGF1dG8gcmVtb3RlV2luZG93ID0gd2luZG93VG9rZW5EYXRhLmxlbmd0aCA/IGFkb3B0
TlMoW1tOU0FjY2Vzc2liaWxpdHlSZW1vdGVVSUVsZW1lbnQgYWxsb2NdIGluaXRXaXRoUmVtb3Rl
VG9rZW46d2luZG93VG9rZW5EYXRhXSkgOiBuaWw7CisKICAgICBbcmVtb3RlRWxlbWVudCBzZXRX
aW5kb3dVSUVsZW1lbnQ6cmVtb3RlV2luZG93LmdldCgpXTsKICAgICBbcmVtb3RlRWxlbWVudCBz
ZXRUb3BMZXZlbFVJRWxlbWVudDpyZW1vdGVXaW5kb3cuZ2V0KCldOwogCkBAIC01MTYsNiArNTM4
LDExIEBAIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QqIFdlYlBhZ2U6OmFjY2Vzc2liaWxp
dHlSZW1vdGVPYmplY3QoKQogICAgIHJldHVybiBtX21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudC5n
ZXQoKTsKIH0KIAorV2ViQ29yZTo6SW50UG9pbnQgV2ViUGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90
ZUZyYW1lT2Zmc2V0KCkKK3sKKyAgICByZXR1cm4gW21fbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50
IGFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldF07Cit9CisKICNpZiBFTkFCTEUoQUNDRVNT
SUJJTElUWV9JU09MQVRFRF9UUkVFKQogdm9pZCBXZWJQYWdlOjpjYWNoZUFYUG9zaXRpb24oY29u
c3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgcG9pbnQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaAppbmRleCAwNjE0YmNmN2FmNWMuLmJhODM2ODA2NDUzMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC02NSw2ICs2NSw5IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9TY3JlZW5Qcm9wZXJ0aWVzLmg+CiAjaW5jbHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4K
ICNpbmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgorCitPQkpDX0NMQVNTIE5TTXV0YWJsZURp
Y3Rpb25hcnk7CisKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQpAQCAtODcsNiArOTAsNyBA
QAogI2luY2x1ZGUgIldlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5oIgogI2VuZGlmCiAKKwogbmFt
ZXNwYWNlIEFQSSB7CiBjbGFzcyBPYmplY3Q7CiB9CkBAIC01MTEsNiArNTE1LDkgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHBsYXRmb3JtU2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVsKTsKIAogICAgIHZv
aWQgc2V0RW5oYW5jZWRBY2Nlc3NpYmlsaXR5KGJvb2wpOworI2lmIFBMQVRGT1JNKENPQ09BKQor
ICAgIHZvaWQgYmluZEFjY2Vzc2liaWxpdHlGcmFtZVdpdGhEYXRhKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKKyNlbmRpZgogCiAgICAgdm9pZCBz
dGFydE1lbW9yeVNhbXBsZXIoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IGRvdWJsZSk7CiAgICAgdm9pZCBzdG9wTWVtb3J5U2FtcGxlcigpOwpAQCAtODI2
LDYgKzgzMyw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgSGFzaENvdW50
ZWRTZXQ8U3RyaW5nPiBtX3BlbmRpbmdQYXN0ZWJvYXJkV3JpdGVDb3VudHM7CiAgICAgc3RkOjpv
cHRpb25hbDxhdWRpdF90b2tlbl90PiBtX2F1ZGl0VG9rZW5Gb3JTZWxmOworICAgIFJldGFpblB0
cjxOU011dGFibGVEaWN0aW9uYXJ5PiBtX2FjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZVRva2VuQ2Fj
aGU7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggOTliNDAyYWYxMWNhLi5k
Nzc1ZmU3ZDM4ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCkBAIC02OSw2ICs2OSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVn
YWN5UmVjZWl2ZXIgTm90UmVmQ291bnRlZCB7CiAgICAgU2V0VGV4dENoZWNrZXJTdGF0ZShzdHJ1
Y3QgV2ViS2l0OjpUZXh0Q2hlY2tlclN0YXRlIHRleHRDaGVja2VyU3RhdGUpCiAKICAgICBTZXRF
bmhhbmNlZEFjY2Vzc2liaWxpdHkoYm9vbCBmbGFnKQorICAgIEJpbmRBY2Nlc3NpYmlsaXR5RnJh
bWVXaXRoRGF0YShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RkOjpzcGFuPGNv
bnN0IHVpbnQ4X3Q+IGRhdGEpOwogCiAgICAgR2FyYmFnZUNvbGxlY3RKYXZhU2NyaXB0T2JqZWN0
cygpCiAgICAgU2V0SmF2YVNjcmlwdEdhcmJhZ2VDb2xsZWN0b3JUaW1lckVuYWJsZWQoYm9vbCBl
bmFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJv
Y2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3ND
b2NvYS5tbQppbmRleCBjNTM4NTdmYmUxZDQuLjExNjA2ZTk2Mzk1NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC0yMTMsNiAr
MjEzLDE2IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1TZXRDYWNoZU1vZGVsKENhY2hlTW9k
ZWwpCiB7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzczo6YmluZEFjY2Vzc2liaWxpdHlGcmFtZVdpdGhE
YXRhKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdGQ6OnNwYW48Y29uc3QgdWlu
dDhfdD4gZGF0YSkKK3sKKyAgICBpZiAoIW1fYWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lVG9rZW5D
YWNoZSkKKyAgICAgICAgbV9hY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVUb2tlbkNhY2hlID0gYWRv
cHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKworICAgIGF1dG8gZnJh
bWVJbnQgPSBmcmFtZUlELm9iamVjdCgpLnRvVUludDY0KCk7CisgICAgTlNEYXRhICpuc0RhdGEg
PSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5kYXRhKCkgbGVuZ3RoOmRhdGEuc2l6ZSgpXTsK
KyAgICBbbV9hY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVUb2tlbkNhY2hlIHNldE9iamVjdDpuc0Rh
dGEgZm9yS2V5OkAoZnJhbWVJbnQpXTsKK30KKwogaWQgV2ViUHJvY2Vzczo6YWNjZXNzaWJpbGl0
eUZvY3VzZWRVSUVsZW1lbnQoKQogewogICAgIGF1dG8gcmV0cmlldmVGb2N1c2VkVUlFbGVtZW50
RnJvbU1haW5UaHJlYWQgPSBbXSAoKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAy
MWUyMWYwOGJkNjQuLmI0Y2YyODJjMThjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBA
IC0yMjUsNiArMjI1LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgUmVtb3RlQVhPYmplY3RS
ZWYgYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpIGZpbmFsIHsgcmV0dXJuIDA7IH0KKyAgICBX
ZWJDb3JlOjpJbnRQb2ludCBhY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKSBmaW5hbCB7
IHJldHVybiB7IH07IH0KICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQog
ICAgIHZvaWQgc2V0QVhJc29sYXRlZFRyZWVSb290KFdlYkNvcmU6OkFYQ29yZU9iamVjdCopIGZp
bmFsIHsgfQogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>469914</attachid>
            <date>2024-02-15 23:22:15 -0800</date>
            <delta_ts>2024-02-15 23:58:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-268804-20240215232213.patch</filename>
            <type>text/plain</type>
            <size>118493</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">RnJvbSBlOTExMjRiNmZhNDBkMmUzODM3NGI2YWVmODhmZGE5YjM0YjAyOTBkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpcyBGbGVpemFjaCA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4K
RGF0ZTogVGh1LCAxNSBGZWIgMjAyNCAxMjo0MDozOCAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIEFY
OiBTdXBwb3J0IHNpdGUgaXNvbGF0aW9uIGZvciBWb2ljZU92ZXIKIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjg4MDQgcmRhcjovLzk5NjY1NTYxCgpSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KCkluaXRpYWwgc3VwcG9ydCBmb3Igc2l0ZSBpc29sYXRpb24gZm9y
IFZvaWNlT3Zlci4KCldoZW4gYSBzY3JvbGwgdmlldyBob3N0cyBhIFJlbW90ZUZyYW1lIGl0IGJp
bmRzIGl0c2VsZiB0byB0aGUgb3RoZXIgc2lkZSB0aHJvdWdoIGEgV2ViUGFnZSBtZXNzYWdlLgpU
aGlzIHRyYW5zZmVycyBkYXRhIHRva2VucyBzbyBBY2Nlc3NpYmlsaXR5IHJlbW90ZSBlbGVtZW50
cyBhcmUgY3JlYXRlZCBhbmQgaG9va2VkIHVwLgoKVGhlIGJvdW5kaW5nIGJveGVzIGluc2lkZSB0
aGUgc3ViIGZyYW1lcyBuZWVkIHRvIGhhdmUgdGhlIGluaXRpYWwgb2Zmc2V0IGFwcGxpZWQgYW5k
IHRoZW4gbmVlZCB0byBiZSBjb252ZXJ0ZWQKZWFjaCBzdGVwIHVwIHRoZSBjaGFpbiB0byBhY2Nv
dW50IGZvciBzY3JvbGwgb2Zmc2V0cyB0aGF0IG9ubHkgZWFjaCBwcm9jZXNzIGtub3dzIGFib3V0
LgoKKiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dDoKKiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWENvcmVPYmplY3QuaDoKKFdlYkNvcmU6OmFjY2Vzc2liaWxpdHlSb2xlVG9TdHJpbmcpOgoo
V2ViQ29yZTo6QVhDb3JlT2JqZWN0Ojppc1JlbW90ZUZyYW1lIGNvbnN0KToKKiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcDoKKFdlYkNvcmU6OnN0cmVhbUFYQ29yZU9i
amVjdCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoK
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmNyZWF0ZSk6CihXZWJDb3JlOjpBWE9iamVjdENhY2hl
OjpvblJlbW90ZUZyYW1lSW5pdGlhbGl6ZWQpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5jcHA6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZWxhdGl2
ZUZyYW1lIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnJlbW90ZUZyYW1l
T2Zmc2V0IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW1vdGVGcmFtZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJh
bWVDbGllbnQuaC4KKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6Y3JlYXRlKToK
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6QWNjZXNzaWJpbGl0eVJlbW90ZUZy
YW1lKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6ZWxlbWVudFJlY3QgY29u
c3QpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbW90ZUZy
YW1lLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVDbGllbnQu
aC4KKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkQXR0YWNobWVu
dENoaWxkcmVuKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENoaWxk
cmVuKToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpkZXRhY2hSZW1vdGVQ
YXJ0cyk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6Y2xlYXJDaGlsZHJlbik6
CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkUmVtb3RlRnJhbWVDaGlsZCk6
CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkQ2hpbGRyZW4pOgooV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OndlYkFyZWFPYmplY3QgY29uc3QpOgooV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmRvY3VtZW50IGNvbnN0KToKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpwYXJlbnRPYmplY3QgY29uc3QpOgoqIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaDoKKiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcDoKKFdl
YkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKFdlYkNvcmU6
OkFYSXNvbGF0ZWRPYmplY3Q6OnNldFByb3BlcnR5KToKKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmpl
Y3Q6OnJlbW90ZUZyYW1lT2Zmc2V0IGNvbnN0KToKKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OnJlbGF0aXZlRnJhbWUgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHA6CihXZWJDb3JlOjpBWElzb2xhdGVk
VHJlZTo6dXBkYXRlTm9kZVByb3BlcnRpZXMpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMubW06CihXZWJDb3Jl
OjpBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplUGxhdGZvcm1Qcm9wZXJ0aWVzKToKKFdlYkNv
cmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50IGNvbnN0KToK
KiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFj
Lm1tOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lOjpnZW5lcmF0ZVJlbW90ZVRv
a2VuIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6aW5pdGlhbGl6
ZVBsYXRmb3JtRWxlbWVudFdpdGhSZW1vdGVUb2tlbik6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
OjpjcmVhdGVQbGF0Zm9ybVJvbGVNYXApOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbToKKG1ha2VOU0FycmF5KToK
KiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgcm9sZV0pOgoo
LVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBpc0VtcHR5R3JvdXBdKToKKC1bV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgcm9sZURlc2NyaXB0aW9uXSk6CigtW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIF90cmFuc2Zvcm1TcGVjaWFsQ2hpbGRyZW5DYXNlczpdKToKKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
Ol0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5SGl0VGVz
dDpdKToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgQUxMT1dfREVQUkVDQVRFRF9J
TVBMRU1FTlRBVElPTlNfRU5EXSk6CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpmb3JQYXJhbWV0ZXI6XSk6CigtW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlJbmRleE9mQ2hpbGQ6XSk6CigtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZUNvdW50
Ol0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXJyYXlB
dHRyaWJ1dGVWYWx1ZXM6aW5kZXg6bWF4Q291bnQ6XSk6CiogU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHA6CihXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjphY2Nl
c3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQpOgoqIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUZyYW1lTG9hZGVyQ2xpZW50Lmg6CiogU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvY2FsRnJhbWVM
b2FkZXJDbGllbnQuaDoKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwOgooV2ViQ29yZTo6
UGFnZTo6c2hvdWxkVXBkYXRlQWNjZXNzaWJpbGl0eVJlZ2lvbnMgY29uc3QpOgoqIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuY3BwOgooV2ViQ29yZTo6UmVtb3RlRnJhbWU6OnVwZGF0
ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldCk6CihXZWJDb3JlOjpSZW1vdGVGcmFtZTo6
dW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyk6CihXZWJDb3JlOjpSZW1vdGVGcmFtZTo6
YmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMpOgoqIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVt
b3RlRnJhbWUuaDoKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lQ2xpZW50Lmg6Ciog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcDoKKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdl
UHJveHk6OnJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbik6CiogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaDoKKiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcDoKKFdlYktpdDo6V2ViRnJhbWVQcm94eTo6YmluZEFj
Y2Vzc2liaWxpdHlGcmFtZVdpdGhEYXRhKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJG
cmFtZVByb3h5Lmg6CiogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojpzd2FwVG9Qcm92aXNpb25hbFBhZ2UpOgooV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKToKKFdlYktpdDo6V2Vi
UGFnZVByb3h5Ojp1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQpOgoqIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MubW06CihXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5
V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQpOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW06CihXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9j
ZXNzQWNjZXNzaWJpbGl0eVRva2VuKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGxNYWMuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGxNYWMubW06CihXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5V2ViUHJv
Y2Vzc1Rva2VuUmVjZWl2ZWQpOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW06CihXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNj
ZXNzaWJpbGl0eVRva2VuKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0lt
cGwuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwubW06CihXZWJL
aXQ6OldlYlZpZXdJbXBsOjpzZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuKToKKiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNs
aWVudC5jcHA6CihXZWJLaXQ6OldlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQ6OmFjY2Vzc2liaWxp
dHlSZW1vdGVGcmFtZU9mZnNldCk6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuaDoKKiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuY3BwOgooV2ViS2l0OjpX
ZWJSZW1vdGVGcmFtZUNsaWVudDo6dW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyk6CihX
ZWJLaXQ6OldlYlJlbW90ZUZyYW1lQ2xpZW50Ojp1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxp
dHlPZmZzZXQpOgooV2ViS2l0OjpXZWJSZW1vdGVGcmFtZUNsaWVudDo6YmluZFJlbW90ZUFjY2Vz
c2liaWxpdHlGcmFtZXMpOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJSZW1vdGVGcmFtZUNsaWVudC5oOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKFdlYktpdDo6V2ViUGFnZTo6YWNjZXNzaWJpbGl0
eVRyYW5zZmVyUmVtb3RlVG9rZW4pOgooV2ViS2l0OjpXZWJQYWdlOjphY2Nlc3NpYmlsaXR5TWFu
YWdlUmVtb3RlRWxlbWVudFN0YXR1cyk6CihXZWJLaXQ6OldlYlBhZ2U6OmJpbmRSZW1vdGVBY2Nl
c3NpYmlsaXR5RnJhbWVzKToKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmg6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbjoKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bToKKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplQWNjZXNzaWJpbGl0eSk6CihX
ZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtUmVpbml0aWFsaXplKToKKFdlYktpdDo6V2ViUGFnZTo6
YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KToKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaDoKKiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9i
amVjdEJhc2UubW06CigtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlIGF4T2JqZWN0
Q2FjaGVdKToKKC1bV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2Ugc2V0UmVtb3RlRnJh
bWVPZmZzZXQ6XSk6CigtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlIGFjY2Vzc2li
aWxpdHlSZW1vdGVGcmFtZU9mZnNldF0pOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tOgooV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybUluaXRpYWxp
emVBY2Nlc3NpYmlsaXR5KToKKFdlYktpdDo6V2ViUGFnZTo6Y3JlYXRlTW9ja0FjY2Vzc2liaWxp
dHlFbGVtZW50KToKKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1SZWluaXRpYWxpemUpOgooV2Vi
S2l0OjpXZWJQYWdlOjp1cGRhdGVSZW1vdGVQYWdlQWNjZXNzaWJpbGl0eU9mZnNldCk6CihXZWJL
aXQ6OldlYlBhZ2U6OnJlZ2lzdGVyUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5VG9rZW5zKToKKFdl
YktpdDo6V2ViUGFnZTo6cmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKToKKFdl
YktpdDo6V2ViUGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KToKKiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJQcm9jZXNzQ29jb2EubW06CihXZWJLaXQ6OldlYlByb2Nlc3M6OmJpbmRBY2Nlc3NpYmls
aXR5RnJhbWVXaXRoRGF0YSk6CiogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKLS0tCiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dCAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogLi4uL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIHwgICA0ICsKIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhDb3JlT2JqZWN0LmggICB8ICAxMiArKwogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WExvZ2dlci5jcHAgICAgIHwgICAzICsKIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5jcHAgICB8ICAxNSArLQogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmggIHwgICAyICsKIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhSZW1vdGVG
cmFtZS5jcHAgICB8ICA0MiArKysrKwogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFJl
bW90ZUZyYW1lLmggIHwgIDYxICsrKysrKysrCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcCAgICAgfCAgMjMgKystCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmggICAgICAgfCAgIDUgKwogLi4uL0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
Y3BwICAgICAgICAgICAgIHwgICA0ICstCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldy5jcHAgfCAgNjIgKysrKysrKy0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlTY3JvbGxWaWV3LmggICB8ICAgNiArLQogLi4uL2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaS5jcHAgICAgICAgIHwgICAxICsKIC4uLi9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJJT1MubW0gICB8ICAgMSArCiAuLi4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmpl
Y3QuY3BwICAgICAgICAgfCAgMzQgKysrKy0KIC4uLi9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9i
amVjdC5oICAgICAgICAgICB8ICAgOCArLQogLi4uL2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJl
ZS5jcHAgICAgICAgICAgIHwgIDYxICsrKy0tLS0tCiAuLi4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRUcmVlLmggICAgICAgICAgICAgfCAgMjkgKysrKwogLi4uL2lzb2xhdGVkdHJlZS9tYWMvQVhJ
c29sYXRlZE9iamVjdE1hYy5tbSAgIHwgICA3ICsKIC4uLi9tYWMvQWNjZXNzaWJpbGl0eU9iamVj
dE1hYy5tbSAgICAgICAgICAgICB8ICAyNiArKysrCiAuLi4vbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyQmFzZS5tbSAgfCAgIDkgKy0KIC4uLi9tYWMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJNYWMubW0gICB8IDE0MyArKysrKysrKysrKystLS0tLS0KIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwICAgICAgICB8ICAgNSArCiAuLi4vV2ViQ29yZS9s
b2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oICAgfCAgIDEgKwogLi4uL1dlYkNvcmUvbG9h
ZGVyL0xvY2FsRnJhbWVMb2FkZXJDbGllbnQuaCAgIHwgICAxICsKIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAgICAgICAgICAgICAgICAgICB8ICAxMSArLQogU291cmNlL1dlYkNvcmUvcGFn
ZS9SZW1vdGVGcmFtZS5jcHAgICAgICAgICAgIHwgIDE1ICsrCiBTb3VyY2UvV2ViQ29yZS9wYWdl
L1JlbW90ZUZyYW1lLmggICAgICAgICAgICAgfCAgIDQgKwogU291cmNlL1dlYkNvcmUvcGFnZS9S
ZW1vdGVGcmFtZUNsaWVudC5oICAgICAgIHwgICA0ICsKIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1BhZ2VDbGllbnQuaCAgICAgICAgICB8ICAgMyArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvUHJv
dmlzaW9uYWxQYWdlUHJveHkuY3BwIHwgICAyICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9Qcm92
aXNpb25hbFBhZ2VQcm94eS5oICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkZyYW1lUHJveHkuY3BwICAgICB8ICAgOSArKwogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
RnJhbWVQcm94eS5oICAgICAgIHwgICAyICsKIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAgICAgICB8ICAyNCArKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oICAgICAgICB8ICAgNCArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluIHwgICA0ICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MuaCAgfCAgIDIgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5tbSB8ICAgMiArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbSAgIHwgICA3ICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGxNYWMuaCAgfCAgIDIgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbE1hYy5tbSB8ICAgNCArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94
eU1hYy5tbSAgIHwgICA0ICstCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0lt
cGwuaCAgICAgfCAgIDMgKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3SW1w
bC5tbSAgICB8ICAgOCArLQogLi4uL1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuY3BwICAgICAg
ICAgICAgIHwgICA2ICsKIC4uLi9XZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmggICAgICAgICAg
ICAgICB8ICAgMSArCiAuLi4vV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuY3Bw
ICAgfCAgMzIgKysrKwogLi4uL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90ZUZyYW1lQ2xpZW50Lmgg
ICAgIHwgICA0ICsKIC4uLi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1t
ICB8ICA0NiArKysrKy0KIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwICB8ICAxMCArKwogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
ICAgIHwgIDExICstCiAuLi4vV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4g
ICAgfCAgIDMgKwogLi4uL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSAgICAg
IHwgIDIyICsrLQogLi4uL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oICAg
IHwgICA0ICsKIC4uLi9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0gICB8
ICAyNyArKystCiAuLi4vV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tICAgICAg
fCAgNDUgKysrKy0tCiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oICAgICAg
ICAgfCAgIDggKwogLi4uL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4g
IHwgICAxICsKIC4uLi9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSAgICAgICB8
ICAxMCArKwogLi4uL21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIHwg
ICAxICsKIDYyIGZpbGVzIGNoYW5nZWQsIDc2MSBpbnNlcnRpb25zKCspLCAxNTIgZGVsZXRpb25z
KC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFJl
bW90ZUZyYW1lLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQVhSZW1vdGVGcmFtZS5oCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAxZjU3YjlhYTBhMzQuLmE1
MGZlODk0OTNkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTUyNSw2ICs1MjUsNyBAQCBhY2Nlc3NpYmls
aXR5L0FYR2VvbWV0cnlNYW5hZ2VyLmNwcAogYWNjZXNzaWJpbGl0eS9BWEltYWdlLmNwcAogYWNj
ZXNzaWJpbGl0eS9BWExvZ2dlci5jcHAKIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAK
K2FjY2Vzc2liaWxpdHkvQVhSZW1vdGVGcmFtZS5jcHAKIGFjY2Vzc2liaWxpdHkvQVhUZXh0TWFy
a2VyLmNwcAogYWNjZXNzaWJpbGl0eS9BWFRleHRSdW4uY3BwCiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlBUklBR3JpZC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyYTdlYzg2ODAwMDIuLjY3ZGZjMGVkYjQ2MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtODk2MCw2ICs4OTYwLDggQEAKIAkJMjk0ODlGQzUxMkMwMEYwMzAwRDgzRjBGIC8qIEFjY2Vz
c2liaWxpdHlTY3JvbGxWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5
NDk4NjgxMTk1MzQxOTQwMDcyRDJCRCAvKiBUZXh0VW5kb0luc2VydGlvbk1hcmt1cE1hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRleHRVbmRvSW5zZXJ0aW9u
TWFya3VwTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTRCREFFNjIxRkY1
ODJBMDA1MTA3N0IgLyogQWNjZXNzaWJpbGl0eU9iamVjdENvY29hLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eU9iamVjdENvY29hLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOTU1Q0YxMTJCMjMwQUU2MDAwMUJGODIgLyog
QVhSZW1vdGVGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBWFJlbW90ZUZyYW1lLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5NTVDRjEyMkIyMzBBRTYwMDAxQkY4MiAvKiBBWFJlbW90
ZUZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFYUmVtb3RlRnJhbWUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyOTdCRTNEOTE2QzA0M0Q4MDAzMzE2QkQgLyogUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMjk4MUFCQzQxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlNYXRoTUxF
bGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk4MUNBOUQxMzE4MjJFQzAwRDEy
RjJBIC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nl
c3NpYmlsaXR5QVJJQUdyaWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjM0
NDUsNiArMjM0NDcsOCBAQAogCQkJCUMwNDkzRUI3MjQ0Njk5RTQwMDlBQUM4MCAvKiBBWExvZ2dl
ci5oICovLAogCQkJCTI5ODFDQUFGMTMxODIyRUMwMEQxMkYyQSAvKiBBWE9iamVjdENhY2hlLmNw
cCAqLywKIAkJCQkyOUE4MTIxQTBGQkI5QzFEMDA1MTAyOTMgLyogQVhPYmplY3RDYWNoZS5oICov
LAorCQkJCTI5NTVDRjEyMkIyMzBBRTYwMDAxQkY4MiAvKiBBWFJlbW90ZUZyYW1lLmNwcCAqLywK
KwkJCQkyOTU1Q0YxMTJCMjMwQUU2MDAwMUJGODIgLyogQVhSZW1vdGVGcmFtZS5oICovLAogCQkJ
CUMwRTIwOEExMjkzNzlDNkYwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXIuY3BwICovLAogCQkJCUMw
RTIwOEEwMjkzNzlDNkUwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXIuaCAqLywKIAkJCQk0OEM0RTgz
QzJCMzREODM4MDA4MzQ2MEEgLyogQVhUZXh0UnVuLmNwcCAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhDb3JlT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYQ29yZU9iamVjdC5oCmluZGV4IDQ0MTA4NGVjYjgwNS4uM2ZiYzdmOGRi
MjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYQ29yZU9iamVj
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhDb3JlT2JqZWN0LmgKQEAg
LTIwNSw2ICsyMDUsNyBAQCBlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlSb2xlIHsKICAgICBQcm9n
cmVzc0luZGljYXRvciwKICAgICBSYWRpb0J1dHRvbiwKICAgICBSYWRpb0dyb3VwLAorICAgIFJl
bW90ZUZyYW1lLAogICAgIFJvd0hlYWRlciwKICAgICBSb3csCiAgICAgUm93R3JvdXAsCkBAIC00
NDIsNiArNDQzLDggQEAgQUxXQVlTX0lOTElORSBTdHJpbmcgYWNjZXNzaWJpbGl0eVJvbGVUb1N0
cmluZyhBY2Nlc3NpYmlsaXR5Um9sZSByb2xlKQogICAgICAgICByZXR1cm4gIlJhZGlvQnV0dG9u
Il9zOwogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvR3JvdXA6CiAgICAgICAgIHJl
dHVybiAiUmFkaW9Hcm91cCJfczsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSZW1vdGVG
cmFtZToKKyAgICAgICAgcmV0dXJuICJSZW1vdGVGcmFtZSJfczsKICAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpSb3dIZWFkZXI6CiAgICAgICAgIHJldHVybiAiUm93SGVhZGVyIl9zOwogICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJvdzoKQEAgLTgxNSw2ICs4MTgsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93SW5zdGFuY2UoKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbElu
c3RhbmNlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0FYSXNvbGF0ZWRPYmplY3RJ
bnN0YW5jZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBWFJlbW90ZUZyYW1lKCkg
Y29uc3QgPSAwOwogCiAgICAgYm9vbCBpc0hlYWRpbmcoKSBjb25zdCB7IHJldHVybiByb2xlVmFs
dWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6SGVhZGluZzsgfQogICAgIHZpcnR1YWwgYm9vbCBp
c0xpbmsoKSBjb25zdCA9IDA7CkBAIC05MTksNiArOTIzLDEyIEBAIHB1YmxpYzoKICAgICBib29s
IGlzVHJlZUdyaWQoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5
Um9sZTo6VHJlZUdyaWQ7IH0KICAgICBib29sIGlzVHJlZUl0ZW0oKSBjb25zdCB7IHJldHVybiBy
b2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUl0ZW07IH0KICAgICBib29sIGlz
U2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OlNjcm9sbEJhcjsgfQorICAgIGJvb2wgaXNSZW1vdGVGcmFtZSgpIGNvbnN0IHsgcmV0dXJu
IHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpSZW1vdGVGcmFtZTsgfQorI2lmIFBM
QVRGT1JNKENPQ09BKQorICAgIHZpcnR1YWwgUmV0YWluUHRyPGlkPiByZW1vdGVGcmFtZVBsYXRm
b3JtRWxlbWVudCgpIGNvbnN0ID0gMDsKKyNlbmRpZgorICAgIHZpcnR1YWwgYm9vbCBoYXNSZW1v
dGVGcmFtZUNoaWxkKCkgY29uc3QgPSAwOworCiAgICAgYm9vbCBpc0J1dHRvbigpIGNvbnN0Owog
ICAgIHZpcnR1YWwgYm9vbCBpc01ldGVyKCkgY29uc3QgPSAwOwogCkBAIC0xMTU5LDYgKzExNjks
OCBAQCBwdWJsaWM6CiAgICAgLy8gVmlld3BvcnQtcmVsYXRpdmUgbWVhbnMgdGhhdCB3aGVuIHRo
ZSBwYWdlIHNjcm9sbHMsIHRoZSBwb3J0aW9uIG9mIHRoZSBwYWdlIGluIHRoZSB2aWV3cG9ydCBj
aGFuZ2VzLCBhbmQgdGh1cwogICAgIC8vIGFueSB2aWV3cG9ydC1yZWxhdGl2ZSByZWN0cyBkbyB0
b28gKHNpbmNlIHRoZXkgYXJlIGVpdGhlciBjbG9zZXIgdG8gb3IgZmFydGhlciBmcm9tIHRoZSB2
aWV3cG9ydCBvcmlnaW4gYWZ0ZXIgdGhlIHNjcm9sbCkuCiAgICAgdmlydHVhbCBGbG9hdFBvaW50
IHNjcmVlblJlbGF0aXZlUG9zaXRpb24oKSBjb25zdCA9IDA7CisgICAgLy8gVGhpcyBpcyB0aGUg
YW1vdW50IHRoYXQgdGhlIFJlbW90ZUZyYW1lIGlzIG9mZnNldCBmcm9tIGl0cyBjb250YWluaW5n
IHBhcmVudC4KKyAgICB2aXJ0dWFsIEludFBvaW50IHJlbW90ZUZyYW1lT2Zmc2V0KCkgY29uc3Qg
PSAwOwogCiAgICAgdmlydHVhbCBGbG9hdFJlY3QgY29udmVydEZyYW1lVG9TcGFjZShjb25zdCBG
bG9hdFJlY3QmLCBBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlKSBjb25zdCA9IDA7CiAjaWYg
UExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYTG9nZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhMb2dnZXIuY3Bw
CmluZGV4IGI2ZTMwNmNkZGVjZi4uN2IzNWM4ZjlkMTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYTG9nZ2VyLmNwcApAQCAtODgzLDYgKzg4Myw5IEBAIHZvaWQgc3RyZWFtQVhD
b3JlT2JqZWN0KFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgQVhDb3JlT2JqZWN0JiBvYmplY3Qs
IGNvbnN0IE9wCiAgICAgaWYgKG9wdGlvbnMgJiBBWFN0cmVhbU9wdGlvbnM6OlJvbGUpCiAgICAg
ICAgIHN0cmVhbS5kdW1wUHJvcGVydHkoInJvbGUiLCBvYmplY3Qucm9sZVZhbHVlKCkpOwogCisg
ICAgaWYgKG9iamVjdC5yZW5kZXJlcigpKQorICAgICAgICBzdHJlYW0uZHVtcFByb3BlcnR5KCJy
ZW5kZXJOYW1lIiwgb2JqZWN0LnJlbmRlcmVyKCktPnJlbmRlck5hbWUoKSk7CisKICAgICBpZiAo
b3B0aW9ucyAmIEFYU3RyZWFtT3B0aW9uczo6UGFyZW50SUQpIHsKICAgICAgICAgYXV0byogcGFy
ZW50ID0gb2JqZWN0LnBhcmVudE9iamVjdFVuaWdub3JlZCgpOwogICAgICAgICBzdHJlYW0uZHVt
cFByb3BlcnR5KCJwYXJlbnRJRCIsIHBhcmVudCA/IHBhcmVudC0+b2JqZWN0SUQoKSA6IEFYSUQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2Fj
aGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApp
bmRleCAyODBmYWQ0ZjI3MDEuLjFhYzk1ZjJlYTZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVk
ZSAiQVhJc29sYXRlZE9iamVjdC5oIgogI2luY2x1ZGUgIkFYSXNvbGF0ZWRUcmVlLmgiCiAjaW5j
bHVkZSAiQVhMb2dnZXIuaCIKKyNpbmNsdWRlICJBWFJlbW90ZUZyYW1lLmgiCiAjaW5jbHVkZSAi
QVhUZXh0TWFya2VyLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmgiCiAjaW5j
bHVkZSAiQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oIgpAQCAtMTA1NCw3ICsxMDU1LDEwIEBA
IEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmNyZWF0ZShBY2Nlc3NpYmlsaXR5
Um9sZSByb2xlKQogICAgICAgICBicmVhazsgICAgICAgICAgICAKICAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpUYWJsZUhlYWRlckNvbnRhaW5lcjoKICAgICAgICAgb2JqID0gQWNjZXNzaWJp
bGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyOjpjcmVhdGUoKTsKLSAgICAgICAgYnJlYWs7ICAgCisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJlbW90ZUZyYW1lOgor
ICAgICAgICBvYmogPSBBWFJlbW90ZUZyYW1lOjpjcmVhdGUoKTsKKyAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyVGh1bWI6CiAgICAgICAgIG9iaiA9IEFj
Y2Vzc2liaWxpdHlTbGlkZXJUaHVtYjo6Y3JlYXRlKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTM1
MCw2ICsxMzU0LDE1IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlUmVjb21wdXRlQ2VsbFNs
b3RzKEFjY2Vzc2liaWxpdHlUYWJsZSYgYXhUYWJsZSkKICNlbmRpZgogfQogCit2b2lkIEFYT2Jq
ZWN0Q2FjaGU6Om9uUmVtb3RlRnJhbWVJbml0aWFsaXplZChBWFJlbW90ZUZyYW1lJiByZW1vdGVG
cmFtZSkKK3sKKyNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQorICAgIHVw
ZGF0ZUlzb2xhdGVkVHJlZShyZW1vdGVGcmFtZSwgQVhQcm9wZXJ0eU5hbWU6OlJlbW90ZUZyYW1l
UGxhdGZvcm1FbGVtZW50KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHJlbW90ZUZyYW1lKTsK
KyNlbmRpZgorfQorCiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKIHZv
aWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlUm93c3BhbkNoYW5nZWQoQWNjZXNzaWJpbGl0eVRhYmxl
Q2VsbCYgYXhDZWxsKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0
Q2FjaGUuaAppbmRleCBkMTA0OWNjOWJjMjEuLjM4Yzk4YTQ2ZWE5ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgY2xh
c3MgVGV4dFN0cmVhbTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBBWFJlbW90ZUZy
YW1lOwogY2xhc3MgQWNjZXNzaWJpbGl0eVRhYmxlOwogY2xhc3MgQWNjZXNzaWJpbGl0eVRhYmxl
Q2VsbDsKIGNsYXNzIERvY3VtZW50OwpAQCAtMjQ2LDYgKzI0Nyw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRlZmVyTm9kZUFkZGVkT3JSZW1vdmVkKE5vZGUqKTsKICAgICB2b2lkIGhhbmRsZVNjcm9s
bGVkVG9BbmNob3IoY29uc3QgTm9kZSogYW5jaG9yTm9kZSk7CiAgICAgdm9pZCBvblNjcm9sbGJh
clVwZGF0ZShTY3JvbGxWaWV3Kik7CisgICAgdm9pZCBvblJlbW90ZUZyYW1lSW5pdGlhbGl6ZWQo
QVhSZW1vdGVGcmFtZSYpOwogCiAgICAgYm9vbCBpc1JldHJpZXZpbmdDdXJyZW50TW9kYWxOb2Rl
KCkgeyByZXR1cm4gbV9pc1JldHJpZXZpbmdDdXJyZW50TW9kYWxOb2RlOyB9CiAgICAgTm9kZSog
bW9kYWxOb2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
UmVtb3RlRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFJlbW90ZUZy
YW1lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmNmYmRlZGQ5
ODFjYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhS
ZW1vdGVGcmFtZS5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJBWFJlbW90ZUZyYW1lLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworUmVmPEFYUmVtb3RlRnJhbWU+IEFYUmVtb3RlRnJhbWU6OmNyZWF0ZSgpCit7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQVhSZW1vdGVGcmFtZSk7Cit9CisKK0xheW91dFJlY3QgQVhS
ZW1vdGVGcmFtZTo6ZWxlbWVudFJlY3QoKSBjb25zdAoreworICAgIGF1dG8qIHBhcmVudCA9IHBh
cmVudE9iamVjdCgpOworICAgIHJldHVybiBwYXJlbnQgPyBwYXJlbnQtPmVsZW1lbnRSZWN0KCkg
OiBMYXlvdXRSZWN0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhSZW1vdGVGcmFtZS5oIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BWFJlbW90ZUZyYW1lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi45NGQyZGYwMzA0ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYUmVtb3RlRnJhbWUuaApAQCAtMCwwICsxLDYxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDI0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5TW9j
a09iamVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlbW90ZUZyYW1lOwor
CitjbGFzcyBBWFJlbW90ZUZyYW1lIGZpbmFsIDogcHVibGljIEFjY2Vzc2liaWxpdHlNb2NrT2Jq
ZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEFYUmVtb3RlRnJhbWU+IGNyZWF0ZSgpOwor
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBpbml0aWFsaXplUGxhdGZvcm1FbGVtZW50
V2l0aFJlbW90ZVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgaW50KTsKKyAgICBzdGQ6
OnNwYW48Y29uc3QgdWludDhfdD4gZ2VuZXJhdGVSZW1vdGVUb2tlbigpIGNvbnN0OworICAgIFJl
dGFpblB0cjxpZD4gcmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBt
X3JlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50OyB9CisgICAgcGlkX3QgcHJvY2Vzc0lkZW50aWZp
ZXIoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3NJZGVudGlmaWVyOyB9CisjZW5kaWYKKworcHJp
dmF0ZToKKyAgICB2aXJ0dWFsIH5BWFJlbW90ZUZyYW1lKCkgPSBkZWZhdWx0OworCisgICAgQWNj
ZXNzaWJpbGl0eVJvbGUgZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUoKSB7IHJldHVybiBBY2Nl
c3NpYmlsaXR5Um9sZTo6UmVtb3RlRnJhbWU7IH0KKyAgICBib29sIGNvbXB1dGVBY2Nlc3NpYmls
aXR5SXNJZ25vcmVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzQVhSZW1v
dGVGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICBMYXlvdXRSZWN0IGVsZW1lbnRS
ZWN0KCkgY29uc3Q7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBSZXRhaW5QdHI8aWQ+IG1f
cmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQ7CisgICAgcGlkX3QgbV9wcm9jZXNzSWRlbnRpZmll
ciB7IDAgfTsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0FDQ0VTU0lCSUxJVFkoQVhSZW1vdGVGcmFtZSwgaXNBWFJlbW90ZUZy
YW1lKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcAppbmRleCAzZTMyZGIwOTNhZmIuLmZkNmY3YzRlMjU1OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3Bw
CkBAIC01NDQsNyArNTQ0LDkgQEAgRmxvYXRSZWN0IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmNvbnZl
cnRGcmFtZVRvU3BhY2UoY29uc3QgRmxvYXRSZWN0JiBmcmFtZVJlY3QsIEEKICAgICAKIEZsb2F0
UmVjdCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZWxhdGl2ZUZyYW1lKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gY29udmVydEZyYW1lVG9TcGFjZShlbGVtZW50UmVjdCgpLCBBY2Nlc3NpYmlsaXR5Q29u
dmVyc2lvblNwYWNlOjpQYWdlKTsKKyAgICBhdXRvIHJlY3QgPSBlbGVtZW50UmVjdCgpOworICAg
IHJlY3QubW92ZUJ5KHJlbW90ZUZyYW1lT2Zmc2V0KCkpOworICAgIHJldHVybiBjb252ZXJ0RnJh
bWVUb1NwYWNlKHJlY3QsIEFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2U6OlBhZ2UpOwogfQog
CiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpuZXh0U2libGluZ1Vu
aWdub3JlZChpbnQgbGltaXQpIGNvbnN0CkBAIC0yMDg2LDE0ICsyMDg4LDIzIEBAIGNvbnN0IEFj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3KiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphbmNlc3RvckFjY2Vz
c2liaWxpdHlTY3JvbGxWCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBSZW1vdGVBWE9iamVjdFJlZiBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpyZW1vdGVQYXJlbnRPYmplY3QoKSBjb25zdAogewotICAgIGlm
IChhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCkpIHsKLSAgICAgICAgaWYgKGF1dG8q
IGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCkpCi0gICAgICAgICAgICByZXR1cm4gZnJhbWUtPmxv
YWRlcigpLmNsaWVudCgpLmFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKTsKLSAgICB9Ci0gICAg
cmV0dXJuIG51bGxwdHI7CisgICAgYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOwor
ICAgIGF1dG8qIGZyYW1lID0gZG9jdW1lbnQgPyBkb2N1bWVudC0+ZnJhbWUoKSA6IG51bGxwdHI7
CisgICAgcmV0dXJuIGZyYW1lID8gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmFjY2Vzc2liaWxp
dHlSZW1vdGVPYmplY3QoKSA6IG51bGxwdHI7CiB9CiAjZW5kaWYKIAorSW50UG9pbnQgQWNjZXNz
aWJpbGl0eU9iamVjdDo6cmVtb3RlRnJhbWVPZmZzZXQoKSBjb25zdAoreworI2lmIFBMQVRGT1JN
KENPQ09BKQorICAgIGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsKKyAgICBhdXRv
KiBmcmFtZSA9IGRvY3VtZW50ID8gZG9jdW1lbnQtPmZyYW1lKCkgOiBudWxscHRyOworICAgIHJl
dHVybiBmcmFtZSA/IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5hY2Nlc3NpYmlsaXR5UmVtb3Rl
RnJhbWVPZmZzZXQoKSA6IEludFBvaW50KCk7CisjZWxzZQorICAgIHJldHVybiBJbnRQb2ludCgp
OworI2VuZGlmCit9CisKIERvY3VtZW50KiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpkb2N1bWVudCgp
IGNvbnN0CiB7CiAgICAgYXV0byogZnJhbWVWaWV3ID0gZG9jdW1lbnRGcmFtZVZpZXcoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgK
aW5kZXggNGQyMGY1NWE1NDRjLi4zNTk1ZDMxZTcxYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCkBAIC0xMDIsNiArMTAyLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0KCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29s
IGlzQWNjZXNzaWJpbGl0eVNjcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
Ym9vbCBpc0FYUmVtb3RlRnJhbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3SW5zdGFuY2UoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTVkdS
b290KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzQWNjZXNzaWJpbGl0eVRh
YmxlSW5zdGFuY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQpAQCAtNDYyLDEw
ICs0NjMsMTQgQEAgcHVibGljOgogICAgIFdpZGdldCogd2lkZ2V0Rm9yQXR0YWNobWVudFZpZXco
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgYm9vbCBpc1BsdWdpbigp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICBJbnRQb2ludCByZW1vdGVG
cmFtZU9mZnNldCgpIGNvbnN0IG92ZXJyaWRlOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJl
bW90ZUFYT2JqZWN0UmVmIHJlbW90ZVBhcmVudE9iamVjdCgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IEZsb2F0UmVjdCBjb252ZXJ0UmVjdFRvUGxhdGZvcm1TcGFjZShjb25zdCBGbG9hdFJlY3QmLCBB
Y2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZXRhaW5Q
dHI8aWQ+IHJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbmlsOyB9CiAjZW5kaWYKKyAgICBib29sIGhhc1JlbW90ZUZyYW1lQ2hpbGQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgUGFnZSogcGFnZSgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIExvY2Fs
RnJhbWVWaWV3KiBkb2N1bWVudEZyYW1lVmlldygpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5jcHAKaW5kZXggZWU4YWJlYzNkN2I1Li4yZjEyZWY3NTNlNGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmNwcApAQCAtMjQxMyw3ICsyNDEzLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjphZGRBdHRhY2htZW50Q2hpbGRyZW4oKQogCiAgICAgLy8gTG9jYWxGcmFtZVZpZXcncyBu
ZWVkIHRvIGJlIGluc2VydGVkIGludG8gdGhlIEFYIGhpZXJhcmNoeSB3aGVuIGVuY291bnRlcmVk
LgogICAgIFdpZGdldCogd2lkZ2V0ID0gd2lkZ2V0Rm9yQXR0YWNobWVudFZpZXcoKTsKLSAgICBp
ZiAoIXdpZGdldCB8fCAhd2lkZ2V0LT5pc0xvY2FsRnJhbWVWaWV3KCkpCisgICAgaWYgKCF3aWRn
ZXQgfHwgISh3aWRnZXQtPmlzTG9jYWxGcmFtZVZpZXcoKSB8fCB3aWRnZXQtPmlzUmVtb3RlRnJh
bWVWaWV3KCkpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgYWRkQ2hpbGQoYXhPYmplY3RD
YWNoZSgpLT5nZXRPckNyZWF0ZSh3aWRnZXQpKTsKQEAgLTI1NjgsNyArMjU2OCw3IEBAIHZvaWQg
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkQ2hpbGRyZW4oKQogICAgICAgICBhdXRvIG93
bmVycyA9IG9iamVjdC5vd25lcnMoKTsKICAgICAgICAgaWYgKG93bmVycy5zaXplKCkgJiYgIW93
bmVycy5jb250YWlucyh0aGlzKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisKICAg
ICAgICAgYWRkQ2hpbGQoJm9iamVjdCk7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcAppbmRleCAy
YmJjMzA4N2I5ZjguLjUyMTIyMmFmNjAwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAKQEAgLTI3LDEwICsy
NywxMiBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgiCiAKICNpbmNsdWRl
ICJBWE9iamVjdENhY2hlLmgiCisjaW5jbHVkZSAiQVhSZW1vdGVGcmFtZS5oIgogI2luY2x1ZGUg
IkFjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1l
bnQuaCIKICNpbmNsdWRlICJMb2NhbEZyYW1lLmgiCiAjaW5jbHVkZSAiTG9jYWxGcmFtZVZpZXcu
aCIKKyNpbmNsdWRlICJSZW1vdGVGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJSZW5kZXJFbGVtZW50
LmgiCiAjaW5jbHVkZSAiV2lkZ2V0LmgiCiAKQEAgLTUyLDYgKzU0LDE2IEBAIEFjY2Vzc2liaWxp
dHlTY3JvbGxWaWV3Ojp+QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoKQogdm9pZCBBY2Nlc3NpYmls
aXR5U2Nyb2xsVmlldzo6ZGV0YWNoUmVtb3RlUGFydHMoQWNjZXNzaWJpbGl0eURldGFjaG1lbnRU
eXBlIGRldGFjaG1lbnRUeXBlKQogewogICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRldGFjaFJl
bW90ZVBhcnRzKGRldGFjaG1lbnRUeXBlKTsKKworICAgIGF1dG8qIHJlbW90ZUZyYW1lVmlldyA9
IGR5bmFtaWNEb3duY2FzdDxSZW1vdGVGcmFtZVZpZXc+KG1fc2Nyb2xsVmlldy5nZXQoKSk7Cisg
ICAgaWYgKHJlbW90ZUZyYW1lVmlldyAmJiBtX3JlbW90ZUZyYW1lICYmIChkZXRhY2htZW50VHlw
ZSA9PSBBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGU6OkVsZW1lbnREZXN0cm95ZWQgfHwgZGV0
YWNobWVudFR5cGUgPT0gQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlOjpDYWNoZURlc3Ryb3ll
ZCkpIHsKKyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIGF1dG8mIHJlbW90ZUZyYW1lID0gcmVt
b3RlRnJhbWVWaWV3LT5mcmFtZSgpOworICAgICAgICByZW1vdGVGcmFtZS51bmJpbmRSZW1vdGVB
Y2Nlc3NpYmlsaXR5RnJhbWVzKG1fcmVtb3RlRnJhbWUtPnByb2Nlc3NJZGVudGlmaWVyKCkpOwor
I2VuZGlmCisgICAgICAgIG1fcmVtb3RlRnJhbWUgPSBudWxscHRyOworICAgIH0KKwogICAgIG1f
c2Nyb2xsVmlldyA9IG51bGxwdHI7CiAgICAgbV9mcmFtZU93bmVyRWxlbWVudCA9IG51bGxwdHI7
CiB9CkBAIC0xNzcsOCArMTg5LDEwIEBAIEFjY2Vzc2liaWxpdHlTY3JvbGxiYXIqIEFjY2Vzc2li
aWxpdHlTY3JvbGxWaWV3OjphZGRDaGlsZFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjCiB2b2lkIEFj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpjbGVhckNoaWxkcmVuKCkKIHsKICAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpjbGVhckNoaWxkcmVuKCk7CisKICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyID0g
bnVsbHB0cjsKICAgICBtX2hvcml6b250YWxTY3JvbGxiYXIgPSBudWxscHRyOworCiAgICAgbV9j
aGlsZHJlbkRpcnR5ID0gZmFsc2U7CiB9CiAKQEAgLTE5MSwxMSArMjA1LDQ1IEBAIGJvb2wgQWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29u
c3QKICAgICByZXR1cm4gd2ViQXJlYS0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpOwogfQogCit2
b2lkIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjphZGRSZW1vdGVGcmFtZUNoaWxkKCkKK3sKKyAg
ICBhdXRvKiByZW1vdGVGcmFtZVZpZXcgPSBkeW5hbWljRG93bmNhc3Q8UmVtb3RlRnJhbWVWaWV3
PihtX3Njcm9sbFZpZXcuZ2V0KCkpOworICAgIGlmICghcmVtb3RlRnJhbWVWaWV3KQorICAgICAg
ICByZXR1cm47CisKKyAgICBXZWFrUHRyIGNhY2hlID0gYXhPYmplY3RDYWNoZSgpOworICAgIGlm
ICghY2FjaGUpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9yZW1vdGVGcmFtZSkgewor
ICAgICAgICAvLyBNYWtlIHRoZSBmYXV4IGVsZW1lbnQgdGhhdCByZXByZXNlbnRzIHRoZSByZW1v
dGUgdHJhbnNmZXIgZWxlbWVudCBmb3IgQVguCisgICAgICAgIG1fcmVtb3RlRnJhbWUgPSBkb3du
Y2FzdDxBWFJlbW90ZUZyYW1lPihjYWNoZS0+Y3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpSZW1v
dGVGcmFtZSkpOworICAgICAgICBtX3JlbW90ZUZyYW1lLT5zZXRQYXJlbnQodGhpcyk7CisKKyNp
ZiBQTEFURk9STShNQUMpCisgICAgICAgIC8vIEdlbmVyYXRlIGEgbmV3IHRva2VuIGFuZCBwYXNz
IGl0IGJhY2sgdG8gdGhlIG90aGVyIHJlbW90ZSBmcmFtZSBzbyBpdCBjYW4gYmluZCB0aGVzZSBv
YmplY3RzIHRvZ2V0aGVyLgorICAgICAgICBhdXRvIGdlbmVyYXRlZFRva2VuID0gbV9yZW1vdGVG
cmFtZS0+Z2VuZXJhdGVSZW1vdGVUb2tlbigpOworICAgICAgICBhdXRvJiByZW1vdGVGcmFtZSA9
IHJlbW90ZUZyYW1lVmlldy0+ZnJhbWUoKTsKKyAgICAgICAgcmVtb3RlRnJhbWUuYmluZFJlbW90
ZUFjY2Vzc2liaWxpdHlGcmFtZXMoZ2V0cGlkKCksIGdlbmVyYXRlZFRva2VuLCBbdGhpcywgJnJl
bW90ZUZyYW1lLCBwcm90ZWN0ZWRBY2Nlc3NiaWxpdHlSZW1vdGVGcmFtZSA9IFJlZlB0ciB7IG1f
cmVtb3RlRnJhbWUgfV0gKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiB0b2tlbiwgaW50IHByb2Nl
c3NJZGVudGlmaWVyKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHByb3RlY3RlZEFjY2Vzc2JpbGl0
eVJlbW90ZUZyYW1lLT5pbml0aWFsaXplUGxhdGZvcm1FbGVtZW50V2l0aFJlbW90ZVRva2VuKHRv
a2VuLCBwcm9jZXNzSWRlbnRpZmllcik7CisKKyAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgcmVt
b3RlIHNpZGUgd2l0aCB0aGUgb2Zmc2V0IG9mIHRoaXMgb2JqZWN0IHNvIGl0IGNhbiBjYWxjdWxh
dGUgZnJhbWVzIGNvcnJlY3RseS4KKyAgICAgICAgICAgIGF1dG8gbG9jYXRpb24gPSBlbGVtZW50
UmVjdCgpLmxvY2F0aW9uKCk7CisgICAgICAgICAgICByZW1vdGVGcmFtZS51cGRhdGVSZW1vdGVG
cmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQoZmxvb3JlZEludFBvaW50KGxvY2F0aW9uKSk7CisgICAg
ICAgIH0pOworI2VuZGlmCisgICAgfSBlbHNlCisgICAgICAgIG1fcmVtb3RlRnJhbWUtPnNldFBh
cmVudCh0aGlzKTsKKworICAgIGFkZENoaWxkKG1fcmVtb3RlRnJhbWUuZ2V0KCkpOworfQorCiB2
b2lkIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjphZGRDaGlsZHJlbigpCiB7CiAgICAgQVNTRVJU
KCFtX2NoaWxkcmVuSW5pdGlhbGl6ZWQpOwogICAgIG1fY2hpbGRyZW5Jbml0aWFsaXplZCA9IHRy
dWU7CiAKKyAgICBhZGRSZW1vdGVGcmFtZUNoaWxkKCk7CiAgICAgYWRkQ2hpbGQod2ViQXJlYU9i
amVjdCgpKTsKICAgICB1cGRhdGVTY3JvbGxiYXJzKCk7CiB9CkBAIC0yMDMsNyArMjUxLDcgQEAg
dm9pZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkQ2hpbGRyZW4oKQogQWNjZXNzaWJpbGl0
eU9iamVjdCogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OndlYkFyZWFPYmplY3QoKSBjb25zdAog
ewogICAgIGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsKLSAgICBpZiAoIWRvY3Vt
ZW50IHx8ICFkb2N1bWVudC0+aGFzTGl2aW5nUmVuZGVyVHJlZSgpKQorICAgIGlmICghZG9jdW1l
bnQgfHwgIWRvY3VtZW50LT5oYXNMaXZpbmdSZW5kZXJUcmVlKCkgfHwgbV9yZW1vdGVGcmFtZSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoYXV0byogY2FjaGUgPSBheE9iamVj
dENhY2hlKCkpCkBAIC0yMzQsOSArMjgyLDE1IEBAIExheW91dFJlY3QgQWNjZXNzaWJpbGl0eVNj
cm9sbFZpZXc6OmVsZW1lbnRSZWN0KCkgY29uc3QKIAogRG9jdW1lbnQqIEFjY2Vzc2liaWxpdHlT
Y3JvbGxWaWV3Ojpkb2N1bWVudCgpIGNvbnN0CiB7Ci0gICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9
IGR5bmFtaWNEb3duY2FzdDxMb2NhbEZyYW1lVmlldz4obV9zY3JvbGxWaWV3LmdldCgpKSkgewor
ICAgIGlmIChhdXRvKiBmcmFtZVZpZXcgPSBkeW5hbWljRG93bmNhc3Q8TG9jYWxGcmFtZVZpZXc+
KG1fc2Nyb2xsVmlldy5nZXQoKSkpCiAgICAgICAgIHJldHVybiBmcmFtZVZpZXctPmZyYW1lKCku
ZG9jdW1lbnQoKTsKKworICAgIC8vIEZvciB0aGUgUmVtb3RlRnJhbWVWaWV3IGNhc2UsIHdlIG5l
ZWQgdG8gcmV0dXJuIHRoZSBkb2N1bWVudCBvZiBvdXIgaG9zdGluZyBwYXJlbnQgc28gYXhPYmpl
Y3RDYWNoZSgpIHJlc29sdmVzIGNvcnJlY3RseS4KKyAgICBpZiAoYXV0byogcmVtb3RlRnJhbWVW
aWV3ID0gZHluYW1pY0Rvd25jYXN0PFJlbW90ZUZyYW1lVmlldz4obV9zY3JvbGxWaWV3LmdldCgp
KSkgeworICAgICAgICBpZiAoYXV0byogb3duZXIgPSByZW1vdGVGcmFtZVZpZXctPmZyYW1lKCku
b3duZXJFbGVtZW50KCkpCisgICAgICAgICAgICByZXR1cm4gJihvd25lci0+ZG9jdW1lbnQoKSk7
CiAgICAgfQorCiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRvY3VtZW50KCk7CiB9
CiAKQEAgLTI1OSw4ICszMTMsMTAgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0
eVNjcm9sbFZpZXc6OnBhcmVudE9iamVjdCgpIGNvbnN0CiAgICAgV2Vha1B0ciBvd25lciA9IG1f
ZnJhbWVPd25lckVsZW1lbnQuZ2V0KCk7CiAgICAgaWYgKGF1dG8qIGxvY2FsRnJhbWVWaWV3ID0g
ZHluYW1pY0Rvd25jYXN0PExvY2FsRnJhbWVWaWV3PihtX3Njcm9sbFZpZXcuZ2V0KCkpKQogICAg
ICAgICBvd25lciA9IGxvY2FsRnJhbWVWaWV3LT5mcmFtZSgpLm93bmVyRWxlbWVudCgpOworICAg
IGVsc2UgaWYgKGF1dG8qIHJlbW90ZUZyYW1lVmlldyA9IGR5bmFtaWNEb3duY2FzdDxSZW1vdGVG
cmFtZVZpZXc+KG1fc2Nyb2xsVmlldy5nZXQoKSkpCisgICAgICAgIG93bmVyID0gcmVtb3RlRnJh
bWVWaWV3LT5mcmFtZSgpLm93bmVyRWxlbWVudCgpOwogCi0gICAgaWYgKGNhY2hlICYmIG93bmVy
ICYmIG93bmVyLT5yZW5kZXJlcigpKQorICAgIGlmIChvd25lciAmJiBvd25lci0+cmVuZGVyZXIo
KSkKICAgICAgICAgcmV0dXJuIGNhY2hlLT5nZXRPckNyZWF0ZShvd25lci5nZXQoKSk7CiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgKaW5kZXggNTU3MDQ0NjcxYzdkLi41MjVhYzc4
M2ZiYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVNjcm9sbFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlTY3JvbGxWaWV3LmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIAorY2xhc3MgQVhSZW1vdGVGcmFtZTsKIGNsYXNzIEFjY2Vzc2liaWxpdHlTY3Jv
bGxiYXI7CiBjbGFzcyBTY3JvbGxiYXI7CiBjbGFzcyBTY3JvbGxWaWV3OwpAQCAtNTQsNyArNTUs
OCBAQCBwcml2YXRlOgogICAgIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBj
b25zdCBvdmVycmlkZTsKICAgICBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXdJbnN0YW5j
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIGlzRW5hYmxlZCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICAKKyAgICBib29sIGhhc1JlbW90
ZUZyYW1lQ2hpbGQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3JlbW90ZUZyYW1lOyB9CisKICAg
ICBib29sIGlzQXR0YWNobWVudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFBsYXRmb3JtV2lkZ2V0
IHBsYXRmb3JtV2lkZ2V0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgV2lkZ2V0KiB3aWRnZXRGb3JB
dHRhY2htZW50VmlldygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGN1cnJlbnRTY3JvbGxWaWV3
KCk7IH0KQEAgLTY5LDYgKzcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEZvY3VzZWQoYm9v
bCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBjYW5TZXRGb2N1c0F0dHJpYnV0ZSgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIGJvb2wgaXNGb2N1c2VkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGRS
ZW1vdGVGcmFtZUNoaWxkKCk7CiAKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCBvdmVy
cmlkZTsKICAgICBMb2NhbEZyYW1lVmlldyogZG9jdW1lbnRGcmFtZVZpZXcoKSBjb25zdCBvdmVy
cmlkZTsKQEAgLTg1LDYgKzg4LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8QWNjZXNzaWJpbGl0
eU9iamVjdD4gbV9ob3Jpem9udGFsU2Nyb2xsYmFyOwogICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5
T2JqZWN0PiBtX3ZlcnRpY2FsU2Nyb2xsYmFyOwogICAgIGJvb2wgbV9jaGlsZHJlbkRpcnR5Owor
ICAgIFJlZlB0cjxBWFJlbW90ZUZyYW1lPiBtX3JlbW90ZUZyYW1lOwogfTsKICAgICAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNwcAppbmRleCA1ZGU5
NzBmMWY3MGQuLjUxODdiMmZhMzU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNwcApA
QCAtMzcwLDYgKzM3MCw3IEBAIHN0YXRpYyBBdHNwaTo6Um9sZSBhdHNwaVJvbGUoQWNjZXNzaWJp
bGl0eVJvbGUgcm9sZSkKICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTdW1tYXJ5OgogICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYmxlSGVhZGVyQ29udGFpbmVyOgogICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OlN1Z2dlc3Rpb246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6UmVtb3RlRnJhbWU6CiAgICAgICAgIHJldHVybiBBdHNwaTo6Um9sZTo6VW5rbm93bjsKICAg
ICAvLyBBZGQgbW9zdCBuZXcgcm9sZXMgYWJvdmUuIFRoZSByZWxlYXNlIGFzc2VydCBpcyBmb3Ig
cm9sZXMgdGhhdCBhcmUgaGFuZGxlZCBzcGVjaWFsbHkuCiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6TGlzdE1hcmtlcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0K
aW5kZXggMmYyOWI3MmZmZTdlLi45MjQzYWQ2YmQzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVySU9TLm1tCkBAIC0xMTEyLDYgKzExMTIsNyBAQCBzdGF0aWMgQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIgKmFuY2VzdG9yV2l0aFJvbGUoY29uc3QgQVhDb3JlT2JqZWN0JiBk
ZXNjZW5kYQogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Oklnbm9yZWQ6CiAgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6TGluZUJyZWFrOgogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OlByZXNlbnRhdGlvbmFsOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJlbW90ZUZyYW1l
OgogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd246CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCmluZGV4IDEwMTQ1NDYyNzhm
My4uMzQyZDRjNzJlNjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcApAQCAtMzc4LDYg
KzM3OCwxMCBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVQcm9wZXJ0aWVzKGNv
bnN0IFJlZjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiYgYXhPYgogI2VuZGlmCiAKICAgICBzZXRPYmpl
Y3RQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SW50ZXJuYWxMaW5rRWxlbWVudCwgb2JqZWN0Lmlu
dGVybmFsTGlua0VsZW1lbnQoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Okhh
c1JlbW90ZUZyYW1lQ2hpbGQsIG9iamVjdC5oYXNSZW1vdGVGcmFtZUNoaWxkKCkpOworICAgIC8v
IERvbid0IGR1cGxpY2F0ZSB0aGUgcmVtb3RlRnJhbWVPZmZzZXQgZm9yIGV2ZXJ5IG9iamVjdC4g
SnVzdCBzdG9yZSBpbiB0aGUgV2ViQXJlYS4KKyAgICBpZiAob2JqZWN0LmlzV2ViQXJlYSgpKQor
ICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6UmVtb3RlRnJhbWVPZmZzZXQsIG9i
amVjdC5yZW1vdGVGcmFtZU9mZnNldCgpKTsKIAogICAgIGluaXRpYWxpemVQbGF0Zm9ybVByb3Bl
cnRpZXMoYXhPYmplY3QpOwogfQpAQCAtNDY0LDYgKzQ2OCw3IEBAIHZvaWQgQVhJc29sYXRlZE9i
amVjdDo6c2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBBWFByb3BlcnR5
VmFsdWVWCiAgICAgICAgIFtdKE9wdGlvblNldDxBWEFuY2VzdG9yRmxhZz4mIHR5cGVkVmFsdWUp
IHsgcmV0dXJuIHR5cGVkVmFsdWUuaXNFbXB0eSgpOyB9LAogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgICAgICBbXShSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiYgdHlwZWRWYWx1ZSkgeyBy
ZXR1cm4gIXR5cGVkVmFsdWU7IH0sCisgICAgICAgIFtdKFJldGFpblB0cjxpZD4mIHR5cGVkVmFs
dWUpIHsgcmV0dXJuICF0eXBlZFZhbHVlOyB9LAogI2VuZGlmCiAgICAgICAgIFtdKEluc2lkZUxp
bmsmIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWUgPT0gSW5zaWRlTGluaygpOyB9LAog
ICAgICAgICBbXShWZWN0b3I8VmVjdG9yPEFYSUQ+PiYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlw
ZWRWYWx1ZS5pc0VtcHR5KCk7IH0sCkBAIC0xMjA2LDYgKzEyMTEsMjEgQEAgTGF5b3V0UmVjdCBB
WElzb2xhdGVkT2JqZWN0OjplbGVtZW50UmVjdCgpIGNvbnN0CiAgICAgfSk7CiB9CiAKK0ludFBv
aW50IEFYSXNvbGF0ZWRPYmplY3Q6OnJlbW90ZUZyYW1lT2Zmc2V0KCkgY29uc3QKK3sKKyAgICBh
dXRvKiB3ZWJBcmVhID0gQWNjZXNzaWJpbGl0eTo6ZmluZEFuY2VzdG9yPEFYSXNvbGF0ZWRPYmpl
Y3Q+KCp0aGlzLCB0cnVlLCBbXSAoY29uc3QgYXV0byYgb2JqZWN0KSB7CisgICAgICAgIHJldHVy
biBvYmplY3QuaXNXZWJBcmVhKCk7CisgICAgfSk7CisKKyAgICBpZiAoIXdlYkFyZWEpCisgICAg
ICAgIHJldHVybiB7IH07CisKKyAgICBpZiAoYXV0byBwb2ludCA9IHdlYkFyZWEtPm9wdGlvbmFs
QXR0cmlidXRlVmFsdWU8SW50UG9pbnQ+KEFYUHJvcGVydHlOYW1lOjpSZW1vdGVGcmFtZU9mZnNl
dCkpCisgICAgICAgIHJldHVybiAqcG9pbnQ7CisKKyAgICByZXR1cm4geyB9OworfQorCiBGbG9h
dFBvaW50IEFYSXNvbGF0ZWRPYmplY3Q6OnNjcmVlblJlbGF0aXZlUG9zaXRpb24oKSBjb25zdAog
ewogICAgIGlmIChhdXRvIHBvaW50ID0gb3B0aW9uYWxBdHRyaWJ1dGVWYWx1ZTxGbG9hdFBvaW50
PihBWFByb3BlcnR5TmFtZTo6U2NyZWVuUmVsYXRpdmVQb3NpdGlvbikpCkBAIC0xMjI5LDIyICsx
MjQ5LDIzIEBAIEZsb2F0UG9pbnQgQVhJc29sYXRlZE9iamVjdDo6c2NyZWVuUmVsYXRpdmVQb3Np
dGlvbigpIGNvbnN0CiAKIEZsb2F0UmVjdCBBWElzb2xhdGVkT2JqZWN0OjpyZWxhdGl2ZUZyYW1l
KCkgY29uc3QKIHsKKyAgICBGbG9hdFJlY3QgcmVsYXRpdmVGcmFtZTsKKwogICAgIGlmIChhdXRv
IGNhY2hlZFJlbGF0aXZlRnJhbWUgPSBvcHRpb25hbEF0dHJpYnV0ZVZhbHVlPEludFJlY3Q+KEFY
UHJvcGVydHlOYW1lOjpSZWxhdGl2ZUZyYW1lKSkgewogICAgICAgICAvLyBXZSBzaG91bGQgbm90
IGhhdmUgY2FjaGVkIGEgcmVsYXRpdmUgZnJhbWUgZm9yIGVsZW1lbnRzIHRoYXQgZ2V0IHRoZWly
IGdlb21ldHJ5IGZyb20gdGhlaXIgY2hpbGRyZW4uCiAgICAgICAgIEFTU0VSVCghbV9nZXRzR2Vv
bWV0cnlGcm9tQ2hpbGRyZW4pOwotICAgICAgICByZXR1cm4gKmNhY2hlZFJlbGF0aXZlRnJhbWU7
Ci0gICAgfQotCi0gICAgaWYgKG1fZ2V0c0dlb21ldHJ5RnJvbUNoaWxkcmVuKSB7CisgICAgICAg
IHJlbGF0aXZlRnJhbWUgPSAqY2FjaGVkUmVsYXRpdmVGcmFtZTsKKyAgICB9IGVsc2UgaWYgKG1f
Z2V0c0dlb21ldHJ5RnJvbUNoaWxkcmVuKSB7CiAgICAgICAgIGF1dG8gZnJhbWUgPSBlbmNsb3Np
bmdJbnRSZWN0KHJlbGF0aXZlRnJhbWVGcm9tQ2hpbGRyZW4oKSk7CiAgICAgICAgIGlmICghZnJh
bWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIGZyYW1lOworICAgICAgICAgICAgcmVs
YXRpdmVGcmFtZSA9IGZyYW1lOwogICAgICAgICAvLyBFaXRoZXIgd2UgaGFkIG5vIGNoaWxkcmVu
LCBvciBvdXIgY2hpbGRyZW4gaGFkIGVtcHR5IGZyYW1lcy4gVGhlIHJpZ2h0IHRoaW5nIHRvIGRv
IHdvdWxkIGJlIHRvIHJldHVybgogICAgICAgICAvLyBhIHJlY3QgYXQgdGhlIHBvc2l0aW9uIG9m
IHRoZSBuZWFyZXN0IHJlbmRlciB0cmVlIGFuY2VzdG9yIHdpdGggc29tZSBtYWRlLXVwIHNpemUg
KEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojpib3VuZGluZ0JveFJlY3QgZG9lcyB0aGlzKS4KICAg
ICAgICAgLy8gSG93ZXZlciwgd2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIHJlbmRlciB0cmVl
IGluIHRoaXMgY29udGV4dCAob25seSB0aGUgQVggaXNvbGF0ZWQgdHJlZSwgd2hpY2ggaXMgdG9v
IHNwYXJzZSBmb3IgdGhpcyBwdXJwb3NlKSwgc28KICAgICAgICAgLy8gdW50aWwgd2UgY2FjaGUg
dGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBsZXQncyBnbyB0byB0aGUgbWFpbi10aHJlYWQuCiAg
ICAgfSBlbHNlIGlmIChyb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uIHx8
IHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJsZUhlYWRlckNvbnRhaW5lcikK
LSAgICAgICAgcmV0dXJuIGV4cG9zZWRUYWJsZUFuY2VzdG9yKCkgPyByZWxhdGl2ZUZyYW1lRnJv
bUNoaWxkcmVuKCkgOiBGbG9hdFJlY3QoKTsKKyAgICAgICAgcmVsYXRpdmVGcmFtZSA9IGV4cG9z
ZWRUYWJsZUFuY2VzdG9yKCkgPyByZWxhdGl2ZUZyYW1lRnJvbUNoaWxkcmVuKCkgOiBGbG9hdFJl
Y3QoKTsKKwogCiAgICAgLy8gTW9jayBvYmplY3RzIGFuZCBTVkcgb2JqZWN0cyBuZWVkIHVzZSB0
aGUgbWFpbiB0aHJlYWQgc2luY2UgdGhleSBkbyBub3QgaGF2ZSByZW5kZXIgbm9kZXMgYW5kIGFy
ZSBub3QgcGFpbnRlZCB3aXRoIGxheWVycywgcmVzcGVjdGl2ZWx5LgogICAgIC8vIEZJWE1FOiBS
ZW1vdmUgaXNOb25MYXllclNWR09iamVjdCB3aGVuIExCU0UgaXMgZW5hYmxlZCAmIFNWRyBmcmFt
ZXMgYXJlIGNhY2hlZC4KQEAgLTEyNjYsNiArMTI4Nyw3IEBAIEZsb2F0UmVjdCBBWElzb2xhdGVk
T2JqZWN0OjpyZWxhdGl2ZUZyYW1lKCkgY29uc3QKICAgICBpZiAoYW5jZXN0b3IgJiYgZnJhbWVS
ZWN0LmxvY2F0aW9uKCkgPT0gRmxvYXRQb2ludCgpKQogICAgICAgICBmcmFtZVJlY3Quc2V0TG9j
YXRpb24oYW5jZXN0b3ItPnJlbGF0aXZlRnJhbWUoKS5sb2NhdGlvbigpKTsKIAorICAgIGZyYW1l
UmVjdC5tb3ZlQnkoeyByZW1vdGVGcmFtZU9mZnNldCgpIH0pOwogICAgIHJldHVybiBmcmFtZVJl
Y3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0
ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaAppbmRleCBkMmE2NmMyZjUzZTQuLmRlODI3
ZDVmZTAxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaApAQCAtMjgsNiArMjgsNyBAQAogI2lm
IEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAKICNpbmNsdWRlICJBWENvcmVP
YmplY3QuaCIKKyNpbmNsdWRlICJBWElzb2xhdGVkVHJlZS5oIgogI2luY2x1ZGUgIkFYT2JqZWN0
Q2FjaGUuaCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIK
QEAgLTIxNSw2ICsyMTYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNGaWxlVXBsb2FkQnV0dG9u
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1l
OjpJc0ZpbGVVcGxvYWRCdXR0b24pOyB9CiAgICAgYm9vbCBpc01ldGVyKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01ldGVyKTsgfTsK
ICAgICBGbG9hdFBvaW50IHNjcmVlblJlbGF0aXZlUG9zaXRpb24oKSBjb25zdCBmaW5hbDsKKyAg
ICBJbnRQb2ludCByZW1vdGVGcmFtZU9mZnNldCgpIGNvbnN0IGZpbmFsOwogICAgIEZsb2F0UmVj
dCByZWxhdGl2ZUZyYW1lKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBoYXNDYWNoZWRSZWxhdGl2
ZUZyYW1lKCkgY29uc3QgeyByZXR1cm4gb3B0aW9uYWxBdHRyaWJ1dGVWYWx1ZTxJbnRSZWN0PihB
WFByb3BlcnR5TmFtZTo6UmVsYXRpdmVGcmFtZSkuaGFzX3ZhbHVlKCk7IH0KICNpZiBQTEFURk9S
TShNQUMpCkBAIC0yNjMsNyArMjY1LDcgQEAgcHJpdmF0ZToKICAgICBBWElzb2xhdGVkT2JqZWN0
KiBhY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IGZpbmFsOwogICAg
IEFYSXNvbGF0ZWRPYmplY3QqIGZvY3VzZWRVSUVsZW1lbnQoKSBjb25zdCBmaW5hbDsKICAgICBB
WENvcmVPYmplY3QqIGludGVybmFsTGlua0VsZW1lbnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBv
YmplY3RBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SW50ZXJuYWxMaW5rRWxlbWVudCk7
IH0KLSAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgcmFkaW9CdXR0b25Hcm91cCgpIGNv
bnN0IHsgcmV0dXJuIHRyZWUoKS0+b2JqZWN0c0ZvcklEcyh2ZWN0b3JBdHRyaWJ1dGVWYWx1ZTxB
WElEPihBWFByb3BlcnR5TmFtZTo6UmFkaW9CdXR0b25Hcm91cCkpOyB9CisgICAgQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yIHJhZGlvQnV0dG9uR3JvdXAoKSBjb25zdCBmaW5hbCB7IHJldHVy
biB0cmVlKCktPm9iamVjdHNGb3JJRHModmVjdG9yQXR0cmlidXRlVmFsdWU8QVhJRD4oQVhQcm9w
ZXJ0eU5hbWU6OlJhZGlvQnV0dG9uR3JvdXApKTsgfQogICAgIEFYSXNvbGF0ZWRPYmplY3QqIHNj
cm9sbEJhcihBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24pIGZpbmFsOwogICAgIGNvbnN0IFN0cmlu
ZyBwbGFjZWhvbGRlclZhbHVlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRl
VmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlBsYWNlaG9sZGVyVmFsdWUpOyB9CiAgICAgU3RyaW5nIGV4
cGFuZGVkVGV4dFZhbHVlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFs
dWUoQVhQcm9wZXJ0eU5hbWU6OkV4cGFuZGVkVGV4dFZhbHVlKTsgfQpAQCAtNDU2LDcgKzQ1OCw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlBUklBR3JpZEluc3RhbmNlKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzQWNjZXNzaWJpbGl0eUFS
SUFHcmlkUm93SW5zdGFuY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJv
b2wgaXNBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsSW5zdGFuY2UoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBmYWxzZTsgfQotCisgICAgYm9vbCBpc0FYUmVtb3RlRnJhbWUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNOYXRpdmVUZXh0Q29udHJvbCgpIGNvbnN0IGZp
bmFsOwogICAgIGJvb2wgaXNMaXN0Qm94T3B0aW9uKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBp
c01vY2tPYmplY3QoKSBjb25zdCBmaW5hbDsKQEAgLTUzNyw3ICs1MzksOSBAQCBwcml2YXRlOgog
ICAgIFN0cmluZyBuYW1lQXR0cmlidXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RyaW5nQXR0
cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Ok5hbWVBdHRyaWJ1dGUpOyB9CiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgYm9vbCBoYXNBcHBsZVBERkFubm90YXRpb25BdHRyaWJ1dGUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Okhhc0Fw
cGxlUERGQW5ub3RhdGlvbkF0dHJpYnV0ZSk7IH0KKyAgICBSZXRhaW5QdHI8aWQ+IHJlbW90ZUZy
YW1lUGxhdGZvcm1FbGVtZW50KCkgY29uc3QgZmluYWw7CiAjZW5kaWYKKyAgICBib29sIGhhc1Jl
bW90ZUZyYW1lQ2hpbGQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUo
QVhQcm9wZXJ0eU5hbWU6Okhhc1JlbW90ZUZyYW1lQ2hpbGQpOyB9CiAKICNpZiBQTEFURk9STShD
T0NPQSkgJiYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAgVmVjdG9yPFJldGFpblB0cjxpZD4+
IG1vZGVsRWxlbWVudENoaWxkcmVuKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKaW5k
ZXggNjk2NjU4NDQ4ZjY1Li4zYWNjMTk5OGIxYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAK
QEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkFYSXNvbGF0ZWRPYmplY3QuaCIKICNpbmNs
dWRlICJBWExvZ2dlci5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZS5oIgogI2luY2x1
ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZVJvdy5oIgogI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgi
CiAjaW5jbHVkZSAiTG9jYWxGcmFtZVZpZXcuaCIKQEAgLTIyNSw0NiArMjI2LDI2IEBAIFJlZlB0
cjxBWElzb2xhdGVkT2JqZWN0PiBBWElzb2xhdGVkVHJlZTo6b2JqZWN0Rm9ySUQoY29uc3QgQVhJ
RCBheElEKSBjb25zdAogICAgIHJldHVybiBheElELmlzVmFsaWQoKSA/IG1fcmVhZGVyVGhyZWFk
Tm9kZU1hcC5nZXQoYXhJRCkgOiBudWxscHRyOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBVPgot
VmVjdG9yPFJlZlB0cjxBWENvcmVPYmplY3Q+PiBBWElzb2xhdGVkVHJlZTo6b2JqZWN0c0ZvcklE
cyhjb25zdCBVJiBheElEcykKK1JlZlB0cjxBWElzb2xhdGVkT2JqZWN0PiBBWElzb2xhdGVkVHJl
ZTo6cmV0cmlldmVPYmplY3RGb3JJREZyb21NYWluVGhyZWFkKGNvbnN0IEFYSUQgYXhJRCkgY29u
c3QKIHsKLSAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLQotICAgIFZlY3RvcjxSZWZQdHI8
QVhDb3JlT2JqZWN0Pj4gcmVzdWx0OwotICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KGF4SURzLnNpemUoKSk7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBheElEIDogYXhJRHMpIHsKLSAg
ICAgICAgUmVmUHRyIG9iamVjdCA9IG9iamVjdEZvcklEKGF4SUQpOwotICAgICAgICBpZiAob2Jq
ZWN0KSB7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKFdURk1vdmUob2JqZWN0KSk7Ci0gICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFRoZXJlIGlzIG5vIGlz
b2xhdGVkIG9iamVjdCBmb3IgdGhpcyBBWElELiBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlIGNvcnJl
c3BvbmRpbmcgbGl2ZSBvYmplY3QgaXMgaWdub3JlZC4KLSAgICAgICAgLy8gSWYgdGhlcmUgaXMg
YSBsaXZlIG9iamVjdCBmb3IgdGhpcyBJRCBhbmQgaXQgaXMgYW4gaWdub3JlZCB0YXJnZXQgb2Yg
YSByZWxhdGlvbnNoaXAsIGNyZWF0ZSBhbiBpc29sYXRlZCBvYmplY3QgZm9yIGl0LgotICAgICAg
ICBvYmplY3QgPSBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8UmVm
UHRyPEFYSXNvbGF0ZWRPYmplY3Q+PihbJmF4SUQsIHRoaXNdICgpIC0+IFJlZlB0cjxBWElzb2xh
dGVkT2JqZWN0PiB7Ci0gICAgICAgICAgICBhdXRvKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsK
LSAgICAgICAgICAgIGlmICghY2FjaGUgfHwgIWNhY2hlLT5yZWxhdGlvblRhcmdldElEcygpLmNv
bnRhaW5zKGF4SUQpKQotICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAg
ICAgICBSZWZQdHIgYXhPYmplY3QgPSBjYWNoZS0+b2JqZWN0Rm9ySUQoYXhJRCk7Ci0gICAgICAg
ICAgICBpZiAoIWF4T2JqZWN0IHx8ICFheE9iamVjdC0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgp
KQotICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAgICAgICBhdXRvIG9i
amVjdCA9IEFYSXNvbGF0ZWRPYmplY3Q6OmNyZWF0ZSgqYXhPYmplY3QsIGNvbnN0X2Nhc3Q8QVhJ
c29sYXRlZFRyZWUqPih0aGlzKSk7Ci0gICAgICAgICAgICBBU1NFUlQoYXhPYmplY3QtPndyYXBw
ZXIoKSk7Ci0gICAgICAgICAgICBvYmplY3QtPmF0dGFjaFBsYXRmb3JtV3JhcHBlcihheE9iamVj
dC0+d3JhcHBlcigpKTsKLSAgICAgICAgICAgIHJldHVybiBvYmplY3Q7Ci0gICAgICAgIH0pOwot
ICAgICAgICBpZiAob2JqZWN0KSB7Ci0gICAgICAgICAgICBtX3JlYWRlclRocmVhZE5vZGVNYXAu
YWRkKGF4SUQsICpvYmplY3QpOwotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChXVEZNb3ZlKG9i
amVjdCkpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJlc3VsdC5zaHJpbmtUb0ZpdCgpOwotICAg
IHJldHVybiByZXN1bHQ7CisgICAgLy8gVGhlcmUgaXMgbm8gaXNvbGF0ZWQgb2JqZWN0IGZvciB0
aGlzIEFYSUQuIFRoaXMgY2FuIGhhcHBlbiBpZiB0aGUgY29ycmVzcG9uZGluZyBsaXZlIG9iamVj
dCBpcyBpZ25vcmVkLgorICAgIC8vIElmIHRoZXJlIGlzIGEgbGl2ZSBvYmplY3QgZm9yIHRoaXMg
SUQgYW5kIGl0IGlzIGFuIGlnbm9yZWQgdGFyZ2V0IG9mIGEgcmVsYXRpb25zaGlwLCBjcmVhdGUg
YW4gaXNvbGF0ZWQgb2JqZWN0IGZvciBpdC4KKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0
cmlldmVWYWx1ZUZyb21NYWluVGhyZWFkPFJlZlB0cjxBWElzb2xhdGVkT2JqZWN0Pj4oWyZheElE
LCB0aGlzXSAoKSAtPiBSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4geworICAgICAgICBhdXRvKiBj
YWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsKKyAgICAgICAgaWYgKCFjYWNoZSB8fCAhY2FjaGUtPnJl
bGF0aW9uVGFyZ2V0SURzKCkuY29udGFpbnMoYXhJRCkpCisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgICAgICBSZWZQdHIgYXhPYmplY3QgPSBjYWNoZS0+b2JqZWN0Rm9ySUQoYXhJ
RCk7CisgICAgICAgIGlmICghYXhPYmplY3QgfHwgIWF4T2JqZWN0LT5hY2Nlc3NpYmlsaXR5SXNJ
Z25vcmVkKCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBhdXRvIG9i
amVjdCA9IEFYSXNvbGF0ZWRPYmplY3Q6OmNyZWF0ZSgqYXhPYmplY3QsIGNvbnN0X2Nhc3Q8QVhJ
c29sYXRlZFRyZWUqPih0aGlzKSk7CisgICAgICAgIEFTU0VSVChheE9iamVjdC0+d3JhcHBlcigp
KTsKKyAgICAgICAgb2JqZWN0LT5hdHRhY2hQbGF0Zm9ybVdyYXBwZXIoYXhPYmplY3QtPndyYXBw
ZXIoKSk7CisgICAgICAgIHJldHVybiBvYmplY3Q7CisgICAgfSk7CiB9CiAKLQogdm9pZCBBWElz
b2xhdGVkVHJlZTo6Z2VuZXJhdGVTdWJ0cmVlKEFjY2Vzc2liaWxpdHlPYmplY3QmIGF4T2JqZWN0
KQogewogICAgIEFYVFJBQ0UoIkFYSXNvbGF0ZWRUcmVlOjpnZW5lcmF0ZVN1YnRyZWUiX3MpOwpA
QCAtNjYwLDYgKzY0MSwxMiBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2RlUHJvcGVy
dGllcyhBWENvcmVPYmplY3QmIGF4T2JqZWN0LCBjb25zdCBBWFByb3BlcgogICAgICAgICBjYXNl
IEFYUHJvcGVydHlOYW1lOjpQb3NJblNldDoKICAgICAgICAgICAgIHByb3BlcnR5TWFwLnNldChB
WFByb3BlcnR5TmFtZTo6UG9zSW5TZXQsIGF4T2JqZWN0LnBvc0luU2V0KCkpOwogICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgQVhQcm9wZXJ0eU5hbWU6OlJlbW90ZUZyYW1lUGxhdGZv
cm1FbGVtZW50OgorICAgICAgICAgICAgcHJvcGVydHlNYXAuc2V0KEFYUHJvcGVydHlOYW1lOjpS
ZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCwgYXhPYmplY3QucmVtb3RlRnJhbWVQbGF0Zm9ybUVs
ZW1lbnQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBWFByb3BlcnR5TmFt
ZTo6SGFzUmVtb3RlRnJhbWVDaGlsZDoKKyAgICAgICAgICAgIHByb3BlcnR5TWFwLnNldChBWFBy
b3BlcnR5TmFtZTo6SGFzUmVtb3RlRnJhbWVDaGlsZCwgYXhPYmplY3QuaGFzUmVtb3RlRnJhbWVD
aGlsZCgpKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFYUHJvcGVydHlOYW1l
OjpSb2xlRGVzY3JpcHRpb246CiAgICAgICAgICAgICBwcm9wZXJ0eU1hcC5zZXQoQVhQcm9wZXJ0
eU5hbWU6OlJvbGVEZXNjcmlwdGlvbiwgYXhPYmplY3Qucm9sZURlc2NyaXB0aW9uKCkuaXNvbGF0
ZWRDb3B5KCkpOwogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaAppbmRleCBh
NDE3OTI3OTc4ZDIuLjQ2MWVlYWU2MGFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCkBAIC0xMDQs
NiArMTA0LDcgQEAgZW51bSBjbGFzcyBBWFByb3BlcnR5TmFtZSA6IHVpbnQxNl90IHsKICAgICBI
YXNIaWdobGlnaHRpbmcsCiAgICAgSGFzSXRhbGljRm9udCwKICAgICBIYXNQbGFpblRleHQsCisg
ICAgSGFzUmVtb3RlRnJhbWVDaGlsZCwKICAgICBIYXNVbmRlcmxpbmUsCiAgICAgSGVhZGVyQ29u
dGFpbmVyLAogICAgIEhlYWRpbmdMZXZlbCwKQEAgLTIwMSw2ICsyMDIsOCBAQCBlbnVtIGNsYXNz
IEFYUHJvcGVydHlOYW1lIDogdWludDE2X3QgewogICAgIFByZXZlbnRLZXlib2FyZERPTUV2ZW50
RGlzcGF0Y2gsCiAgICAgUmFkaW9CdXR0b25Hcm91cCwKICAgICBSZWxhdGl2ZUZyYW1lLAorICAg
IFJlbW90ZUZyYW1lT2Zmc2V0LAorICAgIFJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50LAogICAg
IFJvbGVWYWx1ZSwKICAgICBSb2xlUGxhdGZvcm1TdHJpbmcsCiAgICAgUm9sZURlc2NyaXB0aW9u
LApAQCAtMjU3LDYgKzI2MCw3IEBAIHVzaW5nIEFYUHJvcGVydHlOYW1lU2V0ID0gSGFzaFNldDxB
WFByb3BlcnR5TmFtZSwgSW50SGFzaDxBWFByb3BlcnR5TmFtZT4sIFdURjo6CiB1c2luZyBBWFBy
b3BlcnR5VmFsdWVWYXJpYW50ID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBBWElELCBT
dHJpbmcsIGJvb2wsIGludCwgdW5zaWduZWQsIGRvdWJsZSwgZmxvYXQsIHVpbnQ2NF90LCBBY2Nl
c3NpYmlsaXR5QnV0dG9uU3RhdGUsIENvbG9yLCBVUkwsIExheW91dFJlY3QsIEZsb2F0UG9pbnQs
IEZsb2F0UmVjdCwgSW50UG9pbnQsIEludFJlY3QsIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWdu
ZWQ+LCBWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+LCBWZWN0b3I8QVhJRD4sIFZlY3RvcjxzdGQ6
OnBhaXI8QVhJRCwgQVhJRD4+LCBWZWN0b3I8U3RyaW5nPiwgUGF0aCwgT3B0aW9uU2V0PEFYQW5j
ZXN0b3JGbGFnPiwgSW5zaWRlTGluaywgVmVjdG9yPFZlY3RvcjxBWElEPj4sIENoYXJhY3RlclJh
bmdlLCBzdGQ6OnBhaXI8QVhJRCwgQ2hhcmFjdGVyUmFuZ2U+CiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgLCBSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPgorICAgICwgUmV0YWluUHRyPGlk
PgogI2VuZGlmCiAjaWYgRU5BQkxFKEFYX1RIUkVBRF9URVhUX0FQSVMpCiAgICAgLCBBWFRleHRS
dW5zCkBAIC0zOTcsNiArNDAxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZUVtcHR5Q29u
dGVudChBY2Nlc3NpYmlsaXR5T2JqZWN0Jik7CiAgICAgY29uc3RleHByIGJvb2wgaXNVcGRhdGlu
Z1N1YnRyZWUoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RPZlN1YnRyZWVCZWluZ1VwZGF0ZWQ7IH0K
ICAgICBjb25zdGV4cHIgdm9pZCB1cGRhdGluZ1N1YnRyZWUoQWNjZXNzaWJpbGl0eU9iamVjdCog
YXhPYmplY3QpIHsgbV9yb290T2ZTdWJ0cmVlQmVpbmdVcGRhdGVkID0gYXhPYmplY3Q7IH0KKyAg
ICBSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4gcmV0cmlldmVPYmplY3RGb3JJREZyb21NYWluVGhy
ZWFkKGNvbnN0IEFYSUQpIGNvbnN0OwogCiAgICAgZW51bSBjbGFzcyBBdHRhY2hXcmFwcGVyIDog
Ym9vbCB7IE9uTWFpblRocmVhZCwgT25BWFRocmVhZCB9OwogICAgIHN0cnVjdCBOb2RlQ2hhbmdl
IHsKQEAgLTQ5Nyw2ICs1MDIsMzAgQEAgaW5saW5lIFJlZlB0cjxBWElzb2xhdGVkVHJlZT4gQVhJ
c29sYXRlZFRyZWU6OnRyZWVGb3JQYWdlSUQoc3RkOjpvcHRpb25hbDxQYWdlSWQKICAgICByZXR1
cm4gcGFnZUlEID8gdHJlZUZvclBhZ2VJRCgqcGFnZUlEKSA6IG51bGxwdHI7CiB9CiAKK3RlbXBs
YXRlPHR5cGVuYW1lIFU+CitpbmxpbmUgVmVjdG9yPFJlZlB0cjxBWENvcmVPYmplY3Q+PiBBWElz
b2xhdGVkVHJlZTo6b2JqZWN0c0ZvcklEcyhjb25zdCBVJiBheElEcykKK3sKKyAgICBBU1NFUlQo
IWlzTWFpblRocmVhZCgpKTsKKworICAgIFZlY3RvcjxSZWZQdHI8QVhDb3JlT2JqZWN0Pj4gcmVz
dWx0OworICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGF4SURzLnNpemUoKSk7Cisg
ICAgZm9yIChjb25zdCBhdXRvJiBheElEIDogYXhJRHMpIHsKKyAgICAgICAgUmVmUHRyIG9iamVj
dCA9IG9iamVjdEZvcklEKGF4SUQpOworICAgICAgICBpZiAob2JqZWN0KSB7CisgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKFdURk1vdmUob2JqZWN0KSk7CisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgfQorCisgICAgICAgIG9iamVjdCA9IHJldHJpZXZlT2JqZWN0Rm9ySURGcm9tTWFp
blRocmVhZChheElEKTsKKyAgICAgICAgaWYgKG9iamVjdCkgeworICAgICAgICAgICAgbV9yZWFk
ZXJUaHJlYWROb2RlTWFwLmFkZChheElELCAqb2JqZWN0KTsKKyAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoV1RGTW92ZShvYmplY3QpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXN1bHQuc2hy
aW5rVG9GaXQoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9tYWMvQVhJc29sYXRlZE9iamVjdE1hYy5tbQppbmRl
eCBhZGI3ZWM2NDgzNDUuLmUwMmRhMGQxMTJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNvbGF0
ZWRPYmplY3RNYWMubW0KQEAgLTYzLDYgKzYzLDggQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0Ojpp
bml0aWFsaXplUGxhdGZvcm1Qcm9wZXJ0aWVzKGNvbnN0IFJlZjxjb25zdCBBY2Nlc3NpYmlsaXQK
ICAgICAgICAgfQogICAgIH0KIAorICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpSZW1v
dGVGcmFtZVBsYXRmb3JtRWxlbWVudCwgb2JqZWN0LT5yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVu
dCgpKTsKKwogICAgIC8vIENhY2hlIHRoZSBTdHJpbmdWYWx1ZSBvbmx5IGlmIGl0IGRpZmZlcnMg
ZnJvbSB0aGUgQXR0cmlidXRlZFRleHQuCiAgICAgYXV0byB2YWx1ZSA9IG9iamVjdC0+c3RyaW5n
VmFsdWUoKTsKICAgICBpZiAoIWF0dHJpYnV0ZWRUZXh0IHx8IHZhbHVlICE9IFN0cmluZyhbYXR0
cmlidXRlZFRleHQgc3RyaW5nXSkpCkBAIC0yMDIsNiArMjA0LDExIEBAIHVuc2lnbmVkIEFYSXNv
bGF0ZWRPYmplY3Q6OnRleHRMZW5ndGgoKSBjb25zdAogICAgIHJldHVybiAwOwogfQogCitSZXRh
aW5QdHI8aWQ+IEFYSXNvbGF0ZWRPYmplY3Q6OnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gcHJvcGVydHlWYWx1ZTxSZXRhaW5QdHI8aWQ+PihBWFByb3Bl
cnR5TmFtZTo6UmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQpOworfQorCiBSZXRhaW5QdHI8TlNB
dHRyaWJ1dGVkU3RyaW5nPiBBWElzb2xhdGVkT2JqZWN0OjphdHRyaWJ1dGVkU3RyaW5nRm9yVGV4
dE1hcmtlclJhbmdlKEFYVGV4dE1hcmtlclJhbmdlJiYgbWFya2VyUmFuZ2UsIFNwZWxsQ2hlY2sg
c3BlbGxDaGVjaykgY29uc3QKIHsKICAgICBpZiAoIW1hcmtlclJhbmdlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RN
YWMubW0KaW5kZXggYmEyYWNjZDgwZDA0Li5mYmJlMGJiMmEwNjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1h
Yy5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJBY2Nl
c3NpYmlsaXR5T2JqZWN0LmgiCiAKKyNpbXBvcnQgIkFYUmVtb3RlRnJhbWUuaCIKICNpbXBvcnQg
IkFjY2Vzc2liaWxpdHlMYWJlbC5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUxpc3QuaCIKICNp
bXBvcnQgIkNvbG9yQ29jb2EuaCIKQEAgLTUxLDYgKzUyLDcgQEAKICNpbXBvcnQgIldlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLmgiCiAjaW1wb3J0ICJXaWRnZXQuaCIKIAorI2ltcG9y
dCA8cGFsL3NwaS9jb2NvYS9OU0FjY2Vzc2liaWxpdHlTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkv
bWFjL05TU3BlbGxDaGVja2VyU1BJLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc0OSw2
ICs3NTEsMjkgQEAgUmV0YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4gYXR0cmlidXRlZFN0cmlu
Z0NyZWF0ZShOb2RlKiBub2RlLCBTdHJpbmdWaWV3IHRleHQKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCitzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gQVhSZW1vdGVGcmFtZTo6Z2VuZXJhdGVSZW1v
dGVUb2tlbigpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8qIHBhcmVudCA9IHBhcmVudE9iamVjdCgp
KSB7CisgICAgICAgIC8vIFdlIHVzZSB0aGUgcGFyZW50J3Mgd3JhcHBlciBzbyB0aGF0IHRoZSBy
ZW1vdGUgZnJhbWUgYWN0cyBhcyBhIHBhc3MgdGhyb3VnaCBmb3IgdGhlIHJlbW90ZSB0b2tlbiBi
cmlkZ2UuCisgICAgICAgIE5TRGF0YSAqZGF0YSA9IFtOU0FjY2Vzc2liaWxpdHlSZW1vdGVVSUVs
ZW1lbnQgcmVtb3RlVG9rZW5Gb3JMb2NhbFVJRWxlbWVudDpwYXJlbnQtPndyYXBwZXIoKV07Cisg
ICAgICAgIHJldHVybiBzdGQ6OnNwYW4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtkYXRh
IGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOworICAgIH0KKworICAgIHJldHVybiBzdGQ6OnNwYW48
Y29uc3QgdWludDhfdD4geyB9OworfQorCit2b2lkIEFYUmVtb3RlRnJhbWU6OmluaXRpYWxpemVQ
bGF0Zm9ybUVsZW1lbnRXaXRoUmVtb3RlVG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHRv
a2VuLCBpbnQgcHJvY2Vzc0lkZW50aWZpZXIpCit7CisgICAgbV9wcm9jZXNzSWRlbnRpZmllciA9
IHByb2Nlc3NJZGVudGlmaWVyOworICAgIGlmIChbd3JhcHBlcigpIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IoYWNjZXNzaWJpbGl0eVNldFByZXNlbnRlclByb2Nlc3NJZGVudGlmaWVyOild
KQorICAgICAgICBbKGlkKXdyYXBwZXIoKSBhY2Nlc3NpYmlsaXR5U2V0UHJlc2VudGVyUHJvY2Vz
c0lkZW50aWZpZXI6cHJvY2Vzc0lkZW50aWZpZXJdOworICAgIE5TRGF0YSAqdG9rZW5EYXRhID0g
W05TRGF0YSBkYXRhV2l0aEJ5dGVzOnRva2VuLmRhdGEoKSBsZW5ndGg6dG9rZW4uc2l6ZSgpXTsK
KyAgICBtX3JlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50ID0gYWRvcHROUyhbW05TQWNjZXNzaWJp
bGl0eVJlbW90ZVVJRWxlbWVudCBhbGxvY10gaW5pdFdpdGhSZW1vdGVUb2tlbjp0b2tlbkRhdGFd
KTsKKworICAgIGlmIChhdXRvKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKSkKKyAgICAgICAgY2Fj
aGUtPm9uUmVtb3RlRnJhbWVJbml0aWFsaXplZCgqdGhpcyk7Cit9CisKIG5hbWVzcGFjZSBBY2Nl
c3NpYmlsaXR5IHsKIAogUGxhdGZvcm1Sb2xlTWFwIGNyZWF0ZVBsYXRmb3JtUm9sZU1hcCgpCkBA
IC04OTEsNiArOTE2LDcgQEAgUGxhdGZvcm1Sb2xlTWFwIGNyZWF0ZVBsYXRmb3JtUm9sZU1hcCgp
CiAgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlN1cGVyc2NyaXB0LCBOU0FjY2Vzc2liaWxp
dHlHcm91cFJvbGUgfSwKICAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6TW9kZWwsIE5TQWNj
ZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAogICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpTdWdn
ZXN0aW9uLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmls
aXR5Um9sZTo6UmVtb3RlRnJhbWUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAogICAgIH07
CiAgICAgUGxhdGZvcm1Sb2xlTWFwIHJvbGVNYXA7CiAgICAgZm9yIChhdXRvJiByb2xlIDogcm9s
ZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0KaW5kZXggNjM1N2Zh
N2MyNzFiLi5mMTQyNDVmYzNiNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ckJhc2UubW0KQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgIkFYQ29yZU9iamVjdC5oIgogI2lt
cG9ydCAiQVhJc29sYXRlZE9iamVjdC5oIgogI2ltcG9ydCAiQVhPYmplY3RDYWNoZS5oIgorI2lt
cG9ydCAiQVhSZW1vdGVGcmFtZS5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93
LmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5TGlzdC5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0
eUxpc3RCb3guaCIKQEAgLTI2NSwxMyArMjY2LDEzIEBAIE5TQXJyYXkgKm1ha2VOU0FycmF5KGNv
bnN0IFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBj
CiAgICAgICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgICAgIGF1dG8gd3JhcHBlciA9IGNoaWxk
LT53cmFwcGVyKCk7Ci0KICAgICAgICAgLy8gV2Ugd2FudCB0byByZXR1cm4gdGhlIGF0dGFjaG1l
bnQgdmlldyBpbnN0ZWFkIG9mIHRoZSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBhdHRhY2htZW50
LAogICAgICAgICAvLyBvdGhlcndpc2UsIHdlIGdldCBwYWxpbmRyb21lIGVycm9ycyBpbiB0aGUg
QVggaGllcmFyY2h5LgogICAgICAgICBpZiAoY2hpbGQtPmlzQXR0YWNobWVudCgpKSB7CiAgICAg
ICAgICAgICBpZiAoaWQgYXR0YWNobWVudFZpZXcgPSB3cmFwcGVyLmF0dGFjaG1lbnRWaWV3KQog
ICAgICAgICAgICAgICAgIHJldHVybiBhdHRhY2htZW50VmlldzsKLSAgICAgICAgfQorICAgICAg
ICB9IGVsc2UgaWYgKGNoaWxkLT5pc1JlbW90ZUZyYW1lKCkpCisgICAgICAgICAgICByZXR1cm4g
Y2hpbGQtPnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkuZ2V0KCk7CiAKICAgICAgICAgcmV0
dXJuIHdyYXBwZXI7CiAgICAgfSkuYXV0b3JlbGVhc2UoKTsKQEAgLTM4OSw3ICszOTAsNyBAQCBO
U0FycmF5ICptYWtlTlNBcnJheShjb25zdCBXZWJDb3JlOjpBWENvcmVPYmplY3Q6OkFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciYgYwogLSAoQk9PTClpc0lzb2xhdGVkT2JqZWN0CiB7CiAjaWYg
RU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKLSAgICBhdXRvKiBiYWNraW5nT2Jq
ZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgUmVmUHRyIGJhY2tpbmdPYmplY3QgPSBk
eW5hbWljRG93bmNhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdD4oc2VsZi5iYXNlVXBkYXRlQmFja2lu
Z1N0b3JlKTsKICAgICByZXR1cm4gYmFja2luZ09iamVjdCAmJiBiYWNraW5nT2JqZWN0LT5pc0FY
SXNvbGF0ZWRPYmplY3RJbnN0YW5jZSgpOwogI2Vsc2UKICAgICByZXR1cm4gTk87CkBAIC01MjMs
NyArNTI0LDcgQEAgc3RhdGljIHZvaWQgY29udmVydFBhdGhUb1NjcmVlblNwYWNlRnVuY3Rpb24o
UGF0aENvbnZlcnNpb25JbmZvJiBjb252ZXJzaW9uLCBjb24KIAogLSAoQ0dSZWN0KWNvbnZlcnRS
ZWN0VG9TcGFjZTooY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JilyZWN0IHNwYWNlOihBY2Nlc3Np
YmlsaXR5Q29udmVyc2lvblNwYWNlKXNwYWNlCiB7Ci0gICAgYXV0byogYmFja2luZ09iamVjdCA9
IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0ciBiYWNraW5nT2JqZWN0ID0gZHluYW1p
Y0Rvd25jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3Q+KHNlbGYuYmFzZVVwZGF0ZUJhY2tpbmdTdG9y
ZSk7CiAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQogICAgICAgICByZXR1cm4gQ0dSZWN0WmVybzsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCA2YzVlNmI3YWNk
OWMuLjc1MDJkOWEwZTQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMu
bW0KQEAgLTM0LDYgKzM0LDcgQEAKICNpbXBvcnQgIkFYSXNvbGF0ZWRPYmplY3QuaCIKICNpbXBv
cnQgIkFYTG9nZ2VyLmgiCiAjaW1wb3J0ICJBWE9iamVjdENhY2hlLmgiCisjaW1wb3J0ICJBWFJl
bW90ZUZyYW1lLmgiCiAjaW1wb3J0ICJBWFRleHRNYXJrZXIuaCIKICNpbXBvcnQgIkFjY2Vzc2li
aWxpdHlBUklBR3JpZFJvdy5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUxhYmVsLmgiCkBAIC00
NzksNiArNDgwLDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogI2RlZmluZSBOU0FjY2Vz
c2liaWxpdHlUZXh0SW5wdXRNYXJrZWRUZXh0TWFya2VyUmFuZ2VBdHRyaWJ1dGUgQCJBWFRleHRJ
bnB1dE1hcmtlZFRleHRNYXJrZXJSYW5nZSIKICNlbmRpZgogCisjaWZuZGVmIGtBWENvbnZlcnRS
ZWxhdGl2ZUZyYW1lUGFyYW1ldGVyaXplZEF0dHJpYnV0ZQorI2RlZmluZSBrQVhDb252ZXJ0UmVs
YXRpdmVGcmFtZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgQCJBWENvbnZlcnRSZWxhdGl2ZUZyYW1l
IgorI2VuZGlmCisKIEBpbXBsZW1lbnRhdGlvbiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cgogCiAtICh2b2lkKWRldGFjaApAQCAtNjkyLDcgKzY5Nyw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8
QVhUZXh0TWFya2VyUmVmPiBwcmV2aW91c1RleHRNYXJrZXIoQVhPYmplY3RDYWNoZSogY2FjaGUs
IGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIGF1dG8qIGJhY2tp
bmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0
PiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CiAgICAgaWYgKCFiYWNraW5n
T2JqZWN0KQogICAgICAgICByZXR1cm4gbmlsOwogCkBAIC0xMjU2LDcgKzEyNjEsNyBAQCBBTExP
V19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKIAogLSAoTlNBcnJheSAqKXJlbmRlcldp
ZGdldENoaWxkcmVuCiB7Ci0gICAgYXV0byogYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5n
T2JqZWN0OworICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+IGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4
QmFja2luZ09iamVjdDsKICAgICBpZiAoIWJhY2tpbmdPYmplY3QgfHwgIWJhY2tpbmdPYmplY3Qt
PmlzV2lkZ2V0KCkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTEyNzksNyArMTI4NCw3IEBA
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAtIChpZClyZW1vdGVBY2Nlc3Np
YmlsaXR5UGFyZW50T2JqZWN0CiB7Ci0gICAgYXV0byogYmFja2luZ09iamVjdCA9IHNlbGYuYXhC
YWNraW5nT2JqZWN0OworICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+IGJhY2tpbmdPYmplY3QgPSBz
ZWxmLmF4QmFja2luZ09iamVjdDsKICAgICByZXR1cm4gYmFja2luZ09iamVjdCA/IGJhY2tpbmdP
YmplY3QtPnJlbW90ZVBhcmVudE9iamVjdCgpIDogbmlsOwogfQogCkBAIC0xMjk2LDcgKzEzMDEs
NyBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0VG9WZWN0b3IoTlNBcnJheSogYXJyYXksIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaAogCiAtIChBWFRleHRNYXJrZXJSYW5nZVJlZilz
ZWxlY3RlZFRleHRNYXJrZXJSYW5nZQogewotICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBzZWxm
LmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBiYWNraW5nT2JqZWN0
ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CiAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQogICAgICAg
ICByZXR1cm4gbmlsOwogCkBAIC0xMzY2LDEyICsxMzcxLDE4IEBAIHN0YXRpYyB2b2lkIFdlYlRy
YW5zZm9ybUNHUGF0aFRvTlNCZXppZXJQYXRoKHZvaWQqIGluZm8sIGNvbnN0IENHUGF0aEVsZW1l
bnQgKmVsCiAKIC0gKE5TU3RyaW5nKilyb2xlCiB7CisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4g
YmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIGlmICghYmFja2luZ09i
amVjdCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfQkVHSU4KLSAgICBpZiAoc2VsZi5heEJhY2tpbmdPYmplY3QtPmlzQXR0YWNobWVudCgpKQor
ICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkKICAgICAgICAgcmV0dXJuIFtb
c2VsZiBhdHRhY2htZW50Vmlld10gYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNz
aWJpbGl0eVJvbGVBdHRyaWJ1dGVdOworICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc1JlbW90ZUZy
YW1lKCkpCisgICAgICAgIHJldHVybiBbYmFja2luZ09iamVjdC0+cmVtb3RlRnJhbWVQbGF0Zm9y
bUVsZW1lbnQoKS5nZXQoKSBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmls
aXR5Um9sZUF0dHJpYnV0ZV07CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAot
ICAgIE5TU3RyaW5nICpzdHJpbmcgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+cm9sZVBsYXRmb3Jt
U3RyaW5nKCk7CisgICAgTlNTdHJpbmcgKnN0cmluZyA9IGJhY2tpbmdPYmplY3QtPnJvbGVQbGF0
Zm9ybVN0cmluZygpOwogICAgIGlmIChzdHJpbmcubGVuZ3RoKQogICAgICAgICByZXR1cm4gc3Ry
aW5nOwogICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlVbmtub3duUm9sZTsKQEAgLTEzNzksNyAr
MTM5MCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAtIChCT09MKWlz
RW1wdHlHcm91cAogewotICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09i
amVjdDsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJh
Y2tpbmdPYmplY3Q7CiAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKQEAgLTEzODgsNiArMTM5OSw5IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0VORAogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIAorICAgIGlmIChiYWNraW5nT2Jq
ZWN0LT5pc1JlbW90ZUZyYW1lKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIHJldHVy
biBbW3NlbGYgcm9sZV0gaXNFcXVhbDpOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGVdCiAgICAgICAg
ICYmIGJhY2tpbmdPYmplY3QtPmNoaWxkcmVuKCkuaXNFbXB0eSgpCiAgICAgICAgICYmICFbW3Nl
bGYgcmVuZGVyV2lkZ2V0Q2hpbGRyZW5dIGNvdW50XTsKQEAgLTEzOTYsNyArMTQxMCw3IEBAIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfQkVHSU4KIC0gKE5TU3RyaW5nKilzdWJyb2xlCiB7Ci0gICAgYXV0byogYmFja2luZ09i
amVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+IGJh
Y2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKICAgICBpZiAoIWJhY2tpbmdPYmpl
Y3QpCiAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTE0MTMsNyArMTQyNyw3IEBAIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAtIChOU1N0cmluZyopcm9sZURlc2NyaXB0aW9u
CiB7Ci0gICAgYXV0byogYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAg
IFJlZlB0cjxBWENvcmVPYmplY3Q+IGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVj
dDsKICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCiAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTE0
MjEsNiArMTQzNSw4IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAg
Ly8gYXR0YWNobWVudHMgaGF2ZSB0aGUgQVhJbWFnZSByb2xlLCBidXQgYSBkaWZmZXJlbnQgc3Vi
cm9sZQogICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkKICAgICAgICAgcmV0
dXJuIFtbc2VsZiBhdHRhY2htZW50Vmlld10gYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5T
QWNjZXNzaWJpbGl0eVJvbGVEZXNjcmlwdGlvbkF0dHJpYnV0ZV07CisgICAgaWYgKGJhY2tpbmdP
YmplY3QtPmlzUmVtb3RlRnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIFtiYWNraW5nT2JqZWN0LT5y
ZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpLmdldCgpIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpOU0FjY2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRpb25BdHRyaWJ1dGVdOwogQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBTdHJpbmcgcm9sZURlc2NyaXB0aW9uID0g
YmFja2luZ09iamVjdC0+cm9sZURlc2NyaXB0aW9uKCk7CkBAIC0xNDczLDYgKzE0ODksMjggQEAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgcmV0dXJuIGF4U2Nyb2xsVmll
dyA/IFtheFNjcm9sbFZpZXctPnBsYXRmb3JtV2lkZ2V0KCkgd2luZG93XSA6IG5pbDsKIH0KIAor
LSAoTlNBcnJheSAqKV90cmFuc2Zvcm1TcGVjaWFsQ2hpbGRyZW5DYXNlczooUmVmUHRyPEFYQ29y
ZU9iamVjdD4pYmFja2luZ09iamVjdAoreworI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQorICAg
IGlmIChiYWNraW5nT2JqZWN0LT5pc01vZGVsKCkpIHsKKyAgICAgICAgYXV0byBtb2RlbENoaWxk
cmVuID0gYmFja2luZ09iamVjdC0+bW9kZWxFbGVtZW50Q2hpbGRyZW4oKTsKKyAgICAgICAgaWYg
KG1vZGVsQ2hpbGRyZW4uc2l6ZSgpKSB7CisgICAgICAgICAgICByZXR1cm4gY3JlYXRlTlNBcnJh
eShXVEZNb3ZlKG1vZGVsQ2hpbGRyZW4pLCBbXSAoYXV0byYmIGNoaWxkKSAtPiBpZCB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGNoaWxkLmdldCgpOworICAgICAgICAgICAgfSkuYXV0b3JlbGVh
c2UoKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCisgICAgY29uc3QgYXV0byYgY2hpbGRy
ZW4gPSBiYWNraW5nT2JqZWN0LT5jaGlsZHJlbigpOworICAgIGlmICghY2hpbGRyZW4uc2l6ZSgp
KSB7CisgICAgICAgIGlmIChOU0FycmF5ICpjaGlsZHJlbiA9IFtzZWxmIHJlbmRlcldpZGdldENo
aWxkcmVuXSkKKyAgICAgICAgICAgIHJldHVybiBjaGlsZHJlbjsKKyAgICB9CisKKyAgICByZXR1
cm4gbmlsOworfQorCiAvLyBGSVhNRTogc3BsaXQgdXAgdGhpcyBmdW5jdGlvbiBpbiBhIGJldHRl
ciB3YXkuCiAvLyBzdWdnZXN0aW9uczogVXNlIGEgaGFzaCB0YWJsZSB0aGF0IG1hcHMgYXR0cmli
dXRlIG5hbWVzIHRvIGZ1bmN0aW9uIGNhbGxzLAogLy8gb3IgbWF5YmUgcG9pbnRlcnMgdG8gbWVt
YmVyIGZ1bmN0aW9ucwpAQCAtMTUzMSwyMiArMTU2OSw5IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1Q
TEVNRU5UQVRJT05TX0VORAogICAgIH0KIAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGVdIHx8IFthdHRyaWJ1dGVO
YW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkluTmF2aWdhdGlvbk9y
ZGVyQXR0cmlidXRlXSkgewotI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQotICAgICAgICBpZiAo
YmFja2luZ09iamVjdC0+aXNNb2RlbCgpKSB7Ci0gICAgICAgICAgICBhdXRvIG1vZGVsQ2hpbGRy
ZW4gPSBiYWNraW5nT2JqZWN0LT5tb2RlbEVsZW1lbnRDaGlsZHJlbigpOwotICAgICAgICAgICAg
aWYgKG1vZGVsQ2hpbGRyZW4uc2l6ZSgpKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0
ZU5TQXJyYXkoV1RGTW92ZShtb2RlbENoaWxkcmVuKSwgW10gKGF1dG8mJiBjaGlsZCkgLT4gaWQg
ewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGQuZ2V0KCk7Ci0gICAgICAgICAgICAg
ICAgfSkuYXV0b3JlbGVhc2UoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotI2VuZGlmCi0K
LSAgICAgICAgY29uc3QgYXV0byYgY2hpbGRyZW4gPSBiYWNraW5nT2JqZWN0LT5jaGlsZHJlbigp
OwotICAgICAgICBpZiAoY2hpbGRyZW4uaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBpZiAoTlNB
cnJheSAqd2lkZ2V0Q2hpbGRyZW4gPSBbc2VsZiByZW5kZXJXaWRnZXRDaGlsZHJlbl0pCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIHdpZGdldENoaWxkcmVuOwotICAgICAgICB9CisgICAgICAgIE5T
QXJyYXkgKnNwZWNpYWxDaGlsZHJlbiA9IFtzZWxmIF90cmFuc2Zvcm1TcGVjaWFsQ2hpbGRyZW5D
YXNlczpiYWNraW5nT2JqZWN0XTsKKyAgICAgICAgaWYgKHNwZWNpYWxDaGlsZHJlbi5jb3VudCkK
KyAgICAgICAgICAgIHJldHVybiBzcGVjaWFsQ2hpbGRyZW47CiAKICAgICAgICAgLy8gVGhlIHRy
ZWUncyAoQVhPdXRsaW5lKSBjaGlsZHJlbiBhcmUgc3VwcG9zZWQgdG8gYmUgaXRzIHJvd3MgYW5k
IGNvbHVtbnMuCiAgICAgICAgIC8vIFRoZSBBUklBIHNwZWMgZG9lc24ndCBoYXZlIGNvbHVtbnMs
IHNvIHdlIGp1c3QgbmVlZCByb3dzLgpAQCAtMTU1Nyw3ICsxNTgyLDcgQEAgQUxMT1dfREVQUkVD
QVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc1Ry
ZWVJdGVtKCkpCiAgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVjdC0+
YXJpYVRyZWVJdGVtQ29udGVudCgpKTsKIAotICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoY2hp
bGRyZW4pOworICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVjdC0+Y2hpbGRy
ZW4oKSk7CiAgICAgfQogCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzog
TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZV0pIHsKQEAgLTE3MTMsMTYg
KzE3MzgsMTQgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5RW5hYmxlZEF0
dHJpYnV0ZV0pCiAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6IGJhY2tp
bmdPYmplY3QtPmlzRW5hYmxlZCgpXTsKIAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVNpemVBdHRyaWJ1dGVdKSB7Ci0gICAgICAgIGF1dG8g
c2l6ZSA9IGJhY2tpbmdPYmplY3QtPnNpemUoKTsKLSAgICAgICAgcmV0dXJuIFtOU1ZhbHVlIHZh
bHVlV2l0aFNpemU6TlNNYWtlU2l6ZShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpXTsKLSAg
ICB9CisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxp
dHlTaXplQXR0cmlidXRlXSkKKyAgICAgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aFNpemU6
KENHU2l6ZSliYWNraW5nT2JqZWN0LT5zaXplKCldOwogCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1l
IGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlQcmltYXJ5U2NyZWVuSGVpZ2h0QXR0cmli
dXRlXSkKICAgICAgICAgcmV0dXJuIEAoYmFja2luZ09iamVjdC0+cHJpbWFyeVNjcmVlblJlY3Qo
KS5oZWlnaHQoKSk7CiAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5T
QWNjZXNzaWJpbGl0eVBvc2l0aW9uQXR0cmlidXRlXSkKLSAgICAgICAgcmV0dXJuIEAoQ0dQb2lu
dChiYWNraW5nT2JqZWN0LT5zY3JlZW5SZWxhdGl2ZVBvc2l0aW9uKCkpKTsKKyAgICAgICAgcmV0
dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aFBvaW50OihDR1BvaW50KWJhY2tpbmdPYmplY3QtPnNjcmVl
blJlbGF0aXZlUG9zaXRpb24oKV07CiAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRv
U3RyaW5nOk5TQWNjZXNzaWJpbGl0eVBhdGhBdHRyaWJ1dGVdKQogICAgICAgICByZXR1cm4gW3Nl
bGYgcGF0aF07CkBAIC0yMjM3LDYgKzIyNjAsMTAgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1F
TlRBVElPTlNfRU5ECiAgICAgICAgIHJldHVybiByYW5nZSA/IHJhbmdlLnBsYXRmb3JtRGF0YSgp
LmJyaWRnaW5nQXV0b3JlbGVhc2UoKSA6IG5pbDsKICAgICB9CiAKKyAgICAvLyBWb2ljZU92ZXIg
cHJvcGVydHkgdG8gaWdub3JlIGNlcnRhaW4gZ3JvdXBzLgorICAgIGlmIChbYXR0cmlidXRlTmFt
ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWEF1dG9JbnRlcmFjdGFibGUiXSkKKyAgICAgICAgcmV0dXJu
IEAoYmFja2luZ09iamVjdC0+aXNSZW1vdGVGcmFtZSgpKTsKKwogICAgIC8vIFVzZWQgYnkgTGF5
b3V0VGVzdHMgb25seSwgbm90IGJ5IEFUIGNsaWVudHMuCiAgICAgaWYgKFVOTElLRUxZKFthdHRy
aWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpAIkFYQVJJQVJvbGUiXSkpCiAgICAgICAgIHJldHVy
biBiYWNraW5nT2JqZWN0LT5jb21wdXRlZFJvbGVTdHJpbmcoKTsKQEAgLTIzMzAsNyArMjM1Nyw4
IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICBpZiAoYXhP
YmplY3QtPmlzQXR0YWNobWVudCgpKSB7CiAgICAgICAgICAgICBpZiAoaWQgYXR0YWNobWVudFZp
ZXcgPSBbYXhPYmplY3QtPndyYXBwZXIoKSBhdHRhY2htZW50Vmlld10pCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGF0dGFjaG1lbnRWaWV3OwotICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAo
YXhPYmplY3QtPmlzUmVtb3RlRnJhbWUoKSkKKyAgICAgICAgICAgIHJldHVybiBheE9iamVjdC0+
cmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKS5nZXQoKTsKIAogICAgICAgICAvLyBPbmx5IGNh
bGwgb3V0IHRvIHRoZSBtYWluLXRocmVhZCBpZiB0aGlzIG9iamVjdCBoYXMgYSBiYWNraW5nIHdp
ZGdldCB0byBxdWVyeS4KICAgICAgICAgaWYgKGF4T2JqZWN0LT5pc1dpZGdldCgpKSB7CkBAIC0y
NTA3LDYgKzI1MzUsMTAgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAg
ICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzV2ViQXJlYSgpKQogICAgICAgICByZXR1cm4gd2ViQXJl
YVBhcmFtQXR0cnM7CiAKKyAgICAvLyBUaGUgb2JqZWN0IHRoYXQgc2VydmVzIHVwIHRoZSByZW1v
dGUgZnJhbWUgYWxzbyBpcyB0aGUgb25lIHRoYXQgZG9lcyB0aGUgZnJhbWUgY29udmVyc2lvbi4K
KyAgICBpZiAoYmFja2luZ09iamVjdC0+aGFzUmVtb3RlRnJhbWVDaGlsZCgpKQorICAgICAgICBy
ZXR1cm4gW3BhcmFtQXR0cnMgYXJyYXlCeUFkZGluZ09iamVjdDprQVhDb252ZXJ0UmVsYXRpdmVG
cmFtZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdOworCiAgICAgcmV0dXJuIHBhcmFtQXR0cnM7CiB9
CiAKQEAgLTI1NzgsNyArMjYxMCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VO
RAogewogICAgIEFYVFJBQ0UoIldlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2li
aWxpdHlQZXJmb3JtU2hvd01lbnVBY3Rpb24iX3MpOwogCi0gICAgYXV0byogYmFja2luZ09iamVj
dCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+IGJhY2tp
bmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKICAgICBpZiAoIWJhY2tpbmdPYmplY3Qp
IHsKICAgICAgICAgQVhMT0cobWFrZVN0cmluZygiTm8gYmFja2luZ09iamVjdCBmb3Igd3JhcHBl
ciAiLCBoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHNlbGYpKSkpOwogICAgICAgICBy
ZXR1cm47CkBAIC0yODIyLDcgKzI4NTQsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFU
SU9OU19FTkQKICAgICBpZiAoIXJhbmdlLmxlbmd0aCkKICAgICAgICAgcmV0dXJuIG5pbDsKIAot
ICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQ
dHI8QVhDb3JlT2JqZWN0PiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CiAg
ICAgaWYgKCFiYWNraW5nT2JqZWN0KQogICAgICAgICByZXR1cm4gbmlsOwogCkBAIC0zMTc3LDYg
KzMyMDksMTggQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB3aWRnZXRDaGlsZHJlbjsKICAgICAgICAgICAgICAgICBjcml0
ZXJpYS5yZXN1bHRzTGltaXQgLT0gW3dpZGdldENoaWxkcmVuIGNvdW50XTsKICAgICAgICAgICAg
IH0KKyAgICAgICAgfSBlbHNlIGlmIChiYWNraW5nT2JqZWN0LT5pc1JlbW90ZUZyYW1lKCkKKyAg
ICAgICAgICAgICYmIGNyaXRlcmlhLnNlYXJjaEtleXMuY29udGFpbnMoQWNjZXNzaWJpbGl0eVNl
YXJjaEtleTo6QW55VHlwZSkKKyAgICAgICAgICAgICYmICghY3JpdGVyaWEudmlzaWJsZU9ubHkg
fHwgYmFja2luZ09iamVjdC0+aXNWaXNpYmxlKCkpKSB7CisgICAgICAgICAgICBOU0FycmF5ICpy
ZW1vdGVGcmFtZUNoaWxkcmVuID0gW3NlbGYgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5T
QWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXTsKKyAgICAgICAgICAgIEFTU0VSVChyZW1v
dGVGcmFtZUNoaWxkcmVuLmNvdW50ID09IDEpOworICAgICAgICAgICAgaWYgKHJlbW90ZUZyYW1l
Q2hpbGRyZW4uY291bnQgPT0gMSkgeworICAgICAgICAgICAgICAgIE5TVUludGVnZXIgaW5jbHVk
ZWRDaGlsZHJlbkNvdW50ID0gc3RkOjptaW4oW3JlbW90ZUZyYW1lQ2hpbGRyZW4gY291bnRdLCBO
U1VJbnRlZ2VyKGNyaXRlcmlhLnJlc3VsdHNMaW1pdCkpOworICAgICAgICAgICAgICAgIHdpZGdl
dENoaWxkcmVuID0gW3JlbW90ZUZyYW1lQ2hpbGRyZW4gc3ViYXJyYXlXaXRoUmFuZ2U6TlNNYWtl
UmFuZ2UoMCwgaW5jbHVkZWRDaGlsZHJlbkNvdW50KV07CisgICAgICAgICAgICAgICAgaWYgKFt3
aWRnZXRDaGlsZHJlbiBjb3VudF0gPj0gY3JpdGVyaWEucmVzdWx0c0xpbWl0KQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gcmVtb3RlRnJhbWVDaGlsZHJlbjsKKyAgICAgICAgICAgICAgICBj
cml0ZXJpYS5yZXN1bHRzTGltaXQgLT0gW3dpZGdldENoaWxkcmVuIGNvdW50XTsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciByZXN1bHRzOwpAQCAtMzY2OSw2ICszNzEzLDExIEBAIEFMTE9X
X0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIGlmIChVTkxJS0VMWShbYXR0cmli
dXRlIGlzRXF1YWxUb1N0cmluZzpfQVhUZXh0TWFya2VyUmFuZ2VGb3JOU1JhbmdlQXR0cmlidXRl
XSkpCiAgICAgICAgIHJldHVybiBiYWNraW5nT2JqZWN0LT50ZXh0TWFya2VyUmFuZ2VGb3JOU1Jh
bmdlKHJhbmdlKS5wbGF0Zm9ybURhdGEoKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiAKKyAgICBp
ZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6a0FYQ29udmVydFJlbGF0aXZlRnJhbWVQYXJh
bWV0ZXJpemVkQXR0cmlidXRlXSkgeworICAgICAgICBhdXRvKiBwYXJlbnQgPSBiYWNraW5nT2Jq
ZWN0LT5wYXJlbnRPYmplY3QoKTsKKyAgICAgICAgcmV0dXJuIHBhcmVudCA/IFtOU1ZhbHVlIHZh
bHVlV2l0aFJlY3Q6cGFyZW50LT5jb252ZXJ0RnJhbWVUb1NwYWNlKEZsb2F0UmVjdChyZWN0KSwg
QWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZTo6UGFnZSldIDogbmlsOworICAgIH0KKwogICAg
IC8vIFRoZXJlIGFyZSBzb21lIHBhcmFtZXRlcnMgdGhhdCBzdXBlciBoYW5kbGVzIHRoYXQgYXJl
IG5vdCBleHBsaWNpdGx5IHJldHVybmVkIGJ5IHRoZSBsaXN0IG9mIHRoZSBlbGVtZW50J3MgYXR0
cmlidXRlcy4KICAgICAvLyBJbiB0aGF0IGNhc2UgaXQgbXVzdCBiZSBwYXNzZWQgdG8gc3VwZXIu
CiAgICAgcmV0dXJuIFtzdXBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6YXR0cmlidXRl
IGZvclBhcmFtZXRlcjpwYXJhbWV0ZXJdOwpAQCAtMzcyMiw4ICszNzcxLDEwIEBAIEFMTE9XX0RF
UFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICBpZiAoIWNoaWxkKQogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyICpj
aGlsZFdyYXBwZXIgPSBjaGlsZC0+d3JhcHBlcigpOwotICAgICAgICBpZiAoY2hpbGRXcmFwcGVy
ID09IHRhcmdldENoaWxkIHx8IChjaGlsZC0+aXNBdHRhY2htZW50KCkgJiYgW2NoaWxkV3JhcHBl
ciBhdHRhY2htZW50Vmlld10gPT0gdGFyZ2V0Q2hpbGQpKQorICAgICAgICBpZiAoY2hpbGRXcmFw
cGVyID09IHRhcmdldENoaWxkIHx8IChjaGlsZC0+aXNBdHRhY2htZW50KCkgJiYgW2NoaWxkV3Jh
cHBlciBhdHRhY2htZW50Vmlld10gPT0gdGFyZ2V0Q2hpbGQpCisgICAgICAgICAgICB8fCAoY2hp
bGQtPmlzUmVtb3RlRnJhbWUoKSAmJiBjaGlsZC0+cmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQo
KSA9PSB0YXJnZXRDaGlsZCkpIHsKICAgICAgICAgICAgIHJldHVybiBpOworICAgICAgICB9CiAg
ICAgfQogICAgIHJldHVybiBOU05vdEZvdW5kOwogfQpAQCAtMzc0MCw3ICszNzkxLDcgQEAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBpZiAoW2F0dHJpYnV0ZSBpc0Vx
dWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGVdKSB7CiAgICAgICAg
IC8vIFRyZWUgaXRlbXMgb2JqZWN0IHJldHVybnMgYSBkaWZmZXJlbnQgc2V0IG9mIGNoaWxkcmVu
IHRoYW4gdGhvc2UgdGhhdCBhcmUgaW4gY2hpbGRyZW4oKQogICAgICAgICAvLyBiZWNhdXNlIGFu
IEFYT3V0bGluZSAodGhlIG1hYyByb2xlIGlzIGJlY29tZXMpIGhhcyBzb21lIG9kZCBzdGlwdWxh
dGlvbnMuCi0gICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc1RyZWUoKSB8fCBiYWNraW5nT2Jq
ZWN0LT5pc1RyZWVJdGVtKCkpCisgICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc1RyZWUoKSB8
fCBiYWNraW5nT2JqZWN0LT5pc1RyZWVJdGVtKCkgfHwgYmFja2luZ09iamVjdC0+aXNSZW1vdGVG
cmFtZSgpKQogICAgICAgICAgICAgcmV0dXJuIFtbc2VsZiBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGVdIGNvdW50XTsKIAogICAgICAg
ICBhdXRvIGNoaWxkcmVuU2l6ZSA9IGJhY2tpbmdPYmplY3QtPmNoaWxkcmVuKCkuc2l6ZSgpOwpA
QCAtMzc3NiwxNiArMzgyNyw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAog
CiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNoaWxk
cmVuQXR0cmlidXRlXSkgewogICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+Y2hpbGRyZW4oKS5p
c0VtcHR5KCkpIHsKLSAgICAgICAgICAgIE5TQXJyYXkgKmNoaWxkcmVuID0gbmlsOwotI2lmIEVO
QUJMRShNT0RFTF9FTEVNRU5UKQotICAgICAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzTW9k
ZWwoKSkgewotICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gY3JlYXRlTlNBcnJheShiYWNraW5n
T2JqZWN0LT5tb2RlbEVsZW1lbnRDaGlsZHJlbigpLCBbXSAoYXV0byYmIGNoaWxkKSAtPiBpZCB7
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZC5nZXQoKTsKLSAgICAgICAgICAgICAg
ICB9KS5hdXRvcmVsZWFzZSgpOwotICAgICAgICAgICAgfSBlbHNlCi0jZW5kaWYKLSAgICAgICAg
ICAgICAgICBjaGlsZHJlbiA9IFtzZWxmIHJlbmRlcldpZGdldENoaWxkcmVuXTsKLSAgICAgICAg
ICAgIAorICAgICAgICAgICAgTlNBcnJheSAqY2hpbGRyZW4gPSBbc2VsZiBfdHJhbnNmb3JtU3Bl
Y2lhbENoaWxkcmVuQ2FzZXM6YmFja2luZ09iamVjdF07CiAgICAgICAgICAgICBpZiAoIWNoaWxk
cmVuKQogICAgICAgICAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTM4MTYsOCArMzg1OCwxMyBA
QCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgICAgICAgICAgLy8gVGhl
IGF0dGFjaG1lbnQgdmlldyBzaG91bGQgYmUgcmV0dXJuZWQsIG90aGVyd2lzZSBBWCBwYWxpbmRy
b21lIGVycm9ycyBvY2N1ci4KICAgICAgICAgICAgIGlkIGF0dGFjaG1lbnRWaWV3ID0gbmlsOwot
ICAgICAgICAgICAgaWYgKFt3cmFwcGVyIGlzS2luZE9mQ2xhc3M6W1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyIGNsYXNzXV0gJiYgd3JhcHBlci5heEJhY2tpbmdPYmplY3QgJiYgd3JhcHBl
ci5heEJhY2tpbmdPYmplY3QtPmlzQXR0YWNobWVudCgpKQotICAgICAgICAgICAgICAgIGF0dGFj
aG1lbnRWaWV3ID0gW3dyYXBwZXIgYXR0YWNobWVudFZpZXddOworICAgICAgICAgICAgaWYgKFt3
cmFwcGVyIGlzS2luZE9mQ2xhc3M6W1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGNsYXNz
XV0gJiYgd3JhcHBlci5heEJhY2tpbmdPYmplY3QpIHsKKyAgICAgICAgICAgICAgICBpZiAod3Jh
cHBlci5heEJhY2tpbmdPYmplY3QtPmlzQXR0YWNobWVudCgpKQorICAgICAgICAgICAgICAgICAg
ICBhdHRhY2htZW50VmlldyA9IFt3cmFwcGVyIGF0dGFjaG1lbnRWaWV3XTsKKyAgICAgICAgICAg
ICAgICBlbHNlIGlmICh3cmFwcGVyLmF4QmFja2luZ09iamVjdC0+aXNSZW1vdGVGcmFtZSgpKQor
ICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50VmlldyA9IHdyYXBwZXIuYXhCYWNraW5nT2Jq
ZWN0LT5yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpLmdldCgpOworICAgICAgICAgICAgfQor
CiAgICAgICAgICAgICBbc3ViYXJyYXkgYWRkT2JqZWN0OmF0dGFjaG1lbnRWaWV3ID8gYXR0YWNo
bWVudFZpZXcgOiB3cmFwcGVyXTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuY3BwCmluZGV4IDI1OGMxNGI4NmE4Yi4uNTcxN2FkZTJhNDUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtMTA4NSw2ICsxMDg1LDExIEBAIFJlbW90
ZUFYT2JqZWN0UmVmIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmFjY2Vzc2liaWxpdHlSZW1vdGVP
YmplY3QoKQogICAgIHJldHVybiBudWxscHRyOwogfQogCitJbnRQb2ludCBFbXB0eUZyYW1lTG9h
ZGVyQ2xpZW50OjphY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKQoreworICAgIHJldHVy
biB7IH07Cit9CisKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQogdm9p
ZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpzZXRBWElzb2xhdGVkVHJlZVJvb3QoV2ViQ29yZTo6
QVhDb3JlT2JqZWN0KikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxv
YWRlckNsaWVudC5oCmluZGV4IDA5OGNlNThkMTExOS4uNDY3MmRlMjk4NTMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTE4NCw2ICsx
ODQsNyBAQCBwcml2YXRlOgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmVtb3RlQVhPYmpl
Y3RSZWYgYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpIGZpbmFsOworICAgIEludFBvaW50IGFj
Y2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCgpIGZpbmFsOwogI2lmIEVOQUJMRShBQ0NFU1NJ
QklMSVRZX0lTT0xBVEVEX1RSRUUpCiAgICAgdm9pZCBzZXRBWElzb2xhdGVkVHJlZVJvb3QoV2Vi
Q29yZTo6QVhDb3JlT2JqZWN0KikgZmluYWw7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Mb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTG9jYWxGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGIyZDU2ZjA1MGFlOS4uMDBkM2Fk
NWUyY2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9jYWxGcmFtZUxvYWRl
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2NhbEZyYW1lTG9hZGVyQ2xp
ZW50LmgKQEAgLTI5MCw2ICsyOTAsNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgLy8gQWxsb3cgYW4gYWNjZXNzaWJpbGl0eSBvYmplY3QgdG8gcmV0cmlldmUgYSBGcmFtZSBw
YXJlbnQgaWYgdGhlcmUncyBubyBQbGF0Zm9ybVdpZGdldC4KICAgICB2aXJ0dWFsIFJlbW90ZUFY
T2JqZWN0UmVmIGFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSA9IDA7CisgICAgdmlydHVhbCBJ
bnRQb2ludCBhY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKSA9IDA7CiAjaWYgRU5BQkxF
KEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKICAgICB2aXJ0dWFsIHZvaWQgc2V0QVhJc29s
YXRlZFRyZWVSb290KEFYQ29yZU9iamVjdCopID0gMDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
aW5kZXggNWQyZmVhYjY1Nzk2Li44NDI2YzhmMzcwZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAt
MjIwOCw4ICsyMjA4LDE1IEBAIGJvb2wgUGFnZTo6c2hvdWxkVXBkYXRlQWNjZXNzaWJpbGl0eVJl
Z2lvbnMoKSBjb25zdAogICAgIEFTU0VSVChtX2xhc3RSZW5kZXJpbmdVcGRhdGVUaW1lc3RhbXAg
Pj0gbV9sYXN0QWNjZXNzaWJpbGl0eU9iamVjdFJlZ2lvbnNVcGRhdGUpOwogICAgIGlmICgobV9s
YXN0UmVuZGVyaW5nVXBkYXRlVGltZXN0YW1wIC0gbV9sYXN0QWNjZXNzaWJpbGl0eU9iamVjdFJl
Z2lvbnNVcGRhdGUpIDwgdXBkYXRlSW50ZXJ2YWwpIHsKICAgICAgICAgLy8gV2UndmUgYWxyZWFk
eSB1cGRhdGVkIGFjY2Vzc2liaWxpdHkgb2JqZWN0IHJlY3RzIHJlY2VudGx5LCBzbyBza2lwIHRo
aXMgdXBkYXRlIGFuZCBzY2hlZHVsZSBhbm90aGVyIGZvciBsYXRlci4KLSAgICAgICAgYXV0byog
bG9jYWxNYWluRnJhbWUgPSBkeW5hbWljRG93bmNhc3Q8TG9jYWxGcmFtZT4obWFpbkZyYW1lKCkp
OwotICAgICAgICBSZWZQdHIgbWFpbkRvY3VtZW50ID0gbG9jYWxNYWluRnJhbWUgPyBsb2NhbE1h
aW5GcmFtZS0+ZG9jdW1lbnQoKSA6IG51bGxwdHI7CisKKyAgICAgICAgUmVmUHRyPERvY3VtZW50
PiBtYWluRG9jdW1lbnQgPSBudWxscHRyOworICAgICAgICBpZiAoYXV0byogbG9jYWxNYWluRnJh
bWUgPSBkeW5hbWljRG93bmNhc3Q8TG9jYWxGcmFtZT4obWFpbkZyYW1lKCkpKQorICAgICAgICAg
ICAgbWFpbkRvY3VtZW50ID0gbG9jYWxNYWluRnJhbWUgPyBsb2NhbE1haW5GcmFtZS0+ZG9jdW1l
bnQoKSA6IG51bGxwdHI7CisgICAgICAgIGVsc2UgaWYgKGF1dG8qIHJlbW90ZUZyYW1lID0gZHlu
YW1pY0Rvd25jYXN0PFJlbW90ZUZyYW1lPihtYWluRnJhbWUoKSkpIHsKKyAgICAgICAgICAgIGlm
IChhdXRvKiBvd25lciA9IHJlbW90ZUZyYW1lLT5vd25lckVsZW1lbnQoKSkKKyAgICAgICAgICAg
ICAgICBtYWluRG9jdW1lbnQgPSAmKG93bmVyLT5kb2N1bWVudCgpKTsKKyAgICAgICAgfQorCiAg
ICAgICAgIC8vIElmIGFjY2Vzc2liaWxpdHkgaXMgZW5hYmxlZCBhbmQgd2UgaGF2ZSBhIG1haW4g
ZG9jdW1lbnQsIHRoYXQgZG9jdW1lbnQgc2hvdWxkIGhhdmUgYW4gQVggb2JqZWN0IGNhY2hlLgog
ICAgICAgICBBU1NFUlQoIW1haW5Eb2N1bWVudCB8fCBtYWluRG9jdW1lbnQtPmV4aXN0aW5nQVhP
YmplY3RDYWNoZSgpKTsKICAgICAgICAgaWYgKENoZWNrZWRQdHIgdG9wQXhPYmplY3RDYWNoZSA9
IG1haW5Eb2N1bWVudCA/IG1haW5Eb2N1bWVudC0+ZXhpc3RpbmdBWE9iamVjdENhY2hlKCkgOiBu
dWxscHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmNwcAppbmRleCA3MTJjMGIyMjBmZDAu
LjUwYjBhMjVjZmRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFt
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5jcHAKQEAgLTEwMCw2
ICsxMDAsMjEgQEAgdm9pZCBSZW1vdGVGcmFtZTo6YnJvYWRjYXN0RnJhbWVSZW1vdmFsVG9PdGhl
clByb2Nlc3NlcygpCiAgICAgbV9jbGllbnQtPmJyb2FkY2FzdEZyYW1lUmVtb3ZhbFRvT3RoZXJQ
cm9jZXNzZXMoKTsKIH0KIAordm9pZCBSZW1vdGVGcmFtZTo6dXBkYXRlUmVtb3RlRnJhbWVBY2Nl
c3NpYmlsaXR5T2Zmc2V0KEludFBvaW50IG9mZnNldCkKK3sKKyAgICBtX2NsaWVudC0+dXBkYXRl
UmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KGZyYW1lSUQoKSwgb2Zmc2V0KTsKK30KKwor
dm9pZCBSZW1vdGVGcmFtZTo6dW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJv
Y2Vzc0lkZW50aWZpZXIpCit7CisgICAgbV9jbGllbnQtPnVuYmluZFJlbW90ZUFjY2Vzc2liaWxp
dHlGcmFtZXMocHJvY2Vzc0lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUZyYW1lOjpiaW5k
UmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIHN0ZDo6c3Bh
bjxjb25zdCB1aW50OF90PiBkYXRhVG9rZW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
c3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBpbnQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorewor
ICAgIHJldHVybiBtX2NsaWVudC0+YmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMocHJvY2Vz
c0lkZW50aWZpZXIsIGZyYW1lSUQoKSwgZGF0YVRva2VuLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7Cit9CisKIEZyYW1lVmlldyogUmVtb3RlRnJhbWU6OnZpcnR1YWxWaWV3KCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV92aWV3LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9SZW1vdGVGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5oCmlu
ZGV4IDI3ZWQ4NDBkMDgyZS4uY2Q4MmE3OWNjMzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1JlbW90ZUZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFt
ZS5oCkBAIC0zMyw2ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSW50
UG9pbnQ7CiBjbGFzcyBSZW1vdGVET01XaW5kb3c7CiBjbGFzcyBSZW1vdGVGcmFtZUNsaWVudDsK
IGNsYXNzIFJlbW90ZUZyYW1lVmlldzsKQEAgLTYyLDYgKzYzLDkgQEAgcHVibGljOgogICAgIE1h
cmthYmxlPExheWVySG9zdGluZ0NvbnRleHRJZGVudGlmaWVyPiBsYXllckhvc3RpbmdDb250ZXh0
SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJIb3N0aW5nQ29udGV4dElkZW50aWZp
ZXI7IH0KIAogICAgIFN0cmluZyByZW5kZXJUcmVlQXNUZXh0KHNpemVfdCBiYXNlSW5kZW50LCBP
cHRpb25TZXQ8UmVuZGVyQXNUZXh0RmxhZz4pOworICAgIHZvaWQgYmluZFJlbW90ZUFjY2Vzc2li
aWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBzdGQ6OnNwYW48Y29uc3QgdWludDhf
dD4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBpbnQp
PiYmKTsKKyAgICB2b2lkIHVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChJbnRQ
b2ludCk7CisgICAgdm9pZCB1bmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCk7CiAK
IHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgUmVtb3RlRnJhbWUoUGFnZSYs
IFVuaXF1ZVJlZjxSZW1vdGVGcmFtZUNsaWVudD4mJiwgRnJhbWVJZGVudGlmaWVyLCBIVE1MRnJh
bWVPd25lckVsZW1lbnQqLCBGcmFtZSogcGFyZW50LCBNYXJrYWJsZTxMYXllckhvc3RpbmdDb250
ZXh0SWRlbnRpZmllcj4sIEZyYW1lKiBvcGVuZXIgPSBudWxscHRyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUmVtb3RlRnJhbWVDbGllbnQuaAppbmRleCA0ZWZkMTAzZjM5MTIuLjU0MWEwZDAxYzU2MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZUNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVDbGllbnQuaApAQCAtMzAsNiArMzAsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERhdGFTZWdtZW50OwogY2xhc3MgRnJh
bWVMb2FkUmVxdWVzdDsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBTZWN1cml0eU9yaWdpbkRhdGE7
CkBAIC00OCw2ICs0OSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyByZW5kZXJUcmVl
QXNUZXh0KHNpemVfdCBiYXNlSW5kZW50LCBPcHRpb25TZXQ8UmVuZGVyQXNUZXh0RmxhZz4pID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgYnJvYWRjYXN0RnJhbWVSZW1vdmFsVG9PdGhlclByb2Nlc3Nl
cygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VQYWdlKCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBiaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIs
IEZyYW1lSWRlbnRpZmllciB0YXJnZXQsIGNvbnN0IHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBk
YXRhVG9rZW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpzcGFuPGNvbnN0IHVp
bnQ4X3Q+LCBpbnQpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlbW90ZUZyYW1l
QWNjZXNzaWJpbGl0eU9mZnNldChGcmFtZUlkZW50aWZpZXIgdGFyZ2V0LCBJbnRQb2ludCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCB1bmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBmb2N1cygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdW5m
b2N1cygpID0gMDsKICAgICB2aXJ0dWFsIH5SZW1vdGVGcmFtZUNsaWVudCgpIHsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IDg0ZmM0MTllNTljYS4uNDJlZWU2NmFiMTZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC00Miw2ICs0Miw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9EcmFnQWN0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9y
Q2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb2N1c0RpcmVjdGlvbi5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvRnJhbWVJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnB1dE1vZGUu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhQ29udHJvbHNDb250ZXh0TWVudUl0ZW0uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+CkBAIC0zMTgsNyArMzE5LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlVW5kb1JlZG8oVW5kb09yUmVkbykgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCB3aGVlbEV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShjb25zdCBOYXRp
dmVXZWJXaGVlbEV2ZW50JikgPSAwOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZpcnR1YWwg
dm9pZCBhY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0
IHVpbnQ4X3Q+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFjY2Vzc2liaWxpdHlXZWJQcm9jZXNz
VG9rZW5SZWNlaXZlZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciwgcGlkX3QpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgZXhlY3V0ZVNhdmVkQ29tbWFu
ZEJ5U2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxlY3RvcikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVTZWN1cmVJbnB1dFN0YXRlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXNldFNl
Y3VyZUlucHV0U3RhdGUoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92
aXNpb25hbFBhZ2VQcm94eS5jcHAKaW5kZXggMDUwMzA4NjM5MWZiLi4zZTNiODE5NWQwNDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAK
QEAgLTU0NSw3ICs1NDUsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpyZXF1ZXN0UGFz
c3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0CiAjZW5kaWYKIAogI2lm
IFBMQVRGT1JNKENPQ09BKQotdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQ
cm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhKQor
dm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0
eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhLCBGcmFtZUlkZW50aWZpZXIpCiB7
CiAgICAgbV9hY2Nlc3NpYmlsaXR5VG9rZW4gPSBWZWN0b3IoZGF0YSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAppbmRleCBkZWVjZDc2YTIw
MjQuLmQwYjdlY2NlZWZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJv
dmlzaW9uYWxQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNp
b25hbFBhZ2VQcm94eS5oCkBAIC0xNzIsNyArMTcyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJl
cXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5n
JiBmaWxlTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CiAj
ZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIHJlZ2lzdGVyV2ViUHJvY2Vzc0Fj
Y2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pOworICAgIHZvaWQgcmVn
aXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90
PiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykg
fHwgUExBVEZPUk0oV1BFKQogICAgIHZvaWQgYmluZEFjY2Vzc2liaWxpdHlUcmVlKGNvbnN0IFN0
cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcAppbmRleCBm
MmZjOGE1NGQ4ODMuLjIzMDMwN2ExNzRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
RnJhbWVQcm94eS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHku
aCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBhc3Rl
Ym9hcmRQcm94eS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1
ZGUgIldlYnNpdGVQb2xpY2llc0RhdGEuaCIKQEAgLTE4NCw2ICsxODUsMTQgQEAgdm9pZCBXZWJG
cmFtZVByb3h5OjpuYXZpZ2F0ZVNlcnZpY2VXb3JrZXJDbGllbnQoV2ViQ29yZTo6U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEkKICAgICB9KTsKIH0KIAordm9pZCBXZWJGcmFtZVByb3h5OjpiaW5kQWNj
ZXNzaWJpbGl0eUZyYW1lV2l0aERhdGEoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCit7
CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViUHJvY2Vzczo6QmluZEFjY2Vzc2liaWxpdHlGcmFtZVdpdGhEYXRhKG1fZnJh
bWVJRCwgZGF0YSkpOworfQorCiB2b2lkIFdlYkZyYW1lUHJveHk6OmxvYWRVUkwoY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpCiB7CiAgICAgaWYgKCFtX3BhZ2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKaW5kZXggYjBkYWViMGU2NGZjLi43MTVi
YjgwYmFiNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKQEAgLTE3
MCw2ICsxNzAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdGVQcm9jZXNzRGlkVGVybWluYXRl
KCk7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gd2ViUGFnZUlE
SW5DdXJyZW50UHJvY2VzcygpOwogICAgIHZvaWQgbm90aWZ5UGFyZW50T2ZMb2FkQ29tcGxldGlv
bihXZWJQcm9jZXNzUHJveHkmKTsKKyAgICB2b2lkIHJlbW92ZVJlbW90ZVBhZ2VzRm9yU3VzcGVu
c2lvbigpOworICAgIHZvaWQgYmluZEFjY2Vzc2liaWxpdHlGcmFtZVdpdGhEYXRhKHN0ZDo6c3Bh
bjxjb25zdCB1aW50OF90Pik7CiAKICAgICBib29sIGlzRm9jdXNlZCgpIGNvbnN0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA0NmMyMTQzYTk0YWIuLmYz
NzExZTg1NzIxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBA
IC0xMjk1LDggKzEyOTUsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN3YXBUb1Byb3Zpc2lvbmFs
UGFnZShzdGQ6OnVuaXF1ZV9wdHI8UHJvdmlzaW9uYWxQYWdlUHJveHk+IHAKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIGF1dG8gYWNjZXNzaWJpbGl0eVRva2VuID0gcHJvdmlzaW9uYWxQYWdl
LT50YWtlQWNjZXNzaWJpbGl0eVRva2VuKCk7Ci0gICAgaWYgKCFhY2Nlc3NpYmlsaXR5VG9rZW4u
aXNFbXB0eSgpKQotICAgICAgICByZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4o
eyBhY2Nlc3NpYmlsaXR5VG9rZW4uZGF0YSgpLCBhY2Nlc3NpYmlsaXR5VG9rZW4uc2l6ZSgpIH0p
OworICAgIGlmICghYWNjZXNzaWJpbGl0eVRva2VuLmlzRW1wdHkoKSkgeworICAgICAgICByZWdp
c3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oeyBhY2Nlc3NpYmlsaXR5VG9rZW4uZGF0
YSgpLCBhY2Nlc3NpYmlsaXR5VG9rZW4uc2l6ZSgpIH0sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciB7CisgICAgICAgICAgICBPYmplY3RJZGVudGlmaWVyPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
clR5cGU+KDApLAorICAgICAgICAgICAgT2JqZWN0SWRlbnRpZmllcjxXZWJDb3JlOjpQcm9jZXNz
SWRlbnRpZmllclR5cGU+KDApCisgICAgICAgIH0pOworICAgIH0KICNlbmRpZgogI2lmIFBMQVRG
T1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgIGF1dG8gYWNjZXNzaWJpbGl0eVBsdWdJRCA9
IHByb3Zpc2lvbmFsUGFnZS0+YWNjZXNzaWJpbGl0eVBsdWdJRCgpOwpAQCAtMTM3NDQsNiArMTM3
NDgsMjIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmFkZENvbnNvbGVNZXNzYWdlKEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBNZXNzYWdlU291cmNlIG1lc3MKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IGZyYW1lSUQsIG1lc3NhZ2VTb3VyY2UsIG1lc3NhZ2VM
ZXZlbCwgbWVzc2FnZSwgY29yZUlkZW50aWZpZXIgfSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5
OjpiaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBzdGQ6OnNwYW48Y29uc3QgdWlu
dDhfdD4gZGF0YVRva2VuLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6c3Bhbjxjb25zdCB1
aW50OF90PiwgaW50KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvIHNlbmRSZXN1
bHQgPSBzZW5kU3luY1RvUHJvY2Vzc0NvbnRhaW5pbmdGcmFtZShmcmFtZUlELCBNZXNzYWdlczo6
V2ViUGFnZTo6QmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMocHJvY2Vzc0lkZW50aWZpZXIs
IGZyYW1lSUQsIGRhdGFUb2tlbikpOworICAgIGlmICghc2VuZFJlc3VsdC5zdWNjZWVkZWQoKSkK
KyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgMCk7CisKKyAgICBhdXRvIFtm
cmFtZURhdGFUb2tlbiwgZnJhbWVQcm9jZXNzSWRlbnRpZmllcl0gPSBzZW5kUmVzdWx0LnRha2VS
ZXBseSgpOworCisgICAgY29tcGxldGlvbkhhbmRsZXIoZnJhbWVEYXRhVG9rZW4sIGZyYW1lUHJv
Y2Vzc0lkZW50aWZpZXIpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlUmVtb3RlRnJh
bWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBX
ZWJDb3JlOjpJbnRQb2ludCBvZmZzZXQpCit7CisgICAgc2VuZFRvUHJvY2Vzc0NvbnRhaW5pbmdG
cmFtZShmcmFtZUlELCBNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlUmVtb3RlUGFnZUFjY2Vzc2li
aWxpdHlPZmZzZXQoZnJhbWVJRCwgb2Zmc2V0KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAogCiAjdW5kZWYgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCmluZGV4IGNjODZkZGM2YTViZi4uNzAzNDhjNmY2NjFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTM1NSw3ICsxMzU1LDcgQEAgcHVi
bGljOgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgLy8gQ2FsbGVkIGJ5IHRoZSB3ZWIgcHJv
Y2VzcyB0aHJvdWdoIGEgbWVzc2FnZS4KLSAgICB2b2lkIHJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vz
c2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pOworICAgIHZvaWQgcmVnaXN0
ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Piwg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICAvLyBDYWxsZWQgYnkgdGhlIFVJIHByb2Nl
c3Mgd2hlbiBpdCBpcyByZWFkeSB0byBzZW5kIGl0cyB0b2tlbnMgdG8gdGhlIHdlYiBwcm9jZXNz
LgogICAgIHZvaWQgcmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKHN0ZDo6c3Bh
bjxjb25zdCB1aW50OF90PiBlbGVtZW50VG9rZW4sIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiB3
aW5kb3dUb2tlbik7CiAgICAgdm9pZCByZXBsYWNlU2VsZWN0aW9uV2l0aFBhc3RlYm9hcmREYXRh
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KTsK
QEAgLTI5NzgsNiArMjk3OCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmb2N1c1JlbW90ZUZyYW1l
KElQQzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAgICAgdm9pZCBw
b3N0TWVzc2FnZVRvUmVtb3RlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBzb3VyY2UsIGNvbnN0
IFN0cmluZyYgc291cmNlT3JpZ2luLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgdGFyZ2V0LCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gdGFyZ2V0T3JpZ2luLCBj
b25zdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYpOwogICAgIHZvaWQgcmVuZGVy
VHJlZUFzVGV4dChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHNpemVfdCBiYXNlSW5kZW50LCBP
cHRpb25TZXQ8V2ViQ29yZTo6UmVuZGVyQXNUZXh0RmxhZz4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RyaW5nJiYpPiYmKTsKKyAgICB2b2lkIGJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVz
KGludCBwcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBzdGQ6OnNw
YW48Y29uc3QgdWludDhfdD4gZGF0YVRva2VuLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6
c3Bhbjxjb25zdCB1aW50OF90PiwgaW50KT4mJik7CisgICAgdm9pZCB1cGRhdGVSZW1vdGVGcmFt
ZUFjY2Vzc2liaWxpdHlPZmZzZXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpJ
bnRQb2ludCk7CiAKICAgICB2b2lkIHNldFRleHRJbmRpY2F0b3JGcm9tRnJhbWUoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YSYmLCB1aW50NjRfdCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bgppbmRleCA0OTM4NjI2YmY4YTIuLmE1NDJmMTc2YjU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzI0LDcgKzMyNCw3IEBA
IG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2Vs
ZWN0b3IoU3RyaW5nIHNlbGVjdG9yKSAtPiAoYm9vbCBoYW5kbGVkKSBTeW5jaHJvbm91cwogCiAg
ICAgIyBSZW1vdGUgYWNjZXNzaWJpbGl0eSBtZXNzYWdlcwotICAgIFJlZ2lzdGVyV2ViUHJvY2Vz
c0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSkKKyAgICBS
ZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4
X3Q+IGRhdGEsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogCiAgICAgIyBTcGVl
Y2ggbWVzc2FnZXMKICAgICBHZXRJc1NwZWFraW5nKCkgLT4gKGJvb2wgaXNTcGVha2luZykgU3lu
Y2hyb25vdXMKQEAgLTYzMCw0ICs2MzAsNiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewog
ICAgIEZvY3VzUmVtb3RlRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCiAg
ICAgUG9zdE1lc3NhZ2VUb1JlbW90ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgc291cmNlLCBT
dHJpbmcgc291cmNlT3JpZ2luLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgdGFyZ2V0LCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gdGFyZ2V0T3JpZ2luLCBzdHJ1
Y3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMgbWVzc2FnZSkKICAgICBSZW5kZXJU
cmVlQXNUZXh0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBpZGVudGlmaWVyLCBzaXplX3QgYmFz
ZUluZGVudCwgT3B0aW9uU2V0PFdlYkNvcmU6OlJlbmRlckFzVGV4dEZsYWc+IGJlaGF2aW9yKSAt
PiAoU3RyaW5nIHJlbmRlclRyZWVEdW1wKSBTeW5jaHJvbm91cworICAgIEJpbmRSZW1vdGVBY2Nl
c3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhVG9rZW4pIC0+IChz
dGQ6OnNwYW48Y29uc3QgdWludDhfdD4gdG9rZW4sIGludCBwcm9jZXNzSWRlbnRpZmllcikgU3lu
Y2hyb25vdXMKKyAgICBVcGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OkludFBvaW50IG9mZnNldCkKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5k
ZXggMTBjNGY2YWUxMjUwLi42Mzg4Y2I0NjcyYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0xMTAsNyArMTEwLDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGNsZWFyQWxsRWRpdENvbW1hbmRzKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBj
YW5VbmRvUmVkbyhVbmRvT3JSZWRvKSBvdmVycmlkZTsKICAgICB2b2lkIGV4ZWN1dGVVbmRvUmVk
byhVbmRvT3JSZWRvKSBvdmVycmlkZTsKLSAgICB2b2lkIGFjY2Vzc2liaWxpdHlXZWJQcm9jZXNz
VG9rZW5SZWNlaXZlZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pIG92ZXJyaWRlOworICAgIHZv
aWQgYWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1
aW50OF90PiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBwaWRfdCkgb3ZlcnJpZGU7CiAgICAg
Ym9vbCBleGVjdXRlU2F2ZWRDb21tYW5kQnlTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9y
KSBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZVNlY3VyZUlucHV0U3RhdGUoKSBvdmVycmlkZTsK
ICAgICB2b2lkIHJlc2V0U2VjdXJlSW5wdXRTdGF0ZSgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IGNiMjNmNDk3
NGE2Yi4uYjVhZGRkY2UyM2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC0zODksNyArMzg5LDcgQEAgdm9pZCBQYWdlQ2xpZW50
SW1wbDo6ZXhlY3V0ZVVuZG9SZWRvKFVuZG9PclJlZG8gdW5kb09yUmVkbykKICAgICByZXR1cm4g
KHVuZG9PclJlZG8gPT0gVW5kb09yUmVkbzo6VW5kbykgPyBbW2NvbnRlbnRWaWV3KCkgdW5kb01h
bmFnZXJdIHVuZG9dIDogW1tjb250ZW50VmlldygpIHVuZG9NYW5hZ2VyXSByZWRvXTsKIH0KIAot
dm9pZCBQYWdlQ2xpZW50SW1wbDo6YWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVk
KHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6YWNj
ZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90
PiBkYXRhLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHBpZF90KQogewogICAgIE5TRGF0YSAq
cmVtb3RlVG9rZW4gPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5kYXRhKCkgbGVuZ3RoOmRh
dGEuc2l6ZSgpXTsKICAgICBbY29udGVudFZpZXcoKSBfc2V0QWNjZXNzaWJpbGl0eVdlYlByb2Nl
c3NUb2tlbjpyZW1vdGVUb2tlbl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dl
YlBhZ2VQcm94eUlPUy5tbQppbmRleCA1YjEwZjU5YzY2NjEuLmRlYjRkNThlNWZkNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC03NjMs
MTEgKzc2MywxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U21hcnRJbnNlcnREZWxldGVFbmFi
bGVkKGJvb2wpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6
OnJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWlu
dDhfdD4gZGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3Np
YmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEsIEZyYW1lSWRlbnRpZmll
ciBmcmFtZUlEKQogewotICAgIHByb3RlY3RlZFBhZ2VDbGllbnQoKS0+YWNjZXNzaWJpbGl0eVdl
YlByb2Nlc3NUb2tlblJlY2VpdmVkKGRhdGEpOwotfSAgICAKLQorICAgIHBhZ2VDbGllbnQoKS5h
Y2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoZGF0YSwgZnJhbWVJRCwgbWVzc2Fn
ZVNlbmRlckNvbm5lY3Rpb24oKS0+cmVtb3RlUHJvY2Vzc0lEKCkpOworfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6cmVsYXlBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgbm90
aWZpY2F0aW9uTmFtZSwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCmluZGV4IGZiNmM2
MDc4NjdhZi4uYmY4ZGE0MzBkOGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvUGFnZUNsaWVudEltcGxNYWMuaApAQCAtMTc2LDcgKzE3Niw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBnZXN0dXJlRXZlbnRXYXNOb3RIYW5kbGVkQnlXZWJDb3JlKGNvbnN0IE5hdGl2ZVdlYkdl
c3R1cmVFdmVudCYpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSAgICB2b2lkIGFjY2Vzc2liaWxpdHlX
ZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pIG92ZXJyaWRl
OworICAgIHZvaWQgYWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKHN0ZDo6c3Bh
bjxjb25zdCB1aW50OF90PiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBwaWRfdCkgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIG1ha2VGaXJzdFJlc3BvbmRlcigpIG92ZXJyaWRlOwogICAgIHZvaWQg
YXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJlc3BvbmRlcigpIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCmluZGV4IDA3
ODBmMThkYTFjMi4uMDE1MGVjNDUxMmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCkBAIC01ODEsOSArNTgxLDkgQEAgdm9pZCBQYWdl
Q2xpZW50SW1wbDo6c2V0VGV4dEluZGljYXRvckFuaW1hdGlvblByb2dyZXNzKGZsb2F0IHByb2dy
ZXNzKQogICAgIG1faW1wbC0+c2V0VGV4dEluZGljYXRvckFuaW1hdGlvblByb2dyZXNzKHByb2dy
ZXNzKTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6YWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NU
b2tlblJlY2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhKQordm9pZCBQYWdlQ2xp
ZW50SW1wbDo6YWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKHN0ZDo6c3Bhbjxj
b25zdCB1aW50OF90PiBkYXRhLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgcGlk
X3QgcGlkKQogewotICAgIG1faW1wbC0+c2V0QWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlbihb
TlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5kYXRhKCkgbGVuZ3RoOmRhdGEuc2l6ZSgpXSk7Cisg
ICAgbV9pbXBsLT5zZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuKFtOU0RhdGEgZGF0YVdp
dGhCeXRlczpkYXRhLmRhdGEoKSBsZW5ndGg6ZGF0YS5zaXplKCldLCBmcmFtZUlELCBwaWQpOwog
fQogICAgIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5n
TW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0JiBsYXllclRyZWVDb250ZXh0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggY2ZiMTBmZGJi
NDEzLi44Njk2MTdhMjlkOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dl
YlBhZ2VQcm94eU1hYy5tbQpAQCAtMzA2LDEyICszMDYsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8mIGRp
Y3Rpb24KICAgICBwcm90ZWN0ZWRQYWdlQ2xpZW50KCktPmRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9v
a3VwKGRpY3Rpb25hcnlQb3B1cEluZm8pOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0
ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBk
YXRhKQordm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlU
b2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSwgRnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAg
ICAgCi0gICAgcHJvdGVjdGVkUGFnZUNsaWVudCgpLT5hY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rv
a2VuUmVjZWl2ZWQoZGF0YSk7CisgICAgcHJvdGVjdGVkUGFnZUNsaWVudCgpLT5hY2Nlc3NpYmls
aXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoZGF0YSwgZnJhbWVJRCwgbWVzc2FnZVNlbmRlckNv
bm5lY3Rpb24oKS0+cmVtb3RlUHJvY2Vzc0lEKCkpOwogfSAgICAKIAogdm9pZCBXZWJQYWdlUHJv
eHk6Om1ha2VGaXJzdFJlc3BvbmRlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJW
aWV3SW1wbC5oCmluZGV4IDAzZGZkYWVlMTUzYy4uNWEyZTEyOWZkYzhjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwuaApAQCAtNDQ4LDcgKzQ0OCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldElnbm9yZXNNb3VzZURyYWdnZWRFdmVudHMoYm9vbCk7CiAgICAgYm9v
bCBpZ25vcmVzTW91c2VEcmFnZ2VkRXZlbnRzKCkgY29uc3QgeyByZXR1cm4gbV9pZ25vcmVzTW91
c2VEcmFnZ2VkRXZlbnRzOyB9CiAKLSAgICB2b2lkIHNldEFjY2Vzc2liaWxpdHlXZWJQcm9jZXNz
VG9rZW4oTlNEYXRhICopOworICAgIHZvaWQgc2V0QWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tl
bihOU0RhdGEgKiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBwaWRfdCk7CiAgICAgdm9pZCBh
Y2Nlc3NpYmlsaXR5UmVnaXN0ZXJVSVByb2Nlc3NUb2tlbnMoKTsKICAgICB2b2lkIHVwZGF0ZVJl
bW90ZUFjY2Vzc2liaWxpdHlSZWdpc3RyYXRpb24oYm9vbCByZWdpc3RlclByb2Nlc3MpOwogICAg
IGlkIGFjY2Vzc2liaWxpdHlGb2N1c2VkVUlFbGVtZW50KCk7CkBAIC05MjcsNiArOTI3LDcgQEAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgYm9vbCBtX2FsbG93c01hZ25p
ZmljYXRpb24geyBmYWxzZSB9OwogCiAgICAgUmV0YWluUHRyPE5TQWNjZXNzaWJpbGl0eVJlbW90
ZVVJRWxlbWVudD4gbV9yZW1vdGVBY2Nlc3NpYmlsaXR5Q2hpbGQ7CisgICAgUmV0YWluUHRyPE5T
TXV0YWJsZURpY3Rpb25hcnk+IG1fcmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lQ2FjaGU7CiAKICAg
ICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2U+IG1fcHJvbWlzZWRJbWFnZTsKICAgICBTdHJpbmcgbV9w
cm9taXNlZEZpbGVuYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJbXBs
Lm1tCmluZGV4IDViZGUxMTE2Mjc5MC4uYTRiMzA3ZDc2ZTczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dlYlZpZXdJbXBsLm1tCkBAIC0zNDgxLDEwICszNDgxLDEyIEBAIHZvaWQg
V2ViVmlld0ltcGw6OnNldElnbm9yZXNNb3VzZURyYWdnZWRFdmVudHMoYm9vbCBpZ25vcmVzTW91
c2VEcmFnZ2VkRXZlbnRzKQogICAgIG1faWdub3Jlc01vdXNlRHJhZ2dlZEV2ZW50cyA9IGlnbm9y
ZXNNb3VzZURyYWdnZWRFdmVudHM7CiB9CiAKLXZvaWQgV2ViVmlld0ltcGw6OnNldEFjY2Vzc2li
aWxpdHlXZWJQcm9jZXNzVG9rZW4oTlNEYXRhICpkYXRhKQordm9pZCBXZWJWaWV3SW1wbDo6c2V0
QWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlbihOU0RhdGEgKmRhdGEsIFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBwaWRfdCBwaWQpCiB7Ci0gICAgbV9yZW1vdGVBY2Nlc3NpYmls
aXR5Q2hpbGQgPSBkYXRhLmxlbmd0aCA/IGFkb3B0TlMoW1tOU0FjY2Vzc2liaWxpdHlSZW1vdGVV
SUVsZW1lbnQgYWxsb2NdIGluaXRXaXRoUmVtb3RlVG9rZW46ZGF0YV0pIDogbmlsOwotICAgIHVw
ZGF0ZVJlbW90ZUFjY2Vzc2liaWxpdHlSZWdpc3RyYXRpb24odHJ1ZSk7CisgICAgaWYgKHBpZCA9
PSBtX3BhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzSUQoKSkgeworICAgICAgICBtX3JlbW90ZUFjY2Vz
c2liaWxpdHlDaGlsZCA9IGRhdGEubGVuZ3RoID8gYWRvcHROUyhbW05TQWNjZXNzaWJpbGl0eVJl
bW90ZVVJRWxlbWVudCBhbGxvY10gaW5pdFdpdGhSZW1vdGVUb2tlbjpkYXRhXSkgOiBuaWw7Cisg
ICAgICAgIHVwZGF0ZVJlbW90ZUFjY2Vzc2liaWxpdHlSZWdpc3RyYXRpb24odHJ1ZSk7CisgICAg
fQogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjp1cGRhdGVSZW1vdGVBY2Nlc3NpYmlsaXR5UmVnaXN0
cmF0aW9uKGJvb2wgcmVnaXN0ZXJQcm9jZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkxvY2FsRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCmluZGV4IDdkMmE0MjY1ZmQ1Yy4uZjNmNzNmMzY3ZWFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxv
YWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xODA3LDYgKzE4MDcsMTIgQEAg
dm9pZCBXZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxEZXN0cm95R2xvYmFs
T2JqZWN0Rm9yRE9NV2luZG93RXh0ZW4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIAorV2Vi
Q29yZTo6SW50UG9pbnQgV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudDo6YWNjZXNzaWJpbGl0eVJl
bW90ZUZyYW1lT2Zmc2V0KCkKK3sKKyAgICBSZWZQdHIgd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2Uo
KTsKKyAgICByZXR1cm4gd2ViUGFnZSA/IHdlYlBhZ2UtPmFjY2Vzc2liaWxpdHlSZW1vdGVGcmFt
ZU9mZnNldCgpIDogSW50UG9pbnQoKTsKK30KKwogUmVtb3RlQVhPYmplY3RSZWYgV2ViTG9jYWxG
cmFtZUxvYWRlckNsaWVudDo6YWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpCiB7CiAgICAgUmVm
UHRyIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkxvY2FsRnJhbWVMb2Fk
ZXJDbGllbnQuaAppbmRleCA4OGM4Y2M1Y2I3MmUuLjlmM2I2N2YwZmNiOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkxvY2FsRnJhbWVMb2Fk
ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0yNDAsNiArMjQwLDcgQEAgcHJpdmF0ZToK
IAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJlbW90ZUFYT2JqZWN0UmVmIGFjY2Vzc2liaWxp
dHlSZW1vdGVPYmplY3QoKSBmaW5hbDsKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBhY2Nlc3NpYmls
aXR5UmVtb3RlRnJhbWVPZmZzZXQoKSBmaW5hbDsKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9J
U09MQVRFRF9UUkVFKQogICAgIHZvaWQgc2V0QVhJc29sYXRlZFRyZWVSb290KFdlYkNvcmU6OkFY
Q29yZU9iamVjdCopIGZpbmFsOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90ZUZyYW1lQ2xpZW50LmNw
cAppbmRleCA4Y2JmZjJjOWI4YzkuLmEyZjA5NDhkNDMxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90ZUZyYW1lQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJh
bWVDbGllbnQuY3BwCkBAIC05Niw2ICs5NiwzOCBAQCBTdHJpbmcgV2ViUmVtb3RlRnJhbWVDbGll
bnQ6OnJlbmRlclRyZWVBc1RleHQoc2l6ZV90IGJhc2VJbmRlbnQsIE9wdGlvblNldDxSZW5kZQog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3ZvaWQgV2ViUmVtb3RlRnJhbWVDbGllbnQ6OnVuYmlu
ZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyKQoreworICAg
IC8vIE1ha2Ugc3VyZSBBcHBLaXQgc3lzdGVtIGtub3dzIGFib3V0IG91ciByZW1vdGUgVUkgcHJv
Y2VzcyBzdGF0dXMgbm93LgorICAgIGlmIChSZWZQdHIgcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkK
KyAgICAgICAgcGFnZS0+YWNjZXNzaWJpbGl0eU1hbmFnZVJlbW90ZUVsZW1lbnRTdGF0dXMoZmFs
c2UsIHByb2Nlc3NJZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJSZW1vdGVGcmFtZUNsaWVudDo6
dXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBXZWJDb3JlOjpJbnRQb2ludCBvZmZzZXQpCit7CisgICAgaWYgKFJlZlB0
ciBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKQorICAgICAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChmcmFtZUlE
LCBvZmZzZXQpKTsKK30KKwordm9pZCBXZWJSZW1vdGVGcmFtZUNsaWVudDo6YmluZFJlbW90ZUFj
Y2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgY29uc3Qgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGFUb2tl
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIGludCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgUmVmUHRyIHBhZ2UgPSBtX2ZyYW1lLT5wYWdl
KCk7CisgICAgaWYgKCFwYWdlKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6c3Bh
bjxjb25zdCB1aW50OF90PiB7IH0sIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
YXV0byBzZW5kUmVzdWx0ID0gcGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
QmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMocHJvY2Vzc0lkZW50aWZpZXIsIGZyYW1lSUQs
IGRhdGFUb2tlbikpOworICAgIGlmICghc2VuZFJlc3VsdC5zdWNjZWVkZWQoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgYXV0byBbcmVzdWx0VG9rZW4sIHByb2Nlc3NJZGVudGlmaWVyUmVzdWx0
XSA9IHNlbmRSZXN1bHQudGFrZVJlcGx5KCk7CisKKyAgICAvLyBNYWtlIHN1cmUgQXBwS2l0IHN5
c3RlbSBrbm93cyBhYm91dCBvdXIgcmVtb3RlIFVJIHByb2Nlc3Mgc3RhdHVzIG5vdy4KKyAgICBw
YWdlLT5hY2Nlc3NpYmlsaXR5TWFuYWdlUmVtb3RlRWxlbWVudFN0YXR1cyh0cnVlLCBwcm9jZXNz
SWRlbnRpZmllclJlc3VsdCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0VG9rZW4sIHBy
b2Nlc3NJZGVudGlmaWVyUmVzdWx0KTsKK30KKwogdm9pZCBXZWJSZW1vdGVGcmFtZUNsaWVudDo6
YnJvYWRjYXN0RnJhbWVSZW1vdmFsVG9PdGhlclByb2Nlc3NlcygpCiB7CiAgICAgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmJyb2FkY2FzdEZyYW1lUmVtb3ZhbFRvT3RoZXJQcm9jZXNzZXMoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZW1v
dGVGcmFtZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlJlbW90ZUZyYW1lQ2xpZW50LmgKaW5kZXggNjI2ZTA1YzNlODhiLi5jODg5ZWI3ZTVmYWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJS
ZW1vdGVGcmFtZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVudC5oCkBAIC00OCw2ICs0OCwxMCBAQCBwcml2YXRl
OgogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1JlbW90ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIg
c291cmNlLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyIHRhcmdldCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IHRh
cmdldE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmKSBmaW5h
bDsKICAgICB2b2lkIGNoYW5nZUxvY2F0aW9uKFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3QmJikg
ZmluYWw7CiAgICAgU3RyaW5nIHJlbmRlclRyZWVBc1RleHQoc2l6ZV90IGJhc2VJbmRlbnQsIE9w
dGlvblNldDxXZWJDb3JlOjpSZW5kZXJBc1RleHRGbGFnPikgZmluYWw7CisgICAgdm9pZCBiaW5k
UmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgaW50KT4mJikgZmluYWw7CisgICAg
dm9pZCB1bmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCkgZmluYWw7CisgICAgdm9p
ZCB1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCBXZWJDb3JlOjpJbnRQb2ludCkgZmluYWw7CisKICAgICB2b2lkIGJyb2FkY2FzdEZy
YW1lUmVtb3ZhbFRvT3RoZXJQcm9jZXNzZXMoKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlUGFnZSgp
IGZpbmFsOwogICAgIHZvaWQgZm9jdXMoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQppbmRleCBhZTQzZjFh
NDY5OGIuLjAyNDY0MzdlMTJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQpAQCAtNzcsNiArNzcsNyBAQAogI2lt
cG9ydCA8V2ViQ29yZS9VVElSZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9VVElVdGlsaXRp
ZXMuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTGF1bmNoU2VydmljZXNTUEkuaD4KKyNpbXBv
cnQgPHBhbC9zcGkvY29jb2EvTlNBY2Nlc3NpYmlsaXR5U1BJLmg+CiAjaW1wb3J0IDxwYWwvc3Bp
L2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1NhbmRib3hT
UEkuaD4KIApAQCAtNDA0LDEwICs0MDUsNTEgQEAgdm9pZCBXZWJQYWdlOjpjbGVhckRpY3RhdGlv
bkFsdGVybmF0aXZlcyhWZWN0b3I8RGljdGF0aW9uQ29udGV4dD4mJiBjb250ZXh0cykKICAgICB9
LCBEb2N1bWVudE1hcmtlcjo6VHlwZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKIH0KIAotdm9p
ZCBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tlbihSZXRhaW5QdHI8TlNE
YXRhPiByZW1vdGVUb2tlbikKK3ZvaWQgV2ViUGFnZTo6YWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVt
b3RlVG9rZW4oUmV0YWluUHRyPE5TRGF0YT4gcmVtb3RlVG9rZW4sIEZyYW1lSWRlbnRpZmllciBm
cmFtZUlEKQogewogICAgIHN0ZDo6c3BhbiBkYXRhVG9rZW4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oW3JlbW90ZVRva2VuIGJ5dGVzXSksIFtyZW1vdGVUb2tlbiBsZW5ndGhdKTsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vz
c2liaWxpdHlUb2tlbihkYXRhVG9rZW4pKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihkYXRhVG9rZW4sIGZyYW1l
SUQpKTsKK30KKwordm9pZCBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5TWFuYWdlUmVtb3RlRWxlbWVu
dFN0YXR1cyhib29sIHJlZ2lzdGVyU3RhdHVzLCBpbnQgcHJvY2Vzc0lkZW50aWZpZXIpCit7Cisj
aWYgUExBVEZPUk0oTUFDKQorICAgIGlmIChyZWdpc3RlclN0YXR1cykKKyAgICAgICAgW05TQWNj
ZXNzaWJpbGl0eVJlbW90ZVVJRWxlbWVudCByZWdpc3RlclJlbW90ZVVJUHJvY2Vzc0lkZW50aWZp
ZXI6cHJvY2Vzc0lkZW50aWZpZXJdOworICAgIGVsc2UKKyAgICAgICAgW05TQWNjZXNzaWJpbGl0
eVJlbW90ZVVJRWxlbWVudCB1bnJlZ2lzdGVyUmVtb3RlVUlQcm9jZXNzSWRlbnRpZmllcjpwcm9j
ZXNzSWRlbnRpZmllcl07CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShyZWdpc3RlclN0YXR1cyk7
CisgICAgVU5VU0VEX1BBUkFNKHByb2Nlc3NJZGVudGlmaWVyKTsKKyNlbmRpZgorfQorCit2b2lk
IFdlYlBhZ2U6OmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRp
ZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0ZDo6c3Bhbjxjb25zdCB1
aW50OF90PiBkYXRhVG9rZW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpzcGFuPGNvbnN0
IHVpbnQ4X3Q+LCBpbnQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFJlZlB0ciB3ZWJG
cmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpOworICAgIGlm
ICghd2ViRnJhbWUpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0sIDApOworICAgIH0KKworICAgIFJlZlB0ciBjb3Jl
TG9jYWxGcmFtZSA9IHdlYkZyYW1lLT5jb3JlTG9jYWxGcmFtZSgpOworICAgIGlmICghY29yZUxv
Y2FsRnJhbWUpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcih7IH0sIDApOworICAgIH0KKworICAgIGF1dG8qIHJlbmRlcmVy
ID0gY29yZUxvY2FsRnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXIp
IHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcih7IH0sIDApOworICAgIH0KKworICAgIHJlZ2lzdGVyUmVtb3RlRnJhbWVBY2Nl
c3NpYmlsaXR5VG9rZW5zKHByb2Nlc3NJZGVudGlmaWVyLCBkYXRhVG9rZW4pOworCisgICAgLy8g
R2V0IG91ciByZW1vdGUgdG9rZW4gZGF0YSBhbmQgc2VuZCBiYWNrIHRvIHRoZSBSZW1vdGVGcmFt
ZS4KKyAgICBhdXRvIHJlbW90ZVRva2VuID0gYWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0YSgp
OworICAgIHN0ZDo6c3BhbiByZW1vdGVEYXRhVG9rZW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4oW3JlbW90ZVRva2VuIGJ5dGVzXSksIFtyZW1vdGVUb2tlbiBsZW5ndGhdKTsKKyAg
ICBjb21wbGV0aW9uSGFuZGxlcihyZW1vdGVEYXRhVG9rZW4sIGdldHBpZCgpKTsKIH0KIAogI2lm
IEVOQUJMRShBUFBMRV9QQVkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCmluZGV4IDhlNmE1YmE5MTI5Ni4uNTYxNDA0MTQxNjhmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTUzNiw2ICsxNTM2LDE2
IEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1EaWRTZWxlY3RBbGwoKQogCiAjZW5kaWYgLy8gIVBM
QVRGT1JNKElPU19GQU1JTFkpCiAKKyNpZiAhUExBVEZPUk0oQ09DT0EpCit2b2lkIFdlYlBhZ2U6
OmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCwgV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3Rk
OjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBpbnQpPiYmKQoreworfQorCit2b2lkIFdlYlBhZ2U6OnVw
ZGF0ZVJlbW90ZVBhZ2VBY2Nlc3NpYmlsaXR5T2Zmc2V0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciwgV2ViQ29yZTo6SW50UG9pbnQpCit7Cit9CisjZW5kaWYKKwogdm9pZCBXZWJQYWdlOjp1cGRh
dGVFZGl0b3JTdGF0ZUFmdGVyTGF5b3V0SWZFZGl0YWJpbGl0eUNoYW5nZWQoKQogewogICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgdXBkYXRlIEVkaXRvclN0YXRlSXNDb250ZW50RWRpdGFibGUgdG8g
dHJhY2sgd2hldGhlciB0aGUgc3RhdGUgaXMgcmljaGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMDliM2U3ZTU5NTc1Li43NjEwZDQwYmM1MzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTY3MSw2ICs2
NzEsMTAgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJIaXN0b3J5KCk7CiAKICAgICB2b2lkIGFj
Y2Vzc2liaWxpdHlTZXR0aW5nc0RpZENoYW5nZSgpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IHZvaWQgYWNjZXNzaWJpbGl0eU1hbmFnZVJlbW90ZUVsZW1lbnRTdGF0dXMoYm9vbCwgaW50KTsK
KyNlbmRpZgorCiAgICAgdm9pZCBzY3JlZW5Qcm9wZXJ0aWVzRGlkQ2hhbmdlKCk7CiAKICAgICB2
b2lkIHNjYWxlUGFnZShkb3VibGUgc2NhbGUsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBvcmln
aW4pOwpAQCAtMTA0Myw3ICsxMDQ3LDEwIEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZUFjY2Vzc2liaWxpdHkoKTsKICAgICB2b2lkIHJl
Z2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VucyhzdGQ6OnNwYW48Y29uc3QgdWludDhf
dD4gZWxlbWVudFRva2VuLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gd2luZG93VG9rZW4pOwor
ICAgIHZvaWQgcmVnaXN0ZXJSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlUb2tlbnMocGlkX3QsIHN0
ZDo6c3Bhbjxjb25zdCB1aW50OF90Pik7CiAgICAgV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVj
dCogYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpOworICAgIFdlYkNvcmU6OkludFBvaW50IGFj
Y2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCgpOworICAgIHZvaWQgY3JlYXRlTW9ja0FjY2Vz
c2liaWxpdHlFbGVtZW50KHBpZF90KTsKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRF
RF9UUkVFKQogICAgIHZvaWQgY2FjaGVBWFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9p
bnQmKTsKICAgICB2b2lkIGNhY2hlQVhTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKQEAg
LTIwOTQsNyArMjEwMSw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9p
ZCByZXF1ZXN0QWN0aXZlTm93UGxheWluZ1Nlc3Npb25JbmZvKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCwgV2ViQ29yZTo6Tm93UGxheWluZ0luZm8mJik+JiYpOwogICAgIFJldGFpblB0cjxO
U0RhdGE+IGFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSBjb25zdDsKLSAgICB2b2lkIGFj
Y2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKFJldGFpblB0cjxOU0RhdGE+KTsKKyAgICB2
b2lkIGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKFJldGFpblB0cjxOU0RhdGE+LCBX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogI2VuZGlmCiAKICAgICB2b2lkIHNldFNob3VsZERp
c3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cyhib29sIGRpc3BhdGNoKSB7IG1fc2hvdWxkRGlzcGF0
Y2hGYWtlTW91c2VNb3ZlRXZlbnRzID0gZGlzcGF0Y2g7IH0KQEAgLTIyMDQsNiArMjIxMSw4IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIHJlbW90ZVBvc3RNZXNzYWdlKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciBzb3VyY2UsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIgdGFyZ2V0LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YT4mJiB0YXJnZXRPcmlnaW4sIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBv
cnRzJik7CiAgICAgdm9pZCByZW5kZXJUcmVlQXNUZXh0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciwgc2l6ZV90IGJhc2VJbmRlbnQsIE9wdGlvblNldDxXZWJDb3JlOjpSZW5kZXJBc1RleHRGbGFn
PiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYpOworICAgIHZvaWQgYmluZFJl
bW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIGludCk+JiYpOworICAgIHZvaWQgdXBk
YXRlUmVtb3RlUGFnZUFjY2Vzc2liaWxpdHlPZmZzZXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
LCBXZWJDb3JlOjpJbnRQb2ludCk7CiAKICAgICB2b2lkIHJlcXVlc3RUZXh0RXh0cmFjdGlvbihz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4mJiBjb2xsZWN0aW9uUmVjdEluUm9vdFZp
ZXcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6VGV4dEV4dHJhY3Rpb246Okl0ZW0m
Jik+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgppbmRleCBlZDljMDFhYmQxNWYuLjI4N2JlNjFlZTU3YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCkBAIC00ODgsNiArNDg4LDkgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChl
bnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBDb2xs
YXBzZVNlbGVjdGlvbkluRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCiAj
ZW5kaWYKIAorICAgIEJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRl
bnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0ZDo6c3Bhbjxjb25z
dCB1aW50OF90PiBkYXRhVG9rZW4pIC0+IChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gdG9rZW4s
IGludCBwcm9jZXNzSWRlbnRpZmllcikgU3luY2hyb25vdXMKKyAgICBVcGRhdGVSZW1vdGVQYWdl
QWNjZXNzaWJpbGl0eU9mZnNldChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2Vi
Q29yZTo6SW50UG9pbnQgb2Zmc2V0KTsKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFdpbmRv
d0FuZFZpZXdGcmFtZXNDaGFuZ2VkKHN0cnVjdCBXZWJLaXQ6OlZpZXdXaW5kb3dDb29yZGluYXRl
cyBjb29yZGluYXRlcykKICAgICBTZXRNYWluRnJhbWVJc1Njcm9sbGFibGUoYm9vbCBpc1Njcm9s
bGFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tCmluZGV4IGE3ZmQ3MjMxMjdjMC4uMjhlZTVkYjcwZWM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMjQz
LDEyICsyNDMsMTQgQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemVBY2Nlc3NpYmls
aXR5KCkKICAgICBtX21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCA9IGFkb3B0TlMoW1tXS0FjY2Vz
c2liaWxpdHlXZWJQYWdlT2JqZWN0IGFsbG9jXSBpbml0XSk7CiAgICAgW21fbW9ja0FjY2Vzc2li
aWxpdHlFbGVtZW50IHNldFdlYlBhZ2U6dGhpc107CiAKLSAgICBhY2Nlc3NpYmlsaXR5VHJhbnNm
ZXJSZW1vdGVUb2tlbihhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCkpOworICAgIFJlZiBm
cmFtZSA9IENoZWNrZWRSZWYobV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKSktPmZvY3VzZWRPck1h
aW5GcmFtZSgpOworICAgIGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKGFjY2Vzc2li
aWxpdHlSZW1vdGVUb2tlbkRhdGEoKSwgZnJhbWUtPmZyYW1lSUQoKSk7CiB9CiAKIHZvaWQgV2Vi
UGFnZTo6cGxhdGZvcm1SZWluaXRpYWxpemUoKQogewotICAgIGFjY2Vzc2liaWxpdHlUcmFuc2Zl
clJlbW90ZVRva2VuKGFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSk7CisgICAgUmVmIGZy
YW1lID0gQ2hlY2tlZFJlZihtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpKS0+Zm9jdXNlZE9yTWFp
bkZyYW1lKCk7CisgICAgYWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oYWNjZXNzaWJp
bGl0eVJlbW90ZVRva2VuRGF0YSgpLCBmcmFtZS0+ZnJhbWVJRCgpKTsKIH0KIAogUmV0YWluUHRy
PE5TRGF0YT4gV2ViUGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0YSgpIGNvbnN0CkBA
IC02NDQsNiArNjQ2LDE2IEBAIE5TT2JqZWN0ICpXZWJQYWdlOjphY2Nlc3NpYmlsaXR5T2JqZWN0
Rm9yTWFpbkZyYW1lUGx1Z2luKCkKICAgICByZXR1cm4gbmlsOwogfQogICAgIAordm9pZCBXZWJQ
YWdlOjp1cGRhdGVSZW1vdGVQYWdlQWNjZXNzaWJpbGl0eU9mZnNldChXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIFdlYkNvcmU6OkludFBvaW50KQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQK
K30KKwordm9pZCBXZWJQYWdlOjpyZWdpc3RlclJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eVRva2Vu
cyhwaWRfdCwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KQoreworICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQKK30KKwogdm9pZCBXZWJQYWdlOjpyZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlU
b2tlbnMoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGVsZW1lbnRUb2tlbiwgc3RkOjpzcGFuPGNv
bnN0IHVpbnQ4X3Q+KQogewogICAgIE5TRGF0YSAqZWxlbWVudFRva2VuRGF0YSA9IFtOU0RhdGEg
ZGF0YVdpdGhCeXRlczplbGVtZW50VG9rZW4uZGF0YSgpIGxlbmd0aDplbGVtZW50VG9rZW4uc2l6
ZSgpXTsKQEAgLTY2Miw2ICs2NzQsMTIgQEAgdm9pZCBXZWJQYWdlOjpnZXREYXRhU2VsZWN0aW9u
Rm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQKICAgICBj
b21wbGV0aW9uSGFuZGxlcih7IH0pOwogfQogCitXZWJDb3JlOjpJbnRQb2ludCBXZWJQYWdlOjph
Y2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIHsgfTsKK30KKwogV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdCogV2Vi
UGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0Fj
Y2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmgKaW5kZXggMzll
OTBlM2M4OTVlLi40OTcwMDcwYTQ1NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQ
YWdlT2JqZWN0QmFzZS5oCkBAIC00NSw2ICs0NSw4IEBAIGNsYXNzIEFYQ29yZU9iamVjdDsKICAg
ICBXZWJDb3JlOjpJbnRTaXplIG1fc2l6ZSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fY2FjaGVMb2Nr
KTsKICAgICBUaHJlYWRTYWZlV2Vha1B0cjxXZWJDb3JlOjpBWENvcmVPYmplY3Q+IG1faXNvbGF0
ZWRUcmVlUm9vdDsKICNlbmRpZgorCisgICAgV2ViQ29yZTo6SW50UG9pbnQgbV9yZW1vdGVGcmFt
ZU9mZnNldDsKICAgICBSZXRhaW5QdHI8aWQ+IG1fcGFyZW50OwogICAgIGJvb2wgbV9oYXNNYWlu
RnJhbWVQbHVnaW47CiB9CkBAIC01Niw5ICs1OCwxMSBAQCBjbGFzcyBBWENvcmVPYmplY3Q7CiAt
ICh2b2lkKXNldElzb2xhdGVkVHJlZVJvb3Q6KE5ha2VkUHRyPFdlYkNvcmU6OkFYQ29yZU9iamVj
dD4pcm9vdDsKICNlbmRpZgogLSAodm9pZClzZXRSZW1vdGVQYXJlbnQ6KGlkKXBhcmVudDsKKy0g
KHZvaWQpc2V0UmVtb3RlRnJhbWVPZmZzZXQ6KFdlYkNvcmU6OkludFBvaW50KW9mZnNldDsKIC0g
KHZvaWQpc2V0SGFzTWFpbkZyYW1lUGx1Z2luOihib29sKWhhc1BsdWdpbjsKIAogLSAoaWQpYWNj
ZXNzaWJpbGl0eVJvb3RPYmplY3RXcmFwcGVyOwogLSAoaWQpYWNjZXNzaWJpbGl0eUZvY3VzZWRV
SUVsZW1lbnQ7CistIChXZWJDb3JlOjpJbnRQb2ludClhY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVP
ZmZzZXQ7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFz
ZS5tbQppbmRleCA2Zjk5NTQ1YWViZjUuLmJlYzhkNzNmYWEyZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmpl
Y3RCYXNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0Fj
Y2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbQpAQCAtMzYsOSArMzYsMTEgQEAKICNpbXBv
cnQgIldLU3RyaW5nQ0YuaCIKICNpbXBvcnQgPFdlYkNvcmUvQVhPYmplY3RDYWNoZS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9Eb2N1bWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVRyZWUuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxGcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbEZy
YW1lVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1Jl
bW90ZUZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbFZpZXcuaD4KICNpbXBvcnQgPFdl
YkNvcmUvU2Nyb2xsYmFyLmg+CiAKQEAgLTU3LDExICs1OSwxNyBAQCBuYW1lc3BhY2UgYXggPSBX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5OwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBhdXRvKiBsb2NhbE1haW5GcmFtZSA9IGR5bmFtaWNEb3duY2FzdDxXZWJD
b3JlOjpMb2NhbEZyYW1lPihwYWdlLT5tYWluRnJhbWUoKSk7Ci0gICAgaWYgKCFsb2NhbE1haW5G
cmFtZSB8fCAhbG9jYWxNYWluRnJhbWUtPmRvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIGlmIChhdXRvKiBsb2NhbE1haW5GcmFtZSA9IGR5bmFtaWNEb3duY2FzdDxXZWJD
b3JlOjpMb2NhbEZyYW1lPihwYWdlLT5tYWluRnJhbWUoKSkpIHsKKyAgICAgICAgaWYgKGF1dG8q
IGRvY3VtZW50ID0gbG9jYWxNYWluRnJhbWUtPmRvY3VtZW50KCkpCisgICAgICAgICAgICByZXR1
cm4gZG9jdW1lbnQtPmF4T2JqZWN0Q2FjaGUoKTsKKyAgICB9IGVsc2UgaWYgKGF1dG8qIHJlbW90
ZU1haW5GcmFtZSA9IGR5bmFtaWNEb3duY2FzdDxXZWJDb3JlOjpSZW1vdGVGcmFtZT4ocGFnZS0+
bWFpbkZyYW1lKCkpKSB7CisgICAgICAgIGF1dG8mIHRyZWUgPSByZW1vdGVNYWluRnJhbWUtPnRy
ZWUoKTsKKyAgICAgICAgYXV0byogZmlyc3RGcmFtZSA9IGR5bmFtaWNEb3duY2FzdDxXZWJDb3Jl
OjpMb2NhbEZyYW1lPih0cmVlLmZpcnN0Q2hpbGQoKSk7CisgICAgICAgIGF1dG8qIGRvY3VtZW50
ID0gZmlyc3RGcmFtZSA/IGZpcnN0RnJhbWUtPmRvY3VtZW50KCkgOiBudWxscHRyOworICAgICAg
ICByZXR1cm4gZG9jdW1lbnQgPyBkb2N1bWVudC0+YXhPYmplY3RDYWNoZSgpIDogbnVsbHB0cjsK
KyAgICB9CiAKLSAgICByZXR1cm4gbG9jYWxNYWluRnJhbWUtPmRvY3VtZW50KCktPmF4T2JqZWN0
Q2FjaGUoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogLSAoaWQpYWNjZXNzaWJpbGl0eVBs
dWdpbk9iamVjdApAQCAtMTUyLDYgKzE2MCwxNyBAQCBuYW1lc3BhY2UgYXggPSBXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5OwogICAgIG1faGFzTWFpbkZyYW1lUGx1Z2luID0gaGFzUGx1Z2luOwogfQog
CistICh2b2lkKXNldFJlbW90ZUZyYW1lT2Zmc2V0OihXZWJDb3JlOjpJbnRQb2ludClvZmZzZXQK
K3sKKyAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKKyAgICBtX3JlbW90ZUZyYW1lT2Zmc2V0
ID0gb2Zmc2V0OworfQorCistIChXZWJDb3JlOjpJbnRQb2ludClhY2Nlc3NpYmlsaXR5UmVtb3Rl
RnJhbWVPZmZzZXQKK3sKKyAgICByZXR1cm4gbV9yZW1vdGVGcmFtZU9mZnNldDsKK30KKwogLSAo
dm9pZClzZXRSZW1vdGVQYXJlbnQ6KGlkKXBhcmVudAogewogICAgIEFTU0VSVChpc01haW5SdW5M
b29wKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2Vi
UGFnZU1hYy5tbQppbmRleCA5NmVkNjRhZGJjZmYuLjVmOWI4ODBjODBiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTEy
MywxNiArMTIzLDEyIEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplQWNjZXNzaWJp
bGl0eSgpCiAgICAgLy8gQ3VycmVudGx5LCBpdCBpcyBhbHNvIG5lZWRlZCB0byBhbGxvY2F0ZSBh
bmQgaW5pdGlhbGl6ZSBhbiBOU0FwcGxpY2F0aW9uIG9iamVjdC4KICAgICBbTlNBcHBsaWNhdGlv
biBfYWNjZXNzaWJpbGl0eUluaXRpYWxpemVdOwogCi0gICAgYXV0byBtb2NrQWNjZXNzaWJpbGl0
eUVsZW1lbnQgPSBhZG9wdE5TKFtbV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdCBhbGxvY10g
aW5pdF0pOwotCiAgICAgLy8gR2V0IHRoZSBwaWQgZm9yIHRoZSBzdGFydGluZyBwcm9jZXNzLgog
ICAgIHBpZF90IHBpZCA9IFdlYkNvcmU6OnByZXNlbnRpbmdBcHBsaWNhdGlvblBJRCgpOwotICAg
IGlmIChbbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IoYWNjZXNzaWJpbGl0eVNldFByZXNlbnRlclByb2Nlc3NJZGVudGlmaWVyOildKQotICAgICAg
ICBbKGlkKW1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudC5nZXQoKSBhY2Nlc3NpYmlsaXR5U2V0UHJl
c2VudGVyUHJvY2Vzc0lkZW50aWZpZXI6cGlkXTsKLSAgICBbbW9ja0FjY2Vzc2liaWxpdHlFbGVt
ZW50IHNldFdlYlBhZ2U6dGhpc107Ci0gICAgbV9tb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgPSBX
VEZNb3ZlKG1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCk7Ci0KLSAgICBhY2Nlc3NpYmlsaXR5VHJh
bnNmZXJSZW1vdGVUb2tlbihhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCkpOworICAgIGNy
ZWF0ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudChwaWQpOworICAgIFJlZlB0ciBsb2NhbE1haW5G
cmFtZSA9IGR5bmFtaWNEb3duY2FzdDxMb2NhbEZyYW1lPihtX3BhZ2UtPm1haW5GcmFtZSgpKTsK
KyAgICBpZiAobG9jYWxNYWluRnJhbWUpCisgICAgICAgIGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJl
bW90ZVRva2VuKGFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSwgbG9jYWxNYWluRnJhbWUt
PmZyYW1lSUQoKSk7CiAKICAgICAvLyBDbG9zZSBNYWNoIGNvbm5lY3Rpb24gdG8gTGF1bmNoIFNl
cnZpY2VzLgogI2lmIEhBVkUoTFNfU0VSVkVSX0NPTk5FQ1RJT05fU1RBVFVTX1JFTEVBU0VfTk9U
SUZJQ0FUSU9OU19NQVNLKQpAQCAtMTQ0LDkgKzE0MCwyMCBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRm
b3JtSW5pdGlhbGl6ZUFjY2Vzc2liaWxpdHkoKQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnJldm9rZUxhdW5jaFNlcnZpY2VzU2FuZGJveEV4dGVuc2lvbigpOwogfQogCit2b2lkIFdlYlBh
Z2U6OmNyZWF0ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudChwaWRfdCBwaWQpCit7CisgICAgYXV0
byBtb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgPSBhZG9wdE5TKFtbV0tBY2Nlc3NpYmlsaXR5V2Vi
UGFnZU9iamVjdCBhbGxvY10gaW5pdF0pOworCisgICAgaWYgKFttb2NrQWNjZXNzaWJpbGl0eUVs
ZW1lbnQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihhY2Nlc3NpYmlsaXR5U2V0UHJlc2Vu
dGVyUHJvY2Vzc0lkZW50aWZpZXI6KV0pCisgICAgICAgIFsoaWQpbW9ja0FjY2Vzc2liaWxpdHlF
bGVtZW50LmdldCgpIGFjY2Vzc2liaWxpdHlTZXRQcmVzZW50ZXJQcm9jZXNzSWRlbnRpZmllcjpw
aWRdOworICAgIFttb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgc2V0V2ViUGFnZTp0aGlzXTsKKyAg
ICBtX21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCA9IFdURk1vdmUobW9ja0FjY2Vzc2liaWxpdHlF
bGVtZW50KTsKK30KKwogdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybVJlaW5pdGlhbGl6ZSgpCiB7Ci0g
ICAgYWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oYWNjZXNzaWJpbGl0eVJlbW90ZVRv
a2VuRGF0YSgpKTsKKyAgICBSZWYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZv
Y3VzZWRPck1haW5GcmFtZSgpOworICAgIGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2Vu
KGFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSwgZnJhbWUtPmZyYW1lSUQoKSk7CiB9CiAK
IFJldGFpblB0cjxOU0RhdGE+IFdlYlBhZ2U6OmFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEo
KSBjb25zdApAQCAtNDY5LDEyICs0NzYsMjcgQEAgYm9vbCBXZWJQYWdlOjpwZXJmb3JtTm9uRWRp
dGluZ0JlaGF2aW9yRm9yU2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgS2V5Ym8KICAg
ICByZXR1cm4gZGlkUGVyZm9ybUFjdGlvbjsKIH0KIAordm9pZCBXZWJQYWdlOjp1cGRhdGVSZW1v
dGVQYWdlQWNjZXNzaWJpbGl0eU9mZnNldChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgV2ViQ29yZTo6SW50UG9pbnQgb2Zmc2V0KQoreworICAgIFthY2Nlc3NpYmlsaXR5UmVtb3Rl
T2JqZWN0KCkgc2V0UmVtb3RlRnJhbWVPZmZzZXQ6b2Zmc2V0XTsKK30KKwordm9pZCBXZWJQYWdl
OjpyZWdpc3RlclJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eVRva2VucyhwaWRfdCBwaWQsIHN0ZDo6
c3Bhbjxjb25zdCB1aW50OF90PiBlbGVtZW50VG9rZW4pCit7CisgICAgTlNEYXRhICplbGVtZW50
VG9rZW5EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmVsZW1lbnRUb2tlbi5kYXRhKCkgbGVu
Z3RoOmVsZW1lbnRUb2tlbi5zaXplKCldOworICAgIGF1dG8gcmVtb3RlRWxlbWVudCA9IGVsZW1l
bnRUb2tlbkRhdGEubGVuZ3RoID8gYWRvcHROUyhbW05TQWNjZXNzaWJpbGl0eVJlbW90ZVVJRWxl
bWVudCBhbGxvY10gaW5pdFdpdGhSZW1vdGVUb2tlbjplbGVtZW50VG9rZW5EYXRhXSkgOiBuaWw7
CisKKyAgICBjcmVhdGVNb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQocGlkKTsKKyAgICBbYWNjZXNz
aWJpbGl0eVJlbW90ZU9iamVjdCgpIHNldFJlbW90ZVBhcmVudDpyZW1vdGVFbGVtZW50LmdldCgp
XTsKK30KKwogdm9pZCBXZWJQYWdlOjpyZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tl
bnMoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGVsZW1lbnRUb2tlbiwgc3RkOjpzcGFuPGNvbnN0
IHVpbnQ4X3Q+IHdpbmRvd1Rva2VuKQogewogICAgIE5TRGF0YSAqZWxlbWVudFRva2VuRGF0YSA9
IFtOU0RhdGEgZGF0YVdpdGhCeXRlczplbGVtZW50VG9rZW4uZGF0YSgpIGxlbmd0aDplbGVtZW50
VG9rZW4uc2l6ZSgpXTsKICAgICBOU0RhdGEgKndpbmRvd1Rva2VuRGF0YSA9IFtOU0RhdGEgZGF0
YVdpdGhCeXRlczp3aW5kb3dUb2tlbi5kYXRhKCkgbGVuZ3RoOndpbmRvd1Rva2VuLnNpemUoKV07
CiAgICAgYXV0byByZW1vdGVFbGVtZW50ID0gZWxlbWVudFRva2VuRGF0YS5sZW5ndGggPyBhZG9w
dE5TKFtbTlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlFbGVtZW50IGFsbG9jXSBpbml0V2l0aFJlbW90
ZVRva2VuOmVsZW1lbnRUb2tlbkRhdGFdKSA6IG5pbDsKICAgICBhdXRvIHJlbW90ZVdpbmRvdyA9
IHdpbmRvd1Rva2VuRGF0YS5sZW5ndGggPyBhZG9wdE5TKFtbTlNBY2Nlc3NpYmlsaXR5UmVtb3Rl
VUlFbGVtZW50IGFsbG9jXSBpbml0V2l0aFJlbW90ZVRva2VuOndpbmRvd1Rva2VuRGF0YV0pIDog
bmlsOworCiAgICAgW3JlbW90ZUVsZW1lbnQgc2V0V2luZG93VUlFbGVtZW50OnJlbW90ZVdpbmRv
dy5nZXQoKV07CiAgICAgW3JlbW90ZUVsZW1lbnQgc2V0VG9wTGV2ZWxVSUVsZW1lbnQ6cmVtb3Rl
V2luZG93LmdldCgpXTsKIApAQCAtNTE2LDYgKzUzOCwxMSBAQCBXS0FjY2Vzc2liaWxpdHlXZWJQ
YWdlT2JqZWN0KiBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkKICAgICByZXR1
cm4gbV9tb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQuZ2V0KCk7CiB9CiAKK1dlYkNvcmU6OkludFBv
aW50IFdlYlBhZ2U6OmFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCgpCit7CisgICAgcmV0
dXJuIFttX21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCBhY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVP
ZmZzZXRdOworfQorCiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKIHZv
aWQgV2ViUGFnZTo6Y2FjaGVBWFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBv
aW50KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggMDYxNGJjZjdh
ZjVjLi5iYTgzNjgwNjQ1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApA
QCAtNjUsNiArNjUsOSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2NyZWVuUHJvcGVydGllcy5oPgog
I2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAjaW5jbHVkZSA8d3RmL01hY2hTZW5kUmln
aHQuaD4KKworT0JKQ19DTEFTUyBOU011dGFibGVEaWN0aW9uYXJ5OworCiAjZW5kaWYKIAogI2lm
IFBMQVRGT1JNKEdUSykKQEAgLTg3LDYgKzkwLDcgQEAKICNpbmNsdWRlICJXZWJTUUxpdGVEYXRh
YmFzZVRyYWNrZXIuaCIKICNlbmRpZgogCisKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgT2JqZWN0
OwogfQpAQCAtNTExLDYgKzUxNSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybVNldENh
Y2hlTW9kZWwoQ2FjaGVNb2RlbCk7CiAKICAgICB2b2lkIHNldEVuaGFuY2VkQWNjZXNzaWJpbGl0
eShib29sKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIGJpbmRBY2Nlc3NpYmlsaXR5
RnJhbWVXaXRoRGF0YShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHN0ZDo6c3Bhbjxjb25zdCB1
aW50OF90Pik7CisjZW5kaWYKIAogICAgIHZvaWQgc3RhcnRNZW1vcnlTYW1wbGVyKFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBkb3VibGUpOwogICAgIHZv
aWQgc3RvcE1lbW9yeVNhbXBsZXIoKTsKQEAgLTgyNiw2ICs4MzMsNyBAQCBwcml2YXRlOgogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIEhhc2hDb3VudGVkU2V0PFN0cmluZz4gbV9wZW5kaW5nUGFz
dGVib2FyZFdyaXRlQ291bnRzOwogICAgIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gbV9h
dWRpdFRva2VuRm9yU2VsZjsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gbV9h
Y2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVUb2tlbkNhY2hlOwogI2VuZGlmCiAKICNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCmluZGV4IDk5YjQwMmFmMTFjYS4uZDc3NWZlN2QzOGQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNjksNiArNjks
NyBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIE5vdFJlZkNvdW50ZWQg
ewogICAgIFNldFRleHRDaGVja2VyU3RhdGUoc3RydWN0IFdlYktpdDo6VGV4dENoZWNrZXJTdGF0
ZSB0ZXh0Q2hlY2tlclN0YXRlKQogCiAgICAgU2V0RW5oYW5jZWRBY2Nlc3NpYmlsaXR5KGJvb2wg
ZmxhZykKKyAgICBCaW5kQWNjZXNzaWJpbGl0eUZyYW1lV2l0aERhdGEoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhKTsKIAogICAg
IEdhcmJhZ2VDb2xsZWN0SmF2YVNjcmlwdE9iamVjdHMoKQogICAgIFNldEphdmFTY3JpcHRHYXJi
YWdlQ29sbGVjdG9yVGltZXJFbmFibGVkKGJvb2wgZW5hYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggYzUzODU3ZmJlMWQ0
Li4xMTYwNmU5NjM5NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAtMjEzLDYgKzIxMywxNiBAQCB2b2lkIFdlYlByb2Nlc3M6
OnBsYXRmb3JtU2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVsKQogewogfQogCit2b2lkIFdlYlByb2Nl
c3M6OmJpbmRBY2Nlc3NpYmlsaXR5RnJhbWVXaXRoRGF0YShXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCit7CisgICAgaWYgKCFt
X2FjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZVRva2VuQ2FjaGUpCisgICAgICAgIG1fYWNjZXNzaWJp
bGl0eVJlbW90ZUZyYW1lVG9rZW5DYWNoZSA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5
IGFsbG9jXSBpbml0XSk7CisKKyAgICBhdXRvIGZyYW1lSW50ID0gZnJhbWVJRC5vYmplY3QoKS50
b1VJbnQ2NCgpOworICAgIE5TRGF0YSAqbnNEYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRh
dGEuZGF0YSgpIGxlbmd0aDpkYXRhLnNpemUoKV07CisgICAgW21fYWNjZXNzaWJpbGl0eVJlbW90
ZUZyYW1lVG9rZW5DYWNoZSBzZXRPYmplY3Q6bnNEYXRhIGZvcktleTpAKGZyYW1lSW50KV07Cit9
CisKIGlkIFdlYlByb2Nlc3M6OmFjY2Vzc2liaWxpdHlGb2N1c2VkVUlFbGVtZW50KCkKIHsKICAg
ICBhdXRvIHJldHJpZXZlRm9jdXNlZFVJRWxlbWVudEZyb21NYWluVGhyZWFkID0gW10gKCkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMjFlMjFmMDhiZDY0Li5iNGNmMjgyYzE4Y2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMjI1LDYgKzIyNSw3IEBAIHByaXZhdGU6
CiAjZW5kaWYKIAogICAgIFJlbW90ZUFYT2JqZWN0UmVmIGFjY2Vzc2liaWxpdHlSZW1vdGVPYmpl
Y3QoKSBmaW5hbCB7IHJldHVybiAwOyB9CisgICAgV2ViQ29yZTo6SW50UG9pbnQgYWNjZXNzaWJp
bGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCkgZmluYWwgeyByZXR1cm4geyB9OyB9CiAjaWYgRU5BQkxF
KEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKICAgICB2b2lkIHNldEFYSXNvbGF0ZWRUcmVl
Um9vdChXZWJDb3JlOjpBWENvcmVPYmplY3QqKSBmaW5hbCB7IH0KICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>469915</attachid>
            <date>2024-02-15 23:58:28 -0800</date>
            <delta_ts>2024-02-16 09:28:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-268804-20240215235826.patch</filename>
            <type>text/plain</type>
            <size>119063</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">RnJvbSBiMGMwNDRmZmQ5ODgyZjVjZDQ5NmMyOTk3NDBjZDRlZDAxY2I0YTVkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpcyBGbGVpemFjaCA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4K
RGF0ZTogVGh1LCAxNSBGZWIgMjAyNCAxMjo0MDozOCAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIEFY
OiBTdXBwb3J0IHNpdGUgaXNvbGF0aW9uIGZvciBWb2ljZU92ZXIKIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjg4MDQgcmRhcjovLzk5NjY1NTYxCgpSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KCkluaXRpYWwgc3VwcG9ydCBmb3Igc2l0ZSBpc29sYXRpb24gZm9y
IFZvaWNlT3Zlci4KCldoZW4gYSBzY3JvbGwgdmlldyBob3N0cyBhIFJlbW90ZUZyYW1lIGl0IGJp
bmRzIGl0c2VsZiB0byB0aGUgb3RoZXIgc2lkZSB0aHJvdWdoIGEgV2ViUGFnZSBtZXNzYWdlLgpU
aGlzIHRyYW5zZmVycyBkYXRhIHRva2VucyBzbyBBY2Nlc3NpYmlsaXR5IHJlbW90ZSBlbGVtZW50
cyBhcmUgY3JlYXRlZCBhbmQgaG9va2VkIHVwLgoKVGhlIGJvdW5kaW5nIGJveGVzIGluc2lkZSB0
aGUgc3ViIGZyYW1lcyBuZWVkIHRvIGhhdmUgdGhlIGluaXRpYWwgb2Zmc2V0IGFwcGxpZWQgYW5k
IHRoZW4gbmVlZCB0byBiZSBjb252ZXJ0ZWQKZWFjaCBzdGVwIHVwIHRoZSBjaGFpbiB0byBhY2Nv
dW50IGZvciBzY3JvbGwgb2Zmc2V0cyB0aGF0IG9ubHkgZWFjaCBwcm9jZXNzIGtub3dzIGFib3V0
LgoKKiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dDoKKiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWENvcmVPYmplY3QuaDoKKFdlYkNvcmU6OmFjY2Vzc2liaWxpdHlSb2xlVG9TdHJpbmcpOgoo
V2ViQ29yZTo6QVhDb3JlT2JqZWN0Ojppc1JlbW90ZUZyYW1lIGNvbnN0KToKKiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcDoKKFdlYkNvcmU6OnN0cmVhbUFYQ29yZU9i
amVjdCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoK
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmNyZWF0ZSk6CihXZWJDb3JlOjpBWE9iamVjdENhY2hl
OjpvblJlbW90ZUZyYW1lSW5pdGlhbGl6ZWQpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5jcHA6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZWxhdGl2
ZUZyYW1lIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnJlbW90ZUZyYW1l
T2Zmc2V0IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW1vdGVGcmFtZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJh
bWVDbGllbnQuaC4KKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6Y3JlYXRlKToK
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6QWNjZXNzaWJpbGl0eVJlbW90ZUZy
YW1lKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6ZWxlbWVudFJlY3QgY29u
c3QpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbW90ZUZy
YW1lLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVDbGllbnQu
aC4KKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkQXR0YWNobWVu
dENoaWxkcmVuKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENoaWxk
cmVuKToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpkZXRhY2hSZW1vdGVQ
YXJ0cyk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6Y2xlYXJDaGlsZHJlbik6
CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkUmVtb3RlRnJhbWVDaGlsZCk6
CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkQ2hpbGRyZW4pOgooV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OndlYkFyZWFPYmplY3QgY29uc3QpOgooV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmRvY3VtZW50IGNvbnN0KToKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpwYXJlbnRPYmplY3QgY29uc3QpOgoqIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaDoKKiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcDoKKFdl
YkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKFdlYkNvcmU6
OkFYSXNvbGF0ZWRPYmplY3Q6OnNldFByb3BlcnR5KToKKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmpl
Y3Q6OnJlbW90ZUZyYW1lT2Zmc2V0IGNvbnN0KToKKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OnJlbGF0aXZlRnJhbWUgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHA6CihXZWJDb3JlOjpBWElzb2xhdGVk
VHJlZTo6dXBkYXRlTm9kZVByb3BlcnRpZXMpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMubW06CihXZWJDb3Jl
OjpBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplUGxhdGZvcm1Qcm9wZXJ0aWVzKToKKFdlYkNv
cmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50IGNvbnN0KToK
KiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFj
Lm1tOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lOjpnZW5lcmF0ZVJlbW90ZVRv
a2VuIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6aW5pdGlhbGl6
ZVBsYXRmb3JtRWxlbWVudFdpdGhSZW1vdGVUb2tlbik6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
OjpjcmVhdGVQbGF0Zm9ybVJvbGVNYXApOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbToKKG1ha2VOU0FycmF5KToK
KiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgcm9sZV0pOgoo
LVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBpc0VtcHR5R3JvdXBdKToKKC1bV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgcm9sZURlc2NyaXB0aW9uXSk6CigtW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIF90cmFuc2Zvcm1TcGVjaWFsQ2hpbGRyZW5DYXNlczpdKToKKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
Ol0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5SGl0VGVz
dDpdKToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgQUxMT1dfREVQUkVDQVRFRF9J
TVBMRU1FTlRBVElPTlNfRU5EXSk6CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpmb3JQYXJhbWV0ZXI6XSk6CigtW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlJbmRleE9mQ2hpbGQ6XSk6CigtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZUNvdW50
Ol0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXJyYXlB
dHRyaWJ1dGVWYWx1ZXM6aW5kZXg6bWF4Q291bnQ6XSk6CiogU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHA6CihXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjphY2Nl
c3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQpOgoqIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUZyYW1lTG9hZGVyQ2xpZW50Lmg6CiogU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvY2FsRnJhbWVM
b2FkZXJDbGllbnQuaDoKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwOgooV2ViQ29yZTo6
UGFnZTo6c2hvdWxkVXBkYXRlQWNjZXNzaWJpbGl0eVJlZ2lvbnMgY29uc3QpOgoqIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuY3BwOgooV2ViQ29yZTo6UmVtb3RlRnJhbWU6OnVwZGF0
ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldCk6CihXZWJDb3JlOjpSZW1vdGVGcmFtZTo6
dW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyk6CihXZWJDb3JlOjpSZW1vdGVGcmFtZTo6
YmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMpOgoqIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVt
b3RlRnJhbWUuaDoKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lQ2xpZW50Lmg6Ciog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcDoKKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdl
UHJveHk6OnJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbik6CiogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaDoKKiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcDoKKFdlYktpdDo6V2ViRnJhbWVQcm94eTo6YmluZEFj
Y2Vzc2liaWxpdHlGcmFtZVdpdGhEYXRhKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJG
cmFtZVByb3h5Lmg6CiogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojpzd2FwVG9Qcm92aXNpb25hbFBhZ2UpOgooV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKToKKFdlYktpdDo6V2Vi
UGFnZVByb3h5Ojp1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQpOgoqIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MubW06CihXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5
V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQpOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW06CihXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9j
ZXNzQWNjZXNzaWJpbGl0eVRva2VuKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGxNYWMuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGxNYWMubW06CihXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5V2ViUHJv
Y2Vzc1Rva2VuUmVjZWl2ZWQpOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW06CihXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNj
ZXNzaWJpbGl0eVRva2VuKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0lt
cGwuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwubW06CihXZWJL
aXQ6OldlYlZpZXdJbXBsOjpzZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuKToKKiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNs
aWVudC5jcHA6CihXZWJLaXQ6OldlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQ6OmFjY2Vzc2liaWxp
dHlSZW1vdGVGcmFtZU9mZnNldCk6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuaDoKKiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuY3BwOgooV2ViS2l0OjpX
ZWJSZW1vdGVGcmFtZUNsaWVudDo6dW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyk6CihX
ZWJLaXQ6OldlYlJlbW90ZUZyYW1lQ2xpZW50Ojp1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxp
dHlPZmZzZXQpOgooV2ViS2l0OjpXZWJSZW1vdGVGcmFtZUNsaWVudDo6YmluZFJlbW90ZUFjY2Vz
c2liaWxpdHlGcmFtZXMpOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJSZW1vdGVGcmFtZUNsaWVudC5oOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKFdlYktpdDo6V2ViUGFnZTo6YWNjZXNzaWJpbGl0
eVRyYW5zZmVyUmVtb3RlVG9rZW4pOgooV2ViS2l0OjpXZWJQYWdlOjphY2Nlc3NpYmlsaXR5TWFu
YWdlUmVtb3RlRWxlbWVudFN0YXR1cyk6CihXZWJLaXQ6OldlYlBhZ2U6OmJpbmRSZW1vdGVBY2Nl
c3NpYmlsaXR5RnJhbWVzKToKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmg6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbjoKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bToKKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplQWNjZXNzaWJpbGl0eSk6CihX
ZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtUmVpbml0aWFsaXplKToKKFdlYktpdDo6V2ViUGFnZTo6
YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KToKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaDoKKiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9i
amVjdEJhc2UubW06CigtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlIGF4T2JqZWN0
Q2FjaGVdKToKKC1bV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2Ugc2V0UmVtb3RlRnJh
bWVPZmZzZXQ6XSk6CigtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlIGFjY2Vzc2li
aWxpdHlSZW1vdGVGcmFtZU9mZnNldF0pOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tOgooV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybUluaXRpYWxp
emVBY2Nlc3NpYmlsaXR5KToKKFdlYktpdDo6V2ViUGFnZTo6Y3JlYXRlTW9ja0FjY2Vzc2liaWxp
dHlFbGVtZW50KToKKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1SZWluaXRpYWxpemUpOgooV2Vi
S2l0OjpXZWJQYWdlOjp1cGRhdGVSZW1vdGVQYWdlQWNjZXNzaWJpbGl0eU9mZnNldCk6CihXZWJL
aXQ6OldlYlBhZ2U6OnJlZ2lzdGVyUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5VG9rZW5zKToKKFdl
YktpdDo6V2ViUGFnZTo6cmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKToKKFdl
YktpdDo6V2ViUGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KToKKiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJQcm9jZXNzQ29jb2EubW06CihXZWJLaXQ6OldlYlByb2Nlc3M6OmJpbmRBY2Nlc3NpYmls
aXR5RnJhbWVXaXRoRGF0YSk6CiogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKLS0tCiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dCAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogLi4uL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIHwgICA0ICsKIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhDb3JlT2JqZWN0LmggICB8ICAxMiArKwogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WExvZ2dlci5jcHAgICAgIHwgICAzICsKIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5jcHAgICB8ICAxNSArLQogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmggIHwgICAyICsKIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhSZW1vdGVG
cmFtZS5jcHAgICB8ICA0MiArKysrKwogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFJl
bW90ZUZyYW1lLmggIHwgIDYxICsrKysrKysrCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcCAgICAgfCAgMjMgKystCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmggICAgICAgfCAgIDUgKwogLi4uL0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
Y3BwICAgICAgICAgICAgIHwgICA0ICstCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldy5jcHAgfCAgNjIgKysrKysrKy0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlTY3JvbGxWaWV3LmggICB8ICAgNiArLQogLi4uL2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaS5jcHAgICAgICAgIHwgICAxICsKIC4uLi9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJJT1MubW0gICB8ICAgMSArCiAuLi4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmpl
Y3QuY3BwICAgICAgICAgfCAgMzQgKysrKy0KIC4uLi9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9i
amVjdC5oICAgICAgICAgICB8ICAgOCArLQogLi4uL2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJl
ZS5jcHAgICAgICAgICAgIHwgIDYxICsrKy0tLS0tCiAuLi4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRUcmVlLmggICAgICAgICAgICAgfCAgMjkgKysrKwogLi4uL2lzb2xhdGVkdHJlZS9tYWMvQVhJ
c29sYXRlZE9iamVjdE1hYy5tbSAgIHwgICA3ICsKIC4uLi9tYWMvQWNjZXNzaWJpbGl0eU9iamVj
dE1hYy5tbSAgICAgICAgICAgICB8ICAyNiArKysrCiAuLi4vbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyQmFzZS5tbSAgfCAgIDkgKy0KIC4uLi9tYWMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJNYWMubW0gICB8IDE0MyArKysrKysrKysrKystLS0tLS0KIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwICAgICAgICB8ICAgNSArCiAuLi4vV2ViQ29yZS9s
b2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oICAgfCAgIDEgKwogLi4uL1dlYkNvcmUvbG9h
ZGVyL0xvY2FsRnJhbWVMb2FkZXJDbGllbnQuaCAgIHwgICAxICsKIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAgICAgICAgICAgICAgICAgICB8ICAxMSArLQogU291cmNlL1dlYkNvcmUvcGFn
ZS9SZW1vdGVGcmFtZS5jcHAgICAgICAgICAgIHwgIDE1ICsrCiBTb3VyY2UvV2ViQ29yZS9wYWdl
L1JlbW90ZUZyYW1lLmggICAgICAgICAgICAgfCAgIDQgKwogU291cmNlL1dlYkNvcmUvcGFnZS9S
ZW1vdGVGcmFtZUNsaWVudC5oICAgICAgIHwgICA0ICsKIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1BhZ2VDbGllbnQuaCAgICAgICAgICB8ICAgMyArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvUHJv
dmlzaW9uYWxQYWdlUHJveHkuY3BwIHwgICAyICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9Qcm92
aXNpb25hbFBhZ2VQcm94eS5oICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkZyYW1lUHJveHkuY3BwICAgICB8ICAgOSArKwogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
RnJhbWVQcm94eS5oICAgICAgIHwgICAyICsKIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAgICAgICB8ICAyNCArKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oICAgICAgICB8ICAgNCArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluIHwgICA0ICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MuaCAgfCAgIDIgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5tbSB8ICAgMiArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbSAgIHwgICA3ICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGxNYWMuaCAgfCAgIDIgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbE1hYy5tbSB8ICAgNCArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94
eU1hYy5tbSAgIHwgICA0ICstCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0lt
cGwuaCAgICAgfCAgIDMgKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3SW1w
bC5tbSAgICB8ICAgOCArLQogLi4uL1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuY3BwICAgICAg
ICAgICAgIHwgICA2ICsKIC4uLi9XZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmggICAgICAgICAg
ICAgICB8ICAgMSArCiAuLi4vV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuY3Bw
ICAgfCAgMzIgKysrKwogLi4uL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90ZUZyYW1lQ2xpZW50Lmgg
ICAgIHwgICA0ICsKIC4uLi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1t
ICB8ICA0NiArKysrKy0KIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwICB8ICAxMCArKwogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
ICAgIHwgIDExICstCiAuLi4vV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4g
ICAgfCAgIDMgKwogLi4uL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSAgICAg
IHwgIDIyICsrLQogLi4uL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oICAg
IHwgICA0ICsKIC4uLi9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0gICB8
ICAyNyArKystCiAuLi4vV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tICAgICAg
fCAgNDUgKysrKy0tCiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgICAg
ICAgfCAgIDQgKwogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCAgICAgICAg
IHwgICA2ICsKIC4uLi9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluICB8
ICAgMSArCiAuLi4vV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0gICAgICAgfCAg
MTAgKysKIC4uLi9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCB8ICAg
MSArCiA2MyBmaWxlcyBjaGFuZ2VkLCA3NjMgaW5zZXJ0aW9ucygrKSwgMTUyIGRlbGV0aW9ucygt
KQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhSZW1v
dGVGcmFtZS5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYUmVtb3RlRnJhbWUuaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMWY1N2I5YWEwYTM0Li5hNTBm
ZTg5NDkzZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC01MjUsNiArNTI1LDcgQEAgYWNjZXNzaWJpbGl0
eS9BWEdlb21ldHJ5TWFuYWdlci5jcHAKIGFjY2Vzc2liaWxpdHkvQVhJbWFnZS5jcHAKIGFjY2Vz
c2liaWxpdHkvQVhMb2dnZXIuY3BwCiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCith
Y2Nlc3NpYmlsaXR5L0FYUmVtb3RlRnJhbWUuY3BwCiBhY2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtl
ci5jcHAKIGFjY2Vzc2liaWxpdHkvQVhUZXh0UnVuLmNwcAogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5QVJJQUdyaWQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggMmE3ZWM4NjgwMDAyLi42N2RmYzBlZGI0NjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTg5NjAsNiArODk2MCw4IEBACiAJCTI5NDg5RkM1MTJDMDBGMDMwMEQ4M0YwRiAvKiBBY2Nlc3Np
YmlsaXR5U2Nyb2xsVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nl
c3NpYmlsaXR5U2Nyb2xsVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTQ5
ODY4MTE5NTM0MTk0MDA3MkQyQkQgLyogVGV4dFVuZG9JbnNlcnRpb25NYXJrdXBNYWMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUZXh0VW5kb0luc2VydGlvbk1h
cmt1cE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk0QkRBRTYyMUZGNTgy
QTAwNTEwNzdCIC8qIEFjY2Vzc2liaWxpdHlPYmplY3RDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlPYmplY3RDb2NvYS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjk1NUNGMTEyQjIzMEFFNjAwMDFCRjgyIC8qIEFY
UmVtb3RlRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVhSZW1vdGVGcmFtZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkyOTU1Q0YxMjJCMjMwQUU2MDAwMUJGODIgLyogQVhSZW1vdGVG
cmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBWFJlbW90ZUZyYW1lLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk3QkUzRDkxNkMwNDNEODAwMzMxNkJEIC8qIFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTI5ODFBQkM0MTMxODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxl
bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5ODFDQTlEMTMxODIyRUMwMEQxMkYy
QSAvKiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNz
aWJpbGl0eUFSSUFHcmlkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzNDQ1
LDYgKzIzNDQ3LDggQEAKIAkJCQlDMDQ5M0VCNzI0NDY5OUU0MDA5QUFDODAgLyogQVhMb2dnZXIu
aCAqLywKIAkJCQkyOTgxQ0FBRjEzMTgyMkVDMDBEMTJGMkEgLyogQVhPYmplY3RDYWNoZS5jcHAg
Ki8sCiAJCQkJMjlBODEyMUEwRkJCOUMxRDAwNTEwMjkzIC8qIEFYT2JqZWN0Q2FjaGUuaCAqLywK
KwkJCQkyOTU1Q0YxMjJCMjMwQUU2MDAwMUJGODIgLyogQVhSZW1vdGVGcmFtZS5jcHAgKi8sCisJ
CQkJMjk1NUNGMTEyQjIzMEFFNjAwMDFCRjgyIC8qIEFYUmVtb3RlRnJhbWUuaCAqLywKIAkJCQlD
MEUyMDhBMTI5Mzc5QzZGMDBDMEQyRDMgLyogQVhUZXh0TWFya2VyLmNwcCAqLywKIAkJCQlDMEUy
MDhBMDI5Mzc5QzZFMDBDMEQyRDMgLyogQVhUZXh0TWFya2VyLmggKi8sCiAJCQkJNDhDNEU4M0My
QjM0RDgzODAwODM0NjBBIC8qIEFYVGV4dFJ1bi5jcHAgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYQ29yZU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWENvcmVPYmplY3QuaAppbmRleCA0NDEwODRlY2I4MDUuLjNmYmM3ZjhkYjI5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWENvcmVPYmplY3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYQ29yZU9iamVjdC5oCkBAIC0y
MDUsNiArMjA1LDcgQEAgZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5Um9sZSB7CiAgICAgUHJvZ3Jl
c3NJbmRpY2F0b3IsCiAgICAgUmFkaW9CdXR0b24sCiAgICAgUmFkaW9Hcm91cCwKKyAgICBSZW1v
dGVGcmFtZSwKICAgICBSb3dIZWFkZXIsCiAgICAgUm93LAogICAgIFJvd0dyb3VwLApAQCAtNDQy
LDYgKzQ0Myw4IEBAIEFMV0FZU19JTkxJTkUgU3RyaW5nIGFjY2Vzc2liaWxpdHlSb2xlVG9TdHJp
bmcoQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSkKICAgICAgICAgcmV0dXJuICJSYWRpb0J1dHRvbiJf
czsKICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0dyb3VwOgogICAgICAgICByZXR1
cm4gIlJhZGlvR3JvdXAiX3M7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmVtb3RlRnJh
bWU6CisgICAgICAgIHJldHVybiAiUmVtb3RlRnJhbWUiX3M7CiAgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6Um93SGVhZGVyOgogICAgICAgICByZXR1cm4gIlJvd0hlYWRlciJfczsKICAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSb3c6CkBAIC04MTUsNiArODE4LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvd0luc3RhbmNlKCkgY29u
c3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGxJbnN0
YW5jZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNBWElzb2xhdGVkT2JqZWN0SW5z
dGFuY2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQVhSZW1vdGVGcmFtZSgpIGNv
bnN0ID0gMDsKIAogICAgIGJvb2wgaXNIZWFkaW5nKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVl
KCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkhlYWRpbmc7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNM
aW5rKCkgY29uc3QgPSAwOwpAQCAtOTE5LDYgKzkyMywxMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c1RyZWVHcmlkKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OlRyZWVHcmlkOyB9CiAgICAgYm9vbCBpc1RyZWVJdGVtKCkgY29uc3QgeyByZXR1cm4gcm9s
ZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVJdGVtOyB9CiAgICAgYm9vbCBpc1Nj
cm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xl
OjpTY3JvbGxCYXI7IH0KKyAgICBib29sIGlzUmVtb3RlRnJhbWUoKSBjb25zdCB7IHJldHVybiBy
b2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmVtb3RlRnJhbWU7IH0KKyNpZiBQTEFU
Rk9STShDT0NPQSkKKyAgICB2aXJ0dWFsIFJldGFpblB0cjxpZD4gcmVtb3RlRnJhbWVQbGF0Zm9y
bUVsZW1lbnQoKSBjb25zdCA9IDA7CisjZW5kaWYKKyAgICB2aXJ0dWFsIGJvb2wgaGFzUmVtb3Rl
RnJhbWVDaGlsZCgpIGNvbnN0ID0gMDsKKwogICAgIGJvb2wgaXNCdXR0b24oKSBjb25zdDsKICAg
ICB2aXJ0dWFsIGJvb2wgaXNNZXRlcigpIGNvbnN0ID0gMDsKIApAQCAtMTE1OSw2ICsxMTY5LDgg
QEAgcHVibGljOgogICAgIC8vIFZpZXdwb3J0LXJlbGF0aXZlIG1lYW5zIHRoYXQgd2hlbiB0aGUg
cGFnZSBzY3JvbGxzLCB0aGUgcG9ydGlvbiBvZiB0aGUgcGFnZSBpbiB0aGUgdmlld3BvcnQgY2hh
bmdlcywgYW5kIHRodXMKICAgICAvLyBhbnkgdmlld3BvcnQtcmVsYXRpdmUgcmVjdHMgZG8gdG9v
IChzaW5jZSB0aGV5IGFyZSBlaXRoZXIgY2xvc2VyIHRvIG9yIGZhcnRoZXIgZnJvbSB0aGUgdmll
d3BvcnQgb3JpZ2luIGFmdGVyIHRoZSBzY3JvbGwpLgogICAgIHZpcnR1YWwgRmxvYXRQb2ludCBz
Y3JlZW5SZWxhdGl2ZVBvc2l0aW9uKCkgY29uc3QgPSAwOworICAgIC8vIFRoaXMgaXMgdGhlIGFt
b3VudCB0aGF0IHRoZSBSZW1vdGVGcmFtZSBpcyBvZmZzZXQgZnJvbSBpdHMgY29udGFpbmluZyBw
YXJlbnQuCisgICAgdmlydHVhbCBJbnRQb2ludCByZW1vdGVGcmFtZU9mZnNldCgpIGNvbnN0ID0g
MDsKIAogICAgIHZpcnR1YWwgRmxvYXRSZWN0IGNvbnZlcnRGcmFtZVRvU3BhY2UoY29uc3QgRmxv
YXRSZWN0JiwgQWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZSkgY29uc3QgPSAwOwogI2lmIFBM
QVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WExvZ2dlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcApp
bmRleCBiNmUzMDZjZGRlY2YuLjdiMzVjOGY5ZDEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWExvZ2dlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWExvZ2dlci5jcHAKQEAgLTg4Myw2ICs4ODMsOSBAQCB2b2lkIHN0cmVhbUFYQ29y
ZU9iamVjdChUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IEFYQ29yZU9iamVjdCYgb2JqZWN0LCBj
b25zdCBPcAogICAgIGlmIChvcHRpb25zICYgQVhTdHJlYW1PcHRpb25zOjpSb2xlKQogICAgICAg
ICBzdHJlYW0uZHVtcFByb3BlcnR5KCJyb2xlIiwgb2JqZWN0LnJvbGVWYWx1ZSgpKTsKIAorICAg
IGlmIChvYmplY3QucmVuZGVyZXIoKSkKKyAgICAgICAgc3RyZWFtLmR1bXBQcm9wZXJ0eSgicmVu
ZGVyTmFtZSIsIG9iamVjdC5yZW5kZXJlcigpLT5yZW5kZXJOYW1lKCkpOworCiAgICAgaWYgKG9w
dGlvbnMgJiBBWFN0cmVhbU9wdGlvbnM6OlBhcmVudElEKSB7CiAgICAgICAgIGF1dG8qIHBhcmVu
dCA9IG9iamVjdC5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICAgICAgc3RyZWFtLmR1bXBQ
cm9wZXJ0eSgicGFyZW50SUQiLCBwYXJlbnQgPyBwYXJlbnQtPm9iamVjdElEKCkgOiBBWElEKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5k
ZXggMjgwZmFkNGYyNzAxLi4xYWM5NWYyZWE2YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUg
IkFYSXNvbGF0ZWRPYmplY3QuaCIKICNpbmNsdWRlICJBWElzb2xhdGVkVHJlZS5oIgogI2luY2x1
ZGUgIkFYTG9nZ2VyLmgiCisjaW5jbHVkZSAiQVhSZW1vdGVGcmFtZS5oIgogI2luY2x1ZGUgIkFY
VGV4dE1hcmtlci5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlBUklBR3JpZC5oIgogI2luY2x1
ZGUgIkFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaCIKQEAgLTEwNTQsNyArMTA1NSwxMCBAQCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpjcmVhdGUoQWNjZXNzaWJpbGl0eVJv
bGUgcm9sZSkKICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCiAgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6VGFibGVIZWFkZXJDb250YWluZXI6CiAgICAgICAgIG9iaiA9IEFjY2Vzc2liaWxp
dHlUYWJsZUhlYWRlckNvbnRhaW5lcjo6Y3JlYXRlKCk7Ci0gICAgICAgIGJyZWFrOyAgIAorICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSZW1vdGVGcmFtZToKKyAg
ICAgICAgb2JqID0gQVhSZW1vdGVGcmFtZTo6Y3JlYXRlKCk7CisgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNsaWRlclRodW1iOgogICAgICAgICBvYmogPSBBY2Nl
c3NpYmlsaXR5U2xpZGVyVGh1bWI6OmNyZWF0ZSgpOwogICAgICAgICBicmVhazsKQEAgLTEzNTAs
NiArMTM1NCwxNSBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZVJlY29tcHV0ZUNlbGxTbG90
cyhBY2Nlc3NpYmlsaXR5VGFibGUmIGF4VGFibGUpCiAjZW5kaWYKIH0KIAordm9pZCBBWE9iamVj
dENhY2hlOjpvblJlbW90ZUZyYW1lSW5pdGlhbGl6ZWQoQVhSZW1vdGVGcmFtZSYgcmVtb3RlRnJh
bWUpCit7CisjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKKyAgICB1cGRh
dGVJc29sYXRlZFRyZWUocmVtb3RlRnJhbWUsIEFYUHJvcGVydHlOYW1lOjpSZW1vdGVGcmFtZVBs
YXRmb3JtRWxlbWVudCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShyZW1vdGVGcmFtZSk7Cisj
ZW5kaWYKK30KKwogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiB2b2lk
IEFYT2JqZWN0Q2FjaGU6OmhhbmRsZVJvd3NwYW5DaGFuZ2VkKEFjY2Vzc2liaWxpdHlUYWJsZUNl
bGwmIGF4Q2VsbCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmgKaW5kZXggZDEwNDljYzliYzIxLi4zOGM5OGE0NmVhOWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCkBAIC00Nyw2ICs0Nyw3IEBAIGNsYXNz
IFRleHRTdHJlYW07CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQVhSZW1vdGVGcmFt
ZTsKIGNsYXNzIEFjY2Vzc2liaWxpdHlUYWJsZTsKIGNsYXNzIEFjY2Vzc2liaWxpdHlUYWJsZUNl
bGw7CiBjbGFzcyBEb2N1bWVudDsKQEAgLTI0Niw2ICsyNDcsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkZWZlck5vZGVBZGRlZE9yUmVtb3ZlZChOb2RlKik7CiAgICAgdm9pZCBoYW5kbGVTY3JvbGxl
ZFRvQW5jaG9yKGNvbnN0IE5vZGUqIGFuY2hvck5vZGUpOwogICAgIHZvaWQgb25TY3JvbGxiYXJV
cGRhdGUoU2Nyb2xsVmlldyopOworICAgIHZvaWQgb25SZW1vdGVGcmFtZUluaXRpYWxpemVkKEFY
UmVtb3RlRnJhbWUmKTsKIAogICAgIGJvb2wgaXNSZXRyaWV2aW5nQ3VycmVudE1vZGFsTm9kZSgp
IHsgcmV0dXJuIG1faXNSZXRyaWV2aW5nQ3VycmVudE1vZGFsTm9kZTsgfQogICAgIE5vZGUqIG1v
ZGFsTm9kZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFJl
bW90ZUZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhSZW1vdGVGcmFt
ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jZmJkZWRkOTgx
Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYUmVt
b3RlRnJhbWUuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiQVhSZW1vdGVGcmFtZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK1JlZjxBWFJlbW90ZUZyYW1lPiBBWFJlbW90ZUZyYW1lOjpjcmVhdGUoKQoreworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEFYUmVtb3RlRnJhbWUpOworfQorCitMYXlvdXRSZWN0IEFYUmVt
b3RlRnJhbWU6OmVsZW1lbnRSZWN0KCkgY29uc3QKK3sKKyAgICBhdXRvKiBwYXJlbnQgPSBwYXJl
bnRPYmplY3QoKTsKKyAgICByZXR1cm4gcGFyZW50ID8gcGFyZW50LT5lbGVtZW50UmVjdCgpIDog
TGF5b3V0UmVjdCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYUmVtb3RlRnJhbWUuaCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhSZW1vdGVGcmFtZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uOTRkMmRmMDMwNGQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFJlbW90ZUZyYW1lLmgKQEAgLTAsMCArMSw2MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU1vY2tP
YmplY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSZW1vdGVGcmFtZTsKKwor
Y2xhc3MgQVhSZW1vdGVGcmFtZSBmaW5hbCA6IHB1YmxpYyBBY2Nlc3NpYmlsaXR5TW9ja09iamVj
dCB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxBWFJlbW90ZUZyYW1lPiBjcmVhdGUoKTsKKwor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgaW5pdGlhbGl6ZVBsYXRmb3JtRWxlbWVudFdp
dGhSZW1vdGVUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIGludCk7CisgICAgc3RkOjpz
cGFuPGNvbnN0IHVpbnQ4X3Q+IGdlbmVyYXRlUmVtb3RlVG9rZW4oKSBjb25zdDsKKyAgICBSZXRh
aW5QdHI8aWQ+IHJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9y
ZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudDsgfQorICAgIHBpZF90IHByb2Nlc3NJZGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzSWRlbnRpZmllcjsgfQorI2VuZGlmCisKK3ByaXZh
dGU6CisgICAgdmlydHVhbCB+QVhSZW1vdGVGcmFtZSgpID0gZGVmYXVsdDsKKworICAgIEFjY2Vz
c2liaWxpdHlSb2xlIGRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCkgeyByZXR1cm4gQWNjZXNz
aWJpbGl0eVJvbGU6OlJlbW90ZUZyYW1lOyB9CisgICAgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0
eUlzSWdub3JlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0FYUmVtb3Rl
RnJhbWUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgTGF5b3V0UmVjdCBlbGVtZW50UmVj
dCgpIGNvbnN0OworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgUmV0YWluUHRyPGlkPiBtX3Jl
bW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50OworICAgIHBpZF90IG1fcHJvY2Vzc0lkZW50aWZpZXIg
eyAwIH07CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19BQ0NFU1NJQklMSVRZKEFYUmVtb3RlRnJhbWUsIGlzQVhSZW1vdGVGcmFt
ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5jcHAKaW5kZXggM2UzMmRiMDkzYWZiLi5mZDZmN2M0ZTI1NTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApA
QCAtNTQ0LDcgKzU0NCw5IEBAIEZsb2F0UmVjdCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpjb252ZXJ0
RnJhbWVUb1NwYWNlKGNvbnN0IEZsb2F0UmVjdCYgZnJhbWVSZWN0LCBBCiAgICAgCiBGbG9hdFJl
Y3QgQWNjZXNzaWJpbGl0eU9iamVjdDo6cmVsYXRpdmVGcmFtZSgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIGNvbnZlcnRGcmFtZVRvU3BhY2UoZWxlbWVudFJlY3QoKSwgQWNjZXNzaWJpbGl0eUNvbnZl
cnNpb25TcGFjZTo6UGFnZSk7CisgICAgYXV0byByZWN0ID0gZWxlbWVudFJlY3QoKTsKKyAgICBy
ZWN0Lm1vdmVCeShyZW1vdGVGcmFtZU9mZnNldCgpKTsKKyAgICByZXR1cm4gY29udmVydEZyYW1l
VG9TcGFjZShyZWN0LCBBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlOjpQYWdlKTsKIH0KIAog
QWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU9iamVjdDo6bmV4dFNpYmxpbmdVbmln
bm9yZWQoaW50IGxpbWl0KSBjb25zdApAQCAtMjA4NiwxNCArMjA4OCwyMyBAQCBjb25zdCBBY2Nl
c3NpYmlsaXR5U2Nyb2xsVmlldyogQWNjZXNzaWJpbGl0eU9iamVjdDo6YW5jZXN0b3JBY2Nlc3Np
YmlsaXR5U2Nyb2xsVgogI2lmIFBMQVRGT1JNKENPQ09BKQogUmVtb3RlQVhPYmplY3RSZWYgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6cmVtb3RlUGFyZW50T2JqZWN0KCkgY29uc3QKIHsKLSAgICBpZiAo
YXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBm
cmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpKQotICAgICAgICAgICAgcmV0dXJuIGZyYW1lLT5sb2Fk
ZXIoKS5jbGllbnQoKS5hY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCk7Ci0gICAgfQotICAgIHJl
dHVybiBudWxscHRyOworICAgIGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsKKyAg
ICBhdXRvKiBmcmFtZSA9IGRvY3VtZW50ID8gZG9jdW1lbnQtPmZyYW1lKCkgOiBudWxscHRyOwor
ICAgIHJldHVybiBmcmFtZSA/IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5hY2Nlc3NpYmlsaXR5
UmVtb3RlT2JqZWN0KCkgOiBudWxscHRyOwogfQogI2VuZGlmCiAKK0ludFBvaW50IEFjY2Vzc2li
aWxpdHlPYmplY3Q6OnJlbW90ZUZyYW1lT2Zmc2V0KCkgY29uc3QKK3sKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICBhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7CisgICAgYXV0byog
ZnJhbWUgPSBkb2N1bWVudCA/IGRvY3VtZW50LT5mcmFtZSgpIDogbnVsbHB0cjsKKyAgICByZXR1
cm4gZnJhbWUgPyBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuYWNjZXNzaWJpbGl0eVJlbW90ZUZy
YW1lT2Zmc2V0KCkgOiBJbnRQb2ludCgpOworI2Vsc2UKKyAgICByZXR1cm4gSW50UG9pbnQoKTsK
KyNlbmRpZgorfQorCiBEb2N1bWVudCogQWNjZXNzaWJpbGl0eU9iamVjdDo6ZG9jdW1lbnQoKSBj
b25zdAogewogICAgIGF1dG8qIGZyYW1lVmlldyA9IGRvY3VtZW50RnJhbWVWaWV3KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCmlu
ZGV4IDRkMjBmNTVhNTQ0Yy4uMzU5NWQzMWU3MWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaApAQCAtMTAyLDYgKzEwMiw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBp
c0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJv
b2wgaXNBWFJlbW90ZUZyYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlld0luc3RhbmNlKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5U1ZHUm9v
dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlUYWJs
ZUluc3RhbmNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTQ2MiwxMCAr
NDYzLDE0IEBAIHB1YmxpYzoKICAgICBXaWRnZXQqIHdpZGdldEZvckF0dGFjaG1lbnRWaWV3KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIGJvb2wgaXNQbHVnaW4oKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCisgICAgSW50UG9pbnQgcmVtb3RlRnJh
bWVPZmZzZXQoKSBjb25zdCBvdmVycmlkZTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZW1v
dGVBWE9iamVjdFJlZiByZW1vdGVQYXJlbnRPYmplY3QoKSBjb25zdCBvdmVycmlkZTsKICAgICBG
bG9hdFJlY3QgY29udmVydFJlY3RUb1BsYXRmb3JtU3BhY2UoY29uc3QgRmxvYXRSZWN0JiwgQWNj
ZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmV0YWluUHRy
PGlkPiByZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG5pbDsgfQogI2VuZGlmCisgICAgYm9vbCBoYXNSZW1vdGVGcmFtZUNoaWxkKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIFBhZ2UqIHBhZ2UoKSBjb25zdCBvdmVycmlk
ZTsKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCBvdmVycmlkZTsKICAgICBMb2NhbEZy
YW1lVmlldyogZG9jdW1lbnRGcmFtZVZpZXcoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwCmluZGV4IGVlOGFiZWMzZDdiNS4uMmYxMmVmNzUzZTRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHAKQEAgLTI0MTMsNyArMjQxMyw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6YWRkQXR0YWNobWVudENoaWxkcmVuKCkKIAogICAgIC8vIExvY2FsRnJhbWVWaWV3J3MgbmVl
ZCB0byBiZSBpbnNlcnRlZCBpbnRvIHRoZSBBWCBoaWVyYXJjaHkgd2hlbiBlbmNvdW50ZXJlZC4K
ICAgICBXaWRnZXQqIHdpZGdldCA9IHdpZGdldEZvckF0dGFjaG1lbnRWaWV3KCk7Ci0gICAgaWYg
KCF3aWRnZXQgfHwgIXdpZGdldC0+aXNMb2NhbEZyYW1lVmlldygpKQorICAgIGlmICghd2lkZ2V0
IHx8ICEod2lkZ2V0LT5pc0xvY2FsRnJhbWVWaWV3KCkgfHwgd2lkZ2V0LT5pc1JlbW90ZUZyYW1l
VmlldygpKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGFkZENoaWxkKGF4T2JqZWN0Q2Fj
aGUoKS0+Z2V0T3JDcmVhdGUod2lkZ2V0KSk7CkBAIC0yNTY4LDcgKzI1NjgsNyBAQCB2b2lkIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENoaWxkcmVuKCkKICAgICAgICAgYXV0byBvd25l
cnMgPSBvYmplY3Qub3duZXJzKCk7CiAgICAgICAgIGlmIChvd25lcnMuc2l6ZSgpICYmICFvd25l
cnMuY29udGFpbnModGhpcykpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIAorCiAgICAg
ICAgIGFkZENoaWxkKCZvYmplY3QpOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAKaW5kZXggMmJi
YzMwODdiOWY4Li41MjEyMjJhZjYwMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwCkBAIC0yNywxMCArMjcs
MTIgQEAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oIgogCiAjaW5jbHVkZSAi
QVhPYmplY3RDYWNoZS5oIgorI2luY2x1ZGUgIkFYUmVtb3RlRnJhbWUuaCIKICNpbmNsdWRlICJB
Y2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50
LmgiCiAjaW5jbHVkZSAiTG9jYWxGcmFtZS5oIgogI2luY2x1ZGUgIkxvY2FsRnJhbWVWaWV3Lmgi
CisjaW5jbHVkZSAiUmVtb3RlRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5o
IgogI2luY2x1ZGUgIldpZGdldC5oIgogCkBAIC01Miw2ICs1NCwxNiBAQCBBY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldzo6fkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KCkKIHZvaWQgQWNjZXNzaWJpbGl0
eVNjcm9sbFZpZXc6OmRldGFjaFJlbW90ZVBhcnRzKEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlw
ZSBkZXRhY2htZW50VHlwZSkKIHsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpkZXRhY2hSZW1v
dGVQYXJ0cyhkZXRhY2htZW50VHlwZSk7CisKKyAgICBhdXRvKiByZW1vdGVGcmFtZVZpZXcgPSBk
eW5hbWljRG93bmNhc3Q8UmVtb3RlRnJhbWVWaWV3PihtX3Njcm9sbFZpZXcuZ2V0KCkpOworICAg
IGlmIChyZW1vdGVGcmFtZVZpZXcgJiYgbV9yZW1vdGVGcmFtZSAmJiAoZGV0YWNobWVudFR5cGUg
PT0gQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlOjpFbGVtZW50RGVzdHJveWVkIHx8IGRldGFj
aG1lbnRUeXBlID09IEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZTo6Q2FjaGVEZXN0cm95ZWQp
KSB7CisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICBhdXRvJiByZW1vdGVGcmFtZSA9IHJlbW90
ZUZyYW1lVmlldy0+ZnJhbWUoKTsKKyAgICAgICAgcmVtb3RlRnJhbWUudW5iaW5kUmVtb3RlQWNj
ZXNzaWJpbGl0eUZyYW1lcyhtX3JlbW90ZUZyYW1lLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKKyNl
bmRpZgorICAgICAgICBtX3JlbW90ZUZyYW1lID0gbnVsbHB0cjsKKyAgICB9CisKICAgICBtX3Nj
cm9sbFZpZXcgPSBudWxscHRyOwogICAgIG1fZnJhbWVPd25lckVsZW1lbnQgPSBudWxscHRyOwog
fQpAQCAtMTc3LDggKzE4OSwxMCBAQCBBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyKiBBY2Nlc3NpYmls
aXR5U2Nyb2xsVmlldzo6YWRkQ2hpbGRTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzYwogdm9pZCBBY2Nl
c3NpYmlsaXR5U2Nyb2xsVmlldzo6Y2xlYXJDaGlsZHJlbigpCiB7CiAgICAgQWNjZXNzaWJpbGl0
eU9iamVjdDo6Y2xlYXJDaGlsZHJlbigpOworCiAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhciA9IG51
bGxwdHI7CiAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyID0gbnVsbHB0cjsKKwogICAgIG1fY2hp
bGRyZW5EaXJ0eSA9IGZhbHNlOwogfQogCkBAIC0xOTEsMTEgKzIwNSw0NSBAQCBib29sIEFjY2Vz
c2liaWxpdHlTY3JvbGxWaWV3Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0
CiAgICAgcmV0dXJuIHdlYkFyZWEtPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKTsKIH0KIAordm9p
ZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkUmVtb3RlRnJhbWVDaGlsZCgpCit7CisgICAg
YXV0byogcmVtb3RlRnJhbWVWaWV3ID0gZHluYW1pY0Rvd25jYXN0PFJlbW90ZUZyYW1lVmlldz4o
bV9zY3JvbGxWaWV3LmdldCgpKTsKKyAgICBpZiAoIXJlbW90ZUZyYW1lVmlldykKKyAgICAgICAg
cmV0dXJuOworCisgICAgV2Vha1B0ciBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsKKyAgICBpZiAo
IWNhY2hlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1fcmVtb3RlRnJhbWUpIHsKKyAg
ICAgICAgLy8gTWFrZSB0aGUgZmF1eCBlbGVtZW50IHRoYXQgcmVwcmVzZW50cyB0aGUgcmVtb3Rl
IHRyYW5zZmVyIGVsZW1lbnQgZm9yIEFYLgorICAgICAgICBtX3JlbW90ZUZyYW1lID0gZG93bmNh
c3Q8QVhSZW1vdGVGcmFtZT4oY2FjaGUtPmNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6UmVtb3Rl
RnJhbWUpKTsKKyAgICAgICAgbV9yZW1vdGVGcmFtZS0+c2V0UGFyZW50KHRoaXMpOworCisjaWYg
UExBVEZPUk0oTUFDKQorICAgICAgICAvLyBHZW5lcmF0ZSBhIG5ldyB0b2tlbiBhbmQgcGFzcyBp
dCBiYWNrIHRvIHRoZSBvdGhlciByZW1vdGUgZnJhbWUgc28gaXQgY2FuIGJpbmQgdGhlc2Ugb2Jq
ZWN0cyB0b2dldGhlci4KKyAgICAgICAgYXV0byBnZW5lcmF0ZWRUb2tlbiA9IG1fcmVtb3RlRnJh
bWUtPmdlbmVyYXRlUmVtb3RlVG9rZW4oKTsKKyAgICAgICAgYXV0byYgcmVtb3RlRnJhbWUgPSBy
ZW1vdGVGcmFtZVZpZXctPmZyYW1lKCk7CisgICAgICAgIHJlbW90ZUZyYW1lLmJpbmRSZW1vdGVB
Y2Nlc3NpYmlsaXR5RnJhbWVzKGdldHBpZCgpLCBnZW5lcmF0ZWRUb2tlbiwgW3RoaXMsICZyZW1v
dGVGcmFtZSwgcHJvdGVjdGVkQWNjZXNzYmlsaXR5UmVtb3RlRnJhbWUgPSBSZWZQdHIgeyBtX3Jl
bW90ZUZyYW1lIH1dIChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gdG9rZW4sIGludCBwcm9jZXNz
SWRlbnRpZmllcikgbXV0YWJsZSB7CisgICAgICAgICAgICBwcm90ZWN0ZWRBY2Nlc3NiaWxpdHlS
ZW1vdGVGcmFtZS0+aW5pdGlhbGl6ZVBsYXRmb3JtRWxlbWVudFdpdGhSZW1vdGVUb2tlbih0b2tl
biwgcHJvY2Vzc0lkZW50aWZpZXIpOworCisgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHJlbW90
ZSBzaWRlIHdpdGggdGhlIG9mZnNldCBvZiB0aGlzIG9iamVjdCBzbyBpdCBjYW4gY2FsY3VsYXRl
IGZyYW1lcyBjb3JyZWN0bHkuCisgICAgICAgICAgICBhdXRvIGxvY2F0aW9uID0gZWxlbWVudFJl
Y3QoKS5sb2NhdGlvbigpOworICAgICAgICAgICAgcmVtb3RlRnJhbWUudXBkYXRlUmVtb3RlRnJh
bWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KGZsb29yZWRJbnRQb2ludChsb2NhdGlvbikpOworICAgICAg
ICB9KTsKKyNlbmRpZgorICAgIH0gZWxzZQorICAgICAgICBtX3JlbW90ZUZyYW1lLT5zZXRQYXJl
bnQodGhpcyk7CisKKyAgICBhZGRDaGlsZChtX3JlbW90ZUZyYW1lLmdldCgpKTsKK30KKwogdm9p
ZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkQ2hpbGRyZW4oKQogewogICAgIEFTU0VSVCgh
bV9jaGlsZHJlbkluaXRpYWxpemVkKTsKICAgICBtX2NoaWxkcmVuSW5pdGlhbGl6ZWQgPSB0cnVl
OwogCisgICAgYWRkUmVtb3RlRnJhbWVDaGlsZCgpOwogICAgIGFkZENoaWxkKHdlYkFyZWFPYmpl
Y3QoKSk7CiAgICAgdXBkYXRlU2Nyb2xsYmFycygpOwogfQpAQCAtMjAzLDcgKzI1MSw3IEBAIHZv
aWQgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmFkZENoaWxkcmVuKCkKIEFjY2Vzc2liaWxpdHlP
YmplY3QqIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojp3ZWJBcmVhT2JqZWN0KCkgY29uc3QKIHsK
ICAgICBhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7Ci0gICAgaWYgKCFkb2N1bWVu
dCB8fCAhZG9jdW1lbnQtPmhhc0xpdmluZ1JlbmRlclRyZWUoKSkKKyAgICBpZiAoIWRvY3VtZW50
IHx8ICFkb2N1bWVudC0+aGFzTGl2aW5nUmVuZGVyVHJlZSgpIHx8IG1fcmVtb3RlRnJhbWUpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKGF1dG8qIGNhY2hlID0gYXhPYmplY3RD
YWNoZSgpKQpAQCAtMjM0LDkgKzI4MiwxNSBAQCBMYXlvdXRSZWN0IEFjY2Vzc2liaWxpdHlTY3Jv
bGxWaWV3OjplbGVtZW50UmVjdCgpIGNvbnN0CiAKIERvY3VtZW50KiBBY2Nlc3NpYmlsaXR5U2Ny
b2xsVmlldzo6ZG9jdW1lbnQoKSBjb25zdAogewotICAgIGlmIChhdXRvKiBmcmFtZVZpZXcgPSBk
eW5hbWljRG93bmNhc3Q8TG9jYWxGcmFtZVZpZXc+KG1fc2Nyb2xsVmlldy5nZXQoKSkpIHsKKyAg
ICBpZiAoYXV0byogZnJhbWVWaWV3ID0gZHluYW1pY0Rvd25jYXN0PExvY2FsRnJhbWVWaWV3Piht
X3Njcm9sbFZpZXcuZ2V0KCkpKQogICAgICAgICByZXR1cm4gZnJhbWVWaWV3LT5mcmFtZSgpLmRv
Y3VtZW50KCk7CisKKyAgICAvLyBGb3IgdGhlIFJlbW90ZUZyYW1lVmlldyBjYXNlLCB3ZSBuZWVk
IHRvIHJldHVybiB0aGUgZG9jdW1lbnQgb2Ygb3VyIGhvc3RpbmcgcGFyZW50IHNvIGF4T2JqZWN0
Q2FjaGUoKSByZXNvbHZlcyBjb3JyZWN0bHkuCisgICAgaWYgKGF1dG8qIHJlbW90ZUZyYW1lVmll
dyA9IGR5bmFtaWNEb3duY2FzdDxSZW1vdGVGcmFtZVZpZXc+KG1fc2Nyb2xsVmlldy5nZXQoKSkp
IHsKKyAgICAgICAgaWYgKGF1dG8qIG93bmVyID0gcmVtb3RlRnJhbWVWaWV3LT5mcmFtZSgpLm93
bmVyRWxlbWVudCgpKQorICAgICAgICAgICAgcmV0dXJuICYob3duZXItPmRvY3VtZW50KCkpOwog
ICAgIH0KKwogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpkb2N1bWVudCgpOwogfQog
CkBAIC0yNTksOCArMzEzLDEwIEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlT
Y3JvbGxWaWV3OjpwYXJlbnRPYmplY3QoKSBjb25zdAogICAgIFdlYWtQdHIgb3duZXIgPSBtX2Zy
YW1lT3duZXJFbGVtZW50LmdldCgpOwogICAgIGlmIChhdXRvKiBsb2NhbEZyYW1lVmlldyA9IGR5
bmFtaWNEb3duY2FzdDxMb2NhbEZyYW1lVmlldz4obV9zY3JvbGxWaWV3LmdldCgpKSkKICAgICAg
ICAgb3duZXIgPSBsb2NhbEZyYW1lVmlldy0+ZnJhbWUoKS5vd25lckVsZW1lbnQoKTsKKyAgICBl
bHNlIGlmIChhdXRvKiByZW1vdGVGcmFtZVZpZXcgPSBkeW5hbWljRG93bmNhc3Q8UmVtb3RlRnJh
bWVWaWV3PihtX3Njcm9sbFZpZXcuZ2V0KCkpKQorICAgICAgICBvd25lciA9IHJlbW90ZUZyYW1l
Vmlldy0+ZnJhbWUoKS5vd25lckVsZW1lbnQoKTsKIAotICAgIGlmIChjYWNoZSAmJiBvd25lciAm
JiBvd25lci0+cmVuZGVyZXIoKSkKKyAgICBpZiAob3duZXIgJiYgb3duZXItPnJlbmRlcmVyKCkp
CiAgICAgICAgIHJldHVybiBjYWNoZS0+Z2V0T3JDcmVhdGUob3duZXIuZ2V0KCkpOwogICAgIHJl
dHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oCmluZGV4IDU1NzA0NDY3MWM3ZC4uNTI1YWM3ODNm
YmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlTY3JvbGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5U2Nyb2xsVmlldy5oCkBAIC0zMCw2ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAKK2NsYXNzIEFYUmVtb3RlRnJhbWU7CiBjbGFzcyBBY2Nlc3NpYmlsaXR5U2Nyb2xs
YmFyOwogY2xhc3MgU2Nyb2xsYmFyOwogY2xhc3MgU2Nyb2xsVmlldzsKQEAgLTU0LDcgKzU1LDgg
QEAgcHJpdmF0ZToKICAgICBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3SW5zdGFuY2Uo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBpc0VuYWJsZWQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgCisgICAgYm9vbCBoYXNSZW1vdGVG
cmFtZUNoaWxkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9yZW1vdGVGcmFtZTsgfQorCiAgICAg
Ym9vbCBpc0F0dGFjaG1lbnQoKSBjb25zdCBvdmVycmlkZTsKICAgICBQbGF0Zm9ybVdpZGdldCBw
bGF0Zm9ybVdpZGdldCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFdpZGdldCogd2lkZ2V0Rm9yQXR0
YWNobWVudFZpZXcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBjdXJyZW50U2Nyb2xsVmlldygp
OyB9CkBAIC02OSw2ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRGb2N1c2VkKGJvb2wp
IG92ZXJyaWRlOwogICAgIGJvb2wgY2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlk
ZTsKICAgICBib29sIGlzRm9jdXNlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgYWRkUmVt
b3RlRnJhbWVDaGlsZCgpOwogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgTG9jYWxGcmFtZVZpZXcqIGRvY3VtZW50RnJhbWVWaWV3KCkgY29uc3Qgb3ZlcnJp
ZGU7CkBAIC04NSw2ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlP
YmplY3Q+IG1faG9yaXpvbnRhbFNjcm9sbGJhcjsKICAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9i
amVjdD4gbV92ZXJ0aWNhbFNjcm9sbGJhcjsKICAgICBib29sIG1fY2hpbGRyZW5EaXJ0eTsKKyAg
ICBSZWZQdHI8QVhSZW1vdGVGcmFtZT4gbV9yZW1vdGVGcmFtZTsKIH07CiAgICAgCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKaW5kZXggNWRlOTcw
ZjFmNzBkLi41MTg3YjJmYTM1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKQEAg
LTM3MCw2ICszNzAsNyBAQCBzdGF0aWMgQXRzcGk6OlJvbGUgYXRzcGlSb2xlKEFjY2Vzc2liaWxp
dHlSb2xlIHJvbGUpCiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3VtbWFyeToKICAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJsZUhlYWRlckNvbnRhaW5lcjoKICAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpTdWdnZXN0aW9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OlJlbW90ZUZyYW1lOgogICAgICAgICByZXR1cm4gQXRzcGk6OlJvbGU6OlVua25vd247CiAgICAg
Ly8gQWRkIG1vc3QgbmV3IHJvbGVzIGFib3ZlLiBUaGUgcmVsZWFzZSBhc3NlcnQgaXMgZm9yIHJv
bGVzIHRoYXQgYXJlIGhhbmRsZWQgc3BlY2lhbGx5LgogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6Okxpc3RNYXJrZXI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmlu
ZGV4IDJmMjliNzJmZmU3ZS4uOTI0M2FkNmJkMzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlcklPUy5tbQpAQCAtMTExMiw2ICsxMTEyLDcgQEAgc3RhdGljIEFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyICphbmNlc3RvcldpdGhSb2xlKGNvbnN0IEFYQ29yZU9iamVjdCYgZGVz
Y2VuZGEKICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpJZ25vcmVkOgogICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6OkxpbmVCcmVhazoKICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpQ
cmVzZW50YXRpb25hbDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSZW1vdGVGcmFtZToK
ICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duOgogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29s
YXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcAppbmRleCAxMDE0NTQ2Mjc4ZjMu
LjM0MmQ0YzcyZTY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKQEAgLTM3OCw2ICsz
NzgsMTAgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplUHJvcGVydGllcyhjb25z
dCBSZWY8QWNjZXNzaWJpbGl0eU9iamVjdD4mIGF4T2IKICNlbmRpZgogCiAgICAgc2V0T2JqZWN0
UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkludGVybmFsTGlua0VsZW1lbnQsIG9iamVjdC5pbnRl
cm5hbExpbmtFbGVtZW50KCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpIYXNS
ZW1vdGVGcmFtZUNoaWxkLCBvYmplY3QuaGFzUmVtb3RlRnJhbWVDaGlsZCgpKTsKKyAgICAvLyBE
b24ndCBkdXBsaWNhdGUgdGhlIHJlbW90ZUZyYW1lT2Zmc2V0IGZvciBldmVyeSBvYmplY3QuIEp1
c3Qgc3RvcmUgaW4gdGhlIFdlYkFyZWEuCisgICAgaWYgKG9iamVjdC5pc1dlYkFyZWEoKSkKKyAg
ICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlJlbW90ZUZyYW1lT2Zmc2V0LCBvYmpl
Y3QucmVtb3RlRnJhbWVPZmZzZXQoKSk7CiAKICAgICBpbml0aWFsaXplUGxhdGZvcm1Qcm9wZXJ0
aWVzKGF4T2JqZWN0KTsKIH0KQEAgLTQ2NCw2ICs0NjgsNyBAQCB2b2lkIEFYSXNvbGF0ZWRPYmpl
Y3Q6OnNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgQVhQcm9wZXJ0eVZh
bHVlVgogICAgICAgICBbXShPcHRpb25TZXQ8QVhBbmNlc3RvckZsYWc+JiB0eXBlZFZhbHVlKSB7
IHJldHVybiB0eXBlZFZhbHVlLmlzRW1wdHkoKTsgfSwKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICAgICAgW10oUmV0YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4mIHR5cGVkVmFsdWUpIHsgcmV0
dXJuICF0eXBlZFZhbHVlOyB9LAorICAgICAgICBbXShSZXRhaW5QdHI8aWQ+JiB0eXBlZFZhbHVl
KSB7IHJldHVybiAhdHlwZWRWYWx1ZTsgfSwKICNlbmRpZgogICAgICAgICBbXShJbnNpZGVMaW5r
JiB0eXBlZFZhbHVlKSB7IHJldHVybiB0eXBlZFZhbHVlID09IEluc2lkZUxpbmsoKTsgfSwKICAg
ICAgICAgW10oVmVjdG9yPFZlY3RvcjxBWElEPj4mIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVk
VmFsdWUuaXNFbXB0eSgpOyB9LApAQCAtMTIwNiw2ICsxMjExLDIxIEBAIExheW91dFJlY3QgQVhJ
c29sYXRlZE9iamVjdDo6ZWxlbWVudFJlY3QoKSBjb25zdAogICAgIH0pOwogfQogCitJbnRQb2lu
dCBBWElzb2xhdGVkT2JqZWN0OjpyZW1vdGVGcmFtZU9mZnNldCgpIGNvbnN0Cit7CisgICAgYXV0
byogd2ViQXJlYSA9IEFjY2Vzc2liaWxpdHk6OmZpbmRBbmNlc3RvcjxBWElzb2xhdGVkT2JqZWN0
PigqdGhpcywgdHJ1ZSwgW10gKGNvbnN0IGF1dG8mIG9iamVjdCkgeworICAgICAgICByZXR1cm4g
b2JqZWN0LmlzV2ViQXJlYSgpOworICAgIH0pOworCisgICAgaWYgKCF3ZWJBcmVhKQorICAgICAg
ICByZXR1cm4geyB9OworCisgICAgaWYgKGF1dG8gcG9pbnQgPSB3ZWJBcmVhLT5vcHRpb25hbEF0
dHJpYnV0ZVZhbHVlPEludFBvaW50PihBWFByb3BlcnR5TmFtZTo6UmVtb3RlRnJhbWVPZmZzZXQp
KQorICAgICAgICByZXR1cm4gKnBvaW50OworCisgICAgcmV0dXJuIHsgfTsKK30KKwogRmxvYXRQ
b2ludCBBWElzb2xhdGVkT2JqZWN0OjpzY3JlZW5SZWxhdGl2ZVBvc2l0aW9uKCkgY29uc3QKIHsK
ICAgICBpZiAoYXV0byBwb2ludCA9IG9wdGlvbmFsQXR0cmlidXRlVmFsdWU8RmxvYXRQb2ludD4o
QVhQcm9wZXJ0eU5hbWU6OlNjcmVlblJlbGF0aXZlUG9zaXRpb24pKQpAQCAtMTIyOSwyMiArMTI0
OSwyMyBAQCBGbG9hdFBvaW50IEFYSXNvbGF0ZWRPYmplY3Q6OnNjcmVlblJlbGF0aXZlUG9zaXRp
b24oKSBjb25zdAogCiBGbG9hdFJlY3QgQVhJc29sYXRlZE9iamVjdDo6cmVsYXRpdmVGcmFtZSgp
IGNvbnN0CiB7CisgICAgRmxvYXRSZWN0IHJlbGF0aXZlRnJhbWU7CisKICAgICBpZiAoYXV0byBj
YWNoZWRSZWxhdGl2ZUZyYW1lID0gb3B0aW9uYWxBdHRyaWJ1dGVWYWx1ZTxJbnRSZWN0PihBWFBy
b3BlcnR5TmFtZTo6UmVsYXRpdmVGcmFtZSkpIHsKICAgICAgICAgLy8gV2Ugc2hvdWxkIG5vdCBo
YXZlIGNhY2hlZCBhIHJlbGF0aXZlIGZyYW1lIGZvciBlbGVtZW50cyB0aGF0IGdldCB0aGVpciBn
ZW9tZXRyeSBmcm9tIHRoZWlyIGNoaWxkcmVuLgogICAgICAgICBBU1NFUlQoIW1fZ2V0c0dlb21l
dHJ5RnJvbUNoaWxkcmVuKTsKLSAgICAgICAgcmV0dXJuICpjYWNoZWRSZWxhdGl2ZUZyYW1lOwot
ICAgIH0KLQotICAgIGlmIChtX2dldHNHZW9tZXRyeUZyb21DaGlsZHJlbikgeworICAgICAgICBy
ZWxhdGl2ZUZyYW1lID0gKmNhY2hlZFJlbGF0aXZlRnJhbWU7CisgICAgfSBlbHNlIGlmIChtX2dl
dHNHZW9tZXRyeUZyb21DaGlsZHJlbikgewogICAgICAgICBhdXRvIGZyYW1lID0gZW5jbG9zaW5n
SW50UmVjdChyZWxhdGl2ZUZyYW1lRnJvbUNoaWxkcmVuKCkpOwogICAgICAgICBpZiAoIWZyYW1l
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBmcmFtZTsKKyAgICAgICAgICAgIHJlbGF0
aXZlRnJhbWUgPSBmcmFtZTsKICAgICAgICAgLy8gRWl0aGVyIHdlIGhhZCBubyBjaGlsZHJlbiwg
b3Igb3VyIGNoaWxkcmVuIGhhZCBlbXB0eSBmcmFtZXMuIFRoZSByaWdodCB0aGluZyB0byBkbyB3
b3VsZCBiZSB0byByZXR1cm4KICAgICAgICAgLy8gYSByZWN0IGF0IHRoZSBwb3NpdGlvbiBvZiB0
aGUgbmVhcmVzdCByZW5kZXIgdHJlZSBhbmNlc3RvciB3aXRoIHNvbWUgbWFkZS11cCBzaXplIChB
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6Ym91bmRpbmdCb3hSZWN0IGRvZXMgdGhpcykuCiAgICAg
ICAgIC8vIEhvd2V2ZXIsIHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIHRoZSByZW5kZXIgdHJlZSBp
biB0aGlzIGNvbnRleHQgKG9ubHkgdGhlIEFYIGlzb2xhdGVkIHRyZWUsIHdoaWNoIGlzIHRvbyBz
cGFyc2UgZm9yIHRoaXMgcHVycG9zZSksIHNvCiAgICAgICAgIC8vIHVudGlsIHdlIGNhY2hlIHRo
ZSBuZWNlc3NhcnkgaW5mb3JtYXRpb24gbGV0J3MgZ28gdG8gdGhlIG1haW4tdGhyZWFkLgogICAg
IH0gZWxzZSBpZiAocm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNvbHVtbiB8fCBy
b2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFibGVIZWFkZXJDb250YWluZXIpCi0g
ICAgICAgIHJldHVybiBleHBvc2VkVGFibGVBbmNlc3RvcigpID8gcmVsYXRpdmVGcmFtZUZyb21D
aGlsZHJlbigpIDogRmxvYXRSZWN0KCk7CisgICAgICAgIHJlbGF0aXZlRnJhbWUgPSBleHBvc2Vk
VGFibGVBbmNlc3RvcigpID8gcmVsYXRpdmVGcmFtZUZyb21DaGlsZHJlbigpIDogRmxvYXRSZWN0
KCk7CisKIAogICAgIC8vIE1vY2sgb2JqZWN0cyBhbmQgU1ZHIG9iamVjdHMgbmVlZCB1c2UgdGhl
IG1haW4gdGhyZWFkIHNpbmNlIHRoZXkgZG8gbm90IGhhdmUgcmVuZGVyIG5vZGVzIGFuZCBhcmUg
bm90IHBhaW50ZWQgd2l0aCBsYXllcnMsIHJlc3BlY3RpdmVseS4KICAgICAvLyBGSVhNRTogUmVt
b3ZlIGlzTm9uTGF5ZXJTVkdPYmplY3Qgd2hlbiBMQlNFIGlzIGVuYWJsZWQgJiBTVkcgZnJhbWVz
IGFyZSBjYWNoZWQuCkBAIC0xMjY2LDYgKzEyODcsNyBAQCBGbG9hdFJlY3QgQVhJc29sYXRlZE9i
amVjdDo6cmVsYXRpdmVGcmFtZSgpIGNvbnN0CiAgICAgaWYgKGFuY2VzdG9yICYmIGZyYW1lUmVj
dC5sb2NhdGlvbigpID09IEZsb2F0UG9pbnQoKSkKICAgICAgICAgZnJhbWVSZWN0LnNldExvY2F0
aW9uKGFuY2VzdG9yLT5yZWxhdGl2ZUZyYW1lKCkubG9jYXRpb24oKSk7CiAKKyAgICBmcmFtZVJl
Y3QubW92ZUJ5KHsgcmVtb3RlRnJhbWVPZmZzZXQoKSB9KTsKICAgICByZXR1cm4gZnJhbWVSZWN0
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVk
dHJlZS9BWElzb2xhdGVkT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgKaW5kZXggZDJhNjZjMmY1M2U0Li5kZTgyN2Q1
ZmUwMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBF
TkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQogCiAjaW5jbHVkZSAiQVhDb3JlT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiQVhJc29sYXRlZFRyZWUuaCIKICNpbmNsdWRlICJBWE9iamVjdENh
Y2hlLmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCkBA
IC0yMTUsNiArMjE2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzRmlsZVVwbG9hZEJ1dHRvbigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6
SXNGaWxlVXBsb2FkQnV0dG9uKTsgfQogICAgIGJvb2wgaXNNZXRlcigpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNZXRlcik7IH07CiAg
ICAgRmxvYXRQb2ludCBzY3JlZW5SZWxhdGl2ZVBvc2l0aW9uKCkgY29uc3QgZmluYWw7CisgICAg
SW50UG9pbnQgcmVtb3RlRnJhbWVPZmZzZXQoKSBjb25zdCBmaW5hbDsKICAgICBGbG9hdFJlY3Qg
cmVsYXRpdmVGcmFtZSgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaGFzQ2FjaGVkUmVsYXRpdmVG
cmFtZSgpIGNvbnN0IHsgcmV0dXJuIG9wdGlvbmFsQXR0cmlidXRlVmFsdWU8SW50UmVjdD4oQVhQ
cm9wZXJ0eU5hbWU6OlJlbGF0aXZlRnJhbWUpLmhhc192YWx1ZSgpOyB9CiAjaWYgUExBVEZPUk0o
TUFDKQpAQCAtMjYzLDcgKzI2NSw3IEBAIHByaXZhdGU6CiAgICAgQVhJc29sYXRlZE9iamVjdCog
YWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCBmaW5hbDsKICAgICBB
WElzb2xhdGVkT2JqZWN0KiBmb2N1c2VkVUlFbGVtZW50KCkgY29uc3QgZmluYWw7CiAgICAgQVhD
b3JlT2JqZWN0KiBpbnRlcm5hbExpbmtFbGVtZW50KCkgY29uc3QgZmluYWwgeyByZXR1cm4gb2Jq
ZWN0QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkludGVybmFsTGlua0VsZW1lbnQpOyB9
Ci0gICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHJhZGlvQnV0dG9uR3JvdXAoKSBjb25z
dCB7IHJldHVybiB0cmVlKCktPm9iamVjdHNGb3JJRHModmVjdG9yQXR0cmlidXRlVmFsdWU8QVhJ
RD4oQVhQcm9wZXJ0eU5hbWU6OlJhZGlvQnV0dG9uR3JvdXApKTsgfQorICAgIEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciByYWRpb0J1dHRvbkdyb3VwKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
dHJlZSgpLT5vYmplY3RzRm9ySURzKHZlY3RvckF0dHJpYnV0ZVZhbHVlPEFYSUQ+KEFYUHJvcGVy
dHlOYW1lOjpSYWRpb0J1dHRvbkdyb3VwKSk7IH0KICAgICBBWElzb2xhdGVkT2JqZWN0KiBzY3Jv
bGxCYXIoQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uKSBmaW5hbDsKICAgICBjb25zdCBTdHJpbmcg
cGxhY2Vob2xkZXJWYWx1ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0cmluZ0F0dHJpYnV0ZVZh
bHVlKEFYUHJvcGVydHlOYW1lOjpQbGFjZWhvbGRlclZhbHVlKTsgfQogICAgIFN0cmluZyBleHBh
bmRlZFRleHRWYWx1ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0cmluZ0F0dHJpYnV0ZVZhbHVl
KEFYUHJvcGVydHlOYW1lOjpFeHBhbmRlZFRleHRWYWx1ZSk7IH0KQEAgLTQ1Niw3ICs0NTgsNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5QVJJQUdyaWRJbnN0YW5jZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlBUklB
R3JpZFJvd0luc3RhbmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29s
IGlzQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbEluc3RhbmNlKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gZmFsc2U7IH0KLQorICAgIGJvb2wgaXNBWFJlbW90ZUZyYW1lKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzTmF0aXZlVGV4dENvbnRyb2woKSBjb25zdCBmaW5h
bDsKICAgICBib29sIGlzTGlzdEJveE9wdGlvbigpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaXNN
b2NrT2JqZWN0KCkgY29uc3QgZmluYWw7CkBAIC01MzcsNyArNTM5LDkgQEAgcHJpdmF0ZToKICAg
ICBTdHJpbmcgbmFtZUF0dHJpYnV0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0cmluZ0F0dHJp
YnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpOYW1lQXR0cmlidXRlKTsgfQogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIGJvb2wgaGFzQXBwbGVQREZBbm5vdGF0aW9uQXR0cmlidXRlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpIYXNBcHBs
ZVBERkFubm90YXRpb25BdHRyaWJ1dGUpOyB9CisgICAgUmV0YWluUHRyPGlkPiByZW1vdGVGcmFt
ZVBsYXRmb3JtRWxlbWVudCgpIGNvbnN0IGZpbmFsOwogI2VuZGlmCisgICAgYm9vbCBoYXNSZW1v
dGVGcmFtZUNoaWxkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFY
UHJvcGVydHlOYW1lOjpIYXNSZW1vdGVGcmFtZUNoaWxkKTsgfQogCiAjaWYgUExBVEZPUk0oQ09D
T0EpICYmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIFZlY3RvcjxSZXRhaW5QdHI8aWQ+PiBt
b2RlbEVsZW1lbnRDaGlsZHJlbigpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCmluZGV4
IDY5NjY1ODQ0OGY2NS4uM2FjYzE5OThiMWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCkBA
IC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJBWElzb2xhdGVkT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiQVhMb2dnZXIuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGUuaCIKICNpbmNsdWRl
ICJBY2Nlc3NpYmlsaXR5VGFibGVSb3cuaCIKICNpbmNsdWRlICJGcmFtZVNlbGVjdGlvbi5oIgog
I2luY2x1ZGUgIkxvY2FsRnJhbWVWaWV3LmgiCkBAIC0yMjUsNDYgKzIyNiwyNiBAQCBSZWZQdHI8
QVhJc29sYXRlZE9iamVjdD4gQVhJc29sYXRlZFRyZWU6Om9iamVjdEZvcklEKGNvbnN0IEFYSUQg
YXhJRCkgY29uc3QKICAgICByZXR1cm4gYXhJRC5pc1ZhbGlkKCkgPyBtX3JlYWRlclRocmVhZE5v
ZGVNYXAuZ2V0KGF4SUQpIDogbnVsbHB0cjsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVT4KLVZl
Y3RvcjxSZWZQdHI8QVhDb3JlT2JqZWN0Pj4gQVhJc29sYXRlZFRyZWU6Om9iamVjdHNGb3JJRHMo
Y29uc3QgVSYgYXhJRHMpCitSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4gQVhJc29sYXRlZFRyZWU6
OnJldHJpZXZlT2JqZWN0Rm9ySURGcm9tTWFpblRocmVhZChjb25zdCBBWElEIGF4SUQpIGNvbnN0
CiB7Ci0gICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Ci0KLSAgICBWZWN0b3I8UmVmUHRyPEFY
Q29yZU9iamVjdD4+IHJlc3VsdDsKLSAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShh
eElEcy5zaXplKCkpOwotICAgIGZvciAoY29uc3QgYXV0byYgYXhJRCA6IGF4SURzKSB7Ci0gICAg
ICAgIFJlZlB0ciBvYmplY3QgPSBvYmplY3RGb3JJRChheElEKTsKLSAgICAgICAgaWYgKG9iamVj
dCkgewotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChXVEZNb3ZlKG9iamVjdCkpOwotICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBUaGVyZSBpcyBubyBpc29s
YXRlZCBvYmplY3QgZm9yIHRoaXMgQVhJRC4gVGhpcyBjYW4gaGFwcGVuIGlmIHRoZSBjb3JyZXNw
b25kaW5nIGxpdmUgb2JqZWN0IGlzIGlnbm9yZWQuCi0gICAgICAgIC8vIElmIHRoZXJlIGlzIGEg
bGl2ZSBvYmplY3QgZm9yIHRoaXMgSUQgYW5kIGl0IGlzIGFuIGlnbm9yZWQgdGFyZ2V0IG9mIGEg
cmVsYXRpb25zaGlwLCBjcmVhdGUgYW4gaXNvbGF0ZWQgb2JqZWN0IGZvciBpdC4KLSAgICAgICAg
b2JqZWN0ID0gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhyZWFkPFJlZlB0
cjxBWElzb2xhdGVkT2JqZWN0Pj4oWyZheElELCB0aGlzXSAoKSAtPiBSZWZQdHI8QVhJc29sYXRl
ZE9iamVjdD4gewotICAgICAgICAgICAgYXV0byogY2FjaGUgPSBheE9iamVjdENhY2hlKCk7Ci0g
ICAgICAgICAgICBpZiAoIWNhY2hlIHx8ICFjYWNoZS0+cmVsYXRpb25UYXJnZXRJRHMoKS5jb250
YWlucyhheElEKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgICAgICAg
ICAgUmVmUHRyIGF4T2JqZWN0ID0gY2FjaGUtPm9iamVjdEZvcklEKGF4SUQpOwotICAgICAgICAg
ICAgaWYgKCFheE9iamVjdCB8fCAhYXhPYmplY3QtPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgICAgICAgICAgYXV0byBvYmpl
Y3QgPSBBWElzb2xhdGVkT2JqZWN0OjpjcmVhdGUoKmF4T2JqZWN0LCBjb25zdF9jYXN0PEFYSXNv
bGF0ZWRUcmVlKj4odGhpcykpOwotICAgICAgICAgICAgQVNTRVJUKGF4T2JqZWN0LT53cmFwcGVy
KCkpOwotICAgICAgICAgICAgb2JqZWN0LT5hdHRhY2hQbGF0Zm9ybVdyYXBwZXIoYXhPYmplY3Qt
PndyYXBwZXIoKSk7Ci0gICAgICAgICAgICByZXR1cm4gb2JqZWN0OwotICAgICAgICB9KTsKLSAg
ICAgICAgaWYgKG9iamVjdCkgewotICAgICAgICAgICAgbV9yZWFkZXJUaHJlYWROb2RlTWFwLmFk
ZChheElELCAqb2JqZWN0KTsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoV1RGTW92ZShvYmpl
Y3QpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXN1bHQuc2hyaW5rVG9GaXQoKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OworICAgIC8vIFRoZXJlIGlzIG5vIGlzb2xhdGVkIG9iamVjdCBmb3IgdGhp
cyBBWElELiBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlIGNvcnJlc3BvbmRpbmcgbGl2ZSBvYmplY3Qg
aXMgaWdub3JlZC4KKyAgICAvLyBJZiB0aGVyZSBpcyBhIGxpdmUgb2JqZWN0IGZvciB0aGlzIElE
IGFuZCBpdCBpcyBhbiBpZ25vcmVkIHRhcmdldCBvZiBhIHJlbGF0aW9uc2hpcCwgY3JlYXRlIGFu
IGlzb2xhdGVkIG9iamVjdCBmb3IgaXQuCisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJp
ZXZlVmFsdWVGcm9tTWFpblRocmVhZDxSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4+KFsmYXhJRCwg
dGhpc10gKCkgLT4gUmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+IHsKKyAgICAgICAgYXV0byogY2Fj
aGUgPSBheE9iamVjdENhY2hlKCk7CisgICAgICAgIGlmICghY2FjaGUgfHwgIWNhY2hlLT5yZWxh
dGlvblRhcmdldElEcygpLmNvbnRhaW5zKGF4SUQpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICAgICAgUmVmUHRyIGF4T2JqZWN0ID0gY2FjaGUtPm9iamVjdEZvcklEKGF4SUQp
OworICAgICAgICBpZiAoIWF4T2JqZWN0IHx8ICFheE9iamVjdC0+YWNjZXNzaWJpbGl0eUlzSWdu
b3JlZCgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgYXV0byBvYmpl
Y3QgPSBBWElzb2xhdGVkT2JqZWN0OjpjcmVhdGUoKmF4T2JqZWN0LCBjb25zdF9jYXN0PEFYSXNv
bGF0ZWRUcmVlKj4odGhpcykpOworICAgICAgICBBU1NFUlQoYXhPYmplY3QtPndyYXBwZXIoKSk7
CisgICAgICAgIG9iamVjdC0+YXR0YWNoUGxhdGZvcm1XcmFwcGVyKGF4T2JqZWN0LT53cmFwcGVy
KCkpOworICAgICAgICByZXR1cm4gb2JqZWN0OworICAgIH0pOwogfQogCi0KIHZvaWQgQVhJc29s
YXRlZFRyZWU6OmdlbmVyYXRlU3VidHJlZShBY2Nlc3NpYmlsaXR5T2JqZWN0JiBheE9iamVjdCkK
IHsKICAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6Z2VuZXJhdGVTdWJ0cmVlIl9zKTsKQEAg
LTY2MCw2ICs2NDEsMTIgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6dXBkYXRlTm9kZVByb3BlcnRp
ZXMoQVhDb3JlT2JqZWN0JiBheE9iamVjdCwgY29uc3QgQVhQcm9wZXIKICAgICAgICAgY2FzZSBB
WFByb3BlcnR5TmFtZTo6UG9zSW5TZXQ6CiAgICAgICAgICAgICBwcm9wZXJ0eU1hcC5zZXQoQVhQ
cm9wZXJ0eU5hbWU6OlBvc0luU2V0LCBheE9iamVjdC5wb3NJblNldCgpKTsKICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEFYUHJvcGVydHlOYW1lOjpSZW1vdGVGcmFtZVBsYXRmb3Jt
RWxlbWVudDoKKyAgICAgICAgICAgIHByb3BlcnR5TWFwLnNldChBWFByb3BlcnR5TmFtZTo6UmVt
b3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQsIGF4T2JqZWN0LnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVt
ZW50KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQVhQcm9wZXJ0eU5hbWU6
Okhhc1JlbW90ZUZyYW1lQ2hpbGQ6CisgICAgICAgICAgICBwcm9wZXJ0eU1hcC5zZXQoQVhQcm9w
ZXJ0eU5hbWU6Okhhc1JlbW90ZUZyYW1lQ2hpbGQsIGF4T2JqZWN0Lmhhc1JlbW90ZUZyYW1lQ2hp
bGQoKSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBWFByb3BlcnR5TmFtZTo6
Um9sZURlc2NyaXB0aW9uOgogICAgICAgICAgICAgcHJvcGVydHlNYXAuc2V0KEFYUHJvcGVydHlO
YW1lOjpSb2xlRGVzY3JpcHRpb24sIGF4T2JqZWN0LnJvbGVEZXNjcmlwdGlvbigpLmlzb2xhdGVk
Q29weSgpKTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKaW5kZXggYTQx
NzkyNzk3OGQyLi40NjFlZWFlNjBhZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaApAQCAtMTA0LDYg
KzEwNCw3IEBAIGVudW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUgOiB1aW50MTZfdCB7CiAgICAgSGFz
SGlnaGxpZ2h0aW5nLAogICAgIEhhc0l0YWxpY0ZvbnQsCiAgICAgSGFzUGxhaW5UZXh0LAorICAg
IEhhc1JlbW90ZUZyYW1lQ2hpbGQsCiAgICAgSGFzVW5kZXJsaW5lLAogICAgIEhlYWRlckNvbnRh
aW5lciwKICAgICBIZWFkaW5nTGV2ZWwsCkBAIC0yMDEsNiArMjAyLDggQEAgZW51bSBjbGFzcyBB
WFByb3BlcnR5TmFtZSA6IHVpbnQxNl90IHsKICAgICBQcmV2ZW50S2V5Ym9hcmRET01FdmVudERp
c3BhdGNoLAogICAgIFJhZGlvQnV0dG9uR3JvdXAsCiAgICAgUmVsYXRpdmVGcmFtZSwKKyAgICBS
ZW1vdGVGcmFtZU9mZnNldCwKKyAgICBSZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCwKICAgICBS
b2xlVmFsdWUsCiAgICAgUm9sZVBsYXRmb3JtU3RyaW5nLAogICAgIFJvbGVEZXNjcmlwdGlvbiwK
QEAgLTI1Nyw2ICsyNjAsNyBAQCB1c2luZyBBWFByb3BlcnR5TmFtZVNldCA9IEhhc2hTZXQ8QVhQ
cm9wZXJ0eU5hbWUsIEludEhhc2g8QVhQcm9wZXJ0eU5hbWU+LCBXVEY6OgogdXNpbmcgQVhQcm9w
ZXJ0eVZhbHVlVmFyaWFudCA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgQVhJRCwgU3Ry
aW5nLCBib29sLCBpbnQsIHVuc2lnbmVkLCBkb3VibGUsIGZsb2F0LCB1aW50NjRfdCwgQWNjZXNz
aWJpbGl0eUJ1dHRvblN0YXRlLCBDb2xvciwgVVJMLCBMYXlvdXRSZWN0LCBGbG9hdFBvaW50LCBG
bG9hdFJlY3QsIEludFBvaW50LCBJbnRSZWN0LCBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVk
PiwgVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiwgVmVjdG9yPEFYSUQ+LCBWZWN0b3I8c3RkOjpw
YWlyPEFYSUQsIEFYSUQ+PiwgVmVjdG9yPFN0cmluZz4sIFBhdGgsIE9wdGlvblNldDxBWEFuY2Vz
dG9yRmxhZz4sIEluc2lkZUxpbmssIFZlY3RvcjxWZWN0b3I8QVhJRD4+LCBDaGFyYWN0ZXJSYW5n
ZSwgc3RkOjpwYWlyPEFYSUQsIENoYXJhY3RlclJhbmdlPgogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgICwgUmV0YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4KKyAgICAsIFJldGFpblB0cjxpZD4K
ICNlbmRpZgogI2lmIEVOQUJMRShBWF9USFJFQURfVEVYVF9BUElTKQogICAgICwgQVhUZXh0UnVu
cwpAQCAtMzk3LDYgKzQwMSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVFbXB0eUNvbnRl
bnQoQWNjZXNzaWJpbGl0eU9iamVjdCYpOwogICAgIGNvbnN0ZXhwciBib29sIGlzVXBkYXRpbmdT
dWJ0cmVlKCkgY29uc3QgeyByZXR1cm4gbV9yb290T2ZTdWJ0cmVlQmVpbmdVcGRhdGVkOyB9CiAg
ICAgY29uc3RleHByIHZvaWQgdXBkYXRpbmdTdWJ0cmVlKEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4
T2JqZWN0KSB7IG1fcm9vdE9mU3VidHJlZUJlaW5nVXBkYXRlZCA9IGF4T2JqZWN0OyB9CisgICAg
UmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+IHJldHJpZXZlT2JqZWN0Rm9ySURGcm9tTWFpblRocmVh
ZChjb25zdCBBWElEKSBjb25zdDsKIAogICAgIGVudW0gY2xhc3MgQXR0YWNoV3JhcHBlciA6IGJv
b2wgeyBPbk1haW5UaHJlYWQsIE9uQVhUaHJlYWQgfTsKICAgICBzdHJ1Y3QgTm9kZUNoYW5nZSB7
CkBAIC00OTcsNiArNTAyLDMwIEBAIGlubGluZSBSZWZQdHI8QVhJc29sYXRlZFRyZWU+IEFYSXNv
bGF0ZWRUcmVlOjp0cmVlRm9yUGFnZUlEKHN0ZDo6b3B0aW9uYWw8UGFnZUlkCiAgICAgcmV0dXJu
IHBhZ2VJRCA/IHRyZWVGb3JQYWdlSUQoKnBhZ2VJRCkgOiBudWxscHRyOwogfQogCit0ZW1wbGF0
ZTx0eXBlbmFtZSBVPgoraW5saW5lIFZlY3RvcjxSZWZQdHI8QVhDb3JlT2JqZWN0Pj4gQVhJc29s
YXRlZFRyZWU6Om9iamVjdHNGb3JJRHMoY29uc3QgVSYgYXhJRHMpCit7CisgICAgQVNTRVJUKCFp
c01haW5UaHJlYWQoKSk7CisKKyAgICBWZWN0b3I8UmVmUHRyPEFYQ29yZU9iamVjdD4+IHJlc3Vs
dDsKKyAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShheElEcy5zaXplKCkpOworICAg
IGZvciAoY29uc3QgYXV0byYgYXhJRCA6IGF4SURzKSB7CisgICAgICAgIFJlZlB0ciBvYmplY3Qg
PSBvYmplY3RGb3JJRChheElEKTsKKyAgICAgICAgaWYgKG9iamVjdCkgeworICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZChXVEZNb3ZlKG9iamVjdCkpOworICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIH0KKworICAgICAgICBvYmplY3QgPSByZXRyaWV2ZU9iamVjdEZvcklERnJvbU1haW5U
aHJlYWQoYXhJRCk7CisgICAgICAgIGlmIChvYmplY3QpIHsKKyAgICAgICAgICAgIG1fcmVhZGVy
VGhyZWFkTm9kZU1hcC5hZGQoYXhJRCwgKm9iamVjdCk7CisgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKFdURk1vdmUob2JqZWN0KSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmVzdWx0LnNocmlu
a1RvRml0KCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL21hYy9BWElzb2xhdGVkT2JqZWN0TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMubW0KaW5kZXgg
YWRiN2VjNjQ4MzQ1Li5lMDJkYTBkMTEyYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL21hYy9BWElzb2xhdGVkT2JqZWN0TWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL21hYy9BWElzb2xhdGVk
T2JqZWN0TWFjLm1tCkBAIC02Myw2ICs2Myw4IEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6aW5p
dGlhbGl6ZVBsYXRmb3JtUHJvcGVydGllcyhjb25zdCBSZWY8Y29uc3QgQWNjZXNzaWJpbGl0CiAg
ICAgICAgIH0KICAgICB9CiAKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6UmVtb3Rl
RnJhbWVQbGF0Zm9ybUVsZW1lbnQsIG9iamVjdC0+cmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQo
KSk7CisKICAgICAvLyBDYWNoZSB0aGUgU3RyaW5nVmFsdWUgb25seSBpZiBpdCBkaWZmZXJzIGZy
b20gdGhlIEF0dHJpYnV0ZWRUZXh0LgogICAgIGF1dG8gdmFsdWUgPSBvYmplY3QtPnN0cmluZ1Zh
bHVlKCk7CiAgICAgaWYgKCFhdHRyaWJ1dGVkVGV4dCB8fCB2YWx1ZSAhPSBTdHJpbmcoW2F0dHJp
YnV0ZWRUZXh0IHN0cmluZ10pKQpAQCAtMjAyLDYgKzIwNCwxMSBAQCB1bnNpZ25lZCBBWElzb2xh
dGVkT2JqZWN0Ojp0ZXh0TGVuZ3RoKCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAorUmV0YWlu
UHRyPGlkPiBBWElzb2xhdGVkT2JqZWN0OjpyZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHByb3BlcnR5VmFsdWU8UmV0YWluUHRyPGlkPj4oQVhQcm9wZXJ0
eU5hbWU6OlJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KTsKK30KKwogUmV0YWluUHRyPE5TQXR0
cmlidXRlZFN0cmluZz4gQVhJc29sYXRlZE9iamVjdDo6YXR0cmlidXRlZFN0cmluZ0ZvclRleHRN
YXJrZXJSYW5nZShBWFRleHRNYXJrZXJSYW5nZSYmIG1hcmtlclJhbmdlLCBTcGVsbENoZWNrIHNw
ZWxsQ2hlY2spIGNvbnN0CiB7CiAgICAgaWYgKCFtYXJrZXJSYW5nZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFj
Lm1tCmluZGV4IGJhMmFjY2Q4MGQwNC4uZmJiZTBiYjJhMDY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMu
bW0KQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiQWNjZXNz
aWJpbGl0eU9iamVjdC5oIgogCisjaW1wb3J0ICJBWFJlbW90ZUZyYW1lLmgiCiAjaW1wb3J0ICJB
Y2Nlc3NpYmlsaXR5TGFiZWwuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlMaXN0LmgiCiAjaW1w
b3J0ICJDb2xvckNvY29hLmgiCkBAIC01MSw2ICs1Miw3IEBACiAjaW1wb3J0ICJXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlck1hYy5oIgogI2ltcG9ydCAiV2lkZ2V0LmgiCiAKKyNpbXBvcnQg
PHBhbC9zcGkvY29jb2EvTlNBY2Nlc3NpYmlsaXR5U1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL21h
Yy9OU1NwZWxsQ2hlY2tlclNQSS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03NDksNiAr
NzUxLDI5IEBAIFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+IGF0dHJpYnV0ZWRTdHJpbmdD
cmVhdGUoTm9kZSogbm9kZSwgU3RyaW5nVmlldyB0ZXh0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAorc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IEFYUmVtb3RlRnJhbWU6OmdlbmVyYXRlUmVtb3Rl
VG9rZW4oKSBjb25zdAoreworICAgIGlmIChhdXRvKiBwYXJlbnQgPSBwYXJlbnRPYmplY3QoKSkg
eworICAgICAgICAvLyBXZSB1c2UgdGhlIHBhcmVudCdzIHdyYXBwZXIgc28gdGhhdCB0aGUgcmVt
b3RlIGZyYW1lIGFjdHMgYXMgYSBwYXNzIHRocm91Z2ggZm9yIHRoZSByZW1vdGUgdG9rZW4gYnJp
ZGdlLgorICAgICAgICBOU0RhdGEgKmRhdGEgPSBbTlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlFbGVt
ZW50IHJlbW90ZVRva2VuRm9yTG9jYWxVSUVsZW1lbnQ6cGFyZW50LT53cmFwcGVyKCldOworICAg
ICAgICByZXR1cm4gc3RkOjpzcGFuKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbZGF0YSBi
eXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKKyAgICB9CisKKyAgICByZXR1cm4gc3RkOjpzcGFuPGNv
bnN0IHVpbnQ4X3Q+IHsgfTsKK30KKwordm9pZCBBWFJlbW90ZUZyYW1lOjppbml0aWFsaXplUGxh
dGZvcm1FbGVtZW50V2l0aFJlbW90ZVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiB0b2tl
biwgaW50IHByb2Nlc3NJZGVudGlmaWVyKQoreworICAgIG1fcHJvY2Vzc0lkZW50aWZpZXIgPSBw
cm9jZXNzSWRlbnRpZmllcjsKKyAgICBpZiAoW3dyYXBwZXIoKSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKGFjY2Vzc2liaWxpdHlTZXRQcmVzZW50ZXJQcm9jZXNzSWRlbnRpZmllcjopXSkK
KyAgICAgICAgWyhpZCl3cmFwcGVyKCkgYWNjZXNzaWJpbGl0eVNldFByZXNlbnRlclByb2Nlc3NJ
ZGVudGlmaWVyOnByb2Nlc3NJZGVudGlmaWVyXTsKKyAgICBOU0RhdGEgKnRva2VuRGF0YSA9IFtO
U0RhdGEgZGF0YVdpdGhCeXRlczp0b2tlbi5kYXRhKCkgbGVuZ3RoOnRva2VuLnNpemUoKV07Cisg
ICAgbV9yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCA9IGFkb3B0TlMoW1tOU0FjY2Vzc2liaWxp
dHlSZW1vdGVVSUVsZW1lbnQgYWxsb2NdIGluaXRXaXRoUmVtb3RlVG9rZW46dG9rZW5EYXRhXSk7
CisKKyAgICBpZiAoYXV0byogY2FjaGUgPSBheE9iamVjdENhY2hlKCkpCisgICAgICAgIGNhY2hl
LT5vblJlbW90ZUZyYW1lSW5pdGlhbGl6ZWQoKnRoaXMpOworfQorCiBuYW1lc3BhY2UgQWNjZXNz
aWJpbGl0eSB7CiAKIFBsYXRmb3JtUm9sZU1hcCBjcmVhdGVQbGF0Zm9ybVJvbGVNYXAoKQpAQCAt
ODkxLDYgKzkxNiw3IEBAIFBsYXRmb3JtUm9sZU1hcCBjcmVhdGVQbGF0Zm9ybVJvbGVNYXAoKQog
ICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpTdXBlcnNjcmlwdCwgTlNBY2Nlc3NpYmlsaXR5
R3JvdXBSb2xlIH0sCiAgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6Ok1vZGVsLCBOU0FjY2Vz
c2liaWxpdHlHcm91cFJvbGUgfSwKICAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6U3VnZ2Vz
dGlvbiwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0
eVJvbGU6OlJlbW90ZUZyYW1lLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKICAgICB9Owog
ICAgIFBsYXRmb3JtUm9sZU1hcCByb2xlTWFwOwogICAgIGZvciAoYXV0byYgcm9sZSA6IHJvbGVz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCmluZGV4IDYzNTdmYTdj
MjcxYi4uZjE0MjQ1ZmMzYjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJC
YXNlLm1tCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0ICJBWENvcmVPYmplY3QuaCIKICNpbXBv
cnQgIkFYSXNvbGF0ZWRPYmplY3QuaCIKICNpbXBvcnQgIkFYT2JqZWN0Q2FjaGUuaCIKKyNpbXBv
cnQgIkFYUmVtb3RlRnJhbWUuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5o
IgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUxpc3QuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlM
aXN0Qm94LmgiCkBAIC0yNjUsMTMgKzI2NiwxMyBAQCBOU0FycmF5ICptYWtlTlNBcnJheShjb25z
dCBXZWJDb3JlOjpBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgYwog
ICAgICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgICAgICBhdXRvIHdyYXBwZXIgPSBjaGlsZC0+
d3JhcHBlcigpOwotCiAgICAgICAgIC8vIFdlIHdhbnQgdG8gcmV0dXJuIHRoZSBhdHRhY2htZW50
IHZpZXcgaW5zdGVhZCBvZiB0aGUgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgYXR0YWNobWVudCwK
ICAgICAgICAgLy8gb3RoZXJ3aXNlLCB3ZSBnZXQgcGFsaW5kcm9tZSBlcnJvcnMgaW4gdGhlIEFY
IGhpZXJhcmNoeS4KICAgICAgICAgaWYgKGNoaWxkLT5pc0F0dGFjaG1lbnQoKSkgewogICAgICAg
ICAgICAgaWYgKGlkIGF0dGFjaG1lbnRWaWV3ID0gd3JhcHBlci5hdHRhY2htZW50VmlldykKICAg
ICAgICAgICAgICAgICByZXR1cm4gYXR0YWNobWVudFZpZXc7Ci0gICAgICAgIH0KKyAgICAgICAg
fSBlbHNlIGlmIChjaGlsZC0+aXNSZW1vdGVGcmFtZSgpKQorICAgICAgICAgICAgcmV0dXJuIGNo
aWxkLT5yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpLmdldCgpOwogCiAgICAgICAgIHJldHVy
biB3cmFwcGVyOwogICAgIH0pLmF1dG9yZWxlYXNlKCk7CkBAIC0zODksNyArMzkwLDcgQEAgTlNB
cnJheSAqbWFrZU5TQXJyYXkoY29uc3QgV2ViQ29yZTo6QVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3ImIGMKIC0gKEJPT0wpaXNJc29sYXRlZE9iamVjdAogewogI2lmIEVO
QUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCi0gICAgYXV0byogYmFja2luZ09iamVj
dCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0ciBiYWNraW5nT2JqZWN0ID0gZHlu
YW1pY0Rvd25jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3Q+KHNlbGYuYmFzZVVwZGF0ZUJhY2tpbmdT
dG9yZSk7CiAgICAgcmV0dXJuIGJhY2tpbmdPYmplY3QgJiYgYmFja2luZ09iamVjdC0+aXNBWElz
b2xhdGVkT2JqZWN0SW5zdGFuY2UoKTsKICNlbHNlCiAgICAgcmV0dXJuIE5POwpAQCAtNTIzLDcg
KzUyNCw3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRQYXRoVG9TY3JlZW5TcGFjZUZ1bmN0aW9uKFBh
dGhDb252ZXJzaW9uSW5mbyYgY29udmVyc2lvbiwgY29uCiAKIC0gKENHUmVjdCljb252ZXJ0UmVj
dFRvU3BhY2U6KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpcmVjdCBzcGFjZTooQWNjZXNzaWJp
bGl0eUNvbnZlcnNpb25TcGFjZSlzcGFjZQogewotICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBz
ZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHIgYmFja2luZ09iamVjdCA9IGR5bmFtaWNE
b3duY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0PihzZWxmLmJhc2VVcGRhdGVCYWNraW5nU3RvcmUp
OwogICAgIGlmICghYmFja2luZ09iamVjdCkKICAgICAgICAgcmV0dXJuIENHUmVjdFplcm87CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggNmM1ZTZiN2FjZDlj
Li43NTAyZDlhMGU0OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1t
CkBAIC0zNCw2ICszNCw3IEBACiAjaW1wb3J0ICJBWElzb2xhdGVkT2JqZWN0LmgiCiAjaW1wb3J0
ICJBWExvZ2dlci5oIgogI2ltcG9ydCAiQVhPYmplY3RDYWNoZS5oIgorI2ltcG9ydCAiQVhSZW1v
dGVGcmFtZS5oIgogI2ltcG9ydCAiQVhUZXh0TWFya2VyLmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmls
aXR5QVJJQUdyaWRSb3cuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlMYWJlbC5oIgpAQCAtNDc5
LDYgKzQ4MCwxMCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICNkZWZpbmUgTlNBY2Nlc3Np
YmlsaXR5VGV4dElucHV0TWFya2VkVGV4dE1hcmtlclJhbmdlQXR0cmlidXRlIEAiQVhUZXh0SW5w
dXRNYXJrZWRUZXh0TWFya2VyUmFuZ2UiCiAjZW5kaWYKIAorI2lmbmRlZiBrQVhDb252ZXJ0UmVs
YXRpdmVGcmFtZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUKKyNkZWZpbmUga0FYQ29udmVydFJlbGF0
aXZlRnJhbWVQYXJhbWV0ZXJpemVkQXR0cmlidXRlIEAiQVhDb252ZXJ0UmVsYXRpdmVGcmFtZSIK
KyNlbmRpZgorCiBAaW1wbGVtZW50YXRpb24gV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIK
IAogLSAodm9pZClkZXRhY2gKQEAgLTY5Miw3ICs2OTcsNyBAQCBzdGF0aWMgUmV0YWluUHRyPEFY
VGV4dE1hcmtlclJlZj4gcHJldmlvdXNUZXh0TWFya2VyKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBj
b25zdAogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBhdXRvKiBiYWNraW5n
T2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4g
YmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OwogICAgIGlmICghYmFja2luZ09i
amVjdCkKICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMTI1Niw3ICsxMjYxLDcgQEAgQUxMT1df
REVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAKIC0gKE5TQXJyYXkgKilyZW5kZXJXaWRn
ZXRDaGlsZHJlbgogewotICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09i
amVjdDsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJh
Y2tpbmdPYmplY3Q7CiAgICAgaWYgKCFiYWNraW5nT2JqZWN0IHx8ICFiYWNraW5nT2JqZWN0LT5p
c1dpZGdldCgpKQogICAgICAgICByZXR1cm4gbmlsOwogCkBAIC0xMjc5LDcgKzEyODQsNyBAQCBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogLSAoaWQpcmVtb3RlQWNjZXNzaWJp
bGl0eVBhcmVudE9iamVjdAogewotICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFj
a2luZ09iamVjdDsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBiYWNraW5nT2JqZWN0ID0gc2Vs
Zi5heEJhY2tpbmdPYmplY3Q7CiAgICAgcmV0dXJuIGJhY2tpbmdPYmplY3QgPyBiYWNraW5nT2Jq
ZWN0LT5yZW1vdGVQYXJlbnRPYmplY3QoKSA6IG5pbDsKIH0KIApAQCAtMTI5Niw3ICsxMzAxLDcg
QEAgc3RhdGljIHZvaWQgY29udmVydFRvVmVjdG9yKE5TQXJyYXkqIGFycmF5LCBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2gKIAogLSAoQVhUZXh0TWFya2VyUmFuZ2VSZWYpc2Vs
ZWN0ZWRUZXh0TWFya2VyUmFuZ2UKIHsKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5h
eEJhY2tpbmdPYmplY3Q7CisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9
IHNlbGYuYXhCYWNraW5nT2JqZWN0OwogICAgIGlmICghYmFja2luZ09iamVjdCkKICAgICAgICAg
cmV0dXJuIG5pbDsKIApAQCAtMTM2NiwxMiArMTM3MSwxOCBAQCBzdGF0aWMgdm9pZCBXZWJUcmFu
c2Zvcm1DR1BhdGhUb05TQmV6aWVyUGF0aCh2b2lkKiBpbmZvLCBjb25zdCBDR1BhdGhFbGVtZW50
ICplbAogCiAtIChOU1N0cmluZyopcm9sZQogeworICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+IGJh
Y2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBpZiAoIWJhY2tpbmdPYmpl
Y3QpCisgICAgICAgIHJldHVybiBuaWw7CisKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0JFR0lOCi0gICAgaWYgKHNlbGYuYXhCYWNraW5nT2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkKKyAg
ICBpZiAoYmFja2luZ09iamVjdC0+aXNBdHRhY2htZW50KCkpCiAgICAgICAgIHJldHVybiBbW3Nl
bGYgYXR0YWNobWVudFZpZXddIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2li
aWxpdHlSb2xlQXR0cmlidXRlXTsKKyAgICBpZiAoYmFja2luZ09iamVjdC0+aXNSZW1vdGVGcmFt
ZSgpKQorICAgICAgICByZXR1cm4gW2JhY2tpbmdPYmplY3QtPnJlbW90ZUZyYW1lUGxhdGZvcm1F
bGVtZW50KCkuZ2V0KCkgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0
eVJvbGVBdHRyaWJ1dGVdOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKLSAg
ICBOU1N0cmluZyAqc3RyaW5nID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPnJvbGVQbGF0Zm9ybVN0
cmluZygpOworICAgIE5TU3RyaW5nICpzdHJpbmcgPSBiYWNraW5nT2JqZWN0LT5yb2xlUGxhdGZv
cm1TdHJpbmcoKTsKICAgICBpZiAoc3RyaW5nLmxlbmd0aCkKICAgICAgICAgcmV0dXJuIHN0cmlu
ZzsKICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5VW5rbm93blJvbGU7CkBAIC0xMzc5LDcgKzEz
OTAsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogLSAoQk9PTClpc0Vt
cHR5R3JvdXAKIHsKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmpl
Y3Q7CisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNr
aW5nT2JqZWN0OwogICAgIGlmICghYmFja2luZ09iamVjdCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCkBAIC0xMzg4LDYgKzEzOTksOSBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19F
TkQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAKKyAgICBpZiAoYmFja2luZ09iamVj
dC0+aXNSZW1vdGVGcmFtZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICByZXR1cm4g
W1tzZWxmIHJvbGVdIGlzRXF1YWw6TlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlXQogICAgICAgICAm
JiBiYWNraW5nT2JqZWN0LT5jaGlsZHJlbigpLmlzRW1wdHkoKQogICAgICAgICAmJiAhW1tzZWxm
IHJlbmRlcldpZGdldENoaWxkcmVuXSBjb3VudF07CkBAIC0xMzk2LDcgKzE0MTAsNyBAQCBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCiAtIChOU1N0cmluZyopc3Vicm9sZQogewotICAgIGF1dG8qIGJhY2tpbmdPYmpl
Y3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBiYWNr
aW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CiAgICAgaWYgKCFiYWNraW5nT2JqZWN0
KQogICAgICAgICByZXR1cm4gbmlsOwogCkBAIC0xNDEzLDcgKzE0MjcsNyBAQCBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogLSAoTlNTdHJpbmcqKXJvbGVEZXNjcmlwdGlvbgog
ewotICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBS
ZWZQdHI8QVhDb3JlT2JqZWN0PiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7
CiAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQogICAgICAgICByZXR1cm4gbmlsOwogCkBAIC0xNDIx
LDYgKzE0MzUsOCBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIC8v
IGF0dGFjaG1lbnRzIGhhdmUgdGhlIEFYSW1hZ2Ugcm9sZSwgYnV0IGEgZGlmZmVyZW50IHN1YnJv
bGUKICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNBdHRhY2htZW50KCkpCiAgICAgICAgIHJldHVy
biBbW3NlbGYgYXR0YWNobWVudFZpZXddIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0Fj
Y2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRpb25BdHRyaWJ1dGVdOworICAgIGlmIChiYWNraW5nT2Jq
ZWN0LT5pc1JlbW90ZUZyYW1lKCkpCisgICAgICAgIHJldHVybiBbYmFja2luZ09iamVjdC0+cmVt
b3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKS5nZXQoKSBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6TlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlXTsKIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0VORAogCiAgICAgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbiA9IGJh
Y2tpbmdPYmplY3QtPnJvbGVEZXNjcmlwdGlvbigpOwpAQCAtMTQ3Myw2ICsxNDg5LDI4IEBAIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIHJldHVybiBheFNjcm9sbFZpZXcg
PyBbYXhTY3JvbGxWaWV3LT5wbGF0Zm9ybVdpZGdldCgpIHdpbmRvd10gOiBuaWw7CiB9CiAKKy0g
KE5TQXJyYXkgKilfdHJhbnNmb3JtU3BlY2lhbENoaWxkcmVuQ2FzZXM6KFJlZlB0cjxBWENvcmVP
YmplY3Q+KWJhY2tpbmdPYmplY3QKK3sKKyNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKKyAgICBp
ZiAoYmFja2luZ09iamVjdC0+aXNNb2RlbCgpKSB7CisgICAgICAgIGF1dG8gbW9kZWxDaGlsZHJl
biA9IGJhY2tpbmdPYmplY3QtPm1vZGVsRWxlbWVudENoaWxkcmVuKCk7CisgICAgICAgIGlmICht
b2RlbENoaWxkcmVuLnNpemUoKSkgeworICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXko
V1RGTW92ZShtb2RlbENoaWxkcmVuKSwgW10gKGF1dG8mJiBjaGlsZCkgLT4gaWQgeworICAgICAg
ICAgICAgICAgIHJldHVybiBjaGlsZC5nZXQoKTsKKyAgICAgICAgICAgIH0pLmF1dG9yZWxlYXNl
KCk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKworICAgIGNvbnN0IGF1dG8mIGNoaWxkcmVu
ID0gYmFja2luZ09iamVjdC0+Y2hpbGRyZW4oKTsKKyAgICBpZiAoIWNoaWxkcmVuLnNpemUoKSkg
eworICAgICAgICBpZiAoTlNBcnJheSAqY2hpbGRyZW4gPSBbc2VsZiByZW5kZXJXaWRnZXRDaGls
ZHJlbl0pCisgICAgICAgICAgICByZXR1cm4gY2hpbGRyZW47CisgICAgfQorCisgICAgcmV0dXJu
IG5pbDsKK30KKwogLy8gRklYTUU6IHNwbGl0IHVwIHRoaXMgZnVuY3Rpb24gaW4gYSBiZXR0ZXIg
d2F5LgogLy8gc3VnZ2VzdGlvbnM6IFVzZSBhIGhhc2ggdGFibGUgdGhhdCBtYXBzIGF0dHJpYnV0
ZSBuYW1lcyB0byBmdW5jdGlvbiBjYWxscywKIC8vIG9yIG1heWJlIHBvaW50ZXJzIHRvIG1lbWJl
ciBmdW5jdGlvbnMKQEAgLTE1MzEsMjIgKzE1NjksOSBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExF
TUVOVEFUSU9OU19FTkQKICAgICB9CiAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRv
U3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXSB8fCBbYXR0cmlidXRlTmFt
ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5Jbk5hdmlnYXRpb25PcmRl
ckF0dHJpYnV0ZV0pIHsKLSNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKLSAgICAgICAgaWYgKGJh
Y2tpbmdPYmplY3QtPmlzTW9kZWwoKSkgewotICAgICAgICAgICAgYXV0byBtb2RlbENoaWxkcmVu
ID0gYmFja2luZ09iamVjdC0+bW9kZWxFbGVtZW50Q2hpbGRyZW4oKTsKLSAgICAgICAgICAgIGlm
IChtb2RlbENoaWxkcmVuLnNpemUoKSkgewotICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVO
U0FycmF5KFdURk1vdmUobW9kZWxDaGlsZHJlbiksIFtdIChhdXRvJiYgY2hpbGQpIC0+IGlkIHsK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkLmdldCgpOwotICAgICAgICAgICAgICAg
IH0pLmF1dG9yZWxlYXNlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSNlbmRpZgotCi0g
ICAgICAgIGNvbnN0IGF1dG8mIGNoaWxkcmVuID0gYmFja2luZ09iamVjdC0+Y2hpbGRyZW4oKTsK
LSAgICAgICAgaWYgKGNoaWxkcmVuLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgaWYgKE5TQXJy
YXkgKndpZGdldENoaWxkcmVuID0gW3NlbGYgcmVuZGVyV2lkZ2V0Q2hpbGRyZW5dKQotICAgICAg
ICAgICAgICAgIHJldHVybiB3aWRnZXRDaGlsZHJlbjsKLSAgICAgICAgfQorICAgICAgICBOU0Fy
cmF5ICpzcGVjaWFsQ2hpbGRyZW4gPSBbc2VsZiBfdHJhbnNmb3JtU3BlY2lhbENoaWxkcmVuQ2Fz
ZXM6YmFja2luZ09iamVjdF07CisgICAgICAgIGlmIChzcGVjaWFsQ2hpbGRyZW4uY291bnQpCisg
ICAgICAgICAgICByZXR1cm4gc3BlY2lhbENoaWxkcmVuOwogCiAgICAgICAgIC8vIFRoZSB0cmVl
J3MgKEFYT3V0bGluZSkgY2hpbGRyZW4gYXJlIHN1cHBvc2VkIHRvIGJlIGl0cyByb3dzIGFuZCBj
b2x1bW5zLgogICAgICAgICAvLyBUaGUgQVJJQSBzcGVjIGRvZXNuJ3QgaGF2ZSBjb2x1bW5zLCBz
byB3ZSBqdXN0IG5lZWQgcm93cy4KQEAgLTE1NTcsNyArMTU4Miw3IEBAIEFMTE9XX0RFUFJFQ0FU
RURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNUcmVl
SXRlbSgpKQogICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdPYmplY3QtPmFy
aWFUcmVlSXRlbUNvbnRlbnQoKSk7CiAKLSAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGNoaWxk
cmVuKTsKKyAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdPYmplY3QtPmNoaWxkcmVu
KCkpOwogICAgIH0KIAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5T
QWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGVdKSB7CkBAIC0xNzEzLDE2ICsx
NzM4LDE0IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIGlmIChb
YXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eUVuYWJsZWRBdHRy
aWJ1dGVdKQogICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOiBiYWNraW5n
T2JqZWN0LT5pc0VuYWJsZWQoKV07CiAKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRv
U3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlTaXplQXR0cmlidXRlXSkgewotICAgICAgICBhdXRvIHNp
emUgPSBiYWNraW5nT2JqZWN0LT5zaXplKCk7Ci0gICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1
ZVdpdGhTaXplOk5TTWFrZVNpemUoc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKV07Ci0gICAg
fQorICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5
U2l6ZUF0dHJpYnV0ZV0pCisgICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhTaXplOihD
R1NpemUpYmFja2luZ09iamVjdC0+c2l6ZSgpXTsKIAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBp
c0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5UHJpbWFyeVNjcmVlbkhlaWdodEF0dHJpYnV0
ZV0pCiAgICAgICAgIHJldHVybiBAKGJhY2tpbmdPYmplY3QtPnByaW1hcnlTY3JlZW5SZWN0KCku
aGVpZ2h0KCkpOwogCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0Fj
Y2Vzc2liaWxpdHlQb3NpdGlvbkF0dHJpYnV0ZV0pCi0gICAgICAgIHJldHVybiBAKENHUG9pbnQo
YmFja2luZ09iamVjdC0+c2NyZWVuUmVsYXRpdmVQb3NpdGlvbigpKSk7CisgICAgICAgIHJldHVy
biBbTlNWYWx1ZSB2YWx1ZVdpdGhQb2ludDooQ0dQb2ludCliYWNraW5nT2JqZWN0LT5zY3JlZW5S
ZWxhdGl2ZVBvc2l0aW9uKCldOwogCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0
cmluZzpOU0FjY2Vzc2liaWxpdHlQYXRoQXR0cmlidXRlXSkKICAgICAgICAgcmV0dXJuIFtzZWxm
IHBhdGhdOwpAQCAtMjIzNyw2ICsyMjYwLDEwIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5U
QVRJT05TX0VORAogICAgICAgICByZXR1cm4gcmFuZ2UgPyByYW5nZS5wbGF0Zm9ybURhdGEoKS5i
cmlkZ2luZ0F1dG9yZWxlYXNlKCkgOiBuaWw7CiAgICAgfQogCisgICAgLy8gVm9pY2VPdmVyIHBy
b3BlcnR5IHRvIGlnbm9yZSBjZXJ0YWluIGdyb3Vwcy4KKyAgICBpZiAoW2F0dHJpYnV0ZU5hbWUg
aXNFcXVhbFRvU3RyaW5nOkAiQVhBdXRvSW50ZXJhY3RhYmxlIl0pCisgICAgICAgIHJldHVybiBA
KGJhY2tpbmdPYmplY3QtPmlzUmVtb3RlRnJhbWUoKSk7CisKICAgICAvLyBVc2VkIGJ5IExheW91
dFRlc3RzIG9ubHksIG5vdCBieSBBVCBjbGllbnRzLgogICAgIGlmIChVTkxJS0VMWShbYXR0cmli
dXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWEFSSUFSb2xlIl0pKQogICAgICAgICByZXR1cm4g
YmFja2luZ09iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCk7CkBAIC0yMzMwLDcgKzIzNTcsOCBA
QCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgaWYgKGF4T2Jq
ZWN0LT5pc0F0dGFjaG1lbnQoKSkgewogICAgICAgICAgICAgaWYgKGlkIGF0dGFjaG1lbnRWaWV3
ID0gW2F4T2JqZWN0LT53cmFwcGVyKCkgYXR0YWNobWVudFZpZXddKQogICAgICAgICAgICAgICAg
IHJldHVybiBhdHRhY2htZW50VmlldzsKLSAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGF4
T2JqZWN0LT5pc1JlbW90ZUZyYW1lKCkpCisgICAgICAgICAgICByZXR1cm4gYXhPYmplY3QtPnJl
bW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkuZ2V0KCk7CiAKICAgICAgICAgLy8gT25seSBjYWxs
IG91dCB0byB0aGUgbWFpbi10aHJlYWQgaWYgdGhpcyBvYmplY3QgaGFzIGEgYmFja2luZyB3aWRn
ZXQgdG8gcXVlcnkuCiAgICAgICAgIGlmIChheE9iamVjdC0+aXNXaWRnZXQoKSkgewpAQCAtMjUw
Nyw2ICsyNTM1LDEwIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAg
IGlmIChiYWNraW5nT2JqZWN0LT5pc1dlYkFyZWEoKSkKICAgICAgICAgcmV0dXJuIHdlYkFyZWFQ
YXJhbUF0dHJzOwogCisgICAgLy8gVGhlIG9iamVjdCB0aGF0IHNlcnZlcyB1cCB0aGUgcmVtb3Rl
IGZyYW1lIGFsc28gaXMgdGhlIG9uZSB0aGF0IGRvZXMgdGhlIGZyYW1lIGNvbnZlcnNpb24uCisg
ICAgaWYgKGJhY2tpbmdPYmplY3QtPmhhc1JlbW90ZUZyYW1lQ2hpbGQoKSkKKyAgICAgICAgcmV0
dXJuIFtwYXJhbUF0dHJzIGFycmF5QnlBZGRpbmdPYmplY3Q6a0FYQ29udmVydFJlbGF0aXZlRnJh
bWVQYXJhbWV0ZXJpemVkQXR0cmlidXRlXTsKKwogICAgIHJldHVybiBwYXJhbUF0dHJzOwogfQog
CkBAIC0yNTc4LDcgKzI2MTAsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQK
IHsKICAgICBBWFRSQUNFKCJXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmls
aXR5UGVyZm9ybVNob3dNZW51QWN0aW9uIl9zKTsKIAotICAgIGF1dG8qIGJhY2tpbmdPYmplY3Qg
PSBzZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBiYWNraW5n
T2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CiAgICAgaWYgKCFiYWNraW5nT2JqZWN0KSB7
CiAgICAgICAgIEFYTE9HKG1ha2VTdHJpbmcoIk5vIGJhY2tpbmdPYmplY3QgZm9yIHdyYXBwZXIg
IiwgaGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihzZWxmKSkpKTsKICAgICAgICAgcmV0
dXJuOwpAQCAtMjgyMiw3ICsyODU0LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElP
TlNfRU5ECiAgICAgaWYgKCFyYW5nZS5sZW5ndGgpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAg
ICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgUmVmUHRy
PEFYQ29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OwogICAg
IGlmICghYmFja2luZ09iamVjdCkKICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMzE3Nyw2ICsz
MjA5LDE4IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gd2lkZ2V0Q2hpbGRyZW47CiAgICAgICAgICAgICAgICAgY3JpdGVy
aWEucmVzdWx0c0xpbWl0IC09IFt3aWRnZXRDaGlsZHJlbiBjb3VudF07CiAgICAgICAgICAgICB9
CisgICAgICAgIH0gZWxzZSBpZiAoYmFja2luZ09iamVjdC0+aXNSZW1vdGVGcmFtZSgpCisgICAg
ICAgICAgICAmJiBjcml0ZXJpYS5zZWFyY2hLZXlzLmNvbnRhaW5zKEFjY2Vzc2liaWxpdHlTZWFy
Y2hLZXk6OkFueVR5cGUpCisgICAgICAgICAgICAmJiAoIWNyaXRlcmlhLnZpc2libGVPbmx5IHx8
IGJhY2tpbmdPYmplY3QtPmlzVmlzaWJsZSgpKSkgeworICAgICAgICAgICAgTlNBcnJheSAqcmVt
b3RlRnJhbWVDaGlsZHJlbiA9IFtzZWxmIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0Fj
Y2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZV07CisgICAgICAgICAgICBBU1NFUlQocmVtb3Rl
RnJhbWVDaGlsZHJlbi5jb3VudCA9PSAxKTsKKyAgICAgICAgICAgIGlmIChyZW1vdGVGcmFtZUNo
aWxkcmVuLmNvdW50ID09IDEpIHsKKyAgICAgICAgICAgICAgICBOU1VJbnRlZ2VyIGluY2x1ZGVk
Q2hpbGRyZW5Db3VudCA9IHN0ZDo6bWluKFtyZW1vdGVGcmFtZUNoaWxkcmVuIGNvdW50XSwgTlNV
SW50ZWdlcihjcml0ZXJpYS5yZXN1bHRzTGltaXQpKTsKKyAgICAgICAgICAgICAgICB3aWRnZXRD
aGlsZHJlbiA9IFtyZW1vdGVGcmFtZUNoaWxkcmVuIHN1YmFycmF5V2l0aFJhbmdlOk5TTWFrZVJh
bmdlKDAsIGluY2x1ZGVkQ2hpbGRyZW5Db3VudCldOworICAgICAgICAgICAgICAgIGlmIChbd2lk
Z2V0Q2hpbGRyZW4gY291bnRdID49IGNyaXRlcmlhLnJlc3VsdHNMaW1pdCkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHJlbW90ZUZyYW1lQ2hpbGRyZW47CisgICAgICAgICAgICAgICAgY3Jp
dGVyaWEucmVzdWx0c0xpbWl0IC09IFt3aWRnZXRDaGlsZHJlbiBjb3VudF07CisgICAgICAgICAg
ICB9CiAgICAgICAgIH0KIAogICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3IgcmVzdWx0czsKQEAgLTM2NjksNiArMzcxMywxMSBAQCBBTExPV19E
RVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBpZiAoVU5MSUtFTFkoW2F0dHJpYnV0
ZSBpc0VxdWFsVG9TdHJpbmc6X0FYVGV4dE1hcmtlclJhbmdlRm9yTlNSYW5nZUF0dHJpYnV0ZV0p
KQogICAgICAgICByZXR1cm4gYmFja2luZ09iamVjdC0+dGV4dE1hcmtlclJhbmdlRm9yTlNSYW5n
ZShyYW5nZSkucGxhdGZvcm1EYXRhKCkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogCisgICAgaWYg
KFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOmtBWENvbnZlcnRSZWxhdGl2ZUZyYW1lUGFyYW1l
dGVyaXplZEF0dHJpYnV0ZV0pIHsKKyAgICAgICAgYXV0byogcGFyZW50ID0gYmFja2luZ09iamVj
dC0+cGFyZW50T2JqZWN0KCk7CisgICAgICAgIHJldHVybiBwYXJlbnQgPyBbTlNWYWx1ZSB2YWx1
ZVdpdGhSZWN0OnBhcmVudC0+Y29udmVydEZyYW1lVG9TcGFjZShGbG9hdFJlY3QocmVjdCksIEFj
Y2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2U6OlBhZ2UpXSA6IG5pbDsKKyAgICB9CisKICAgICAv
LyBUaGVyZSBhcmUgc29tZSBwYXJhbWV0ZXJzIHRoYXQgc3VwZXIgaGFuZGxlcyB0aGF0IGFyZSBu
b3QgZXhwbGljaXRseSByZXR1cm5lZCBieSB0aGUgbGlzdCBvZiB0aGUgZWxlbWVudCdzIGF0dHJp
YnV0ZXMuCiAgICAgLy8gSW4gdGhhdCBjYXNlIGl0IG11c3QgYmUgcGFzc2VkIHRvIHN1cGVyLgog
ICAgIHJldHVybiBbc3VwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOmF0dHJpYnV0ZSBm
b3JQYXJhbWV0ZXI6cGFyYW1ldGVyXTsKQEAgLTM3MjIsOCArMzc3MSwxMCBAQCBBTExPV19ERVBS
RUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgaWYgKCFjaGlsZCkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciAqY2hp
bGRXcmFwcGVyID0gY2hpbGQtPndyYXBwZXIoKTsKLSAgICAgICAgaWYgKGNoaWxkV3JhcHBlciA9
PSB0YXJnZXRDaGlsZCB8fCAoY2hpbGQtPmlzQXR0YWNobWVudCgpICYmIFtjaGlsZFdyYXBwZXIg
YXR0YWNobWVudFZpZXddID09IHRhcmdldENoaWxkKSkKKyAgICAgICAgaWYgKGNoaWxkV3JhcHBl
ciA9PSB0YXJnZXRDaGlsZCB8fCAoY2hpbGQtPmlzQXR0YWNobWVudCgpICYmIFtjaGlsZFdyYXBw
ZXIgYXR0YWNobWVudFZpZXddID09IHRhcmdldENoaWxkKQorICAgICAgICAgICAgfHwgKGNoaWxk
LT5pc1JlbW90ZUZyYW1lKCkgJiYgY2hpbGQtPnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkg
PT0gdGFyZ2V0Q2hpbGQpKSB7CiAgICAgICAgICAgICByZXR1cm4gaTsKKyAgICAgICAgfQogICAg
IH0KICAgICByZXR1cm4gTlNOb3RGb3VuZDsKIH0KQEAgLTM3NDAsNyArMzc5MSw3IEBAIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVh
bFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXSkgewogICAgICAgICAv
LyBUcmVlIGl0ZW1zIG9iamVjdCByZXR1cm5zIGEgZGlmZmVyZW50IHNldCBvZiBjaGlsZHJlbiB0
aGFuIHRob3NlIHRoYXQgYXJlIGluIGNoaWxkcmVuKCkKICAgICAgICAgLy8gYmVjYXVzZSBhbiBB
WE91dGxpbmUgKHRoZSBtYWMgcm9sZSBpcyBiZWNvbWVzKSBoYXMgc29tZSBvZGQgc3RpcHVsYXRp
b25zLgotICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNUcmVlKCkgfHwgYmFja2luZ09iamVj
dC0+aXNUcmVlSXRlbSgpKQorICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNUcmVlKCkgfHwg
YmFja2luZ09iamVjdC0+aXNUcmVlSXRlbSgpIHx8IGJhY2tpbmdPYmplY3QtPmlzUmVtb3RlRnJh
bWUoKSkKICAgICAgICAgICAgIHJldHVybiBbW3NlbGYgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXSBjb3VudF07CiAKICAgICAgICAg
YXV0byBjaGlsZHJlblNpemUgPSBiYWNraW5nT2JqZWN0LT5jaGlsZHJlbigpLnNpemUoKTsKQEAg
LTM3NzYsMTYgKzM4MjcsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAog
ICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDaGlsZHJl
bkF0dHJpYnV0ZV0pIHsKICAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmNoaWxkcmVuKCkuaXNF
bXB0eSgpKSB7Ci0gICAgICAgICAgICBOU0FycmF5ICpjaGlsZHJlbiA9IG5pbDsKLSNpZiBFTkFC
TEUoTU9ERUxfRUxFTUVOVCkKLSAgICAgICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc01vZGVs
KCkpIHsKLSAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IGNyZWF0ZU5TQXJyYXkoYmFja2luZ09i
amVjdC0+bW9kZWxFbGVtZW50Q2hpbGRyZW4oKSwgW10gKGF1dG8mJiBjaGlsZCkgLT4gaWQgewot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGQuZ2V0KCk7Ci0gICAgICAgICAgICAgICAg
fSkuYXV0b3JlbGVhc2UoKTsKLSAgICAgICAgICAgIH0gZWxzZQotI2VuZGlmCi0gICAgICAgICAg
ICAgICAgY2hpbGRyZW4gPSBbc2VsZiByZW5kZXJXaWRnZXRDaGlsZHJlbl07Ci0gICAgICAgICAg
ICAKKyAgICAgICAgICAgIE5TQXJyYXkgKmNoaWxkcmVuID0gW3NlbGYgX3RyYW5zZm9ybVNwZWNp
YWxDaGlsZHJlbkNhc2VzOmJhY2tpbmdPYmplY3RdOwogICAgICAgICAgICAgaWYgKCFjaGlsZHJl
bikKICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwogCkBAIC0zODE2LDggKzM4NTgsMTMgQEAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICAgICAgICAgIC8vIFRoZSBh
dHRhY2htZW50IHZpZXcgc2hvdWxkIGJlIHJldHVybmVkLCBvdGhlcndpc2UgQVggcGFsaW5kcm9t
ZSBlcnJvcnMgb2NjdXIuCiAgICAgICAgICAgICBpZCBhdHRhY2htZW50VmlldyA9IG5pbDsKLSAg
ICAgICAgICAgIGlmIChbd3JhcHBlciBpc0tpbmRPZkNsYXNzOltXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlciBjbGFzc11dICYmIHdyYXBwZXIuYXhCYWNraW5nT2JqZWN0ICYmIHdyYXBwZXIu
YXhCYWNraW5nT2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkKLSAgICAgICAgICAgICAgICBhdHRhY2ht
ZW50VmlldyA9IFt3cmFwcGVyIGF0dGFjaG1lbnRWaWV3XTsKKyAgICAgICAgICAgIGlmIChbd3Jh
cHBlciBpc0tpbmRPZkNsYXNzOltXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBjbGFzc11d
ICYmIHdyYXBwZXIuYXhCYWNraW5nT2JqZWN0KSB7CisgICAgICAgICAgICAgICAgaWYgKHdyYXBw
ZXIuYXhCYWNraW5nT2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkKKyAgICAgICAgICAgICAgICAgICAg
YXR0YWNobWVudFZpZXcgPSBbd3JhcHBlciBhdHRhY2htZW50Vmlld107CisgICAgICAgICAgICAg
ICAgZWxzZSBpZiAod3JhcHBlci5heEJhY2tpbmdPYmplY3QtPmlzUmVtb3RlRnJhbWUoKSkKKyAg
ICAgICAgICAgICAgICAgICAgYXR0YWNobWVudFZpZXcgPSB3cmFwcGVyLmF4QmFja2luZ09iamVj
dC0+cmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKS5nZXQoKTsKKyAgICAgICAgICAgIH0KKwog
ICAgICAgICAgICAgW3N1YmFycmF5IGFkZE9iamVjdDphdHRhY2htZW50VmlldyA/IGF0dGFjaG1l
bnRWaWV3IDogd3JhcHBlcl07CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmNwcAppbmRleCAyNThjMTRiODZhOGIuLjU3MTdhZGUyYTQ1MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTEwODUsNiArMTA4NSwxMSBAQCBSZW1vdGVB
WE9iamVjdFJlZiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjphY2Nlc3NpYmlsaXR5UmVtb3RlT2Jq
ZWN0KCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorSW50UG9pbnQgRW1wdHlGcmFtZUxvYWRl
ckNsaWVudDo6YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCkKK3sKKyAgICByZXR1cm4g
eyB9OworfQorCiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKIHZvaWQg
RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6c2V0QVhJc29sYXRlZFRyZWVSb290KFdlYkNvcmU6OkFY
Q29yZU9iamVjdCopCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlG
cmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQuaAppbmRleCAwOThjZTU4ZDExMTkuLjQ2NzJkZTI5ODUzMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xODQsNiArMTg0
LDcgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJlbW90ZUFYT2JqZWN0
UmVmIGFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSBmaW5hbDsKKyAgICBJbnRQb2ludCBhY2Nl
c3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKSBmaW5hbDsKICNpZiBFTkFCTEUoQUNDRVNTSUJJ
TElUWV9JU09MQVRFRF9UUkVFKQogICAgIHZvaWQgc2V0QVhJc29sYXRlZFRyZWVSb290KFdlYkNv
cmU6OkFYQ29yZU9iamVjdCopIGZpbmFsOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTG9jYWxGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0xvY2FsRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBiMmQ1NmYwNTBhZTkuLjAwZDNhZDVl
MmNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvY2FsRnJhbWVMb2FkZXJD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9jYWxGcmFtZUxvYWRlckNsaWVu
dC5oCkBAIC0yOTAsNiArMjkwLDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IC8vIEFsbG93IGFuIGFjY2Vzc2liaWxpdHkgb2JqZWN0IHRvIHJldHJpZXZlIGEgRnJhbWUgcGFy
ZW50IGlmIHRoZXJlJ3Mgbm8gUGxhdGZvcm1XaWRnZXQuCiAgICAgdmlydHVhbCBSZW1vdGVBWE9i
amVjdFJlZiBhY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkgPSAwOworICAgIHZpcnR1YWwgSW50
UG9pbnQgYWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCkgPSAwOwogI2lmIEVOQUJMRShB
Q0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAgICAgdmlydHVhbCB2b2lkIHNldEFYSXNvbGF0
ZWRUcmVlUm9vdChBWENvcmVPYmplY3QqKSA9IDA7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmlu
ZGV4IDVkMmZlYWI2NTc5Ni4uODQyNmM4ZjM3MGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTIy
MDgsOCArMjIwOCwxNSBAQCBib29sIFBhZ2U6OnNob3VsZFVwZGF0ZUFjY2Vzc2liaWxpdHlSZWdp
b25zKCkgY29uc3QKICAgICBBU1NFUlQobV9sYXN0UmVuZGVyaW5nVXBkYXRlVGltZXN0YW1wID49
IG1fbGFzdEFjY2Vzc2liaWxpdHlPYmplY3RSZWdpb25zVXBkYXRlKTsKICAgICBpZiAoKG1fbGFz
dFJlbmRlcmluZ1VwZGF0ZVRpbWVzdGFtcCAtIG1fbGFzdEFjY2Vzc2liaWxpdHlPYmplY3RSZWdp
b25zVXBkYXRlKSA8IHVwZGF0ZUludGVydmFsKSB7CiAgICAgICAgIC8vIFdlJ3ZlIGFscmVhZHkg
dXBkYXRlZCBhY2Nlc3NpYmlsaXR5IG9iamVjdCByZWN0cyByZWNlbnRseSwgc28gc2tpcCB0aGlz
IHVwZGF0ZSBhbmQgc2NoZWR1bGUgYW5vdGhlciBmb3IgbGF0ZXIuCi0gICAgICAgIGF1dG8qIGxv
Y2FsTWFpbkZyYW1lID0gZHluYW1pY0Rvd25jYXN0PExvY2FsRnJhbWU+KG1haW5GcmFtZSgpKTsK
LSAgICAgICAgUmVmUHRyIG1haW5Eb2N1bWVudCA9IGxvY2FsTWFpbkZyYW1lID8gbG9jYWxNYWlu
RnJhbWUtPmRvY3VtZW50KCkgOiBudWxscHRyOworCisgICAgICAgIFJlZlB0cjxEb2N1bWVudD4g
bWFpbkRvY3VtZW50ID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKGF1dG8qIGxvY2FsTWFpbkZyYW1l
ID0gZHluYW1pY0Rvd25jYXN0PExvY2FsRnJhbWU+KG1haW5GcmFtZSgpKSkKKyAgICAgICAgICAg
IG1haW5Eb2N1bWVudCA9IGxvY2FsTWFpbkZyYW1lID8gbG9jYWxNYWluRnJhbWUtPmRvY3VtZW50
KCkgOiBudWxscHRyOworICAgICAgICBlbHNlIGlmIChhdXRvKiByZW1vdGVGcmFtZSA9IGR5bmFt
aWNEb3duY2FzdDxSZW1vdGVGcmFtZT4obWFpbkZyYW1lKCkpKSB7CisgICAgICAgICAgICBpZiAo
YXV0byogb3duZXIgPSByZW1vdGVGcmFtZS0+b3duZXJFbGVtZW50KCkpCisgICAgICAgICAgICAg
ICAgbWFpbkRvY3VtZW50ID0gJihvd25lci0+ZG9jdW1lbnQoKSk7CisgICAgICAgIH0KKwogICAg
ICAgICAvLyBJZiBhY2Nlc3NpYmlsaXR5IGlzIGVuYWJsZWQgYW5kIHdlIGhhdmUgYSBtYWluIGRv
Y3VtZW50LCB0aGF0IGRvY3VtZW50IHNob3VsZCBoYXZlIGFuIEFYIG9iamVjdCBjYWNoZS4KICAg
ICAgICAgQVNTRVJUKCFtYWluRG9jdW1lbnQgfHwgbWFpbkRvY3VtZW50LT5leGlzdGluZ0FYT2Jq
ZWN0Q2FjaGUoKSk7CiAgICAgICAgIGlmIChDaGVja2VkUHRyIHRvcEF4T2JqZWN0Q2FjaGUgPSBt
YWluRG9jdW1lbnQgPyBtYWluRG9jdW1lbnQtPmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpIDogbnVs
bHB0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5jcHAKaW5kZXggNzEyYzBiMjIwZmQwLi41
MGIwYTI1Y2ZkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuY3BwCkBAIC0xMDAsNiAr
MTAwLDIxIEBAIHZvaWQgUmVtb3RlRnJhbWU6OmJyb2FkY2FzdEZyYW1lUmVtb3ZhbFRvT3RoZXJQ
cm9jZXNzZXMoKQogICAgIG1fY2xpZW50LT5icm9hZGNhc3RGcmFtZVJlbW92YWxUb090aGVyUHJv
Y2Vzc2VzKCk7CiB9CiAKK3ZvaWQgUmVtb3RlRnJhbWU6OnVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNz
aWJpbGl0eU9mZnNldChJbnRQb2ludCBvZmZzZXQpCit7CisgICAgbV9jbGllbnQtPnVwZGF0ZVJl
bW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChmcmFtZUlEKCksIG9mZnNldCk7Cit9CisKK3Zv
aWQgUmVtb3RlRnJhbWU6OnVuYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nl
c3NJZGVudGlmaWVyKQoreworICAgIG1fY2xpZW50LT51bmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5
RnJhbWVzKHByb2Nlc3NJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVGcmFtZTo6YmluZFJl
bW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBzdGQ6OnNwYW48
Y29uc3QgdWludDhfdD4gZGF0YVRva2VuLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0
ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgaW50KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICByZXR1cm4gbV9jbGllbnQtPmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKHByb2Nlc3NJ
ZGVudGlmaWVyLCBmcmFtZUlEKCksIGRhdGFUb2tlbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOworfQorCiBGcmFtZVZpZXcqIFJlbW90ZUZyYW1lOjp2aXJ0dWFsVmlldygpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1fdmlldy5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUmVtb3RlRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuaAppbmRl
eCAyN2VkODQwZDA4MmUuLmNkODJhNzljYzMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9SZW1vdGVGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUu
aApAQCAtMzMsNiArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEludFBv
aW50OwogY2xhc3MgUmVtb3RlRE9NV2luZG93OwogY2xhc3MgUmVtb3RlRnJhbWVDbGllbnQ7CiBj
bGFzcyBSZW1vdGVGcmFtZVZpZXc7CkBAIC02Miw2ICs2Myw5IEBAIHB1YmxpYzoKICAgICBNYXJr
YWJsZTxMYXllckhvc3RpbmdDb250ZXh0SWRlbnRpZmllcj4gbGF5ZXJIb3N0aW5nQ29udGV4dElk
ZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2xheWVySG9zdGluZ0NvbnRleHRJZGVudGlmaWVy
OyB9CiAKICAgICBTdHJpbmcgcmVuZGVyVHJlZUFzVGV4dChzaXplX3QgYmFzZUluZGVudCwgT3B0
aW9uU2V0PFJlbmRlckFzVGV4dEZsYWc+KTsKKyAgICB2b2lkIGJpbmRSZW1vdGVBY2Nlc3NpYmls
aXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgaW50KT4m
Jik7CisgICAgdm9pZCB1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQoSW50UG9p
bnQpOworICAgIHZvaWQgdW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQpOwogCiBw
cml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFJlbW90ZUZyYW1lKFBhZ2UmLCBV
bmlxdWVSZWY8UmVtb3RlRnJhbWVDbGllbnQ+JiYsIEZyYW1lSWRlbnRpZmllciwgSFRNTEZyYW1l
T3duZXJFbGVtZW50KiwgRnJhbWUqIHBhcmVudCwgTWFya2FibGU8TGF5ZXJIb3N0aW5nQ29udGV4
dElkZW50aWZpZXI+LCBGcmFtZSogb3BlbmVyID0gbnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1JlbW90ZUZyYW1lQ2xpZW50LmgKaW5kZXggNGVmZDEwM2YzOTEyLi41NDFhMGQwMWM1NjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lQ2xpZW50LmgKQEAgLTMwLDYgKzMwLDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBEYXRhU2VnbWVudDsKIGNsYXNzIEZyYW1l
TG9hZFJlcXVlc3Q7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgU2VjdXJpdHlPcmlnaW5EYXRhOwpA
QCAtNDgsNiArNDksOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgcmVuZGVyVHJlZUFz
VGV4dChzaXplX3QgYmFzZUluZGVudCwgT3B0aW9uU2V0PFJlbmRlckFzVGV4dEZsYWc+KSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGJyb2FkY2FzdEZyYW1lUmVtb3ZhbFRvT3RoZXJQcm9jZXNzZXMo
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlUGFnZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBG
cmFtZUlkZW50aWZpZXIgdGFyZ2V0LCBjb25zdCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0
YVRva2VuLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6c3Bhbjxjb25zdCB1aW50
OF90PiwgaW50KT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZW1vdGVGcmFtZUFj
Y2Vzc2liaWxpdHlPZmZzZXQoRnJhbWVJZGVudGlmaWVyIHRhcmdldCwgSW50UG9pbnQpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgdW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZm9jdXMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVuZm9j
dXMoKSA9IDA7CiAgICAgdmlydHVhbCB+UmVtb3RlRnJhbWVDbGllbnQoKSB7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCA4NGZjNDE5ZTU5Y2EuLjQyZWVlNjZhYjE2YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtNDIsNiArNDIsNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvRHJhZ0FjdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvckNs
aWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9jdXNEaXJlY3Rpb24uaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL0ZyYW1lSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5wdXRNb2RlLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVJdGVtLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TY3JvbGxUeXBlcy5oPgpAQCAtMzE4LDcgKzMxOSw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVVuZG9SZWRvKFVuZG9PclJlZG8pID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgd2hlZWxFdmVudFdhc05vdEhhbmRsZWRCeVdlYkNvcmUoY29uc3QgTmF0aXZl
V2ViV2hlZWxFdmVudCYpID0gMDsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2aXJ0dWFsIHZv
aWQgYWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1
aW50OF90PikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rv
a2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIsIHBpZF90KSA9IDA7CiAgICAgdmlydHVhbCBib29sIGV4ZWN1dGVTYXZlZENvbW1hbmRC
eVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlU2VjdXJlSW5wdXRTdGF0ZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRTZWN1
cmVJbnB1dFN0YXRlKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlz
aW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IDA1MDMwODYzOTFmYi4uM2UzYjgxOTVkMDQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCkBA
IC01NDUsNyArNTQ1LDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6cmVxdWVzdFBhc3N3
b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdAogI2VuZGlmCiAKICNpZiBQ
TEFURk9STShDT0NPQSkKLXZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OnJlZ2lzdGVyV2ViUHJv
Y2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSkKK3Zv
aWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OnJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlU
b2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSwgRnJhbWVJZGVudGlmaWVyKQogewog
ICAgIG1fYWNjZXNzaWJpbGl0eVRva2VuID0gVmVjdG9yKGRhdGEpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKaW5kZXggZGVlY2Q3NmEyMDI0
Li5kMGI3ZWNjZWVmZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zp
c2lvbmFsUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9u
YWxQYWdlUHJveHkuaApAQCAtMTcyLDcgKzE3Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXF1
ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYg
ZmlsZU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogI2Vu
ZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCByZWdpc3RlcldlYlByb2Nlc3NBY2Nl
c3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKKyAgICB2b2lkIHJlZ2lz
dGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4s
IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspIHx8
IFBMQVRGT1JNKFdQRSkKICAgICB2b2lkIGJpbmRBY2Nlc3NpYmlsaXR5VHJlZShjb25zdCBTdHJp
bmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKaW5kZXggZjJm
YzhhNTRkODgzLi4yMzAzMDdhMTc0ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkZyYW1lUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZy
YW1lUHJveHkuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5Lmgi
CiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYXN0ZWJv
YXJkUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJX
ZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRl
ICJXZWJzaXRlUG9saWNpZXNEYXRhLmgiCkBAIC0xODQsNiArMTg1LDE0IEBAIHZvaWQgV2ViRnJh
bWVQcm94eTo6bmF2aWdhdGVTZXJ2aWNlV29ya2VyQ2xpZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRJCiAgICAgfSk7CiB9CiAKK3ZvaWQgV2ViRnJhbWVQcm94eTo6YmluZEFjY2Vz
c2liaWxpdHlGcmFtZVdpdGhEYXRhKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhKQorewor
ICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlByb2Nlc3M6OkJpbmRBY2Nlc3NpYmlsaXR5RnJhbWVXaXRoRGF0YShtX2ZyYW1l
SUQsIGRhdGEpKTsKK30KKwogdm9pZCBXZWJGcmFtZVByb3h5Ojpsb2FkVVJMKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQogewogICAgIGlmICghbV9wYWdlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oCmluZGV4IGIwZGFlYjBlNjRmYy4uNzE1YmI4
MGJhYjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oCkBAIC0xNzAs
NiArMTcwLDggQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3RlUHJvY2Vzc0RpZFRlcm1pbmF0ZSgp
OwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHdlYlBhZ2VJRElu
Q3VycmVudFByb2Nlc3MoKTsKICAgICB2b2lkIG5vdGlmeVBhcmVudE9mTG9hZENvbXBsZXRpb24o
V2ViUHJvY2Vzc1Byb3h5Jik7CisgICAgdm9pZCByZW1vdmVSZW1vdGVQYWdlc0ZvclN1c3BlbnNp
b24oKTsKKyAgICB2b2lkIGJpbmRBY2Nlc3NpYmlsaXR5RnJhbWVXaXRoRGF0YShzdGQ6OnNwYW48
Y29uc3QgdWludDhfdD4pOwogCiAgICAgYm9vbCBpc0ZvY3VzZWQoKSBjb25zdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNDZjMjE0M2E5NGFiLi5mMzcx
MWU4NTcyMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAt
MTI5NSw4ICsxMjk1LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpzd2FwVG9Qcm92aXNpb25hbFBh
Z2Uoc3RkOjp1bmlxdWVfcHRyPFByb3Zpc2lvbmFsUGFnZVByb3h5PiBwCiAKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICBhdXRvIGFjY2Vzc2liaWxpdHlUb2tlbiA9IHByb3Zpc2lvbmFsUGFnZS0+
dGFrZUFjY2Vzc2liaWxpdHlUb2tlbigpOwotICAgIGlmICghYWNjZXNzaWJpbGl0eVRva2VuLmlz
RW1wdHkoKSkKLSAgICAgICAgcmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHsg
YWNjZXNzaWJpbGl0eVRva2VuLmRhdGEoKSwgYWNjZXNzaWJpbGl0eVRva2VuLnNpemUoKSB9KTsK
KyAgICBpZiAoIWFjY2Vzc2liaWxpdHlUb2tlbi5pc0VtcHR5KCkpIHsKKyAgICAgICAgcmVnaXN0
ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHsgYWNjZXNzaWJpbGl0eVRva2VuLmRhdGEo
KSwgYWNjZXNzaWJpbGl0eVRva2VuLnNpemUoKSB9LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIg
eworICAgICAgICAgICAgT2JqZWN0SWRlbnRpZmllcjxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXJU
eXBlPigwKSwKKyAgICAgICAgICAgIE9iamVjdElkZW50aWZpZXI8V2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXJUeXBlPigwKQorICAgICAgICB9KTsKKyAgICB9CiAjZW5kaWYKICNpZiBQTEFURk9S
TShHVEspIHx8IFBMQVRGT1JNKFdQRSkKICAgICBhdXRvIGFjY2Vzc2liaWxpdHlQbHVnSUQgPSBw
cm92aXNpb25hbFBhZ2UtPmFjY2Vzc2liaWxpdHlQbHVnSUQoKTsKQEAgLTEzNzQ0LDYgKzEzNzQ4
LDIyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjphZGRDb25zb2xlTWVzc2FnZShGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgTWVzc2FnZVNvdXJjZSBtZXNzCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBmcmFtZUlELCBtZXNzYWdlU291cmNlLCBtZXNzYWdlTGV2
ZWwsIG1lc3NhZ2UsIGNvcmVJZGVudGlmaWVyIH0pOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6
YmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3Qgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4
X3Q+IGRhdGFUb2tlbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6OnNwYW48Y29uc3QgdWlu
dDhfdD4sIGludCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byBzZW5kUmVzdWx0
ID0gc2VuZFN5bmNUb1Byb2Nlc3NDb250YWluaW5nRnJhbWUoZnJhbWVJRCwgTWVzc2FnZXM6Oldl
YlBhZ2U6OkJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKHByb2Nlc3NJZGVudGlmaWVyLCBm
cmFtZUlELCBkYXRhVG9rZW4pKTsKKyAgICBpZiAoIXNlbmRSZXN1bHQuc3VjY2VlZGVkKCkpCisg
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0sIDApOworCisgICAgYXV0byBbZnJh
bWVEYXRhVG9rZW4sIGZyYW1lUHJvY2Vzc0lkZW50aWZpZXJdID0gc2VuZFJlc3VsdC50YWtlUmVw
bHkoKTsKKworICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lRGF0YVRva2VuLCBmcmFtZVByb2Nl
c3NJZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVJlbW90ZUZyYW1l
QWNjZXNzaWJpbGl0eU9mZnNldChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2Vi
Q29yZTo6SW50UG9pbnQgb2Zmc2V0KQoreworICAgIHNlbmRUb1Byb2Nlc3NDb250YWluaW5nRnJh
bWUoZnJhbWVJRCwgTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZVJlbW90ZVBhZ2VBY2Nlc3NpYmls
aXR5T2Zmc2V0KGZyYW1lSUQsIG9mZnNldCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAogI3VuZGVmIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAppbmRleCBjYzg2ZGRjNmE1YmYuLjcwMzQ4YzZmNjYxYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTEzNTUsNyArMTM1NSw3IEBAIHB1Ymxp
YzoKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIC8vIENhbGxlZCBieSB0aGUgd2ViIHByb2Nl
c3MgdGhyb3VnaCBhIG1lc3NhZ2UuCi0gICAgdm9pZCByZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3Np
YmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKKyAgICB2b2lkIHJlZ2lzdGVy
V2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAgICAgLy8gQ2FsbGVkIGJ5IHRoZSBVSSBwcm9jZXNz
IHdoZW4gaXQgaXMgcmVhZHkgdG8gc2VuZCBpdHMgdG9rZW5zIHRvIHRoZSB3ZWIgcHJvY2Vzcy4K
ICAgICB2b2lkIHJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VucyhzdGQ6OnNwYW48
Y29uc3QgdWludDhfdD4gZWxlbWVudFRva2VuLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gd2lu
ZG93VG9rZW4pOwogICAgIHZvaWQgcmVwbGFjZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJkRGF0YShj
b25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Pik7CkBA
IC0yOTc4LDYgKzI5NzgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZm9jdXNSZW1vdGVGcmFtZShJ
UEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZvaWQgcG9z
dE1lc3NhZ2VUb1JlbW90ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgc291cmNlLCBjb25zdCBT
dHJpbmcmIHNvdXJjZU9yaWdpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHRhcmdldCwgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IHRhcmdldE9yaWdpbiwgY29u
c3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmKTsKICAgICB2b2lkIHJlbmRlclRy
ZWVBc1RleHQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBzaXplX3QgYmFzZUluZGVudCwgT3B0
aW9uU2V0PFdlYkNvcmU6OlJlbmRlckFzVGV4dEZsYWc+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0cmluZyYmKT4mJik7CisgICAgdm9pZCBiaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhp
bnQgcHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgc3RkOjpzcGFu
PGNvbnN0IHVpbnQ4X3Q+IGRhdGFUb2tlbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6OnNw
YW48Y29uc3QgdWludDhfdD4sIGludCk+JiYpOworICAgIHZvaWQgdXBkYXRlUmVtb3RlRnJhbWVB
Y2Nlc3NpYmlsaXR5T2Zmc2V0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6SW50
UG9pbnQpOwogCiAgICAgdm9pZCBzZXRUZXh0SW5kaWNhdG9yRnJvbUZyYW1lKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciwgV2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGEmJiwgdWludDY0X3QpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4K
aW5kZXggNDkzODYyNmJmOGEyLi5hNTQyZjE3NmI1OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTMyNCw3ICszMjQsNyBAQCBt
ZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIEV4ZWN1dGVTYXZlZENvbW1hbmRCeVNlbGVj
dG9yKFN0cmluZyBzZWxlY3RvcikgLT4gKGJvb2wgaGFuZGxlZCkgU3luY2hyb25vdXMKIAogICAg
ICMgUmVtb3RlIGFjY2Vzc2liaWxpdHkgbWVzc2FnZXMKLSAgICBSZWdpc3RlcldlYlByb2Nlc3NB
Y2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCisgICAgUmVn
aXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90
PiBkYXRhLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKIAogICAgICMgU3BlZWNo
IG1lc3NhZ2VzCiAgICAgR2V0SXNTcGVha2luZygpIC0+IChib29sIGlzU3BlYWtpbmcpIFN5bmNo
cm9ub3VzCkBAIC02MzAsNCArNjMwLDYgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAg
ICBGb2N1c1JlbW90ZUZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogICAg
IFBvc3RNZXNzYWdlVG9SZW1vdGUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHNvdXJjZSwgU3Ry
aW5nIHNvdXJjZU9yaWdpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHRhcmdldCwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IHRhcmdldE9yaWdpbiwgc3RydWN0
IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2UpCiAgICAgUmVuZGVyVHJl
ZUFzVGV4dChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgaWRlbnRpZmllciwgc2l6ZV90IGJhc2VJ
bmRlbnQsIE9wdGlvblNldDxXZWJDb3JlOjpSZW5kZXJBc1RleHRGbGFnPiBiZWhhdmlvcikgLT4g
KFN0cmluZyByZW5kZXJUcmVlRHVtcCkgU3luY2hyb25vdXMKKyAgICBCaW5kUmVtb3RlQWNjZXNz
aWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YVRva2VuKSAtPiAoc3Rk
OjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHRva2VuLCBpbnQgcHJvY2Vzc0lkZW50aWZpZXIpIFN5bmNo
cm9ub3VzCisgICAgVXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpJbnRQb2ludCBvZmZzZXQpCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCmluZGV4
IDEwYzRmNmFlMTI1MC4uNjM4OGNiNDY3MmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaApAQCAtMTEwLDcgKzExMCw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBjbGVhckFsbEVkaXRDb21tYW5kcygpIG92ZXJyaWRlOwogICAgIGJvb2wgY2Fu
VW5kb1JlZG8oVW5kb09yUmVkbykgb3ZlcnJpZGU7CiAgICAgdm9pZCBleGVjdXRlVW5kb1JlZG8o
VW5kb09yUmVkbykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rv
a2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KSBvdmVycmlkZTsKKyAgICB2b2lk
IGFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChzdGQ6OnNwYW48Y29uc3QgdWlu
dDhfdD4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgcGlkX3QpIG92ZXJyaWRlOwogICAgIGJv
b2wgZXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxlY3Rvcikg
b3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVTZWN1cmVJbnB1dFN0YXRlKCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCByZXNldFNlY3VyZUlucHV0U3RhdGUoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCBjYjIzZjQ5NzRh
NmIuLmI1YWRkZGNlMjNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1BhZ2VDbGllbnRJbXBsSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtMzg5LDcgKzM4OSw3IEBAIHZvaWQgUGFnZUNsaWVudElt
cGw6OmV4ZWN1dGVVbmRvUmVkbyhVbmRvT3JSZWRvIHVuZG9PclJlZG8pCiAgICAgcmV0dXJuICh1
bmRvT3JSZWRvID09IFVuZG9PclJlZG86OlVuZG8pID8gW1tjb250ZW50VmlldygpIHVuZG9NYW5h
Z2VyXSB1bmRvXSA6IFtbY29udGVudFZpZXcoKSB1bmRvTWFuYWdlcl0gcmVkb107CiB9CiAKLXZv
aWQgUGFnZUNsaWVudEltcGw6OmFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChz
dGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSkKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmFjY2Vz
c2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4g
ZGF0YSwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBwaWRfdCkKIHsKICAgICBOU0RhdGEgKnJl
bW90ZVRva2VuID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEuZGF0YSgpIGxlbmd0aDpkYXRh
LnNpemUoKV07CiAgICAgW2NvbnRlbnRWaWV3KCkgX3NldEFjY2Vzc2liaWxpdHlXZWJQcm9jZXNz
VG9rZW46cmVtb3RlVG9rZW5dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW0KaW5kZXggNWIxMGY1OWM2NjYxLi5kZWI0ZDU4ZTVmZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtNzYzLDEx
ICs3NjMsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxl
ZChib29sKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpy
ZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4
X3Q+IGRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJp
bGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhLCBGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCkKIHsKLSAgICBwcm90ZWN0ZWRQYWdlQ2xpZW50KCktPmFjY2Vzc2liaWxpdHlXZWJQ
cm9jZXNzVG9rZW5SZWNlaXZlZChkYXRhKTsKLX0gICAgCi0KKyAgICBwYWdlQ2xpZW50KCkuYWNj
ZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKGRhdGEsIGZyYW1lSUQsIG1lc3NhZ2VT
ZW5kZXJDb25uZWN0aW9uKCktPnJlbW90ZVByb2Nlc3NJRCgpKTsKK30KIAogdm9pZCBXZWJQYWdl
UHJveHk6OnJlbGF5QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIG5vdGlm
aWNhdGlvbk5hbWUsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhKQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaAppbmRleCBmYjZjNjA3
ODY3YWYuLmJmOGRhNDMwZDhhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1BhZ2VDbGllbnRJbXBsTWFjLmgKQEAgLTE3Niw3ICsxNzYsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgZ2VzdHVyZUV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShjb25zdCBOYXRpdmVXZWJHZXN0
dXJlRXZlbnQmKSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgdm9pZCBhY2Nlc3NpYmlsaXR5V2Vi
UHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KSBvdmVycmlkZTsK
KyAgICB2b2lkIGFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChzdGQ6OnNwYW48
Y29uc3QgdWludDhfdD4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgcGlkX3QpIG92ZXJyaWRl
OwogCiAgICAgdm9pZCBtYWtlRmlyc3RSZXNwb25kZXIoKSBvdmVycmlkZTsKICAgICB2b2lkIGFz
c2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQppbmRleCAwNzgw
ZjE4ZGExYzIuLjAxNTBlYzQ1MTJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQpAQCAtNTgxLDkgKzU4MSw5IEBAIHZvaWQgUGFnZUNs
aWVudEltcGw6OnNldFRleHRJbmRpY2F0b3JBbmltYXRpb25Qcm9ncmVzcyhmbG9hdCBwcm9ncmVz
cykKICAgICBtX2ltcGwtPnNldFRleHRJbmRpY2F0b3JBbmltYXRpb25Qcm9ncmVzcyhwcm9ncmVz
cyk7CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OmFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9r
ZW5SZWNlaXZlZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSkKK3ZvaWQgUGFnZUNsaWVu
dEltcGw6OmFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChzdGQ6OnNwYW48Y29u
c3QgdWludDhfdD4gZGF0YSwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHBpZF90
IHBpZCkKIHsKLSAgICBtX2ltcGwtPnNldEFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW4oW05T
RGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEuZGF0YSgpIGxlbmd0aDpkYXRhLnNpemUoKV0pOworICAg
IG1faW1wbC0+c2V0QWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlbihbTlNEYXRhIGRhdGFXaXRo
Qnl0ZXM6ZGF0YS5kYXRhKCkgbGVuZ3RoOmRhdGEuc2l6ZSgpXSwgZnJhbWVJRCwgcGlkKTsKIH0K
ICAgICAKIHZvaWQgUGFnZUNsaWVudEltcGw6OmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01v
ZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgbGF5ZXJUcmVlQ29udGV4dCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IGNmYjEwZmRiYjQx
My4uODY5NjE3YTI5ZDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQ
YWdlUHJveHlNYWMubW0KQEAgLTMwNiwxMiArMzA2LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChjb25zdCBEaWN0aW9uYXJ5UG9wdXBJbmZvJiBkaWN0
aW9uCiAgICAgcHJvdGVjdGVkUGFnZUNsaWVudCgpLT5kaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1
cChkaWN0aW9uYXJ5UG9wdXBJbmZvKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVy
V2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0
YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9r
ZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
KQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogICAg
IAotICAgIHByb3RlY3RlZFBhZ2VDbGllbnQoKS0+YWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tl
blJlY2VpdmVkKGRhdGEpOworICAgIHByb3RlY3RlZFBhZ2VDbGllbnQoKS0+YWNjZXNzaWJpbGl0
eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKGRhdGEsIGZyYW1lSUQsIG1lc3NhZ2VTZW5kZXJDb25u
ZWN0aW9uKCktPnJlbW90ZVByb2Nlc3NJRCgpKTsKIH0gICAgCiAKIHZvaWQgV2ViUGFnZVByb3h5
OjptYWtlRmlyc3RSZXNwb25kZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmll
d0ltcGwuaAppbmRleCAwM2RmZGFlZTE1M2MuLjVhMmUxMjlmZGM4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJbXBsLmgKQEAgLTQ0OCw3ICs0NDgsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRJZ25vcmVzTW91c2VEcmFnZ2VkRXZlbnRzKGJvb2wpOwogICAgIGJvb2wg
aWdub3Jlc01vdXNlRHJhZ2dlZEV2ZW50cygpIGNvbnN0IHsgcmV0dXJuIG1faWdub3Jlc01vdXNl
RHJhZ2dlZEV2ZW50czsgfQogCi0gICAgdm9pZCBzZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rv
a2VuKE5TRGF0YSAqKTsKKyAgICB2b2lkIHNldEFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW4o
TlNEYXRhICosIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgcGlkX3QpOwogICAgIHZvaWQgYWNj
ZXNzaWJpbGl0eVJlZ2lzdGVyVUlQcm9jZXNzVG9rZW5zKCk7CiAgICAgdm9pZCB1cGRhdGVSZW1v
dGVBY2Nlc3NpYmlsaXR5UmVnaXN0cmF0aW9uKGJvb2wgcmVnaXN0ZXJQcm9jZXNzKTsKICAgICBp
ZCBhY2Nlc3NpYmlsaXR5Rm9jdXNlZFVJRWxlbWVudCgpOwpAQCAtOTI3LDYgKzkyNyw3IEBAIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIGJvb2wgbV9hbGxvd3NNYWduaWZp
Y2F0aW9uIHsgZmFsc2UgfTsKIAogICAgIFJldGFpblB0cjxOU0FjY2Vzc2liaWxpdHlSZW1vdGVV
SUVsZW1lbnQ+IG1fcmVtb3RlQWNjZXNzaWJpbGl0eUNoaWxkOworICAgIFJldGFpblB0cjxOU011
dGFibGVEaWN0aW9uYXJ5PiBtX3JlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZUNhY2hlOwogCiAgICAg
UmVmUHRyPFdlYkNvcmU6OkltYWdlPiBtX3Byb21pc2VkSW1hZ2U7CiAgICAgU3RyaW5nIG1fcHJv
bWlzZWRGaWxlbmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
ZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3SW1wbC5t
bQppbmRleCA1YmRlMTExNjI3OTAuLmE0YjMwN2Q3NmU3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9XZWJWaWV3SW1wbC5tbQpAQCAtMzQ4MSwxMCArMzQ4MSwxMiBAQCB2b2lkIFdl
YlZpZXdJbXBsOjpzZXRJZ25vcmVzTW91c2VEcmFnZ2VkRXZlbnRzKGJvb2wgaWdub3Jlc01vdXNl
RHJhZ2dlZEV2ZW50cykKICAgICBtX2lnbm9yZXNNb3VzZURyYWdnZWRFdmVudHMgPSBpZ25vcmVz
TW91c2VEcmFnZ2VkRXZlbnRzOwogfQogCi12b2lkIFdlYlZpZXdJbXBsOjpzZXRBY2Nlc3NpYmls
aXR5V2ViUHJvY2Vzc1Rva2VuKE5TRGF0YSAqZGF0YSkKK3ZvaWQgV2ViVmlld0ltcGw6OnNldEFj
Y2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW4oTlNEYXRhICpkYXRhLCBXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgcGlkX3QgcGlkKQogewotICAgIG1fcmVtb3RlQWNjZXNzaWJpbGl0
eUNoaWxkID0gZGF0YS5sZW5ndGggPyBhZG9wdE5TKFtbTlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlF
bGVtZW50IGFsbG9jXSBpbml0V2l0aFJlbW90ZVRva2VuOmRhdGFdKSA6IG5pbDsKLSAgICB1cGRh
dGVSZW1vdGVBY2Nlc3NpYmlsaXR5UmVnaXN0cmF0aW9uKHRydWUpOworICAgIGlmIChwaWQgPT0g
bV9wYWdlLT5wcm9jZXNzKCkucHJvY2Vzc0lEKCkpIHsKKyAgICAgICAgbV9yZW1vdGVBY2Nlc3Np
YmlsaXR5Q2hpbGQgPSBkYXRhLmxlbmd0aCA/IGFkb3B0TlMoW1tOU0FjY2Vzc2liaWxpdHlSZW1v
dGVVSUVsZW1lbnQgYWxsb2NdIGluaXRXaXRoUmVtb3RlVG9rZW46ZGF0YV0pIDogbmlsOworICAg
ICAgICB1cGRhdGVSZW1vdGVBY2Nlc3NpYmlsaXR5UmVnaXN0cmF0aW9uKHRydWUpOworICAgIH0K
IH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6dXBkYXRlUmVtb3RlQWNjZXNzaWJpbGl0eVJlZ2lzdHJh
dGlvbihib29sIHJlZ2lzdGVyUHJvY2VzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJMb2NhbEZyYW1lTG9hZGVy
Q2xpZW50LmNwcAppbmRleCA3ZDJhNDI2NWZkNWMuLmYzZjczZjM2N2VhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkxvY2FsRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTgwNyw2ICsxODA3LDEyIEBAIHZv
aWQgV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsRGVzdHJveUdsb2JhbE9i
amVjdEZvckRPTVdpbmRvd0V4dGVuCiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAKK1dlYkNv
cmU6OkludFBvaW50IFdlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQ6OmFjY2Vzc2liaWxpdHlSZW1v
dGVGcmFtZU9mZnNldCgpCit7CisgICAgUmVmUHRyIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7
CisgICAgcmV0dXJuIHdlYlBhZ2UgPyB3ZWJQYWdlLT5hY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVP
ZmZzZXQoKSA6IEludFBvaW50KCk7Cit9CisKIFJlbW90ZUFYT2JqZWN0UmVmIFdlYkxvY2FsRnJh
bWVMb2FkZXJDbGllbnQ6OmFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKQogewogICAgIFJlZlB0
ciB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJMb2NhbEZyYW1lTG9hZGVy
Q2xpZW50LmgKaW5kZXggODhjOGNjNWNiNzJlLi45ZjNiNjdmMGZjYjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJMb2NhbEZyYW1lTG9hZGVy
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMjQwLDYgKzI0MCw3IEBAIHByaXZhdGU6CiAK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZW1vdGVBWE9iamVjdFJlZiBhY2Nlc3NpYmlsaXR5
UmVtb3RlT2JqZWN0KCkgZmluYWw7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgYWNjZXNzaWJpbGl0
eVJlbW90ZUZyYW1lT2Zmc2V0KCkgZmluYWw7CiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNP
TEFURURfVFJFRSkKICAgICB2b2lkIHNldEFYSXNvbGF0ZWRUcmVlUm9vdChXZWJDb3JlOjpBWENv
cmVPYmplY3QqKSBmaW5hbDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90ZUZyYW1lQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVudC5jcHAK
aW5kZXggOGNiZmYyYzliOGM5Li5hMmYwOTQ4ZDQzMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90ZUZyYW1l
Q2xpZW50LmNwcApAQCAtOTYsNiArOTYsMzggQEAgU3RyaW5nIFdlYlJlbW90ZUZyYW1lQ2xpZW50
OjpyZW5kZXJUcmVlQXNUZXh0KHNpemVfdCBiYXNlSW5kZW50LCBPcHRpb25TZXQ8UmVuZGUKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCit2b2lkIFdlYlJlbW90ZUZyYW1lQ2xpZW50Ojp1bmJpbmRS
ZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllcikKK3sKKyAgICAv
LyBNYWtlIHN1cmUgQXBwS2l0IHN5c3RlbSBrbm93cyBhYm91dCBvdXIgcmVtb3RlIFVJIHByb2Nl
c3Mgc3RhdHVzIG5vdy4KKyAgICBpZiAoUmVmUHRyIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpCisg
ICAgICAgIHBhZ2UtPmFjY2Vzc2liaWxpdHlNYW5hZ2VSZW1vdGVFbGVtZW50U3RhdHVzKGZhbHNl
LCBwcm9jZXNzSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViUmVtb3RlRnJhbWVDbGllbnQ6OnVw
ZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgV2ViQ29yZTo6SW50UG9pbnQgb2Zmc2V0KQoreworICAgIGlmIChSZWZQdHIg
cGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgcGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpVcGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQoZnJhbWVJRCwg
b2Zmc2V0KSk7Cit9CisKK3ZvaWQgV2ViUmVtb3RlRnJhbWVDbGllbnQ6OmJpbmRSZW1vdGVBY2Nl
c3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIGNvbnN0IHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhVG9rZW4s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBpbnQpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFJlZlB0ciBwYWdlID0gbV9mcmFtZS0+cGFnZSgp
OworICAgIGlmICghcGFnZSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6OnNwYW48
Y29uc3QgdWludDhfdD4geyB9LCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHBhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJp
bmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKHByb2Nlc3NJZGVudGlmaWVyLCBmcmFtZUlELCBk
YXRhVG9rZW4pKTsKKyAgICBpZiAoIXNlbmRSZXN1bHQuc3VjY2VlZGVkKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGF1dG8gW3Jlc3VsdFRva2VuLCBwcm9jZXNzSWRlbnRpZmllclJlc3VsdF0g
PSBzZW5kUmVzdWx0LnRha2VSZXBseSgpOworCisgICAgLy8gTWFrZSBzdXJlIEFwcEtpdCBzeXN0
ZW0ga25vd3MgYWJvdXQgb3VyIHJlbW90ZSBVSSBwcm9jZXNzIHN0YXR1cyBub3cuCisgICAgcGFn
ZS0+YWNjZXNzaWJpbGl0eU1hbmFnZVJlbW90ZUVsZW1lbnRTdGF0dXModHJ1ZSwgcHJvY2Vzc0lk
ZW50aWZpZXJSZXN1bHQpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdFRva2VuLCBwcm9j
ZXNzSWRlbnRpZmllclJlc3VsdCk7Cit9CisKIHZvaWQgV2ViUmVtb3RlRnJhbWVDbGllbnQ6OmJy
b2FkY2FzdEZyYW1lUmVtb3ZhbFRvT3RoZXJQcm9jZXNzZXMoKQogewogICAgIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50Ojpicm9hZGNhc3RGcmFtZVJlbW92YWxUb090aGVyUHJvY2Vzc2VzKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3Rl
RnJhbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJSZW1vdGVGcmFtZUNsaWVudC5oCmluZGV4IDYyNmUwNWMzZTg4Yi4uYzg4OWViN2U1ZmFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVt
b3RlRnJhbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuaApAQCAtNDgsNiArNDgsMTAgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHBvc3RNZXNzYWdlVG9SZW1vdGUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHNv
dXJjZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciB0YXJnZXQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiB0YXJn
ZXRPcmlnaW4sIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJikgZmluYWw7
CiAgICAgdm9pZCBjaGFuZ2VMb2NhdGlvbihXZWJDb3JlOjpGcmFtZUxvYWRSZXF1ZXN0JiYpIGZp
bmFsOwogICAgIFN0cmluZyByZW5kZXJUcmVlQXNUZXh0KHNpemVfdCBiYXNlSW5kZW50LCBPcHRp
b25TZXQ8V2ViQ29yZTo6UmVuZGVyQXNUZXh0RmxhZz4pIGZpbmFsOworICAgIHZvaWQgYmluZFJl
bW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIGludCk+JiYpIGZpbmFsOworICAgIHZv
aWQgdW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQpIGZpbmFsOworICAgIHZvaWQg
dXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciwgV2ViQ29yZTo6SW50UG9pbnQpIGZpbmFsOworCiAgICAgdm9pZCBicm9hZGNhc3RGcmFt
ZVJlbW92YWxUb090aGVyUHJvY2Vzc2VzKCkgZmluYWw7CiAgICAgdm9pZCBjbG9zZVBhZ2UoKSBm
aW5hbDsKICAgICB2b2lkIGZvY3VzKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KaW5kZXggYWU0M2YxYTQ2
OThiLi4wMjQ2NDM3ZTEyZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KQEAgLTc3LDYgKzc3LDcgQEAKICNpbXBv
cnQgPFdlYkNvcmUvVVRJUmVnaXN0cnkuaD4KICNpbXBvcnQgPFdlYkNvcmUvVVRJVXRpbGl0aWVz
Lmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmg+CisjaW1wb3J0
IDxwYWwvc3BpL2NvY29hL05TQWNjZXNzaWJpbGl0eVNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9j
b2NvYS9RdWFydHpDb3JlU1BJLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJ
Lmg+CiAKQEAgLTQwNCwxMCArNDA1LDUxIEBAIHZvaWQgV2ViUGFnZTo6Y2xlYXJEaWN0YXRpb25B
bHRlcm5hdGl2ZXMoVmVjdG9yPERpY3RhdGlvbkNvbnRleHQ+JiYgY29udGV4dHMpCiAgICAgfSwg
RG9jdW1lbnRNYXJrZXI6OlR5cGU6OkRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CiB9CiAKLXZvaWQg
V2ViUGFnZTo6YWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oUmV0YWluUHRyPE5TRGF0
YT4gcmVtb3RlVG9rZW4pCit2b2lkIFdlYlBhZ2U6OmFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90
ZVRva2VuKFJldGFpblB0cjxOU0RhdGE+IHJlbW90ZVRva2VuLCBGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCkKIHsKICAgICBzdGQ6OnNwYW4gZGF0YVRva2VuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KFtyZW1vdGVUb2tlbiBieXRlc10pLCBbcmVtb3RlVG9rZW4gbGVuZ3RoXSk7Ci0g
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3Np
YmlsaXR5VG9rZW4oZGF0YVRva2VuKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpSZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oZGF0YVRva2VuLCBmcmFtZUlE
KSk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6YWNjZXNzaWJpbGl0eU1hbmFnZVJlbW90ZUVsZW1lbnRT
dGF0dXMoYm9vbCByZWdpc3RlclN0YXR1cywgaW50IHByb2Nlc3NJZGVudGlmaWVyKQoreworI2lm
IFBMQVRGT1JNKE1BQykKKyAgICBpZiAocmVnaXN0ZXJTdGF0dXMpCisgICAgICAgIFtOU0FjY2Vz
c2liaWxpdHlSZW1vdGVVSUVsZW1lbnQgcmVnaXN0ZXJSZW1vdGVVSVByb2Nlc3NJZGVudGlmaWVy
OnByb2Nlc3NJZGVudGlmaWVyXTsKKyAgICBlbHNlCisgICAgICAgIFtOU0FjY2Vzc2liaWxpdHlS
ZW1vdGVVSUVsZW1lbnQgdW5yZWdpc3RlclJlbW90ZVVJUHJvY2Vzc0lkZW50aWZpZXI6cHJvY2Vz
c0lkZW50aWZpZXJdOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocmVnaXN0ZXJTdGF0dXMpOwor
ICAgIFVOVVNFRF9QQVJBTShwcm9jZXNzSWRlbnRpZmllcik7CisjZW5kaWYKK30KKwordm9pZCBX
ZWJQYWdlOjpiaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZp
ZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdGQ6OnNwYW48Y29uc3QgdWlu
dDhfdD4gZGF0YVRva2VuLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6c3Bhbjxjb25zdCB1
aW50OF90PiwgaW50KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBSZWZQdHIgd2ViRnJh
bWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKTsKKyAgICBpZiAo
IXdlYkZyYW1lKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9LCAwKTsKKyAgICB9CisKKyAgICBSZWZQdHIgY29yZUxv
Y2FsRnJhbWUgPSB3ZWJGcmFtZS0+Y29yZUxvY2FsRnJhbWUoKTsKKyAgICBpZiAoIWNvcmVMb2Nh
bEZyYW1lKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoeyB9LCAwKTsKKyAgICB9CisKKyAgICBhdXRvKiByZW5kZXJlciA9
IGNvcmVMb2NhbEZyYW1lLT5jb250ZW50UmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKSB7
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIoeyB9LCAwKTsKKyAgICB9CisKKyAgICByZWdpc3RlclJlbW90ZUZyYW1lQWNjZXNz
aWJpbGl0eVRva2Vucyhwcm9jZXNzSWRlbnRpZmllciwgZGF0YVRva2VuKTsKKworICAgIC8vIEdl
dCBvdXIgcmVtb3RlIHRva2VuIGRhdGEgYW5kIHNlbmQgYmFjayB0byB0aGUgUmVtb3RlRnJhbWUu
CisgICAgYXV0byByZW1vdGVUb2tlbiA9IGFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKTsK
KyAgICBzdGQ6OnNwYW4gcmVtb3RlRGF0YVRva2VuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KFtyZW1vdGVUb2tlbiBieXRlc10pLCBbcmVtb3RlVG9rZW4gbGVuZ3RoXSk7CisgICAg
Y29tcGxldGlvbkhhbmRsZXIocmVtb3RlRGF0YVRva2VuLCBnZXRwaWQoKSk7CiB9CiAKICNpZiBF
TkFCTEUoQVBQTEVfUEFZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAppbmRleCA4ZTZhNWJhOTEyOTYuLjU2MTQwNDE0MTY4ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE1MzYsNiArMTUzNiwxNiBA
QCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRGlkU2VsZWN0QWxsKCkKIAogI2VuZGlmIC8vICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogCisjaWYgIVBMQVRGT1JNKENPQ09BKQordm9pZCBXZWJQYWdlOjpi
aW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6
c3Bhbjxjb25zdCB1aW50OF90PiwgaW50KT4mJikKK3sKK30KKwordm9pZCBXZWJQYWdlOjp1cGRh
dGVSZW1vdGVQYWdlQWNjZXNzaWJpbGl0eU9mZnNldChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IFdlYkNvcmU6OkludFBvaW50KQoreworfQorI2VuZGlmCisKIHZvaWQgV2ViUGFnZTo6dXBkYXRl
RWRpdG9yU3RhdGVBZnRlckxheW91dElmRWRpdGFiaWxpdHlDaGFuZ2VkKCkKIHsKICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIHVwZGF0ZSBFZGl0b3JTdGF0ZUlzQ29udGVudEVkaXRhYmxlIHRvIHRy
YWNrIHdoZXRoZXIgdGhlIHN0YXRlIGlzIHJpY2hseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDA5YjNlN2U1OTU3NS4uNzYxMGQ0MGJjNTM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC02NzEsNiArNjcx
LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFySGlzdG9yeSgpOwogCiAgICAgdm9pZCBhY2Nl
c3NpYmlsaXR5U2V0dGluZ3NEaWRDaGFuZ2UoKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2
b2lkIGFjY2Vzc2liaWxpdHlNYW5hZ2VSZW1vdGVFbGVtZW50U3RhdHVzKGJvb2wsIGludCk7Cisj
ZW5kaWYKKwogICAgIHZvaWQgc2NyZWVuUHJvcGVydGllc0RpZENoYW5nZSgpOwogCiAgICAgdm9p
ZCBzY2FsZVBhZ2UoZG91YmxlIHNjYWxlLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgb3JpZ2lu
KTsKQEAgLTEwNDMsNyArMTA0NywxMCBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVBY2Nlc3NpYmlsaXR5KCk7CiAgICAgdm9pZCByZWdp
c3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+
IGVsZW1lbnRUb2tlbiwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHdpbmRvd1Rva2VuKTsKKyAg
ICB2b2lkIHJlZ2lzdGVyUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5VG9rZW5zKHBpZF90LCBzdGQ6
OnNwYW48Y29uc3QgdWludDhfdD4pOwogICAgIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3Qq
IGFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKTsKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBhY2Nl
c3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKTsKKyAgICB2b2lkIGNyZWF0ZU1vY2tBY2Nlc3Np
YmlsaXR5RWxlbWVudChwaWRfdCk7CiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURf
VFJFRSkKICAgICB2b2lkIGNhY2hlQVhQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50
Jik7CiAgICAgdm9pZCBjYWNoZUFYU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CkBAIC0y
MDk0LDcgKzIxMDEsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQg
cmVxdWVzdEFjdGl2ZU5vd1BsYXlpbmdTZXNzaW9uSW5mbyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wsIFdlYkNvcmU6Ok5vd1BsYXlpbmdJbmZvJiYpPiYmKTsKICAgICBSZXRhaW5QdHI8TlNE
YXRhPiBhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCkgY29uc3Q7Ci0gICAgdm9pZCBhY2Nl
c3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tlbihSZXRhaW5QdHI8TlNEYXRhPik7CisgICAgdm9p
ZCBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tlbihSZXRhaW5QdHI8TlNEYXRhPiwgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICNlbmRpZgogCiAgICAgdm9pZCBzZXRTaG91bGREaXNw
YXRjaEZha2VNb3VzZU1vdmVFdmVudHMoYm9vbCBkaXNwYXRjaCkgeyBtX3Nob3VsZERpc3BhdGNo
RmFrZU1vdXNlTW92ZUV2ZW50cyA9IGRpc3BhdGNoOyB9CkBAIC0yMjA0LDYgKzIyMTEsOCBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCByZW1vdGVQb3N0TWVzc2FnZShXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgc291cmNlLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIHRhcmdldCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGE+JiYgdGFyZ2V0T3JpZ2luLCBjb25zdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0
cyYpOwogICAgIHZvaWQgcmVuZGVyVHJlZUFzVGV4dChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IHNpemVfdCBiYXNlSW5kZW50LCBPcHRpb25TZXQ8V2ViQ29yZTo6UmVuZGVyQXNUZXh0RmxhZz4s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmKTsKKyAgICB2b2lkIGJpbmRSZW1v
dGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBpbnQpPiYmKTsKKyAgICB2b2lkIHVwZGF0
ZVJlbW90ZVBhZ2VBY2Nlc3NpYmlsaXR5T2Zmc2V0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
V2ViQ29yZTo6SW50UG9pbnQpOwogCiAgICAgdm9pZCByZXF1ZXN0VGV4dEV4dHJhY3Rpb24oc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+JiYgY29sbGVjdGlvblJlY3RJblJvb3RWaWV3
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlRleHRFeHRyYWN0aW9uOjpJdGVtJiYp
PiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KaW5kZXggZWQ5YzAxYWJkMTVmLi4yODdiZTYxZWU1N2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgpAQCAtNDg4LDYgKzQ4OCw5IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51
bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgQ29sbGFw
c2VTZWxlY3Rpb25JbkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogI2Vu
ZGlmCiAKKyAgICBCaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50
aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdGQ6OnNwYW48Y29uc3Qg
dWludDhfdD4gZGF0YVRva2VuKSAtPiAoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHRva2VuLCBp
bnQgcHJvY2Vzc0lkZW50aWZpZXIpIFN5bmNocm9ub3VzCisgICAgVXBkYXRlUmVtb3RlUGFnZUFj
Y2Vzc2liaWxpdHlPZmZzZXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNv
cmU6OkludFBvaW50IG9mZnNldCk7CisKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBXaW5kb3dB
bmRWaWV3RnJhbWVzQ2hhbmdlZChzdHJ1Y3QgV2ViS2l0OjpWaWV3V2luZG93Q29vcmRpbmF0ZXMg
Y29vcmRpbmF0ZXMpCiAgICAgU2V0TWFpbkZyYW1lSXNTY3JvbGxhYmxlKGJvb2wgaXNTY3JvbGxh
YmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbQppbmRleCBhN2ZkNzIzMTI3YzAuLjI4ZWU1ZGI3MGVjNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTI0Mywx
MiArMjQzLDE0IEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplQWNjZXNzaWJpbGl0
eSgpCiAgICAgbV9tb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgPSBhZG9wdE5TKFtbV0tBY2Nlc3Np
YmlsaXR5V2ViUGFnZU9iamVjdCBhbGxvY10gaW5pdF0pOwogICAgIFttX21vY2tBY2Nlc3NpYmls
aXR5RWxlbWVudCBzZXRXZWJQYWdlOnRoaXNdOwogCi0gICAgYWNjZXNzaWJpbGl0eVRyYW5zZmVy
UmVtb3RlVG9rZW4oYWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0YSgpKTsKKyAgICBSZWYgZnJh
bWUgPSBDaGVja2VkUmVmKG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkpLT5mb2N1c2VkT3JNYWlu
RnJhbWUoKTsKKyAgICBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tlbihhY2Nlc3NpYmls
aXR5UmVtb3RlVG9rZW5EYXRhKCksIGZyYW1lLT5mcmFtZUlEKCkpOwogfQogCiB2b2lkIFdlYlBh
Z2U6OnBsYXRmb3JtUmVpbml0aWFsaXplKCkKIHsKLSAgICBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJS
ZW1vdGVUb2tlbihhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCkpOworICAgIFJlZiBmcmFt
ZSA9IENoZWNrZWRSZWYobV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKSktPmZvY3VzZWRPck1haW5G
cmFtZSgpOworICAgIGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKGFjY2Vzc2liaWxp
dHlSZW1vdGVUb2tlbkRhdGEoKSwgZnJhbWUtPmZyYW1lSUQoKSk7CiB9CiAKIFJldGFpblB0cjxO
U0RhdGE+IFdlYlBhZ2U6OmFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSBjb25zdApAQCAt
NjQ0LDYgKzY0NiwxNiBAQCBOU09iamVjdCAqV2ViUGFnZTo6YWNjZXNzaWJpbGl0eU9iamVjdEZv
ck1haW5GcmFtZVBsdWdpbigpCiAgICAgcmV0dXJuIG5pbDsKIH0KICAgICAKK3ZvaWQgV2ViUGFn
ZTo6dXBkYXRlUmVtb3RlUGFnZUFjY2Vzc2liaWxpdHlPZmZzZXQoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCBXZWJDb3JlOjpJbnRQb2ludCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50Cit9
CisKK3ZvaWQgV2ViUGFnZTo6cmVnaXN0ZXJSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlUb2tlbnMo
cGlkX3QsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVt
ZW50Cit9CisKIHZvaWQgV2ViUGFnZTo6cmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9r
ZW5zKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBlbGVtZW50VG9rZW4sIHN0ZDo6c3Bhbjxjb25z
dCB1aW50OF90PikKIHsKICAgICBOU0RhdGEgKmVsZW1lbnRUb2tlbkRhdGEgPSBbTlNEYXRhIGRh
dGFXaXRoQnl0ZXM6ZWxlbWVudFRva2VuLmRhdGEoKSBsZW5ndGg6ZWxlbWVudFRva2VuLnNpemUo
KV07CkBAIC02NjIsNiArNjc0LDEyIEBAIHZvaWQgV2ViUGFnZTo6Z2V0RGF0YVNlbGVjdGlvbkZv
clBhc3RlYm9hcmQoY29uc3QgU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkCiAgICAgY29t
cGxldGlvbkhhbmRsZXIoeyB9KTsKIH0KIAorV2ViQ29yZTo6SW50UG9pbnQgV2ViUGFnZTo6YWNj
ZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiB7IH07Cit9CisKIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QqIFdlYlBh
Z2U6OmFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nl
c3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oCmluZGV4IDM5ZTkw
ZTNjODk1ZS4uNDk3MDA3MGE0NTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFn
ZU9iamVjdEJhc2UuaApAQCAtNDUsNiArNDUsOCBAQCBjbGFzcyBBWENvcmVPYmplY3Q7CiAgICAg
V2ViQ29yZTo6SW50U2l6ZSBtX3NpemUgV1RGX0dVQVJERURfQllfTE9DSyhtX2NhY2hlTG9jayk7
CiAgICAgVGhyZWFkU2FmZVdlYWtQdHI8V2ViQ29yZTo6QVhDb3JlT2JqZWN0PiBtX2lzb2xhdGVk
VHJlZVJvb3Q7CiAjZW5kaWYKKworICAgIFdlYkNvcmU6OkludFBvaW50IG1fcmVtb3RlRnJhbWVP
ZmZzZXQ7CiAgICAgUmV0YWluUHRyPGlkPiBtX3BhcmVudDsKICAgICBib29sIG1faGFzTWFpbkZy
YW1lUGx1Z2luOwogfQpAQCAtNTYsOSArNTgsMTEgQEAgY2xhc3MgQVhDb3JlT2JqZWN0OwogLSAo
dm9pZClzZXRJc29sYXRlZFRyZWVSb290OihOYWtlZFB0cjxXZWJDb3JlOjpBWENvcmVPYmplY3Q+
KXJvb3Q7CiAjZW5kaWYKIC0gKHZvaWQpc2V0UmVtb3RlUGFyZW50OihpZClwYXJlbnQ7CistICh2
b2lkKXNldFJlbW90ZUZyYW1lT2Zmc2V0OihXZWJDb3JlOjpJbnRQb2ludClvZmZzZXQ7CiAtICh2
b2lkKXNldEhhc01haW5GcmFtZVBsdWdpbjooYm9vbCloYXNQbHVnaW47CiAKIC0gKGlkKWFjY2Vz
c2liaWxpdHlSb290T2JqZWN0V3JhcHBlcjsKIC0gKGlkKWFjY2Vzc2liaWxpdHlGb2N1c2VkVUlF
bGVtZW50OworLSAoV2ViQ29yZTo6SW50UG9pbnQpYWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zm
c2V0OwogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2Uu
bW0KaW5kZXggNmY5OTU0NWFlYmY1Li5iZWM4ZDczZmFhMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0
QmFzZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nl
c3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0KQEAgLTM2LDkgKzM2LDExIEBACiAjaW1wb3J0
ICJXS1N0cmluZ0NGLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0FYT2JqZWN0Q2FjaGUuaD4KICNpbXBv
cnQgPFdlYkNvcmUvRG9jdW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRnJhbWVUcmVlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0xvY2FsRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxGcmFt
ZVZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9SZW1v
dGVGcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxWaWV3Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1Njcm9sbGJhci5oPgogCkBAIC01NywxMSArNTksMTcgQEAgbmFtZXNwYWNlIGF4ID0gV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgYXV0byogbG9jYWxNYWluRnJhbWUgPSBkeW5hbWljRG93bmNhc3Q8V2ViQ29y
ZTo6TG9jYWxGcmFtZT4ocGFnZS0+bWFpbkZyYW1lKCkpOwotICAgIGlmICghbG9jYWxNYWluRnJh
bWUgfHwgIWxvY2FsTWFpbkZyYW1lLT5kb2N1bWVudCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICBpZiAoYXV0byogbG9jYWxNYWluRnJhbWUgPSBkeW5hbWljRG93bmNhc3Q8V2ViQ29y
ZTo6TG9jYWxGcmFtZT4ocGFnZS0+bWFpbkZyYW1lKCkpKSB7CisgICAgICAgIGlmIChhdXRvKiBk
b2N1bWVudCA9IGxvY2FsTWFpbkZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICAgICAgcmV0dXJu
IGRvY3VtZW50LT5heE9iamVjdENhY2hlKCk7CisgICAgfSBlbHNlIGlmIChhdXRvKiByZW1vdGVN
YWluRnJhbWUgPSBkeW5hbWljRG93bmNhc3Q8V2ViQ29yZTo6UmVtb3RlRnJhbWU+KHBhZ2UtPm1h
aW5GcmFtZSgpKSkgeworICAgICAgICBhdXRvJiB0cmVlID0gcmVtb3RlTWFpbkZyYW1lLT50cmVl
KCk7CisgICAgICAgIGF1dG8qIGZpcnN0RnJhbWUgPSBkeW5hbWljRG93bmNhc3Q8V2ViQ29yZTo6
TG9jYWxGcmFtZT4odHJlZS5maXJzdENoaWxkKCkpOworICAgICAgICBhdXRvKiBkb2N1bWVudCA9
IGZpcnN0RnJhbWUgPyBmaXJzdEZyYW1lLT5kb2N1bWVudCgpIDogbnVsbHB0cjsKKyAgICAgICAg
cmV0dXJuIGRvY3VtZW50ID8gZG9jdW1lbnQtPmF4T2JqZWN0Q2FjaGUoKSA6IG51bGxwdHI7Cisg
ICAgfQogCi0gICAgcmV0dXJuIGxvY2FsTWFpbkZyYW1lLT5kb2N1bWVudCgpLT5heE9iamVjdENh
Y2hlKCk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIC0gKGlkKWFjY2Vzc2liaWxpdHlQbHVn
aW5PYmplY3QKQEAgLTE1Miw2ICsxNjAsMTcgQEAgbmFtZXNwYWNlIGF4ID0gV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eTsKICAgICBtX2hhc01haW5GcmFtZVBsdWdpbiA9IGhhc1BsdWdpbjsKIH0KIAor
LSAodm9pZClzZXRSZW1vdGVGcmFtZU9mZnNldDooV2ViQ29yZTo6SW50UG9pbnQpb2Zmc2V0Cit7
CisgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CisgICAgbV9yZW1vdGVGcmFtZU9mZnNldCA9
IG9mZnNldDsKK30KKworLSAoV2ViQ29yZTo6SW50UG9pbnQpYWNjZXNzaWJpbGl0eVJlbW90ZUZy
YW1lT2Zmc2V0Cit7CisgICAgcmV0dXJuIG1fcmVtb3RlRnJhbWVPZmZzZXQ7Cit9CisKIC0gKHZv
aWQpc2V0UmVtb3RlUGFyZW50OihpZClwYXJlbnQKIHsKICAgICBBU1NFUlQoaXNNYWluUnVuTG9v
cCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW0KaW5kZXggOTZlZDY0YWRiY2ZmLi41ZjliODgwYzgwYmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC0xMjMs
MTYgKzEyMywxMiBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6ZUFjY2Vzc2liaWxp
dHkoKQogICAgIC8vIEN1cnJlbnRseSwgaXQgaXMgYWxzbyBuZWVkZWQgdG8gYWxsb2NhdGUgYW5k
IGluaXRpYWxpemUgYW4gTlNBcHBsaWNhdGlvbiBvYmplY3QuCiAgICAgW05TQXBwbGljYXRpb24g
X2FjY2Vzc2liaWxpdHlJbml0aWFsaXplXTsKIAotICAgIGF1dG8gbW9ja0FjY2Vzc2liaWxpdHlF
bGVtZW50ID0gYWRvcHROUyhbW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QgYWxsb2NdIGlu
aXRdKTsKLQogICAgIC8vIEdldCB0aGUgcGlkIGZvciB0aGUgc3RhcnRpbmcgcHJvY2Vzcy4KICAg
ICBwaWRfdCBwaWQgPSBXZWJDb3JlOjpwcmVzZW50aW5nQXBwbGljYXRpb25QSUQoKTsKLSAgICBp
ZiAoW21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KGFjY2Vzc2liaWxpdHlTZXRQcmVzZW50ZXJQcm9jZXNzSWRlbnRpZmllcjopXSkKLSAgICAgICAg
WyhpZCltb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQuZ2V0KCkgYWNjZXNzaWJpbGl0eVNldFByZXNl
bnRlclByb2Nlc3NJZGVudGlmaWVyOnBpZF07Ci0gICAgW21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVu
dCBzZXRXZWJQYWdlOnRoaXNdOwotICAgIG1fbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50ID0gV1RG
TW92ZShtb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQpOwotCi0gICAgYWNjZXNzaWJpbGl0eVRyYW5z
ZmVyUmVtb3RlVG9rZW4oYWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0YSgpKTsKKyAgICBjcmVh
dGVNb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQocGlkKTsKKyAgICBSZWZQdHIgbG9jYWxNYWluRnJh
bWUgPSBkeW5hbWljRG93bmNhc3Q8TG9jYWxGcmFtZT4obV9wYWdlLT5tYWluRnJhbWUoKSk7Cisg
ICAgaWYgKGxvY2FsTWFpbkZyYW1lKQorICAgICAgICBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1v
dGVUb2tlbihhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCksIGxvY2FsTWFpbkZyYW1lLT5m
cmFtZUlEKCkpOwogCiAgICAgLy8gQ2xvc2UgTWFjaCBjb25uZWN0aW9uIHRvIExhdW5jaCBTZXJ2
aWNlcy4KICNpZiBIQVZFKExTX1NFUlZFUl9DT05ORUNUSU9OX1NUQVRVU19SRUxFQVNFX05PVElG
SUNBVElPTlNfTUFTSykKQEAgLTE0NCw5ICsxNDAsMjAgQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9y
bUluaXRpYWxpemVBY2Nlc3NpYmlsaXR5KCkKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5y
ZXZva2VMYXVuY2hTZXJ2aWNlc1NhbmRib3hFeHRlbnNpb24oKTsKIH0KIAordm9pZCBXZWJQYWdl
OjpjcmVhdGVNb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQocGlkX3QgcGlkKQoreworICAgIGF1dG8g
bW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50ID0gYWRvcHROUyhbW1dLQWNjZXNzaWJpbGl0eVdlYlBh
Z2VPYmplY3QgYWxsb2NdIGluaXRdKTsKKworICAgIGlmIChbbW9ja0FjY2Vzc2liaWxpdHlFbGVt
ZW50IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYWNjZXNzaWJpbGl0eVNldFByZXNlbnRl
clByb2Nlc3NJZGVudGlmaWVyOildKQorICAgICAgICBbKGlkKW1vY2tBY2Nlc3NpYmlsaXR5RWxl
bWVudC5nZXQoKSBhY2Nlc3NpYmlsaXR5U2V0UHJlc2VudGVyUHJvY2Vzc0lkZW50aWZpZXI6cGlk
XTsKKyAgICBbbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50IHNldFdlYlBhZ2U6dGhpc107CisgICAg
bV9tb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgPSBXVEZNb3ZlKG1vY2tBY2Nlc3NpYmlsaXR5RWxl
bWVudCk7Cit9CisKIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1SZWluaXRpYWxpemUoKQogewotICAg
IGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKGFjY2Vzc2liaWxpdHlSZW1vdGVUb2tl
bkRhdGEoKSk7CisgICAgUmVmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1
c2VkT3JNYWluRnJhbWUoKTsKKyAgICBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tlbihh
Y2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCksIGZyYW1lLT5mcmFtZUlEKCkpOwogfQogCiBS
ZXRhaW5QdHI8TlNEYXRhPiBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCkg
Y29uc3QKQEAgLTQ2OSwxMiArNDc2LDI3IEBAIGJvb2wgV2ViUGFnZTo6cGVyZm9ybU5vbkVkaXRp
bmdCZWhhdmlvckZvclNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIEtleWJvCiAgICAg
cmV0dXJuIGRpZFBlcmZvcm1BY3Rpb247CiB9CiAKK3ZvaWQgV2ViUGFnZTo6dXBkYXRlUmVtb3Rl
UGFnZUFjY2Vzc2liaWxpdHlPZmZzZXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IFdlYkNvcmU6OkludFBvaW50IG9mZnNldCkKK3sKKyAgICBbYWNjZXNzaWJpbGl0eVJlbW90ZU9i
amVjdCgpIHNldFJlbW90ZUZyYW1lT2Zmc2V0Om9mZnNldF07Cit9CisKK3ZvaWQgV2ViUGFnZTo6
cmVnaXN0ZXJSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlUb2tlbnMocGlkX3QgcGlkLCBzdGQ6OnNw
YW48Y29uc3QgdWludDhfdD4gZWxlbWVudFRva2VuKQoreworICAgIE5TRGF0YSAqZWxlbWVudFRv
a2VuRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczplbGVtZW50VG9rZW4uZGF0YSgpIGxlbmd0
aDplbGVtZW50VG9rZW4uc2l6ZSgpXTsKKyAgICBhdXRvIHJlbW90ZUVsZW1lbnQgPSBlbGVtZW50
VG9rZW5EYXRhLmxlbmd0aCA/IGFkb3B0TlMoW1tOU0FjY2Vzc2liaWxpdHlSZW1vdGVVSUVsZW1l
bnQgYWxsb2NdIGluaXRXaXRoUmVtb3RlVG9rZW46ZWxlbWVudFRva2VuRGF0YV0pIDogbmlsOwor
CisgICAgY3JlYXRlTW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50KHBpZCk7CisgICAgW2FjY2Vzc2li
aWxpdHlSZW1vdGVPYmplY3QoKSBzZXRSZW1vdGVQYXJlbnQ6cmVtb3RlRWxlbWVudC5nZXQoKV07
Cit9CisKIHZvaWQgV2ViUGFnZTo6cmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5z
KHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBlbGVtZW50VG9rZW4sIHN0ZDo6c3Bhbjxjb25zdCB1
aW50OF90PiB3aW5kb3dUb2tlbikKIHsKICAgICBOU0RhdGEgKmVsZW1lbnRUb2tlbkRhdGEgPSBb
TlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZWxlbWVudFRva2VuLmRhdGEoKSBsZW5ndGg6ZWxlbWVudFRv
a2VuLnNpemUoKV07CiAgICAgTlNEYXRhICp3aW5kb3dUb2tlbkRhdGEgPSBbTlNEYXRhIGRhdGFX
aXRoQnl0ZXM6d2luZG93VG9rZW4uZGF0YSgpIGxlbmd0aDp3aW5kb3dUb2tlbi5zaXplKCldOwog
ICAgIGF1dG8gcmVtb3RlRWxlbWVudCA9IGVsZW1lbnRUb2tlbkRhdGEubGVuZ3RoID8gYWRvcHRO
UyhbW05TQWNjZXNzaWJpbGl0eVJlbW90ZVVJRWxlbWVudCBhbGxvY10gaW5pdFdpdGhSZW1vdGVU
b2tlbjplbGVtZW50VG9rZW5EYXRhXSkgOiBuaWw7CiAgICAgYXV0byByZW1vdGVXaW5kb3cgPSB3
aW5kb3dUb2tlbkRhdGEubGVuZ3RoID8gYWRvcHROUyhbW05TQWNjZXNzaWJpbGl0eVJlbW90ZVVJ
RWxlbWVudCBhbGxvY10gaW5pdFdpdGhSZW1vdGVUb2tlbjp3aW5kb3dUb2tlbkRhdGFdKSA6IG5p
bDsKKwogICAgIFtyZW1vdGVFbGVtZW50IHNldFdpbmRvd1VJRWxlbWVudDpyZW1vdGVXaW5kb3cu
Z2V0KCldOwogICAgIFtyZW1vdGVFbGVtZW50IHNldFRvcExldmVsVUlFbGVtZW50OnJlbW90ZVdp
bmRvdy5nZXQoKV07CiAKQEAgLTUxNiw2ICs1MzgsMTEgQEAgV0tBY2Nlc3NpYmlsaXR5V2ViUGFn
ZU9iamVjdCogV2ViUGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpCiAgICAgcmV0dXJu
IG1fbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50LmdldCgpOwogfQogCitXZWJDb3JlOjpJbnRQb2lu
dCBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKQoreworICAgIHJldHVy
biBbbV9tb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgYWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zm
c2V0XTsKK30KKwogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiB2b2lk
IFdlYlBhZ2U6OmNhY2hlQVhQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBwb2lu
dCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA4NzJhNTU4
ZmI0ZTEuLmVkNzE2OTY5NTMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcApAQCAtMTU2OCw2ICsxNTY4LDEwIEBAIHZvaWQgV2ViUHJvY2Vzczo6dXBkYXRlQ1BVTW9u
aXRvclN0YXRlKENQVU1vbml0b3JVcGRhdGVSZWFzb24pCiB7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vz
czo6YmluZEFjY2Vzc2liaWxpdHlGcmFtZVdpdGhEYXRhKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KQoreworfQorCiAjZW5kaWYKIAogdm9pZCBXZWJQ
cm9jZXNzOjpwYWdlQWN0aXZpdHlTdGF0ZURpZENoYW5nZShQYWdlSWRlbnRpZmllciwgT3B0aW9u
U2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU+IGNoYW5nZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaAppbmRleCAwNjE0YmNmN2FmNWMuLjE5NjI2MWE5NzdlYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC02NSw2ICs2NSw5IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9TY3JlZW5Qcm9wZXJ0aWVzLmg+CiAjaW5jbHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2gu
aD4KICNpbmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgorCitPQkpDX0NMQVNTIE5TTXV0YWJs
ZURpY3Rpb25hcnk7CisKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQpAQCAtODcsNiArOTAs
NyBAQAogI2luY2x1ZGUgIldlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5oIgogI2VuZGlmCiAKKwog
bmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBPYmplY3Q7CiB9CkBAIC01MTEsNiArNTE1LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHBsYXRmb3JtU2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVsKTsKIAogICAg
IHZvaWQgc2V0RW5oYW5jZWRBY2Nlc3NpYmlsaXR5KGJvb2wpOworICAgIHZvaWQgYmluZEFjY2Vz
c2liaWxpdHlGcmFtZVdpdGhEYXRhKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgc3RkOjpzcGFu
PGNvbnN0IHVpbnQ4X3Q+KTsKIAogICAgIHZvaWQgc3RhcnRNZW1vcnlTYW1wbGVyKFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBkb3VibGUpOwogICAgIHZv
aWQgc3RvcE1lbW9yeVNhbXBsZXIoKTsKQEAgLTgyNiw2ICs4MzEsNyBAQCBwcml2YXRlOgogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIEhhc2hDb3VudGVkU2V0PFN0cmluZz4gbV9wZW5kaW5nUGFz
dGVib2FyZFdyaXRlQ291bnRzOwogICAgIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gbV9h
dWRpdFRva2VuRm9yU2VsZjsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gbV9h
Y2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVUb2tlbkNhY2hlOwogI2VuZGlmCiAKICNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCmluZGV4IDk5YjQwMmFmMTFjYS4uZDc3NWZlN2QzOGQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNjksNiArNjks
NyBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIE5vdFJlZkNvdW50ZWQg
ewogICAgIFNldFRleHRDaGVja2VyU3RhdGUoc3RydWN0IFdlYktpdDo6VGV4dENoZWNrZXJTdGF0
ZSB0ZXh0Q2hlY2tlclN0YXRlKQogCiAgICAgU2V0RW5oYW5jZWRBY2Nlc3NpYmlsaXR5KGJvb2wg
ZmxhZykKKyAgICBCaW5kQWNjZXNzaWJpbGl0eUZyYW1lV2l0aERhdGEoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhKTsKIAogICAg
IEdhcmJhZ2VDb2xsZWN0SmF2YVNjcmlwdE9iamVjdHMoKQogICAgIFNldEphdmFTY3JpcHRHYXJi
YWdlQ29sbGVjdG9yVGltZXJFbmFibGVkKGJvb2wgZW5hYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggYzUzODU3ZmJlMWQ0
Li4xMTYwNmU5NjM5NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAtMjEzLDYgKzIxMywxNiBAQCB2b2lkIFdlYlByb2Nlc3M6
OnBsYXRmb3JtU2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVsKQogewogfQogCit2b2lkIFdlYlByb2Nl
c3M6OmJpbmRBY2Nlc3NpYmlsaXR5RnJhbWVXaXRoRGF0YShXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCit7CisgICAgaWYgKCFt
X2FjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZVRva2VuQ2FjaGUpCisgICAgICAgIG1fYWNjZXNzaWJp
bGl0eVJlbW90ZUZyYW1lVG9rZW5DYWNoZSA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5
IGFsbG9jXSBpbml0XSk7CisKKyAgICBhdXRvIGZyYW1lSW50ID0gZnJhbWVJRC5vYmplY3QoKS50
b1VJbnQ2NCgpOworICAgIE5TRGF0YSAqbnNEYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRh
dGEuZGF0YSgpIGxlbmd0aDpkYXRhLnNpemUoKV07CisgICAgW21fYWNjZXNzaWJpbGl0eVJlbW90
ZUZyYW1lVG9rZW5DYWNoZSBzZXRPYmplY3Q6bnNEYXRhIGZvcktleTpAKGZyYW1lSW50KV07Cit9
CisKIGlkIFdlYlByb2Nlc3M6OmFjY2Vzc2liaWxpdHlGb2N1c2VkVUlFbGVtZW50KCkKIHsKICAg
ICBhdXRvIHJldHJpZXZlRm9jdXNlZFVJRWxlbWVudEZyb21NYWluVGhyZWFkID0gW10gKCkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMjFlMjFmMDhiZDY0Li5iNGNmMjgyYzE4Y2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMjI1LDYgKzIyNSw3IEBAIHByaXZhdGU6
CiAjZW5kaWYKIAogICAgIFJlbW90ZUFYT2JqZWN0UmVmIGFjY2Vzc2liaWxpdHlSZW1vdGVPYmpl
Y3QoKSBmaW5hbCB7IHJldHVybiAwOyB9CisgICAgV2ViQ29yZTo6SW50UG9pbnQgYWNjZXNzaWJp
bGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCkgZmluYWwgeyByZXR1cm4geyB9OyB9CiAjaWYgRU5BQkxF
KEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKICAgICB2b2lkIHNldEFYSXNvbGF0ZWRUcmVl
Um9vdChXZWJDb3JlOjpBWENvcmVPYmplY3QqKSBmaW5hbCB7IH0KICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>469922</attachid>
            <date>2024-02-16 09:28:40 -0800</date>
            <delta_ts>2024-02-16 13:30:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-268804-20240216092838.patch</filename>
            <type>text/plain</type>
            <size>119474</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">RnJvbSBhNjIzZDE2ZGNjMTc4NDllOGZmZTE4ZWIxYmEzYjQwMTg5Y2FiYTY4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpcyBGbGVpemFjaCA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4K
RGF0ZTogVGh1LCAxNSBGZWIgMjAyNCAxMjo0MDozOCAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIEFY
OiBTdXBwb3J0IHNpdGUgaXNvbGF0aW9uIGZvciBWb2ljZU92ZXIKIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjg4MDQgcmRhcjovLzk5NjY1NTYxCgpSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KCkluaXRpYWwgc3VwcG9ydCBmb3Igc2l0ZSBpc29sYXRpb24gZm9y
IFZvaWNlT3Zlci4KCldoZW4gYSBzY3JvbGwgdmlldyBob3N0cyBhIFJlbW90ZUZyYW1lIGl0IGJp
bmRzIGl0c2VsZiB0byB0aGUgb3RoZXIgc2lkZSB0aHJvdWdoIGEgV2ViUGFnZSBtZXNzYWdlLgpU
aGlzIHRyYW5zZmVycyBkYXRhIHRva2VucyBzbyBBY2Nlc3NpYmlsaXR5IHJlbW90ZSBlbGVtZW50
cyBhcmUgY3JlYXRlZCBhbmQgaG9va2VkIHVwLgoKVGhlIGJvdW5kaW5nIGJveGVzIGluc2lkZSB0
aGUgc3ViIGZyYW1lcyBuZWVkIHRvIGhhdmUgdGhlIGluaXRpYWwgb2Zmc2V0IGFwcGxpZWQgYW5k
IHRoZW4gbmVlZCB0byBiZSBjb252ZXJ0ZWQKZWFjaCBzdGVwIHVwIHRoZSBjaGFpbiB0byBhY2Nv
dW50IGZvciBzY3JvbGwgb2Zmc2V0cyB0aGF0IG9ubHkgZWFjaCBwcm9jZXNzIGtub3dzIGFib3V0
LgoKKiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dDoKKiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWENvcmVPYmplY3QuaDoKKFdlYkNvcmU6OmFjY2Vzc2liaWxpdHlSb2xlVG9TdHJpbmcpOgoo
V2ViQ29yZTo6QVhDb3JlT2JqZWN0Ojppc1JlbW90ZUZyYW1lIGNvbnN0KToKKiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcDoKKFdlYkNvcmU6OnN0cmVhbUFYQ29yZU9i
amVjdCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoK
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmNyZWF0ZSk6CihXZWJDb3JlOjpBWE9iamVjdENhY2hl
OjpvblJlbW90ZUZyYW1lSW5pdGlhbGl6ZWQpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5jcHA6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZWxhdGl2
ZUZyYW1lIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnJlbW90ZUZyYW1l
T2Zmc2V0IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW1vdGVGcmFtZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJh
bWVDbGllbnQuaC4KKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6Y3JlYXRlKToK
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6QWNjZXNzaWJpbGl0eVJlbW90ZUZy
YW1lKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6ZWxlbWVudFJlY3QgY29u
c3QpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbW90ZUZy
YW1lLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVDbGllbnQu
aC4KKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkQXR0YWNobWVu
dENoaWxkcmVuKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENoaWxk
cmVuKToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpkZXRhY2hSZW1vdGVQ
YXJ0cyk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6Y2xlYXJDaGlsZHJlbik6
CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkUmVtb3RlRnJhbWVDaGlsZCk6
CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkQ2hpbGRyZW4pOgooV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OndlYkFyZWFPYmplY3QgY29uc3QpOgooV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmRvY3VtZW50IGNvbnN0KToKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpwYXJlbnRPYmplY3QgY29uc3QpOgoqIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaDoKKiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcDoKKFdl
YkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKFdlYkNvcmU6
OkFYSXNvbGF0ZWRPYmplY3Q6OnNldFByb3BlcnR5KToKKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmpl
Y3Q6OnJlbW90ZUZyYW1lT2Zmc2V0IGNvbnN0KToKKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OnJlbGF0aXZlRnJhbWUgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHA6CihXZWJDb3JlOjpBWElzb2xhdGVk
VHJlZTo6dXBkYXRlTm9kZVByb3BlcnRpZXMpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMubW06CihXZWJDb3Jl
OjpBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplUGxhdGZvcm1Qcm9wZXJ0aWVzKToKKFdlYkNv
cmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50IGNvbnN0KToK
KiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFj
Lm1tOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lOjpnZW5lcmF0ZVJlbW90ZVRv
a2VuIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6aW5pdGlhbGl6
ZVBsYXRmb3JtRWxlbWVudFdpdGhSZW1vdGVUb2tlbik6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
OjpjcmVhdGVQbGF0Zm9ybVJvbGVNYXApOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbToKKG1ha2VOU0FycmF5KToK
KiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgcm9sZV0pOgoo
LVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBpc0VtcHR5R3JvdXBdKToKKC1bV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgcm9sZURlc2NyaXB0aW9uXSk6CigtW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIF90cmFuc2Zvcm1TcGVjaWFsQ2hpbGRyZW5DYXNlczpdKToKKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
Ol0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5SGl0VGVz
dDpdKToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgQUxMT1dfREVQUkVDQVRFRF9J
TVBMRU1FTlRBVElPTlNfRU5EXSk6CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpmb3JQYXJhbWV0ZXI6XSk6CigtW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlJbmRleE9mQ2hpbGQ6XSk6CigtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZUNvdW50
Ol0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXJyYXlB
dHRyaWJ1dGVWYWx1ZXM6aW5kZXg6bWF4Q291bnQ6XSk6CiogU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHA6CihXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjphY2Nl
c3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQpOgoqIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUZyYW1lTG9hZGVyQ2xpZW50Lmg6CiogU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvY2FsRnJhbWVM
b2FkZXJDbGllbnQuaDoKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwOgooV2ViQ29yZTo6
UGFnZTo6c2hvdWxkVXBkYXRlQWNjZXNzaWJpbGl0eVJlZ2lvbnMgY29uc3QpOgoqIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuY3BwOgooV2ViQ29yZTo6UmVtb3RlRnJhbWU6OnVwZGF0
ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldCk6CihXZWJDb3JlOjpSZW1vdGVGcmFtZTo6
dW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyk6CihXZWJDb3JlOjpSZW1vdGVGcmFtZTo6
YmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMpOgoqIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVt
b3RlRnJhbWUuaDoKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lQ2xpZW50Lmg6Ciog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcDoKKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdl
UHJveHk6OnJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbik6CiogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaDoKKiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcDoKKFdlYktpdDo6V2ViRnJhbWVQcm94eTo6YmluZEFj
Y2Vzc2liaWxpdHlGcmFtZVdpdGhEYXRhKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJG
cmFtZVByb3h5Lmg6CiogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojpzd2FwVG9Qcm92aXNpb25hbFBhZ2UpOgooV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKToKKFdlYktpdDo6V2Vi
UGFnZVByb3h5Ojp1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQpOgoqIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MubW06CihXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5
V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQpOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW06CihXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9j
ZXNzQWNjZXNzaWJpbGl0eVRva2VuKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGxNYWMuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGxNYWMubW06CihXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5V2ViUHJv
Y2Vzc1Rva2VuUmVjZWl2ZWQpOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW06CihXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNj
ZXNzaWJpbGl0eVRva2VuKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0lt
cGwuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwubW06CihXZWJL
aXQ6OldlYlZpZXdJbXBsOjpzZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuKToKKiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNs
aWVudC5jcHA6CihXZWJLaXQ6OldlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQ6OmFjY2Vzc2liaWxp
dHlSZW1vdGVGcmFtZU9mZnNldCk6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuaDoKKiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuY3BwOgooV2ViS2l0OjpX
ZWJSZW1vdGVGcmFtZUNsaWVudDo6dW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyk6CihX
ZWJLaXQ6OldlYlJlbW90ZUZyYW1lQ2xpZW50Ojp1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxp
dHlPZmZzZXQpOgooV2ViS2l0OjpXZWJSZW1vdGVGcmFtZUNsaWVudDo6YmluZFJlbW90ZUFjY2Vz
c2liaWxpdHlGcmFtZXMpOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJSZW1vdGVGcmFtZUNsaWVudC5oOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKFdlYktpdDo6V2ViUGFnZTo6YWNjZXNzaWJpbGl0
eVRyYW5zZmVyUmVtb3RlVG9rZW4pOgooV2ViS2l0OjpXZWJQYWdlOjphY2Nlc3NpYmlsaXR5TWFu
YWdlUmVtb3RlRWxlbWVudFN0YXR1cyk6CihXZWJLaXQ6OldlYlBhZ2U6OmJpbmRSZW1vdGVBY2Nl
c3NpYmlsaXR5RnJhbWVzKToKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmg6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbjoKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bToKKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplQWNjZXNzaWJpbGl0eSk6CihX
ZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtUmVpbml0aWFsaXplKToKKFdlYktpdDo6V2ViUGFnZTo6
YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KToKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaDoKKiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9i
amVjdEJhc2UubW06CigtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlIGF4T2JqZWN0
Q2FjaGVdKToKKC1bV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2Ugc2V0UmVtb3RlRnJh
bWVPZmZzZXQ6XSk6CigtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlIGFjY2Vzc2li
aWxpdHlSZW1vdGVGcmFtZU9mZnNldF0pOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tOgooV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybUluaXRpYWxp
emVBY2Nlc3NpYmlsaXR5KToKKFdlYktpdDo6V2ViUGFnZTo6Y3JlYXRlTW9ja0FjY2Vzc2liaWxp
dHlFbGVtZW50KToKKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1SZWluaXRpYWxpemUpOgooV2Vi
S2l0OjpXZWJQYWdlOjp1cGRhdGVSZW1vdGVQYWdlQWNjZXNzaWJpbGl0eU9mZnNldCk6CihXZWJL
aXQ6OldlYlBhZ2U6OnJlZ2lzdGVyUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5VG9rZW5zKToKKFdl
YktpdDo6V2ViUGFnZTo6cmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKToKKFdl
YktpdDo6V2ViUGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KToKKiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJQcm9jZXNzQ29jb2EubW06CihXZWJLaXQ6OldlYlByb2Nlc3M6OmJpbmRBY2Nlc3NpYmls
aXR5RnJhbWVXaXRoRGF0YSk6CiogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKLS0tCiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dCAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogLi4uL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIHwgICA0ICsKIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhDb3JlT2JqZWN0LmggICB8ICAxMiArKwogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WExvZ2dlci5jcHAgICAgIHwgICAzICsKIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5jcHAgICB8ICAxNSArLQogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmggIHwgICAyICsKIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhSZW1vdGVG
cmFtZS5jcHAgICB8ICA0MiArKysrKwogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFJl
bW90ZUZyYW1lLmggIHwgIDYxICsrKysrKysrCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcCAgICAgfCAgMjMgKystCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmggICAgICAgfCAgIDUgKwogLi4uL0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
Y3BwICAgICAgICAgICAgIHwgICA0ICstCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldy5jcHAgfCAgNjIgKysrKysrKy0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlTY3JvbGxWaWV3LmggICB8ICAgNiArLQogLi4uL2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaS5jcHAgICAgICAgIHwgICAxICsKIC4uLi9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJJT1MubW0gICB8ICAgMSArCiAuLi4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmpl
Y3QuY3BwICAgICAgICAgfCAgMzQgKysrKy0KIC4uLi9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9i
amVjdC5oICAgICAgICAgICB8ICAgOCArLQogLi4uL2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJl
ZS5jcHAgICAgICAgICAgIHwgIDYxICsrKy0tLS0tCiAuLi4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRUcmVlLmggICAgICAgICAgICAgfCAgMjkgKysrKwogLi4uL2lzb2xhdGVkdHJlZS9tYWMvQVhJ
c29sYXRlZE9iamVjdE1hYy5tbSAgIHwgICA3ICsKIC4uLi9tYWMvQWNjZXNzaWJpbGl0eU9iamVj
dE1hYy5tbSAgICAgICAgICAgICB8ICAyNiArKysrCiAuLi4vbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyQmFzZS5tbSAgfCAgIDkgKy0KIC4uLi9tYWMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJNYWMubW0gICB8IDE0MyArKysrKysrKysrKystLS0tLS0KIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwICAgICAgICB8ICAgNSArCiAuLi4vV2ViQ29yZS9s
b2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oICAgfCAgIDEgKwogLi4uL1dlYkNvcmUvbG9h
ZGVyL0xvY2FsRnJhbWVMb2FkZXJDbGllbnQuaCAgIHwgICAxICsKIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAgICAgICAgICAgICAgICAgICB8ICAxNSArLQogU291cmNlL1dlYkNvcmUvcGFn
ZS9SZW1vdGVGcmFtZS5jcHAgICAgICAgICAgIHwgIDE1ICsrCiBTb3VyY2UvV2ViQ29yZS9wYWdl
L1JlbW90ZUZyYW1lLmggICAgICAgICAgICAgfCAgIDQgKwogU291cmNlL1dlYkNvcmUvcGFnZS9S
ZW1vdGVGcmFtZUNsaWVudC5oICAgICAgIHwgICA0ICsKIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1BhZ2VDbGllbnQuaCAgICAgICAgICB8ICAgMyArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvUHJv
dmlzaW9uYWxQYWdlUHJveHkuY3BwIHwgICAyICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9Qcm92
aXNpb25hbFBhZ2VQcm94eS5oICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkZyYW1lUHJveHkuY3BwICAgICB8ICAgOSArKwogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
RnJhbWVQcm94eS5oICAgICAgIHwgICAyICsKIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAgICAgICB8ICAyNCArKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oICAgICAgICB8ICAgNCArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluIHwgICA0ICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MuaCAgfCAgIDIgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5tbSB8ICAgMiArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbSAgIHwgICA3ICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGxNYWMuaCAgfCAgIDIgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbE1hYy5tbSB8ICAgNCArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94
eU1hYy5tbSAgIHwgICA0ICstCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0lt
cGwuaCAgICAgfCAgIDMgKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3SW1w
bC5tbSAgICB8ICAgOCArLQogLi4uL1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuY3BwICAgICAg
ICAgICAgIHwgICA2ICsKIC4uLi9XZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmggICAgICAgICAg
ICAgICB8ICAgMSArCiAuLi4vV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuY3Bw
ICAgfCAgMzYgKysrKysKIC4uLi9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVudC5o
ICAgICB8ICAgNCArCiAuLi4vV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5t
bSAgfCAgNDYgKysrKystCiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcCAgfCAgMTAgKysKIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aCAgICB8ICAxMSArLQogLi4uL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
ICAgIHwgICAzICsKIC4uLi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gICAg
ICB8ICAyMiArKy0KIC4uLi9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaCAg
ICB8ICAgNCArCiAuLi4vbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tICAg
fCAgMjcgKysrLQogLi4uL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSAgICAg
IHwgIDQ1ICsrKystLQogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwICAg
ICAgIHwgICA0ICsKIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggICAgICAg
ICB8ICAgNiArCiAuLi4vV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiAg
fCAgIDEgKwogLi4uL1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tICAgICAgIHwg
IDEwICsrCiAuLi4vbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggfCAg
IDEgKwogNjMgZmlsZXMgY2hhbmdlZCwgNzY5IGluc2VydGlvbnMoKyksIDE1NCBkZWxldGlvbnMo
LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYUmVt
b3RlRnJhbWUuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWFJlbW90ZUZyYW1lLmgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDFmNTdiOWFhMGEzNC4uYTUw
ZmU4OTQ5M2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtNTI1LDYgKzUyNSw3IEBAIGFjY2Vzc2liaWxp
dHkvQVhHZW9tZXRyeU1hbmFnZXIuY3BwCiBhY2Nlc3NpYmlsaXR5L0FYSW1hZ2UuY3BwCiBhY2Nl
c3NpYmlsaXR5L0FYTG9nZ2VyLmNwcAogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAor
YWNjZXNzaWJpbGl0eS9BWFJlbW90ZUZyYW1lLmNwcAogYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJr
ZXIuY3BwCiBhY2Nlc3NpYmlsaXR5L0FYVGV4dFJ1bi5jcHAKIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eUFSSUFHcmlkLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDJhN2VjODY4MDAwMi4uNjdkZmMwZWRiNDYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC04OTYwLDYgKzg5NjAsOCBAQAogCQkyOTQ4OUZDNTEyQzAwRjAzMDBEODNGMEYgLyogQWNjZXNz
aWJpbGl0eVNjcm9sbFZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk0
OTg2ODExOTUzNDE5NDAwNzJEMkJEIC8qIFRleHRVbmRvSW5zZXJ0aW9uTWFya3VwTWFjLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVGV4dFVuZG9JbnNlcnRpb25N
YXJrdXBNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5NEJEQUU2MjFGRjU4
MkEwMDUxMDc3QiAvKiBBY2Nlc3NpYmlsaXR5T2JqZWN0Q29jb2EubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5T2JqZWN0Q29jb2EubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5NTVDRjExMkIyMzBBRTYwMDAxQkY4MiAvKiBB
WFJlbW90ZUZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFYUmVtb3RlRnJhbWUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjk1NUNGMTIyQjIzMEFFNjAwMDFCRjgyIC8qIEFYUmVtb3Rl
RnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVhSZW1vdGVGcmFtZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5N0JFM0Q5MTZDMDQzRDgwMDMzMTZCRCAvKiBQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyOTgxQUJDNDEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eU1hdGhNTEVs
ZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTgxQ0E5RDEzMTgyMkVDMDBEMTJG
MkEgLyogQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vz
c2liaWxpdHlBUklBR3JpZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzQ0
NSw2ICsyMzQ0Nyw4IEBACiAJCQkJQzA0OTNFQjcyNDQ2OTlFNDAwOUFBQzgwIC8qIEFYTG9nZ2Vy
LmggKi8sCiAJCQkJMjk4MUNBQUYxMzE4MjJFQzAwRDEyRjJBIC8qIEFYT2JqZWN0Q2FjaGUuY3Bw
ICovLAogCQkJCTI5QTgxMjFBMEZCQjlDMUQwMDUxMDI5MyAvKiBBWE9iamVjdENhY2hlLmggKi8s
CisJCQkJMjk1NUNGMTIyQjIzMEFFNjAwMDFCRjgyIC8qIEFYUmVtb3RlRnJhbWUuY3BwICovLAor
CQkJCTI5NTVDRjExMkIyMzBBRTYwMDAxQkY4MiAvKiBBWFJlbW90ZUZyYW1lLmggKi8sCiAJCQkJ
QzBFMjA4QTEyOTM3OUM2RjAwQzBEMkQzIC8qIEFYVGV4dE1hcmtlci5jcHAgKi8sCiAJCQkJQzBF
MjA4QTAyOTM3OUM2RTAwQzBEMkQzIC8qIEFYVGV4dE1hcmtlci5oICovLAogCQkJCTQ4QzRFODND
MkIzNEQ4MzgwMDgzNDYwQSAvKiBBWFRleHRSdW4uY3BwICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWENvcmVPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhDb3JlT2JqZWN0LmgKaW5kZXggNDQxMDg0ZWNiODA1Li4zZmJjN2Y4ZGIy
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhDb3JlT2JqZWN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWENvcmVPYmplY3QuaApAQCAt
MjA1LDYgKzIwNSw3IEBAIGVudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVJvbGUgewogICAgIFByb2dy
ZXNzSW5kaWNhdG9yLAogICAgIFJhZGlvQnV0dG9uLAogICAgIFJhZGlvR3JvdXAsCisgICAgUmVt
b3RlRnJhbWUsCiAgICAgUm93SGVhZGVyLAogICAgIFJvdywKICAgICBSb3dHcm91cCwKQEAgLTQ0
Miw2ICs0NDMsOCBAQCBBTFdBWVNfSU5MSU5FIFN0cmluZyBhY2Nlc3NpYmlsaXR5Um9sZVRvU3Ry
aW5nKEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUpCiAgICAgICAgIHJldHVybiAiUmFkaW9CdXR0b24i
X3M7CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9Hcm91cDoKICAgICAgICAgcmV0
dXJuICJSYWRpb0dyb3VwIl9zOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJlbW90ZUZy
YW1lOgorICAgICAgICByZXR1cm4gIlJlbW90ZUZyYW1lIl9zOwogICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OlJvd0hlYWRlcjoKICAgICAgICAgcmV0dXJuICJSb3dIZWFkZXIiX3M7CiAgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Um93OgpAQCAtODE1LDYgKzgxOCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3dJbnN0YW5jZSgpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsSW5z
dGFuY2UoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQVhJc29sYXRlZE9iamVjdElu
c3RhbmNlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0FYUmVtb3RlRnJhbWUoKSBj
b25zdCA9IDA7CiAKICAgICBib29sIGlzSGVhZGluZygpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1
ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpIZWFkaW5nOyB9CiAgICAgdmlydHVhbCBib29sIGlz
TGluaygpIGNvbnN0ID0gMDsKQEAgLTkxOSw2ICs5MjMsMTIgQEAgcHVibGljOgogICAgIGJvb2wg
aXNUcmVlR3JpZCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpUcmVlR3JpZDsgfQogICAgIGJvb2wgaXNUcmVlSXRlbSgpIGNvbnN0IHsgcmV0dXJuIHJv
bGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlSXRlbTsgfQogICAgIGJvb2wgaXNT
Y3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6U2Nyb2xsQmFyOyB9CisgICAgYm9vbCBpc1JlbW90ZUZyYW1lKCkgY29uc3QgeyByZXR1cm4g
cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJlbW90ZUZyYW1lOyB9CisjaWYgUExB
VEZPUk0oQ09DT0EpCisgICAgdmlydHVhbCBSZXRhaW5QdHI8aWQ+IHJlbW90ZUZyYW1lUGxhdGZv
cm1FbGVtZW50KCkgY29uc3QgPSAwOworI2VuZGlmCisgICAgdmlydHVhbCBib29sIGhhc1JlbW90
ZUZyYW1lQ2hpbGQoKSBjb25zdCA9IDA7CisKICAgICBib29sIGlzQnV0dG9uKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBib29sIGlzTWV0ZXIoKSBjb25zdCA9IDA7CiAKQEAgLTExNTksNiArMTE2OSw4
IEBAIHB1YmxpYzoKICAgICAvLyBWaWV3cG9ydC1yZWxhdGl2ZSBtZWFucyB0aGF0IHdoZW4gdGhl
IHBhZ2Ugc2Nyb2xscywgdGhlIHBvcnRpb24gb2YgdGhlIHBhZ2UgaW4gdGhlIHZpZXdwb3J0IGNo
YW5nZXMsIGFuZCB0aHVzCiAgICAgLy8gYW55IHZpZXdwb3J0LXJlbGF0aXZlIHJlY3RzIGRvIHRv
byAoc2luY2UgdGhleSBhcmUgZWl0aGVyIGNsb3NlciB0byBvciBmYXJ0aGVyIGZyb20gdGhlIHZp
ZXdwb3J0IG9yaWdpbiBhZnRlciB0aGUgc2Nyb2xsKS4KICAgICB2aXJ0dWFsIEZsb2F0UG9pbnQg
c2NyZWVuUmVsYXRpdmVQb3NpdGlvbigpIGNvbnN0ID0gMDsKKyAgICAvLyBUaGlzIGlzIHRoZSBh
bW91bnQgdGhhdCB0aGUgUmVtb3RlRnJhbWUgaXMgb2Zmc2V0IGZyb20gaXRzIGNvbnRhaW5pbmcg
cGFyZW50LgorICAgIHZpcnR1YWwgSW50UG9pbnQgcmVtb3RlRnJhbWVPZmZzZXQoKSBjb25zdCA9
IDA7CiAKICAgICB2aXJ0dWFsIEZsb2F0UmVjdCBjb252ZXJ0RnJhbWVUb1NwYWNlKGNvbnN0IEZs
b2F0UmVjdCYsIEFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2UpIGNvbnN0ID0gMDsKICNpZiBQ
TEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhMb2dnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWExvZ2dlci5jcHAK
aW5kZXggYjZlMzA2Y2RkZWNmLi43YjM1YzhmOWQxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhMb2dnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhMb2dnZXIuY3BwCkBAIC04ODMsNiArODgzLDkgQEAgdm9pZCBzdHJlYW1BWENv
cmVPYmplY3QoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBBWENvcmVPYmplY3QmIG9iamVjdCwg
Y29uc3QgT3AKICAgICBpZiAob3B0aW9ucyAmIEFYU3RyZWFtT3B0aW9uczo6Um9sZSkKICAgICAg
ICAgc3RyZWFtLmR1bXBQcm9wZXJ0eSgicm9sZSIsIG9iamVjdC5yb2xlVmFsdWUoKSk7CiAKKyAg
ICBpZiAob2JqZWN0LnJlbmRlcmVyKCkpCisgICAgICAgIHN0cmVhbS5kdW1wUHJvcGVydHkoInJl
bmRlck5hbWUiLCBvYmplY3QucmVuZGVyZXIoKS0+cmVuZGVyTmFtZSgpKTsKKwogICAgIGlmIChv
cHRpb25zICYgQVhTdHJlYW1PcHRpb25zOjpQYXJlbnRJRCkgewogICAgICAgICBhdXRvKiBwYXJl
bnQgPSBvYmplY3QucGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgICAgIHN0cmVhbS5kdW1w
UHJvcGVydHkoInBhcmVudElEIiwgcGFyZW50ID8gcGFyZW50LT5vYmplY3RJRCgpIDogQVhJRCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNo
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmlu
ZGV4IDI4MGZhZDRmMjcwMS4uMWFjOTVmMmVhNmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRl
ICJBWElzb2xhdGVkT2JqZWN0LmgiCiAjaW5jbHVkZSAiQVhJc29sYXRlZFRyZWUuaCIKICNpbmNs
dWRlICJBWExvZ2dlci5oIgorI2luY2x1ZGUgIkFYUmVtb3RlRnJhbWUuaCIKICNpbmNsdWRlICJB
WFRleHRNYXJrZXIuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5QVJJQUdyaWQuaCIKICNpbmNs
dWRlICJBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmgiCkBAIC0xMDU0LDcgKzEwNTUsMTAgQEAg
QWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Y3JlYXRlKEFjY2Vzc2liaWxpdHlS
b2xlIHJvbGUpCiAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAogICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OlRhYmxlSGVhZGVyQ29udGFpbmVyOgogICAgICAgICBvYmogPSBBY2Nlc3NpYmls
aXR5VGFibGVIZWFkZXJDb250YWluZXI6OmNyZWF0ZSgpOwotICAgICAgICBicmVhazsgICAKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmVtb3RlRnJhbWU6Cisg
ICAgICAgIG9iaiA9IEFYUmVtb3RlRnJhbWU6OmNyZWF0ZSgpOworICAgICAgICBicmVhazsKICAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTbGlkZXJUaHVtYjoKICAgICAgICAgb2JqID0gQWNj
ZXNzaWJpbGl0eVNsaWRlclRodW1iOjpjcmVhdGUoKTsKICAgICAgICAgYnJlYWs7CkBAIC0xMzUw
LDYgKzEzNTQsMTUgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVSZWNvbXB1dGVDZWxsU2xv
dHMoQWNjZXNzaWJpbGl0eVRhYmxlJiBheFRhYmxlKQogI2VuZGlmCiB9CiAKK3ZvaWQgQVhPYmpl
Y3RDYWNoZTo6b25SZW1vdGVGcmFtZUluaXRpYWxpemVkKEFYUmVtb3RlRnJhbWUmIHJlbW90ZUZy
YW1lKQoreworI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCisgICAgdXBk
YXRlSXNvbGF0ZWRUcmVlKHJlbW90ZUZyYW1lLCBBWFByb3BlcnR5TmFtZTo6UmVtb3RlRnJhbWVQ
bGF0Zm9ybUVsZW1lbnQpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocmVtb3RlRnJhbWUpOwor
I2VuZGlmCit9CisKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQogdm9p
ZCBBWE9iamVjdENhY2hlOjpoYW5kbGVSb3dzcGFuQ2hhbmdlZChBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsJiBheENlbGwpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYT2JqZWN0Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RD
YWNoZS5oCmluZGV4IGQxMDQ5Y2M5YmMyMS4uMzhjOThhNDZlYTlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaApAQCAtNDcsNiArNDcsNyBAQCBjbGFz
cyBUZXh0U3RyZWFtOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEFYUmVtb3RlRnJh
bWU7CiBjbGFzcyBBY2Nlc3NpYmlsaXR5VGFibGU7CiBjbGFzcyBBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsOwogY2xhc3MgRG9jdW1lbnQ7CkBAIC0yNDYsNiArMjQ3LDcgQEAgcHVibGljOgogICAgIHZv
aWQgZGVmZXJOb2RlQWRkZWRPclJlbW92ZWQoTm9kZSopOwogICAgIHZvaWQgaGFuZGxlU2Nyb2xs
ZWRUb0FuY2hvcihjb25zdCBOb2RlKiBhbmNob3JOb2RlKTsKICAgICB2b2lkIG9uU2Nyb2xsYmFy
VXBkYXRlKFNjcm9sbFZpZXcqKTsKKyAgICB2b2lkIG9uUmVtb3RlRnJhbWVJbml0aWFsaXplZChB
WFJlbW90ZUZyYW1lJik7CiAKICAgICBib29sIGlzUmV0cmlldmluZ0N1cnJlbnRNb2RhbE5vZGUo
KSB7IHJldHVybiBtX2lzUmV0cmlldmluZ0N1cnJlbnRNb2RhbE5vZGU7IH0KICAgICBOb2RlKiBt
b2RhbE5vZGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhS
ZW1vdGVGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYUmVtb3RlRnJh
bWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uY2ZiZGVkZDk4
MWNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFJl
bW90ZUZyYW1lLmNwcApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDI0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkFYUmVtb3RlRnJhbWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitSZWY8QVhSZW1vdGVGcmFtZT4gQVhSZW1vdGVGcmFtZTo6Y3JlYXRlKCkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBBWFJlbW90ZUZyYW1lKTsKK30KKworTGF5b3V0UmVjdCBBWFJl
bW90ZUZyYW1lOjplbGVtZW50UmVjdCgpIGNvbnN0Cit7CisgICAgYXV0byogcGFyZW50ID0gcGFy
ZW50T2JqZWN0KCk7CisgICAgcmV0dXJuIHBhcmVudCA/IHBhcmVudC0+ZWxlbWVudFJlY3QoKSA6
IExheW91dFJlY3QoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFJlbW90ZUZyYW1lLmggYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYUmVtb3RlRnJhbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLjk0ZDJkZjAzMDRkMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhSZW1vdGVGcmFtZS5oCkBAIC0wLDAgKzEsNjEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlNb2Nr
T2JqZWN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVtb3RlRnJhbWU7CisK
K2NsYXNzIEFYUmVtb3RlRnJhbWUgZmluYWwgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eU1vY2tPYmpl
Y3QgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8QVhSZW1vdGVGcmFtZT4gY3JlYXRlKCk7CisK
KyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIGluaXRpYWxpemVQbGF0Zm9ybUVsZW1lbnRX
aXRoUmVtb3RlVG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBpbnQpOworICAgIHN0ZDo6
c3Bhbjxjb25zdCB1aW50OF90PiBnZW5lcmF0ZVJlbW90ZVRva2VuKCkgY29uc3Q7CisgICAgUmV0
YWluUHRyPGlkPiByZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQ7IH0KKyAgICBwaWRfdCBwcm9jZXNzSWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2Vzc0lkZW50aWZpZXI7IH0KKyNlbmRpZgorCitwcml2
YXRlOgorICAgIHZpcnR1YWwgfkFYUmVtb3RlRnJhbWUoKSA9IGRlZmF1bHQ7CisKKyAgICBBY2Nl
c3NpYmlsaXR5Um9sZSBkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpIHsgcmV0dXJuIEFjY2Vz
c2liaWxpdHlSb2xlOjpSZW1vdGVGcmFtZTsgfQorICAgIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNBWFJlbW90
ZUZyYW1lKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIExheW91dFJlY3QgZWxlbWVudFJl
Y3QoKSBjb25zdDsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFJldGFpblB0cjxpZD4gbV9y
ZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudDsKKyAgICBwaWRfdCBtX3Byb2Nlc3NJZGVudGlmaWVy
IHsgMCB9OworI2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfQUNDRVNTSUJJTElUWShBWFJlbW90ZUZyYW1lLCBpc0FYUmVtb3RlRnJh
bWUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuY3BwCmluZGV4IDNlMzJkYjA5M2FmYi4uZmQ2ZjdjNGUyNTU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAK
QEAgLTU0NCw3ICs1NDQsOSBAQCBGbG9hdFJlY3QgQWNjZXNzaWJpbGl0eU9iamVjdDo6Y29udmVy
dEZyYW1lVG9TcGFjZShjb25zdCBGbG9hdFJlY3QmIGZyYW1lUmVjdCwgQQogICAgIAogRmxvYXRS
ZWN0IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnJlbGF0aXZlRnJhbWUoKSBjb25zdAogewotICAgIHJl
dHVybiBjb252ZXJ0RnJhbWVUb1NwYWNlKGVsZW1lbnRSZWN0KCksIEFjY2Vzc2liaWxpdHlDb252
ZXJzaW9uU3BhY2U6OlBhZ2UpOworICAgIGF1dG8gcmVjdCA9IGVsZW1lbnRSZWN0KCk7CisgICAg
cmVjdC5tb3ZlQnkocmVtb3RlRnJhbWVPZmZzZXQoKSk7CisgICAgcmV0dXJuIGNvbnZlcnRGcmFt
ZVRvU3BhY2UocmVjdCwgQWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZTo6UGFnZSk7CiB9CiAK
IEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlPYmplY3Q6Om5leHRTaWJsaW5nVW5p
Z25vcmVkKGludCBsaW1pdCkgY29uc3QKQEAgLTIwODYsMTQgKzIwODgsMjMgQEAgY29uc3QgQWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXcqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFuY2VzdG9yQWNjZXNz
aWJpbGl0eVNjcm9sbFYKICNpZiBQTEFURk9STShDT0NPQSkKIFJlbW90ZUFYT2JqZWN0UmVmIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnJlbW90ZVBhcmVudE9iamVjdCgpIGNvbnN0CiB7Ci0gICAgaWYg
KGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKSkgewotICAgICAgICBpZiAoYXV0byog
ZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUoKSkKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS0+bG9h
ZGVyKCkuY2xpZW50KCkuYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpOwotICAgIH0KLSAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7Cisg
ICAgYXV0byogZnJhbWUgPSBkb2N1bWVudCA/IGRvY3VtZW50LT5mcmFtZSgpIDogbnVsbHB0cjsK
KyAgICByZXR1cm4gZnJhbWUgPyBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuYWNjZXNzaWJpbGl0
eVJlbW90ZU9iamVjdCgpIDogbnVsbHB0cjsKIH0KICNlbmRpZgogCitJbnRQb2ludCBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpyZW1vdGVGcmFtZU9mZnNldCgpIGNvbnN0Cit7CisjaWYgUExBVEZPUk0o
Q09DT0EpCisgICAgYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOworICAgIGF1dG8q
IGZyYW1lID0gZG9jdW1lbnQgPyBkb2N1bWVudC0+ZnJhbWUoKSA6IG51bGxwdHI7CisgICAgcmV0
dXJuIGZyYW1lID8gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmFjY2Vzc2liaWxpdHlSZW1vdGVG
cmFtZU9mZnNldCgpIDogSW50UG9pbnQoKTsKKyNlbHNlCisgICAgcmV0dXJuIEludFBvaW50KCk7
CisjZW5kaWYKK30KKwogRG9jdW1lbnQqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRvY3VtZW50KCkg
Y29uc3QKIHsKICAgICBhdXRvKiBmcmFtZVZpZXcgPSBkb2N1bWVudEZyYW1lVmlldygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaApp
bmRleCA0ZDIwZjU1YTU0NGMuLjM1OTVkMzFlNzFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTEwMiw2ICsxMDIsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wg
aXNBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBi
b29sIGlzQVhSZW1vdGVGcmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXdJbnN0YW5jZSgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNWR1Jv
b3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5VGFi
bGVJbnN0YW5jZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC00NjIsMTAg
KzQ2MywxNCBAQCBwdWJsaWM6CiAgICAgV2lkZ2V0KiB3aWRnZXRGb3JBdHRhY2htZW50Vmlldygp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICBib29sIGlzUGx1Z2luKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIEludFBvaW50IHJlbW90ZUZy
YW1lT2Zmc2V0KCkgY29uc3Qgb3ZlcnJpZGU7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmVt
b3RlQVhPYmplY3RSZWYgcmVtb3RlUGFyZW50T2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
RmxvYXRSZWN0IGNvbnZlcnRSZWN0VG9QbGF0Zm9ybVNwYWNlKGNvbnN0IEZsb2F0UmVjdCYsIEFj
Y2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2UpIGNvbnN0IG92ZXJyaWRlOworICAgIFJldGFpblB0
cjxpZD4gcmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBuaWw7IH0KICNlbmRpZgorICAgIGJvb2wgaGFzUmVtb3RlRnJhbWVDaGlsZCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisKICAgICBQYWdlKiBwYWdlKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgTG9jYWxG
cmFtZVZpZXcqIGRvY3VtZW50RnJhbWVWaWV3KCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmNwcAppbmRleCBlZThhYmVjM2Q3YjUuLjJmMTJlZjc1M2U0YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwCkBAIC0yNDEzLDcgKzI0MTMsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmFkZEF0dGFjaG1lbnRDaGlsZHJlbigpCiAKICAgICAvLyBMb2NhbEZyYW1lVmlldydzIG5l
ZWQgdG8gYmUgaW5zZXJ0ZWQgaW50byB0aGUgQVggaGllcmFyY2h5IHdoZW4gZW5jb3VudGVyZWQu
CiAgICAgV2lkZ2V0KiB3aWRnZXQgPSB3aWRnZXRGb3JBdHRhY2htZW50VmlldygpOwotICAgIGlm
ICghd2lkZ2V0IHx8ICF3aWRnZXQtPmlzTG9jYWxGcmFtZVZpZXcoKSkKKyAgICBpZiAoIXdpZGdl
dCB8fCAhKHdpZGdldC0+aXNMb2NhbEZyYW1lVmlldygpIHx8IHdpZGdldC0+aXNSZW1vdGVGcmFt
ZVZpZXcoKSkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBhZGRDaGlsZChheE9iamVjdENh
Y2hlKCktPmdldE9yQ3JlYXRlKHdpZGdldCkpOwpAQCAtMjU2OCw3ICsyNTY4LDcgQEAgdm9pZCBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRDaGlsZHJlbigpCiAgICAgICAgIGF1dG8gb3du
ZXJzID0gb2JqZWN0Lm93bmVycygpOwogICAgICAgICBpZiAob3duZXJzLnNpemUoKSAmJiAhb3du
ZXJzLmNvbnRhaW5zKHRoaXMpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKwogICAg
ICAgICBhZGRDaGlsZCgmb2JqZWN0KTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwCmluZGV4IDJi
YmMzMDg3YjlmOC4uNTIxMjIyYWY2MDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcApAQCAtMjcsMTAgKzI3
LDEyIEBACiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaCIKIAogI2luY2x1ZGUg
IkFYT2JqZWN0Q2FjaGUuaCIKKyNpbmNsdWRlICJBWFJlbW90ZUZyYW1lLmgiCiAjaW5jbHVkZSAi
QWNjZXNzaWJpbGl0eVNjcm9sbGJhci5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkxvY2FsRnJhbWUuaCIKICNpbmNsdWRlICJMb2NhbEZyYW1lVmlldy5o
IgorI2luY2x1ZGUgIlJlbW90ZUZyYW1lVmlldy5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQu
aCIKICNpbmNsdWRlICJXaWRnZXQuaCIKIApAQCAtNTIsNiArNTQsMTYgQEAgQWNjZXNzaWJpbGl0
eVNjcm9sbFZpZXc6On5BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldygpCiB2b2lkIEFjY2Vzc2liaWxp
dHlTY3JvbGxWaWV3OjpkZXRhY2hSZW1vdGVQYXJ0cyhBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5
cGUgZGV0YWNobWVudFR5cGUpCiB7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZGV0YWNoUmVt
b3RlUGFydHMoZGV0YWNobWVudFR5cGUpOworCisgICAgYXV0byogcmVtb3RlRnJhbWVWaWV3ID0g
ZHluYW1pY0Rvd25jYXN0PFJlbW90ZUZyYW1lVmlldz4obV9zY3JvbGxWaWV3LmdldCgpKTsKKyAg
ICBpZiAocmVtb3RlRnJhbWVWaWV3ICYmIG1fcmVtb3RlRnJhbWUgJiYgKGRldGFjaG1lbnRUeXBl
ID09IEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZTo6RWxlbWVudERlc3Ryb3llZCB8fCBkZXRh
Y2htZW50VHlwZSA9PSBBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGU6OkNhY2hlRGVzdHJveWVk
KSkgeworI2lmIFBMQVRGT1JNKE1BQykKKyAgICAgICAgYXV0byYgcmVtb3RlRnJhbWUgPSByZW1v
dGVGcmFtZVZpZXctPmZyYW1lKCk7CisgICAgICAgIHJlbW90ZUZyYW1lLnVuYmluZFJlbW90ZUFj
Y2Vzc2liaWxpdHlGcmFtZXMobV9yZW1vdGVGcmFtZS0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7Cisj
ZW5kaWYKKyAgICAgICAgbV9yZW1vdGVGcmFtZSA9IG51bGxwdHI7CisgICAgfQorCiAgICAgbV9z
Y3JvbGxWaWV3ID0gbnVsbHB0cjsKICAgICBtX2ZyYW1lT3duZXJFbGVtZW50ID0gbnVsbHB0cjsK
IH0KQEAgLTE3Nyw4ICsxODksMTAgQEAgQWNjZXNzaWJpbGl0eVNjcm9sbGJhciogQWNjZXNzaWJp
bGl0eVNjcm9sbFZpZXc6OmFkZENoaWxkU2Nyb2xsYmFyKFNjcm9sbGJhciogc2MKIHZvaWQgQWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmNsZWFyQ2hpbGRyZW4oKQogewogICAgIEFjY2Vzc2liaWxp
dHlPYmplY3Q6OmNsZWFyQ2hpbGRyZW4oKTsKKwogICAgIG1fdmVydGljYWxTY3JvbGxiYXIgPSBu
dWxscHRyOwogICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhciA9IG51bGxwdHI7CisKICAgICBtX2No
aWxkcmVuRGlydHkgPSBmYWxzZTsKIH0KIApAQCAtMTkxLDExICsyMDUsNDUgQEAgYm9vbCBBY2Nl
c3NpYmlsaXR5U2Nyb2xsVmlldzo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25z
dAogICAgIHJldHVybiB3ZWJBcmVhLT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCk7CiB9CiAKK3Zv
aWQgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmFkZFJlbW90ZUZyYW1lQ2hpbGQoKQoreworICAg
IGF1dG8qIHJlbW90ZUZyYW1lVmlldyA9IGR5bmFtaWNEb3duY2FzdDxSZW1vdGVGcmFtZVZpZXc+
KG1fc2Nyb2xsVmlldy5nZXQoKSk7CisgICAgaWYgKCFyZW1vdGVGcmFtZVZpZXcpCisgICAgICAg
IHJldHVybjsKKworICAgIFdlYWtQdHIgY2FjaGUgPSBheE9iamVjdENhY2hlKCk7CisgICAgaWYg
KCFjYWNoZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX3JlbW90ZUZyYW1lKSB7Cisg
ICAgICAgIC8vIE1ha2UgdGhlIGZhdXggZWxlbWVudCB0aGF0IHJlcHJlc2VudHMgdGhlIHJlbW90
ZSB0cmFuc2ZlciBlbGVtZW50IGZvciBBWC4KKyAgICAgICAgbV9yZW1vdGVGcmFtZSA9IGRvd25j
YXN0PEFYUmVtb3RlRnJhbWU+KGNhY2hlLT5jcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGU6OlJlbW90
ZUZyYW1lKSk7CisgICAgICAgIG1fcmVtb3RlRnJhbWUtPnNldFBhcmVudCh0aGlzKTsKKworI2lm
IFBMQVRGT1JNKE1BQykKKyAgICAgICAgLy8gR2VuZXJhdGUgYSBuZXcgdG9rZW4gYW5kIHBhc3Mg
aXQgYmFjayB0byB0aGUgb3RoZXIgcmVtb3RlIGZyYW1lIHNvIGl0IGNhbiBiaW5kIHRoZXNlIG9i
amVjdHMgdG9nZXRoZXIuCisgICAgICAgIGF1dG8gZ2VuZXJhdGVkVG9rZW4gPSBtX3JlbW90ZUZy
YW1lLT5nZW5lcmF0ZVJlbW90ZVRva2VuKCk7CisgICAgICAgIGF1dG8mIHJlbW90ZUZyYW1lID0g
cmVtb3RlRnJhbWVWaWV3LT5mcmFtZSgpOworICAgICAgICByZW1vdGVGcmFtZS5iaW5kUmVtb3Rl
QWNjZXNzaWJpbGl0eUZyYW1lcyhnZXRwaWQoKSwgZ2VuZXJhdGVkVG9rZW4sIFt0aGlzLCAmcmVt
b3RlRnJhbWUsIHByb3RlY3RlZEFjY2Vzc2JpbGl0eVJlbW90ZUZyYW1lID0gUmVmUHRyIHsgbV9y
ZW1vdGVGcmFtZSB9XSAoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHRva2VuLCBpbnQgcHJvY2Vz
c0lkZW50aWZpZXIpIG11dGFibGUgeworICAgICAgICAgICAgcHJvdGVjdGVkQWNjZXNzYmlsaXR5
UmVtb3RlRnJhbWUtPmluaXRpYWxpemVQbGF0Zm9ybUVsZW1lbnRXaXRoUmVtb3RlVG9rZW4odG9r
ZW4sIHByb2Nlc3NJZGVudGlmaWVyKTsKKworICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSByZW1v
dGUgc2lkZSB3aXRoIHRoZSBvZmZzZXQgb2YgdGhpcyBvYmplY3Qgc28gaXQgY2FuIGNhbGN1bGF0
ZSBmcmFtZXMgY29ycmVjdGx5LgorICAgICAgICAgICAgYXV0byBsb2NhdGlvbiA9IGVsZW1lbnRS
ZWN0KCkubG9jYXRpb24oKTsKKyAgICAgICAgICAgIHJlbW90ZUZyYW1lLnVwZGF0ZVJlbW90ZUZy
YW1lQWNjZXNzaWJpbGl0eU9mZnNldChmbG9vcmVkSW50UG9pbnQobG9jYXRpb24pKTsKKyAgICAg
ICAgfSk7CisjZW5kaWYKKyAgICB9IGVsc2UKKyAgICAgICAgbV9yZW1vdGVGcmFtZS0+c2V0UGFy
ZW50KHRoaXMpOworCisgICAgYWRkQ2hpbGQobV9yZW1vdGVGcmFtZS5nZXQoKSk7Cit9CisKIHZv
aWQgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmFkZENoaWxkcmVuKCkKIHsKICAgICBBU1NFUlQo
IW1fY2hpbGRyZW5Jbml0aWFsaXplZCk7CiAgICAgbV9jaGlsZHJlbkluaXRpYWxpemVkID0gdHJ1
ZTsKIAorICAgIGFkZFJlbW90ZUZyYW1lQ2hpbGQoKTsKICAgICBhZGRDaGlsZCh3ZWJBcmVhT2Jq
ZWN0KCkpOwogICAgIHVwZGF0ZVNjcm9sbGJhcnMoKTsKIH0KQEAgLTIwMyw3ICsyNTEsNyBAQCB2
b2lkIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjphZGRDaGlsZHJlbigpCiBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6d2ViQXJlYU9iamVjdCgpIGNvbnN0CiB7
CiAgICAgYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOwotICAgIGlmICghZG9jdW1l
bnQgfHwgIWRvY3VtZW50LT5oYXNMaXZpbmdSZW5kZXJUcmVlKCkpCisgICAgaWYgKCFkb2N1bWVu
dCB8fCAhZG9jdW1lbnQtPmhhc0xpdmluZ1JlbmRlclRyZWUoKSB8fCBtX3JlbW90ZUZyYW1lKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmIChhdXRvKiBjYWNoZSA9IGF4T2JqZWN0
Q2FjaGUoKSkKQEAgLTIzNCw5ICsyODIsMTUgQEAgTGF5b3V0UmVjdCBBY2Nlc3NpYmlsaXR5U2Ny
b2xsVmlldzo6ZWxlbWVudFJlY3QoKSBjb25zdAogCiBEb2N1bWVudCogQWNjZXNzaWJpbGl0eVNj
cm9sbFZpZXc6OmRvY3VtZW50KCkgY29uc3QKIHsKLSAgICBpZiAoYXV0byogZnJhbWVWaWV3ID0g
ZHluYW1pY0Rvd25jYXN0PExvY2FsRnJhbWVWaWV3PihtX3Njcm9sbFZpZXcuZ2V0KCkpKSB7Cisg
ICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGR5bmFtaWNEb3duY2FzdDxMb2NhbEZyYW1lVmlldz4o
bV9zY3JvbGxWaWV3LmdldCgpKSkKICAgICAgICAgcmV0dXJuIGZyYW1lVmlldy0+ZnJhbWUoKS5k
b2N1bWVudCgpOworCisgICAgLy8gRm9yIHRoZSBSZW1vdGVGcmFtZVZpZXcgY2FzZSwgd2UgbmVl
ZCB0byByZXR1cm4gdGhlIGRvY3VtZW50IG9mIG91ciBob3N0aW5nIHBhcmVudCBzbyBheE9iamVj
dENhY2hlKCkgcmVzb2x2ZXMgY29ycmVjdGx5LgorICAgIGlmIChhdXRvKiByZW1vdGVGcmFtZVZp
ZXcgPSBkeW5hbWljRG93bmNhc3Q8UmVtb3RlRnJhbWVWaWV3PihtX3Njcm9sbFZpZXcuZ2V0KCkp
KSB7CisgICAgICAgIGlmIChhdXRvKiBvd25lciA9IHJlbW90ZUZyYW1lVmlldy0+ZnJhbWUoKS5v
d25lckVsZW1lbnQoKSkKKyAgICAgICAgICAgIHJldHVybiAmKG93bmVyLT5kb2N1bWVudCgpKTsK
ICAgICB9CisKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdDo6ZG9jdW1lbnQoKTsKIH0K
IApAQCAtMjU5LDggKzMxMywxMCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldzo6cGFyZW50T2JqZWN0KCkgY29uc3QKICAgICBXZWFrUHRyIG93bmVyID0gbV9m
cmFtZU93bmVyRWxlbWVudC5nZXQoKTsKICAgICBpZiAoYXV0byogbG9jYWxGcmFtZVZpZXcgPSBk
eW5hbWljRG93bmNhc3Q8TG9jYWxGcmFtZVZpZXc+KG1fc2Nyb2xsVmlldy5nZXQoKSkpCiAgICAg
ICAgIG93bmVyID0gbG9jYWxGcmFtZVZpZXctPmZyYW1lKCkub3duZXJFbGVtZW50KCk7CisgICAg
ZWxzZSBpZiAoYXV0byogcmVtb3RlRnJhbWVWaWV3ID0gZHluYW1pY0Rvd25jYXN0PFJlbW90ZUZy
YW1lVmlldz4obV9zY3JvbGxWaWV3LmdldCgpKSkKKyAgICAgICAgb3duZXIgPSByZW1vdGVGcmFt
ZVZpZXctPmZyYW1lKCkub3duZXJFbGVtZW50KCk7CiAKLSAgICBpZiAoY2FjaGUgJiYgb3duZXIg
JiYgb3duZXItPnJlbmRlcmVyKCkpCisgICAgaWYgKG93bmVyICYmIG93bmVyLT5yZW5kZXJlcigp
KQogICAgICAgICByZXR1cm4gY2FjaGUtPmdldE9yQ3JlYXRlKG93bmVyLmdldCgpKTsKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaAppbmRleCA1NTcwNDQ2NzFjN2QuLjUyNWFjNzgz
ZmJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5U2Nyb2xsVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVNjcm9sbFZpZXcuaApAQCAtMzAsNiArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgCitjbGFzcyBBWFJlbW90ZUZyYW1lOwogY2xhc3MgQWNjZXNzaWJpbGl0eVNjcm9s
bGJhcjsKIGNsYXNzIFNjcm9sbGJhcjsKIGNsYXNzIFNjcm9sbFZpZXc7CkBAIC01NCw3ICs1NSw4
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlld0luc3RhbmNl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgaXNFbmFibGVkKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIAorICAgIGJvb2wgaGFzUmVtb3Rl
RnJhbWVDaGlsZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcmVtb3RlRnJhbWU7IH0KKwogICAg
IGJvb2wgaXNBdHRhY2htZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUGxhdGZvcm1XaWRnZXQg
cGxhdGZvcm1XaWRnZXQoKSBjb25zdCBvdmVycmlkZTsKICAgICBXaWRnZXQqIHdpZGdldEZvckF0
dGFjaG1lbnRWaWV3KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gY3VycmVudFNjcm9sbFZpZXco
KTsgfQpAQCAtNjksNiArNzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0Rm9jdXNlZChib29s
KSBvdmVycmlkZTsKICAgICBib29sIGNhblNldEZvY3VzQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBpc0ZvY3VzZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFkZFJl
bW90ZUZyYW1lQ2hpbGQoKTsKIAogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIExvY2FsRnJhbWVWaWV3KiBkb2N1bWVudEZyYW1lVmlldygpIGNvbnN0IG92ZXJy
aWRlOwpAQCAtODUsNiArODgsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5
T2JqZWN0PiBtX2hvcml6b250YWxTY3JvbGxiYXI7CiAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlP
YmplY3Q+IG1fdmVydGljYWxTY3JvbGxiYXI7CiAgICAgYm9vbCBtX2NoaWxkcmVuRGlydHk7Cisg
ICAgUmVmUHRyPEFYUmVtb3RlRnJhbWU+IG1fcmVtb3RlRnJhbWU7CiB9OwogICAgIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuY3BwCmluZGV4IDVkZTk3
MGYxZjcwZC4uNTE4N2IyZmEzNTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuY3BwCkBA
IC0zNzAsNiArMzcwLDcgQEAgc3RhdGljIEF0c3BpOjpSb2xlIGF0c3BpUm9sZShBY2Nlc3NpYmls
aXR5Um9sZSByb2xlKQogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlN1bW1hcnk6CiAgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFibGVIZWFkZXJDb250YWluZXI6CiAgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6U3VnZ2VzdGlvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpSZW1vdGVGcmFtZToKICAgICAgICAgcmV0dXJuIEF0c3BpOjpSb2xlOjpVbmtub3duOwogICAg
IC8vIEFkZCBtb3N0IG5ldyByb2xlcyBhYm92ZS4gVGhlIHJlbGVhc2UgYXNzZXJ0IGlzIGZvciBy
b2xlcyB0aGF0IGFyZSBoYW5kbGVkIHNwZWNpYWxseS4KICAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpMaXN0TWFya2VyOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQpp
bmRleCAyZjI5YjcyZmZlN2UuLjkyNDNhZDZiZDM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJJT1MubW0KQEAgLTExMTIsNiArMTExMiw3IEBAIHN0YXRpYyBBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciAqYW5jZXN0b3JXaXRoUm9sZShjb25zdCBBWENvcmVPYmplY3QmIGRl
c2NlbmRhCiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6SWdub3JlZDoKICAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpMaW5lQnJlYWs6CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
UHJlc2VudGF0aW9uYWw6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmVtb3RlRnJhbWU6
CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bjoKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKaW5kZXggMTAxNDU0NjI3OGYz
Li4zNDJkNGM3MmU2NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCkBAIC0zNzgsNiAr
Mzc4LDEwIEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoY29u
c3QgUmVmPEFjY2Vzc2liaWxpdHlPYmplY3Q+JiBheE9iCiAjZW5kaWYKIAogICAgIHNldE9iamVj
dFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJbnRlcm5hbExpbmtFbGVtZW50LCBvYmplY3QuaW50
ZXJuYWxMaW5rRWxlbWVudCgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SGFz
UmVtb3RlRnJhbWVDaGlsZCwgb2JqZWN0Lmhhc1JlbW90ZUZyYW1lQ2hpbGQoKSk7CisgICAgLy8g
RG9uJ3QgZHVwbGljYXRlIHRoZSByZW1vdGVGcmFtZU9mZnNldCBmb3IgZXZlcnkgb2JqZWN0LiBK
dXN0IHN0b3JlIGluIHRoZSBXZWJBcmVhLgorICAgIGlmIChvYmplY3QuaXNXZWJBcmVhKCkpCisg
ICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpSZW1vdGVGcmFtZU9mZnNldCwgb2Jq
ZWN0LnJlbW90ZUZyYW1lT2Zmc2V0KCkpOwogCiAgICAgaW5pdGlhbGl6ZVBsYXRmb3JtUHJvcGVy
dGllcyhheE9iamVjdCk7CiB9CkBAIC00NjQsNiArNDY4LDcgQEAgdm9pZCBBWElzb2xhdGVkT2Jq
ZWN0OjpzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEFYUHJvcGVydHlW
YWx1ZVYKICAgICAgICAgW10oT3B0aW9uU2V0PEFYQW5jZXN0b3JGbGFnPiYgdHlwZWRWYWx1ZSkg
eyByZXR1cm4gdHlwZWRWYWx1ZS5pc0VtcHR5KCk7IH0sCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgICAgIFtdKFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+JiB0eXBlZFZhbHVlKSB7IHJl
dHVybiAhdHlwZWRWYWx1ZTsgfSwKKyAgICAgICAgW10oUmV0YWluUHRyPGlkPiYgdHlwZWRWYWx1
ZSkgeyByZXR1cm4gIXR5cGVkVmFsdWU7IH0sCiAjZW5kaWYKICAgICAgICAgW10oSW5zaWRlTGlu
ayYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZSA9PSBJbnNpZGVMaW5rKCk7IH0sCiAg
ICAgICAgIFtdKFZlY3RvcjxWZWN0b3I8QVhJRD4+JiB0eXBlZFZhbHVlKSB7IHJldHVybiB0eXBl
ZFZhbHVlLmlzRW1wdHkoKTsgfSwKQEAgLTEyMDYsNiArMTIxMSwyMSBAQCBMYXlvdXRSZWN0IEFY
SXNvbGF0ZWRPYmplY3Q6OmVsZW1lbnRSZWN0KCkgY29uc3QKICAgICB9KTsKIH0KIAorSW50UG9p
bnQgQVhJc29sYXRlZE9iamVjdDo6cmVtb3RlRnJhbWVPZmZzZXQoKSBjb25zdAoreworICAgIGF1
dG8qIHdlYkFyZWEgPSBBY2Nlc3NpYmlsaXR5OjpmaW5kQW5jZXN0b3I8QVhJc29sYXRlZE9iamVj
dD4oKnRoaXMsIHRydWUsIFtdIChjb25zdCBhdXRvJiBvYmplY3QpIHsKKyAgICAgICAgcmV0dXJu
IG9iamVjdC5pc1dlYkFyZWEoKTsKKyAgICB9KTsKKworICAgIGlmICghd2ViQXJlYSkKKyAgICAg
ICAgcmV0dXJuIHsgfTsKKworICAgIGlmIChhdXRvIHBvaW50ID0gd2ViQXJlYS0+b3B0aW9uYWxB
dHRyaWJ1dGVWYWx1ZTxJbnRQb2ludD4oQVhQcm9wZXJ0eU5hbWU6OlJlbW90ZUZyYW1lT2Zmc2V0
KSkKKyAgICAgICAgcmV0dXJuICpwb2ludDsKKworICAgIHJldHVybiB7IH07Cit9CisKIEZsb2F0
UG9pbnQgQVhJc29sYXRlZE9iamVjdDo6c2NyZWVuUmVsYXRpdmVQb3NpdGlvbigpIGNvbnN0CiB7
CiAgICAgaWYgKGF1dG8gcG9pbnQgPSBvcHRpb25hbEF0dHJpYnV0ZVZhbHVlPEZsb2F0UG9pbnQ+
KEFYUHJvcGVydHlOYW1lOjpTY3JlZW5SZWxhdGl2ZVBvc2l0aW9uKSkKQEAgLTEyMjksMjIgKzEy
NDksMjMgQEAgRmxvYXRQb2ludCBBWElzb2xhdGVkT2JqZWN0OjpzY3JlZW5SZWxhdGl2ZVBvc2l0
aW9uKCkgY29uc3QKIAogRmxvYXRSZWN0IEFYSXNvbGF0ZWRPYmplY3Q6OnJlbGF0aXZlRnJhbWUo
KSBjb25zdAogeworICAgIEZsb2F0UmVjdCByZWxhdGl2ZUZyYW1lOworCiAgICAgaWYgKGF1dG8g
Y2FjaGVkUmVsYXRpdmVGcmFtZSA9IG9wdGlvbmFsQXR0cmlidXRlVmFsdWU8SW50UmVjdD4oQVhQ
cm9wZXJ0eU5hbWU6OlJlbGF0aXZlRnJhbWUpKSB7CiAgICAgICAgIC8vIFdlIHNob3VsZCBub3Qg
aGF2ZSBjYWNoZWQgYSByZWxhdGl2ZSBmcmFtZSBmb3IgZWxlbWVudHMgdGhhdCBnZXQgdGhlaXIg
Z2VvbWV0cnkgZnJvbSB0aGVpciBjaGlsZHJlbi4KICAgICAgICAgQVNTRVJUKCFtX2dldHNHZW9t
ZXRyeUZyb21DaGlsZHJlbik7Ci0gICAgICAgIHJldHVybiAqY2FjaGVkUmVsYXRpdmVGcmFtZTsK
LSAgICB9Ci0KLSAgICBpZiAobV9nZXRzR2VvbWV0cnlGcm9tQ2hpbGRyZW4pIHsKKyAgICAgICAg
cmVsYXRpdmVGcmFtZSA9ICpjYWNoZWRSZWxhdGl2ZUZyYW1lOworICAgIH0gZWxzZSBpZiAobV9n
ZXRzR2VvbWV0cnlGcm9tQ2hpbGRyZW4pIHsKICAgICAgICAgYXV0byBmcmFtZSA9IGVuY2xvc2lu
Z0ludFJlY3QocmVsYXRpdmVGcmFtZUZyb21DaGlsZHJlbigpKTsKICAgICAgICAgaWYgKCFmcmFt
ZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gZnJhbWU7CisgICAgICAgICAgICByZWxh
dGl2ZUZyYW1lID0gZnJhbWU7CiAgICAgICAgIC8vIEVpdGhlciB3ZSBoYWQgbm8gY2hpbGRyZW4s
IG9yIG91ciBjaGlsZHJlbiBoYWQgZW1wdHkgZnJhbWVzLiBUaGUgcmlnaHQgdGhpbmcgdG8gZG8g
d291bGQgYmUgdG8gcmV0dXJuCiAgICAgICAgIC8vIGEgcmVjdCBhdCB0aGUgcG9zaXRpb24gb2Yg
dGhlIG5lYXJlc3QgcmVuZGVyIHRyZWUgYW5jZXN0b3Igd2l0aCBzb21lIG1hZGUtdXAgc2l6ZSAo
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmJvdW5kaW5nQm94UmVjdCBkb2VzIHRoaXMpLgogICAg
ICAgICAvLyBIb3dldmVyLCB3ZSBkb24ndCBoYXZlIGFjY2VzcyB0byB0aGUgcmVuZGVyIHRyZWUg
aW4gdGhpcyBjb250ZXh0IChvbmx5IHRoZSBBWCBpc29sYXRlZCB0cmVlLCB3aGljaCBpcyB0b28g
c3BhcnNlIGZvciB0aGlzIHB1cnBvc2UpLCBzbwogICAgICAgICAvLyB1bnRpbCB3ZSBjYWNoZSB0
aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIGxldCdzIGdvIHRvIHRoZSBtYWluLXRocmVhZC4KICAg
ICB9IGVsc2UgaWYgKHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpDb2x1bW4gfHwg
cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRhYmxlSGVhZGVyQ29udGFpbmVyKQot
ICAgICAgICByZXR1cm4gZXhwb3NlZFRhYmxlQW5jZXN0b3IoKSA/IHJlbGF0aXZlRnJhbWVGcm9t
Q2hpbGRyZW4oKSA6IEZsb2F0UmVjdCgpOworICAgICAgICByZWxhdGl2ZUZyYW1lID0gZXhwb3Nl
ZFRhYmxlQW5jZXN0b3IoKSA/IHJlbGF0aXZlRnJhbWVGcm9tQ2hpbGRyZW4oKSA6IEZsb2F0UmVj
dCgpOworCiAKICAgICAvLyBNb2NrIG9iamVjdHMgYW5kIFNWRyBvYmplY3RzIG5lZWQgdXNlIHRo
ZSBtYWluIHRocmVhZCBzaW5jZSB0aGV5IGRvIG5vdCBoYXZlIHJlbmRlciBub2RlcyBhbmQgYXJl
IG5vdCBwYWludGVkIHdpdGggbGF5ZXJzLCByZXNwZWN0aXZlbHkuCiAgICAgLy8gRklYTUU6IFJl
bW92ZSBpc05vbkxheWVyU1ZHT2JqZWN0IHdoZW4gTEJTRSBpcyBlbmFibGVkICYgU1ZHIGZyYW1l
cyBhcmUgY2FjaGVkLgpAQCAtMTI2Niw2ICsxMjg3LDcgQEAgRmxvYXRSZWN0IEFYSXNvbGF0ZWRP
YmplY3Q6OnJlbGF0aXZlRnJhbWUoKSBjb25zdAogICAgIGlmIChhbmNlc3RvciAmJiBmcmFtZVJl
Y3QubG9jYXRpb24oKSA9PSBGbG9hdFBvaW50KCkpCiAgICAgICAgIGZyYW1lUmVjdC5zZXRMb2Nh
dGlvbihhbmNlc3Rvci0+cmVsYXRpdmVGcmFtZSgpLmxvY2F0aW9uKCkpOwogCisgICAgZnJhbWVS
ZWN0Lm1vdmVCeSh7IHJlbW90ZUZyYW1lT2Zmc2V0KCkgfSk7CiAgICAgcmV0dXJuIGZyYW1lUmVj
dDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCmluZGV4IGQyYTY2YzJmNTNlNC4uZGU4Mjdk
NWZlMDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVk
dHJlZS9BWElzb2xhdGVkT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYg
RU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKIAogI2luY2x1ZGUgIkFYQ29yZU9i
amVjdC5oIgorI2luY2x1ZGUgIkFYSXNvbGF0ZWRUcmVlLmgiCiAjaW5jbHVkZSAiQVhPYmplY3RD
YWNoZS5oIgogI2luY2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgpA
QCAtMjE1LDYgKzIxNiw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0ZpbGVVcGxvYWRCdXR0b24o
KSBjb25zdCBmaW5hbCB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6
OklzRmlsZVVwbG9hZEJ1dHRvbik7IH0KICAgICBib29sIGlzTWV0ZXIoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWV0ZXIpOyB9Owog
ICAgIEZsb2F0UG9pbnQgc2NyZWVuUmVsYXRpdmVQb3NpdGlvbigpIGNvbnN0IGZpbmFsOworICAg
IEludFBvaW50IHJlbW90ZUZyYW1lT2Zmc2V0KCkgY29uc3QgZmluYWw7CiAgICAgRmxvYXRSZWN0
IHJlbGF0aXZlRnJhbWUoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGhhc0NhY2hlZFJlbGF0aXZl
RnJhbWUoKSBjb25zdCB7IHJldHVybiBvcHRpb25hbEF0dHJpYnV0ZVZhbHVlPEludFJlY3Q+KEFY
UHJvcGVydHlOYW1lOjpSZWxhdGl2ZUZyYW1lKS5oYXNfdmFsdWUoKTsgfQogI2lmIFBMQVRGT1JN
KE1BQykKQEAgLTI2Myw3ICsyNjUsNyBAQCBwcml2YXRlOgogICAgIEFYSXNvbGF0ZWRPYmplY3Qq
IGFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3QgZmluYWw7CiAgICAg
QVhJc29sYXRlZE9iamVjdCogZm9jdXNlZFVJRWxlbWVudCgpIGNvbnN0IGZpbmFsOwogICAgIEFY
Q29yZU9iamVjdCogaW50ZXJuYWxMaW5rRWxlbWVudCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG9i
amVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJbnRlcm5hbExpbmtFbGVtZW50KTsg
fQotICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciByYWRpb0J1dHRvbkdyb3VwKCkgY29u
c3QgeyByZXR1cm4gdHJlZSgpLT5vYmplY3RzRm9ySURzKHZlY3RvckF0dHJpYnV0ZVZhbHVlPEFY
SUQ+KEFYUHJvcGVydHlOYW1lOjpSYWRpb0J1dHRvbkdyb3VwKSk7IH0KKyAgICBBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3IgcmFkaW9CdXR0b25Hcm91cCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IHRyZWUoKS0+b2JqZWN0c0ZvcklEcyh2ZWN0b3JBdHRyaWJ1dGVWYWx1ZTxBWElEPihBWFByb3Bl
cnR5TmFtZTo6UmFkaW9CdXR0b25Hcm91cCkpOyB9CiAgICAgQVhJc29sYXRlZE9iamVjdCogc2Ny
b2xsQmFyKEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5n
IHBsYWNlaG9sZGVyVmFsdWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVW
YWx1ZShBWFByb3BlcnR5TmFtZTo6UGxhY2Vob2xkZXJWYWx1ZSk7IH0KICAgICBTdHJpbmcgZXhw
YW5kZWRUZXh0VmFsdWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1
ZShBWFByb3BlcnR5TmFtZTo6RXhwYW5kZWRUZXh0VmFsdWUpOyB9CkBAIC00NTYsNyArNDU4LDcg
QEAgcHJpdmF0ZToKICAgICBib29sIGlzQWNjZXNzaWJpbGl0eUFSSUFHcmlkSW5zdGFuY2UoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5QVJJ
QUdyaWRSb3dJbnN0YW5jZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9v
bCBpc0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGxJbnN0YW5jZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIGZhbHNlOyB9Ci0KKyAgICBib29sIGlzQVhSZW1vdGVGcmFtZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc05hdGl2ZVRleHRDb250cm9sKCkgY29uc3QgZmlu
YWw7CiAgICAgYm9vbCBpc0xpc3RCb3hPcHRpb24oKSBjb25zdCBmaW5hbDsKICAgICBib29sIGlz
TW9ja09iamVjdCgpIGNvbnN0IGZpbmFsOwpAQCAtNTM3LDcgKzUzOSw5IEBAIHByaXZhdGU6CiAg
ICAgU3RyaW5nIG5hbWVBdHRyaWJ1dGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdHJpbmdBdHRy
aWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6TmFtZUF0dHJpYnV0ZSk7IH0KICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICBib29sIGhhc0FwcGxlUERGQW5ub3RhdGlvbkF0dHJpYnV0ZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SGFzQXBw
bGVQREZBbm5vdGF0aW9uQXR0cmlidXRlKTsgfQorICAgIFJldGFpblB0cjxpZD4gcmVtb3RlRnJh
bWVQbGF0Zm9ybUVsZW1lbnQoKSBjb25zdCBmaW5hbDsKICNlbmRpZgorICAgIGJvb2wgaGFzUmVt
b3RlRnJhbWVDaGlsZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShB
WFByb3BlcnR5TmFtZTo6SGFzUmVtb3RlRnJhbWVDaGlsZCk7IH0KIAogI2lmIFBMQVRGT1JNKENP
Q09BKSAmJiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICBWZWN0b3I8UmV0YWluUHRyPGlkPj4g
bW9kZWxFbGVtZW50Q2hpbGRyZW4oKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAppbmRl
eCA2OTY2NTg0NDhmNjUuLjNhY2MxOTk4YjFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcApA
QCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQVhJc29sYXRlZE9iamVjdC5oIgogI2luY2x1
ZGUgIkFYTG9nZ2VyLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlLmgiCiAjaW5jbHVk
ZSAiQWNjZXNzaWJpbGl0eVRhYmxlUm93LmgiCiAjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24uaCIK
ICNpbmNsdWRlICJMb2NhbEZyYW1lVmlldy5oIgpAQCAtMjI1LDQ2ICsyMjYsMjYgQEAgUmVmUHRy
PEFYSXNvbGF0ZWRPYmplY3Q+IEFYSXNvbGF0ZWRUcmVlOjpvYmplY3RGb3JJRChjb25zdCBBWElE
IGF4SUQpIGNvbnN0CiAgICAgcmV0dXJuIGF4SUQuaXNWYWxpZCgpID8gbV9yZWFkZXJUaHJlYWRO
b2RlTWFwLmdldChheElEKSA6IG51bGxwdHI7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFU+Ci1W
ZWN0b3I8UmVmUHRyPEFYQ29yZU9iamVjdD4+IEFYSXNvbGF0ZWRUcmVlOjpvYmplY3RzRm9ySURz
KGNvbnN0IFUmIGF4SURzKQorUmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+IEFYSXNvbGF0ZWRUcmVl
OjpyZXRyaWV2ZU9iamVjdEZvcklERnJvbU1haW5UaHJlYWQoY29uc3QgQVhJRCBheElEKSBjb25z
dAogewotICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwotCi0gICAgVmVjdG9yPFJlZlB0cjxB
WENvcmVPYmplY3Q+PiByZXN1bHQ7Ci0gICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
YXhJRHMuc2l6ZSgpKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGF4SUQgOiBheElEcykgewotICAg
ICAgICBSZWZQdHIgb2JqZWN0ID0gb2JqZWN0Rm9ySUQoYXhJRCk7Ci0gICAgICAgIGlmIChvYmpl
Y3QpIHsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoV1RGTW92ZShvYmplY3QpKTsKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gVGhlcmUgaXMgbm8gaXNv
bGF0ZWQgb2JqZWN0IGZvciB0aGlzIEFYSUQuIFRoaXMgY2FuIGhhcHBlbiBpZiB0aGUgY29ycmVz
cG9uZGluZyBsaXZlIG9iamVjdCBpcyBpZ25vcmVkLgotICAgICAgICAvLyBJZiB0aGVyZSBpcyBh
IGxpdmUgb2JqZWN0IGZvciB0aGlzIElEIGFuZCBpdCBpcyBhbiBpZ25vcmVkIHRhcmdldCBvZiBh
IHJlbGF0aW9uc2hpcCwgY3JlYXRlIGFuIGlzb2xhdGVkIG9iamVjdCBmb3IgaXQuCi0gICAgICAg
IG9iamVjdCA9IEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxSZWZQ
dHI8QVhJc29sYXRlZE9iamVjdD4+KFsmYXhJRCwgdGhpc10gKCkgLT4gUmVmUHRyPEFYSXNvbGF0
ZWRPYmplY3Q+IHsKLSAgICAgICAgICAgIGF1dG8qIGNhY2hlID0gYXhPYmplY3RDYWNoZSgpOwot
ICAgICAgICAgICAgaWYgKCFjYWNoZSB8fCAhY2FjaGUtPnJlbGF0aW9uVGFyZ2V0SURzKCkuY29u
dGFpbnMoYXhJRCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAgICAg
ICAgIFJlZlB0ciBheE9iamVjdCA9IGNhY2hlLT5vYmplY3RGb3JJRChheElEKTsKLSAgICAgICAg
ICAgIGlmICghYXhPYmplY3QgfHwgIWF4T2JqZWN0LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAgICAgICAgIGF1dG8gb2Jq
ZWN0ID0gQVhJc29sYXRlZE9iamVjdDo6Y3JlYXRlKCpheE9iamVjdCwgY29uc3RfY2FzdDxBWElz
b2xhdGVkVHJlZSo+KHRoaXMpKTsKLSAgICAgICAgICAgIEFTU0VSVChheE9iamVjdC0+d3JhcHBl
cigpKTsKLSAgICAgICAgICAgIG9iamVjdC0+YXR0YWNoUGxhdGZvcm1XcmFwcGVyKGF4T2JqZWN0
LT53cmFwcGVyKCkpOwotICAgICAgICAgICAgcmV0dXJuIG9iamVjdDsKLSAgICAgICAgfSk7Ci0g
ICAgICAgIGlmIChvYmplY3QpIHsKLSAgICAgICAgICAgIG1fcmVhZGVyVGhyZWFkTm9kZU1hcC5h
ZGQoYXhJRCwgKm9iamVjdCk7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKFdURk1vdmUob2Jq
ZWN0KSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmVzdWx0LnNocmlua1RvRml0KCk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKKyAgICAvLyBUaGVyZSBpcyBubyBpc29sYXRlZCBvYmplY3QgZm9yIHRo
aXMgQVhJRC4gVGhpcyBjYW4gaGFwcGVuIGlmIHRoZSBjb3JyZXNwb25kaW5nIGxpdmUgb2JqZWN0
IGlzIGlnbm9yZWQuCisgICAgLy8gSWYgdGhlcmUgaXMgYSBsaXZlIG9iamVjdCBmb3IgdGhpcyBJ
RCBhbmQgaXQgaXMgYW4gaWdub3JlZCB0YXJnZXQgb2YgYSByZWxhdGlvbnNoaXAsIGNyZWF0ZSBh
biBpc29sYXRlZCBvYmplY3QgZm9yIGl0LgorICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRy
aWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8UmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+PihbJmF4SUQs
IHRoaXNdICgpIC0+IFJlZlB0cjxBWElzb2xhdGVkT2JqZWN0PiB7CisgICAgICAgIGF1dG8qIGNh
Y2hlID0gYXhPYmplY3RDYWNoZSgpOworICAgICAgICBpZiAoIWNhY2hlIHx8ICFjYWNoZS0+cmVs
YXRpb25UYXJnZXRJRHMoKS5jb250YWlucyhheElEKSkKKyAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgICAgIFJlZlB0ciBheE9iamVjdCA9IGNhY2hlLT5vYmplY3RGb3JJRChheElE
KTsKKyAgICAgICAgaWYgKCFheE9iamVjdCB8fCAhYXhPYmplY3QtPmFjY2Vzc2liaWxpdHlJc0ln
bm9yZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGF1dG8gb2Jq
ZWN0ID0gQVhJc29sYXRlZE9iamVjdDo6Y3JlYXRlKCpheE9iamVjdCwgY29uc3RfY2FzdDxBWElz
b2xhdGVkVHJlZSo+KHRoaXMpKTsKKyAgICAgICAgQVNTRVJUKGF4T2JqZWN0LT53cmFwcGVyKCkp
OworICAgICAgICBvYmplY3QtPmF0dGFjaFBsYXRmb3JtV3JhcHBlcihheE9iamVjdC0+d3JhcHBl
cigpKTsKKyAgICAgICAgcmV0dXJuIG9iamVjdDsKKyAgICB9KTsKIH0KIAotCiB2b2lkIEFYSXNv
bGF0ZWRUcmVlOjpnZW5lcmF0ZVN1YnRyZWUoQWNjZXNzaWJpbGl0eU9iamVjdCYgYXhPYmplY3Qp
CiB7CiAgICAgQVhUUkFDRSgiQVhJc29sYXRlZFRyZWU6OmdlbmVyYXRlU3VidHJlZSJfcyk7CkBA
IC02NjAsNiArNjQxLDEyIEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZU5vZGVQcm9wZXJ0
aWVzKEFYQ29yZU9iamVjdCYgYXhPYmplY3QsIGNvbnN0IEFYUHJvcGVyCiAgICAgICAgIGNhc2Ug
QVhQcm9wZXJ0eU5hbWU6OlBvc0luU2V0OgogICAgICAgICAgICAgcHJvcGVydHlNYXAuc2V0KEFY
UHJvcGVydHlOYW1lOjpQb3NJblNldCwgYXhPYmplY3QucG9zSW5TZXQoKSk7CiAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBBWFByb3BlcnR5TmFtZTo6UmVtb3RlRnJhbWVQbGF0Zm9y
bUVsZW1lbnQ6CisgICAgICAgICAgICBwcm9wZXJ0eU1hcC5zZXQoQVhQcm9wZXJ0eU5hbWU6OlJl
bW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50LCBheE9iamVjdC5yZW1vdGVGcmFtZVBsYXRmb3JtRWxl
bWVudCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFYUHJvcGVydHlOYW1l
OjpIYXNSZW1vdGVGcmFtZUNoaWxkOgorICAgICAgICAgICAgcHJvcGVydHlNYXAuc2V0KEFYUHJv
cGVydHlOYW1lOjpIYXNSZW1vdGVGcmFtZUNoaWxkLCBheE9iamVjdC5oYXNSZW1vdGVGcmFtZUNo
aWxkKCkpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQVhQcm9wZXJ0eU5hbWU6
OlJvbGVEZXNjcmlwdGlvbjoKICAgICAgICAgICAgIHByb3BlcnR5TWFwLnNldChBWFByb3BlcnR5
TmFtZTo6Um9sZURlc2NyaXB0aW9uLCBheE9iamVjdC5yb2xlRGVzY3JpcHRpb24oKS5pc29sYXRl
ZENvcHkoKSk7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4IGE0
MTc5Mjc5NzhkMi4uNDYxZWVhZTYwYWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKQEAgLTEwNCw2
ICsxMDQsNyBAQCBlbnVtIGNsYXNzIEFYUHJvcGVydHlOYW1lIDogdWludDE2X3QgewogICAgIEhh
c0hpZ2hsaWdodGluZywKICAgICBIYXNJdGFsaWNGb250LAogICAgIEhhc1BsYWluVGV4dCwKKyAg
ICBIYXNSZW1vdGVGcmFtZUNoaWxkLAogICAgIEhhc1VuZGVybGluZSwKICAgICBIZWFkZXJDb250
YWluZXIsCiAgICAgSGVhZGluZ0xldmVsLApAQCAtMjAxLDYgKzIwMiw4IEBAIGVudW0gY2xhc3Mg
QVhQcm9wZXJ0eU5hbWUgOiB1aW50MTZfdCB7CiAgICAgUHJldmVudEtleWJvYXJkRE9NRXZlbnRE
aXNwYXRjaCwKICAgICBSYWRpb0J1dHRvbkdyb3VwLAogICAgIFJlbGF0aXZlRnJhbWUsCisgICAg
UmVtb3RlRnJhbWVPZmZzZXQsCisgICAgUmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQsCiAgICAg
Um9sZVZhbHVlLAogICAgIFJvbGVQbGF0Zm9ybVN0cmluZywKICAgICBSb2xlRGVzY3JpcHRpb24s
CkBAIC0yNTcsNiArMjYwLDcgQEAgdXNpbmcgQVhQcm9wZXJ0eU5hbWVTZXQgPSBIYXNoU2V0PEFY
UHJvcGVydHlOYW1lLCBJbnRIYXNoPEFYUHJvcGVydHlOYW1lPiwgV1RGOjoKIHVzaW5nIEFYUHJv
cGVydHlWYWx1ZVZhcmlhbnQgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIEFYSUQsIFN0
cmluZywgYm9vbCwgaW50LCB1bnNpZ25lZCwgZG91YmxlLCBmbG9hdCwgdWludDY0X3QsIEFjY2Vz
c2liaWxpdHlCdXR0b25TdGF0ZSwgQ29sb3IsIFVSTCwgTGF5b3V0UmVjdCwgRmxvYXRQb2ludCwg
RmxvYXRSZWN0LCBJbnRQb2ludCwgSW50UmVjdCwgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25l
ZD4sIFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4sIFZlY3RvcjxBWElEPiwgVmVjdG9yPHN0ZDo6
cGFpcjxBWElELCBBWElEPj4sIFZlY3RvcjxTdHJpbmc+LCBQYXRoLCBPcHRpb25TZXQ8QVhBbmNl
c3RvckZsYWc+LCBJbnNpZGVMaW5rLCBWZWN0b3I8VmVjdG9yPEFYSUQ+PiwgQ2hhcmFjdGVyUmFu
Z2UsIHN0ZDo6cGFpcjxBWElELCBDaGFyYWN0ZXJSYW5nZT4KICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICAsIFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+CisgICAgLCBSZXRhaW5QdHI8aWQ+
CiAjZW5kaWYKICNpZiBFTkFCTEUoQVhfVEhSRUFEX1RFWFRfQVBJUykKICAgICAsIEFYVGV4dFJ1
bnMKQEAgLTM5Nyw2ICs0MDEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlRW1wdHlDb250
ZW50KEFjY2Vzc2liaWxpdHlPYmplY3QmKTsKICAgICBjb25zdGV4cHIgYm9vbCBpc1VwZGF0aW5n
U3VidHJlZSgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdE9mU3VidHJlZUJlaW5nVXBkYXRlZDsgfQog
ICAgIGNvbnN0ZXhwciB2b2lkIHVwZGF0aW5nU3VidHJlZShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBh
eE9iamVjdCkgeyBtX3Jvb3RPZlN1YnRyZWVCZWluZ1VwZGF0ZWQgPSBheE9iamVjdDsgfQorICAg
IFJlZlB0cjxBWElzb2xhdGVkT2JqZWN0PiByZXRyaWV2ZU9iamVjdEZvcklERnJvbU1haW5UaHJl
YWQoY29uc3QgQVhJRCkgY29uc3Q7CiAKICAgICBlbnVtIGNsYXNzIEF0dGFjaFdyYXBwZXIgOiBi
b29sIHsgT25NYWluVGhyZWFkLCBPbkFYVGhyZWFkIH07CiAgICAgc3RydWN0IE5vZGVDaGFuZ2Ug
ewpAQCAtNDk3LDYgKzUwMiwzMCBAQCBpbmxpbmUgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiBBWElz
b2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJRChzdGQ6Om9wdGlvbmFsPFBhZ2VJZAogICAgIHJldHVy
biBwYWdlSUQgPyB0cmVlRm9yUGFnZUlEKCpwYWdlSUQpIDogbnVsbHB0cjsKIH0KIAordGVtcGxh
dGU8dHlwZW5hbWUgVT4KK2lubGluZSBWZWN0b3I8UmVmUHRyPEFYQ29yZU9iamVjdD4+IEFYSXNv
bGF0ZWRUcmVlOjpvYmplY3RzRm9ySURzKGNvbnN0IFUmIGF4SURzKQoreworICAgIEFTU0VSVCgh
aXNNYWluVGhyZWFkKCkpOworCisgICAgVmVjdG9yPFJlZlB0cjxBWENvcmVPYmplY3Q+PiByZXN1
bHQ7CisgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYXhJRHMuc2l6ZSgpKTsKKyAg
ICBmb3IgKGNvbnN0IGF1dG8mIGF4SUQgOiBheElEcykgeworICAgICAgICBSZWZQdHIgb2JqZWN0
ID0gb2JqZWN0Rm9ySUQoYXhJRCk7CisgICAgICAgIGlmIChvYmplY3QpIHsKKyAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoV1RGTW92ZShvYmplY3QpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICB9CisKKyAgICAgICAgb2JqZWN0ID0gcmV0cmlldmVPYmplY3RGb3JJREZyb21NYWlu
VGhyZWFkKGF4SUQpOworICAgICAgICBpZiAob2JqZWN0KSB7CisgICAgICAgICAgICBtX3JlYWRl
clRocmVhZE5vZGVNYXAuYWRkKGF4SUQsICpvYmplY3QpOworICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZChXVEZNb3ZlKG9iamVjdCkpOworICAgICAgICB9CisgICAgfQorICAgIHJlc3VsdC5zaHJp
bmtUb0ZpdCgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9tYWMvQVhJc29sYXRlZE9iamVjdE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL21hYy9BWElzb2xhdGVkT2JqZWN0TWFjLm1tCmluZGV4
IGFkYjdlYzY0ODM0NS4uZTAyZGEwZDExMmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9tYWMvQVhJc29sYXRlZE9iamVjdE1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9tYWMvQVhJc29sYXRl
ZE9iamVjdE1hYy5tbQpAQCAtNjMsNiArNjMsOCBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6Omlu
aXRpYWxpemVQbGF0Zm9ybVByb3BlcnRpZXMoY29uc3QgUmVmPGNvbnN0IEFjY2Vzc2liaWxpdAog
ICAgICAgICB9CiAgICAgfQogCisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlJlbW90
ZUZyYW1lUGxhdGZvcm1FbGVtZW50LCBvYmplY3QtPnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50
KCkpOworCiAgICAgLy8gQ2FjaGUgdGhlIFN0cmluZ1ZhbHVlIG9ubHkgaWYgaXQgZGlmZmVycyBm
cm9tIHRoZSBBdHRyaWJ1dGVkVGV4dC4KICAgICBhdXRvIHZhbHVlID0gb2JqZWN0LT5zdHJpbmdW
YWx1ZSgpOwogICAgIGlmICghYXR0cmlidXRlZFRleHQgfHwgdmFsdWUgIT0gU3RyaW5nKFthdHRy
aWJ1dGVkVGV4dCBzdHJpbmddKSkKQEAgLTIwMiw2ICsyMDQsMTEgQEAgdW5zaWduZWQgQVhJc29s
YXRlZE9iamVjdDo6dGV4dExlbmd0aCgpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKK1JldGFp
blB0cjxpZD4gQVhJc29sYXRlZE9iamVjdDo6cmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKSBj
b25zdAoreworICAgIHJldHVybiBwcm9wZXJ0eVZhbHVlPFJldGFpblB0cjxpZD4+KEFYUHJvcGVy
dHlOYW1lOjpSZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCk7Cit9CisKIFJldGFpblB0cjxOU0F0
dHJpYnV0ZWRTdHJpbmc+IEFYSXNvbGF0ZWRPYmplY3Q6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2UoQVhUZXh0TWFya2VyUmFuZ2UmJiBtYXJrZXJSYW5nZSwgU3BlbGxDaGVjayBz
cGVsbENoZWNrKSBjb25zdAogewogICAgIGlmICghbWFya2VyUmFuZ2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1h
Yy5tbQppbmRleCBiYTJhY2NkODBkMDQuLmZiYmUwYmIyYTA2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFj
Lm1tCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkFjY2Vz
c2liaWxpdHlPYmplY3QuaCIKIAorI2ltcG9ydCAiQVhSZW1vdGVGcmFtZS5oIgogI2ltcG9ydCAi
QWNjZXNzaWJpbGl0eUxhYmVsLmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5TGlzdC5oIgogI2lt
cG9ydCAiQ29sb3JDb2NvYS5oIgpAQCAtNTEsNiArNTIsNyBAQAogI2ltcG9ydCAiV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMuaCIKICNpbXBvcnQgIldpZGdldC5oIgogCisjaW1wb3J0
IDxwYWwvc3BpL2NvY29hL05TQWNjZXNzaWJpbGl0eVNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9t
YWMvTlNTcGVsbENoZWNrZXJTUEkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzQ5LDYg
Kzc1MSwyOSBAQCBSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiBhdHRyaWJ1dGVkU3RyaW5n
Q3JlYXRlKE5vZGUqIG5vZGUsIFN0cmluZ1ZpZXcgdGV4dAogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKK3N0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBBWFJlbW90ZUZyYW1lOjpnZW5lcmF0ZVJlbW90
ZVRva2VuKCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byogcGFyZW50ID0gcGFyZW50T2JqZWN0KCkp
IHsKKyAgICAgICAgLy8gV2UgdXNlIHRoZSBwYXJlbnQncyB3cmFwcGVyIHNvIHRoYXQgdGhlIHJl
bW90ZSBmcmFtZSBhY3RzIGFzIGEgcGFzcyB0aHJvdWdoIGZvciB0aGUgcmVtb3RlIHRva2VuIGJy
aWRnZS4KKyAgICAgICAgTlNEYXRhICpkYXRhID0gW05TQWNjZXNzaWJpbGl0eVJlbW90ZVVJRWxl
bWVudCByZW1vdGVUb2tlbkZvckxvY2FsVUlFbGVtZW50OnBhcmVudC0+d3JhcHBlcigpXTsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6c3BhbihzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW2RhdGEg
Ynl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7CisgICAgfQorCisgICAgcmV0dXJuIHN0ZDo6c3Bhbjxj
b25zdCB1aW50OF90PiB7IH07Cit9CisKK3ZvaWQgQVhSZW1vdGVGcmFtZTo6aW5pdGlhbGl6ZVBs
YXRmb3JtRWxlbWVudFdpdGhSZW1vdGVUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gdG9r
ZW4sIGludCBwcm9jZXNzSWRlbnRpZmllcikKK3sKKyAgICBtX3Byb2Nlc3NJZGVudGlmaWVyID0g
cHJvY2Vzc0lkZW50aWZpZXI7CisgICAgaWYgKFt3cmFwcGVyKCkgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3RvcihhY2Nlc3NpYmlsaXR5U2V0UHJlc2VudGVyUHJvY2Vzc0lkZW50aWZpZXI6KV0p
CisgICAgICAgIFsoaWQpd3JhcHBlcigpIGFjY2Vzc2liaWxpdHlTZXRQcmVzZW50ZXJQcm9jZXNz
SWRlbnRpZmllcjpwcm9jZXNzSWRlbnRpZmllcl07CisgICAgTlNEYXRhICp0b2tlbkRhdGEgPSBb
TlNEYXRhIGRhdGFXaXRoQnl0ZXM6dG9rZW4uZGF0YSgpIGxlbmd0aDp0b2tlbi5zaXplKCldOwor
ICAgIG1fcmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQgPSBhZG9wdE5TKFtbTlNBY2Nlc3NpYmls
aXR5UmVtb3RlVUlFbGVtZW50IGFsbG9jXSBpbml0V2l0aFJlbW90ZVRva2VuOnRva2VuRGF0YV0p
OworCisgICAgaWYgKGF1dG8qIGNhY2hlID0gYXhPYmplY3RDYWNoZSgpKQorICAgICAgICBjYWNo
ZS0+b25SZW1vdGVGcmFtZUluaXRpYWxpemVkKCp0aGlzKTsKK30KKwogbmFtZXNwYWNlIEFjY2Vz
c2liaWxpdHkgewogCiBQbGF0Zm9ybVJvbGVNYXAgY3JlYXRlUGxhdGZvcm1Sb2xlTWFwKCkKQEAg
LTg5MSw2ICs5MTYsNyBAQCBQbGF0Zm9ybVJvbGVNYXAgY3JlYXRlUGxhdGZvcm1Sb2xlTWFwKCkK
ICAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6U3VwZXJzY3JpcHQsIE5TQWNjZXNzaWJpbGl0
eUdyb3VwUm9sZSB9LAogICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpNb2RlbCwgTlNBY2Nl
c3NpYmlsaXR5R3JvdXBSb2xlIH0sCiAgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlN1Z2dl
c3Rpb24sIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxp
dHlSb2xlOjpSZW1vdGVGcmFtZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCiAgICAgfTsK
ICAgICBQbGF0Zm9ybVJvbGVNYXAgcm9sZU1hcDsKICAgICBmb3IgKGF1dG8mIHJvbGUgOiByb2xl
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQppbmRleCA2MzU3ZmE3
YzI3MWIuLmYxNDI0NWZjM2I2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
QmFzZS5tbQpAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCAiQVhDb3JlT2JqZWN0LmgiCiAjaW1w
b3J0ICJBWElzb2xhdGVkT2JqZWN0LmgiCiAjaW1wb3J0ICJBWE9iamVjdENhY2hlLmgiCisjaW1w
b3J0ICJBWFJlbW90ZUZyYW1lLmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cu
aCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlMaXN0LmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5
TGlzdEJveC5oIgpAQCAtMjY1LDEzICsyNjYsMTMgQEAgTlNBcnJheSAqbWFrZU5TQXJyYXkoY29u
c3QgV2ViQ29yZTo6QVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGMK
ICAgICAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICAgICAgYXV0byB3cmFwcGVyID0gY2hpbGQt
PndyYXBwZXIoKTsKLQogICAgICAgICAvLyBXZSB3YW50IHRvIHJldHVybiB0aGUgYXR0YWNobWVu
dCB2aWV3IGluc3RlYWQgb2YgdGhlIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIGF0dGFjaG1lbnQs
CiAgICAgICAgIC8vIG90aGVyd2lzZSwgd2UgZ2V0IHBhbGluZHJvbWUgZXJyb3JzIGluIHRoZSBB
WCBoaWVyYXJjaHkuCiAgICAgICAgIGlmIChjaGlsZC0+aXNBdHRhY2htZW50KCkpIHsKICAgICAg
ICAgICAgIGlmIChpZCBhdHRhY2htZW50VmlldyA9IHdyYXBwZXIuYXR0YWNobWVudFZpZXcpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGF0dGFjaG1lbnRWaWV3OwotICAgICAgICB9CisgICAgICAg
IH0gZWxzZSBpZiAoY2hpbGQtPmlzUmVtb3RlRnJhbWUoKSkKKyAgICAgICAgICAgIHJldHVybiBj
aGlsZC0+cmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKS5nZXQoKTsKIAogICAgICAgICByZXR1
cm4gd3JhcHBlcjsKICAgICB9KS5hdXRvcmVsZWFzZSgpOwpAQCAtMzg5LDcgKzM5MCw3IEBAIE5T
QXJyYXkgKm1ha2VOU0FycmF5KGNvbnN0IFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6QWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJiBjCiAtIChCT09MKWlzSXNvbGF0ZWRPYmplY3QKIHsKICNpZiBF
TkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQotICAgIGF1dG8qIGJhY2tpbmdPYmpl
Y3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHIgYmFja2luZ09iamVjdCA9IGR5
bmFtaWNEb3duY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0PihzZWxmLmJhc2VVcGRhdGVCYWNraW5n
U3RvcmUpOwogICAgIHJldHVybiBiYWNraW5nT2JqZWN0ICYmIGJhY2tpbmdPYmplY3QtPmlzQVhJ
c29sYXRlZE9iamVjdEluc3RhbmNlKCk7CiAjZWxzZQogICAgIHJldHVybiBOTzsKQEAgLTUyMyw3
ICs1MjQsNyBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0UGF0aFRvU2NyZWVuU3BhY2VGdW5jdGlvbihQ
YXRoQ29udmVyc2lvbkluZm8mIGNvbnZlcnNpb24sIGNvbgogCiAtIChDR1JlY3QpY29udmVydFJl
Y3RUb1NwYWNlOihjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKXJlY3Qgc3BhY2U6KEFjY2Vzc2li
aWxpdHlDb252ZXJzaW9uU3BhY2Upc3BhY2UKIHsKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0g
c2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgUmVmUHRyIGJhY2tpbmdPYmplY3QgPSBkeW5hbWlj
RG93bmNhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdD4oc2VsZi5iYXNlVXBkYXRlQmFja2luZ1N0b3Jl
KTsKICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCiAgICAgICAgIHJldHVybiBDR1JlY3RaZXJvOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDZjNWU2YjdhY2Q5
Yy4uNzUwMmQ5YTBlNDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5t
bQpAQCAtMzQsNiArMzQsNyBAQAogI2ltcG9ydCAiQVhJc29sYXRlZE9iamVjdC5oIgogI2ltcG9y
dCAiQVhMb2dnZXIuaCIKICNpbXBvcnQgIkFYT2JqZWN0Q2FjaGUuaCIKKyNpbXBvcnQgIkFYUmVt
b3RlRnJhbWUuaCIKICNpbXBvcnQgIkFYVGV4dE1hcmtlci5oIgogI2ltcG9ydCAiQWNjZXNzaWJp
bGl0eUFSSUFHcmlkUm93LmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5TGFiZWwuaCIKQEAgLTQ3
OSw2ICs0ODAsMTAgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAjZGVmaW5lIE5TQWNjZXNz
aWJpbGl0eVRleHRJbnB1dE1hcmtlZFRleHRNYXJrZXJSYW5nZUF0dHJpYnV0ZSBAIkFYVGV4dElu
cHV0TWFya2VkVGV4dE1hcmtlclJhbmdlIgogI2VuZGlmCiAKKyNpZm5kZWYga0FYQ29udmVydFJl
bGF0aXZlRnJhbWVQYXJhbWV0ZXJpemVkQXR0cmlidXRlCisjZGVmaW5lIGtBWENvbnZlcnRSZWxh
dGl2ZUZyYW1lUGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBAIkFYQ29udmVydFJlbGF0aXZlRnJhbWUi
CisjZW5kaWYKKwogQGltcGxlbWVudGF0aW9uIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
CiAKIC0gKHZvaWQpZGV0YWNoCkBAIC02OTIsNyArNjk3LDcgQEAgc3RhdGljIFJldGFpblB0cjxB
WFRleHRNYXJrZXJSZWY+IHByZXZpb3VzVGV4dE1hcmtlcihBWE9iamVjdENhY2hlKiBjYWNoZSwg
Y29uc3QKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgYXV0byogYmFja2lu
Z09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+
IGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKICAgICBpZiAoIWJhY2tpbmdP
YmplY3QpCiAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTEyNTYsNyArMTI2MSw3IEBAIEFMTE9X
X0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogCiAtIChOU0FycmF5ICopcmVuZGVyV2lk
Z2V0Q2hpbGRyZW4KIHsKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdP
YmplY3Q7CisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNlbGYuYXhC
YWNraW5nT2JqZWN0OwogICAgIGlmICghYmFja2luZ09iamVjdCB8fCAhYmFja2luZ09iamVjdC0+
aXNXaWRnZXQoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMTI3OSw3ICsxMjg0LDcgQEAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKIC0gKGlkKXJlbW90ZUFjY2Vzc2li
aWxpdHlQYXJlbnRPYmplY3QKIHsKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJh
Y2tpbmdPYmplY3Q7CisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNl
bGYuYXhCYWNraW5nT2JqZWN0OwogICAgIHJldHVybiBiYWNraW5nT2JqZWN0ID8gYmFja2luZ09i
amVjdC0+cmVtb3RlUGFyZW50T2JqZWN0KCkgOiBuaWw7CiB9CiAKQEAgLTEyOTYsNyArMTMwMSw3
IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRUb1ZlY3RvcihOU0FycmF5KiBhcnJheSwgQWNjZXNzaWJp
bGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoCiAKIC0gKEFYVGV4dE1hcmtlclJhbmdlUmVmKXNl
bGVjdGVkVGV4dE1hcmtlclJhbmdlCiB7Ci0gICAgYXV0byogYmFja2luZ09iamVjdCA9IHNlbGYu
YXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+IGJhY2tpbmdPYmplY3Qg
PSBzZWxmLmF4QmFja2luZ09iamVjdDsKICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCiAgICAgICAg
IHJldHVybiBuaWw7CiAKQEAgLTEzNjYsMTIgKzEzNzEsMTggQEAgc3RhdGljIHZvaWQgV2ViVHJh
bnNmb3JtQ0dQYXRoVG9OU0JlemllclBhdGgodm9pZCogaW5mbywgY29uc3QgQ0dQYXRoRWxlbWVu
dCAqZWwKIAogLSAoTlNTdHJpbmcqKXJvbGUKIHsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBi
YWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgaWYgKCFiYWNraW5nT2Jq
ZWN0KQorICAgICAgICByZXR1cm4gbmlsOworCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19CRUdJTgotICAgIGlmIChzZWxmLmF4QmFja2luZ09iamVjdC0+aXNBdHRhY2htZW50KCkpCisg
ICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzQXR0YWNobWVudCgpKQogICAgICAgICByZXR1cm4gW1tz
ZWxmIGF0dGFjaG1lbnRWaWV3XSBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3Np
YmlsaXR5Um9sZUF0dHJpYnV0ZV07CisgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzUmVtb3RlRnJh
bWUoKSkKKyAgICAgICAgcmV0dXJuIFtiYWNraW5nT2JqZWN0LT5yZW1vdGVGcmFtZVBsYXRmb3Jt
RWxlbWVudCgpLmdldCgpIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxp
dHlSb2xlQXR0cmlidXRlXTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCi0g
ICAgTlNTdHJpbmcgKnN0cmluZyA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5yb2xlUGxhdGZvcm1T
dHJpbmcoKTsKKyAgICBOU1N0cmluZyAqc3RyaW5nID0gYmFja2luZ09iamVjdC0+cm9sZVBsYXRm
b3JtU3RyaW5nKCk7CiAgICAgaWYgKHN0cmluZy5sZW5ndGgpCiAgICAgICAgIHJldHVybiBzdHJp
bmc7CiAgICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eVVua25vd25Sb2xlOwpAQCAtMTM3OSw3ICsx
MzkwLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKIC0gKEJPT0wpaXNF
bXB0eUdyb3VwCiB7Ci0gICAgYXV0byogYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2Jq
ZWN0OworICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+IGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFj
a2luZ09iamVjdDsKICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIApAQCAtMTM4OCw2ICsxMzk5LDkgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogCisgICAgaWYgKGJhY2tpbmdPYmpl
Y3QtPmlzUmVtb3RlRnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgcmV0dXJu
IFtbc2VsZiByb2xlXSBpc0VxdWFsOk5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZV0KICAgICAgICAg
JiYgYmFja2luZ09iamVjdC0+Y2hpbGRyZW4oKS5pc0VtcHR5KCkKICAgICAgICAgJiYgIVtbc2Vs
ZiByZW5kZXJXaWRnZXRDaGlsZHJlbl0gY291bnRdOwpAQCAtMTM5Niw3ICsxNDEwLDcgQEAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19CRUdJTgogLSAoTlNTdHJpbmcqKXN1YnJvbGUKIHsKLSAgICBhdXRvKiBiYWNraW5nT2Jq
ZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFj
a2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OwogICAgIGlmICghYmFja2luZ09iamVj
dCkKICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMTQxMyw3ICsxNDI3LDcgQEAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKIC0gKE5TU3RyaW5nKilyb2xlRGVzY3JpcHRpb24K
IHsKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAg
UmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0
OwogICAgIGlmICghYmFja2luZ09iamVjdCkKICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMTQy
MSw2ICsxNDM1LDggQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAv
LyBhdHRhY2htZW50cyBoYXZlIHRoZSBBWEltYWdlIHJvbGUsIGJ1dCBhIGRpZmZlcmVudCBzdWJy
b2xlCiAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzQXR0YWNobWVudCgpKQogICAgICAgICByZXR1
cm4gW1tzZWxmIGF0dGFjaG1lbnRWaWV3XSBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNB
Y2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlXTsKKyAgICBpZiAoYmFja2luZ09i
amVjdC0+aXNSZW1vdGVGcmFtZSgpKQorICAgICAgICByZXR1cm4gW2JhY2tpbmdPYmplY3QtPnJl
bW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkuZ2V0KCkgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOk5TQWNjZXNzaWJpbGl0eVJvbGVEZXNjcmlwdGlvbkF0dHJpYnV0ZV07CiBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgIFN0cmluZyByb2xlRGVzY3JpcHRpb24gPSBi
YWNraW5nT2JqZWN0LT5yb2xlRGVzY3JpcHRpb24oKTsKQEAgLTE0NzMsNiArMTQ4OSwyOCBAQCBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICByZXR1cm4gYXhTY3JvbGxWaWV3
ID8gW2F4U2Nyb2xsVmlldy0+cGxhdGZvcm1XaWRnZXQoKSB3aW5kb3ddIDogbmlsOwogfQogCist
IChOU0FycmF5ICopX3RyYW5zZm9ybVNwZWNpYWxDaGlsZHJlbkNhc2VzOihSZWZQdHI8QVhDb3Jl
T2JqZWN0PiliYWNraW5nT2JqZWN0Cit7CisjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCisgICAg
aWYgKGJhY2tpbmdPYmplY3QtPmlzTW9kZWwoKSkgeworICAgICAgICBhdXRvIG1vZGVsQ2hpbGRy
ZW4gPSBiYWNraW5nT2JqZWN0LT5tb2RlbEVsZW1lbnRDaGlsZHJlbigpOworICAgICAgICBpZiAo
bW9kZWxDaGlsZHJlbi5zaXplKCkpIHsKKyAgICAgICAgICAgIHJldHVybiBjcmVhdGVOU0FycmF5
KFdURk1vdmUobW9kZWxDaGlsZHJlbiksIFtdIChhdXRvJiYgY2hpbGQpIC0+IGlkIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gY2hpbGQuZ2V0KCk7CisgICAgICAgICAgICB9KS5hdXRvcmVsZWFz
ZSgpOworICAgICAgICB9CisgICAgfQorI2VuZGlmCisKKyAgICBjb25zdCBhdXRvJiBjaGlsZHJl
biA9IGJhY2tpbmdPYmplY3QtPmNoaWxkcmVuKCk7CisgICAgaWYgKCFjaGlsZHJlbi5zaXplKCkp
IHsKKyAgICAgICAgaWYgKE5TQXJyYXkgKmNoaWxkcmVuID0gW3NlbGYgcmVuZGVyV2lkZ2V0Q2hp
bGRyZW5dKQorICAgICAgICAgICAgcmV0dXJuIGNoaWxkcmVuOworICAgIH0KKworICAgIHJldHVy
biBuaWw7Cit9CisKIC8vIEZJWE1FOiBzcGxpdCB1cCB0aGlzIGZ1bmN0aW9uIGluIGEgYmV0dGVy
IHdheS4KIC8vIHN1Z2dlc3Rpb25zOiBVc2UgYSBoYXNoIHRhYmxlIHRoYXQgbWFwcyBhdHRyaWJ1
dGUgbmFtZXMgdG8gZnVuY3Rpb24gY2FsbHMsCiAvLyBvciBtYXliZSBwb2ludGVycyB0byBtZW1i
ZXIgZnVuY3Rpb25zCkBAIC0xNTMxLDIyICsxNTY5LDkgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBM
RU1FTlRBVElPTlNfRU5ECiAgICAgfQogCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxU
b1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZV0gfHwgW2F0dHJpYnV0ZU5h
bWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuSW5OYXZpZ2F0aW9uT3Jk
ZXJBdHRyaWJ1dGVdKSB7Ci0jaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCi0gICAgICAgIGlmIChi
YWNraW5nT2JqZWN0LT5pc01vZGVsKCkpIHsKLSAgICAgICAgICAgIGF1dG8gbW9kZWxDaGlsZHJl
biA9IGJhY2tpbmdPYmplY3QtPm1vZGVsRWxlbWVudENoaWxkcmVuKCk7Ci0gICAgICAgICAgICBp
ZiAobW9kZWxDaGlsZHJlbi5zaXplKCkpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRl
TlNBcnJheShXVEZNb3ZlKG1vZGVsQ2hpbGRyZW4pLCBbXSAoYXV0byYmIGNoaWxkKSAtPiBpZCB7
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZC5nZXQoKTsKLSAgICAgICAgICAgICAg
ICB9KS5hdXRvcmVsZWFzZSgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0jZW5kaWYKLQot
ICAgICAgICBjb25zdCBhdXRvJiBjaGlsZHJlbiA9IGJhY2tpbmdPYmplY3QtPmNoaWxkcmVuKCk7
Ci0gICAgICAgIGlmIChjaGlsZHJlbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGlmIChOU0Fy
cmF5ICp3aWRnZXRDaGlsZHJlbiA9IFtzZWxmIHJlbmRlcldpZGdldENoaWxkcmVuXSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gd2lkZ2V0Q2hpbGRyZW47Ci0gICAgICAgIH0KKyAgICAgICAgTlNB
cnJheSAqc3BlY2lhbENoaWxkcmVuID0gW3NlbGYgX3RyYW5zZm9ybVNwZWNpYWxDaGlsZHJlbkNh
c2VzOmJhY2tpbmdPYmplY3RdOworICAgICAgICBpZiAoc3BlY2lhbENoaWxkcmVuLmNvdW50KQor
ICAgICAgICAgICAgcmV0dXJuIHNwZWNpYWxDaGlsZHJlbjsKIAogICAgICAgICAvLyBUaGUgdHJl
ZSdzIChBWE91dGxpbmUpIGNoaWxkcmVuIGFyZSBzdXBwb3NlZCB0byBiZSBpdHMgcm93cyBhbmQg
Y29sdW1ucy4KICAgICAgICAgLy8gVGhlIEFSSUEgc3BlYyBkb2Vzbid0IGhhdmUgY29sdW1ucywg
c28gd2UganVzdCBuZWVkIHJvd3MuCkBAIC0xNTU3LDcgKzE1ODIsNyBAQCBBTExPV19ERVBSRUNB
VEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzVHJl
ZUl0ZW0oKSkKICAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT5h
cmlhVHJlZUl0ZW1Db250ZW50KCkpOwogCi0gICAgICAgIHJldHVybiBtYWtlTlNBcnJheShjaGls
ZHJlbik7CisgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT5jaGlsZHJl
bigpKTsKICAgICB9CiAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBO
U0FjY2Vzc2liaWxpdHlTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlXSkgewpAQCAtMTcxMywxNiAr
MTczOCwxNCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBpZiAo
W2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlFbmFibGVkQXR0
cmlidXRlXSkKICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDogYmFja2lu
Z09iamVjdC0+aXNFbmFibGVkKCldOwogCi0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxU
b1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5U2l6ZUF0dHJpYnV0ZV0pIHsKLSAgICAgICAgYXV0byBz
aXplID0gYmFja2luZ09iamVjdC0+c2l6ZSgpOwotICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFs
dWVXaXRoU2l6ZTpOU01ha2VTaXplKHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSldOwotICAg
IH0KKyAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0
eVNpemVBdHRyaWJ1dGVdKQorICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoU2l6ZToo
Q0dTaXplKWJhY2tpbmdPYmplY3QtPnNpemUoKV07CiAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUg
aXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVByaW1hcnlTY3JlZW5IZWlnaHRBdHRyaWJ1
dGVdKQogICAgICAgICByZXR1cm4gQChiYWNraW5nT2JqZWN0LT5wcmltYXJ5U2NyZWVuUmVjdCgp
LmhlaWdodCgpKTsKIAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNB
Y2Nlc3NpYmlsaXR5UG9zaXRpb25BdHRyaWJ1dGVdKQotICAgICAgICByZXR1cm4gQChDR1BvaW50
KGJhY2tpbmdPYmplY3QtPnNjcmVlblJlbGF0aXZlUG9zaXRpb24oKSkpOworICAgICAgICByZXR1
cm4gW05TVmFsdWUgdmFsdWVXaXRoUG9pbnQ6KENHUG9pbnQpYmFja2luZ09iamVjdC0+c2NyZWVu
UmVsYXRpdmVQb3NpdGlvbigpXTsKIAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9T
dHJpbmc6TlNBY2Nlc3NpYmlsaXR5UGF0aEF0dHJpYnV0ZV0pCiAgICAgICAgIHJldHVybiBbc2Vs
ZiBwYXRoXTsKQEAgLTIyMzcsNiArMjI2MCwxMCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVO
VEFUSU9OU19FTkQKICAgICAgICAgcmV0dXJuIHJhbmdlID8gcmFuZ2UucGxhdGZvcm1EYXRhKCku
YnJpZGdpbmdBdXRvcmVsZWFzZSgpIDogbmlsOwogICAgIH0KIAorICAgIC8vIFZvaWNlT3ZlciBw
cm9wZXJ0eSB0byBpZ25vcmUgY2VydGFpbiBncm91cHMuCisgICAgaWYgKFthdHRyaWJ1dGVOYW1l
IGlzRXF1YWxUb1N0cmluZzpAIkFYQXV0b0ludGVyYWN0YWJsZSJdKQorICAgICAgICByZXR1cm4g
QChiYWNraW5nT2JqZWN0LT5pc1JlbW90ZUZyYW1lKCkpOworCiAgICAgLy8gVXNlZCBieSBMYXlv
dXRUZXN0cyBvbmx5LCBub3QgYnkgQVQgY2xpZW50cy4KICAgICBpZiAoVU5MSUtFTFkoW2F0dHJp
YnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiQVhBUklBUm9sZSJdKSkKICAgICAgICAgcmV0dXJu
IGJhY2tpbmdPYmplY3QtPmNvbXB1dGVkUm9sZVN0cmluZygpOwpAQCAtMjMzMCw3ICsyMzU3LDgg
QEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIGlmIChheE9i
amVjdC0+aXNBdHRhY2htZW50KCkpIHsKICAgICAgICAgICAgIGlmIChpZCBhdHRhY2htZW50Vmll
dyA9IFtheE9iamVjdC0+d3JhcHBlcigpIGF0dGFjaG1lbnRWaWV3XSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gYXR0YWNobWVudFZpZXc7Ci0gICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChh
eE9iamVjdC0+aXNSZW1vdGVGcmFtZSgpKQorICAgICAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5y
ZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpLmdldCgpOwogCiAgICAgICAgIC8vIE9ubHkgY2Fs
bCBvdXQgdG8gdGhlIG1haW4tdGhyZWFkIGlmIHRoaXMgb2JqZWN0IGhhcyBhIGJhY2tpbmcgd2lk
Z2V0IHRvIHF1ZXJ5LgogICAgICAgICBpZiAoYXhPYmplY3QtPmlzV2lkZ2V0KCkpIHsKQEAgLTI1
MDcsNiArMjUzNSwxMCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAg
ICBpZiAoYmFja2luZ09iamVjdC0+aXNXZWJBcmVhKCkpCiAgICAgICAgIHJldHVybiB3ZWJBcmVh
UGFyYW1BdHRyczsKIAorICAgIC8vIFRoZSBvYmplY3QgdGhhdCBzZXJ2ZXMgdXAgdGhlIHJlbW90
ZSBmcmFtZSBhbHNvIGlzIHRoZSBvbmUgdGhhdCBkb2VzIHRoZSBmcmFtZSBjb252ZXJzaW9uLgor
ICAgIGlmIChiYWNraW5nT2JqZWN0LT5oYXNSZW1vdGVGcmFtZUNoaWxkKCkpCisgICAgICAgIHJl
dHVybiBbcGFyYW1BdHRycyBhcnJheUJ5QWRkaW5nT2JqZWN0OmtBWENvbnZlcnRSZWxhdGl2ZUZy
YW1lUGFyYW1ldGVyaXplZEF0dHJpYnV0ZV07CisKICAgICByZXR1cm4gcGFyYW1BdHRyczsKIH0K
IApAQCAtMjU3OCw3ICsyNjEwLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
CiB7CiAgICAgQVhUUkFDRSgiV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJp
bGl0eVBlcmZvcm1TaG93TWVudUFjdGlvbiJfcyk7CiAKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0
ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2lu
Z09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OwogICAgIGlmICghYmFja2luZ09iamVjdCkg
ewogICAgICAgICBBWExPRyhtYWtlU3RyaW5nKCJObyBiYWNraW5nT2JqZWN0IGZvciB3cmFwcGVy
ICIsIGhleChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oc2VsZikpKSk7CiAgICAgICAgIHJl
dHVybjsKQEAgLTI4MjIsNyArMjg1NCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJ
T05TX0VORAogICAgIGlmICghcmFuZ2UubGVuZ3RoKQogICAgICAgICByZXR1cm4gbmlsOwogCi0g
ICAgYXV0byogYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0
cjxBWENvcmVPYmplY3Q+IGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKICAg
ICBpZiAoIWJhY2tpbmdPYmplY3QpCiAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTMxNzcsNiAr
MzIwOSwxOCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHdpZGdldENoaWxkcmVuOwogICAgICAgICAgICAgICAgIGNyaXRl
cmlhLnJlc3VsdHNMaW1pdCAtPSBbd2lkZ2V0Q2hpbGRyZW4gY291bnRdOwogICAgICAgICAgICAg
fQorICAgICAgICB9IGVsc2UgaWYgKGJhY2tpbmdPYmplY3QtPmlzUmVtb3RlRnJhbWUoKQorICAg
ICAgICAgICAgJiYgY3JpdGVyaWEuc2VhcmNoS2V5cy5jb250YWlucyhBY2Nlc3NpYmlsaXR5U2Vh
cmNoS2V5OjpBbnlUeXBlKQorICAgICAgICAgICAgJiYgKCFjcml0ZXJpYS52aXNpYmxlT25seSB8
fCBiYWNraW5nT2JqZWN0LT5pc1Zpc2libGUoKSkpIHsKKyAgICAgICAgICAgIE5TQXJyYXkgKnJl
bW90ZUZyYW1lQ2hpbGRyZW4gPSBbc2VsZiBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGVdOworICAgICAgICAgICAgQVNTRVJUKHJlbW90
ZUZyYW1lQ2hpbGRyZW4uY291bnQgPT0gMSk7CisgICAgICAgICAgICBpZiAocmVtb3RlRnJhbWVD
aGlsZHJlbi5jb3VudCA9PSAxKSB7CisgICAgICAgICAgICAgICAgTlNVSW50ZWdlciBpbmNsdWRl
ZENoaWxkcmVuQ291bnQgPSBzdGQ6Om1pbihbcmVtb3RlRnJhbWVDaGlsZHJlbiBjb3VudF0sIE5T
VUludGVnZXIoY3JpdGVyaWEucmVzdWx0c0xpbWl0KSk7CisgICAgICAgICAgICAgICAgd2lkZ2V0
Q2hpbGRyZW4gPSBbcmVtb3RlRnJhbWVDaGlsZHJlbiBzdWJhcnJheVdpdGhSYW5nZTpOU01ha2VS
YW5nZSgwLCBpbmNsdWRlZENoaWxkcmVuQ291bnQpXTsKKyAgICAgICAgICAgICAgICBpZiAoW3dp
ZGdldENoaWxkcmVuIGNvdW50XSA+PSBjcml0ZXJpYS5yZXN1bHRzTGltaXQpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiByZW1vdGVGcmFtZUNoaWxkcmVuOworICAgICAgICAgICAgICAgIGNy
aXRlcmlhLnJlc3VsdHNMaW1pdCAtPSBbd2lkZ2V0Q2hpbGRyZW4gY291bnRdOworICAgICAgICAg
ICAgfQogICAgICAgICB9CiAKICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yIHJlc3VsdHM7CkBAIC0zNjY5LDYgKzM3MTMsMTEgQEAgQUxMT1df
REVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgaWYgKFVOTElLRUxZKFthdHRyaWJ1
dGUgaXNFcXVhbFRvU3RyaW5nOl9BWFRleHRNYXJrZXJSYW5nZUZvck5TUmFuZ2VBdHRyaWJ1dGVd
KSkKICAgICAgICAgcmV0dXJuIGJhY2tpbmdPYmplY3QtPnRleHRNYXJrZXJSYW5nZUZvck5TUmFu
Z2UocmFuZ2UpLnBsYXRmb3JtRGF0YSgpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKIAorICAgIGlm
IChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzprQVhDb252ZXJ0UmVsYXRpdmVGcmFtZVBhcmFt
ZXRlcml6ZWRBdHRyaWJ1dGVdKSB7CisgICAgICAgIGF1dG8qIHBhcmVudCA9IGJhY2tpbmdPYmpl
Y3QtPnBhcmVudE9iamVjdCgpOworICAgICAgICByZXR1cm4gcGFyZW50ID8gW05TVmFsdWUgdmFs
dWVXaXRoUmVjdDpwYXJlbnQtPmNvbnZlcnRGcmFtZVRvU3BhY2UoRmxvYXRSZWN0KHJlY3QpLCBB
Y2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlOjpQYWdlKV0gOiBuaWw7CisgICAgfQorCiAgICAg
Ly8gVGhlcmUgYXJlIHNvbWUgcGFyYW1ldGVycyB0aGF0IHN1cGVyIGhhbmRsZXMgdGhhdCBhcmUg
bm90IGV4cGxpY2l0bHkgcmV0dXJuZWQgYnkgdGhlIGxpc3Qgb2YgdGhlIGVsZW1lbnQncyBhdHRy
aWJ1dGVzLgogICAgIC8vIEluIHRoYXQgY2FzZSBpdCBtdXN0IGJlIHBhc3NlZCB0byBzdXBlci4K
ICAgICByZXR1cm4gW3N1cGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTphdHRyaWJ1dGUg
Zm9yUGFyYW1ldGVyOnBhcmFtZXRlcl07CkBAIC0zNzIyLDggKzM3NzEsMTAgQEAgQUxMT1dfREVQ
UkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIGlmICghY2hpbGQpCiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgKmNo
aWxkV3JhcHBlciA9IGNoaWxkLT53cmFwcGVyKCk7Ci0gICAgICAgIGlmIChjaGlsZFdyYXBwZXIg
PT0gdGFyZ2V0Q2hpbGQgfHwgKGNoaWxkLT5pc0F0dGFjaG1lbnQoKSAmJiBbY2hpbGRXcmFwcGVy
IGF0dGFjaG1lbnRWaWV3XSA9PSB0YXJnZXRDaGlsZCkpCisgICAgICAgIGlmIChjaGlsZFdyYXBw
ZXIgPT0gdGFyZ2V0Q2hpbGQgfHwgKGNoaWxkLT5pc0F0dGFjaG1lbnQoKSAmJiBbY2hpbGRXcmFw
cGVyIGF0dGFjaG1lbnRWaWV3XSA9PSB0YXJnZXRDaGlsZCkKKyAgICAgICAgICAgIHx8IChjaGls
ZC0+aXNSZW1vdGVGcmFtZSgpICYmIGNoaWxkLT5yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgp
ID09IHRhcmdldENoaWxkKSkgewogICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgIH0KICAg
ICB9CiAgICAgcmV0dXJuIE5TTm90Rm91bmQ7CiB9CkBAIC0zNzQwLDcgKzM3OTEsNyBAQCBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1
YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZV0pIHsKICAgICAgICAg
Ly8gVHJlZSBpdGVtcyBvYmplY3QgcmV0dXJucyBhIGRpZmZlcmVudCBzZXQgb2YgY2hpbGRyZW4g
dGhhbiB0aG9zZSB0aGF0IGFyZSBpbiBjaGlsZHJlbigpCiAgICAgICAgIC8vIGJlY2F1c2UgYW4g
QVhPdXRsaW5lICh0aGUgbWFjIHJvbGUgaXMgYmVjb21lcykgaGFzIHNvbWUgb2RkIHN0aXB1bGF0
aW9ucy4KLSAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzVHJlZSgpIHx8IGJhY2tpbmdPYmpl
Y3QtPmlzVHJlZUl0ZW0oKSkKKyAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzVHJlZSgpIHx8
IGJhY2tpbmdPYmplY3QtPmlzVHJlZUl0ZW0oKSB8fCBiYWNraW5nT2JqZWN0LT5pc1JlbW90ZUZy
YW1lKCkpCiAgICAgICAgICAgICByZXR1cm4gW1tzZWxmIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZV0gY291bnRdOwogCiAgICAgICAg
IGF1dG8gY2hpbGRyZW5TaXplID0gYmFja2luZ09iamVjdC0+Y2hpbGRyZW4oKS5zaXplKCk7CkBA
IC0zNzc2LDE2ICszODI3LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAK
ICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5BdHRyaWJ1dGVdKSB7CiAgICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5jaGlsZHJlbigpLmlz
RW1wdHkoKSkgewotICAgICAgICAgICAgTlNBcnJheSAqY2hpbGRyZW4gPSBuaWw7Ci0jaWYgRU5B
QkxFKE1PREVMX0VMRU1FTlQpCi0gICAgICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNNb2Rl
bCgpKSB7Ci0gICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBjcmVhdGVOU0FycmF5KGJhY2tpbmdP
YmplY3QtPm1vZGVsRWxlbWVudENoaWxkcmVuKCksIFtdIChhdXRvJiYgY2hpbGQpIC0+IGlkIHsK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkLmdldCgpOwotICAgICAgICAgICAgICAg
IH0pLmF1dG9yZWxlYXNlKCk7Ci0gICAgICAgICAgICB9IGVsc2UKLSNlbmRpZgotICAgICAgICAg
ICAgICAgIGNoaWxkcmVuID0gW3NlbGYgcmVuZGVyV2lkZ2V0Q2hpbGRyZW5dOwotICAgICAgICAg
ICAgCisgICAgICAgICAgICBOU0FycmF5ICpjaGlsZHJlbiA9IFtzZWxmIF90cmFuc2Zvcm1TcGVj
aWFsQ2hpbGRyZW5DYXNlczpiYWNraW5nT2JqZWN0XTsKICAgICAgICAgICAgIGlmICghY2hpbGRy
ZW4pCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMzgxNiw4ICszODU4LDEzIEBA
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAgICAgICAgICAgICAvLyBUaGUg
YXR0YWNobWVudCB2aWV3IHNob3VsZCBiZSByZXR1cm5lZCwgb3RoZXJ3aXNlIEFYIHBhbGluZHJv
bWUgZXJyb3JzIG9jY3VyLgogICAgICAgICAgICAgaWQgYXR0YWNobWVudFZpZXcgPSBuaWw7Ci0g
ICAgICAgICAgICBpZiAoW3dyYXBwZXIgaXNLaW5kT2ZDbGFzczpbV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIgY2xhc3NdXSAmJiB3cmFwcGVyLmF4QmFja2luZ09iamVjdCAmJiB3cmFwcGVy
LmF4QmFja2luZ09iamVjdC0+aXNBdHRhY2htZW50KCkpCi0gICAgICAgICAgICAgICAgYXR0YWNo
bWVudFZpZXcgPSBbd3JhcHBlciBhdHRhY2htZW50Vmlld107CisgICAgICAgICAgICBpZiAoW3dy
YXBwZXIgaXNLaW5kT2ZDbGFzczpbV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgY2xhc3Nd
XSAmJiB3cmFwcGVyLmF4QmFja2luZ09iamVjdCkgeworICAgICAgICAgICAgICAgIGlmICh3cmFw
cGVyLmF4QmFja2luZ09iamVjdC0+aXNBdHRhY2htZW50KCkpCisgICAgICAgICAgICAgICAgICAg
IGF0dGFjaG1lbnRWaWV3ID0gW3dyYXBwZXIgYXR0YWNobWVudFZpZXddOworICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKHdyYXBwZXIuYXhCYWNraW5nT2JqZWN0LT5pc1JlbW90ZUZyYW1lKCkpCisg
ICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRWaWV3ID0gd3JhcHBlci5heEJhY2tpbmdPYmpl
Y3QtPnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkuZ2V0KCk7CisgICAgICAgICAgICB9CisK
ICAgICAgICAgICAgIFtzdWJhcnJheSBhZGRPYmplY3Q6YXR0YWNobWVudFZpZXcgPyBhdHRhY2ht
ZW50VmlldyA6IHdyYXBwZXJdOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5jcHAKaW5kZXggMjU4YzE0Yjg2YThiLi41NzE3YWRlMmE0NTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0xMDg1LDYgKzEwODUsMTEgQEAgUmVtb3Rl
QVhPYmplY3RSZWYgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6YWNjZXNzaWJpbGl0eVJlbW90ZU9i
amVjdCgpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK0ludFBvaW50IEVtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQ6OmFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCgpCit7CisgICAgcmV0dXJu
IHsgfTsKK30KKwogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiB2b2lk
IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnNldEFYSXNvbGF0ZWRUcmVlUm9vdChXZWJDb3JlOjpB
WENvcmVPYmplY3QqKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
RnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9h
ZGVyQ2xpZW50LmgKaW5kZXggMDk4Y2U1OGQxMTE5Li40NjcyZGUyOTg1MzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTg0LDYgKzE4
NCw3IEBAIHByaXZhdGU6CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZW1vdGVBWE9iamVj
dFJlZiBhY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkgZmluYWw7CisgICAgSW50UG9pbnQgYWNj
ZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCkgZmluYWw7CiAjaWYgRU5BQkxFKEFDQ0VTU0lC
SUxJVFlfSVNPTEFURURfVFJFRSkKICAgICB2b2lkIHNldEFYSXNvbGF0ZWRUcmVlUm9vdChXZWJD
b3JlOjpBWENvcmVPYmplY3QqKSBmaW5hbDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0xvY2FsRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Mb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggYjJkNTZmMDUwYWU5Li4wMGQzYWQ1
ZTJjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2NhbEZyYW1lTG9hZGVy
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvY2FsRnJhbWVMb2FkZXJDbGll
bnQuaApAQCAtMjkwLDYgKzI5MCw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICAvLyBBbGxvdyBhbiBhY2Nlc3NpYmlsaXR5IG9iamVjdCB0byByZXRyaWV2ZSBhIEZyYW1lIHBh
cmVudCBpZiB0aGVyZSdzIG5vIFBsYXRmb3JtV2lkZ2V0LgogICAgIHZpcnR1YWwgUmVtb3RlQVhP
YmplY3RSZWYgYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpID0gMDsKKyAgICB2aXJ0dWFsIElu
dFBvaW50IGFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCgpID0gMDsKICNpZiBFTkFCTEUo
QUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQogICAgIHZpcnR1YWwgdm9pZCBzZXRBWElzb2xh
dGVkVHJlZVJvb3QoQVhDb3JlT2JqZWN0KikgPSAwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApp
bmRleCA1ZDJmZWFiNjU3OTYuLmI0YzI1MmUwMjM2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0y
MjA4LDExICsyMjA4LDE4IEBAIGJvb2wgUGFnZTo6c2hvdWxkVXBkYXRlQWNjZXNzaWJpbGl0eVJl
Z2lvbnMoKSBjb25zdAogICAgIEFTU0VSVChtX2xhc3RSZW5kZXJpbmdVcGRhdGVUaW1lc3RhbXAg
Pj0gbV9sYXN0QWNjZXNzaWJpbGl0eU9iamVjdFJlZ2lvbnNVcGRhdGUpOwogICAgIGlmICgobV9s
YXN0UmVuZGVyaW5nVXBkYXRlVGltZXN0YW1wIC0gbV9sYXN0QWNjZXNzaWJpbGl0eU9iamVjdFJl
Z2lvbnNVcGRhdGUpIDwgdXBkYXRlSW50ZXJ2YWwpIHsKICAgICAgICAgLy8gV2UndmUgYWxyZWFk
eSB1cGRhdGVkIGFjY2Vzc2liaWxpdHkgb2JqZWN0IHJlY3RzIHJlY2VudGx5LCBzbyBza2lwIHRo
aXMgdXBkYXRlIGFuZCBzY2hlZHVsZSBhbm90aGVyIGZvciBsYXRlci4KLSAgICAgICAgYXV0byog
bG9jYWxNYWluRnJhbWUgPSBkeW5hbWljRG93bmNhc3Q8TG9jYWxGcmFtZT4obWFpbkZyYW1lKCkp
OwotICAgICAgICBSZWZQdHIgbWFpbkRvY3VtZW50ID0gbG9jYWxNYWluRnJhbWUgPyBsb2NhbE1h
aW5GcmFtZS0+ZG9jdW1lbnQoKSA6IG51bGxwdHI7CisKKyAgICAgICAgUmVmUHRyPERvY3VtZW50
PiBwcm90ZWN0ZWRNYWluRG9jdW1lbnQgPSBudWxscHRyOworICAgICAgICBpZiAoYXV0byogbG9j
YWxNYWluRnJhbWUgPSBkeW5hbWljRG93bmNhc3Q8TG9jYWxGcmFtZT4obWFpbkZyYW1lKCkpKQor
ICAgICAgICAgICAgcHJvdGVjdGVkTWFpbkRvY3VtZW50ID0gbG9jYWxNYWluRnJhbWUgPyBsb2Nh
bE1haW5GcmFtZS0+ZG9jdW1lbnQoKSA6IG51bGxwdHI7CisgICAgICAgIGVsc2UgaWYgKGF1dG8q
IHJlbW90ZUZyYW1lID0gZHluYW1pY0Rvd25jYXN0PFJlbW90ZUZyYW1lPihtYWluRnJhbWUoKSkp
IHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBvd25lciA9IHJlbW90ZUZyYW1lLT5vd25lckVsZW1l
bnQoKSkKKyAgICAgICAgICAgICAgICBwcm90ZWN0ZWRNYWluRG9jdW1lbnQgPSAmKG93bmVyLT5k
b2N1bWVudCgpKTsKKyAgICAgICAgfQorCiAgICAgICAgIC8vIElmIGFjY2Vzc2liaWxpdHkgaXMg
ZW5hYmxlZCBhbmQgd2UgaGF2ZSBhIG1haW4gZG9jdW1lbnQsIHRoYXQgZG9jdW1lbnQgc2hvdWxk
IGhhdmUgYW4gQVggb2JqZWN0IGNhY2hlLgotICAgICAgICBBU1NFUlQoIW1haW5Eb2N1bWVudCB8
fCBtYWluRG9jdW1lbnQtPmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpKTsKLSAgICAgICAgaWYgKENo
ZWNrZWRQdHIgdG9wQXhPYmplY3RDYWNoZSA9IG1haW5Eb2N1bWVudCA/IG1haW5Eb2N1bWVudC0+
ZXhpc3RpbmdBWE9iamVjdENhY2hlKCkgOiBudWxscHRyKQorICAgICAgICBBU1NFUlQoIXByb3Rl
Y3RlZE1haW5Eb2N1bWVudCB8fCBwcm90ZWN0ZWRNYWluRG9jdW1lbnQtPmV4aXN0aW5nQVhPYmpl
Y3RDYWNoZSgpKTsKKyAgICAgICAgaWYgKENoZWNrZWRQdHIgdG9wQXhPYmplY3RDYWNoZSA9IHBy
b3RlY3RlZE1haW5Eb2N1bWVudCA/IHByb3RlY3RlZE1haW5Eb2N1bWVudC0+ZXhpc3RpbmdBWE9i
amVjdENhY2hlKCkgOiBudWxscHRyKQogICAgICAgICAgICAgdG9wQXhPYmplY3RDYWNoZS0+c2No
ZWR1bGVPYmplY3RSZWdpb25zVXBkYXRlKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuY3BwCmluZGV4IDcxMmMwYjIyMGZkMC4uNTBiMGEy
NWNmZGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmNwcApAQCAtMTAwLDYgKzEwMCwy
MSBAQCB2b2lkIFJlbW90ZUZyYW1lOjpicm9hZGNhc3RGcmFtZVJlbW92YWxUb090aGVyUHJvY2Vz
c2VzKCkKICAgICBtX2NsaWVudC0+YnJvYWRjYXN0RnJhbWVSZW1vdmFsVG9PdGhlclByb2Nlc3Nl
cygpOwogfQogCit2b2lkIFJlbW90ZUZyYW1lOjp1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxp
dHlPZmZzZXQoSW50UG9pbnQgb2Zmc2V0KQoreworICAgIG1fY2xpZW50LT51cGRhdGVSZW1vdGVG
cmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQoZnJhbWVJRCgpLCBvZmZzZXQpOworfQorCit2b2lkIFJl
bW90ZUZyYW1lOjp1bmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRl
bnRpZmllcikKK3sKKyAgICBtX2NsaWVudC0+dW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1l
cyhwcm9jZXNzSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlRnJhbWU6OmJpbmRSZW1vdGVB
Y2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgc3RkOjpzcGFuPGNvbnN0
IHVpbnQ4X3Q+IGRhdGFUb2tlbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6OnNw
YW48Y29uc3QgdWludDhfdD4sIGludCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgcmV0
dXJuIG1fY2xpZW50LT5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhwcm9jZXNzSWRlbnRp
ZmllciwgZnJhbWVJRCgpLCBkYXRhVG9rZW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
K30KKwogRnJhbWVWaWV3KiBSZW1vdGVGcmFtZTo6dmlydHVhbFZpZXcoKSBjb25zdAogewogICAg
IHJldHVybiBtX3ZpZXcuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jl
bW90ZUZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmgKaW5kZXggMjdl
ZDg0MGQwODJlLi5jZDgyYTc5Y2MzMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UmVtb3RlRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmgKQEAg
LTMzLDYgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBJbnRQb2ludDsK
IGNsYXNzIFJlbW90ZURPTVdpbmRvdzsKIGNsYXNzIFJlbW90ZUZyYW1lQ2xpZW50OwogY2xhc3Mg
UmVtb3RlRnJhbWVWaWV3OwpAQCAtNjIsNiArNjMsOSBAQCBwdWJsaWM6CiAgICAgTWFya2FibGU8
TGF5ZXJIb3N0aW5nQ29udGV4dElkZW50aWZpZXI+IGxheWVySG9zdGluZ0NvbnRleHRJZGVudGlm
aWVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXllckhvc3RpbmdDb250ZXh0SWRlbnRpZmllcjsgfQog
CiAgICAgU3RyaW5nIHJlbmRlclRyZWVBc1RleHQoc2l6ZV90IGJhc2VJbmRlbnQsIE9wdGlvblNl
dDxSZW5kZXJBc1RleHRGbGFnPik7CisgICAgdm9pZCBiaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZy
YW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIGludCk+JiYpOwor
ICAgIHZvaWQgdXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KEludFBvaW50KTsK
KyAgICB2b2lkIHVuYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50KTsKIAogcHJpdmF0
ZToKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBSZW1vdGVGcmFtZShQYWdlJiwgVW5pcXVl
UmVmPFJlbW90ZUZyYW1lQ2xpZW50PiYmLCBGcmFtZUlkZW50aWZpZXIsIEhUTUxGcmFtZU93bmVy
RWxlbWVudCosIEZyYW1lKiBwYXJlbnQsIE1hcmthYmxlPExheWVySG9zdGluZ0NvbnRleHRJZGVu
dGlmaWVyPiwgRnJhbWUqIG9wZW5lciA9IG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9SZW1vdGVGcmFtZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1v
dGVGcmFtZUNsaWVudC5oCmluZGV4IDRlZmQxMDNmMzkxMi4uNTQxYTBkMDFjNTYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZUNsaWVudC5oCkBAIC0zMCw2ICszMCw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRGF0YVNlZ21lbnQ7CiBjbGFzcyBGcmFtZUxvYWRS
ZXF1ZXN0OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luRGF0YTsKQEAgLTQ4
LDYgKzQ5LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHJlbmRlclRyZWVBc1RleHQo
c2l6ZV90IGJhc2VJbmRlbnQsIE9wdGlvblNldDxSZW5kZXJBc1RleHRGbGFnPikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBicm9hZGNhc3RGcmFtZVJlbW92YWxUb090aGVyUHJvY2Vzc2VzKCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZVBhZ2UoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGJp
bmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgRnJhbWVJ
ZGVudGlmaWVyIHRhcmdldCwgY29uc3Qgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGFUb2tl
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4s
IGludCk+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3Np
YmlsaXR5T2Zmc2V0KEZyYW1lSWRlbnRpZmllciB0YXJnZXQsIEludFBvaW50KSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHVuYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50KSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGZvY3VzKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmZvY3VzKCkg
PSAwOwogICAgIHZpcnR1YWwgflJlbW90ZUZyYW1lQ2xpZW50KCkgeyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggODRmYzQxOWU1OWNhLi40MmVlZTY2YWIxNmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL0RyYWdBY3Rpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0b3JDbGllbnQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvY3VzRGlyZWN0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9GcmFtZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lucHV0TW9kZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTWVkaWFDb250cm9sc0NvbnRleHRNZW51SXRlbS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2Nyb2xsVHlwZXMuaD4KQEAgLTMxOCw3ICszMTksNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGV4ZWN1dGVVbmRvUmVkbyhVbmRvT3JSZWRvKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHdoZWVsRXZlbnRXYXNOb3RIYW5kbGVkQnlXZWJDb3JlKGNvbnN0IE5hdGl2ZVdlYldo
ZWVsRXZlbnQmKSA9IDA7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdmlydHVhbCB2b2lkIGFj
Y2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChzdGQ6OnNwYW48Y29uc3QgdWludDhf
dD4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJl
Y2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
LCBwaWRfdCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBleGVjdXRlU2F2ZWRDb21tYW5kQnlTZWxl
Y3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9yKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZVNlY3VyZUlucHV0U3RhdGUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0U2VjdXJlSW5w
dXRTdGF0ZSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zp
c2lvbmFsUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFs
UGFnZVByb3h5LmNwcAppbmRleCAwNTAzMDg2MzkxZmIuLjNlM2I4MTk1ZDA0OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcApAQCAtNTQ1
LDcgKzU0NSw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OnJlcXVlc3RQYXNzd29yZEZv
clF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QKICNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCi12b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpyZWdpc3RlcldlYlByb2Nlc3NB
Y2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCit2b2lkIFBy
b3Zpc2lvbmFsUGFnZVByb3h5OjpyZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4o
c3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEsIEZyYW1lSWRlbnRpZmllcikKIHsKICAgICBt
X2FjY2Vzc2liaWxpdHlUb2tlbiA9IFZlY3RvcihkYXRhKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCmluZGV4IGRlZWNkNzZhMjAyNC4uZDBi
N2VjY2VlZmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25h
bFBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFn
ZVByb3h5LmgKQEAgLTE3Miw3ICsxNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVxdWVzdFBh
c3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIGZpbGVO
YW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKICNlbmRpZgog
I2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgcmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJp
bGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Pik7CisgICAgdm9pZCByZWdpc3Rlcldl
YlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFU
Rk9STShXUEUpCiAgICAgdm9pZCBiaW5kQWNjZXNzaWJpbGl0eVRyZWUoY29uc3QgU3RyaW5nJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCmluZGV4IGYyZmM4YTU0
ZDg4My4uMjMwMzA3YTE3NGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJGcmFtZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVBy
b3h5LmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2lu
Y2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFzdGVib2FyZFBy
b3h5LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzc1Bvb2wuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiV2Vi
c2l0ZVBvbGljaWVzRGF0YS5oIgpAQCAtMTg0LDYgKzE4NSwxNCBAQCB2b2lkIFdlYkZyYW1lUHJv
eHk6Om5hdmlnYXRlU2VydmljZVdvcmtlckNsaWVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25D
b250ZXh0SQogICAgIH0pOwogfQogCit2b2lkIFdlYkZyYW1lUHJveHk6OmJpbmRBY2Nlc3NpYmls
aXR5RnJhbWVXaXRoRGF0YShzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSkKK3sKKyAgICBp
ZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzOjpCaW5kQWNjZXNzaWJpbGl0eUZyYW1lV2l0aERhdGEobV9mcmFtZUlELCBk
YXRhKSk7Cit9CisKIHZvaWQgV2ViRnJhbWVQcm94eTo6bG9hZFVSTChjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiByZWZlcnJlcikKIHsKICAgICBpZiAoIW1fcGFnZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaAppbmRleCBiMGRhZWIwZTY0ZmMuLjcxNWJiODBiYWI2
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaApAQCAtMTcwLDYgKzE3
MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW90ZVByb2Nlc3NEaWRUZXJtaW5hdGUoKTsKICAg
ICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiB3ZWJQYWdlSURJbkN1cnJl
bnRQcm9jZXNzKCk7CiAgICAgdm9pZCBub3RpZnlQYXJlbnRPZkxvYWRDb21wbGV0aW9uKFdlYlBy
b2Nlc3NQcm94eSYpOworICAgIHZvaWQgcmVtb3ZlUmVtb3RlUGFnZXNGb3JTdXNwZW5zaW9uKCk7
CisgICAgdm9pZCBiaW5kQWNjZXNzaWJpbGl0eUZyYW1lV2l0aERhdGEoc3RkOjpzcGFuPGNvbnN0
IHVpbnQ4X3Q+KTsKIAogICAgIGJvb2wgaXNGb2N1c2VkKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDQ2YzIxNDNhOTRhYi4uZjM3MTFlODU3
MjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEyOTUs
OCArMTI5NSwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3dhcFRvUHJvdmlzaW9uYWxQYWdlKHN0
ZDo6dW5pcXVlX3B0cjxQcm92aXNpb25hbFBhZ2VQcm94eT4gcAogCiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgYXV0byBhY2Nlc3NpYmlsaXR5VG9rZW4gPSBwcm92aXNpb25hbFBhZ2UtPnRha2VB
Y2Nlc3NpYmlsaXR5VG9rZW4oKTsKLSAgICBpZiAoIWFjY2Vzc2liaWxpdHlUb2tlbi5pc0VtcHR5
KCkpCi0gICAgICAgIHJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbih7IGFjY2Vz
c2liaWxpdHlUb2tlbi5kYXRhKCksIGFjY2Vzc2liaWxpdHlUb2tlbi5zaXplKCkgfSk7CisgICAg
aWYgKCFhY2Nlc3NpYmlsaXR5VG9rZW4uaXNFbXB0eSgpKSB7CisgICAgICAgIHJlZ2lzdGVyV2Vi
UHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbih7IGFjY2Vzc2liaWxpdHlUb2tlbi5kYXRhKCksIGFj
Y2Vzc2liaWxpdHlUb2tlbi5zaXplKCkgfSwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHsKKyAg
ICAgICAgICAgIE9iamVjdElkZW50aWZpZXI8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyVHlwZT4o
MCksCisgICAgICAgICAgICBPYmplY3RJZGVudGlmaWVyPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyVHlwZT4oMCkKKyAgICAgICAgfSk7CisgICAgfQogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RL
KSB8fCBQTEFURk9STShXUEUpCiAgICAgYXV0byBhY2Nlc3NpYmlsaXR5UGx1Z0lEID0gcHJvdmlz
aW9uYWxQYWdlLT5hY2Nlc3NpYmlsaXR5UGx1Z0lEKCk7CkBAIC0xMzc0NCw2ICsxMzc0OCwyMiBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6YWRkQ29uc29sZU1lc3NhZ2UoRnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIE1lc3NhZ2VTb3VyY2UgbWVzcwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFk
ZENvbnNvbGVNZXNzYWdlIHsgZnJhbWVJRCwgbWVzc2FnZVNvdXJjZSwgbWVzc2FnZUxldmVsLCBt
ZXNzYWdlLCBjb3JlSWRlbnRpZmllciB9KTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OmJpbmRS
ZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBk
YXRhVG9rZW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+
LCBpbnQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNl
bmRTeW5jVG9Qcm9jZXNzQ29udGFpbmluZ0ZyYW1lKGZyYW1lSUQsIE1lc3NhZ2VzOjpXZWJQYWdl
OjpCaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhwcm9jZXNzSWRlbnRpZmllciwgZnJhbWVJ
RCwgZGF0YVRva2VuKSk7CisgICAgaWYgKCFzZW5kUmVzdWx0LnN1Y2NlZWRlZCgpKQorICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9LCAwKTsKKworICAgIGF1dG8gW2ZyYW1lRGF0
YVRva2VuLCBmcmFtZVByb2Nlc3NJZGVudGlmaWVyXSA9IHNlbmRSZXN1bHQudGFrZVJlcGx5KCk7
CisKKyAgICBjb21wbGV0aW9uSGFuZGxlcihmcmFtZURhdGFUb2tlbiwgZnJhbWVQcm9jZXNzSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVSZW1vdGVGcmFtZUFjY2Vz
c2liaWxpdHlPZmZzZXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6
OkludFBvaW50IG9mZnNldCkKK3sKKyAgICBzZW5kVG9Qcm9jZXNzQ29udGFpbmluZ0ZyYW1lKGZy
YW1lSUQsIE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVSZW1vdGVQYWdlQWNjZXNzaWJpbGl0eU9m
ZnNldChmcmFtZUlELCBvZmZzZXQpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1
bmRlZiBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKaW5kZXggY2M4NmRkYzZhNWJmLi43MDM0OGM2ZjY2MWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMzU1LDcgKzEzNTUsNyBAQCBwdWJsaWM6CiAK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICAvLyBDYWxsZWQgYnkgdGhlIHdlYiBwcm9jZXNzIHRo
cm91Z2ggYSBtZXNzYWdlLgotICAgIHZvaWQgcmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0
eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Pik7CisgICAgdm9pZCByZWdpc3RlcldlYlBy
b2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIpOwogICAgIC8vIENhbGxlZCBieSB0aGUgVUkgcHJvY2VzcyB3aGVu
IGl0IGlzIHJlYWR5IHRvIHNlbmQgaXRzIHRva2VucyB0byB0aGUgd2ViIHByb2Nlc3MuCiAgICAg
dm9pZCByZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoc3RkOjpzcGFuPGNvbnN0
IHVpbnQ4X3Q+IGVsZW1lbnRUb2tlbiwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHdpbmRvd1Rv
a2VuKTsKICAgICB2b2lkIHJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHR5cGVzLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pOwpAQCAtMjk3
OCw2ICsyOTc4LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGZvY3VzUmVtb3RlRnJhbWUoSVBDOjpD
b25uZWN0aW9uJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lkIHBvc3RNZXNz
YWdlVG9SZW1vdGUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHNvdXJjZSwgY29uc3QgU3RyaW5n
JiBzb3VyY2VPcmlnaW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciB0YXJnZXQsIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiB0YXJnZXRPcmlnaW4sIGNvbnN0IFdl
YkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJik7CiAgICAgdm9pZCByZW5kZXJUcmVlQXNU
ZXh0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgc2l6ZV90IGJhc2VJbmRlbnQsIE9wdGlvblNl
dDxXZWJDb3JlOjpSZW5kZXJBc1RleHRGbGFnPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJp
bmcmJik+JiYpOworICAgIHZvaWQgYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHBy
b2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHN0ZDo6c3Bhbjxjb25z
dCB1aW50OF90PiBkYXRhVG9rZW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpzcGFuPGNv
bnN0IHVpbnQ4X3Q+LCBpbnQpPiYmKTsKKyAgICB2b2lkIHVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNz
aWJpbGl0eU9mZnNldChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OkludFBvaW50
KTsKIAogICAgIHZvaWQgc2V0VGV4dEluZGljYXRvckZyb21GcmFtZShXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhJiYsIHVpbnQ2NF90KTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4
IDQ5Mzg2MjZiZjhhMi4uYTU0MmYxNzZiNTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zMjQsNyArMzI0LDcgQEAgbWVzc2Fn
ZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBFeGVjdXRlU2F2ZWRDb21tYW5kQnlTZWxlY3RvcihT
dHJpbmcgc2VsZWN0b3IpIC0+IChib29sIGhhbmRsZWQpIFN5bmNocm9ub3VzCiAKICAgICAjIFJl
bW90ZSBhY2Nlc3NpYmlsaXR5IG1lc3NhZ2VzCi0gICAgUmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNz
aWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhKQorICAgIFJlZ2lzdGVy
V2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0
YSwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCiAKICAgICAjIFNwZWVjaCBtZXNz
YWdlcwogICAgIEdldElzU3BlYWtpbmcoKSAtPiAoYm9vbCBpc1NwZWFraW5nKSBTeW5jaHJvbm91
cwpAQCAtNjMwLDQgKzYzMCw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRm9j
dXNSZW1vdGVGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKICAgICBQb3N0
TWVzc2FnZVRvUmVtb3RlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBzb3VyY2UsIFN0cmluZyBz
b3VyY2VPcmlnaW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciB0YXJnZXQsIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiB0YXJnZXRPcmlnaW4sIHN0cnVjdCBXZWJD
b3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBtZXNzYWdlKQogICAgIFJlbmRlclRyZWVBc1Rl
eHQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGlkZW50aWZpZXIsIHNpemVfdCBiYXNlSW5kZW50
LCBPcHRpb25TZXQ8V2ViQ29yZTo6UmVuZGVyQXNUZXh0RmxhZz4gYmVoYXZpb3IpIC0+IChTdHJp
bmcgcmVuZGVyVHJlZUR1bXApIFN5bmNocm9ub3VzCisgICAgQmluZFJlbW90ZUFjY2Vzc2liaWxp
dHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGFUb2tlbikgLT4gKHN0ZDo6c3Bh
bjxjb25zdCB1aW50OF90PiB0b2tlbiwgaW50IHByb2Nlc3NJZGVudGlmaWVyKSBTeW5jaHJvbm91
cworICAgIFVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6SW50UG9pbnQgb2Zmc2V0KQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCAxMGM0
ZjZhZTEyNTAuLjYzODhjYjQ2NzJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTExMCw3ICsxMTAsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgY2xlYXJBbGxFZGl0Q29tbWFuZHMoKSBvdmVycmlkZTsKICAgICBib29sIGNhblVuZG9S
ZWRvKFVuZG9PclJlZG8pIG92ZXJyaWRlOwogICAgIHZvaWQgZXhlY3V0ZVVuZG9SZWRvKFVuZG9P
clJlZG8pIG92ZXJyaWRlOwotICAgIHZvaWQgYWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJl
Y2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Pikgb3ZlcnJpZGU7CisgICAgdm9pZCBhY2Nl
c3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHBpZF90KSBvdmVycmlkZTsKICAgICBib29sIGV4
ZWN1dGVTYXZlZENvbW1hbmRCeVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IpIG92ZXJy
aWRlOwogICAgIHZvaWQgdXBkYXRlU2VjdXJlSW5wdXRTdGF0ZSgpIG92ZXJyaWRlOwogICAgIHZv
aWQgcmVzZXRTZWN1cmVJbnB1dFN0YXRlKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggY2IyM2Y0OTc0YTZiLi5i
NWFkZGRjZTIzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MubW0KQEAgLTM4OSw3ICszODksNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpl
eGVjdXRlVW5kb1JlZG8oVW5kb09yUmVkbyB1bmRvT3JSZWRvKQogICAgIHJldHVybiAodW5kb09y
UmVkbyA9PSBVbmRvT3JSZWRvOjpVbmRvKSA/IFtbY29udGVudFZpZXcoKSB1bmRvTWFuYWdlcl0g
dW5kb10gOiBbW2NvbnRlbnRWaWV3KCkgdW5kb01hbmFnZXJdIHJlZG9dOwogfQogCi12b2lkIFBh
Z2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpz
cGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmls
aXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEs
IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgcGlkX3QpCiB7CiAgICAgTlNEYXRhICpyZW1vdGVU
b2tlbiA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczpkYXRhLmRhdGEoKSBsZW5ndGg6ZGF0YS5zaXpl
KCldOwogICAgIFtjb250ZW50VmlldygpIF9zZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2Vu
OnJlbW90ZVRva2VuXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVBy
b3h5SU9TLm1tCmluZGV4IDViMTBmNTljNjY2MS4uZGViNGQ1OGU1ZmQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTc2MywxMSArNzYz
LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoYm9v
bCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0
ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBk
YXRhKQordm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlU
b2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSwgRnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQpCiB7Ci0gICAgcHJvdGVjdGVkUGFnZUNsaWVudCgpLT5hY2Nlc3NpYmlsaXR5V2ViUHJvY2Vz
c1Rva2VuUmVjZWl2ZWQoZGF0YSk7Ci19ICAgIAotCisgICAgcGFnZUNsaWVudCgpLmFjY2Vzc2li
aWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChkYXRhLCBmcmFtZUlELCBtZXNzYWdlU2VuZGVy
Q29ubmVjdGlvbigpLT5yZW1vdGVQcm9jZXNzSUQoKSk7Cit9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpyZWxheUFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRp
b25OYW1lLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKaW5kZXggZmI2YzYwNzg2N2Fm
Li5iZjhkYTQzMGQ4YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9Q
YWdlQ2xpZW50SW1wbE1hYy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdl
Q2xpZW50SW1wbE1hYy5oCkBAIC0xNzYsNyArMTc2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdl
c3R1cmVFdmVudFdhc05vdEhhbmRsZWRCeVdlYkNvcmUoY29uc3QgTmF0aXZlV2ViR2VzdHVyZUV2
ZW50Jikgb3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIHZvaWQgYWNjZXNzaWJpbGl0eVdlYlByb2Nl
c3NUb2tlblJlY2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Pikgb3ZlcnJpZGU7CisgICAg
dm9pZCBhY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0
IHVpbnQ4X3Q+LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHBpZF90KSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBhc3Npc3Rp
dmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KaW5kZXggMDc4MGYxOGRh
MWMyLi4wMTUwZWM0NTEyY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9QYWdlQ2xpZW50SW1wbE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
UGFnZUNsaWVudEltcGxNYWMubW0KQEAgLTU4MSw5ICs1ODEsOSBAQCB2b2lkIFBhZ2VDbGllbnRJ
bXBsOjpzZXRUZXh0SW5kaWNhdG9yQW5pbWF0aW9uUHJvZ3Jlc3MoZmxvYXQgcHJvZ3Jlc3MpCiAg
ICAgbV9pbXBsLT5zZXRUZXh0SW5kaWNhdG9yQW5pbWF0aW9uUHJvZ3Jlc3MocHJvZ3Jlc3MpOwog
fQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVj
ZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCit2b2lkIFBhZ2VDbGllbnRJbXBs
OjphY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVp
bnQ4X3Q+IGRhdGEsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBwaWRfdCBwaWQp
CiB7Ci0gICAgbV9pbXBsLT5zZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuKFtOU0RhdGEg
ZGF0YVdpdGhCeXRlczpkYXRhLmRhdGEoKSBsZW5ndGg6ZGF0YS5zaXplKCldKTsKKyAgICBtX2lt
cGwtPnNldEFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW4oW05TRGF0YSBkYXRhV2l0aEJ5dGVz
OmRhdGEuZGF0YSgpIGxlbmd0aDpkYXRhLnNpemUoKV0sIGZyYW1lSUQsIHBpZCk7CiB9CiAgICAg
CiB2b2lkIFBhZ2VDbGllbnRJbXBsOjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGNv
bnN0IExheWVyVHJlZUNvbnRleHQmIGxheWVyVHJlZUNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCBjZmIxMGZkYmI0MTMuLjg2
OTYxN2EyOWQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBh
Z2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVBy
b3h5TWFjLm1tCkBAIC0zMDYsMTIgKzMwNiwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVy
Zm9ybURpY3Rpb25hcnlMb29rdXAoY29uc3QgRGljdGlvbmFyeVBvcHVwSW5mbyYgZGljdGlvbgog
ICAgIHByb3RlY3RlZFBhZ2VDbGllbnQoKS0+ZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAoZGlj
dGlvbmFyeVBvcHVwSW5mbyk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZWdpc3RlcldlYlBy
b2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCit2
b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0
ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKIHsK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAg
ICBwcm90ZWN0ZWRQYWdlQ2xpZW50KCktPmFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNl
aXZlZChkYXRhKTsKKyAgICBwcm90ZWN0ZWRQYWdlQ2xpZW50KCktPmFjY2Vzc2liaWxpdHlXZWJQ
cm9jZXNzVG9rZW5SZWNlaXZlZChkYXRhLCBmcmFtZUlELCBtZXNzYWdlU2VuZGVyQ29ubmVjdGlv
bigpLT5yZW1vdGVQcm9jZXNzSUQoKSk7CiB9ICAgIAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bWFr
ZUZpcnN0UmVzcG9uZGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJbXBs
LmgKaW5kZXggMDNkZmRhZWUxNTNjLi41YTJlMTI5ZmRjOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9XZWJWaWV3SW1wbC5oCkBAIC00NDgsNyArNDQ4LDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0SWdub3Jlc01vdXNlRHJhZ2dlZEV2ZW50cyhib29sKTsKICAgICBib29sIGlnbm9y
ZXNNb3VzZURyYWdnZWRFdmVudHMoKSBjb25zdCB7IHJldHVybiBtX2lnbm9yZXNNb3VzZURyYWdn
ZWRFdmVudHM7IH0KIAotICAgIHZvaWQgc2V0QWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlbihO
U0RhdGEgKik7CisgICAgdm9pZCBzZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuKE5TRGF0
YSAqLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHBpZF90KTsKICAgICB2b2lkIGFjY2Vzc2li
aWxpdHlSZWdpc3RlclVJUHJvY2Vzc1Rva2VucygpOwogICAgIHZvaWQgdXBkYXRlUmVtb3RlQWNj
ZXNzaWJpbGl0eVJlZ2lzdHJhdGlvbihib29sIHJlZ2lzdGVyUHJvY2Vzcyk7CiAgICAgaWQgYWNj
ZXNzaWJpbGl0eUZvY3VzZWRVSUVsZW1lbnQoKTsKQEAgLTkyNyw2ICs5MjcsNyBAQCBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICBib29sIG1fYWxsb3dzTWFnbmlmaWNhdGlv
biB7IGZhbHNlIH07CiAKICAgICBSZXRhaW5QdHI8TlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlFbGVt
ZW50PiBtX3JlbW90ZUFjY2Vzc2liaWxpdHlDaGlsZDsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxl
RGljdGlvbmFyeT4gbV9yZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVDYWNoZTsKIAogICAgIFJlZlB0
cjxXZWJDb3JlOjpJbWFnZT4gbV9wcm9taXNlZEltYWdlOwogICAgIFN0cmluZyBtX3Byb21pc2Vk
RmlsZW5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmll
d0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwubW0KaW5k
ZXggNWJkZTExMTYyNzkwLi5hNGIzMDdkNzZlNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV2ViVmlld0ltcGwubW0KQEAgLTM0ODEsMTAgKzM0ODEsMTIgQEAgdm9pZCBXZWJWaWV3
SW1wbDo6c2V0SWdub3Jlc01vdXNlRHJhZ2dlZEV2ZW50cyhib29sIGlnbm9yZXNNb3VzZURyYWdn
ZWRFdmVudHMpCiAgICAgbV9pZ25vcmVzTW91c2VEcmFnZ2VkRXZlbnRzID0gaWdub3Jlc01vdXNl
RHJhZ2dlZEV2ZW50czsKIH0KIAotdm9pZCBXZWJWaWV3SW1wbDo6c2V0QWNjZXNzaWJpbGl0eVdl
YlByb2Nlc3NUb2tlbihOU0RhdGEgKmRhdGEpCit2b2lkIFdlYlZpZXdJbXBsOjpzZXRBY2Nlc3Np
YmlsaXR5V2ViUHJvY2Vzc1Rva2VuKE5TRGF0YSAqZGF0YSwgV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIHBpZF90IHBpZCkKIHsKLSAgICBtX3JlbW90ZUFjY2Vzc2liaWxpdHlDaGls
ZCA9IGRhdGEubGVuZ3RoID8gYWRvcHROUyhbW05TQWNjZXNzaWJpbGl0eVJlbW90ZVVJRWxlbWVu
dCBhbGxvY10gaW5pdFdpdGhSZW1vdGVUb2tlbjpkYXRhXSkgOiBuaWw7Ci0gICAgdXBkYXRlUmVt
b3RlQWNjZXNzaWJpbGl0eVJlZ2lzdHJhdGlvbih0cnVlKTsKKyAgICBpZiAocGlkID09IG1fcGFn
ZS0+cHJvY2VzcygpLnByb2Nlc3NJRCgpKSB7CisgICAgICAgIG1fcmVtb3RlQWNjZXNzaWJpbGl0
eUNoaWxkID0gZGF0YS5sZW5ndGggPyBhZG9wdE5TKFtbTlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlF
bGVtZW50IGFsbG9jXSBpbml0V2l0aFJlbW90ZVRva2VuOmRhdGFdKSA6IG5pbDsKKyAgICAgICAg
dXBkYXRlUmVtb3RlQWNjZXNzaWJpbGl0eVJlZ2lzdHJhdGlvbih0cnVlKTsKKyAgICB9CiB9CiAK
IHZvaWQgV2ViVmlld0ltcGw6OnVwZGF0ZVJlbW90ZUFjY2Vzc2liaWxpdHlSZWdpc3RyYXRpb24o
Ym9vbCByZWdpc3RlclByb2Nlc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVu
dC5jcHAKaW5kZXggN2QyYTQyNjVmZDVjLi5mM2Y3M2YzNjdlYWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJMb2NhbEZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
TG9jYWxGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTE4MDcsNiArMTgwNywxMiBAQCB2b2lkIFdl
YkxvY2FsRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbERlc3Ryb3lHbG9iYWxPYmplY3RG
b3JET01XaW5kb3dFeHRlbgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgCitXZWJDb3JlOjpJ
bnRQb2ludCBXZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50OjphY2Nlc3NpYmlsaXR5UmVtb3RlRnJh
bWVPZmZzZXQoKQoreworICAgIFJlZlB0ciB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAg
IHJldHVybiB3ZWJQYWdlID8gd2ViUGFnZS0+YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0
KCkgOiBJbnRQb2ludCgpOworfQorCiBSZW1vdGVBWE9iamVjdFJlZiBXZWJMb2NhbEZyYW1lTG9h
ZGVyQ2xpZW50OjphY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkKIHsKICAgICBSZWZQdHIgd2Vi
UGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVu
dC5oCmluZGV4IDg4YzhjYzVjYjcyZS4uOWYzYjY3ZjBmY2I4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJMb2Nh
bEZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTI0MCw2ICsyNDAsNyBAQCBwcml2YXRlOgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgUmVtb3RlQVhPYmplY3RSZWYgYWNjZXNzaWJpbGl0eVJlbW90
ZU9iamVjdCgpIGZpbmFsOworICAgIFdlYkNvcmU6OkludFBvaW50IGFjY2Vzc2liaWxpdHlSZW1v
dGVGcmFtZU9mZnNldCgpIGZpbmFsOwogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVE
X1RSRUUpCiAgICAgdm9pZCBzZXRBWElzb2xhdGVkVHJlZVJvb3QoV2ViQ29yZTo6QVhDb3JlT2Jq
ZWN0KikgZmluYWw7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuY3BwCmluZGV4
IDhjYmZmMmM5YjhjOS4uYzI4OTE3ZDVlYzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVu
dC5jcHAKQEAgLTk2LDYgKzk2LDQyIEBAIFN0cmluZyBXZWJSZW1vdGVGcmFtZUNsaWVudDo6cmVu
ZGVyVHJlZUFzVGV4dChzaXplX3QgYmFzZUluZGVudCwgT3B0aW9uU2V0PFJlbmRlCiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAordm9pZCBXZWJSZW1vdGVGcmFtZUNsaWVudDo6dW5iaW5kUmVtb3Rl
QWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIpCit7CisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgLy8gTWFrZSBzdXJlIEFwcEtpdCBzeXN0ZW0ga25vd3MgYWJvdXQgb3Vy
IHJlbW90ZSBVSSBwcm9jZXNzIHN0YXR1cyBub3cuCisgICAgaWYgKFJlZlB0ciBwYWdlID0gbV9m
cmFtZS0+cGFnZSgpKQorICAgICAgICBwYWdlLT5hY2Nlc3NpYmlsaXR5TWFuYWdlUmVtb3RlRWxl
bWVudFN0YXR1cyhmYWxzZSwgcHJvY2Vzc0lkZW50aWZpZXIpOworI2Vsc2UKKyAgICBVTlVTRURf
UEFSQU0ocHJvY2Vzc0lkZW50aWZpZXIpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViUmVtb3RlRnJh
bWVDbGllbnQ6OnVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6SW50UG9pbnQgb2Zmc2V0KQoreworICAg
IGlmIChSZWZQdHIgcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgcGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpVcGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZz
ZXQoZnJhbWVJRCwgb2Zmc2V0KSk7Cit9CisKK3ZvaWQgV2ViUmVtb3RlRnJhbWVDbGllbnQ6OmJp
bmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90
PiBkYXRhVG9rZW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4
X3Q+LCBpbnQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFJlZlB0ciBwYWdlID0gbV9m
cmFtZS0+cGFnZSgpOworICAgIGlmICghcGFnZSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4geyB9LCAwKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHBhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKHByb2Nlc3NJZGVudGlmaWVy
LCBmcmFtZUlELCBkYXRhVG9rZW4pKTsKKyAgICBpZiAoIXNlbmRSZXN1bHQuc3VjY2VlZGVkKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gW3Jlc3VsdFRva2VuLCBwcm9jZXNzSWRlbnRp
ZmllclJlc3VsdF0gPSBzZW5kUmVzdWx0LnRha2VSZXBseSgpOworCisgICAgLy8gTWFrZSBzdXJl
IEFwcEtpdCBzeXN0ZW0ga25vd3MgYWJvdXQgb3VyIHJlbW90ZSBVSSBwcm9jZXNzIHN0YXR1cyBu
b3cuCisgICAgcGFnZS0+YWNjZXNzaWJpbGl0eU1hbmFnZVJlbW90ZUVsZW1lbnRTdGF0dXModHJ1
ZSwgcHJvY2Vzc0lkZW50aWZpZXJSZXN1bHQpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3Vs
dFRva2VuLCBwcm9jZXNzSWRlbnRpZmllclJlc3VsdCk7Cit9CisKIHZvaWQgV2ViUmVtb3RlRnJh
bWVDbGllbnQ6OmJyb2FkY2FzdEZyYW1lUmVtb3ZhbFRvT3RoZXJQcm9jZXNzZXMoKQogewogICAg
IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpicm9hZGNhc3RGcmFtZVJlbW92YWxUb090aGVyUHJvY2Vz
c2VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVudC5oCmluZGV4IDYyNmUwNWMzZTg4Yi4uYzg4
OWViN2U1ZmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuaApAQCAtNDgsNiArNDgsMTAg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHBvc3RNZXNzYWdlVG9SZW1vdGUoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciB0YXJnZXQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhPiB0YXJnZXRPcmlnaW4sIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBv
cnRzJikgZmluYWw7CiAgICAgdm9pZCBjaGFuZ2VMb2NhdGlvbihXZWJDb3JlOjpGcmFtZUxvYWRS
ZXF1ZXN0JiYpIGZpbmFsOwogICAgIFN0cmluZyByZW5kZXJUcmVlQXNUZXh0KHNpemVfdCBiYXNl
SW5kZW50LCBPcHRpb25TZXQ8V2ViQ29yZTo6UmVuZGVyQXNUZXh0RmxhZz4pIGZpbmFsOworICAg
IHZvaWQgYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVy
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIGludCk+JiYpIGZp
bmFsOworICAgIHZvaWQgdW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQpIGZpbmFs
OworICAgIHZvaWQgdXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6SW50UG9pbnQpIGZpbmFsOworCiAgICAgdm9pZCBi
cm9hZGNhc3RGcmFtZVJlbW92YWxUb090aGVyUHJvY2Vzc2VzKCkgZmluYWw7CiAgICAgdm9pZCBj
bG9zZVBhZ2UoKSBmaW5hbDsKICAgICB2b2lkIGZvY3VzKCkgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KaW5k
ZXggYWU0M2YxYTQ2OThiLi4wMjQ2NDM3ZTEyZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KQEAgLTc3LDYgKzc3
LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvVVRJUmVnaXN0cnkuaD4KICNpbXBvcnQgPFdlYkNvcmUv
VVRJVXRpbGl0aWVzLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJ
Lmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TQWNjZXNzaWJpbGl0eVNQSS5oPgogI2ltcG9y
dCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndp
bi9TYW5kYm94U1BJLmg+CiAKQEAgLTQwNCwxMCArNDA1LDUxIEBAIHZvaWQgV2ViUGFnZTo6Y2xl
YXJEaWN0YXRpb25BbHRlcm5hdGl2ZXMoVmVjdG9yPERpY3RhdGlvbkNvbnRleHQ+JiYgY29udGV4
dHMpCiAgICAgfSwgRG9jdW1lbnRNYXJrZXI6OlR5cGU6OkRpY3RhdGlvbkFsdGVybmF0aXZlcyk7
CiB9CiAKLXZvaWQgV2ViUGFnZTo6YWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oUmV0
YWluUHRyPE5TRGF0YT4gcmVtb3RlVG9rZW4pCit2b2lkIFdlYlBhZ2U6OmFjY2Vzc2liaWxpdHlU
cmFuc2ZlclJlbW90ZVRva2VuKFJldGFpblB0cjxOU0RhdGE+IHJlbW90ZVRva2VuLCBGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCkKIHsKICAgICBzdGQ6OnNwYW4gZGF0YVRva2VuKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtyZW1vdGVUb2tlbiBieXRlc10pLCBbcmVtb3RlVG9rZW4g
bGVuZ3RoXSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWdpc3RlcldlYlBy
b2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oZGF0YVRva2VuKSk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpSZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oZGF0YVRv
a2VuLCBmcmFtZUlEKSk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6YWNjZXNzaWJpbGl0eU1hbmFnZVJl
bW90ZUVsZW1lbnRTdGF0dXMoYm9vbCByZWdpc3RlclN0YXR1cywgaW50IHByb2Nlc3NJZGVudGlm
aWVyKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAocmVnaXN0ZXJTdGF0dXMpCisgICAg
ICAgIFtOU0FjY2Vzc2liaWxpdHlSZW1vdGVVSUVsZW1lbnQgcmVnaXN0ZXJSZW1vdGVVSVByb2Nl
c3NJZGVudGlmaWVyOnByb2Nlc3NJZGVudGlmaWVyXTsKKyAgICBlbHNlCisgICAgICAgIFtOU0Fj
Y2Vzc2liaWxpdHlSZW1vdGVVSUVsZW1lbnQgdW5yZWdpc3RlclJlbW90ZVVJUHJvY2Vzc0lkZW50
aWZpZXI6cHJvY2Vzc0lkZW50aWZpZXJdOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocmVnaXN0
ZXJTdGF0dXMpOworICAgIFVOVVNFRF9QQVJBTShwcm9jZXNzSWRlbnRpZmllcik7CisjZW5kaWYK
K30KKwordm9pZCBXZWJQYWdlOjpiaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJv
Y2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdGQ6OnNw
YW48Y29uc3QgdWludDhfdD4gZGF0YVRva2VuLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6
c3Bhbjxjb25zdCB1aW50OF90PiwgaW50KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBS
ZWZQdHIgd2ViRnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlE
KTsKKyAgICBpZiAoIXdlYkZyYW1lKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9LCAwKTsKKyAgICB9CisKKyAgICBS
ZWZQdHIgY29yZUxvY2FsRnJhbWUgPSB3ZWJGcmFtZS0+Y29yZUxvY2FsRnJhbWUoKTsKKyAgICBp
ZiAoIWNvcmVMb2NhbEZyYW1lKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9LCAwKTsKKyAgICB9CisKKyAgICBhdXRv
KiByZW5kZXJlciA9IGNvcmVMb2NhbEZyYW1lLT5jb250ZW50UmVuZGVyZXIoKTsKKyAgICBpZiAo
IXJlbmRlcmVyKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9LCAwKTsKKyAgICB9CisKKyAgICByZWdpc3RlclJlbW90
ZUZyYW1lQWNjZXNzaWJpbGl0eVRva2Vucyhwcm9jZXNzSWRlbnRpZmllciwgZGF0YVRva2VuKTsK
KworICAgIC8vIEdldCBvdXIgcmVtb3RlIHRva2VuIGRhdGEgYW5kIHNlbmQgYmFjayB0byB0aGUg
UmVtb3RlRnJhbWUuCisgICAgYXV0byByZW1vdGVUb2tlbiA9IGFjY2Vzc2liaWxpdHlSZW1vdGVU
b2tlbkRhdGEoKTsKKyAgICBzdGQ6OnNwYW4gcmVtb3RlRGF0YVRva2VuKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KFtyZW1vdGVUb2tlbiBieXRlc10pLCBbcmVtb3RlVG9rZW4gbGVu
Z3RoXSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIocmVtb3RlRGF0YVRva2VuLCBnZXRwaWQoKSk7
CiB9CiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA4ZTZhNWJhOTEyOTYuLjU2MTQwNDE0MTY4ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE1MzYs
NiArMTUzNiwxNiBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRGlkU2VsZWN0QWxsKCkKIAogI2Vu
ZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogCisjaWYgIVBMQVRGT1JNKENPQ09BKQordm9p
ZCBXZWJQYWdlOjpiaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQsIFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgaW50KT4mJikKK3sKK30KKwordm9pZCBX
ZWJQYWdlOjp1cGRhdGVSZW1vdGVQYWdlQWNjZXNzaWJpbGl0eU9mZnNldChXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OkludFBvaW50KQoreworfQorI2VuZGlmCisKIHZvaWQgV2Vi
UGFnZTo6dXBkYXRlRWRpdG9yU3RhdGVBZnRlckxheW91dElmRWRpdGFiaWxpdHlDaGFuZ2VkKCkK
IHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVwZGF0ZSBFZGl0b3JTdGF0ZUlzQ29udGVudEVk
aXRhYmxlIHRvIHRyYWNrIHdoZXRoZXIgdGhlIHN0YXRlIGlzIHJpY2hseQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDA5YjNlN2U1OTU3NS4uNzYxMGQ0
MGJjNTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBA
IC02NzEsNiArNjcxLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFySGlzdG9yeSgpOwogCiAg
ICAgdm9pZCBhY2Nlc3NpYmlsaXR5U2V0dGluZ3NEaWRDaGFuZ2UoKTsKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICB2b2lkIGFjY2Vzc2liaWxpdHlNYW5hZ2VSZW1vdGVFbGVtZW50U3RhdHVzKGJv
b2wsIGludCk7CisjZW5kaWYKKwogICAgIHZvaWQgc2NyZWVuUHJvcGVydGllc0RpZENoYW5nZSgp
OwogCiAgICAgdm9pZCBzY2FsZVBhZ2UoZG91YmxlIHNjYWxlLCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgb3JpZ2luKTsKQEAgLTEwNDMsNyArMTA0NywxMCBAQCBwdWJsaWM6CiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVBY2Nlc3NpYmlsaXR5KCk7CiAg
ICAgdm9pZCByZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoc3RkOjpzcGFuPGNv
bnN0IHVpbnQ4X3Q+IGVsZW1lbnRUb2tlbiwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHdpbmRv
d1Rva2VuKTsKKyAgICB2b2lkIHJlZ2lzdGVyUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5VG9rZW5z
KHBpZF90LCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pOwogICAgIFdLQWNjZXNzaWJpbGl0eVdl
YlBhZ2VPYmplY3QqIGFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKTsKKyAgICBXZWJDb3JlOjpJ
bnRQb2ludCBhY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKTsKKyAgICB2b2lkIGNyZWF0
ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudChwaWRfdCk7CiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJ
VFlfSVNPTEFURURfVFJFRSkKICAgICB2b2lkIGNhY2hlQVhQb3NpdGlvbihjb25zdCBXZWJDb3Jl
OjpGbG9hdFBvaW50Jik7CiAgICAgdm9pZCBjYWNoZUFYU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRT
aXplJik7CkBAIC0yMDk0LDcgKzIxMDEsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIHZvaWQgcmVxdWVzdEFjdGl2ZU5vd1BsYXlpbmdTZXNzaW9uSW5mbyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wsIFdlYkNvcmU6Ok5vd1BsYXlpbmdJbmZvJiYpPiYmKTsKICAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCkgY29uc3Q7Ci0g
ICAgdm9pZCBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tlbihSZXRhaW5QdHI8TlNEYXRh
Pik7CisgICAgdm9pZCBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tlbihSZXRhaW5QdHI8
TlNEYXRhPiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICNlbmRpZgogCiAgICAgdm9pZCBz
ZXRTaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMoYm9vbCBkaXNwYXRjaCkgeyBtX3No
b3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cyA9IGRpc3BhdGNoOyB9CkBAIC0yMjA0LDYg
KzIyMTEsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZW1vdGVQb3N0TWVzc2FnZShXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIgc291cmNlLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyIHRhcmdldCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGE+JiYgdGFyZ2V0T3JpZ2luLCBjb25zdCBXZWJDb3JlOjpNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0cyYpOwogICAgIHZvaWQgcmVuZGVyVHJlZUFzVGV4dChXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIHNpemVfdCBiYXNlSW5kZW50LCBPcHRpb25TZXQ8V2ViQ29yZTo6UmVuZGVy
QXNUZXh0RmxhZz4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmKTsKKyAgICB2
b2lkIGJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBpbnQpPiYmKTsKKyAg
ICB2b2lkIHVwZGF0ZVJlbW90ZVBhZ2VBY2Nlc3NpYmlsaXR5T2Zmc2V0KFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgV2ViQ29yZTo6SW50UG9pbnQpOwogCiAgICAgdm9pZCByZXF1ZXN0VGV4dEV4
dHJhY3Rpb24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+JiYgY29sbGVjdGlvblJl
Y3RJblJvb3RWaWV3LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlRleHRFeHRyYWN0
aW9uOjpJdGVtJiYpPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggZWQ5YzAxYWJkMTVmLi4yODdiZTYxZWU1
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgpAQCAtNDg4LDYgKzQ4OCw5IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGlu
Z0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBl
CiAgICAgQ29sbGFwc2VTZWxlY3Rpb25JbkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBm
cmFtZUlEKQogI2VuZGlmCiAKKyAgICBCaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQg
cHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdGQ6
OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YVRva2VuKSAtPiAoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4
X3Q+IHRva2VuLCBpbnQgcHJvY2Vzc0lkZW50aWZpZXIpIFN5bmNocm9ub3VzCisgICAgVXBkYXRl
UmVtb3RlUGFnZUFjY2Vzc2liaWxpdHlPZmZzZXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIFdlYkNvcmU6OkludFBvaW50IG9mZnNldCk7CisKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBXaW5kb3dBbmRWaWV3RnJhbWVzQ2hhbmdlZChzdHJ1Y3QgV2ViS2l0OjpWaWV3V2luZG93
Q29vcmRpbmF0ZXMgY29vcmRpbmF0ZXMpCiAgICAgU2V0TWFpbkZyYW1lSXNTY3JvbGxhYmxlKGJv
b2wgaXNTY3JvbGxhYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCBhN2ZkNzIzMTI3YzAuLjI4ZWU1ZGI3MGVjNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0KQEAgLTI0MywxMiArMjQzLDE0IEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXpl
QWNjZXNzaWJpbGl0eSgpCiAgICAgbV9tb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgPSBhZG9wdE5T
KFtbV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdCBhbGxvY10gaW5pdF0pOwogICAgIFttX21v
Y2tBY2Nlc3NpYmlsaXR5RWxlbWVudCBzZXRXZWJQYWdlOnRoaXNdOwogCi0gICAgYWNjZXNzaWJp
bGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oYWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0YSgpKTsK
KyAgICBSZWYgZnJhbWUgPSBDaGVja2VkUmVmKG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkpLT5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tl
bihhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCksIGZyYW1lLT5mcmFtZUlEKCkpOwogfQog
CiB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtUmVpbml0aWFsaXplKCkKIHsKLSAgICBhY2Nlc3NpYmls
aXR5VHJhbnNmZXJSZW1vdGVUb2tlbihhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCkpOwor
ICAgIFJlZiBmcmFtZSA9IENoZWNrZWRSZWYobV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKSktPmZv
Y3VzZWRPck1haW5GcmFtZSgpOworICAgIGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2Vu
KGFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSwgZnJhbWUtPmZyYW1lSUQoKSk7CiB9CiAK
IFJldGFpblB0cjxOU0RhdGE+IFdlYlBhZ2U6OmFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEo
KSBjb25zdApAQCAtNjQ0LDYgKzY0NiwxNiBAQCBOU09iamVjdCAqV2ViUGFnZTo6YWNjZXNzaWJp
bGl0eU9iamVjdEZvck1haW5GcmFtZVBsdWdpbigpCiAgICAgcmV0dXJuIG5pbDsKIH0KICAgICAK
K3ZvaWQgV2ViUGFnZTo6dXBkYXRlUmVtb3RlUGFnZUFjY2Vzc2liaWxpdHlPZmZzZXQoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpJbnRQb2ludCkKK3sKKyAgICAvLyBGSVhNRTog
SW1wbGVtZW50Cit9CisKK3ZvaWQgV2ViUGFnZTo6cmVnaXN0ZXJSZW1vdGVGcmFtZUFjY2Vzc2li
aWxpdHlUb2tlbnMocGlkX3QsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PikKK3sKKyAgICAvLyBG
SVhNRTogSW1wbGVtZW50Cit9CisKIHZvaWQgV2ViUGFnZTo6cmVnaXN0ZXJVSVByb2Nlc3NBY2Nl
c3NpYmlsaXR5VG9rZW5zKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBlbGVtZW50VG9rZW4sIHN0
ZDo6c3Bhbjxjb25zdCB1aW50OF90PikKIHsKICAgICBOU0RhdGEgKmVsZW1lbnRUb2tlbkRhdGEg
PSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZWxlbWVudFRva2VuLmRhdGEoKSBsZW5ndGg6ZWxlbWVu
dFRva2VuLnNpemUoKV07CkBAIC02NjIsNiArNjc0LDEyIEBAIHZvaWQgV2ViUGFnZTo6Z2V0RGF0
YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkCiAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIH0KIAorV2ViQ29yZTo6SW50UG9pbnQg
V2ViUGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiB7IH07Cit9CisKIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VP
YmplY3QqIFdlYlBhZ2U6OmFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKQogewogICAgIG5vdElt
cGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5o
CmluZGV4IDM5ZTkwZTNjODk1ZS4uNDk3MDA3MGE0NTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJh
c2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3Np
YmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaApAQCAtNDUsNiArNDUsOCBAQCBjbGFzcyBBWENvcmVP
YmplY3Q7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX3NpemUgV1RGX0dVQVJERURfQllfTE9DSyht
X2NhY2hlTG9jayk7CiAgICAgVGhyZWFkU2FmZVdlYWtQdHI8V2ViQ29yZTo6QVhDb3JlT2JqZWN0
PiBtX2lzb2xhdGVkVHJlZVJvb3Q7CiAjZW5kaWYKKworICAgIFdlYkNvcmU6OkludFBvaW50IG1f
cmVtb3RlRnJhbWVPZmZzZXQ7CiAgICAgUmV0YWluUHRyPGlkPiBtX3BhcmVudDsKICAgICBib29s
IG1faGFzTWFpbkZyYW1lUGx1Z2luOwogfQpAQCAtNTYsOSArNTgsMTEgQEAgY2xhc3MgQVhDb3Jl
T2JqZWN0OwogLSAodm9pZClzZXRJc29sYXRlZFRyZWVSb290OihOYWtlZFB0cjxXZWJDb3JlOjpB
WENvcmVPYmplY3Q+KXJvb3Q7CiAjZW5kaWYKIC0gKHZvaWQpc2V0UmVtb3RlUGFyZW50OihpZClw
YXJlbnQ7CistICh2b2lkKXNldFJlbW90ZUZyYW1lT2Zmc2V0OihXZWJDb3JlOjpJbnRQb2ludClv
ZmZzZXQ7CiAtICh2b2lkKXNldEhhc01haW5GcmFtZVBsdWdpbjooYm9vbCloYXNQbHVnaW47CiAK
IC0gKGlkKWFjY2Vzc2liaWxpdHlSb290T2JqZWN0V3JhcHBlcjsKIC0gKGlkKWFjY2Vzc2liaWxp
dHlGb2N1c2VkVUlFbGVtZW50OworLSAoV2ViQ29yZTo6SW50UG9pbnQpYWNjZXNzaWJpbGl0eVJl
bW90ZUZyYW1lT2Zmc2V0OwogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFn
ZU9iamVjdEJhc2UubW0KaW5kZXggNmY5OTU0NWFlYmY1Li5iZWM4ZDczZmFhMmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlX
ZWJQYWdlT2JqZWN0QmFzZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0KQEAgLTM2LDkgKzM2LDEx
IEBACiAjaW1wb3J0ICJXS1N0cmluZ0NGLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0FYT2JqZWN0Q2Fj
aGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRnJh
bWVUcmVlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNv
cmUvTG9jYWxGcmFtZVZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZS5oPgorI2ltcG9ydCA8
V2ViQ29yZS9SZW1vdGVGcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxWaWV3Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1Njcm9sbGJhci5oPgogCkBAIC01NywxMSArNTksMTcgQEAgbmFtZXNw
YWNlIGF4ID0gV2ViQ29yZTo6QWNjZXNzaWJpbGl0eTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byogbG9jYWxNYWluRnJhbWUgPSBkeW5hbWljRG93
bmNhc3Q8V2ViQ29yZTo6TG9jYWxGcmFtZT4ocGFnZS0+bWFpbkZyYW1lKCkpOwotICAgIGlmICgh
bG9jYWxNYWluRnJhbWUgfHwgIWxvY2FsTWFpbkZyYW1lLT5kb2N1bWVudCgpKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoYXV0byogbG9jYWxNYWluRnJhbWUgPSBkeW5hbWljRG93
bmNhc3Q8V2ViQ29yZTo6TG9jYWxGcmFtZT4ocGFnZS0+bWFpbkZyYW1lKCkpKSB7CisgICAgICAg
IGlmIChhdXRvKiBkb2N1bWVudCA9IGxvY2FsTWFpbkZyYW1lLT5kb2N1bWVudCgpKQorICAgICAg
ICAgICAgcmV0dXJuIGRvY3VtZW50LT5heE9iamVjdENhY2hlKCk7CisgICAgfSBlbHNlIGlmIChh
dXRvKiByZW1vdGVNYWluRnJhbWUgPSBkeW5hbWljRG93bmNhc3Q8V2ViQ29yZTo6UmVtb3RlRnJh
bWU+KHBhZ2UtPm1haW5GcmFtZSgpKSkgeworICAgICAgICBhdXRvJiB0cmVlID0gcmVtb3RlTWFp
bkZyYW1lLT50cmVlKCk7CisgICAgICAgIGF1dG8qIGZpcnN0RnJhbWUgPSBkeW5hbWljRG93bmNh
c3Q8V2ViQ29yZTo6TG9jYWxGcmFtZT4odHJlZS5maXJzdENoaWxkKCkpOworICAgICAgICBhdXRv
KiBkb2N1bWVudCA9IGZpcnN0RnJhbWUgPyBmaXJzdEZyYW1lLT5kb2N1bWVudCgpIDogbnVsbHB0
cjsKKyAgICAgICAgcmV0dXJuIGRvY3VtZW50ID8gZG9jdW1lbnQtPmF4T2JqZWN0Q2FjaGUoKSA6
IG51bGxwdHI7CisgICAgfQogCi0gICAgcmV0dXJuIGxvY2FsTWFpbkZyYW1lLT5kb2N1bWVudCgp
LT5heE9iamVjdENhY2hlKCk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIC0gKGlkKWFjY2Vz
c2liaWxpdHlQbHVnaW5PYmplY3QKQEAgLTE1Miw2ICsxNjAsMTcgQEAgbmFtZXNwYWNlIGF4ID0g
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eTsKICAgICBtX2hhc01haW5GcmFtZVBsdWdpbiA9IGhhc1Bs
dWdpbjsKIH0KIAorLSAodm9pZClzZXRSZW1vdGVGcmFtZU9mZnNldDooV2ViQ29yZTo6SW50UG9p
bnQpb2Zmc2V0Cit7CisgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CisgICAgbV9yZW1vdGVG
cmFtZU9mZnNldCA9IG9mZnNldDsKK30KKworLSAoV2ViQ29yZTo6SW50UG9pbnQpYWNjZXNzaWJp
bGl0eVJlbW90ZUZyYW1lT2Zmc2V0Cit7CisgICAgcmV0dXJuIG1fcmVtb3RlRnJhbWVPZmZzZXQ7
Cit9CisKIC0gKHZvaWQpc2V0UmVtb3RlUGFyZW50OihpZClwYXJlbnQKIHsKICAgICBBU1NFUlQo
aXNNYWluUnVuTG9vcCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggOTZlZDY0YWRiY2ZmLi41ZjliODgwYzgwYmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFj
Lm1tCkBAIC0xMjMsMTYgKzEyMywxMiBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6
ZUFjY2Vzc2liaWxpdHkoKQogICAgIC8vIEN1cnJlbnRseSwgaXQgaXMgYWxzbyBuZWVkZWQgdG8g
YWxsb2NhdGUgYW5kIGluaXRpYWxpemUgYW4gTlNBcHBsaWNhdGlvbiBvYmplY3QuCiAgICAgW05T
QXBwbGljYXRpb24gX2FjY2Vzc2liaWxpdHlJbml0aWFsaXplXTsKIAotICAgIGF1dG8gbW9ja0Fj
Y2Vzc2liaWxpdHlFbGVtZW50ID0gYWRvcHROUyhbW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmpl
Y3QgYWxsb2NdIGluaXRdKTsKLQogICAgIC8vIEdldCB0aGUgcGlkIGZvciB0aGUgc3RhcnRpbmcg
cHJvY2Vzcy4KICAgICBwaWRfdCBwaWQgPSBXZWJDb3JlOjpwcmVzZW50aW5nQXBwbGljYXRpb25Q
SUQoKTsKLSAgICBpZiAoW21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKGFjY2Vzc2liaWxpdHlTZXRQcmVzZW50ZXJQcm9jZXNzSWRlbnRpZmllcjop
XSkKLSAgICAgICAgWyhpZCltb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQuZ2V0KCkgYWNjZXNzaWJp
bGl0eVNldFByZXNlbnRlclByb2Nlc3NJZGVudGlmaWVyOnBpZF07Ci0gICAgW21vY2tBY2Nlc3Np
YmlsaXR5RWxlbWVudCBzZXRXZWJQYWdlOnRoaXNdOwotICAgIG1fbW9ja0FjY2Vzc2liaWxpdHlF
bGVtZW50ID0gV1RGTW92ZShtb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQpOwotCi0gICAgYWNjZXNz
aWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oYWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0YSgp
KTsKKyAgICBjcmVhdGVNb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQocGlkKTsKKyAgICBSZWZQdHIg
bG9jYWxNYWluRnJhbWUgPSBkeW5hbWljRG93bmNhc3Q8TG9jYWxGcmFtZT4obV9wYWdlLT5tYWlu
RnJhbWUoKSk7CisgICAgaWYgKGxvY2FsTWFpbkZyYW1lKQorICAgICAgICBhY2Nlc3NpYmlsaXR5
VHJhbnNmZXJSZW1vdGVUb2tlbihhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCksIGxvY2Fs
TWFpbkZyYW1lLT5mcmFtZUlEKCkpOwogCiAgICAgLy8gQ2xvc2UgTWFjaCBjb25uZWN0aW9uIHRv
IExhdW5jaCBTZXJ2aWNlcy4KICNpZiBIQVZFKExTX1NFUlZFUl9DT05ORUNUSU9OX1NUQVRVU19S
RUxFQVNFX05PVElGSUNBVElPTlNfTUFTSykKQEAgLTE0NCw5ICsxNDAsMjAgQEAgdm9pZCBXZWJQ
YWdlOjpwbGF0Zm9ybUluaXRpYWxpemVBY2Nlc3NpYmlsaXR5KCkKICAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5yZXZva2VMYXVuY2hTZXJ2aWNlc1NhbmRib3hFeHRlbnNpb24oKTsKIH0KIAor
dm9pZCBXZWJQYWdlOjpjcmVhdGVNb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQocGlkX3QgcGlkKQor
eworICAgIGF1dG8gbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50ID0gYWRvcHROUyhbW1dLQWNjZXNz
aWJpbGl0eVdlYlBhZ2VPYmplY3QgYWxsb2NdIGluaXRdKTsKKworICAgIGlmIChbbW9ja0FjY2Vz
c2liaWxpdHlFbGVtZW50IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYWNjZXNzaWJpbGl0
eVNldFByZXNlbnRlclByb2Nlc3NJZGVudGlmaWVyOildKQorICAgICAgICBbKGlkKW1vY2tBY2Nl
c3NpYmlsaXR5RWxlbWVudC5nZXQoKSBhY2Nlc3NpYmlsaXR5U2V0UHJlc2VudGVyUHJvY2Vzc0lk
ZW50aWZpZXI6cGlkXTsKKyAgICBbbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50IHNldFdlYlBhZ2U6
dGhpc107CisgICAgbV9tb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgPSBXVEZNb3ZlKG1vY2tBY2Nl
c3NpYmlsaXR5RWxlbWVudCk7Cit9CisKIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1SZWluaXRpYWxp
emUoKQogewotICAgIGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKGFjY2Vzc2liaWxp
dHlSZW1vdGVUb2tlbkRhdGEoKSk7CisgICAgUmVmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJS
ZW1vdGVUb2tlbihhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCksIGZyYW1lLT5mcmFtZUlE
KCkpOwogfQogCiBSZXRhaW5QdHI8TlNEYXRhPiBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5UmVtb3Rl
VG9rZW5EYXRhKCkgY29uc3QKQEAgLTQ2OSwxMiArNDc2LDI3IEBAIGJvb2wgV2ViUGFnZTo6cGVy
Zm9ybU5vbkVkaXRpbmdCZWhhdmlvckZvclNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3Is
IEtleWJvCiAgICAgcmV0dXJuIGRpZFBlcmZvcm1BY3Rpb247CiB9CiAKK3ZvaWQgV2ViUGFnZTo6
dXBkYXRlUmVtb3RlUGFnZUFjY2Vzc2liaWxpdHlPZmZzZXQoV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIFdlYkNvcmU6OkludFBvaW50IG9mZnNldCkKK3sKKyAgICBbYWNjZXNzaWJp
bGl0eVJlbW90ZU9iamVjdCgpIHNldFJlbW90ZUZyYW1lT2Zmc2V0Om9mZnNldF07Cit9CisKK3Zv
aWQgV2ViUGFnZTo6cmVnaXN0ZXJSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlUb2tlbnMocGlkX3Qg
cGlkLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZWxlbWVudFRva2VuKQoreworICAgIE5TRGF0
YSAqZWxlbWVudFRva2VuRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczplbGVtZW50VG9rZW4u
ZGF0YSgpIGxlbmd0aDplbGVtZW50VG9rZW4uc2l6ZSgpXTsKKyAgICBhdXRvIHJlbW90ZUVsZW1l
bnQgPSBlbGVtZW50VG9rZW5EYXRhLmxlbmd0aCA/IGFkb3B0TlMoW1tOU0FjY2Vzc2liaWxpdHlS
ZW1vdGVVSUVsZW1lbnQgYWxsb2NdIGluaXRXaXRoUmVtb3RlVG9rZW46ZWxlbWVudFRva2VuRGF0
YV0pIDogbmlsOworCisgICAgY3JlYXRlTW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50KHBpZCk7Cisg
ICAgW2FjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSBzZXRSZW1vdGVQYXJlbnQ6cmVtb3RlRWxl
bWVudC5nZXQoKV07Cit9CisKIHZvaWQgV2ViUGFnZTo6cmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3Np
YmlsaXR5VG9rZW5zKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBlbGVtZW50VG9rZW4sIHN0ZDo6
c3Bhbjxjb25zdCB1aW50OF90PiB3aW5kb3dUb2tlbikKIHsKICAgICBOU0RhdGEgKmVsZW1lbnRU
b2tlbkRhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZWxlbWVudFRva2VuLmRhdGEoKSBsZW5n
dGg6ZWxlbWVudFRva2VuLnNpemUoKV07CiAgICAgTlNEYXRhICp3aW5kb3dUb2tlbkRhdGEgPSBb
TlNEYXRhIGRhdGFXaXRoQnl0ZXM6d2luZG93VG9rZW4uZGF0YSgpIGxlbmd0aDp3aW5kb3dUb2tl
bi5zaXplKCldOwogICAgIGF1dG8gcmVtb3RlRWxlbWVudCA9IGVsZW1lbnRUb2tlbkRhdGEubGVu
Z3RoID8gYWRvcHROUyhbW05TQWNjZXNzaWJpbGl0eVJlbW90ZVVJRWxlbWVudCBhbGxvY10gaW5p
dFdpdGhSZW1vdGVUb2tlbjplbGVtZW50VG9rZW5EYXRhXSkgOiBuaWw7CiAgICAgYXV0byByZW1v
dGVXaW5kb3cgPSB3aW5kb3dUb2tlbkRhdGEubGVuZ3RoID8gYWRvcHROUyhbW05TQWNjZXNzaWJp
bGl0eVJlbW90ZVVJRWxlbWVudCBhbGxvY10gaW5pdFdpdGhSZW1vdGVUb2tlbjp3aW5kb3dUb2tl
bkRhdGFdKSA6IG5pbDsKKwogICAgIFtyZW1vdGVFbGVtZW50IHNldFdpbmRvd1VJRWxlbWVudDpy
ZW1vdGVXaW5kb3cuZ2V0KCldOwogICAgIFtyZW1vdGVFbGVtZW50IHNldFRvcExldmVsVUlFbGVt
ZW50OnJlbW90ZVdpbmRvdy5nZXQoKV07CiAKQEAgLTUxNiw2ICs1MzgsMTEgQEAgV0tBY2Nlc3Np
YmlsaXR5V2ViUGFnZU9iamVjdCogV2ViUGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgp
CiAgICAgcmV0dXJuIG1fbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50LmdldCgpOwogfQogCitXZWJD
b3JlOjpJbnRQb2ludCBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKQor
eworICAgIHJldHVybiBbbV9tb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgYWNjZXNzaWJpbGl0eVJl
bW90ZUZyYW1lT2Zmc2V0XTsKK30KKwogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVE
X1RSRUUpCiB2b2lkIFdlYlBhZ2U6OmNhY2hlQVhQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9h
dFBvaW50JiBwb2ludCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApp
bmRleCA4NzJhNTU4ZmI0ZTEuLmVkNzE2OTY5NTMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcApAQCAtMTU2OCw2ICsxNTY4LDEwIEBAIHZvaWQgV2ViUHJvY2Vzczo6
dXBkYXRlQ1BVTW9uaXRvclN0YXRlKENQVU1vbml0b3JVcGRhdGVSZWFzb24pCiB7CiB9CiAKK3Zv
aWQgV2ViUHJvY2Vzczo6YmluZEFjY2Vzc2liaWxpdHlGcmFtZVdpdGhEYXRhKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KQoreworfQorCiAjZW5kaWYK
IAogdm9pZCBXZWJQcm9jZXNzOjpwYWdlQWN0aXZpdHlTdGF0ZURpZENoYW5nZShQYWdlSWRlbnRp
ZmllciwgT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU+IGNoYW5nZWQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCAwNjE0YmNmN2FmNWMuLjE5NjI2MWE5Nzdl
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC02NSw2ICs2NSw5IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JlZW5Qcm9wZXJ0aWVzLmg+CiAjaW5jbHVkZSA8ZGlzcGF0
Y2gvZGlzcGF0Y2guaD4KICNpbmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgorCitPQkpDX0NM
QVNTIE5TTXV0YWJsZURpY3Rpb25hcnk7CisKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQpA
QCAtODcsNiArOTAsNyBAQAogI2luY2x1ZGUgIldlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5oIgog
I2VuZGlmCiAKKwogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBPYmplY3Q7CiB9CkBAIC01MTEsNiAr
NTE1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtU2V0Q2FjaGVNb2RlbChDYWNoZU1v
ZGVsKTsKIAogICAgIHZvaWQgc2V0RW5oYW5jZWRBY2Nlc3NpYmlsaXR5KGJvb2wpOworICAgIHZv
aWQgYmluZEFjY2Vzc2liaWxpdHlGcmFtZVdpdGhEYXRhKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKIAogICAgIHZvaWQgc3RhcnRNZW1vcnlTYW1w
bGVyKFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBkb3Vi
bGUpOwogICAgIHZvaWQgc3RvcE1lbW9yeVNhbXBsZXIoKTsKQEAgLTgyNiw2ICs4MzEsNyBAQCBw
cml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIEhhc2hDb3VudGVkU2V0PFN0cmluZz4g
bV9wZW5kaW5nUGFzdGVib2FyZFdyaXRlQ291bnRzOwogICAgIHN0ZDo6b3B0aW9uYWw8YXVkaXRf
dG9rZW5fdD4gbV9hdWRpdFRva2VuRm9yU2VsZjsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGlj
dGlvbmFyeT4gbV9hY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVUb2tlbkNhY2hlOwogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDk5YjQwMmFmMTFjYS4uZDc3NWZlN2QzOGQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpA
QCAtNjksNiArNjksNyBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIE5v
dFJlZkNvdW50ZWQgewogICAgIFNldFRleHRDaGVja2VyU3RhdGUoc3RydWN0IFdlYktpdDo6VGV4
dENoZWNrZXJTdGF0ZSB0ZXh0Q2hlY2tlclN0YXRlKQogCiAgICAgU2V0RW5oYW5jZWRBY2Nlc3Np
YmlsaXR5KGJvb2wgZmxhZykKKyAgICBCaW5kQWNjZXNzaWJpbGl0eUZyYW1lV2l0aERhdGEoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBk
YXRhKTsKIAogICAgIEdhcmJhZ2VDb2xsZWN0SmF2YVNjcmlwdE9iamVjdHMoKQogICAgIFNldEph
dmFTY3JpcHRHYXJiYWdlQ29sbGVjdG9yVGltZXJFbmFibGVkKGJvb2wgZW5hYmxlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXgg
YzUzODU3ZmJlMWQ0Li4xMTYwNmU5NjM5NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAtMjEzLDYgKzIxMywxNiBAQCB2b2lk
IFdlYlByb2Nlc3M6OnBsYXRmb3JtU2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVsKQogewogfQogCit2
b2lkIFdlYlByb2Nlc3M6OmJpbmRBY2Nlc3NpYmlsaXR5RnJhbWVXaXRoRGF0YShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCit7
CisgICAgaWYgKCFtX2FjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZVRva2VuQ2FjaGUpCisgICAgICAg
IG1fYWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lVG9rZW5DYWNoZSA9IGFkb3B0TlMoW1tOU011dGFi
bGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisKKyAgICBhdXRvIGZyYW1lSW50ID0gZnJhbWVJ
RC5vYmplY3QoKS50b1VJbnQ2NCgpOworICAgIE5TRGF0YSAqbnNEYXRhID0gW05TRGF0YSBkYXRh
V2l0aEJ5dGVzOmRhdGEuZGF0YSgpIGxlbmd0aDpkYXRhLnNpemUoKV07CisgICAgW21fYWNjZXNz
aWJpbGl0eVJlbW90ZUZyYW1lVG9rZW5DYWNoZSBzZXRPYmplY3Q6bnNEYXRhIGZvcktleTpAKGZy
YW1lSW50KV07Cit9CisKIGlkIFdlYlByb2Nlc3M6OmFjY2Vzc2liaWxpdHlGb2N1c2VkVUlFbGVt
ZW50KCkKIHsKICAgICBhdXRvIHJldHJpZXZlRm9jdXNlZFVJRWxlbWVudEZyb21NYWluVGhyZWFk
ID0gW10gKCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMjFlMjFmMDhiZDY0Li5i
NGNmMjgyYzE4Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMjI1LDYgKzIyNSw3
IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFJlbW90ZUFYT2JqZWN0UmVmIGFjY2Vzc2liaWxp
dHlSZW1vdGVPYmplY3QoKSBmaW5hbCB7IHJldHVybiAwOyB9CisgICAgV2ViQ29yZTo6SW50UG9p
bnQgYWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCkgZmluYWwgeyByZXR1cm4geyB9OyB9
CiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKICAgICB2b2lkIHNldEFY
SXNvbGF0ZWRUcmVlUm9vdChXZWJDb3JlOjpBWENvcmVPYmplY3QqKSBmaW5hbCB7IH0KICNlbmRp
Zgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>469926</attachid>
            <date>2024-02-16 13:30:05 -0800</date>
            <delta_ts>2024-02-16 16:15:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-268804-20240216133003.patch</filename>
            <type>text/plain</type>
            <size>119542</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">RnJvbSA0NDNhYTZlNDJlYjk5MDk5NWNkODI4NzRhNjZmZWI4ZmIwZDMyY2MzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpcyBGbGVpemFjaCA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4K
RGF0ZTogVGh1LCAxNSBGZWIgMjAyNCAxMjo0MDozOCAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIEFY
OiBTdXBwb3J0IHNpdGUgaXNvbGF0aW9uIGZvciBWb2ljZU92ZXIKIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjg4MDQgcmRhcjovLzk5NjY1NTYxCgpSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KCkluaXRpYWwgc3VwcG9ydCBmb3Igc2l0ZSBpc29sYXRpb24gZm9y
IFZvaWNlT3Zlci4KCldoZW4gYSBzY3JvbGwgdmlldyBob3N0cyBhIFJlbW90ZUZyYW1lIGl0IGJp
bmRzIGl0c2VsZiB0byB0aGUgb3RoZXIgc2lkZSB0aHJvdWdoIGEgV2ViUGFnZSBtZXNzYWdlLgpU
aGlzIHRyYW5zZmVycyBkYXRhIHRva2VucyBzbyBBY2Nlc3NpYmlsaXR5IHJlbW90ZSBlbGVtZW50
cyBhcmUgY3JlYXRlZCBhbmQgaG9va2VkIHVwLgoKVGhlIGJvdW5kaW5nIGJveGVzIGluc2lkZSB0
aGUgc3ViIGZyYW1lcyBuZWVkIHRvIGhhdmUgdGhlIGluaXRpYWwgb2Zmc2V0IGFwcGxpZWQgYW5k
IHRoZW4gbmVlZCB0byBiZSBjb252ZXJ0ZWQKZWFjaCBzdGVwIHVwIHRoZSBjaGFpbiB0byBhY2Nv
dW50IGZvciBzY3JvbGwgb2Zmc2V0cyB0aGF0IG9ubHkgZWFjaCBwcm9jZXNzIGtub3dzIGFib3V0
LgoKKiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dDoKKiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWENvcmVPYmplY3QuaDoKKFdlYkNvcmU6OmFjY2Vzc2liaWxpdHlSb2xlVG9TdHJpbmcpOgoo
V2ViQ29yZTo6QVhDb3JlT2JqZWN0Ojppc1JlbW90ZUZyYW1lIGNvbnN0KToKKiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcDoKKFdlYkNvcmU6OnN0cmVhbUFYQ29yZU9i
amVjdCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoK
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmNyZWF0ZSk6CihXZWJDb3JlOjpBWE9iamVjdENhY2hl
OjpvblJlbW90ZUZyYW1lSW5pdGlhbGl6ZWQpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5jcHA6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZWxhdGl2
ZUZyYW1lIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnJlbW90ZUZyYW1l
T2Zmc2V0IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW1vdGVGcmFtZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJh
bWVDbGllbnQuaC4KKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6Y3JlYXRlKToK
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6QWNjZXNzaWJpbGl0eVJlbW90ZUZy
YW1lKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6ZWxlbWVudFJlY3QgY29u
c3QpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbW90ZUZy
YW1lLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVDbGllbnQu
aC4KKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkQXR0YWNobWVu
dENoaWxkcmVuKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENoaWxk
cmVuKToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpkZXRhY2hSZW1vdGVQ
YXJ0cyk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6Y2xlYXJDaGlsZHJlbik6
CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkUmVtb3RlRnJhbWVDaGlsZCk6
CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkQ2hpbGRyZW4pOgooV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OndlYkFyZWFPYmplY3QgY29uc3QpOgooV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmRvY3VtZW50IGNvbnN0KToKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpwYXJlbnRPYmplY3QgY29uc3QpOgoqIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaDoKKiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcDoKKFdl
YkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKFdlYkNvcmU6
OkFYSXNvbGF0ZWRPYmplY3Q6OnNldFByb3BlcnR5KToKKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmpl
Y3Q6OnJlbW90ZUZyYW1lT2Zmc2V0IGNvbnN0KToKKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OnJlbGF0aXZlRnJhbWUgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHA6CihXZWJDb3JlOjpBWElzb2xhdGVk
VHJlZTo6dXBkYXRlTm9kZVByb3BlcnRpZXMpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMubW06CihXZWJDb3Jl
OjpBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplUGxhdGZvcm1Qcm9wZXJ0aWVzKToKKFdlYkNv
cmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50IGNvbnN0KToK
KiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFj
Lm1tOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lOjpnZW5lcmF0ZVJlbW90ZVRv
a2VuIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6aW5pdGlhbGl6
ZVBsYXRmb3JtRWxlbWVudFdpdGhSZW1vdGVUb2tlbik6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
OjpjcmVhdGVQbGF0Zm9ybVJvbGVNYXApOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbToKKG1ha2VOU0FycmF5KToK
KiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgcm9sZV0pOgoo
LVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBpc0VtcHR5R3JvdXBdKToKKC1bV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgcm9sZURlc2NyaXB0aW9uXSk6CigtW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIF90cmFuc2Zvcm1TcGVjaWFsQ2hpbGRyZW5DYXNlczpdKToKKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
Ol0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5SGl0VGVz
dDpdKToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgQUxMT1dfREVQUkVDQVRFRF9J
TVBMRU1FTlRBVElPTlNfRU5EXSk6CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpmb3JQYXJhbWV0ZXI6XSk6CigtW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlJbmRleE9mQ2hpbGQ6XSk6CigtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZUNvdW50
Ol0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXJyYXlB
dHRyaWJ1dGVWYWx1ZXM6aW5kZXg6bWF4Q291bnQ6XSk6CiogU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHA6CihXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjphY2Nl
c3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQpOgoqIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUZyYW1lTG9hZGVyQ2xpZW50Lmg6CiogU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvY2FsRnJhbWVM
b2FkZXJDbGllbnQuaDoKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwOgooV2ViQ29yZTo6
UGFnZTo6c2hvdWxkVXBkYXRlQWNjZXNzaWJpbGl0eVJlZ2lvbnMgY29uc3QpOgoqIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuY3BwOgooV2ViQ29yZTo6UmVtb3RlRnJhbWU6OnVwZGF0
ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldCk6CihXZWJDb3JlOjpSZW1vdGVGcmFtZTo6
dW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyk6CihXZWJDb3JlOjpSZW1vdGVGcmFtZTo6
YmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMpOgoqIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVt
b3RlRnJhbWUuaDoKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lQ2xpZW50Lmg6Ciog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcDoKKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdl
UHJveHk6OnJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbik6CiogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaDoKKiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcDoKKFdlYktpdDo6V2ViRnJhbWVQcm94eTo6YmluZEFj
Y2Vzc2liaWxpdHlGcmFtZVdpdGhEYXRhKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJG
cmFtZVByb3h5Lmg6CiogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojpzd2FwVG9Qcm92aXNpb25hbFBhZ2UpOgooV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKToKKFdlYktpdDo6V2Vi
UGFnZVByb3h5Ojp1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQpOgoqIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MubW06CihXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5
V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQpOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW06CihXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9j
ZXNzQWNjZXNzaWJpbGl0eVRva2VuKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGxNYWMuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGxNYWMubW06CihXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5V2ViUHJv
Y2Vzc1Rva2VuUmVjZWl2ZWQpOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW06CihXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNj
ZXNzaWJpbGl0eVRva2VuKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0lt
cGwuaDoKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwubW06CihXZWJL
aXQ6OldlYlZpZXdJbXBsOjpzZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuKToKKiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNs
aWVudC5jcHA6CihXZWJLaXQ6OldlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQ6OmFjY2Vzc2liaWxp
dHlSZW1vdGVGcmFtZU9mZnNldCk6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuaDoKKiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuY3BwOgooV2ViS2l0OjpX
ZWJSZW1vdGVGcmFtZUNsaWVudDo6dW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyk6CihX
ZWJLaXQ6OldlYlJlbW90ZUZyYW1lQ2xpZW50Ojp1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxp
dHlPZmZzZXQpOgooV2ViS2l0OjpXZWJSZW1vdGVGcmFtZUNsaWVudDo6YmluZFJlbW90ZUFjY2Vz
c2liaWxpdHlGcmFtZXMpOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJSZW1vdGVGcmFtZUNsaWVudC5oOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKFdlYktpdDo6V2ViUGFnZTo6YWNjZXNzaWJpbGl0
eVRyYW5zZmVyUmVtb3RlVG9rZW4pOgooV2ViS2l0OjpXZWJQYWdlOjphY2Nlc3NpYmlsaXR5TWFu
YWdlUmVtb3RlRWxlbWVudFN0YXR1cyk6CihXZWJLaXQ6OldlYlBhZ2U6OmJpbmRSZW1vdGVBY2Nl
c3NpYmlsaXR5RnJhbWVzKToKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmg6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbjoKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bToKKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplQWNjZXNzaWJpbGl0eSk6CihX
ZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtUmVpbml0aWFsaXplKToKKFdlYktpdDo6V2ViUGFnZTo6
YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KToKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaDoKKiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9i
amVjdEJhc2UubW06CigtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlIGF4T2JqZWN0
Q2FjaGVdKToKKC1bV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2Ugc2V0UmVtb3RlRnJh
bWVPZmZzZXQ6XSk6CigtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlIGFjY2Vzc2li
aWxpdHlSZW1vdGVGcmFtZU9mZnNldF0pOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tOgooV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybUluaXRpYWxp
emVBY2Nlc3NpYmlsaXR5KToKKFdlYktpdDo6V2ViUGFnZTo6Y3JlYXRlTW9ja0FjY2Vzc2liaWxp
dHlFbGVtZW50KToKKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1SZWluaXRpYWxpemUpOgooV2Vi
S2l0OjpXZWJQYWdlOjp1cGRhdGVSZW1vdGVQYWdlQWNjZXNzaWJpbGl0eU9mZnNldCk6CihXZWJL
aXQ6OldlYlBhZ2U6OnJlZ2lzdGVyUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5VG9rZW5zKToKKFdl
YktpdDo6V2ViUGFnZTo6cmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKToKKFdl
YktpdDo6V2ViUGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KToKKiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJQcm9jZXNzQ29jb2EubW06CihXZWJLaXQ6OldlYlByb2Nlc3M6OmJpbmRBY2Nlc3NpYmls
aXR5RnJhbWVXaXRoRGF0YSk6CiogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKLS0tCiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dCAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogLi4uL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIHwgICA0ICsKIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhDb3JlT2JqZWN0LmggICB8ICAxMiArKwogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WExvZ2dlci5jcHAgICAgIHwgICAzICsKIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5jcHAgICB8ICAxNSArLQogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmggIHwgICAyICsKIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhSZW1vdGVG
cmFtZS5jcHAgICB8ICA0MiArKysrKwogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFJl
bW90ZUZyYW1lLmggIHwgIDYxICsrKysrKysrCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcCAgICAgfCAgMjMgKystCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmggICAgICAgfCAgIDUgKwogLi4uL0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
Y3BwICAgICAgICAgICAgIHwgICA0ICstCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldy5jcHAgfCAgNjIgKysrKysrKy0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlTY3JvbGxWaWV3LmggICB8ICAgNiArLQogLi4uL2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaS5jcHAgICAgICAgIHwgICAxICsKIC4uLi9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJJT1MubW0gICB8ICAgMSArCiAuLi4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmpl
Y3QuY3BwICAgICAgICAgfCAgMzQgKysrKy0KIC4uLi9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9i
amVjdC5oICAgICAgICAgICB8ICAgOCArLQogLi4uL2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJl
ZS5jcHAgICAgICAgICAgIHwgIDYxICsrKy0tLS0tCiAuLi4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRUcmVlLmggICAgICAgICAgICAgfCAgMjkgKysrKwogLi4uL2lzb2xhdGVkdHJlZS9tYWMvQVhJ
c29sYXRlZE9iamVjdE1hYy5tbSAgIHwgICA3ICsKIC4uLi9tYWMvQWNjZXNzaWJpbGl0eU9iamVj
dE1hYy5tbSAgICAgICAgICAgICB8ICAyNiArKysrCiAuLi4vbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyQmFzZS5tbSAgfCAgIDkgKy0KIC4uLi9tYWMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJNYWMubW0gICB8IDE0MyArKysrKysrKysrKystLS0tLS0KIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwICAgICAgICB8ICAgNSArCiAuLi4vV2ViQ29yZS9s
b2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oICAgfCAgIDEgKwogLi4uL1dlYkNvcmUvbG9h
ZGVyL0xvY2FsRnJhbWVMb2FkZXJDbGllbnQuaCAgIHwgICAxICsKIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAgICAgICAgICAgICAgICAgICB8ICAxNSArLQogU291cmNlL1dlYkNvcmUvcGFn
ZS9SZW1vdGVGcmFtZS5jcHAgICAgICAgICAgIHwgIDE1ICsrCiBTb3VyY2UvV2ViQ29yZS9wYWdl
L1JlbW90ZUZyYW1lLmggICAgICAgICAgICAgfCAgIDQgKwogU291cmNlL1dlYkNvcmUvcGFnZS9S
ZW1vdGVGcmFtZUNsaWVudC5oICAgICAgIHwgICA0ICsKIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1BhZ2VDbGllbnQuaCAgICAgICAgICB8ICAgMyArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvUHJv
dmlzaW9uYWxQYWdlUHJveHkuY3BwIHwgICAyICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9Qcm92
aXNpb25hbFBhZ2VQcm94eS5oICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkZyYW1lUHJveHkuY3BwICAgICB8ICAgOSArKwogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
RnJhbWVQcm94eS5oICAgICAgIHwgICAyICsKIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAgICAgICB8ICAyNCArKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oICAgICAgICB8ICAgNCArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluIHwgICA0ICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MuaCAgfCAgIDIgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5tbSB8ICAgMiArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbSAgIHwgICA3ICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGxNYWMuaCAgfCAgIDIgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbE1hYy5tbSB8ICAgNCArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94
eU1hYy5tbSAgIHwgICA0ICstCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0lt
cGwuaCAgICAgfCAgIDMgKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3SW1w
bC5tbSAgICB8ICAgOCArLQogLi4uL1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuY3BwICAgICAg
ICAgICAgIHwgICA2ICsKIC4uLi9XZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmggICAgICAgICAg
ICAgICB8ICAgMSArCiAuLi4vV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuY3Bw
ICAgfCAgMzggKysrKysKIC4uLi9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVudC5o
ICAgICB8ICAgNCArCiAuLi4vV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5t
bSAgfCAgNDYgKysrKystCiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcCAgfCAgMTAgKysKIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aCAgICB8ICAxMSArLQogLi4uL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
ICAgIHwgICAzICsKIC4uLi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gICAg
ICB8ICAyMyArKy0KIC4uLi9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaCAg
ICB8ICAgNCArCiAuLi4vbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tICAg
fCAgMjcgKysrLQogLi4uL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSAgICAg
IHwgIDQ1ICsrKystLQogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwICAg
ICAgIHwgICA0ICsKIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggICAgICAg
ICB8ICAgNiArCiAuLi4vV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiAg
fCAgIDEgKwogLi4uL1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tICAgICAgIHwg
IDEwICsrCiAuLi4vbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggfCAg
IDEgKwogNjMgZmlsZXMgY2hhbmdlZCwgNzcyIGluc2VydGlvbnMoKyksIDE1NCBkZWxldGlvbnMo
LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYUmVt
b3RlRnJhbWUuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWFJlbW90ZUZyYW1lLmgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDFmNTdiOWFhMGEzNC4uYTUw
ZmU4OTQ5M2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtNTI1LDYgKzUyNSw3IEBAIGFjY2Vzc2liaWxp
dHkvQVhHZW9tZXRyeU1hbmFnZXIuY3BwCiBhY2Nlc3NpYmlsaXR5L0FYSW1hZ2UuY3BwCiBhY2Nl
c3NpYmlsaXR5L0FYTG9nZ2VyLmNwcAogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAor
YWNjZXNzaWJpbGl0eS9BWFJlbW90ZUZyYW1lLmNwcAogYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJr
ZXIuY3BwCiBhY2Nlc3NpYmlsaXR5L0FYVGV4dFJ1bi5jcHAKIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eUFSSUFHcmlkLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDJhN2VjODY4MDAwMi4uNjdkZmMwZWRiNDYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC04OTYwLDYgKzg5NjAsOCBAQAogCQkyOTQ4OUZDNTEyQzAwRjAzMDBEODNGMEYgLyogQWNjZXNz
aWJpbGl0eVNjcm9sbFZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk0
OTg2ODExOTUzNDE5NDAwNzJEMkJEIC8qIFRleHRVbmRvSW5zZXJ0aW9uTWFya3VwTWFjLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVGV4dFVuZG9JbnNlcnRpb25N
YXJrdXBNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5NEJEQUU2MjFGRjU4
MkEwMDUxMDc3QiAvKiBBY2Nlc3NpYmlsaXR5T2JqZWN0Q29jb2EubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5T2JqZWN0Q29jb2EubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5NTVDRjExMkIyMzBBRTYwMDAxQkY4MiAvKiBB
WFJlbW90ZUZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFYUmVtb3RlRnJhbWUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjk1NUNGMTIyQjIzMEFFNjAwMDFCRjgyIC8qIEFYUmVtb3Rl
RnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVhSZW1vdGVGcmFtZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5N0JFM0Q5MTZDMDQzRDgwMDMzMTZCRCAvKiBQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyOTgxQUJDNDEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eU1hdGhNTEVs
ZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTgxQ0E5RDEzMTgyMkVDMDBEMTJG
MkEgLyogQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vz
c2liaWxpdHlBUklBR3JpZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzQ0
NSw2ICsyMzQ0Nyw4IEBACiAJCQkJQzA0OTNFQjcyNDQ2OTlFNDAwOUFBQzgwIC8qIEFYTG9nZ2Vy
LmggKi8sCiAJCQkJMjk4MUNBQUYxMzE4MjJFQzAwRDEyRjJBIC8qIEFYT2JqZWN0Q2FjaGUuY3Bw
ICovLAogCQkJCTI5QTgxMjFBMEZCQjlDMUQwMDUxMDI5MyAvKiBBWE9iamVjdENhY2hlLmggKi8s
CisJCQkJMjk1NUNGMTIyQjIzMEFFNjAwMDFCRjgyIC8qIEFYUmVtb3RlRnJhbWUuY3BwICovLAor
CQkJCTI5NTVDRjExMkIyMzBBRTYwMDAxQkY4MiAvKiBBWFJlbW90ZUZyYW1lLmggKi8sCiAJCQkJ
QzBFMjA4QTEyOTM3OUM2RjAwQzBEMkQzIC8qIEFYVGV4dE1hcmtlci5jcHAgKi8sCiAJCQkJQzBF
MjA4QTAyOTM3OUM2RTAwQzBEMkQzIC8qIEFYVGV4dE1hcmtlci5oICovLAogCQkJCTQ4QzRFODND
MkIzNEQ4MzgwMDgzNDYwQSAvKiBBWFRleHRSdW4uY3BwICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWENvcmVPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhDb3JlT2JqZWN0LmgKaW5kZXggNDQxMDg0ZWNiODA1Li4zZmJjN2Y4ZGIy
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhDb3JlT2JqZWN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWENvcmVPYmplY3QuaApAQCAt
MjA1LDYgKzIwNSw3IEBAIGVudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVJvbGUgewogICAgIFByb2dy
ZXNzSW5kaWNhdG9yLAogICAgIFJhZGlvQnV0dG9uLAogICAgIFJhZGlvR3JvdXAsCisgICAgUmVt
b3RlRnJhbWUsCiAgICAgUm93SGVhZGVyLAogICAgIFJvdywKICAgICBSb3dHcm91cCwKQEAgLTQ0
Miw2ICs0NDMsOCBAQCBBTFdBWVNfSU5MSU5FIFN0cmluZyBhY2Nlc3NpYmlsaXR5Um9sZVRvU3Ry
aW5nKEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUpCiAgICAgICAgIHJldHVybiAiUmFkaW9CdXR0b24i
X3M7CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9Hcm91cDoKICAgICAgICAgcmV0
dXJuICJSYWRpb0dyb3VwIl9zOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJlbW90ZUZy
YW1lOgorICAgICAgICByZXR1cm4gIlJlbW90ZUZyYW1lIl9zOwogICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OlJvd0hlYWRlcjoKICAgICAgICAgcmV0dXJuICJSb3dIZWFkZXIiX3M7CiAgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Um93OgpAQCAtODE1LDYgKzgxOCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3dJbnN0YW5jZSgpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsSW5z
dGFuY2UoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQVhJc29sYXRlZE9iamVjdElu
c3RhbmNlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0FYUmVtb3RlRnJhbWUoKSBj
b25zdCA9IDA7CiAKICAgICBib29sIGlzSGVhZGluZygpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1
ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpIZWFkaW5nOyB9CiAgICAgdmlydHVhbCBib29sIGlz
TGluaygpIGNvbnN0ID0gMDsKQEAgLTkxOSw2ICs5MjMsMTIgQEAgcHVibGljOgogICAgIGJvb2wg
aXNUcmVlR3JpZCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpUcmVlR3JpZDsgfQogICAgIGJvb2wgaXNUcmVlSXRlbSgpIGNvbnN0IHsgcmV0dXJuIHJv
bGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlSXRlbTsgfQogICAgIGJvb2wgaXNT
Y3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6U2Nyb2xsQmFyOyB9CisgICAgYm9vbCBpc1JlbW90ZUZyYW1lKCkgY29uc3QgeyByZXR1cm4g
cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJlbW90ZUZyYW1lOyB9CisjaWYgUExB
VEZPUk0oQ09DT0EpCisgICAgdmlydHVhbCBSZXRhaW5QdHI8aWQ+IHJlbW90ZUZyYW1lUGxhdGZv
cm1FbGVtZW50KCkgY29uc3QgPSAwOworI2VuZGlmCisgICAgdmlydHVhbCBib29sIGhhc1JlbW90
ZUZyYW1lQ2hpbGQoKSBjb25zdCA9IDA7CisKICAgICBib29sIGlzQnV0dG9uKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBib29sIGlzTWV0ZXIoKSBjb25zdCA9IDA7CiAKQEAgLTExNTksNiArMTE2OSw4
IEBAIHB1YmxpYzoKICAgICAvLyBWaWV3cG9ydC1yZWxhdGl2ZSBtZWFucyB0aGF0IHdoZW4gdGhl
IHBhZ2Ugc2Nyb2xscywgdGhlIHBvcnRpb24gb2YgdGhlIHBhZ2UgaW4gdGhlIHZpZXdwb3J0IGNo
YW5nZXMsIGFuZCB0aHVzCiAgICAgLy8gYW55IHZpZXdwb3J0LXJlbGF0aXZlIHJlY3RzIGRvIHRv
byAoc2luY2UgdGhleSBhcmUgZWl0aGVyIGNsb3NlciB0byBvciBmYXJ0aGVyIGZyb20gdGhlIHZp
ZXdwb3J0IG9yaWdpbiBhZnRlciB0aGUgc2Nyb2xsKS4KICAgICB2aXJ0dWFsIEZsb2F0UG9pbnQg
c2NyZWVuUmVsYXRpdmVQb3NpdGlvbigpIGNvbnN0ID0gMDsKKyAgICAvLyBUaGlzIGlzIHRoZSBh
bW91bnQgdGhhdCB0aGUgUmVtb3RlRnJhbWUgaXMgb2Zmc2V0IGZyb20gaXRzIGNvbnRhaW5pbmcg
cGFyZW50LgorICAgIHZpcnR1YWwgSW50UG9pbnQgcmVtb3RlRnJhbWVPZmZzZXQoKSBjb25zdCA9
IDA7CiAKICAgICB2aXJ0dWFsIEZsb2F0UmVjdCBjb252ZXJ0RnJhbWVUb1NwYWNlKGNvbnN0IEZs
b2F0UmVjdCYsIEFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2UpIGNvbnN0ID0gMDsKICNpZiBQ
TEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhMb2dnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWExvZ2dlci5jcHAK
aW5kZXggYjZlMzA2Y2RkZWNmLi43YjM1YzhmOWQxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhMb2dnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhMb2dnZXIuY3BwCkBAIC04ODMsNiArODgzLDkgQEAgdm9pZCBzdHJlYW1BWENv
cmVPYmplY3QoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBBWENvcmVPYmplY3QmIG9iamVjdCwg
Y29uc3QgT3AKICAgICBpZiAob3B0aW9ucyAmIEFYU3RyZWFtT3B0aW9uczo6Um9sZSkKICAgICAg
ICAgc3RyZWFtLmR1bXBQcm9wZXJ0eSgicm9sZSIsIG9iamVjdC5yb2xlVmFsdWUoKSk7CiAKKyAg
ICBpZiAob2JqZWN0LnJlbmRlcmVyKCkpCisgICAgICAgIHN0cmVhbS5kdW1wUHJvcGVydHkoInJl
bmRlck5hbWUiLCBvYmplY3QucmVuZGVyZXIoKS0+cmVuZGVyTmFtZSgpKTsKKwogICAgIGlmIChv
cHRpb25zICYgQVhTdHJlYW1PcHRpb25zOjpQYXJlbnRJRCkgewogICAgICAgICBhdXRvKiBwYXJl
bnQgPSBvYmplY3QucGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgICAgIHN0cmVhbS5kdW1w
UHJvcGVydHkoInBhcmVudElEIiwgcGFyZW50ID8gcGFyZW50LT5vYmplY3RJRCgpIDogQVhJRCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNo
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmlu
ZGV4IDI4MGZhZDRmMjcwMS4uMWFjOTVmMmVhNmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRl
ICJBWElzb2xhdGVkT2JqZWN0LmgiCiAjaW5jbHVkZSAiQVhJc29sYXRlZFRyZWUuaCIKICNpbmNs
dWRlICJBWExvZ2dlci5oIgorI2luY2x1ZGUgIkFYUmVtb3RlRnJhbWUuaCIKICNpbmNsdWRlICJB
WFRleHRNYXJrZXIuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5QVJJQUdyaWQuaCIKICNpbmNs
dWRlICJBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmgiCkBAIC0xMDU0LDcgKzEwNTUsMTAgQEAg
QWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Y3JlYXRlKEFjY2Vzc2liaWxpdHlS
b2xlIHJvbGUpCiAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAogICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OlRhYmxlSGVhZGVyQ29udGFpbmVyOgogICAgICAgICBvYmogPSBBY2Nlc3NpYmls
aXR5VGFibGVIZWFkZXJDb250YWluZXI6OmNyZWF0ZSgpOwotICAgICAgICBicmVhazsgICAKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmVtb3RlRnJhbWU6Cisg
ICAgICAgIG9iaiA9IEFYUmVtb3RlRnJhbWU6OmNyZWF0ZSgpOworICAgICAgICBicmVhazsKICAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTbGlkZXJUaHVtYjoKICAgICAgICAgb2JqID0gQWNj
ZXNzaWJpbGl0eVNsaWRlclRodW1iOjpjcmVhdGUoKTsKICAgICAgICAgYnJlYWs7CkBAIC0xMzUw
LDYgKzEzNTQsMTUgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVSZWNvbXB1dGVDZWxsU2xv
dHMoQWNjZXNzaWJpbGl0eVRhYmxlJiBheFRhYmxlKQogI2VuZGlmCiB9CiAKK3ZvaWQgQVhPYmpl
Y3RDYWNoZTo6b25SZW1vdGVGcmFtZUluaXRpYWxpemVkKEFYUmVtb3RlRnJhbWUmIHJlbW90ZUZy
YW1lKQoreworI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCisgICAgdXBk
YXRlSXNvbGF0ZWRUcmVlKHJlbW90ZUZyYW1lLCBBWFByb3BlcnR5TmFtZTo6UmVtb3RlRnJhbWVQ
bGF0Zm9ybUVsZW1lbnQpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocmVtb3RlRnJhbWUpOwor
I2VuZGlmCit9CisKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQogdm9p
ZCBBWE9iamVjdENhY2hlOjpoYW5kbGVSb3dzcGFuQ2hhbmdlZChBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsJiBheENlbGwpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYT2JqZWN0Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RD
YWNoZS5oCmluZGV4IGQxMDQ5Y2M5YmMyMS4uMzhjOThhNDZlYTlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaApAQCAtNDcsNiArNDcsNyBAQCBjbGFz
cyBUZXh0U3RyZWFtOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEFYUmVtb3RlRnJh
bWU7CiBjbGFzcyBBY2Nlc3NpYmlsaXR5VGFibGU7CiBjbGFzcyBBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsOwogY2xhc3MgRG9jdW1lbnQ7CkBAIC0yNDYsNiArMjQ3LDcgQEAgcHVibGljOgogICAgIHZv
aWQgZGVmZXJOb2RlQWRkZWRPclJlbW92ZWQoTm9kZSopOwogICAgIHZvaWQgaGFuZGxlU2Nyb2xs
ZWRUb0FuY2hvcihjb25zdCBOb2RlKiBhbmNob3JOb2RlKTsKICAgICB2b2lkIG9uU2Nyb2xsYmFy
VXBkYXRlKFNjcm9sbFZpZXcqKTsKKyAgICB2b2lkIG9uUmVtb3RlRnJhbWVJbml0aWFsaXplZChB
WFJlbW90ZUZyYW1lJik7CiAKICAgICBib29sIGlzUmV0cmlldmluZ0N1cnJlbnRNb2RhbE5vZGUo
KSB7IHJldHVybiBtX2lzUmV0cmlldmluZ0N1cnJlbnRNb2RhbE5vZGU7IH0KICAgICBOb2RlKiBt
b2RhbE5vZGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhS
ZW1vdGVGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYUmVtb3RlRnJh
bWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uY2ZiZGVkZDk4
MWNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFJl
bW90ZUZyYW1lLmNwcApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDI0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkFYUmVtb3RlRnJhbWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitSZWY8QVhSZW1vdGVGcmFtZT4gQVhSZW1vdGVGcmFtZTo6Y3JlYXRlKCkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBBWFJlbW90ZUZyYW1lKTsKK30KKworTGF5b3V0UmVjdCBBWFJl
bW90ZUZyYW1lOjplbGVtZW50UmVjdCgpIGNvbnN0Cit7CisgICAgYXV0byogcGFyZW50ID0gcGFy
ZW50T2JqZWN0KCk7CisgICAgcmV0dXJuIHBhcmVudCA/IHBhcmVudC0+ZWxlbWVudFJlY3QoKSA6
IExheW91dFJlY3QoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFJlbW90ZUZyYW1lLmggYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYUmVtb3RlRnJhbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLjk0ZDJkZjAzMDRkMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhSZW1vdGVGcmFtZS5oCkBAIC0wLDAgKzEsNjEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlNb2Nr
T2JqZWN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVtb3RlRnJhbWU7CisK
K2NsYXNzIEFYUmVtb3RlRnJhbWUgZmluYWwgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eU1vY2tPYmpl
Y3QgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8QVhSZW1vdGVGcmFtZT4gY3JlYXRlKCk7CisK
KyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIGluaXRpYWxpemVQbGF0Zm9ybUVsZW1lbnRX
aXRoUmVtb3RlVG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBpbnQpOworICAgIHN0ZDo6
c3Bhbjxjb25zdCB1aW50OF90PiBnZW5lcmF0ZVJlbW90ZVRva2VuKCkgY29uc3Q7CisgICAgUmV0
YWluUHRyPGlkPiByZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQ7IH0KKyAgICBwaWRfdCBwcm9jZXNzSWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2Vzc0lkZW50aWZpZXI7IH0KKyNlbmRpZgorCitwcml2
YXRlOgorICAgIHZpcnR1YWwgfkFYUmVtb3RlRnJhbWUoKSA9IGRlZmF1bHQ7CisKKyAgICBBY2Nl
c3NpYmlsaXR5Um9sZSBkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpIHsgcmV0dXJuIEFjY2Vz
c2liaWxpdHlSb2xlOjpSZW1vdGVGcmFtZTsgfQorICAgIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNBWFJlbW90
ZUZyYW1lKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIExheW91dFJlY3QgZWxlbWVudFJl
Y3QoKSBjb25zdDsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFJldGFpblB0cjxpZD4gbV9y
ZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudDsKKyAgICBwaWRfdCBtX3Byb2Nlc3NJZGVudGlmaWVy
IHsgMCB9OworI2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfQUNDRVNTSUJJTElUWShBWFJlbW90ZUZyYW1lLCBpc0FYUmVtb3RlRnJh
bWUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuY3BwCmluZGV4IDNlMzJkYjA5M2FmYi4uZmQ2ZjdjNGUyNTU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAK
QEAgLTU0NCw3ICs1NDQsOSBAQCBGbG9hdFJlY3QgQWNjZXNzaWJpbGl0eU9iamVjdDo6Y29udmVy
dEZyYW1lVG9TcGFjZShjb25zdCBGbG9hdFJlY3QmIGZyYW1lUmVjdCwgQQogICAgIAogRmxvYXRS
ZWN0IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnJlbGF0aXZlRnJhbWUoKSBjb25zdAogewotICAgIHJl
dHVybiBjb252ZXJ0RnJhbWVUb1NwYWNlKGVsZW1lbnRSZWN0KCksIEFjY2Vzc2liaWxpdHlDb252
ZXJzaW9uU3BhY2U6OlBhZ2UpOworICAgIGF1dG8gcmVjdCA9IGVsZW1lbnRSZWN0KCk7CisgICAg
cmVjdC5tb3ZlQnkocmVtb3RlRnJhbWVPZmZzZXQoKSk7CisgICAgcmV0dXJuIGNvbnZlcnRGcmFt
ZVRvU3BhY2UocmVjdCwgQWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZTo6UGFnZSk7CiB9CiAK
IEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlPYmplY3Q6Om5leHRTaWJsaW5nVW5p
Z25vcmVkKGludCBsaW1pdCkgY29uc3QKQEAgLTIwODYsMTQgKzIwODgsMjMgQEAgY29uc3QgQWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXcqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFuY2VzdG9yQWNjZXNz
aWJpbGl0eVNjcm9sbFYKICNpZiBQTEFURk9STShDT0NPQSkKIFJlbW90ZUFYT2JqZWN0UmVmIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnJlbW90ZVBhcmVudE9iamVjdCgpIGNvbnN0CiB7Ci0gICAgaWYg
KGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKSkgewotICAgICAgICBpZiAoYXV0byog
ZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUoKSkKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS0+bG9h
ZGVyKCkuY2xpZW50KCkuYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpOwotICAgIH0KLSAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7Cisg
ICAgYXV0byogZnJhbWUgPSBkb2N1bWVudCA/IGRvY3VtZW50LT5mcmFtZSgpIDogbnVsbHB0cjsK
KyAgICByZXR1cm4gZnJhbWUgPyBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuYWNjZXNzaWJpbGl0
eVJlbW90ZU9iamVjdCgpIDogbnVsbHB0cjsKIH0KICNlbmRpZgogCitJbnRQb2ludCBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpyZW1vdGVGcmFtZU9mZnNldCgpIGNvbnN0Cit7CisjaWYgUExBVEZPUk0o
Q09DT0EpCisgICAgYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOworICAgIGF1dG8q
IGZyYW1lID0gZG9jdW1lbnQgPyBkb2N1bWVudC0+ZnJhbWUoKSA6IG51bGxwdHI7CisgICAgcmV0
dXJuIGZyYW1lID8gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmFjY2Vzc2liaWxpdHlSZW1vdGVG
cmFtZU9mZnNldCgpIDogSW50UG9pbnQoKTsKKyNlbHNlCisgICAgcmV0dXJuIEludFBvaW50KCk7
CisjZW5kaWYKK30KKwogRG9jdW1lbnQqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRvY3VtZW50KCkg
Y29uc3QKIHsKICAgICBhdXRvKiBmcmFtZVZpZXcgPSBkb2N1bWVudEZyYW1lVmlldygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaApp
bmRleCA0ZDIwZjU1YTU0NGMuLjM1OTVkMzFlNzFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTEwMiw2ICsxMDIsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wg
aXNBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBi
b29sIGlzQVhSZW1vdGVGcmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXdJbnN0YW5jZSgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNWR1Jv
b3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5VGFi
bGVJbnN0YW5jZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC00NjIsMTAg
KzQ2MywxNCBAQCBwdWJsaWM6CiAgICAgV2lkZ2V0KiB3aWRnZXRGb3JBdHRhY2htZW50Vmlldygp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICBib29sIGlzUGx1Z2luKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIEludFBvaW50IHJlbW90ZUZy
YW1lT2Zmc2V0KCkgY29uc3Qgb3ZlcnJpZGU7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmVt
b3RlQVhPYmplY3RSZWYgcmVtb3RlUGFyZW50T2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
RmxvYXRSZWN0IGNvbnZlcnRSZWN0VG9QbGF0Zm9ybVNwYWNlKGNvbnN0IEZsb2F0UmVjdCYsIEFj
Y2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2UpIGNvbnN0IG92ZXJyaWRlOworICAgIFJldGFpblB0
cjxpZD4gcmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBuaWw7IH0KICNlbmRpZgorICAgIGJvb2wgaGFzUmVtb3RlRnJhbWVDaGlsZCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisKICAgICBQYWdlKiBwYWdlKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgTG9jYWxG
cmFtZVZpZXcqIGRvY3VtZW50RnJhbWVWaWV3KCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmNwcAppbmRleCBlZThhYmVjM2Q3YjUuLjJmMTJlZjc1M2U0YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwCkBAIC0yNDEzLDcgKzI0MTMsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmFkZEF0dGFjaG1lbnRDaGlsZHJlbigpCiAKICAgICAvLyBMb2NhbEZyYW1lVmlldydzIG5l
ZWQgdG8gYmUgaW5zZXJ0ZWQgaW50byB0aGUgQVggaGllcmFyY2h5IHdoZW4gZW5jb3VudGVyZWQu
CiAgICAgV2lkZ2V0KiB3aWRnZXQgPSB3aWRnZXRGb3JBdHRhY2htZW50VmlldygpOwotICAgIGlm
ICghd2lkZ2V0IHx8ICF3aWRnZXQtPmlzTG9jYWxGcmFtZVZpZXcoKSkKKyAgICBpZiAoIXdpZGdl
dCB8fCAhKHdpZGdldC0+aXNMb2NhbEZyYW1lVmlldygpIHx8IHdpZGdldC0+aXNSZW1vdGVGcmFt
ZVZpZXcoKSkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBhZGRDaGlsZChheE9iamVjdENh
Y2hlKCktPmdldE9yQ3JlYXRlKHdpZGdldCkpOwpAQCAtMjU2OCw3ICsyNTY4LDcgQEAgdm9pZCBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRDaGlsZHJlbigpCiAgICAgICAgIGF1dG8gb3du
ZXJzID0gb2JqZWN0Lm93bmVycygpOwogICAgICAgICBpZiAob3duZXJzLnNpemUoKSAmJiAhb3du
ZXJzLmNvbnRhaW5zKHRoaXMpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKwogICAg
ICAgICBhZGRDaGlsZCgmb2JqZWN0KTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwCmluZGV4IDJi
YmMzMDg3YjlmOC4uNTIxMjIyYWY2MDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcApAQCAtMjcsMTAgKzI3
LDEyIEBACiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaCIKIAogI2luY2x1ZGUg
IkFYT2JqZWN0Q2FjaGUuaCIKKyNpbmNsdWRlICJBWFJlbW90ZUZyYW1lLmgiCiAjaW5jbHVkZSAi
QWNjZXNzaWJpbGl0eVNjcm9sbGJhci5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkxvY2FsRnJhbWUuaCIKICNpbmNsdWRlICJMb2NhbEZyYW1lVmlldy5o
IgorI2luY2x1ZGUgIlJlbW90ZUZyYW1lVmlldy5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQu
aCIKICNpbmNsdWRlICJXaWRnZXQuaCIKIApAQCAtNTIsNiArNTQsMTYgQEAgQWNjZXNzaWJpbGl0
eVNjcm9sbFZpZXc6On5BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldygpCiB2b2lkIEFjY2Vzc2liaWxp
dHlTY3JvbGxWaWV3OjpkZXRhY2hSZW1vdGVQYXJ0cyhBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5
cGUgZGV0YWNobWVudFR5cGUpCiB7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZGV0YWNoUmVt
b3RlUGFydHMoZGV0YWNobWVudFR5cGUpOworCisgICAgYXV0byogcmVtb3RlRnJhbWVWaWV3ID0g
ZHluYW1pY0Rvd25jYXN0PFJlbW90ZUZyYW1lVmlldz4obV9zY3JvbGxWaWV3LmdldCgpKTsKKyAg
ICBpZiAocmVtb3RlRnJhbWVWaWV3ICYmIG1fcmVtb3RlRnJhbWUgJiYgKGRldGFjaG1lbnRUeXBl
ID09IEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZTo6RWxlbWVudERlc3Ryb3llZCB8fCBkZXRh
Y2htZW50VHlwZSA9PSBBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGU6OkNhY2hlRGVzdHJveWVk
KSkgeworI2lmIFBMQVRGT1JNKE1BQykKKyAgICAgICAgYXV0byYgcmVtb3RlRnJhbWUgPSByZW1v
dGVGcmFtZVZpZXctPmZyYW1lKCk7CisgICAgICAgIHJlbW90ZUZyYW1lLnVuYmluZFJlbW90ZUFj
Y2Vzc2liaWxpdHlGcmFtZXMobV9yZW1vdGVGcmFtZS0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7Cisj
ZW5kaWYKKyAgICAgICAgbV9yZW1vdGVGcmFtZSA9IG51bGxwdHI7CisgICAgfQorCiAgICAgbV9z
Y3JvbGxWaWV3ID0gbnVsbHB0cjsKICAgICBtX2ZyYW1lT3duZXJFbGVtZW50ID0gbnVsbHB0cjsK
IH0KQEAgLTE3Nyw4ICsxODksMTAgQEAgQWNjZXNzaWJpbGl0eVNjcm9sbGJhciogQWNjZXNzaWJp
bGl0eVNjcm9sbFZpZXc6OmFkZENoaWxkU2Nyb2xsYmFyKFNjcm9sbGJhciogc2MKIHZvaWQgQWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmNsZWFyQ2hpbGRyZW4oKQogewogICAgIEFjY2Vzc2liaWxp
dHlPYmplY3Q6OmNsZWFyQ2hpbGRyZW4oKTsKKwogICAgIG1fdmVydGljYWxTY3JvbGxiYXIgPSBu
dWxscHRyOwogICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhciA9IG51bGxwdHI7CisKICAgICBtX2No
aWxkcmVuRGlydHkgPSBmYWxzZTsKIH0KIApAQCAtMTkxLDExICsyMDUsNDUgQEAgYm9vbCBBY2Nl
c3NpYmlsaXR5U2Nyb2xsVmlldzo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25z
dAogICAgIHJldHVybiB3ZWJBcmVhLT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCk7CiB9CiAKK3Zv
aWQgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmFkZFJlbW90ZUZyYW1lQ2hpbGQoKQoreworICAg
IGF1dG8qIHJlbW90ZUZyYW1lVmlldyA9IGR5bmFtaWNEb3duY2FzdDxSZW1vdGVGcmFtZVZpZXc+
KG1fc2Nyb2xsVmlldy5nZXQoKSk7CisgICAgaWYgKCFyZW1vdGVGcmFtZVZpZXcpCisgICAgICAg
IHJldHVybjsKKworICAgIFdlYWtQdHIgY2FjaGUgPSBheE9iamVjdENhY2hlKCk7CisgICAgaWYg
KCFjYWNoZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX3JlbW90ZUZyYW1lKSB7Cisg
ICAgICAgIC8vIE1ha2UgdGhlIGZhdXggZWxlbWVudCB0aGF0IHJlcHJlc2VudHMgdGhlIHJlbW90
ZSB0cmFuc2ZlciBlbGVtZW50IGZvciBBWC4KKyAgICAgICAgbV9yZW1vdGVGcmFtZSA9IGRvd25j
YXN0PEFYUmVtb3RlRnJhbWU+KGNhY2hlLT5jcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGU6OlJlbW90
ZUZyYW1lKSk7CisgICAgICAgIG1fcmVtb3RlRnJhbWUtPnNldFBhcmVudCh0aGlzKTsKKworI2lm
IFBMQVRGT1JNKE1BQykKKyAgICAgICAgLy8gR2VuZXJhdGUgYSBuZXcgdG9rZW4gYW5kIHBhc3Mg
aXQgYmFjayB0byB0aGUgb3RoZXIgcmVtb3RlIGZyYW1lIHNvIGl0IGNhbiBiaW5kIHRoZXNlIG9i
amVjdHMgdG9nZXRoZXIuCisgICAgICAgIGF1dG8gZ2VuZXJhdGVkVG9rZW4gPSBtX3JlbW90ZUZy
YW1lLT5nZW5lcmF0ZVJlbW90ZVRva2VuKCk7CisgICAgICAgIGF1dG8mIHJlbW90ZUZyYW1lID0g
cmVtb3RlRnJhbWVWaWV3LT5mcmFtZSgpOworICAgICAgICByZW1vdGVGcmFtZS5iaW5kUmVtb3Rl
QWNjZXNzaWJpbGl0eUZyYW1lcyhnZXRwaWQoKSwgZ2VuZXJhdGVkVG9rZW4sIFt0aGlzLCAmcmVt
b3RlRnJhbWUsIHByb3RlY3RlZEFjY2Vzc2JpbGl0eVJlbW90ZUZyYW1lID0gUmVmUHRyIHsgbV9y
ZW1vdGVGcmFtZSB9XSAoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHRva2VuLCBpbnQgcHJvY2Vz
c0lkZW50aWZpZXIpIG11dGFibGUgeworICAgICAgICAgICAgcHJvdGVjdGVkQWNjZXNzYmlsaXR5
UmVtb3RlRnJhbWUtPmluaXRpYWxpemVQbGF0Zm9ybUVsZW1lbnRXaXRoUmVtb3RlVG9rZW4odG9r
ZW4sIHByb2Nlc3NJZGVudGlmaWVyKTsKKworICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSByZW1v
dGUgc2lkZSB3aXRoIHRoZSBvZmZzZXQgb2YgdGhpcyBvYmplY3Qgc28gaXQgY2FuIGNhbGN1bGF0
ZSBmcmFtZXMgY29ycmVjdGx5LgorICAgICAgICAgICAgYXV0byBsb2NhdGlvbiA9IGVsZW1lbnRS
ZWN0KCkubG9jYXRpb24oKTsKKyAgICAgICAgICAgIHJlbW90ZUZyYW1lLnVwZGF0ZVJlbW90ZUZy
YW1lQWNjZXNzaWJpbGl0eU9mZnNldChmbG9vcmVkSW50UG9pbnQobG9jYXRpb24pKTsKKyAgICAg
ICAgfSk7CisjZW5kaWYKKyAgICB9IGVsc2UKKyAgICAgICAgbV9yZW1vdGVGcmFtZS0+c2V0UGFy
ZW50KHRoaXMpOworCisgICAgYWRkQ2hpbGQobV9yZW1vdGVGcmFtZS5nZXQoKSk7Cit9CisKIHZv
aWQgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmFkZENoaWxkcmVuKCkKIHsKICAgICBBU1NFUlQo
IW1fY2hpbGRyZW5Jbml0aWFsaXplZCk7CiAgICAgbV9jaGlsZHJlbkluaXRpYWxpemVkID0gdHJ1
ZTsKIAorICAgIGFkZFJlbW90ZUZyYW1lQ2hpbGQoKTsKICAgICBhZGRDaGlsZCh3ZWJBcmVhT2Jq
ZWN0KCkpOwogICAgIHVwZGF0ZVNjcm9sbGJhcnMoKTsKIH0KQEAgLTIwMyw3ICsyNTEsNyBAQCB2
b2lkIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjphZGRDaGlsZHJlbigpCiBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6d2ViQXJlYU9iamVjdCgpIGNvbnN0CiB7
CiAgICAgYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOwotICAgIGlmICghZG9jdW1l
bnQgfHwgIWRvY3VtZW50LT5oYXNMaXZpbmdSZW5kZXJUcmVlKCkpCisgICAgaWYgKCFkb2N1bWVu
dCB8fCAhZG9jdW1lbnQtPmhhc0xpdmluZ1JlbmRlclRyZWUoKSB8fCBtX3JlbW90ZUZyYW1lKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmIChhdXRvKiBjYWNoZSA9IGF4T2JqZWN0
Q2FjaGUoKSkKQEAgLTIzNCw5ICsyODIsMTUgQEAgTGF5b3V0UmVjdCBBY2Nlc3NpYmlsaXR5U2Ny
b2xsVmlldzo6ZWxlbWVudFJlY3QoKSBjb25zdAogCiBEb2N1bWVudCogQWNjZXNzaWJpbGl0eVNj
cm9sbFZpZXc6OmRvY3VtZW50KCkgY29uc3QKIHsKLSAgICBpZiAoYXV0byogZnJhbWVWaWV3ID0g
ZHluYW1pY0Rvd25jYXN0PExvY2FsRnJhbWVWaWV3PihtX3Njcm9sbFZpZXcuZ2V0KCkpKSB7Cisg
ICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGR5bmFtaWNEb3duY2FzdDxMb2NhbEZyYW1lVmlldz4o
bV9zY3JvbGxWaWV3LmdldCgpKSkKICAgICAgICAgcmV0dXJuIGZyYW1lVmlldy0+ZnJhbWUoKS5k
b2N1bWVudCgpOworCisgICAgLy8gRm9yIHRoZSBSZW1vdGVGcmFtZVZpZXcgY2FzZSwgd2UgbmVl
ZCB0byByZXR1cm4gdGhlIGRvY3VtZW50IG9mIG91ciBob3N0aW5nIHBhcmVudCBzbyBheE9iamVj
dENhY2hlKCkgcmVzb2x2ZXMgY29ycmVjdGx5LgorICAgIGlmIChhdXRvKiByZW1vdGVGcmFtZVZp
ZXcgPSBkeW5hbWljRG93bmNhc3Q8UmVtb3RlRnJhbWVWaWV3PihtX3Njcm9sbFZpZXcuZ2V0KCkp
KSB7CisgICAgICAgIGlmIChhdXRvKiBvd25lciA9IHJlbW90ZUZyYW1lVmlldy0+ZnJhbWUoKS5v
d25lckVsZW1lbnQoKSkKKyAgICAgICAgICAgIHJldHVybiAmKG93bmVyLT5kb2N1bWVudCgpKTsK
ICAgICB9CisKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdDo6ZG9jdW1lbnQoKTsKIH0K
IApAQCAtMjU5LDggKzMxMywxMCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldzo6cGFyZW50T2JqZWN0KCkgY29uc3QKICAgICBXZWFrUHRyIG93bmVyID0gbV9m
cmFtZU93bmVyRWxlbWVudC5nZXQoKTsKICAgICBpZiAoYXV0byogbG9jYWxGcmFtZVZpZXcgPSBk
eW5hbWljRG93bmNhc3Q8TG9jYWxGcmFtZVZpZXc+KG1fc2Nyb2xsVmlldy5nZXQoKSkpCiAgICAg
ICAgIG93bmVyID0gbG9jYWxGcmFtZVZpZXctPmZyYW1lKCkub3duZXJFbGVtZW50KCk7CisgICAg
ZWxzZSBpZiAoYXV0byogcmVtb3RlRnJhbWVWaWV3ID0gZHluYW1pY0Rvd25jYXN0PFJlbW90ZUZy
YW1lVmlldz4obV9zY3JvbGxWaWV3LmdldCgpKSkKKyAgICAgICAgb3duZXIgPSByZW1vdGVGcmFt
ZVZpZXctPmZyYW1lKCkub3duZXJFbGVtZW50KCk7CiAKLSAgICBpZiAoY2FjaGUgJiYgb3duZXIg
JiYgb3duZXItPnJlbmRlcmVyKCkpCisgICAgaWYgKG93bmVyICYmIG93bmVyLT5yZW5kZXJlcigp
KQogICAgICAgICByZXR1cm4gY2FjaGUtPmdldE9yQ3JlYXRlKG93bmVyLmdldCgpKTsKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaAppbmRleCA1NTcwNDQ2NzFjN2QuLjUyNWFjNzgz
ZmJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5U2Nyb2xsVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVNjcm9sbFZpZXcuaApAQCAtMzAsNiArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgCitjbGFzcyBBWFJlbW90ZUZyYW1lOwogY2xhc3MgQWNjZXNzaWJpbGl0eVNjcm9s
bGJhcjsKIGNsYXNzIFNjcm9sbGJhcjsKIGNsYXNzIFNjcm9sbFZpZXc7CkBAIC01NCw3ICs1NSw4
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlld0luc3RhbmNl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgaXNFbmFibGVkKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIAorICAgIGJvb2wgaGFzUmVtb3Rl
RnJhbWVDaGlsZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcmVtb3RlRnJhbWU7IH0KKwogICAg
IGJvb2wgaXNBdHRhY2htZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUGxhdGZvcm1XaWRnZXQg
cGxhdGZvcm1XaWRnZXQoKSBjb25zdCBvdmVycmlkZTsKICAgICBXaWRnZXQqIHdpZGdldEZvckF0
dGFjaG1lbnRWaWV3KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gY3VycmVudFNjcm9sbFZpZXco
KTsgfQpAQCAtNjksNiArNzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0Rm9jdXNlZChib29s
KSBvdmVycmlkZTsKICAgICBib29sIGNhblNldEZvY3VzQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBpc0ZvY3VzZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFkZFJl
bW90ZUZyYW1lQ2hpbGQoKTsKIAogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIExvY2FsRnJhbWVWaWV3KiBkb2N1bWVudEZyYW1lVmlldygpIGNvbnN0IG92ZXJy
aWRlOwpAQCAtODUsNiArODgsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5
T2JqZWN0PiBtX2hvcml6b250YWxTY3JvbGxiYXI7CiAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlP
YmplY3Q+IG1fdmVydGljYWxTY3JvbGxiYXI7CiAgICAgYm9vbCBtX2NoaWxkcmVuRGlydHk7Cisg
ICAgUmVmUHRyPEFYUmVtb3RlRnJhbWU+IG1fcmVtb3RlRnJhbWU7CiB9OwogICAgIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuY3BwCmluZGV4IDVkZTk3
MGYxZjcwZC4uNTE4N2IyZmEzNTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuY3BwCkBA
IC0zNzAsNiArMzcwLDcgQEAgc3RhdGljIEF0c3BpOjpSb2xlIGF0c3BpUm9sZShBY2Nlc3NpYmls
aXR5Um9sZSByb2xlKQogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlN1bW1hcnk6CiAgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFibGVIZWFkZXJDb250YWluZXI6CiAgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6U3VnZ2VzdGlvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpSZW1vdGVGcmFtZToKICAgICAgICAgcmV0dXJuIEF0c3BpOjpSb2xlOjpVbmtub3duOwogICAg
IC8vIEFkZCBtb3N0IG5ldyByb2xlcyBhYm92ZS4gVGhlIHJlbGVhc2UgYXNzZXJ0IGlzIGZvciBy
b2xlcyB0aGF0IGFyZSBoYW5kbGVkIHNwZWNpYWxseS4KICAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpMaXN0TWFya2VyOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQpp
bmRleCAyZjI5YjcyZmZlN2UuLjkyNDNhZDZiZDM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJJT1MubW0KQEAgLTExMTIsNiArMTExMiw3IEBAIHN0YXRpYyBBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciAqYW5jZXN0b3JXaXRoUm9sZShjb25zdCBBWENvcmVPYmplY3QmIGRl
c2NlbmRhCiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6SWdub3JlZDoKICAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpMaW5lQnJlYWs6CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
UHJlc2VudGF0aW9uYWw6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmVtb3RlRnJhbWU6
CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bjoKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKaW5kZXggMTAxNDU0NjI3OGYz
Li4zNDJkNGM3MmU2NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCkBAIC0zNzgsNiAr
Mzc4LDEwIEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoY29u
c3QgUmVmPEFjY2Vzc2liaWxpdHlPYmplY3Q+JiBheE9iCiAjZW5kaWYKIAogICAgIHNldE9iamVj
dFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJbnRlcm5hbExpbmtFbGVtZW50LCBvYmplY3QuaW50
ZXJuYWxMaW5rRWxlbWVudCgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SGFz
UmVtb3RlRnJhbWVDaGlsZCwgb2JqZWN0Lmhhc1JlbW90ZUZyYW1lQ2hpbGQoKSk7CisgICAgLy8g
RG9uJ3QgZHVwbGljYXRlIHRoZSByZW1vdGVGcmFtZU9mZnNldCBmb3IgZXZlcnkgb2JqZWN0LiBK
dXN0IHN0b3JlIGluIHRoZSBXZWJBcmVhLgorICAgIGlmIChvYmplY3QuaXNXZWJBcmVhKCkpCisg
ICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpSZW1vdGVGcmFtZU9mZnNldCwgb2Jq
ZWN0LnJlbW90ZUZyYW1lT2Zmc2V0KCkpOwogCiAgICAgaW5pdGlhbGl6ZVBsYXRmb3JtUHJvcGVy
dGllcyhheE9iamVjdCk7CiB9CkBAIC00NjQsNiArNDY4LDcgQEAgdm9pZCBBWElzb2xhdGVkT2Jq
ZWN0OjpzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEFYUHJvcGVydHlW
YWx1ZVYKICAgICAgICAgW10oT3B0aW9uU2V0PEFYQW5jZXN0b3JGbGFnPiYgdHlwZWRWYWx1ZSkg
eyByZXR1cm4gdHlwZWRWYWx1ZS5pc0VtcHR5KCk7IH0sCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgICAgIFtdKFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+JiB0eXBlZFZhbHVlKSB7IHJl
dHVybiAhdHlwZWRWYWx1ZTsgfSwKKyAgICAgICAgW10oUmV0YWluUHRyPGlkPiYgdHlwZWRWYWx1
ZSkgeyByZXR1cm4gIXR5cGVkVmFsdWU7IH0sCiAjZW5kaWYKICAgICAgICAgW10oSW5zaWRlTGlu
ayYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZSA9PSBJbnNpZGVMaW5rKCk7IH0sCiAg
ICAgICAgIFtdKFZlY3RvcjxWZWN0b3I8QVhJRD4+JiB0eXBlZFZhbHVlKSB7IHJldHVybiB0eXBl
ZFZhbHVlLmlzRW1wdHkoKTsgfSwKQEAgLTEyMDYsNiArMTIxMSwyMSBAQCBMYXlvdXRSZWN0IEFY
SXNvbGF0ZWRPYmplY3Q6OmVsZW1lbnRSZWN0KCkgY29uc3QKICAgICB9KTsKIH0KIAorSW50UG9p
bnQgQVhJc29sYXRlZE9iamVjdDo6cmVtb3RlRnJhbWVPZmZzZXQoKSBjb25zdAoreworICAgIGF1
dG8qIHdlYkFyZWEgPSBBY2Nlc3NpYmlsaXR5OjpmaW5kQW5jZXN0b3I8QVhJc29sYXRlZE9iamVj
dD4oKnRoaXMsIHRydWUsIFtdIChjb25zdCBhdXRvJiBvYmplY3QpIHsKKyAgICAgICAgcmV0dXJu
IG9iamVjdC5pc1dlYkFyZWEoKTsKKyAgICB9KTsKKworICAgIGlmICghd2ViQXJlYSkKKyAgICAg
ICAgcmV0dXJuIHsgfTsKKworICAgIGlmIChhdXRvIHBvaW50ID0gd2ViQXJlYS0+b3B0aW9uYWxB
dHRyaWJ1dGVWYWx1ZTxJbnRQb2ludD4oQVhQcm9wZXJ0eU5hbWU6OlJlbW90ZUZyYW1lT2Zmc2V0
KSkKKyAgICAgICAgcmV0dXJuICpwb2ludDsKKworICAgIHJldHVybiB7IH07Cit9CisKIEZsb2F0
UG9pbnQgQVhJc29sYXRlZE9iamVjdDo6c2NyZWVuUmVsYXRpdmVQb3NpdGlvbigpIGNvbnN0CiB7
CiAgICAgaWYgKGF1dG8gcG9pbnQgPSBvcHRpb25hbEF0dHJpYnV0ZVZhbHVlPEZsb2F0UG9pbnQ+
KEFYUHJvcGVydHlOYW1lOjpTY3JlZW5SZWxhdGl2ZVBvc2l0aW9uKSkKQEAgLTEyMjksMjIgKzEy
NDksMjMgQEAgRmxvYXRQb2ludCBBWElzb2xhdGVkT2JqZWN0OjpzY3JlZW5SZWxhdGl2ZVBvc2l0
aW9uKCkgY29uc3QKIAogRmxvYXRSZWN0IEFYSXNvbGF0ZWRPYmplY3Q6OnJlbGF0aXZlRnJhbWUo
KSBjb25zdAogeworICAgIEZsb2F0UmVjdCByZWxhdGl2ZUZyYW1lOworCiAgICAgaWYgKGF1dG8g
Y2FjaGVkUmVsYXRpdmVGcmFtZSA9IG9wdGlvbmFsQXR0cmlidXRlVmFsdWU8SW50UmVjdD4oQVhQ
cm9wZXJ0eU5hbWU6OlJlbGF0aXZlRnJhbWUpKSB7CiAgICAgICAgIC8vIFdlIHNob3VsZCBub3Qg
aGF2ZSBjYWNoZWQgYSByZWxhdGl2ZSBmcmFtZSBmb3IgZWxlbWVudHMgdGhhdCBnZXQgdGhlaXIg
Z2VvbWV0cnkgZnJvbSB0aGVpciBjaGlsZHJlbi4KICAgICAgICAgQVNTRVJUKCFtX2dldHNHZW9t
ZXRyeUZyb21DaGlsZHJlbik7Ci0gICAgICAgIHJldHVybiAqY2FjaGVkUmVsYXRpdmVGcmFtZTsK
LSAgICB9Ci0KLSAgICBpZiAobV9nZXRzR2VvbWV0cnlGcm9tQ2hpbGRyZW4pIHsKKyAgICAgICAg
cmVsYXRpdmVGcmFtZSA9ICpjYWNoZWRSZWxhdGl2ZUZyYW1lOworICAgIH0gZWxzZSBpZiAobV9n
ZXRzR2VvbWV0cnlGcm9tQ2hpbGRyZW4pIHsKICAgICAgICAgYXV0byBmcmFtZSA9IGVuY2xvc2lu
Z0ludFJlY3QocmVsYXRpdmVGcmFtZUZyb21DaGlsZHJlbigpKTsKICAgICAgICAgaWYgKCFmcmFt
ZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gZnJhbWU7CisgICAgICAgICAgICByZWxh
dGl2ZUZyYW1lID0gZnJhbWU7CiAgICAgICAgIC8vIEVpdGhlciB3ZSBoYWQgbm8gY2hpbGRyZW4s
IG9yIG91ciBjaGlsZHJlbiBoYWQgZW1wdHkgZnJhbWVzLiBUaGUgcmlnaHQgdGhpbmcgdG8gZG8g
d291bGQgYmUgdG8gcmV0dXJuCiAgICAgICAgIC8vIGEgcmVjdCBhdCB0aGUgcG9zaXRpb24gb2Yg
dGhlIG5lYXJlc3QgcmVuZGVyIHRyZWUgYW5jZXN0b3Igd2l0aCBzb21lIG1hZGUtdXAgc2l6ZSAo
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmJvdW5kaW5nQm94UmVjdCBkb2VzIHRoaXMpLgogICAg
ICAgICAvLyBIb3dldmVyLCB3ZSBkb24ndCBoYXZlIGFjY2VzcyB0byB0aGUgcmVuZGVyIHRyZWUg
aW4gdGhpcyBjb250ZXh0IChvbmx5IHRoZSBBWCBpc29sYXRlZCB0cmVlLCB3aGljaCBpcyB0b28g
c3BhcnNlIGZvciB0aGlzIHB1cnBvc2UpLCBzbwogICAgICAgICAvLyB1bnRpbCB3ZSBjYWNoZSB0
aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIGxldCdzIGdvIHRvIHRoZSBtYWluLXRocmVhZC4KICAg
ICB9IGVsc2UgaWYgKHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpDb2x1bW4gfHwg
cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRhYmxlSGVhZGVyQ29udGFpbmVyKQot
ICAgICAgICByZXR1cm4gZXhwb3NlZFRhYmxlQW5jZXN0b3IoKSA/IHJlbGF0aXZlRnJhbWVGcm9t
Q2hpbGRyZW4oKSA6IEZsb2F0UmVjdCgpOworICAgICAgICByZWxhdGl2ZUZyYW1lID0gZXhwb3Nl
ZFRhYmxlQW5jZXN0b3IoKSA/IHJlbGF0aXZlRnJhbWVGcm9tQ2hpbGRyZW4oKSA6IEZsb2F0UmVj
dCgpOworCiAKICAgICAvLyBNb2NrIG9iamVjdHMgYW5kIFNWRyBvYmplY3RzIG5lZWQgdXNlIHRo
ZSBtYWluIHRocmVhZCBzaW5jZSB0aGV5IGRvIG5vdCBoYXZlIHJlbmRlciBub2RlcyBhbmQgYXJl
IG5vdCBwYWludGVkIHdpdGggbGF5ZXJzLCByZXNwZWN0aXZlbHkuCiAgICAgLy8gRklYTUU6IFJl
bW92ZSBpc05vbkxheWVyU1ZHT2JqZWN0IHdoZW4gTEJTRSBpcyBlbmFibGVkICYgU1ZHIGZyYW1l
cyBhcmUgY2FjaGVkLgpAQCAtMTI2Niw2ICsxMjg3LDcgQEAgRmxvYXRSZWN0IEFYSXNvbGF0ZWRP
YmplY3Q6OnJlbGF0aXZlRnJhbWUoKSBjb25zdAogICAgIGlmIChhbmNlc3RvciAmJiBmcmFtZVJl
Y3QubG9jYXRpb24oKSA9PSBGbG9hdFBvaW50KCkpCiAgICAgICAgIGZyYW1lUmVjdC5zZXRMb2Nh
dGlvbihhbmNlc3Rvci0+cmVsYXRpdmVGcmFtZSgpLmxvY2F0aW9uKCkpOwogCisgICAgZnJhbWVS
ZWN0Lm1vdmVCeSh7IHJlbW90ZUZyYW1lT2Zmc2V0KCkgfSk7CiAgICAgcmV0dXJuIGZyYW1lUmVj
dDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCmluZGV4IGQyYTY2YzJmNTNlNC4uZGU4Mjdk
NWZlMDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVk
dHJlZS9BWElzb2xhdGVkT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYg
RU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKIAogI2luY2x1ZGUgIkFYQ29yZU9i
amVjdC5oIgorI2luY2x1ZGUgIkFYSXNvbGF0ZWRUcmVlLmgiCiAjaW5jbHVkZSAiQVhPYmplY3RD
YWNoZS5oIgogI2luY2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgpA
QCAtMjE1LDYgKzIxNiw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0ZpbGVVcGxvYWRCdXR0b24o
KSBjb25zdCBmaW5hbCB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6
OklzRmlsZVVwbG9hZEJ1dHRvbik7IH0KICAgICBib29sIGlzTWV0ZXIoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWV0ZXIpOyB9Owog
ICAgIEZsb2F0UG9pbnQgc2NyZWVuUmVsYXRpdmVQb3NpdGlvbigpIGNvbnN0IGZpbmFsOworICAg
IEludFBvaW50IHJlbW90ZUZyYW1lT2Zmc2V0KCkgY29uc3QgZmluYWw7CiAgICAgRmxvYXRSZWN0
IHJlbGF0aXZlRnJhbWUoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGhhc0NhY2hlZFJlbGF0aXZl
RnJhbWUoKSBjb25zdCB7IHJldHVybiBvcHRpb25hbEF0dHJpYnV0ZVZhbHVlPEludFJlY3Q+KEFY
UHJvcGVydHlOYW1lOjpSZWxhdGl2ZUZyYW1lKS5oYXNfdmFsdWUoKTsgfQogI2lmIFBMQVRGT1JN
KE1BQykKQEAgLTI2Myw3ICsyNjUsNyBAQCBwcml2YXRlOgogICAgIEFYSXNvbGF0ZWRPYmplY3Qq
IGFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3QgZmluYWw7CiAgICAg
QVhJc29sYXRlZE9iamVjdCogZm9jdXNlZFVJRWxlbWVudCgpIGNvbnN0IGZpbmFsOwogICAgIEFY
Q29yZU9iamVjdCogaW50ZXJuYWxMaW5rRWxlbWVudCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG9i
amVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJbnRlcm5hbExpbmtFbGVtZW50KTsg
fQotICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciByYWRpb0J1dHRvbkdyb3VwKCkgY29u
c3QgeyByZXR1cm4gdHJlZSgpLT5vYmplY3RzRm9ySURzKHZlY3RvckF0dHJpYnV0ZVZhbHVlPEFY
SUQ+KEFYUHJvcGVydHlOYW1lOjpSYWRpb0J1dHRvbkdyb3VwKSk7IH0KKyAgICBBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3IgcmFkaW9CdXR0b25Hcm91cCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IHRyZWUoKS0+b2JqZWN0c0ZvcklEcyh2ZWN0b3JBdHRyaWJ1dGVWYWx1ZTxBWElEPihBWFByb3Bl
cnR5TmFtZTo6UmFkaW9CdXR0b25Hcm91cCkpOyB9CiAgICAgQVhJc29sYXRlZE9iamVjdCogc2Ny
b2xsQmFyKEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5n
IHBsYWNlaG9sZGVyVmFsdWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVW
YWx1ZShBWFByb3BlcnR5TmFtZTo6UGxhY2Vob2xkZXJWYWx1ZSk7IH0KICAgICBTdHJpbmcgZXhw
YW5kZWRUZXh0VmFsdWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1
ZShBWFByb3BlcnR5TmFtZTo6RXhwYW5kZWRUZXh0VmFsdWUpOyB9CkBAIC00NTYsNyArNDU4LDcg
QEAgcHJpdmF0ZToKICAgICBib29sIGlzQWNjZXNzaWJpbGl0eUFSSUFHcmlkSW5zdGFuY2UoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5QVJJ
QUdyaWRSb3dJbnN0YW5jZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9v
bCBpc0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGxJbnN0YW5jZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIGZhbHNlOyB9Ci0KKyAgICBib29sIGlzQVhSZW1vdGVGcmFtZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc05hdGl2ZVRleHRDb250cm9sKCkgY29uc3QgZmlu
YWw7CiAgICAgYm9vbCBpc0xpc3RCb3hPcHRpb24oKSBjb25zdCBmaW5hbDsKICAgICBib29sIGlz
TW9ja09iamVjdCgpIGNvbnN0IGZpbmFsOwpAQCAtNTM3LDcgKzUzOSw5IEBAIHByaXZhdGU6CiAg
ICAgU3RyaW5nIG5hbWVBdHRyaWJ1dGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdHJpbmdBdHRy
aWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6TmFtZUF0dHJpYnV0ZSk7IH0KICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICBib29sIGhhc0FwcGxlUERGQW5ub3RhdGlvbkF0dHJpYnV0ZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SGFzQXBw
bGVQREZBbm5vdGF0aW9uQXR0cmlidXRlKTsgfQorICAgIFJldGFpblB0cjxpZD4gcmVtb3RlRnJh
bWVQbGF0Zm9ybUVsZW1lbnQoKSBjb25zdCBmaW5hbDsKICNlbmRpZgorICAgIGJvb2wgaGFzUmVt
b3RlRnJhbWVDaGlsZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShB
WFByb3BlcnR5TmFtZTo6SGFzUmVtb3RlRnJhbWVDaGlsZCk7IH0KIAogI2lmIFBMQVRGT1JNKENP
Q09BKSAmJiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICBWZWN0b3I8UmV0YWluUHRyPGlkPj4g
bW9kZWxFbGVtZW50Q2hpbGRyZW4oKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAppbmRl
eCA2OTY2NTg0NDhmNjUuLjNhY2MxOTk4YjFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcApA
QCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQVhJc29sYXRlZE9iamVjdC5oIgogI2luY2x1
ZGUgIkFYTG9nZ2VyLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlLmgiCiAjaW5jbHVk
ZSAiQWNjZXNzaWJpbGl0eVRhYmxlUm93LmgiCiAjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24uaCIK
ICNpbmNsdWRlICJMb2NhbEZyYW1lVmlldy5oIgpAQCAtMjI1LDQ2ICsyMjYsMjYgQEAgUmVmUHRy
PEFYSXNvbGF0ZWRPYmplY3Q+IEFYSXNvbGF0ZWRUcmVlOjpvYmplY3RGb3JJRChjb25zdCBBWElE
IGF4SUQpIGNvbnN0CiAgICAgcmV0dXJuIGF4SUQuaXNWYWxpZCgpID8gbV9yZWFkZXJUaHJlYWRO
b2RlTWFwLmdldChheElEKSA6IG51bGxwdHI7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFU+Ci1W
ZWN0b3I8UmVmUHRyPEFYQ29yZU9iamVjdD4+IEFYSXNvbGF0ZWRUcmVlOjpvYmplY3RzRm9ySURz
KGNvbnN0IFUmIGF4SURzKQorUmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+IEFYSXNvbGF0ZWRUcmVl
OjpyZXRyaWV2ZU9iamVjdEZvcklERnJvbU1haW5UaHJlYWQoY29uc3QgQVhJRCBheElEKSBjb25z
dAogewotICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwotCi0gICAgVmVjdG9yPFJlZlB0cjxB
WENvcmVPYmplY3Q+PiByZXN1bHQ7Ci0gICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
YXhJRHMuc2l6ZSgpKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGF4SUQgOiBheElEcykgewotICAg
ICAgICBSZWZQdHIgb2JqZWN0ID0gb2JqZWN0Rm9ySUQoYXhJRCk7Ci0gICAgICAgIGlmIChvYmpl
Y3QpIHsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoV1RGTW92ZShvYmplY3QpKTsKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gVGhlcmUgaXMgbm8gaXNv
bGF0ZWQgb2JqZWN0IGZvciB0aGlzIEFYSUQuIFRoaXMgY2FuIGhhcHBlbiBpZiB0aGUgY29ycmVz
cG9uZGluZyBsaXZlIG9iamVjdCBpcyBpZ25vcmVkLgotICAgICAgICAvLyBJZiB0aGVyZSBpcyBh
IGxpdmUgb2JqZWN0IGZvciB0aGlzIElEIGFuZCBpdCBpcyBhbiBpZ25vcmVkIHRhcmdldCBvZiBh
IHJlbGF0aW9uc2hpcCwgY3JlYXRlIGFuIGlzb2xhdGVkIG9iamVjdCBmb3IgaXQuCi0gICAgICAg
IG9iamVjdCA9IEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxSZWZQ
dHI8QVhJc29sYXRlZE9iamVjdD4+KFsmYXhJRCwgdGhpc10gKCkgLT4gUmVmUHRyPEFYSXNvbGF0
ZWRPYmplY3Q+IHsKLSAgICAgICAgICAgIGF1dG8qIGNhY2hlID0gYXhPYmplY3RDYWNoZSgpOwot
ICAgICAgICAgICAgaWYgKCFjYWNoZSB8fCAhY2FjaGUtPnJlbGF0aW9uVGFyZ2V0SURzKCkuY29u
dGFpbnMoYXhJRCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAgICAg
ICAgIFJlZlB0ciBheE9iamVjdCA9IGNhY2hlLT5vYmplY3RGb3JJRChheElEKTsKLSAgICAgICAg
ICAgIGlmICghYXhPYmplY3QgfHwgIWF4T2JqZWN0LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAgICAgICAgIGF1dG8gb2Jq
ZWN0ID0gQVhJc29sYXRlZE9iamVjdDo6Y3JlYXRlKCpheE9iamVjdCwgY29uc3RfY2FzdDxBWElz
b2xhdGVkVHJlZSo+KHRoaXMpKTsKLSAgICAgICAgICAgIEFTU0VSVChheE9iamVjdC0+d3JhcHBl
cigpKTsKLSAgICAgICAgICAgIG9iamVjdC0+YXR0YWNoUGxhdGZvcm1XcmFwcGVyKGF4T2JqZWN0
LT53cmFwcGVyKCkpOwotICAgICAgICAgICAgcmV0dXJuIG9iamVjdDsKLSAgICAgICAgfSk7Ci0g
ICAgICAgIGlmIChvYmplY3QpIHsKLSAgICAgICAgICAgIG1fcmVhZGVyVGhyZWFkTm9kZU1hcC5h
ZGQoYXhJRCwgKm9iamVjdCk7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKFdURk1vdmUob2Jq
ZWN0KSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmVzdWx0LnNocmlua1RvRml0KCk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKKyAgICAvLyBUaGVyZSBpcyBubyBpc29sYXRlZCBvYmplY3QgZm9yIHRo
aXMgQVhJRC4gVGhpcyBjYW4gaGFwcGVuIGlmIHRoZSBjb3JyZXNwb25kaW5nIGxpdmUgb2JqZWN0
IGlzIGlnbm9yZWQuCisgICAgLy8gSWYgdGhlcmUgaXMgYSBsaXZlIG9iamVjdCBmb3IgdGhpcyBJ
RCBhbmQgaXQgaXMgYW4gaWdub3JlZCB0YXJnZXQgb2YgYSByZWxhdGlvbnNoaXAsIGNyZWF0ZSBh
biBpc29sYXRlZCBvYmplY3QgZm9yIGl0LgorICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRy
aWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8UmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+PihbJmF4SUQs
IHRoaXNdICgpIC0+IFJlZlB0cjxBWElzb2xhdGVkT2JqZWN0PiB7CisgICAgICAgIGF1dG8qIGNh
Y2hlID0gYXhPYmplY3RDYWNoZSgpOworICAgICAgICBpZiAoIWNhY2hlIHx8ICFjYWNoZS0+cmVs
YXRpb25UYXJnZXRJRHMoKS5jb250YWlucyhheElEKSkKKyAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgICAgIFJlZlB0ciBheE9iamVjdCA9IGNhY2hlLT5vYmplY3RGb3JJRChheElE
KTsKKyAgICAgICAgaWYgKCFheE9iamVjdCB8fCAhYXhPYmplY3QtPmFjY2Vzc2liaWxpdHlJc0ln
bm9yZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGF1dG8gb2Jq
ZWN0ID0gQVhJc29sYXRlZE9iamVjdDo6Y3JlYXRlKCpheE9iamVjdCwgY29uc3RfY2FzdDxBWElz
b2xhdGVkVHJlZSo+KHRoaXMpKTsKKyAgICAgICAgQVNTRVJUKGF4T2JqZWN0LT53cmFwcGVyKCkp
OworICAgICAgICBvYmplY3QtPmF0dGFjaFBsYXRmb3JtV3JhcHBlcihheE9iamVjdC0+d3JhcHBl
cigpKTsKKyAgICAgICAgcmV0dXJuIG9iamVjdDsKKyAgICB9KTsKIH0KIAotCiB2b2lkIEFYSXNv
bGF0ZWRUcmVlOjpnZW5lcmF0ZVN1YnRyZWUoQWNjZXNzaWJpbGl0eU9iamVjdCYgYXhPYmplY3Qp
CiB7CiAgICAgQVhUUkFDRSgiQVhJc29sYXRlZFRyZWU6OmdlbmVyYXRlU3VidHJlZSJfcyk7CkBA
IC02NjAsNiArNjQxLDEyIEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZU5vZGVQcm9wZXJ0
aWVzKEFYQ29yZU9iamVjdCYgYXhPYmplY3QsIGNvbnN0IEFYUHJvcGVyCiAgICAgICAgIGNhc2Ug
QVhQcm9wZXJ0eU5hbWU6OlBvc0luU2V0OgogICAgICAgICAgICAgcHJvcGVydHlNYXAuc2V0KEFY
UHJvcGVydHlOYW1lOjpQb3NJblNldCwgYXhPYmplY3QucG9zSW5TZXQoKSk7CiAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBBWFByb3BlcnR5TmFtZTo6UmVtb3RlRnJhbWVQbGF0Zm9y
bUVsZW1lbnQ6CisgICAgICAgICAgICBwcm9wZXJ0eU1hcC5zZXQoQVhQcm9wZXJ0eU5hbWU6OlJl
bW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50LCBheE9iamVjdC5yZW1vdGVGcmFtZVBsYXRmb3JtRWxl
bWVudCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFYUHJvcGVydHlOYW1l
OjpIYXNSZW1vdGVGcmFtZUNoaWxkOgorICAgICAgICAgICAgcHJvcGVydHlNYXAuc2V0KEFYUHJv
cGVydHlOYW1lOjpIYXNSZW1vdGVGcmFtZUNoaWxkLCBheE9iamVjdC5oYXNSZW1vdGVGcmFtZUNo
aWxkKCkpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQVhQcm9wZXJ0eU5hbWU6
OlJvbGVEZXNjcmlwdGlvbjoKICAgICAgICAgICAgIHByb3BlcnR5TWFwLnNldChBWFByb3BlcnR5
TmFtZTo6Um9sZURlc2NyaXB0aW9uLCBheE9iamVjdC5yb2xlRGVzY3JpcHRpb24oKS5pc29sYXRl
ZENvcHkoKSk7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4IGE0
MTc5Mjc5NzhkMi4uNDYxZWVhZTYwYWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKQEAgLTEwNCw2
ICsxMDQsNyBAQCBlbnVtIGNsYXNzIEFYUHJvcGVydHlOYW1lIDogdWludDE2X3QgewogICAgIEhh
c0hpZ2hsaWdodGluZywKICAgICBIYXNJdGFsaWNGb250LAogICAgIEhhc1BsYWluVGV4dCwKKyAg
ICBIYXNSZW1vdGVGcmFtZUNoaWxkLAogICAgIEhhc1VuZGVybGluZSwKICAgICBIZWFkZXJDb250
YWluZXIsCiAgICAgSGVhZGluZ0xldmVsLApAQCAtMjAxLDYgKzIwMiw4IEBAIGVudW0gY2xhc3Mg
QVhQcm9wZXJ0eU5hbWUgOiB1aW50MTZfdCB7CiAgICAgUHJldmVudEtleWJvYXJkRE9NRXZlbnRE
aXNwYXRjaCwKICAgICBSYWRpb0J1dHRvbkdyb3VwLAogICAgIFJlbGF0aXZlRnJhbWUsCisgICAg
UmVtb3RlRnJhbWVPZmZzZXQsCisgICAgUmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQsCiAgICAg
Um9sZVZhbHVlLAogICAgIFJvbGVQbGF0Zm9ybVN0cmluZywKICAgICBSb2xlRGVzY3JpcHRpb24s
CkBAIC0yNTcsNiArMjYwLDcgQEAgdXNpbmcgQVhQcm9wZXJ0eU5hbWVTZXQgPSBIYXNoU2V0PEFY
UHJvcGVydHlOYW1lLCBJbnRIYXNoPEFYUHJvcGVydHlOYW1lPiwgV1RGOjoKIHVzaW5nIEFYUHJv
cGVydHlWYWx1ZVZhcmlhbnQgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIEFYSUQsIFN0
cmluZywgYm9vbCwgaW50LCB1bnNpZ25lZCwgZG91YmxlLCBmbG9hdCwgdWludDY0X3QsIEFjY2Vz
c2liaWxpdHlCdXR0b25TdGF0ZSwgQ29sb3IsIFVSTCwgTGF5b3V0UmVjdCwgRmxvYXRQb2ludCwg
RmxvYXRSZWN0LCBJbnRQb2ludCwgSW50UmVjdCwgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25l
ZD4sIFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4sIFZlY3RvcjxBWElEPiwgVmVjdG9yPHN0ZDo6
cGFpcjxBWElELCBBWElEPj4sIFZlY3RvcjxTdHJpbmc+LCBQYXRoLCBPcHRpb25TZXQ8QVhBbmNl
c3RvckZsYWc+LCBJbnNpZGVMaW5rLCBWZWN0b3I8VmVjdG9yPEFYSUQ+PiwgQ2hhcmFjdGVyUmFu
Z2UsIHN0ZDo6cGFpcjxBWElELCBDaGFyYWN0ZXJSYW5nZT4KICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICAsIFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+CisgICAgLCBSZXRhaW5QdHI8aWQ+
CiAjZW5kaWYKICNpZiBFTkFCTEUoQVhfVEhSRUFEX1RFWFRfQVBJUykKICAgICAsIEFYVGV4dFJ1
bnMKQEAgLTM5Nyw2ICs0MDEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlRW1wdHlDb250
ZW50KEFjY2Vzc2liaWxpdHlPYmplY3QmKTsKICAgICBjb25zdGV4cHIgYm9vbCBpc1VwZGF0aW5n
U3VidHJlZSgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdE9mU3VidHJlZUJlaW5nVXBkYXRlZDsgfQog
ICAgIGNvbnN0ZXhwciB2b2lkIHVwZGF0aW5nU3VidHJlZShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBh
eE9iamVjdCkgeyBtX3Jvb3RPZlN1YnRyZWVCZWluZ1VwZGF0ZWQgPSBheE9iamVjdDsgfQorICAg
IFJlZlB0cjxBWElzb2xhdGVkT2JqZWN0PiByZXRyaWV2ZU9iamVjdEZvcklERnJvbU1haW5UaHJl
YWQoY29uc3QgQVhJRCkgY29uc3Q7CiAKICAgICBlbnVtIGNsYXNzIEF0dGFjaFdyYXBwZXIgOiBi
b29sIHsgT25NYWluVGhyZWFkLCBPbkFYVGhyZWFkIH07CiAgICAgc3RydWN0IE5vZGVDaGFuZ2Ug
ewpAQCAtNDk3LDYgKzUwMiwzMCBAQCBpbmxpbmUgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiBBWElz
b2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJRChzdGQ6Om9wdGlvbmFsPFBhZ2VJZAogICAgIHJldHVy
biBwYWdlSUQgPyB0cmVlRm9yUGFnZUlEKCpwYWdlSUQpIDogbnVsbHB0cjsKIH0KIAordGVtcGxh
dGU8dHlwZW5hbWUgVT4KK2lubGluZSBWZWN0b3I8UmVmUHRyPEFYQ29yZU9iamVjdD4+IEFYSXNv
bGF0ZWRUcmVlOjpvYmplY3RzRm9ySURzKGNvbnN0IFUmIGF4SURzKQoreworICAgIEFTU0VSVCgh
aXNNYWluVGhyZWFkKCkpOworCisgICAgVmVjdG9yPFJlZlB0cjxBWENvcmVPYmplY3Q+PiByZXN1
bHQ7CisgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYXhJRHMuc2l6ZSgpKTsKKyAg
ICBmb3IgKGNvbnN0IGF1dG8mIGF4SUQgOiBheElEcykgeworICAgICAgICBSZWZQdHIgb2JqZWN0
ID0gb2JqZWN0Rm9ySUQoYXhJRCk7CisgICAgICAgIGlmIChvYmplY3QpIHsKKyAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoV1RGTW92ZShvYmplY3QpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICB9CisKKyAgICAgICAgb2JqZWN0ID0gcmV0cmlldmVPYmplY3RGb3JJREZyb21NYWlu
VGhyZWFkKGF4SUQpOworICAgICAgICBpZiAob2JqZWN0KSB7CisgICAgICAgICAgICBtX3JlYWRl
clRocmVhZE5vZGVNYXAuYWRkKGF4SUQsICpvYmplY3QpOworICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZChXVEZNb3ZlKG9iamVjdCkpOworICAgICAgICB9CisgICAgfQorICAgIHJlc3VsdC5zaHJp
bmtUb0ZpdCgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9tYWMvQVhJc29sYXRlZE9iamVjdE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL21hYy9BWElzb2xhdGVkT2JqZWN0TWFjLm1tCmluZGV4
IGFkYjdlYzY0ODM0NS4uZTAyZGEwZDExMmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9tYWMvQVhJc29sYXRlZE9iamVjdE1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9tYWMvQVhJc29sYXRl
ZE9iamVjdE1hYy5tbQpAQCAtNjMsNiArNjMsOCBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6Omlu
aXRpYWxpemVQbGF0Zm9ybVByb3BlcnRpZXMoY29uc3QgUmVmPGNvbnN0IEFjY2Vzc2liaWxpdAog
ICAgICAgICB9CiAgICAgfQogCisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlJlbW90
ZUZyYW1lUGxhdGZvcm1FbGVtZW50LCBvYmplY3QtPnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50
KCkpOworCiAgICAgLy8gQ2FjaGUgdGhlIFN0cmluZ1ZhbHVlIG9ubHkgaWYgaXQgZGlmZmVycyBm
cm9tIHRoZSBBdHRyaWJ1dGVkVGV4dC4KICAgICBhdXRvIHZhbHVlID0gb2JqZWN0LT5zdHJpbmdW
YWx1ZSgpOwogICAgIGlmICghYXR0cmlidXRlZFRleHQgfHwgdmFsdWUgIT0gU3RyaW5nKFthdHRy
aWJ1dGVkVGV4dCBzdHJpbmddKSkKQEAgLTIwMiw2ICsyMDQsMTEgQEAgdW5zaWduZWQgQVhJc29s
YXRlZE9iamVjdDo6dGV4dExlbmd0aCgpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKK1JldGFp
blB0cjxpZD4gQVhJc29sYXRlZE9iamVjdDo6cmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKSBj
b25zdAoreworICAgIHJldHVybiBwcm9wZXJ0eVZhbHVlPFJldGFpblB0cjxpZD4+KEFYUHJvcGVy
dHlOYW1lOjpSZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCk7Cit9CisKIFJldGFpblB0cjxOU0F0
dHJpYnV0ZWRTdHJpbmc+IEFYSXNvbGF0ZWRPYmplY3Q6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2UoQVhUZXh0TWFya2VyUmFuZ2UmJiBtYXJrZXJSYW5nZSwgU3BlbGxDaGVjayBz
cGVsbENoZWNrKSBjb25zdAogewogICAgIGlmICghbWFya2VyUmFuZ2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1h
Yy5tbQppbmRleCBiYTJhY2NkODBkMDQuLmZiYmUwYmIyYTA2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFj
Lm1tCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkFjY2Vz
c2liaWxpdHlPYmplY3QuaCIKIAorI2ltcG9ydCAiQVhSZW1vdGVGcmFtZS5oIgogI2ltcG9ydCAi
QWNjZXNzaWJpbGl0eUxhYmVsLmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5TGlzdC5oIgogI2lt
cG9ydCAiQ29sb3JDb2NvYS5oIgpAQCAtNTEsNiArNTIsNyBAQAogI2ltcG9ydCAiV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMuaCIKICNpbXBvcnQgIldpZGdldC5oIgogCisjaW1wb3J0
IDxwYWwvc3BpL2NvY29hL05TQWNjZXNzaWJpbGl0eVNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9t
YWMvTlNTcGVsbENoZWNrZXJTUEkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzQ5LDYg
Kzc1MSwyOSBAQCBSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiBhdHRyaWJ1dGVkU3RyaW5n
Q3JlYXRlKE5vZGUqIG5vZGUsIFN0cmluZ1ZpZXcgdGV4dAogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKK3N0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBBWFJlbW90ZUZyYW1lOjpnZW5lcmF0ZVJlbW90
ZVRva2VuKCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byogcGFyZW50ID0gcGFyZW50T2JqZWN0KCkp
IHsKKyAgICAgICAgLy8gV2UgdXNlIHRoZSBwYXJlbnQncyB3cmFwcGVyIHNvIHRoYXQgdGhlIHJl
bW90ZSBmcmFtZSBhY3RzIGFzIGEgcGFzcyB0aHJvdWdoIGZvciB0aGUgcmVtb3RlIHRva2VuIGJy
aWRnZS4KKyAgICAgICAgTlNEYXRhICpkYXRhID0gW05TQWNjZXNzaWJpbGl0eVJlbW90ZVVJRWxl
bWVudCByZW1vdGVUb2tlbkZvckxvY2FsVUlFbGVtZW50OnBhcmVudC0+d3JhcHBlcigpXTsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6c3BhbihzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW2RhdGEg
Ynl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7CisgICAgfQorCisgICAgcmV0dXJuIHN0ZDo6c3Bhbjxj
b25zdCB1aW50OF90PiB7IH07Cit9CisKK3ZvaWQgQVhSZW1vdGVGcmFtZTo6aW5pdGlhbGl6ZVBs
YXRmb3JtRWxlbWVudFdpdGhSZW1vdGVUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gdG9r
ZW4sIGludCBwcm9jZXNzSWRlbnRpZmllcikKK3sKKyAgICBtX3Byb2Nlc3NJZGVudGlmaWVyID0g
cHJvY2Vzc0lkZW50aWZpZXI7CisgICAgaWYgKFt3cmFwcGVyKCkgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3RvcihhY2Nlc3NpYmlsaXR5U2V0UHJlc2VudGVyUHJvY2Vzc0lkZW50aWZpZXI6KV0p
CisgICAgICAgIFsoaWQpd3JhcHBlcigpIGFjY2Vzc2liaWxpdHlTZXRQcmVzZW50ZXJQcm9jZXNz
SWRlbnRpZmllcjpwcm9jZXNzSWRlbnRpZmllcl07CisgICAgTlNEYXRhICp0b2tlbkRhdGEgPSBb
TlNEYXRhIGRhdGFXaXRoQnl0ZXM6dG9rZW4uZGF0YSgpIGxlbmd0aDp0b2tlbi5zaXplKCldOwor
ICAgIG1fcmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQgPSBhZG9wdE5TKFtbTlNBY2Nlc3NpYmls
aXR5UmVtb3RlVUlFbGVtZW50IGFsbG9jXSBpbml0V2l0aFJlbW90ZVRva2VuOnRva2VuRGF0YV0p
OworCisgICAgaWYgKGF1dG8qIGNhY2hlID0gYXhPYmplY3RDYWNoZSgpKQorICAgICAgICBjYWNo
ZS0+b25SZW1vdGVGcmFtZUluaXRpYWxpemVkKCp0aGlzKTsKK30KKwogbmFtZXNwYWNlIEFjY2Vz
c2liaWxpdHkgewogCiBQbGF0Zm9ybVJvbGVNYXAgY3JlYXRlUGxhdGZvcm1Sb2xlTWFwKCkKQEAg
LTg5MSw2ICs5MTYsNyBAQCBQbGF0Zm9ybVJvbGVNYXAgY3JlYXRlUGxhdGZvcm1Sb2xlTWFwKCkK
ICAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6U3VwZXJzY3JpcHQsIE5TQWNjZXNzaWJpbGl0
eUdyb3VwUm9sZSB9LAogICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpNb2RlbCwgTlNBY2Nl
c3NpYmlsaXR5R3JvdXBSb2xlIH0sCiAgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlN1Z2dl
c3Rpb24sIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxp
dHlSb2xlOjpSZW1vdGVGcmFtZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCiAgICAgfTsK
ICAgICBQbGF0Zm9ybVJvbGVNYXAgcm9sZU1hcDsKICAgICBmb3IgKGF1dG8mIHJvbGUgOiByb2xl
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQppbmRleCA2MzU3ZmE3
YzI3MWIuLmYxNDI0NWZjM2I2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
QmFzZS5tbQpAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCAiQVhDb3JlT2JqZWN0LmgiCiAjaW1w
b3J0ICJBWElzb2xhdGVkT2JqZWN0LmgiCiAjaW1wb3J0ICJBWE9iamVjdENhY2hlLmgiCisjaW1w
b3J0ICJBWFJlbW90ZUZyYW1lLmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cu
aCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlMaXN0LmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5
TGlzdEJveC5oIgpAQCAtMjY1LDEzICsyNjYsMTMgQEAgTlNBcnJheSAqbWFrZU5TQXJyYXkoY29u
c3QgV2ViQ29yZTo6QVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGMK
ICAgICAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICAgICAgYXV0byB3cmFwcGVyID0gY2hpbGQt
PndyYXBwZXIoKTsKLQogICAgICAgICAvLyBXZSB3YW50IHRvIHJldHVybiB0aGUgYXR0YWNobWVu
dCB2aWV3IGluc3RlYWQgb2YgdGhlIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIGF0dGFjaG1lbnQs
CiAgICAgICAgIC8vIG90aGVyd2lzZSwgd2UgZ2V0IHBhbGluZHJvbWUgZXJyb3JzIGluIHRoZSBB
WCBoaWVyYXJjaHkuCiAgICAgICAgIGlmIChjaGlsZC0+aXNBdHRhY2htZW50KCkpIHsKICAgICAg
ICAgICAgIGlmIChpZCBhdHRhY2htZW50VmlldyA9IHdyYXBwZXIuYXR0YWNobWVudFZpZXcpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGF0dGFjaG1lbnRWaWV3OwotICAgICAgICB9CisgICAgICAg
IH0gZWxzZSBpZiAoY2hpbGQtPmlzUmVtb3RlRnJhbWUoKSkKKyAgICAgICAgICAgIHJldHVybiBj
aGlsZC0+cmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKS5nZXQoKTsKIAogICAgICAgICByZXR1
cm4gd3JhcHBlcjsKICAgICB9KS5hdXRvcmVsZWFzZSgpOwpAQCAtMzg5LDcgKzM5MCw3IEBAIE5T
QXJyYXkgKm1ha2VOU0FycmF5KGNvbnN0IFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6QWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJiBjCiAtIChCT09MKWlzSXNvbGF0ZWRPYmplY3QKIHsKICNpZiBF
TkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQotICAgIGF1dG8qIGJhY2tpbmdPYmpl
Y3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHIgYmFja2luZ09iamVjdCA9IGR5
bmFtaWNEb3duY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0PihzZWxmLmJhc2VVcGRhdGVCYWNraW5n
U3RvcmUpOwogICAgIHJldHVybiBiYWNraW5nT2JqZWN0ICYmIGJhY2tpbmdPYmplY3QtPmlzQVhJ
c29sYXRlZE9iamVjdEluc3RhbmNlKCk7CiAjZWxzZQogICAgIHJldHVybiBOTzsKQEAgLTUyMyw3
ICs1MjQsNyBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0UGF0aFRvU2NyZWVuU3BhY2VGdW5jdGlvbihQ
YXRoQ29udmVyc2lvbkluZm8mIGNvbnZlcnNpb24sIGNvbgogCiAtIChDR1JlY3QpY29udmVydFJl
Y3RUb1NwYWNlOihjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKXJlY3Qgc3BhY2U6KEFjY2Vzc2li
aWxpdHlDb252ZXJzaW9uU3BhY2Upc3BhY2UKIHsKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0g
c2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgUmVmUHRyIGJhY2tpbmdPYmplY3QgPSBkeW5hbWlj
RG93bmNhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdD4oc2VsZi5iYXNlVXBkYXRlQmFja2luZ1N0b3Jl
KTsKICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCiAgICAgICAgIHJldHVybiBDR1JlY3RaZXJvOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDZjNWU2YjdhY2Q5
Yy4uNzUwMmQ5YTBlNDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5t
bQpAQCAtMzQsNiArMzQsNyBAQAogI2ltcG9ydCAiQVhJc29sYXRlZE9iamVjdC5oIgogI2ltcG9y
dCAiQVhMb2dnZXIuaCIKICNpbXBvcnQgIkFYT2JqZWN0Q2FjaGUuaCIKKyNpbXBvcnQgIkFYUmVt
b3RlRnJhbWUuaCIKICNpbXBvcnQgIkFYVGV4dE1hcmtlci5oIgogI2ltcG9ydCAiQWNjZXNzaWJp
bGl0eUFSSUFHcmlkUm93LmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5TGFiZWwuaCIKQEAgLTQ3
OSw2ICs0ODAsMTAgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAjZGVmaW5lIE5TQWNjZXNz
aWJpbGl0eVRleHRJbnB1dE1hcmtlZFRleHRNYXJrZXJSYW5nZUF0dHJpYnV0ZSBAIkFYVGV4dElu
cHV0TWFya2VkVGV4dE1hcmtlclJhbmdlIgogI2VuZGlmCiAKKyNpZm5kZWYga0FYQ29udmVydFJl
bGF0aXZlRnJhbWVQYXJhbWV0ZXJpemVkQXR0cmlidXRlCisjZGVmaW5lIGtBWENvbnZlcnRSZWxh
dGl2ZUZyYW1lUGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBAIkFYQ29udmVydFJlbGF0aXZlRnJhbWUi
CisjZW5kaWYKKwogQGltcGxlbWVudGF0aW9uIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
CiAKIC0gKHZvaWQpZGV0YWNoCkBAIC02OTIsNyArNjk3LDcgQEAgc3RhdGljIFJldGFpblB0cjxB
WFRleHRNYXJrZXJSZWY+IHByZXZpb3VzVGV4dE1hcmtlcihBWE9iamVjdENhY2hlKiBjYWNoZSwg
Y29uc3QKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgYXV0byogYmFja2lu
Z09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+
IGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKICAgICBpZiAoIWJhY2tpbmdP
YmplY3QpCiAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTEyNTYsNyArMTI2MSw3IEBAIEFMTE9X
X0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogCiAtIChOU0FycmF5ICopcmVuZGVyV2lk
Z2V0Q2hpbGRyZW4KIHsKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdP
YmplY3Q7CisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNlbGYuYXhC
YWNraW5nT2JqZWN0OwogICAgIGlmICghYmFja2luZ09iamVjdCB8fCAhYmFja2luZ09iamVjdC0+
aXNXaWRnZXQoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMTI3OSw3ICsxMjg0LDcgQEAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKIC0gKGlkKXJlbW90ZUFjY2Vzc2li
aWxpdHlQYXJlbnRPYmplY3QKIHsKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJh
Y2tpbmdPYmplY3Q7CisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNl
bGYuYXhCYWNraW5nT2JqZWN0OwogICAgIHJldHVybiBiYWNraW5nT2JqZWN0ID8gYmFja2luZ09i
amVjdC0+cmVtb3RlUGFyZW50T2JqZWN0KCkgOiBuaWw7CiB9CiAKQEAgLTEyOTYsNyArMTMwMSw3
IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRUb1ZlY3RvcihOU0FycmF5KiBhcnJheSwgQWNjZXNzaWJp
bGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoCiAKIC0gKEFYVGV4dE1hcmtlclJhbmdlUmVmKXNl
bGVjdGVkVGV4dE1hcmtlclJhbmdlCiB7Ci0gICAgYXV0byogYmFja2luZ09iamVjdCA9IHNlbGYu
YXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+IGJhY2tpbmdPYmplY3Qg
PSBzZWxmLmF4QmFja2luZ09iamVjdDsKICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCiAgICAgICAg
IHJldHVybiBuaWw7CiAKQEAgLTEzNjYsMTIgKzEzNzEsMTggQEAgc3RhdGljIHZvaWQgV2ViVHJh
bnNmb3JtQ0dQYXRoVG9OU0JlemllclBhdGgodm9pZCogaW5mbywgY29uc3QgQ0dQYXRoRWxlbWVu
dCAqZWwKIAogLSAoTlNTdHJpbmcqKXJvbGUKIHsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBi
YWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgaWYgKCFiYWNraW5nT2Jq
ZWN0KQorICAgICAgICByZXR1cm4gbmlsOworCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19CRUdJTgotICAgIGlmIChzZWxmLmF4QmFja2luZ09iamVjdC0+aXNBdHRhY2htZW50KCkpCisg
ICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzQXR0YWNobWVudCgpKQogICAgICAgICByZXR1cm4gW1tz
ZWxmIGF0dGFjaG1lbnRWaWV3XSBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3Np
YmlsaXR5Um9sZUF0dHJpYnV0ZV07CisgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzUmVtb3RlRnJh
bWUoKSkKKyAgICAgICAgcmV0dXJuIFtiYWNraW5nT2JqZWN0LT5yZW1vdGVGcmFtZVBsYXRmb3Jt
RWxlbWVudCgpLmdldCgpIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxp
dHlSb2xlQXR0cmlidXRlXTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCi0g
ICAgTlNTdHJpbmcgKnN0cmluZyA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5yb2xlUGxhdGZvcm1T
dHJpbmcoKTsKKyAgICBOU1N0cmluZyAqc3RyaW5nID0gYmFja2luZ09iamVjdC0+cm9sZVBsYXRm
b3JtU3RyaW5nKCk7CiAgICAgaWYgKHN0cmluZy5sZW5ndGgpCiAgICAgICAgIHJldHVybiBzdHJp
bmc7CiAgICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eVVua25vd25Sb2xlOwpAQCAtMTM3OSw3ICsx
MzkwLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKIC0gKEJPT0wpaXNF
bXB0eUdyb3VwCiB7Ci0gICAgYXV0byogYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2Jq
ZWN0OworICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+IGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFj
a2luZ09iamVjdDsKICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIApAQCAtMTM4OCw2ICsxMzk5LDkgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogCisgICAgaWYgKGJhY2tpbmdPYmpl
Y3QtPmlzUmVtb3RlRnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgcmV0dXJu
IFtbc2VsZiByb2xlXSBpc0VxdWFsOk5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZV0KICAgICAgICAg
JiYgYmFja2luZ09iamVjdC0+Y2hpbGRyZW4oKS5pc0VtcHR5KCkKICAgICAgICAgJiYgIVtbc2Vs
ZiByZW5kZXJXaWRnZXRDaGlsZHJlbl0gY291bnRdOwpAQCAtMTM5Niw3ICsxNDEwLDcgQEAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19CRUdJTgogLSAoTlNTdHJpbmcqKXN1YnJvbGUKIHsKLSAgICBhdXRvKiBiYWNraW5nT2Jq
ZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFj
a2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OwogICAgIGlmICghYmFja2luZ09iamVj
dCkKICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMTQxMyw3ICsxNDI3LDcgQEAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKIC0gKE5TU3RyaW5nKilyb2xlRGVzY3JpcHRpb24K
IHsKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAg
UmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0
OwogICAgIGlmICghYmFja2luZ09iamVjdCkKICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMTQy
MSw2ICsxNDM1LDggQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAv
LyBhdHRhY2htZW50cyBoYXZlIHRoZSBBWEltYWdlIHJvbGUsIGJ1dCBhIGRpZmZlcmVudCBzdWJy
b2xlCiAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzQXR0YWNobWVudCgpKQogICAgICAgICByZXR1
cm4gW1tzZWxmIGF0dGFjaG1lbnRWaWV3XSBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNB
Y2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlXTsKKyAgICBpZiAoYmFja2luZ09i
amVjdC0+aXNSZW1vdGVGcmFtZSgpKQorICAgICAgICByZXR1cm4gW2JhY2tpbmdPYmplY3QtPnJl
bW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkuZ2V0KCkgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOk5TQWNjZXNzaWJpbGl0eVJvbGVEZXNjcmlwdGlvbkF0dHJpYnV0ZV07CiBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgIFN0cmluZyByb2xlRGVzY3JpcHRpb24gPSBi
YWNraW5nT2JqZWN0LT5yb2xlRGVzY3JpcHRpb24oKTsKQEAgLTE0NzMsNiArMTQ4OSwyOCBAQCBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICByZXR1cm4gYXhTY3JvbGxWaWV3
ID8gW2F4U2Nyb2xsVmlldy0+cGxhdGZvcm1XaWRnZXQoKSB3aW5kb3ddIDogbmlsOwogfQogCist
IChOU0FycmF5ICopX3RyYW5zZm9ybVNwZWNpYWxDaGlsZHJlbkNhc2VzOihSZWZQdHI8QVhDb3Jl
T2JqZWN0PiliYWNraW5nT2JqZWN0Cit7CisjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCisgICAg
aWYgKGJhY2tpbmdPYmplY3QtPmlzTW9kZWwoKSkgeworICAgICAgICBhdXRvIG1vZGVsQ2hpbGRy
ZW4gPSBiYWNraW5nT2JqZWN0LT5tb2RlbEVsZW1lbnRDaGlsZHJlbigpOworICAgICAgICBpZiAo
bW9kZWxDaGlsZHJlbi5zaXplKCkpIHsKKyAgICAgICAgICAgIHJldHVybiBjcmVhdGVOU0FycmF5
KFdURk1vdmUobW9kZWxDaGlsZHJlbiksIFtdIChhdXRvJiYgY2hpbGQpIC0+IGlkIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gY2hpbGQuZ2V0KCk7CisgICAgICAgICAgICB9KS5hdXRvcmVsZWFz
ZSgpOworICAgICAgICB9CisgICAgfQorI2VuZGlmCisKKyAgICBjb25zdCBhdXRvJiBjaGlsZHJl
biA9IGJhY2tpbmdPYmplY3QtPmNoaWxkcmVuKCk7CisgICAgaWYgKCFjaGlsZHJlbi5zaXplKCkp
IHsKKyAgICAgICAgaWYgKE5TQXJyYXkgKmNoaWxkcmVuID0gW3NlbGYgcmVuZGVyV2lkZ2V0Q2hp
bGRyZW5dKQorICAgICAgICAgICAgcmV0dXJuIGNoaWxkcmVuOworICAgIH0KKworICAgIHJldHVy
biBuaWw7Cit9CisKIC8vIEZJWE1FOiBzcGxpdCB1cCB0aGlzIGZ1bmN0aW9uIGluIGEgYmV0dGVy
IHdheS4KIC8vIHN1Z2dlc3Rpb25zOiBVc2UgYSBoYXNoIHRhYmxlIHRoYXQgbWFwcyBhdHRyaWJ1
dGUgbmFtZXMgdG8gZnVuY3Rpb24gY2FsbHMsCiAvLyBvciBtYXliZSBwb2ludGVycyB0byBtZW1i
ZXIgZnVuY3Rpb25zCkBAIC0xNTMxLDIyICsxNTY5LDkgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBM
RU1FTlRBVElPTlNfRU5ECiAgICAgfQogCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxU
b1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZV0gfHwgW2F0dHJpYnV0ZU5h
bWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuSW5OYXZpZ2F0aW9uT3Jk
ZXJBdHRyaWJ1dGVdKSB7Ci0jaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCi0gICAgICAgIGlmIChi
YWNraW5nT2JqZWN0LT5pc01vZGVsKCkpIHsKLSAgICAgICAgICAgIGF1dG8gbW9kZWxDaGlsZHJl
biA9IGJhY2tpbmdPYmplY3QtPm1vZGVsRWxlbWVudENoaWxkcmVuKCk7Ci0gICAgICAgICAgICBp
ZiAobW9kZWxDaGlsZHJlbi5zaXplKCkpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRl
TlNBcnJheShXVEZNb3ZlKG1vZGVsQ2hpbGRyZW4pLCBbXSAoYXV0byYmIGNoaWxkKSAtPiBpZCB7
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZC5nZXQoKTsKLSAgICAgICAgICAgICAg
ICB9KS5hdXRvcmVsZWFzZSgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0jZW5kaWYKLQot
ICAgICAgICBjb25zdCBhdXRvJiBjaGlsZHJlbiA9IGJhY2tpbmdPYmplY3QtPmNoaWxkcmVuKCk7
Ci0gICAgICAgIGlmIChjaGlsZHJlbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGlmIChOU0Fy
cmF5ICp3aWRnZXRDaGlsZHJlbiA9IFtzZWxmIHJlbmRlcldpZGdldENoaWxkcmVuXSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gd2lkZ2V0Q2hpbGRyZW47Ci0gICAgICAgIH0KKyAgICAgICAgTlNB
cnJheSAqc3BlY2lhbENoaWxkcmVuID0gW3NlbGYgX3RyYW5zZm9ybVNwZWNpYWxDaGlsZHJlbkNh
c2VzOmJhY2tpbmdPYmplY3RdOworICAgICAgICBpZiAoc3BlY2lhbENoaWxkcmVuLmNvdW50KQor
ICAgICAgICAgICAgcmV0dXJuIHNwZWNpYWxDaGlsZHJlbjsKIAogICAgICAgICAvLyBUaGUgdHJl
ZSdzIChBWE91dGxpbmUpIGNoaWxkcmVuIGFyZSBzdXBwb3NlZCB0byBiZSBpdHMgcm93cyBhbmQg
Y29sdW1ucy4KICAgICAgICAgLy8gVGhlIEFSSUEgc3BlYyBkb2Vzbid0IGhhdmUgY29sdW1ucywg
c28gd2UganVzdCBuZWVkIHJvd3MuCkBAIC0xNTU3LDcgKzE1ODIsNyBAQCBBTExPV19ERVBSRUNB
VEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzVHJl
ZUl0ZW0oKSkKICAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT5h
cmlhVHJlZUl0ZW1Db250ZW50KCkpOwogCi0gICAgICAgIHJldHVybiBtYWtlTlNBcnJheShjaGls
ZHJlbik7CisgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT5jaGlsZHJl
bigpKTsKICAgICB9CiAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBO
U0FjY2Vzc2liaWxpdHlTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlXSkgewpAQCAtMTcxMywxNiAr
MTczOCwxNCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBpZiAo
W2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlFbmFibGVkQXR0
cmlidXRlXSkKICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDogYmFja2lu
Z09iamVjdC0+aXNFbmFibGVkKCldOwogCi0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxU
b1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5U2l6ZUF0dHJpYnV0ZV0pIHsKLSAgICAgICAgYXV0byBz
aXplID0gYmFja2luZ09iamVjdC0+c2l6ZSgpOwotICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFs
dWVXaXRoU2l6ZTpOU01ha2VTaXplKHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSldOwotICAg
IH0KKyAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0
eVNpemVBdHRyaWJ1dGVdKQorICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoU2l6ZToo
Q0dTaXplKWJhY2tpbmdPYmplY3QtPnNpemUoKV07CiAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUg
aXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVByaW1hcnlTY3JlZW5IZWlnaHRBdHRyaWJ1
dGVdKQogICAgICAgICByZXR1cm4gQChiYWNraW5nT2JqZWN0LT5wcmltYXJ5U2NyZWVuUmVjdCgp
LmhlaWdodCgpKTsKIAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNB
Y2Nlc3NpYmlsaXR5UG9zaXRpb25BdHRyaWJ1dGVdKQotICAgICAgICByZXR1cm4gQChDR1BvaW50
KGJhY2tpbmdPYmplY3QtPnNjcmVlblJlbGF0aXZlUG9zaXRpb24oKSkpOworICAgICAgICByZXR1
cm4gW05TVmFsdWUgdmFsdWVXaXRoUG9pbnQ6KENHUG9pbnQpYmFja2luZ09iamVjdC0+c2NyZWVu
UmVsYXRpdmVQb3NpdGlvbigpXTsKIAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9T
dHJpbmc6TlNBY2Nlc3NpYmlsaXR5UGF0aEF0dHJpYnV0ZV0pCiAgICAgICAgIHJldHVybiBbc2Vs
ZiBwYXRoXTsKQEAgLTIyMzcsNiArMjI2MCwxMCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVO
VEFUSU9OU19FTkQKICAgICAgICAgcmV0dXJuIHJhbmdlID8gcmFuZ2UucGxhdGZvcm1EYXRhKCku
YnJpZGdpbmdBdXRvcmVsZWFzZSgpIDogbmlsOwogICAgIH0KIAorICAgIC8vIFZvaWNlT3ZlciBw
cm9wZXJ0eSB0byBpZ25vcmUgY2VydGFpbiBncm91cHMuCisgICAgaWYgKFthdHRyaWJ1dGVOYW1l
IGlzRXF1YWxUb1N0cmluZzpAIkFYQXV0b0ludGVyYWN0YWJsZSJdKQorICAgICAgICByZXR1cm4g
QChiYWNraW5nT2JqZWN0LT5pc1JlbW90ZUZyYW1lKCkpOworCiAgICAgLy8gVXNlZCBieSBMYXlv
dXRUZXN0cyBvbmx5LCBub3QgYnkgQVQgY2xpZW50cy4KICAgICBpZiAoVU5MSUtFTFkoW2F0dHJp
YnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiQVhBUklBUm9sZSJdKSkKICAgICAgICAgcmV0dXJu
IGJhY2tpbmdPYmplY3QtPmNvbXB1dGVkUm9sZVN0cmluZygpOwpAQCAtMjMzMCw3ICsyMzU3LDgg
QEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIGlmIChheE9i
amVjdC0+aXNBdHRhY2htZW50KCkpIHsKICAgICAgICAgICAgIGlmIChpZCBhdHRhY2htZW50Vmll
dyA9IFtheE9iamVjdC0+d3JhcHBlcigpIGF0dGFjaG1lbnRWaWV3XSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gYXR0YWNobWVudFZpZXc7Ci0gICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChh
eE9iamVjdC0+aXNSZW1vdGVGcmFtZSgpKQorICAgICAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5y
ZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpLmdldCgpOwogCiAgICAgICAgIC8vIE9ubHkgY2Fs
bCBvdXQgdG8gdGhlIG1haW4tdGhyZWFkIGlmIHRoaXMgb2JqZWN0IGhhcyBhIGJhY2tpbmcgd2lk
Z2V0IHRvIHF1ZXJ5LgogICAgICAgICBpZiAoYXhPYmplY3QtPmlzV2lkZ2V0KCkpIHsKQEAgLTI1
MDcsNiArMjUzNSwxMCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAg
ICBpZiAoYmFja2luZ09iamVjdC0+aXNXZWJBcmVhKCkpCiAgICAgICAgIHJldHVybiB3ZWJBcmVh
UGFyYW1BdHRyczsKIAorICAgIC8vIFRoZSBvYmplY3QgdGhhdCBzZXJ2ZXMgdXAgdGhlIHJlbW90
ZSBmcmFtZSBhbHNvIGlzIHRoZSBvbmUgdGhhdCBkb2VzIHRoZSBmcmFtZSBjb252ZXJzaW9uLgor
ICAgIGlmIChiYWNraW5nT2JqZWN0LT5oYXNSZW1vdGVGcmFtZUNoaWxkKCkpCisgICAgICAgIHJl
dHVybiBbcGFyYW1BdHRycyBhcnJheUJ5QWRkaW5nT2JqZWN0OmtBWENvbnZlcnRSZWxhdGl2ZUZy
YW1lUGFyYW1ldGVyaXplZEF0dHJpYnV0ZV07CisKICAgICByZXR1cm4gcGFyYW1BdHRyczsKIH0K
IApAQCAtMjU3OCw3ICsyNjEwLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
CiB7CiAgICAgQVhUUkFDRSgiV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJp
bGl0eVBlcmZvcm1TaG93TWVudUFjdGlvbiJfcyk7CiAKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0
ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2lu
Z09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OwogICAgIGlmICghYmFja2luZ09iamVjdCkg
ewogICAgICAgICBBWExPRyhtYWtlU3RyaW5nKCJObyBiYWNraW5nT2JqZWN0IGZvciB3cmFwcGVy
ICIsIGhleChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oc2VsZikpKSk7CiAgICAgICAgIHJl
dHVybjsKQEAgLTI4MjIsNyArMjg1NCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJ
T05TX0VORAogICAgIGlmICghcmFuZ2UubGVuZ3RoKQogICAgICAgICByZXR1cm4gbmlsOwogCi0g
ICAgYXV0byogYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0
cjxBWENvcmVPYmplY3Q+IGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKICAg
ICBpZiAoIWJhY2tpbmdPYmplY3QpCiAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTMxNzcsNiAr
MzIwOSwxOCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHdpZGdldENoaWxkcmVuOwogICAgICAgICAgICAgICAgIGNyaXRl
cmlhLnJlc3VsdHNMaW1pdCAtPSBbd2lkZ2V0Q2hpbGRyZW4gY291bnRdOwogICAgICAgICAgICAg
fQorICAgICAgICB9IGVsc2UgaWYgKGJhY2tpbmdPYmplY3QtPmlzUmVtb3RlRnJhbWUoKQorICAg
ICAgICAgICAgJiYgY3JpdGVyaWEuc2VhcmNoS2V5cy5jb250YWlucyhBY2Nlc3NpYmlsaXR5U2Vh
cmNoS2V5OjpBbnlUeXBlKQorICAgICAgICAgICAgJiYgKCFjcml0ZXJpYS52aXNpYmxlT25seSB8
fCBiYWNraW5nT2JqZWN0LT5pc1Zpc2libGUoKSkpIHsKKyAgICAgICAgICAgIE5TQXJyYXkgKnJl
bW90ZUZyYW1lQ2hpbGRyZW4gPSBbc2VsZiBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGVdOworICAgICAgICAgICAgQVNTRVJUKHJlbW90
ZUZyYW1lQ2hpbGRyZW4uY291bnQgPT0gMSk7CisgICAgICAgICAgICBpZiAocmVtb3RlRnJhbWVD
aGlsZHJlbi5jb3VudCA9PSAxKSB7CisgICAgICAgICAgICAgICAgTlNVSW50ZWdlciBpbmNsdWRl
ZENoaWxkcmVuQ291bnQgPSBzdGQ6Om1pbihbcmVtb3RlRnJhbWVDaGlsZHJlbiBjb3VudF0sIE5T
VUludGVnZXIoY3JpdGVyaWEucmVzdWx0c0xpbWl0KSk7CisgICAgICAgICAgICAgICAgd2lkZ2V0
Q2hpbGRyZW4gPSBbcmVtb3RlRnJhbWVDaGlsZHJlbiBzdWJhcnJheVdpdGhSYW5nZTpOU01ha2VS
YW5nZSgwLCBpbmNsdWRlZENoaWxkcmVuQ291bnQpXTsKKyAgICAgICAgICAgICAgICBpZiAoW3dp
ZGdldENoaWxkcmVuIGNvdW50XSA+PSBjcml0ZXJpYS5yZXN1bHRzTGltaXQpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiByZW1vdGVGcmFtZUNoaWxkcmVuOworICAgICAgICAgICAgICAgIGNy
aXRlcmlhLnJlc3VsdHNMaW1pdCAtPSBbd2lkZ2V0Q2hpbGRyZW4gY291bnRdOworICAgICAgICAg
ICAgfQogICAgICAgICB9CiAKICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yIHJlc3VsdHM7CkBAIC0zNjY5LDYgKzM3MTMsMTEgQEAgQUxMT1df
REVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgaWYgKFVOTElLRUxZKFthdHRyaWJ1
dGUgaXNFcXVhbFRvU3RyaW5nOl9BWFRleHRNYXJrZXJSYW5nZUZvck5TUmFuZ2VBdHRyaWJ1dGVd
KSkKICAgICAgICAgcmV0dXJuIGJhY2tpbmdPYmplY3QtPnRleHRNYXJrZXJSYW5nZUZvck5TUmFu
Z2UocmFuZ2UpLnBsYXRmb3JtRGF0YSgpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKIAorICAgIGlm
IChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzprQVhDb252ZXJ0UmVsYXRpdmVGcmFtZVBhcmFt
ZXRlcml6ZWRBdHRyaWJ1dGVdKSB7CisgICAgICAgIGF1dG8qIHBhcmVudCA9IGJhY2tpbmdPYmpl
Y3QtPnBhcmVudE9iamVjdCgpOworICAgICAgICByZXR1cm4gcGFyZW50ID8gW05TVmFsdWUgdmFs
dWVXaXRoUmVjdDpwYXJlbnQtPmNvbnZlcnRGcmFtZVRvU3BhY2UoRmxvYXRSZWN0KHJlY3QpLCBB
Y2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlOjpQYWdlKV0gOiBuaWw7CisgICAgfQorCiAgICAg
Ly8gVGhlcmUgYXJlIHNvbWUgcGFyYW1ldGVycyB0aGF0IHN1cGVyIGhhbmRsZXMgdGhhdCBhcmUg
bm90IGV4cGxpY2l0bHkgcmV0dXJuZWQgYnkgdGhlIGxpc3Qgb2YgdGhlIGVsZW1lbnQncyBhdHRy
aWJ1dGVzLgogICAgIC8vIEluIHRoYXQgY2FzZSBpdCBtdXN0IGJlIHBhc3NlZCB0byBzdXBlci4K
ICAgICByZXR1cm4gW3N1cGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTphdHRyaWJ1dGUg
Zm9yUGFyYW1ldGVyOnBhcmFtZXRlcl07CkBAIC0zNzIyLDggKzM3NzEsMTAgQEAgQUxMT1dfREVQ
UkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIGlmICghY2hpbGQpCiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgKmNo
aWxkV3JhcHBlciA9IGNoaWxkLT53cmFwcGVyKCk7Ci0gICAgICAgIGlmIChjaGlsZFdyYXBwZXIg
PT0gdGFyZ2V0Q2hpbGQgfHwgKGNoaWxkLT5pc0F0dGFjaG1lbnQoKSAmJiBbY2hpbGRXcmFwcGVy
IGF0dGFjaG1lbnRWaWV3XSA9PSB0YXJnZXRDaGlsZCkpCisgICAgICAgIGlmIChjaGlsZFdyYXBw
ZXIgPT0gdGFyZ2V0Q2hpbGQgfHwgKGNoaWxkLT5pc0F0dGFjaG1lbnQoKSAmJiBbY2hpbGRXcmFw
cGVyIGF0dGFjaG1lbnRWaWV3XSA9PSB0YXJnZXRDaGlsZCkKKyAgICAgICAgICAgIHx8IChjaGls
ZC0+aXNSZW1vdGVGcmFtZSgpICYmIGNoaWxkLT5yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgp
ID09IHRhcmdldENoaWxkKSkgewogICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgIH0KICAg
ICB9CiAgICAgcmV0dXJuIE5TTm90Rm91bmQ7CiB9CkBAIC0zNzQwLDcgKzM3OTEsNyBAQCBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1
YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZV0pIHsKICAgICAgICAg
Ly8gVHJlZSBpdGVtcyBvYmplY3QgcmV0dXJucyBhIGRpZmZlcmVudCBzZXQgb2YgY2hpbGRyZW4g
dGhhbiB0aG9zZSB0aGF0IGFyZSBpbiBjaGlsZHJlbigpCiAgICAgICAgIC8vIGJlY2F1c2UgYW4g
QVhPdXRsaW5lICh0aGUgbWFjIHJvbGUgaXMgYmVjb21lcykgaGFzIHNvbWUgb2RkIHN0aXB1bGF0
aW9ucy4KLSAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzVHJlZSgpIHx8IGJhY2tpbmdPYmpl
Y3QtPmlzVHJlZUl0ZW0oKSkKKyAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzVHJlZSgpIHx8
IGJhY2tpbmdPYmplY3QtPmlzVHJlZUl0ZW0oKSB8fCBiYWNraW5nT2JqZWN0LT5pc1JlbW90ZUZy
YW1lKCkpCiAgICAgICAgICAgICByZXR1cm4gW1tzZWxmIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZV0gY291bnRdOwogCiAgICAgICAg
IGF1dG8gY2hpbGRyZW5TaXplID0gYmFja2luZ09iamVjdC0+Y2hpbGRyZW4oKS5zaXplKCk7CkBA
IC0zNzc2LDE2ICszODI3LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAK
ICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5BdHRyaWJ1dGVdKSB7CiAgICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5jaGlsZHJlbigpLmlz
RW1wdHkoKSkgewotICAgICAgICAgICAgTlNBcnJheSAqY2hpbGRyZW4gPSBuaWw7Ci0jaWYgRU5B
QkxFKE1PREVMX0VMRU1FTlQpCi0gICAgICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNNb2Rl
bCgpKSB7Ci0gICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBjcmVhdGVOU0FycmF5KGJhY2tpbmdP
YmplY3QtPm1vZGVsRWxlbWVudENoaWxkcmVuKCksIFtdIChhdXRvJiYgY2hpbGQpIC0+IGlkIHsK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkLmdldCgpOwotICAgICAgICAgICAgICAg
IH0pLmF1dG9yZWxlYXNlKCk7Ci0gICAgICAgICAgICB9IGVsc2UKLSNlbmRpZgotICAgICAgICAg
ICAgICAgIGNoaWxkcmVuID0gW3NlbGYgcmVuZGVyV2lkZ2V0Q2hpbGRyZW5dOwotICAgICAgICAg
ICAgCisgICAgICAgICAgICBOU0FycmF5ICpjaGlsZHJlbiA9IFtzZWxmIF90cmFuc2Zvcm1TcGVj
aWFsQ2hpbGRyZW5DYXNlczpiYWNraW5nT2JqZWN0XTsKICAgICAgICAgICAgIGlmICghY2hpbGRy
ZW4pCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMzgxNiw4ICszODU4LDEzIEBA
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAgICAgICAgICAgICAvLyBUaGUg
YXR0YWNobWVudCB2aWV3IHNob3VsZCBiZSByZXR1cm5lZCwgb3RoZXJ3aXNlIEFYIHBhbGluZHJv
bWUgZXJyb3JzIG9jY3VyLgogICAgICAgICAgICAgaWQgYXR0YWNobWVudFZpZXcgPSBuaWw7Ci0g
ICAgICAgICAgICBpZiAoW3dyYXBwZXIgaXNLaW5kT2ZDbGFzczpbV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIgY2xhc3NdXSAmJiB3cmFwcGVyLmF4QmFja2luZ09iamVjdCAmJiB3cmFwcGVy
LmF4QmFja2luZ09iamVjdC0+aXNBdHRhY2htZW50KCkpCi0gICAgICAgICAgICAgICAgYXR0YWNo
bWVudFZpZXcgPSBbd3JhcHBlciBhdHRhY2htZW50Vmlld107CisgICAgICAgICAgICBpZiAoW3dy
YXBwZXIgaXNLaW5kT2ZDbGFzczpbV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgY2xhc3Nd
XSAmJiB3cmFwcGVyLmF4QmFja2luZ09iamVjdCkgeworICAgICAgICAgICAgICAgIGlmICh3cmFw
cGVyLmF4QmFja2luZ09iamVjdC0+aXNBdHRhY2htZW50KCkpCisgICAgICAgICAgICAgICAgICAg
IGF0dGFjaG1lbnRWaWV3ID0gW3dyYXBwZXIgYXR0YWNobWVudFZpZXddOworICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKHdyYXBwZXIuYXhCYWNraW5nT2JqZWN0LT5pc1JlbW90ZUZyYW1lKCkpCisg
ICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRWaWV3ID0gd3JhcHBlci5heEJhY2tpbmdPYmpl
Y3QtPnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkuZ2V0KCk7CisgICAgICAgICAgICB9CisK
ICAgICAgICAgICAgIFtzdWJhcnJheSBhZGRPYmplY3Q6YXR0YWNobWVudFZpZXcgPyBhdHRhY2ht
ZW50VmlldyA6IHdyYXBwZXJdOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5jcHAKaW5kZXggMjU4YzE0Yjg2YThiLi41NzE3YWRlMmE0NTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0xMDg1LDYgKzEwODUsMTEgQEAgUmVtb3Rl
QVhPYmplY3RSZWYgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6YWNjZXNzaWJpbGl0eVJlbW90ZU9i
amVjdCgpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK0ludFBvaW50IEVtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQ6OmFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCgpCit7CisgICAgcmV0dXJu
IHsgfTsKK30KKwogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiB2b2lk
IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnNldEFYSXNvbGF0ZWRUcmVlUm9vdChXZWJDb3JlOjpB
WENvcmVPYmplY3QqKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
RnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9h
ZGVyQ2xpZW50LmgKaW5kZXggMDk4Y2U1OGQxMTE5Li40NjcyZGUyOTg1MzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTg0LDYgKzE4
NCw3IEBAIHByaXZhdGU6CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZW1vdGVBWE9iamVj
dFJlZiBhY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkgZmluYWw7CisgICAgSW50UG9pbnQgYWNj
ZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCkgZmluYWw7CiAjaWYgRU5BQkxFKEFDQ0VTU0lC
SUxJVFlfSVNPTEFURURfVFJFRSkKICAgICB2b2lkIHNldEFYSXNvbGF0ZWRUcmVlUm9vdChXZWJD
b3JlOjpBWENvcmVPYmplY3QqKSBmaW5hbDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0xvY2FsRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Mb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggYjJkNTZmMDUwYWU5Li4wMGQzYWQ1
ZTJjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2NhbEZyYW1lTG9hZGVy
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvY2FsRnJhbWVMb2FkZXJDbGll
bnQuaApAQCAtMjkwLDYgKzI5MCw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICAvLyBBbGxvdyBhbiBhY2Nlc3NpYmlsaXR5IG9iamVjdCB0byByZXRyaWV2ZSBhIEZyYW1lIHBh
cmVudCBpZiB0aGVyZSdzIG5vIFBsYXRmb3JtV2lkZ2V0LgogICAgIHZpcnR1YWwgUmVtb3RlQVhP
YmplY3RSZWYgYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpID0gMDsKKyAgICB2aXJ0dWFsIElu
dFBvaW50IGFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCgpID0gMDsKICNpZiBFTkFCTEUo
QUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQogICAgIHZpcnR1YWwgdm9pZCBzZXRBWElzb2xh
dGVkVHJlZVJvb3QoQVhDb3JlT2JqZWN0KikgPSAwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApp
bmRleCA1ZDJmZWFiNjU3OTYuLmI0YzI1MmUwMjM2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0y
MjA4LDExICsyMjA4LDE4IEBAIGJvb2wgUGFnZTo6c2hvdWxkVXBkYXRlQWNjZXNzaWJpbGl0eVJl
Z2lvbnMoKSBjb25zdAogICAgIEFTU0VSVChtX2xhc3RSZW5kZXJpbmdVcGRhdGVUaW1lc3RhbXAg
Pj0gbV9sYXN0QWNjZXNzaWJpbGl0eU9iamVjdFJlZ2lvbnNVcGRhdGUpOwogICAgIGlmICgobV9s
YXN0UmVuZGVyaW5nVXBkYXRlVGltZXN0YW1wIC0gbV9sYXN0QWNjZXNzaWJpbGl0eU9iamVjdFJl
Z2lvbnNVcGRhdGUpIDwgdXBkYXRlSW50ZXJ2YWwpIHsKICAgICAgICAgLy8gV2UndmUgYWxyZWFk
eSB1cGRhdGVkIGFjY2Vzc2liaWxpdHkgb2JqZWN0IHJlY3RzIHJlY2VudGx5LCBzbyBza2lwIHRo
aXMgdXBkYXRlIGFuZCBzY2hlZHVsZSBhbm90aGVyIGZvciBsYXRlci4KLSAgICAgICAgYXV0byog
bG9jYWxNYWluRnJhbWUgPSBkeW5hbWljRG93bmNhc3Q8TG9jYWxGcmFtZT4obWFpbkZyYW1lKCkp
OwotICAgICAgICBSZWZQdHIgbWFpbkRvY3VtZW50ID0gbG9jYWxNYWluRnJhbWUgPyBsb2NhbE1h
aW5GcmFtZS0+ZG9jdW1lbnQoKSA6IG51bGxwdHI7CisKKyAgICAgICAgUmVmUHRyPERvY3VtZW50
PiBwcm90ZWN0ZWRNYWluRG9jdW1lbnQgPSBudWxscHRyOworICAgICAgICBpZiAoYXV0byogbG9j
YWxNYWluRnJhbWUgPSBkeW5hbWljRG93bmNhc3Q8TG9jYWxGcmFtZT4obWFpbkZyYW1lKCkpKQor
ICAgICAgICAgICAgcHJvdGVjdGVkTWFpbkRvY3VtZW50ID0gbG9jYWxNYWluRnJhbWUgPyBsb2Nh
bE1haW5GcmFtZS0+ZG9jdW1lbnQoKSA6IG51bGxwdHI7CisgICAgICAgIGVsc2UgaWYgKGF1dG8q
IHJlbW90ZUZyYW1lID0gZHluYW1pY0Rvd25jYXN0PFJlbW90ZUZyYW1lPihtYWluRnJhbWUoKSkp
IHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBvd25lciA9IHJlbW90ZUZyYW1lLT5vd25lckVsZW1l
bnQoKSkKKyAgICAgICAgICAgICAgICBwcm90ZWN0ZWRNYWluRG9jdW1lbnQgPSAmKG93bmVyLT5k
b2N1bWVudCgpKTsKKyAgICAgICAgfQorCiAgICAgICAgIC8vIElmIGFjY2Vzc2liaWxpdHkgaXMg
ZW5hYmxlZCBhbmQgd2UgaGF2ZSBhIG1haW4gZG9jdW1lbnQsIHRoYXQgZG9jdW1lbnQgc2hvdWxk
IGhhdmUgYW4gQVggb2JqZWN0IGNhY2hlLgotICAgICAgICBBU1NFUlQoIW1haW5Eb2N1bWVudCB8
fCBtYWluRG9jdW1lbnQtPmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpKTsKLSAgICAgICAgaWYgKENo
ZWNrZWRQdHIgdG9wQXhPYmplY3RDYWNoZSA9IG1haW5Eb2N1bWVudCA/IG1haW5Eb2N1bWVudC0+
ZXhpc3RpbmdBWE9iamVjdENhY2hlKCkgOiBudWxscHRyKQorICAgICAgICBBU1NFUlQoIXByb3Rl
Y3RlZE1haW5Eb2N1bWVudCB8fCBwcm90ZWN0ZWRNYWluRG9jdW1lbnQtPmV4aXN0aW5nQVhPYmpl
Y3RDYWNoZSgpKTsKKyAgICAgICAgaWYgKENoZWNrZWRQdHIgdG9wQXhPYmplY3RDYWNoZSA9IHBy
b3RlY3RlZE1haW5Eb2N1bWVudCA/IHByb3RlY3RlZE1haW5Eb2N1bWVudC0+ZXhpc3RpbmdBWE9i
amVjdENhY2hlKCkgOiBudWxscHRyKQogICAgICAgICAgICAgdG9wQXhPYmplY3RDYWNoZS0+c2No
ZWR1bGVPYmplY3RSZWdpb25zVXBkYXRlKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuY3BwCmluZGV4IDcxMmMwYjIyMGZkMC4uNTBiMGEy
NWNmZGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmNwcApAQCAtMTAwLDYgKzEwMCwy
MSBAQCB2b2lkIFJlbW90ZUZyYW1lOjpicm9hZGNhc3RGcmFtZVJlbW92YWxUb090aGVyUHJvY2Vz
c2VzKCkKICAgICBtX2NsaWVudC0+YnJvYWRjYXN0RnJhbWVSZW1vdmFsVG9PdGhlclByb2Nlc3Nl
cygpOwogfQogCit2b2lkIFJlbW90ZUZyYW1lOjp1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxp
dHlPZmZzZXQoSW50UG9pbnQgb2Zmc2V0KQoreworICAgIG1fY2xpZW50LT51cGRhdGVSZW1vdGVG
cmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQoZnJhbWVJRCgpLCBvZmZzZXQpOworfQorCit2b2lkIFJl
bW90ZUZyYW1lOjp1bmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRl
bnRpZmllcikKK3sKKyAgICBtX2NsaWVudC0+dW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1l
cyhwcm9jZXNzSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlRnJhbWU6OmJpbmRSZW1vdGVB
Y2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgc3RkOjpzcGFuPGNvbnN0
IHVpbnQ4X3Q+IGRhdGFUb2tlbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6OnNw
YW48Y29uc3QgdWludDhfdD4sIGludCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgcmV0
dXJuIG1fY2xpZW50LT5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhwcm9jZXNzSWRlbnRp
ZmllciwgZnJhbWVJRCgpLCBkYXRhVG9rZW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
K30KKwogRnJhbWVWaWV3KiBSZW1vdGVGcmFtZTo6dmlydHVhbFZpZXcoKSBjb25zdAogewogICAg
IHJldHVybiBtX3ZpZXcuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jl
bW90ZUZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmgKaW5kZXggMjdl
ZDg0MGQwODJlLi5jZDgyYTc5Y2MzMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UmVtb3RlRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmgKQEAg
LTMzLDYgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBJbnRQb2ludDsK
IGNsYXNzIFJlbW90ZURPTVdpbmRvdzsKIGNsYXNzIFJlbW90ZUZyYW1lQ2xpZW50OwogY2xhc3Mg
UmVtb3RlRnJhbWVWaWV3OwpAQCAtNjIsNiArNjMsOSBAQCBwdWJsaWM6CiAgICAgTWFya2FibGU8
TGF5ZXJIb3N0aW5nQ29udGV4dElkZW50aWZpZXI+IGxheWVySG9zdGluZ0NvbnRleHRJZGVudGlm
aWVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXllckhvc3RpbmdDb250ZXh0SWRlbnRpZmllcjsgfQog
CiAgICAgU3RyaW5nIHJlbmRlclRyZWVBc1RleHQoc2l6ZV90IGJhc2VJbmRlbnQsIE9wdGlvblNl
dDxSZW5kZXJBc1RleHRGbGFnPik7CisgICAgdm9pZCBiaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZy
YW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIGludCk+JiYpOwor
ICAgIHZvaWQgdXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KEludFBvaW50KTsK
KyAgICB2b2lkIHVuYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50KTsKIAogcHJpdmF0
ZToKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBSZW1vdGVGcmFtZShQYWdlJiwgVW5pcXVl
UmVmPFJlbW90ZUZyYW1lQ2xpZW50PiYmLCBGcmFtZUlkZW50aWZpZXIsIEhUTUxGcmFtZU93bmVy
RWxlbWVudCosIEZyYW1lKiBwYXJlbnQsIE1hcmthYmxlPExheWVySG9zdGluZ0NvbnRleHRJZGVu
dGlmaWVyPiwgRnJhbWUqIG9wZW5lciA9IG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9SZW1vdGVGcmFtZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1v
dGVGcmFtZUNsaWVudC5oCmluZGV4IDRlZmQxMDNmMzkxMi4uNTQxYTBkMDFjNTYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZUNsaWVudC5oCkBAIC0zMCw2ICszMCw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRGF0YVNlZ21lbnQ7CiBjbGFzcyBGcmFtZUxvYWRS
ZXF1ZXN0OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luRGF0YTsKQEAgLTQ4
LDYgKzQ5LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHJlbmRlclRyZWVBc1RleHQo
c2l6ZV90IGJhc2VJbmRlbnQsIE9wdGlvblNldDxSZW5kZXJBc1RleHRGbGFnPikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBicm9hZGNhc3RGcmFtZVJlbW92YWxUb090aGVyUHJvY2Vzc2VzKCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZVBhZ2UoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGJp
bmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgRnJhbWVJ
ZGVudGlmaWVyIHRhcmdldCwgY29uc3Qgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGFUb2tl
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4s
IGludCk+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3Np
YmlsaXR5T2Zmc2V0KEZyYW1lSWRlbnRpZmllciB0YXJnZXQsIEludFBvaW50KSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHVuYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50KSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGZvY3VzKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmZvY3VzKCkg
PSAwOwogICAgIHZpcnR1YWwgflJlbW90ZUZyYW1lQ2xpZW50KCkgeyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggODRmYzQxOWU1OWNhLi40MmVlZTY2YWIxNmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL0RyYWdBY3Rpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0b3JDbGllbnQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvY3VzRGlyZWN0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9GcmFtZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lucHV0TW9kZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTWVkaWFDb250cm9sc0NvbnRleHRNZW51SXRlbS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2Nyb2xsVHlwZXMuaD4KQEAgLTMxOCw3ICszMTksNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGV4ZWN1dGVVbmRvUmVkbyhVbmRvT3JSZWRvKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHdoZWVsRXZlbnRXYXNOb3RIYW5kbGVkQnlXZWJDb3JlKGNvbnN0IE5hdGl2ZVdlYldo
ZWVsRXZlbnQmKSA9IDA7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdmlydHVhbCB2b2lkIGFj
Y2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChzdGQ6OnNwYW48Y29uc3QgdWludDhf
dD4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJl
Y2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
LCBwaWRfdCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBleGVjdXRlU2F2ZWRDb21tYW5kQnlTZWxl
Y3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9yKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZVNlY3VyZUlucHV0U3RhdGUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0U2VjdXJlSW5w
dXRTdGF0ZSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zp
c2lvbmFsUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFs
UGFnZVByb3h5LmNwcAppbmRleCAwNTAzMDg2MzkxZmIuLjNlM2I4MTk1ZDA0OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcApAQCAtNTQ1
LDcgKzU0NSw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OnJlcXVlc3RQYXNzd29yZEZv
clF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QKICNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCi12b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpyZWdpc3RlcldlYlByb2Nlc3NB
Y2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCit2b2lkIFBy
b3Zpc2lvbmFsUGFnZVByb3h5OjpyZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4o
c3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEsIEZyYW1lSWRlbnRpZmllcikKIHsKICAgICBt
X2FjY2Vzc2liaWxpdHlUb2tlbiA9IFZlY3RvcihkYXRhKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCmluZGV4IGRlZWNkNzZhMjAyNC4uZDBi
N2VjY2VlZmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25h
bFBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFn
ZVByb3h5LmgKQEAgLTE3Miw3ICsxNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVxdWVzdFBh
c3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIGZpbGVO
YW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKICNlbmRpZgog
I2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgcmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJp
bGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Pik7CisgICAgdm9pZCByZWdpc3Rlcldl
YlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFU
Rk9STShXUEUpCiAgICAgdm9pZCBiaW5kQWNjZXNzaWJpbGl0eVRyZWUoY29uc3QgU3RyaW5nJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCmluZGV4IGYyZmM4YTU0
ZDg4My4uMjMwMzA3YTE3NGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJGcmFtZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVBy
b3h5LmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2lu
Y2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFzdGVib2FyZFBy
b3h5LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzc1Bvb2wuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiV2Vi
c2l0ZVBvbGljaWVzRGF0YS5oIgpAQCAtMTg0LDYgKzE4NSwxNCBAQCB2b2lkIFdlYkZyYW1lUHJv
eHk6Om5hdmlnYXRlU2VydmljZVdvcmtlckNsaWVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25D
b250ZXh0SQogICAgIH0pOwogfQogCit2b2lkIFdlYkZyYW1lUHJveHk6OmJpbmRBY2Nlc3NpYmls
aXR5RnJhbWVXaXRoRGF0YShzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSkKK3sKKyAgICBp
ZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzOjpCaW5kQWNjZXNzaWJpbGl0eUZyYW1lV2l0aERhdGEobV9mcmFtZUlELCBk
YXRhKSk7Cit9CisKIHZvaWQgV2ViRnJhbWVQcm94eTo6bG9hZFVSTChjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiByZWZlcnJlcikKIHsKICAgICBpZiAoIW1fcGFnZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaAppbmRleCBiMGRhZWIwZTY0ZmMuLjcxNWJiODBiYWI2
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaApAQCAtMTcwLDYgKzE3
MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW90ZVByb2Nlc3NEaWRUZXJtaW5hdGUoKTsKICAg
ICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiB3ZWJQYWdlSURJbkN1cnJl
bnRQcm9jZXNzKCk7CiAgICAgdm9pZCBub3RpZnlQYXJlbnRPZkxvYWRDb21wbGV0aW9uKFdlYlBy
b2Nlc3NQcm94eSYpOworICAgIHZvaWQgcmVtb3ZlUmVtb3RlUGFnZXNGb3JTdXNwZW5zaW9uKCk7
CisgICAgdm9pZCBiaW5kQWNjZXNzaWJpbGl0eUZyYW1lV2l0aERhdGEoc3RkOjpzcGFuPGNvbnN0
IHVpbnQ4X3Q+KTsKIAogICAgIGJvb2wgaXNGb2N1c2VkKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDQ2YzIxNDNhOTRhYi4uZjM3MTFlODU3
MjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEyOTUs
OCArMTI5NSwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3dhcFRvUHJvdmlzaW9uYWxQYWdlKHN0
ZDo6dW5pcXVlX3B0cjxQcm92aXNpb25hbFBhZ2VQcm94eT4gcAogCiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgYXV0byBhY2Nlc3NpYmlsaXR5VG9rZW4gPSBwcm92aXNpb25hbFBhZ2UtPnRha2VB
Y2Nlc3NpYmlsaXR5VG9rZW4oKTsKLSAgICBpZiAoIWFjY2Vzc2liaWxpdHlUb2tlbi5pc0VtcHR5
KCkpCi0gICAgICAgIHJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbih7IGFjY2Vz
c2liaWxpdHlUb2tlbi5kYXRhKCksIGFjY2Vzc2liaWxpdHlUb2tlbi5zaXplKCkgfSk7CisgICAg
aWYgKCFhY2Nlc3NpYmlsaXR5VG9rZW4uaXNFbXB0eSgpKSB7CisgICAgICAgIHJlZ2lzdGVyV2Vi
UHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbih7IGFjY2Vzc2liaWxpdHlUb2tlbi5kYXRhKCksIGFj
Y2Vzc2liaWxpdHlUb2tlbi5zaXplKCkgfSwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHsKKyAg
ICAgICAgICAgIE9iamVjdElkZW50aWZpZXI8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyVHlwZT4o
MCksCisgICAgICAgICAgICBPYmplY3RJZGVudGlmaWVyPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyVHlwZT4oMCkKKyAgICAgICAgfSk7CisgICAgfQogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RL
KSB8fCBQTEFURk9STShXUEUpCiAgICAgYXV0byBhY2Nlc3NpYmlsaXR5UGx1Z0lEID0gcHJvdmlz
aW9uYWxQYWdlLT5hY2Nlc3NpYmlsaXR5UGx1Z0lEKCk7CkBAIC0xMzc0NCw2ICsxMzc0OCwyMiBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6YWRkQ29uc29sZU1lc3NhZ2UoRnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIE1lc3NhZ2VTb3VyY2UgbWVzcwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFk
ZENvbnNvbGVNZXNzYWdlIHsgZnJhbWVJRCwgbWVzc2FnZVNvdXJjZSwgbWVzc2FnZUxldmVsLCBt
ZXNzYWdlLCBjb3JlSWRlbnRpZmllciB9KTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OmJpbmRS
ZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBk
YXRhVG9rZW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+
LCBpbnQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNl
bmRTeW5jVG9Qcm9jZXNzQ29udGFpbmluZ0ZyYW1lKGZyYW1lSUQsIE1lc3NhZ2VzOjpXZWJQYWdl
OjpCaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhwcm9jZXNzSWRlbnRpZmllciwgZnJhbWVJ
RCwgZGF0YVRva2VuKSk7CisgICAgaWYgKCFzZW5kUmVzdWx0LnN1Y2NlZWRlZCgpKQorICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9LCAwKTsKKworICAgIGF1dG8gW2ZyYW1lRGF0
YVRva2VuLCBmcmFtZVByb2Nlc3NJZGVudGlmaWVyXSA9IHNlbmRSZXN1bHQudGFrZVJlcGx5KCk7
CisKKyAgICBjb21wbGV0aW9uSGFuZGxlcihmcmFtZURhdGFUb2tlbiwgZnJhbWVQcm9jZXNzSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVSZW1vdGVGcmFtZUFjY2Vz
c2liaWxpdHlPZmZzZXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6
OkludFBvaW50IG9mZnNldCkKK3sKKyAgICBzZW5kVG9Qcm9jZXNzQ29udGFpbmluZ0ZyYW1lKGZy
YW1lSUQsIE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVSZW1vdGVQYWdlQWNjZXNzaWJpbGl0eU9m
ZnNldChmcmFtZUlELCBvZmZzZXQpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1
bmRlZiBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKaW5kZXggY2M4NmRkYzZhNWJmLi43MDM0OGM2ZjY2MWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMzU1LDcgKzEzNTUsNyBAQCBwdWJsaWM6CiAK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICAvLyBDYWxsZWQgYnkgdGhlIHdlYiBwcm9jZXNzIHRo
cm91Z2ggYSBtZXNzYWdlLgotICAgIHZvaWQgcmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0
eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Pik7CisgICAgdm9pZCByZWdpc3RlcldlYlBy
b2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIpOwogICAgIC8vIENhbGxlZCBieSB0aGUgVUkgcHJvY2VzcyB3aGVu
IGl0IGlzIHJlYWR5IHRvIHNlbmQgaXRzIHRva2VucyB0byB0aGUgd2ViIHByb2Nlc3MuCiAgICAg
dm9pZCByZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoc3RkOjpzcGFuPGNvbnN0
IHVpbnQ4X3Q+IGVsZW1lbnRUb2tlbiwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHdpbmRvd1Rv
a2VuKTsKICAgICB2b2lkIHJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHR5cGVzLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pOwpAQCAtMjk3
OCw2ICsyOTc4LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGZvY3VzUmVtb3RlRnJhbWUoSVBDOjpD
b25uZWN0aW9uJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lkIHBvc3RNZXNz
YWdlVG9SZW1vdGUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHNvdXJjZSwgY29uc3QgU3RyaW5n
JiBzb3VyY2VPcmlnaW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciB0YXJnZXQsIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiB0YXJnZXRPcmlnaW4sIGNvbnN0IFdl
YkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJik7CiAgICAgdm9pZCByZW5kZXJUcmVlQXNU
ZXh0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgc2l6ZV90IGJhc2VJbmRlbnQsIE9wdGlvblNl
dDxXZWJDb3JlOjpSZW5kZXJBc1RleHRGbGFnPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJp
bmcmJik+JiYpOworICAgIHZvaWQgYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHBy
b2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHN0ZDo6c3Bhbjxjb25z
dCB1aW50OF90PiBkYXRhVG9rZW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpzcGFuPGNv
bnN0IHVpbnQ4X3Q+LCBpbnQpPiYmKTsKKyAgICB2b2lkIHVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNz
aWJpbGl0eU9mZnNldChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OkludFBvaW50
KTsKIAogICAgIHZvaWQgc2V0VGV4dEluZGljYXRvckZyb21GcmFtZShXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhJiYsIHVpbnQ2NF90KTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4
IDQ5Mzg2MjZiZjhhMi4uYTU0MmYxNzZiNTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zMjQsNyArMzI0LDcgQEAgbWVzc2Fn
ZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBFeGVjdXRlU2F2ZWRDb21tYW5kQnlTZWxlY3RvcihT
dHJpbmcgc2VsZWN0b3IpIC0+IChib29sIGhhbmRsZWQpIFN5bmNocm9ub3VzCiAKICAgICAjIFJl
bW90ZSBhY2Nlc3NpYmlsaXR5IG1lc3NhZ2VzCi0gICAgUmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNz
aWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhKQorICAgIFJlZ2lzdGVy
V2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0
YSwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCiAKICAgICAjIFNwZWVjaCBtZXNz
YWdlcwogICAgIEdldElzU3BlYWtpbmcoKSAtPiAoYm9vbCBpc1NwZWFraW5nKSBTeW5jaHJvbm91
cwpAQCAtNjMwLDQgKzYzMCw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRm9j
dXNSZW1vdGVGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKICAgICBQb3N0
TWVzc2FnZVRvUmVtb3RlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBzb3VyY2UsIFN0cmluZyBz
b3VyY2VPcmlnaW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciB0YXJnZXQsIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiB0YXJnZXRPcmlnaW4sIHN0cnVjdCBXZWJD
b3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBtZXNzYWdlKQogICAgIFJlbmRlclRyZWVBc1Rl
eHQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGlkZW50aWZpZXIsIHNpemVfdCBiYXNlSW5kZW50
LCBPcHRpb25TZXQ8V2ViQ29yZTo6UmVuZGVyQXNUZXh0RmxhZz4gYmVoYXZpb3IpIC0+IChTdHJp
bmcgcmVuZGVyVHJlZUR1bXApIFN5bmNocm9ub3VzCisgICAgQmluZFJlbW90ZUFjY2Vzc2liaWxp
dHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGFUb2tlbikgLT4gKHN0ZDo6c3Bh
bjxjb25zdCB1aW50OF90PiB0b2tlbiwgaW50IHByb2Nlc3NJZGVudGlmaWVyKSBTeW5jaHJvbm91
cworICAgIFVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6SW50UG9pbnQgb2Zmc2V0KQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCAxMGM0
ZjZhZTEyNTAuLjYzODhjYjQ2NzJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTExMCw3ICsxMTAsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgY2xlYXJBbGxFZGl0Q29tbWFuZHMoKSBvdmVycmlkZTsKICAgICBib29sIGNhblVuZG9S
ZWRvKFVuZG9PclJlZG8pIG92ZXJyaWRlOwogICAgIHZvaWQgZXhlY3V0ZVVuZG9SZWRvKFVuZG9P
clJlZG8pIG92ZXJyaWRlOwotICAgIHZvaWQgYWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJl
Y2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Pikgb3ZlcnJpZGU7CisgICAgdm9pZCBhY2Nl
c3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHBpZF90KSBvdmVycmlkZTsKICAgICBib29sIGV4
ZWN1dGVTYXZlZENvbW1hbmRCeVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IpIG92ZXJy
aWRlOwogICAgIHZvaWQgdXBkYXRlU2VjdXJlSW5wdXRTdGF0ZSgpIG92ZXJyaWRlOwogICAgIHZv
aWQgcmVzZXRTZWN1cmVJbnB1dFN0YXRlKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggY2IyM2Y0OTc0YTZiLi5i
NWFkZGRjZTIzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MubW0KQEAgLTM4OSw3ICszODksNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpl
eGVjdXRlVW5kb1JlZG8oVW5kb09yUmVkbyB1bmRvT3JSZWRvKQogICAgIHJldHVybiAodW5kb09y
UmVkbyA9PSBVbmRvT3JSZWRvOjpVbmRvKSA/IFtbY29udGVudFZpZXcoKSB1bmRvTWFuYWdlcl0g
dW5kb10gOiBbW2NvbnRlbnRWaWV3KCkgdW5kb01hbmFnZXJdIHJlZG9dOwogfQogCi12b2lkIFBh
Z2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpz
cGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmls
aXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEs
IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgcGlkX3QpCiB7CiAgICAgTlNEYXRhICpyZW1vdGVU
b2tlbiA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczpkYXRhLmRhdGEoKSBsZW5ndGg6ZGF0YS5zaXpl
KCldOwogICAgIFtjb250ZW50VmlldygpIF9zZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2Vu
OnJlbW90ZVRva2VuXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVBy
b3h5SU9TLm1tCmluZGV4IDViMTBmNTljNjY2MS4uZGViNGQ1OGU1ZmQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTc2MywxMSArNzYz
LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoYm9v
bCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0
ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBk
YXRhKQordm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlU
b2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSwgRnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQpCiB7Ci0gICAgcHJvdGVjdGVkUGFnZUNsaWVudCgpLT5hY2Nlc3NpYmlsaXR5V2ViUHJvY2Vz
c1Rva2VuUmVjZWl2ZWQoZGF0YSk7Ci19ICAgIAotCisgICAgcGFnZUNsaWVudCgpLmFjY2Vzc2li
aWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChkYXRhLCBmcmFtZUlELCBtZXNzYWdlU2VuZGVy
Q29ubmVjdGlvbigpLT5yZW1vdGVQcm9jZXNzSUQoKSk7Cit9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpyZWxheUFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRp
b25OYW1lLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKaW5kZXggZmI2YzYwNzg2N2Fm
Li5iZjhkYTQzMGQ4YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9Q
YWdlQ2xpZW50SW1wbE1hYy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdl
Q2xpZW50SW1wbE1hYy5oCkBAIC0xNzYsNyArMTc2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdl
c3R1cmVFdmVudFdhc05vdEhhbmRsZWRCeVdlYkNvcmUoY29uc3QgTmF0aXZlV2ViR2VzdHVyZUV2
ZW50Jikgb3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIHZvaWQgYWNjZXNzaWJpbGl0eVdlYlByb2Nl
c3NUb2tlblJlY2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Pikgb3ZlcnJpZGU7CisgICAg
dm9pZCBhY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0
IHVpbnQ4X3Q+LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHBpZF90KSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBhc3Npc3Rp
dmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KaW5kZXggMDc4MGYxOGRh
MWMyLi4wMTUwZWM0NTEyY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9QYWdlQ2xpZW50SW1wbE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
UGFnZUNsaWVudEltcGxNYWMubW0KQEAgLTU4MSw5ICs1ODEsOSBAQCB2b2lkIFBhZ2VDbGllbnRJ
bXBsOjpzZXRUZXh0SW5kaWNhdG9yQW5pbWF0aW9uUHJvZ3Jlc3MoZmxvYXQgcHJvZ3Jlc3MpCiAg
ICAgbV9pbXBsLT5zZXRUZXh0SW5kaWNhdG9yQW5pbWF0aW9uUHJvZ3Jlc3MocHJvZ3Jlc3MpOwog
fQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVj
ZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCit2b2lkIFBhZ2VDbGllbnRJbXBs
OjphY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVp
bnQ4X3Q+IGRhdGEsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBwaWRfdCBwaWQp
CiB7Ci0gICAgbV9pbXBsLT5zZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuKFtOU0RhdGEg
ZGF0YVdpdGhCeXRlczpkYXRhLmRhdGEoKSBsZW5ndGg6ZGF0YS5zaXplKCldKTsKKyAgICBtX2lt
cGwtPnNldEFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW4oW05TRGF0YSBkYXRhV2l0aEJ5dGVz
OmRhdGEuZGF0YSgpIGxlbmd0aDpkYXRhLnNpemUoKV0sIGZyYW1lSUQsIHBpZCk7CiB9CiAgICAg
CiB2b2lkIFBhZ2VDbGllbnRJbXBsOjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGNv
bnN0IExheWVyVHJlZUNvbnRleHQmIGxheWVyVHJlZUNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCBjZmIxMGZkYmI0MTMuLjg2
OTYxN2EyOWQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBh
Z2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVBy
b3h5TWFjLm1tCkBAIC0zMDYsMTIgKzMwNiwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVy
Zm9ybURpY3Rpb25hcnlMb29rdXAoY29uc3QgRGljdGlvbmFyeVBvcHVwSW5mbyYgZGljdGlvbgog
ICAgIHByb3RlY3RlZFBhZ2VDbGllbnQoKS0+ZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAoZGlj
dGlvbmFyeVBvcHVwSW5mbyk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZWdpc3RlcldlYlBy
b2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCit2
b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0
ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKIHsK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAg
ICBwcm90ZWN0ZWRQYWdlQ2xpZW50KCktPmFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNl
aXZlZChkYXRhKTsKKyAgICBwcm90ZWN0ZWRQYWdlQ2xpZW50KCktPmFjY2Vzc2liaWxpdHlXZWJQ
cm9jZXNzVG9rZW5SZWNlaXZlZChkYXRhLCBmcmFtZUlELCBtZXNzYWdlU2VuZGVyQ29ubmVjdGlv
bigpLT5yZW1vdGVQcm9jZXNzSUQoKSk7CiB9ICAgIAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bWFr
ZUZpcnN0UmVzcG9uZGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJbXBs
LmgKaW5kZXggMDNkZmRhZWUxNTNjLi41YTJlMTI5ZmRjOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9XZWJWaWV3SW1wbC5oCkBAIC00NDgsNyArNDQ4LDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0SWdub3Jlc01vdXNlRHJhZ2dlZEV2ZW50cyhib29sKTsKICAgICBib29sIGlnbm9y
ZXNNb3VzZURyYWdnZWRFdmVudHMoKSBjb25zdCB7IHJldHVybiBtX2lnbm9yZXNNb3VzZURyYWdn
ZWRFdmVudHM7IH0KIAotICAgIHZvaWQgc2V0QWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlbihO
U0RhdGEgKik7CisgICAgdm9pZCBzZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuKE5TRGF0
YSAqLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHBpZF90KTsKICAgICB2b2lkIGFjY2Vzc2li
aWxpdHlSZWdpc3RlclVJUHJvY2Vzc1Rva2VucygpOwogICAgIHZvaWQgdXBkYXRlUmVtb3RlQWNj
ZXNzaWJpbGl0eVJlZ2lzdHJhdGlvbihib29sIHJlZ2lzdGVyUHJvY2Vzcyk7CiAgICAgaWQgYWNj
ZXNzaWJpbGl0eUZvY3VzZWRVSUVsZW1lbnQoKTsKQEAgLTkyNyw2ICs5MjcsNyBAQCBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICBib29sIG1fYWxsb3dzTWFnbmlmaWNhdGlv
biB7IGZhbHNlIH07CiAKICAgICBSZXRhaW5QdHI8TlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlFbGVt
ZW50PiBtX3JlbW90ZUFjY2Vzc2liaWxpdHlDaGlsZDsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxl
RGljdGlvbmFyeT4gbV9yZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVDYWNoZTsKIAogICAgIFJlZlB0
cjxXZWJDb3JlOjpJbWFnZT4gbV9wcm9taXNlZEltYWdlOwogICAgIFN0cmluZyBtX3Byb21pc2Vk
RmlsZW5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmll
d0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwubW0KaW5k
ZXggNWJkZTExMTYyNzkwLi5hNGIzMDdkNzZlNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV2ViVmlld0ltcGwubW0KQEAgLTM0ODEsMTAgKzM0ODEsMTIgQEAgdm9pZCBXZWJWaWV3
SW1wbDo6c2V0SWdub3Jlc01vdXNlRHJhZ2dlZEV2ZW50cyhib29sIGlnbm9yZXNNb3VzZURyYWdn
ZWRFdmVudHMpCiAgICAgbV9pZ25vcmVzTW91c2VEcmFnZ2VkRXZlbnRzID0gaWdub3Jlc01vdXNl
RHJhZ2dlZEV2ZW50czsKIH0KIAotdm9pZCBXZWJWaWV3SW1wbDo6c2V0QWNjZXNzaWJpbGl0eVdl
YlByb2Nlc3NUb2tlbihOU0RhdGEgKmRhdGEpCit2b2lkIFdlYlZpZXdJbXBsOjpzZXRBY2Nlc3Np
YmlsaXR5V2ViUHJvY2Vzc1Rva2VuKE5TRGF0YSAqZGF0YSwgV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIHBpZF90IHBpZCkKIHsKLSAgICBtX3JlbW90ZUFjY2Vzc2liaWxpdHlDaGls
ZCA9IGRhdGEubGVuZ3RoID8gYWRvcHROUyhbW05TQWNjZXNzaWJpbGl0eVJlbW90ZVVJRWxlbWVu
dCBhbGxvY10gaW5pdFdpdGhSZW1vdGVUb2tlbjpkYXRhXSkgOiBuaWw7Ci0gICAgdXBkYXRlUmVt
b3RlQWNjZXNzaWJpbGl0eVJlZ2lzdHJhdGlvbih0cnVlKTsKKyAgICBpZiAocGlkID09IG1fcGFn
ZS0+cHJvY2VzcygpLnByb2Nlc3NJRCgpKSB7CisgICAgICAgIG1fcmVtb3RlQWNjZXNzaWJpbGl0
eUNoaWxkID0gZGF0YS5sZW5ndGggPyBhZG9wdE5TKFtbTlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlF
bGVtZW50IGFsbG9jXSBpbml0V2l0aFJlbW90ZVRva2VuOmRhdGFdKSA6IG5pbDsKKyAgICAgICAg
dXBkYXRlUmVtb3RlQWNjZXNzaWJpbGl0eVJlZ2lzdHJhdGlvbih0cnVlKTsKKyAgICB9CiB9CiAK
IHZvaWQgV2ViVmlld0ltcGw6OnVwZGF0ZVJlbW90ZUFjY2Vzc2liaWxpdHlSZWdpc3RyYXRpb24o
Ym9vbCByZWdpc3RlclByb2Nlc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVu
dC5jcHAKaW5kZXggN2QyYTQyNjVmZDVjLi5mM2Y3M2YzNjdlYWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJMb2NhbEZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
TG9jYWxGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTE4MDcsNiArMTgwNywxMiBAQCB2b2lkIFdl
YkxvY2FsRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbERlc3Ryb3lHbG9iYWxPYmplY3RG
b3JET01XaW5kb3dFeHRlbgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgCitXZWJDb3JlOjpJ
bnRQb2ludCBXZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50OjphY2Nlc3NpYmlsaXR5UmVtb3RlRnJh
bWVPZmZzZXQoKQoreworICAgIFJlZlB0ciB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAg
IHJldHVybiB3ZWJQYWdlID8gd2ViUGFnZS0+YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0
KCkgOiBJbnRQb2ludCgpOworfQorCiBSZW1vdGVBWE9iamVjdFJlZiBXZWJMb2NhbEZyYW1lTG9h
ZGVyQ2xpZW50OjphY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkKIHsKICAgICBSZWZQdHIgd2Vi
UGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVu
dC5oCmluZGV4IDg4YzhjYzVjYjcyZS4uOWYzYjY3ZjBmY2I4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJMb2Nh
bEZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTI0MCw2ICsyNDAsNyBAQCBwcml2YXRlOgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgUmVtb3RlQVhPYmplY3RSZWYgYWNjZXNzaWJpbGl0eVJlbW90
ZU9iamVjdCgpIGZpbmFsOworICAgIFdlYkNvcmU6OkludFBvaW50IGFjY2Vzc2liaWxpdHlSZW1v
dGVGcmFtZU9mZnNldCgpIGZpbmFsOwogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVE
X1RSRUUpCiAgICAgdm9pZCBzZXRBWElzb2xhdGVkVHJlZVJvb3QoV2ViQ29yZTo6QVhDb3JlT2Jq
ZWN0KikgZmluYWw7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuY3BwCmluZGV4
IDhjYmZmMmM5YjhjOS4uMmJmMTUyODc5N2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVu
dC5jcHAKQEAgLTk2LDYgKzk2LDQ0IEBAIFN0cmluZyBXZWJSZW1vdGVGcmFtZUNsaWVudDo6cmVu
ZGVyVHJlZUFzVGV4dChzaXplX3QgYmFzZUluZGVudCwgT3B0aW9uU2V0PFJlbmRlCiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAordm9pZCBXZWJSZW1vdGVGcmFtZUNsaWVudDo6dW5iaW5kUmVtb3Rl
QWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIpCit7CisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgLy8gTWFrZSBzdXJlIEFwcEtpdCBzeXN0ZW0ga25vd3MgYWJvdXQgb3Vy
IHJlbW90ZSBVSSBwcm9jZXNzIHN0YXR1cyBub3cuCisgICAgaWYgKFJlZlB0ciBwYWdlID0gbV9m
cmFtZS0+cGFnZSgpKQorICAgICAgICBwYWdlLT5hY2Nlc3NpYmlsaXR5TWFuYWdlUmVtb3RlRWxl
bWVudFN0YXR1cyhmYWxzZSwgcHJvY2Vzc0lkZW50aWZpZXIpOworI2Vsc2UKKyAgICBVTlVTRURf
UEFSQU0ocHJvY2Vzc0lkZW50aWZpZXIpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViUmVtb3RlRnJh
bWVDbGllbnQ6OnVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6SW50UG9pbnQgb2Zmc2V0KQoreworICAg
IGlmIChSZWZQdHIgcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgcGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpVcGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZz
ZXQoZnJhbWVJRCwgb2Zmc2V0KSk7Cit9CisKK3ZvaWQgV2ViUmVtb3RlRnJhbWVDbGllbnQ6OmJp
bmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90
PiBkYXRhVG9rZW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4
X3Q+LCBpbnQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFJlZlB0ciBwYWdlID0gbV9m
cmFtZS0+cGFnZSgpOworICAgIGlmICghcGFnZSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4geyB9LCAwKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHBhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKHByb2Nlc3NJZGVudGlmaWVy
LCBmcmFtZUlELCBkYXRhVG9rZW4pKTsKKyAgICBpZiAoIXNlbmRSZXN1bHQuc3VjY2VlZGVkKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gW3Jlc3VsdFRva2VuLCBwcm9jZXNzSWRlbnRp
ZmllclJlc3VsdF0gPSBzZW5kUmVzdWx0LnRha2VSZXBseSgpOworCisgICAgLy8gTWFrZSBzdXJl
IEFwcEtpdCBzeXN0ZW0ga25vd3MgYWJvdXQgb3VyIHJlbW90ZSBVSSBwcm9jZXNzIHN0YXR1cyBu
b3cuCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgcGFnZS0+YWNjZXNzaWJpbGl0eU1hbmFnZVJl
bW90ZUVsZW1lbnRTdGF0dXModHJ1ZSwgcHJvY2Vzc0lkZW50aWZpZXJSZXN1bHQpOworI2VuZGlm
CisgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0VG9rZW4sIHByb2Nlc3NJZGVudGlmaWVyUmVz
dWx0KTsKK30KKwogdm9pZCBXZWJSZW1vdGVGcmFtZUNsaWVudDo6YnJvYWRjYXN0RnJhbWVSZW1v
dmFsVG9PdGhlclByb2Nlc3NlcygpCiB7CiAgICAgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmJyb2Fk
Y2FzdEZyYW1lUmVtb3ZhbFRvT3RoZXJQcm9jZXNzZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90ZUZyYW1lQ2xp
ZW50LmgKaW5kZXggNjI2ZTA1YzNlODhiLi5jODg5ZWI3ZTVmYWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVG
cmFtZUNsaWVudC5oCkBAIC00OCw2ICs0OCwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgcG9zdE1l
c3NhZ2VUb1JlbW90ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgc291cmNlLCBjb25zdCBTdHJp
bmcmIHNvdXJjZU9yaWdpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHRhcmdldCwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IHRhcmdldE9yaWdpbiwgY29uc3Qg
V2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmKSBmaW5hbDsKICAgICB2b2lkIGNoYW5n
ZUxvY2F0aW9uKFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3QmJikgZmluYWw7CiAgICAgU3RyaW5n
IHJlbmRlclRyZWVBc1RleHQoc2l6ZV90IGJhc2VJbmRlbnQsIE9wdGlvblNldDxXZWJDb3JlOjpS
ZW5kZXJBc1RleHRGbGFnPikgZmluYWw7CisgICAgdm9pZCBiaW5kUmVtb3RlQWNjZXNzaWJpbGl0
eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
c3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6c3Bh
bjxjb25zdCB1aW50OF90PiwgaW50KT4mJikgZmluYWw7CisgICAgdm9pZCB1bmJpbmRSZW1vdGVB
Y2Nlc3NpYmlsaXR5RnJhbWVzKGludCkgZmluYWw7CisgICAgdm9pZCB1cGRhdGVSZW1vdGVGcmFt
ZUFjY2Vzc2liaWxpdHlPZmZzZXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpJ
bnRQb2ludCkgZmluYWw7CisKICAgICB2b2lkIGJyb2FkY2FzdEZyYW1lUmVtb3ZhbFRvT3RoZXJQ
cm9jZXNzZXMoKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlUGFnZSgpIGZpbmFsOwogICAgIHZvaWQg
Zm9jdXMoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQppbmRleCBhZTQzZjFhNDY5OGIuLjAyNDY0MzdlMTJk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2Vi
UGFnZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29h
L1dlYlBhZ2VDb2NvYS5tbQpAQCAtNzcsNiArNzcsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9VVElS
ZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9VVElVdGlsaXRpZXMuaD4KICNpbXBvcnQgPHBh
bC9zcGkvY29jb2EvTGF1bmNoU2VydmljZXNTUEkuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY29jb2Ev
TlNBY2Nlc3NpYmlsaXR5U1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVT
UEkuaD4KICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaD4KIApAQCAtNDA0LDEw
ICs0MDUsNTEgQEAgdm9pZCBXZWJQYWdlOjpjbGVhckRpY3RhdGlvbkFsdGVybmF0aXZlcyhWZWN0
b3I8RGljdGF0aW9uQ29udGV4dD4mJiBjb250ZXh0cykKICAgICB9LCBEb2N1bWVudE1hcmtlcjo6
VHlwZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKIH0KIAotdm9pZCBXZWJQYWdlOjphY2Nlc3Np
YmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tlbihSZXRhaW5QdHI8TlNEYXRhPiByZW1vdGVUb2tlbikK
K3ZvaWQgV2ViUGFnZTo6YWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oUmV0YWluUHRy
PE5TRGF0YT4gcmVtb3RlVG9rZW4sIEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogewogICAgIHN0
ZDo6c3BhbiBkYXRhVG9rZW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oW3JlbW90
ZVRva2VuIGJ5dGVzXSksIFtyZW1vdGVUb2tlbiBsZW5ndGhdKTsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihkYXRh
VG9rZW4pKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlZ2lzdGVyV2ViUHJv
Y2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihkYXRhVG9rZW4sIGZyYW1lSUQpKTsKK30KKwordm9pZCBX
ZWJQYWdlOjphY2Nlc3NpYmlsaXR5TWFuYWdlUmVtb3RlRWxlbWVudFN0YXR1cyhib29sIHJlZ2lz
dGVyU3RhdHVzLCBpbnQgcHJvY2Vzc0lkZW50aWZpZXIpCit7CisjaWYgUExBVEZPUk0oTUFDKQor
ICAgIGlmIChyZWdpc3RlclN0YXR1cykKKyAgICAgICAgW05TQWNjZXNzaWJpbGl0eVJlbW90ZVVJ
RWxlbWVudCByZWdpc3RlclJlbW90ZVVJUHJvY2Vzc0lkZW50aWZpZXI6cHJvY2Vzc0lkZW50aWZp
ZXJdOworICAgIGVsc2UKKyAgICAgICAgW05TQWNjZXNzaWJpbGl0eVJlbW90ZVVJRWxlbWVudCB1
bnJlZ2lzdGVyUmVtb3RlVUlQcm9jZXNzSWRlbnRpZmllcjpwcm9jZXNzSWRlbnRpZmllcl07Cisj
ZWxzZQorICAgIFVOVVNFRF9QQVJBTShyZWdpc3RlclN0YXR1cyk7CisgICAgVU5VU0VEX1BBUkFN
KHByb2Nlc3NJZGVudGlmaWVyKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlBhZ2U6OmJpbmRSZW1v
dGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhVG9rZW4s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBpbnQpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFJlZlB0ciB3ZWJGcmFtZSA9IFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpOworICAgIGlmICghd2ViRnJhbWUpIHsKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcih7IH0sIDApOworICAgIH0KKworICAgIFJlZlB0ciBjb3JlTG9jYWxGcmFtZSA9IHdlYkZy
YW1lLT5jb3JlTG9jYWxGcmFtZSgpOworICAgIGlmICghY29yZUxvY2FsRnJhbWUpIHsKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cih7IH0sIDApOworICAgIH0KKworICAgIGF1dG8qIHJlbmRlcmVyID0gY29yZUxvY2FsRnJhbWUt
PmNvbnRlbnRSZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXIpIHsKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0sIDAp
OworICAgIH0KKworICAgIHJlZ2lzdGVyUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5VG9rZW5zKHBy
b2Nlc3NJZGVudGlmaWVyLCBkYXRhVG9rZW4pOworCisgICAgLy8gR2V0IG91ciByZW1vdGUgdG9r
ZW4gZGF0YSBhbmQgc2VuZCBiYWNrIHRvIHRoZSBSZW1vdGVGcmFtZS4KKyAgICBhdXRvIHJlbW90
ZVRva2VuID0gYWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0YSgpOworICAgIHN0ZDo6c3BhbiBy
ZW1vdGVEYXRhVG9rZW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oW3JlbW90ZVRv
a2VuIGJ5dGVzXSksIFtyZW1vdGVUb2tlbiBsZW5ndGhdKTsKKyAgICBjb21wbGV0aW9uSGFuZGxl
cihyZW1vdGVEYXRhVG9rZW4sIGdldHBpZCgpKTsKIH0KIAogI2lmIEVOQUJMRShBUFBMRV9QQVkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDhl
NmE1YmE5MTI5Ni4uNTYxNDA0MTQxNjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTUzNiw2ICsxNTM2LDE2IEBAIHZvaWQgV2ViUGFnZTo6
cGxhdGZvcm1EaWRTZWxlY3RBbGwoKQogCiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkp
CiAKKyNpZiAhUExBVEZPUk0oQ09DT0EpCit2b2lkIFdlYlBhZ2U6OmJpbmRSZW1vdGVBY2Nlc3Np
YmlsaXR5RnJhbWVzKGludCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBzdGQ6OnNwYW48Y29u
c3QgdWludDhfdD4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4
X3Q+LCBpbnQpPiYmKQoreworfQorCit2b2lkIFdlYlBhZ2U6OnVwZGF0ZVJlbW90ZVBhZ2VBY2Nl
c3NpYmlsaXR5T2Zmc2V0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6SW50UG9p
bnQpCit7Cit9CisjZW5kaWYKKwogdm9pZCBXZWJQYWdlOjp1cGRhdGVFZGl0b3JTdGF0ZUFmdGVy
TGF5b3V0SWZFZGl0YWJpbGl0eUNoYW5nZWQoKQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
dXBkYXRlIEVkaXRvclN0YXRlSXNDb250ZW50RWRpdGFibGUgdG8gdHJhY2sgd2hldGhlciB0aGUg
c3RhdGUgaXMgcmljaGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKaW5kZXggMDliM2U3ZTU5NTc1Li43NjEwZDQwYmM1MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTY3MSw2ICs2NzEsMTAgQEAgcHVibGljOgog
ICAgIHZvaWQgY2xlYXJIaXN0b3J5KCk7CiAKICAgICB2b2lkIGFjY2Vzc2liaWxpdHlTZXR0aW5n
c0RpZENoYW5nZSgpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgYWNjZXNzaWJpbGl0
eU1hbmFnZVJlbW90ZUVsZW1lbnRTdGF0dXMoYm9vbCwgaW50KTsKKyNlbmRpZgorCiAgICAgdm9p
ZCBzY3JlZW5Qcm9wZXJ0aWVzRGlkQ2hhbmdlKCk7CiAKICAgICB2b2lkIHNjYWxlUGFnZShkb3Vi
bGUgc2NhbGUsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBvcmlnaW4pOwpAQCAtMTA0Myw3ICsx
MDQ3LDEwIEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHBsYXRmb3Jt
SW5pdGlhbGl6ZUFjY2Vzc2liaWxpdHkoKTsKICAgICB2b2lkIHJlZ2lzdGVyVUlQcm9jZXNzQWNj
ZXNzaWJpbGl0eVRva2VucyhzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZWxlbWVudFRva2VuLCBz
dGQ6OnNwYW48Y29uc3QgdWludDhfdD4gd2luZG93VG9rZW4pOworICAgIHZvaWQgcmVnaXN0ZXJS
ZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlUb2tlbnMocGlkX3QsIHN0ZDo6c3Bhbjxjb25zdCB1aW50
OF90Pik7CiAgICAgV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdCogYWNjZXNzaWJpbGl0eVJl
bW90ZU9iamVjdCgpOworICAgIFdlYkNvcmU6OkludFBvaW50IGFjY2Vzc2liaWxpdHlSZW1vdGVG
cmFtZU9mZnNldCgpOworICAgIHZvaWQgY3JlYXRlTW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50KHBp
ZF90KTsKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQogICAgIHZvaWQg
Y2FjaGVBWFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKICAgICB2b2lkIGNh
Y2hlQVhTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKQEAgLTIwOTQsNyArMjEwMSw3IEBA
IHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCByZXF1ZXN0QWN0aXZlTm93
UGxheWluZ1Nlc3Npb25JbmZvKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwgV2ViQ29yZTo6
Tm93UGxheWluZ0luZm8mJik+JiYpOwogICAgIFJldGFpblB0cjxOU0RhdGE+IGFjY2Vzc2liaWxp
dHlSZW1vdGVUb2tlbkRhdGEoKSBjb25zdDsKLSAgICB2b2lkIGFjY2Vzc2liaWxpdHlUcmFuc2Zl
clJlbW90ZVRva2VuKFJldGFpblB0cjxOU0RhdGE+KTsKKyAgICB2b2lkIGFjY2Vzc2liaWxpdHlU
cmFuc2ZlclJlbW90ZVRva2VuKFJldGFpblB0cjxOU0RhdGE+LCBXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIpOwogI2VuZGlmCiAKICAgICB2b2lkIHNldFNob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92
ZUV2ZW50cyhib29sIGRpc3BhdGNoKSB7IG1fc2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZl
bnRzID0gZGlzcGF0Y2g7IH0KQEAgLTIyMDQsNiArMjIxMSw4IEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIHJlbW90ZVBvc3RNZXNzYWdlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBzb3VyY2UsIGNv
bnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgdGFyZ2V0
LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJiB0YXJnZXRPcmln
aW4sIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJik7CiAgICAgdm9pZCBy
ZW5kZXJUcmVlQXNUZXh0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgc2l6ZV90IGJhc2VJbmRl
bnQsIE9wdGlvblNldDxXZWJDb3JlOjpSZW5kZXJBc1RleHRGbGFnPiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdHJpbmcmJik+JiYpOworICAgIHZvaWQgYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlG
cmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHN0
ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6OnNwYW48
Y29uc3QgdWludDhfdD4sIGludCk+JiYpOworICAgIHZvaWQgdXBkYXRlUmVtb3RlUGFnZUFjY2Vz
c2liaWxpdHlPZmZzZXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpJbnRQb2lu
dCk7CiAKICAgICB2b2lkIHJlcXVlc3RUZXh0RXh0cmFjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkZsb2F0UmVjdD4mJiBjb2xsZWN0aW9uUmVjdEluUm9vdFZpZXcsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV2ViQ29yZTo6VGV4dEV4dHJhY3Rpb246Okl0ZW0mJik+JiYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpp
bmRleCBlZDljMDFhYmQxNWYuLjI4N2JlNjFlZTU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC00ODgsNiArNDg4
LDkgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0
OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBDb2xsYXBzZVNlbGVjdGlvbkluRnJh
bWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCiAjZW5kaWYKIAorICAgIEJpbmRS
ZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhVG9r
ZW4pIC0+IChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gdG9rZW4sIGludCBwcm9jZXNzSWRlbnRp
ZmllcikgU3luY2hyb25vdXMKKyAgICBVcGRhdGVSZW1vdGVQYWdlQWNjZXNzaWJpbGl0eU9mZnNl
dChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6SW50UG9pbnQgb2Zm
c2V0KTsKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFdpbmRvd0FuZFZpZXdGcmFtZXNDaGFu
Z2VkKHN0cnVjdCBXZWJLaXQ6OlZpZXdXaW5kb3dDb29yZGluYXRlcyBjb29yZGluYXRlcykKICAg
ICBTZXRNYWluRnJhbWVJc1Njcm9sbGFibGUoYm9vbCBpc1Njcm9sbGFibGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IGE3
ZmQ3MjMxMjdjMC4uODhmM2M3Zjg4YTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMjQzLDEyICsyNDMsMTUgQEAgdm9p
ZCBXZWJQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemVBY2Nlc3NpYmlsaXR5KCkKICAgICBtX21vY2tB
Y2Nlc3NpYmlsaXR5RWxlbWVudCA9IGFkb3B0TlMoW1tXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2Jq
ZWN0IGFsbG9jXSBpbml0XSk7CiAgICAgW21fbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50IHNldFdl
YlBhZ2U6dGhpc107CiAKLSAgICBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tlbihhY2Nl
c3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCkpOworICAgIFJlZlB0ciBsb2NhbE1haW5GcmFtZSA9
IGR5bmFtaWNEb3duY2FzdDxMb2NhbEZyYW1lPihtX3BhZ2UtPm1haW5GcmFtZSgpKTsKKyAgICBp
ZiAobG9jYWxNYWluRnJhbWUpCisgICAgICAgIGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRv
a2VuKGFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSwgbG9jYWxNYWluRnJhbWUtPmZyYW1l
SUQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1SZWluaXRpYWxpemUoKQogewotICAg
IGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKGFjY2Vzc2liaWxpdHlSZW1vdGVUb2tl
bkRhdGEoKSk7CisgICAgUmVmIGZyYW1lID0gQ2hlY2tlZFJlZihtX3BhZ2UtPmZvY3VzQ29udHJv
bGxlcigpKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgYWNjZXNzaWJpbGl0eVRyYW5zZmVy
UmVtb3RlVG9rZW4oYWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0YSgpLCBmcmFtZS0+ZnJhbWVJ
RCgpKTsKIH0KIAogUmV0YWluUHRyPE5TRGF0YT4gV2ViUGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90
ZVRva2VuRGF0YSgpIGNvbnN0CkBAIC02NDQsNiArNjQ3LDE2IEBAIE5TT2JqZWN0ICpXZWJQYWdl
OjphY2Nlc3NpYmlsaXR5T2JqZWN0Rm9yTWFpbkZyYW1lUGx1Z2luKCkKICAgICByZXR1cm4gbmls
OwogfQogICAgIAordm9pZCBXZWJQYWdlOjp1cGRhdGVSZW1vdGVQYWdlQWNjZXNzaWJpbGl0eU9m
ZnNldChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OkludFBvaW50KQoreworICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQKK30KKwordm9pZCBXZWJQYWdlOjpyZWdpc3RlclJlbW90ZUZy
YW1lQWNjZXNzaWJpbGl0eVRva2VucyhwaWRfdCwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KQor
eworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQKK30KKwogdm9pZCBXZWJQYWdlOjpyZWdpc3RlclVJ
UHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGVsZW1l
bnRUb2tlbiwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KQogewogICAgIE5TRGF0YSAqZWxlbWVu
dFRva2VuRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczplbGVtZW50VG9rZW4uZGF0YSgpIGxl
bmd0aDplbGVtZW50VG9rZW4uc2l6ZSgpXTsKQEAgLTY2Miw2ICs2NzUsMTIgQEAgdm9pZCBXZWJQ
YWdlOjpnZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQKICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogfQogCitXZWJDb3Jl
OjpJbnRQb2ludCBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKwogV0tBY2Nlc3NpYmls
aXR5V2ViUGFnZU9iamVjdCogV2ViUGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpCiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VP
YmplY3RCYXNlLmgKaW5kZXggMzllOTBlM2M4OTVlLi40OTcwMDcwYTQ1NWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQ
YWdlT2JqZWN0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oCkBAIC00NSw2ICs0NSw4IEBAIGNs
YXNzIEFYQ29yZU9iamVjdDsKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fc2l6ZSBXVEZfR1VBUkRF
RF9CWV9MT0NLKG1fY2FjaGVMb2NrKTsKICAgICBUaHJlYWRTYWZlV2Vha1B0cjxXZWJDb3JlOjpB
WENvcmVPYmplY3Q+IG1faXNvbGF0ZWRUcmVlUm9vdDsKICNlbmRpZgorCisgICAgV2ViQ29yZTo6
SW50UG9pbnQgbV9yZW1vdGVGcmFtZU9mZnNldDsKICAgICBSZXRhaW5QdHI8aWQ+IG1fcGFyZW50
OwogICAgIGJvb2wgbV9oYXNNYWluRnJhbWVQbHVnaW47CiB9CkBAIC01Niw5ICs1OCwxMSBAQCBj
bGFzcyBBWENvcmVPYmplY3Q7CiAtICh2b2lkKXNldElzb2xhdGVkVHJlZVJvb3Q6KE5ha2VkUHRy
PFdlYkNvcmU6OkFYQ29yZU9iamVjdD4pcm9vdDsKICNlbmRpZgogLSAodm9pZClzZXRSZW1vdGVQ
YXJlbnQ6KGlkKXBhcmVudDsKKy0gKHZvaWQpc2V0UmVtb3RlRnJhbWVPZmZzZXQ6KFdlYkNvcmU6
OkludFBvaW50KW9mZnNldDsKIC0gKHZvaWQpc2V0SGFzTWFpbkZyYW1lUGx1Z2luOihib29sKWhh
c1BsdWdpbjsKIAogLSAoaWQpYWNjZXNzaWJpbGl0eVJvb3RPYmplY3RXcmFwcGVyOwogLSAoaWQp
YWNjZXNzaWJpbGl0eUZvY3VzZWRVSUVsZW1lbnQ7CistIChXZWJDb3JlOjpJbnRQb2ludClhY2Nl
c3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQ7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0
QmFzZS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2li
aWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbQppbmRleCA2Zjk5NTQ1YWViZjUuLmJlYzhkNzNmYWEy
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNj
ZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbQpAQCAt
MzYsOSArMzYsMTEgQEAKICNpbXBvcnQgIldLU3RyaW5nQ0YuaCIKICNpbXBvcnQgPFdlYkNvcmUv
QVhPYmplY3RDYWNoZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudC5oPgorI2ltcG9ydCA8
V2ViQ29yZS9GcmFtZVRyZWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxGcmFtZS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9Mb2NhbEZyYW1lVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+
CisjaW1wb3J0IDxXZWJDb3JlL1JlbW90ZUZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Njcm9s
bFZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsYmFyLmg+CiAKQEAgLTU3LDExICs1OSwx
NyBAQCBuYW1lc3BhY2UgYXggPSBXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5OwogICAgIGlmICghcGFn
ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvKiBsb2NhbE1haW5GcmFtZSA9
IGR5bmFtaWNEb3duY2FzdDxXZWJDb3JlOjpMb2NhbEZyYW1lPihwYWdlLT5tYWluRnJhbWUoKSk7
Ci0gICAgaWYgKCFsb2NhbE1haW5GcmFtZSB8fCAhbG9jYWxNYWluRnJhbWUtPmRvY3VtZW50KCkp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmIChhdXRvKiBsb2NhbE1haW5GcmFtZSA9
IGR5bmFtaWNEb3duY2FzdDxXZWJDb3JlOjpMb2NhbEZyYW1lPihwYWdlLT5tYWluRnJhbWUoKSkp
IHsKKyAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gbG9jYWxNYWluRnJhbWUtPmRvY3VtZW50
KCkpCisgICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQtPmF4T2JqZWN0Q2FjaGUoKTsKKyAgICB9
IGVsc2UgaWYgKGF1dG8qIHJlbW90ZU1haW5GcmFtZSA9IGR5bmFtaWNEb3duY2FzdDxXZWJDb3Jl
OjpSZW1vdGVGcmFtZT4ocGFnZS0+bWFpbkZyYW1lKCkpKSB7CisgICAgICAgIGF1dG8mIHRyZWUg
PSByZW1vdGVNYWluRnJhbWUtPnRyZWUoKTsKKyAgICAgICAgYXV0byogZmlyc3RGcmFtZSA9IGR5
bmFtaWNEb3duY2FzdDxXZWJDb3JlOjpMb2NhbEZyYW1lPih0cmVlLmZpcnN0Q2hpbGQoKSk7Cisg
ICAgICAgIGF1dG8qIGRvY3VtZW50ID0gZmlyc3RGcmFtZSA/IGZpcnN0RnJhbWUtPmRvY3VtZW50
KCkgOiBudWxscHRyOworICAgICAgICByZXR1cm4gZG9jdW1lbnQgPyBkb2N1bWVudC0+YXhPYmpl
Y3RDYWNoZSgpIDogbnVsbHB0cjsKKyAgICB9CiAKLSAgICByZXR1cm4gbG9jYWxNYWluRnJhbWUt
PmRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAog
LSAoaWQpYWNjZXNzaWJpbGl0eVBsdWdpbk9iamVjdApAQCAtMTUyLDYgKzE2MCwxNyBAQCBuYW1l
c3BhY2UgYXggPSBXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5OwogICAgIG1faGFzTWFpbkZyYW1lUGx1
Z2luID0gaGFzUGx1Z2luOwogfQogCistICh2b2lkKXNldFJlbW90ZUZyYW1lT2Zmc2V0OihXZWJD
b3JlOjpJbnRQb2ludClvZmZzZXQKK3sKKyAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKKyAg
ICBtX3JlbW90ZUZyYW1lT2Zmc2V0ID0gb2Zmc2V0OworfQorCistIChXZWJDb3JlOjpJbnRQb2lu
dClhY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQKK3sKKyAgICByZXR1cm4gbV9yZW1vdGVG
cmFtZU9mZnNldDsKK30KKwogLSAodm9pZClzZXRSZW1vdGVQYXJlbnQ6KGlkKXBhcmVudAogewog
ICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCA5NmVkNjRhZGJjZmYuLjVmOWI4
ODBjODBiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dlYlBhZ2VNYWMubW0KQEAgLTEyMywxNiArMTIzLDEyIEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZv
cm1Jbml0aWFsaXplQWNjZXNzaWJpbGl0eSgpCiAgICAgLy8gQ3VycmVudGx5LCBpdCBpcyBhbHNv
IG5lZWRlZCB0byBhbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSBhbiBOU0FwcGxpY2F0aW9uIG9iamVj
dC4KICAgICBbTlNBcHBsaWNhdGlvbiBfYWNjZXNzaWJpbGl0eUluaXRpYWxpemVdOwogCi0gICAg
YXV0byBtb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgPSBhZG9wdE5TKFtbV0tBY2Nlc3NpYmlsaXR5
V2ViUGFnZU9iamVjdCBhbGxvY10gaW5pdF0pOwotCiAgICAgLy8gR2V0IHRoZSBwaWQgZm9yIHRo
ZSBzdGFydGluZyBwcm9jZXNzLgogICAgIHBpZF90IHBpZCA9IFdlYkNvcmU6OnByZXNlbnRpbmdB
cHBsaWNhdGlvblBJRCgpOwotICAgIGlmIChbbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50IHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYWNjZXNzaWJpbGl0eVNldFByZXNlbnRlclByb2Nlc3NJ
ZGVudGlmaWVyOildKQotICAgICAgICBbKGlkKW1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudC5nZXQo
KSBhY2Nlc3NpYmlsaXR5U2V0UHJlc2VudGVyUHJvY2Vzc0lkZW50aWZpZXI6cGlkXTsKLSAgICBb
bW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50IHNldFdlYlBhZ2U6dGhpc107Ci0gICAgbV9tb2NrQWNj
ZXNzaWJpbGl0eUVsZW1lbnQgPSBXVEZNb3ZlKG1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCk7Ci0K
LSAgICBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tlbihhY2Nlc3NpYmlsaXR5UmVtb3Rl
VG9rZW5EYXRhKCkpOworICAgIGNyZWF0ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudChwaWQpOwor
ICAgIFJlZlB0ciBsb2NhbE1haW5GcmFtZSA9IGR5bmFtaWNEb3duY2FzdDxMb2NhbEZyYW1lPiht
X3BhZ2UtPm1haW5GcmFtZSgpKTsKKyAgICBpZiAobG9jYWxNYWluRnJhbWUpCisgICAgICAgIGFj
Y2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKGFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRh
dGEoKSwgbG9jYWxNYWluRnJhbWUtPmZyYW1lSUQoKSk7CiAKICAgICAvLyBDbG9zZSBNYWNoIGNv
bm5lY3Rpb24gdG8gTGF1bmNoIFNlcnZpY2VzLgogI2lmIEhBVkUoTFNfU0VSVkVSX0NPTk5FQ1RJ
T05fU1RBVFVTX1JFTEVBU0VfTk9USUZJQ0FUSU9OU19NQVNLKQpAQCAtMTQ0LDkgKzE0MCwyMCBA
QCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6ZUFjY2Vzc2liaWxpdHkoKQogICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnJldm9rZUxhdW5jaFNlcnZpY2VzU2FuZGJveEV4dGVuc2lv
bigpOwogfQogCit2b2lkIFdlYlBhZ2U6OmNyZWF0ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudChw
aWRfdCBwaWQpCit7CisgICAgYXV0byBtb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgPSBhZG9wdE5T
KFtbV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdCBhbGxvY10gaW5pdF0pOworCisgICAgaWYg
KFttb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihh
Y2Nlc3NpYmlsaXR5U2V0UHJlc2VudGVyUHJvY2Vzc0lkZW50aWZpZXI6KV0pCisgICAgICAgIFso
aWQpbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50LmdldCgpIGFjY2Vzc2liaWxpdHlTZXRQcmVzZW50
ZXJQcm9jZXNzSWRlbnRpZmllcjpwaWRdOworICAgIFttb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQg
c2V0V2ViUGFnZTp0aGlzXTsKKyAgICBtX21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCA9IFdURk1v
dmUobW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50KTsKK30KKwogdm9pZCBXZWJQYWdlOjpwbGF0Zm9y
bVJlaW5pdGlhbGl6ZSgpCiB7Ci0gICAgYWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4o
YWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0YSgpKTsKKyAgICBSZWYgZnJhbWUgPSBtX3BhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIGFjY2Vzc2liaWxp
dHlUcmFuc2ZlclJlbW90ZVRva2VuKGFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSwgZnJh
bWUtPmZyYW1lSUQoKSk7CiB9CiAKIFJldGFpblB0cjxOU0RhdGE+IFdlYlBhZ2U6OmFjY2Vzc2li
aWxpdHlSZW1vdGVUb2tlbkRhdGEoKSBjb25zdApAQCAtNDY5LDEyICs0NzYsMjcgQEAgYm9vbCBX
ZWJQYWdlOjpwZXJmb3JtTm9uRWRpdGluZ0JlaGF2aW9yRm9yU2VsZWN0b3IoY29uc3QgU3RyaW5n
JiBzZWxlY3RvciwgS2V5Ym8KICAgICByZXR1cm4gZGlkUGVyZm9ybUFjdGlvbjsKIH0KIAordm9p
ZCBXZWJQYWdlOjp1cGRhdGVSZW1vdGVQYWdlQWNjZXNzaWJpbGl0eU9mZnNldChXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6SW50UG9pbnQgb2Zmc2V0KQoreworICAg
IFthY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkgc2V0UmVtb3RlRnJhbWVPZmZzZXQ6b2Zmc2V0
XTsKK30KKwordm9pZCBXZWJQYWdlOjpyZWdpc3RlclJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eVRv
a2VucyhwaWRfdCBwaWQsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBlbGVtZW50VG9rZW4pCit7
CisgICAgTlNEYXRhICplbGVtZW50VG9rZW5EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmVs
ZW1lbnRUb2tlbi5kYXRhKCkgbGVuZ3RoOmVsZW1lbnRUb2tlbi5zaXplKCldOworICAgIGF1dG8g
cmVtb3RlRWxlbWVudCA9IGVsZW1lbnRUb2tlbkRhdGEubGVuZ3RoID8gYWRvcHROUyhbW05TQWNj
ZXNzaWJpbGl0eVJlbW90ZVVJRWxlbWVudCBhbGxvY10gaW5pdFdpdGhSZW1vdGVUb2tlbjplbGVt
ZW50VG9rZW5EYXRhXSkgOiBuaWw7CisKKyAgICBjcmVhdGVNb2NrQWNjZXNzaWJpbGl0eUVsZW1l
bnQocGlkKTsKKyAgICBbYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpIHNldFJlbW90ZVBhcmVu
dDpyZW1vdGVFbGVtZW50LmdldCgpXTsKK30KKwogdm9pZCBXZWJQYWdlOjpyZWdpc3RlclVJUHJv
Y2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGVsZW1lbnRU
b2tlbiwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHdpbmRvd1Rva2VuKQogewogICAgIE5TRGF0
YSAqZWxlbWVudFRva2VuRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczplbGVtZW50VG9rZW4u
ZGF0YSgpIGxlbmd0aDplbGVtZW50VG9rZW4uc2l6ZSgpXTsKICAgICBOU0RhdGEgKndpbmRvd1Rv
a2VuRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczp3aW5kb3dUb2tlbi5kYXRhKCkgbGVuZ3Ro
OndpbmRvd1Rva2VuLnNpemUoKV07CiAgICAgYXV0byByZW1vdGVFbGVtZW50ID0gZWxlbWVudFRv
a2VuRGF0YS5sZW5ndGggPyBhZG9wdE5TKFtbTlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlFbGVtZW50
IGFsbG9jXSBpbml0V2l0aFJlbW90ZVRva2VuOmVsZW1lbnRUb2tlbkRhdGFdKSA6IG5pbDsKICAg
ICBhdXRvIHJlbW90ZVdpbmRvdyA9IHdpbmRvd1Rva2VuRGF0YS5sZW5ndGggPyBhZG9wdE5TKFtb
TlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlFbGVtZW50IGFsbG9jXSBpbml0V2l0aFJlbW90ZVRva2Vu
OndpbmRvd1Rva2VuRGF0YV0pIDogbmlsOworCiAgICAgW3JlbW90ZUVsZW1lbnQgc2V0V2luZG93
VUlFbGVtZW50OnJlbW90ZVdpbmRvdy5nZXQoKV07CiAgICAgW3JlbW90ZUVsZW1lbnQgc2V0VG9w
TGV2ZWxVSUVsZW1lbnQ6cmVtb3RlV2luZG93LmdldCgpXTsKIApAQCAtNTE2LDYgKzUzOCwxMSBA
QCBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0KiBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5UmVt
b3RlT2JqZWN0KCkKICAgICByZXR1cm4gbV9tb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQuZ2V0KCk7
CiB9CiAKK1dlYkNvcmU6OkludFBvaW50IFdlYlBhZ2U6OmFjY2Vzc2liaWxpdHlSZW1vdGVGcmFt
ZU9mZnNldCgpCit7CisgICAgcmV0dXJuIFttX21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCBhY2Nl
c3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXRdOworfQorCiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJ
VFlfSVNPTEFURURfVFJFRSkKIHZvaWQgV2ViUGFnZTo6Y2FjaGVBWFBvc2l0aW9uKGNvbnN0IFdl
YkNvcmU6OkZsb2F0UG9pbnQmIHBvaW50KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCmluZGV4IDg3MmE1NThmYjRlMS4uZWQ3MTY5Njk1MzFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xNTY4LDYgKzE1NjgsMTAgQEAgdm9pZCBX
ZWJQcm9jZXNzOjp1cGRhdGVDUFVNb25pdG9yU3RhdGUoQ1BVTW9uaXRvclVwZGF0ZVJlYXNvbikK
IHsKIH0KIAordm9pZCBXZWJQcm9jZXNzOjpiaW5kQWNjZXNzaWJpbGl0eUZyYW1lV2l0aERhdGEo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pCit7Cit9
CisKICNlbmRpZgogCiB2b2lkIFdlYlByb2Nlc3M6OnBhZ2VBY3Rpdml0eVN0YXRlRGlkQ2hhbmdl
KFBhZ2VJZGVudGlmaWVyLCBPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZT4gY2hhbmdl
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDA2MTRiY2Y3YWY1Yy4u
MTk2MjYxYTk3N2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTY1
LDYgKzY1LDkgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NjcmVlblByb3BlcnRpZXMuaD4KICNpbmNs
dWRlIDxkaXNwYXRjaC9kaXNwYXRjaC5oPgogI2luY2x1ZGUgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+
CisKK09CSkNfQ0xBU1MgTlNNdXRhYmxlRGljdGlvbmFyeTsKKwogI2VuZGlmCiAKICNpZiBQTEFU
Rk9STShHVEspCkBAIC04Nyw2ICs5MCw3IEBACiAjaW5jbHVkZSAiV2ViU1FMaXRlRGF0YWJhc2VU
cmFja2VyLmgiCiAjZW5kaWYKIAorCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIE9iamVjdDsKIH0K
QEAgLTUxMSw2ICs1MTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1TZXRDYWNoZU1v
ZGVsKENhY2hlTW9kZWwpOwogCiAgICAgdm9pZCBzZXRFbmhhbmNlZEFjY2Vzc2liaWxpdHkoYm9v
bCk7CisgICAgdm9pZCBiaW5kQWNjZXNzaWJpbGl0eUZyYW1lV2l0aERhdGEoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pOwogCiAgICAgdm9pZCBzdGFy
dE1lbW9yeVNhbXBsZXIoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIGNvbnN0IFN0cmluZyYs
IGNvbnN0IGRvdWJsZSk7CiAgICAgdm9pZCBzdG9wTWVtb3J5U2FtcGxlcigpOwpAQCAtODI2LDYg
KzgzMSw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgSGFzaENvdW50ZWRT
ZXQ8U3RyaW5nPiBtX3BlbmRpbmdQYXN0ZWJvYXJkV3JpdGVDb3VudHM7CiAgICAgc3RkOjpvcHRp
b25hbDxhdWRpdF90b2tlbl90PiBtX2F1ZGl0VG9rZW5Gb3JTZWxmOworICAgIFJldGFpblB0cjxO
U011dGFibGVEaWN0aW9uYXJ5PiBtX2FjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZVRva2VuQ2FjaGU7
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggOTliNDAyYWYxMWNhLi5kNzc1
ZmU3ZDM4ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCkBAIC02OSw2ICs2OSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5
UmVjZWl2ZXIgTm90UmVmQ291bnRlZCB7CiAgICAgU2V0VGV4dENoZWNrZXJTdGF0ZShzdHJ1Y3Qg
V2ViS2l0OjpUZXh0Q2hlY2tlclN0YXRlIHRleHRDaGVja2VyU3RhdGUpCiAKICAgICBTZXRFbmhh
bmNlZEFjY2Vzc2liaWxpdHkoYm9vbCBmbGFnKQorICAgIEJpbmRBY2Nlc3NpYmlsaXR5RnJhbWVX
aXRoRGF0YShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RkOjpzcGFuPGNvbnN0
IHVpbnQ4X3Q+IGRhdGEpOwogCiAgICAgR2FyYmFnZUNvbGxlY3RKYXZhU2NyaXB0T2JqZWN0cygp
CiAgICAgU2V0SmF2YVNjcmlwdEdhcmJhZ2VDb2xsZWN0b3JUaW1lckVuYWJsZWQoYm9vbCBlbmFi
bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vz
c0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2Nv
YS5tbQppbmRleCBjNTM4NTdmYmUxZDQuLjExNjA2ZTk2Mzk1NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC0yMTMsNiArMjEz
LDE2IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1TZXRDYWNoZU1vZGVsKENhY2hlTW9kZWwp
CiB7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzczo6YmluZEFjY2Vzc2liaWxpdHlGcmFtZVdpdGhEYXRh
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdGQ6OnNwYW48Y29uc3QgdWludDhf
dD4gZGF0YSkKK3sKKyAgICBpZiAoIW1fYWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lVG9rZW5DYWNo
ZSkKKyAgICAgICAgbV9hY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVUb2tlbkNhY2hlID0gYWRvcHRO
UyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKworICAgIGF1dG8gZnJhbWVJ
bnQgPSBmcmFtZUlELm9iamVjdCgpLnRvVUludDY0KCk7CisgICAgTlNEYXRhICpuc0RhdGEgPSBb
TlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5kYXRhKCkgbGVuZ3RoOmRhdGEuc2l6ZSgpXTsKKyAg
ICBbbV9hY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVUb2tlbkNhY2hlIHNldE9iamVjdDpuc0RhdGEg
Zm9yS2V5OkAoZnJhbWVJbnQpXTsKK30KKwogaWQgV2ViUHJvY2Vzczo6YWNjZXNzaWJpbGl0eUZv
Y3VzZWRVSUVsZW1lbnQoKQogewogICAgIGF1dG8gcmV0cmlldmVGb2N1c2VkVUlFbGVtZW50RnJv
bU1haW5UaHJlYWQgPSBbXSAoKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAyMWUy
MWYwOGJkNjQuLmI0Y2YyODJjMThjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0y
MjUsNiArMjI1LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgUmVtb3RlQVhPYmplY3RSZWYg
YWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpIGZpbmFsIHsgcmV0dXJuIDA7IH0KKyAgICBXZWJD
b3JlOjpJbnRQb2ludCBhY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKSBmaW5hbCB7IHJl
dHVybiB7IH07IH0KICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQogICAg
IHZvaWQgc2V0QVhJc29sYXRlZFRyZWVSb290KFdlYkNvcmU6OkFYQ29yZU9iamVjdCopIGZpbmFs
IHsgfQogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>469936</attachid>
            <date>2024-02-16 16:15:35 -0800</date>
            <delta_ts>2024-02-17 08:00:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-268804-20240216161534.patch</filename>
            <type>text/plain</type>
            <size>119548</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">RnJvbSA1YTMyNTBhMDFhOTcwNDNmZTYzYmIwZTkzZmJjYTMzNWFhOTY1ODFlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpcyBGbGVpemFjaCA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4K
RGF0ZTogVGh1LCAxNSBGZWIgMjAyNCAxMjo0MDozOCAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIEFY
OiBTdXBwb3J0IHNpdGUgaXNvbGF0aW9uIGZvciBWb2ljZU92ZXIKIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjg4MDQgcmRhcjovLzk5NjY1NTYxCgpSZXZpZXdlZCBi
eSBBbmRyZXMgR29uemFsZXosIFR5bGVyIFdpbGNvY2suCgpJbml0aWFsIHN1cHBvcnQgZm9yIHNp
dGUgaXNvbGF0aW9uIGZvciBWb2ljZU92ZXIuCgpXaGVuIGEgc2Nyb2xsIHZpZXcgaG9zdHMgYSBS
ZW1vdGVGcmFtZSBpdCBiaW5kcyBpdHNlbGYgdG8gdGhlIG90aGVyIHNpZGUgdGhyb3VnaCBhIFdl
YlBhZ2UgbWVzc2FnZS4KVGhpcyB0cmFuc2ZlcnMgZGF0YSB0b2tlbnMgc28gQWNjZXNzaWJpbGl0
eSByZW1vdGUgZWxlbWVudHMgYXJlIGNyZWF0ZWQgYW5kIGhvb2tlZCB1cC4KClRoZSBib3VuZGlu
ZyBib3hlcyBpbnNpZGUgdGhlIHN1YiBmcmFtZXMgbmVlZCB0byBoYXZlIHRoZSBpbml0aWFsIG9m
ZnNldCBhcHBsaWVkIGFuZCB0aGVuIG5lZWQgdG8gYmUgY29udmVydGVkCmVhY2ggc3RlcCB1cCB0
aGUgY2hhaW4gdG8gYWNjb3VudCBmb3Igc2Nyb2xsIG9mZnNldHMgdGhhdCBvbmx5IGVhY2ggcHJv
Y2VzcyBrbm93cyBhYm91dC4KCiogU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQ6CiogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgoqIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhDb3JlT2JqZWN0Lmg6CihXZWJDb3JlOjphY2Nlc3NpYmlsaXR5
Um9sZVRvU3RyaW5nKToKKFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6aXNSZW1vdGVGcmFtZSBjb25z
dCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWExvZ2dlci5jcHA6CihXZWJDb3Jl
OjpzdHJlYW1BWENvcmVPYmplY3QpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhP
YmplY3RDYWNoZS5jcHA6CihXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpjcmVhdGUpOgooV2ViQ29y
ZTo6QVhPYmplY3RDYWNoZTo6b25SZW1vdGVGcmFtZUluaXRpYWxpemVkKToKKiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6cmVsYXRpdmVGcmFtZSBjb25zdCk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpyZW1vdGVGcmFtZU9mZnNldCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWUuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1JlbW90ZUZyYW1lQ2xpZW50LmguCihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVtb3Rl
RnJhbWU6OmNyZWF0ZSk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWU6OkFjY2Vz
c2liaWxpdHlSZW1vdGVGcmFtZSk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWU6
OmVsZW1lbnRSZWN0IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW1vdGVGcmFtZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wYWdlL1Jl
bW90ZUZyYW1lQ2xpZW50LmguCiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmFkZEF0dGFjaG1lbnRDaGlsZHJlbik6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjphZGRDaGlsZHJlbik6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5U2Nyb2xsVmlldy5jcHA6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dzo6ZGV0YWNoUmVtb3RlUGFydHMpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6
OmNsZWFyQ2hpbGRyZW4pOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmFkZFJl
bW90ZUZyYW1lQ2hpbGQpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmFkZENo
aWxkcmVuKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojp3ZWJBcmVhT2JqZWN0
IGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojpkb2N1bWVudCBjb25z
dCk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6cGFyZW50T2JqZWN0IGNvbnN0
KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
Lmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZE9iamVjdC5jcHA6CihXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplUHJvcGVy
dGllcyk6CihXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpzZXRQcm9wZXJ0eSk6CihXZWJDb3Jl
OjpBWElzb2xhdGVkT2JqZWN0OjpyZW1vdGVGcmFtZU9mZnNldCBjb25zdCk6CihXZWJDb3JlOjpB
WElzb2xhdGVkT2JqZWN0OjpyZWxhdGl2ZUZyYW1lIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0Lmg6CiogU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwOgooV2Vi
Q29yZTo6QVhJc29sYXRlZFRyZWU6OnVwZGF0ZU5vZGVQcm9wZXJ0aWVzKToKKiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oOgoqIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL21hYy9BWElzb2xhdGVkT2JqZWN0
TWFjLm1tOgooV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZVBsYXRmb3JtUHJv
cGVydGllcyk6CihXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpyZW1vdGVGcmFtZVBsYXRmb3Jt
RWxlbWVudCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNz
aWJpbGl0eU9iamVjdE1hYy5tbToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6
Z2VuZXJhdGVSZW1vdGVUb2tlbiBjb25zdCk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVtb3Rl
RnJhbWU6OmluaXRpYWxpemVQbGF0Zm9ybUVsZW1lbnRXaXRoUmVtb3RlVG9rZW4pOgooV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eTo6Y3JlYXRlUGxhdGZvcm1Sb2xlTWFwKToKKiBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW06
CihtYWtlTlNBcnJheSk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyIHJvbGVdKToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgaXNFbXB0eUdy
b3VwXSk6CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHJvbGVEZXNjcmlwdGlvbl0p
OgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBfdHJhbnNmb3JtU3BlY2lhbENoaWxk
cmVuQ2FzZXM6XSk6CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpdKToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNj
ZXNzaWJpbGl0eUhpdFRlc3Q6XSk6CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIEFM
TE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORF0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6Zm9yUGFyYW1ldGVyOl0p
OgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5SW5kZXhPZkNo
aWxkOl0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXJy
YXlBdHRyaWJ1dGVDb3VudDpdKToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNj
ZXNzaWJpbGl0eUFycmF5QXR0cmlidXRlVmFsdWVzOmluZGV4Om1heENvdW50Ol0pOgoqIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwOgooV2ViQ29yZTo6RW1wdHlGcmFtZUxv
YWRlckNsaWVudDo6YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KToKKiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oOgoqIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9Mb2NhbEZyYW1lTG9hZGVyQ2xpZW50Lmg6CiogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcDoKKFdlYkNvcmU6OlBhZ2U6OnNob3VsZFVwZGF0ZUFjY2Vzc2liaWxpdHlSZWdpb25zIGNv
bnN0KToKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmNwcDoKKFdlYkNvcmU6OlJl
bW90ZUZyYW1lOjp1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQpOgooV2ViQ29y
ZTo6UmVtb3RlRnJhbWU6OnVuYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMpOgooV2ViQ29y
ZTo6UmVtb3RlRnJhbWU6OmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKToKKiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmg6CiogU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVG
cmFtZUNsaWVudC5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHA6CihXZWJLaXQ6
OlByb3Zpc2lvbmFsUGFnZVByb3h5OjpyZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9r
ZW4pOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5Lmg6Ciog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHA6CihXZWJLaXQ6OldlYkZy
YW1lUHJveHk6OmJpbmRBY2Nlc3NpYmlsaXR5RnJhbWVXaXRoRGF0YSk6CiogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6CihXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3dhcFRvUHJvdmlzaW9uYWxQ
YWdlKToKKFdlYktpdDo6V2ViUGFnZVByb3h5OjpiaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1l
cyk6CihXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5
T2Zmc2V0KToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CiogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CiogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgooV2ViS2l0OjpQYWdlQ2xpZW50SW1w
bDo6YWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKToKKiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgooV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbik6CiogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmg6CiogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tOgooV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6YWNj
ZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgooV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlZ2lz
dGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbik6CiogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYlZpZXdJbXBsLmg6CiogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlZp
ZXdJbXBsLm1tOgooV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0QWNjZXNzaWJpbGl0eVdlYlByb2Nl
c3NUb2tlbik6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkxv
Y2FsRnJhbWVMb2FkZXJDbGllbnQuY3BwOgooV2ViS2l0OjpXZWJMb2NhbEZyYW1lTG9hZGVyQ2xp
ZW50OjphY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQpOgoqIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50Lmg6CiogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90ZUZyYW1lQ2xpZW50
LmNwcDoKKFdlYktpdDo6V2ViUmVtb3RlRnJhbWVDbGllbnQ6OnVuYmluZFJlbW90ZUFjY2Vzc2li
aWxpdHlGcmFtZXMpOgooV2ViS2l0OjpXZWJSZW1vdGVGcmFtZUNsaWVudDo6dXBkYXRlUmVtb3Rl
RnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KToKKFdlYktpdDo6V2ViUmVtb3RlRnJhbWVDbGllbnQ6
OmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKToKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuaDoKKiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW06CihXZWJLaXQ6OldlYlBh
Z2U6OmFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKToKKFdlYktpdDo6V2ViUGFnZTo6
YWNjZXNzaWJpbGl0eU1hbmFnZVJlbW90ZUVsZW1lbnRTdGF0dXMpOgooV2ViS2l0OjpXZWJQYWdl
OjpiaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyk6CiogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW46CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW06CihXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6ZUFj
Y2Vzc2liaWxpdHkpOgooV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybVJlaW5pdGlhbGl6ZSk6CihX
ZWJLaXQ6OldlYlBhZ2U6OmFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCk6CiogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmpl
Y3RCYXNlLmg6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNz
aWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tOgooLVtXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2Jq
ZWN0QmFzZSBheE9iamVjdENhY2hlXSk6CigtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RC
YXNlIHNldFJlbW90ZUZyYW1lT2Zmc2V0Ol0pOgooLVtXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2Jq
ZWN0QmFzZSBhY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXRdKToKKiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKFdlYktpdDo6V2ViUGFnZTo6
cGxhdGZvcm1Jbml0aWFsaXplQWNjZXNzaWJpbGl0eSk6CihXZWJLaXQ6OldlYlBhZ2U6OmNyZWF0
ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCk6CihXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtUmVp
bml0aWFsaXplKToKKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlUmVtb3RlUGFnZUFjY2Vzc2liaWxp
dHlPZmZzZXQpOgooV2ViS2l0OjpXZWJQYWdlOjpyZWdpc3RlclJlbW90ZUZyYW1lQWNjZXNzaWJp
bGl0eVRva2Vucyk6CihXZWJLaXQ6OldlYlBhZ2U6OnJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJp
bGl0eVRva2Vucyk6CihXZWJLaXQ6OldlYlBhZ2U6OmFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9m
ZnNldCk6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgooV2ViS2l0OjpXZWJQcm9jZXNz
OjpiaW5kQWNjZXNzaWJpbGl0eUZyYW1lV2l0aERhdGEpOgoqIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6Ci0tLQogU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIC4uLi9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiB8ICAgNCArCiBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYQ29yZU9iamVjdC5oICAgfCAgMTIgKysKIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhMb2dnZXIuY3BwICAgICB8ICAgMyArCiAuLi4vV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwICAgfCAgMTUgKy0KIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oICB8ICAgMiArCiAuLi4vV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYUmVtb3RlRnJhbWUuY3BwICAgfCAgNDIgKysrKysKIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhSZW1vdGVGcmFtZS5oICB8ICA2MSArKysrKysrKwogLi4uL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgICAgIHwgIDIzICsrLQogLi4uL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oICAgICAgIHwgICA1ICsKIC4uLi9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcCAgICAgICAgICAgICB8ICAgNCArLQogLi4uL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwIHwgIDYyICsrKysrKystCiAuLi4vYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oICAgfCAgIDYgKy0KIC4uLi9hdHNwaS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuY3BwICAgICAgICB8ICAgMSArCiAuLi4vaW9zL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tICAgfCAgIDEgKwogLi4uL2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkT2JqZWN0LmNwcCAgICAgICAgIHwgIDM0ICsrKystCiAuLi4vaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRPYmplY3QuaCAgICAgICAgICAgfCAgIDggKy0KIC4uLi9pc29sYXRlZHRy
ZWUvQVhJc29sYXRlZFRyZWUuY3BwICAgICAgICAgICB8ICA2MSArKystLS0tLQogLi4uL2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oICAgICAgICAgICAgIHwgIDI5ICsrKysKIC4uLi9pc29s
YXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMubW0gICB8ICAgNyArCiAuLi4vbWFjL0Fj
Y2Vzc2liaWxpdHlPYmplY3RNYWMubW0gICAgICAgICAgICAgfCAgMjYgKysrKwogLi4uL21hYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0gIHwgICA5ICstCiAuLi4vbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tICAgfCAxNDMgKysrKysrKysrKysrLS0t
LS0tCiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCAgICAgICAgfCAgIDUg
KwogLi4uL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaCAgIHwgICAxICsK
IC4uLi9XZWJDb3JlL2xvYWRlci9Mb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmggICB8ICAgMSArCiBT
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwICAgICAgICAgICAgICAgICAgfCAgMTUgKy0KIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuY3BwICAgICAgICAgICB8ICAxNSArKwogU291
cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5oICAgICAgICAgICAgIHwgICA0ICsKIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVDbGllbnQuaCAgICAgICB8ICAgNCArCiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggICAgICAgICAgfCAgIDMgKy0KIC4uLi9XZWJL
aXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCB8ICAgMiArLQogLi4uL1dlYktp
dC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaCAgIHwgICAyICstCiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcCAgICAgfCAgIDkgKysKIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaCAgICAgICB8ICAgMiArCiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwICAgICAgfCAgMjQgKystCiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCAgICAgICAgfCAgIDQgKy0KIC4uLi9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiB8ICAgNCArLQogLi4uL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggIHwgICAyICstCiAuLi4vV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gfCAgIDIgKy0KIC4uLi9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gICB8ICAgNyArLQogLi4uL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmggIHwgICAyICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0gfCAgIDQgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XZWJQYWdlUHJveHlNYWMubW0gICB8ICAgNCArLQogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYlZpZXdJbXBsLmggICAgIHwgICAzICstCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV2ViVmlld0ltcGwubW0gICAgfCAgIDggKy0KIC4uLi9XZWJMb2NhbEZyYW1lTG9hZGVy
Q2xpZW50LmNwcCAgICAgICAgICAgICB8ICAgNiArCiAuLi4vV2ViTG9jYWxGcmFtZUxvYWRlckNs
aWVudC5oICAgICAgICAgICAgICAgfCAgIDEgKwogLi4uL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90
ZUZyYW1lQ2xpZW50LmNwcCAgIHwgIDM4ICsrKysrCiAuLi4vV2ViQ29yZVN1cHBvcnQvV2ViUmVt
b3RlRnJhbWVDbGllbnQuaCAgICAgfCAgIDQgKwogLi4uL1dlYlByb2Nlc3MvV2ViUGFnZS9Db2Nv
YS9XZWJQYWdlQ29jb2EubW0gIHwgIDQ2ICsrKysrLQogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAgIHwgIDEwICsrCiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmggICAgfCAgMTEgKy0KIC4uLi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbiAgICB8ICAgMyArCiAuLi4vV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tICAgICAgfCAgMjMgKystCiAuLi4vbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBh
Z2VPYmplY3RCYXNlLmggICAgfCAgIDQgKwogLi4uL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdl
T2JqZWN0QmFzZS5tbSAgIHwgIDI3ICsrKy0KIC4uLi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dl
YlBhZ2VNYWMubW0gICAgICB8ICA0NSArKysrLS0KIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcCAgICAgICB8ICAgNCArCiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oICAgICAgICAgfCAgIDYgKwogLi4uL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4gIHwgICAxICsKIC4uLi9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3ND
b2NvYS5tbSAgICAgICB8ICAxMCArKwogLi4uL21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oIHwgICAxICsKIDYzIGZpbGVzIGNoYW5nZWQsIDc3MiBpbnNlcnRpb25zKCsp
LCAxNTQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWFJlbW90ZUZyYW1lLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhSZW1vdGVGcmFtZS5oCgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAx
ZjU3YjlhYTBhMzQuLmE1MGZlODk0OTNkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTUyNSw2ICs1MjUs
NyBAQCBhY2Nlc3NpYmlsaXR5L0FYR2VvbWV0cnlNYW5hZ2VyLmNwcAogYWNjZXNzaWJpbGl0eS9B
WEltYWdlLmNwcAogYWNjZXNzaWJpbGl0eS9BWExvZ2dlci5jcHAKIGFjY2Vzc2liaWxpdHkvQVhP
YmplY3RDYWNoZS5jcHAKK2FjY2Vzc2liaWxpdHkvQVhSZW1vdGVGcmFtZS5jcHAKIGFjY2Vzc2li
aWxpdHkvQVhUZXh0TWFya2VyLmNwcAogYWNjZXNzaWJpbGl0eS9BWFRleHRSdW4uY3BwCiBhY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyYTdlYzg2ODAwMDIuLjY3
ZGZjMGVkYjQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtODk2MCw2ICs4OTYwLDggQEAKIAkJMjk0ODlGQzUxMkMwMEYwMzAw
RDgzRjBGIC8qIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTI5NDk4NjgxMTk1MzQxOTQwMDcyRDJCRCAvKiBUZXh0VW5kb0luc2VydGlv
bk1hcmt1cE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRl
eHRVbmRvSW5zZXJ0aW9uTWFya3VwTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyOTRCREFFNjIxRkY1ODJBMDA1MTA3N0IgLyogQWNjZXNzaWJpbGl0eU9iamVjdENvY29hLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eU9i
amVjdENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOTU1Q0YxMTJCMjMw
QUU2MDAwMUJGODIgLyogQVhSZW1vdGVGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBWFJlbW90ZUZy
YW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5NTVDRjEyMkIyMzBBRTYwMDAx
QkY4MiAvKiBBWFJlbW90ZUZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFYUmVtb3RlRnJh
bWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTdCRTNEOTE2QzA0M0Q4MDAz
MzE2QkQgLyogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk4MUFCQzQxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vz
c2liaWxpdHlNYXRoTUxFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxp
dHlNYXRoTUxFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk4MUNB
OUQxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjM0NDUsNiArMjM0NDcsOCBAQAogCQkJCUMwNDkzRUI3MjQ0Njk5RTQwMDlB
QUM4MCAvKiBBWExvZ2dlci5oICovLAogCQkJCTI5ODFDQUFGMTMxODIyRUMwMEQxMkYyQSAvKiBB
WE9iamVjdENhY2hlLmNwcCAqLywKIAkJCQkyOUE4MTIxQTBGQkI5QzFEMDA1MTAyOTMgLyogQVhP
YmplY3RDYWNoZS5oICovLAorCQkJCTI5NTVDRjEyMkIyMzBBRTYwMDAxQkY4MiAvKiBBWFJlbW90
ZUZyYW1lLmNwcCAqLywKKwkJCQkyOTU1Q0YxMTJCMjMwQUU2MDAwMUJGODIgLyogQVhSZW1vdGVG
cmFtZS5oICovLAogCQkJCUMwRTIwOEExMjkzNzlDNkYwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXIu
Y3BwICovLAogCQkJCUMwRTIwOEEwMjkzNzlDNkUwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXIuaCAq
LywKIAkJCQk0OEM0RTgzQzJCMzREODM4MDA4MzQ2MEEgLyogQVhUZXh0UnVuLmNwcCAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhDb3JlT2JqZWN0LmggYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYQ29yZU9iamVjdC5oCmluZGV4IDQ0MTA4NGVj
YjgwNS4uM2ZiYzdmOGRiMjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYQ29yZU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhD
b3JlT2JqZWN0LmgKQEAgLTIwNSw2ICsyMDUsNyBAQCBlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlS
b2xlIHsKICAgICBQcm9ncmVzc0luZGljYXRvciwKICAgICBSYWRpb0J1dHRvbiwKICAgICBSYWRp
b0dyb3VwLAorICAgIFJlbW90ZUZyYW1lLAogICAgIFJvd0hlYWRlciwKICAgICBSb3csCiAgICAg
Um93R3JvdXAsCkBAIC00NDIsNiArNDQzLDggQEAgQUxXQVlTX0lOTElORSBTdHJpbmcgYWNjZXNz
aWJpbGl0eVJvbGVUb1N0cmluZyhBY2Nlc3NpYmlsaXR5Um9sZSByb2xlKQogICAgICAgICByZXR1
cm4gIlJhZGlvQnV0dG9uIl9zOwogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvR3Jv
dXA6CiAgICAgICAgIHJldHVybiAiUmFkaW9Hcm91cCJfczsKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpSZW1vdGVGcmFtZToKKyAgICAgICAgcmV0dXJuICJSZW1vdGVGcmFtZSJfczsKICAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSb3dIZWFkZXI6CiAgICAgICAgIHJldHVybiAiUm93
SGVhZGVyIl9zOwogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJvdzoKQEAgLTgxNSw2ICs4
MTgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eUFSSUFHcmlk
Um93SW5zdGFuY2UoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0
eUFSSUFHcmlkQ2VsbEluc3RhbmNlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0FY
SXNvbGF0ZWRPYmplY3RJbnN0YW5jZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNB
WFJlbW90ZUZyYW1lKCkgY29uc3QgPSAwOwogCiAgICAgYm9vbCBpc0hlYWRpbmcoKSBjb25zdCB7
IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6SGVhZGluZzsgfQogICAg
IHZpcnR1YWwgYm9vbCBpc0xpbmsoKSBjb25zdCA9IDA7CkBAIC05MTksNiArOTIzLDEyIEBAIHB1
YmxpYzoKICAgICBib29sIGlzVHJlZUdyaWQoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUdyaWQ7IH0KICAgICBib29sIGlzVHJlZUl0ZW0oKSBj
b25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUl0ZW07
IH0KICAgICBib29sIGlzU2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0g
QWNjZXNzaWJpbGl0eVJvbGU6OlNjcm9sbEJhcjsgfQorICAgIGJvb2wgaXNSZW1vdGVGcmFtZSgp
IGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpSZW1vdGVG
cmFtZTsgfQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZpcnR1YWwgUmV0YWluUHRyPGlkPiBy
ZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpIGNvbnN0ID0gMDsKKyNlbmRpZgorICAgIHZpcnR1
YWwgYm9vbCBoYXNSZW1vdGVGcmFtZUNoaWxkKCkgY29uc3QgPSAwOworCiAgICAgYm9vbCBpc0J1
dHRvbigpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc01ldGVyKCkgY29uc3QgPSAwOwogCkBA
IC0xMTU5LDYgKzExNjksOCBAQCBwdWJsaWM6CiAgICAgLy8gVmlld3BvcnQtcmVsYXRpdmUgbWVh
bnMgdGhhdCB3aGVuIHRoZSBwYWdlIHNjcm9sbHMsIHRoZSBwb3J0aW9uIG9mIHRoZSBwYWdlIGlu
IHRoZSB2aWV3cG9ydCBjaGFuZ2VzLCBhbmQgdGh1cwogICAgIC8vIGFueSB2aWV3cG9ydC1yZWxh
dGl2ZSByZWN0cyBkbyB0b28gKHNpbmNlIHRoZXkgYXJlIGVpdGhlciBjbG9zZXIgdG8gb3IgZmFy
dGhlciBmcm9tIHRoZSB2aWV3cG9ydCBvcmlnaW4gYWZ0ZXIgdGhlIHNjcm9sbCkuCiAgICAgdmly
dHVhbCBGbG9hdFBvaW50IHNjcmVlblJlbGF0aXZlUG9zaXRpb24oKSBjb25zdCA9IDA7CisgICAg
Ly8gVGhpcyBpcyB0aGUgYW1vdW50IHRoYXQgdGhlIFJlbW90ZUZyYW1lIGlzIG9mZnNldCBmcm9t
IGl0cyBjb250YWluaW5nIHBhcmVudC4KKyAgICB2aXJ0dWFsIEludFBvaW50IHJlbW90ZUZyYW1l
T2Zmc2V0KCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBGbG9hdFJlY3QgY29udmVydEZyYW1l
VG9TcGFjZShjb25zdCBGbG9hdFJlY3QmLCBBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlKSBj
b25zdCA9IDA7CiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhMb2dnZXIuY3BwCmluZGV4IGI2ZTMwNmNkZGVjZi4uN2IzNWM4ZjlkMTAxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcApAQCAtODgzLDYgKzg4Myw5IEBA
IHZvaWQgc3RyZWFtQVhDb3JlT2JqZWN0KFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgQVhDb3Jl
T2JqZWN0JiBvYmplY3QsIGNvbnN0IE9wCiAgICAgaWYgKG9wdGlvbnMgJiBBWFN0cmVhbU9wdGlv
bnM6OlJvbGUpCiAgICAgICAgIHN0cmVhbS5kdW1wUHJvcGVydHkoInJvbGUiLCBvYmplY3Qucm9s
ZVZhbHVlKCkpOwogCisgICAgaWYgKG9iamVjdC5yZW5kZXJlcigpKQorICAgICAgICBzdHJlYW0u
ZHVtcFByb3BlcnR5KCJyZW5kZXJOYW1lIiwgb2JqZWN0LnJlbmRlcmVyKCktPnJlbmRlck5hbWUo
KSk7CisKICAgICBpZiAob3B0aW9ucyAmIEFYU3RyZWFtT3B0aW9uczo6UGFyZW50SUQpIHsKICAg
ICAgICAgYXV0byogcGFyZW50ID0gb2JqZWN0LnBhcmVudE9iamVjdFVuaWdub3JlZCgpOwogICAg
ICAgICBzdHJlYW0uZHVtcFByb3BlcnR5KCJwYXJlbnRJRCIsIHBhcmVudCA/IHBhcmVudC0+b2Jq
ZWN0SUQoKSA6IEFYSUQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmNwcAppbmRleCAyODBmYWQ0ZjI3MDEuLjFhYzk1ZjJlYTZjOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW5jbHVkZSAiQVhJc29sYXRlZE9iamVjdC5oIgogI2luY2x1ZGUgIkFYSXNvbGF0
ZWRUcmVlLmgiCiAjaW5jbHVkZSAiQVhMb2dnZXIuaCIKKyNpbmNsdWRlICJBWFJlbW90ZUZyYW1l
LmgiCiAjaW5jbHVkZSAiQVhUZXh0TWFya2VyLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUFS
SUFHcmlkLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oIgpAQCAtMTA1
NCw3ICsxMDU1LDEwIEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmNyZWF0
ZShBY2Nlc3NpYmlsaXR5Um9sZSByb2xlKQogICAgICAgICBicmVhazsgICAgICAgICAgICAKICAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJsZUhlYWRlckNvbnRhaW5lcjoKICAgICAgICAg
b2JqID0gQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyOjpjcmVhdGUoKTsKLSAgICAg
ICAgYnJlYWs7ICAgCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OlJlbW90ZUZyYW1lOgorICAgICAgICBvYmogPSBBWFJlbW90ZUZyYW1lOjpjcmVhdGUoKTsKKyAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyVGh1bWI6CiAg
ICAgICAgIG9iaiA9IEFjY2Vzc2liaWxpdHlTbGlkZXJUaHVtYjo6Y3JlYXRlKCk7CiAgICAgICAg
IGJyZWFrOwpAQCAtMTM1MCw2ICsxMzU0LDE1IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxl
UmVjb21wdXRlQ2VsbFNsb3RzKEFjY2Vzc2liaWxpdHlUYWJsZSYgYXhUYWJsZSkKICNlbmRpZgog
fQogCit2b2lkIEFYT2JqZWN0Q2FjaGU6Om9uUmVtb3RlRnJhbWVJbml0aWFsaXplZChBWFJlbW90
ZUZyYW1lJiByZW1vdGVGcmFtZSkKK3sKKyNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRF
RF9UUkVFKQorICAgIHVwZGF0ZUlzb2xhdGVkVHJlZShyZW1vdGVGcmFtZSwgQVhQcm9wZXJ0eU5h
bWU6OlJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFN
KHJlbW90ZUZyYW1lKTsKKyNlbmRpZgorfQorCiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNP
TEFURURfVFJFRSkKIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlUm93c3BhbkNoYW5nZWQoQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbCYgYXhDZWxsKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCBkMTA0OWNjOWJjMjEuLjM4Yzk4YTQ2ZWE5ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTQ3
LDYgKzQ3LDcgQEAgY2xhc3MgVGV4dFN0cmVhbTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitj
bGFzcyBBWFJlbW90ZUZyYW1lOwogY2xhc3MgQWNjZXNzaWJpbGl0eVRhYmxlOwogY2xhc3MgQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbDsKIGNsYXNzIERvY3VtZW50OwpAQCAtMjQ2LDYgKzI0Nyw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRlZmVyTm9kZUFkZGVkT3JSZW1vdmVkKE5vZGUqKTsKICAgICB2
b2lkIGhhbmRsZVNjcm9sbGVkVG9BbmNob3IoY29uc3QgTm9kZSogYW5jaG9yTm9kZSk7CiAgICAg
dm9pZCBvblNjcm9sbGJhclVwZGF0ZShTY3JvbGxWaWV3Kik7CisgICAgdm9pZCBvblJlbW90ZUZy
YW1lSW5pdGlhbGl6ZWQoQVhSZW1vdGVGcmFtZSYpOwogCiAgICAgYm9vbCBpc1JldHJpZXZpbmdD
dXJyZW50TW9kYWxOb2RlKCkgeyByZXR1cm4gbV9pc1JldHJpZXZpbmdDdXJyZW50TW9kYWxOb2Rl
OyB9CiAgICAgTm9kZSogbW9kYWxOb2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYUmVtb3RlRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWFJlbW90ZUZyYW1lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLmNmYmRlZGQ5ODFjYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhSZW1vdGVGcmFtZS5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBWFJlbW90ZUZyYW1lLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPEFYUmVtb3RlRnJhbWU+IEFYUmVtb3RlRnJhbWU6OmNy
ZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQVhSZW1vdGVGcmFtZSk7Cit9CisK
K0xheW91dFJlY3QgQVhSZW1vdGVGcmFtZTo6ZWxlbWVudFJlY3QoKSBjb25zdAoreworICAgIGF1
dG8qIHBhcmVudCA9IHBhcmVudE9iamVjdCgpOworICAgIHJldHVybiBwYXJlbnQgPyBwYXJlbnQt
PmVsZW1lbnRSZWN0KCkgOiBMYXlvdXRSZWN0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhSZW1vdGVGcmFt
ZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFJlbW90ZUZyYW1lLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45NGQyZGYwMzA0ZDIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYUmVtb3RlRnJhbWUuaApA
QCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDI0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJB
Y2Nlc3NpYmlsaXR5TW9ja09iamVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IFJlbW90ZUZyYW1lOworCitjbGFzcyBBWFJlbW90ZUZyYW1lIGZpbmFsIDogcHVibGljIEFjY2Vz
c2liaWxpdHlNb2NrT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEFYUmVtb3RlRnJh
bWU+IGNyZWF0ZSgpOworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBpbml0aWFsaXpl
UGxhdGZvcm1FbGVtZW50V2l0aFJlbW90ZVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Piwg
aW50KTsKKyAgICBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZ2VuZXJhdGVSZW1vdGVUb2tlbigp
IGNvbnN0OworICAgIFJldGFpblB0cjxpZD4gcmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKSBj
b25zdCB7IHJldHVybiBtX3JlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50OyB9CisgICAgcGlkX3Qg
cHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3NJZGVudGlmaWVyOyB9
CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIH5BWFJlbW90ZUZyYW1lKCkgPSBkZWZh
dWx0OworCisgICAgQWNjZXNzaWJpbGl0eVJvbGUgZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUo
KSB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6UmVtb3RlRnJhbWU7IH0KKyAgICBib29sIGNv
bXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICBib29sIGlzQVhSZW1vdGVGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICBMYXlv
dXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Q7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBS
ZXRhaW5QdHI8aWQ+IG1fcmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQ7CisgICAgcGlkX3QgbV9w
cm9jZXNzSWRlbnRpZmllciB7IDAgfTsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0FDQ0VTU0lCSUxJVFkoQVhSZW1vdGVGcmFt
ZSwgaXNBWFJlbW90ZUZyYW1lKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCAzZTMyZGIwOTNhZmIuLmZkNmY3YzRl
MjU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuY3BwCkBAIC01NDQsNyArNTQ0LDkgQEAgRmxvYXRSZWN0IEFjY2Vzc2liaWxp
dHlPYmplY3Q6OmNvbnZlcnRGcmFtZVRvU3BhY2UoY29uc3QgRmxvYXRSZWN0JiBmcmFtZVJlY3Qs
IEEKICAgICAKIEZsb2F0UmVjdCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZWxhdGl2ZUZyYW1lKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gY29udmVydEZyYW1lVG9TcGFjZShlbGVtZW50UmVjdCgpLCBB
Y2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlOjpQYWdlKTsKKyAgICBhdXRvIHJlY3QgPSBlbGVt
ZW50UmVjdCgpOworICAgIHJlY3QubW92ZUJ5KHJlbW90ZUZyYW1lT2Zmc2V0KCkpOworICAgIHJl
dHVybiBjb252ZXJ0RnJhbWVUb1NwYWNlKHJlY3QsIEFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3Bh
Y2U6OlBhZ2UpOwogfQogCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpuZXh0U2libGluZ1VuaWdub3JlZChpbnQgbGltaXQpIGNvbnN0CkBAIC0yMDg2LDE0ICsyMDg4
LDIzIEBAIGNvbnN0IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KiBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjphbmNlc3RvckFjY2Vzc2liaWxpdHlTY3JvbGxWCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBSZW1v
dGVBWE9iamVjdFJlZiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZW1vdGVQYXJlbnRPYmplY3QoKSBj
b25zdAogewotICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCkpIHsKLSAg
ICAgICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3Qo
KTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0byogZG9jdW1lbnQgPSB0aGlz
LT5kb2N1bWVudCgpOworICAgIGF1dG8qIGZyYW1lID0gZG9jdW1lbnQgPyBkb2N1bWVudC0+ZnJh
bWUoKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIGZyYW1lID8gZnJhbWUtPmxvYWRlcigpLmNsaWVu
dCgpLmFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSA6IG51bGxwdHI7CiB9CiAjZW5kaWYKIAor
SW50UG9pbnQgQWNjZXNzaWJpbGl0eU9iamVjdDo6cmVtb3RlRnJhbWVPZmZzZXQoKSBjb25zdAor
eworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1l
bnQoKTsKKyAgICBhdXRvKiBmcmFtZSA9IGRvY3VtZW50ID8gZG9jdW1lbnQtPmZyYW1lKCkgOiBu
dWxscHRyOworICAgIHJldHVybiBmcmFtZSA/IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5hY2Nl
c3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKSA6IEludFBvaW50KCk7CisjZWxzZQorICAgIHJl
dHVybiBJbnRQb2ludCgpOworI2VuZGlmCit9CisKIERvY3VtZW50KiBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojpkb2N1bWVudCgpIGNvbnN0CiB7CiAgICAgYXV0byogZnJhbWVWaWV3ID0gZG9jdW1lbnRG
cmFtZVZpZXcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmgKaW5kZXggNGQyMGY1NWE1NDRjLi4zNTk1ZDMxZTcxYjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCkBA
IC0xMDIsNiArMTAyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgYm9vbCBpc0FYUmVtb3RlRnJhbWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
SW5zdGFuY2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0Fj
Y2Vzc2liaWxpdHlTVkdSb290KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlz
QWNjZXNzaWJpbGl0eVRhYmxlSW5zdGFuY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQpAQCAtNDYyLDEwICs0NjMsMTQgQEAgcHVibGljOgogICAgIFdpZGdldCogd2lkZ2V0Rm9y
QXR0YWNobWVudFZpZXcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CiAgICAg
Ym9vbCBpc1BsdWdpbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICBJ
bnRQb2ludCByZW1vdGVGcmFtZU9mZnNldCgpIGNvbnN0IG92ZXJyaWRlOwogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIFJlbW90ZUFYT2JqZWN0UmVmIHJlbW90ZVBhcmVudE9iamVjdCgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIEZsb2F0UmVjdCBjb252ZXJ0UmVjdFRvUGxhdGZvcm1TcGFjZShjb25z
dCBGbG9hdFJlY3QmLCBBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBSZXRhaW5QdHI8aWQ+IHJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbmlsOyB9CiAjZW5kaWYKKyAgICBib29sIGhhc1JlbW90ZUZyYW1l
Q2hpbGQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgUGFnZSogcGFn
ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIExvY2FsRnJhbWVWaWV3KiBkb2N1bWVudEZyYW1lVmlldygpIGNvbnN0IG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggZWU4YWJlYzNkN2I1Li4yZjEyZWY3NTNlNGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtMjQxMyw3ICsyNDEzLDcgQEAgdm9pZCBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjphZGRBdHRhY2htZW50Q2hpbGRyZW4oKQogCiAgICAgLy8gTG9j
YWxGcmFtZVZpZXcncyBuZWVkIHRvIGJlIGluc2VydGVkIGludG8gdGhlIEFYIGhpZXJhcmNoeSB3
aGVuIGVuY291bnRlcmVkLgogICAgIFdpZGdldCogd2lkZ2V0ID0gd2lkZ2V0Rm9yQXR0YWNobWVu
dFZpZXcoKTsKLSAgICBpZiAoIXdpZGdldCB8fCAhd2lkZ2V0LT5pc0xvY2FsRnJhbWVWaWV3KCkp
CisgICAgaWYgKCF3aWRnZXQgfHwgISh3aWRnZXQtPmlzTG9jYWxGcmFtZVZpZXcoKSB8fCB3aWRn
ZXQtPmlzUmVtb3RlRnJhbWVWaWV3KCkpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgYWRk
Q2hpbGQoYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZSh3aWRnZXQpKTsKQEAgLTI1NjgsNyAr
MjU2OCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkQ2hpbGRyZW4oKQog
ICAgICAgICBhdXRvIG93bmVycyA9IG9iamVjdC5vd25lcnMoKTsKICAgICAgICAgaWYgKG93bmVy
cy5zaXplKCkgJiYgIW93bmVycy5jb250YWlucyh0aGlzKSkKICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgCisKICAgICAgICAgYWRkQ2hpbGQoJm9iamVjdCk7CiAgICAgfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3LmNwcAppbmRleCAyYmJjMzA4N2I5ZjguLjUyMTIyMmFmNjAwMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5j
cHAKQEAgLTI3LDEwICsyNywxMiBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
LmgiCiAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCisjaW5jbHVkZSAiQVhSZW1vdGVGcmFt
ZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaCIKICNpbmNsdWRlICJIVE1M
RnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJMb2NhbEZyYW1lLmgiCiAjaW5jbHVkZSAi
TG9jYWxGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJSZW1vdGVGcmFtZVZpZXcuaCIKICNpbmNsdWRl
ICJSZW5kZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiV2lkZ2V0LmgiCiAKQEAgLTUyLDYgKzU0LDE2
IEBAIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojp+QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoKQog
dm9pZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6ZGV0YWNoUmVtb3RlUGFydHMoQWNjZXNzaWJp
bGl0eURldGFjaG1lbnRUeXBlIGRldGFjaG1lbnRUeXBlKQogewogICAgIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OmRldGFjaFJlbW90ZVBhcnRzKGRldGFjaG1lbnRUeXBlKTsKKworICAgIGF1dG8qIHJl
bW90ZUZyYW1lVmlldyA9IGR5bmFtaWNEb3duY2FzdDxSZW1vdGVGcmFtZVZpZXc+KG1fc2Nyb2xs
Vmlldy5nZXQoKSk7CisgICAgaWYgKHJlbW90ZUZyYW1lVmlldyAmJiBtX3JlbW90ZUZyYW1lICYm
IChkZXRhY2htZW50VHlwZSA9PSBBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGU6OkVsZW1lbnRE
ZXN0cm95ZWQgfHwgZGV0YWNobWVudFR5cGUgPT0gQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBl
OjpDYWNoZURlc3Ryb3llZCkpIHsKKyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIGF1dG8mIHJl
bW90ZUZyYW1lID0gcmVtb3RlRnJhbWVWaWV3LT5mcmFtZSgpOworICAgICAgICByZW1vdGVGcmFt
ZS51bmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKG1fcmVtb3RlRnJhbWUtPnByb2Nlc3NJ
ZGVudGlmaWVyKCkpOworI2VuZGlmCisgICAgICAgIG1fcmVtb3RlRnJhbWUgPSBudWxscHRyOwor
ICAgIH0KKwogICAgIG1fc2Nyb2xsVmlldyA9IG51bGxwdHI7CiAgICAgbV9mcmFtZU93bmVyRWxl
bWVudCA9IG51bGxwdHI7CiB9CkBAIC0xNzcsOCArMTg5LDEwIEBAIEFjY2Vzc2liaWxpdHlTY3Jv
bGxiYXIqIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjphZGRDaGlsZFNjcm9sbGJhcihTY3JvbGxi
YXIqIHNjCiB2b2lkIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpjbGVhckNoaWxkcmVuKCkKIHsK
ICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjbGVhckNoaWxkcmVuKCk7CisKICAgICBtX3ZlcnRp
Y2FsU2Nyb2xsYmFyID0gbnVsbHB0cjsKICAgICBtX2hvcml6b250YWxTY3JvbGxiYXIgPSBudWxs
cHRyOworCiAgICAgbV9jaGlsZHJlbkRpcnR5ID0gZmFsc2U7CiB9CiAKQEAgLTE5MSwxMSArMjA1
LDQ1IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5
SXNJZ25vcmVkKCkgY29uc3QKICAgICByZXR1cm4gd2ViQXJlYS0+YWNjZXNzaWJpbGl0eUlzSWdu
b3JlZCgpOwogfQogCit2b2lkIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjphZGRSZW1vdGVGcmFt
ZUNoaWxkKCkKK3sKKyAgICBhdXRvKiByZW1vdGVGcmFtZVZpZXcgPSBkeW5hbWljRG93bmNhc3Q8
UmVtb3RlRnJhbWVWaWV3PihtX3Njcm9sbFZpZXcuZ2V0KCkpOworICAgIGlmICghcmVtb3RlRnJh
bWVWaWV3KQorICAgICAgICByZXR1cm47CisKKyAgICBXZWFrUHRyIGNhY2hlID0gYXhPYmplY3RD
YWNoZSgpOworICAgIGlmICghY2FjaGUpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9y
ZW1vdGVGcmFtZSkgeworICAgICAgICAvLyBNYWtlIHRoZSBmYXV4IGVsZW1lbnQgdGhhdCByZXBy
ZXNlbnRzIHRoZSByZW1vdGUgdHJhbnNmZXIgZWxlbWVudCBmb3IgQVguCisgICAgICAgIG1fcmVt
b3RlRnJhbWUgPSBkb3duY2FzdDxBWFJlbW90ZUZyYW1lPihjYWNoZS0+Y3JlYXRlKEFjY2Vzc2li
aWxpdHlSb2xlOjpSZW1vdGVGcmFtZSkpOworICAgICAgICBtX3JlbW90ZUZyYW1lLT5zZXRQYXJl
bnQodGhpcyk7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIC8vIEdlbmVyYXRlIGEgbmV3
IHRva2VuIGFuZCBwYXNzIGl0IGJhY2sgdG8gdGhlIG90aGVyIHJlbW90ZSBmcmFtZSBzbyBpdCBj
YW4gYmluZCB0aGVzZSBvYmplY3RzIHRvZ2V0aGVyLgorICAgICAgICBhdXRvIGdlbmVyYXRlZFRv
a2VuID0gbV9yZW1vdGVGcmFtZS0+Z2VuZXJhdGVSZW1vdGVUb2tlbigpOworICAgICAgICBhdXRv
JiByZW1vdGVGcmFtZSA9IHJlbW90ZUZyYW1lVmlldy0+ZnJhbWUoKTsKKyAgICAgICAgcmVtb3Rl
RnJhbWUuYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoZ2V0cGlkKCksIGdlbmVyYXRlZFRv
a2VuLCBbdGhpcywgJnJlbW90ZUZyYW1lLCBwcm90ZWN0ZWRBY2Nlc3NiaWxpdHlSZW1vdGVGcmFt
ZSA9IFJlZlB0ciB7IG1fcmVtb3RlRnJhbWUgfV0gKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiB0
b2tlbiwgaW50IHByb2Nlc3NJZGVudGlmaWVyKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHByb3Rl
Y3RlZEFjY2Vzc2JpbGl0eVJlbW90ZUZyYW1lLT5pbml0aWFsaXplUGxhdGZvcm1FbGVtZW50V2l0
aFJlbW90ZVRva2VuKHRva2VuLCBwcm9jZXNzSWRlbnRpZmllcik7CisKKyAgICAgICAgICAgIC8v
IFVwZGF0ZSB0aGUgcmVtb3RlIHNpZGUgd2l0aCB0aGUgb2Zmc2V0IG9mIHRoaXMgb2JqZWN0IHNv
IGl0IGNhbiBjYWxjdWxhdGUgZnJhbWVzIGNvcnJlY3RseS4KKyAgICAgICAgICAgIGF1dG8gbG9j
YXRpb24gPSBlbGVtZW50UmVjdCgpLmxvY2F0aW9uKCk7CisgICAgICAgICAgICByZW1vdGVGcmFt
ZS51cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQoZmxvb3JlZEludFBvaW50KGxv
Y2F0aW9uKSk7CisgICAgICAgIH0pOworI2VuZGlmCisgICAgfSBlbHNlCisgICAgICAgIG1fcmVt
b3RlRnJhbWUtPnNldFBhcmVudCh0aGlzKTsKKworICAgIGFkZENoaWxkKG1fcmVtb3RlRnJhbWUu
Z2V0KCkpOworfQorCiB2b2lkIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjphZGRDaGlsZHJlbigp
CiB7CiAgICAgQVNTRVJUKCFtX2NoaWxkcmVuSW5pdGlhbGl6ZWQpOwogICAgIG1fY2hpbGRyZW5J
bml0aWFsaXplZCA9IHRydWU7CiAKKyAgICBhZGRSZW1vdGVGcmFtZUNoaWxkKCk7CiAgICAgYWRk
Q2hpbGQod2ViQXJlYU9iamVjdCgpKTsKICAgICB1cGRhdGVTY3JvbGxiYXJzKCk7CiB9CkBAIC0y
MDMsNyArMjUxLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkQ2hpbGRyZW4o
KQogQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OndlYkFyZWFP
YmplY3QoKSBjb25zdAogewogICAgIGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsK
LSAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+aGFzTGl2aW5nUmVuZGVyVHJlZSgpKQor
ICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5oYXNMaXZpbmdSZW5kZXJUcmVlKCkgfHwg
bV9yZW1vdGVGcmFtZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoYXV0byog
Y2FjaGUgPSBheE9iamVjdENhY2hlKCkpCkBAIC0yMzQsOSArMjgyLDE1IEBAIExheW91dFJlY3Qg
QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmVsZW1lbnRSZWN0KCkgY29uc3QKIAogRG9jdW1lbnQq
IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojpkb2N1bWVudCgpIGNvbnN0CiB7Ci0gICAgaWYgKGF1
dG8qIGZyYW1lVmlldyA9IGR5bmFtaWNEb3duY2FzdDxMb2NhbEZyYW1lVmlldz4obV9zY3JvbGxW
aWV3LmdldCgpKSkgeworICAgIGlmIChhdXRvKiBmcmFtZVZpZXcgPSBkeW5hbWljRG93bmNhc3Q8
TG9jYWxGcmFtZVZpZXc+KG1fc2Nyb2xsVmlldy5nZXQoKSkpCiAgICAgICAgIHJldHVybiBmcmFt
ZVZpZXctPmZyYW1lKCkuZG9jdW1lbnQoKTsKKworICAgIC8vIEZvciB0aGUgUmVtb3RlRnJhbWVW
aWV3IGNhc2UsIHdlIG5lZWQgdG8gcmV0dXJuIHRoZSBkb2N1bWVudCBvZiBvdXIgaG9zdGluZyBw
YXJlbnQgc28gYXhPYmplY3RDYWNoZSgpIHJlc29sdmVzIGNvcnJlY3RseS4KKyAgICBpZiAoYXV0
byogcmVtb3RlRnJhbWVWaWV3ID0gZHluYW1pY0Rvd25jYXN0PFJlbW90ZUZyYW1lVmlldz4obV9z
Y3JvbGxWaWV3LmdldCgpKSkgeworICAgICAgICBpZiAoYXV0byogb3duZXIgPSByZW1vdGVGcmFt
ZVZpZXctPmZyYW1lKCkub3duZXJFbGVtZW50KCkpCisgICAgICAgICAgICByZXR1cm4gJihvd25l
ci0+ZG9jdW1lbnQoKSk7CiAgICAgfQorCiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3Q6
OmRvY3VtZW50KCk7CiB9CiAKQEAgLTI1OSw4ICszMTMsMTAgQEAgQWNjZXNzaWJpbGl0eU9iamVj
dCogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OnBhcmVudE9iamVjdCgpIGNvbnN0CiAgICAgV2Vh
a1B0ciBvd25lciA9IG1fZnJhbWVPd25lckVsZW1lbnQuZ2V0KCk7CiAgICAgaWYgKGF1dG8qIGxv
Y2FsRnJhbWVWaWV3ID0gZHluYW1pY0Rvd25jYXN0PExvY2FsRnJhbWVWaWV3PihtX3Njcm9sbFZp
ZXcuZ2V0KCkpKQogICAgICAgICBvd25lciA9IGxvY2FsRnJhbWVWaWV3LT5mcmFtZSgpLm93bmVy
RWxlbWVudCgpOworICAgIGVsc2UgaWYgKGF1dG8qIHJlbW90ZUZyYW1lVmlldyA9IGR5bmFtaWNE
b3duY2FzdDxSZW1vdGVGcmFtZVZpZXc+KG1fc2Nyb2xsVmlldy5nZXQoKSkpCisgICAgICAgIG93
bmVyID0gcmVtb3RlRnJhbWVWaWV3LT5mcmFtZSgpLm93bmVyRWxlbWVudCgpOwogCi0gICAgaWYg
KGNhY2hlICYmIG93bmVyICYmIG93bmVyLT5yZW5kZXJlcigpKQorICAgIGlmIChvd25lciAmJiBv
d25lci0+cmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIGNhY2hlLT5nZXRPckNyZWF0ZShvd25l
ci5nZXQoKSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmggYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgKaW5kZXggNTU3MDQ0
NjcxYzdkLi41MjVhYzc4M2ZiYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgKQEAgLTMwLDYgKzMwLDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAorY2xhc3MgQVhSZW1vdGVGcmFtZTsKIGNsYXNzIEFj
Y2Vzc2liaWxpdHlTY3JvbGxiYXI7CiBjbGFzcyBTY3JvbGxiYXI7CiBjbGFzcyBTY3JvbGxWaWV3
OwpAQCAtNTQsNyArNTUsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzQWNjZXNzaWJpbGl0eVNj
cm9sbFZpZXdJbnN0YW5jZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICBi
b29sIGlzRW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICAKKyAg
ICBib29sIGhhc1JlbW90ZUZyYW1lQ2hpbGQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3JlbW90
ZUZyYW1lOyB9CisKICAgICBib29sIGlzQXR0YWNobWVudCgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IFBsYXRmb3JtV2lkZ2V0IHBsYXRmb3JtV2lkZ2V0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgV2lk
Z2V0KiB3aWRnZXRGb3JBdHRhY2htZW50VmlldygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGN1
cnJlbnRTY3JvbGxWaWV3KCk7IH0KQEAgLTY5LDYgKzcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHNldEZvY3VzZWQoYm9vbCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBjYW5TZXRGb2N1c0F0dHJpYnV0
ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNGb2N1c2VkKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgdm9pZCBhZGRSZW1vdGVGcmFtZUNoaWxkKCk7CiAKICAgICBEb2N1bWVudCogZG9jdW1l
bnQoKSBjb25zdCBvdmVycmlkZTsKICAgICBMb2NhbEZyYW1lVmlldyogZG9jdW1lbnRGcmFtZVZp
ZXcoKSBjb25zdCBvdmVycmlkZTsKQEAgLTg1LDYgKzg4LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQ
dHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gbV9ob3Jpem9udGFsU2Nyb2xsYmFyOwogICAgIFJlZlB0
cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBtX3ZlcnRpY2FsU2Nyb2xsYmFyOwogICAgIGJvb2wgbV9j
aGlsZHJlbkRpcnR5OworICAgIFJlZlB0cjxBWFJlbW90ZUZyYW1lPiBtX3JlbW90ZUZyYW1lOwog
fTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3Bp
LmNwcAppbmRleCA1ZGU5NzBmMWY3MGQuLjUxODdiMmZhMzU2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9i
amVjdEF0c3BpLmNwcApAQCAtMzcwLDYgKzM3MCw3IEBAIHN0YXRpYyBBdHNwaTo6Um9sZSBhdHNw
aVJvbGUoQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSkKICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpTdW1tYXJ5OgogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYmxlSGVhZGVyQ29udGFp
bmVyOgogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlN1Z2dlc3Rpb246CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6UmVtb3RlRnJhbWU6CiAgICAgICAgIHJldHVybiBBdHNwaTo6Um9s
ZTo6VW5rbm93bjsKICAgICAvLyBBZGQgbW9zdCBuZXcgcm9sZXMgYWJvdmUuIFRoZSByZWxlYXNl
IGFzc2VydCBpcyBmb3Igcm9sZXMgdGhhdCBhcmUgaGFuZGxlZCBzcGVjaWFsbHkuCiAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdE1hcmtlcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1t
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJJT1MubW0KaW5kZXggMmYyOWI3MmZmZTdlLi45MjQzYWQ2YmQzNDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC0xMTEyLDYgKzExMTIsNyBAQCBz
dGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgKmFuY2VzdG9yV2l0aFJvbGUoY29uc3Qg
QVhDb3JlT2JqZWN0JiBkZXNjZW5kYQogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Oklnbm9y
ZWQ6CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGluZUJyZWFrOgogICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6OlByZXNlbnRhdGlvbmFsOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OlJlbW90ZUZyYW1lOgogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd246CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCmlu
ZGV4IDEwMTQ1NDYyNzhmMy4uMzQyZDRjNzJlNjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0
LmNwcApAQCAtMzc4LDYgKzM3OCwxMCBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxp
emVQcm9wZXJ0aWVzKGNvbnN0IFJlZjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiYgYXhPYgogI2VuZGlm
CiAKICAgICBzZXRPYmplY3RQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SW50ZXJuYWxMaW5rRWxl
bWVudCwgb2JqZWN0LmludGVybmFsTGlua0VsZW1lbnQoKSk7CisgICAgc2V0UHJvcGVydHkoQVhQ
cm9wZXJ0eU5hbWU6Okhhc1JlbW90ZUZyYW1lQ2hpbGQsIG9iamVjdC5oYXNSZW1vdGVGcmFtZUNo
aWxkKCkpOworICAgIC8vIERvbid0IGR1cGxpY2F0ZSB0aGUgcmVtb3RlRnJhbWVPZmZzZXQgZm9y
IGV2ZXJ5IG9iamVjdC4gSnVzdCBzdG9yZSBpbiB0aGUgV2ViQXJlYS4KKyAgICBpZiAob2JqZWN0
LmlzV2ViQXJlYSgpKQorICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6UmVtb3Rl
RnJhbWVPZmZzZXQsIG9iamVjdC5yZW1vdGVGcmFtZU9mZnNldCgpKTsKIAogICAgIGluaXRpYWxp
emVQbGF0Zm9ybVByb3BlcnRpZXMoYXhPYmplY3QpOwogfQpAQCAtNDY0LDYgKzQ2OCw3IEBAIHZv
aWQgQVhJc29sYXRlZE9iamVjdDo6c2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBBWFByb3BlcnR5VmFsdWVWCiAgICAgICAgIFtdKE9wdGlvblNldDxBWEFuY2VzdG9yRmxh
Zz4mIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWUuaXNFbXB0eSgpOyB9LAogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgICAgICBbXShSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiYg
dHlwZWRWYWx1ZSkgeyByZXR1cm4gIXR5cGVkVmFsdWU7IH0sCisgICAgICAgIFtdKFJldGFpblB0
cjxpZD4mIHR5cGVkVmFsdWUpIHsgcmV0dXJuICF0eXBlZFZhbHVlOyB9LAogI2VuZGlmCiAgICAg
ICAgIFtdKEluc2lkZUxpbmsmIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWUgPT0gSW5z
aWRlTGluaygpOyB9LAogICAgICAgICBbXShWZWN0b3I8VmVjdG9yPEFYSUQ+PiYgdHlwZWRWYWx1
ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZS5pc0VtcHR5KCk7IH0sCkBAIC0xMjA2LDYgKzEyMTEsMjEg
QEAgTGF5b3V0UmVjdCBBWElzb2xhdGVkT2JqZWN0OjplbGVtZW50UmVjdCgpIGNvbnN0CiAgICAg
fSk7CiB9CiAKK0ludFBvaW50IEFYSXNvbGF0ZWRPYmplY3Q6OnJlbW90ZUZyYW1lT2Zmc2V0KCkg
Y29uc3QKK3sKKyAgICBhdXRvKiB3ZWJBcmVhID0gQWNjZXNzaWJpbGl0eTo6ZmluZEFuY2VzdG9y
PEFYSXNvbGF0ZWRPYmplY3Q+KCp0aGlzLCB0cnVlLCBbXSAoY29uc3QgYXV0byYgb2JqZWN0KSB7
CisgICAgICAgIHJldHVybiBvYmplY3QuaXNXZWJBcmVhKCk7CisgICAgfSk7CisKKyAgICBpZiAo
IXdlYkFyZWEpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBpZiAoYXV0byBwb2ludCA9IHdl
YkFyZWEtPm9wdGlvbmFsQXR0cmlidXRlVmFsdWU8SW50UG9pbnQ+KEFYUHJvcGVydHlOYW1lOjpS
ZW1vdGVGcmFtZU9mZnNldCkpCisgICAgICAgIHJldHVybiAqcG9pbnQ7CisKKyAgICByZXR1cm4g
eyB9OworfQorCiBGbG9hdFBvaW50IEFYSXNvbGF0ZWRPYmplY3Q6OnNjcmVlblJlbGF0aXZlUG9z
aXRpb24oKSBjb25zdAogewogICAgIGlmIChhdXRvIHBvaW50ID0gb3B0aW9uYWxBdHRyaWJ1dGVW
YWx1ZTxGbG9hdFBvaW50PihBWFByb3BlcnR5TmFtZTo6U2NyZWVuUmVsYXRpdmVQb3NpdGlvbikp
CkBAIC0xMjI5LDIyICsxMjQ5LDIzIEBAIEZsb2F0UG9pbnQgQVhJc29sYXRlZE9iamVjdDo6c2Ny
ZWVuUmVsYXRpdmVQb3NpdGlvbigpIGNvbnN0CiAKIEZsb2F0UmVjdCBBWElzb2xhdGVkT2JqZWN0
OjpyZWxhdGl2ZUZyYW1lKCkgY29uc3QKIHsKKyAgICBGbG9hdFJlY3QgcmVsYXRpdmVGcmFtZTsK
KwogICAgIGlmIChhdXRvIGNhY2hlZFJlbGF0aXZlRnJhbWUgPSBvcHRpb25hbEF0dHJpYnV0ZVZh
bHVlPEludFJlY3Q+KEFYUHJvcGVydHlOYW1lOjpSZWxhdGl2ZUZyYW1lKSkgewogICAgICAgICAv
LyBXZSBzaG91bGQgbm90IGhhdmUgY2FjaGVkIGEgcmVsYXRpdmUgZnJhbWUgZm9yIGVsZW1lbnRz
IHRoYXQgZ2V0IHRoZWlyIGdlb21ldHJ5IGZyb20gdGhlaXIgY2hpbGRyZW4uCiAgICAgICAgIEFT
U0VSVCghbV9nZXRzR2VvbWV0cnlGcm9tQ2hpbGRyZW4pOwotICAgICAgICByZXR1cm4gKmNhY2hl
ZFJlbGF0aXZlRnJhbWU7Ci0gICAgfQotCi0gICAgaWYgKG1fZ2V0c0dlb21ldHJ5RnJvbUNoaWxk
cmVuKSB7CisgICAgICAgIHJlbGF0aXZlRnJhbWUgPSAqY2FjaGVkUmVsYXRpdmVGcmFtZTsKKyAg
ICB9IGVsc2UgaWYgKG1fZ2V0c0dlb21ldHJ5RnJvbUNoaWxkcmVuKSB7CiAgICAgICAgIGF1dG8g
ZnJhbWUgPSBlbmNsb3NpbmdJbnRSZWN0KHJlbGF0aXZlRnJhbWVGcm9tQ2hpbGRyZW4oKSk7CiAg
ICAgICAgIGlmICghZnJhbWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIGZyYW1lOwor
ICAgICAgICAgICAgcmVsYXRpdmVGcmFtZSA9IGZyYW1lOwogICAgICAgICAvLyBFaXRoZXIgd2Ug
aGFkIG5vIGNoaWxkcmVuLCBvciBvdXIgY2hpbGRyZW4gaGFkIGVtcHR5IGZyYW1lcy4gVGhlIHJp
Z2h0IHRoaW5nIHRvIGRvIHdvdWxkIGJlIHRvIHJldHVybgogICAgICAgICAvLyBhIHJlY3QgYXQg
dGhlIHBvc2l0aW9uIG9mIHRoZSBuZWFyZXN0IHJlbmRlciB0cmVlIGFuY2VzdG9yIHdpdGggc29t
ZSBtYWRlLXVwIHNpemUgKEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojpib3VuZGluZ0JveFJlY3Qg
ZG9lcyB0aGlzKS4KICAgICAgICAgLy8gSG93ZXZlciwgd2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8g
dGhlIHJlbmRlciB0cmVlIGluIHRoaXMgY29udGV4dCAob25seSB0aGUgQVggaXNvbGF0ZWQgdHJl
ZSwgd2hpY2ggaXMgdG9vIHNwYXJzZSBmb3IgdGhpcyBwdXJwb3NlKSwgc28KICAgICAgICAgLy8g
dW50aWwgd2UgY2FjaGUgdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBsZXQncyBnbyB0byB0aGUg
bWFpbi10aHJlYWQuCiAgICAgfSBlbHNlIGlmIChyb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5
Um9sZTo6Q29sdW1uIHx8IHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJsZUhl
YWRlckNvbnRhaW5lcikKLSAgICAgICAgcmV0dXJuIGV4cG9zZWRUYWJsZUFuY2VzdG9yKCkgPyBy
ZWxhdGl2ZUZyYW1lRnJvbUNoaWxkcmVuKCkgOiBGbG9hdFJlY3QoKTsKKyAgICAgICAgcmVsYXRp
dmVGcmFtZSA9IGV4cG9zZWRUYWJsZUFuY2VzdG9yKCkgPyByZWxhdGl2ZUZyYW1lRnJvbUNoaWxk
cmVuKCkgOiBGbG9hdFJlY3QoKTsKKwogCiAgICAgLy8gTW9jayBvYmplY3RzIGFuZCBTVkcgb2Jq
ZWN0cyBuZWVkIHVzZSB0aGUgbWFpbiB0aHJlYWQgc2luY2UgdGhleSBkbyBub3QgaGF2ZSByZW5k
ZXIgbm9kZXMgYW5kIGFyZSBub3QgcGFpbnRlZCB3aXRoIGxheWVycywgcmVzcGVjdGl2ZWx5Lgog
ICAgIC8vIEZJWE1FOiBSZW1vdmUgaXNOb25MYXllclNWR09iamVjdCB3aGVuIExCU0UgaXMgZW5h
YmxlZCAmIFNWRyBmcmFtZXMgYXJlIGNhY2hlZC4KQEAgLTEyNjYsNiArMTI4Nyw3IEBAIEZsb2F0
UmVjdCBBWElzb2xhdGVkT2JqZWN0OjpyZWxhdGl2ZUZyYW1lKCkgY29uc3QKICAgICBpZiAoYW5j
ZXN0b3IgJiYgZnJhbWVSZWN0LmxvY2F0aW9uKCkgPT0gRmxvYXRQb2ludCgpKQogICAgICAgICBm
cmFtZVJlY3Quc2V0TG9jYXRpb24oYW5jZXN0b3ItPnJlbGF0aXZlRnJhbWUoKS5sb2NhdGlvbigp
KTsKIAorICAgIGZyYW1lUmVjdC5tb3ZlQnkoeyByZW1vdGVGcmFtZU9mZnNldCgpIH0pOwogICAg
IHJldHVybiBmcmFtZVJlY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaAppbmRleCBkMmE2
NmMyZjUzZTQuLmRlODI3ZDVmZTAxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaApAQCAtMjgs
NiArMjgsNyBAQAogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAKICNp
bmNsdWRlICJBWENvcmVPYmplY3QuaCIKKyNpbmNsdWRlICJBWElzb2xhdGVkVHJlZS5oIgogI2lu
Y2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1ZGUg
IkxheW91dFJlY3QuaCIKQEAgLTIxNSw2ICsyMTYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNG
aWxlVXBsb2FkQnV0dG9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVl
KEFYUHJvcGVydHlOYW1lOjpJc0ZpbGVVcGxvYWRCdXR0b24pOyB9CiAgICAgYm9vbCBpc01ldGVy
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1l
OjpJc01ldGVyKTsgfTsKICAgICBGbG9hdFBvaW50IHNjcmVlblJlbGF0aXZlUG9zaXRpb24oKSBj
b25zdCBmaW5hbDsKKyAgICBJbnRQb2ludCByZW1vdGVGcmFtZU9mZnNldCgpIGNvbnN0IGZpbmFs
OwogICAgIEZsb2F0UmVjdCByZWxhdGl2ZUZyYW1lKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBo
YXNDYWNoZWRSZWxhdGl2ZUZyYW1lKCkgY29uc3QgeyByZXR1cm4gb3B0aW9uYWxBdHRyaWJ1dGVW
YWx1ZTxJbnRSZWN0PihBWFByb3BlcnR5TmFtZTo6UmVsYXRpdmVGcmFtZSkuaGFzX3ZhbHVlKCk7
IH0KICNpZiBQTEFURk9STShNQUMpCkBAIC0yNjMsNyArMjY1LDcgQEAgcHJpdmF0ZToKICAgICBB
WElzb2xhdGVkT2JqZWN0KiBhY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNv
bnN0IGZpbmFsOwogICAgIEFYSXNvbGF0ZWRPYmplY3QqIGZvY3VzZWRVSUVsZW1lbnQoKSBjb25z
dCBmaW5hbDsKICAgICBBWENvcmVPYmplY3QqIGludGVybmFsTGlua0VsZW1lbnQoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBvYmplY3RBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SW50ZXJu
YWxMaW5rRWxlbWVudCk7IH0KLSAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgcmFkaW9C
dXR0b25Hcm91cCgpIGNvbnN0IHsgcmV0dXJuIHRyZWUoKS0+b2JqZWN0c0ZvcklEcyh2ZWN0b3JB
dHRyaWJ1dGVWYWx1ZTxBWElEPihBWFByb3BlcnR5TmFtZTo6UmFkaW9CdXR0b25Hcm91cCkpOyB9
CisgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHJhZGlvQnV0dG9uR3JvdXAoKSBjb25z
dCBmaW5hbCB7IHJldHVybiB0cmVlKCktPm9iamVjdHNGb3JJRHModmVjdG9yQXR0cmlidXRlVmFs
dWU8QVhJRD4oQVhQcm9wZXJ0eU5hbWU6OlJhZGlvQnV0dG9uR3JvdXApKTsgfQogICAgIEFYSXNv
bGF0ZWRPYmplY3QqIHNjcm9sbEJhcihBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24pIGZpbmFsOwog
ICAgIGNvbnN0IFN0cmluZyBwbGFjZWhvbGRlclZhbHVlKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
c3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlBsYWNlaG9sZGVyVmFsdWUpOyB9
CiAgICAgU3RyaW5nIGV4cGFuZGVkVGV4dFZhbHVlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3Ry
aW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkV4cGFuZGVkVGV4dFZhbHVlKTsgfQpA
QCAtNDU2LDcgKzQ1OCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlBUklB
R3JpZEluc3RhbmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlz
QWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93SW5zdGFuY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBm
YWxzZTsgfQogICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsSW5zdGFuY2UoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQotCisgICAgYm9vbCBpc0FYUmVtb3RlRnJhbWUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNOYXRpdmVUZXh0Q29u
dHJvbCgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaXNMaXN0Qm94T3B0aW9uKCkgY29uc3QgZmlu
YWw7CiAgICAgYm9vbCBpc01vY2tPYmplY3QoKSBjb25zdCBmaW5hbDsKQEAgLTUzNyw3ICs1Mzks
OSBAQCBwcml2YXRlOgogICAgIFN0cmluZyBuYW1lQXR0cmlidXRlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Ok5hbWVBdHRyaWJ1dGUp
OyB9CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgYm9vbCBoYXNBcHBsZVBERkFubm90YXRpb25B
dHRyaWJ1dGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9w
ZXJ0eU5hbWU6Okhhc0FwcGxlUERGQW5ub3RhdGlvbkF0dHJpYnV0ZSk7IH0KKyAgICBSZXRhaW5Q
dHI8aWQ+IHJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkgY29uc3QgZmluYWw7CiAjZW5kaWYK
KyAgICBib29sIGhhc1JlbW90ZUZyYW1lQ2hpbGQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBib29s
QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Okhhc1JlbW90ZUZyYW1lQ2hpbGQpOyB9CiAK
ICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAgVmVjdG9y
PFJldGFpblB0cjxpZD4+IG1vZGVsRWxlbWVudENoaWxkcmVuKCkgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJl
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xh
dGVkVHJlZS5jcHAKaW5kZXggNjk2NjU4NDQ4ZjY1Li4zYWNjMTk5OGIxYmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkVHJlZS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkFYSXNvbGF0ZWRP
YmplY3QuaCIKICNpbmNsdWRlICJBWExvZ2dlci5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlU
YWJsZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZVJvdy5oIgogI2luY2x1ZGUgIkZy
YW1lU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAiTG9jYWxGcmFtZVZpZXcuaCIKQEAgLTIyNSw0NiAr
MjI2LDI2IEBAIFJlZlB0cjxBWElzb2xhdGVkT2JqZWN0PiBBWElzb2xhdGVkVHJlZTo6b2JqZWN0
Rm9ySUQoY29uc3QgQVhJRCBheElEKSBjb25zdAogICAgIHJldHVybiBheElELmlzVmFsaWQoKSA/
IG1fcmVhZGVyVGhyZWFkTm9kZU1hcC5nZXQoYXhJRCkgOiBudWxscHRyOwogfQogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBVPgotVmVjdG9yPFJlZlB0cjxBWENvcmVPYmplY3Q+PiBBWElzb2xhdGVkVHJl
ZTo6b2JqZWN0c0ZvcklEcyhjb25zdCBVJiBheElEcykKK1JlZlB0cjxBWElzb2xhdGVkT2JqZWN0
PiBBWElzb2xhdGVkVHJlZTo6cmV0cmlldmVPYmplY3RGb3JJREZyb21NYWluVGhyZWFkKGNvbnN0
IEFYSUQgYXhJRCkgY29uc3QKIHsKLSAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLQotICAg
IFZlY3RvcjxSZWZQdHI8QVhDb3JlT2JqZWN0Pj4gcmVzdWx0OwotICAgIHJlc3VsdC5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KGF4SURzLnNpemUoKSk7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBheElE
IDogYXhJRHMpIHsKLSAgICAgICAgUmVmUHRyIG9iamVjdCA9IG9iamVjdEZvcklEKGF4SUQpOwot
ICAgICAgICBpZiAob2JqZWN0KSB7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKFdURk1vdmUo
b2JqZWN0KSk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8v
IFRoZXJlIGlzIG5vIGlzb2xhdGVkIG9iamVjdCBmb3IgdGhpcyBBWElELiBUaGlzIGNhbiBoYXBw
ZW4gaWYgdGhlIGNvcnJlc3BvbmRpbmcgbGl2ZSBvYmplY3QgaXMgaWdub3JlZC4KLSAgICAgICAg
Ly8gSWYgdGhlcmUgaXMgYSBsaXZlIG9iamVjdCBmb3IgdGhpcyBJRCBhbmQgaXQgaXMgYW4gaWdu
b3JlZCB0YXJnZXQgb2YgYSByZWxhdGlvbnNoaXAsIGNyZWF0ZSBhbiBpc29sYXRlZCBvYmplY3Qg
Zm9yIGl0LgotICAgICAgICBvYmplY3QgPSBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZVZhbHVlRnJv
bU1haW5UaHJlYWQ8UmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+PihbJmF4SUQsIHRoaXNdICgpIC0+
IFJlZlB0cjxBWElzb2xhdGVkT2JqZWN0PiB7Ci0gICAgICAgICAgICBhdXRvKiBjYWNoZSA9IGF4
T2JqZWN0Q2FjaGUoKTsKLSAgICAgICAgICAgIGlmICghY2FjaGUgfHwgIWNhY2hlLT5yZWxhdGlv
blRhcmdldElEcygpLmNvbnRhaW5zKGF4SUQpKQotICAgICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwotCi0gICAgICAgICAgICBSZWZQdHIgYXhPYmplY3QgPSBjYWNoZS0+b2JqZWN0Rm9ySUQo
YXhJRCk7Ci0gICAgICAgICAgICBpZiAoIWF4T2JqZWN0IHx8ICFheE9iamVjdC0+YWNjZXNzaWJp
bGl0eUlzSWdub3JlZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAg
ICAgICAgICBhdXRvIG9iamVjdCA9IEFYSXNvbGF0ZWRPYmplY3Q6OmNyZWF0ZSgqYXhPYmplY3Qs
IGNvbnN0X2Nhc3Q8QVhJc29sYXRlZFRyZWUqPih0aGlzKSk7Ci0gICAgICAgICAgICBBU1NFUlQo
YXhPYmplY3QtPndyYXBwZXIoKSk7Ci0gICAgICAgICAgICBvYmplY3QtPmF0dGFjaFBsYXRmb3Jt
V3JhcHBlcihheE9iamVjdC0+d3JhcHBlcigpKTsKLSAgICAgICAgICAgIHJldHVybiBvYmplY3Q7
Ci0gICAgICAgIH0pOwotICAgICAgICBpZiAob2JqZWN0KSB7Ci0gICAgICAgICAgICBtX3JlYWRl
clRocmVhZE5vZGVNYXAuYWRkKGF4SUQsICpvYmplY3QpOwotICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZChXVEZNb3ZlKG9iamVjdCkpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJlc3VsdC5zaHJp
bmtUb0ZpdCgpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgLy8gVGhlcmUgaXMgbm8gaXNvbGF0
ZWQgb2JqZWN0IGZvciB0aGlzIEFYSUQuIFRoaXMgY2FuIGhhcHBlbiBpZiB0aGUgY29ycmVzcG9u
ZGluZyBsaXZlIG9iamVjdCBpcyBpZ25vcmVkLgorICAgIC8vIElmIHRoZXJlIGlzIGEgbGl2ZSBv
YmplY3QgZm9yIHRoaXMgSUQgYW5kIGl0IGlzIGFuIGlnbm9yZWQgdGFyZ2V0IG9mIGEgcmVsYXRp
b25zaGlwLCBjcmVhdGUgYW4gaXNvbGF0ZWQgb2JqZWN0IGZvciBpdC4KKyAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhyZWFkPFJlZlB0cjxBWElzb2xhdGVk
T2JqZWN0Pj4oWyZheElELCB0aGlzXSAoKSAtPiBSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4gewor
ICAgICAgICBhdXRvKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsKKyAgICAgICAgaWYgKCFjYWNo
ZSB8fCAhY2FjaGUtPnJlbGF0aW9uVGFyZ2V0SURzKCkuY29udGFpbnMoYXhJRCkpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBSZWZQdHIgYXhPYmplY3QgPSBjYWNoZS0+
b2JqZWN0Rm9ySUQoYXhJRCk7CisgICAgICAgIGlmICghYXhPYmplY3QgfHwgIWF4T2JqZWN0LT5h
Y2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgICAgICBhdXRvIG9iamVjdCA9IEFYSXNvbGF0ZWRPYmplY3Q6OmNyZWF0ZSgqYXhPYmplY3Qs
IGNvbnN0X2Nhc3Q8QVhJc29sYXRlZFRyZWUqPih0aGlzKSk7CisgICAgICAgIEFTU0VSVChheE9i
amVjdC0+d3JhcHBlcigpKTsKKyAgICAgICAgb2JqZWN0LT5hdHRhY2hQbGF0Zm9ybVdyYXBwZXIo
YXhPYmplY3QtPndyYXBwZXIoKSk7CisgICAgICAgIHJldHVybiBvYmplY3Q7CisgICAgfSk7CiB9
CiAKLQogdm9pZCBBWElzb2xhdGVkVHJlZTo6Z2VuZXJhdGVTdWJ0cmVlKEFjY2Vzc2liaWxpdHlP
YmplY3QmIGF4T2JqZWN0KQogewogICAgIEFYVFJBQ0UoIkFYSXNvbGF0ZWRUcmVlOjpnZW5lcmF0
ZVN1YnRyZWUiX3MpOwpAQCAtNjYwLDYgKzY0MSwxMiBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjp1
cGRhdGVOb2RlUHJvcGVydGllcyhBWENvcmVPYmplY3QmIGF4T2JqZWN0LCBjb25zdCBBWFByb3Bl
cgogICAgICAgICBjYXNlIEFYUHJvcGVydHlOYW1lOjpQb3NJblNldDoKICAgICAgICAgICAgIHBy
b3BlcnR5TWFwLnNldChBWFByb3BlcnR5TmFtZTo6UG9zSW5TZXQsIGF4T2JqZWN0LnBvc0luU2V0
KCkpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQVhQcm9wZXJ0eU5hbWU6OlJl
bW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50OgorICAgICAgICAgICAgcHJvcGVydHlNYXAuc2V0KEFY
UHJvcGVydHlOYW1lOjpSZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCwgYXhPYmplY3QucmVtb3Rl
RnJhbWVQbGF0Zm9ybUVsZW1lbnQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBBWFByb3BlcnR5TmFtZTo6SGFzUmVtb3RlRnJhbWVDaGlsZDoKKyAgICAgICAgICAgIHByb3Bl
cnR5TWFwLnNldChBWFByb3BlcnR5TmFtZTo6SGFzUmVtb3RlRnJhbWVDaGlsZCwgYXhPYmplY3Qu
aGFzUmVtb3RlRnJhbWVDaGlsZCgpKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IEFYUHJvcGVydHlOYW1lOjpSb2xlRGVzY3JpcHRpb246CiAgICAgICAgICAgICBwcm9wZXJ0eU1h
cC5zZXQoQVhQcm9wZXJ0eU5hbWU6OlJvbGVEZXNjcmlwdGlvbiwgYXhPYmplY3Qucm9sZURlc2Ny
aXB0aW9uKCkuaXNvbGF0ZWRDb3B5KCkpOwogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJl
ZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZFRyZWUuaAppbmRleCBhNDE3OTI3OTc4ZDIuLjQ2MWVlYWU2MGFlZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
VHJlZS5oCkBAIC0xMDQsNiArMTA0LDcgQEAgZW51bSBjbGFzcyBBWFByb3BlcnR5TmFtZSA6IHVp
bnQxNl90IHsKICAgICBIYXNIaWdobGlnaHRpbmcsCiAgICAgSGFzSXRhbGljRm9udCwKICAgICBI
YXNQbGFpblRleHQsCisgICAgSGFzUmVtb3RlRnJhbWVDaGlsZCwKICAgICBIYXNVbmRlcmxpbmUs
CiAgICAgSGVhZGVyQ29udGFpbmVyLAogICAgIEhlYWRpbmdMZXZlbCwKQEAgLTIwMSw2ICsyMDIs
OCBAQCBlbnVtIGNsYXNzIEFYUHJvcGVydHlOYW1lIDogdWludDE2X3QgewogICAgIFByZXZlbnRL
ZXlib2FyZERPTUV2ZW50RGlzcGF0Y2gsCiAgICAgUmFkaW9CdXR0b25Hcm91cCwKICAgICBSZWxh
dGl2ZUZyYW1lLAorICAgIFJlbW90ZUZyYW1lT2Zmc2V0LAorICAgIFJlbW90ZUZyYW1lUGxhdGZv
cm1FbGVtZW50LAogICAgIFJvbGVWYWx1ZSwKICAgICBSb2xlUGxhdGZvcm1TdHJpbmcsCiAgICAg
Um9sZURlc2NyaXB0aW9uLApAQCAtMjU3LDYgKzI2MCw3IEBAIHVzaW5nIEFYUHJvcGVydHlOYW1l
U2V0ID0gSGFzaFNldDxBWFByb3BlcnR5TmFtZSwgSW50SGFzaDxBWFByb3BlcnR5TmFtZT4sIFdU
Rjo6CiB1c2luZyBBWFByb3BlcnR5VmFsdWVWYXJpYW50ID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVs
bHB0cl90LCBBWElELCBTdHJpbmcsIGJvb2wsIGludCwgdW5zaWduZWQsIGRvdWJsZSwgZmxvYXQs
IHVpbnQ2NF90LCBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGUsIENvbG9yLCBVUkwsIExheW91dFJl
Y3QsIEZsb2F0UG9pbnQsIEZsb2F0UmVjdCwgSW50UG9pbnQsIEludFJlY3QsIHN0ZDo6cGFpcjx1
bnNpZ25lZCwgdW5zaWduZWQ+LCBWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+LCBWZWN0b3I8QVhJ
RD4sIFZlY3RvcjxzdGQ6OnBhaXI8QVhJRCwgQVhJRD4+LCBWZWN0b3I8U3RyaW5nPiwgUGF0aCwg
T3B0aW9uU2V0PEFYQW5jZXN0b3JGbGFnPiwgSW5zaWRlTGluaywgVmVjdG9yPFZlY3RvcjxBWElE
Pj4sIENoYXJhY3RlclJhbmdlLCBzdGQ6OnBhaXI8QVhJRCwgQ2hhcmFjdGVyUmFuZ2U+CiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgLCBSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPgorICAg
ICwgUmV0YWluUHRyPGlkPgogI2VuZGlmCiAjaWYgRU5BQkxFKEFYX1RIUkVBRF9URVhUX0FQSVMp
CiAgICAgLCBBWFRleHRSdW5zCkBAIC0zOTcsNiArNDAxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGNyZWF0ZUVtcHR5Q29udGVudChBY2Nlc3NpYmlsaXR5T2JqZWN0Jik7CiAgICAgY29uc3RleHBy
IGJvb2wgaXNVcGRhdGluZ1N1YnRyZWUoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RPZlN1YnRyZWVC
ZWluZ1VwZGF0ZWQ7IH0KICAgICBjb25zdGV4cHIgdm9pZCB1cGRhdGluZ1N1YnRyZWUoQWNjZXNz
aWJpbGl0eU9iamVjdCogYXhPYmplY3QpIHsgbV9yb290T2ZTdWJ0cmVlQmVpbmdVcGRhdGVkID0g
YXhPYmplY3Q7IH0KKyAgICBSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4gcmV0cmlldmVPYmplY3RG
b3JJREZyb21NYWluVGhyZWFkKGNvbnN0IEFYSUQpIGNvbnN0OwogCiAgICAgZW51bSBjbGFzcyBB
dHRhY2hXcmFwcGVyIDogYm9vbCB7IE9uTWFpblRocmVhZCwgT25BWFRocmVhZCB9OwogICAgIHN0
cnVjdCBOb2RlQ2hhbmdlIHsKQEAgLTQ5Nyw2ICs1MDIsMzAgQEAgaW5saW5lIFJlZlB0cjxBWElz
b2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OnRyZWVGb3JQYWdlSUQoc3RkOjpvcHRpb25hbDxQ
YWdlSWQKICAgICByZXR1cm4gcGFnZUlEID8gdHJlZUZvclBhZ2VJRCgqcGFnZUlEKSA6IG51bGxw
dHI7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFU+CitpbmxpbmUgVmVjdG9yPFJlZlB0cjxBWENv
cmVPYmplY3Q+PiBBWElzb2xhdGVkVHJlZTo6b2JqZWN0c0ZvcklEcyhjb25zdCBVJiBheElEcykK
K3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKworICAgIFZlY3RvcjxSZWZQdHI8QVhD
b3JlT2JqZWN0Pj4gcmVzdWx0OworICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGF4
SURzLnNpemUoKSk7CisgICAgZm9yIChjb25zdCBhdXRvJiBheElEIDogYXhJRHMpIHsKKyAgICAg
ICAgUmVmUHRyIG9iamVjdCA9IG9iamVjdEZvcklEKGF4SUQpOworICAgICAgICBpZiAob2JqZWN0
KSB7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFdURk1vdmUob2JqZWN0KSk7CisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIG9iamVjdCA9IHJldHJpZXZlT2Jq
ZWN0Rm9ySURGcm9tTWFpblRocmVhZChheElEKTsKKyAgICAgICAgaWYgKG9iamVjdCkgeworICAg
ICAgICAgICAgbV9yZWFkZXJUaHJlYWROb2RlTWFwLmFkZChheElELCAqb2JqZWN0KTsKKyAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoV1RGTW92ZShvYmplY3QpKTsKKyAgICAgICAgfQorICAgIH0K
KyAgICByZXN1bHQuc2hyaW5rVG9GaXQoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9tYWMvQVhJc29sYXRlZE9i
amVjdE1hYy5tbQppbmRleCBhZGI3ZWM2NDgzNDUuLmUwMmRhMGQxMTJiNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRP
YmplY3RNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRy
ZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMubW0KQEAgLTYzLDYgKzYzLDggQEAgdm9pZCBBWElz
b2xhdGVkT2JqZWN0Ojppbml0aWFsaXplUGxhdGZvcm1Qcm9wZXJ0aWVzKGNvbnN0IFJlZjxjb25z
dCBBY2Nlc3NpYmlsaXQKICAgICAgICAgfQogICAgIH0KIAorICAgIHNldFByb3BlcnR5KEFYUHJv
cGVydHlOYW1lOjpSZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCwgb2JqZWN0LT5yZW1vdGVGcmFt
ZVBsYXRmb3JtRWxlbWVudCgpKTsKKwogICAgIC8vIENhY2hlIHRoZSBTdHJpbmdWYWx1ZSBvbmx5
IGlmIGl0IGRpZmZlcnMgZnJvbSB0aGUgQXR0cmlidXRlZFRleHQuCiAgICAgYXV0byB2YWx1ZSA9
IG9iamVjdC0+c3RyaW5nVmFsdWUoKTsKICAgICBpZiAoIWF0dHJpYnV0ZWRUZXh0IHx8IHZhbHVl
ICE9IFN0cmluZyhbYXR0cmlidXRlZFRleHQgc3RyaW5nXSkpCkBAIC0yMDIsNiArMjA0LDExIEBA
IHVuc2lnbmVkIEFYSXNvbGF0ZWRPYmplY3Q6OnRleHRMZW5ndGgoKSBjb25zdAogICAgIHJldHVy
biAwOwogfQogCitSZXRhaW5QdHI8aWQ+IEFYSXNvbGF0ZWRPYmplY3Q6OnJlbW90ZUZyYW1lUGxh
dGZvcm1FbGVtZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gcHJvcGVydHlWYWx1ZTxSZXRhaW5Q
dHI8aWQ+PihBWFByb3BlcnR5TmFtZTo6UmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQpOworfQor
CiBSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiBBWElzb2xhdGVkT2JqZWN0OjphdHRyaWJ1
dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKEFYVGV4dE1hcmtlclJhbmdlJiYgbWFya2VyUmFu
Z2UsIFNwZWxsQ2hlY2sgc3BlbGxDaGVjaykgY29uc3QKIHsKICAgICBpZiAoIW1hcmtlclJhbmdl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJp
bGl0eU9iamVjdE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vz
c2liaWxpdHlPYmplY3RNYWMubW0KaW5kZXggYmEyYWNjZDgwZDA0Li5mYmJlMGJiMmEwNjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlP
YmplY3RNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNz
aWJpbGl0eU9iamVjdE1hYy5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgi
CiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCiAKKyNpbXBvcnQgIkFYUmVtb3RlRnJh
bWUuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlMYWJlbC5oIgogI2ltcG9ydCAiQWNjZXNzaWJp
bGl0eUxpc3QuaCIKICNpbXBvcnQgIkNvbG9yQ29jb2EuaCIKQEAgLTUxLDYgKzUyLDcgQEAKICNp
bXBvcnQgIldlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLmgiCiAjaW1wb3J0ICJXaWRn
ZXQuaCIKIAorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0FjY2Vzc2liaWxpdHlTUEkuaD4KICNp
bXBvcnQgPHBhbC9zcGkvbWFjL05TU3BlbGxDaGVja2VyU1BJLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTc0OSw2ICs3NTEsMjkgQEAgUmV0YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4g
YXR0cmlidXRlZFN0cmluZ0NyZWF0ZShOb2RlKiBub2RlLCBTdHJpbmdWaWV3IHRleHQKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCitzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gQVhSZW1vdGVGcmFt
ZTo6Z2VuZXJhdGVSZW1vdGVUb2tlbigpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8qIHBhcmVudCA9
IHBhcmVudE9iamVjdCgpKSB7CisgICAgICAgIC8vIFdlIHVzZSB0aGUgcGFyZW50J3Mgd3JhcHBl
ciBzbyB0aGF0IHRoZSByZW1vdGUgZnJhbWUgYWN0cyBhcyBhIHBhc3MgdGhyb3VnaCBmb3IgdGhl
IHJlbW90ZSB0b2tlbiBicmlkZ2UuCisgICAgICAgIE5TRGF0YSAqZGF0YSA9IFtOU0FjY2Vzc2li
aWxpdHlSZW1vdGVVSUVsZW1lbnQgcmVtb3RlVG9rZW5Gb3JMb2NhbFVJRWxlbWVudDpwYXJlbnQt
PndyYXBwZXIoKV07CisgICAgICAgIHJldHVybiBzdGQ6OnNwYW4oc3RhdGljX2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pOworICAgIH0KKworICAgIHJl
dHVybiBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4geyB9OworfQorCit2b2lkIEFYUmVtb3RlRnJh
bWU6OmluaXRpYWxpemVQbGF0Zm9ybUVsZW1lbnRXaXRoUmVtb3RlVG9rZW4oc3RkOjpzcGFuPGNv
bnN0IHVpbnQ4X3Q+IHRva2VuLCBpbnQgcHJvY2Vzc0lkZW50aWZpZXIpCit7CisgICAgbV9wcm9j
ZXNzSWRlbnRpZmllciA9IHByb2Nlc3NJZGVudGlmaWVyOworICAgIGlmIChbd3JhcHBlcigpIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYWNjZXNzaWJpbGl0eVNldFByZXNlbnRlclByb2Nl
c3NJZGVudGlmaWVyOildKQorICAgICAgICBbKGlkKXdyYXBwZXIoKSBhY2Nlc3NpYmlsaXR5U2V0
UHJlc2VudGVyUHJvY2Vzc0lkZW50aWZpZXI6cHJvY2Vzc0lkZW50aWZpZXJdOworICAgIE5TRGF0
YSAqdG9rZW5EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOnRva2VuLmRhdGEoKSBsZW5ndGg6
dG9rZW4uc2l6ZSgpXTsKKyAgICBtX3JlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50ID0gYWRvcHRO
UyhbW05TQWNjZXNzaWJpbGl0eVJlbW90ZVVJRWxlbWVudCBhbGxvY10gaW5pdFdpdGhSZW1vdGVU
b2tlbjp0b2tlbkRhdGFdKTsKKworICAgIGlmIChhdXRvKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUo
KSkKKyAgICAgICAgY2FjaGUtPm9uUmVtb3RlRnJhbWVJbml0aWFsaXplZCgqdGhpcyk7Cit9CisK
IG5hbWVzcGFjZSBBY2Nlc3NpYmlsaXR5IHsKIAogUGxhdGZvcm1Sb2xlTWFwIGNyZWF0ZVBsYXRm
b3JtUm9sZU1hcCgpCkBAIC04OTEsNiArOTE2LDcgQEAgUGxhdGZvcm1Sb2xlTWFwIGNyZWF0ZVBs
YXRmb3JtUm9sZU1hcCgpCiAgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlN1cGVyc2NyaXB0
LCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKICAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9s
ZTo6TW9kZWwsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAogICAgICAgICB7IEFjY2Vzc2li
aWxpdHlSb2xlOjpTdWdnZXN0aW9uLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAg
ICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6UmVtb3RlRnJhbWUsIE5TQWNjZXNzaWJpbGl0eUdyb3Vw
Um9sZSB9LAogICAgIH07CiAgICAgUGxhdGZvcm1Sb2xlTWFwIHJvbGVNYXA7CiAgICAgZm9yIChh
dXRvJiByb2xlIDogcm9sZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2Uu
bW0KaW5kZXggNjM1N2ZhN2MyNzFiLi5mMTQyNDVmYzNiNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFz
ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlckJhc2UubW0KQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgIkFYQ29y
ZU9iamVjdC5oIgogI2ltcG9ydCAiQVhJc29sYXRlZE9iamVjdC5oIgogI2ltcG9ydCAiQVhPYmpl
Y3RDYWNoZS5oIgorI2ltcG9ydCAiQVhSZW1vdGVGcmFtZS5oIgogI2ltcG9ydCAiQWNjZXNzaWJp
bGl0eUFSSUFHcmlkUm93LmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5TGlzdC5oIgogI2ltcG9y
dCAiQWNjZXNzaWJpbGl0eUxpc3RCb3guaCIKQEAgLTI2NSwxMyArMjY2LDEzIEBAIE5TQXJyYXkg
Km1ha2VOU0FycmF5KGNvbnN0IFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJiBjCiAgICAgICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgICAgIGF1dG8g
d3JhcHBlciA9IGNoaWxkLT53cmFwcGVyKCk7Ci0KICAgICAgICAgLy8gV2Ugd2FudCB0byByZXR1
cm4gdGhlIGF0dGFjaG1lbnQgdmlldyBpbnN0ZWFkIG9mIHRoZSBvYmplY3QgcmVwcmVzZW50aW5n
IHRoZSBhdHRhY2htZW50LAogICAgICAgICAvLyBvdGhlcndpc2UsIHdlIGdldCBwYWxpbmRyb21l
IGVycm9ycyBpbiB0aGUgQVggaGllcmFyY2h5LgogICAgICAgICBpZiAoY2hpbGQtPmlzQXR0YWNo
bWVudCgpKSB7CiAgICAgICAgICAgICBpZiAoaWQgYXR0YWNobWVudFZpZXcgPSB3cmFwcGVyLmF0
dGFjaG1lbnRWaWV3KQogICAgICAgICAgICAgICAgIHJldHVybiBhdHRhY2htZW50VmlldzsKLSAg
ICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGNoaWxkLT5pc1JlbW90ZUZyYW1lKCkpCisgICAg
ICAgICAgICByZXR1cm4gY2hpbGQtPnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkuZ2V0KCk7
CiAKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgfSkuYXV0b3JlbGVhc2UoKTsKQEAgLTM4
OSw3ICszOTAsNyBAQCBOU0FycmF5ICptYWtlTlNBcnJheShjb25zdCBXZWJDb3JlOjpBWENvcmVP
YmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgYwogLSAoQk9PTClpc0lzb2xhdGVk
T2JqZWN0CiB7CiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKLSAgICBh
dXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgUmVmUHRyIGJh
Y2tpbmdPYmplY3QgPSBkeW5hbWljRG93bmNhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdD4oc2VsZi5i
YXNlVXBkYXRlQmFja2luZ1N0b3JlKTsKICAgICByZXR1cm4gYmFja2luZ09iamVjdCAmJiBiYWNr
aW5nT2JqZWN0LT5pc0FYSXNvbGF0ZWRPYmplY3RJbnN0YW5jZSgpOwogI2Vsc2UKICAgICByZXR1
cm4gTk87CkBAIC01MjMsNyArNTI0LDcgQEAgc3RhdGljIHZvaWQgY29udmVydFBhdGhUb1NjcmVl
blNwYWNlRnVuY3Rpb24oUGF0aENvbnZlcnNpb25JbmZvJiBjb252ZXJzaW9uLCBjb24KIAogLSAo
Q0dSZWN0KWNvbnZlcnRSZWN0VG9TcGFjZTooY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JilyZWN0
IHNwYWNlOihBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlKXNwYWNlCiB7Ci0gICAgYXV0byog
YmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0ciBiYWNraW5n
T2JqZWN0ID0gZHluYW1pY0Rvd25jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3Q+KHNlbGYuYmFzZVVw
ZGF0ZUJhY2tpbmdTdG9yZSk7CiAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQogICAgICAgICByZXR1
cm4gQ0dSZWN0WmVybzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpp
bmRleCA2YzVlNmI3YWNkOWMuLjc1MDJkOWEwZTQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJNYWMubW0KQEAgLTM0LDYgKzM0LDcgQEAKICNpbXBvcnQgIkFYSXNvbGF0ZWRP
YmplY3QuaCIKICNpbXBvcnQgIkFYTG9nZ2VyLmgiCiAjaW1wb3J0ICJBWE9iamVjdENhY2hlLmgi
CisjaW1wb3J0ICJBWFJlbW90ZUZyYW1lLmgiCiAjaW1wb3J0ICJBWFRleHRNYXJrZXIuaCIKICNp
bXBvcnQgIkFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0
eUxhYmVsLmgiCkBAIC00NzksNiArNDgwLDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
I2RlZmluZSBOU0FjY2Vzc2liaWxpdHlUZXh0SW5wdXRNYXJrZWRUZXh0TWFya2VyUmFuZ2VBdHRy
aWJ1dGUgQCJBWFRleHRJbnB1dE1hcmtlZFRleHRNYXJrZXJSYW5nZSIKICNlbmRpZgogCisjaWZu
ZGVmIGtBWENvbnZlcnRSZWxhdGl2ZUZyYW1lUGFyYW1ldGVyaXplZEF0dHJpYnV0ZQorI2RlZmlu
ZSBrQVhDb252ZXJ0UmVsYXRpdmVGcmFtZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgQCJBWENvbnZl
cnRSZWxhdGl2ZUZyYW1lIgorI2VuZGlmCisKIEBpbXBsZW1lbnRhdGlvbiBXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlcgogCiAtICh2b2lkKWRldGFjaApAQCAtNjkyLDcgKzY5Nyw3IEBAIHN0
YXRpYyBSZXRhaW5QdHI8QVhUZXh0TWFya2VyUmVmPiBwcmV2aW91c1RleHRNYXJrZXIoQVhPYmpl
Y3RDYWNoZSogY2FjaGUsIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAot
ICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQ
dHI8QVhDb3JlT2JqZWN0PiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CiAg
ICAgaWYgKCFiYWNraW5nT2JqZWN0KQogICAgICAgICByZXR1cm4gbmlsOwogCkBAIC0xMjU2LDcg
KzEyNjEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKIAogLSAoTlNB
cnJheSAqKXJlbmRlcldpZGdldENoaWxkcmVuCiB7Ci0gICAgYXV0byogYmFja2luZ09iamVjdCA9
IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+IGJhY2tpbmdP
YmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKICAgICBpZiAoIWJhY2tpbmdPYmplY3QgfHwg
IWJhY2tpbmdPYmplY3QtPmlzV2lkZ2V0KCkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTEy
NzksNyArMTI4NCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAtIChp
ZClyZW1vdGVBY2Nlc3NpYmlsaXR5UGFyZW50T2JqZWN0CiB7Ci0gICAgYXV0byogYmFja2luZ09i
amVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+IGJh
Y2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKICAgICByZXR1cm4gYmFja2luZ09i
amVjdCA/IGJhY2tpbmdPYmplY3QtPnJlbW90ZVBhcmVudE9iamVjdCgpIDogbmlsOwogfQogCkBA
IC0xMjk2LDcgKzEzMDEsNyBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0VG9WZWN0b3IoTlNBcnJheSog
YXJyYXksIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaAogCiAtIChBWFRleHRN
YXJrZXJSYW5nZVJlZilzZWxlY3RlZFRleHRNYXJrZXJSYW5nZQogewotICAgIGF1dG8qIGJhY2tp
bmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0
PiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CiAgICAgaWYgKCFiYWNraW5n
T2JqZWN0KQogICAgICAgICByZXR1cm4gbmlsOwogCkBAIC0xMzY2LDEyICsxMzcxLDE4IEBAIHN0
YXRpYyB2b2lkIFdlYlRyYW5zZm9ybUNHUGF0aFRvTlNCZXppZXJQYXRoKHZvaWQqIGluZm8sIGNv
bnN0IENHUGF0aEVsZW1lbnQgKmVsCiAKIC0gKE5TU3RyaW5nKilyb2xlCiB7CisgICAgUmVmUHRy
PEFYQ29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAg
IGlmICghYmFja2luZ09iamVjdCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKwogQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICBpZiAoc2VsZi5heEJhY2tpbmdPYmplY3QtPmlz
QXR0YWNobWVudCgpKQorICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkKICAg
ICAgICAgcmV0dXJuIFtbc2VsZiBhdHRhY2htZW50Vmlld10gYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGVdOworICAgIGlmIChiYWNraW5nT2Jq
ZWN0LT5pc1JlbW90ZUZyYW1lKCkpCisgICAgICAgIHJldHVybiBbYmFja2luZ09iamVjdC0+cmVt
b3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKS5nZXQoKSBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6TlNBY2Nlc3NpYmlsaXR5Um9sZUF0dHJpYnV0ZV07CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19FTkQKIAotICAgIE5TU3RyaW5nICpzdHJpbmcgPSBzZWxmLmF4QmFja2luZ09iamVj
dC0+cm9sZVBsYXRmb3JtU3RyaW5nKCk7CisgICAgTlNTdHJpbmcgKnN0cmluZyA9IGJhY2tpbmdP
YmplY3QtPnJvbGVQbGF0Zm9ybVN0cmluZygpOwogICAgIGlmIChzdHJpbmcubGVuZ3RoKQogICAg
ICAgICByZXR1cm4gc3RyaW5nOwogICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlVbmtub3duUm9s
ZTsKQEAgLTEzNzksNyArMTM5MCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VO
RAogCiAtIChCT09MKWlzRW1wdHlHcm91cAogewotICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBz
ZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBiYWNraW5nT2Jq
ZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CiAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTEzODgsNiArMTM5OSw5IEBAIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0VORAogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIAorICAg
IGlmIChiYWNraW5nT2JqZWN0LT5pc1JlbW90ZUZyYW1lKCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKwogICAgIHJldHVybiBbW3NlbGYgcm9sZV0gaXNFcXVhbDpOU0FjY2Vzc2liaWxpdHlHcm91
cFJvbGVdCiAgICAgICAgICYmIGJhY2tpbmdPYmplY3QtPmNoaWxkcmVuKCkuaXNFbXB0eSgpCiAg
ICAgICAgICYmICFbW3NlbGYgcmVuZGVyV2lkZ2V0Q2hpbGRyZW5dIGNvdW50XTsKQEAgLTEzOTYs
NyArMTQxMCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KIC0gKE5TU3RyaW5nKilzdWJyb2xlCiB7Ci0gICAg
YXV0byogYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0cjxB
WENvcmVPYmplY3Q+IGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKICAgICBp
ZiAoIWJhY2tpbmdPYmplY3QpCiAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTE0MTMsNyArMTQy
Nyw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAtIChOU1N0cmluZyop
cm9sZURlc2NyaXB0aW9uCiB7Ci0gICAgYXV0byogYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNr
aW5nT2JqZWN0OworICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+IGJhY2tpbmdPYmplY3QgPSBzZWxm
LmF4QmFja2luZ09iamVjdDsKICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCiAgICAgICAgIHJldHVy
biBuaWw7CiAKQEAgLTE0MjEsNiArMTQzNSw4IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCiAgICAgLy8gYXR0YWNobWVudHMgaGF2ZSB0aGUgQVhJbWFnZSByb2xlLCBidXQg
YSBkaWZmZXJlbnQgc3Vicm9sZQogICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc0F0dGFjaG1lbnQo
KSkKICAgICAgICAgcmV0dXJuIFtbc2VsZiBhdHRhY2htZW50Vmlld10gYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJvbGVEZXNjcmlwdGlvbkF0dHJpYnV0ZV07Cisg
ICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzUmVtb3RlRnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIFti
YWNraW5nT2JqZWN0LT5yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpLmdldCgpIGFjY2Vzc2li
aWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRpb25BdHRyaWJ1
dGVdOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBTdHJpbmcgcm9s
ZURlc2NyaXB0aW9uID0gYmFja2luZ09iamVjdC0+cm9sZURlc2NyaXB0aW9uKCk7CkBAIC0xNDcz
LDYgKzE0ODksMjggQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgcmV0
dXJuIGF4U2Nyb2xsVmlldyA/IFtheFNjcm9sbFZpZXctPnBsYXRmb3JtV2lkZ2V0KCkgd2luZG93
XSA6IG5pbDsKIH0KIAorLSAoTlNBcnJheSAqKV90cmFuc2Zvcm1TcGVjaWFsQ2hpbGRyZW5DYXNl
czooUmVmUHRyPEFYQ29yZU9iamVjdD4pYmFja2luZ09iamVjdAoreworI2lmIEVOQUJMRShNT0RF
TF9FTEVNRU5UKQorICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc01vZGVsKCkpIHsKKyAgICAgICAg
YXV0byBtb2RlbENoaWxkcmVuID0gYmFja2luZ09iamVjdC0+bW9kZWxFbGVtZW50Q2hpbGRyZW4o
KTsKKyAgICAgICAgaWYgKG1vZGVsQ2hpbGRyZW4uc2l6ZSgpKSB7CisgICAgICAgICAgICByZXR1
cm4gY3JlYXRlTlNBcnJheShXVEZNb3ZlKG1vZGVsQ2hpbGRyZW4pLCBbXSAoYXV0byYmIGNoaWxk
KSAtPiBpZCB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkLmdldCgpOworICAgICAgICAg
ICAgfSkuYXV0b3JlbGVhc2UoKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCisgICAgY29u
c3QgYXV0byYgY2hpbGRyZW4gPSBiYWNraW5nT2JqZWN0LT5jaGlsZHJlbigpOworICAgIGlmICgh
Y2hpbGRyZW4uc2l6ZSgpKSB7CisgICAgICAgIGlmIChOU0FycmF5ICpjaGlsZHJlbiA9IFtzZWxm
IHJlbmRlcldpZGdldENoaWxkcmVuXSkKKyAgICAgICAgICAgIHJldHVybiBjaGlsZHJlbjsKKyAg
ICB9CisKKyAgICByZXR1cm4gbmlsOworfQorCiAvLyBGSVhNRTogc3BsaXQgdXAgdGhpcyBmdW5j
dGlvbiBpbiBhIGJldHRlciB3YXkuCiAvLyBzdWdnZXN0aW9uczogVXNlIGEgaGFzaCB0YWJsZSB0
aGF0IG1hcHMgYXR0cmlidXRlIG5hbWVzIHRvIGZ1bmN0aW9uIGNhbGxzLAogLy8gb3IgbWF5YmUg
cG9pbnRlcnMgdG8gbWVtYmVyIGZ1bmN0aW9ucwpAQCAtMTUzMSwyMiArMTU2OSw5IEBAIEFMTE9X
X0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIH0KIAogICAgIGlmIChbYXR0cmli
dXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGVd
IHx8IFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDaGlsZHJl
bkluTmF2aWdhdGlvbk9yZGVyQXR0cmlidXRlXSkgewotI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5U
KQotICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNNb2RlbCgpKSB7Ci0gICAgICAgICAgICBh
dXRvIG1vZGVsQ2hpbGRyZW4gPSBiYWNraW5nT2JqZWN0LT5tb2RlbEVsZW1lbnRDaGlsZHJlbigp
OwotICAgICAgICAgICAgaWYgKG1vZGVsQ2hpbGRyZW4uc2l6ZSgpKSB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkoV1RGTW92ZShtb2RlbENoaWxkcmVuKSwgW10gKGF1dG8m
JiBjaGlsZCkgLT4gaWQgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGQuZ2V0KCk7
Ci0gICAgICAgICAgICAgICAgfSkuYXV0b3JlbGVhc2UoKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotI2VuZGlmCi0KLSAgICAgICAgY29uc3QgYXV0byYgY2hpbGRyZW4gPSBiYWNraW5nT2Jq
ZWN0LT5jaGlsZHJlbigpOwotICAgICAgICBpZiAoY2hpbGRyZW4uaXNFbXB0eSgpKSB7Ci0gICAg
ICAgICAgICBpZiAoTlNBcnJheSAqd2lkZ2V0Q2hpbGRyZW4gPSBbc2VsZiByZW5kZXJXaWRnZXRD
aGlsZHJlbl0pCi0gICAgICAgICAgICAgICAgcmV0dXJuIHdpZGdldENoaWxkcmVuOwotICAgICAg
ICB9CisgICAgICAgIE5TQXJyYXkgKnNwZWNpYWxDaGlsZHJlbiA9IFtzZWxmIF90cmFuc2Zvcm1T
cGVjaWFsQ2hpbGRyZW5DYXNlczpiYWNraW5nT2JqZWN0XTsKKyAgICAgICAgaWYgKHNwZWNpYWxD
aGlsZHJlbi5jb3VudCkKKyAgICAgICAgICAgIHJldHVybiBzcGVjaWFsQ2hpbGRyZW47CiAKICAg
ICAgICAgLy8gVGhlIHRyZWUncyAoQVhPdXRsaW5lKSBjaGlsZHJlbiBhcmUgc3VwcG9zZWQgdG8g
YmUgaXRzIHJvd3MgYW5kIGNvbHVtbnMuCiAgICAgICAgIC8vIFRoZSBBUklBIHNwZWMgZG9lc24n
dCBoYXZlIGNvbHVtbnMsIHNvIHdlIGp1c3QgbmVlZCByb3dzLgpAQCAtMTU1Nyw3ICsxNTgyLDcg
QEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIGlmIChiYWNr
aW5nT2JqZWN0LT5pc1RyZWVJdGVtKCkpCiAgICAgICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXko
YmFja2luZ09iamVjdC0+YXJpYVRyZWVJdGVtQ29udGVudCgpKTsKIAotICAgICAgICByZXR1cm4g
bWFrZU5TQXJyYXkoY2hpbGRyZW4pOworICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFja2lu
Z09iamVjdC0+Y2hpbGRyZW4oKSk7CiAgICAgfQogCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZV0p
IHsKQEAgLTE3MTMsMTYgKzE3MzgsMTQgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElP
TlNfRU5ECiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3Np
YmlsaXR5RW5hYmxlZEF0dHJpYnV0ZV0pCiAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVy
V2l0aEJvb2w6IGJhY2tpbmdPYmplY3QtPmlzRW5hYmxlZCgpXTsKIAotICAgIGlmIChbYXR0cmli
dXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVNpemVBdHRyaWJ1dGVdKSB7
Ci0gICAgICAgIGF1dG8gc2l6ZSA9IGJhY2tpbmdPYmplY3QtPnNpemUoKTsKLSAgICAgICAgcmV0
dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aFNpemU6TlNNYWtlU2l6ZShzaXplLndpZHRoKCksIHNpemUu
aGVpZ2h0KCkpXTsKLSAgICB9CisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmlu
ZzpOU0FjY2Vzc2liaWxpdHlTaXplQXR0cmlidXRlXSkKKyAgICAgICAgcmV0dXJuIFtOU1ZhbHVl
IHZhbHVlV2l0aFNpemU6KENHU2l6ZSliYWNraW5nT2JqZWN0LT5zaXplKCldOwogCiAgICAgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlQcmltYXJ5U2Ny
ZWVuSGVpZ2h0QXR0cmlidXRlXSkKICAgICAgICAgcmV0dXJuIEAoYmFja2luZ09iamVjdC0+cHJp
bWFyeVNjcmVlblJlY3QoKS5oZWlnaHQoKSk7CiAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNF
cXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVBvc2l0aW9uQXR0cmlidXRlXSkKLSAgICAgICAg
cmV0dXJuIEAoQ0dQb2ludChiYWNraW5nT2JqZWN0LT5zY3JlZW5SZWxhdGl2ZVBvc2l0aW9uKCkp
KTsKKyAgICAgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aFBvaW50OihDR1BvaW50KWJhY2tp
bmdPYmplY3QtPnNjcmVlblJlbGF0aXZlUG9zaXRpb24oKV07CiAKICAgICBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVBhdGhBdHRyaWJ1dGVdKQogICAg
ICAgICByZXR1cm4gW3NlbGYgcGF0aF07CkBAIC0yMjM3LDYgKzIyNjAsMTAgQEAgQUxMT1dfREVQ
UkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIHJldHVybiByYW5nZSA/IHJhbmdl
LnBsYXRmb3JtRGF0YSgpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKSA6IG5pbDsKICAgICB9CiAKKyAg
ICAvLyBWb2ljZU92ZXIgcHJvcGVydHkgdG8gaWdub3JlIGNlcnRhaW4gZ3JvdXBzLgorICAgIGlm
IChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWEF1dG9JbnRlcmFjdGFibGUiXSkK
KyAgICAgICAgcmV0dXJuIEAoYmFja2luZ09iamVjdC0+aXNSZW1vdGVGcmFtZSgpKTsKKwogICAg
IC8vIFVzZWQgYnkgTGF5b3V0VGVzdHMgb25seSwgbm90IGJ5IEFUIGNsaWVudHMuCiAgICAgaWYg
KFVOTElLRUxZKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpAIkFYQVJJQVJvbGUiXSkp
CiAgICAgICAgIHJldHVybiBiYWNraW5nT2JqZWN0LT5jb21wdXRlZFJvbGVTdHJpbmcoKTsKQEAg
LTIzMzAsNyArMjM1Nyw4IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAog
ICAgICAgICBpZiAoYXhPYmplY3QtPmlzQXR0YWNobWVudCgpKSB7CiAgICAgICAgICAgICBpZiAo
aWQgYXR0YWNobWVudFZpZXcgPSBbYXhPYmplY3QtPndyYXBwZXIoKSBhdHRhY2htZW50Vmlld10p
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGF0dGFjaG1lbnRWaWV3OwotICAgICAgICB9CisgICAg
ICAgIH0gZWxzZSBpZiAoYXhPYmplY3QtPmlzUmVtb3RlRnJhbWUoKSkKKyAgICAgICAgICAgIHJl
dHVybiBheE9iamVjdC0+cmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKS5nZXQoKTsKIAogICAg
ICAgICAvLyBPbmx5IGNhbGwgb3V0IHRvIHRoZSBtYWluLXRocmVhZCBpZiB0aGlzIG9iamVjdCBo
YXMgYSBiYWNraW5nIHdpZGdldCB0byBxdWVyeS4KICAgICAgICAgaWYgKGF4T2JqZWN0LT5pc1dp
ZGdldCgpKSB7CkBAIC0yNTA3LDYgKzI1MzUsMTAgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1F
TlRBVElPTlNfRU5ECiAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzV2ViQXJlYSgpKQogICAgICAg
ICByZXR1cm4gd2ViQXJlYVBhcmFtQXR0cnM7CiAKKyAgICAvLyBUaGUgb2JqZWN0IHRoYXQgc2Vy
dmVzIHVwIHRoZSByZW1vdGUgZnJhbWUgYWxzbyBpcyB0aGUgb25lIHRoYXQgZG9lcyB0aGUgZnJh
bWUgY29udmVyc2lvbi4KKyAgICBpZiAoYmFja2luZ09iamVjdC0+aGFzUmVtb3RlRnJhbWVDaGls
ZCgpKQorICAgICAgICByZXR1cm4gW3BhcmFtQXR0cnMgYXJyYXlCeUFkZGluZ09iamVjdDprQVhD
b252ZXJ0UmVsYXRpdmVGcmFtZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdOworCiAgICAgcmV0dXJu
IHBhcmFtQXR0cnM7CiB9CiAKQEAgLTI1NzgsNyArMjYxMCw3IEBAIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORAogewogICAgIEFYVFJBQ0UoIldlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyIGFjY2Vzc2liaWxpdHlQZXJmb3JtU2hvd01lbnVBY3Rpb24iX3MpOwogCi0gICAgYXV0
byogYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0cjxBWENv
cmVPYmplY3Q+IGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKICAgICBpZiAo
IWJhY2tpbmdPYmplY3QpIHsKICAgICAgICAgQVhMT0cobWFrZVN0cmluZygiTm8gYmFja2luZ09i
amVjdCBmb3Igd3JhcHBlciAiLCBoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHNlbGYp
KSkpOwogICAgICAgICByZXR1cm47CkBAIC0yODIyLDcgKzI4NTQsNyBAQCBBTExPV19ERVBSRUNB
VEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBpZiAoIXJhbmdlLmxlbmd0aCkKICAgICAgICAg
cmV0dXJuIG5pbDsKIAotICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09i
amVjdDsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJh
Y2tpbmdPYmplY3Q7CiAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQogICAgICAgICByZXR1cm4gbmls
OwogCkBAIC0zMTc3LDYgKzMyMDksMTggQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElP
TlNfRU5ECiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3aWRnZXRDaGlsZHJlbjsKICAgICAg
ICAgICAgICAgICBjcml0ZXJpYS5yZXN1bHRzTGltaXQgLT0gW3dpZGdldENoaWxkcmVuIGNvdW50
XTsKICAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChiYWNraW5nT2JqZWN0LT5pc1Jl
bW90ZUZyYW1lKCkKKyAgICAgICAgICAgICYmIGNyaXRlcmlhLnNlYXJjaEtleXMuY29udGFpbnMo
QWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6QW55VHlwZSkKKyAgICAgICAgICAgICYmICghY3JpdGVy
aWEudmlzaWJsZU9ubHkgfHwgYmFja2luZ09iamVjdC0+aXNWaXNpYmxlKCkpKSB7CisgICAgICAg
ICAgICBOU0FycmF5ICpyZW1vdGVGcmFtZUNoaWxkcmVuID0gW3NlbGYgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXTsKKyAgICAgICAg
ICAgIEFTU0VSVChyZW1vdGVGcmFtZUNoaWxkcmVuLmNvdW50ID09IDEpOworICAgICAgICAgICAg
aWYgKHJlbW90ZUZyYW1lQ2hpbGRyZW4uY291bnQgPT0gMSkgeworICAgICAgICAgICAgICAgIE5T
VUludGVnZXIgaW5jbHVkZWRDaGlsZHJlbkNvdW50ID0gc3RkOjptaW4oW3JlbW90ZUZyYW1lQ2hp
bGRyZW4gY291bnRdLCBOU1VJbnRlZ2VyKGNyaXRlcmlhLnJlc3VsdHNMaW1pdCkpOworICAgICAg
ICAgICAgICAgIHdpZGdldENoaWxkcmVuID0gW3JlbW90ZUZyYW1lQ2hpbGRyZW4gc3ViYXJyYXlX
aXRoUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgaW5jbHVkZWRDaGlsZHJlbkNvdW50KV07CisgICAgICAg
ICAgICAgICAgaWYgKFt3aWRnZXRDaGlsZHJlbiBjb3VudF0gPj0gY3JpdGVyaWEucmVzdWx0c0xp
bWl0KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVtb3RlRnJhbWVDaGlsZHJlbjsKKyAg
ICAgICAgICAgICAgICBjcml0ZXJpYS5yZXN1bHRzTGltaXQgLT0gW3dpZGdldENoaWxkcmVuIGNv
dW50XTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciByZXN1bHRzOwpAQCAtMzY2OSw2ICsz
NzEzLDExIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIGlmIChV
TkxJS0VMWShbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpfQVhUZXh0TWFya2VyUmFuZ2VGb3JO
U1JhbmdlQXR0cmlidXRlXSkpCiAgICAgICAgIHJldHVybiBiYWNraW5nT2JqZWN0LT50ZXh0TWFy
a2VyUmFuZ2VGb3JOU1JhbmdlKHJhbmdlKS5wbGF0Zm9ybURhdGEoKS5icmlkZ2luZ0F1dG9yZWxl
YXNlKCk7CiAKKyAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6a0FYQ29udmVydFJl
bGF0aXZlRnJhbWVQYXJhbWV0ZXJpemVkQXR0cmlidXRlXSkgeworICAgICAgICBhdXRvKiBwYXJl
bnQgPSBiYWNraW5nT2JqZWN0LT5wYXJlbnRPYmplY3QoKTsKKyAgICAgICAgcmV0dXJuIHBhcmVu
dCA/IFtOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6cGFyZW50LT5jb252ZXJ0RnJhbWVUb1NwYWNlKEZs
b2F0UmVjdChyZWN0KSwgQWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZTo6UGFnZSldIDogbmls
OworICAgIH0KKwogICAgIC8vIFRoZXJlIGFyZSBzb21lIHBhcmFtZXRlcnMgdGhhdCBzdXBlciBo
YW5kbGVzIHRoYXQgYXJlIG5vdCBleHBsaWNpdGx5IHJldHVybmVkIGJ5IHRoZSBsaXN0IG9mIHRo
ZSBlbGVtZW50J3MgYXR0cmlidXRlcy4KICAgICAvLyBJbiB0aGF0IGNhc2UgaXQgbXVzdCBiZSBw
YXNzZWQgdG8gc3VwZXIuCiAgICAgcmV0dXJuIFtzdXBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6YXR0cmlidXRlIGZvclBhcmFtZXRlcjpwYXJhbWV0ZXJdOwpAQCAtMzcyMiw4ICszNzcx
LDEwIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICBpZiAo
IWNoaWxkKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIFdlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyICpjaGlsZFdyYXBwZXIgPSBjaGlsZC0+d3JhcHBlcigpOwotICAgICAgICBp
ZiAoY2hpbGRXcmFwcGVyID09IHRhcmdldENoaWxkIHx8IChjaGlsZC0+aXNBdHRhY2htZW50KCkg
JiYgW2NoaWxkV3JhcHBlciBhdHRhY2htZW50Vmlld10gPT0gdGFyZ2V0Q2hpbGQpKQorICAgICAg
ICBpZiAoY2hpbGRXcmFwcGVyID09IHRhcmdldENoaWxkIHx8IChjaGlsZC0+aXNBdHRhY2htZW50
KCkgJiYgW2NoaWxkV3JhcHBlciBhdHRhY2htZW50Vmlld10gPT0gdGFyZ2V0Q2hpbGQpCisgICAg
ICAgICAgICB8fCAoY2hpbGQtPmlzUmVtb3RlRnJhbWUoKSAmJiBjaGlsZC0+cmVtb3RlRnJhbWVQ
bGF0Zm9ybUVsZW1lbnQoKSA9PSB0YXJnZXRDaGlsZCkpIHsKICAgICAgICAgICAgIHJldHVybiBp
OworICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBOU05vdEZvdW5kOwogfQpAQCAtMzc0MCw3
ICszNzkxLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBpZiAo
W2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1
dGVdKSB7CiAgICAgICAgIC8vIFRyZWUgaXRlbXMgb2JqZWN0IHJldHVybnMgYSBkaWZmZXJlbnQg
c2V0IG9mIGNoaWxkcmVuIHRoYW4gdGhvc2UgdGhhdCBhcmUgaW4gY2hpbGRyZW4oKQogICAgICAg
ICAvLyBiZWNhdXNlIGFuIEFYT3V0bGluZSAodGhlIG1hYyByb2xlIGlzIGJlY29tZXMpIGhhcyBz
b21lIG9kZCBzdGlwdWxhdGlvbnMuCi0gICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc1RyZWUo
KSB8fCBiYWNraW5nT2JqZWN0LT5pc1RyZWVJdGVtKCkpCisgICAgICAgIGlmIChiYWNraW5nT2Jq
ZWN0LT5pc1RyZWUoKSB8fCBiYWNraW5nT2JqZWN0LT5pc1RyZWVJdGVtKCkgfHwgYmFja2luZ09i
amVjdC0+aXNSZW1vdGVGcmFtZSgpKQogICAgICAgICAgICAgcmV0dXJuIFtbc2VsZiBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGVdIGNv
dW50XTsKIAogICAgICAgICBhdXRvIGNoaWxkcmVuU2l6ZSA9IGJhY2tpbmdPYmplY3QtPmNoaWxk
cmVuKCkuc2l6ZSgpOwpAQCAtMzc3NiwxNiArMzgyNyw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAogCiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOk5TQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXSkgewogICAgICAgICBpZiAoYmFja2luZ09iamVj
dC0+Y2hpbGRyZW4oKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIE5TQXJyYXkgKmNoaWxkcmVu
ID0gbmlsOwotI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQotICAgICAgICAgICAgaWYgKGJhY2tp
bmdPYmplY3QtPmlzTW9kZWwoKSkgewotICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gY3JlYXRl
TlNBcnJheShiYWNraW5nT2JqZWN0LT5tb2RlbEVsZW1lbnRDaGlsZHJlbigpLCBbXSAoYXV0byYm
IGNoaWxkKSAtPiBpZCB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZC5nZXQoKTsK
LSAgICAgICAgICAgICAgICB9KS5hdXRvcmVsZWFzZSgpOwotICAgICAgICAgICAgfSBlbHNlCi0j
ZW5kaWYKLSAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtzZWxmIHJlbmRlcldpZGdldENoaWxk
cmVuXTsKLSAgICAgICAgICAgIAorICAgICAgICAgICAgTlNBcnJheSAqY2hpbGRyZW4gPSBbc2Vs
ZiBfdHJhbnNmb3JtU3BlY2lhbENoaWxkcmVuQ2FzZXM6YmFja2luZ09iamVjdF07CiAgICAgICAg
ICAgICBpZiAoIWNoaWxkcmVuKQogICAgICAgICAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTM4
MTYsOCArMzg1OCwxMyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAg
ICAgICAgICAgLy8gVGhlIGF0dGFjaG1lbnQgdmlldyBzaG91bGQgYmUgcmV0dXJuZWQsIG90aGVy
d2lzZSBBWCBwYWxpbmRyb21lIGVycm9ycyBvY2N1ci4KICAgICAgICAgICAgIGlkIGF0dGFjaG1l
bnRWaWV3ID0gbmlsOwotICAgICAgICAgICAgaWYgKFt3cmFwcGVyIGlzS2luZE9mQ2xhc3M6W1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGNsYXNzXV0gJiYgd3JhcHBlci5heEJhY2tpbmdP
YmplY3QgJiYgd3JhcHBlci5heEJhY2tpbmdPYmplY3QtPmlzQXR0YWNobWVudCgpKQotICAgICAg
ICAgICAgICAgIGF0dGFjaG1lbnRWaWV3ID0gW3dyYXBwZXIgYXR0YWNobWVudFZpZXddOworICAg
ICAgICAgICAgaWYgKFt3cmFwcGVyIGlzS2luZE9mQ2xhc3M6W1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyIGNsYXNzXV0gJiYgd3JhcHBlci5heEJhY2tpbmdPYmplY3QpIHsKKyAgICAgICAg
ICAgICAgICBpZiAod3JhcHBlci5heEJhY2tpbmdPYmplY3QtPmlzQXR0YWNobWVudCgpKQorICAg
ICAgICAgICAgICAgICAgICBhdHRhY2htZW50VmlldyA9IFt3cmFwcGVyIGF0dGFjaG1lbnRWaWV3
XTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmICh3cmFwcGVyLmF4QmFja2luZ09iamVjdC0+aXNS
ZW1vdGVGcmFtZSgpKQorICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50VmlldyA9IHdyYXBw
ZXIuYXhCYWNraW5nT2JqZWN0LT5yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpLmdldCgpOwor
ICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBbc3ViYXJyYXkgYWRkT2JqZWN0OmF0dGFjaG1l
bnRWaWV3ID8gYXR0YWNobWVudFZpZXcgOiB3cmFwcGVyXTsKICAgICAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDI1OGMxNGI4NmE4Yi4uNTcxN2FkZTJh
NDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtMTA4NSw2ICsx
MDg1LDExIEBAIFJlbW90ZUFYT2JqZWN0UmVmIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmFjY2Vz
c2liaWxpdHlSZW1vdGVPYmplY3QoKQogICAgIHJldHVybiBudWxscHRyOwogfQogCitJbnRQb2lu
dCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjphY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQo
KQoreworICAgIHJldHVybiB7IH07Cit9CisKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09M
QVRFRF9UUkVFKQogdm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpzZXRBWElzb2xhdGVkVHJl
ZVJvb3QoV2ViQ29yZTo6QVhDb3JlT2JqZWN0KikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDA5OGNlNThkMTExOS4uNDY3MmRlMjk4
NTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50
LmgKQEAgLTE4NCw2ICsxODQsNyBAQCBwcml2YXRlOgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgUmVtb3RlQVhPYmplY3RSZWYgYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpIGZpbmFsOwor
ICAgIEludFBvaW50IGFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCgpIGZpbmFsOwogI2lm
IEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAgICAgdm9pZCBzZXRBWElzb2xh
dGVkVHJlZVJvb3QoV2ViQ29yZTo6QVhDb3JlT2JqZWN0KikgZmluYWw7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9jYWxGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGIyZDU2
ZjA1MGFlOS4uMDBkM2FkNWUyY2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TG9jYWxGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2Nh
bEZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTI5MCw2ICsyOTAsNyBAQCBwdWJsaWM6CiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgLy8gQWxsb3cgYW4gYWNjZXNzaWJpbGl0eSBvYmplY3QgdG8gcmV0
cmlldmUgYSBGcmFtZSBwYXJlbnQgaWYgdGhlcmUncyBubyBQbGF0Zm9ybVdpZGdldC4KICAgICB2
aXJ0dWFsIFJlbW90ZUFYT2JqZWN0UmVmIGFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSA9IDA7
CisgICAgdmlydHVhbCBJbnRQb2ludCBhY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKSA9
IDA7CiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKICAgICB2aXJ0dWFs
IHZvaWQgc2V0QVhJc29sYXRlZFRyZWVSb290KEFYQ29yZU9iamVjdCopID0gMDsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKaW5kZXggNWQyZmVhYjY1Nzk2Li42NTdhNWI2OTJhMjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcApAQCAtMjIwOCwxMSArMjIwOCwxOCBAQCBib29sIFBhZ2U6OnNob3VsZFVwZGF0
ZUFjY2Vzc2liaWxpdHlSZWdpb25zKCkgY29uc3QKICAgICBBU1NFUlQobV9sYXN0UmVuZGVyaW5n
VXBkYXRlVGltZXN0YW1wID49IG1fbGFzdEFjY2Vzc2liaWxpdHlPYmplY3RSZWdpb25zVXBkYXRl
KTsKICAgICBpZiAoKG1fbGFzdFJlbmRlcmluZ1VwZGF0ZVRpbWVzdGFtcCAtIG1fbGFzdEFjY2Vz
c2liaWxpdHlPYmplY3RSZWdpb25zVXBkYXRlKSA8IHVwZGF0ZUludGVydmFsKSB7CiAgICAgICAg
IC8vIFdlJ3ZlIGFscmVhZHkgdXBkYXRlZCBhY2Nlc3NpYmlsaXR5IG9iamVjdCByZWN0cyByZWNl
bnRseSwgc28gc2tpcCB0aGlzIHVwZGF0ZSBhbmQgc2NoZWR1bGUgYW5vdGhlciBmb3IgbGF0ZXIu
Ci0gICAgICAgIGF1dG8qIGxvY2FsTWFpbkZyYW1lID0gZHluYW1pY0Rvd25jYXN0PExvY2FsRnJh
bWU+KG1haW5GcmFtZSgpKTsKLSAgICAgICAgUmVmUHRyIG1haW5Eb2N1bWVudCA9IGxvY2FsTWFp
bkZyYW1lID8gbG9jYWxNYWluRnJhbWUtPmRvY3VtZW50KCkgOiBudWxscHRyOworCisgICAgICAg
IFJlZlB0cjxEb2N1bWVudD4gcHJvdGVjdGVkTWFpbkRvY3VtZW50OworICAgICAgICBpZiAoYXV0
byogbG9jYWxNYWluRnJhbWUgPSBkeW5hbWljRG93bmNhc3Q8TG9jYWxGcmFtZT4obWFpbkZyYW1l
KCkpKQorICAgICAgICAgICAgcHJvdGVjdGVkTWFpbkRvY3VtZW50ID0gbG9jYWxNYWluRnJhbWUg
PyBsb2NhbE1haW5GcmFtZS0+ZG9jdW1lbnQoKSA6IG51bGxwdHI7CisgICAgICAgIGVsc2UgaWYg
KGF1dG8qIHJlbW90ZUZyYW1lID0gZHluYW1pY0Rvd25jYXN0PFJlbW90ZUZyYW1lPihtYWluRnJh
bWUoKSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBvd25lciA9IHJlbW90ZUZyYW1lLT5vd25l
ckVsZW1lbnQoKSkKKyAgICAgICAgICAgICAgICBwcm90ZWN0ZWRNYWluRG9jdW1lbnQgPSAmKG93
bmVyLT5kb2N1bWVudCgpKTsKKyAgICAgICAgfQorCiAgICAgICAgIC8vIElmIGFjY2Vzc2liaWxp
dHkgaXMgZW5hYmxlZCBhbmQgd2UgaGF2ZSBhIG1haW4gZG9jdW1lbnQsIHRoYXQgZG9jdW1lbnQg
c2hvdWxkIGhhdmUgYW4gQVggb2JqZWN0IGNhY2hlLgotICAgICAgICBBU1NFUlQoIW1haW5Eb2N1
bWVudCB8fCBtYWluRG9jdW1lbnQtPmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpKTsKLSAgICAgICAg
aWYgKENoZWNrZWRQdHIgdG9wQXhPYmplY3RDYWNoZSA9IG1haW5Eb2N1bWVudCA/IG1haW5Eb2N1
bWVudC0+ZXhpc3RpbmdBWE9iamVjdENhY2hlKCkgOiBudWxscHRyKQorICAgICAgICBBU1NFUlQo
IXByb3RlY3RlZE1haW5Eb2N1bWVudCB8fCBwcm90ZWN0ZWRNYWluRG9jdW1lbnQtPmV4aXN0aW5n
QVhPYmplY3RDYWNoZSgpKTsKKyAgICAgICAgaWYgKENoZWNrZWRQdHIgdG9wQXhPYmplY3RDYWNo
ZSA9IHByb3RlY3RlZE1haW5Eb2N1bWVudCA/IHByb3RlY3RlZE1haW5Eb2N1bWVudC0+ZXhpc3Rp
bmdBWE9iamVjdENhY2hlKCkgOiBudWxscHRyKQogICAgICAgICAgICAgdG9wQXhPYmplY3RDYWNo
ZS0+c2NoZWR1bGVPYmplY3RSZWdpb25zVXBkYXRlKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuY3BwCmluZGV4IDcxMmMwYjIyMGZkMC4u
NTBiMGEyNWNmZGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmNwcApAQCAtMTAwLDYg
KzEwMCwyMSBAQCB2b2lkIFJlbW90ZUZyYW1lOjpicm9hZGNhc3RGcmFtZVJlbW92YWxUb090aGVy
UHJvY2Vzc2VzKCkKICAgICBtX2NsaWVudC0+YnJvYWRjYXN0RnJhbWVSZW1vdmFsVG9PdGhlclBy
b2Nlc3NlcygpOwogfQogCit2b2lkIFJlbW90ZUZyYW1lOjp1cGRhdGVSZW1vdGVGcmFtZUFjY2Vz
c2liaWxpdHlPZmZzZXQoSW50UG9pbnQgb2Zmc2V0KQoreworICAgIG1fY2xpZW50LT51cGRhdGVS
ZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQoZnJhbWVJRCgpLCBvZmZzZXQpOworfQorCit2
b2lkIFJlbW90ZUZyYW1lOjp1bmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9j
ZXNzSWRlbnRpZmllcikKK3sKKyAgICBtX2NsaWVudC0+dW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0
eUZyYW1lcyhwcm9jZXNzSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlRnJhbWU6OmJpbmRS
ZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgc3RkOjpzcGFu
PGNvbnN0IHVpbnQ4X3Q+IGRhdGFUb2tlbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBz
dGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIGludCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgcmV0dXJuIG1fY2xpZW50LT5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhwcm9jZXNz
SWRlbnRpZmllciwgZnJhbWVJRCgpLCBkYXRhVG9rZW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKK30KKwogRnJhbWVWaWV3KiBSZW1vdGVGcmFtZTo6dmlydHVhbFZpZXcoKSBjb25zdAog
ewogICAgIHJldHVybiBtX3ZpZXcuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1JlbW90ZUZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmgKaW5k
ZXggMjdlZDg0MGQwODJlLi5jZDgyYTc5Y2MzMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUmVtb3RlRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1l
LmgKQEAgLTMzLDYgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBJbnRQ
b2ludDsKIGNsYXNzIFJlbW90ZURPTVdpbmRvdzsKIGNsYXNzIFJlbW90ZUZyYW1lQ2xpZW50Owog
Y2xhc3MgUmVtb3RlRnJhbWVWaWV3OwpAQCAtNjIsNiArNjMsOSBAQCBwdWJsaWM6CiAgICAgTWFy
a2FibGU8TGF5ZXJIb3N0aW5nQ29udGV4dElkZW50aWZpZXI+IGxheWVySG9zdGluZ0NvbnRleHRJ
ZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXllckhvc3RpbmdDb250ZXh0SWRlbnRpZmll
cjsgfQogCiAgICAgU3RyaW5nIHJlbmRlclRyZWVBc1RleHQoc2l6ZV90IGJhc2VJbmRlbnQsIE9w
dGlvblNldDxSZW5kZXJBc1RleHRGbGFnPik7CisgICAgdm9pZCBiaW5kUmVtb3RlQWNjZXNzaWJp
bGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90
PiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIGludCk+
JiYpOworICAgIHZvaWQgdXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KEludFBv
aW50KTsKKyAgICB2b2lkIHVuYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50KTsKIAog
cHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBSZW1vdGVGcmFtZShQYWdlJiwg
VW5pcXVlUmVmPFJlbW90ZUZyYW1lQ2xpZW50PiYmLCBGcmFtZUlkZW50aWZpZXIsIEhUTUxGcmFt
ZU93bmVyRWxlbWVudCosIEZyYW1lKiBwYXJlbnQsIE1hcmthYmxlPExheWVySG9zdGluZ0NvbnRl
eHRJZGVudGlmaWVyPiwgRnJhbWUqIG9wZW5lciA9IG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9SZW1vdGVGcmFtZUNsaWVudC5oCmluZGV4IDRlZmQxMDNmMzkxMi4uNTQxYTBkMDFjNTYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZUNsaWVudC5oCkBAIC0zMCw2ICszMCw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRGF0YVNlZ21lbnQ7CiBjbGFzcyBGcmFt
ZUxvYWRSZXF1ZXN0OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luRGF0YTsK
QEAgLTQ4LDYgKzQ5LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHJlbmRlclRyZWVB
c1RleHQoc2l6ZV90IGJhc2VJbmRlbnQsIE9wdGlvblNldDxSZW5kZXJBc1RleHRGbGFnPikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBicm9hZGNhc3RGcmFtZVJlbW92YWxUb090aGVyUHJvY2Vzc2Vz
KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZVBhZ2UoKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwg
RnJhbWVJZGVudGlmaWVyIHRhcmdldCwgY29uc3Qgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRh
dGFUb2tlbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6OnNwYW48Y29uc3QgdWlu
dDhfdD4sIGludCk+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVtb3RlRnJhbWVB
Y2Nlc3NpYmlsaXR5T2Zmc2V0KEZyYW1lSWRlbnRpZmllciB0YXJnZXQsIEludFBvaW50KSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHVuYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50KSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGZvY3VzKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bmZv
Y3VzKCkgPSAwOwogICAgIHZpcnR1YWwgflJlbW90ZUZyYW1lQ2xpZW50KCkgeyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggODRmYzQxOWU1OWNhLi40MmVlZTY2YWIxNmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTQyLDYgKzQyLDcgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL0RyYWdBY3Rpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0b3JD
bGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvY3VzRGlyZWN0aW9uLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9GcmFtZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lucHV0TW9kZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFDb250cm9sc0NvbnRleHRNZW51SXRlbS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2Nyb2xsVHlwZXMuaD4KQEAgLTMxOCw3ICszMTksNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVVbmRvUmVkbyhVbmRvT3JSZWRvKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHdoZWVsRXZlbnRXYXNOb3RIYW5kbGVkQnlXZWJDb3JlKGNvbnN0IE5hdGl2
ZVdlYldoZWVsRXZlbnQmKSA9IDA7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdmlydHVhbCB2
b2lkIGFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChzdGQ6OnNwYW48Y29uc3Qg
dWludDhfdD4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NU
b2tlblJlY2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCBwaWRfdCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBleGVjdXRlU2F2ZWRDb21tYW5k
QnlTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9yKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZVNlY3VyZUlucHV0U3RhdGUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0U2Vj
dXJlSW5wdXRTdGF0ZSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zp
c2lvbmFsUGFnZVByb3h5LmNwcAppbmRleCAwNTAzMDg2MzkxZmIuLjNlM2I4MTk1ZDA0OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcApA
QCAtNTQ1LDcgKzU0NSw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OnJlcXVlc3RQYXNz
d29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QKICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCi12b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpyZWdpc3RlcldlYlBy
b2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCit2
b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpyZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5
VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEsIEZyYW1lSWRlbnRpZmllcikKIHsK
ICAgICBtX2FjY2Vzc2liaWxpdHlUb2tlbiA9IFZlY3RvcihkYXRhKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCmluZGV4IGRlZWNkNzZhMjAy
NC4uZDBiN2VjY2VlZmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92
aXNpb25hbFBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lv
bmFsUGFnZVByb3h5LmgKQEAgLTE3Miw3ICsxNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVx
dWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcm
IGZpbGVOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKICNl
bmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgcmVnaXN0ZXJXZWJQcm9jZXNzQWNj
ZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Pik7CisgICAgdm9pZCByZWdp
c3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKSB8
fCBQTEFURk9STShXUEUpCiAgICAgdm9pZCBiaW5kQWNjZXNzaWJpbGl0eVRyZWUoY29uc3QgU3Ry
aW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCmluZGV4IGYy
ZmM4YTU0ZDg4My4uMjMwMzA3YTE3NGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJGcmFtZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJG
cmFtZVByb3h5LmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5o
IgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFzdGVi
b2FyZFByb3h5LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVk
ZSAiV2Vic2l0ZVBvbGljaWVzRGF0YS5oIgpAQCAtMTg0LDYgKzE4NSwxNCBAQCB2b2lkIFdlYkZy
YW1lUHJveHk6Om5hdmlnYXRlU2VydmljZVdvcmtlckNsaWVudChXZWJDb3JlOjpTY3JpcHRFeGVj
dXRpb25Db250ZXh0SQogICAgIH0pOwogfQogCit2b2lkIFdlYkZyYW1lUHJveHk6OmJpbmRBY2Nl
c3NpYmlsaXR5RnJhbWVXaXRoRGF0YShzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSkKK3sK
KyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzOjpCaW5kQWNjZXNzaWJpbGl0eUZyYW1lV2l0aERhdGEobV9mcmFt
ZUlELCBkYXRhKSk7Cit9CisKIHZvaWQgV2ViRnJhbWVQcm94eTo6bG9hZFVSTChjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKIHsKICAgICBpZiAoIW1fcGFnZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaAppbmRleCBiMGRhZWIwZTY0ZmMuLjcxNWJi
ODBiYWI2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaApAQCAtMTcw
LDYgKzE3MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW90ZVByb2Nlc3NEaWRUZXJtaW5hdGUo
KTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiB3ZWJQYWdlSURJ
bkN1cnJlbnRQcm9jZXNzKCk7CiAgICAgdm9pZCBub3RpZnlQYXJlbnRPZkxvYWRDb21wbGV0aW9u
KFdlYlByb2Nlc3NQcm94eSYpOworICAgIHZvaWQgcmVtb3ZlUmVtb3RlUGFnZXNGb3JTdXNwZW5z
aW9uKCk7CisgICAgdm9pZCBiaW5kQWNjZXNzaWJpbGl0eUZyYW1lV2l0aERhdGEoc3RkOjpzcGFu
PGNvbnN0IHVpbnQ4X3Q+KTsKIAogICAgIGJvb2wgaXNGb2N1c2VkKCkgY29uc3Q7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDQ2YzIxNDNhOTRhYi4uZjM3
MTFlODU3MjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAg
LTEyOTUsOCArMTI5NSwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3dhcFRvUHJvdmlzaW9uYWxQ
YWdlKHN0ZDo6dW5pcXVlX3B0cjxQcm92aXNpb25hbFBhZ2VQcm94eT4gcAogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgYXV0byBhY2Nlc3NpYmlsaXR5VG9rZW4gPSBwcm92aXNpb25hbFBhZ2Ut
PnRha2VBY2Nlc3NpYmlsaXR5VG9rZW4oKTsKLSAgICBpZiAoIWFjY2Vzc2liaWxpdHlUb2tlbi5p
c0VtcHR5KCkpCi0gICAgICAgIHJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbih7
IGFjY2Vzc2liaWxpdHlUb2tlbi5kYXRhKCksIGFjY2Vzc2liaWxpdHlUb2tlbi5zaXplKCkgfSk7
CisgICAgaWYgKCFhY2Nlc3NpYmlsaXR5VG9rZW4uaXNFbXB0eSgpKSB7CisgICAgICAgIHJlZ2lz
dGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbih7IGFjY2Vzc2liaWxpdHlUb2tlbi5kYXRh
KCksIGFjY2Vzc2liaWxpdHlUb2tlbi5zaXplKCkgfSwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IHsKKyAgICAgICAgICAgIE9iamVjdElkZW50aWZpZXI8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
VHlwZT4oMCksCisgICAgICAgICAgICBPYmplY3RJZGVudGlmaWVyPFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyVHlwZT4oMCkKKyAgICAgICAgfSk7CisgICAgfQogI2VuZGlmCiAjaWYgUExBVEZP
Uk0oR1RLKSB8fCBQTEFURk9STShXUEUpCiAgICAgYXV0byBhY2Nlc3NpYmlsaXR5UGx1Z0lEID0g
cHJvdmlzaW9uYWxQYWdlLT5hY2Nlc3NpYmlsaXR5UGx1Z0lEKCk7CkBAIC0xMzc0NCw2ICsxMzc0
OCwyMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YWRkQ29uc29sZU1lc3NhZ2UoRnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIE1lc3NhZ2VTb3VyY2UgbWVzcwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgZnJhbWVJRCwgbWVzc2FnZVNvdXJjZSwgbWVzc2FnZUxl
dmVsLCBtZXNzYWdlLCBjb3JlSWRlbnRpZmllciB9KTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6
OmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IHN0ZDo6c3Bhbjxjb25zdCB1aW50
OF90PiBkYXRhVG9rZW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpzcGFuPGNvbnN0IHVp
bnQ4X3Q+LCBpbnQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8gc2VuZFJlc3Vs
dCA9IHNlbmRTeW5jVG9Qcm9jZXNzQ29udGFpbmluZ0ZyYW1lKGZyYW1lSUQsIE1lc3NhZ2VzOjpX
ZWJQYWdlOjpCaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhwcm9jZXNzSWRlbnRpZmllciwg
ZnJhbWVJRCwgZGF0YVRva2VuKSk7CisgICAgaWYgKCFzZW5kUmVzdWx0LnN1Y2NlZWRlZCgpKQor
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9LCAwKTsKKworICAgIGF1dG8gW2Zy
YW1lRGF0YVRva2VuLCBmcmFtZVByb2Nlc3NJZGVudGlmaWVyXSA9IHNlbmRSZXN1bHQudGFrZVJl
cGx5KCk7CisKKyAgICBjb21wbGV0aW9uSGFuZGxlcihmcmFtZURhdGFUb2tlbiwgZnJhbWVQcm9j
ZXNzSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVSZW1vdGVGcmFt
ZUFjY2Vzc2liaWxpdHlPZmZzZXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdl
YkNvcmU6OkludFBvaW50IG9mZnNldCkKK3sKKyAgICBzZW5kVG9Qcm9jZXNzQ29udGFpbmluZ0Zy
YW1lKGZyYW1lSUQsIE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVSZW1vdGVQYWdlQWNjZXNzaWJp
bGl0eU9mZnNldChmcmFtZUlELCBvZmZzZXQpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CiAKICN1bmRlZiBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0cKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKaW5kZXggY2M4NmRkYzZhNWJmLi43MDM0OGM2ZjY2MWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMzU1LDcgKzEzNTUsNyBAQCBwdWJs
aWM6CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAvLyBDYWxsZWQgYnkgdGhlIHdlYiBwcm9j
ZXNzIHRocm91Z2ggYSBtZXNzYWdlLgotICAgIHZvaWQgcmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNz
aWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Pik7CisgICAgdm9pZCByZWdpc3Rl
cldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIC8vIENhbGxlZCBieSB0aGUgVUkgcHJvY2Vz
cyB3aGVuIGl0IGlzIHJlYWR5IHRvIHNlbmQgaXRzIHRva2VucyB0byB0aGUgd2ViIHByb2Nlc3Mu
CiAgICAgdm9pZCByZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoc3RkOjpzcGFu
PGNvbnN0IHVpbnQ4X3Q+IGVsZW1lbnRUb2tlbiwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHdp
bmRvd1Rva2VuKTsKICAgICB2b2lkIHJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pOwpA
QCAtMjk3OCw2ICsyOTc4LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGZvY3VzUmVtb3RlRnJhbWUo
SVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lkIHBv
c3RNZXNzYWdlVG9SZW1vdGUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHNvdXJjZSwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VPcmlnaW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciB0YXJnZXQsIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiB0YXJnZXRPcmlnaW4sIGNv
bnN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJik7CiAgICAgdm9pZCByZW5kZXJU
cmVlQXNUZXh0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgc2l6ZV90IGJhc2VJbmRlbnQsIE9w
dGlvblNldDxXZWJDb3JlOjpSZW5kZXJBc1RleHRGbGFnPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdHJpbmcmJik+JiYpOworICAgIHZvaWQgYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMo
aW50IHByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHN0ZDo6c3Bh
bjxjb25zdCB1aW50OF90PiBkYXRhVG9rZW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpz
cGFuPGNvbnN0IHVpbnQ4X3Q+LCBpbnQpPiYmKTsKKyAgICB2b2lkIHVwZGF0ZVJlbW90ZUZyYW1l
QWNjZXNzaWJpbGl0eU9mZnNldChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6Oklu
dFBvaW50KTsKIAogICAgIHZvaWQgc2V0VGV4dEluZGljYXRvckZyb21GcmFtZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhJiYsIHVpbnQ2NF90KTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
CmluZGV4IDQ5Mzg2MjZiZjhhMi4uYTU0MmYxNzZiNTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zMjQsNyArMzI0LDcgQEAg
bWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBFeGVjdXRlU2F2ZWRDb21tYW5kQnlTZWxl
Y3RvcihTdHJpbmcgc2VsZWN0b3IpIC0+IChib29sIGhhbmRsZWQpIFN5bmNocm9ub3VzCiAKICAg
ICAjIFJlbW90ZSBhY2Nlc3NpYmlsaXR5IG1lc3NhZ2VzCi0gICAgUmVnaXN0ZXJXZWJQcm9jZXNz
QWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhKQorICAgIFJl
Z2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhf
dD4gZGF0YSwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCiAKICAgICAjIFNwZWVj
aCBtZXNzYWdlcwogICAgIEdldElzU3BlYWtpbmcoKSAtPiAoYm9vbCBpc1NwZWFraW5nKSBTeW5j
aHJvbm91cwpAQCAtNjMwLDQgKzYzMCw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAg
ICAgRm9jdXNSZW1vdGVGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKICAg
ICBQb3N0TWVzc2FnZVRvUmVtb3RlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBzb3VyY2UsIFN0
cmluZyBzb3VyY2VPcmlnaW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciB0YXJnZXQsIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiB0YXJnZXRPcmlnaW4sIHN0cnVj
dCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBtZXNzYWdlKQogICAgIFJlbmRlclRy
ZWVBc1RleHQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGlkZW50aWZpZXIsIHNpemVfdCBiYXNl
SW5kZW50LCBPcHRpb25TZXQ8V2ViQ29yZTo6UmVuZGVyQXNUZXh0RmxhZz4gYmVoYXZpb3IpIC0+
IChTdHJpbmcgcmVuZGVyVHJlZUR1bXApIFN5bmNocm9ub3VzCisgICAgQmluZFJlbW90ZUFjY2Vz
c2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGFUb2tlbikgLT4gKHN0
ZDo6c3Bhbjxjb25zdCB1aW50OF90PiB0b2tlbiwgaW50IHByb2Nlc3NJZGVudGlmaWVyKSBTeW5j
aHJvbm91cworICAgIFVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6SW50UG9pbnQgb2Zmc2V0KQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRl
eCAxMGM0ZjZhZTEyNTAuLjYzODhjYjQ2NzJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTExMCw3ICsxMTAsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgY2xlYXJBbGxFZGl0Q29tbWFuZHMoKSBvdmVycmlkZTsKICAgICBib29sIGNh
blVuZG9SZWRvKFVuZG9PclJlZG8pIG92ZXJyaWRlOwogICAgIHZvaWQgZXhlY3V0ZVVuZG9SZWRv
KFVuZG9PclJlZG8pIG92ZXJyaWRlOwotICAgIHZvaWQgYWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NU
b2tlblJlY2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Pikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBhY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVp
bnQ4X3Q+LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHBpZF90KSBvdmVycmlkZTsKICAgICBi
b29sIGV4ZWN1dGVTYXZlZENvbW1hbmRCeVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3Ip
IG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlU2VjdXJlSW5wdXRTdGF0ZSgpIG92ZXJyaWRlOwog
ICAgIHZvaWQgcmVzZXRTZWN1cmVJbnB1dFN0YXRlKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggY2IyM2Y0OTc0
YTZiLi5iNWFkZGRjZTIzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTM4OSw3ICszODksNyBAQCB2b2lkIFBhZ2VDbGllbnRJ
bXBsOjpleGVjdXRlVW5kb1JlZG8oVW5kb09yUmVkbyB1bmRvT3JSZWRvKQogICAgIHJldHVybiAo
dW5kb09yUmVkbyA9PSBVbmRvT3JSZWRvOjpVbmRvKSA/IFtbY29udGVudFZpZXcoKSB1bmRvTWFu
YWdlcl0gdW5kb10gOiBbW2NvbnRlbnRWaWV3KCkgdW5kb01hbmFnZXJdIHJlZG9dOwogfQogCi12
b2lkIFBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQo
c3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjphY2Nl
c3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+
IGRhdGEsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgcGlkX3QpCiB7CiAgICAgTlNEYXRhICpy
ZW1vdGVUb2tlbiA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczpkYXRhLmRhdGEoKSBsZW5ndGg6ZGF0
YS5zaXplKCldOwogICAgIFtjb250ZW50VmlldygpIF9zZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vz
c1Rva2VuOnJlbW90ZVRva2VuXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2Vi
UGFnZVByb3h5SU9TLm1tCmluZGV4IDViMTBmNTljNjY2MS4uZGViNGQ1OGU1ZmQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTc2Mywx
MSArNzYzLDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTbWFydEluc2VydERlbGV0ZUVuYWJs
ZWQoYm9vbCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
cmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50
OF90PiBkYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2li
aWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSwgRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQpCiB7Ci0gICAgcHJvdGVjdGVkUGFnZUNsaWVudCgpLT5hY2Nlc3NpYmlsaXR5V2Vi
UHJvY2Vzc1Rva2VuUmVjZWl2ZWQoZGF0YSk7Ci19ICAgIAotCisgICAgcGFnZUNsaWVudCgpLmFj
Y2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChkYXRhLCBmcmFtZUlELCBtZXNzYWdl
U2VuZGVyQ29ubmVjdGlvbigpLT5yZW1vdGVQcm9jZXNzSUQoKSk7Cit9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpyZWxheUFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3Rp
ZmljYXRpb25OYW1lLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSkKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKaW5kZXggZmI2YzYw
Nzg2N2FmLi5iZjhkYTQzMGQ4YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9QYWdlQ2xpZW50SW1wbE1hYy5oCkBAIC0xNzYsNyArMTc2LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGdlc3R1cmVFdmVudFdhc05vdEhhbmRsZWRCeVdlYkNvcmUoY29uc3QgTmF0aXZlV2ViR2Vz
dHVyZUV2ZW50Jikgb3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIHZvaWQgYWNjZXNzaWJpbGl0eVdl
YlByb2Nlc3NUb2tlblJlY2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Pikgb3ZlcnJpZGU7
CisgICAgdm9pZCBhY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFu
PGNvbnN0IHVpbnQ4X3Q+LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHBpZF90KSBvdmVycmlk
ZTsKIAogICAgIHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBh
c3Npc3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKCkgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KaW5kZXggMDc4
MGYxOGRhMWMyLi4wMTUwZWM0NTEyY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KQEAgLTU4MSw5ICs1ODEsOSBAQCB2b2lkIFBhZ2VD
bGllbnRJbXBsOjpzZXRUZXh0SW5kaWNhdG9yQW5pbWF0aW9uUHJvZ3Jlc3MoZmxvYXQgcHJvZ3Jl
c3MpCiAgICAgbV9pbXBsLT5zZXRUZXh0SW5kaWNhdG9yQW5pbWF0aW9uUHJvZ3Jlc3MocHJvZ3Jl
c3MpOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rv
a2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCit2b2lkIFBhZ2VDbGll
bnRJbXBsOjphY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNv
bnN0IHVpbnQ4X3Q+IGRhdGEsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBwaWRf
dCBwaWQpCiB7Ci0gICAgbV9pbXBsLT5zZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuKFtO
U0RhdGEgZGF0YVdpdGhCeXRlczpkYXRhLmRhdGEoKSBsZW5ndGg6ZGF0YS5zaXplKCldKTsKKyAg
ICBtX2ltcGwtPnNldEFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW4oW05TRGF0YSBkYXRhV2l0
aEJ5dGVzOmRhdGEuZGF0YSgpIGxlbmd0aDpkYXRhLnNpemUoKV0sIGZyYW1lSUQsIHBpZCk7CiB9
CiAgICAgCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdN
b2RlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGxheWVyVHJlZUNvbnRleHQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCBjZmIxMGZkYmI0
MTMuLjg2OTYxN2EyOWQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2Vi
UGFnZVByb3h5TWFjLm1tCkBAIC0zMDYsMTIgKzMwNiwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAoY29uc3QgRGljdGlvbmFyeVBvcHVwSW5mbyYgZGlj
dGlvbgogICAgIHByb3RlY3RlZFBhZ2VDbGllbnQoKS0+ZGlkUGVyZm9ybURpY3Rpb25hcnlMb29r
dXAoZGljdGlvbmFyeVBvcHVwSW5mbyk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZWdpc3Rl
cldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRh
dGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRv
a2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCkKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKICAg
ICAKLSAgICBwcm90ZWN0ZWRQYWdlQ2xpZW50KCktPmFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9r
ZW5SZWNlaXZlZChkYXRhKTsKKyAgICBwcm90ZWN0ZWRQYWdlQ2xpZW50KCktPmFjY2Vzc2liaWxp
dHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChkYXRhLCBmcmFtZUlELCBtZXNzYWdlU2VuZGVyQ29u
bmVjdGlvbigpLT5yZW1vdGVQcm9jZXNzSUQoKSk7CiB9ICAgIAogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6bWFrZUZpcnN0UmVzcG9uZGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlZp
ZXdJbXBsLmgKaW5kZXggMDNkZmRhZWUxNTNjLi41YTJlMTI5ZmRjOGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3SW1wbC5oCkBAIC00NDgsNyArNDQ4LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0SWdub3Jlc01vdXNlRHJhZ2dlZEV2ZW50cyhib29sKTsKICAgICBib29s
IGlnbm9yZXNNb3VzZURyYWdnZWRFdmVudHMoKSBjb25zdCB7IHJldHVybiBtX2lnbm9yZXNNb3Vz
ZURyYWdnZWRFdmVudHM7IH0KIAotICAgIHZvaWQgc2V0QWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NU
b2tlbihOU0RhdGEgKik7CisgICAgdm9pZCBzZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2Vu
KE5TRGF0YSAqLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHBpZF90KTsKICAgICB2b2lkIGFj
Y2Vzc2liaWxpdHlSZWdpc3RlclVJUHJvY2Vzc1Rva2VucygpOwogICAgIHZvaWQgdXBkYXRlUmVt
b3RlQWNjZXNzaWJpbGl0eVJlZ2lzdHJhdGlvbihib29sIHJlZ2lzdGVyUHJvY2Vzcyk7CiAgICAg
aWQgYWNjZXNzaWJpbGl0eUZvY3VzZWRVSUVsZW1lbnQoKTsKQEAgLTkyNyw2ICs5MjcsNyBAQCBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICBib29sIG1fYWxsb3dzTWFnbmlm
aWNhdGlvbiB7IGZhbHNlIH07CiAKICAgICBSZXRhaW5QdHI8TlNBY2Nlc3NpYmlsaXR5UmVtb3Rl
VUlFbGVtZW50PiBtX3JlbW90ZUFjY2Vzc2liaWxpdHlDaGlsZDsKKyAgICBSZXRhaW5QdHI8TlNN
dXRhYmxlRGljdGlvbmFyeT4gbV9yZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVDYWNoZTsKIAogICAg
IFJlZlB0cjxXZWJDb3JlOjpJbWFnZT4gbV9wcm9taXNlZEltYWdlOwogICAgIFN0cmluZyBtX3By
b21pc2VkRmlsZW5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwu
bW0KaW5kZXggNWJkZTExMTYyNzkwLi5hNGIzMDdkNzZlNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwubW0KQEAgLTM0ODEsMTAgKzM0ODEsMTIgQEAgdm9pZCBX
ZWJWaWV3SW1wbDo6c2V0SWdub3Jlc01vdXNlRHJhZ2dlZEV2ZW50cyhib29sIGlnbm9yZXNNb3Vz
ZURyYWdnZWRFdmVudHMpCiAgICAgbV9pZ25vcmVzTW91c2VEcmFnZ2VkRXZlbnRzID0gaWdub3Jl
c01vdXNlRHJhZ2dlZEV2ZW50czsKIH0KIAotdm9pZCBXZWJWaWV3SW1wbDo6c2V0QWNjZXNzaWJp
bGl0eVdlYlByb2Nlc3NUb2tlbihOU0RhdGEgKmRhdGEpCit2b2lkIFdlYlZpZXdJbXBsOjpzZXRB
Y2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuKE5TRGF0YSAqZGF0YSwgV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIHBpZF90IHBpZCkKIHsKLSAgICBtX3JlbW90ZUFjY2Vzc2liaWxp
dHlDaGlsZCA9IGRhdGEubGVuZ3RoID8gYWRvcHROUyhbW05TQWNjZXNzaWJpbGl0eVJlbW90ZVVJ
RWxlbWVudCBhbGxvY10gaW5pdFdpdGhSZW1vdGVUb2tlbjpkYXRhXSkgOiBuaWw7Ci0gICAgdXBk
YXRlUmVtb3RlQWNjZXNzaWJpbGl0eVJlZ2lzdHJhdGlvbih0cnVlKTsKKyAgICBpZiAocGlkID09
IG1fcGFnZS0+cHJvY2VzcygpLnByb2Nlc3NJRCgpKSB7CisgICAgICAgIG1fcmVtb3RlQWNjZXNz
aWJpbGl0eUNoaWxkID0gZGF0YS5sZW5ndGggPyBhZG9wdE5TKFtbTlNBY2Nlc3NpYmlsaXR5UmVt
b3RlVUlFbGVtZW50IGFsbG9jXSBpbml0V2l0aFJlbW90ZVRva2VuOmRhdGFdKSA6IG5pbDsKKyAg
ICAgICAgdXBkYXRlUmVtb3RlQWNjZXNzaWJpbGl0eVJlZ2lzdHJhdGlvbih0cnVlKTsKKyAgICB9
CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OnVwZGF0ZVJlbW90ZUFjY2Vzc2liaWxpdHlSZWdpc3Ry
YXRpb24oYm9vbCByZWdpc3RlclByb2Nlc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRl
ckNsaWVudC5jcHAKaW5kZXggN2QyYTQyNjVmZDVjLi5mM2Y3M2YzNjdlYWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJMb2NhbEZyYW1lTG9h
ZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTE4MDcsNiArMTgwNywxMiBAQCB2
b2lkIFdlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbERlc3Ryb3lHbG9iYWxP
YmplY3RGb3JET01XaW5kb3dFeHRlbgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgCitXZWJD
b3JlOjpJbnRQb2ludCBXZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50OjphY2Nlc3NpYmlsaXR5UmVt
b3RlRnJhbWVPZmZzZXQoKQoreworICAgIFJlZlB0ciB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgp
OworICAgIHJldHVybiB3ZWJQYWdlID8gd2ViUGFnZS0+YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1l
T2Zmc2V0KCkgOiBJbnRQb2ludCgpOworfQorCiBSZW1vdGVBWE9iamVjdFJlZiBXZWJMb2NhbEZy
YW1lTG9hZGVyQ2xpZW50OjphY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkKIHsKICAgICBSZWZQ
dHIgd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRl
ckNsaWVudC5oCmluZGV4IDg4YzhjYzVjYjcyZS4uOWYzYjY3ZjBmY2I4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRl
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTI0MCw2ICsyNDAsNyBAQCBwcml2YXRlOgog
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmVtb3RlQVhPYmplY3RSZWYgYWNjZXNzaWJpbGl0
eVJlbW90ZU9iamVjdCgpIGZpbmFsOworICAgIFdlYkNvcmU6OkludFBvaW50IGFjY2Vzc2liaWxp
dHlSZW1vdGVGcmFtZU9mZnNldCgpIGZpbmFsOwogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lT
T0xBVEVEX1RSRUUpCiAgICAgdm9pZCBzZXRBWElzb2xhdGVkVHJlZVJvb3QoV2ViQ29yZTo6QVhD
b3JlT2JqZWN0KikgZmluYWw7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuY3Bw
CmluZGV4IDhjYmZmMmM5YjhjOS4uMmJmMTUyODc5N2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFt
ZUNsaWVudC5jcHAKQEAgLTk2LDYgKzk2LDQ0IEBAIFN0cmluZyBXZWJSZW1vdGVGcmFtZUNsaWVu
dDo6cmVuZGVyVHJlZUFzVGV4dChzaXplX3QgYmFzZUluZGVudCwgT3B0aW9uU2V0PFJlbmRlCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAordm9pZCBXZWJSZW1vdGVGcmFtZUNsaWVudDo6dW5iaW5k
UmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIpCit7CisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgLy8gTWFrZSBzdXJlIEFwcEtpdCBzeXN0ZW0ga25vd3MgYWJv
dXQgb3VyIHJlbW90ZSBVSSBwcm9jZXNzIHN0YXR1cyBub3cuCisgICAgaWYgKFJlZlB0ciBwYWdl
ID0gbV9mcmFtZS0+cGFnZSgpKQorICAgICAgICBwYWdlLT5hY2Nlc3NpYmlsaXR5TWFuYWdlUmVt
b3RlRWxlbWVudFN0YXR1cyhmYWxzZSwgcHJvY2Vzc0lkZW50aWZpZXIpOworI2Vsc2UKKyAgICBV
TlVTRURfUEFSQU0ocHJvY2Vzc0lkZW50aWZpZXIpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViUmVt
b3RlRnJhbWVDbGllbnQ6OnVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6SW50UG9pbnQgb2Zmc2V0KQor
eworICAgIGlmIChSZWZQdHIgcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgcGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpVcGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxp
dHlPZmZzZXQoZnJhbWVJRCwgb2Zmc2V0KSk7Cit9CisKK3ZvaWQgV2ViUmVtb3RlRnJhbWVDbGll
bnQ6OmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IHN0ZDo6c3Bhbjxjb25zdCB1
aW50OF90PiBkYXRhVG9rZW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpzcGFuPGNvbnN0
IHVpbnQ4X3Q+LCBpbnQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFJlZlB0ciBwYWdl
ID0gbV9mcmFtZS0+cGFnZSgpOworICAgIGlmICghcGFnZSkgeworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4geyB9LCAwKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHBhZ2UtPnNlbmRTeW5jKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKHByb2Nlc3NJZGVu
dGlmaWVyLCBmcmFtZUlELCBkYXRhVG9rZW4pKTsKKyAgICBpZiAoIXNlbmRSZXN1bHQuc3VjY2Vl
ZGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gW3Jlc3VsdFRva2VuLCBwcm9jZXNz
SWRlbnRpZmllclJlc3VsdF0gPSBzZW5kUmVzdWx0LnRha2VSZXBseSgpOworCisgICAgLy8gTWFr
ZSBzdXJlIEFwcEtpdCBzeXN0ZW0ga25vd3MgYWJvdXQgb3VyIHJlbW90ZSBVSSBwcm9jZXNzIHN0
YXR1cyBub3cuCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgcGFnZS0+YWNjZXNzaWJpbGl0eU1h
bmFnZVJlbW90ZUVsZW1lbnRTdGF0dXModHJ1ZSwgcHJvY2Vzc0lkZW50aWZpZXJSZXN1bHQpOwor
I2VuZGlmCisgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0VG9rZW4sIHByb2Nlc3NJZGVudGlm
aWVyUmVzdWx0KTsKK30KKwogdm9pZCBXZWJSZW1vdGVGcmFtZUNsaWVudDo6YnJvYWRjYXN0RnJh
bWVSZW1vdmFsVG9PdGhlclByb2Nlc3NlcygpCiB7CiAgICAgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmJyb2FkY2FzdEZyYW1lUmVtb3ZhbFRvT3RoZXJQcm9jZXNzZXMoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90ZUZy
YW1lQ2xpZW50LmgKaW5kZXggNjI2ZTA1YzNlODhiLi5jODg5ZWI3ZTVmYWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJS
ZW1vdGVGcmFtZUNsaWVudC5oCkBAIC00OCw2ICs0OCwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQg
cG9zdE1lc3NhZ2VUb1JlbW90ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgc291cmNlLCBjb25z
dCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHRhcmdldCwg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IHRhcmdldE9yaWdpbiwg
Y29uc3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmKSBmaW5hbDsKICAgICB2b2lk
IGNoYW5nZUxvY2F0aW9uKFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3QmJikgZmluYWw7CiAgICAg
U3RyaW5nIHJlbmRlclRyZWVBc1RleHQoc2l6ZV90IGJhc2VJbmRlbnQsIE9wdGlvblNldDxXZWJD
b3JlOjpSZW5kZXJBc1RleHRGbGFnPikgZmluYWw7CisgICAgdm9pZCBiaW5kUmVtb3RlQWNjZXNz
aWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRp
Zmllciwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0
ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgaW50KT4mJikgZmluYWw7CisgICAgdm9pZCB1bmJpbmRS
ZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCkgZmluYWw7CisgICAgdm9pZCB1cGRhdGVSZW1v
dGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJD
b3JlOjpJbnRQb2ludCkgZmluYWw7CisKICAgICB2b2lkIGJyb2FkY2FzdEZyYW1lUmVtb3ZhbFRv
T3RoZXJQcm9jZXNzZXMoKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlUGFnZSgpIGZpbmFsOwogICAg
IHZvaWQgZm9jdXMoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQppbmRleCBhZTQzZjFhNDY5OGIuLjAyNDY0
MzdlMTJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29j
b2EvV2ViUGFnZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0NvY29hL1dlYlBhZ2VDb2NvYS5tbQpAQCAtNzcsNiArNzcsNyBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9VVElSZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9VVElVdGlsaXRpZXMuaD4KICNpbXBv
cnQgPHBhbC9zcGkvY29jb2EvTGF1bmNoU2VydmljZXNTUEkuaD4KKyNpbXBvcnQgPHBhbC9zcGkv
Y29jb2EvTlNBY2Nlc3NpYmlsaXR5U1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0
ekNvcmVTUEkuaD4KICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaD4KIApAQCAt
NDA0LDEwICs0MDUsNTEgQEAgdm9pZCBXZWJQYWdlOjpjbGVhckRpY3RhdGlvbkFsdGVybmF0aXZl
cyhWZWN0b3I8RGljdGF0aW9uQ29udGV4dD4mJiBjb250ZXh0cykKICAgICB9LCBEb2N1bWVudE1h
cmtlcjo6VHlwZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKIH0KIAotdm9pZCBXZWJQYWdlOjph
Y2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tlbihSZXRhaW5QdHI8TlNEYXRhPiByZW1vdGVU
b2tlbikKK3ZvaWQgV2ViUGFnZTo6YWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oUmV0
YWluUHRyPE5TRGF0YT4gcmVtb3RlVG9rZW4sIEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogewog
ICAgIHN0ZDo6c3BhbiBkYXRhVG9rZW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
W3JlbW90ZVRva2VuIGJ5dGVzXSksIFtyZW1vdGVUb2tlbiBsZW5ndGhdKTsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tl
bihkYXRhVG9rZW4pKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlZ2lzdGVy
V2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihkYXRhVG9rZW4sIGZyYW1lSUQpKTsKK30KKwor
dm9pZCBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5TWFuYWdlUmVtb3RlRWxlbWVudFN0YXR1cyhib29s
IHJlZ2lzdGVyU3RhdHVzLCBpbnQgcHJvY2Vzc0lkZW50aWZpZXIpCit7CisjaWYgUExBVEZPUk0o
TUFDKQorICAgIGlmIChyZWdpc3RlclN0YXR1cykKKyAgICAgICAgW05TQWNjZXNzaWJpbGl0eVJl
bW90ZVVJRWxlbWVudCByZWdpc3RlclJlbW90ZVVJUHJvY2Vzc0lkZW50aWZpZXI6cHJvY2Vzc0lk
ZW50aWZpZXJdOworICAgIGVsc2UKKyAgICAgICAgW05TQWNjZXNzaWJpbGl0eVJlbW90ZVVJRWxl
bWVudCB1bnJlZ2lzdGVyUmVtb3RlVUlQcm9jZXNzSWRlbnRpZmllcjpwcm9jZXNzSWRlbnRpZmll
cl07CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShyZWdpc3RlclN0YXR1cyk7CisgICAgVU5VU0VE
X1BBUkFNKHByb2Nlc3NJZGVudGlmaWVyKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlBhZ2U6OmJp
bmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRh
VG9rZW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBp
bnQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFJlZlB0ciB3ZWJGcmFtZSA9IFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpOworICAgIGlmICghd2ViRnJhbWUp
IHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcih7IH0sIDApOworICAgIH0KKworICAgIFJlZlB0ciBjb3JlTG9jYWxGcmFtZSA9
IHdlYkZyYW1lLT5jb3JlTG9jYWxGcmFtZSgpOworICAgIGlmICghY29yZUxvY2FsRnJhbWUpIHsK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcih7IH0sIDApOworICAgIH0KKworICAgIGF1dG8qIHJlbmRlcmVyID0gY29yZUxvY2Fs
RnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXIpIHsKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7
IH0sIDApOworICAgIH0KKworICAgIHJlZ2lzdGVyUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5VG9r
ZW5zKHByb2Nlc3NJZGVudGlmaWVyLCBkYXRhVG9rZW4pOworCisgICAgLy8gR2V0IG91ciByZW1v
dGUgdG9rZW4gZGF0YSBhbmQgc2VuZCBiYWNrIHRvIHRoZSBSZW1vdGVGcmFtZS4KKyAgICBhdXRv
IHJlbW90ZVRva2VuID0gYWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0YSgpOworICAgIHN0ZDo6
c3BhbiByZW1vdGVEYXRhVG9rZW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oW3Jl
bW90ZVRva2VuIGJ5dGVzXSksIFtyZW1vdGVUb2tlbiBsZW5ndGhdKTsKKyAgICBjb21wbGV0aW9u
SGFuZGxlcihyZW1vdGVEYXRhVG9rZW4sIGdldHBpZCgpKTsKIH0KIAogI2lmIEVOQUJMRShBUFBM
RV9QQVkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmlu
ZGV4IDhlNmE1YmE5MTI5Ni4uNTYxNDA0MTQxNjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTUzNiw2ICsxNTM2LDE2IEBAIHZvaWQgV2Vi
UGFnZTo6cGxhdGZvcm1EaWRTZWxlY3RBbGwoKQogCiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19G
QU1JTFkpCiAKKyNpZiAhUExBVEZPUk0oQ09DT0EpCit2b2lkIFdlYlBhZ2U6OmJpbmRSZW1vdGVB
Y2Nlc3NpYmlsaXR5RnJhbWVzKGludCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBzdGQ6OnNw
YW48Y29uc3QgdWludDhfdD4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpzcGFuPGNvbnN0
IHVpbnQ4X3Q+LCBpbnQpPiYmKQoreworfQorCit2b2lkIFdlYlBhZ2U6OnVwZGF0ZVJlbW90ZVBh
Z2VBY2Nlc3NpYmlsaXR5T2Zmc2V0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6
SW50UG9pbnQpCit7Cit9CisjZW5kaWYKKwogdm9pZCBXZWJQYWdlOjp1cGRhdGVFZGl0b3JTdGF0
ZUFmdGVyTGF5b3V0SWZFZGl0YWJpbGl0eUNoYW5nZWQoKQogewogICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgdXBkYXRlIEVkaXRvclN0YXRlSXNDb250ZW50RWRpdGFibGUgdG8gdHJhY2sgd2hldGhl
ciB0aGUgc3RhdGUgaXMgcmljaGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKaW5kZXggMDliM2U3ZTU5NTc1Li43NjEwZDQwYmM1MzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTY3MSw2ICs2NzEsMTAgQEAgcHVi
bGljOgogICAgIHZvaWQgY2xlYXJIaXN0b3J5KCk7CiAKICAgICB2b2lkIGFjY2Vzc2liaWxpdHlT
ZXR0aW5nc0RpZENoYW5nZSgpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgYWNjZXNz
aWJpbGl0eU1hbmFnZVJlbW90ZUVsZW1lbnRTdGF0dXMoYm9vbCwgaW50KTsKKyNlbmRpZgorCiAg
ICAgdm9pZCBzY3JlZW5Qcm9wZXJ0aWVzRGlkQ2hhbmdlKCk7CiAKICAgICB2b2lkIHNjYWxlUGFn
ZShkb3VibGUgc2NhbGUsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBvcmlnaW4pOwpAQCAtMTA0
Myw3ICsxMDQ3LDEwIEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHBs
YXRmb3JtSW5pdGlhbGl6ZUFjY2Vzc2liaWxpdHkoKTsKICAgICB2b2lkIHJlZ2lzdGVyVUlQcm9j
ZXNzQWNjZXNzaWJpbGl0eVRva2VucyhzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZWxlbWVudFRv
a2VuLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gd2luZG93VG9rZW4pOworICAgIHZvaWQgcmVn
aXN0ZXJSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlUb2tlbnMocGlkX3QsIHN0ZDo6c3Bhbjxjb25z
dCB1aW50OF90Pik7CiAgICAgV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdCogYWNjZXNzaWJp
bGl0eVJlbW90ZU9iamVjdCgpOworICAgIFdlYkNvcmU6OkludFBvaW50IGFjY2Vzc2liaWxpdHlS
ZW1vdGVGcmFtZU9mZnNldCgpOworICAgIHZvaWQgY3JlYXRlTW9ja0FjY2Vzc2liaWxpdHlFbGVt
ZW50KHBpZF90KTsKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQogICAg
IHZvaWQgY2FjaGVBWFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKICAgICB2
b2lkIGNhY2hlQVhTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKQEAgLTIwOTQsNyArMjEw
MSw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCByZXF1ZXN0QWN0
aXZlTm93UGxheWluZ1Nlc3Npb25JbmZvKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwgV2Vi
Q29yZTo6Tm93UGxheWluZ0luZm8mJik+JiYpOwogICAgIFJldGFpblB0cjxOU0RhdGE+IGFjY2Vz
c2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSBjb25zdDsKLSAgICB2b2lkIGFjY2Vzc2liaWxpdHlU
cmFuc2ZlclJlbW90ZVRva2VuKFJldGFpblB0cjxOU0RhdGE+KTsKKyAgICB2b2lkIGFjY2Vzc2li
aWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKFJldGFpblB0cjxOU0RhdGE+LCBXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIpOwogI2VuZGlmCiAKICAgICB2b2lkIHNldFNob3VsZERpc3BhdGNoRmFrZU1v
dXNlTW92ZUV2ZW50cyhib29sIGRpc3BhdGNoKSB7IG1fc2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VN
b3ZlRXZlbnRzID0gZGlzcGF0Y2g7IH0KQEAgLTIyMDQsNiArMjIxMSw4IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIHJlbW90ZVBvc3RNZXNzYWdlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBzb3Vy
Y2UsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIg
dGFyZ2V0LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJiB0YXJn
ZXRPcmlnaW4sIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJik7CiAgICAg
dm9pZCByZW5kZXJUcmVlQXNUZXh0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgc2l6ZV90IGJh
c2VJbmRlbnQsIE9wdGlvblNldDxXZWJDb3JlOjpSZW5kZXJBc1RleHRGbGFnPiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYpOworICAgIHZvaWQgYmluZFJlbW90ZUFjY2Vzc2li
aWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6
OnNwYW48Y29uc3QgdWludDhfdD4sIGludCk+JiYpOworICAgIHZvaWQgdXBkYXRlUmVtb3RlUGFn
ZUFjY2Vzc2liaWxpdHlPZmZzZXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpJ
bnRQb2ludCk7CiAKICAgICB2b2lkIHJlcXVlc3RUZXh0RXh0cmFjdGlvbihzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkZsb2F0UmVjdD4mJiBjb2xsZWN0aW9uUmVjdEluUm9vdFZpZXcsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6VGV4dEV4dHJhY3Rpb246Okl0ZW0mJik+JiYpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgppbmRleCBlZDljMDFhYmQxNWYuLjI4N2JlNjFlZTU3YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC00ODgs
NiArNDg4LDkgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3Qg
V2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBDb2xsYXBzZVNlbGVjdGlv
bkluRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCiAjZW5kaWYKIAorICAg
IEJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBk
YXRhVG9rZW4pIC0+IChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gdG9rZW4sIGludCBwcm9jZXNz
SWRlbnRpZmllcikgU3luY2hyb25vdXMKKyAgICBVcGRhdGVSZW1vdGVQYWdlQWNjZXNzaWJpbGl0
eU9mZnNldChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6SW50UG9p
bnQgb2Zmc2V0KTsKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFdpbmRvd0FuZFZpZXdGcmFt
ZXNDaGFuZ2VkKHN0cnVjdCBXZWJLaXQ6OlZpZXdXaW5kb3dDb29yZGluYXRlcyBjb29yZGluYXRl
cykKICAgICBTZXRNYWluRnJhbWVJc1Njcm9sbGFibGUoYm9vbCBpc1Njcm9sbGFibGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmlu
ZGV4IGE3ZmQ3MjMxMjdjMC4uODhmM2M3Zjg4YTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMjQzLDEyICsyNDMsMTUg
QEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemVBY2Nlc3NpYmlsaXR5KCkKICAgICBt
X21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCA9IGFkb3B0TlMoW1tXS0FjY2Vzc2liaWxpdHlXZWJQ
YWdlT2JqZWN0IGFsbG9jXSBpbml0XSk7CiAgICAgW21fbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50
IHNldFdlYlBhZ2U6dGhpc107CiAKLSAgICBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tl
bihhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCkpOworICAgIFJlZlB0ciBsb2NhbE1haW5G
cmFtZSA9IGR5bmFtaWNEb3duY2FzdDxMb2NhbEZyYW1lPihtX3BhZ2UtPm1haW5GcmFtZSgpKTsK
KyAgICBpZiAobG9jYWxNYWluRnJhbWUpCisgICAgICAgIGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJl
bW90ZVRva2VuKGFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSwgbG9jYWxNYWluRnJhbWUt
PmZyYW1lSUQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1SZWluaXRpYWxpemUoKQog
ewotICAgIGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKGFjY2Vzc2liaWxpdHlSZW1v
dGVUb2tlbkRhdGEoKSk7CisgICAgUmVmIGZyYW1lID0gQ2hlY2tlZFJlZihtX3BhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgYWNjZXNzaWJpbGl0eVRy
YW5zZmVyUmVtb3RlVG9rZW4oYWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0YSgpLCBmcmFtZS0+
ZnJhbWVJRCgpKTsKIH0KIAogUmV0YWluUHRyPE5TRGF0YT4gV2ViUGFnZTo6YWNjZXNzaWJpbGl0
eVJlbW90ZVRva2VuRGF0YSgpIGNvbnN0CkBAIC02NDQsNiArNjQ3LDE2IEBAIE5TT2JqZWN0ICpX
ZWJQYWdlOjphY2Nlc3NpYmlsaXR5T2JqZWN0Rm9yTWFpbkZyYW1lUGx1Z2luKCkKICAgICByZXR1
cm4gbmlsOwogfQogICAgIAordm9pZCBXZWJQYWdlOjp1cGRhdGVSZW1vdGVQYWdlQWNjZXNzaWJp
bGl0eU9mZnNldChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OkludFBvaW50KQor
eworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQKK30KKwordm9pZCBXZWJQYWdlOjpyZWdpc3RlclJl
bW90ZUZyYW1lQWNjZXNzaWJpbGl0eVRva2VucyhwaWRfdCwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4
X3Q+KQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQKK30KKwogdm9pZCBXZWJQYWdlOjpyZWdp
c3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+
IGVsZW1lbnRUb2tlbiwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KQogewogICAgIE5TRGF0YSAq
ZWxlbWVudFRva2VuRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczplbGVtZW50VG9rZW4uZGF0
YSgpIGxlbmd0aDplbGVtZW50VG9rZW4uc2l6ZSgpXTsKQEAgLTY2Miw2ICs2NzUsMTIgQEAgdm9p
ZCBXZWJQYWdlOjpnZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQKICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogfQogCitX
ZWJDb3JlOjpJbnRQb2ludCBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQo
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKwogV0tBY2Nl
c3NpYmlsaXR5V2ViUGFnZU9iamVjdCogV2ViUGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90ZU9iamVj
dCgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdl
YlBhZ2VPYmplY3RCYXNlLmgKaW5kZXggMzllOTBlM2M4OTVlLi40OTcwMDcwYTQ1NWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxp
dHlXZWJQYWdlT2JqZWN0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oCkBAIC00NSw2ICs0NSw4
IEBAIGNsYXNzIEFYQ29yZU9iamVjdDsKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fc2l6ZSBXVEZf
R1VBUkRFRF9CWV9MT0NLKG1fY2FjaGVMb2NrKTsKICAgICBUaHJlYWRTYWZlV2Vha1B0cjxXZWJD
b3JlOjpBWENvcmVPYmplY3Q+IG1faXNvbGF0ZWRUcmVlUm9vdDsKICNlbmRpZgorCisgICAgV2Vi
Q29yZTo6SW50UG9pbnQgbV9yZW1vdGVGcmFtZU9mZnNldDsKICAgICBSZXRhaW5QdHI8aWQ+IG1f
cGFyZW50OwogICAgIGJvb2wgbV9oYXNNYWluRnJhbWVQbHVnaW47CiB9CkBAIC01Niw5ICs1OCwx
MSBAQCBjbGFzcyBBWENvcmVPYmplY3Q7CiAtICh2b2lkKXNldElzb2xhdGVkVHJlZVJvb3Q6KE5h
a2VkUHRyPFdlYkNvcmU6OkFYQ29yZU9iamVjdD4pcm9vdDsKICNlbmRpZgogLSAodm9pZClzZXRS
ZW1vdGVQYXJlbnQ6KGlkKXBhcmVudDsKKy0gKHZvaWQpc2V0UmVtb3RlRnJhbWVPZmZzZXQ6KFdl
YkNvcmU6OkludFBvaW50KW9mZnNldDsKIC0gKHZvaWQpc2V0SGFzTWFpbkZyYW1lUGx1Z2luOihi
b29sKWhhc1BsdWdpbjsKIAogLSAoaWQpYWNjZXNzaWJpbGl0eVJvb3RPYmplY3RXcmFwcGVyOwog
LSAoaWQpYWNjZXNzaWJpbGl0eUZvY3VzZWRVSUVsZW1lbnQ7CistIChXZWJDb3JlOjpJbnRQb2lu
dClhY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQ7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdl
T2JqZWN0QmFzZS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0Fj
Y2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbQppbmRleCA2Zjk5NTQ1YWViZjUuLmJlYzhk
NzNmYWEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5t
bQpAQCAtMzYsOSArMzYsMTEgQEAKICNpbXBvcnQgIldLU3RyaW5nQ0YuaCIKICNpbXBvcnQgPFdl
YkNvcmUvQVhPYmplY3RDYWNoZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudC5oPgorI2lt
cG9ydCA8V2ViQ29yZS9GcmFtZVRyZWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxGcmFtZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbEZyYW1lVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Q
YWdlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1JlbW90ZUZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1Njcm9sbFZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsYmFyLmg+CiAKQEAgLTU3LDEx
ICs1OSwxNyBAQCBuYW1lc3BhY2UgYXggPSBXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5OwogICAgIGlm
ICghcGFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvKiBsb2NhbE1haW5G
cmFtZSA9IGR5bmFtaWNEb3duY2FzdDxXZWJDb3JlOjpMb2NhbEZyYW1lPihwYWdlLT5tYWluRnJh
bWUoKSk7Ci0gICAgaWYgKCFsb2NhbE1haW5GcmFtZSB8fCAhbG9jYWxNYWluRnJhbWUtPmRvY3Vt
ZW50KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmIChhdXRvKiBsb2NhbE1haW5G
cmFtZSA9IGR5bmFtaWNEb3duY2FzdDxXZWJDb3JlOjpMb2NhbEZyYW1lPihwYWdlLT5tYWluRnJh
bWUoKSkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gbG9jYWxNYWluRnJhbWUtPmRv
Y3VtZW50KCkpCisgICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQtPmF4T2JqZWN0Q2FjaGUoKTsK
KyAgICB9IGVsc2UgaWYgKGF1dG8qIHJlbW90ZU1haW5GcmFtZSA9IGR5bmFtaWNEb3duY2FzdDxX
ZWJDb3JlOjpSZW1vdGVGcmFtZT4ocGFnZS0+bWFpbkZyYW1lKCkpKSB7CisgICAgICAgIGF1dG8m
IHRyZWUgPSByZW1vdGVNYWluRnJhbWUtPnRyZWUoKTsKKyAgICAgICAgYXV0byogZmlyc3RGcmFt
ZSA9IGR5bmFtaWNEb3duY2FzdDxXZWJDb3JlOjpMb2NhbEZyYW1lPih0cmVlLmZpcnN0Q2hpbGQo
KSk7CisgICAgICAgIGF1dG8qIGRvY3VtZW50ID0gZmlyc3RGcmFtZSA/IGZpcnN0RnJhbWUtPmRv
Y3VtZW50KCkgOiBudWxscHRyOworICAgICAgICByZXR1cm4gZG9jdW1lbnQgPyBkb2N1bWVudC0+
YXhPYmplY3RDYWNoZSgpIDogbnVsbHB0cjsKKyAgICB9CiAKLSAgICByZXR1cm4gbG9jYWxNYWlu
RnJhbWUtPmRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAogLSAoaWQpYWNjZXNzaWJpbGl0eVBsdWdpbk9iamVjdApAQCAtMTUyLDYgKzE2MCwxNyBA
QCBuYW1lc3BhY2UgYXggPSBXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5OwogICAgIG1faGFzTWFpbkZy
YW1lUGx1Z2luID0gaGFzUGx1Z2luOwogfQogCistICh2b2lkKXNldFJlbW90ZUZyYW1lT2Zmc2V0
OihXZWJDb3JlOjpJbnRQb2ludClvZmZzZXQKK3sKKyAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgp
KTsKKyAgICBtX3JlbW90ZUZyYW1lT2Zmc2V0ID0gb2Zmc2V0OworfQorCistIChXZWJDb3JlOjpJ
bnRQb2ludClhY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQKK3sKKyAgICByZXR1cm4gbV9y
ZW1vdGVGcmFtZU9mZnNldDsKK30KKwogLSAodm9pZClzZXRSZW1vdGVQYXJlbnQ6KGlkKXBhcmVu
dAogewogICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCA5NmVkNjRhZGJjZmYu
LjVmOWI4ODBjODBiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTEyMywxNiArMTIzLDEyIEBAIHZvaWQgV2ViUGFnZTo6
cGxhdGZvcm1Jbml0aWFsaXplQWNjZXNzaWJpbGl0eSgpCiAgICAgLy8gQ3VycmVudGx5LCBpdCBp
cyBhbHNvIG5lZWRlZCB0byBhbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSBhbiBOU0FwcGxpY2F0aW9u
IG9iamVjdC4KICAgICBbTlNBcHBsaWNhdGlvbiBfYWNjZXNzaWJpbGl0eUluaXRpYWxpemVdOwog
Ci0gICAgYXV0byBtb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgPSBhZG9wdE5TKFtbV0tBY2Nlc3Np
YmlsaXR5V2ViUGFnZU9iamVjdCBhbGxvY10gaW5pdF0pOwotCiAgICAgLy8gR2V0IHRoZSBwaWQg
Zm9yIHRoZSBzdGFydGluZyBwcm9jZXNzLgogICAgIHBpZF90IHBpZCA9IFdlYkNvcmU6OnByZXNl
bnRpbmdBcHBsaWNhdGlvblBJRCgpOwotICAgIGlmIChbbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYWNjZXNzaWJpbGl0eVNldFByZXNlbnRlclBy
b2Nlc3NJZGVudGlmaWVyOildKQotICAgICAgICBbKGlkKW1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVu
dC5nZXQoKSBhY2Nlc3NpYmlsaXR5U2V0UHJlc2VudGVyUHJvY2Vzc0lkZW50aWZpZXI6cGlkXTsK
LSAgICBbbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50IHNldFdlYlBhZ2U6dGhpc107Ci0gICAgbV9t
b2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgPSBXVEZNb3ZlKG1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVu
dCk7Ci0KLSAgICBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tlbihhY2Nlc3NpYmlsaXR5
UmVtb3RlVG9rZW5EYXRhKCkpOworICAgIGNyZWF0ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudChw
aWQpOworICAgIFJlZlB0ciBsb2NhbE1haW5GcmFtZSA9IGR5bmFtaWNEb3duY2FzdDxMb2NhbEZy
YW1lPihtX3BhZ2UtPm1haW5GcmFtZSgpKTsKKyAgICBpZiAobG9jYWxNYWluRnJhbWUpCisgICAg
ICAgIGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKGFjY2Vzc2liaWxpdHlSZW1vdGVU
b2tlbkRhdGEoKSwgbG9jYWxNYWluRnJhbWUtPmZyYW1lSUQoKSk7CiAKICAgICAvLyBDbG9zZSBN
YWNoIGNvbm5lY3Rpb24gdG8gTGF1bmNoIFNlcnZpY2VzLgogI2lmIEhBVkUoTFNfU0VSVkVSX0NP
Tk5FQ1RJT05fU1RBVFVTX1JFTEVBU0VfTk9USUZJQ0FUSU9OU19NQVNLKQpAQCAtMTQ0LDkgKzE0
MCwyMCBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6ZUFjY2Vzc2liaWxpdHkoKQog
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJldm9rZUxhdW5jaFNlcnZpY2VzU2FuZGJveEV4
dGVuc2lvbigpOwogfQogCit2b2lkIFdlYlBhZ2U6OmNyZWF0ZU1vY2tBY2Nlc3NpYmlsaXR5RWxl
bWVudChwaWRfdCBwaWQpCit7CisgICAgYXV0byBtb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgPSBh
ZG9wdE5TKFtbV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdCBhbGxvY10gaW5pdF0pOworCisg
ICAgaWYgKFttb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihhY2Nlc3NpYmlsaXR5U2V0UHJlc2VudGVyUHJvY2Vzc0lkZW50aWZpZXI6KV0pCisgICAg
ICAgIFsoaWQpbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50LmdldCgpIGFjY2Vzc2liaWxpdHlTZXRQ
cmVzZW50ZXJQcm9jZXNzSWRlbnRpZmllcjpwaWRdOworICAgIFttb2NrQWNjZXNzaWJpbGl0eUVs
ZW1lbnQgc2V0V2ViUGFnZTp0aGlzXTsKKyAgICBtX21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCA9
IFdURk1vdmUobW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50KTsKK30KKwogdm9pZCBXZWJQYWdlOjpw
bGF0Zm9ybVJlaW5pdGlhbGl6ZSgpCiB7Ci0gICAgYWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3Rl
VG9rZW4oYWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0YSgpKTsKKyAgICBSZWYgZnJhbWUgPSBt
X3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIGFjY2Vz
c2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKGFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEo
KSwgZnJhbWUtPmZyYW1lSUQoKSk7CiB9CiAKIFJldGFpblB0cjxOU0RhdGE+IFdlYlBhZ2U6OmFj
Y2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSBjb25zdApAQCAtNDY5LDEyICs0NzYsMjcgQEAg
Ym9vbCBXZWJQYWdlOjpwZXJmb3JtTm9uRWRpdGluZ0JlaGF2aW9yRm9yU2VsZWN0b3IoY29uc3Qg
U3RyaW5nJiBzZWxlY3RvciwgS2V5Ym8KICAgICByZXR1cm4gZGlkUGVyZm9ybUFjdGlvbjsKIH0K
IAordm9pZCBXZWJQYWdlOjp1cGRhdGVSZW1vdGVQYWdlQWNjZXNzaWJpbGl0eU9mZnNldChXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6SW50UG9pbnQgb2Zmc2V0KQor
eworICAgIFthY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkgc2V0UmVtb3RlRnJhbWVPZmZzZXQ6
b2Zmc2V0XTsKK30KKwordm9pZCBXZWJQYWdlOjpyZWdpc3RlclJlbW90ZUZyYW1lQWNjZXNzaWJp
bGl0eVRva2VucyhwaWRfdCBwaWQsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBlbGVtZW50VG9r
ZW4pCit7CisgICAgTlNEYXRhICplbGVtZW50VG9rZW5EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5
dGVzOmVsZW1lbnRUb2tlbi5kYXRhKCkgbGVuZ3RoOmVsZW1lbnRUb2tlbi5zaXplKCldOworICAg
IGF1dG8gcmVtb3RlRWxlbWVudCA9IGVsZW1lbnRUb2tlbkRhdGEubGVuZ3RoID8gYWRvcHROUyhb
W05TQWNjZXNzaWJpbGl0eVJlbW90ZVVJRWxlbWVudCBhbGxvY10gaW5pdFdpdGhSZW1vdGVUb2tl
bjplbGVtZW50VG9rZW5EYXRhXSkgOiBuaWw7CisKKyAgICBjcmVhdGVNb2NrQWNjZXNzaWJpbGl0
eUVsZW1lbnQocGlkKTsKKyAgICBbYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpIHNldFJlbW90
ZVBhcmVudDpyZW1vdGVFbGVtZW50LmdldCgpXTsKK30KKwogdm9pZCBXZWJQYWdlOjpyZWdpc3Rl
clVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGVs
ZW1lbnRUb2tlbiwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHdpbmRvd1Rva2VuKQogewogICAg
IE5TRGF0YSAqZWxlbWVudFRva2VuRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczplbGVtZW50
VG9rZW4uZGF0YSgpIGxlbmd0aDplbGVtZW50VG9rZW4uc2l6ZSgpXTsKICAgICBOU0RhdGEgKndp
bmRvd1Rva2VuRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczp3aW5kb3dUb2tlbi5kYXRhKCkg
bGVuZ3RoOndpbmRvd1Rva2VuLnNpemUoKV07CiAgICAgYXV0byByZW1vdGVFbGVtZW50ID0gZWxl
bWVudFRva2VuRGF0YS5sZW5ndGggPyBhZG9wdE5TKFtbTlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlF
bGVtZW50IGFsbG9jXSBpbml0V2l0aFJlbW90ZVRva2VuOmVsZW1lbnRUb2tlbkRhdGFdKSA6IG5p
bDsKICAgICBhdXRvIHJlbW90ZVdpbmRvdyA9IHdpbmRvd1Rva2VuRGF0YS5sZW5ndGggPyBhZG9w
dE5TKFtbTlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlFbGVtZW50IGFsbG9jXSBpbml0V2l0aFJlbW90
ZVRva2VuOndpbmRvd1Rva2VuRGF0YV0pIDogbmlsOworCiAgICAgW3JlbW90ZUVsZW1lbnQgc2V0
V2luZG93VUlFbGVtZW50OnJlbW90ZVdpbmRvdy5nZXQoKV07CiAgICAgW3JlbW90ZUVsZW1lbnQg
c2V0VG9wTGV2ZWxVSUVsZW1lbnQ6cmVtb3RlV2luZG93LmdldCgpXTsKIApAQCAtNTE2LDYgKzUz
OCwxMSBAQCBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0KiBXZWJQYWdlOjphY2Nlc3NpYmls
aXR5UmVtb3RlT2JqZWN0KCkKICAgICByZXR1cm4gbV9tb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQu
Z2V0KCk7CiB9CiAKK1dlYkNvcmU6OkludFBvaW50IFdlYlBhZ2U6OmFjY2Vzc2liaWxpdHlSZW1v
dGVGcmFtZU9mZnNldCgpCit7CisgICAgcmV0dXJuIFttX21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVu
dCBhY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXRdOworfQorCiAjaWYgRU5BQkxFKEFDQ0VT
U0lCSUxJVFlfSVNPTEFURURfVFJFRSkKIHZvaWQgV2ViUGFnZTo6Y2FjaGVBWFBvc2l0aW9uKGNv
bnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBvaW50KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCmluZGV4IDg3MmE1NThmYjRlMS4uZWQ3MTY5Njk1MzFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xNTY4LDYgKzE1NjgsMTAgQEAg
dm9pZCBXZWJQcm9jZXNzOjp1cGRhdGVDUFVNb25pdG9yU3RhdGUoQ1BVTW9uaXRvclVwZGF0ZVJl
YXNvbikKIHsKIH0KIAordm9pZCBXZWJQcm9jZXNzOjpiaW5kQWNjZXNzaWJpbGl0eUZyYW1lV2l0
aERhdGEoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4p
Cit7Cit9CisKICNlbmRpZgogCiB2b2lkIFdlYlByb2Nlc3M6OnBhZ2VBY3Rpdml0eVN0YXRlRGlk
Q2hhbmdlKFBhZ2VJZGVudGlmaWVyLCBPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZT4g
Y2hhbmdlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDA2MTRiY2Y3
YWY1Yy4uMTk2MjYxYTk3N2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgK
QEAgLTY1LDYgKzY1LDkgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NjcmVlblByb3BlcnRpZXMuaD4K
ICNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRjaC5oPgogI2luY2x1ZGUgPHd0Zi9NYWNoU2VuZFJp
Z2h0Lmg+CisKK09CSkNfQ0xBU1MgTlNNdXRhYmxlRGljdGlvbmFyeTsKKwogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShHVEspCkBAIC04Nyw2ICs5MCw3IEBACiAjaW5jbHVkZSAiV2ViU1FMaXRlRGF0
YWJhc2VUcmFja2VyLmgiCiAjZW5kaWYKIAorCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIE9iamVj
dDsKIH0KQEAgLTUxMSw2ICs1MTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1TZXRD
YWNoZU1vZGVsKENhY2hlTW9kZWwpOwogCiAgICAgdm9pZCBzZXRFbmhhbmNlZEFjY2Vzc2liaWxp
dHkoYm9vbCk7CisgICAgdm9pZCBiaW5kQWNjZXNzaWJpbGl0eUZyYW1lV2l0aERhdGEoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pOwogCiAgICAgdm9p
ZCBzdGFydE1lbW9yeVNhbXBsZXIoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIGNvbnN0IFN0
cmluZyYsIGNvbnN0IGRvdWJsZSk7CiAgICAgdm9pZCBzdG9wTWVtb3J5U2FtcGxlcigpOwpAQCAt
ODI2LDYgKzgzMSw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgSGFzaENv
dW50ZWRTZXQ8U3RyaW5nPiBtX3BlbmRpbmdQYXN0ZWJvYXJkV3JpdGVDb3VudHM7CiAgICAgc3Rk
OjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBtX2F1ZGl0VG9rZW5Gb3JTZWxmOworICAgIFJldGFp
blB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBtX2FjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZVRva2Vu
Q2FjaGU7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggOTliNDAyYWYxMWNh
Li5kNzc1ZmU3ZDM4ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluCkBAIC02OSw2ICs2OSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3Mg
TGVnYWN5UmVjZWl2ZXIgTm90UmVmQ291bnRlZCB7CiAgICAgU2V0VGV4dENoZWNrZXJTdGF0ZShz
dHJ1Y3QgV2ViS2l0OjpUZXh0Q2hlY2tlclN0YXRlIHRleHRDaGVja2VyU3RhdGUpCiAKICAgICBT
ZXRFbmhhbmNlZEFjY2Vzc2liaWxpdHkoYm9vbCBmbGFnKQorICAgIEJpbmRBY2Nlc3NpYmlsaXR5
RnJhbWVXaXRoRGF0YShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RkOjpzcGFu
PGNvbnN0IHVpbnQ4X3Q+IGRhdGEpOwogCiAgICAgR2FyYmFnZUNvbGxlY3RKYXZhU2NyaXB0T2Jq
ZWN0cygpCiAgICAgU2V0SmF2YVNjcmlwdEdhcmJhZ2VDb2xsZWN0b3JUaW1lckVuYWJsZWQoYm9v
bCBlbmFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2Vi
UHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nl
c3NDb2NvYS5tbQppbmRleCBjNTM4NTdmYmUxZDQuLjExNjA2ZTk2Mzk1NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC0yMTMs
NiArMjEzLDE2IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1TZXRDYWNoZU1vZGVsKENhY2hl
TW9kZWwpCiB7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzczo6YmluZEFjY2Vzc2liaWxpdHlGcmFtZVdp
dGhEYXRhKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdGQ6OnNwYW48Y29uc3Qg
dWludDhfdD4gZGF0YSkKK3sKKyAgICBpZiAoIW1fYWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lVG9r
ZW5DYWNoZSkKKyAgICAgICAgbV9hY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVUb2tlbkNhY2hlID0g
YWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKworICAgIGF1dG8g
ZnJhbWVJbnQgPSBmcmFtZUlELm9iamVjdCgpLnRvVUludDY0KCk7CisgICAgTlNEYXRhICpuc0Rh
dGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0YS5kYXRhKCkgbGVuZ3RoOmRhdGEuc2l6ZSgp
XTsKKyAgICBbbV9hY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVUb2tlbkNhY2hlIHNldE9iamVjdDpu
c0RhdGEgZm9yS2V5OkAoZnJhbWVJbnQpXTsKK30KKwogaWQgV2ViUHJvY2Vzczo6YWNjZXNzaWJp
bGl0eUZvY3VzZWRVSUVsZW1lbnQoKQogewogICAgIGF1dG8gcmV0cmlldmVGb2N1c2VkVUlFbGVt
ZW50RnJvbU1haW5UaHJlYWQgPSBbXSAoKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRl
eCAyMWUyMWYwOGJkNjQuLmI0Y2YyODJjMThjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5o
CkBAIC0yMjUsNiArMjI1LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgUmVtb3RlQVhPYmpl
Y3RSZWYgYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpIGZpbmFsIHsgcmV0dXJuIDA7IH0KKyAg
ICBXZWJDb3JlOjpJbnRQb2ludCBhY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKSBmaW5h
bCB7IHJldHVybiB7IH07IH0KICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVF
KQogICAgIHZvaWQgc2V0QVhJc29sYXRlZFRyZWVSb290KFdlYkNvcmU6OkFYQ29yZU9iamVjdCop
IGZpbmFsIHsgfQogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>469946</attachid>
            <date>2024-02-17 08:00:48 -0800</date>
            <delta_ts>2024-02-17 12:13:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-268804-20240217080046.patch</filename>
            <type>text/plain</type>
            <size>119471</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">RnJvbSBkOTE2ODljZjkzNjI5YWU2NWM0NGM4YTA4ZDJjMzQxMmNlNDhjMTI0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpcyBGbGVpemFjaCA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4K
RGF0ZTogVGh1LCAxNSBGZWIgMjAyNCAxMjo0MDozOCAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIEFY
OiBTdXBwb3J0IHNpdGUgaXNvbGF0aW9uIGZvciBWb2ljZU92ZXIKIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjg4MDQgcmRhcjovLzk5NjY1NTYxCgpSZXZpZXdlZCBi
eSBBbmRyZXMgR29uemFsZXosIFR5bGVyIFdpbGNvY2suCgpJbml0aWFsIHN1cHBvcnQgZm9yIHNp
dGUgaXNvbGF0aW9uIGZvciBWb2ljZU92ZXIuCgpXaGVuIGEgc2Nyb2xsIHZpZXcgaG9zdHMgYSBS
ZW1vdGVGcmFtZSBpdCBiaW5kcyBpdHNlbGYgdG8gdGhlIG90aGVyIHNpZGUgdGhyb3VnaCBhIFdl
YlBhZ2UgbWVzc2FnZS4KVGhpcyB0cmFuc2ZlcnMgZGF0YSB0b2tlbnMgc28gQWNjZXNzaWJpbGl0
eSByZW1vdGUgZWxlbWVudHMgYXJlIGNyZWF0ZWQgYW5kIGhvb2tlZCB1cC4KClRoZSBib3VuZGlu
ZyBib3hlcyBpbnNpZGUgdGhlIHN1YiBmcmFtZXMgbmVlZCB0byBoYXZlIHRoZSBpbml0aWFsIG9m
ZnNldCBhcHBsaWVkIGFuZCB0aGVuIG5lZWQgdG8gYmUgY29udmVydGVkCmVhY2ggc3RlcCB1cCB0
aGUgY2hhaW4gdG8gYWNjb3VudCBmb3Igc2Nyb2xsIG9mZnNldHMgdGhhdCBvbmx5IGVhY2ggcHJv
Y2VzcyBrbm93cyBhYm91dC4KCiogU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQ6CiogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgoqIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhDb3JlT2JqZWN0Lmg6CihXZWJDb3JlOjphY2Nlc3NpYmlsaXR5
Um9sZVRvU3RyaW5nKToKKFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6aXNSZW1vdGVGcmFtZSBjb25z
dCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWExvZ2dlci5jcHA6CihXZWJDb3Jl
OjpzdHJlYW1BWENvcmVPYmplY3QpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhP
YmplY3RDYWNoZS5jcHA6CihXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpjcmVhdGUpOgooV2ViQ29y
ZTo6QVhPYmplY3RDYWNoZTo6b25SZW1vdGVGcmFtZUluaXRpYWxpemVkKToKKiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6cmVsYXRpdmVGcmFtZSBjb25zdCk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpyZW1vdGVGcmFtZU9mZnNldCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWUuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1JlbW90ZUZyYW1lQ2xpZW50LmguCihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVtb3Rl
RnJhbWU6OmNyZWF0ZSk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWU6OkFjY2Vz
c2liaWxpdHlSZW1vdGVGcmFtZSk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWU6
OmVsZW1lbnRSZWN0IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW1vdGVGcmFtZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wYWdlL1Jl
bW90ZUZyYW1lQ2xpZW50LmguCiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmFkZEF0dGFjaG1lbnRDaGlsZHJlbik6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjphZGRDaGlsZHJlbik6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5U2Nyb2xsVmlldy5jcHA6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dzo6ZGV0YWNoUmVtb3RlUGFydHMpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6
OmNsZWFyQ2hpbGRyZW4pOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmFkZFJl
bW90ZUZyYW1lQ2hpbGQpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmFkZENo
aWxkcmVuKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojp3ZWJBcmVhT2JqZWN0
IGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojpkb2N1bWVudCBjb25z
dCk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6cGFyZW50T2JqZWN0IGNvbnN0
KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
Lmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZE9iamVjdC5jcHA6CihXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplUHJvcGVy
dGllcyk6CihXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpzZXRQcm9wZXJ0eSk6CihXZWJDb3Jl
OjpBWElzb2xhdGVkT2JqZWN0OjpyZW1vdGVGcmFtZU9mZnNldCBjb25zdCk6CihXZWJDb3JlOjpB
WElzb2xhdGVkT2JqZWN0OjpyZWxhdGl2ZUZyYW1lIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0Lmg6CiogU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwOgooV2Vi
Q29yZTo6QVhJc29sYXRlZFRyZWU6OnVwZGF0ZU5vZGVQcm9wZXJ0aWVzKToKKiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oOgoqIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL21hYy9BWElzb2xhdGVkT2JqZWN0
TWFjLm1tOgooV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZVBsYXRmb3JtUHJv
cGVydGllcyk6CihXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpyZW1vdGVGcmFtZVBsYXRmb3Jt
RWxlbWVudCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNz
aWJpbGl0eU9iamVjdE1hYy5tbToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6
Z2VuZXJhdGVSZW1vdGVUb2tlbiBjb25zdCk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVtb3Rl
RnJhbWU6OmluaXRpYWxpemVQbGF0Zm9ybUVsZW1lbnRXaXRoUmVtb3RlVG9rZW4pOgooV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eTo6Y3JlYXRlUGxhdGZvcm1Sb2xlTWFwKToKKiBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW06
CihtYWtlTlNBcnJheSk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyIHJvbGVdKToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgaXNFbXB0eUdy
b3VwXSk6CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHJvbGVEZXNjcmlwdGlvbl0p
OgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBfdHJhbnNmb3JtU3BlY2lhbENoaWxk
cmVuQ2FzZXM6XSk6CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpdKToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNj
ZXNzaWJpbGl0eUhpdFRlc3Q6XSk6CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIEFM
TE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORF0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6Zm9yUGFyYW1ldGVyOl0p
OgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5SW5kZXhPZkNo
aWxkOl0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXJy
YXlBdHRyaWJ1dGVDb3VudDpdKToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNj
ZXNzaWJpbGl0eUFycmF5QXR0cmlidXRlVmFsdWVzOmluZGV4Om1heENvdW50Ol0pOgoqIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwOgooV2ViQ29yZTo6RW1wdHlGcmFtZUxv
YWRlckNsaWVudDo6YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KToKKiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oOgoqIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9Mb2NhbEZyYW1lTG9hZGVyQ2xpZW50Lmg6CiogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcDoKKFdlYkNvcmU6OlBhZ2U6OnNob3VsZFVwZGF0ZUFjY2Vzc2liaWxpdHlSZWdpb25zIGNv
bnN0KToKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmNwcDoKKFdlYkNvcmU6OlJl
bW90ZUZyYW1lOjp1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQpOgooV2ViQ29y
ZTo6UmVtb3RlRnJhbWU6OnVuYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMpOgooV2ViQ29y
ZTo6UmVtb3RlRnJhbWU6OmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKToKKiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmg6CiogU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVG
cmFtZUNsaWVudC5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHA6CihXZWJLaXQ6
OlByb3Zpc2lvbmFsUGFnZVByb3h5OjpyZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9r
ZW4pOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5Lmg6Ciog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHA6CihXZWJLaXQ6OldlYkZy
YW1lUHJveHk6OmJpbmRBY2Nlc3NpYmlsaXR5RnJhbWVXaXRoRGF0YSk6CiogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6CihXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3dhcFRvUHJvdmlzaW9uYWxQ
YWdlKToKKFdlYktpdDo6V2ViUGFnZVByb3h5OjpiaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1l
cyk6CihXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5
T2Zmc2V0KToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CiogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CiogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgooV2ViS2l0OjpQYWdlQ2xpZW50SW1w
bDo6YWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKToKKiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgooV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbik6CiogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmg6CiogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tOgooV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6YWNj
ZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgooV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlZ2lz
dGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbik6CiogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYlZpZXdJbXBsLmg6CiogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlZp
ZXdJbXBsLm1tOgooV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0QWNjZXNzaWJpbGl0eVdlYlByb2Nl
c3NUb2tlbik6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkxv
Y2FsRnJhbWVMb2FkZXJDbGllbnQuY3BwOgooV2ViS2l0OjpXZWJMb2NhbEZyYW1lTG9hZGVyQ2xp
ZW50OjphY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQpOgoqIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50Lmg6CiogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90ZUZyYW1lQ2xpZW50
LmNwcDoKKFdlYktpdDo6V2ViUmVtb3RlRnJhbWVDbGllbnQ6OnVuYmluZFJlbW90ZUFjY2Vzc2li
aWxpdHlGcmFtZXMpOgooV2ViS2l0OjpXZWJSZW1vdGVGcmFtZUNsaWVudDo6dXBkYXRlUmVtb3Rl
RnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KToKKFdlYktpdDo6V2ViUmVtb3RlRnJhbWVDbGllbnQ6
OmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKToKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuaDoKKiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW06CihXZWJLaXQ6OldlYlBh
Z2U6OmFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKToKKFdlYktpdDo6V2ViUGFnZTo6
YWNjZXNzaWJpbGl0eU1hbmFnZVJlbW90ZUVsZW1lbnRTdGF0dXMpOgooV2ViS2l0OjpXZWJQYWdl
OjpiaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyk6CiogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW46CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW06CihXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6ZUFj
Y2Vzc2liaWxpdHkpOgooV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybVJlaW5pdGlhbGl6ZSk6CihX
ZWJLaXQ6OldlYlBhZ2U6OmFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCk6CiogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmpl
Y3RCYXNlLmg6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNz
aWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tOgooLVtXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2Jq
ZWN0QmFzZSBheE9iamVjdENhY2hlXSk6CigtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RC
YXNlIHNldFJlbW90ZUZyYW1lT2Zmc2V0Ol0pOgooLVtXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2Jq
ZWN0QmFzZSBhY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXRdKToKKiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKFdlYktpdDo6V2ViUGFnZTo6
cGxhdGZvcm1Jbml0aWFsaXplQWNjZXNzaWJpbGl0eSk6CihXZWJLaXQ6OldlYlBhZ2U6OmNyZWF0
ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCk6CihXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtUmVp
bml0aWFsaXplKToKKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlUmVtb3RlUGFnZUFjY2Vzc2liaWxp
dHlPZmZzZXQpOgooV2ViS2l0OjpXZWJQYWdlOjpyZWdpc3RlclJlbW90ZUZyYW1lQWNjZXNzaWJp
bGl0eVRva2Vucyk6CihXZWJLaXQ6OldlYlBhZ2U6OnJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJp
bGl0eVRva2Vucyk6CihXZWJLaXQ6OldlYlBhZ2U6OmFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9m
ZnNldCk6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgooV2ViS2l0OjpXZWJQcm9jZXNz
OjpiaW5kQWNjZXNzaWJpbGl0eUZyYW1lV2l0aERhdGEpOgoqIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6Ci0tLQogU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIC4uLi9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiB8ICAgNCArCiBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYQ29yZU9iamVjdC5oICAgfCAgMTIgKysKIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhMb2dnZXIuY3BwICAgICB8ICAgMyArCiAuLi4vV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwICAgfCAgMTUgKy0KIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oICB8ICAgMiArCiAuLi4vV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYUmVtb3RlRnJhbWUuY3BwICAgfCAgNDIgKysrKysKIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhSZW1vdGVGcmFtZS5oICB8ICA2MSArKysrKysrKwogLi4uL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgICAgIHwgIDIzICsrLQogLi4uL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oICAgICAgIHwgICA1ICsKIC4uLi9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcCAgICAgICAgICAgICB8ICAgNCArLQogLi4uL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwIHwgIDYyICsrKysrKystCiAuLi4vYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oICAgfCAgIDYgKy0KIC4uLi9hdHNwaS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuY3BwICAgICAgICB8ICAgMSArCiAuLi4vaW9zL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tICAgfCAgIDEgKwogLi4uL2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkT2JqZWN0LmNwcCAgICAgICAgIHwgIDM0ICsrKystCiAuLi4vaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRPYmplY3QuaCAgICAgICAgICAgfCAgIDggKy0KIC4uLi9pc29sYXRlZHRy
ZWUvQVhJc29sYXRlZFRyZWUuY3BwICAgICAgICAgICB8ICA2MSArKystLS0tLQogLi4uL2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oICAgICAgICAgICAgIHwgIDI5ICsrKysKIC4uLi9pc29s
YXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMubW0gICB8ICAgNyArCiAuLi4vbWFjL0Fj
Y2Vzc2liaWxpdHlPYmplY3RNYWMubW0gICAgICAgICAgICAgfCAgMjYgKysrKwogLi4uL21hYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0gIHwgICA5ICstCiAuLi4vbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tICAgfCAxNDMgKysrKysrKysrKysrLS0t
LS0tCiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCAgICAgICAgfCAgIDUg
KwogLi4uL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaCAgIHwgICAxICsK
IC4uLi9XZWJDb3JlL2xvYWRlci9Mb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmggICB8ICAgMSArCiBT
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwICAgICAgICAgICAgICAgICAgfCAgMTUgKy0KIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuY3BwICAgICAgICAgICB8ICAxNSArKwogU291
cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5oICAgICAgICAgICAgIHwgICA0ICsKIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVDbGllbnQuaCAgICAgICB8ICAgNCArCiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggICAgICAgICAgfCAgIDMgKy0KIC4uLi9XZWJL
aXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCB8ICAgMiArLQogLi4uL1dlYktp
dC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaCAgIHwgICAyICstCiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcCAgICAgfCAgIDkgKysKIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaCAgICAgICB8ICAgMiArCiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwICAgICAgfCAgMjQgKystCiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCAgICAgICAgfCAgIDQgKy0KIC4uLi9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiB8ICAgNCArLQogLi4uL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggIHwgICAyICstCiAuLi4vV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gfCAgIDIgKy0KIC4uLi9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gICB8ICAgNyArLQogLi4uL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmggIHwgICAyICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0gfCAgIDQgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XZWJQYWdlUHJveHlNYWMubW0gICB8ICAgNCArLQogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYlZpZXdJbXBsLmggICAgIHwgICAzICstCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV2ViVmlld0ltcGwubW0gICAgfCAgIDggKy0KIC4uLi9XZWJMb2NhbEZyYW1lTG9hZGVy
Q2xpZW50LmNwcCAgICAgICAgICAgICB8ICAgNiArCiAuLi4vV2ViTG9jYWxGcmFtZUxvYWRlckNs
aWVudC5oICAgICAgICAgICAgICAgfCAgIDEgKwogLi4uL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90
ZUZyYW1lQ2xpZW50LmNwcCAgIHwgIDM4ICsrKysrCiAuLi4vV2ViQ29yZVN1cHBvcnQvV2ViUmVt
b3RlRnJhbWVDbGllbnQuaCAgICAgfCAgIDQgKwogLi4uL1dlYlByb2Nlc3MvV2ViUGFnZS9Db2Nv
YS9XZWJQYWdlQ29jb2EubW0gIHwgIDQ2ICsrKysrLQogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAgIHwgIDEwICsrCiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmggICAgfCAgMTEgKy0KIC4uLi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbiAgICB8ICAgMyArCiAuLi4vV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tICAgICAgfCAgMjMgKystCiAuLi4vbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBh
Z2VPYmplY3RCYXNlLmggICAgfCAgIDQgKwogLi4uL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdl
T2JqZWN0QmFzZS5tbSAgIHwgIDI3ICsrKy0KIC4uLi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dl
YlBhZ2VNYWMubW0gICAgICB8ICA0NSArKysrLS0KIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcCAgICAgICB8ICAgNCArCiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oICAgICAgICAgfCAgIDYgKwogLi4uL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4gIHwgICAxICsKIC4uLi9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3ND
b2NvYS5tbSAgICAgICB8ICAxMCArKwogLi4uL21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oIHwgICAxICsKIDYzIGZpbGVzIGNoYW5nZWQsIDc3MiBpbnNlcnRpb25zKCsp
LCAxNTQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWFJlbW90ZUZyYW1lLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhSZW1vdGVGcmFtZS5oCgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBm
NWYyYTU1MGRhMzQuLmZjNjBiOTdjNzA2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTUyOCw2ICs1Mjgs
NyBAQCBhY2Nlc3NpYmlsaXR5L0FYR2VvbWV0cnlNYW5hZ2VyLmNwcAogYWNjZXNzaWJpbGl0eS9B
WEltYWdlLmNwcAogYWNjZXNzaWJpbGl0eS9BWExvZ2dlci5jcHAKIGFjY2Vzc2liaWxpdHkvQVhP
YmplY3RDYWNoZS5jcHAKK2FjY2Vzc2liaWxpdHkvQVhSZW1vdGVGcmFtZS5jcHAKIGFjY2Vzc2li
aWxpdHkvQVhUZXh0TWFya2VyLmNwcAogYWNjZXNzaWJpbGl0eS9BWFRleHRSdW4uY3BwCiBhY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkYWY3N2E3MjM4YzkuLmM4
MTc4MjMyNDFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtODk2Niw2ICs4OTY2LDggQEAKIAkJMjk0ODlGQzUxMkMwMEYwMzAw
RDgzRjBGIC8qIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTI5NDk4NjgxMTk1MzQxOTQwMDcyRDJCRCAvKiBUZXh0VW5kb0luc2VydGlv
bk1hcmt1cE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRl
eHRVbmRvSW5zZXJ0aW9uTWFya3VwTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyOTRCREFFNjIxRkY1ODJBMDA1MTA3N0IgLyogQWNjZXNzaWJpbGl0eU9iamVjdENvY29hLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eU9i
amVjdENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOTU1Q0YxMTJCMjMw
QUU2MDAwMUJGODIgLyogQVhSZW1vdGVGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBWFJlbW90ZUZy
YW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5NTVDRjEyMkIyMzBBRTYwMDAx
QkY4MiAvKiBBWFJlbW90ZUZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFYUmVtb3RlRnJh
bWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTdCRTNEOTE2QzA0M0Q4MDAz
MzE2QkQgLyogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk4MUFCQzQxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vz
c2liaWxpdHlNYXRoTUxFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxp
dHlNYXRoTUxFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk4MUNB
OUQxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjM0NTksNiArMjM0NjEsOCBAQAogCQkJCUMwNDkzRUI3MjQ0Njk5RTQwMDlB
QUM4MCAvKiBBWExvZ2dlci5oICovLAogCQkJCTI5ODFDQUFGMTMxODIyRUMwMEQxMkYyQSAvKiBB
WE9iamVjdENhY2hlLmNwcCAqLywKIAkJCQkyOUE4MTIxQTBGQkI5QzFEMDA1MTAyOTMgLyogQVhP
YmplY3RDYWNoZS5oICovLAorCQkJCTI5NTVDRjEyMkIyMzBBRTYwMDAxQkY4MiAvKiBBWFJlbW90
ZUZyYW1lLmNwcCAqLywKKwkJCQkyOTU1Q0YxMTJCMjMwQUU2MDAwMUJGODIgLyogQVhSZW1vdGVG
cmFtZS5oICovLAogCQkJCUMwRTIwOEExMjkzNzlDNkYwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXIu
Y3BwICovLAogCQkJCUMwRTIwOEEwMjkzNzlDNkUwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXIuaCAq
LywKIAkJCQk0OEM0RTgzQzJCMzREODM4MDA4MzQ2MEEgLyogQVhUZXh0UnVuLmNwcCAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhDb3JlT2JqZWN0LmggYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYQ29yZU9iamVjdC5oCmluZGV4IDQ0MTA4NGVj
YjgwNS4uM2ZiYzdmOGRiMjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYQ29yZU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhD
b3JlT2JqZWN0LmgKQEAgLTIwNSw2ICsyMDUsNyBAQCBlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlS
b2xlIHsKICAgICBQcm9ncmVzc0luZGljYXRvciwKICAgICBSYWRpb0J1dHRvbiwKICAgICBSYWRp
b0dyb3VwLAorICAgIFJlbW90ZUZyYW1lLAogICAgIFJvd0hlYWRlciwKICAgICBSb3csCiAgICAg
Um93R3JvdXAsCkBAIC00NDIsNiArNDQzLDggQEAgQUxXQVlTX0lOTElORSBTdHJpbmcgYWNjZXNz
aWJpbGl0eVJvbGVUb1N0cmluZyhBY2Nlc3NpYmlsaXR5Um9sZSByb2xlKQogICAgICAgICByZXR1
cm4gIlJhZGlvQnV0dG9uIl9zOwogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvR3Jv
dXA6CiAgICAgICAgIHJldHVybiAiUmFkaW9Hcm91cCJfczsKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpSZW1vdGVGcmFtZToKKyAgICAgICAgcmV0dXJuICJSZW1vdGVGcmFtZSJfczsKICAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSb3dIZWFkZXI6CiAgICAgICAgIHJldHVybiAiUm93
SGVhZGVyIl9zOwogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJvdzoKQEAgLTgxNSw2ICs4
MTgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eUFSSUFHcmlk
Um93SW5zdGFuY2UoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0
eUFSSUFHcmlkQ2VsbEluc3RhbmNlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0FY
SXNvbGF0ZWRPYmplY3RJbnN0YW5jZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNB
WFJlbW90ZUZyYW1lKCkgY29uc3QgPSAwOwogCiAgICAgYm9vbCBpc0hlYWRpbmcoKSBjb25zdCB7
IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6SGVhZGluZzsgfQogICAg
IHZpcnR1YWwgYm9vbCBpc0xpbmsoKSBjb25zdCA9IDA7CkBAIC05MTksNiArOTIzLDEyIEBAIHB1
YmxpYzoKICAgICBib29sIGlzVHJlZUdyaWQoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUdyaWQ7IH0KICAgICBib29sIGlzVHJlZUl0ZW0oKSBj
b25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUl0ZW07
IH0KICAgICBib29sIGlzU2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0g
QWNjZXNzaWJpbGl0eVJvbGU6OlNjcm9sbEJhcjsgfQorICAgIGJvb2wgaXNSZW1vdGVGcmFtZSgp
IGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpSZW1vdGVG
cmFtZTsgfQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZpcnR1YWwgUmV0YWluUHRyPGlkPiBy
ZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpIGNvbnN0ID0gMDsKKyNlbmRpZgorICAgIHZpcnR1
YWwgYm9vbCBoYXNSZW1vdGVGcmFtZUNoaWxkKCkgY29uc3QgPSAwOworCiAgICAgYm9vbCBpc0J1
dHRvbigpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc01ldGVyKCkgY29uc3QgPSAwOwogCkBA
IC0xMTU5LDYgKzExNjksOCBAQCBwdWJsaWM6CiAgICAgLy8gVmlld3BvcnQtcmVsYXRpdmUgbWVh
bnMgdGhhdCB3aGVuIHRoZSBwYWdlIHNjcm9sbHMsIHRoZSBwb3J0aW9uIG9mIHRoZSBwYWdlIGlu
IHRoZSB2aWV3cG9ydCBjaGFuZ2VzLCBhbmQgdGh1cwogICAgIC8vIGFueSB2aWV3cG9ydC1yZWxh
dGl2ZSByZWN0cyBkbyB0b28gKHNpbmNlIHRoZXkgYXJlIGVpdGhlciBjbG9zZXIgdG8gb3IgZmFy
dGhlciBmcm9tIHRoZSB2aWV3cG9ydCBvcmlnaW4gYWZ0ZXIgdGhlIHNjcm9sbCkuCiAgICAgdmly
dHVhbCBGbG9hdFBvaW50IHNjcmVlblJlbGF0aXZlUG9zaXRpb24oKSBjb25zdCA9IDA7CisgICAg
Ly8gVGhpcyBpcyB0aGUgYW1vdW50IHRoYXQgdGhlIFJlbW90ZUZyYW1lIGlzIG9mZnNldCBmcm9t
IGl0cyBjb250YWluaW5nIHBhcmVudC4KKyAgICB2aXJ0dWFsIEludFBvaW50IHJlbW90ZUZyYW1l
T2Zmc2V0KCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBGbG9hdFJlY3QgY29udmVydEZyYW1l
VG9TcGFjZShjb25zdCBGbG9hdFJlY3QmLCBBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlKSBj
b25zdCA9IDA7CiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhMb2dnZXIuY3BwCmluZGV4IGI2ZTMwNmNkZGVjZi4uN2IzNWM4ZjlkMTAxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcApAQCAtODgzLDYgKzg4Myw5IEBA
IHZvaWQgc3RyZWFtQVhDb3JlT2JqZWN0KFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgQVhDb3Jl
T2JqZWN0JiBvYmplY3QsIGNvbnN0IE9wCiAgICAgaWYgKG9wdGlvbnMgJiBBWFN0cmVhbU9wdGlv
bnM6OlJvbGUpCiAgICAgICAgIHN0cmVhbS5kdW1wUHJvcGVydHkoInJvbGUiLCBvYmplY3Qucm9s
ZVZhbHVlKCkpOwogCisgICAgaWYgKG9iamVjdC5yZW5kZXJlcigpKQorICAgICAgICBzdHJlYW0u
ZHVtcFByb3BlcnR5KCJyZW5kZXJOYW1lIiwgb2JqZWN0LnJlbmRlcmVyKCktPnJlbmRlck5hbWUo
KSk7CisKICAgICBpZiAob3B0aW9ucyAmIEFYU3RyZWFtT3B0aW9uczo6UGFyZW50SUQpIHsKICAg
ICAgICAgYXV0byogcGFyZW50ID0gb2JqZWN0LnBhcmVudE9iamVjdFVuaWdub3JlZCgpOwogICAg
ICAgICBzdHJlYW0uZHVtcFByb3BlcnR5KCJwYXJlbnRJRCIsIHBhcmVudCA/IHBhcmVudC0+b2Jq
ZWN0SUQoKSA6IEFYSUQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmNwcAppbmRleCA1ZTQ4MTgzNGY2NDYuLjNlYmIyY2IyOGM5NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW5jbHVkZSAiQVhJc29sYXRlZE9iamVjdC5oIgogI2luY2x1ZGUgIkFYSXNvbGF0
ZWRUcmVlLmgiCiAjaW5jbHVkZSAiQVhMb2dnZXIuaCIKKyNpbmNsdWRlICJBWFJlbW90ZUZyYW1l
LmgiCiAjaW5jbHVkZSAiQVhUZXh0TWFya2VyLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUFS
SUFHcmlkLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oIgpAQCAtMTA1
NSw3ICsxMDU2LDEwIEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmNyZWF0
ZShBY2Nlc3NpYmlsaXR5Um9sZSByb2xlKQogICAgICAgICBicmVhazsgICAgICAgICAgICAKICAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJsZUhlYWRlckNvbnRhaW5lcjoKICAgICAgICAg
b2JqID0gQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyOjpjcmVhdGUoKTsKLSAgICAg
ICAgYnJlYWs7ICAgCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OlJlbW90ZUZyYW1lOgorICAgICAgICBvYmogPSBBWFJlbW90ZUZyYW1lOjpjcmVhdGUoKTsKKyAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyVGh1bWI6CiAg
ICAgICAgIG9iaiA9IEFjY2Vzc2liaWxpdHlTbGlkZXJUaHVtYjo6Y3JlYXRlKCk7CiAgICAgICAg
IGJyZWFrOwpAQCAtMTM1MSw2ICsxMzU1LDE1IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxl
UmVjb21wdXRlQ2VsbFNsb3RzKEFjY2Vzc2liaWxpdHlUYWJsZSYgYXhUYWJsZSkKICNlbmRpZgog
fQogCit2b2lkIEFYT2JqZWN0Q2FjaGU6Om9uUmVtb3RlRnJhbWVJbml0aWFsaXplZChBWFJlbW90
ZUZyYW1lJiByZW1vdGVGcmFtZSkKK3sKKyNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRF
RF9UUkVFKQorICAgIHVwZGF0ZUlzb2xhdGVkVHJlZShyZW1vdGVGcmFtZSwgQVhQcm9wZXJ0eU5h
bWU6OlJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFN
KHJlbW90ZUZyYW1lKTsKKyNlbmRpZgorfQorCiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNP
TEFURURfVFJFRSkKIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlUm93c3BhbkNoYW5nZWQoQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbCYgYXhDZWxsKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA2NWUwMTZlYzJmMmIuLmJlYjk4NThhMGJmMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTQ3
LDYgKzQ3LDcgQEAgY2xhc3MgVGV4dFN0cmVhbTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitj
bGFzcyBBWFJlbW90ZUZyYW1lOwogY2xhc3MgQWNjZXNzaWJpbGl0eVRhYmxlOwogY2xhc3MgQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbDsKIGNsYXNzIERvY3VtZW50OwpAQCAtMjQ2LDYgKzI0Nyw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRlZmVyTm9kZUFkZGVkT3JSZW1vdmVkKE5vZGUqKTsKICAgICB2
b2lkIGhhbmRsZVNjcm9sbGVkVG9BbmNob3IoY29uc3QgTm9kZSogYW5jaG9yTm9kZSk7CiAgICAg
dm9pZCBvblNjcm9sbGJhclVwZGF0ZShTY3JvbGxWaWV3Kik7CisgICAgdm9pZCBvblJlbW90ZUZy
YW1lSW5pdGlhbGl6ZWQoQVhSZW1vdGVGcmFtZSYpOwogCiAgICAgYm9vbCBpc1JldHJpZXZpbmdD
dXJyZW50TW9kYWxOb2RlKCkgeyByZXR1cm4gbV9pc1JldHJpZXZpbmdDdXJyZW50TW9kYWxOb2Rl
OyB9CiAgICAgTm9kZSogbW9kYWxOb2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYUmVtb3RlRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWFJlbW90ZUZyYW1lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLmNmYmRlZGQ5ODFjYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhSZW1vdGVGcmFtZS5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBWFJlbW90ZUZyYW1lLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPEFYUmVtb3RlRnJhbWU+IEFYUmVtb3RlRnJhbWU6OmNy
ZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQVhSZW1vdGVGcmFtZSk7Cit9CisK
K0xheW91dFJlY3QgQVhSZW1vdGVGcmFtZTo6ZWxlbWVudFJlY3QoKSBjb25zdAoreworICAgIGF1
dG8qIHBhcmVudCA9IHBhcmVudE9iamVjdCgpOworICAgIHJldHVybiBwYXJlbnQgPyBwYXJlbnQt
PmVsZW1lbnRSZWN0KCkgOiBMYXlvdXRSZWN0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhSZW1vdGVGcmFt
ZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFJlbW90ZUZyYW1lLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45NGQyZGYwMzA0ZDIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYUmVtb3RlRnJhbWUuaApA
QCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDI0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJB
Y2Nlc3NpYmlsaXR5TW9ja09iamVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IFJlbW90ZUZyYW1lOworCitjbGFzcyBBWFJlbW90ZUZyYW1lIGZpbmFsIDogcHVibGljIEFjY2Vz
c2liaWxpdHlNb2NrT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEFYUmVtb3RlRnJh
bWU+IGNyZWF0ZSgpOworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBpbml0aWFsaXpl
UGxhdGZvcm1FbGVtZW50V2l0aFJlbW90ZVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Piwg
aW50KTsKKyAgICBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZ2VuZXJhdGVSZW1vdGVUb2tlbigp
IGNvbnN0OworICAgIFJldGFpblB0cjxpZD4gcmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKSBj
b25zdCB7IHJldHVybiBtX3JlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50OyB9CisgICAgcGlkX3Qg
cHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3NJZGVudGlmaWVyOyB9
CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIH5BWFJlbW90ZUZyYW1lKCkgPSBkZWZh
dWx0OworCisgICAgQWNjZXNzaWJpbGl0eVJvbGUgZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUo
KSB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6UmVtb3RlRnJhbWU7IH0KKyAgICBib29sIGNv
bXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICBib29sIGlzQVhSZW1vdGVGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICBMYXlv
dXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Q7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBS
ZXRhaW5QdHI8aWQ+IG1fcmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQ7CisgICAgcGlkX3QgbV9w
cm9jZXNzSWRlbnRpZmllciB7IDAgfTsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0FDQ0VTU0lCSUxJVFkoQVhSZW1vdGVGcmFt
ZSwgaXNBWFJlbW90ZUZyYW1lKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCBkOTc5MWFmMzg2ZDcuLjUyY2YwMmQ3
Y2UwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuY3BwCkBAIC01NDQsNyArNTQ0LDkgQEAgRmxvYXRSZWN0IEFjY2Vzc2liaWxp
dHlPYmplY3Q6OmNvbnZlcnRGcmFtZVRvU3BhY2UoY29uc3QgRmxvYXRSZWN0JiBmcmFtZVJlY3Qs
IEEKICAgICAKIEZsb2F0UmVjdCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZWxhdGl2ZUZyYW1lKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gY29udmVydEZyYW1lVG9TcGFjZShlbGVtZW50UmVjdCgpLCBB
Y2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlOjpQYWdlKTsKKyAgICBhdXRvIHJlY3QgPSBlbGVt
ZW50UmVjdCgpOworICAgIHJlY3QubW92ZUJ5KHJlbW90ZUZyYW1lT2Zmc2V0KCkpOworICAgIHJl
dHVybiBjb252ZXJ0RnJhbWVUb1NwYWNlKHJlY3QsIEFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3Bh
Y2U6OlBhZ2UpOwogfQogCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpuZXh0U2libGluZ1VuaWdub3JlZChpbnQgbGltaXQpIGNvbnN0CkBAIC0yMDg2LDE0ICsyMDg4
LDIzIEBAIGNvbnN0IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KiBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjphbmNlc3RvckFjY2Vzc2liaWxpdHlTY3JvbGxWCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBSZW1v
dGVBWE9iamVjdFJlZiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZW1vdGVQYXJlbnRPYmplY3QoKSBj
b25zdAogewotICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCkpIHsKLSAg
ICAgICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3Qo
KTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0byogZG9jdW1lbnQgPSB0aGlz
LT5kb2N1bWVudCgpOworICAgIGF1dG8qIGZyYW1lID0gZG9jdW1lbnQgPyBkb2N1bWVudC0+ZnJh
bWUoKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIGZyYW1lID8gZnJhbWUtPmxvYWRlcigpLmNsaWVu
dCgpLmFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSA6IG51bGxwdHI7CiB9CiAjZW5kaWYKIAor
SW50UG9pbnQgQWNjZXNzaWJpbGl0eU9iamVjdDo6cmVtb3RlRnJhbWVPZmZzZXQoKSBjb25zdAor
eworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1l
bnQoKTsKKyAgICBhdXRvKiBmcmFtZSA9IGRvY3VtZW50ID8gZG9jdW1lbnQtPmZyYW1lKCkgOiBu
dWxscHRyOworICAgIHJldHVybiBmcmFtZSA/IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5hY2Nl
c3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKSA6IEludFBvaW50KCk7CisjZWxzZQorICAgIHJl
dHVybiBJbnRQb2ludCgpOworI2VuZGlmCit9CisKIERvY3VtZW50KiBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojpkb2N1bWVudCgpIGNvbnN0CiB7CiAgICAgYXV0byogZnJhbWVWaWV3ID0gZG9jdW1lbnRG
cmFtZVZpZXcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmgKaW5kZXggNDBkMDQ0MzhkZTIxLi4xYjM1YWFiN2NjYmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCkBA
IC0xMDIsNiArMTAyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgYm9vbCBpc0FYUmVtb3RlRnJhbWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
SW5zdGFuY2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0Fj
Y2Vzc2liaWxpdHlTVkdSb290KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlz
QWNjZXNzaWJpbGl0eVRhYmxlSW5zdGFuY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQpAQCAtNDYyLDEwICs0NjMsMTQgQEAgcHVibGljOgogICAgIFdpZGdldCogd2lkZ2V0Rm9y
QXR0YWNobWVudFZpZXcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CiAgICAg
Ym9vbCBpc1BsdWdpbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICBJ
bnRQb2ludCByZW1vdGVGcmFtZU9mZnNldCgpIGNvbnN0IG92ZXJyaWRlOwogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIFJlbW90ZUFYT2JqZWN0UmVmIHJlbW90ZVBhcmVudE9iamVjdCgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIEZsb2F0UmVjdCBjb252ZXJ0UmVjdFRvUGxhdGZvcm1TcGFjZShjb25z
dCBGbG9hdFJlY3QmLCBBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBSZXRhaW5QdHI8aWQ+IHJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbmlsOyB9CiAjZW5kaWYKKyAgICBib29sIGhhc1JlbW90ZUZyYW1l
Q2hpbGQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgUGFnZSogcGFn
ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIFJlZlB0cjxEb2N1bWVudD4gcHJvdGVjdGVkRG9jdW1lbnQoKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuY3BwCmluZGV4IGVlOGFiZWMzZDdiNS4uMmYxMmVmNzUzZTRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdC5jcHAKQEAgLTI0MTMsNyArMjQxMyw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6YWRkQXR0YWNobWVudENoaWxkcmVuKCkKIAogICAgIC8vIExvY2FsRnJhbWVW
aWV3J3MgbmVlZCB0byBiZSBpbnNlcnRlZCBpbnRvIHRoZSBBWCBoaWVyYXJjaHkgd2hlbiBlbmNv
dW50ZXJlZC4KICAgICBXaWRnZXQqIHdpZGdldCA9IHdpZGdldEZvckF0dGFjaG1lbnRWaWV3KCk7
Ci0gICAgaWYgKCF3aWRnZXQgfHwgIXdpZGdldC0+aXNMb2NhbEZyYW1lVmlldygpKQorICAgIGlm
ICghd2lkZ2V0IHx8ICEod2lkZ2V0LT5pc0xvY2FsRnJhbWVWaWV3KCkgfHwgd2lkZ2V0LT5pc1Jl
bW90ZUZyYW1lVmlldygpKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGFkZENoaWxkKGF4
T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUod2lkZ2V0KSk7CkBAIC0yNTY4LDcgKzI1NjgsNyBA
QCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENoaWxkcmVuKCkKICAgICAgICAg
YXV0byBvd25lcnMgPSBvYmplY3Qub3duZXJzKCk7CiAgICAgICAgIGlmIChvd25lcnMuc2l6ZSgp
ICYmICFvd25lcnMuY29udGFpbnModGhpcykpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IAorCiAgICAgICAgIGFkZENoaWxkKCZvYmplY3QpOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAK
aW5kZXggMmJiYzMwODdiOWY4Li41MjEyMjJhZjYwMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwCkBAIC0y
NywxMCArMjcsMTIgQEAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oIgogCiAj
aW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgorI2luY2x1ZGUgIkFYUmVtb3RlRnJhbWUuaCIKICNp
bmNsdWRlICJBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3du
ZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiTG9jYWxGcmFtZS5oIgogI2luY2x1ZGUgIkxvY2FsRnJh
bWVWaWV3LmgiCisjaW5jbHVkZSAiUmVtb3RlRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiUmVuZGVy
RWxlbWVudC5oIgogI2luY2x1ZGUgIldpZGdldC5oIgogCkBAIC01Miw2ICs1NCwxNiBAQCBBY2Nl
c3NpYmlsaXR5U2Nyb2xsVmlldzo6fkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KCkKIHZvaWQgQWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmRldGFjaFJlbW90ZVBhcnRzKEFjY2Vzc2liaWxpdHlEZXRh
Y2htZW50VHlwZSBkZXRhY2htZW50VHlwZSkKIHsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpk
ZXRhY2hSZW1vdGVQYXJ0cyhkZXRhY2htZW50VHlwZSk7CisKKyAgICBhdXRvKiByZW1vdGVGcmFt
ZVZpZXcgPSBkeW5hbWljRG93bmNhc3Q8UmVtb3RlRnJhbWVWaWV3PihtX3Njcm9sbFZpZXcuZ2V0
KCkpOworICAgIGlmIChyZW1vdGVGcmFtZVZpZXcgJiYgbV9yZW1vdGVGcmFtZSAmJiAoZGV0YWNo
bWVudFR5cGUgPT0gQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlOjpFbGVtZW50RGVzdHJveWVk
IHx8IGRldGFjaG1lbnRUeXBlID09IEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZTo6Q2FjaGVE
ZXN0cm95ZWQpKSB7CisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICBhdXRvJiByZW1vdGVGcmFt
ZSA9IHJlbW90ZUZyYW1lVmlldy0+ZnJhbWUoKTsKKyAgICAgICAgcmVtb3RlRnJhbWUudW5iaW5k
UmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhtX3JlbW90ZUZyYW1lLT5wcm9jZXNzSWRlbnRpZmll
cigpKTsKKyNlbmRpZgorICAgICAgICBtX3JlbW90ZUZyYW1lID0gbnVsbHB0cjsKKyAgICB9CisK
ICAgICBtX3Njcm9sbFZpZXcgPSBudWxscHRyOwogICAgIG1fZnJhbWVPd25lckVsZW1lbnQgPSBu
dWxscHRyOwogfQpAQCAtMTc3LDggKzE4OSwxMCBAQCBBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyKiBB
Y2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkQ2hpbGRTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzYwog
dm9pZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6Y2xlYXJDaGlsZHJlbigpCiB7CiAgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6Y2xlYXJDaGlsZHJlbigpOworCiAgICAgbV92ZXJ0aWNhbFNjcm9s
bGJhciA9IG51bGxwdHI7CiAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyID0gbnVsbHB0cjsKKwog
ICAgIG1fY2hpbGRyZW5EaXJ0eSA9IGZhbHNlOwogfQogCkBAIC0xOTEsMTEgKzIwNSw0NSBAQCBi
b29sIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3Jl
ZCgpIGNvbnN0CiAgICAgcmV0dXJuIHdlYkFyZWEtPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKTsK
IH0KIAordm9pZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkUmVtb3RlRnJhbWVDaGlsZCgp
Cit7CisgICAgYXV0byogcmVtb3RlRnJhbWVWaWV3ID0gZHluYW1pY0Rvd25jYXN0PFJlbW90ZUZy
YW1lVmlldz4obV9zY3JvbGxWaWV3LmdldCgpKTsKKyAgICBpZiAoIXJlbW90ZUZyYW1lVmlldykK
KyAgICAgICAgcmV0dXJuOworCisgICAgV2Vha1B0ciBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsK
KyAgICBpZiAoIWNhY2hlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1fcmVtb3RlRnJh
bWUpIHsKKyAgICAgICAgLy8gTWFrZSB0aGUgZmF1eCBlbGVtZW50IHRoYXQgcmVwcmVzZW50cyB0
aGUgcmVtb3RlIHRyYW5zZmVyIGVsZW1lbnQgZm9yIEFYLgorICAgICAgICBtX3JlbW90ZUZyYW1l
ID0gZG93bmNhc3Q8QVhSZW1vdGVGcmFtZT4oY2FjaGUtPmNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9s
ZTo6UmVtb3RlRnJhbWUpKTsKKyAgICAgICAgbV9yZW1vdGVGcmFtZS0+c2V0UGFyZW50KHRoaXMp
OworCisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICAvLyBHZW5lcmF0ZSBhIG5ldyB0b2tlbiBh
bmQgcGFzcyBpdCBiYWNrIHRvIHRoZSBvdGhlciByZW1vdGUgZnJhbWUgc28gaXQgY2FuIGJpbmQg
dGhlc2Ugb2JqZWN0cyB0b2dldGhlci4KKyAgICAgICAgYXV0byBnZW5lcmF0ZWRUb2tlbiA9IG1f
cmVtb3RlRnJhbWUtPmdlbmVyYXRlUmVtb3RlVG9rZW4oKTsKKyAgICAgICAgYXV0byYgcmVtb3Rl
RnJhbWUgPSByZW1vdGVGcmFtZVZpZXctPmZyYW1lKCk7CisgICAgICAgIHJlbW90ZUZyYW1lLmJp
bmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGdldHBpZCgpLCBnZW5lcmF0ZWRUb2tlbiwgW3Ro
aXMsICZyZW1vdGVGcmFtZSwgcHJvdGVjdGVkQWNjZXNzYmlsaXR5UmVtb3RlRnJhbWUgPSBSZWZQ
dHIgeyBtX3JlbW90ZUZyYW1lIH1dIChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gdG9rZW4sIGlu
dCBwcm9jZXNzSWRlbnRpZmllcikgbXV0YWJsZSB7CisgICAgICAgICAgICBwcm90ZWN0ZWRBY2Nl
c3NiaWxpdHlSZW1vdGVGcmFtZS0+aW5pdGlhbGl6ZVBsYXRmb3JtRWxlbWVudFdpdGhSZW1vdGVU
b2tlbih0b2tlbiwgcHJvY2Vzc0lkZW50aWZpZXIpOworCisgICAgICAgICAgICAvLyBVcGRhdGUg
dGhlIHJlbW90ZSBzaWRlIHdpdGggdGhlIG9mZnNldCBvZiB0aGlzIG9iamVjdCBzbyBpdCBjYW4g
Y2FsY3VsYXRlIGZyYW1lcyBjb3JyZWN0bHkuCisgICAgICAgICAgICBhdXRvIGxvY2F0aW9uID0g
ZWxlbWVudFJlY3QoKS5sb2NhdGlvbigpOworICAgICAgICAgICAgcmVtb3RlRnJhbWUudXBkYXRl
UmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KGZsb29yZWRJbnRQb2ludChsb2NhdGlvbikp
OworICAgICAgICB9KTsKKyNlbmRpZgorICAgIH0gZWxzZQorICAgICAgICBtX3JlbW90ZUZyYW1l
LT5zZXRQYXJlbnQodGhpcyk7CisKKyAgICBhZGRDaGlsZChtX3JlbW90ZUZyYW1lLmdldCgpKTsK
K30KKwogdm9pZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkQ2hpbGRyZW4oKQogewogICAg
IEFTU0VSVCghbV9jaGlsZHJlbkluaXRpYWxpemVkKTsKICAgICBtX2NoaWxkcmVuSW5pdGlhbGl6
ZWQgPSB0cnVlOwogCisgICAgYWRkUmVtb3RlRnJhbWVDaGlsZCgpOwogICAgIGFkZENoaWxkKHdl
YkFyZWFPYmplY3QoKSk7CiAgICAgdXBkYXRlU2Nyb2xsYmFycygpOwogfQpAQCAtMjAzLDcgKzI1
MSw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmFkZENoaWxkcmVuKCkKIEFjY2Vz
c2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojp3ZWJBcmVhT2JqZWN0KCkg
Y29uc3QKIHsKICAgICBhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7Ci0gICAgaWYg
KCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPmhhc0xpdmluZ1JlbmRlclRyZWUoKSkKKyAgICBpZiAo
IWRvY3VtZW50IHx8ICFkb2N1bWVudC0+aGFzTGl2aW5nUmVuZGVyVHJlZSgpIHx8IG1fcmVtb3Rl
RnJhbWUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKGF1dG8qIGNhY2hlID0g
YXhPYmplY3RDYWNoZSgpKQpAQCAtMjM0LDkgKzI4MiwxNSBAQCBMYXlvdXRSZWN0IEFjY2Vzc2li
aWxpdHlTY3JvbGxWaWV3OjplbGVtZW50UmVjdCgpIGNvbnN0CiAKIERvY3VtZW50KiBBY2Nlc3Np
YmlsaXR5U2Nyb2xsVmlldzo6ZG9jdW1lbnQoKSBjb25zdAogewotICAgIGlmIChhdXRvKiBmcmFt
ZVZpZXcgPSBkeW5hbWljRG93bmNhc3Q8TG9jYWxGcmFtZVZpZXc+KG1fc2Nyb2xsVmlldy5nZXQo
KSkpIHsKKyAgICBpZiAoYXV0byogZnJhbWVWaWV3ID0gZHluYW1pY0Rvd25jYXN0PExvY2FsRnJh
bWVWaWV3PihtX3Njcm9sbFZpZXcuZ2V0KCkpKQogICAgICAgICByZXR1cm4gZnJhbWVWaWV3LT5m
cmFtZSgpLmRvY3VtZW50KCk7CisKKyAgICAvLyBGb3IgdGhlIFJlbW90ZUZyYW1lVmlldyBjYXNl
LCB3ZSBuZWVkIHRvIHJldHVybiB0aGUgZG9jdW1lbnQgb2Ygb3VyIGhvc3RpbmcgcGFyZW50IHNv
IGF4T2JqZWN0Q2FjaGUoKSByZXNvbHZlcyBjb3JyZWN0bHkuCisgICAgaWYgKGF1dG8qIHJlbW90
ZUZyYW1lVmlldyA9IGR5bmFtaWNEb3duY2FzdDxSZW1vdGVGcmFtZVZpZXc+KG1fc2Nyb2xsVmll
dy5nZXQoKSkpIHsKKyAgICAgICAgaWYgKGF1dG8qIG93bmVyID0gcmVtb3RlRnJhbWVWaWV3LT5m
cmFtZSgpLm93bmVyRWxlbWVudCgpKQorICAgICAgICAgICAgcmV0dXJuICYob3duZXItPmRvY3Vt
ZW50KCkpOwogICAgIH0KKwogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpkb2N1bWVu
dCgpOwogfQogCkBAIC0yNTksOCArMzEzLDEwIEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vz
c2liaWxpdHlTY3JvbGxWaWV3OjpwYXJlbnRPYmplY3QoKSBjb25zdAogICAgIFdlYWtQdHIgb3du
ZXIgPSBtX2ZyYW1lT3duZXJFbGVtZW50LmdldCgpOwogICAgIGlmIChhdXRvKiBsb2NhbEZyYW1l
VmlldyA9IGR5bmFtaWNEb3duY2FzdDxMb2NhbEZyYW1lVmlldz4obV9zY3JvbGxWaWV3LmdldCgp
KSkKICAgICAgICAgb3duZXIgPSBsb2NhbEZyYW1lVmlldy0+ZnJhbWUoKS5vd25lckVsZW1lbnQo
KTsKKyAgICBlbHNlIGlmIChhdXRvKiByZW1vdGVGcmFtZVZpZXcgPSBkeW5hbWljRG93bmNhc3Q8
UmVtb3RlRnJhbWVWaWV3PihtX3Njcm9sbFZpZXcuZ2V0KCkpKQorICAgICAgICBvd25lciA9IHJl
bW90ZUZyYW1lVmlldy0+ZnJhbWUoKS5vd25lckVsZW1lbnQoKTsKIAotICAgIGlmIChjYWNoZSAm
JiBvd25lciAmJiBvd25lci0+cmVuZGVyZXIoKSkKKyAgICBpZiAob3duZXIgJiYgb3duZXItPnJl
bmRlcmVyKCkpCiAgICAgICAgIHJldHVybiBjYWNoZS0+Z2V0T3JDcmVhdGUob3duZXIuZ2V0KCkp
OwogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oCmluZGV4IDU1NzA0NDY3MWM3ZC4u
NTI1YWM3ODNmYmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oCkBAIC0zMCw2ICszMCw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAKK2NsYXNzIEFYUmVtb3RlRnJhbWU7CiBjbGFzcyBBY2Nlc3NpYmls
aXR5U2Nyb2xsYmFyOwogY2xhc3MgU2Nyb2xsYmFyOwogY2xhc3MgU2Nyb2xsVmlldzsKQEAgLTU0
LDcgKzU1LDggQEAgcHJpdmF0ZToKICAgICBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25v
cmVkKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
SW5zdGFuY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBpc0Vu
YWJsZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgCisgICAgYm9vbCBo
YXNSZW1vdGVGcmFtZUNoaWxkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9yZW1vdGVGcmFtZTsg
fQorCiAgICAgYm9vbCBpc0F0dGFjaG1lbnQoKSBjb25zdCBvdmVycmlkZTsKICAgICBQbGF0Zm9y
bVdpZGdldCBwbGF0Zm9ybVdpZGdldCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFdpZGdldCogd2lk
Z2V0Rm9yQXR0YWNobWVudFZpZXcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBjdXJyZW50U2Ny
b2xsVmlldygpOyB9CkBAIC02OSw2ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRGb2N1
c2VkKGJvb2wpIG92ZXJyaWRlOwogICAgIGJvb2wgY2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSBjb25z
dCBvdmVycmlkZTsKICAgICBib29sIGlzRm9jdXNlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZv
aWQgYWRkUmVtb3RlRnJhbWVDaGlsZCgpOwogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgTG9jYWxGcmFtZVZpZXcqIGRvY3VtZW50RnJhbWVWaWV3KCkgY29u
c3Qgb3ZlcnJpZGU7CkBAIC04NSw2ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEFjY2Vz
c2liaWxpdHlPYmplY3Q+IG1faG9yaXpvbnRhbFNjcm9sbGJhcjsKICAgICBSZWZQdHI8QWNjZXNz
aWJpbGl0eU9iamVjdD4gbV92ZXJ0aWNhbFNjcm9sbGJhcjsKICAgICBib29sIG1fY2hpbGRyZW5E
aXJ0eTsKKyAgICBSZWZQdHI8QVhSZW1vdGVGcmFtZT4gbV9yZW1vdGVGcmFtZTsKIH07CiAgICAg
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKaW5k
ZXggNWRlOTcwZjFmNzBkLi41MTg3YjJmYTM1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RBdHNw
aS5jcHAKQEAgLTM3MCw2ICszNzAsNyBAQCBzdGF0aWMgQXRzcGk6OlJvbGUgYXRzcGlSb2xlKEFj
Y2Vzc2liaWxpdHlSb2xlIHJvbGUpCiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3VtbWFy
eToKICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJsZUhlYWRlckNvbnRhaW5lcjoKICAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTdWdnZXN0aW9uOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OlJlbW90ZUZyYW1lOgogICAgICAgICByZXR1cm4gQXRzcGk6OlJvbGU6OlVua25v
d247CiAgICAgLy8gQWRkIG1vc3QgbmV3IHJvbGVzIGFib3ZlLiBUaGUgcmVsZWFzZSBhc3NlcnQg
aXMgZm9yIHJvbGVzIHRoYXQgYXJlIGhhbmRsZWQgc3BlY2lhbGx5LgogICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6Okxpc3RNYXJrZXI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
SU9TLm1tCmluZGV4IDJmMjliNzJmZmU3ZS4uOTI0M2FkNmJkMzQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQpAQCAtMTExMiw2ICsxMTEyLDcgQEAgc3RhdGljIEFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyICphbmNlc3RvcldpdGhSb2xlKGNvbnN0IEFYQ29yZU9i
amVjdCYgZGVzY2VuZGEKICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpJZ25vcmVkOgogICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxpbmVCcmVhazoKICAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpQcmVzZW50YXRpb25hbDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSZW1v
dGVGcmFtZToKICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duOgogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcAppbmRleCAxMDE0
NTQ2Mjc4ZjMuLjM0MmQ0YzcyZTY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKQEAg
LTM3OCw2ICszNzgsMTAgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplUHJvcGVy
dGllcyhjb25zdCBSZWY8QWNjZXNzaWJpbGl0eU9iamVjdD4mIGF4T2IKICNlbmRpZgogCiAgICAg
c2V0T2JqZWN0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkludGVybmFsTGlua0VsZW1lbnQsIG9i
amVjdC5pbnRlcm5hbExpbmtFbGVtZW50KCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlO
YW1lOjpIYXNSZW1vdGVGcmFtZUNoaWxkLCBvYmplY3QuaGFzUmVtb3RlRnJhbWVDaGlsZCgpKTsK
KyAgICAvLyBEb24ndCBkdXBsaWNhdGUgdGhlIHJlbW90ZUZyYW1lT2Zmc2V0IGZvciBldmVyeSBv
YmplY3QuIEp1c3Qgc3RvcmUgaW4gdGhlIFdlYkFyZWEuCisgICAgaWYgKG9iamVjdC5pc1dlYkFy
ZWEoKSkKKyAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlJlbW90ZUZyYW1lT2Zm
c2V0LCBvYmplY3QucmVtb3RlRnJhbWVPZmZzZXQoKSk7CiAKICAgICBpbml0aWFsaXplUGxhdGZv
cm1Qcm9wZXJ0aWVzKGF4T2JqZWN0KTsKIH0KQEAgLTQ2NCw2ICs0NjgsNyBAQCB2b2lkIEFYSXNv
bGF0ZWRPYmplY3Q6OnNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgQVhQ
cm9wZXJ0eVZhbHVlVgogICAgICAgICBbXShPcHRpb25TZXQ8QVhBbmNlc3RvckZsYWc+JiB0eXBl
ZFZhbHVlKSB7IHJldHVybiB0eXBlZFZhbHVlLmlzRW1wdHkoKTsgfSwKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICAgICAgW10oUmV0YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4mIHR5cGVkVmFs
dWUpIHsgcmV0dXJuICF0eXBlZFZhbHVlOyB9LAorICAgICAgICBbXShSZXRhaW5QdHI8aWQ+JiB0
eXBlZFZhbHVlKSB7IHJldHVybiAhdHlwZWRWYWx1ZTsgfSwKICNlbmRpZgogICAgICAgICBbXShJ
bnNpZGVMaW5rJiB0eXBlZFZhbHVlKSB7IHJldHVybiB0eXBlZFZhbHVlID09IEluc2lkZUxpbmso
KTsgfSwKICAgICAgICAgW10oVmVjdG9yPFZlY3RvcjxBWElEPj4mIHR5cGVkVmFsdWUpIHsgcmV0
dXJuIHR5cGVkVmFsdWUuaXNFbXB0eSgpOyB9LApAQCAtMTIwNiw2ICsxMjExLDIxIEBAIExheW91
dFJlY3QgQVhJc29sYXRlZE9iamVjdDo6ZWxlbWVudFJlY3QoKSBjb25zdAogICAgIH0pOwogfQog
CitJbnRQb2ludCBBWElzb2xhdGVkT2JqZWN0OjpyZW1vdGVGcmFtZU9mZnNldCgpIGNvbnN0Cit7
CisgICAgYXV0byogd2ViQXJlYSA9IEFjY2Vzc2liaWxpdHk6OmZpbmRBbmNlc3RvcjxBWElzb2xh
dGVkT2JqZWN0PigqdGhpcywgdHJ1ZSwgW10gKGNvbnN0IGF1dG8mIG9iamVjdCkgeworICAgICAg
ICByZXR1cm4gb2JqZWN0LmlzV2ViQXJlYSgpOworICAgIH0pOworCisgICAgaWYgKCF3ZWJBcmVh
KQorICAgICAgICByZXR1cm4geyB9OworCisgICAgaWYgKGF1dG8gcG9pbnQgPSB3ZWJBcmVhLT5v
cHRpb25hbEF0dHJpYnV0ZVZhbHVlPEludFBvaW50PihBWFByb3BlcnR5TmFtZTo6UmVtb3RlRnJh
bWVPZmZzZXQpKQorICAgICAgICByZXR1cm4gKnBvaW50OworCisgICAgcmV0dXJuIHsgfTsKK30K
KwogRmxvYXRQb2ludCBBWElzb2xhdGVkT2JqZWN0OjpzY3JlZW5SZWxhdGl2ZVBvc2l0aW9uKCkg
Y29uc3QKIHsKICAgICBpZiAoYXV0byBwb2ludCA9IG9wdGlvbmFsQXR0cmlidXRlVmFsdWU8Rmxv
YXRQb2ludD4oQVhQcm9wZXJ0eU5hbWU6OlNjcmVlblJlbGF0aXZlUG9zaXRpb24pKQpAQCAtMTIy
OSwyMiArMTI0OSwyMyBAQCBGbG9hdFBvaW50IEFYSXNvbGF0ZWRPYmplY3Q6OnNjcmVlblJlbGF0
aXZlUG9zaXRpb24oKSBjb25zdAogCiBGbG9hdFJlY3QgQVhJc29sYXRlZE9iamVjdDo6cmVsYXRp
dmVGcmFtZSgpIGNvbnN0CiB7CisgICAgRmxvYXRSZWN0IHJlbGF0aXZlRnJhbWU7CisKICAgICBp
ZiAoYXV0byBjYWNoZWRSZWxhdGl2ZUZyYW1lID0gb3B0aW9uYWxBdHRyaWJ1dGVWYWx1ZTxJbnRS
ZWN0PihBWFByb3BlcnR5TmFtZTo6UmVsYXRpdmVGcmFtZSkpIHsKICAgICAgICAgLy8gV2Ugc2hv
dWxkIG5vdCBoYXZlIGNhY2hlZCBhIHJlbGF0aXZlIGZyYW1lIGZvciBlbGVtZW50cyB0aGF0IGdl
dCB0aGVpciBnZW9tZXRyeSBmcm9tIHRoZWlyIGNoaWxkcmVuLgogICAgICAgICBBU1NFUlQoIW1f
Z2V0c0dlb21ldHJ5RnJvbUNoaWxkcmVuKTsKLSAgICAgICAgcmV0dXJuICpjYWNoZWRSZWxhdGl2
ZUZyYW1lOwotICAgIH0KLQotICAgIGlmIChtX2dldHNHZW9tZXRyeUZyb21DaGlsZHJlbikgewor
ICAgICAgICByZWxhdGl2ZUZyYW1lID0gKmNhY2hlZFJlbGF0aXZlRnJhbWU7CisgICAgfSBlbHNl
IGlmIChtX2dldHNHZW9tZXRyeUZyb21DaGlsZHJlbikgewogICAgICAgICBhdXRvIGZyYW1lID0g
ZW5jbG9zaW5nSW50UmVjdChyZWxhdGl2ZUZyYW1lRnJvbUNoaWxkcmVuKCkpOwogICAgICAgICBp
ZiAoIWZyYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBmcmFtZTsKKyAgICAgICAg
ICAgIHJlbGF0aXZlRnJhbWUgPSBmcmFtZTsKICAgICAgICAgLy8gRWl0aGVyIHdlIGhhZCBubyBj
aGlsZHJlbiwgb3Igb3VyIGNoaWxkcmVuIGhhZCBlbXB0eSBmcmFtZXMuIFRoZSByaWdodCB0aGlu
ZyB0byBkbyB3b3VsZCBiZSB0byByZXR1cm4KICAgICAgICAgLy8gYSByZWN0IGF0IHRoZSBwb3Np
dGlvbiBvZiB0aGUgbmVhcmVzdCByZW5kZXIgdHJlZSBhbmNlc3RvciB3aXRoIHNvbWUgbWFkZS11
cCBzaXplIChBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6Ym91bmRpbmdCb3hSZWN0IGRvZXMgdGhp
cykuCiAgICAgICAgIC8vIEhvd2V2ZXIsIHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIHRoZSByZW5k
ZXIgdHJlZSBpbiB0aGlzIGNvbnRleHQgKG9ubHkgdGhlIEFYIGlzb2xhdGVkIHRyZWUsIHdoaWNo
IGlzIHRvbyBzcGFyc2UgZm9yIHRoaXMgcHVycG9zZSksIHNvCiAgICAgICAgIC8vIHVudGlsIHdl
IGNhY2hlIHRoZSBuZWNlc3NhcnkgaW5mb3JtYXRpb24gbGV0J3MgZ28gdG8gdGhlIG1haW4tdGhy
ZWFkLgogICAgIH0gZWxzZSBpZiAocm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNv
bHVtbiB8fCByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFibGVIZWFkZXJDb250
YWluZXIpCi0gICAgICAgIHJldHVybiBleHBvc2VkVGFibGVBbmNlc3RvcigpID8gcmVsYXRpdmVG
cmFtZUZyb21DaGlsZHJlbigpIDogRmxvYXRSZWN0KCk7CisgICAgICAgIHJlbGF0aXZlRnJhbWUg
PSBleHBvc2VkVGFibGVBbmNlc3RvcigpID8gcmVsYXRpdmVGcmFtZUZyb21DaGlsZHJlbigpIDog
RmxvYXRSZWN0KCk7CisKIAogICAgIC8vIE1vY2sgb2JqZWN0cyBhbmQgU1ZHIG9iamVjdHMgbmVl
ZCB1c2UgdGhlIG1haW4gdGhyZWFkIHNpbmNlIHRoZXkgZG8gbm90IGhhdmUgcmVuZGVyIG5vZGVz
IGFuZCBhcmUgbm90IHBhaW50ZWQgd2l0aCBsYXllcnMsIHJlc3BlY3RpdmVseS4KICAgICAvLyBG
SVhNRTogUmVtb3ZlIGlzTm9uTGF5ZXJTVkdPYmplY3Qgd2hlbiBMQlNFIGlzIGVuYWJsZWQgJiBT
VkcgZnJhbWVzIGFyZSBjYWNoZWQuCkBAIC0xMjY2LDYgKzEyODcsNyBAQCBGbG9hdFJlY3QgQVhJ
c29sYXRlZE9iamVjdDo6cmVsYXRpdmVGcmFtZSgpIGNvbnN0CiAgICAgaWYgKGFuY2VzdG9yICYm
IGZyYW1lUmVjdC5sb2NhdGlvbigpID09IEZsb2F0UG9pbnQoKSkKICAgICAgICAgZnJhbWVSZWN0
LnNldExvY2F0aW9uKGFuY2VzdG9yLT5yZWxhdGl2ZUZyYW1lKCkubG9jYXRpb24oKSk7CiAKKyAg
ICBmcmFtZVJlY3QubW92ZUJ5KHsgcmVtb3RlRnJhbWVPZmZzZXQoKSB9KTsKICAgICByZXR1cm4g
ZnJhbWVSZWN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgKaW5kZXggZDJhNjZjMmY1M2U0
Li5kZTgyN2Q1ZmUwMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgKQEAgLTI4LDYgKzI4LDcg
QEAKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQogCiAjaW5jbHVkZSAi
QVhDb3JlT2JqZWN0LmgiCisjaW5jbHVkZSAiQVhJc29sYXRlZFRyZWUuaCIKICNpbmNsdWRlICJB
WE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNsdWRlICJMYXlvdXRS
ZWN0LmgiCkBAIC0yMTUsNiArMjE2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzRmlsZVVwbG9h
ZEJ1dHRvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3Bl
cnR5TmFtZTo6SXNGaWxlVXBsb2FkQnV0dG9uKTsgfQogICAgIGJvb2wgaXNNZXRlcigpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNZXRl
cik7IH07CiAgICAgRmxvYXRQb2ludCBzY3JlZW5SZWxhdGl2ZVBvc2l0aW9uKCkgY29uc3QgZmlu
YWw7CisgICAgSW50UG9pbnQgcmVtb3RlRnJhbWVPZmZzZXQoKSBjb25zdCBmaW5hbDsKICAgICBG
bG9hdFJlY3QgcmVsYXRpdmVGcmFtZSgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaGFzQ2FjaGVk
UmVsYXRpdmVGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG9wdGlvbmFsQXR0cmlidXRlVmFsdWU8SW50
UmVjdD4oQVhQcm9wZXJ0eU5hbWU6OlJlbGF0aXZlRnJhbWUpLmhhc192YWx1ZSgpOyB9CiAjaWYg
UExBVEZPUk0oTUFDKQpAQCAtMjYzLDcgKzI2NSw3IEBAIHByaXZhdGU6CiAgICAgQVhJc29sYXRl
ZE9iamVjdCogYWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCBmaW5h
bDsKICAgICBBWElzb2xhdGVkT2JqZWN0KiBmb2N1c2VkVUlFbGVtZW50KCkgY29uc3QgZmluYWw7
CiAgICAgQVhDb3JlT2JqZWN0KiBpbnRlcm5hbExpbmtFbGVtZW50KCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gb2JqZWN0QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkludGVybmFsTGlua0Vs
ZW1lbnQpOyB9Ci0gICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHJhZGlvQnV0dG9uR3Jv
dXAoKSBjb25zdCB7IHJldHVybiB0cmVlKCktPm9iamVjdHNGb3JJRHModmVjdG9yQXR0cmlidXRl
VmFsdWU8QVhJRD4oQVhQcm9wZXJ0eU5hbWU6OlJhZGlvQnV0dG9uR3JvdXApKTsgfQorICAgIEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciByYWRpb0J1dHRvbkdyb3VwKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gdHJlZSgpLT5vYmplY3RzRm9ySURzKHZlY3RvckF0dHJpYnV0ZVZhbHVlPEFYSUQ+
KEFYUHJvcGVydHlOYW1lOjpSYWRpb0J1dHRvbkdyb3VwKSk7IH0KICAgICBBWElzb2xhdGVkT2Jq
ZWN0KiBzY3JvbGxCYXIoQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uKSBmaW5hbDsKICAgICBjb25z
dCBTdHJpbmcgcGxhY2Vob2xkZXJWYWx1ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0cmluZ0F0
dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpQbGFjZWhvbGRlclZhbHVlKTsgfQogICAgIFN0
cmluZyBleHBhbmRlZFRleHRWYWx1ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0cmluZ0F0dHJp
YnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpFeHBhbmRlZFRleHRWYWx1ZSk7IH0KQEAgLTQ1Niw3
ICs0NTgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5QVJJQUdyaWRJbnN0
YW5jZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0FjY2Vzc2li
aWxpdHlBUklBR3JpZFJvd0luc3RhbmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICBib29sIGlzQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbEluc3RhbmNlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gZmFsc2U7IH0KLQorICAgIGJvb2wgaXNBWFJlbW90ZUZyYW1lKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzTmF0aXZlVGV4dENvbnRyb2woKSBj
b25zdCBmaW5hbDsKICAgICBib29sIGlzTGlzdEJveE9wdGlvbigpIGNvbnN0IGZpbmFsOwogICAg
IGJvb2wgaXNNb2NrT2JqZWN0KCkgY29uc3QgZmluYWw7CkBAIC01MzcsNyArNTM5LDkgQEAgcHJp
dmF0ZToKICAgICBTdHJpbmcgbmFtZUF0dHJpYnV0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0
cmluZ0F0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpOYW1lQXR0cmlidXRlKTsgfQogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIGJvb2wgaGFzQXBwbGVQREZBbm5vdGF0aW9uQXR0cmlidXRl
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1l
OjpIYXNBcHBsZVBERkFubm90YXRpb25BdHRyaWJ1dGUpOyB9CisgICAgUmV0YWluUHRyPGlkPiBy
ZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpIGNvbnN0IGZpbmFsOwogI2VuZGlmCisgICAgYm9v
bCBoYXNSZW1vdGVGcmFtZUNoaWxkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gYm9vbEF0dHJpYnV0
ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpIYXNSZW1vdGVGcmFtZUNoaWxkKTsgfQogCiAjaWYgUExB
VEZPUk0oQ09DT0EpICYmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIFZlY3RvcjxSZXRhaW5Q
dHI8aWQ+PiBtb2RlbEVsZW1lbnRDaGlsZHJlbigpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUu
Y3BwCmluZGV4IDY5NjY1ODQ0OGY2NS4uM2FjYzE5OThiMWJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRy
ZWUuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJBWElzb2xhdGVkT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiQVhMb2dnZXIuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGUuaCIK
ICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGVSb3cuaCIKICNpbmNsdWRlICJGcmFtZVNlbGVj
dGlvbi5oIgogI2luY2x1ZGUgIkxvY2FsRnJhbWVWaWV3LmgiCkBAIC0yMjUsNDYgKzIyNiwyNiBA
QCBSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4gQVhJc29sYXRlZFRyZWU6Om9iamVjdEZvcklEKGNv
bnN0IEFYSUQgYXhJRCkgY29uc3QKICAgICByZXR1cm4gYXhJRC5pc1ZhbGlkKCkgPyBtX3JlYWRl
clRocmVhZE5vZGVNYXAuZ2V0KGF4SUQpIDogbnVsbHB0cjsKIH0KIAotdGVtcGxhdGU8dHlwZW5h
bWUgVT4KLVZlY3RvcjxSZWZQdHI8QVhDb3JlT2JqZWN0Pj4gQVhJc29sYXRlZFRyZWU6Om9iamVj
dHNGb3JJRHMoY29uc3QgVSYgYXhJRHMpCitSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4gQVhJc29s
YXRlZFRyZWU6OnJldHJpZXZlT2JqZWN0Rm9ySURGcm9tTWFpblRocmVhZChjb25zdCBBWElEIGF4
SUQpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Ci0KLSAgICBWZWN0b3I8
UmVmUHRyPEFYQ29yZU9iamVjdD4+IHJlc3VsdDsKLSAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShheElEcy5zaXplKCkpOwotICAgIGZvciAoY29uc3QgYXV0byYgYXhJRCA6IGF4SURz
KSB7Ci0gICAgICAgIFJlZlB0ciBvYmplY3QgPSBvYmplY3RGb3JJRChheElEKTsKLSAgICAgICAg
aWYgKG9iamVjdCkgewotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChXVEZNb3ZlKG9iamVjdCkp
OwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBUaGVyZSBp
cyBubyBpc29sYXRlZCBvYmplY3QgZm9yIHRoaXMgQVhJRC4gVGhpcyBjYW4gaGFwcGVuIGlmIHRo
ZSBjb3JyZXNwb25kaW5nIGxpdmUgb2JqZWN0IGlzIGlnbm9yZWQuCi0gICAgICAgIC8vIElmIHRo
ZXJlIGlzIGEgbGl2ZSBvYmplY3QgZm9yIHRoaXMgSUQgYW5kIGl0IGlzIGFuIGlnbm9yZWQgdGFy
Z2V0IG9mIGEgcmVsYXRpb25zaGlwLCBjcmVhdGUgYW4gaXNvbGF0ZWQgb2JqZWN0IGZvciBpdC4K
LSAgICAgICAgb2JqZWN0ID0gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhy
ZWFkPFJlZlB0cjxBWElzb2xhdGVkT2JqZWN0Pj4oWyZheElELCB0aGlzXSAoKSAtPiBSZWZQdHI8
QVhJc29sYXRlZE9iamVjdD4gewotICAgICAgICAgICAgYXV0byogY2FjaGUgPSBheE9iamVjdENh
Y2hlKCk7Ci0gICAgICAgICAgICBpZiAoIWNhY2hlIHx8ICFjYWNoZS0+cmVsYXRpb25UYXJnZXRJ
RHMoKS5jb250YWlucyhheElEKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQot
ICAgICAgICAgICAgUmVmUHRyIGF4T2JqZWN0ID0gY2FjaGUtPm9iamVjdEZvcklEKGF4SUQpOwot
ICAgICAgICAgICAgaWYgKCFheE9iamVjdCB8fCAhYXhPYmplY3QtPmFjY2Vzc2liaWxpdHlJc0ln
bm9yZWQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgICAgICAgICAg
YXV0byBvYmplY3QgPSBBWElzb2xhdGVkT2JqZWN0OjpjcmVhdGUoKmF4T2JqZWN0LCBjb25zdF9j
YXN0PEFYSXNvbGF0ZWRUcmVlKj4odGhpcykpOwotICAgICAgICAgICAgQVNTRVJUKGF4T2JqZWN0
LT53cmFwcGVyKCkpOwotICAgICAgICAgICAgb2JqZWN0LT5hdHRhY2hQbGF0Zm9ybVdyYXBwZXIo
YXhPYmplY3QtPndyYXBwZXIoKSk7Ci0gICAgICAgICAgICByZXR1cm4gb2JqZWN0OwotICAgICAg
ICB9KTsKLSAgICAgICAgaWYgKG9iamVjdCkgewotICAgICAgICAgICAgbV9yZWFkZXJUaHJlYWRO
b2RlTWFwLmFkZChheElELCAqb2JqZWN0KTsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoV1RG
TW92ZShvYmplY3QpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXN1bHQuc2hyaW5rVG9GaXQo
KTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIC8vIFRoZXJlIGlzIG5vIGlzb2xhdGVkIG9iamVj
dCBmb3IgdGhpcyBBWElELiBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlIGNvcnJlc3BvbmRpbmcgbGl2
ZSBvYmplY3QgaXMgaWdub3JlZC4KKyAgICAvLyBJZiB0aGVyZSBpcyBhIGxpdmUgb2JqZWN0IGZv
ciB0aGlzIElEIGFuZCBpdCBpcyBhbiBpZ25vcmVkIHRhcmdldCBvZiBhIHJlbGF0aW9uc2hpcCwg
Y3JlYXRlIGFuIGlzb2xhdGVkIG9iamVjdCBmb3IgaXQuCisgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4+
KFsmYXhJRCwgdGhpc10gKCkgLT4gUmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+IHsKKyAgICAgICAg
YXV0byogY2FjaGUgPSBheE9iamVjdENhY2hlKCk7CisgICAgICAgIGlmICghY2FjaGUgfHwgIWNh
Y2hlLT5yZWxhdGlvblRhcmdldElEcygpLmNvbnRhaW5zKGF4SUQpKQorICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICAgICAgUmVmUHRyIGF4T2JqZWN0ID0gY2FjaGUtPm9iamVjdEZv
cklEKGF4SUQpOworICAgICAgICBpZiAoIWF4T2JqZWN0IHx8ICFheE9iamVjdC0+YWNjZXNzaWJp
bGl0eUlzSWdub3JlZCgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAg
YXV0byBvYmplY3QgPSBBWElzb2xhdGVkT2JqZWN0OjpjcmVhdGUoKmF4T2JqZWN0LCBjb25zdF9j
YXN0PEFYSXNvbGF0ZWRUcmVlKj4odGhpcykpOworICAgICAgICBBU1NFUlQoYXhPYmplY3QtPndy
YXBwZXIoKSk7CisgICAgICAgIG9iamVjdC0+YXR0YWNoUGxhdGZvcm1XcmFwcGVyKGF4T2JqZWN0
LT53cmFwcGVyKCkpOworICAgICAgICByZXR1cm4gb2JqZWN0OworICAgIH0pOwogfQogCi0KIHZv
aWQgQVhJc29sYXRlZFRyZWU6OmdlbmVyYXRlU3VidHJlZShBY2Nlc3NpYmlsaXR5T2JqZWN0JiBh
eE9iamVjdCkKIHsKICAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6Z2VuZXJhdGVTdWJ0cmVl
Il9zKTsKQEAgLTY2MCw2ICs2NDEsMTIgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6dXBkYXRlTm9k
ZVByb3BlcnRpZXMoQVhDb3JlT2JqZWN0JiBheE9iamVjdCwgY29uc3QgQVhQcm9wZXIKICAgICAg
ICAgY2FzZSBBWFByb3BlcnR5TmFtZTo6UG9zSW5TZXQ6CiAgICAgICAgICAgICBwcm9wZXJ0eU1h
cC5zZXQoQVhQcm9wZXJ0eU5hbWU6OlBvc0luU2V0LCBheE9iamVjdC5wb3NJblNldCgpKTsKICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFYUHJvcGVydHlOYW1lOjpSZW1vdGVGcmFt
ZVBsYXRmb3JtRWxlbWVudDoKKyAgICAgICAgICAgIHByb3BlcnR5TWFwLnNldChBWFByb3BlcnR5
TmFtZTo6UmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQsIGF4T2JqZWN0LnJlbW90ZUZyYW1lUGxh
dGZvcm1FbGVtZW50KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQVhQcm9w
ZXJ0eU5hbWU6Okhhc1JlbW90ZUZyYW1lQ2hpbGQ6CisgICAgICAgICAgICBwcm9wZXJ0eU1hcC5z
ZXQoQVhQcm9wZXJ0eU5hbWU6Okhhc1JlbW90ZUZyYW1lQ2hpbGQsIGF4T2JqZWN0Lmhhc1JlbW90
ZUZyYW1lQ2hpbGQoKSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBWFByb3Bl
cnR5TmFtZTo6Um9sZURlc2NyaXB0aW9uOgogICAgICAgICAgICAgcHJvcGVydHlNYXAuc2V0KEFY
UHJvcGVydHlOYW1lOjpSb2xlRGVzY3JpcHRpb24sIGF4T2JqZWN0LnJvbGVEZXNjcmlwdGlvbigp
Lmlzb2xhdGVkQ29weSgpKTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgK
aW5kZXggYTQxNzkyNzk3OGQyLi40NjFlZWFlNjBhZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaApA
QCAtMTA0LDYgKzEwNCw3IEBAIGVudW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUgOiB1aW50MTZfdCB7
CiAgICAgSGFzSGlnaGxpZ2h0aW5nLAogICAgIEhhc0l0YWxpY0ZvbnQsCiAgICAgSGFzUGxhaW5U
ZXh0LAorICAgIEhhc1JlbW90ZUZyYW1lQ2hpbGQsCiAgICAgSGFzVW5kZXJsaW5lLAogICAgIEhl
YWRlckNvbnRhaW5lciwKICAgICBIZWFkaW5nTGV2ZWwsCkBAIC0yMDEsNiArMjAyLDggQEAgZW51
bSBjbGFzcyBBWFByb3BlcnR5TmFtZSA6IHVpbnQxNl90IHsKICAgICBQcmV2ZW50S2V5Ym9hcmRE
T01FdmVudERpc3BhdGNoLAogICAgIFJhZGlvQnV0dG9uR3JvdXAsCiAgICAgUmVsYXRpdmVGcmFt
ZSwKKyAgICBSZW1vdGVGcmFtZU9mZnNldCwKKyAgICBSZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVu
dCwKICAgICBSb2xlVmFsdWUsCiAgICAgUm9sZVBsYXRmb3JtU3RyaW5nLAogICAgIFJvbGVEZXNj
cmlwdGlvbiwKQEAgLTI1Nyw2ICsyNjAsNyBAQCB1c2luZyBBWFByb3BlcnR5TmFtZVNldCA9IEhh
c2hTZXQ8QVhQcm9wZXJ0eU5hbWUsIEludEhhc2g8QVhQcm9wZXJ0eU5hbWU+LCBXVEY6OgogdXNp
bmcgQVhQcm9wZXJ0eVZhbHVlVmFyaWFudCA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwg
QVhJRCwgU3RyaW5nLCBib29sLCBpbnQsIHVuc2lnbmVkLCBkb3VibGUsIGZsb2F0LCB1aW50NjRf
dCwgQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlLCBDb2xvciwgVVJMLCBMYXlvdXRSZWN0LCBGbG9h
dFBvaW50LCBGbG9hdFJlY3QsIEludFBvaW50LCBJbnRSZWN0LCBzdGQ6OnBhaXI8dW5zaWduZWQs
IHVuc2lnbmVkPiwgVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiwgVmVjdG9yPEFYSUQ+LCBWZWN0
b3I8c3RkOjpwYWlyPEFYSUQsIEFYSUQ+PiwgVmVjdG9yPFN0cmluZz4sIFBhdGgsIE9wdGlvblNl
dDxBWEFuY2VzdG9yRmxhZz4sIEluc2lkZUxpbmssIFZlY3RvcjxWZWN0b3I8QVhJRD4+LCBDaGFy
YWN0ZXJSYW5nZSwgc3RkOjpwYWlyPEFYSUQsIENoYXJhY3RlclJhbmdlPgogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgICwgUmV0YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4KKyAgICAsIFJldGFp
blB0cjxpZD4KICNlbmRpZgogI2lmIEVOQUJMRShBWF9USFJFQURfVEVYVF9BUElTKQogICAgICwg
QVhUZXh0UnVucwpAQCAtMzk3LDYgKzQwMSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVF
bXB0eUNvbnRlbnQoQWNjZXNzaWJpbGl0eU9iamVjdCYpOwogICAgIGNvbnN0ZXhwciBib29sIGlz
VXBkYXRpbmdTdWJ0cmVlKCkgY29uc3QgeyByZXR1cm4gbV9yb290T2ZTdWJ0cmVlQmVpbmdVcGRh
dGVkOyB9CiAgICAgY29uc3RleHByIHZvaWQgdXBkYXRpbmdTdWJ0cmVlKEFjY2Vzc2liaWxpdHlP
YmplY3QqIGF4T2JqZWN0KSB7IG1fcm9vdE9mU3VidHJlZUJlaW5nVXBkYXRlZCA9IGF4T2JqZWN0
OyB9CisgICAgUmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+IHJldHJpZXZlT2JqZWN0Rm9ySURGcm9t
TWFpblRocmVhZChjb25zdCBBWElEKSBjb25zdDsKIAogICAgIGVudW0gY2xhc3MgQXR0YWNoV3Jh
cHBlciA6IGJvb2wgeyBPbk1haW5UaHJlYWQsIE9uQVhUaHJlYWQgfTsKICAgICBzdHJ1Y3QgTm9k
ZUNoYW5nZSB7CkBAIC00OTcsNiArNTAyLDMwIEBAIGlubGluZSBSZWZQdHI8QVhJc29sYXRlZFRy
ZWU+IEFYSXNvbGF0ZWRUcmVlOjp0cmVlRm9yUGFnZUlEKHN0ZDo6b3B0aW9uYWw8UGFnZUlkCiAg
ICAgcmV0dXJuIHBhZ2VJRCA/IHRyZWVGb3JQYWdlSUQoKnBhZ2VJRCkgOiBudWxscHRyOwogfQog
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBVPgoraW5saW5lIFZlY3RvcjxSZWZQdHI8QVhDb3JlT2JqZWN0
Pj4gQVhJc29sYXRlZFRyZWU6Om9iamVjdHNGb3JJRHMoY29uc3QgVSYgYXhJRHMpCit7CisgICAg
QVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisKKyAgICBWZWN0b3I8UmVmUHRyPEFYQ29yZU9iamVj
dD4+IHJlc3VsdDsKKyAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShheElEcy5zaXpl
KCkpOworICAgIGZvciAoY29uc3QgYXV0byYgYXhJRCA6IGF4SURzKSB7CisgICAgICAgIFJlZlB0
ciBvYmplY3QgPSBvYmplY3RGb3JJRChheElEKTsKKyAgICAgICAgaWYgKG9iamVjdCkgeworICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChXVEZNb3ZlKG9iamVjdCkpOworICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIH0KKworICAgICAgICBvYmplY3QgPSByZXRyaWV2ZU9iamVjdEZvcklE
RnJvbU1haW5UaHJlYWQoYXhJRCk7CisgICAgICAgIGlmIChvYmplY3QpIHsKKyAgICAgICAgICAg
IG1fcmVhZGVyVGhyZWFkTm9kZU1hcC5hZGQoYXhJRCwgKm9iamVjdCk7CisgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKFdURk1vdmUob2JqZWN0KSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmVz
dWx0LnNocmlua1RvRml0KCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL21hYy9BWElzb2xhdGVkT2JqZWN0TWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMu
bW0KaW5kZXggZjg2MzVmMjM4NDFjLi5lNjdmYzg2NjI5NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL21hYy9BWElzb2xhdGVkT2JqZWN0TWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL21hYy9B
WElzb2xhdGVkT2JqZWN0TWFjLm1tCkBAIC02Myw2ICs2Myw4IEBAIHZvaWQgQVhJc29sYXRlZE9i
amVjdDo6aW5pdGlhbGl6ZVBsYXRmb3JtUHJvcGVydGllcyhjb25zdCBSZWY8Y29uc3QgQWNjZXNz
aWJpbGl0CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFt
ZTo6UmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQsIG9iamVjdC0+cmVtb3RlRnJhbWVQbGF0Zm9y
bUVsZW1lbnQoKSk7CisKICAgICAvLyBDYWNoZSB0aGUgU3RyaW5nVmFsdWUgb25seSBpZiBpdCBk
aWZmZXJzIGZyb20gdGhlIEF0dHJpYnV0ZWRUZXh0LgogICAgIGF1dG8gdmFsdWUgPSBvYmplY3Qt
PnN0cmluZ1ZhbHVlKCk7CiAgICAgaWYgKCFhdHRyaWJ1dGVkVGV4dCB8fCB2YWx1ZSAhPSBTdHJp
bmcoW2F0dHJpYnV0ZWRUZXh0IHN0cmluZ10pKQpAQCAtMjA1LDYgKzIwNywxMSBAQCB1bnNpZ25l
ZCBBWElzb2xhdGVkT2JqZWN0Ojp0ZXh0TGVuZ3RoKCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0K
IAorUmV0YWluUHRyPGlkPiBBWElzb2xhdGVkT2JqZWN0OjpyZW1vdGVGcmFtZVBsYXRmb3JtRWxl
bWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHByb3BlcnR5VmFsdWU8UmV0YWluUHRyPGlkPj4o
QVhQcm9wZXJ0eU5hbWU6OlJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KTsKK30KKwogUmV0YWlu
UHRyPE5TQXR0cmlidXRlZFN0cmluZz4gQVhJc29sYXRlZE9iamVjdDo6YXR0cmlidXRlZFN0cmlu
Z0ZvclRleHRNYXJrZXJSYW5nZShBWFRleHRNYXJrZXJSYW5nZSYmIG1hcmtlclJhbmdlLCBTcGVs
bENoZWNrIHNwZWxsQ2hlY2spIGNvbnN0CiB7CiAgICAgaWYgKCFtYXJrZXJSYW5nZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmpl
Y3RNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5
T2JqZWN0TWFjLm1tCmluZGV4IGJhMmFjY2Q4MGQwNC4uZmJiZTBiYjJhMDY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlP
YmplY3RNYWMubW0KQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9y
dCAiQWNjZXNzaWJpbGl0eU9iamVjdC5oIgogCisjaW1wb3J0ICJBWFJlbW90ZUZyYW1lLmgiCiAj
aW1wb3J0ICJBY2Nlc3NpYmlsaXR5TGFiZWwuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlMaXN0
LmgiCiAjaW1wb3J0ICJDb2xvckNvY29hLmgiCkBAIC01MSw2ICs1Miw3IEBACiAjaW1wb3J0ICJX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5oIgogI2ltcG9ydCAiV2lkZ2V0LmgiCiAK
KyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNBY2Nlc3NpYmlsaXR5U1BJLmg+CiAjaW1wb3J0IDxw
YWwvc3BpL21hYy9OU1NwZWxsQ2hlY2tlclNQSS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC03NDksNiArNzUxLDI5IEBAIFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+IGF0dHJpYnV0
ZWRTdHJpbmdDcmVhdGUoTm9kZSogbm9kZSwgU3RyaW5nVmlldyB0ZXh0CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAorc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IEFYUmVtb3RlRnJhbWU6OmdlbmVy
YXRlUmVtb3RlVG9rZW4oKSBjb25zdAoreworICAgIGlmIChhdXRvKiBwYXJlbnQgPSBwYXJlbnRP
YmplY3QoKSkgeworICAgICAgICAvLyBXZSB1c2UgdGhlIHBhcmVudCdzIHdyYXBwZXIgc28gdGhh
dCB0aGUgcmVtb3RlIGZyYW1lIGFjdHMgYXMgYSBwYXNzIHRocm91Z2ggZm9yIHRoZSByZW1vdGUg
dG9rZW4gYnJpZGdlLgorICAgICAgICBOU0RhdGEgKmRhdGEgPSBbTlNBY2Nlc3NpYmlsaXR5UmVt
b3RlVUlFbGVtZW50IHJlbW90ZVRva2VuRm9yTG9jYWxVSUVsZW1lbnQ6cGFyZW50LT53cmFwcGVy
KCldOworICAgICAgICByZXR1cm4gc3RkOjpzcGFuKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKKyAgICB9CisKKyAgICByZXR1cm4gc3Rk
OjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHsgfTsKK30KKwordm9pZCBBWFJlbW90ZUZyYW1lOjppbml0
aWFsaXplUGxhdGZvcm1FbGVtZW50V2l0aFJlbW90ZVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50
OF90PiB0b2tlbiwgaW50IHByb2Nlc3NJZGVudGlmaWVyKQoreworICAgIG1fcHJvY2Vzc0lkZW50
aWZpZXIgPSBwcm9jZXNzSWRlbnRpZmllcjsKKyAgICBpZiAoW3dyYXBwZXIoKSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKGFjY2Vzc2liaWxpdHlTZXRQcmVzZW50ZXJQcm9jZXNzSWRlbnRp
ZmllcjopXSkKKyAgICAgICAgWyhpZCl3cmFwcGVyKCkgYWNjZXNzaWJpbGl0eVNldFByZXNlbnRl
clByb2Nlc3NJZGVudGlmaWVyOnByb2Nlc3NJZGVudGlmaWVyXTsKKyAgICBOU0RhdGEgKnRva2Vu
RGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczp0b2tlbi5kYXRhKCkgbGVuZ3RoOnRva2VuLnNp
emUoKV07CisgICAgbV9yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCA9IGFkb3B0TlMoW1tOU0Fj
Y2Vzc2liaWxpdHlSZW1vdGVVSUVsZW1lbnQgYWxsb2NdIGluaXRXaXRoUmVtb3RlVG9rZW46dG9r
ZW5EYXRhXSk7CisKKyAgICBpZiAoYXV0byogY2FjaGUgPSBheE9iamVjdENhY2hlKCkpCisgICAg
ICAgIGNhY2hlLT5vblJlbW90ZUZyYW1lSW5pdGlhbGl6ZWQoKnRoaXMpOworfQorCiBuYW1lc3Bh
Y2UgQWNjZXNzaWJpbGl0eSB7CiAKIFBsYXRmb3JtUm9sZU1hcCBjcmVhdGVQbGF0Zm9ybVJvbGVN
YXAoKQpAQCAtODkxLDYgKzkxNiw3IEBAIFBsYXRmb3JtUm9sZU1hcCBjcmVhdGVQbGF0Zm9ybVJv
bGVNYXAoKQogICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpTdXBlcnNjcmlwdCwgTlNBY2Nl
c3NpYmlsaXR5R3JvdXBSb2xlIH0sCiAgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6Ok1vZGVs
LCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKICAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9s
ZTo6U3VnZ2VzdGlvbiwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNj
ZXNzaWJpbGl0eVJvbGU6OlJlbW90ZUZyYW1lLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwK
ICAgICB9OwogICAgIFBsYXRmb3JtUm9sZU1hcCByb2xlTWFwOwogICAgIGZvciAoYXV0byYgcm9s
ZSA6IHJvbGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCmluZGV4
IDYzNTdmYTdjMjcxYi4uZjE0MjQ1ZmMzYjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJCYXNlLm1tCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0ICJBWENvcmVPYmplY3Qu
aCIKICNpbXBvcnQgIkFYSXNvbGF0ZWRPYmplY3QuaCIKICNpbXBvcnQgIkFYT2JqZWN0Q2FjaGUu
aCIKKyNpbXBvcnQgIkFYUmVtb3RlRnJhbWUuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlBUklB
R3JpZFJvdy5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUxpc3QuaCIKICNpbXBvcnQgIkFjY2Vz
c2liaWxpdHlMaXN0Qm94LmgiCkBAIC0yNjUsMTMgKzI2NiwxMyBAQCBOU0FycmF5ICptYWtlTlNB
cnJheShjb25zdCBXZWJDb3JlOjpBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYgYwogICAgICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgICAgICBhdXRvIHdyYXBwZXIg
PSBjaGlsZC0+d3JhcHBlcigpOwotCiAgICAgICAgIC8vIFdlIHdhbnQgdG8gcmV0dXJuIHRoZSBh
dHRhY2htZW50IHZpZXcgaW5zdGVhZCBvZiB0aGUgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgYXR0
YWNobWVudCwKICAgICAgICAgLy8gb3RoZXJ3aXNlLCB3ZSBnZXQgcGFsaW5kcm9tZSBlcnJvcnMg
aW4gdGhlIEFYIGhpZXJhcmNoeS4KICAgICAgICAgaWYgKGNoaWxkLT5pc0F0dGFjaG1lbnQoKSkg
ewogICAgICAgICAgICAgaWYgKGlkIGF0dGFjaG1lbnRWaWV3ID0gd3JhcHBlci5hdHRhY2htZW50
VmlldykKICAgICAgICAgICAgICAgICByZXR1cm4gYXR0YWNobWVudFZpZXc7Ci0gICAgICAgIH0K
KyAgICAgICAgfSBlbHNlIGlmIChjaGlsZC0+aXNSZW1vdGVGcmFtZSgpKQorICAgICAgICAgICAg
cmV0dXJuIGNoaWxkLT5yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpLmdldCgpOwogCiAgICAg
ICAgIHJldHVybiB3cmFwcGVyOwogICAgIH0pLmF1dG9yZWxlYXNlKCk7CkBAIC0zODksNyArMzkw
LDcgQEAgTlNBcnJheSAqbWFrZU5TQXJyYXkoY29uc3QgV2ViQ29yZTo6QVhDb3JlT2JqZWN0OjpB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGMKIC0gKEJPT0wpaXNJc29sYXRlZE9iamVjdAog
ewogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCi0gICAgYXV0byogYmFj
a2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0ciBiYWNraW5nT2Jq
ZWN0ID0gZHluYW1pY0Rvd25jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3Q+KHNlbGYuYmFzZVVwZGF0
ZUJhY2tpbmdTdG9yZSk7CiAgICAgcmV0dXJuIGJhY2tpbmdPYmplY3QgJiYgYmFja2luZ09iamVj
dC0+aXNBWElzb2xhdGVkT2JqZWN0SW5zdGFuY2UoKTsKICNlbHNlCiAgICAgcmV0dXJuIE5POwpA
QCAtNTIzLDcgKzUyNCw3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRQYXRoVG9TY3JlZW5TcGFjZUZ1
bmN0aW9uKFBhdGhDb252ZXJzaW9uSW5mbyYgY29udmVyc2lvbiwgY29uCiAKIC0gKENHUmVjdClj
b252ZXJ0UmVjdFRvU3BhY2U6KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpcmVjdCBzcGFjZToo
QWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZSlzcGFjZQogewotICAgIGF1dG8qIGJhY2tpbmdP
YmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHIgYmFja2luZ09iamVjdCA9
IGR5bmFtaWNEb3duY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0PihzZWxmLmJhc2VVcGRhdGVCYWNr
aW5nU3RvcmUpOwogICAgIGlmICghYmFja2luZ09iamVjdCkKICAgICAgICAgcmV0dXJuIENHUmVj
dFplcm87CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggZTdh
Mjk3NWIwODU0Li41ZGUxMWMyYWMzNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyTWFjLm1tCkBAIC0zNCw2ICszNCw3IEBACiAjaW1wb3J0ICJBWElzb2xhdGVkT2JqZWN0Lmgi
CiAjaW1wb3J0ICJBWExvZ2dlci5oIgogI2ltcG9ydCAiQVhPYmplY3RDYWNoZS5oIgorI2ltcG9y
dCAiQVhSZW1vdGVGcmFtZS5oIgogI2ltcG9ydCAiQVhUZXh0TWFya2VyLmgiCiAjaW1wb3J0ICJB
Y2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlMYWJlbC5o
IgpAQCAtNDc5LDYgKzQ4MCwxMCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICNkZWZpbmUg
TlNBY2Nlc3NpYmlsaXR5VGV4dElucHV0TWFya2VkVGV4dE1hcmtlclJhbmdlQXR0cmlidXRlIEAi
QVhUZXh0SW5wdXRNYXJrZWRUZXh0TWFya2VyUmFuZ2UiCiAjZW5kaWYKIAorI2lmbmRlZiBrQVhD
b252ZXJ0UmVsYXRpdmVGcmFtZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUKKyNkZWZpbmUga0FYQ29u
dmVydFJlbGF0aXZlRnJhbWVQYXJhbWV0ZXJpemVkQXR0cmlidXRlIEAiQVhDb252ZXJ0UmVsYXRp
dmVGcmFtZSIKKyNlbmRpZgorCiBAaW1wbGVtZW50YXRpb24gV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIKIAogLSAodm9pZClkZXRhY2gKQEAgLTY5Miw3ICs2OTcsNyBAQCBzdGF0aWMgUmV0
YWluUHRyPEFYVGV4dE1hcmtlclJlZj4gcHJldmlvdXNUZXh0TWFya2VyKEFYT2JqZWN0Q2FjaGUq
IGNhY2hlLCBjb25zdAogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBhdXRv
KiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgUmVmUHRyPEFYQ29y
ZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OwogICAgIGlmICgh
YmFja2luZ09iamVjdCkKICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMTI1Niw3ICsxMjYxLDcg
QEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAKIC0gKE5TQXJyYXkgKily
ZW5kZXJXaWRnZXRDaGlsZHJlbgogewotICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4
QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBiYWNraW5nT2JqZWN0ID0g
c2VsZi5heEJhY2tpbmdPYmplY3Q7CiAgICAgaWYgKCFiYWNraW5nT2JqZWN0IHx8ICFiYWNraW5n
T2JqZWN0LT5pc1dpZGdldCgpKQogICAgICAgICByZXR1cm4gbmlsOwogCkBAIC0xMjc5LDcgKzEy
ODQsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogLSAoaWQpcmVtb3Rl
QWNjZXNzaWJpbGl0eVBhcmVudE9iamVjdAogewotICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBz
ZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBiYWNraW5nT2Jq
ZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CiAgICAgcmV0dXJuIGJhY2tpbmdPYmplY3QgPyBi
YWNraW5nT2JqZWN0LT5yZW1vdGVQYXJlbnRPYmplY3QoKSA6IG5pbDsKIH0KIApAQCAtMTI5Niw3
ICsxMzAxLDcgQEAgc3RhdGljIHZvaWQgY29udmVydFRvVmVjdG9yKE5TQXJyYXkqIGFycmF5LCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2gKIAogLSAoQVhUZXh0TWFya2VyUmFu
Z2VSZWYpc2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UKIHsKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0
ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2lu
Z09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OwogICAgIGlmICghYmFja2luZ09iamVjdCkK
ICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMTM2NiwxMiArMTM3MSwxOCBAQCBzdGF0aWMgdm9p
ZCBXZWJUcmFuc2Zvcm1DR1BhdGhUb05TQmV6aWVyUGF0aCh2b2lkKiBpbmZvLCBjb25zdCBDR1Bh
dGhFbGVtZW50ICplbAogCiAtIChOU1N0cmluZyopcm9sZQogeworICAgIFJlZlB0cjxBWENvcmVP
YmplY3Q+IGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBpZiAoIWJh
Y2tpbmdPYmplY3QpCisgICAgICAgIHJldHVybiBuaWw7CisKIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0JFR0lOCi0gICAgaWYgKHNlbGYuYXhCYWNraW5nT2JqZWN0LT5pc0F0dGFjaG1l
bnQoKSkKKyAgICBpZiAoYmFja2luZ09iamVjdC0+aXNBdHRhY2htZW50KCkpCiAgICAgICAgIHJl
dHVybiBbW3NlbGYgYXR0YWNobWVudFZpZXddIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpO
U0FjY2Vzc2liaWxpdHlSb2xlQXR0cmlidXRlXTsKKyAgICBpZiAoYmFja2luZ09iamVjdC0+aXNS
ZW1vdGVGcmFtZSgpKQorICAgICAgICByZXR1cm4gW2JhY2tpbmdPYmplY3QtPnJlbW90ZUZyYW1l
UGxhdGZvcm1FbGVtZW50KCkuZ2V0KCkgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNj
ZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGVdOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECiAKLSAgICBOU1N0cmluZyAqc3RyaW5nID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPnJvbGVQ
bGF0Zm9ybVN0cmluZygpOworICAgIE5TU3RyaW5nICpzdHJpbmcgPSBiYWNraW5nT2JqZWN0LT5y
b2xlUGxhdGZvcm1TdHJpbmcoKTsKICAgICBpZiAoc3RyaW5nLmxlbmd0aCkKICAgICAgICAgcmV0
dXJuIHN0cmluZzsKICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5VW5rbm93blJvbGU7CkBAIC0x
Mzc5LDcgKzEzOTAsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogLSAo
Qk9PTClpc0VtcHR5R3JvdXAKIHsKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJh
Y2tpbmdPYmplY3Q7CisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNl
bGYuYXhCYWNraW5nT2JqZWN0OwogICAgIGlmICghYmFja2luZ09iamVjdCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCkBAIC0xMzg4LDYgKzEzOTksOSBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19FTkQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAKKyAgICBpZiAoYmFj
a2luZ09iamVjdC0+aXNSZW1vdGVGcmFtZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAg
ICByZXR1cm4gW1tzZWxmIHJvbGVdIGlzRXF1YWw6TlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlXQog
ICAgICAgICAmJiBiYWNraW5nT2JqZWN0LT5jaGlsZHJlbigpLmlzRW1wdHkoKQogICAgICAgICAm
JiAhW1tzZWxmIHJlbmRlcldpZGdldENoaWxkcmVuXSBjb3VudF07CkBAIC0xMzk2LDcgKzE0MTAs
NyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0JFR0lOCiAtIChOU1N0cmluZyopc3Vicm9sZQogewotICAgIGF1dG8qIGJh
Y2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHI8QVhDb3JlT2Jq
ZWN0PiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CiAgICAgaWYgKCFiYWNr
aW5nT2JqZWN0KQogICAgICAgICByZXR1cm4gbmlsOwogCkBAIC0xNDEzLDcgKzE0MjcsNyBAQCBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogLSAoTlNTdHJpbmcqKXJvbGVEZXNj
cmlwdGlvbgogewotICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVj
dDsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tp
bmdPYmplY3Q7CiAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQogICAgICAgICByZXR1cm4gbmlsOwog
CkBAIC0xNDIxLDYgKzE0MzUsOCBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJ
TgogICAgIC8vIGF0dGFjaG1lbnRzIGhhdmUgdGhlIEFYSW1hZ2Ugcm9sZSwgYnV0IGEgZGlmZmVy
ZW50IHN1YnJvbGUKICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNBdHRhY2htZW50KCkpCiAgICAg
ICAgIHJldHVybiBbW3NlbGYgYXR0YWNobWVudFZpZXddIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpOU0FjY2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRpb25BdHRyaWJ1dGVdOworICAgIGlmIChi
YWNraW5nT2JqZWN0LT5pc1JlbW90ZUZyYW1lKCkpCisgICAgICAgIHJldHVybiBbYmFja2luZ09i
amVjdC0+cmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKS5nZXQoKSBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlXTsKIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAgICAgU3RyaW5nIHJvbGVEZXNjcmlw
dGlvbiA9IGJhY2tpbmdPYmplY3QtPnJvbGVEZXNjcmlwdGlvbigpOwpAQCAtMTQ3Myw2ICsxNDg5
LDI4IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIHJldHVybiBheFNj
cm9sbFZpZXcgPyBbYXhTY3JvbGxWaWV3LT5wbGF0Zm9ybVdpZGdldCgpIHdpbmRvd10gOiBuaWw7
CiB9CiAKKy0gKE5TQXJyYXkgKilfdHJhbnNmb3JtU3BlY2lhbENoaWxkcmVuQ2FzZXM6KFJlZlB0
cjxBWENvcmVPYmplY3Q+KWJhY2tpbmdPYmplY3QKK3sKKyNpZiBFTkFCTEUoTU9ERUxfRUxFTUVO
VCkKKyAgICBpZiAoYmFja2luZ09iamVjdC0+aXNNb2RlbCgpKSB7CisgICAgICAgIGF1dG8gbW9k
ZWxDaGlsZHJlbiA9IGJhY2tpbmdPYmplY3QtPm1vZGVsRWxlbWVudENoaWxkcmVuKCk7CisgICAg
ICAgIGlmIChtb2RlbENoaWxkcmVuLnNpemUoKSkgeworICAgICAgICAgICAgcmV0dXJuIGNyZWF0
ZU5TQXJyYXkoV1RGTW92ZShtb2RlbENoaWxkcmVuKSwgW10gKGF1dG8mJiBjaGlsZCkgLT4gaWQg
eworICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZC5nZXQoKTsKKyAgICAgICAgICAgIH0pLmF1
dG9yZWxlYXNlKCk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKworICAgIGNvbnN0IGF1dG8m
IGNoaWxkcmVuID0gYmFja2luZ09iamVjdC0+Y2hpbGRyZW4oKTsKKyAgICBpZiAoIWNoaWxkcmVu
LnNpemUoKSkgeworICAgICAgICBpZiAoTlNBcnJheSAqY2hpbGRyZW4gPSBbc2VsZiByZW5kZXJX
aWRnZXRDaGlsZHJlbl0pCisgICAgICAgICAgICByZXR1cm4gY2hpbGRyZW47CisgICAgfQorCisg
ICAgcmV0dXJuIG5pbDsKK30KKwogLy8gRklYTUU6IHNwbGl0IHVwIHRoaXMgZnVuY3Rpb24gaW4g
YSBiZXR0ZXIgd2F5LgogLy8gc3VnZ2VzdGlvbnM6IFVzZSBhIGhhc2ggdGFibGUgdGhhdCBtYXBz
IGF0dHJpYnV0ZSBuYW1lcyB0byBmdW5jdGlvbiBjYWxscywKIC8vIG9yIG1heWJlIHBvaW50ZXJz
IHRvIG1lbWJlciBmdW5jdGlvbnMKQEAgLTE1MzEsMjIgKzE1NjksOSBAQCBBTExPV19ERVBSRUNB
VEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICB9CiAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUg
aXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXSB8fCBbYXR0
cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5Jbk5hdmln
YXRpb25PcmRlckF0dHJpYnV0ZV0pIHsKLSNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKLSAgICAg
ICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzTW9kZWwoKSkgewotICAgICAgICAgICAgYXV0byBtb2Rl
bENoaWxkcmVuID0gYmFja2luZ09iamVjdC0+bW9kZWxFbGVtZW50Q2hpbGRyZW4oKTsKLSAgICAg
ICAgICAgIGlmIChtb2RlbENoaWxkcmVuLnNpemUoKSkgewotICAgICAgICAgICAgICAgIHJldHVy
biBjcmVhdGVOU0FycmF5KFdURk1vdmUobW9kZWxDaGlsZHJlbiksIFtdIChhdXRvJiYgY2hpbGQp
IC0+IGlkIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkLmdldCgpOwotICAgICAg
ICAgICAgICAgIH0pLmF1dG9yZWxlYXNlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSNl
bmRpZgotCi0gICAgICAgIGNvbnN0IGF1dG8mIGNoaWxkcmVuID0gYmFja2luZ09iamVjdC0+Y2hp
bGRyZW4oKTsKLSAgICAgICAgaWYgKGNoaWxkcmVuLmlzRW1wdHkoKSkgewotICAgICAgICAgICAg
aWYgKE5TQXJyYXkgKndpZGdldENoaWxkcmVuID0gW3NlbGYgcmVuZGVyV2lkZ2V0Q2hpbGRyZW5d
KQotICAgICAgICAgICAgICAgIHJldHVybiB3aWRnZXRDaGlsZHJlbjsKLSAgICAgICAgfQorICAg
ICAgICBOU0FycmF5ICpzcGVjaWFsQ2hpbGRyZW4gPSBbc2VsZiBfdHJhbnNmb3JtU3BlY2lhbENo
aWxkcmVuQ2FzZXM6YmFja2luZ09iamVjdF07CisgICAgICAgIGlmIChzcGVjaWFsQ2hpbGRyZW4u
Y291bnQpCisgICAgICAgICAgICByZXR1cm4gc3BlY2lhbENoaWxkcmVuOwogCiAgICAgICAgIC8v
IFRoZSB0cmVlJ3MgKEFYT3V0bGluZSkgY2hpbGRyZW4gYXJlIHN1cHBvc2VkIHRvIGJlIGl0cyBy
b3dzIGFuZCBjb2x1bW5zLgogICAgICAgICAvLyBUaGUgQVJJQSBzcGVjIGRvZXNuJ3QgaGF2ZSBj
b2x1bW5zLCBzbyB3ZSBqdXN0IG5lZWQgcm93cy4KQEAgLTE1NTcsNyArMTU4Miw3IEBAIEFMTE9X
X0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICBpZiAoYmFja2luZ09iamVj
dC0+aXNUcmVlSXRlbSgpKQogICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdP
YmplY3QtPmFyaWFUcmVlSXRlbUNvbnRlbnQoKSk7CiAKLSAgICAgICAgcmV0dXJuIG1ha2VOU0Fy
cmF5KGNoaWxkcmVuKTsKKyAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdPYmplY3Qt
PmNoaWxkcmVuKCkpOwogICAgIH0KIAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9T
dHJpbmc6IE5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGVdKSB7CkBAIC0x
NzEzLDE2ICsxNzM4LDE0IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAog
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eUVu
YWJsZWRBdHRyaWJ1dGVdKQogICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhCb29s
OiBiYWNraW5nT2JqZWN0LT5pc0VuYWJsZWQoKV07CiAKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUg
aXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlTaXplQXR0cmlidXRlXSkgewotICAgICAg
ICBhdXRvIHNpemUgPSBiYWNraW5nT2JqZWN0LT5zaXplKCk7Ci0gICAgICAgIHJldHVybiBbTlNW
YWx1ZSB2YWx1ZVdpdGhTaXplOk5TTWFrZVNpemUoc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgp
KV07Ci0gICAgfQorICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nl
c3NpYmlsaXR5U2l6ZUF0dHJpYnV0ZV0pCisgICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdp
dGhTaXplOihDR1NpemUpYmFja2luZ09iamVjdC0+c2l6ZSgpXTsKIAogICAgIGlmIChbYXR0cmli
dXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5UHJpbWFyeVNjcmVlbkhlaWdo
dEF0dHJpYnV0ZV0pCiAgICAgICAgIHJldHVybiBAKGJhY2tpbmdPYmplY3QtPnByaW1hcnlTY3Jl
ZW5SZWN0KCkuaGVpZ2h0KCkpOwogCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0
cmluZzpOU0FjY2Vzc2liaWxpdHlQb3NpdGlvbkF0dHJpYnV0ZV0pCi0gICAgICAgIHJldHVybiBA
KENHUG9pbnQoYmFja2luZ09iamVjdC0+c2NyZWVuUmVsYXRpdmVQb3NpdGlvbigpKSk7CisgICAg
ICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhQb2ludDooQ0dQb2ludCliYWNraW5nT2JqZWN0
LT5zY3JlZW5SZWxhdGl2ZVBvc2l0aW9uKCldOwogCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlQYXRoQXR0cmlidXRlXSkKICAgICAgICAgcmV0
dXJuIFtzZWxmIHBhdGhdOwpAQCAtMjIzNyw2ICsyMjYwLDEwIEBAIEFMTE9XX0RFUFJFQ0FURURf
SU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICByZXR1cm4gcmFuZ2UgPyByYW5nZS5wbGF0Zm9y
bURhdGEoKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCkgOiBuaWw7CiAgICAgfQogCisgICAgLy8gVm9p
Y2VPdmVyIHByb3BlcnR5IHRvIGlnbm9yZSBjZXJ0YWluIGdyb3Vwcy4KKyAgICBpZiAoW2F0dHJp
YnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiQVhBdXRvSW50ZXJhY3RhYmxlIl0pCisgICAgICAg
IHJldHVybiBAKGJhY2tpbmdPYmplY3QtPmlzUmVtb3RlRnJhbWUoKSk7CisKICAgICAvLyBVc2Vk
IGJ5IExheW91dFRlc3RzIG9ubHksIG5vdCBieSBBVCBjbGllbnRzLgogICAgIGlmIChVTkxJS0VM
WShbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWEFSSUFSb2xlIl0pKQogICAgICAg
ICByZXR1cm4gYmFja2luZ09iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCk7CkBAIC0yMzMwLDcg
KzIzNTcsOCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAg
aWYgKGF4T2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkgewogICAgICAgICAgICAgaWYgKGlkIGF0dGFj
aG1lbnRWaWV3ID0gW2F4T2JqZWN0LT53cmFwcGVyKCkgYXR0YWNobWVudFZpZXddKQogICAgICAg
ICAgICAgICAgIHJldHVybiBhdHRhY2htZW50VmlldzsKLSAgICAgICAgfQorICAgICAgICB9IGVs
c2UgaWYgKGF4T2JqZWN0LT5pc1JlbW90ZUZyYW1lKCkpCisgICAgICAgICAgICByZXR1cm4gYXhP
YmplY3QtPnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkuZ2V0KCk7CiAKICAgICAgICAgLy8g
T25seSBjYWxsIG91dCB0byB0aGUgbWFpbi10aHJlYWQgaWYgdGhpcyBvYmplY3QgaGFzIGEgYmFj
a2luZyB3aWRnZXQgdG8gcXVlcnkuCiAgICAgICAgIGlmIChheE9iamVjdC0+aXNXaWRnZXQoKSkg
ewpAQCAtMjUwNyw2ICsyNTM1LDEwIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05T
X0VORAogICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc1dlYkFyZWEoKSkKICAgICAgICAgcmV0dXJu
IHdlYkFyZWFQYXJhbUF0dHJzOwogCisgICAgLy8gVGhlIG9iamVjdCB0aGF0IHNlcnZlcyB1cCB0
aGUgcmVtb3RlIGZyYW1lIGFsc28gaXMgdGhlIG9uZSB0aGF0IGRvZXMgdGhlIGZyYW1lIGNvbnZl
cnNpb24uCisgICAgaWYgKGJhY2tpbmdPYmplY3QtPmhhc1JlbW90ZUZyYW1lQ2hpbGQoKSkKKyAg
ICAgICAgcmV0dXJuIFtwYXJhbUF0dHJzIGFycmF5QnlBZGRpbmdPYmplY3Q6a0FYQ29udmVydFJl
bGF0aXZlRnJhbWVQYXJhbWV0ZXJpemVkQXR0cmlidXRlXTsKKwogICAgIHJldHVybiBwYXJhbUF0
dHJzOwogfQogCkBAIC0yNTc4LDcgKzI2MTAsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19FTkQKIHsKICAgICBBWFRSQUNFKCJXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBh
Y2Nlc3NpYmlsaXR5UGVyZm9ybVNob3dNZW51QWN0aW9uIl9zKTsKIAotICAgIGF1dG8qIGJhY2tp
bmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0
PiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CiAgICAgaWYgKCFiYWNraW5n
T2JqZWN0KSB7CiAgICAgICAgIEFYTE9HKG1ha2VTdHJpbmcoIk5vIGJhY2tpbmdPYmplY3QgZm9y
IHdyYXBwZXIgIiwgaGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihzZWxmKSkpKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtMjgyMiw3ICsyODU0LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBM
RU1FTlRBVElPTlNfRU5ECiAgICAgaWYgKCFyYW5nZS5sZW5ndGgpCiAgICAgICAgIHJldHVybiBu
aWw7CiAKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7Cisg
ICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2Jq
ZWN0OwogICAgIGlmICghYmFja2luZ09iamVjdCkKICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAt
MzE3Nyw2ICszMjA5LDE4IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2lkZ2V0Q2hpbGRyZW47CiAgICAgICAgICAgICAg
ICAgY3JpdGVyaWEucmVzdWx0c0xpbWl0IC09IFt3aWRnZXRDaGlsZHJlbiBjb3VudF07CiAgICAg
ICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoYmFja2luZ09iamVjdC0+aXNSZW1vdGVGcmFt
ZSgpCisgICAgICAgICAgICAmJiBjcml0ZXJpYS5zZWFyY2hLZXlzLmNvbnRhaW5zKEFjY2Vzc2li
aWxpdHlTZWFyY2hLZXk6OkFueVR5cGUpCisgICAgICAgICAgICAmJiAoIWNyaXRlcmlhLnZpc2li
bGVPbmx5IHx8IGJhY2tpbmdPYmplY3QtPmlzVmlzaWJsZSgpKSkgeworICAgICAgICAgICAgTlNB
cnJheSAqcmVtb3RlRnJhbWVDaGlsZHJlbiA9IFtzZWxmIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZV07CisgICAgICAgICAgICBBU1NF
UlQocmVtb3RlRnJhbWVDaGlsZHJlbi5jb3VudCA9PSAxKTsKKyAgICAgICAgICAgIGlmIChyZW1v
dGVGcmFtZUNoaWxkcmVuLmNvdW50ID09IDEpIHsKKyAgICAgICAgICAgICAgICBOU1VJbnRlZ2Vy
IGluY2x1ZGVkQ2hpbGRyZW5Db3VudCA9IHN0ZDo6bWluKFtyZW1vdGVGcmFtZUNoaWxkcmVuIGNv
dW50XSwgTlNVSW50ZWdlcihjcml0ZXJpYS5yZXN1bHRzTGltaXQpKTsKKyAgICAgICAgICAgICAg
ICB3aWRnZXRDaGlsZHJlbiA9IFtyZW1vdGVGcmFtZUNoaWxkcmVuIHN1YmFycmF5V2l0aFJhbmdl
Ok5TTWFrZVJhbmdlKDAsIGluY2x1ZGVkQ2hpbGRyZW5Db3VudCldOworICAgICAgICAgICAgICAg
IGlmIChbd2lkZ2V0Q2hpbGRyZW4gY291bnRdID49IGNyaXRlcmlhLnJlc3VsdHNMaW1pdCkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlbW90ZUZyYW1lQ2hpbGRyZW47CisgICAgICAgICAg
ICAgICAgY3JpdGVyaWEucmVzdWx0c0xpbWl0IC09IFt3aWRnZXRDaGlsZHJlbiBjb3VudF07Cisg
ICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgcmVzdWx0czsKQEAgLTM2NzQsNiArMzcxOCwxMSBA
QCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBpZiAoVU5MSUtFTFko
W2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6X0FYVGV4dE1hcmtlclJhbmdlRm9yTlNSYW5nZUF0
dHJpYnV0ZV0pKQogICAgICAgICByZXR1cm4gYmFja2luZ09iamVjdC0+dGV4dE1hcmtlclJhbmdl
Rm9yTlNSYW5nZShyYW5nZSkucGxhdGZvcm1EYXRhKCkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwog
CisgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOmtBWENvbnZlcnRSZWxhdGl2ZUZy
YW1lUGFyYW1ldGVyaXplZEF0dHJpYnV0ZV0pIHsKKyAgICAgICAgYXV0byogcGFyZW50ID0gYmFj
a2luZ09iamVjdC0+cGFyZW50T2JqZWN0KCk7CisgICAgICAgIHJldHVybiBwYXJlbnQgPyBbTlNW
YWx1ZSB2YWx1ZVdpdGhSZWN0OnBhcmVudC0+Y29udmVydEZyYW1lVG9TcGFjZShGbG9hdFJlY3Qo
cmVjdCksIEFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2U6OlBhZ2UpXSA6IG5pbDsKKyAgICB9
CisKICAgICAvLyBUaGVyZSBhcmUgc29tZSBwYXJhbWV0ZXJzIHRoYXQgc3VwZXIgaGFuZGxlcyB0
aGF0IGFyZSBub3QgZXhwbGljaXRseSByZXR1cm5lZCBieSB0aGUgbGlzdCBvZiB0aGUgZWxlbWVu
dCdzIGF0dHJpYnV0ZXMuCiAgICAgLy8gSW4gdGhhdCBjYXNlIGl0IG11c3QgYmUgcGFzc2VkIHRv
IHN1cGVyLgogICAgIHJldHVybiBbc3VwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOmF0
dHJpYnV0ZSBmb3JQYXJhbWV0ZXI6cGFyYW1ldGVyXTsKQEAgLTM3MjcsOCArMzc3NiwxMCBAQCBB
TExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgaWYgKCFjaGlsZCkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlciAqY2hpbGRXcmFwcGVyID0gY2hpbGQtPndyYXBwZXIoKTsKLSAgICAgICAgaWYgKGNoaWxk
V3JhcHBlciA9PSB0YXJnZXRDaGlsZCB8fCAoY2hpbGQtPmlzQXR0YWNobWVudCgpICYmIFtjaGls
ZFdyYXBwZXIgYXR0YWNobWVudFZpZXddID09IHRhcmdldENoaWxkKSkKKyAgICAgICAgaWYgKGNo
aWxkV3JhcHBlciA9PSB0YXJnZXRDaGlsZCB8fCAoY2hpbGQtPmlzQXR0YWNobWVudCgpICYmIFtj
aGlsZFdyYXBwZXIgYXR0YWNobWVudFZpZXddID09IHRhcmdldENoaWxkKQorICAgICAgICAgICAg
fHwgKGNoaWxkLT5pc1JlbW90ZUZyYW1lKCkgJiYgY2hpbGQtPnJlbW90ZUZyYW1lUGxhdGZvcm1F
bGVtZW50KCkgPT0gdGFyZ2V0Q2hpbGQpKSB7CiAgICAgICAgICAgICByZXR1cm4gaTsKKyAgICAg
ICAgfQogICAgIH0KICAgICByZXR1cm4gTlNOb3RGb3VuZDsKIH0KQEAgLTM3NDUsNyArMzc5Niw3
IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgaWYgKFthdHRyaWJ1
dGUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXSkgewog
ICAgICAgICAvLyBUcmVlIGl0ZW1zIG9iamVjdCByZXR1cm5zIGEgZGlmZmVyZW50IHNldCBvZiBj
aGlsZHJlbiB0aGFuIHRob3NlIHRoYXQgYXJlIGluIGNoaWxkcmVuKCkKICAgICAgICAgLy8gYmVj
YXVzZSBhbiBBWE91dGxpbmUgKHRoZSBtYWMgcm9sZSBpcyBiZWNvbWVzKSBoYXMgc29tZSBvZGQg
c3RpcHVsYXRpb25zLgotICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNUcmVlKCkgfHwgYmFj
a2luZ09iamVjdC0+aXNUcmVlSXRlbSgpKQorICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNU
cmVlKCkgfHwgYmFja2luZ09iamVjdC0+aXNUcmVlSXRlbSgpIHx8IGJhY2tpbmdPYmplY3QtPmlz
UmVtb3RlRnJhbWUoKSkKICAgICAgICAgICAgIHJldHVybiBbW3NlbGYgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXSBjb3VudF07CiAK
ICAgICAgICAgYXV0byBjaGlsZHJlblNpemUgPSBiYWNraW5nT2JqZWN0LT5jaGlsZHJlbigpLnNp
emUoKTsKQEAgLTM3ODEsMTYgKzM4MzIsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19FTkQKIAogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxp
dHlDaGlsZHJlbkF0dHJpYnV0ZV0pIHsKICAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmNoaWxk
cmVuKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBOU0FycmF5ICpjaGlsZHJlbiA9IG5pbDsK
LSNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKLSAgICAgICAgICAgIGlmIChiYWNraW5nT2JqZWN0
LT5pc01vZGVsKCkpIHsKLSAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IGNyZWF0ZU5TQXJyYXko
YmFja2luZ09iamVjdC0+bW9kZWxFbGVtZW50Q2hpbGRyZW4oKSwgW10gKGF1dG8mJiBjaGlsZCkg
LT4gaWQgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGQuZ2V0KCk7Ci0gICAgICAg
ICAgICAgICAgfSkuYXV0b3JlbGVhc2UoKTsKLSAgICAgICAgICAgIH0gZWxzZQotI2VuZGlmCi0g
ICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbc2VsZiByZW5kZXJXaWRnZXRDaGlsZHJlbl07Ci0g
ICAgICAgICAgICAKKyAgICAgICAgICAgIE5TQXJyYXkgKmNoaWxkcmVuID0gW3NlbGYgX3RyYW5z
Zm9ybVNwZWNpYWxDaGlsZHJlbkNhc2VzOmJhY2tpbmdPYmplY3RdOwogICAgICAgICAgICAgaWYg
KCFjaGlsZHJlbikKICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwogCkBAIC0zODIxLDggKzM4
NjMsMTMgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICAgICAgICAg
IC8vIFRoZSBhdHRhY2htZW50IHZpZXcgc2hvdWxkIGJlIHJldHVybmVkLCBvdGhlcndpc2UgQVgg
cGFsaW5kcm9tZSBlcnJvcnMgb2NjdXIuCiAgICAgICAgICAgICBpZCBhdHRhY2htZW50VmlldyA9
IG5pbDsKLSAgICAgICAgICAgIGlmIChbd3JhcHBlciBpc0tpbmRPZkNsYXNzOltXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlciBjbGFzc11dICYmIHdyYXBwZXIuYXhCYWNraW5nT2JqZWN0ICYm
IHdyYXBwZXIuYXhCYWNraW5nT2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkKLSAgICAgICAgICAgICAg
ICBhdHRhY2htZW50VmlldyA9IFt3cmFwcGVyIGF0dGFjaG1lbnRWaWV3XTsKKyAgICAgICAgICAg
IGlmIChbd3JhcHBlciBpc0tpbmRPZkNsYXNzOltXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ciBjbGFzc11dICYmIHdyYXBwZXIuYXhCYWNraW5nT2JqZWN0KSB7CisgICAgICAgICAgICAgICAg
aWYgKHdyYXBwZXIuYXhCYWNraW5nT2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkKKyAgICAgICAgICAg
ICAgICAgICAgYXR0YWNobWVudFZpZXcgPSBbd3JhcHBlciBhdHRhY2htZW50Vmlld107CisgICAg
ICAgICAgICAgICAgZWxzZSBpZiAod3JhcHBlci5heEJhY2tpbmdPYmplY3QtPmlzUmVtb3RlRnJh
bWUoKSkKKyAgICAgICAgICAgICAgICAgICAgYXR0YWNobWVudFZpZXcgPSB3cmFwcGVyLmF4QmFj
a2luZ09iamVjdC0+cmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKS5nZXQoKTsKKyAgICAgICAg
ICAgIH0KKwogICAgICAgICAgICAgW3N1YmFycmF5IGFkZE9iamVjdDphdHRhY2htZW50VmlldyA/
IGF0dGFjaG1lbnRWaWV3IDogd3JhcHBlcl07CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCAyNThjMTRiODZhOGIuLjU3MTdhZGUyYTQ1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTEwODUsNiArMTA4NSwxMSBA
QCBSZW1vdGVBWE9iamVjdFJlZiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjphY2Nlc3NpYmlsaXR5
UmVtb3RlT2JqZWN0KCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorSW50UG9pbnQgRW1wdHlG
cmFtZUxvYWRlckNsaWVudDo6YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCkKK3sKKyAg
ICByZXR1cm4geyB9OworfQorCiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJF
RSkKIHZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6c2V0QVhJc29sYXRlZFRyZWVSb290KFdl
YkNvcmU6OkFYQ29yZU9iamVjdCopCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
RnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAwOThjZTU4ZDExMTkuLjQ2NzJkZTI5ODUzMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0x
ODQsNiArMTg0LDcgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJlbW90
ZUFYT2JqZWN0UmVmIGFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSBmaW5hbDsKKyAgICBJbnRQ
b2ludCBhY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKSBmaW5hbDsKICNpZiBFTkFCTEUo
QUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQogICAgIHZvaWQgc2V0QVhJc29sYXRlZFRyZWVS
b290KFdlYkNvcmU6OkFYQ29yZU9iamVjdCopIGZpbmFsOwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9jYWxGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0xvY2FsRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBiMmQ1NmYwNTBhZTku
LjAwZDNhZDVlMmNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvY2FsRnJh
bWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9jYWxGcmFtZUxv
YWRlckNsaWVudC5oCkBAIC0yOTAsNiArMjkwLDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIC8vIEFsbG93IGFuIGFjY2Vzc2liaWxpdHkgb2JqZWN0IHRvIHJldHJpZXZlIGEg
RnJhbWUgcGFyZW50IGlmIHRoZXJlJ3Mgbm8gUGxhdGZvcm1XaWRnZXQuCiAgICAgdmlydHVhbCBS
ZW1vdGVBWE9iamVjdFJlZiBhY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkgPSAwOworICAgIHZp
cnR1YWwgSW50UG9pbnQgYWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCkgPSAwOwogI2lm
IEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAgICAgdmlydHVhbCB2b2lkIHNl
dEFYSXNvbGF0ZWRUcmVlUm9vdChBWENvcmVPYmplY3QqKSA9IDA7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCmluZGV4IDNhOWI3OTFjNTNlNi4uN2E2YmI4MjkxYTMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKQEAgLTIyMDgsMTEgKzIyMDgsMTggQEAgYm9vbCBQYWdlOjpzaG91bGRVcGRhdGVBY2Nlc3Np
YmlsaXR5UmVnaW9ucygpIGNvbnN0CiAgICAgQVNTRVJUKG1fbGFzdFJlbmRlcmluZ1VwZGF0ZVRp
bWVzdGFtcCA+PSBtX2xhc3RBY2Nlc3NpYmlsaXR5T2JqZWN0UmVnaW9uc1VwZGF0ZSk7CiAgICAg
aWYgKChtX2xhc3RSZW5kZXJpbmdVcGRhdGVUaW1lc3RhbXAgLSBtX2xhc3RBY2Nlc3NpYmlsaXR5
T2JqZWN0UmVnaW9uc1VwZGF0ZSkgPCB1cGRhdGVJbnRlcnZhbCkgewogICAgICAgICAvLyBXZSd2
ZSBhbHJlYWR5IHVwZGF0ZWQgYWNjZXNzaWJpbGl0eSBvYmplY3QgcmVjdHMgcmVjZW50bHksIHNv
IHNraXAgdGhpcyB1cGRhdGUgYW5kIHNjaGVkdWxlIGFub3RoZXIgZm9yIGxhdGVyLgotICAgICAg
ICBhdXRvKiBsb2NhbE1haW5GcmFtZSA9IGR5bmFtaWNEb3duY2FzdDxMb2NhbEZyYW1lPihtYWlu
RnJhbWUoKSk7Ci0gICAgICAgIFJlZlB0ciBtYWluRG9jdW1lbnQgPSBsb2NhbE1haW5GcmFtZSA/
IGxvY2FsTWFpbkZyYW1lLT5kb2N1bWVudCgpIDogbnVsbHB0cjsKKworICAgICAgICBSZWZQdHI8
RG9jdW1lbnQ+IHByb3RlY3RlZE1haW5Eb2N1bWVudDsKKyAgICAgICAgaWYgKGF1dG8qIGxvY2Fs
TWFpbkZyYW1lID0gZHluYW1pY0Rvd25jYXN0PExvY2FsRnJhbWU+KG1haW5GcmFtZSgpKSkKKyAg
ICAgICAgICAgIHByb3RlY3RlZE1haW5Eb2N1bWVudCA9IGxvY2FsTWFpbkZyYW1lID8gbG9jYWxN
YWluRnJhbWUtPmRvY3VtZW50KCkgOiBudWxscHRyOworICAgICAgICBlbHNlIGlmIChhdXRvKiBy
ZW1vdGVGcmFtZSA9IGR5bmFtaWNEb3duY2FzdDxSZW1vdGVGcmFtZT4obWFpbkZyYW1lKCkpKSB7
CisgICAgICAgICAgICBpZiAoYXV0byogb3duZXIgPSByZW1vdGVGcmFtZS0+b3duZXJFbGVtZW50
KCkpCisgICAgICAgICAgICAgICAgcHJvdGVjdGVkTWFpbkRvY3VtZW50ID0gJihvd25lci0+ZG9j
dW1lbnQoKSk7CisgICAgICAgIH0KKwogICAgICAgICAvLyBJZiBhY2Nlc3NpYmlsaXR5IGlzIGVu
YWJsZWQgYW5kIHdlIGhhdmUgYSBtYWluIGRvY3VtZW50LCB0aGF0IGRvY3VtZW50IHNob3VsZCBo
YXZlIGFuIEFYIG9iamVjdCBjYWNoZS4KLSAgICAgICAgQVNTRVJUKCFtYWluRG9jdW1lbnQgfHwg
bWFpbkRvY3VtZW50LT5leGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSk7Ci0gICAgICAgIGlmIChDaGVj
a2VkUHRyIHRvcEF4T2JqZWN0Q2FjaGUgPSBtYWluRG9jdW1lbnQgPyBtYWluRG9jdW1lbnQtPmV4
aXN0aW5nQVhPYmplY3RDYWNoZSgpIDogbnVsbHB0cikKKyAgICAgICAgQVNTRVJUKCFwcm90ZWN0
ZWRNYWluRG9jdW1lbnQgfHwgcHJvdGVjdGVkTWFpbkRvY3VtZW50LT5leGlzdGluZ0FYT2JqZWN0
Q2FjaGUoKSk7CisgICAgICAgIGlmIChDaGVja2VkUHRyIHRvcEF4T2JqZWN0Q2FjaGUgPSBwcm90
ZWN0ZWRNYWluRG9jdW1lbnQgPyBwcm90ZWN0ZWRNYWluRG9jdW1lbnQtPmV4aXN0aW5nQVhPYmpl
Y3RDYWNoZSgpIDogbnVsbHB0cikKICAgICAgICAgICAgIHRvcEF4T2JqZWN0Q2FjaGUtPnNjaGVk
dWxlT2JqZWN0UmVnaW9uc1VwZGF0ZSgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmNwcAppbmRleCA2ZmY4MTdiOTM2MWYuLjI0ZTAxOTNj
ZTVmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5jcHAKQEAgLTEwMCw2ICsxMDAsMjEg
QEAgdm9pZCBSZW1vdGVGcmFtZTo6YnJvYWRjYXN0RnJhbWVSZW1vdmFsVG9PdGhlclByb2Nlc3Nl
cygpCiAgICAgbV9jbGllbnQtPmJyb2FkY2FzdEZyYW1lUmVtb3ZhbFRvT3RoZXJQcm9jZXNzZXMo
KTsKIH0KIAordm9pZCBSZW1vdGVGcmFtZTo6dXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5
T2Zmc2V0KEludFBvaW50IG9mZnNldCkKK3sKKyAgICBtX2NsaWVudC0+dXBkYXRlUmVtb3RlRnJh
bWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KGZyYW1lSUQoKSwgb2Zmc2V0KTsKK30KKwordm9pZCBSZW1v
dGVGcmFtZTo6dW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50
aWZpZXIpCit7CisgICAgbV9jbGllbnQtPnVuYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMo
cHJvY2Vzc0lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUZyYW1lOjpiaW5kUmVtb3RlQWNj
ZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIHN0ZDo6c3Bhbjxjb25zdCB1
aW50OF90PiBkYXRhVG9rZW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpzcGFu
PGNvbnN0IHVpbnQ4X3Q+LCBpbnQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHJldHVy
biBtX2NsaWVudC0+YmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMocHJvY2Vzc0lkZW50aWZp
ZXIsIGZyYW1lSUQoKSwgZGF0YVRva2VuLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9
CisKIEZyYW1lVmlldyogUmVtb3RlRnJhbWU6OnZpcnR1YWxWaWV3KCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV92aWV3LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1v
dGVGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5oCmluZGV4IDdiYWRh
OTkwOGEyZC4uYmI5OGUwOTYxZjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jl
bW90ZUZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5oCkBAIC0z
Myw2ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSW50UG9pbnQ7CiBj
bGFzcyBSZW1vdGVET01XaW5kb3c7CiBjbGFzcyBSZW1vdGVGcmFtZUNsaWVudDsKIGNsYXNzIFJl
bW90ZUZyYW1lVmlldzsKQEAgLTYyLDYgKzYzLDkgQEAgcHVibGljOgogICAgIE1hcmthYmxlPExh
eWVySG9zdGluZ0NvbnRleHRJZGVudGlmaWVyPiBsYXllckhvc3RpbmdDb250ZXh0SWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJIb3N0aW5nQ29udGV4dElkZW50aWZpZXI7IH0KIAog
ICAgIFN0cmluZyByZW5kZXJUcmVlQXNUZXh0KHNpemVfdCBiYXNlSW5kZW50LCBPcHRpb25TZXQ8
UmVuZGVyQXNUZXh0RmxhZz4pOworICAgIHZvaWQgYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFt
ZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBpbnQpPiYmKTsKKyAg
ICB2b2lkIHVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChJbnRQb2ludCk7Cisg
ICAgdm9pZCB1bmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCk7CiAKICAgICB2b2lk
IHNldEN1c3RvbVVzZXJBZ2VudChjb25zdCBTdHJpbmcmIGN1c3RvbVVzZXJBZ2VudCkgeyBtX2N1
c3RvbVVzZXJBZ2VudCA9IGN1c3RvbVVzZXJBZ2VudDsgfQogICAgIFN0cmluZyBjdXN0b21Vc2Vy
QWdlbnQoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVt
b3RlRnJhbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVDbGllbnQu
aAppbmRleCA0ZWZkMTAzZjM5MTIuLjU0MWEwZDAxYzU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9SZW1vdGVGcmFtZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UmVtb3RlRnJhbWVDbGllbnQuaApAQCAtMzAsNiArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIERhdGFTZWdtZW50OwogY2xhc3MgRnJhbWVMb2FkUmVxdWVzdDsKIGNsYXNz
IEludFNpemU7CiBjbGFzcyBTZWN1cml0eU9yaWdpbkRhdGE7CkBAIC00OCw2ICs0OSw5IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyByZW5kZXJUcmVlQXNUZXh0KHNpemVfdCBiYXNlSW5k
ZW50LCBPcHRpb25TZXQ8UmVuZGVyQXNUZXh0RmxhZz4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
YnJvYWRjYXN0RnJhbWVSZW1vdmFsVG9PdGhlclByb2Nlc3NlcygpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgY2xvc2VQYWdlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBiaW5kUmVtb3RlQWNjZXNz
aWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIEZyYW1lSWRlbnRpZmllciB0YXJn
ZXQsIGNvbnN0IHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhVG9rZW4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBpbnQpPiYmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChG
cmFtZUlkZW50aWZpZXIgdGFyZ2V0LCBJbnRQb2ludCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1
bmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBmb2N1cygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdW5mb2N1cygpID0gMDsKICAgICB2aXJ0
dWFsIH5SZW1vdGVGcmFtZUNsaWVudCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVu
dC5oCmluZGV4IDg0ZmM0MTllNTljYS4uNDJlZWU2NmFiMTZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGFnZUNsaWVudC5oCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFn
QWN0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9yQ2xpZW50Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Gb2N1c0RpcmVjdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVJZGVudGlm
aWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnB1dE1vZGUuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L01lZGlhQ29udHJvbHNDb250ZXh0TWVudUl0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9s
bFR5cGVzLmg+CkBAIC0zMTgsNyArMzE5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBl
eGVjdXRlVW5kb1JlZG8oVW5kb09yUmVkbykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aGVlbEV2
ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShjb25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50JikgPSAw
OwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NpYmlsaXR5V2Vi
UHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChzdGQ6OnNw
YW48Y29uc3QgdWludDhfdD4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgcGlkX3QpID0gMDsK
ICAgICB2aXJ0dWFsIGJvb2wgZXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2VsZWN0b3IoY29uc3QgU3Ry
aW5nJiBzZWxlY3RvcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTZWN1cmVJbnB1dFN0
YXRlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXNldFNlY3VyZUlucHV0U3RhdGUoKSA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAK
aW5kZXggNmQwMzQwN2NlZTlmLi5iNjQ2NTYyYTdkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKQEAgLTU0Nyw3ICs1NDcsNyBAQCB2
b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpyZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lKGNvbnN0CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotdm9p
ZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRv
a2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhKQordm9pZCBQcm92aXNpb25hbFBhZ2VQ
cm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25z
dCB1aW50OF90PiBkYXRhLCBGcmFtZUlkZW50aWZpZXIpCiB7CiAgICAgbV9hY2Nlc3NpYmlsaXR5
VG9rZW4gPSBWZWN0b3IoZGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJv
dmlzaW9uYWxQYWdlUHJveHkuaAppbmRleCAwM2IyNWJiZjRlMDYuLjk0NTBjMWZjYzYzMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCkBAIC0x
NzQsNyArMTc0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlcXVlc3RQYXNzd29yZEZvclF1aWNr
TG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CiAjZW5kaWYKICNpZiBQTEFURk9STShD
T0NPQSkKLSAgICB2b2lkIHJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6
OnNwYW48Y29uc3QgdWludDhfdD4pOworICAgIHZvaWQgcmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNz
aWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAg
IHZvaWQgYmluZEFjY2Vzc2liaWxpdHlUcmVlKGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcAppbmRleCBmMmZjOGE1NGQ4ODMuLjIzMDMwN2Ex
NzRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKQEAgLTQ1
LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQYWdl
UHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBhc3RlYm9hcmRQcm94eS5oIgorI2luY2x1
ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAj
aW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIldlYnNpdGVQb2xpY2llc0Rh
dGEuaCIKQEAgLTE4NCw2ICsxODUsMTQgQEAgdm9pZCBXZWJGcmFtZVByb3h5OjpuYXZpZ2F0ZVNl
cnZpY2VXb3JrZXJDbGllbnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dEkKICAgICB9
KTsKIH0KIAordm9pZCBXZWJGcmFtZVByb3h5OjpiaW5kQWNjZXNzaWJpbGl0eUZyYW1lV2l0aERh
dGEoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCit7CisgICAgaWYgKCFtX3BhZ2UpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6
QmluZEFjY2Vzc2liaWxpdHlGcmFtZVdpdGhEYXRhKG1fZnJhbWVJRCwgZGF0YSkpOworfQorCiB2
b2lkIFdlYkZyYW1lUHJveHk6OmxvYWRVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
cmVmZXJyZXIpCiB7CiAgICAgaWYgKCFtX3BhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJG
cmFtZVByb3h5LmgKaW5kZXggYjBkYWViMGU2NGZjLi43MTViYjgwYmFiNjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKQEAgLTE3MCw2ICsxNzAsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCByZW1vdGVQcm9jZXNzRGlkVGVybWluYXRlKCk7CiAgICAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gd2ViUGFnZUlESW5DdXJyZW50UHJvY2VzcygpOwog
ICAgIHZvaWQgbm90aWZ5UGFyZW50T2ZMb2FkQ29tcGxldGlvbihXZWJQcm9jZXNzUHJveHkmKTsK
KyAgICB2b2lkIHJlbW92ZVJlbW90ZVBhZ2VzRm9yU3VzcGVuc2lvbigpOworICAgIHZvaWQgYmlu
ZEFjY2Vzc2liaWxpdHlGcmFtZVdpdGhEYXRhKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Pik7CiAK
ICAgICBib29sIGlzRm9jdXNlZCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAppbmRleCBjOTA5YzU3YmFiYzcuLjk4YjkzNmNkN2VlNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMjk1LDggKzEyOTUsMTIgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnN3YXBUb1Byb3Zpc2lvbmFsUGFnZShzdGQ6OnVuaXF1ZV9wdHI8
UHJvdmlzaW9uYWxQYWdlUHJveHk+IHAKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGF1dG8g
YWNjZXNzaWJpbGl0eVRva2VuID0gcHJvdmlzaW9uYWxQYWdlLT50YWtlQWNjZXNzaWJpbGl0eVRv
a2VuKCk7Ci0gICAgaWYgKCFhY2Nlc3NpYmlsaXR5VG9rZW4uaXNFbXB0eSgpKQotICAgICAgICBy
ZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oeyBhY2Nlc3NpYmlsaXR5VG9rZW4u
ZGF0YSgpLCBhY2Nlc3NpYmlsaXR5VG9rZW4uc2l6ZSgpIH0pOworICAgIGlmICghYWNjZXNzaWJp
bGl0eVRva2VuLmlzRW1wdHkoKSkgeworICAgICAgICByZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3Np
YmlsaXR5VG9rZW4oeyBhY2Nlc3NpYmlsaXR5VG9rZW4uZGF0YSgpLCBhY2Nlc3NpYmlsaXR5VG9r
ZW4uc2l6ZSgpIH0sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciB7CisgICAgICAgICAgICBPYmpl
Y3RJZGVudGlmaWVyPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllclR5cGU+KDApLAorICAgICAgICAg
ICAgT2JqZWN0SWRlbnRpZmllcjxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllclR5cGU+KDApCisg
ICAgICAgIH0pOworICAgIH0KICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0o
V1BFKQogICAgIGF1dG8gYWNjZXNzaWJpbGl0eVBsdWdJRCA9IHByb3Zpc2lvbmFsUGFnZS0+YWNj
ZXNzaWJpbGl0eVBsdWdJRCgpOwpAQCAtMTM3ODAsNiArMTM3ODQsMjIgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmFkZENvbnNvbGVNZXNzYWdlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBNZXNzYWdl
U291cmNlIG1lc3MKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2Fn
ZSB7IGZyYW1lSUQsIG1lc3NhZ2VTb3VyY2UsIG1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgY29yZUlk
ZW50aWZpZXIgfSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpiaW5kUmVtb3RlQWNjZXNzaWJp
bGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBjb25zdCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YVRva2VuLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgaW50KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luY1RvUHJvY2Vz
c0NvbnRhaW5pbmdGcmFtZShmcmFtZUlELCBNZXNzYWdlczo6V2ViUGFnZTo6QmluZFJlbW90ZUFj
Y2Vzc2liaWxpdHlGcmFtZXMocHJvY2Vzc0lkZW50aWZpZXIsIGZyYW1lSUQsIGRhdGFUb2tlbikp
OworICAgIGlmICghc2VuZFJlc3VsdC5zdWNjZWVkZWQoKSkKKyAgICAgICAgcmV0dXJuIGNvbXBs
ZXRpb25IYW5kbGVyKHsgfSwgMCk7CisKKyAgICBhdXRvIFtmcmFtZURhdGFUb2tlbiwgZnJhbWVQ
cm9jZXNzSWRlbnRpZmllcl0gPSBzZW5kUmVzdWx0LnRha2VSZXBseSgpOworCisgICAgY29tcGxl
dGlvbkhhbmRsZXIoZnJhbWVEYXRhVG9rZW4sIGZyYW1lUHJvY2Vzc0lkZW50aWZpZXIpOworfQor
Cit2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpJbnRQb2ludCBvZmZz
ZXQpCit7CisgICAgc2VuZFRvUHJvY2Vzc0NvbnRhaW5pbmdGcmFtZShmcmFtZUlELCBNZXNzYWdl
czo6V2ViUGFnZTo6VXBkYXRlUmVtb3RlUGFnZUFjY2Vzc2liaWxpdHlPZmZzZXQoZnJhbWVJRCwg
b2Zmc2V0KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgV0VCUEFHRVBS
T1hZX1JFTEVBU0VfTE9HCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4
IGRmMGNmMWYzZDYyYS4uMjUyNTk3MWVmZDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaApAQCAtMTM1NSw3ICsxMzU1LDcgQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgLy8gQ2FsbGVkIGJ5IHRoZSB3ZWIgcHJvY2VzcyB0aHJvdWdoIGEgbWVzc2Fn
ZS4KLSAgICB2b2lkIHJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNw
YW48Y29uc3QgdWludDhfdD4pOworICAgIHZvaWQgcmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJp
bGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyKTsKICAgICAvLyBDYWxsZWQgYnkgdGhlIFVJIHByb2Nlc3Mgd2hlbiBpdCBpcyByZWFkeSB0
byBzZW5kIGl0cyB0b2tlbnMgdG8gdGhlIHdlYiBwcm9jZXNzLgogICAgIHZvaWQgcmVnaXN0ZXJV
SVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBlbGVt
ZW50VG9rZW4sIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiB3aW5kb3dUb2tlbik7CiAgICAgdm9p
ZCByZXBsYWNlU2VsZWN0aW9uV2l0aFBhc3RlYm9hcmREYXRhKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiB0eXBlcywgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKQEAgLTI5ODUsNiArMjk4NSw4IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBmb2N1c1JlbW90ZUZyYW1lKElQQzo6Q29ubmVjdGlvbiYsIFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAgICAgdm9pZCBwb3N0TWVzc2FnZVRvUmVtb3RlKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciBzb3VyY2UsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2lu
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgdGFyZ2V0LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YT4gdGFyZ2V0T3JpZ2luLCBjb25zdCBXZWJDb3JlOjpNZXNzYWdl
V2l0aE1lc3NhZ2VQb3J0cyYpOwogICAgIHZvaWQgcmVuZGVyVHJlZUFzVGV4dChXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIHNpemVfdCBiYXNlSW5kZW50LCBPcHRpb25TZXQ8V2ViQ29yZTo6UmVu
ZGVyQXNUZXh0RmxhZz4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmKTsKKyAg
ICB2b2lkIGJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmll
ciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0
YVRva2VuLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Piwg
aW50KT4mJik7CisgICAgdm9pZCB1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpJbnRQb2ludCk7CiAKICAgICB2b2lk
IHNldFRleHRJbmRpY2F0b3JGcm9tRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJD
b3JlOjpUZXh0SW5kaWNhdG9yRGF0YSYmLCB1aW50NjRfdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA0ZmY1M2FjMDE4ZTEu
LjMxOGZjMzMxMmI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbgpAQCAtMzI1LDcgKzMyNSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQ
cm94eSB7CiAgICAgRXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2VsZWN0b3IoU3RyaW5nIHNlbGVjdG9y
KSAtPiAoYm9vbCBoYW5kbGVkKSBTeW5jaHJvbm91cwogCiAgICAgIyBSZW1vdGUgYWNjZXNzaWJp
bGl0eSBtZXNzYWdlcwotICAgIFJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihz
dGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSkKKyAgICBSZWdpc3RlcldlYlByb2Nlc3NBY2Nl
c3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEsIFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciBmcmFtZUlEKQogCiAgICAgIyBTcGVlY2ggbWVzc2FnZXMKICAgICBHZXRJ
c1NwZWFraW5nKCkgLT4gKGJvb2wgaXNTcGVha2luZykgU3luY2hyb25vdXMKQEAgLTYzMSw0ICs2
MzEsNiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIEZvY3VzUmVtb3RlRnJhbWUo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCiAgICAgUG9zdE1lc3NhZ2VUb1JlbW90
ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgc291cmNlLCBTdHJpbmcgc291cmNlT3JpZ2luLCBX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgdGFyZ2V0LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YT4gdGFyZ2V0T3JpZ2luLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVdp
dGhNZXNzYWdlUG9ydHMgbWVzc2FnZSkKICAgICBSZW5kZXJUcmVlQXNUZXh0KFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciBpZGVudGlmaWVyLCBzaXplX3QgYmFzZUluZGVudCwgT3B0aW9uU2V0PFdl
YkNvcmU6OlJlbmRlckFzVGV4dEZsYWc+IGJlaGF2aW9yKSAtPiAoU3RyaW5nIHJlbmRlclRyZWVE
dW1wKSBTeW5jaHJvbm91cworICAgIEJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBw
cm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0ZDo6
c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhVG9rZW4pIC0+IChzdGQ6OnNwYW48Y29uc3QgdWludDhf
dD4gdG9rZW4sIGludCBwcm9jZXNzSWRlbnRpZmllcikgU3luY2hyb25vdXMKKyAgICBVcGRhdGVS
ZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIFdlYkNvcmU6OkludFBvaW50IG9mZnNldCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggMTBjNGY2YWUxMjUwLi42Mzg4
Y2I0NjcyYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5oCkBAIC0xMTAsNyArMTEwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyQWxs
RWRpdENvbW1hbmRzKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBjYW5VbmRvUmVkbyhVbmRvT3JSZWRv
KSBvdmVycmlkZTsKICAgICB2b2lkIGV4ZWN1dGVVbmRvUmVkbyhVbmRvT3JSZWRvKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChzdGQ6OnNw
YW48Y29uc3QgdWludDhfdD4pIG92ZXJyaWRlOworICAgIHZvaWQgYWNjZXNzaWJpbGl0eVdlYlBy
b2Nlc3NUb2tlblJlY2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyLCBwaWRfdCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBleGVjdXRlU2F2ZWRDb21t
YW5kQnlTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9yKSBvdmVycmlkZTsKICAgICB2b2lk
IHVwZGF0ZVNlY3VyZUlucHV0U3RhdGUoKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc2V0U2VjdXJl
SW5wdXRTdGF0ZSgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IGNiMjNmNDk3NGE2Yi4uYjVhZGRkY2UyM2ZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1t
CkBAIC0zODksNyArMzg5LDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZXhlY3V0ZVVuZG9SZWRv
KFVuZG9PclJlZG8gdW5kb09yUmVkbykKICAgICByZXR1cm4gKHVuZG9PclJlZG8gPT0gVW5kb09y
UmVkbzo6VW5kbykgPyBbW2NvbnRlbnRWaWV3KCkgdW5kb01hbmFnZXJdIHVuZG9dIDogW1tjb250
ZW50VmlldygpIHVuZG9NYW5hZ2VyXSByZWRvXTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6
YWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50
OF90PiBkYXRhKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6YWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NU
b2tlblJlY2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhLCBXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIHBpZF90KQogewogICAgIE5TRGF0YSAqcmVtb3RlVG9rZW4gPSBbTlNEYXRh
IGRhdGFXaXRoQnl0ZXM6ZGF0YS5kYXRhKCkgbGVuZ3RoOmRhdGEuc2l6ZSgpXTsKICAgICBbY29u
dGVudFZpZXcoKSBfc2V0QWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlbjpyZW1vdGVUb2tlbl07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9T
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRl
eCA1YjEwZjU5YzY2NjEuLmRlYjRkNThlNWZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC03NjMsMTEgKzc2MywxMCBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKGJvb2wpCiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyV2ViUHJvY2Vzc0Fj
Y2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSkKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpyZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFu
PGNvbnN0IHVpbnQ4X3Q+IGRhdGEsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogewotICAgIHBy
b3RlY3RlZFBhZ2VDbGllbnQoKS0+YWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVk
KGRhdGEpOwotfSAgICAKLQorICAgIHBhZ2VDbGllbnQoKS5hY2Nlc3NpYmlsaXR5V2ViUHJvY2Vz
c1Rva2VuUmVjZWl2ZWQoZGF0YSwgZnJhbWVJRCwgbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKS0+
cmVtb3RlUHJvY2Vzc0lEKCkpOworfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVsYXlBY2Nlc3Np
YmlsaXR5Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uTmFtZSwgc3RkOjpz
cGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCmluZGV4IGZiNmM2MDc4NjdhZi4uYmY4ZGE0MzBkOGE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxN
YWMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMu
aApAQCAtMTc2LDcgKzE3Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXN0dXJlRXZlbnRXYXNO
b3RIYW5kbGVkQnlXZWJDb3JlKGNvbnN0IE5hdGl2ZVdlYkdlc3R1cmVFdmVudCYpIG92ZXJyaWRl
OwogI2VuZGlmCiAKLSAgICB2b2lkIGFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZl
ZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pIG92ZXJyaWRlOworICAgIHZvaWQgYWNjZXNzaWJp
bGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyLCBwaWRfdCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIG1ha2VG
aXJzdFJlc3BvbmRlcigpIG92ZXJyaWRlOwogICAgIHZvaWQgYXNzaXN0aXZlVGVjaG5vbG9neU1h
a2VGaXJzdFJlc3BvbmRlcigpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCmluZGV4IDA3ODBmMThkYTFjMi4uMDE1MGVjNDUx
MmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGxNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBs
TWFjLm1tCkBAIC01ODEsOSArNTgxLDkgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0VGV4dElu
ZGljYXRvckFuaW1hdGlvblByb2dyZXNzKGZsb2F0IHByb2dyZXNzKQogICAgIG1faW1wbC0+c2V0
VGV4dEluZGljYXRvckFuaW1hdGlvblByb2dyZXNzKHByb2dyZXNzKTsKIH0KIAotdm9pZCBQYWdl
Q2xpZW50SW1wbDo6YWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKHN0ZDo6c3Bh
bjxjb25zdCB1aW50OF90PiBkYXRhKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6YWNjZXNzaWJpbGl0
eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhLCBX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgcGlkX3QgcGlkKQogewotICAgIG1faW1w
bC0+c2V0QWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlbihbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6
ZGF0YS5kYXRhKCkgbGVuZ3RoOmRhdGEuc2l6ZSgpXSk7CisgICAgbV9pbXBsLT5zZXRBY2Nlc3Np
YmlsaXR5V2ViUHJvY2Vzc1Rva2VuKFtOU0RhdGEgZGF0YVdpdGhCeXRlczpkYXRhLmRhdGEoKSBs
ZW5ndGg6ZGF0YS5zaXplKCldLCBmcmFtZUlELCBwaWQpOwogfQogICAgIAogdm9pZCBQYWdlQ2xp
ZW50SW1wbDo6ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVD
b250ZXh0JiBsYXllclRyZWVDb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggY2ZiMTBmZGJiNDEzLi44Njk2MTdhMjlkOGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAt
MzA2LDEyICszMDYsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1EaWN0aW9uYXJ5
TG9va3VwKGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8mIGRpY3Rpb24KICAgICBwcm90ZWN0ZWRQ
YWdlQ2xpZW50KCktPmRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKGRpY3Rpb25hcnlQb3B1cElu
Zm8pOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJp
bGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhKQordm9pZCBXZWJQYWdlUHJv
eHk6OnJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3Qg
dWludDhfdD4gZGF0YSwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCiB7CiAgICAgaWYgKCFoYXNS
dW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgcHJvdGVjdGVkUGFn
ZUNsaWVudCgpLT5hY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoZGF0YSk7Cisg
ICAgcHJvdGVjdGVkUGFnZUNsaWVudCgpLT5hY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVj
ZWl2ZWQoZGF0YSwgZnJhbWVJRCwgbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKS0+cmVtb3RlUHJv
Y2Vzc0lEKCkpOwogfSAgICAKIAogdm9pZCBXZWJQYWdlUHJveHk6Om1ha2VGaXJzdFJlc3BvbmRl
cigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3SW1wbC5oCmluZGV4IDNlOWEw
OTM1YTc1OS4uYWYxMWNlN2Y2NjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2Vi
Vmlld0ltcGwuaApAQCAtNDQ4LDcgKzQ0OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElnbm9y
ZXNNb3VzZURyYWdnZWRFdmVudHMoYm9vbCk7CiAgICAgYm9vbCBpZ25vcmVzTW91c2VEcmFnZ2Vk
RXZlbnRzKCkgY29uc3QgeyByZXR1cm4gbV9pZ25vcmVzTW91c2VEcmFnZ2VkRXZlbnRzOyB9CiAK
LSAgICB2b2lkIHNldEFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW4oTlNEYXRhICopOworICAg
IHZvaWQgc2V0QWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlbihOU0RhdGEgKiwgV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBwaWRfdCk7CiAgICAgdm9pZCBhY2Nlc3NpYmlsaXR5UmVnaXN0ZXJV
SVByb2Nlc3NUb2tlbnMoKTsKICAgICB2b2lkIHVwZGF0ZVJlbW90ZUFjY2Vzc2liaWxpdHlSZWdp
c3RyYXRpb24oYm9vbCByZWdpc3RlclByb2Nlc3MpOwogICAgIGlkIGFjY2Vzc2liaWxpdHlGb2N1
c2VkVUlFbGVtZW50KCk7CkBAIC05MjgsNiArOTI4LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfRU5ECiAgICAgYm9vbCBtX2FsbG93c01hZ25pZmljYXRpb24geyBmYWxzZSB9Owog
CiAgICAgUmV0YWluUHRyPE5TQWNjZXNzaWJpbGl0eVJlbW90ZVVJRWxlbWVudD4gbV9yZW1vdGVB
Y2Nlc3NpYmlsaXR5Q2hpbGQ7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IG1f
cmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lQ2FjaGU7CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1h
Z2U+IG1fcHJvbWlzZWRJbWFnZTsKICAgICBTdHJpbmcgbV9wcm9taXNlZEZpbGVuYW1lOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJbXBsLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJbXBsLm1tCmluZGV4IGNjOGQzYzdmZjBj
Ni4uN2YzNTc3MmFiNGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJ
bXBsLm1tCkBAIC0zNDc5LDEwICszNDc5LDEyIEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldElnbm9y
ZXNNb3VzZURyYWdnZWRFdmVudHMoYm9vbCBpZ25vcmVzTW91c2VEcmFnZ2VkRXZlbnRzKQogICAg
IG1faWdub3Jlc01vdXNlRHJhZ2dlZEV2ZW50cyA9IGlnbm9yZXNNb3VzZURyYWdnZWRFdmVudHM7
CiB9CiAKLXZvaWQgV2ViVmlld0ltcGw6OnNldEFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW4o
TlNEYXRhICpkYXRhKQordm9pZCBXZWJWaWV3SW1wbDo6c2V0QWNjZXNzaWJpbGl0eVdlYlByb2Nl
c3NUb2tlbihOU0RhdGEgKmRhdGEsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBw
aWRfdCBwaWQpCiB7Ci0gICAgbV9yZW1vdGVBY2Nlc3NpYmlsaXR5Q2hpbGQgPSBkYXRhLmxlbmd0
aCA/IGFkb3B0TlMoW1tOU0FjY2Vzc2liaWxpdHlSZW1vdGVVSUVsZW1lbnQgYWxsb2NdIGluaXRX
aXRoUmVtb3RlVG9rZW46ZGF0YV0pIDogbmlsOwotICAgIHVwZGF0ZVJlbW90ZUFjY2Vzc2liaWxp
dHlSZWdpc3RyYXRpb24odHJ1ZSk7CisgICAgaWYgKHBpZCA9PSBtX3BhZ2UtPnByb2Nlc3MoKS5w
cm9jZXNzSUQoKSkgeworICAgICAgICBtX3JlbW90ZUFjY2Vzc2liaWxpdHlDaGlsZCA9IGRhdGEu
bGVuZ3RoID8gYWRvcHROUyhbW05TQWNjZXNzaWJpbGl0eVJlbW90ZVVJRWxlbWVudCBhbGxvY10g
aW5pdFdpdGhSZW1vdGVUb2tlbjpkYXRhXSkgOiBuaWw7CisgICAgICAgIHVwZGF0ZVJlbW90ZUFj
Y2Vzc2liaWxpdHlSZWdpc3RyYXRpb24odHJ1ZSk7CisgICAgfQogfQogCiB2b2lkIFdlYlZpZXdJ
bXBsOjp1cGRhdGVSZW1vdGVBY2Nlc3NpYmlsaXR5UmVnaXN0cmF0aW9uKGJvb2wgcmVnaXN0ZXJQ
cm9jZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDM1
OTg3YTFmODVlNC4uZWNkZGVhOWY5OWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkxvY2FsRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCkBAIC0xODA2LDYgKzE4MDYsMTIgQEAgdm9pZCBXZWJMb2NhbEZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0
ZW4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIAorV2ViQ29yZTo6SW50UG9pbnQgV2ViTG9j
YWxGcmFtZUxvYWRlckNsaWVudDo6YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCkKK3sK
KyAgICBSZWZQdHIgd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICByZXR1cm4gd2ViUGFn
ZSA/IHdlYlBhZ2UtPmFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCgpIDogSW50UG9pbnQo
KTsKK30KKwogUmVtb3RlQVhPYmplY3RSZWYgV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudDo6YWNj
ZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpCiB7CiAgICAgUmVmUHRyIHdlYlBhZ2UgPSBtX2ZyYW1l
LT5wYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAwNjVj
ZTU1MmVhMjEuLmNjZmM5NTI5OTEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNs
aWVudC5oCkBAIC0yNDAsNiArMjQwLDcgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIFJlbW90ZUFYT2JqZWN0UmVmIGFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSBmaW5h
bDsKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBhY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQo
KSBmaW5hbDsKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQogICAgIHZv
aWQgc2V0QVhJc29sYXRlZFRyZWVSb290KFdlYkNvcmU6OkFYQ29yZU9iamVjdCopIGZpbmFsOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlJlbW90ZUZyYW1lQ2xpZW50LmNwcAppbmRleCAzOGIwZjMyNWFhMTYu
LmQ0ZGY3ZWY1MjlhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlJlbW90ZUZyYW1lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuY3BwCkBAIC05Niw2
ICs5Niw0NCBAQCBTdHJpbmcgV2ViUmVtb3RlRnJhbWVDbGllbnQ6OnJlbmRlclRyZWVBc1RleHQo
c2l6ZV90IGJhc2VJbmRlbnQsIE9wdGlvblNldDxSZW5kZQogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKK3ZvaWQgV2ViUmVtb3RlRnJhbWVDbGllbnQ6OnVuYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlG
cmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyKQoreworI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IC8vIE1ha2Ugc3VyZSBBcHBLaXQgc3lzdGVtIGtub3dzIGFib3V0IG91ciByZW1vdGUgVUkgcHJv
Y2VzcyBzdGF0dXMgbm93LgorICAgIGlmIChSZWZQdHIgcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkK
KyAgICAgICAgcGFnZS0+YWNjZXNzaWJpbGl0eU1hbmFnZVJlbW90ZUVsZW1lbnRTdGF0dXMoZmFs
c2UsIHByb2Nlc3NJZGVudGlmaWVyKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHByb2Nlc3NJ
ZGVudGlmaWVyKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlJlbW90ZUZyYW1lQ2xpZW50Ojp1cGRh
dGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIFdlYkNvcmU6OkludFBvaW50IG9mZnNldCkKK3sKKyAgICBpZiAoUmVmUHRyIHBh
Z2UgPSBtX2ZyYW1lLT5wYWdlKCkpCisgICAgICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6VXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KGZyYW1lSUQsIG9m
ZnNldCkpOworfQorCit2b2lkIFdlYlJlbW90ZUZyYW1lQ2xpZW50OjpiaW5kUmVtb3RlQWNjZXNz
aWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBjb25zdCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YVRva2VuLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgaW50KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBSZWZQdHIgcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsK
KyAgICBpZiAoIXBhZ2UpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpzcGFuPGNv
bnN0IHVpbnQ4X3Q+IHsgfSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRv
IHNlbmRSZXN1bHQgPSBwYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCaW5k
UmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhwcm9jZXNzSWRlbnRpZmllciwgZnJhbWVJRCwgZGF0
YVRva2VuKSk7CisgICAgaWYgKCFzZW5kUmVzdWx0LnN1Y2NlZWRlZCgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBhdXRvIFtyZXN1bHRUb2tlbiwgcHJvY2Vzc0lkZW50aWZpZXJSZXN1bHRdID0g
c2VuZFJlc3VsdC50YWtlUmVwbHkoKTsKKworICAgIC8vIE1ha2Ugc3VyZSBBcHBLaXQgc3lzdGVt
IGtub3dzIGFib3V0IG91ciByZW1vdGUgVUkgcHJvY2VzcyBzdGF0dXMgbm93LgorI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgIHBhZ2UtPmFjY2Vzc2liaWxpdHlNYW5hZ2VSZW1vdGVFbGVtZW50U3Rh
dHVzKHRydWUsIHByb2Nlc3NJZGVudGlmaWVyUmVzdWx0KTsKKyNlbmRpZgorICAgIGNvbXBsZXRp
b25IYW5kbGVyKHJlc3VsdFRva2VuLCBwcm9jZXNzSWRlbnRpZmllclJlc3VsdCk7Cit9CisKIHZv
aWQgV2ViUmVtb3RlRnJhbWVDbGllbnQ6OmJyb2FkY2FzdEZyYW1lUmVtb3ZhbFRvT3RoZXJQcm9j
ZXNzZXMoKQogewogICAgIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpicm9hZGNhc3RGcmFtZVJlbW92
YWxUb090aGVyUHJvY2Vzc2VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVudC5oCmluZGV4IGVm
MGVkZDMwMDQ4Yi4uYWFiNWQ2NjY3NDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuaApA
QCAtNDksNiArNDksMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBvc3RNZXNzYWdlVG9SZW1vdGUo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmln
aW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciB0YXJnZXQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiB0YXJnZXRPcmlnaW4sIGNvbnN0IFdlYkNvcmU6Ok1lc3Nh
Z2VXaXRoTWVzc2FnZVBvcnRzJikgZmluYWw7CiAgICAgdm9pZCBjaGFuZ2VMb2NhdGlvbihXZWJD
b3JlOjpGcmFtZUxvYWRSZXF1ZXN0JiYpIGZpbmFsOwogICAgIFN0cmluZyByZW5kZXJUcmVlQXNU
ZXh0KHNpemVfdCBiYXNlSW5kZW50LCBPcHRpb25TZXQ8V2ViQ29yZTo6UmVuZGVyQXNUZXh0Rmxh
Zz4pIGZpbmFsOworICAgIHZvaWQgYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHBy
b2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHN0ZDo6c3Bhbjxjb25z
dCB1aW50OF90PiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6OnNwYW48Y29uc3QgdWludDhf
dD4sIGludCk+JiYpIGZpbmFsOworICAgIHZvaWQgdW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZy
YW1lcyhpbnQpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5
T2Zmc2V0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6SW50UG9pbnQpIGZpbmFs
OworCiAgICAgdm9pZCBicm9hZGNhc3RGcmFtZVJlbW92YWxUb090aGVyUHJvY2Vzc2VzKCkgZmlu
YWw7CiAgICAgdm9pZCBjbG9zZVBhZ2UoKSBmaW5hbDsKICAgICB2b2lkIGZvY3VzKCkgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQ
YWdlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQ
YWdlQ29jb2EubW0KaW5kZXggY2VmZTJlMjM0NWFiLi5kNGU3YzZiNWRjYWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2Eu
bW0KQEAgLTc3LDYgKzc3LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvVVRJUmVnaXN0cnkuaD4KICNp
bXBvcnQgPFdlYkNvcmUvVVRJVXRpbGl0aWVzLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0xh
dW5jaFNlcnZpY2VzU1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TQWNjZXNzaWJpbGl0
eVNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAjaW1wb3J0
IDx3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg+CiAKQEAgLTQwNCwxMCArNDA1LDUxIEBAIHZv
aWQgV2ViUGFnZTo6Y2xlYXJEaWN0YXRpb25BbHRlcm5hdGl2ZXMoVmVjdG9yPERpY3RhdGlvbkNv
bnRleHQ+JiYgY29udGV4dHMpCiAgICAgfSwgRG9jdW1lbnRNYXJrZXI6OlR5cGU6OkRpY3RhdGlv
bkFsdGVybmF0aXZlcyk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6YWNjZXNzaWJpbGl0eVRyYW5zZmVy
UmVtb3RlVG9rZW4oUmV0YWluUHRyPE5TRGF0YT4gcmVtb3RlVG9rZW4pCit2b2lkIFdlYlBhZ2U6
OmFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKFJldGFpblB0cjxOU0RhdGE+IHJlbW90
ZVRva2VuLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKIHsKICAgICBzdGQ6OnNwYW4gZGF0YVRv
a2VuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtyZW1vdGVUb2tlbiBieXRlc10p
LCBbcmVtb3RlVG9rZW4gbGVuZ3RoXSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpSZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oZGF0YVRva2VuKSk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmls
aXR5VG9rZW4oZGF0YVRva2VuLCBmcmFtZUlEKSk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6YWNjZXNz
aWJpbGl0eU1hbmFnZVJlbW90ZUVsZW1lbnRTdGF0dXMoYm9vbCByZWdpc3RlclN0YXR1cywgaW50
IHByb2Nlc3NJZGVudGlmaWVyKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAocmVnaXN0
ZXJTdGF0dXMpCisgICAgICAgIFtOU0FjY2Vzc2liaWxpdHlSZW1vdGVVSUVsZW1lbnQgcmVnaXN0
ZXJSZW1vdGVVSVByb2Nlc3NJZGVudGlmaWVyOnByb2Nlc3NJZGVudGlmaWVyXTsKKyAgICBlbHNl
CisgICAgICAgIFtOU0FjY2Vzc2liaWxpdHlSZW1vdGVVSUVsZW1lbnQgdW5yZWdpc3RlclJlbW90
ZVVJUHJvY2Vzc0lkZW50aWZpZXI6cHJvY2Vzc0lkZW50aWZpZXJdOworI2Vsc2UKKyAgICBVTlVT
RURfUEFSQU0ocmVnaXN0ZXJTdGF0dXMpOworICAgIFVOVVNFRF9QQVJBTShwcm9jZXNzSWRlbnRp
Zmllcik7CisjZW5kaWYKK30KKwordm9pZCBXZWJQYWdlOjpiaW5kUmVtb3RlQWNjZXNzaWJpbGl0
eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YVRva2VuLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgaW50KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBSZWZQdHIgd2ViRnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53
ZWJGcmFtZShmcmFtZUlEKTsKKyAgICBpZiAoIXdlYkZyYW1lKSB7CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9LCAwKTsK
KyAgICB9CisKKyAgICBSZWZQdHIgY29yZUxvY2FsRnJhbWUgPSB3ZWJGcmFtZS0+Y29yZUxvY2Fs
RnJhbWUoKTsKKyAgICBpZiAoIWNvcmVMb2NhbEZyYW1lKSB7CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9LCAwKTsKKyAg
ICB9CisKKyAgICBhdXRvKiByZW5kZXJlciA9IGNvcmVMb2NhbEZyYW1lLT5jb250ZW50UmVuZGVy
ZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9LCAwKTsKKyAgICB9CisKKyAg
ICByZWdpc3RlclJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eVRva2Vucyhwcm9jZXNzSWRlbnRpZmll
ciwgZGF0YVRva2VuKTsKKworICAgIC8vIEdldCBvdXIgcmVtb3RlIHRva2VuIGRhdGEgYW5kIHNl
bmQgYmFjayB0byB0aGUgUmVtb3RlRnJhbWUuCisgICAgYXV0byByZW1vdGVUb2tlbiA9IGFjY2Vz
c2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKTsKKyAgICBzdGQ6OnNwYW4gcmVtb3RlRGF0YVRva2Vu
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtyZW1vdGVUb2tlbiBieXRlc10pLCBb
cmVtb3RlVG9rZW4gbGVuZ3RoXSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIocmVtb3RlRGF0YVRv
a2VuLCBnZXRwaWQoKSk7CiB9CiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAyZGE3OGMwZWNmNTIuLjNk
ZmMwOWQwNzAwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKQEAgLTE1NDMsNiArMTU0MywxNiBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRGlkU2Vs
ZWN0QWxsKCkKIAogI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogCisjaWYgIVBMQVRG
T1JNKENPQ09BKQordm9pZCBXZWJQYWdlOjpiaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhp
bnQsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgaW50KT4mJikK
K3sKK30KKwordm9pZCBXZWJQYWdlOjp1cGRhdGVSZW1vdGVQYWdlQWNjZXNzaWJpbGl0eU9mZnNl
dChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OkludFBvaW50KQoreworfQorI2Vu
ZGlmCisKIHZvaWQgV2ViUGFnZTo6dXBkYXRlRWRpdG9yU3RhdGVBZnRlckxheW91dElmRWRpdGFi
aWxpdHlDaGFuZ2VkKCkKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVwZGF0ZSBFZGl0b3JT
dGF0ZUlzQ29udGVudEVkaXRhYmxlIHRvIHRyYWNrIHdoZXRoZXIgdGhlIHN0YXRlIGlzIHJpY2hs
eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDk0ODEx
MzZjNjc2My4uYWYxZWQ3OGZlN2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCkBAIC02NzEsNiArNjcxLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFy
SGlzdG9yeSgpOwogCiAgICAgdm9pZCBhY2Nlc3NpYmlsaXR5U2V0dGluZ3NEaWRDaGFuZ2UoKTsK
KyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIGFjY2Vzc2liaWxpdHlNYW5hZ2VSZW1vdGVF
bGVtZW50U3RhdHVzKGJvb2wsIGludCk7CisjZW5kaWYKKwogICAgIHZvaWQgc2NyZWVuUHJvcGVy
dGllc0RpZENoYW5nZSgpOwogCiAgICAgdm9pZCBzY2FsZVBhZ2UoZG91YmxlIHNjYWxlLCBjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgb3JpZ2luKTsKQEAgLTEwNDMsNyArMTA0NywxMCBAQCBwdWJs
aWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVBY2Nl
c3NpYmlsaXR5KCk7CiAgICAgdm9pZCByZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tl
bnMoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGVsZW1lbnRUb2tlbiwgc3RkOjpzcGFuPGNvbnN0
IHVpbnQ4X3Q+IHdpbmRvd1Rva2VuKTsKKyAgICB2b2lkIHJlZ2lzdGVyUmVtb3RlRnJhbWVBY2Nl
c3NpYmlsaXR5VG9rZW5zKHBpZF90LCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pOwogICAgIFdL
QWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QqIGFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKTsK
KyAgICBXZWJDb3JlOjpJbnRQb2ludCBhY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKTsK
KyAgICB2b2lkIGNyZWF0ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudChwaWRfdCk7CiAjaWYgRU5B
QkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKICAgICB2b2lkIGNhY2hlQVhQb3NpdGlv
bihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAgICAgdm9pZCBjYWNoZUFYU2l6ZShjb25z
dCBXZWJDb3JlOjpJbnRTaXplJik7CkBAIC0yMDkzLDcgKzIxMDAsNyBAQCBwcml2YXRlOgogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgcmVxdWVzdEFjdGl2ZU5vd1BsYXlpbmdTZXNzaW9u
SW5mbyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wsIFdlYkNvcmU6Ok5vd1BsYXlpbmdJbmZv
JiYpPiYmKTsKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5E
YXRhKCkgY29uc3Q7Ci0gICAgdm9pZCBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tlbihS
ZXRhaW5QdHI8TlNEYXRhPik7CisgICAgdm9pZCBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVU
b2tlbihSZXRhaW5QdHI8TlNEYXRhPiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICNlbmRp
ZgogCiAgICAgdm9pZCBzZXRTaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMoYm9vbCBk
aXNwYXRjaCkgeyBtX3Nob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cyA9IGRpc3BhdGNo
OyB9CkBAIC0yMjAzLDYgKzIyMTAsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZW1vdGVQb3N0
TWVzc2FnZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgc291cmNlLCBjb25zdCBTdHJpbmcmIHNv
dXJjZU9yaWdpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHRhcmdldCwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiYgdGFyZ2V0T3JpZ2luLCBjb25zdCBXZWJD
b3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYpOwogICAgIHZvaWQgcmVuZGVyVHJlZUFzVGV4
dChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHNpemVfdCBiYXNlSW5kZW50LCBPcHRpb25TZXQ8
V2ViQ29yZTo6UmVuZGVyQXNUZXh0RmxhZz4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5n
JiYpPiYmKTsKKyAgICB2b2lkIGJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9j
ZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBzdGQ6OnNwYW48Y29uc3Qg
dWludDhfdD4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+
LCBpbnQpPiYmKTsKKyAgICB2b2lkIHVwZGF0ZVJlbW90ZVBhZ2VBY2Nlc3NpYmlsaXR5T2Zmc2V0
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6SW50UG9pbnQpOwogCiAgICAgdm9p
ZCByZXF1ZXN0VGV4dEV4dHJhY3Rpb24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+
JiYgY29sbGVjdGlvblJlY3RJblJvb3RWaWV3LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNv
cmU6OlRleHRFeHRyYWN0aW9uOjpJdGVtJiYpPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggYzYwMDQ3ZDcz
M2Q3Li5jNjVkNjBlYTBiZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNDg3LDYgKzQ4Nyw5IEBAIEdlbmVyYXRl
U3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRp
dGluZ0NvbW1hbmRUeXBlCiAgICAgQ29sbGFwc2VTZWxlY3Rpb25JbkZyYW1lKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciBmcmFtZUlEKQogI2VuZGlmCiAKKyAgICBCaW5kUmVtb3RlQWNjZXNzaWJp
bGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YVRva2VuKSAtPiAoc3RkOjpz
cGFuPGNvbnN0IHVpbnQ4X3Q+IHRva2VuLCBpbnQgcHJvY2Vzc0lkZW50aWZpZXIpIFN5bmNocm9u
b3VzCisgICAgVXBkYXRlUmVtb3RlUGFnZUFjY2Vzc2liaWxpdHlPZmZzZXQoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OkludFBvaW50IG9mZnNldCk7CisKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICBXaW5kb3dBbmRWaWV3RnJhbWVzQ2hhbmdlZChzdHJ1Y3QgV2Vi
S2l0OjpWaWV3V2luZG93Q29vcmRpbmF0ZXMgY29vcmRpbmF0ZXMpCiAgICAgU2V0TWFpbkZyYW1l
SXNTY3JvbGxhYmxlKGJvb2wgaXNTY3JvbGxhYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCAxMDQ0MTBjODJjOGMuLmE3
Yzg2MGQwMWY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW0KQEAgLTI0MywxMiArMjQzLDE1IEBAIHZvaWQgV2ViUGFnZTo6cGxh
dGZvcm1Jbml0aWFsaXplQWNjZXNzaWJpbGl0eSgpCiAgICAgbV9tb2NrQWNjZXNzaWJpbGl0eUVs
ZW1lbnQgPSBhZG9wdE5TKFtbV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdCBhbGxvY10gaW5p
dF0pOwogICAgIFttX21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCBzZXRXZWJQYWdlOnRoaXNdOwog
Ci0gICAgYWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oYWNjZXNzaWJpbGl0eVJlbW90
ZVRva2VuRGF0YSgpKTsKKyAgICBSZWZQdHIgbG9jYWxNYWluRnJhbWUgPSBkeW5hbWljRG93bmNh
c3Q8TG9jYWxGcmFtZT4obV9wYWdlLT5tYWluRnJhbWUoKSk7CisgICAgaWYgKGxvY2FsTWFpbkZy
YW1lKQorICAgICAgICBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tlbihhY2Nlc3NpYmls
aXR5UmVtb3RlVG9rZW5EYXRhKCksIGxvY2FsTWFpbkZyYW1lLT5mcmFtZUlEKCkpOwogfQogCiB2
b2lkIFdlYlBhZ2U6OnBsYXRmb3JtUmVpbml0aWFsaXplKCkKIHsKLSAgICBhY2Nlc3NpYmlsaXR5
VHJhbnNmZXJSZW1vdGVUb2tlbihhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCkpOworICAg
IFJlZiBmcmFtZSA9IENoZWNrZWRSZWYobV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKSktPmZvY3Vz
ZWRPck1haW5GcmFtZSgpOworICAgIGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKGFj
Y2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSwgZnJhbWUtPmZyYW1lSUQoKSk7CiB9CiAKIFJl
dGFpblB0cjxOU0RhdGE+IFdlYlBhZ2U6OmFjY2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSBj
b25zdApAQCAtNjQ0LDYgKzY0NywxNiBAQCBOU09iamVjdCAqV2ViUGFnZTo6YWNjZXNzaWJpbGl0
eU9iamVjdEZvck1haW5GcmFtZVBsdWdpbigpCiAgICAgcmV0dXJuIG5pbDsKIH0KICAgICAKK3Zv
aWQgV2ViUGFnZTo6dXBkYXRlUmVtb3RlUGFnZUFjY2Vzc2liaWxpdHlPZmZzZXQoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpJbnRQb2ludCkKK3sKKyAgICAvLyBGSVhNRTogSW1w
bGVtZW50Cit9CisKK3ZvaWQgV2ViUGFnZTo6cmVnaXN0ZXJSZW1vdGVGcmFtZUFjY2Vzc2liaWxp
dHlUb2tlbnMocGlkX3QsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PikKK3sKKyAgICAvLyBGSVhN
RTogSW1wbGVtZW50Cit9CisKIHZvaWQgV2ViUGFnZTo6cmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3Np
YmlsaXR5VG9rZW5zKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBlbGVtZW50VG9rZW4sIHN0ZDo6
c3Bhbjxjb25zdCB1aW50OF90PikKIHsKICAgICBOU0RhdGEgKmVsZW1lbnRUb2tlbkRhdGEgPSBb
TlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZWxlbWVudFRva2VuLmRhdGEoKSBsZW5ndGg6ZWxlbWVudFRv
a2VuLnNpemUoKV07CkBAIC02NjIsNiArNjc1LDEyIEBAIHZvaWQgV2ViUGFnZTo6Z2V0RGF0YVNl
bGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
CiAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIH0KIAorV2ViQ29yZTo6SW50UG9pbnQgV2Vi
UGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiB7IH07Cit9CisKIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmpl
Y3QqIFdlYlBhZ2U6OmFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oCmlu
ZGV4IDM5ZTkwZTNjODk1ZS4uNDk3MDA3MGE0NTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmls
aXR5V2ViUGFnZU9iamVjdEJhc2UuaApAQCAtNDUsNiArNDUsOCBAQCBjbGFzcyBBWENvcmVPYmpl
Y3Q7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX3NpemUgV1RGX0dVQVJERURfQllfTE9DSyhtX2Nh
Y2hlTG9jayk7CiAgICAgVGhyZWFkU2FmZVdlYWtQdHI8V2ViQ29yZTo6QVhDb3JlT2JqZWN0PiBt
X2lzb2xhdGVkVHJlZVJvb3Q7CiAjZW5kaWYKKworICAgIFdlYkNvcmU6OkludFBvaW50IG1fcmVt
b3RlRnJhbWVPZmZzZXQ7CiAgICAgUmV0YWluUHRyPGlkPiBtX3BhcmVudDsKICAgICBib29sIG1f
aGFzTWFpbkZyYW1lUGx1Z2luOwogfQpAQCAtNTYsOSArNTgsMTEgQEAgY2xhc3MgQVhDb3JlT2Jq
ZWN0OwogLSAodm9pZClzZXRJc29sYXRlZFRyZWVSb290OihOYWtlZFB0cjxXZWJDb3JlOjpBWENv
cmVPYmplY3Q+KXJvb3Q7CiAjZW5kaWYKIC0gKHZvaWQpc2V0UmVtb3RlUGFyZW50OihpZClwYXJl
bnQ7CistICh2b2lkKXNldFJlbW90ZUZyYW1lT2Zmc2V0OihXZWJDb3JlOjpJbnRQb2ludClvZmZz
ZXQ7CiAtICh2b2lkKXNldEhhc01haW5GcmFtZVBsdWdpbjooYm9vbCloYXNQbHVnaW47CiAKIC0g
KGlkKWFjY2Vzc2liaWxpdHlSb290T2JqZWN0V3JhcHBlcjsKIC0gKGlkKWFjY2Vzc2liaWxpdHlG
b2N1c2VkVUlFbGVtZW50OworLSAoV2ViQ29yZTo6SW50UG9pbnQpYWNjZXNzaWJpbGl0eVJlbW90
ZUZyYW1lT2Zmc2V0OwogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9i
amVjdEJhc2UubW0KaW5kZXggNmY5OTU0NWFlYmY1Li5iZWM4ZDczZmFhMmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQ
YWdlT2JqZWN0QmFzZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0KQEAgLTM2LDkgKzM2LDExIEBA
CiAjaW1wb3J0ICJXS1N0cmluZ0NGLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0FYT2JqZWN0Q2FjaGUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRnJhbWVU
cmVlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
TG9jYWxGcmFtZVZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZS5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9SZW1vdGVGcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxWaWV3Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1Njcm9sbGJhci5oPgogCkBAIC01NywxMSArNTksMTcgQEAgbmFtZXNwYWNl
IGF4ID0gV2ViQ29yZTo6QWNjZXNzaWJpbGl0eTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgYXV0byogbG9jYWxNYWluRnJhbWUgPSBkeW5hbWljRG93bmNh
c3Q8V2ViQ29yZTo6TG9jYWxGcmFtZT4ocGFnZS0+bWFpbkZyYW1lKCkpOwotICAgIGlmICghbG9j
YWxNYWluRnJhbWUgfHwgIWxvY2FsTWFpbkZyYW1lLT5kb2N1bWVudCgpKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICBpZiAoYXV0byogbG9jYWxNYWluRnJhbWUgPSBkeW5hbWljRG93bmNh
c3Q8V2ViQ29yZTo6TG9jYWxGcmFtZT4ocGFnZS0+bWFpbkZyYW1lKCkpKSB7CisgICAgICAgIGlm
IChhdXRvKiBkb2N1bWVudCA9IGxvY2FsTWFpbkZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICAg
ICAgcmV0dXJuIGRvY3VtZW50LT5heE9iamVjdENhY2hlKCk7CisgICAgfSBlbHNlIGlmIChhdXRv
KiByZW1vdGVNYWluRnJhbWUgPSBkeW5hbWljRG93bmNhc3Q8V2ViQ29yZTo6UmVtb3RlRnJhbWU+
KHBhZ2UtPm1haW5GcmFtZSgpKSkgeworICAgICAgICBhdXRvJiB0cmVlID0gcmVtb3RlTWFpbkZy
YW1lLT50cmVlKCk7CisgICAgICAgIGF1dG8qIGZpcnN0RnJhbWUgPSBkeW5hbWljRG93bmNhc3Q8
V2ViQ29yZTo6TG9jYWxGcmFtZT4odHJlZS5maXJzdENoaWxkKCkpOworICAgICAgICBhdXRvKiBk
b2N1bWVudCA9IGZpcnN0RnJhbWUgPyBmaXJzdEZyYW1lLT5kb2N1bWVudCgpIDogbnVsbHB0cjsK
KyAgICAgICAgcmV0dXJuIGRvY3VtZW50ID8gZG9jdW1lbnQtPmF4T2JqZWN0Q2FjaGUoKSA6IG51
bGxwdHI7CisgICAgfQogCi0gICAgcmV0dXJuIGxvY2FsTWFpbkZyYW1lLT5kb2N1bWVudCgpLT5h
eE9iamVjdENhY2hlKCk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIC0gKGlkKWFjY2Vzc2li
aWxpdHlQbHVnaW5PYmplY3QKQEAgLTE1Miw2ICsxNjAsMTcgQEAgbmFtZXNwYWNlIGF4ID0gV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eTsKICAgICBtX2hhc01haW5GcmFtZVBsdWdpbiA9IGhhc1BsdWdp
bjsKIH0KIAorLSAodm9pZClzZXRSZW1vdGVGcmFtZU9mZnNldDooV2ViQ29yZTo6SW50UG9pbnQp
b2Zmc2V0Cit7CisgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CisgICAgbV9yZW1vdGVGcmFt
ZU9mZnNldCA9IG9mZnNldDsKK30KKworLSAoV2ViQ29yZTo6SW50UG9pbnQpYWNjZXNzaWJpbGl0
eVJlbW90ZUZyYW1lT2Zmc2V0Cit7CisgICAgcmV0dXJuIG1fcmVtb3RlRnJhbWVPZmZzZXQ7Cit9
CisKIC0gKHZvaWQpc2V0UmVtb3RlUGFyZW50OihpZClwYXJlbnQKIHsKICAgICBBU1NFUlQoaXNN
YWluUnVuTG9vcCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggOTZlZDY0YWRiY2ZmLi41ZjliODgwYzgwYmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1t
CkBAIC0xMjMsMTYgKzEyMywxMiBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6ZUFj
Y2Vzc2liaWxpdHkoKQogICAgIC8vIEN1cnJlbnRseSwgaXQgaXMgYWxzbyBuZWVkZWQgdG8gYWxs
b2NhdGUgYW5kIGluaXRpYWxpemUgYW4gTlNBcHBsaWNhdGlvbiBvYmplY3QuCiAgICAgW05TQXBw
bGljYXRpb24gX2FjY2Vzc2liaWxpdHlJbml0aWFsaXplXTsKIAotICAgIGF1dG8gbW9ja0FjY2Vz
c2liaWxpdHlFbGVtZW50ID0gYWRvcHROUyhbW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3Qg
YWxsb2NdIGluaXRdKTsKLQogICAgIC8vIEdldCB0aGUgcGlkIGZvciB0aGUgc3RhcnRpbmcgcHJv
Y2Vzcy4KICAgICBwaWRfdCBwaWQgPSBXZWJDb3JlOjpwcmVzZW50aW5nQXBwbGljYXRpb25QSUQo
KTsKLSAgICBpZiAoW21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKGFjY2Vzc2liaWxpdHlTZXRQcmVzZW50ZXJQcm9jZXNzSWRlbnRpZmllcjopXSkK
LSAgICAgICAgWyhpZCltb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQuZ2V0KCkgYWNjZXNzaWJpbGl0
eVNldFByZXNlbnRlclByb2Nlc3NJZGVudGlmaWVyOnBpZF07Ci0gICAgW21vY2tBY2Nlc3NpYmls
aXR5RWxlbWVudCBzZXRXZWJQYWdlOnRoaXNdOwotICAgIG1fbW9ja0FjY2Vzc2liaWxpdHlFbGVt
ZW50ID0gV1RGTW92ZShtb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQpOwotCi0gICAgYWNjZXNzaWJp
bGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oYWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0YSgpKTsK
KyAgICBjcmVhdGVNb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQocGlkKTsKKyAgICBSZWZQdHIgbG9j
YWxNYWluRnJhbWUgPSBkeW5hbWljRG93bmNhc3Q8TG9jYWxGcmFtZT4obV9wYWdlLT5tYWluRnJh
bWUoKSk7CisgICAgaWYgKGxvY2FsTWFpbkZyYW1lKQorICAgICAgICBhY2Nlc3NpYmlsaXR5VHJh
bnNmZXJSZW1vdGVUb2tlbihhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCksIGxvY2FsTWFp
bkZyYW1lLT5mcmFtZUlEKCkpOwogCiAgICAgLy8gQ2xvc2UgTWFjaCBjb25uZWN0aW9uIHRvIExh
dW5jaCBTZXJ2aWNlcy4KICNpZiBIQVZFKExTX1NFUlZFUl9DT05ORUNUSU9OX1NUQVRVU19SRUxF
QVNFX05PVElGSUNBVElPTlNfTUFTSykKQEAgLTE0NCw5ICsxNDAsMjAgQEAgdm9pZCBXZWJQYWdl
OjpwbGF0Zm9ybUluaXRpYWxpemVBY2Nlc3NpYmlsaXR5KCkKICAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5yZXZva2VMYXVuY2hTZXJ2aWNlc1NhbmRib3hFeHRlbnNpb24oKTsKIH0KIAordm9p
ZCBXZWJQYWdlOjpjcmVhdGVNb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQocGlkX3QgcGlkKQorewor
ICAgIGF1dG8gbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50ID0gYWRvcHROUyhbW1dLQWNjZXNzaWJp
bGl0eVdlYlBhZ2VPYmplY3QgYWxsb2NdIGluaXRdKTsKKworICAgIGlmIChbbW9ja0FjY2Vzc2li
aWxpdHlFbGVtZW50IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYWNjZXNzaWJpbGl0eVNl
dFByZXNlbnRlclByb2Nlc3NJZGVudGlmaWVyOildKQorICAgICAgICBbKGlkKW1vY2tBY2Nlc3Np
YmlsaXR5RWxlbWVudC5nZXQoKSBhY2Nlc3NpYmlsaXR5U2V0UHJlc2VudGVyUHJvY2Vzc0lkZW50
aWZpZXI6cGlkXTsKKyAgICBbbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50IHNldFdlYlBhZ2U6dGhp
c107CisgICAgbV9tb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgPSBXVEZNb3ZlKG1vY2tBY2Nlc3Np
YmlsaXR5RWxlbWVudCk7Cit9CisKIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1SZWluaXRpYWxpemUo
KQogewotICAgIGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKGFjY2Vzc2liaWxpdHlS
ZW1vdGVUb2tlbkRhdGEoKSk7CisgICAgUmVmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xs
ZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1v
dGVUb2tlbihhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCksIGZyYW1lLT5mcmFtZUlEKCkp
OwogfQogCiBSZXRhaW5QdHI8TlNEYXRhPiBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5UmVtb3RlVG9r
ZW5EYXRhKCkgY29uc3QKQEAgLTQ2OSwxMiArNDc2LDI3IEBAIGJvb2wgV2ViUGFnZTo6cGVyZm9y
bU5vbkVkaXRpbmdCZWhhdmlvckZvclNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIEtl
eWJvCiAgICAgcmV0dXJuIGRpZFBlcmZvcm1BY3Rpb247CiB9CiAKK3ZvaWQgV2ViUGFnZTo6dXBk
YXRlUmVtb3RlUGFnZUFjY2Vzc2liaWxpdHlPZmZzZXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIFdlYkNvcmU6OkludFBvaW50IG9mZnNldCkKK3sKKyAgICBbYWNjZXNzaWJpbGl0
eVJlbW90ZU9iamVjdCgpIHNldFJlbW90ZUZyYW1lT2Zmc2V0Om9mZnNldF07Cit9CisKK3ZvaWQg
V2ViUGFnZTo6cmVnaXN0ZXJSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlUb2tlbnMocGlkX3QgcGlk
LCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZWxlbWVudFRva2VuKQoreworICAgIE5TRGF0YSAq
ZWxlbWVudFRva2VuRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczplbGVtZW50VG9rZW4uZGF0
YSgpIGxlbmd0aDplbGVtZW50VG9rZW4uc2l6ZSgpXTsKKyAgICBhdXRvIHJlbW90ZUVsZW1lbnQg
PSBlbGVtZW50VG9rZW5EYXRhLmxlbmd0aCA/IGFkb3B0TlMoW1tOU0FjY2Vzc2liaWxpdHlSZW1v
dGVVSUVsZW1lbnQgYWxsb2NdIGluaXRXaXRoUmVtb3RlVG9rZW46ZWxlbWVudFRva2VuRGF0YV0p
IDogbmlsOworCisgICAgY3JlYXRlTW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50KHBpZCk7CisgICAg
W2FjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSBzZXRSZW1vdGVQYXJlbnQ6cmVtb3RlRWxlbWVu
dC5nZXQoKV07Cit9CisKIHZvaWQgV2ViUGFnZTo6cmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmls
aXR5VG9rZW5zKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBlbGVtZW50VG9rZW4sIHN0ZDo6c3Bh
bjxjb25zdCB1aW50OF90PiB3aW5kb3dUb2tlbikKIHsKICAgICBOU0RhdGEgKmVsZW1lbnRUb2tl
bkRhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZWxlbWVudFRva2VuLmRhdGEoKSBsZW5ndGg6
ZWxlbWVudFRva2VuLnNpemUoKV07CiAgICAgTlNEYXRhICp3aW5kb3dUb2tlbkRhdGEgPSBbTlNE
YXRhIGRhdGFXaXRoQnl0ZXM6d2luZG93VG9rZW4uZGF0YSgpIGxlbmd0aDp3aW5kb3dUb2tlbi5z
aXplKCldOwogICAgIGF1dG8gcmVtb3RlRWxlbWVudCA9IGVsZW1lbnRUb2tlbkRhdGEubGVuZ3Ro
ID8gYWRvcHROUyhbW05TQWNjZXNzaWJpbGl0eVJlbW90ZVVJRWxlbWVudCBhbGxvY10gaW5pdFdp
dGhSZW1vdGVUb2tlbjplbGVtZW50VG9rZW5EYXRhXSkgOiBuaWw7CiAgICAgYXV0byByZW1vdGVX
aW5kb3cgPSB3aW5kb3dUb2tlbkRhdGEubGVuZ3RoID8gYWRvcHROUyhbW05TQWNjZXNzaWJpbGl0
eVJlbW90ZVVJRWxlbWVudCBhbGxvY10gaW5pdFdpdGhSZW1vdGVUb2tlbjp3aW5kb3dUb2tlbkRh
dGFdKSA6IG5pbDsKKwogICAgIFtyZW1vdGVFbGVtZW50IHNldFdpbmRvd1VJRWxlbWVudDpyZW1v
dGVXaW5kb3cuZ2V0KCldOwogICAgIFtyZW1vdGVFbGVtZW50IHNldFRvcExldmVsVUlFbGVtZW50
OnJlbW90ZVdpbmRvdy5nZXQoKV07CiAKQEAgLTUxNiw2ICs1MzgsMTEgQEAgV0tBY2Nlc3NpYmls
aXR5V2ViUGFnZU9iamVjdCogV2ViUGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpCiAg
ICAgcmV0dXJuIG1fbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50LmdldCgpOwogfQogCitXZWJDb3Jl
OjpJbnRQb2ludCBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKQorewor
ICAgIHJldHVybiBbbV9tb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgYWNjZXNzaWJpbGl0eVJlbW90
ZUZyYW1lT2Zmc2V0XTsKK30KKwogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RS
RUUpCiB2b2lkIFdlYlBhZ2U6OmNhY2hlQVhQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBv
aW50JiBwb2ludCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRl
eCA1YmM1NmY0MjdmNzguLmY4ODNhYTI2MjZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcApAQCAtMTU3MSw2ICsxNTcxLDEwIEBAIHZvaWQgV2ViUHJvY2Vzczo6dXBk
YXRlQ1BVTW9uaXRvclN0YXRlKENQVU1vbml0b3JVcGRhdGVSZWFzb24pCiB7CiB9CiAKK3ZvaWQg
V2ViUHJvY2Vzczo6YmluZEFjY2Vzc2liaWxpdHlGcmFtZVdpdGhEYXRhKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KQoreworfQorCiAjZW5kaWYKIAog
dm9pZCBXZWJQcm9jZXNzOjpwYWdlQWN0aXZpdHlTdGF0ZURpZENoYW5nZShQYWdlSWRlbnRpZmll
ciwgT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU+IGNoYW5nZWQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCBiMGQ5MDQ1YTgwODIuLjAxMjBlNDU1YmVlMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC02Niw2ICs2Niw5IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9TY3JlZW5Qcm9wZXJ0aWVzLmg+CiAjaW5jbHVkZSA8ZGlzcGF0Y2gv
ZGlzcGF0Y2guaD4KICNpbmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgorCitPQkpDX0NMQVNT
IE5TTXV0YWJsZURpY3Rpb25hcnk7CisKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQpAQCAt
ODgsNiArOTEsNyBAQAogI2luY2x1ZGUgIldlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5oIgogI2Vu
ZGlmCiAKKwogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBPYmplY3Q7CiB9CkBAIC01MTUsNiArNTE5
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtU2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVs
KTsKIAogICAgIHZvaWQgc2V0RW5oYW5jZWRBY2Nlc3NpYmlsaXR5KGJvb2wpOworICAgIHZvaWQg
YmluZEFjY2Vzc2liaWxpdHlGcmFtZVdpdGhEYXRhKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
c3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKIAogICAgIHZvaWQgc3RhcnRNZW1vcnlTYW1wbGVy
KFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBkb3VibGUp
OwogICAgIHZvaWQgc3RvcE1lbW9yeVNhbXBsZXIoKTsKQEAgLTgzMSw2ICs4MzYsNyBAQCBwcml2
YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIEhhc2hDb3VudGVkU2V0PFN0cmluZz4gbV9w
ZW5kaW5nUGFzdGVib2FyZFdyaXRlQ291bnRzOwogICAgIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9r
ZW5fdD4gbV9hdWRpdFRva2VuRm9yU2VsZjsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlv
bmFyeT4gbV9hY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVUb2tlbkNhY2hlOwogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDk5YjQwMmFmMTFjYS4uZDc3NWZlN2QzOGQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAt
NjksNiArNjksNyBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIE5vdFJl
ZkNvdW50ZWQgewogICAgIFNldFRleHRDaGVja2VyU3RhdGUoc3RydWN0IFdlYktpdDo6VGV4dENo
ZWNrZXJTdGF0ZSB0ZXh0Q2hlY2tlclN0YXRlKQogCiAgICAgU2V0RW5oYW5jZWRBY2Nlc3NpYmls
aXR5KGJvb2wgZmxhZykKKyAgICBCaW5kQWNjZXNzaWJpbGl0eUZyYW1lV2l0aERhdGEoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRh
KTsKIAogICAgIEdhcmJhZ2VDb2xsZWN0SmF2YVNjcmlwdE9iamVjdHMoKQogICAgIFNldEphdmFT
Y3JpcHRHYXJiYWdlQ29sbGVjdG9yVGltZXJFbmFibGVkKGJvb2wgZW5hYmxlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggYWQ5
MWMzMjlkMzYyLi41ODczYjgxNDJiNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAtMjE2LDYgKzIxNiwxNiBAQCB2b2lkIFdl
YlByb2Nlc3M6OnBsYXRmb3JtU2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVsKQogewogfQogCit2b2lk
IFdlYlByb2Nlc3M6OmJpbmRBY2Nlc3NpYmlsaXR5RnJhbWVXaXRoRGF0YShXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCit7Cisg
ICAgaWYgKCFtX2FjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZVRva2VuQ2FjaGUpCisgICAgICAgIG1f
YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lVG9rZW5DYWNoZSA9IGFkb3B0TlMoW1tOU011dGFibGVE
aWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisKKyAgICBhdXRvIGZyYW1lSW50ID0gZnJhbWVJRC5v
YmplY3QoKS50b1VJbnQ2NCgpOworICAgIE5TRGF0YSAqbnNEYXRhID0gW05TRGF0YSBkYXRhV2l0
aEJ5dGVzOmRhdGEuZGF0YSgpIGxlbmd0aDpkYXRhLnNpemUoKV07CisgICAgW21fYWNjZXNzaWJp
bGl0eVJlbW90ZUZyYW1lVG9rZW5DYWNoZSBzZXRPYmplY3Q6bnNEYXRhIGZvcktleTpAKGZyYW1l
SW50KV07Cit9CisKIGlkIFdlYlByb2Nlc3M6OmFjY2Vzc2liaWxpdHlGb2N1c2VkVUlFbGVtZW50
KCkKIHsKICAgICBhdXRvIHJldHJpZXZlRm9jdXNlZFVJRWxlbWVudEZyb21NYWluVGhyZWFkID0g
W10gKCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMjFlMjFmMDhiZDY0Li5iNGNm
MjgyYzE4Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMjI1LDYgKzIyNSw3IEBA
IHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFJlbW90ZUFYT2JqZWN0UmVmIGFjY2Vzc2liaWxpdHlS
ZW1vdGVPYmplY3QoKSBmaW5hbCB7IHJldHVybiAwOyB9CisgICAgV2ViQ29yZTo6SW50UG9pbnQg
YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCkgZmluYWwgeyByZXR1cm4geyB9OyB9CiAj
aWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKICAgICB2b2lkIHNldEFYSXNv
bGF0ZWRUcmVlUm9vdChXZWJDb3JlOjpBWENvcmVPYmplY3QqKSBmaW5hbCB7IH0KICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>469948</attachid>
            <date>2024-02-17 12:13:28 -0800</date>
            <delta_ts>2024-02-18 13:21:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-268804-20240217121326.patch</filename>
            <type>text/plain</type>
            <size>119541</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">RnJvbSBhN2M3NjUwZDMwYzk1N2RhNmE0MGMwOGUyNTkwNjc2N2RmZDE0OTNiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpcyBGbGVpemFjaCA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4K
RGF0ZTogVGh1LCAxNSBGZWIgMjAyNCAxMjo0MDozOCAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIEFY
OiBTdXBwb3J0IHNpdGUgaXNvbGF0aW9uIGZvciBWb2ljZU92ZXIKIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjg4MDQgcmRhcjovLzk5NjY1NTYxCgpSZXZpZXdlZCBi
eSBBbmRyZXMgR29uemFsZXosIFR5bGVyIFdpbGNvY2suCgpJbml0aWFsIHN1cHBvcnQgZm9yIHNp
dGUgaXNvbGF0aW9uIGZvciBWb2ljZU92ZXIuCgpXaGVuIGEgc2Nyb2xsIHZpZXcgaG9zdHMgYSBS
ZW1vdGVGcmFtZSBpdCBiaW5kcyBpdHNlbGYgdG8gdGhlIG90aGVyIHNpZGUgdGhyb3VnaCBhIFdl
YlBhZ2UgbWVzc2FnZS4KVGhpcyB0cmFuc2ZlcnMgZGF0YSB0b2tlbnMgc28gQWNjZXNzaWJpbGl0
eSByZW1vdGUgZWxlbWVudHMgYXJlIGNyZWF0ZWQgYW5kIGhvb2tlZCB1cC4KClRoZSBib3VuZGlu
ZyBib3hlcyBpbnNpZGUgdGhlIHN1YiBmcmFtZXMgbmVlZCB0byBoYXZlIHRoZSBpbml0aWFsIG9m
ZnNldCBhcHBsaWVkIGFuZCB0aGVuIG5lZWQgdG8gYmUgY29udmVydGVkCmVhY2ggc3RlcCB1cCB0
aGUgY2hhaW4gdG8gYWNjb3VudCBmb3Igc2Nyb2xsIG9mZnNldHMgdGhhdCBvbmx5IGVhY2ggcHJv
Y2VzcyBrbm93cyBhYm91dC4KCiogU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQ6CiogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgoqIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhDb3JlT2JqZWN0Lmg6CihXZWJDb3JlOjphY2Nlc3NpYmlsaXR5
Um9sZVRvU3RyaW5nKToKKFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6aXNSZW1vdGVGcmFtZSBjb25z
dCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWExvZ2dlci5jcHA6CihXZWJDb3Jl
OjpzdHJlYW1BWENvcmVPYmplY3QpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhP
YmplY3RDYWNoZS5jcHA6CihXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpjcmVhdGUpOgooV2ViQ29y
ZTo6QVhPYmplY3RDYWNoZTo6b25SZW1vdGVGcmFtZUluaXRpYWxpemVkKToKKiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6cmVsYXRpdmVGcmFtZSBjb25zdCk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpyZW1vdGVGcmFtZU9mZnNldCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWUuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1JlbW90ZUZyYW1lQ2xpZW50LmguCihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVtb3Rl
RnJhbWU6OmNyZWF0ZSk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWU6OkFjY2Vz
c2liaWxpdHlSZW1vdGVGcmFtZSk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWU6
OmVsZW1lbnRSZWN0IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW1vdGVGcmFtZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wYWdlL1Jl
bW90ZUZyYW1lQ2xpZW50LmguCiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmFkZEF0dGFjaG1lbnRDaGlsZHJlbik6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjphZGRDaGlsZHJlbik6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5U2Nyb2xsVmlldy5jcHA6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dzo6ZGV0YWNoUmVtb3RlUGFydHMpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6
OmNsZWFyQ2hpbGRyZW4pOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmFkZFJl
bW90ZUZyYW1lQ2hpbGQpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmFkZENo
aWxkcmVuKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojp3ZWJBcmVhT2JqZWN0
IGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojpkb2N1bWVudCBjb25z
dCk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6cGFyZW50T2JqZWN0IGNvbnN0
KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
Lmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZE9iamVjdC5jcHA6CihXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplUHJvcGVy
dGllcyk6CihXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpzZXRQcm9wZXJ0eSk6CihXZWJDb3Jl
OjpBWElzb2xhdGVkT2JqZWN0OjpyZW1vdGVGcmFtZU9mZnNldCBjb25zdCk6CihXZWJDb3JlOjpB
WElzb2xhdGVkT2JqZWN0OjpyZWxhdGl2ZUZyYW1lIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0Lmg6CiogU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwOgooV2Vi
Q29yZTo6QVhJc29sYXRlZFRyZWU6OnVwZGF0ZU5vZGVQcm9wZXJ0aWVzKToKKiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oOgoqIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL21hYy9BWElzb2xhdGVkT2JqZWN0
TWFjLm1tOgooV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZVBsYXRmb3JtUHJv
cGVydGllcyk6CihXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpyZW1vdGVGcmFtZVBsYXRmb3Jt
RWxlbWVudCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNz
aWJpbGl0eU9iamVjdE1hYy5tbToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZTo6
Z2VuZXJhdGVSZW1vdGVUb2tlbiBjb25zdCk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVtb3Rl
RnJhbWU6OmluaXRpYWxpemVQbGF0Zm9ybUVsZW1lbnRXaXRoUmVtb3RlVG9rZW4pOgooV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eTo6Y3JlYXRlUGxhdGZvcm1Sb2xlTWFwKToKKiBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW06
CihtYWtlTlNBcnJheSk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyIHJvbGVdKToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgaXNFbXB0eUdy
b3VwXSk6CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHJvbGVEZXNjcmlwdGlvbl0p
OgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBfdHJhbnNmb3JtU3BlY2lhbENoaWxk
cmVuQ2FzZXM6XSk6CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpdKToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNj
ZXNzaWJpbGl0eUhpdFRlc3Q6XSk6CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIEFM
TE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORF0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6Zm9yUGFyYW1ldGVyOl0p
OgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5SW5kZXhPZkNo
aWxkOl0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXJy
YXlBdHRyaWJ1dGVDb3VudDpdKToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNj
ZXNzaWJpbGl0eUFycmF5QXR0cmlidXRlVmFsdWVzOmluZGV4Om1heENvdW50Ol0pOgoqIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwOgooV2ViQ29yZTo6RW1wdHlGcmFtZUxv
YWRlckNsaWVudDo6YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KToKKiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oOgoqIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9Mb2NhbEZyYW1lTG9hZGVyQ2xpZW50Lmg6CiogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcDoKKFdlYkNvcmU6OlBhZ2U6OnNob3VsZFVwZGF0ZUFjY2Vzc2liaWxpdHlSZWdpb25zIGNv
bnN0KToKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmNwcDoKKFdlYkNvcmU6OlJl
bW90ZUZyYW1lOjp1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQpOgooV2ViQ29y
ZTo6UmVtb3RlRnJhbWU6OnVuYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMpOgooV2ViQ29y
ZTo6UmVtb3RlRnJhbWU6OmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKToKKiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmg6CiogU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVG
cmFtZUNsaWVudC5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHA6CihXZWJLaXQ6
OlByb3Zpc2lvbmFsUGFnZVByb3h5OjpyZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9r
ZW4pOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5Lmg6Ciog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHA6CihXZWJLaXQ6OldlYkZy
YW1lUHJveHk6OmJpbmRBY2Nlc3NpYmlsaXR5RnJhbWVXaXRoRGF0YSk6CiogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6CihXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3dhcFRvUHJvdmlzaW9uYWxQ
YWdlKToKKFdlYktpdDo6V2ViUGFnZVByb3h5OjpiaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1l
cyk6CihXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5
T2Zmc2V0KToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CiogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CiogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgooV2ViS2l0OjpQYWdlQ2xpZW50SW1w
bDo6YWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKToKKiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgooV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbik6CiogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmg6CiogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tOgooV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6YWNj
ZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgooV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlZ2lz
dGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbik6CiogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYlZpZXdJbXBsLmg6CiogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlZp
ZXdJbXBsLm1tOgooV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0QWNjZXNzaWJpbGl0eVdlYlByb2Nl
c3NUb2tlbik6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkxv
Y2FsRnJhbWVMb2FkZXJDbGllbnQuY3BwOgooV2ViS2l0OjpXZWJMb2NhbEZyYW1lTG9hZGVyQ2xp
ZW50OjphY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQpOgoqIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50Lmg6CiogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90ZUZyYW1lQ2xpZW50
LmNwcDoKKFdlYktpdDo6V2ViUmVtb3RlRnJhbWVDbGllbnQ6OnVuYmluZFJlbW90ZUFjY2Vzc2li
aWxpdHlGcmFtZXMpOgooV2ViS2l0OjpXZWJSZW1vdGVGcmFtZUNsaWVudDo6dXBkYXRlUmVtb3Rl
RnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KToKKFdlYktpdDo6V2ViUmVtb3RlRnJhbWVDbGllbnQ6
OmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKToKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuaDoKKiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW06CihXZWJLaXQ6OldlYlBh
Z2U6OmFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKToKKFdlYktpdDo6V2ViUGFnZTo6
YWNjZXNzaWJpbGl0eU1hbmFnZVJlbW90ZUVsZW1lbnRTdGF0dXMpOgooV2ViS2l0OjpXZWJQYWdl
OjpiaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyk6CiogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW46CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW06CihXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6ZUFj
Y2Vzc2liaWxpdHkpOgooV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybVJlaW5pdGlhbGl6ZSk6CihX
ZWJLaXQ6OldlYlBhZ2U6OmFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCk6CiogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmpl
Y3RCYXNlLmg6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNz
aWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tOgooLVtXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2Jq
ZWN0QmFzZSBheE9iamVjdENhY2hlXSk6CigtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RC
YXNlIHNldFJlbW90ZUZyYW1lT2Zmc2V0Ol0pOgooLVtXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2Jq
ZWN0QmFzZSBhY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXRdKToKKiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKFdlYktpdDo6V2ViUGFnZTo6
cGxhdGZvcm1Jbml0aWFsaXplQWNjZXNzaWJpbGl0eSk6CihXZWJLaXQ6OldlYlBhZ2U6OmNyZWF0
ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCk6CihXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtUmVp
bml0aWFsaXplKToKKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlUmVtb3RlUGFnZUFjY2Vzc2liaWxp
dHlPZmZzZXQpOgooV2ViS2l0OjpXZWJQYWdlOjpyZWdpc3RlclJlbW90ZUZyYW1lQWNjZXNzaWJp
bGl0eVRva2Vucyk6CihXZWJLaXQ6OldlYlBhZ2U6OnJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJp
bGl0eVRva2Vucyk6CihXZWJLaXQ6OldlYlBhZ2U6OmFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9m
ZnNldCk6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgooV2ViS2l0OjpXZWJQcm9jZXNz
OjpiaW5kQWNjZXNzaWJpbGl0eUZyYW1lV2l0aERhdGEpOgoqIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6Ci0tLQogU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIC4uLi9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiB8ICAgNCArCiBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYQ29yZU9iamVjdC5oICAgfCAgMTIgKysKIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhMb2dnZXIuY3BwICAgICB8ICAgMyArCiAuLi4vV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwICAgfCAgMTUgKy0KIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oICB8ICAgMiArCiAuLi4vV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYUmVtb3RlRnJhbWUuY3BwICAgfCAgNDIgKysrKysKIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhSZW1vdGVGcmFtZS5oICB8ICA2MSArKysrKysrKwogLi4uL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgICAgIHwgIDIzICsrLQogLi4uL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oICAgICAgIHwgICA1ICsKIC4uLi9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcCAgICAgICAgICAgICB8ICAgNCArLQogLi4uL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwIHwgIDYyICsrKysrKystCiAuLi4vYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oICAgfCAgIDYgKy0KIC4uLi9hdHNwaS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuY3BwICAgICAgICB8ICAgMSArCiAuLi4vaW9zL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tICAgfCAgIDEgKwogLi4uL2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkT2JqZWN0LmNwcCAgICAgICAgIHwgIDM0ICsrKystCiAuLi4vaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRPYmplY3QuaCAgICAgICAgICAgfCAgIDggKy0KIC4uLi9pc29sYXRlZHRy
ZWUvQVhJc29sYXRlZFRyZWUuY3BwICAgICAgICAgICB8ICA2MSArKystLS0tLQogLi4uL2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oICAgICAgICAgICAgIHwgIDI5ICsrKysKIC4uLi9pc29s
YXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMubW0gICB8ICAgNyArCiAuLi4vbWFjL0Fj
Y2Vzc2liaWxpdHlPYmplY3RNYWMubW0gICAgICAgICAgICAgfCAgMjYgKysrKwogLi4uL21hYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0gIHwgICA5ICstCiAuLi4vbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tICAgfCAxNDMgKysrKysrKysrKysrLS0t
LS0tCiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCAgICAgICAgfCAgIDUg
KwogLi4uL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaCAgIHwgICAxICsK
IC4uLi9XZWJDb3JlL2xvYWRlci9Mb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmggICB8ICAgMSArCiBT
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwICAgICAgICAgICAgICAgICAgfCAgMTUgKy0KIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuY3BwICAgICAgICAgICB8ICAxNSArKwogU291
cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5oICAgICAgICAgICAgIHwgICA0ICsKIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVDbGllbnQuaCAgICAgICB8ICAgNCArCiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggICAgICAgICAgfCAgIDMgKy0KIC4uLi9XZWJL
aXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCB8ICAgMiArLQogLi4uL1dlYktp
dC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaCAgIHwgICAyICstCiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcCAgICAgfCAgIDkgKysKIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaCAgICAgICB8ICAgMiArCiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwICAgICAgfCAgMjQgKystCiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCAgICAgICAgfCAgIDQgKy0KIC4uLi9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiB8ICAgNCArLQogLi4uL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggIHwgICAyICstCiAuLi4vV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gfCAgIDIgKy0KIC4uLi9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gICB8ICAgNyArLQogLi4uL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmggIHwgICAyICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0gfCAgIDQgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XZWJQYWdlUHJveHlNYWMubW0gICB8ICAgNCArLQogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYlZpZXdJbXBsLmggICAgIHwgICAzICstCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV2ViVmlld0ltcGwubW0gICAgfCAgIDggKy0KIC4uLi9XZWJMb2NhbEZyYW1lTG9hZGVy
Q2xpZW50LmNwcCAgICAgICAgICAgICB8ICAgNiArCiAuLi4vV2ViTG9jYWxGcmFtZUxvYWRlckNs
aWVudC5oICAgICAgICAgICAgICAgfCAgIDEgKwogLi4uL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90
ZUZyYW1lQ2xpZW50LmNwcCAgIHwgIDQwICsrKysrCiAuLi4vV2ViQ29yZVN1cHBvcnQvV2ViUmVt
b3RlRnJhbWVDbGllbnQuaCAgICAgfCAgIDQgKwogLi4uL1dlYlByb2Nlc3MvV2ViUGFnZS9Db2Nv
YS9XZWJQYWdlQ29jb2EubW0gIHwgIDQ2ICsrKysrLQogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAgIHwgIDEwICsrCiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmggICAgfCAgMTEgKy0KIC4uLi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbiAgICB8ICAgMyArCiAuLi4vV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tICAgICAgfCAgMjMgKystCiAuLi4vbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBh
Z2VPYmplY3RCYXNlLmggICAgfCAgIDQgKwogLi4uL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdl
T2JqZWN0QmFzZS5tbSAgIHwgIDI3ICsrKy0KIC4uLi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dl
YlBhZ2VNYWMubW0gICAgICB8ICA0NSArKysrLS0KIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcCAgICAgICB8ICAgNCArCiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oICAgICAgICAgfCAgIDYgKwogLi4uL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4gIHwgICAxICsKIC4uLi9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3ND
b2NvYS5tbSAgICAgICB8ICAxMCArKwogLi4uL21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oIHwgICAxICsKIDYzIGZpbGVzIGNoYW5nZWQsIDc3NCBpbnNlcnRpb25zKCsp
LCAxNTQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWFJlbW90ZUZyYW1lLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhSZW1vdGVGcmFtZS5oCgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBm
NWYyYTU1MGRhMzQuLmZjNjBiOTdjNzA2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTUyOCw2ICs1Mjgs
NyBAQCBhY2Nlc3NpYmlsaXR5L0FYR2VvbWV0cnlNYW5hZ2VyLmNwcAogYWNjZXNzaWJpbGl0eS9B
WEltYWdlLmNwcAogYWNjZXNzaWJpbGl0eS9BWExvZ2dlci5jcHAKIGFjY2Vzc2liaWxpdHkvQVhP
YmplY3RDYWNoZS5jcHAKK2FjY2Vzc2liaWxpdHkvQVhSZW1vdGVGcmFtZS5jcHAKIGFjY2Vzc2li
aWxpdHkvQVhUZXh0TWFya2VyLmNwcAogYWNjZXNzaWJpbGl0eS9BWFRleHRSdW4uY3BwCiBhY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkYWY3N2E3MjM4YzkuLmM4
MTc4MjMyNDFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtODk2Niw2ICs4OTY2LDggQEAKIAkJMjk0ODlGQzUxMkMwMEYwMzAw
RDgzRjBGIC8qIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTI5NDk4NjgxMTk1MzQxOTQwMDcyRDJCRCAvKiBUZXh0VW5kb0luc2VydGlv
bk1hcmt1cE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRl
eHRVbmRvSW5zZXJ0aW9uTWFya3VwTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyOTRCREFFNjIxRkY1ODJBMDA1MTA3N0IgLyogQWNjZXNzaWJpbGl0eU9iamVjdENvY29hLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eU9i
amVjdENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOTU1Q0YxMTJCMjMw
QUU2MDAwMUJGODIgLyogQVhSZW1vdGVGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBWFJlbW90ZUZy
YW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5NTVDRjEyMkIyMzBBRTYwMDAx
QkY4MiAvKiBBWFJlbW90ZUZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFYUmVtb3RlRnJh
bWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTdCRTNEOTE2QzA0M0Q4MDAz
MzE2QkQgLyogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk4MUFCQzQxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vz
c2liaWxpdHlNYXRoTUxFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxp
dHlNYXRoTUxFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk4MUNB
OUQxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjM0NTksNiArMjM0NjEsOCBAQAogCQkJCUMwNDkzRUI3MjQ0Njk5RTQwMDlB
QUM4MCAvKiBBWExvZ2dlci5oICovLAogCQkJCTI5ODFDQUFGMTMxODIyRUMwMEQxMkYyQSAvKiBB
WE9iamVjdENhY2hlLmNwcCAqLywKIAkJCQkyOUE4MTIxQTBGQkI5QzFEMDA1MTAyOTMgLyogQVhP
YmplY3RDYWNoZS5oICovLAorCQkJCTI5NTVDRjEyMkIyMzBBRTYwMDAxQkY4MiAvKiBBWFJlbW90
ZUZyYW1lLmNwcCAqLywKKwkJCQkyOTU1Q0YxMTJCMjMwQUU2MDAwMUJGODIgLyogQVhSZW1vdGVG
cmFtZS5oICovLAogCQkJCUMwRTIwOEExMjkzNzlDNkYwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXIu
Y3BwICovLAogCQkJCUMwRTIwOEEwMjkzNzlDNkUwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXIuaCAq
LywKIAkJCQk0OEM0RTgzQzJCMzREODM4MDA4MzQ2MEEgLyogQVhUZXh0UnVuLmNwcCAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhDb3JlT2JqZWN0LmggYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYQ29yZU9iamVjdC5oCmluZGV4IDQ0MTA4NGVj
YjgwNS4uM2ZiYzdmOGRiMjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYQ29yZU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhD
b3JlT2JqZWN0LmgKQEAgLTIwNSw2ICsyMDUsNyBAQCBlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlS
b2xlIHsKICAgICBQcm9ncmVzc0luZGljYXRvciwKICAgICBSYWRpb0J1dHRvbiwKICAgICBSYWRp
b0dyb3VwLAorICAgIFJlbW90ZUZyYW1lLAogICAgIFJvd0hlYWRlciwKICAgICBSb3csCiAgICAg
Um93R3JvdXAsCkBAIC00NDIsNiArNDQzLDggQEAgQUxXQVlTX0lOTElORSBTdHJpbmcgYWNjZXNz
aWJpbGl0eVJvbGVUb1N0cmluZyhBY2Nlc3NpYmlsaXR5Um9sZSByb2xlKQogICAgICAgICByZXR1
cm4gIlJhZGlvQnV0dG9uIl9zOwogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvR3Jv
dXA6CiAgICAgICAgIHJldHVybiAiUmFkaW9Hcm91cCJfczsKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpSZW1vdGVGcmFtZToKKyAgICAgICAgcmV0dXJuICJSZW1vdGVGcmFtZSJfczsKICAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSb3dIZWFkZXI6CiAgICAgICAgIHJldHVybiAiUm93
SGVhZGVyIl9zOwogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJvdzoKQEAgLTgxNSw2ICs4
MTgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eUFSSUFHcmlk
Um93SW5zdGFuY2UoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0
eUFSSUFHcmlkQ2VsbEluc3RhbmNlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0FY
SXNvbGF0ZWRPYmplY3RJbnN0YW5jZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNB
WFJlbW90ZUZyYW1lKCkgY29uc3QgPSAwOwogCiAgICAgYm9vbCBpc0hlYWRpbmcoKSBjb25zdCB7
IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6SGVhZGluZzsgfQogICAg
IHZpcnR1YWwgYm9vbCBpc0xpbmsoKSBjb25zdCA9IDA7CkBAIC05MTksNiArOTIzLDEyIEBAIHB1
YmxpYzoKICAgICBib29sIGlzVHJlZUdyaWQoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUdyaWQ7IH0KICAgICBib29sIGlzVHJlZUl0ZW0oKSBj
b25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUl0ZW07
IH0KICAgICBib29sIGlzU2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0g
QWNjZXNzaWJpbGl0eVJvbGU6OlNjcm9sbEJhcjsgfQorICAgIGJvb2wgaXNSZW1vdGVGcmFtZSgp
IGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpSZW1vdGVG
cmFtZTsgfQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZpcnR1YWwgUmV0YWluUHRyPGlkPiBy
ZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpIGNvbnN0ID0gMDsKKyNlbmRpZgorICAgIHZpcnR1
YWwgYm9vbCBoYXNSZW1vdGVGcmFtZUNoaWxkKCkgY29uc3QgPSAwOworCiAgICAgYm9vbCBpc0J1
dHRvbigpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc01ldGVyKCkgY29uc3QgPSAwOwogCkBA
IC0xMTU5LDYgKzExNjksOCBAQCBwdWJsaWM6CiAgICAgLy8gVmlld3BvcnQtcmVsYXRpdmUgbWVh
bnMgdGhhdCB3aGVuIHRoZSBwYWdlIHNjcm9sbHMsIHRoZSBwb3J0aW9uIG9mIHRoZSBwYWdlIGlu
IHRoZSB2aWV3cG9ydCBjaGFuZ2VzLCBhbmQgdGh1cwogICAgIC8vIGFueSB2aWV3cG9ydC1yZWxh
dGl2ZSByZWN0cyBkbyB0b28gKHNpbmNlIHRoZXkgYXJlIGVpdGhlciBjbG9zZXIgdG8gb3IgZmFy
dGhlciBmcm9tIHRoZSB2aWV3cG9ydCBvcmlnaW4gYWZ0ZXIgdGhlIHNjcm9sbCkuCiAgICAgdmly
dHVhbCBGbG9hdFBvaW50IHNjcmVlblJlbGF0aXZlUG9zaXRpb24oKSBjb25zdCA9IDA7CisgICAg
Ly8gVGhpcyBpcyB0aGUgYW1vdW50IHRoYXQgdGhlIFJlbW90ZUZyYW1lIGlzIG9mZnNldCBmcm9t
IGl0cyBjb250YWluaW5nIHBhcmVudC4KKyAgICB2aXJ0dWFsIEludFBvaW50IHJlbW90ZUZyYW1l
T2Zmc2V0KCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBGbG9hdFJlY3QgY29udmVydEZyYW1l
VG9TcGFjZShjb25zdCBGbG9hdFJlY3QmLCBBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlKSBj
b25zdCA9IDA7CiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhMb2dnZXIuY3BwCmluZGV4IGI2ZTMwNmNkZGVjZi4uN2IzNWM4ZjlkMTAxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcApAQCAtODgzLDYgKzg4Myw5IEBA
IHZvaWQgc3RyZWFtQVhDb3JlT2JqZWN0KFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgQVhDb3Jl
T2JqZWN0JiBvYmplY3QsIGNvbnN0IE9wCiAgICAgaWYgKG9wdGlvbnMgJiBBWFN0cmVhbU9wdGlv
bnM6OlJvbGUpCiAgICAgICAgIHN0cmVhbS5kdW1wUHJvcGVydHkoInJvbGUiLCBvYmplY3Qucm9s
ZVZhbHVlKCkpOwogCisgICAgaWYgKG9iamVjdC5yZW5kZXJlcigpKQorICAgICAgICBzdHJlYW0u
ZHVtcFByb3BlcnR5KCJyZW5kZXJOYW1lIiwgb2JqZWN0LnJlbmRlcmVyKCktPnJlbmRlck5hbWUo
KSk7CisKICAgICBpZiAob3B0aW9ucyAmIEFYU3RyZWFtT3B0aW9uczo6UGFyZW50SUQpIHsKICAg
ICAgICAgYXV0byogcGFyZW50ID0gb2JqZWN0LnBhcmVudE9iamVjdFVuaWdub3JlZCgpOwogICAg
ICAgICBzdHJlYW0uZHVtcFByb3BlcnR5KCJwYXJlbnRJRCIsIHBhcmVudCA/IHBhcmVudC0+b2Jq
ZWN0SUQoKSA6IEFYSUQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmNwcAppbmRleCA1ZTQ4MTgzNGY2NDYuLjNlYmIyY2IyOGM5NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW5jbHVkZSAiQVhJc29sYXRlZE9iamVjdC5oIgogI2luY2x1ZGUgIkFYSXNvbGF0
ZWRUcmVlLmgiCiAjaW5jbHVkZSAiQVhMb2dnZXIuaCIKKyNpbmNsdWRlICJBWFJlbW90ZUZyYW1l
LmgiCiAjaW5jbHVkZSAiQVhUZXh0TWFya2VyLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUFS
SUFHcmlkLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oIgpAQCAtMTA1
NSw3ICsxMDU2LDEwIEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmNyZWF0
ZShBY2Nlc3NpYmlsaXR5Um9sZSByb2xlKQogICAgICAgICBicmVhazsgICAgICAgICAgICAKICAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJsZUhlYWRlckNvbnRhaW5lcjoKICAgICAgICAg
b2JqID0gQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyOjpjcmVhdGUoKTsKLSAgICAg
ICAgYnJlYWs7ICAgCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OlJlbW90ZUZyYW1lOgorICAgICAgICBvYmogPSBBWFJlbW90ZUZyYW1lOjpjcmVhdGUoKTsKKyAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyVGh1bWI6CiAg
ICAgICAgIG9iaiA9IEFjY2Vzc2liaWxpdHlTbGlkZXJUaHVtYjo6Y3JlYXRlKCk7CiAgICAgICAg
IGJyZWFrOwpAQCAtMTM1MSw2ICsxMzU1LDE1IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxl
UmVjb21wdXRlQ2VsbFNsb3RzKEFjY2Vzc2liaWxpdHlUYWJsZSYgYXhUYWJsZSkKICNlbmRpZgog
fQogCit2b2lkIEFYT2JqZWN0Q2FjaGU6Om9uUmVtb3RlRnJhbWVJbml0aWFsaXplZChBWFJlbW90
ZUZyYW1lJiByZW1vdGVGcmFtZSkKK3sKKyNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRF
RF9UUkVFKQorICAgIHVwZGF0ZUlzb2xhdGVkVHJlZShyZW1vdGVGcmFtZSwgQVhQcm9wZXJ0eU5h
bWU6OlJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFN
KHJlbW90ZUZyYW1lKTsKKyNlbmRpZgorfQorCiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNP
TEFURURfVFJFRSkKIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlUm93c3BhbkNoYW5nZWQoQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbCYgYXhDZWxsKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA2NWUwMTZlYzJmMmIuLmJlYjk4NThhMGJmMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTQ3
LDYgKzQ3LDcgQEAgY2xhc3MgVGV4dFN0cmVhbTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitj
bGFzcyBBWFJlbW90ZUZyYW1lOwogY2xhc3MgQWNjZXNzaWJpbGl0eVRhYmxlOwogY2xhc3MgQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbDsKIGNsYXNzIERvY3VtZW50OwpAQCAtMjQ2LDYgKzI0Nyw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRlZmVyTm9kZUFkZGVkT3JSZW1vdmVkKE5vZGUqKTsKICAgICB2
b2lkIGhhbmRsZVNjcm9sbGVkVG9BbmNob3IoY29uc3QgTm9kZSogYW5jaG9yTm9kZSk7CiAgICAg
dm9pZCBvblNjcm9sbGJhclVwZGF0ZShTY3JvbGxWaWV3Kik7CisgICAgdm9pZCBvblJlbW90ZUZy
YW1lSW5pdGlhbGl6ZWQoQVhSZW1vdGVGcmFtZSYpOwogCiAgICAgYm9vbCBpc1JldHJpZXZpbmdD
dXJyZW50TW9kYWxOb2RlKCkgeyByZXR1cm4gbV9pc1JldHJpZXZpbmdDdXJyZW50TW9kYWxOb2Rl
OyB9CiAgICAgTm9kZSogbW9kYWxOb2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYUmVtb3RlRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWFJlbW90ZUZyYW1lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLmNmYmRlZGQ5ODFjYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhSZW1vdGVGcmFtZS5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBWFJlbW90ZUZyYW1lLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPEFYUmVtb3RlRnJhbWU+IEFYUmVtb3RlRnJhbWU6OmNy
ZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQVhSZW1vdGVGcmFtZSk7Cit9CisK
K0xheW91dFJlY3QgQVhSZW1vdGVGcmFtZTo6ZWxlbWVudFJlY3QoKSBjb25zdAoreworICAgIGF1
dG8qIHBhcmVudCA9IHBhcmVudE9iamVjdCgpOworICAgIHJldHVybiBwYXJlbnQgPyBwYXJlbnQt
PmVsZW1lbnRSZWN0KCkgOiBMYXlvdXRSZWN0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhSZW1vdGVGcmFt
ZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFJlbW90ZUZyYW1lLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45NGQyZGYwMzA0ZDIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYUmVtb3RlRnJhbWUuaApA
QCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDI0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJB
Y2Nlc3NpYmlsaXR5TW9ja09iamVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IFJlbW90ZUZyYW1lOworCitjbGFzcyBBWFJlbW90ZUZyYW1lIGZpbmFsIDogcHVibGljIEFjY2Vz
c2liaWxpdHlNb2NrT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEFYUmVtb3RlRnJh
bWU+IGNyZWF0ZSgpOworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBpbml0aWFsaXpl
UGxhdGZvcm1FbGVtZW50V2l0aFJlbW90ZVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Piwg
aW50KTsKKyAgICBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZ2VuZXJhdGVSZW1vdGVUb2tlbigp
IGNvbnN0OworICAgIFJldGFpblB0cjxpZD4gcmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKSBj
b25zdCB7IHJldHVybiBtX3JlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50OyB9CisgICAgcGlkX3Qg
cHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3NJZGVudGlmaWVyOyB9
CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIH5BWFJlbW90ZUZyYW1lKCkgPSBkZWZh
dWx0OworCisgICAgQWNjZXNzaWJpbGl0eVJvbGUgZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUo
KSB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6UmVtb3RlRnJhbWU7IH0KKyAgICBib29sIGNv
bXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICBib29sIGlzQVhSZW1vdGVGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICBMYXlv
dXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Q7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBS
ZXRhaW5QdHI8aWQ+IG1fcmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQ7CisgICAgcGlkX3QgbV9w
cm9jZXNzSWRlbnRpZmllciB7IDAgfTsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0FDQ0VTU0lCSUxJVFkoQVhSZW1vdGVGcmFt
ZSwgaXNBWFJlbW90ZUZyYW1lKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCBkOTc5MWFmMzg2ZDcuLjUyY2YwMmQ3
Y2UwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuY3BwCkBAIC01NDQsNyArNTQ0LDkgQEAgRmxvYXRSZWN0IEFjY2Vzc2liaWxp
dHlPYmplY3Q6OmNvbnZlcnRGcmFtZVRvU3BhY2UoY29uc3QgRmxvYXRSZWN0JiBmcmFtZVJlY3Qs
IEEKICAgICAKIEZsb2F0UmVjdCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZWxhdGl2ZUZyYW1lKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gY29udmVydEZyYW1lVG9TcGFjZShlbGVtZW50UmVjdCgpLCBB
Y2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlOjpQYWdlKTsKKyAgICBhdXRvIHJlY3QgPSBlbGVt
ZW50UmVjdCgpOworICAgIHJlY3QubW92ZUJ5KHJlbW90ZUZyYW1lT2Zmc2V0KCkpOworICAgIHJl
dHVybiBjb252ZXJ0RnJhbWVUb1NwYWNlKHJlY3QsIEFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3Bh
Y2U6OlBhZ2UpOwogfQogCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpuZXh0U2libGluZ1VuaWdub3JlZChpbnQgbGltaXQpIGNvbnN0CkBAIC0yMDg2LDE0ICsyMDg4
LDIzIEBAIGNvbnN0IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KiBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjphbmNlc3RvckFjY2Vzc2liaWxpdHlTY3JvbGxWCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBSZW1v
dGVBWE9iamVjdFJlZiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZW1vdGVQYXJlbnRPYmplY3QoKSBj
b25zdAogewotICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCkpIHsKLSAg
ICAgICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3Qo
KTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0byogZG9jdW1lbnQgPSB0aGlz
LT5kb2N1bWVudCgpOworICAgIGF1dG8qIGZyYW1lID0gZG9jdW1lbnQgPyBkb2N1bWVudC0+ZnJh
bWUoKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIGZyYW1lID8gZnJhbWUtPmxvYWRlcigpLmNsaWVu
dCgpLmFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSA6IG51bGxwdHI7CiB9CiAjZW5kaWYKIAor
SW50UG9pbnQgQWNjZXNzaWJpbGl0eU9iamVjdDo6cmVtb3RlRnJhbWVPZmZzZXQoKSBjb25zdAor
eworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1l
bnQoKTsKKyAgICBhdXRvKiBmcmFtZSA9IGRvY3VtZW50ID8gZG9jdW1lbnQtPmZyYW1lKCkgOiBu
dWxscHRyOworICAgIHJldHVybiBmcmFtZSA/IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5hY2Nl
c3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKSA6IEludFBvaW50KCk7CisjZWxzZQorICAgIHJl
dHVybiBJbnRQb2ludCgpOworI2VuZGlmCit9CisKIERvY3VtZW50KiBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojpkb2N1bWVudCgpIGNvbnN0CiB7CiAgICAgYXV0byogZnJhbWVWaWV3ID0gZG9jdW1lbnRG
cmFtZVZpZXcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmgKaW5kZXggNDBkMDQ0MzhkZTIxLi4xYjM1YWFiN2NjYmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCkBA
IC0xMDIsNiArMTAyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgYm9vbCBpc0FYUmVtb3RlRnJhbWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
SW5zdGFuY2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0Fj
Y2Vzc2liaWxpdHlTVkdSb290KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlz
QWNjZXNzaWJpbGl0eVRhYmxlSW5zdGFuY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQpAQCAtNDYyLDEwICs0NjMsMTQgQEAgcHVibGljOgogICAgIFdpZGdldCogd2lkZ2V0Rm9y
QXR0YWNobWVudFZpZXcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CiAgICAg
Ym9vbCBpc1BsdWdpbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICBJ
bnRQb2ludCByZW1vdGVGcmFtZU9mZnNldCgpIGNvbnN0IG92ZXJyaWRlOwogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIFJlbW90ZUFYT2JqZWN0UmVmIHJlbW90ZVBhcmVudE9iamVjdCgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIEZsb2F0UmVjdCBjb252ZXJ0UmVjdFRvUGxhdGZvcm1TcGFjZShjb25z
dCBGbG9hdFJlY3QmLCBBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBSZXRhaW5QdHI8aWQ+IHJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbmlsOyB9CiAjZW5kaWYKKyAgICBib29sIGhhc1JlbW90ZUZyYW1l
Q2hpbGQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgUGFnZSogcGFn
ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIFJlZlB0cjxEb2N1bWVudD4gcHJvdGVjdGVkRG9jdW1lbnQoKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuY3BwCmluZGV4IGVlOGFiZWMzZDdiNS4uMmYxMmVmNzUzZTRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdC5jcHAKQEAgLTI0MTMsNyArMjQxMyw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6YWRkQXR0YWNobWVudENoaWxkcmVuKCkKIAogICAgIC8vIExvY2FsRnJhbWVW
aWV3J3MgbmVlZCB0byBiZSBpbnNlcnRlZCBpbnRvIHRoZSBBWCBoaWVyYXJjaHkgd2hlbiBlbmNv
dW50ZXJlZC4KICAgICBXaWRnZXQqIHdpZGdldCA9IHdpZGdldEZvckF0dGFjaG1lbnRWaWV3KCk7
Ci0gICAgaWYgKCF3aWRnZXQgfHwgIXdpZGdldC0+aXNMb2NhbEZyYW1lVmlldygpKQorICAgIGlm
ICghd2lkZ2V0IHx8ICEod2lkZ2V0LT5pc0xvY2FsRnJhbWVWaWV3KCkgfHwgd2lkZ2V0LT5pc1Jl
bW90ZUZyYW1lVmlldygpKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGFkZENoaWxkKGF4
T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUod2lkZ2V0KSk7CkBAIC0yNTY4LDcgKzI1NjgsNyBA
QCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENoaWxkcmVuKCkKICAgICAgICAg
YXV0byBvd25lcnMgPSBvYmplY3Qub3duZXJzKCk7CiAgICAgICAgIGlmIChvd25lcnMuc2l6ZSgp
ICYmICFvd25lcnMuY29udGFpbnModGhpcykpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IAorCiAgICAgICAgIGFkZENoaWxkKCZvYmplY3QpOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAK
aW5kZXggMmJiYzMwODdiOWY4Li41MjEyMjJhZjYwMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwCkBAIC0y
NywxMCArMjcsMTIgQEAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oIgogCiAj
aW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgorI2luY2x1ZGUgIkFYUmVtb3RlRnJhbWUuaCIKICNp
bmNsdWRlICJBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3du
ZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiTG9jYWxGcmFtZS5oIgogI2luY2x1ZGUgIkxvY2FsRnJh
bWVWaWV3LmgiCisjaW5jbHVkZSAiUmVtb3RlRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiUmVuZGVy
RWxlbWVudC5oIgogI2luY2x1ZGUgIldpZGdldC5oIgogCkBAIC01Miw2ICs1NCwxNiBAQCBBY2Nl
c3NpYmlsaXR5U2Nyb2xsVmlldzo6fkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KCkKIHZvaWQgQWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmRldGFjaFJlbW90ZVBhcnRzKEFjY2Vzc2liaWxpdHlEZXRh
Y2htZW50VHlwZSBkZXRhY2htZW50VHlwZSkKIHsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpk
ZXRhY2hSZW1vdGVQYXJ0cyhkZXRhY2htZW50VHlwZSk7CisKKyAgICBhdXRvKiByZW1vdGVGcmFt
ZVZpZXcgPSBkeW5hbWljRG93bmNhc3Q8UmVtb3RlRnJhbWVWaWV3PihtX3Njcm9sbFZpZXcuZ2V0
KCkpOworICAgIGlmIChyZW1vdGVGcmFtZVZpZXcgJiYgbV9yZW1vdGVGcmFtZSAmJiAoZGV0YWNo
bWVudFR5cGUgPT0gQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlOjpFbGVtZW50RGVzdHJveWVk
IHx8IGRldGFjaG1lbnRUeXBlID09IEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZTo6Q2FjaGVE
ZXN0cm95ZWQpKSB7CisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICBhdXRvJiByZW1vdGVGcmFt
ZSA9IHJlbW90ZUZyYW1lVmlldy0+ZnJhbWUoKTsKKyAgICAgICAgcmVtb3RlRnJhbWUudW5iaW5k
UmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhtX3JlbW90ZUZyYW1lLT5wcm9jZXNzSWRlbnRpZmll
cigpKTsKKyNlbmRpZgorICAgICAgICBtX3JlbW90ZUZyYW1lID0gbnVsbHB0cjsKKyAgICB9CisK
ICAgICBtX3Njcm9sbFZpZXcgPSBudWxscHRyOwogICAgIG1fZnJhbWVPd25lckVsZW1lbnQgPSBu
dWxscHRyOwogfQpAQCAtMTc3LDggKzE4OSwxMCBAQCBBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyKiBB
Y2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkQ2hpbGRTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzYwog
dm9pZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6Y2xlYXJDaGlsZHJlbigpCiB7CiAgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6Y2xlYXJDaGlsZHJlbigpOworCiAgICAgbV92ZXJ0aWNhbFNjcm9s
bGJhciA9IG51bGxwdHI7CiAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyID0gbnVsbHB0cjsKKwog
ICAgIG1fY2hpbGRyZW5EaXJ0eSA9IGZhbHNlOwogfQogCkBAIC0xOTEsMTEgKzIwNSw0NSBAQCBi
b29sIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3Jl
ZCgpIGNvbnN0CiAgICAgcmV0dXJuIHdlYkFyZWEtPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKTsK
IH0KIAordm9pZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkUmVtb3RlRnJhbWVDaGlsZCgp
Cit7CisgICAgYXV0byogcmVtb3RlRnJhbWVWaWV3ID0gZHluYW1pY0Rvd25jYXN0PFJlbW90ZUZy
YW1lVmlldz4obV9zY3JvbGxWaWV3LmdldCgpKTsKKyAgICBpZiAoIXJlbW90ZUZyYW1lVmlldykK
KyAgICAgICAgcmV0dXJuOworCisgICAgV2Vha1B0ciBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsK
KyAgICBpZiAoIWNhY2hlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1fcmVtb3RlRnJh
bWUpIHsKKyAgICAgICAgLy8gTWFrZSB0aGUgZmF1eCBlbGVtZW50IHRoYXQgcmVwcmVzZW50cyB0
aGUgcmVtb3RlIHRyYW5zZmVyIGVsZW1lbnQgZm9yIEFYLgorICAgICAgICBtX3JlbW90ZUZyYW1l
ID0gZG93bmNhc3Q8QVhSZW1vdGVGcmFtZT4oY2FjaGUtPmNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9s
ZTo6UmVtb3RlRnJhbWUpKTsKKyAgICAgICAgbV9yZW1vdGVGcmFtZS0+c2V0UGFyZW50KHRoaXMp
OworCisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICAvLyBHZW5lcmF0ZSBhIG5ldyB0b2tlbiBh
bmQgcGFzcyBpdCBiYWNrIHRvIHRoZSBvdGhlciByZW1vdGUgZnJhbWUgc28gaXQgY2FuIGJpbmQg
dGhlc2Ugb2JqZWN0cyB0b2dldGhlci4KKyAgICAgICAgYXV0byBnZW5lcmF0ZWRUb2tlbiA9IG1f
cmVtb3RlRnJhbWUtPmdlbmVyYXRlUmVtb3RlVG9rZW4oKTsKKyAgICAgICAgYXV0byYgcmVtb3Rl
RnJhbWUgPSByZW1vdGVGcmFtZVZpZXctPmZyYW1lKCk7CisgICAgICAgIHJlbW90ZUZyYW1lLmJp
bmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGdldHBpZCgpLCBnZW5lcmF0ZWRUb2tlbiwgW3Ro
aXMsICZyZW1vdGVGcmFtZSwgcHJvdGVjdGVkQWNjZXNzYmlsaXR5UmVtb3RlRnJhbWUgPSBSZWZQ
dHIgeyBtX3JlbW90ZUZyYW1lIH1dIChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gdG9rZW4sIGlu
dCBwcm9jZXNzSWRlbnRpZmllcikgbXV0YWJsZSB7CisgICAgICAgICAgICBwcm90ZWN0ZWRBY2Nl
c3NiaWxpdHlSZW1vdGVGcmFtZS0+aW5pdGlhbGl6ZVBsYXRmb3JtRWxlbWVudFdpdGhSZW1vdGVU
b2tlbih0b2tlbiwgcHJvY2Vzc0lkZW50aWZpZXIpOworCisgICAgICAgICAgICAvLyBVcGRhdGUg
dGhlIHJlbW90ZSBzaWRlIHdpdGggdGhlIG9mZnNldCBvZiB0aGlzIG9iamVjdCBzbyBpdCBjYW4g
Y2FsY3VsYXRlIGZyYW1lcyBjb3JyZWN0bHkuCisgICAgICAgICAgICBhdXRvIGxvY2F0aW9uID0g
ZWxlbWVudFJlY3QoKS5sb2NhdGlvbigpOworICAgICAgICAgICAgcmVtb3RlRnJhbWUudXBkYXRl
UmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KGZsb29yZWRJbnRQb2ludChsb2NhdGlvbikp
OworICAgICAgICB9KTsKKyNlbmRpZgorICAgIH0gZWxzZQorICAgICAgICBtX3JlbW90ZUZyYW1l
LT5zZXRQYXJlbnQodGhpcyk7CisKKyAgICBhZGRDaGlsZChtX3JlbW90ZUZyYW1lLmdldCgpKTsK
K30KKwogdm9pZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkQ2hpbGRyZW4oKQogewogICAg
IEFTU0VSVCghbV9jaGlsZHJlbkluaXRpYWxpemVkKTsKICAgICBtX2NoaWxkcmVuSW5pdGlhbGl6
ZWQgPSB0cnVlOwogCisgICAgYWRkUmVtb3RlRnJhbWVDaGlsZCgpOwogICAgIGFkZENoaWxkKHdl
YkFyZWFPYmplY3QoKSk7CiAgICAgdXBkYXRlU2Nyb2xsYmFycygpOwogfQpAQCAtMjAzLDcgKzI1
MSw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmFkZENoaWxkcmVuKCkKIEFjY2Vz
c2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojp3ZWJBcmVhT2JqZWN0KCkg
Y29uc3QKIHsKICAgICBhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7Ci0gICAgaWYg
KCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPmhhc0xpdmluZ1JlbmRlclRyZWUoKSkKKyAgICBpZiAo
IWRvY3VtZW50IHx8ICFkb2N1bWVudC0+aGFzTGl2aW5nUmVuZGVyVHJlZSgpIHx8IG1fcmVtb3Rl
RnJhbWUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKGF1dG8qIGNhY2hlID0g
YXhPYmplY3RDYWNoZSgpKQpAQCAtMjM0LDkgKzI4MiwxNSBAQCBMYXlvdXRSZWN0IEFjY2Vzc2li
aWxpdHlTY3JvbGxWaWV3OjplbGVtZW50UmVjdCgpIGNvbnN0CiAKIERvY3VtZW50KiBBY2Nlc3Np
YmlsaXR5U2Nyb2xsVmlldzo6ZG9jdW1lbnQoKSBjb25zdAogewotICAgIGlmIChhdXRvKiBmcmFt
ZVZpZXcgPSBkeW5hbWljRG93bmNhc3Q8TG9jYWxGcmFtZVZpZXc+KG1fc2Nyb2xsVmlldy5nZXQo
KSkpIHsKKyAgICBpZiAoYXV0byogZnJhbWVWaWV3ID0gZHluYW1pY0Rvd25jYXN0PExvY2FsRnJh
bWVWaWV3PihtX3Njcm9sbFZpZXcuZ2V0KCkpKQogICAgICAgICByZXR1cm4gZnJhbWVWaWV3LT5m
cmFtZSgpLmRvY3VtZW50KCk7CisKKyAgICAvLyBGb3IgdGhlIFJlbW90ZUZyYW1lVmlldyBjYXNl
LCB3ZSBuZWVkIHRvIHJldHVybiB0aGUgZG9jdW1lbnQgb2Ygb3VyIGhvc3RpbmcgcGFyZW50IHNv
IGF4T2JqZWN0Q2FjaGUoKSByZXNvbHZlcyBjb3JyZWN0bHkuCisgICAgaWYgKGF1dG8qIHJlbW90
ZUZyYW1lVmlldyA9IGR5bmFtaWNEb3duY2FzdDxSZW1vdGVGcmFtZVZpZXc+KG1fc2Nyb2xsVmll
dy5nZXQoKSkpIHsKKyAgICAgICAgaWYgKGF1dG8qIG93bmVyID0gcmVtb3RlRnJhbWVWaWV3LT5m
cmFtZSgpLm93bmVyRWxlbWVudCgpKQorICAgICAgICAgICAgcmV0dXJuICYob3duZXItPmRvY3Vt
ZW50KCkpOwogICAgIH0KKwogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpkb2N1bWVu
dCgpOwogfQogCkBAIC0yNTksOCArMzEzLDEwIEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vz
c2liaWxpdHlTY3JvbGxWaWV3OjpwYXJlbnRPYmplY3QoKSBjb25zdAogICAgIFdlYWtQdHIgb3du
ZXIgPSBtX2ZyYW1lT3duZXJFbGVtZW50LmdldCgpOwogICAgIGlmIChhdXRvKiBsb2NhbEZyYW1l
VmlldyA9IGR5bmFtaWNEb3duY2FzdDxMb2NhbEZyYW1lVmlldz4obV9zY3JvbGxWaWV3LmdldCgp
KSkKICAgICAgICAgb3duZXIgPSBsb2NhbEZyYW1lVmlldy0+ZnJhbWUoKS5vd25lckVsZW1lbnQo
KTsKKyAgICBlbHNlIGlmIChhdXRvKiByZW1vdGVGcmFtZVZpZXcgPSBkeW5hbWljRG93bmNhc3Q8
UmVtb3RlRnJhbWVWaWV3PihtX3Njcm9sbFZpZXcuZ2V0KCkpKQorICAgICAgICBvd25lciA9IHJl
bW90ZUZyYW1lVmlldy0+ZnJhbWUoKS5vd25lckVsZW1lbnQoKTsKIAotICAgIGlmIChjYWNoZSAm
JiBvd25lciAmJiBvd25lci0+cmVuZGVyZXIoKSkKKyAgICBpZiAob3duZXIgJiYgb3duZXItPnJl
bmRlcmVyKCkpCiAgICAgICAgIHJldHVybiBjYWNoZS0+Z2V0T3JDcmVhdGUob3duZXIuZ2V0KCkp
OwogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oCmluZGV4IDU1NzA0NDY3MWM3ZC4u
NTI1YWM3ODNmYmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oCkBAIC0zMCw2ICszMCw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAKK2NsYXNzIEFYUmVtb3RlRnJhbWU7CiBjbGFzcyBBY2Nlc3NpYmls
aXR5U2Nyb2xsYmFyOwogY2xhc3MgU2Nyb2xsYmFyOwogY2xhc3MgU2Nyb2xsVmlldzsKQEAgLTU0
LDcgKzU1LDggQEAgcHJpdmF0ZToKICAgICBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25v
cmVkKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
SW5zdGFuY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBpc0Vu
YWJsZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgCisgICAgYm9vbCBo
YXNSZW1vdGVGcmFtZUNoaWxkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9yZW1vdGVGcmFtZTsg
fQorCiAgICAgYm9vbCBpc0F0dGFjaG1lbnQoKSBjb25zdCBvdmVycmlkZTsKICAgICBQbGF0Zm9y
bVdpZGdldCBwbGF0Zm9ybVdpZGdldCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFdpZGdldCogd2lk
Z2V0Rm9yQXR0YWNobWVudFZpZXcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBjdXJyZW50U2Ny
b2xsVmlldygpOyB9CkBAIC02OSw2ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRGb2N1
c2VkKGJvb2wpIG92ZXJyaWRlOwogICAgIGJvb2wgY2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSBjb25z
dCBvdmVycmlkZTsKICAgICBib29sIGlzRm9jdXNlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZv
aWQgYWRkUmVtb3RlRnJhbWVDaGlsZCgpOwogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgTG9jYWxGcmFtZVZpZXcqIGRvY3VtZW50RnJhbWVWaWV3KCkgY29u
c3Qgb3ZlcnJpZGU7CkBAIC04NSw2ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEFjY2Vz
c2liaWxpdHlPYmplY3Q+IG1faG9yaXpvbnRhbFNjcm9sbGJhcjsKICAgICBSZWZQdHI8QWNjZXNz
aWJpbGl0eU9iamVjdD4gbV92ZXJ0aWNhbFNjcm9sbGJhcjsKICAgICBib29sIG1fY2hpbGRyZW5E
aXJ0eTsKKyAgICBSZWZQdHI8QVhSZW1vdGVGcmFtZT4gbV9yZW1vdGVGcmFtZTsKIH07CiAgICAg
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKaW5k
ZXggNWRlOTcwZjFmNzBkLi41MTg3YjJmYTM1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RBdHNw
aS5jcHAKQEAgLTM3MCw2ICszNzAsNyBAQCBzdGF0aWMgQXRzcGk6OlJvbGUgYXRzcGlSb2xlKEFj
Y2Vzc2liaWxpdHlSb2xlIHJvbGUpCiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3VtbWFy
eToKICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJsZUhlYWRlckNvbnRhaW5lcjoKICAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTdWdnZXN0aW9uOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OlJlbW90ZUZyYW1lOgogICAgICAgICByZXR1cm4gQXRzcGk6OlJvbGU6OlVua25v
d247CiAgICAgLy8gQWRkIG1vc3QgbmV3IHJvbGVzIGFib3ZlLiBUaGUgcmVsZWFzZSBhc3NlcnQg
aXMgZm9yIHJvbGVzIHRoYXQgYXJlIGhhbmRsZWQgc3BlY2lhbGx5LgogICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6Okxpc3RNYXJrZXI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
SU9TLm1tCmluZGV4IDJmMjliNzJmZmU3ZS4uOTI0M2FkNmJkMzQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQpAQCAtMTExMiw2ICsxMTEyLDcgQEAgc3RhdGljIEFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyICphbmNlc3RvcldpdGhSb2xlKGNvbnN0IEFYQ29yZU9i
amVjdCYgZGVzY2VuZGEKICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpJZ25vcmVkOgogICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxpbmVCcmVhazoKICAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpQcmVzZW50YXRpb25hbDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSZW1v
dGVGcmFtZToKICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duOgogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcAppbmRleCAxMDE0
NTQ2Mjc4ZjMuLjM0MmQ0YzcyZTY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKQEAg
LTM3OCw2ICszNzgsMTAgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplUHJvcGVy
dGllcyhjb25zdCBSZWY8QWNjZXNzaWJpbGl0eU9iamVjdD4mIGF4T2IKICNlbmRpZgogCiAgICAg
c2V0T2JqZWN0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkludGVybmFsTGlua0VsZW1lbnQsIG9i
amVjdC5pbnRlcm5hbExpbmtFbGVtZW50KCkpOworICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlO
YW1lOjpIYXNSZW1vdGVGcmFtZUNoaWxkLCBvYmplY3QuaGFzUmVtb3RlRnJhbWVDaGlsZCgpKTsK
KyAgICAvLyBEb24ndCBkdXBsaWNhdGUgdGhlIHJlbW90ZUZyYW1lT2Zmc2V0IGZvciBldmVyeSBv
YmplY3QuIEp1c3Qgc3RvcmUgaW4gdGhlIFdlYkFyZWEuCisgICAgaWYgKG9iamVjdC5pc1dlYkFy
ZWEoKSkKKyAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlJlbW90ZUZyYW1lT2Zm
c2V0LCBvYmplY3QucmVtb3RlRnJhbWVPZmZzZXQoKSk7CiAKICAgICBpbml0aWFsaXplUGxhdGZv
cm1Qcm9wZXJ0aWVzKGF4T2JqZWN0KTsKIH0KQEAgLTQ2NCw2ICs0NjgsNyBAQCB2b2lkIEFYSXNv
bGF0ZWRPYmplY3Q6OnNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgQVhQ
cm9wZXJ0eVZhbHVlVgogICAgICAgICBbXShPcHRpb25TZXQ8QVhBbmNlc3RvckZsYWc+JiB0eXBl
ZFZhbHVlKSB7IHJldHVybiB0eXBlZFZhbHVlLmlzRW1wdHkoKTsgfSwKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICAgICAgW10oUmV0YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4mIHR5cGVkVmFs
dWUpIHsgcmV0dXJuICF0eXBlZFZhbHVlOyB9LAorICAgICAgICBbXShSZXRhaW5QdHI8aWQ+JiB0
eXBlZFZhbHVlKSB7IHJldHVybiAhdHlwZWRWYWx1ZTsgfSwKICNlbmRpZgogICAgICAgICBbXShJ
bnNpZGVMaW5rJiB0eXBlZFZhbHVlKSB7IHJldHVybiB0eXBlZFZhbHVlID09IEluc2lkZUxpbmso
KTsgfSwKICAgICAgICAgW10oVmVjdG9yPFZlY3RvcjxBWElEPj4mIHR5cGVkVmFsdWUpIHsgcmV0
dXJuIHR5cGVkVmFsdWUuaXNFbXB0eSgpOyB9LApAQCAtMTIwNiw2ICsxMjExLDIxIEBAIExheW91
dFJlY3QgQVhJc29sYXRlZE9iamVjdDo6ZWxlbWVudFJlY3QoKSBjb25zdAogICAgIH0pOwogfQog
CitJbnRQb2ludCBBWElzb2xhdGVkT2JqZWN0OjpyZW1vdGVGcmFtZU9mZnNldCgpIGNvbnN0Cit7
CisgICAgYXV0byogd2ViQXJlYSA9IEFjY2Vzc2liaWxpdHk6OmZpbmRBbmNlc3RvcjxBWElzb2xh
dGVkT2JqZWN0PigqdGhpcywgdHJ1ZSwgW10gKGNvbnN0IGF1dG8mIG9iamVjdCkgeworICAgICAg
ICByZXR1cm4gb2JqZWN0LmlzV2ViQXJlYSgpOworICAgIH0pOworCisgICAgaWYgKCF3ZWJBcmVh
KQorICAgICAgICByZXR1cm4geyB9OworCisgICAgaWYgKGF1dG8gcG9pbnQgPSB3ZWJBcmVhLT5v
cHRpb25hbEF0dHJpYnV0ZVZhbHVlPEludFBvaW50PihBWFByb3BlcnR5TmFtZTo6UmVtb3RlRnJh
bWVPZmZzZXQpKQorICAgICAgICByZXR1cm4gKnBvaW50OworCisgICAgcmV0dXJuIHsgfTsKK30K
KwogRmxvYXRQb2ludCBBWElzb2xhdGVkT2JqZWN0OjpzY3JlZW5SZWxhdGl2ZVBvc2l0aW9uKCkg
Y29uc3QKIHsKICAgICBpZiAoYXV0byBwb2ludCA9IG9wdGlvbmFsQXR0cmlidXRlVmFsdWU8Rmxv
YXRQb2ludD4oQVhQcm9wZXJ0eU5hbWU6OlNjcmVlblJlbGF0aXZlUG9zaXRpb24pKQpAQCAtMTIy
OSwyMiArMTI0OSwyMyBAQCBGbG9hdFBvaW50IEFYSXNvbGF0ZWRPYmplY3Q6OnNjcmVlblJlbGF0
aXZlUG9zaXRpb24oKSBjb25zdAogCiBGbG9hdFJlY3QgQVhJc29sYXRlZE9iamVjdDo6cmVsYXRp
dmVGcmFtZSgpIGNvbnN0CiB7CisgICAgRmxvYXRSZWN0IHJlbGF0aXZlRnJhbWU7CisKICAgICBp
ZiAoYXV0byBjYWNoZWRSZWxhdGl2ZUZyYW1lID0gb3B0aW9uYWxBdHRyaWJ1dGVWYWx1ZTxJbnRS
ZWN0PihBWFByb3BlcnR5TmFtZTo6UmVsYXRpdmVGcmFtZSkpIHsKICAgICAgICAgLy8gV2Ugc2hv
dWxkIG5vdCBoYXZlIGNhY2hlZCBhIHJlbGF0aXZlIGZyYW1lIGZvciBlbGVtZW50cyB0aGF0IGdl
dCB0aGVpciBnZW9tZXRyeSBmcm9tIHRoZWlyIGNoaWxkcmVuLgogICAgICAgICBBU1NFUlQoIW1f
Z2V0c0dlb21ldHJ5RnJvbUNoaWxkcmVuKTsKLSAgICAgICAgcmV0dXJuICpjYWNoZWRSZWxhdGl2
ZUZyYW1lOwotICAgIH0KLQotICAgIGlmIChtX2dldHNHZW9tZXRyeUZyb21DaGlsZHJlbikgewor
ICAgICAgICByZWxhdGl2ZUZyYW1lID0gKmNhY2hlZFJlbGF0aXZlRnJhbWU7CisgICAgfSBlbHNl
IGlmIChtX2dldHNHZW9tZXRyeUZyb21DaGlsZHJlbikgewogICAgICAgICBhdXRvIGZyYW1lID0g
ZW5jbG9zaW5nSW50UmVjdChyZWxhdGl2ZUZyYW1lRnJvbUNoaWxkcmVuKCkpOwogICAgICAgICBp
ZiAoIWZyYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBmcmFtZTsKKyAgICAgICAg
ICAgIHJlbGF0aXZlRnJhbWUgPSBmcmFtZTsKICAgICAgICAgLy8gRWl0aGVyIHdlIGhhZCBubyBj
aGlsZHJlbiwgb3Igb3VyIGNoaWxkcmVuIGhhZCBlbXB0eSBmcmFtZXMuIFRoZSByaWdodCB0aGlu
ZyB0byBkbyB3b3VsZCBiZSB0byByZXR1cm4KICAgICAgICAgLy8gYSByZWN0IGF0IHRoZSBwb3Np
dGlvbiBvZiB0aGUgbmVhcmVzdCByZW5kZXIgdHJlZSBhbmNlc3RvciB3aXRoIHNvbWUgbWFkZS11
cCBzaXplIChBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6Ym91bmRpbmdCb3hSZWN0IGRvZXMgdGhp
cykuCiAgICAgICAgIC8vIEhvd2V2ZXIsIHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIHRoZSByZW5k
ZXIgdHJlZSBpbiB0aGlzIGNvbnRleHQgKG9ubHkgdGhlIEFYIGlzb2xhdGVkIHRyZWUsIHdoaWNo
IGlzIHRvbyBzcGFyc2UgZm9yIHRoaXMgcHVycG9zZSksIHNvCiAgICAgICAgIC8vIHVudGlsIHdl
IGNhY2hlIHRoZSBuZWNlc3NhcnkgaW5mb3JtYXRpb24gbGV0J3MgZ28gdG8gdGhlIG1haW4tdGhy
ZWFkLgogICAgIH0gZWxzZSBpZiAocm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNv
bHVtbiB8fCByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFibGVIZWFkZXJDb250
YWluZXIpCi0gICAgICAgIHJldHVybiBleHBvc2VkVGFibGVBbmNlc3RvcigpID8gcmVsYXRpdmVG
cmFtZUZyb21DaGlsZHJlbigpIDogRmxvYXRSZWN0KCk7CisgICAgICAgIHJlbGF0aXZlRnJhbWUg
PSBleHBvc2VkVGFibGVBbmNlc3RvcigpID8gcmVsYXRpdmVGcmFtZUZyb21DaGlsZHJlbigpIDog
RmxvYXRSZWN0KCk7CisKIAogICAgIC8vIE1vY2sgb2JqZWN0cyBhbmQgU1ZHIG9iamVjdHMgbmVl
ZCB1c2UgdGhlIG1haW4gdGhyZWFkIHNpbmNlIHRoZXkgZG8gbm90IGhhdmUgcmVuZGVyIG5vZGVz
IGFuZCBhcmUgbm90IHBhaW50ZWQgd2l0aCBsYXllcnMsIHJlc3BlY3RpdmVseS4KICAgICAvLyBG
SVhNRTogUmVtb3ZlIGlzTm9uTGF5ZXJTVkdPYmplY3Qgd2hlbiBMQlNFIGlzIGVuYWJsZWQgJiBT
VkcgZnJhbWVzIGFyZSBjYWNoZWQuCkBAIC0xMjY2LDYgKzEyODcsNyBAQCBGbG9hdFJlY3QgQVhJ
c29sYXRlZE9iamVjdDo6cmVsYXRpdmVGcmFtZSgpIGNvbnN0CiAgICAgaWYgKGFuY2VzdG9yICYm
IGZyYW1lUmVjdC5sb2NhdGlvbigpID09IEZsb2F0UG9pbnQoKSkKICAgICAgICAgZnJhbWVSZWN0
LnNldExvY2F0aW9uKGFuY2VzdG9yLT5yZWxhdGl2ZUZyYW1lKCkubG9jYXRpb24oKSk7CiAKKyAg
ICBmcmFtZVJlY3QubW92ZUJ5KHsgcmVtb3RlRnJhbWVPZmZzZXQoKSB9KTsKICAgICByZXR1cm4g
ZnJhbWVSZWN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgKaW5kZXggZDJhNjZjMmY1M2U0
Li5kZTgyN2Q1ZmUwMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgKQEAgLTI4LDYgKzI4LDcg
QEAKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQogCiAjaW5jbHVkZSAi
QVhDb3JlT2JqZWN0LmgiCisjaW5jbHVkZSAiQVhJc29sYXRlZFRyZWUuaCIKICNpbmNsdWRlICJB
WE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNsdWRlICJMYXlvdXRS
ZWN0LmgiCkBAIC0yMTUsNiArMjE2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzRmlsZVVwbG9h
ZEJ1dHRvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3Bl
cnR5TmFtZTo6SXNGaWxlVXBsb2FkQnV0dG9uKTsgfQogICAgIGJvb2wgaXNNZXRlcigpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNZXRl
cik7IH07CiAgICAgRmxvYXRQb2ludCBzY3JlZW5SZWxhdGl2ZVBvc2l0aW9uKCkgY29uc3QgZmlu
YWw7CisgICAgSW50UG9pbnQgcmVtb3RlRnJhbWVPZmZzZXQoKSBjb25zdCBmaW5hbDsKICAgICBG
bG9hdFJlY3QgcmVsYXRpdmVGcmFtZSgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaGFzQ2FjaGVk
UmVsYXRpdmVGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG9wdGlvbmFsQXR0cmlidXRlVmFsdWU8SW50
UmVjdD4oQVhQcm9wZXJ0eU5hbWU6OlJlbGF0aXZlRnJhbWUpLmhhc192YWx1ZSgpOyB9CiAjaWYg
UExBVEZPUk0oTUFDKQpAQCAtMjYzLDcgKzI2NSw3IEBAIHByaXZhdGU6CiAgICAgQVhJc29sYXRl
ZE9iamVjdCogYWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCBmaW5h
bDsKICAgICBBWElzb2xhdGVkT2JqZWN0KiBmb2N1c2VkVUlFbGVtZW50KCkgY29uc3QgZmluYWw7
CiAgICAgQVhDb3JlT2JqZWN0KiBpbnRlcm5hbExpbmtFbGVtZW50KCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gb2JqZWN0QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkludGVybmFsTGlua0Vs
ZW1lbnQpOyB9Ci0gICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHJhZGlvQnV0dG9uR3Jv
dXAoKSBjb25zdCB7IHJldHVybiB0cmVlKCktPm9iamVjdHNGb3JJRHModmVjdG9yQXR0cmlidXRl
VmFsdWU8QVhJRD4oQVhQcm9wZXJ0eU5hbWU6OlJhZGlvQnV0dG9uR3JvdXApKTsgfQorICAgIEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciByYWRpb0J1dHRvbkdyb3VwKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gdHJlZSgpLT5vYmplY3RzRm9ySURzKHZlY3RvckF0dHJpYnV0ZVZhbHVlPEFYSUQ+
KEFYUHJvcGVydHlOYW1lOjpSYWRpb0J1dHRvbkdyb3VwKSk7IH0KICAgICBBWElzb2xhdGVkT2Jq
ZWN0KiBzY3JvbGxCYXIoQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uKSBmaW5hbDsKICAgICBjb25z
dCBTdHJpbmcgcGxhY2Vob2xkZXJWYWx1ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0cmluZ0F0
dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpQbGFjZWhvbGRlclZhbHVlKTsgfQogICAgIFN0
cmluZyBleHBhbmRlZFRleHRWYWx1ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0cmluZ0F0dHJp
YnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpFeHBhbmRlZFRleHRWYWx1ZSk7IH0KQEAgLTQ1Niw3
ICs0NTgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5QVJJQUdyaWRJbnN0
YW5jZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0FjY2Vzc2li
aWxpdHlBUklBR3JpZFJvd0luc3RhbmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICBib29sIGlzQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbEluc3RhbmNlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gZmFsc2U7IH0KLQorICAgIGJvb2wgaXNBWFJlbW90ZUZyYW1lKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzTmF0aXZlVGV4dENvbnRyb2woKSBj
b25zdCBmaW5hbDsKICAgICBib29sIGlzTGlzdEJveE9wdGlvbigpIGNvbnN0IGZpbmFsOwogICAg
IGJvb2wgaXNNb2NrT2JqZWN0KCkgY29uc3QgZmluYWw7CkBAIC01MzcsNyArNTM5LDkgQEAgcHJp
dmF0ZToKICAgICBTdHJpbmcgbmFtZUF0dHJpYnV0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0
cmluZ0F0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpOYW1lQXR0cmlidXRlKTsgfQogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIGJvb2wgaGFzQXBwbGVQREZBbm5vdGF0aW9uQXR0cmlidXRl
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1l
OjpIYXNBcHBsZVBERkFubm90YXRpb25BdHRyaWJ1dGUpOyB9CisgICAgUmV0YWluUHRyPGlkPiBy
ZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpIGNvbnN0IGZpbmFsOwogI2VuZGlmCisgICAgYm9v
bCBoYXNSZW1vdGVGcmFtZUNoaWxkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gYm9vbEF0dHJpYnV0
ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpIYXNSZW1vdGVGcmFtZUNoaWxkKTsgfQogCiAjaWYgUExB
VEZPUk0oQ09DT0EpICYmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIFZlY3RvcjxSZXRhaW5Q
dHI8aWQ+PiBtb2RlbEVsZW1lbnRDaGlsZHJlbigpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUu
Y3BwCmluZGV4IDY5NjY1ODQ0OGY2NS4uM2FjYzE5OThiMWJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRy
ZWUuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJBWElzb2xhdGVkT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiQVhMb2dnZXIuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGUuaCIK
ICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGVSb3cuaCIKICNpbmNsdWRlICJGcmFtZVNlbGVj
dGlvbi5oIgogI2luY2x1ZGUgIkxvY2FsRnJhbWVWaWV3LmgiCkBAIC0yMjUsNDYgKzIyNiwyNiBA
QCBSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4gQVhJc29sYXRlZFRyZWU6Om9iamVjdEZvcklEKGNv
bnN0IEFYSUQgYXhJRCkgY29uc3QKICAgICByZXR1cm4gYXhJRC5pc1ZhbGlkKCkgPyBtX3JlYWRl
clRocmVhZE5vZGVNYXAuZ2V0KGF4SUQpIDogbnVsbHB0cjsKIH0KIAotdGVtcGxhdGU8dHlwZW5h
bWUgVT4KLVZlY3RvcjxSZWZQdHI8QVhDb3JlT2JqZWN0Pj4gQVhJc29sYXRlZFRyZWU6Om9iamVj
dHNGb3JJRHMoY29uc3QgVSYgYXhJRHMpCitSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4gQVhJc29s
YXRlZFRyZWU6OnJldHJpZXZlT2JqZWN0Rm9ySURGcm9tTWFpblRocmVhZChjb25zdCBBWElEIGF4
SUQpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Ci0KLSAgICBWZWN0b3I8
UmVmUHRyPEFYQ29yZU9iamVjdD4+IHJlc3VsdDsKLSAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShheElEcy5zaXplKCkpOwotICAgIGZvciAoY29uc3QgYXV0byYgYXhJRCA6IGF4SURz
KSB7Ci0gICAgICAgIFJlZlB0ciBvYmplY3QgPSBvYmplY3RGb3JJRChheElEKTsKLSAgICAgICAg
aWYgKG9iamVjdCkgewotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChXVEZNb3ZlKG9iamVjdCkp
OwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBUaGVyZSBp
cyBubyBpc29sYXRlZCBvYmplY3QgZm9yIHRoaXMgQVhJRC4gVGhpcyBjYW4gaGFwcGVuIGlmIHRo
ZSBjb3JyZXNwb25kaW5nIGxpdmUgb2JqZWN0IGlzIGlnbm9yZWQuCi0gICAgICAgIC8vIElmIHRo
ZXJlIGlzIGEgbGl2ZSBvYmplY3QgZm9yIHRoaXMgSUQgYW5kIGl0IGlzIGFuIGlnbm9yZWQgdGFy
Z2V0IG9mIGEgcmVsYXRpb25zaGlwLCBjcmVhdGUgYW4gaXNvbGF0ZWQgb2JqZWN0IGZvciBpdC4K
LSAgICAgICAgb2JqZWN0ID0gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhy
ZWFkPFJlZlB0cjxBWElzb2xhdGVkT2JqZWN0Pj4oWyZheElELCB0aGlzXSAoKSAtPiBSZWZQdHI8
QVhJc29sYXRlZE9iamVjdD4gewotICAgICAgICAgICAgYXV0byogY2FjaGUgPSBheE9iamVjdENh
Y2hlKCk7Ci0gICAgICAgICAgICBpZiAoIWNhY2hlIHx8ICFjYWNoZS0+cmVsYXRpb25UYXJnZXRJ
RHMoKS5jb250YWlucyhheElEKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQot
ICAgICAgICAgICAgUmVmUHRyIGF4T2JqZWN0ID0gY2FjaGUtPm9iamVjdEZvcklEKGF4SUQpOwot
ICAgICAgICAgICAgaWYgKCFheE9iamVjdCB8fCAhYXhPYmplY3QtPmFjY2Vzc2liaWxpdHlJc0ln
bm9yZWQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgICAgICAgICAg
YXV0byBvYmplY3QgPSBBWElzb2xhdGVkT2JqZWN0OjpjcmVhdGUoKmF4T2JqZWN0LCBjb25zdF9j
YXN0PEFYSXNvbGF0ZWRUcmVlKj4odGhpcykpOwotICAgICAgICAgICAgQVNTRVJUKGF4T2JqZWN0
LT53cmFwcGVyKCkpOwotICAgICAgICAgICAgb2JqZWN0LT5hdHRhY2hQbGF0Zm9ybVdyYXBwZXIo
YXhPYmplY3QtPndyYXBwZXIoKSk7Ci0gICAgICAgICAgICByZXR1cm4gb2JqZWN0OwotICAgICAg
ICB9KTsKLSAgICAgICAgaWYgKG9iamVjdCkgewotICAgICAgICAgICAgbV9yZWFkZXJUaHJlYWRO
b2RlTWFwLmFkZChheElELCAqb2JqZWN0KTsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoV1RG
TW92ZShvYmplY3QpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXN1bHQuc2hyaW5rVG9GaXQo
KTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIC8vIFRoZXJlIGlzIG5vIGlzb2xhdGVkIG9iamVj
dCBmb3IgdGhpcyBBWElELiBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlIGNvcnJlc3BvbmRpbmcgbGl2
ZSBvYmplY3QgaXMgaWdub3JlZC4KKyAgICAvLyBJZiB0aGVyZSBpcyBhIGxpdmUgb2JqZWN0IGZv
ciB0aGlzIElEIGFuZCBpdCBpcyBhbiBpZ25vcmVkIHRhcmdldCBvZiBhIHJlbGF0aW9uc2hpcCwg
Y3JlYXRlIGFuIGlzb2xhdGVkIG9iamVjdCBmb3IgaXQuCisgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4+
KFsmYXhJRCwgdGhpc10gKCkgLT4gUmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+IHsKKyAgICAgICAg
YXV0byogY2FjaGUgPSBheE9iamVjdENhY2hlKCk7CisgICAgICAgIGlmICghY2FjaGUgfHwgIWNh
Y2hlLT5yZWxhdGlvblRhcmdldElEcygpLmNvbnRhaW5zKGF4SUQpKQorICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICAgICAgUmVmUHRyIGF4T2JqZWN0ID0gY2FjaGUtPm9iamVjdEZv
cklEKGF4SUQpOworICAgICAgICBpZiAoIWF4T2JqZWN0IHx8ICFheE9iamVjdC0+YWNjZXNzaWJp
bGl0eUlzSWdub3JlZCgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAg
YXV0byBvYmplY3QgPSBBWElzb2xhdGVkT2JqZWN0OjpjcmVhdGUoKmF4T2JqZWN0LCBjb25zdF9j
YXN0PEFYSXNvbGF0ZWRUcmVlKj4odGhpcykpOworICAgICAgICBBU1NFUlQoYXhPYmplY3QtPndy
YXBwZXIoKSk7CisgICAgICAgIG9iamVjdC0+YXR0YWNoUGxhdGZvcm1XcmFwcGVyKGF4T2JqZWN0
LT53cmFwcGVyKCkpOworICAgICAgICByZXR1cm4gb2JqZWN0OworICAgIH0pOwogfQogCi0KIHZv
aWQgQVhJc29sYXRlZFRyZWU6OmdlbmVyYXRlU3VidHJlZShBY2Nlc3NpYmlsaXR5T2JqZWN0JiBh
eE9iamVjdCkKIHsKICAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6Z2VuZXJhdGVTdWJ0cmVl
Il9zKTsKQEAgLTY2MCw2ICs2NDEsMTIgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6dXBkYXRlTm9k
ZVByb3BlcnRpZXMoQVhDb3JlT2JqZWN0JiBheE9iamVjdCwgY29uc3QgQVhQcm9wZXIKICAgICAg
ICAgY2FzZSBBWFByb3BlcnR5TmFtZTo6UG9zSW5TZXQ6CiAgICAgICAgICAgICBwcm9wZXJ0eU1h
cC5zZXQoQVhQcm9wZXJ0eU5hbWU6OlBvc0luU2V0LCBheE9iamVjdC5wb3NJblNldCgpKTsKICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFYUHJvcGVydHlOYW1lOjpSZW1vdGVGcmFt
ZVBsYXRmb3JtRWxlbWVudDoKKyAgICAgICAgICAgIHByb3BlcnR5TWFwLnNldChBWFByb3BlcnR5
TmFtZTo6UmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQsIGF4T2JqZWN0LnJlbW90ZUZyYW1lUGxh
dGZvcm1FbGVtZW50KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQVhQcm9w
ZXJ0eU5hbWU6Okhhc1JlbW90ZUZyYW1lQ2hpbGQ6CisgICAgICAgICAgICBwcm9wZXJ0eU1hcC5z
ZXQoQVhQcm9wZXJ0eU5hbWU6Okhhc1JlbW90ZUZyYW1lQ2hpbGQsIGF4T2JqZWN0Lmhhc1JlbW90
ZUZyYW1lQ2hpbGQoKSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBWFByb3Bl
cnR5TmFtZTo6Um9sZURlc2NyaXB0aW9uOgogICAgICAgICAgICAgcHJvcGVydHlNYXAuc2V0KEFY
UHJvcGVydHlOYW1lOjpSb2xlRGVzY3JpcHRpb24sIGF4T2JqZWN0LnJvbGVEZXNjcmlwdGlvbigp
Lmlzb2xhdGVkQ29weSgpKTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgK
aW5kZXggYTQxNzkyNzk3OGQyLi40NjFlZWFlNjBhZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaApA
QCAtMTA0LDYgKzEwNCw3IEBAIGVudW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUgOiB1aW50MTZfdCB7
CiAgICAgSGFzSGlnaGxpZ2h0aW5nLAogICAgIEhhc0l0YWxpY0ZvbnQsCiAgICAgSGFzUGxhaW5U
ZXh0LAorICAgIEhhc1JlbW90ZUZyYW1lQ2hpbGQsCiAgICAgSGFzVW5kZXJsaW5lLAogICAgIEhl
YWRlckNvbnRhaW5lciwKICAgICBIZWFkaW5nTGV2ZWwsCkBAIC0yMDEsNiArMjAyLDggQEAgZW51
bSBjbGFzcyBBWFByb3BlcnR5TmFtZSA6IHVpbnQxNl90IHsKICAgICBQcmV2ZW50S2V5Ym9hcmRE
T01FdmVudERpc3BhdGNoLAogICAgIFJhZGlvQnV0dG9uR3JvdXAsCiAgICAgUmVsYXRpdmVGcmFt
ZSwKKyAgICBSZW1vdGVGcmFtZU9mZnNldCwKKyAgICBSZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVu
dCwKICAgICBSb2xlVmFsdWUsCiAgICAgUm9sZVBsYXRmb3JtU3RyaW5nLAogICAgIFJvbGVEZXNj
cmlwdGlvbiwKQEAgLTI1Nyw2ICsyNjAsNyBAQCB1c2luZyBBWFByb3BlcnR5TmFtZVNldCA9IEhh
c2hTZXQ8QVhQcm9wZXJ0eU5hbWUsIEludEhhc2g8QVhQcm9wZXJ0eU5hbWU+LCBXVEY6OgogdXNp
bmcgQVhQcm9wZXJ0eVZhbHVlVmFyaWFudCA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwg
QVhJRCwgU3RyaW5nLCBib29sLCBpbnQsIHVuc2lnbmVkLCBkb3VibGUsIGZsb2F0LCB1aW50NjRf
dCwgQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlLCBDb2xvciwgVVJMLCBMYXlvdXRSZWN0LCBGbG9h
dFBvaW50LCBGbG9hdFJlY3QsIEludFBvaW50LCBJbnRSZWN0LCBzdGQ6OnBhaXI8dW5zaWduZWQs
IHVuc2lnbmVkPiwgVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiwgVmVjdG9yPEFYSUQ+LCBWZWN0
b3I8c3RkOjpwYWlyPEFYSUQsIEFYSUQ+PiwgVmVjdG9yPFN0cmluZz4sIFBhdGgsIE9wdGlvblNl
dDxBWEFuY2VzdG9yRmxhZz4sIEluc2lkZUxpbmssIFZlY3RvcjxWZWN0b3I8QVhJRD4+LCBDaGFy
YWN0ZXJSYW5nZSwgc3RkOjpwYWlyPEFYSUQsIENoYXJhY3RlclJhbmdlPgogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgICwgUmV0YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4KKyAgICAsIFJldGFp
blB0cjxpZD4KICNlbmRpZgogI2lmIEVOQUJMRShBWF9USFJFQURfVEVYVF9BUElTKQogICAgICwg
QVhUZXh0UnVucwpAQCAtMzk3LDYgKzQwMSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVF
bXB0eUNvbnRlbnQoQWNjZXNzaWJpbGl0eU9iamVjdCYpOwogICAgIGNvbnN0ZXhwciBib29sIGlz
VXBkYXRpbmdTdWJ0cmVlKCkgY29uc3QgeyByZXR1cm4gbV9yb290T2ZTdWJ0cmVlQmVpbmdVcGRh
dGVkOyB9CiAgICAgY29uc3RleHByIHZvaWQgdXBkYXRpbmdTdWJ0cmVlKEFjY2Vzc2liaWxpdHlP
YmplY3QqIGF4T2JqZWN0KSB7IG1fcm9vdE9mU3VidHJlZUJlaW5nVXBkYXRlZCA9IGF4T2JqZWN0
OyB9CisgICAgUmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+IHJldHJpZXZlT2JqZWN0Rm9ySURGcm9t
TWFpblRocmVhZChjb25zdCBBWElEKSBjb25zdDsKIAogICAgIGVudW0gY2xhc3MgQXR0YWNoV3Jh
cHBlciA6IGJvb2wgeyBPbk1haW5UaHJlYWQsIE9uQVhUaHJlYWQgfTsKICAgICBzdHJ1Y3QgTm9k
ZUNoYW5nZSB7CkBAIC00OTcsNiArNTAyLDMwIEBAIGlubGluZSBSZWZQdHI8QVhJc29sYXRlZFRy
ZWU+IEFYSXNvbGF0ZWRUcmVlOjp0cmVlRm9yUGFnZUlEKHN0ZDo6b3B0aW9uYWw8UGFnZUlkCiAg
ICAgcmV0dXJuIHBhZ2VJRCA/IHRyZWVGb3JQYWdlSUQoKnBhZ2VJRCkgOiBudWxscHRyOwogfQog
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBVPgoraW5saW5lIFZlY3RvcjxSZWZQdHI8QVhDb3JlT2JqZWN0
Pj4gQVhJc29sYXRlZFRyZWU6Om9iamVjdHNGb3JJRHMoY29uc3QgVSYgYXhJRHMpCit7CisgICAg
QVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisKKyAgICBWZWN0b3I8UmVmUHRyPEFYQ29yZU9iamVj
dD4+IHJlc3VsdDsKKyAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShheElEcy5zaXpl
KCkpOworICAgIGZvciAoY29uc3QgYXV0byYgYXhJRCA6IGF4SURzKSB7CisgICAgICAgIFJlZlB0
ciBvYmplY3QgPSBvYmplY3RGb3JJRChheElEKTsKKyAgICAgICAgaWYgKG9iamVjdCkgeworICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChXVEZNb3ZlKG9iamVjdCkpOworICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIH0KKworICAgICAgICBvYmplY3QgPSByZXRyaWV2ZU9iamVjdEZvcklE
RnJvbU1haW5UaHJlYWQoYXhJRCk7CisgICAgICAgIGlmIChvYmplY3QpIHsKKyAgICAgICAgICAg
IG1fcmVhZGVyVGhyZWFkTm9kZU1hcC5hZGQoYXhJRCwgKm9iamVjdCk7CisgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKFdURk1vdmUob2JqZWN0KSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmVz
dWx0LnNocmlua1RvRml0KCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL21hYy9BWElzb2xhdGVkT2JqZWN0TWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMu
bW0KaW5kZXggZjg2MzVmMjM4NDFjLi5lNjdmYzg2NjI5NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL21hYy9BWElzb2xhdGVkT2JqZWN0TWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL21hYy9B
WElzb2xhdGVkT2JqZWN0TWFjLm1tCkBAIC02Myw2ICs2Myw4IEBAIHZvaWQgQVhJc29sYXRlZE9i
amVjdDo6aW5pdGlhbGl6ZVBsYXRmb3JtUHJvcGVydGllcyhjb25zdCBSZWY8Y29uc3QgQWNjZXNz
aWJpbGl0CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFt
ZTo6UmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQsIG9iamVjdC0+cmVtb3RlRnJhbWVQbGF0Zm9y
bUVsZW1lbnQoKSk7CisKICAgICAvLyBDYWNoZSB0aGUgU3RyaW5nVmFsdWUgb25seSBpZiBpdCBk
aWZmZXJzIGZyb20gdGhlIEF0dHJpYnV0ZWRUZXh0LgogICAgIGF1dG8gdmFsdWUgPSBvYmplY3Qt
PnN0cmluZ1ZhbHVlKCk7CiAgICAgaWYgKCFhdHRyaWJ1dGVkVGV4dCB8fCB2YWx1ZSAhPSBTdHJp
bmcoW2F0dHJpYnV0ZWRUZXh0IHN0cmluZ10pKQpAQCAtMjA1LDYgKzIwNywxMSBAQCB1bnNpZ25l
ZCBBWElzb2xhdGVkT2JqZWN0Ojp0ZXh0TGVuZ3RoKCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0K
IAorUmV0YWluUHRyPGlkPiBBWElzb2xhdGVkT2JqZWN0OjpyZW1vdGVGcmFtZVBsYXRmb3JtRWxl
bWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHByb3BlcnR5VmFsdWU8UmV0YWluUHRyPGlkPj4o
QVhQcm9wZXJ0eU5hbWU6OlJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KTsKK30KKwogUmV0YWlu
UHRyPE5TQXR0cmlidXRlZFN0cmluZz4gQVhJc29sYXRlZE9iamVjdDo6YXR0cmlidXRlZFN0cmlu
Z0ZvclRleHRNYXJrZXJSYW5nZShBWFRleHRNYXJrZXJSYW5nZSYmIG1hcmtlclJhbmdlLCBTcGVs
bENoZWNrIHNwZWxsQ2hlY2spIGNvbnN0CiB7CiAgICAgaWYgKCFtYXJrZXJSYW5nZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmpl
Y3RNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5
T2JqZWN0TWFjLm1tCmluZGV4IGJhMmFjY2Q4MGQwNC4uZmJiZTBiYjJhMDY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlP
YmplY3RNYWMubW0KQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9y
dCAiQWNjZXNzaWJpbGl0eU9iamVjdC5oIgogCisjaW1wb3J0ICJBWFJlbW90ZUZyYW1lLmgiCiAj
aW1wb3J0ICJBY2Nlc3NpYmlsaXR5TGFiZWwuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlMaXN0
LmgiCiAjaW1wb3J0ICJDb2xvckNvY29hLmgiCkBAIC01MSw2ICs1Miw3IEBACiAjaW1wb3J0ICJX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5oIgogI2ltcG9ydCAiV2lkZ2V0LmgiCiAK
KyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNBY2Nlc3NpYmlsaXR5U1BJLmg+CiAjaW1wb3J0IDxw
YWwvc3BpL21hYy9OU1NwZWxsQ2hlY2tlclNQSS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC03NDksNiArNzUxLDI5IEBAIFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+IGF0dHJpYnV0
ZWRTdHJpbmdDcmVhdGUoTm9kZSogbm9kZSwgU3RyaW5nVmlldyB0ZXh0CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAorc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IEFYUmVtb3RlRnJhbWU6OmdlbmVy
YXRlUmVtb3RlVG9rZW4oKSBjb25zdAoreworICAgIGlmIChhdXRvKiBwYXJlbnQgPSBwYXJlbnRP
YmplY3QoKSkgeworICAgICAgICAvLyBXZSB1c2UgdGhlIHBhcmVudCdzIHdyYXBwZXIgc28gdGhh
dCB0aGUgcmVtb3RlIGZyYW1lIGFjdHMgYXMgYSBwYXNzIHRocm91Z2ggZm9yIHRoZSByZW1vdGUg
dG9rZW4gYnJpZGdlLgorICAgICAgICBOU0RhdGEgKmRhdGEgPSBbTlNBY2Nlc3NpYmlsaXR5UmVt
b3RlVUlFbGVtZW50IHJlbW90ZVRva2VuRm9yTG9jYWxVSUVsZW1lbnQ6cGFyZW50LT53cmFwcGVy
KCldOworICAgICAgICByZXR1cm4gc3RkOjpzcGFuKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKKyAgICB9CisKKyAgICByZXR1cm4gc3Rk
OjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHsgfTsKK30KKwordm9pZCBBWFJlbW90ZUZyYW1lOjppbml0
aWFsaXplUGxhdGZvcm1FbGVtZW50V2l0aFJlbW90ZVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50
OF90PiB0b2tlbiwgaW50IHByb2Nlc3NJZGVudGlmaWVyKQoreworICAgIG1fcHJvY2Vzc0lkZW50
aWZpZXIgPSBwcm9jZXNzSWRlbnRpZmllcjsKKyAgICBpZiAoW3dyYXBwZXIoKSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKGFjY2Vzc2liaWxpdHlTZXRQcmVzZW50ZXJQcm9jZXNzSWRlbnRp
ZmllcjopXSkKKyAgICAgICAgWyhpZCl3cmFwcGVyKCkgYWNjZXNzaWJpbGl0eVNldFByZXNlbnRl
clByb2Nlc3NJZGVudGlmaWVyOnByb2Nlc3NJZGVudGlmaWVyXTsKKyAgICBOU0RhdGEgKnRva2Vu
RGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczp0b2tlbi5kYXRhKCkgbGVuZ3RoOnRva2VuLnNp
emUoKV07CisgICAgbV9yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCA9IGFkb3B0TlMoW1tOU0Fj
Y2Vzc2liaWxpdHlSZW1vdGVVSUVsZW1lbnQgYWxsb2NdIGluaXRXaXRoUmVtb3RlVG9rZW46dG9r
ZW5EYXRhXSk7CisKKyAgICBpZiAoYXV0byogY2FjaGUgPSBheE9iamVjdENhY2hlKCkpCisgICAg
ICAgIGNhY2hlLT5vblJlbW90ZUZyYW1lSW5pdGlhbGl6ZWQoKnRoaXMpOworfQorCiBuYW1lc3Bh
Y2UgQWNjZXNzaWJpbGl0eSB7CiAKIFBsYXRmb3JtUm9sZU1hcCBjcmVhdGVQbGF0Zm9ybVJvbGVN
YXAoKQpAQCAtODkxLDYgKzkxNiw3IEBAIFBsYXRmb3JtUm9sZU1hcCBjcmVhdGVQbGF0Zm9ybVJv
bGVNYXAoKQogICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpTdXBlcnNjcmlwdCwgTlNBY2Nl
c3NpYmlsaXR5R3JvdXBSb2xlIH0sCiAgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6Ok1vZGVs
LCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKICAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9s
ZTo6U3VnZ2VzdGlvbiwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNj
ZXNzaWJpbGl0eVJvbGU6OlJlbW90ZUZyYW1lLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwK
ICAgICB9OwogICAgIFBsYXRmb3JtUm9sZU1hcCByb2xlTWFwOwogICAgIGZvciAoYXV0byYgcm9s
ZSA6IHJvbGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCmluZGV4
IDYzNTdmYTdjMjcxYi4uZjE0MjQ1ZmMzYjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJCYXNlLm1tCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0ICJBWENvcmVPYmplY3Qu
aCIKICNpbXBvcnQgIkFYSXNvbGF0ZWRPYmplY3QuaCIKICNpbXBvcnQgIkFYT2JqZWN0Q2FjaGUu
aCIKKyNpbXBvcnQgIkFYUmVtb3RlRnJhbWUuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlBUklB
R3JpZFJvdy5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUxpc3QuaCIKICNpbXBvcnQgIkFjY2Vz
c2liaWxpdHlMaXN0Qm94LmgiCkBAIC0yNjUsMTMgKzI2NiwxMyBAQCBOU0FycmF5ICptYWtlTlNB
cnJheShjb25zdCBXZWJDb3JlOjpBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYgYwogICAgICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgICAgICBhdXRvIHdyYXBwZXIg
PSBjaGlsZC0+d3JhcHBlcigpOwotCiAgICAgICAgIC8vIFdlIHdhbnQgdG8gcmV0dXJuIHRoZSBh
dHRhY2htZW50IHZpZXcgaW5zdGVhZCBvZiB0aGUgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgYXR0
YWNobWVudCwKICAgICAgICAgLy8gb3RoZXJ3aXNlLCB3ZSBnZXQgcGFsaW5kcm9tZSBlcnJvcnMg
aW4gdGhlIEFYIGhpZXJhcmNoeS4KICAgICAgICAgaWYgKGNoaWxkLT5pc0F0dGFjaG1lbnQoKSkg
ewogICAgICAgICAgICAgaWYgKGlkIGF0dGFjaG1lbnRWaWV3ID0gd3JhcHBlci5hdHRhY2htZW50
VmlldykKICAgICAgICAgICAgICAgICByZXR1cm4gYXR0YWNobWVudFZpZXc7Ci0gICAgICAgIH0K
KyAgICAgICAgfSBlbHNlIGlmIChjaGlsZC0+aXNSZW1vdGVGcmFtZSgpKQorICAgICAgICAgICAg
cmV0dXJuIGNoaWxkLT5yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpLmdldCgpOwogCiAgICAg
ICAgIHJldHVybiB3cmFwcGVyOwogICAgIH0pLmF1dG9yZWxlYXNlKCk7CkBAIC0zODksNyArMzkw
LDcgQEAgTlNBcnJheSAqbWFrZU5TQXJyYXkoY29uc3QgV2ViQ29yZTo6QVhDb3JlT2JqZWN0OjpB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGMKIC0gKEJPT0wpaXNJc29sYXRlZE9iamVjdAog
ewogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCi0gICAgYXV0byogYmFj
a2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0ciBiYWNraW5nT2Jq
ZWN0ID0gZHluYW1pY0Rvd25jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3Q+KHNlbGYuYmFzZVVwZGF0
ZUJhY2tpbmdTdG9yZSk7CiAgICAgcmV0dXJuIGJhY2tpbmdPYmplY3QgJiYgYmFja2luZ09iamVj
dC0+aXNBWElzb2xhdGVkT2JqZWN0SW5zdGFuY2UoKTsKICNlbHNlCiAgICAgcmV0dXJuIE5POwpA
QCAtNTIzLDcgKzUyNCw3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRQYXRoVG9TY3JlZW5TcGFjZUZ1
bmN0aW9uKFBhdGhDb252ZXJzaW9uSW5mbyYgY29udmVyc2lvbiwgY29uCiAKIC0gKENHUmVjdClj
b252ZXJ0UmVjdFRvU3BhY2U6KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpcmVjdCBzcGFjZToo
QWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZSlzcGFjZQogewotICAgIGF1dG8qIGJhY2tpbmdP
YmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHIgYmFja2luZ09iamVjdCA9
IGR5bmFtaWNEb3duY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0PihzZWxmLmJhc2VVcGRhdGVCYWNr
aW5nU3RvcmUpOwogICAgIGlmICghYmFja2luZ09iamVjdCkKICAgICAgICAgcmV0dXJuIENHUmVj
dFplcm87CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggZTdh
Mjk3NWIwODU0Li41ZGUxMWMyYWMzNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyTWFjLm1tCkBAIC0zNCw2ICszNCw3IEBACiAjaW1wb3J0ICJBWElzb2xhdGVkT2JqZWN0Lmgi
CiAjaW1wb3J0ICJBWExvZ2dlci5oIgogI2ltcG9ydCAiQVhPYmplY3RDYWNoZS5oIgorI2ltcG9y
dCAiQVhSZW1vdGVGcmFtZS5oIgogI2ltcG9ydCAiQVhUZXh0TWFya2VyLmgiCiAjaW1wb3J0ICJB
Y2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlMYWJlbC5o
IgpAQCAtNDc5LDYgKzQ4MCwxMCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICNkZWZpbmUg
TlNBY2Nlc3NpYmlsaXR5VGV4dElucHV0TWFya2VkVGV4dE1hcmtlclJhbmdlQXR0cmlidXRlIEAi
QVhUZXh0SW5wdXRNYXJrZWRUZXh0TWFya2VyUmFuZ2UiCiAjZW5kaWYKIAorI2lmbmRlZiBrQVhD
b252ZXJ0UmVsYXRpdmVGcmFtZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUKKyNkZWZpbmUga0FYQ29u
dmVydFJlbGF0aXZlRnJhbWVQYXJhbWV0ZXJpemVkQXR0cmlidXRlIEAiQVhDb252ZXJ0UmVsYXRp
dmVGcmFtZSIKKyNlbmRpZgorCiBAaW1wbGVtZW50YXRpb24gV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIKIAogLSAodm9pZClkZXRhY2gKQEAgLTY5Miw3ICs2OTcsNyBAQCBzdGF0aWMgUmV0
YWluUHRyPEFYVGV4dE1hcmtlclJlZj4gcHJldmlvdXNUZXh0TWFya2VyKEFYT2JqZWN0Q2FjaGUq
IGNhY2hlLCBjb25zdAogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBhdXRv
KiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgUmVmUHRyPEFYQ29y
ZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OwogICAgIGlmICgh
YmFja2luZ09iamVjdCkKICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMTI1Niw3ICsxMjYxLDcg
QEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAKIC0gKE5TQXJyYXkgKily
ZW5kZXJXaWRnZXRDaGlsZHJlbgogewotICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4
QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBiYWNraW5nT2JqZWN0ID0g
c2VsZi5heEJhY2tpbmdPYmplY3Q7CiAgICAgaWYgKCFiYWNraW5nT2JqZWN0IHx8ICFiYWNraW5n
T2JqZWN0LT5pc1dpZGdldCgpKQogICAgICAgICByZXR1cm4gbmlsOwogCkBAIC0xMjc5LDcgKzEy
ODQsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogLSAoaWQpcmVtb3Rl
QWNjZXNzaWJpbGl0eVBhcmVudE9iamVjdAogewotICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBz
ZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBiYWNraW5nT2Jq
ZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CiAgICAgcmV0dXJuIGJhY2tpbmdPYmplY3QgPyBi
YWNraW5nT2JqZWN0LT5yZW1vdGVQYXJlbnRPYmplY3QoKSA6IG5pbDsKIH0KIApAQCAtMTI5Niw3
ICsxMzAxLDcgQEAgc3RhdGljIHZvaWQgY29udmVydFRvVmVjdG9yKE5TQXJyYXkqIGFycmF5LCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2gKIAogLSAoQVhUZXh0TWFya2VyUmFu
Z2VSZWYpc2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UKIHsKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0
ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2lu
Z09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OwogICAgIGlmICghYmFja2luZ09iamVjdCkK
ICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMTM2NiwxMiArMTM3MSwxOCBAQCBzdGF0aWMgdm9p
ZCBXZWJUcmFuc2Zvcm1DR1BhdGhUb05TQmV6aWVyUGF0aCh2b2lkKiBpbmZvLCBjb25zdCBDR1Bh
dGhFbGVtZW50ICplbAogCiAtIChOU1N0cmluZyopcm9sZQogeworICAgIFJlZlB0cjxBWENvcmVP
YmplY3Q+IGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBpZiAoIWJh
Y2tpbmdPYmplY3QpCisgICAgICAgIHJldHVybiBuaWw7CisKIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0JFR0lOCi0gICAgaWYgKHNlbGYuYXhCYWNraW5nT2JqZWN0LT5pc0F0dGFjaG1l
bnQoKSkKKyAgICBpZiAoYmFja2luZ09iamVjdC0+aXNBdHRhY2htZW50KCkpCiAgICAgICAgIHJl
dHVybiBbW3NlbGYgYXR0YWNobWVudFZpZXddIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpO
U0FjY2Vzc2liaWxpdHlSb2xlQXR0cmlidXRlXTsKKyAgICBpZiAoYmFja2luZ09iamVjdC0+aXNS
ZW1vdGVGcmFtZSgpKQorICAgICAgICByZXR1cm4gW2JhY2tpbmdPYmplY3QtPnJlbW90ZUZyYW1l
UGxhdGZvcm1FbGVtZW50KCkuZ2V0KCkgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNj
ZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGVdOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECiAKLSAgICBOU1N0cmluZyAqc3RyaW5nID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPnJvbGVQ
bGF0Zm9ybVN0cmluZygpOworICAgIE5TU3RyaW5nICpzdHJpbmcgPSBiYWNraW5nT2JqZWN0LT5y
b2xlUGxhdGZvcm1TdHJpbmcoKTsKICAgICBpZiAoc3RyaW5nLmxlbmd0aCkKICAgICAgICAgcmV0
dXJuIHN0cmluZzsKICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5VW5rbm93blJvbGU7CkBAIC0x
Mzc5LDcgKzEzOTAsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogLSAo
Qk9PTClpc0VtcHR5R3JvdXAKIHsKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJh
Y2tpbmdPYmplY3Q7CisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNl
bGYuYXhCYWNraW5nT2JqZWN0OwogICAgIGlmICghYmFja2luZ09iamVjdCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCkBAIC0xMzg4LDYgKzEzOTksOSBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19FTkQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAKKyAgICBpZiAoYmFj
a2luZ09iamVjdC0+aXNSZW1vdGVGcmFtZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAg
ICByZXR1cm4gW1tzZWxmIHJvbGVdIGlzRXF1YWw6TlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlXQog
ICAgICAgICAmJiBiYWNraW5nT2JqZWN0LT5jaGlsZHJlbigpLmlzRW1wdHkoKQogICAgICAgICAm
JiAhW1tzZWxmIHJlbmRlcldpZGdldENoaWxkcmVuXSBjb3VudF07CkBAIC0xMzk2LDcgKzE0MTAs
NyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0JFR0lOCiAtIChOU1N0cmluZyopc3Vicm9sZQogewotICAgIGF1dG8qIGJh
Y2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHI8QVhDb3JlT2Jq
ZWN0PiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CiAgICAgaWYgKCFiYWNr
aW5nT2JqZWN0KQogICAgICAgICByZXR1cm4gbmlsOwogCkBAIC0xNDEzLDcgKzE0MjcsNyBAQCBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogLSAoTlNTdHJpbmcqKXJvbGVEZXNj
cmlwdGlvbgogewotICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVj
dDsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tp
bmdPYmplY3Q7CiAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQogICAgICAgICByZXR1cm4gbmlsOwog
CkBAIC0xNDIxLDYgKzE0MzUsOCBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJ
TgogICAgIC8vIGF0dGFjaG1lbnRzIGhhdmUgdGhlIEFYSW1hZ2Ugcm9sZSwgYnV0IGEgZGlmZmVy
ZW50IHN1YnJvbGUKICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNBdHRhY2htZW50KCkpCiAgICAg
ICAgIHJldHVybiBbW3NlbGYgYXR0YWNobWVudFZpZXddIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpOU0FjY2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRpb25BdHRyaWJ1dGVdOworICAgIGlmIChi
YWNraW5nT2JqZWN0LT5pc1JlbW90ZUZyYW1lKCkpCisgICAgICAgIHJldHVybiBbYmFja2luZ09i
amVjdC0+cmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKS5nZXQoKSBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlXTsKIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAgICAgU3RyaW5nIHJvbGVEZXNjcmlw
dGlvbiA9IGJhY2tpbmdPYmplY3QtPnJvbGVEZXNjcmlwdGlvbigpOwpAQCAtMTQ3Myw2ICsxNDg5
LDI4IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIHJldHVybiBheFNj
cm9sbFZpZXcgPyBbYXhTY3JvbGxWaWV3LT5wbGF0Zm9ybVdpZGdldCgpIHdpbmRvd10gOiBuaWw7
CiB9CiAKKy0gKE5TQXJyYXkgKilfdHJhbnNmb3JtU3BlY2lhbENoaWxkcmVuQ2FzZXM6KFJlZlB0
cjxBWENvcmVPYmplY3Q+KWJhY2tpbmdPYmplY3QKK3sKKyNpZiBFTkFCTEUoTU9ERUxfRUxFTUVO
VCkKKyAgICBpZiAoYmFja2luZ09iamVjdC0+aXNNb2RlbCgpKSB7CisgICAgICAgIGF1dG8gbW9k
ZWxDaGlsZHJlbiA9IGJhY2tpbmdPYmplY3QtPm1vZGVsRWxlbWVudENoaWxkcmVuKCk7CisgICAg
ICAgIGlmIChtb2RlbENoaWxkcmVuLnNpemUoKSkgeworICAgICAgICAgICAgcmV0dXJuIGNyZWF0
ZU5TQXJyYXkoV1RGTW92ZShtb2RlbENoaWxkcmVuKSwgW10gKGF1dG8mJiBjaGlsZCkgLT4gaWQg
eworICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZC5nZXQoKTsKKyAgICAgICAgICAgIH0pLmF1
dG9yZWxlYXNlKCk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKworICAgIGNvbnN0IGF1dG8m
IGNoaWxkcmVuID0gYmFja2luZ09iamVjdC0+Y2hpbGRyZW4oKTsKKyAgICBpZiAoIWNoaWxkcmVu
LnNpemUoKSkgeworICAgICAgICBpZiAoTlNBcnJheSAqY2hpbGRyZW4gPSBbc2VsZiByZW5kZXJX
aWRnZXRDaGlsZHJlbl0pCisgICAgICAgICAgICByZXR1cm4gY2hpbGRyZW47CisgICAgfQorCisg
ICAgcmV0dXJuIG5pbDsKK30KKwogLy8gRklYTUU6IHNwbGl0IHVwIHRoaXMgZnVuY3Rpb24gaW4g
YSBiZXR0ZXIgd2F5LgogLy8gc3VnZ2VzdGlvbnM6IFVzZSBhIGhhc2ggdGFibGUgdGhhdCBtYXBz
IGF0dHJpYnV0ZSBuYW1lcyB0byBmdW5jdGlvbiBjYWxscywKIC8vIG9yIG1heWJlIHBvaW50ZXJz
IHRvIG1lbWJlciBmdW5jdGlvbnMKQEAgLTE1MzEsMjIgKzE1NjksOSBAQCBBTExPV19ERVBSRUNB
VEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICB9CiAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUg
aXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXSB8fCBbYXR0
cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5Jbk5hdmln
YXRpb25PcmRlckF0dHJpYnV0ZV0pIHsKLSNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKLSAgICAg
ICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzTW9kZWwoKSkgewotICAgICAgICAgICAgYXV0byBtb2Rl
bENoaWxkcmVuID0gYmFja2luZ09iamVjdC0+bW9kZWxFbGVtZW50Q2hpbGRyZW4oKTsKLSAgICAg
ICAgICAgIGlmIChtb2RlbENoaWxkcmVuLnNpemUoKSkgewotICAgICAgICAgICAgICAgIHJldHVy
biBjcmVhdGVOU0FycmF5KFdURk1vdmUobW9kZWxDaGlsZHJlbiksIFtdIChhdXRvJiYgY2hpbGQp
IC0+IGlkIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkLmdldCgpOwotICAgICAg
ICAgICAgICAgIH0pLmF1dG9yZWxlYXNlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSNl
bmRpZgotCi0gICAgICAgIGNvbnN0IGF1dG8mIGNoaWxkcmVuID0gYmFja2luZ09iamVjdC0+Y2hp
bGRyZW4oKTsKLSAgICAgICAgaWYgKGNoaWxkcmVuLmlzRW1wdHkoKSkgewotICAgICAgICAgICAg
aWYgKE5TQXJyYXkgKndpZGdldENoaWxkcmVuID0gW3NlbGYgcmVuZGVyV2lkZ2V0Q2hpbGRyZW5d
KQotICAgICAgICAgICAgICAgIHJldHVybiB3aWRnZXRDaGlsZHJlbjsKLSAgICAgICAgfQorICAg
ICAgICBOU0FycmF5ICpzcGVjaWFsQ2hpbGRyZW4gPSBbc2VsZiBfdHJhbnNmb3JtU3BlY2lhbENo
aWxkcmVuQ2FzZXM6YmFja2luZ09iamVjdF07CisgICAgICAgIGlmIChzcGVjaWFsQ2hpbGRyZW4u
Y291bnQpCisgICAgICAgICAgICByZXR1cm4gc3BlY2lhbENoaWxkcmVuOwogCiAgICAgICAgIC8v
IFRoZSB0cmVlJ3MgKEFYT3V0bGluZSkgY2hpbGRyZW4gYXJlIHN1cHBvc2VkIHRvIGJlIGl0cyBy
b3dzIGFuZCBjb2x1bW5zLgogICAgICAgICAvLyBUaGUgQVJJQSBzcGVjIGRvZXNuJ3QgaGF2ZSBj
b2x1bW5zLCBzbyB3ZSBqdXN0IG5lZWQgcm93cy4KQEAgLTE1NTcsNyArMTU4Miw3IEBAIEFMTE9X
X0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICBpZiAoYmFja2luZ09iamVj
dC0+aXNUcmVlSXRlbSgpKQogICAgICAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdP
YmplY3QtPmFyaWFUcmVlSXRlbUNvbnRlbnQoKSk7CiAKLSAgICAgICAgcmV0dXJuIG1ha2VOU0Fy
cmF5KGNoaWxkcmVuKTsKKyAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdPYmplY3Qt
PmNoaWxkcmVuKCkpOwogICAgIH0KIAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9T
dHJpbmc6IE5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGVdKSB7CkBAIC0x
NzEzLDE2ICsxNzM4LDE0IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAog
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eUVu
YWJsZWRBdHRyaWJ1dGVdKQogICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhCb29s
OiBiYWNraW5nT2JqZWN0LT5pc0VuYWJsZWQoKV07CiAKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUg
aXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlTaXplQXR0cmlidXRlXSkgewotICAgICAg
ICBhdXRvIHNpemUgPSBiYWNraW5nT2JqZWN0LT5zaXplKCk7Ci0gICAgICAgIHJldHVybiBbTlNW
YWx1ZSB2YWx1ZVdpdGhTaXplOk5TTWFrZVNpemUoc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgp
KV07Ci0gICAgfQorICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nl
c3NpYmlsaXR5U2l6ZUF0dHJpYnV0ZV0pCisgICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdp
dGhTaXplOihDR1NpemUpYmFja2luZ09iamVjdC0+c2l6ZSgpXTsKIAogICAgIGlmIChbYXR0cmli
dXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5UHJpbWFyeVNjcmVlbkhlaWdo
dEF0dHJpYnV0ZV0pCiAgICAgICAgIHJldHVybiBAKGJhY2tpbmdPYmplY3QtPnByaW1hcnlTY3Jl
ZW5SZWN0KCkuaGVpZ2h0KCkpOwogCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0
cmluZzpOU0FjY2Vzc2liaWxpdHlQb3NpdGlvbkF0dHJpYnV0ZV0pCi0gICAgICAgIHJldHVybiBA
KENHUG9pbnQoYmFja2luZ09iamVjdC0+c2NyZWVuUmVsYXRpdmVQb3NpdGlvbigpKSk7CisgICAg
ICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhQb2ludDooQ0dQb2ludCliYWNraW5nT2JqZWN0
LT5zY3JlZW5SZWxhdGl2ZVBvc2l0aW9uKCldOwogCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlQYXRoQXR0cmlidXRlXSkKICAgICAgICAgcmV0
dXJuIFtzZWxmIHBhdGhdOwpAQCAtMjIzNyw2ICsyMjYwLDEwIEBAIEFMTE9XX0RFUFJFQ0FURURf
SU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICByZXR1cm4gcmFuZ2UgPyByYW5nZS5wbGF0Zm9y
bURhdGEoKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCkgOiBuaWw7CiAgICAgfQogCisgICAgLy8gVm9p
Y2VPdmVyIHByb3BlcnR5IHRvIGlnbm9yZSBjZXJ0YWluIGdyb3Vwcy4KKyAgICBpZiAoW2F0dHJp
YnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiQVhBdXRvSW50ZXJhY3RhYmxlIl0pCisgICAgICAg
IHJldHVybiBAKGJhY2tpbmdPYmplY3QtPmlzUmVtb3RlRnJhbWUoKSk7CisKICAgICAvLyBVc2Vk
IGJ5IExheW91dFRlc3RzIG9ubHksIG5vdCBieSBBVCBjbGllbnRzLgogICAgIGlmIChVTkxJS0VM
WShbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWEFSSUFSb2xlIl0pKQogICAgICAg
ICByZXR1cm4gYmFja2luZ09iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCk7CkBAIC0yMzMwLDcg
KzIzNTcsOCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAg
aWYgKGF4T2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkgewogICAgICAgICAgICAgaWYgKGlkIGF0dGFj
aG1lbnRWaWV3ID0gW2F4T2JqZWN0LT53cmFwcGVyKCkgYXR0YWNobWVudFZpZXddKQogICAgICAg
ICAgICAgICAgIHJldHVybiBhdHRhY2htZW50VmlldzsKLSAgICAgICAgfQorICAgICAgICB9IGVs
c2UgaWYgKGF4T2JqZWN0LT5pc1JlbW90ZUZyYW1lKCkpCisgICAgICAgICAgICByZXR1cm4gYXhP
YmplY3QtPnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkuZ2V0KCk7CiAKICAgICAgICAgLy8g
T25seSBjYWxsIG91dCB0byB0aGUgbWFpbi10aHJlYWQgaWYgdGhpcyBvYmplY3QgaGFzIGEgYmFj
a2luZyB3aWRnZXQgdG8gcXVlcnkuCiAgICAgICAgIGlmIChheE9iamVjdC0+aXNXaWRnZXQoKSkg
ewpAQCAtMjUwNyw2ICsyNTM1LDEwIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05T
X0VORAogICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc1dlYkFyZWEoKSkKICAgICAgICAgcmV0dXJu
IHdlYkFyZWFQYXJhbUF0dHJzOwogCisgICAgLy8gVGhlIG9iamVjdCB0aGF0IHNlcnZlcyB1cCB0
aGUgcmVtb3RlIGZyYW1lIGFsc28gaXMgdGhlIG9uZSB0aGF0IGRvZXMgdGhlIGZyYW1lIGNvbnZl
cnNpb24uCisgICAgaWYgKGJhY2tpbmdPYmplY3QtPmhhc1JlbW90ZUZyYW1lQ2hpbGQoKSkKKyAg
ICAgICAgcmV0dXJuIFtwYXJhbUF0dHJzIGFycmF5QnlBZGRpbmdPYmplY3Q6a0FYQ29udmVydFJl
bGF0aXZlRnJhbWVQYXJhbWV0ZXJpemVkQXR0cmlidXRlXTsKKwogICAgIHJldHVybiBwYXJhbUF0
dHJzOwogfQogCkBAIC0yNTc4LDcgKzI2MTAsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19FTkQKIHsKICAgICBBWFRSQUNFKCJXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBh
Y2Nlc3NpYmlsaXR5UGVyZm9ybVNob3dNZW51QWN0aW9uIl9zKTsKIAotICAgIGF1dG8qIGJhY2tp
bmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0
PiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CiAgICAgaWYgKCFiYWNraW5n
T2JqZWN0KSB7CiAgICAgICAgIEFYTE9HKG1ha2VTdHJpbmcoIk5vIGJhY2tpbmdPYmplY3QgZm9y
IHdyYXBwZXIgIiwgaGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihzZWxmKSkpKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtMjgyMiw3ICsyODU0LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBM
RU1FTlRBVElPTlNfRU5ECiAgICAgaWYgKCFyYW5nZS5sZW5ndGgpCiAgICAgICAgIHJldHVybiBu
aWw7CiAKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7Cisg
ICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2Jq
ZWN0OwogICAgIGlmICghYmFja2luZ09iamVjdCkKICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAt
MzE3Nyw2ICszMjA5LDE4IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2lkZ2V0Q2hpbGRyZW47CiAgICAgICAgICAgICAg
ICAgY3JpdGVyaWEucmVzdWx0c0xpbWl0IC09IFt3aWRnZXRDaGlsZHJlbiBjb3VudF07CiAgICAg
ICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoYmFja2luZ09iamVjdC0+aXNSZW1vdGVGcmFt
ZSgpCisgICAgICAgICAgICAmJiBjcml0ZXJpYS5zZWFyY2hLZXlzLmNvbnRhaW5zKEFjY2Vzc2li
aWxpdHlTZWFyY2hLZXk6OkFueVR5cGUpCisgICAgICAgICAgICAmJiAoIWNyaXRlcmlhLnZpc2li
bGVPbmx5IHx8IGJhY2tpbmdPYmplY3QtPmlzVmlzaWJsZSgpKSkgeworICAgICAgICAgICAgTlNB
cnJheSAqcmVtb3RlRnJhbWVDaGlsZHJlbiA9IFtzZWxmIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZV07CisgICAgICAgICAgICBBU1NF
UlQocmVtb3RlRnJhbWVDaGlsZHJlbi5jb3VudCA9PSAxKTsKKyAgICAgICAgICAgIGlmIChyZW1v
dGVGcmFtZUNoaWxkcmVuLmNvdW50ID09IDEpIHsKKyAgICAgICAgICAgICAgICBOU1VJbnRlZ2Vy
IGluY2x1ZGVkQ2hpbGRyZW5Db3VudCA9IHN0ZDo6bWluKFtyZW1vdGVGcmFtZUNoaWxkcmVuIGNv
dW50XSwgTlNVSW50ZWdlcihjcml0ZXJpYS5yZXN1bHRzTGltaXQpKTsKKyAgICAgICAgICAgICAg
ICB3aWRnZXRDaGlsZHJlbiA9IFtyZW1vdGVGcmFtZUNoaWxkcmVuIHN1YmFycmF5V2l0aFJhbmdl
Ok5TTWFrZVJhbmdlKDAsIGluY2x1ZGVkQ2hpbGRyZW5Db3VudCldOworICAgICAgICAgICAgICAg
IGlmIChbd2lkZ2V0Q2hpbGRyZW4gY291bnRdID49IGNyaXRlcmlhLnJlc3VsdHNMaW1pdCkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlbW90ZUZyYW1lQ2hpbGRyZW47CisgICAgICAgICAg
ICAgICAgY3JpdGVyaWEucmVzdWx0c0xpbWl0IC09IFt3aWRnZXRDaGlsZHJlbiBjb3VudF07Cisg
ICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgcmVzdWx0czsKQEAgLTM2NzQsNiArMzcxOCwxMSBA
QCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBpZiAoVU5MSUtFTFko
W2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6X0FYVGV4dE1hcmtlclJhbmdlRm9yTlNSYW5nZUF0
dHJpYnV0ZV0pKQogICAgICAgICByZXR1cm4gYmFja2luZ09iamVjdC0+dGV4dE1hcmtlclJhbmdl
Rm9yTlNSYW5nZShyYW5nZSkucGxhdGZvcm1EYXRhKCkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwog
CisgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOmtBWENvbnZlcnRSZWxhdGl2ZUZy
YW1lUGFyYW1ldGVyaXplZEF0dHJpYnV0ZV0pIHsKKyAgICAgICAgYXV0byogcGFyZW50ID0gYmFj
a2luZ09iamVjdC0+cGFyZW50T2JqZWN0KCk7CisgICAgICAgIHJldHVybiBwYXJlbnQgPyBbTlNW
YWx1ZSB2YWx1ZVdpdGhSZWN0OnBhcmVudC0+Y29udmVydEZyYW1lVG9TcGFjZShGbG9hdFJlY3Qo
cmVjdCksIEFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2U6OlBhZ2UpXSA6IG5pbDsKKyAgICB9
CisKICAgICAvLyBUaGVyZSBhcmUgc29tZSBwYXJhbWV0ZXJzIHRoYXQgc3VwZXIgaGFuZGxlcyB0
aGF0IGFyZSBub3QgZXhwbGljaXRseSByZXR1cm5lZCBieSB0aGUgbGlzdCBvZiB0aGUgZWxlbWVu
dCdzIGF0dHJpYnV0ZXMuCiAgICAgLy8gSW4gdGhhdCBjYXNlIGl0IG11c3QgYmUgcGFzc2VkIHRv
IHN1cGVyLgogICAgIHJldHVybiBbc3VwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOmF0
dHJpYnV0ZSBmb3JQYXJhbWV0ZXI6cGFyYW1ldGVyXTsKQEAgLTM3MjcsOCArMzc3NiwxMCBAQCBB
TExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgaWYgKCFjaGlsZCkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlciAqY2hpbGRXcmFwcGVyID0gY2hpbGQtPndyYXBwZXIoKTsKLSAgICAgICAgaWYgKGNoaWxk
V3JhcHBlciA9PSB0YXJnZXRDaGlsZCB8fCAoY2hpbGQtPmlzQXR0YWNobWVudCgpICYmIFtjaGls
ZFdyYXBwZXIgYXR0YWNobWVudFZpZXddID09IHRhcmdldENoaWxkKSkKKyAgICAgICAgaWYgKGNo
aWxkV3JhcHBlciA9PSB0YXJnZXRDaGlsZCB8fCAoY2hpbGQtPmlzQXR0YWNobWVudCgpICYmIFtj
aGlsZFdyYXBwZXIgYXR0YWNobWVudFZpZXddID09IHRhcmdldENoaWxkKQorICAgICAgICAgICAg
fHwgKGNoaWxkLT5pc1JlbW90ZUZyYW1lKCkgJiYgY2hpbGQtPnJlbW90ZUZyYW1lUGxhdGZvcm1F
bGVtZW50KCkgPT0gdGFyZ2V0Q2hpbGQpKSB7CiAgICAgICAgICAgICByZXR1cm4gaTsKKyAgICAg
ICAgfQogICAgIH0KICAgICByZXR1cm4gTlNOb3RGb3VuZDsKIH0KQEAgLTM3NDUsNyArMzc5Niw3
IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgaWYgKFthdHRyaWJ1
dGUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXSkgewog
ICAgICAgICAvLyBUcmVlIGl0ZW1zIG9iamVjdCByZXR1cm5zIGEgZGlmZmVyZW50IHNldCBvZiBj
aGlsZHJlbiB0aGFuIHRob3NlIHRoYXQgYXJlIGluIGNoaWxkcmVuKCkKICAgICAgICAgLy8gYmVj
YXVzZSBhbiBBWE91dGxpbmUgKHRoZSBtYWMgcm9sZSBpcyBiZWNvbWVzKSBoYXMgc29tZSBvZGQg
c3RpcHVsYXRpb25zLgotICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNUcmVlKCkgfHwgYmFj
a2luZ09iamVjdC0+aXNUcmVlSXRlbSgpKQorICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNU
cmVlKCkgfHwgYmFja2luZ09iamVjdC0+aXNUcmVlSXRlbSgpIHx8IGJhY2tpbmdPYmplY3QtPmlz
UmVtb3RlRnJhbWUoKSkKICAgICAgICAgICAgIHJldHVybiBbW3NlbGYgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXSBjb3VudF07CiAK
ICAgICAgICAgYXV0byBjaGlsZHJlblNpemUgPSBiYWNraW5nT2JqZWN0LT5jaGlsZHJlbigpLnNp
emUoKTsKQEAgLTM3ODEsMTYgKzM4MzIsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19FTkQKIAogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxp
dHlDaGlsZHJlbkF0dHJpYnV0ZV0pIHsKICAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmNoaWxk
cmVuKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBOU0FycmF5ICpjaGlsZHJlbiA9IG5pbDsK
LSNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKLSAgICAgICAgICAgIGlmIChiYWNraW5nT2JqZWN0
LT5pc01vZGVsKCkpIHsKLSAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IGNyZWF0ZU5TQXJyYXko
YmFja2luZ09iamVjdC0+bW9kZWxFbGVtZW50Q2hpbGRyZW4oKSwgW10gKGF1dG8mJiBjaGlsZCkg
LT4gaWQgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGQuZ2V0KCk7Ci0gICAgICAg
ICAgICAgICAgfSkuYXV0b3JlbGVhc2UoKTsKLSAgICAgICAgICAgIH0gZWxzZQotI2VuZGlmCi0g
ICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbc2VsZiByZW5kZXJXaWRnZXRDaGlsZHJlbl07Ci0g
ICAgICAgICAgICAKKyAgICAgICAgICAgIE5TQXJyYXkgKmNoaWxkcmVuID0gW3NlbGYgX3RyYW5z
Zm9ybVNwZWNpYWxDaGlsZHJlbkNhc2VzOmJhY2tpbmdPYmplY3RdOwogICAgICAgICAgICAgaWYg
KCFjaGlsZHJlbikKICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwogCkBAIC0zODIxLDggKzM4
NjMsMTMgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICAgICAgICAg
IC8vIFRoZSBhdHRhY2htZW50IHZpZXcgc2hvdWxkIGJlIHJldHVybmVkLCBvdGhlcndpc2UgQVgg
cGFsaW5kcm9tZSBlcnJvcnMgb2NjdXIuCiAgICAgICAgICAgICBpZCBhdHRhY2htZW50VmlldyA9
IG5pbDsKLSAgICAgICAgICAgIGlmIChbd3JhcHBlciBpc0tpbmRPZkNsYXNzOltXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlciBjbGFzc11dICYmIHdyYXBwZXIuYXhCYWNraW5nT2JqZWN0ICYm
IHdyYXBwZXIuYXhCYWNraW5nT2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkKLSAgICAgICAgICAgICAg
ICBhdHRhY2htZW50VmlldyA9IFt3cmFwcGVyIGF0dGFjaG1lbnRWaWV3XTsKKyAgICAgICAgICAg
IGlmIChbd3JhcHBlciBpc0tpbmRPZkNsYXNzOltXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ciBjbGFzc11dICYmIHdyYXBwZXIuYXhCYWNraW5nT2JqZWN0KSB7CisgICAgICAgICAgICAgICAg
aWYgKHdyYXBwZXIuYXhCYWNraW5nT2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkKKyAgICAgICAgICAg
ICAgICAgICAgYXR0YWNobWVudFZpZXcgPSBbd3JhcHBlciBhdHRhY2htZW50Vmlld107CisgICAg
ICAgICAgICAgICAgZWxzZSBpZiAod3JhcHBlci5heEJhY2tpbmdPYmplY3QtPmlzUmVtb3RlRnJh
bWUoKSkKKyAgICAgICAgICAgICAgICAgICAgYXR0YWNobWVudFZpZXcgPSB3cmFwcGVyLmF4QmFj
a2luZ09iamVjdC0+cmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKS5nZXQoKTsKKyAgICAgICAg
ICAgIH0KKwogICAgICAgICAgICAgW3N1YmFycmF5IGFkZE9iamVjdDphdHRhY2htZW50VmlldyA/
IGF0dGFjaG1lbnRWaWV3IDogd3JhcHBlcl07CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCAyNThjMTRiODZhOGIuLjU3MTdhZGUyYTQ1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTEwODUsNiArMTA4NSwxMSBA
QCBSZW1vdGVBWE9iamVjdFJlZiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjphY2Nlc3NpYmlsaXR5
UmVtb3RlT2JqZWN0KCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorSW50UG9pbnQgRW1wdHlG
cmFtZUxvYWRlckNsaWVudDo6YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCkKK3sKKyAg
ICByZXR1cm4geyB9OworfQorCiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJF
RSkKIHZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6c2V0QVhJc29sYXRlZFRyZWVSb290KFdl
YkNvcmU6OkFYQ29yZU9iamVjdCopCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
RnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAwOThjZTU4ZDExMTkuLjQ2NzJkZTI5ODUzMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0x
ODQsNiArMTg0LDcgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJlbW90
ZUFYT2JqZWN0UmVmIGFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSBmaW5hbDsKKyAgICBJbnRQ
b2ludCBhY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKSBmaW5hbDsKICNpZiBFTkFCTEUo
QUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQogICAgIHZvaWQgc2V0QVhJc29sYXRlZFRyZWVS
b290KFdlYkNvcmU6OkFYQ29yZU9iamVjdCopIGZpbmFsOwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9jYWxGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0xvY2FsRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBiMmQ1NmYwNTBhZTku
LjAwZDNhZDVlMmNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvY2FsRnJh
bWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9jYWxGcmFtZUxv
YWRlckNsaWVudC5oCkBAIC0yOTAsNiArMjkwLDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIC8vIEFsbG93IGFuIGFjY2Vzc2liaWxpdHkgb2JqZWN0IHRvIHJldHJpZXZlIGEg
RnJhbWUgcGFyZW50IGlmIHRoZXJlJ3Mgbm8gUGxhdGZvcm1XaWRnZXQuCiAgICAgdmlydHVhbCBS
ZW1vdGVBWE9iamVjdFJlZiBhY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkgPSAwOworICAgIHZp
cnR1YWwgSW50UG9pbnQgYWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCkgPSAwOwogI2lm
IEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAgICAgdmlydHVhbCB2b2lkIHNl
dEFYSXNvbGF0ZWRUcmVlUm9vdChBWENvcmVPYmplY3QqKSA9IDA7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCmluZGV4IDNhOWI3OTFjNTNlNi4uN2E2YmI4MjkxYTMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKQEAgLTIyMDgsMTEgKzIyMDgsMTggQEAgYm9vbCBQYWdlOjpzaG91bGRVcGRhdGVBY2Nlc3Np
YmlsaXR5UmVnaW9ucygpIGNvbnN0CiAgICAgQVNTRVJUKG1fbGFzdFJlbmRlcmluZ1VwZGF0ZVRp
bWVzdGFtcCA+PSBtX2xhc3RBY2Nlc3NpYmlsaXR5T2JqZWN0UmVnaW9uc1VwZGF0ZSk7CiAgICAg
aWYgKChtX2xhc3RSZW5kZXJpbmdVcGRhdGVUaW1lc3RhbXAgLSBtX2xhc3RBY2Nlc3NpYmlsaXR5
T2JqZWN0UmVnaW9uc1VwZGF0ZSkgPCB1cGRhdGVJbnRlcnZhbCkgewogICAgICAgICAvLyBXZSd2
ZSBhbHJlYWR5IHVwZGF0ZWQgYWNjZXNzaWJpbGl0eSBvYmplY3QgcmVjdHMgcmVjZW50bHksIHNv
IHNraXAgdGhpcyB1cGRhdGUgYW5kIHNjaGVkdWxlIGFub3RoZXIgZm9yIGxhdGVyLgotICAgICAg
ICBhdXRvKiBsb2NhbE1haW5GcmFtZSA9IGR5bmFtaWNEb3duY2FzdDxMb2NhbEZyYW1lPihtYWlu
RnJhbWUoKSk7Ci0gICAgICAgIFJlZlB0ciBtYWluRG9jdW1lbnQgPSBsb2NhbE1haW5GcmFtZSA/
IGxvY2FsTWFpbkZyYW1lLT5kb2N1bWVudCgpIDogbnVsbHB0cjsKKworICAgICAgICBSZWZQdHI8
RG9jdW1lbnQ+IHByb3RlY3RlZE1haW5Eb2N1bWVudDsKKyAgICAgICAgaWYgKGF1dG8qIGxvY2Fs
TWFpbkZyYW1lID0gZHluYW1pY0Rvd25jYXN0PExvY2FsRnJhbWU+KG1haW5GcmFtZSgpKSkKKyAg
ICAgICAgICAgIHByb3RlY3RlZE1haW5Eb2N1bWVudCA9IGxvY2FsTWFpbkZyYW1lID8gbG9jYWxN
YWluRnJhbWUtPmRvY3VtZW50KCkgOiBudWxscHRyOworICAgICAgICBlbHNlIGlmIChhdXRvKiBy
ZW1vdGVGcmFtZSA9IGR5bmFtaWNEb3duY2FzdDxSZW1vdGVGcmFtZT4obWFpbkZyYW1lKCkpKSB7
CisgICAgICAgICAgICBpZiAoYXV0byogb3duZXIgPSByZW1vdGVGcmFtZS0+b3duZXJFbGVtZW50
KCkpCisgICAgICAgICAgICAgICAgcHJvdGVjdGVkTWFpbkRvY3VtZW50ID0gJihvd25lci0+ZG9j
dW1lbnQoKSk7CisgICAgICAgIH0KKwogICAgICAgICAvLyBJZiBhY2Nlc3NpYmlsaXR5IGlzIGVu
YWJsZWQgYW5kIHdlIGhhdmUgYSBtYWluIGRvY3VtZW50LCB0aGF0IGRvY3VtZW50IHNob3VsZCBo
YXZlIGFuIEFYIG9iamVjdCBjYWNoZS4KLSAgICAgICAgQVNTRVJUKCFtYWluRG9jdW1lbnQgfHwg
bWFpbkRvY3VtZW50LT5leGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSk7Ci0gICAgICAgIGlmIChDaGVj
a2VkUHRyIHRvcEF4T2JqZWN0Q2FjaGUgPSBtYWluRG9jdW1lbnQgPyBtYWluRG9jdW1lbnQtPmV4
aXN0aW5nQVhPYmplY3RDYWNoZSgpIDogbnVsbHB0cikKKyAgICAgICAgQVNTRVJUKCFwcm90ZWN0
ZWRNYWluRG9jdW1lbnQgfHwgcHJvdGVjdGVkTWFpbkRvY3VtZW50LT5leGlzdGluZ0FYT2JqZWN0
Q2FjaGUoKSk7CisgICAgICAgIGlmIChDaGVja2VkUHRyIHRvcEF4T2JqZWN0Q2FjaGUgPSBwcm90
ZWN0ZWRNYWluRG9jdW1lbnQgPyBwcm90ZWN0ZWRNYWluRG9jdW1lbnQtPmV4aXN0aW5nQVhPYmpl
Y3RDYWNoZSgpIDogbnVsbHB0cikKICAgICAgICAgICAgIHRvcEF4T2JqZWN0Q2FjaGUtPnNjaGVk
dWxlT2JqZWN0UmVnaW9uc1VwZGF0ZSgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmNwcAppbmRleCA2ZmY4MTdiOTM2MWYuLjI0ZTAxOTNj
ZTVmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5jcHAKQEAgLTEwMCw2ICsxMDAsMjEg
QEAgdm9pZCBSZW1vdGVGcmFtZTo6YnJvYWRjYXN0RnJhbWVSZW1vdmFsVG9PdGhlclByb2Nlc3Nl
cygpCiAgICAgbV9jbGllbnQtPmJyb2FkY2FzdEZyYW1lUmVtb3ZhbFRvT3RoZXJQcm9jZXNzZXMo
KTsKIH0KIAordm9pZCBSZW1vdGVGcmFtZTo6dXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5
T2Zmc2V0KEludFBvaW50IG9mZnNldCkKK3sKKyAgICBtX2NsaWVudC0+dXBkYXRlUmVtb3RlRnJh
bWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KGZyYW1lSUQoKSwgb2Zmc2V0KTsKK30KKwordm9pZCBSZW1v
dGVGcmFtZTo6dW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50
aWZpZXIpCit7CisgICAgbV9jbGllbnQtPnVuYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMo
cHJvY2Vzc0lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUZyYW1lOjpiaW5kUmVtb3RlQWNj
ZXNzaWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIHN0ZDo6c3Bhbjxjb25zdCB1
aW50OF90PiBkYXRhVG9rZW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpzcGFu
PGNvbnN0IHVpbnQ4X3Q+LCBpbnQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHJldHVy
biBtX2NsaWVudC0+YmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMocHJvY2Vzc0lkZW50aWZp
ZXIsIGZyYW1lSUQoKSwgZGF0YVRva2VuLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9
CisKIEZyYW1lVmlldyogUmVtb3RlRnJhbWU6OnZpcnR1YWxWaWV3KCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV92aWV3LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1v
dGVGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5oCmluZGV4IDdiYWRh
OTkwOGEyZC4uYmI5OGUwOTYxZjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jl
bW90ZUZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5oCkBAIC0z
Myw2ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSW50UG9pbnQ7CiBj
bGFzcyBSZW1vdGVET01XaW5kb3c7CiBjbGFzcyBSZW1vdGVGcmFtZUNsaWVudDsKIGNsYXNzIFJl
bW90ZUZyYW1lVmlldzsKQEAgLTYyLDYgKzYzLDkgQEAgcHVibGljOgogICAgIE1hcmthYmxlPExh
eWVySG9zdGluZ0NvbnRleHRJZGVudGlmaWVyPiBsYXllckhvc3RpbmdDb250ZXh0SWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJIb3N0aW5nQ29udGV4dElkZW50aWZpZXI7IH0KIAog
ICAgIFN0cmluZyByZW5kZXJUcmVlQXNUZXh0KHNpemVfdCBiYXNlSW5kZW50LCBPcHRpb25TZXQ8
UmVuZGVyQXNUZXh0RmxhZz4pOworICAgIHZvaWQgYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFt
ZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBpbnQpPiYmKTsKKyAg
ICB2b2lkIHVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChJbnRQb2ludCk7Cisg
ICAgdm9pZCB1bmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCk7CiAKICAgICB2b2lk
IHNldEN1c3RvbVVzZXJBZ2VudChjb25zdCBTdHJpbmcmIGN1c3RvbVVzZXJBZ2VudCkgeyBtX2N1
c3RvbVVzZXJBZ2VudCA9IGN1c3RvbVVzZXJBZ2VudDsgfQogICAgIFN0cmluZyBjdXN0b21Vc2Vy
QWdlbnQoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVt
b3RlRnJhbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVDbGllbnQu
aAppbmRleCA0ZWZkMTAzZjM5MTIuLjU0MWEwZDAxYzU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9SZW1vdGVGcmFtZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UmVtb3RlRnJhbWVDbGllbnQuaApAQCAtMzAsNiArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIERhdGFTZWdtZW50OwogY2xhc3MgRnJhbWVMb2FkUmVxdWVzdDsKIGNsYXNz
IEludFNpemU7CiBjbGFzcyBTZWN1cml0eU9yaWdpbkRhdGE7CkBAIC00OCw2ICs0OSw5IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyByZW5kZXJUcmVlQXNUZXh0KHNpemVfdCBiYXNlSW5k
ZW50LCBPcHRpb25TZXQ8UmVuZGVyQXNUZXh0RmxhZz4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
YnJvYWRjYXN0RnJhbWVSZW1vdmFsVG9PdGhlclByb2Nlc3NlcygpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgY2xvc2VQYWdlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBiaW5kUmVtb3RlQWNjZXNz
aWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIEZyYW1lSWRlbnRpZmllciB0YXJn
ZXQsIGNvbnN0IHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhVG9rZW4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBpbnQpPiYmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChG
cmFtZUlkZW50aWZpZXIgdGFyZ2V0LCBJbnRQb2ludCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1
bmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBmb2N1cygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdW5mb2N1cygpID0gMDsKICAgICB2aXJ0
dWFsIH5SZW1vdGVGcmFtZUNsaWVudCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVu
dC5oCmluZGV4IDg0ZmM0MTllNTljYS4uNDJlZWU2NmFiMTZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGFnZUNsaWVudC5oCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFn
QWN0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9yQ2xpZW50Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Gb2N1c0RpcmVjdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVJZGVudGlm
aWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnB1dE1vZGUuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L01lZGlhQ29udHJvbHNDb250ZXh0TWVudUl0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9s
bFR5cGVzLmg+CkBAIC0zMTgsNyArMzE5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBl
eGVjdXRlVW5kb1JlZG8oVW5kb09yUmVkbykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aGVlbEV2
ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShjb25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50JikgPSAw
OwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NpYmlsaXR5V2Vi
UHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChzdGQ6OnNw
YW48Y29uc3QgdWludDhfdD4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgcGlkX3QpID0gMDsK
ICAgICB2aXJ0dWFsIGJvb2wgZXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2VsZWN0b3IoY29uc3QgU3Ry
aW5nJiBzZWxlY3RvcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTZWN1cmVJbnB1dFN0
YXRlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXNldFNlY3VyZUlucHV0U3RhdGUoKSA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAK
aW5kZXggNmQwMzQwN2NlZTlmLi5iNjQ2NTYyYTdkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKQEAgLTU0Nyw3ICs1NDcsNyBAQCB2
b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpyZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lKGNvbnN0CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotdm9p
ZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRv
a2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhKQordm9pZCBQcm92aXNpb25hbFBhZ2VQ
cm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25z
dCB1aW50OF90PiBkYXRhLCBGcmFtZUlkZW50aWZpZXIpCiB7CiAgICAgbV9hY2Nlc3NpYmlsaXR5
VG9rZW4gPSBWZWN0b3IoZGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJv
dmlzaW9uYWxQYWdlUHJveHkuaAppbmRleCAwM2IyNWJiZjRlMDYuLjk0NTBjMWZjYzYzMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCkBAIC0x
NzQsNyArMTc0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlcXVlc3RQYXNzd29yZEZvclF1aWNr
TG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CiAjZW5kaWYKICNpZiBQTEFURk9STShD
T0NPQSkKLSAgICB2b2lkIHJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6
OnNwYW48Y29uc3QgdWludDhfdD4pOworICAgIHZvaWQgcmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNz
aWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAg
IHZvaWQgYmluZEFjY2Vzc2liaWxpdHlUcmVlKGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcAppbmRleCBmMmZjOGE1NGQ4ODMuLjIzMDMwN2Ex
NzRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKQEAgLTQ1
LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQYWdl
UHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBhc3RlYm9hcmRQcm94eS5oIgorI2luY2x1
ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAj
aW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIldlYnNpdGVQb2xpY2llc0Rh
dGEuaCIKQEAgLTE4NCw2ICsxODUsMTQgQEAgdm9pZCBXZWJGcmFtZVByb3h5OjpuYXZpZ2F0ZVNl
cnZpY2VXb3JrZXJDbGllbnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dEkKICAgICB9
KTsKIH0KIAordm9pZCBXZWJGcmFtZVByb3h5OjpiaW5kQWNjZXNzaWJpbGl0eUZyYW1lV2l0aERh
dGEoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCit7CisgICAgaWYgKCFtX3BhZ2UpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6
QmluZEFjY2Vzc2liaWxpdHlGcmFtZVdpdGhEYXRhKG1fZnJhbWVJRCwgZGF0YSkpOworfQorCiB2
b2lkIFdlYkZyYW1lUHJveHk6OmxvYWRVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
cmVmZXJyZXIpCiB7CiAgICAgaWYgKCFtX3BhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJG
cmFtZVByb3h5LmgKaW5kZXggYjBkYWViMGU2NGZjLi43MTViYjgwYmFiNjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKQEAgLTE3MCw2ICsxNzAsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCByZW1vdGVQcm9jZXNzRGlkVGVybWluYXRlKCk7CiAgICAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gd2ViUGFnZUlESW5DdXJyZW50UHJvY2VzcygpOwog
ICAgIHZvaWQgbm90aWZ5UGFyZW50T2ZMb2FkQ29tcGxldGlvbihXZWJQcm9jZXNzUHJveHkmKTsK
KyAgICB2b2lkIHJlbW92ZVJlbW90ZVBhZ2VzRm9yU3VzcGVuc2lvbigpOworICAgIHZvaWQgYmlu
ZEFjY2Vzc2liaWxpdHlGcmFtZVdpdGhEYXRhKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Pik7CiAK
ICAgICBib29sIGlzRm9jdXNlZCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAppbmRleCBjOTA5YzU3YmFiYzcuLjk4YjkzNmNkN2VlNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMjk1LDggKzEyOTUsMTIgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnN3YXBUb1Byb3Zpc2lvbmFsUGFnZShzdGQ6OnVuaXF1ZV9wdHI8
UHJvdmlzaW9uYWxQYWdlUHJveHk+IHAKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGF1dG8g
YWNjZXNzaWJpbGl0eVRva2VuID0gcHJvdmlzaW9uYWxQYWdlLT50YWtlQWNjZXNzaWJpbGl0eVRv
a2VuKCk7Ci0gICAgaWYgKCFhY2Nlc3NpYmlsaXR5VG9rZW4uaXNFbXB0eSgpKQotICAgICAgICBy
ZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oeyBhY2Nlc3NpYmlsaXR5VG9rZW4u
ZGF0YSgpLCBhY2Nlc3NpYmlsaXR5VG9rZW4uc2l6ZSgpIH0pOworICAgIGlmICghYWNjZXNzaWJp
bGl0eVRva2VuLmlzRW1wdHkoKSkgeworICAgICAgICByZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3Np
YmlsaXR5VG9rZW4oeyBhY2Nlc3NpYmlsaXR5VG9rZW4uZGF0YSgpLCBhY2Nlc3NpYmlsaXR5VG9r
ZW4uc2l6ZSgpIH0sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciB7CisgICAgICAgICAgICBPYmpl
Y3RJZGVudGlmaWVyPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllclR5cGU+KDApLAorICAgICAgICAg
ICAgT2JqZWN0SWRlbnRpZmllcjxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllclR5cGU+KDApCisg
ICAgICAgIH0pOworICAgIH0KICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0o
V1BFKQogICAgIGF1dG8gYWNjZXNzaWJpbGl0eVBsdWdJRCA9IHByb3Zpc2lvbmFsUGFnZS0+YWNj
ZXNzaWJpbGl0eVBsdWdJRCgpOwpAQCAtMTM3ODAsNiArMTM3ODQsMjIgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmFkZENvbnNvbGVNZXNzYWdlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBNZXNzYWdl
U291cmNlIG1lc3MKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2Fn
ZSB7IGZyYW1lSUQsIG1lc3NhZ2VTb3VyY2UsIG1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgY29yZUlk
ZW50aWZpZXIgfSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpiaW5kUmVtb3RlQWNjZXNzaWJp
bGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBjb25zdCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YVRva2VuLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgaW50KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luY1RvUHJvY2Vz
c0NvbnRhaW5pbmdGcmFtZShmcmFtZUlELCBNZXNzYWdlczo6V2ViUGFnZTo6QmluZFJlbW90ZUFj
Y2Vzc2liaWxpdHlGcmFtZXMocHJvY2Vzc0lkZW50aWZpZXIsIGZyYW1lSUQsIGRhdGFUb2tlbikp
OworICAgIGlmICghc2VuZFJlc3VsdC5zdWNjZWVkZWQoKSkKKyAgICAgICAgcmV0dXJuIGNvbXBs
ZXRpb25IYW5kbGVyKHsgfSwgMCk7CisKKyAgICBhdXRvIFtmcmFtZURhdGFUb2tlbiwgZnJhbWVQ
cm9jZXNzSWRlbnRpZmllcl0gPSBzZW5kUmVzdWx0LnRha2VSZXBseSgpOworCisgICAgY29tcGxl
dGlvbkhhbmRsZXIoZnJhbWVEYXRhVG9rZW4sIGZyYW1lUHJvY2Vzc0lkZW50aWZpZXIpOworfQor
Cit2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpJbnRQb2ludCBvZmZz
ZXQpCit7CisgICAgc2VuZFRvUHJvY2Vzc0NvbnRhaW5pbmdGcmFtZShmcmFtZUlELCBNZXNzYWdl
czo6V2ViUGFnZTo6VXBkYXRlUmVtb3RlUGFnZUFjY2Vzc2liaWxpdHlPZmZzZXQoZnJhbWVJRCwg
b2Zmc2V0KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgV0VCUEFHRVBS
T1hZX1JFTEVBU0VfTE9HCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4
IGRmMGNmMWYzZDYyYS4uMjUyNTk3MWVmZDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaApAQCAtMTM1NSw3ICsxMzU1LDcgQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgLy8gQ2FsbGVkIGJ5IHRoZSB3ZWIgcHJvY2VzcyB0aHJvdWdoIGEgbWVzc2Fn
ZS4KLSAgICB2b2lkIHJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNw
YW48Y29uc3QgdWludDhfdD4pOworICAgIHZvaWQgcmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJp
bGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyKTsKICAgICAvLyBDYWxsZWQgYnkgdGhlIFVJIHByb2Nlc3Mgd2hlbiBpdCBpcyByZWFkeSB0
byBzZW5kIGl0cyB0b2tlbnMgdG8gdGhlIHdlYiBwcm9jZXNzLgogICAgIHZvaWQgcmVnaXN0ZXJV
SVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBlbGVt
ZW50VG9rZW4sIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiB3aW5kb3dUb2tlbik7CiAgICAgdm9p
ZCByZXBsYWNlU2VsZWN0aW9uV2l0aFBhc3RlYm9hcmREYXRhKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiB0eXBlcywgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKQEAgLTI5ODUsNiArMjk4NSw4IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBmb2N1c1JlbW90ZUZyYW1lKElQQzo6Q29ubmVjdGlvbiYsIFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAgICAgdm9pZCBwb3N0TWVzc2FnZVRvUmVtb3RlKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciBzb3VyY2UsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2lu
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgdGFyZ2V0LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YT4gdGFyZ2V0T3JpZ2luLCBjb25zdCBXZWJDb3JlOjpNZXNzYWdl
V2l0aE1lc3NhZ2VQb3J0cyYpOwogICAgIHZvaWQgcmVuZGVyVHJlZUFzVGV4dChXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIHNpemVfdCBiYXNlSW5kZW50LCBPcHRpb25TZXQ8V2ViQ29yZTo6UmVu
ZGVyQXNUZXh0RmxhZz4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmKTsKKyAg
ICB2b2lkIGJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmll
ciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0
YVRva2VuLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Piwg
aW50KT4mJik7CisgICAgdm9pZCB1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpJbnRQb2ludCk7CiAKICAgICB2b2lk
IHNldFRleHRJbmRpY2F0b3JGcm9tRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJD
b3JlOjpUZXh0SW5kaWNhdG9yRGF0YSYmLCB1aW50NjRfdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA0ZmY1M2FjMDE4ZTEu
LjMxOGZjMzMxMmI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbgpAQCAtMzI1LDcgKzMyNSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQ
cm94eSB7CiAgICAgRXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2VsZWN0b3IoU3RyaW5nIHNlbGVjdG9y
KSAtPiAoYm9vbCBoYW5kbGVkKSBTeW5jaHJvbm91cwogCiAgICAgIyBSZW1vdGUgYWNjZXNzaWJp
bGl0eSBtZXNzYWdlcwotICAgIFJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihz
dGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSkKKyAgICBSZWdpc3RlcldlYlByb2Nlc3NBY2Nl
c3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEsIFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciBmcmFtZUlEKQogCiAgICAgIyBTcGVlY2ggbWVzc2FnZXMKICAgICBHZXRJ
c1NwZWFraW5nKCkgLT4gKGJvb2wgaXNTcGVha2luZykgU3luY2hyb25vdXMKQEAgLTYzMSw0ICs2
MzEsNiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIEZvY3VzUmVtb3RlRnJhbWUo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCiAgICAgUG9zdE1lc3NhZ2VUb1JlbW90
ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgc291cmNlLCBTdHJpbmcgc291cmNlT3JpZ2luLCBX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgdGFyZ2V0LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YT4gdGFyZ2V0T3JpZ2luLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVdp
dGhNZXNzYWdlUG9ydHMgbWVzc2FnZSkKICAgICBSZW5kZXJUcmVlQXNUZXh0KFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciBpZGVudGlmaWVyLCBzaXplX3QgYmFzZUluZGVudCwgT3B0aW9uU2V0PFdl
YkNvcmU6OlJlbmRlckFzVGV4dEZsYWc+IGJlaGF2aW9yKSAtPiAoU3RyaW5nIHJlbmRlclRyZWVE
dW1wKSBTeW5jaHJvbm91cworICAgIEJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGludCBw
cm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0ZDo6
c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhVG9rZW4pIC0+IChzdGQ6OnNwYW48Y29uc3QgdWludDhf
dD4gdG9rZW4sIGludCBwcm9jZXNzSWRlbnRpZmllcikgU3luY2hyb25vdXMKKyAgICBVcGRhdGVS
ZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIFdlYkNvcmU6OkludFBvaW50IG9mZnNldCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggMTBjNGY2YWUxMjUwLi42Mzg4
Y2I0NjcyYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5oCkBAIC0xMTAsNyArMTEwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyQWxs
RWRpdENvbW1hbmRzKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBjYW5VbmRvUmVkbyhVbmRvT3JSZWRv
KSBvdmVycmlkZTsKICAgICB2b2lkIGV4ZWN1dGVVbmRvUmVkbyhVbmRvT3JSZWRvKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChzdGQ6OnNw
YW48Y29uc3QgdWludDhfdD4pIG92ZXJyaWRlOworICAgIHZvaWQgYWNjZXNzaWJpbGl0eVdlYlBy
b2Nlc3NUb2tlblJlY2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyLCBwaWRfdCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBleGVjdXRlU2F2ZWRDb21t
YW5kQnlTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9yKSBvdmVycmlkZTsKICAgICB2b2lk
IHVwZGF0ZVNlY3VyZUlucHV0U3RhdGUoKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc2V0U2VjdXJl
SW5wdXRTdGF0ZSgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IGNiMjNmNDk3NGE2Yi4uYjVhZGRkY2UyM2ZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1t
CkBAIC0zODksNyArMzg5LDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZXhlY3V0ZVVuZG9SZWRv
KFVuZG9PclJlZG8gdW5kb09yUmVkbykKICAgICByZXR1cm4gKHVuZG9PclJlZG8gPT0gVW5kb09y
UmVkbzo6VW5kbykgPyBbW2NvbnRlbnRWaWV3KCkgdW5kb01hbmFnZXJdIHVuZG9dIDogW1tjb250
ZW50VmlldygpIHVuZG9NYW5hZ2VyXSByZWRvXTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6
YWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50
OF90PiBkYXRhKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6YWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NU
b2tlblJlY2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhLCBXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIHBpZF90KQogewogICAgIE5TRGF0YSAqcmVtb3RlVG9rZW4gPSBbTlNEYXRh
IGRhdGFXaXRoQnl0ZXM6ZGF0YS5kYXRhKCkgbGVuZ3RoOmRhdGEuc2l6ZSgpXTsKICAgICBbY29u
dGVudFZpZXcoKSBfc2V0QWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlbjpyZW1vdGVUb2tlbl07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9T
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRl
eCA1YjEwZjU5YzY2NjEuLmRlYjRkNThlNWZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC03NjMsMTEgKzc2MywxMCBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKGJvb2wpCiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyV2ViUHJvY2Vzc0Fj
Y2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSkKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpyZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFu
PGNvbnN0IHVpbnQ4X3Q+IGRhdGEsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogewotICAgIHBy
b3RlY3RlZFBhZ2VDbGllbnQoKS0+YWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVk
KGRhdGEpOwotfSAgICAKLQorICAgIHBhZ2VDbGllbnQoKS5hY2Nlc3NpYmlsaXR5V2ViUHJvY2Vz
c1Rva2VuUmVjZWl2ZWQoZGF0YSwgZnJhbWVJRCwgbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKS0+
cmVtb3RlUHJvY2Vzc0lEKCkpOworfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVsYXlBY2Nlc3Np
YmlsaXR5Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uTmFtZSwgc3RkOjpz
cGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCmluZGV4IGZiNmM2MDc4NjdhZi4uYmY4ZGE0MzBkOGE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxN
YWMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMu
aApAQCAtMTc2LDcgKzE3Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXN0dXJlRXZlbnRXYXNO
b3RIYW5kbGVkQnlXZWJDb3JlKGNvbnN0IE5hdGl2ZVdlYkdlc3R1cmVFdmVudCYpIG92ZXJyaWRl
OwogI2VuZGlmCiAKLSAgICB2b2lkIGFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZl
ZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pIG92ZXJyaWRlOworICAgIHZvaWQgYWNjZXNzaWJp
bGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyLCBwaWRfdCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIG1ha2VG
aXJzdFJlc3BvbmRlcigpIG92ZXJyaWRlOwogICAgIHZvaWQgYXNzaXN0aXZlVGVjaG5vbG9neU1h
a2VGaXJzdFJlc3BvbmRlcigpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCmluZGV4IDA3ODBmMThkYTFjMi4uMDE1MGVjNDUx
MmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGxNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBs
TWFjLm1tCkBAIC01ODEsOSArNTgxLDkgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0VGV4dElu
ZGljYXRvckFuaW1hdGlvblByb2dyZXNzKGZsb2F0IHByb2dyZXNzKQogICAgIG1faW1wbC0+c2V0
VGV4dEluZGljYXRvckFuaW1hdGlvblByb2dyZXNzKHByb2dyZXNzKTsKIH0KIAotdm9pZCBQYWdl
Q2xpZW50SW1wbDo6YWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKHN0ZDo6c3Bh
bjxjb25zdCB1aW50OF90PiBkYXRhKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6YWNjZXNzaWJpbGl0
eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhLCBX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgcGlkX3QgcGlkKQogewotICAgIG1faW1w
bC0+c2V0QWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlbihbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6
ZGF0YS5kYXRhKCkgbGVuZ3RoOmRhdGEuc2l6ZSgpXSk7CisgICAgbV9pbXBsLT5zZXRBY2Nlc3Np
YmlsaXR5V2ViUHJvY2Vzc1Rva2VuKFtOU0RhdGEgZGF0YVdpdGhCeXRlczpkYXRhLmRhdGEoKSBs
ZW5ndGg6ZGF0YS5zaXplKCldLCBmcmFtZUlELCBwaWQpOwogfQogICAgIAogdm9pZCBQYWdlQ2xp
ZW50SW1wbDo6ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVD
b250ZXh0JiBsYXllclRyZWVDb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggY2ZiMTBmZGJiNDEzLi44Njk2MTdhMjlkOGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAt
MzA2LDEyICszMDYsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1EaWN0aW9uYXJ5
TG9va3VwKGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8mIGRpY3Rpb24KICAgICBwcm90ZWN0ZWRQ
YWdlQ2xpZW50KCktPmRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKGRpY3Rpb25hcnlQb3B1cElu
Zm8pOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJp
bGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhKQordm9pZCBXZWJQYWdlUHJv
eHk6OnJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3Qg
dWludDhfdD4gZGF0YSwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCiB7CiAgICAgaWYgKCFoYXNS
dW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgcHJvdGVjdGVkUGFn
ZUNsaWVudCgpLT5hY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoZGF0YSk7Cisg
ICAgcHJvdGVjdGVkUGFnZUNsaWVudCgpLT5hY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVj
ZWl2ZWQoZGF0YSwgZnJhbWVJRCwgbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKS0+cmVtb3RlUHJv
Y2Vzc0lEKCkpOwogfSAgICAKIAogdm9pZCBXZWJQYWdlUHJveHk6Om1ha2VGaXJzdFJlc3BvbmRl
cigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3SW1wbC5oCmluZGV4IDNlOWEw
OTM1YTc1OS4uYWYxMWNlN2Y2NjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2Vi
Vmlld0ltcGwuaApAQCAtNDQ4LDcgKzQ0OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElnbm9y
ZXNNb3VzZURyYWdnZWRFdmVudHMoYm9vbCk7CiAgICAgYm9vbCBpZ25vcmVzTW91c2VEcmFnZ2Vk
RXZlbnRzKCkgY29uc3QgeyByZXR1cm4gbV9pZ25vcmVzTW91c2VEcmFnZ2VkRXZlbnRzOyB9CiAK
LSAgICB2b2lkIHNldEFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW4oTlNEYXRhICopOworICAg
IHZvaWQgc2V0QWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlbihOU0RhdGEgKiwgV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBwaWRfdCk7CiAgICAgdm9pZCBhY2Nlc3NpYmlsaXR5UmVnaXN0ZXJV
SVByb2Nlc3NUb2tlbnMoKTsKICAgICB2b2lkIHVwZGF0ZVJlbW90ZUFjY2Vzc2liaWxpdHlSZWdp
c3RyYXRpb24oYm9vbCByZWdpc3RlclByb2Nlc3MpOwogICAgIGlkIGFjY2Vzc2liaWxpdHlGb2N1
c2VkVUlFbGVtZW50KCk7CkBAIC05MjgsNiArOTI4LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfRU5ECiAgICAgYm9vbCBtX2FsbG93c01hZ25pZmljYXRpb24geyBmYWxzZSB9Owog
CiAgICAgUmV0YWluUHRyPE5TQWNjZXNzaWJpbGl0eVJlbW90ZVVJRWxlbWVudD4gbV9yZW1vdGVB
Y2Nlc3NpYmlsaXR5Q2hpbGQ7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IG1f
cmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lQ2FjaGU7CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1h
Z2U+IG1fcHJvbWlzZWRJbWFnZTsKICAgICBTdHJpbmcgbV9wcm9taXNlZEZpbGVuYW1lOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJbXBsLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJbXBsLm1tCmluZGV4IGNjOGQzYzdmZjBj
Ni4uN2YzNTc3MmFiNGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJ
bXBsLm1tCkBAIC0zNDc5LDEwICszNDc5LDEyIEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldElnbm9y
ZXNNb3VzZURyYWdnZWRFdmVudHMoYm9vbCBpZ25vcmVzTW91c2VEcmFnZ2VkRXZlbnRzKQogICAg
IG1faWdub3Jlc01vdXNlRHJhZ2dlZEV2ZW50cyA9IGlnbm9yZXNNb3VzZURyYWdnZWRFdmVudHM7
CiB9CiAKLXZvaWQgV2ViVmlld0ltcGw6OnNldEFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW4o
TlNEYXRhICpkYXRhKQordm9pZCBXZWJWaWV3SW1wbDo6c2V0QWNjZXNzaWJpbGl0eVdlYlByb2Nl
c3NUb2tlbihOU0RhdGEgKmRhdGEsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBw
aWRfdCBwaWQpCiB7Ci0gICAgbV9yZW1vdGVBY2Nlc3NpYmlsaXR5Q2hpbGQgPSBkYXRhLmxlbmd0
aCA/IGFkb3B0TlMoW1tOU0FjY2Vzc2liaWxpdHlSZW1vdGVVSUVsZW1lbnQgYWxsb2NdIGluaXRX
aXRoUmVtb3RlVG9rZW46ZGF0YV0pIDogbmlsOwotICAgIHVwZGF0ZVJlbW90ZUFjY2Vzc2liaWxp
dHlSZWdpc3RyYXRpb24odHJ1ZSk7CisgICAgaWYgKHBpZCA9PSBtX3BhZ2UtPnByb2Nlc3MoKS5w
cm9jZXNzSUQoKSkgeworICAgICAgICBtX3JlbW90ZUFjY2Vzc2liaWxpdHlDaGlsZCA9IGRhdGEu
bGVuZ3RoID8gYWRvcHROUyhbW05TQWNjZXNzaWJpbGl0eVJlbW90ZVVJRWxlbWVudCBhbGxvY10g
aW5pdFdpdGhSZW1vdGVUb2tlbjpkYXRhXSkgOiBuaWw7CisgICAgICAgIHVwZGF0ZVJlbW90ZUFj
Y2Vzc2liaWxpdHlSZWdpc3RyYXRpb24odHJ1ZSk7CisgICAgfQogfQogCiB2b2lkIFdlYlZpZXdJ
bXBsOjp1cGRhdGVSZW1vdGVBY2Nlc3NpYmlsaXR5UmVnaXN0cmF0aW9uKGJvb2wgcmVnaXN0ZXJQ
cm9jZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDM1
OTg3YTFmODVlNC4uZWNkZGVhOWY5OWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkxvY2FsRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCkBAIC0xODA2LDYgKzE4MDYsMTIgQEAgdm9pZCBXZWJMb2NhbEZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0
ZW4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIAorV2ViQ29yZTo6SW50UG9pbnQgV2ViTG9j
YWxGcmFtZUxvYWRlckNsaWVudDo6YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCkKK3sK
KyAgICBSZWZQdHIgd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICByZXR1cm4gd2ViUGFn
ZSA/IHdlYlBhZ2UtPmFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCgpIDogSW50UG9pbnQo
KTsKK30KKwogUmVtb3RlQVhPYmplY3RSZWYgV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudDo6YWNj
ZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpCiB7CiAgICAgUmVmUHRyIHdlYlBhZ2UgPSBtX2ZyYW1l
LT5wYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAwNjVj
ZTU1MmVhMjEuLmNjZmM5NTI5OTEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNs
aWVudC5oCkBAIC0yNDAsNiArMjQwLDcgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIFJlbW90ZUFYT2JqZWN0UmVmIGFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSBmaW5h
bDsKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBhY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQo
KSBmaW5hbDsKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQogICAgIHZv
aWQgc2V0QVhJc29sYXRlZFRyZWVSb290KFdlYkNvcmU6OkFYQ29yZU9iamVjdCopIGZpbmFsOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlJlbW90ZUZyYW1lQ2xpZW50LmNwcAppbmRleCAzOGIwZjMyNWFhMTYu
LjUzMzIwZWQ5ODFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlJlbW90ZUZyYW1lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuY3BwCkBAIC05Niw2
ICs5Niw0NiBAQCBTdHJpbmcgV2ViUmVtb3RlRnJhbWVDbGllbnQ6OnJlbmRlclRyZWVBc1RleHQo
c2l6ZV90IGJhc2VJbmRlbnQsIE9wdGlvblNldDxSZW5kZQogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKK3ZvaWQgV2ViUmVtb3RlRnJhbWVDbGllbnQ6OnVuYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlG
cmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyKQoreworI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IC8vIE1ha2Ugc3VyZSBBcHBLaXQgc3lzdGVtIGtub3dzIGFib3V0IG91ciByZW1vdGUgVUkgcHJv
Y2VzcyBzdGF0dXMgbm93LgorICAgIGlmIChSZWZQdHIgcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkK
KyAgICAgICAgcGFnZS0+YWNjZXNzaWJpbGl0eU1hbmFnZVJlbW90ZUVsZW1lbnRTdGF0dXMoZmFs
c2UsIHByb2Nlc3NJZGVudGlmaWVyKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHByb2Nlc3NJ
ZGVudGlmaWVyKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlJlbW90ZUZyYW1lQ2xpZW50Ojp1cGRh
dGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIFdlYkNvcmU6OkludFBvaW50IG9mZnNldCkKK3sKKyAgICBpZiAoUmVmUHRyIHBh
Z2UgPSBtX2ZyYW1lLT5wYWdlKCkpCisgICAgICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6VXBkYXRlUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5T2Zmc2V0KGZyYW1lSUQsIG9m
ZnNldCkpOworfQorCit2b2lkIFdlYlJlbW90ZUZyYW1lQ2xpZW50OjpiaW5kUmVtb3RlQWNjZXNz
aWJpbGl0eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBjb25zdCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YVRva2VuLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgaW50KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBSZWZQdHIgcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsK
KyAgICBpZiAoIXBhZ2UpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpzcGFuPGNv
bnN0IHVpbnQ4X3Q+IHsgfSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRv
IHNlbmRSZXN1bHQgPSBwYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCaW5k
UmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhwcm9jZXNzSWRlbnRpZmllciwgZnJhbWVJRCwgZGF0
YVRva2VuKSk7CisgICAgaWYgKCFzZW5kUmVzdWx0LnN1Y2NlZWRlZCgpKSB7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiB7IH0sIDApOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBbcmVzdWx0VG9rZW4sIHByb2Nlc3NJZGVudGlm
aWVyUmVzdWx0XSA9IHNlbmRSZXN1bHQudGFrZVJlcGx5KCk7CisKKyAgICAvLyBNYWtlIHN1cmUg
QXBwS2l0IHN5c3RlbSBrbm93cyBhYm91dCBvdXIgcmVtb3RlIFVJIHByb2Nlc3Mgc3RhdHVzIG5v
dy4KKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBwYWdlLT5hY2Nlc3NpYmlsaXR5TWFuYWdlUmVt
b3RlRWxlbWVudFN0YXR1cyh0cnVlLCBwcm9jZXNzSWRlbnRpZmllclJlc3VsdCk7CisjZW5kaWYK
KyAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHRUb2tlbiwgcHJvY2Vzc0lkZW50aWZpZXJSZXN1
bHQpOworfQorCiB2b2lkIFdlYlJlbW90ZUZyYW1lQ2xpZW50Ojpicm9hZGNhc3RGcmFtZVJlbW92
YWxUb090aGVyUHJvY2Vzc2VzKCkKIHsKICAgICBXZWJGcmFtZUxvYWRlckNsaWVudDo6YnJvYWRj
YXN0RnJhbWVSZW1vdmFsVG9PdGhlclByb2Nlc3NlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90ZUZyYW1lQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGll
bnQuaAppbmRleCBlZjBlZGQzMDA0OGIuLmFhYjVkNjY2NzQ5YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90ZUZyYW1lQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90ZUZy
YW1lQ2xpZW50LmgKQEAgLTQ5LDYgKzQ5LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBwb3N0TWVz
c2FnZVRvUmVtb3RlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBzb3VyY2UsIGNvbnN0IFN0cmlu
ZyYgc291cmNlT3JpZ2luLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgdGFyZ2V0LCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gdGFyZ2V0T3JpZ2luLCBjb25zdCBX
ZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYpIGZpbmFsOwogICAgIHZvaWQgY2hhbmdl
TG9jYXRpb24oV2ViQ29yZTo6RnJhbWVMb2FkUmVxdWVzdCYmKSBmaW5hbDsKICAgICBTdHJpbmcg
cmVuZGVyVHJlZUFzVGV4dChzaXplX3QgYmFzZUluZGVudCwgT3B0aW9uU2V0PFdlYkNvcmU6OlJl
bmRlckFzVGV4dEZsYWc+KSBmaW5hbDsKKyAgICB2b2lkIGJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5
RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBz
dGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpzcGFu
PGNvbnN0IHVpbnQ4X3Q+LCBpbnQpPiYmKSBmaW5hbDsKKyAgICB2b2lkIHVuYmluZFJlbW90ZUFj
Y2Vzc2liaWxpdHlGcmFtZXMoaW50KSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZVJlbW90ZUZyYW1l
QWNjZXNzaWJpbGl0eU9mZnNldChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6Oklu
dFBvaW50KSBmaW5hbDsKKwogICAgIHZvaWQgYnJvYWRjYXN0RnJhbWVSZW1vdmFsVG9PdGhlclBy
b2Nlc3NlcygpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VQYWdlKCkgZmluYWw7CiAgICAgdm9pZCBm
b2N1cygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCmluZGV4IGNlZmUyZTIzNDVhYi4uZDRlN2M2YjVkY2Fm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQ
YWdlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2Ev
V2ViUGFnZUNvY29hLm1tCkBAIC03Nyw2ICs3Nyw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1VUSVJl
Z2lzdHJ5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VUSVV0aWxpdGllcy5oPgogI2ltcG9ydCA8cGFs
L3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oPgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9O
U0FjY2Vzc2liaWxpdHlTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQ
SS5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oPgogCkBAIC00MDQsMTAg
KzQwNSw1MSBAQCB2b2lkIFdlYlBhZ2U6OmNsZWFyRGljdGF0aW9uQWx0ZXJuYXRpdmVzKFZlY3Rv
cjxEaWN0YXRpb25Db250ZXh0PiYmIGNvbnRleHRzKQogICAgIH0sIERvY3VtZW50TWFya2VyOjpU
eXBlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZXMpOwogfQogCi12b2lkIFdlYlBhZ2U6OmFjY2Vzc2li
aWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKFJldGFpblB0cjxOU0RhdGE+IHJlbW90ZVRva2VuKQor
dm9pZCBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tlbihSZXRhaW5QdHI8
TlNEYXRhPiByZW1vdGVUb2tlbiwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCiB7CiAgICAgc3Rk
OjpzcGFuIGRhdGFUb2tlbihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihbcmVtb3Rl
VG9rZW4gYnl0ZXNdKSwgW3JlbW90ZVRva2VuIGxlbmd0aF0pOwotICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKGRhdGFU
b2tlbikpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJXZWJQcm9j
ZXNzQWNjZXNzaWJpbGl0eVRva2VuKGRhdGFUb2tlbiwgZnJhbWVJRCkpOworfQorCit2b2lkIFdl
YlBhZ2U6OmFjY2Vzc2liaWxpdHlNYW5hZ2VSZW1vdGVFbGVtZW50U3RhdHVzKGJvb2wgcmVnaXN0
ZXJTdGF0dXMsIGludCBwcm9jZXNzSWRlbnRpZmllcikKK3sKKyNpZiBQTEFURk9STShNQUMpCisg
ICAgaWYgKHJlZ2lzdGVyU3RhdHVzKQorICAgICAgICBbTlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlF
bGVtZW50IHJlZ2lzdGVyUmVtb3RlVUlQcm9jZXNzSWRlbnRpZmllcjpwcm9jZXNzSWRlbnRpZmll
cl07CisgICAgZWxzZQorICAgICAgICBbTlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlFbGVtZW50IHVu
cmVnaXN0ZXJSZW1vdGVVSVByb2Nlc3NJZGVudGlmaWVyOnByb2Nlc3NJZGVudGlmaWVyXTsKKyNl
bHNlCisgICAgVU5VU0VEX1BBUkFNKHJlZ2lzdGVyU3RhdHVzKTsKKyAgICBVTlVTRURfUEFSQU0o
cHJvY2Vzc0lkZW50aWZpZXIpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViUGFnZTo6YmluZFJlbW90
ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGFUb2tlbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIGludCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgUmVmUHRyIHdlYkZyYW1lID0gV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCk7CisgICAgaWYgKCF3ZWJGcmFtZSkgeworICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKHsgfSwgMCk7CisgICAgfQorCisgICAgUmVmUHRyIGNvcmVMb2NhbEZyYW1lID0gd2ViRnJh
bWUtPmNvcmVMb2NhbEZyYW1lKCk7CisgICAgaWYgKCFjb3JlTG9jYWxGcmFtZSkgeworICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVy
KHsgfSwgMCk7CisgICAgfQorCisgICAgYXV0byogcmVuZGVyZXIgPSBjb3JlTG9jYWxGcmFtZS0+
Y29udGVudFJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlcikgeworICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgMCk7
CisgICAgfQorCisgICAgcmVnaXN0ZXJSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlUb2tlbnMocHJv
Y2Vzc0lkZW50aWZpZXIsIGRhdGFUb2tlbik7CisKKyAgICAvLyBHZXQgb3VyIHJlbW90ZSB0b2tl
biBkYXRhIGFuZCBzZW5kIGJhY2sgdG8gdGhlIFJlbW90ZUZyYW1lLgorICAgIGF1dG8gcmVtb3Rl
VG9rZW4gPSBhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCk7CisgICAgc3RkOjpzcGFuIHJl
bW90ZURhdGFUb2tlbihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihbcmVtb3RlVG9r
ZW4gYnl0ZXNdKSwgW3JlbW90ZVRva2VuIGxlbmd0aF0pOworICAgIGNvbXBsZXRpb25IYW5kbGVy
KHJlbW90ZURhdGFUb2tlbiwgZ2V0cGlkKCkpOwogfQogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMmRh
NzhjMGVjZjUyLi4zZGZjMDlkMDcwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xNTQzLDYgKzE1NDMsMTYgQEAgdm9pZCBXZWJQYWdlOjpw
bGF0Zm9ybURpZFNlbGVjdEFsbCgpCiAKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IAorI2lmICFQTEFURk9STShDT0NPQSkKK3ZvaWQgV2ViUGFnZTo6YmluZFJlbW90ZUFjY2Vzc2li
aWxpdHlGcmFtZXMoaW50LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHN0ZDo6c3Bhbjxjb25z
dCB1aW50OF90PiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6OnNwYW48Y29uc3QgdWludDhf
dD4sIGludCk+JiYpCit7Cit9CisKK3ZvaWQgV2ViUGFnZTo6dXBkYXRlUmVtb3RlUGFnZUFjY2Vz
c2liaWxpdHlPZmZzZXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpJbnRQb2lu
dCkKK3sKK30KKyNlbmRpZgorCiB2b2lkIFdlYlBhZ2U6OnVwZGF0ZUVkaXRvclN0YXRlQWZ0ZXJM
YXlvdXRJZkVkaXRhYmlsaXR5Q2hhbmdlZCgpCiB7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB1
cGRhdGUgRWRpdG9yU3RhdGVJc0NvbnRlbnRFZGl0YWJsZSB0byB0cmFjayB3aGV0aGVyIHRoZSBz
dGF0ZSBpcyByaWNobHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAppbmRleCA5NDgxMTM2YzY3NjMuLmFmMWVkNzhmZTdlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNjcxLDYgKzY3MSwxMCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBjbGVhckhpc3RvcnkoKTsKIAogICAgIHZvaWQgYWNjZXNzaWJpbGl0eVNldHRpbmdz
RGlkQ2hhbmdlKCk7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBhY2Nlc3NpYmlsaXR5
TWFuYWdlUmVtb3RlRWxlbWVudFN0YXR1cyhib29sLCBpbnQpOworI2VuZGlmCisKICAgICB2b2lk
IHNjcmVlblByb3BlcnRpZXNEaWRDaGFuZ2UoKTsKIAogICAgIHZvaWQgc2NhbGVQYWdlKGRvdWJs
ZSBzY2FsZSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIG9yaWdpbik7CkBAIC0xMDQzLDcgKzEw
NDcsMTAgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgcGxhdGZvcm1J
bml0aWFsaXplQWNjZXNzaWJpbGl0eSgpOwogICAgIHZvaWQgcmVnaXN0ZXJVSVByb2Nlc3NBY2Nl
c3NpYmlsaXR5VG9rZW5zKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBlbGVtZW50VG9rZW4sIHN0
ZDo6c3Bhbjxjb25zdCB1aW50OF90PiB3aW5kb3dUb2tlbik7CisgICAgdm9pZCByZWdpc3RlclJl
bW90ZUZyYW1lQWNjZXNzaWJpbGl0eVRva2VucyhwaWRfdCwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4
X3Q+KTsKICAgICBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0KiBhY2Nlc3NpYmlsaXR5UmVt
b3RlT2JqZWN0KCk7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgYWNjZXNzaWJpbGl0eVJlbW90ZUZy
YW1lT2Zmc2V0KCk7CisgICAgdm9pZCBjcmVhdGVNb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQocGlk
X3QpOwogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAgICAgdm9pZCBj
YWNoZUFYUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwogICAgIHZvaWQgY2Fj
aGVBWFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwpAQCAtMjA5Myw3ICsyMTAwLDcgQEAg
cHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHJlcXVlc3RBY3RpdmVOb3dQ
bGF5aW5nU2Vzc2lvbkluZm8oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sLCBXZWJDb3JlOjpO
b3dQbGF5aW5nSW5mbyYmKT4mJik7CiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYWNjZXNzaWJpbGl0
eVJlbW90ZVRva2VuRGF0YSgpIGNvbnN0OwotICAgIHZvaWQgYWNjZXNzaWJpbGl0eVRyYW5zZmVy
UmVtb3RlVG9rZW4oUmV0YWluUHRyPE5TRGF0YT4pOworICAgIHZvaWQgYWNjZXNzaWJpbGl0eVRy
YW5zZmVyUmVtb3RlVG9rZW4oUmV0YWluUHRyPE5TRGF0YT4sIFdlYkNvcmU6OkZyYW1lSWRlbnRp
Zmllcik7CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0U2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3Zl
RXZlbnRzKGJvb2wgZGlzcGF0Y2gpIHsgbV9zaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVu
dHMgPSBkaXNwYXRjaDsgfQpAQCAtMjIwMyw2ICsyMjEwLDggQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgcmVtb3RlUG9zdE1lc3NhZ2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHNvdXJjZSwgY29u
c3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciB0YXJnZXQs
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmIHRhcmdldE9yaWdp
biwgY29uc3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmKTsKICAgICB2b2lkIHJl
bmRlclRyZWVBc1RleHQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBzaXplX3QgYmFzZUluZGVu
dCwgT3B0aW9uU2V0PFdlYkNvcmU6OlJlbmRlckFzVGV4dEZsYWc+LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0cmluZyYmKT4mJik7CisgICAgdm9pZCBiaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZy
YW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgc3Rk
OjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6c3Bhbjxj
b25zdCB1aW50OF90PiwgaW50KT4mJik7CisgICAgdm9pZCB1cGRhdGVSZW1vdGVQYWdlQWNjZXNz
aWJpbGl0eU9mZnNldChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OkludFBvaW50
KTsKIAogICAgIHZvaWQgcmVxdWVzdFRleHRFeHRyYWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6RmxvYXRSZWN0PiYmIGNvbGxlY3Rpb25SZWN0SW5Sb290VmlldywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpUZXh0RXh0cmFjdGlvbjo6SXRlbSYmKT4mJik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmlu
ZGV4IGM2MDA0N2Q3MzNkNy4uYzY1ZDYwZWEwYmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTQ4Nyw2ICs0ODcs
OSBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6
OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIENvbGxhcHNlU2VsZWN0aW9uSW5GcmFt
ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKICNlbmRpZgogCisgICAgQmluZFJl
bW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGFUb2tl
bikgLT4gKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiB0b2tlbiwgaW50IHByb2Nlc3NJZGVudGlm
aWVyKSBTeW5jaHJvbm91cworICAgIFVwZGF0ZVJlbW90ZVBhZ2VBY2Nlc3NpYmlsaXR5T2Zmc2V0
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpJbnRQb2ludCBvZmZz
ZXQpOworCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgV2luZG93QW5kVmlld0ZyYW1lc0NoYW5n
ZWQoc3RydWN0IFdlYktpdDo6Vmlld1dpbmRvd0Nvb3JkaW5hdGVzIGNvb3JkaW5hdGVzKQogICAg
IFNldE1haW5GcmFtZUlzU2Nyb2xsYWJsZShib29sIGlzU2Nyb2xsYWJsZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggMTA0
NDEwYzgyYzhjLi5hN2M4NjBkMDFmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0yNDMsMTIgKzI0MywxNSBAQCB2b2lk
IFdlYlBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6ZUFjY2Vzc2liaWxpdHkoKQogICAgIG1fbW9ja0Fj
Y2Vzc2liaWxpdHlFbGVtZW50ID0gYWRvcHROUyhbW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmpl
Y3QgYWxsb2NdIGluaXRdKTsKICAgICBbbV9tb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgc2V0V2Vi
UGFnZTp0aGlzXTsKIAotICAgIGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKGFjY2Vz
c2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSk7CisgICAgUmVmUHRyIGxvY2FsTWFpbkZyYW1lID0g
ZHluYW1pY0Rvd25jYXN0PExvY2FsRnJhbWU+KG1fcGFnZS0+bWFpbkZyYW1lKCkpOworICAgIGlm
IChsb2NhbE1haW5GcmFtZSkKKyAgICAgICAgYWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9r
ZW4oYWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0YSgpLCBsb2NhbE1haW5GcmFtZS0+ZnJhbWVJ
RCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybVJlaW5pdGlhbGl6ZSgpCiB7Ci0gICAg
YWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oYWNjZXNzaWJpbGl0eVJlbW90ZVRva2Vu
RGF0YSgpKTsKKyAgICBSZWYgZnJhbWUgPSBDaGVja2VkUmVmKG1fcGFnZS0+Zm9jdXNDb250cm9s
bGVyKCkpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJS
ZW1vdGVUb2tlbihhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCksIGZyYW1lLT5mcmFtZUlE
KCkpOwogfQogCiBSZXRhaW5QdHI8TlNEYXRhPiBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5UmVtb3Rl
VG9rZW5EYXRhKCkgY29uc3QKQEAgLTY0NCw2ICs2NDcsMTYgQEAgTlNPYmplY3QgKldlYlBhZ2U6
OmFjY2Vzc2liaWxpdHlPYmplY3RGb3JNYWluRnJhbWVQbHVnaW4oKQogICAgIHJldHVybiBuaWw7
CiB9CiAgICAgCit2b2lkIFdlYlBhZ2U6OnVwZGF0ZVJlbW90ZVBhZ2VBY2Nlc3NpYmlsaXR5T2Zm
c2V0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6SW50UG9pbnQpCit7CisgICAg
Ly8gRklYTUU6IEltcGxlbWVudAorfQorCit2b2lkIFdlYlBhZ2U6OnJlZ2lzdGVyUmVtb3RlRnJh
bWVBY2Nlc3NpYmlsaXR5VG9rZW5zKHBpZF90LCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pCit7
CisgICAgLy8gRklYTUU6IEltcGxlbWVudAorfQorCiB2b2lkIFdlYlBhZ2U6OnJlZ2lzdGVyVUlQ
cm9jZXNzQWNjZXNzaWJpbGl0eVRva2VucyhzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZWxlbWVu
dFRva2VuLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pCiB7CiAgICAgTlNEYXRhICplbGVtZW50
VG9rZW5EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmVsZW1lbnRUb2tlbi5kYXRhKCkgbGVu
Z3RoOmVsZW1lbnRUb2tlbi5zaXplKCldOwpAQCAtNjYyLDYgKzY3NSwxMiBAQCB2b2lkIFdlYlBh
Z2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZAogICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiB9CiAKK1dlYkNvcmU6
OkludFBvaW50IFdlYlBhZ2U6OmFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCgpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4geyB9OworfQorCiBXS0FjY2Vzc2liaWxp
dHlXZWJQYWdlT2JqZWN0KiBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkKIHsK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9i
amVjdEJhc2UuaAppbmRleCAzOWU5MGUzYzg5NWUuLjQ5NzAwNzBhNDU1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBh
Z2VPYmplY3RCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmgKQEAgLTQ1LDYgKzQ1LDggQEAgY2xh
c3MgQVhDb3JlT2JqZWN0OwogICAgIFdlYkNvcmU6OkludFNpemUgbV9zaXplIFdURl9HVUFSREVE
X0JZX0xPQ0sobV9jYWNoZUxvY2spOwogICAgIFRocmVhZFNhZmVXZWFrUHRyPFdlYkNvcmU6OkFY
Q29yZU9iamVjdD4gbV9pc29sYXRlZFRyZWVSb290OwogI2VuZGlmCisKKyAgICBXZWJDb3JlOjpJ
bnRQb2ludCBtX3JlbW90ZUZyYW1lT2Zmc2V0OwogICAgIFJldGFpblB0cjxpZD4gbV9wYXJlbnQ7
CiAgICAgYm9vbCBtX2hhc01haW5GcmFtZVBsdWdpbjsKIH0KQEAgLTU2LDkgKzU4LDExIEBAIGNs
YXNzIEFYQ29yZU9iamVjdDsKIC0gKHZvaWQpc2V0SXNvbGF0ZWRUcmVlUm9vdDooTmFrZWRQdHI8
V2ViQ29yZTo6QVhDb3JlT2JqZWN0Pilyb290OwogI2VuZGlmCiAtICh2b2lkKXNldFJlbW90ZVBh
cmVudDooaWQpcGFyZW50OworLSAodm9pZClzZXRSZW1vdGVGcmFtZU9mZnNldDooV2ViQ29yZTo6
SW50UG9pbnQpb2Zmc2V0OwogLSAodm9pZClzZXRIYXNNYWluRnJhbWVQbHVnaW46KGJvb2wpaGFz
UGx1Z2luOwogCiAtIChpZClhY2Nlc3NpYmlsaXR5Um9vdE9iamVjdFdyYXBwZXI7CiAtIChpZClh
Y2Nlc3NpYmlsaXR5Rm9jdXNlZFVJRWxlbWVudDsKKy0gKFdlYkNvcmU6OkludFBvaW50KWFjY2Vz
c2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldDsKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RC
YXNlLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJp
bGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tCmluZGV4IDZmOTk1NDVhZWJmNS4uYmVjOGQ3M2ZhYTJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nl
c3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tCkBAIC0z
Niw5ICszNiwxMSBAQAogI2ltcG9ydCAiV0tTdHJpbmdDRi5oIgogI2ltcG9ydCA8V2ViQ29yZS9B
WE9iamVjdENhY2hlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50Lmg+CisjaW1wb3J0IDxX
ZWJDb3JlL0ZyYW1lVHJlZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbEZyYW1lLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0xvY2FsRnJhbWVWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvUmVtb3RlRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xs
Vmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxiYXIuaD4KIApAQCAtNTcsMTEgKzU5LDE3
IEBAIG5hbWVzcGFjZSBheCA9IFdlYkNvcmU6OkFjY2Vzc2liaWxpdHk7CiAgICAgaWYgKCFwYWdl
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8qIGxvY2FsTWFpbkZyYW1lID0g
ZHluYW1pY0Rvd25jYXN0PFdlYkNvcmU6OkxvY2FsRnJhbWU+KHBhZ2UtPm1haW5GcmFtZSgpKTsK
LSAgICBpZiAoIWxvY2FsTWFpbkZyYW1lIHx8ICFsb2NhbE1haW5GcmFtZS0+ZG9jdW1lbnQoKSkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKGF1dG8qIGxvY2FsTWFpbkZyYW1lID0g
ZHluYW1pY0Rvd25jYXN0PFdlYkNvcmU6OkxvY2FsRnJhbWU+KHBhZ2UtPm1haW5GcmFtZSgpKSkg
eworICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBsb2NhbE1haW5GcmFtZS0+ZG9jdW1lbnQo
KSkKKyAgICAgICAgICAgIHJldHVybiBkb2N1bWVudC0+YXhPYmplY3RDYWNoZSgpOworICAgIH0g
ZWxzZSBpZiAoYXV0byogcmVtb3RlTWFpbkZyYW1lID0gZHluYW1pY0Rvd25jYXN0PFdlYkNvcmU6
OlJlbW90ZUZyYW1lPihwYWdlLT5tYWluRnJhbWUoKSkpIHsKKyAgICAgICAgYXV0byYgdHJlZSA9
IHJlbW90ZU1haW5GcmFtZS0+dHJlZSgpOworICAgICAgICBhdXRvKiBmaXJzdEZyYW1lID0gZHlu
YW1pY0Rvd25jYXN0PFdlYkNvcmU6OkxvY2FsRnJhbWU+KHRyZWUuZmlyc3RDaGlsZCgpKTsKKyAg
ICAgICAgYXV0byogZG9jdW1lbnQgPSBmaXJzdEZyYW1lID8gZmlyc3RGcmFtZS0+ZG9jdW1lbnQo
KSA6IG51bGxwdHI7CisgICAgICAgIHJldHVybiBkb2N1bWVudCA/IGRvY3VtZW50LT5heE9iamVj
dENhY2hlKCkgOiBudWxscHRyOworICAgIH0KIAotICAgIHJldHVybiBsb2NhbE1haW5GcmFtZS0+
ZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiAt
IChpZClhY2Nlc3NpYmlsaXR5UGx1Z2luT2JqZWN0CkBAIC0xNTIsNiArMTYwLDE3IEBAIG5hbWVz
cGFjZSBheCA9IFdlYkNvcmU6OkFjY2Vzc2liaWxpdHk7CiAgICAgbV9oYXNNYWluRnJhbWVQbHVn
aW4gPSBoYXNQbHVnaW47CiB9CiAKKy0gKHZvaWQpc2V0UmVtb3RlRnJhbWVPZmZzZXQ6KFdlYkNv
cmU6OkludFBvaW50KW9mZnNldAoreworICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOworICAg
IG1fcmVtb3RlRnJhbWVPZmZzZXQgPSBvZmZzZXQ7Cit9CisKKy0gKFdlYkNvcmU6OkludFBvaW50
KWFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldAoreworICAgIHJldHVybiBtX3JlbW90ZUZy
YW1lT2Zmc2V0OworfQorCiAtICh2b2lkKXNldFJlbW90ZVBhcmVudDooaWQpcGFyZW50CiB7CiAg
ICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IDk2ZWQ2NGFkYmNmZi4uNWY5Yjg4
MGM4MGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V2ViUGFnZU1hYy5tbQpAQCAtMTIzLDE2ICsxMjMsMTIgQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9y
bUluaXRpYWxpemVBY2Nlc3NpYmlsaXR5KCkKICAgICAvLyBDdXJyZW50bHksIGl0IGlzIGFsc28g
bmVlZGVkIHRvIGFsbG9jYXRlIGFuZCBpbml0aWFsaXplIGFuIE5TQXBwbGljYXRpb24gb2JqZWN0
LgogICAgIFtOU0FwcGxpY2F0aW9uIF9hY2Nlc3NpYmlsaXR5SW5pdGlhbGl6ZV07CiAKLSAgICBh
dXRvIG1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCA9IGFkb3B0TlMoW1tXS0FjY2Vzc2liaWxpdHlX
ZWJQYWdlT2JqZWN0IGFsbG9jXSBpbml0XSk7Ci0KICAgICAvLyBHZXQgdGhlIHBpZCBmb3IgdGhl
IHN0YXJ0aW5nIHByb2Nlc3MuCiAgICAgcGlkX3QgcGlkID0gV2ViQ29yZTo6cHJlc2VudGluZ0Fw
cGxpY2F0aW9uUElEKCk7Ci0gICAgaWYgKFttb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihhY2Nlc3NpYmlsaXR5U2V0UHJlc2VudGVyUHJvY2Vzc0lk
ZW50aWZpZXI6KV0pCi0gICAgICAgIFsoaWQpbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50LmdldCgp
IGFjY2Vzc2liaWxpdHlTZXRQcmVzZW50ZXJQcm9jZXNzSWRlbnRpZmllcjpwaWRdOwotICAgIFtt
b2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgc2V0V2ViUGFnZTp0aGlzXTsKLSAgICBtX21vY2tBY2Nl
c3NpYmlsaXR5RWxlbWVudCA9IFdURk1vdmUobW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50KTsKLQot
ICAgIGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKGFjY2Vzc2liaWxpdHlSZW1vdGVU
b2tlbkRhdGEoKSk7CisgICAgY3JlYXRlTW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50KHBpZCk7Cisg
ICAgUmVmUHRyIGxvY2FsTWFpbkZyYW1lID0gZHluYW1pY0Rvd25jYXN0PExvY2FsRnJhbWU+KG1f
cGFnZS0+bWFpbkZyYW1lKCkpOworICAgIGlmIChsb2NhbE1haW5GcmFtZSkKKyAgICAgICAgYWNj
ZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oYWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0
YSgpLCBsb2NhbE1haW5GcmFtZS0+ZnJhbWVJRCgpKTsKIAogICAgIC8vIENsb3NlIE1hY2ggY29u
bmVjdGlvbiB0byBMYXVuY2ggU2VydmljZXMuCiAjaWYgSEFWRShMU19TRVJWRVJfQ09OTkVDVElP
Tl9TVEFUVVNfUkVMRUFTRV9OT1RJRklDQVRJT05TX01BU0spCkBAIC0xNDQsOSArMTQwLDIwIEBA
IHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplQWNjZXNzaWJpbGl0eSgpCiAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkucmV2b2tlTGF1bmNoU2VydmljZXNTYW5kYm94RXh0ZW5zaW9u
KCk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6Y3JlYXRlTW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50KHBp
ZF90IHBpZCkKK3sKKyAgICBhdXRvIG1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCA9IGFkb3B0TlMo
W1tXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0IGFsbG9jXSBpbml0XSk7CisKKyAgICBpZiAo
W21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGFj
Y2Vzc2liaWxpdHlTZXRQcmVzZW50ZXJQcm9jZXNzSWRlbnRpZmllcjopXSkKKyAgICAgICAgWyhp
ZCltb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQuZ2V0KCkgYWNjZXNzaWJpbGl0eVNldFByZXNlbnRl
clByb2Nlc3NJZGVudGlmaWVyOnBpZF07CisgICAgW21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCBz
ZXRXZWJQYWdlOnRoaXNdOworICAgIG1fbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50ID0gV1RGTW92
ZShtb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQpOworfQorCiB2b2lkIFdlYlBhZ2U6OnBsYXRmb3Jt
UmVpbml0aWFsaXplKCkKIHsKLSAgICBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tlbihh
Y2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCkpOworICAgIFJlZiBmcmFtZSA9IG1fcGFnZS0+
Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgYWNjZXNzaWJpbGl0
eVRyYW5zZmVyUmVtb3RlVG9rZW4oYWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0YSgpLCBmcmFt
ZS0+ZnJhbWVJRCgpKTsKIH0KIAogUmV0YWluUHRyPE5TRGF0YT4gV2ViUGFnZTo6YWNjZXNzaWJp
bGl0eVJlbW90ZVRva2VuRGF0YSgpIGNvbnN0CkBAIC00NjksMTIgKzQ3NiwyNyBAQCBib29sIFdl
YlBhZ2U6OnBlcmZvcm1Ob25FZGl0aW5nQmVoYXZpb3JGb3JTZWxlY3Rvcihjb25zdCBTdHJpbmcm
IHNlbGVjdG9yLCBLZXlibwogICAgIHJldHVybiBkaWRQZXJmb3JtQWN0aW9uOwogfQogCit2b2lk
IFdlYlBhZ2U6OnVwZGF0ZVJlbW90ZVBhZ2VBY2Nlc3NpYmlsaXR5T2Zmc2V0KFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpJbnRQb2ludCBvZmZzZXQpCit7CisgICAg
W2FjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSBzZXRSZW1vdGVGcmFtZU9mZnNldDpvZmZzZXRd
OworfQorCit2b2lkIFdlYlBhZ2U6OnJlZ2lzdGVyUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5VG9r
ZW5zKHBpZF90IHBpZCwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGVsZW1lbnRUb2tlbikKK3sK
KyAgICBOU0RhdGEgKmVsZW1lbnRUb2tlbkRhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZWxl
bWVudFRva2VuLmRhdGEoKSBsZW5ndGg6ZWxlbWVudFRva2VuLnNpemUoKV07CisgICAgYXV0byBy
ZW1vdGVFbGVtZW50ID0gZWxlbWVudFRva2VuRGF0YS5sZW5ndGggPyBhZG9wdE5TKFtbTlNBY2Nl
c3NpYmlsaXR5UmVtb3RlVUlFbGVtZW50IGFsbG9jXSBpbml0V2l0aFJlbW90ZVRva2VuOmVsZW1l
bnRUb2tlbkRhdGFdKSA6IG5pbDsKKworICAgIGNyZWF0ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVu
dChwaWQpOworICAgIFthY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkgc2V0UmVtb3RlUGFyZW50
OnJlbW90ZUVsZW1lbnQuZ2V0KCldOworfQorCiB2b2lkIFdlYlBhZ2U6OnJlZ2lzdGVyVUlQcm9j
ZXNzQWNjZXNzaWJpbGl0eVRva2VucyhzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZWxlbWVudFRv
a2VuLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gd2luZG93VG9rZW4pCiB7CiAgICAgTlNEYXRh
ICplbGVtZW50VG9rZW5EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmVsZW1lbnRUb2tlbi5k
YXRhKCkgbGVuZ3RoOmVsZW1lbnRUb2tlbi5zaXplKCldOwogICAgIE5TRGF0YSAqd2luZG93VG9r
ZW5EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOndpbmRvd1Rva2VuLmRhdGEoKSBsZW5ndGg6
d2luZG93VG9rZW4uc2l6ZSgpXTsKICAgICBhdXRvIHJlbW90ZUVsZW1lbnQgPSBlbGVtZW50VG9r
ZW5EYXRhLmxlbmd0aCA/IGFkb3B0TlMoW1tOU0FjY2Vzc2liaWxpdHlSZW1vdGVVSUVsZW1lbnQg
YWxsb2NdIGluaXRXaXRoUmVtb3RlVG9rZW46ZWxlbWVudFRva2VuRGF0YV0pIDogbmlsOwogICAg
IGF1dG8gcmVtb3RlV2luZG93ID0gd2luZG93VG9rZW5EYXRhLmxlbmd0aCA/IGFkb3B0TlMoW1tO
U0FjY2Vzc2liaWxpdHlSZW1vdGVVSUVsZW1lbnQgYWxsb2NdIGluaXRXaXRoUmVtb3RlVG9rZW46
d2luZG93VG9rZW5EYXRhXSkgOiBuaWw7CisKICAgICBbcmVtb3RlRWxlbWVudCBzZXRXaW5kb3dV
SUVsZW1lbnQ6cmVtb3RlV2luZG93LmdldCgpXTsKICAgICBbcmVtb3RlRWxlbWVudCBzZXRUb3BM
ZXZlbFVJRWxlbWVudDpyZW1vdGVXaW5kb3cuZ2V0KCldOwogCkBAIC01MTYsNiArNTM4LDExIEBA
IFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QqIFdlYlBhZ2U6OmFjY2Vzc2liaWxpdHlSZW1v
dGVPYmplY3QoKQogICAgIHJldHVybiBtX21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudC5nZXQoKTsK
IH0KIAorV2ViQ29yZTo6SW50UG9pbnQgV2ViUGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1l
T2Zmc2V0KCkKK3sKKyAgICByZXR1cm4gW21fbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50IGFjY2Vz
c2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldF07Cit9CisKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElU
WV9JU09MQVRFRF9UUkVFKQogdm9pZCBXZWJQYWdlOjpjYWNoZUFYUG9zaXRpb24oY29uc3QgV2Vi
Q29yZTo6RmxvYXRQb2ludCYgcG9pbnQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKaW5kZXggNWJjNTZmNDI3Zjc4Li5mODgzYWEyNjI2ZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTE1NzEsNiArMTU3MSwxMCBAQCB2b2lkIFdl
YlByb2Nlc3M6OnVwZGF0ZUNQVU1vbml0b3JTdGF0ZShDUFVNb25pdG9yVXBkYXRlUmVhc29uKQog
ewogfQogCit2b2lkIFdlYlByb2Nlc3M6OmJpbmRBY2Nlc3NpYmlsaXR5RnJhbWVXaXRoRGF0YShX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PikKK3sKK30K
KwogI2VuZGlmCiAKIHZvaWQgV2ViUHJvY2Vzczo6cGFnZUFjdGl2aXR5U3RhdGVEaWRDaGFuZ2Uo
UGFnZUlkZW50aWZpZXIsIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlPiBjaGFuZ2Vk
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggYjBkOTA0NWE4MDgyLi4w
MTIwZTQ1NWJlZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtNjYs
NiArNjYsOSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2NyZWVuUHJvcGVydGllcy5oPgogI2luY2x1
ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAjaW5jbHVkZSA8d3RmL01hY2hTZW5kUmlnaHQuaD4K
KworT0JKQ19DTEFTUyBOU011dGFibGVEaWN0aW9uYXJ5OworCiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKEdUSykKQEAgLTg4LDYgKzkxLDcgQEAKICNpbmNsdWRlICJXZWJTUUxpdGVEYXRhYmFzZVRy
YWNrZXIuaCIKICNlbmRpZgogCisKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgT2JqZWN0OwogfQpA
QCAtNTE1LDYgKzUxOSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybVNldENhY2hlTW9k
ZWwoQ2FjaGVNb2RlbCk7CiAKICAgICB2b2lkIHNldEVuaGFuY2VkQWNjZXNzaWJpbGl0eShib29s
KTsKKyAgICB2b2lkIGJpbmRBY2Nlc3NpYmlsaXR5RnJhbWVXaXRoRGF0YShXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Pik7CiAKICAgICB2b2lkIHN0YXJ0
TWVtb3J5U2FtcGxlcihTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgZG91YmxlKTsKICAgICB2b2lkIHN0b3BNZW1vcnlTYW1wbGVyKCk7CkBAIC04MzEsNiAr
ODM2LDcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBIYXNoQ291bnRlZFNl
dDxTdHJpbmc+IG1fcGVuZGluZ1Bhc3RlYm9hcmRXcml0ZUNvdW50czsKICAgICBzdGQ6Om9wdGlv
bmFsPGF1ZGl0X3Rva2VuX3Q+IG1fYXVkaXRUb2tlbkZvclNlbGY7CisgICAgUmV0YWluUHRyPE5T
TXV0YWJsZURpY3Rpb25hcnk+IG1fYWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lVG9rZW5DYWNoZTsK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA5OWI0MDJhZjExY2EuLmQ3NzVm
ZTdkMzhkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KQEAgLTY5LDYgKzY5LDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lS
ZWNlaXZlciBOb3RSZWZDb3VudGVkIHsKICAgICBTZXRUZXh0Q2hlY2tlclN0YXRlKHN0cnVjdCBX
ZWJLaXQ6OlRleHRDaGVja2VyU3RhdGUgdGV4dENoZWNrZXJTdGF0ZSkKIAogICAgIFNldEVuaGFu
Y2VkQWNjZXNzaWJpbGl0eShib29sIGZsYWcpCisgICAgQmluZEFjY2Vzc2liaWxpdHlGcmFtZVdp
dGhEYXRhKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdGQ6OnNwYW48Y29uc3Qg
dWludDhfdD4gZGF0YSk7CiAKICAgICBHYXJiYWdlQ29sbGVjdEphdmFTY3JpcHRPYmplY3RzKCkK
ICAgICBTZXRKYXZhU2NyaXB0R2FyYmFnZUNvbGxlY3RvclRpbWVyRW5hYmxlZChib29sIGVuYWJs
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNz
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29h
Lm1tCmluZGV4IGFkOTFjMzI5ZDM2Mi4uNTg3M2I4MTQyYjU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KQEAgLTIxNiw2ICsyMTYs
MTYgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybVNldENhY2hlTW9kZWwoQ2FjaGVNb2RlbCkK
IHsKIH0KIAordm9pZCBXZWJQcm9jZXNzOjpiaW5kQWNjZXNzaWJpbGl0eUZyYW1lV2l0aERhdGEo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90
PiBkYXRhKQoreworICAgIGlmICghbV9hY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVUb2tlbkNhY2hl
KQorICAgICAgICBtX2FjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZVRva2VuQ2FjaGUgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOworCisgICAgYXV0byBmcmFtZUlu
dCA9IGZyYW1lSUQub2JqZWN0KCkudG9VSW50NjQoKTsKKyAgICBOU0RhdGEgKm5zRGF0YSA9IFtO
U0RhdGEgZGF0YVdpdGhCeXRlczpkYXRhLmRhdGEoKSBsZW5ndGg6ZGF0YS5zaXplKCldOworICAg
IFttX2FjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZVRva2VuQ2FjaGUgc2V0T2JqZWN0Om5zRGF0YSBm
b3JLZXk6QChmcmFtZUludCldOworfQorCiBpZCBXZWJQcm9jZXNzOjphY2Nlc3NpYmlsaXR5Rm9j
dXNlZFVJRWxlbWVudCgpCiB7CiAgICAgYXV0byByZXRyaWV2ZUZvY3VzZWRVSUVsZW1lbnRGcm9t
TWFpblRocmVhZCA9IFtdICgpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDIxZTIx
ZjA4YmQ2NC4uYjRjZjI4MmMxOGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTIy
NSw2ICsyMjUsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBSZW1vdGVBWE9iamVjdFJlZiBh
Y2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkgZmluYWwgeyByZXR1cm4gMDsgfQorICAgIFdlYkNv
cmU6OkludFBvaW50IGFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCgpIGZpbmFsIHsgcmV0
dXJuIHsgfTsgfQogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAgICAg
dm9pZCBzZXRBWElzb2xhdGVkVHJlZVJvb3QoV2ViQ29yZTo6QVhDb3JlT2JqZWN0KikgZmluYWwg
eyB9CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>469953</attachid>
            <date>2024-02-18 13:21:26 -0800</date>
            <delta_ts>2024-02-18 15:17:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-268804-20240218132124.patch</filename>
            <type>text/plain</type>
            <size>120570</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">RnJvbSA1OTFjMzc5YTk5NjVmNGIwY2MyOWZjYTU5NjA1ZmY0MjA5NjVhMWIxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpcyBGbGVpemFjaCA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4K
RGF0ZTogU3VuLCAxOCBGZWIgMjAyNCAxMzoxODo0OSAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIEFY
OiBTdXBwb3J0IHNpdGUgaXNvbGF0aW9uIGZvciBWb2ljZU92ZXIKIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjg4MDQgcmRhcjovLzk5NjY1NTYxCgpSZXZpZXdlZCBi
eSBBbmRyZXMgR29uemFsZXosIFR5bGVyIFdpbGNvY2suCgpJbml0aWFsIHN1cHBvcnQgZm9yIHNp
dGUgaXNvbGF0aW9uIGZvciBWb2ljZU92ZXIuCgpXaGVuIGEgc2Nyb2xsIHZpZXcgaG9zdHMgYSBS
ZW1vdGVGcmFtZSBpdCBiaW5kcyBpdHNlbGYgdG8gdGhlIG90aGVyIHNpZGUgdGhyb3VnaCBhIFdl
YlBhZ2UgbWVzc2FnZS4KVGhpcyB0cmFuc2ZlcnMgZGF0YSB0b2tlbnMgc28gQWNjZXNzaWJpbGl0
eSByZW1vdGUgZWxlbWVudHMgYXJlIGNyZWF0ZWQgYW5kIGhvb2tlZCB1cC4KClRoZSBib3VuZGlu
ZyBib3hlcyBpbnNpZGUgdGhlIHN1YiBmcmFtZXMgbmVlZCB0byBoYXZlIHRoZSBpbml0aWFsIG9m
ZnNldCBhcHBsaWVkIGFuZCB0aGVuIG5lZWQgdG8gYmUgY29udmVydGVkCmVhY2ggc3RlcCB1cCB0
aGUgY2hhaW4gdG8gYWNjb3VudCBmb3Igc2Nyb2xsIG9mZnNldHMgdGhhdCBvbmx5IGVhY2ggcHJv
Y2VzcyBrbm93cyBhYm91dC4KCiogU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQ6CiogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgoqIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhDb3JlT2JqZWN0Lmg6CihXZWJDb3JlOjphY2Nlc3NpYmlsaXR5
Um9sZVRvU3RyaW5nKToKKFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6aXNSZW1vdGVGcmFtZSBjb25z
dCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWExvZ2dlci5jcHA6CihXZWJDb3Jl
OjpzdHJlYW1BWENvcmVPYmplY3QpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhP
YmplY3RDYWNoZS5jcHA6CihXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpjcmVhdGUpOgooV2ViQ29y
ZTo6QVhPYmplY3RDYWNoZTo6b25SZW1vdGVGcmFtZUluaXRpYWxpemVkKToKKiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYUmVtb3RlRnJhbWUuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9w
YWdlL1JlbW90ZUZyYW1lQ2xpZW50LmguCihXZWJDb3JlOjpBWFJlbW90ZUZyYW1lOjpjcmVhdGUp
OgooV2ViQ29yZTo6QVhSZW1vdGVGcmFtZTo6ZWxlbWVudFJlY3QgY29uc3QpOgoqIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhSZW1vdGVGcmFtZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lQ2xpZW50LmguCiogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OnJlbGF0aXZlRnJhbWUgY29uc3QpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6cmVtb3RlUGFyZW50T2JqZWN0IGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OnJlbW90ZUZyYW1lT2Zmc2V0IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6YWRkQXR0YWNobWVudENoaWxkcmVuKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmFkZENoaWxkcmVuKToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlT
Y3JvbGxWaWV3OjpkZXRhY2hSZW1vdGVQYXJ0cyk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Ny
b2xsVmlldzo6Y2xlYXJDaGlsZHJlbik6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dzo6YWRkUmVtb3RlRnJhbWVDaGlsZCk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dzo6YWRkQ2hpbGRyZW4pOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OndlYkFy
ZWFPYmplY3QgY29uc3QpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmRvY3Vt
ZW50IGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpwYXJlbnRPYmpl
Y3QgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNj
cm9sbFZpZXcuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaS5jcHA6CihXZWJDb3JlOjphdHNwaVJvbGUpOgoqIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1t
OgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBkZXRlcm1pbmVJc0FjY2Vzc2liaWxp
dHlFbGVtZW50XSk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZE9iamVjdC5jcHA6CihXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFs
aXplUHJvcGVydGllcyk6CihXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpzZXRQcm9wZXJ0eSk6
CihXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpyZW1vdGVGcmFtZU9mZnNldCBjb25zdCk6CihX
ZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpyZWxhdGl2ZUZyYW1lIGNvbnN0KToKKiBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0Lmg6Ciog
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUu
Y3BwOgooV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnJldHJpZXZlT2JqZWN0Rm9ySURGcm9tTWFp
blRocmVhZCBjb25zdCk6CihXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6dXBkYXRlTm9kZVByb3Bl
cnRpZXMpOgooV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6Om9iamVjdHNGb3JJRHMpOiBEZWxldGVk
LgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRU
cmVlLmg6CihXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6b2JqZWN0c0ZvcklEcyk6CiogU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RN
YWMubW06CihXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplUGxhdGZvcm1Qcm9w
ZXJ0aWVzKToKKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnJlbW90ZUZyYW1lUGxhdGZvcm1F
bGVtZW50IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3Np
YmlsaXR5T2JqZWN0TWFjLm1tOgooV2ViQ29yZTo6QVhSZW1vdGVGcmFtZTo6Z2VuZXJhdGVSZW1v
dGVUb2tlbiBjb25zdCk6CihXZWJDb3JlOjpBWFJlbW90ZUZyYW1lOjppbml0aWFsaXplUGxhdGZv
cm1FbGVtZW50V2l0aFJlbW90ZVRva2VuKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHk6OmNyZWF0
ZVBsYXRmb3JtUm9sZU1hcCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tOgoobWFrZU5TQXJyYXkpOgooLVtXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UgaXNJc29sYXRlZE9iamVjdF0pOgooLVtXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UgY29udmVydFJlY3RUb1NwYWNlOnNwYWNlOl0p
OgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyTWFjLm1tOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciB0ZXh0TWFy
a2VyRm9yRmlyc3RQb3NpdGlvbkluVGV4dENvbnRyb2w6XSk6CigtW1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyIHJlbmRlcldpZGdldENoaWxkcmVuXSk6CigtW1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyIHJlbW90ZUFjY2Vzc2liaWxpdHlQYXJlbnRPYmplY3RdKToKKC1bV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgc2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2VdKToKKC1bV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgcm9sZV0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlciBpc0VtcHR5R3JvdXBdKToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXIgc3Vicm9sZV0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciByb2xlRGVzY3Jp
cHRpb25dKToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX3RyYW5zZm9ybVNwZWNp
YWxDaGlsZHJlbkNhc2VzOl0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6XSk6CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyIGFjY2Vzc2liaWxpdHlIaXRUZXN0Ol0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlciBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkRdKToKKC1bV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eVBlcmZvcm1TaG93TWVudUFjdGlvbl0p
OgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhdHRyaWJ1dGVkU3RyaW5nRm9yTlNS
YW5nZTpdKToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOmZvclBhcmFtZXRlcjpdKToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIgYWNjZXNzaWJpbGl0eUluZGV4T2ZDaGlsZDpdKToKKC1bV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUFycmF5QXR0cmlidXRlQ291bnQ6XSk6CigtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZVZhbHVl
czppbmRleDptYXhDb3VudDpdKToKKiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmNwcDoKKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmFjY2Vzc2liaWxpdHlSZW1v
dGVGcmFtZU9mZnNldCk6CiogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJD
bGllbnQuaDoKKiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9jYWxGcmFtZUxvYWRlckNsaWVudC5o
OgoqIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHA6CihXZWJDb3JlOjpQYWdlOjpzaG91bGRV
cGRhdGVBY2Nlc3NpYmlsaXR5UmVnaW9ucyBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvcGFnZS9S
ZW1vdGVGcmFtZS5jcHA6CihXZWJDb3JlOjpSZW1vdGVGcmFtZTo6dXBkYXRlUmVtb3RlRnJhbWVB
Y2Nlc3NpYmlsaXR5T2Zmc2V0KToKKFdlYkNvcmU6OlJlbW90ZUZyYW1lOjp1bmJpbmRSZW1vdGVB
Y2Nlc3NpYmlsaXR5RnJhbWVzKToKKFdlYkNvcmU6OlJlbW90ZUZyYW1lOjpiaW5kUmVtb3RlQWNj
ZXNzaWJpbGl0eUZyYW1lcyk6CiogU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVGcmFtZS5oOgoq
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWVDbGllbnQuaDoKKiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CiogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlz
aW9uYWxQYWdlUHJveHkuY3BwOgooV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6cmVnaXN0
ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKToKKiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZy
YW1lUHJveHkuY3BwOgooV2ViS2l0OjpXZWJGcmFtZVByb3h5OjpiaW5kQWNjZXNzaWJpbGl0eUZy
YW1lV2l0aERhdGEpOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaDoK
KiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgooV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnN3YXBUb1Byb3Zpc2lvbmFsUGFnZSk6CihXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
YmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMpOgooV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVw
ZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldCk6CiogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lmg6CiogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5tbToKKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9r
ZW5SZWNlaXZlZCk6CiogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbToKKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmls
aXR5VG9rZW4pOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1h
Yy5oOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbToK
KFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNl
aXZlZCk6CiogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToK
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9r
ZW4pOgoqIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3SW1wbC5oOgoqIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3SW1wbC5tbToKKFdlYktpdDo6V2ViVmlld0lt
cGw6OnNldEFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW4pOgoqIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKFdl
YktpdDo6V2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudDo6YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1l
T2Zmc2V0KToKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9j
YWxGcmFtZUxvYWRlckNsaWVudC5oOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVudC5jcHA6CihXZWJLaXQ6OldlYlJlbW90ZUZyYW1l
Q2xpZW50Ojp1bmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKToKKFdlYktpdDo6V2ViUmVt
b3RlRnJhbWVDbGllbnQ6OnVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldCk6CihX
ZWJLaXQ6OldlYlJlbW90ZUZyYW1lQ2xpZW50OjpiaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1l
cyk6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90ZUZy
YW1lQ2xpZW50Lmg6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2Vi
UGFnZUNvY29hLm1tOgooV2ViS2l0OjpXZWJQYWdlOjphY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1v
dGVUb2tlbik6CihXZWJLaXQ6OldlYlBhZ2U6OmFjY2Vzc2liaWxpdHlNYW5hZ2VSZW1vdGVFbGVt
ZW50U3RhdHVzKToKKFdlYktpdDo6V2ViUGFnZTo6YmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFt
ZXMpOgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgooV2Vi
S2l0OjpXZWJQYWdlOjpiaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyk6CihXZWJLaXQ6Oldl
YlBhZ2U6OnVwZGF0ZVJlbW90ZVBhZ2VBY2Nlc3NpYmlsaXR5T2Zmc2V0KToKKiBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CiogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1J
bml0aWFsaXplQWNjZXNzaWJpbGl0eSk6CihXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtUmVpbml0
aWFsaXplKToKKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlUmVtb3RlUGFnZUFjY2Vzc2liaWxpdHlP
ZmZzZXQpOgooV2ViS2l0OjpXZWJQYWdlOjpyZWdpc3RlclJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0
eVRva2Vucyk6CihXZWJLaXQ6OldlYlBhZ2U6OmFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNl
dCk6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0
eVdlYlBhZ2VPYmplY3RCYXNlLmg6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tOgooLVtXS0FjY2Vzc2liaWxp
dHlXZWJQYWdlT2JqZWN0QmFzZSBheE9iamVjdENhY2hlXSk6CigtW1dLQWNjZXNzaWJpbGl0eVdl
YlBhZ2VPYmplY3RCYXNlIHNldFJlbW90ZUZyYW1lT2Zmc2V0Ol0pOgooLVtXS0FjY2Vzc2liaWxp
dHlXZWJQYWdlT2JqZWN0QmFzZSBhY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXRdKToKKiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKFdlYktp
dDo6V2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplQWNjZXNzaWJpbGl0eSk6CihXZWJLaXQ6Oldl
YlBhZ2U6OmNyZWF0ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCk6CihXZWJLaXQ6OldlYlBhZ2U6
OnBsYXRmb3JtUmVpbml0aWFsaXplKToKKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlUmVtb3RlUGFn
ZUFjY2Vzc2liaWxpdHlPZmZzZXQpOgooV2ViS2l0OjpXZWJQYWdlOjpyZWdpc3RlclJlbW90ZUZy
YW1lQWNjZXNzaWJpbGl0eVRva2Vucyk6CihXZWJLaXQ6OldlYlBhZ2U6OnJlZ2lzdGVyVUlQcm9j
ZXNzQWNjZXNzaWJpbGl0eVRva2Vucyk6CihXZWJLaXQ6OldlYlBhZ2U6OmFjY2Vzc2liaWxpdHlS
ZW1vdGVGcmFtZU9mZnNldCk6CiogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwOgooV2ViS2l0OjpXZWJQcm9jZXNzOjpiaW5kQWNjZXNzaWJpbGl0eUZyYW1lV2l0aERhdGEp
OgoqIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CiogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CiogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKFdlYktpdDo6V2ViUHJvY2Vzczo6Ymlu
ZEFjY2Vzc2liaWxpdHlGcmFtZVdpdGhEYXRhKToKKiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgotLS0KIFNvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0ICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiAuLi4vV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogfCAgIDQgKwogU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWENvcmVPYmplY3QuaCAgIHwgIDEyICsrCiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYTG9nZ2VyLmNwcCAgICAgfCAgIDMgKwogLi4uL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmNwcCAgIHwgIDE1ICstCiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCAgfCAgIDIgKwogLi4uL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWFJlbW90ZUZyYW1lLmNwcCAgIHwgIDQyICsrKysrCiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYUmVtb3RlRnJhbWUuaCAgfCAgNjEgKysrKysrKysKIC4uLi9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwICAgICB8ICAyMyArKy0KIC4uLi9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuaCAgICAgICB8ICAgNSArCiAuLi4vQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdC5jcHAgICAgICAgICAgICAgfCAgIDQgKy0KIC4uLi9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcCB8ICA2MiArKysrKysrLQogLi4uL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaCAgIHwgICA2ICstCiAuLi4vYXRzcGkvQWNjZXNz
aWJpbGl0eU9iamVjdEF0c3BpLmNwcCAgICAgICAgfCAgIDEgKwogLi4uL2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSAgIHwgICAxICsKIC4uLi9pc29sYXRlZHRyZWUvQVhJ
c29sYXRlZE9iamVjdC5jcHAgICAgICAgICB8ICAzNCArKysrLQogLi4uL2lzb2xhdGVkdHJlZS9B
WElzb2xhdGVkT2JqZWN0LmggICAgICAgICAgIHwgICA4ICstCiAuLi4vaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRUcmVlLmNwcCAgICAgICAgICAgfCAgNjEgKysrLS0tLS0KIC4uLi9pc29sYXRlZHRy
ZWUvQVhJc29sYXRlZFRyZWUuaCAgICAgICAgICAgICB8ICAyOSArKysrCiAuLi4vaXNvbGF0ZWR0
cmVlL21hYy9BWElzb2xhdGVkT2JqZWN0TWFjLm1tICAgfCAgIDcgKwogLi4uL21hYy9BY2Nlc3Np
YmlsaXR5T2JqZWN0TWFjLm1tICAgICAgICAgICAgIHwgIDI2ICsrKysKIC4uLi9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tICB8ICAgOSArLQogLi4uL21hYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSAgIHwgMTQzICsrKysrKysrKysrKy0tLS0tLQog
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgICAgICAgIHwgICA1ICsKIC4u
Li9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmggICB8ICAgMSArCiAuLi4v
V2ViQ29yZS9sb2FkZXIvTG9jYWxGcmFtZUxvYWRlckNsaWVudC5oICAgfCAgIDEgKwogU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcCAgICAgICAgICAgICAgICAgIHwgIDE1ICstCiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmNwcCAgICAgICAgICAgfCAgMTUgKysKIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuaCAgICAgICAgICAgICB8ICAgNCArCiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1JlbW90ZUZyYW1lQ2xpZW50LmggICAgICAgfCAgIDQgKwogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oICAgICAgICAgIHwgICAzICstCiAuLi4vV2ViS2l0L1VJ
UHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgfCAgIDIgKy0KIC4uLi9XZWJLaXQvVUlQ
cm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmggICB8ICAgMiArLQogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAgICAgIHwgICA5ICsrCiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJGcmFtZVByb3h5LmggICAgICAgfCAgIDIgKwogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcCAgICAgIHwgIDI0ICsrLQogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmggICAgICAgIHwgICA0ICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gfCAgIDQgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oICB8ICAgMiArLQogLi4uL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIHwgICAyICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV2ViUGFnZVByb3h5SU9TLm1tICAgfCAgIDcgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9QYWdlQ2xpZW50SW1wbE1hYy5oICB8ICAgMiArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1BhZ2VDbGllbnRJbXBsTWFjLm1tIHwgICA0ICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V2ViUGFnZVByb3h5TWFjLm1tICAgfCAgIDQgKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XZWJWaWV3SW1wbC5oICAgICB8ICAgMyArLQogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1dlYlZpZXdJbXBsLm1tICAgIHwgICA4ICstCiAuLi4vV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVu
dC5jcHAgICAgICAgICAgICAgfCAgIDYgKwogLi4uL1dlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQu
aCAgICAgICAgICAgICAgIHwgICAxICsKIC4uLi9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFt
ZUNsaWVudC5jcHAgICB8ICAzOCArKysrKwogLi4uL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90ZUZy
YW1lQ2xpZW50LmggICAgIHwgICA0ICsKIC4uLi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2Vi
UGFnZUNvY29hLm1tICB8ICA0NiArKysrKy0KIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwICB8ICAxMCArKwogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oICAgIHwgIDExICstCiAuLi4vV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4gICAgfCAgIDMgKwogLi4uL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbSAgICAgIHwgIDIzICsrLQogLi4uL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2Jq
ZWN0QmFzZS5oICAgIHwgICA0ICsKIC4uLi9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVj
dEJhc2UubW0gICB8ICAyNyArKystCiAuLi4vV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdl
TWFjLm1tICAgICAgfCAgNDUgKysrKy0tCiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAgICAgICAgfCAgIDQgKwogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaCAgICAgICAgIHwgICA2ICsKIC4uLi9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluICB8ICAgMSArCiAuLi4vV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2Eu
bW0gICAgICAgfCAgMTAgKysKIC4uLi9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaCB8ICAgMSArCiA2MyBmaWxlcyBjaGFuZ2VkLCA3NzIgaW5zZXJ0aW9ucygrKSwgMTU0
IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQVhSZW1vdGVGcmFtZS5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYUmVtb3RlRnJhbWUuaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggZDA5ZDY0
MWE5MGE0Li41MTkzYzhiN2Y4ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC01MjgsNiArNTI4LDcgQEAg
YWNjZXNzaWJpbGl0eS9BWEdlb21ldHJ5TWFuYWdlci5jcHAKIGFjY2Vzc2liaWxpdHkvQVhJbWFn
ZS5jcHAKIGFjY2Vzc2liaWxpdHkvQVhMb2dnZXIuY3BwCiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0
Q2FjaGUuY3BwCithY2Nlc3NpYmlsaXR5L0FYUmVtb3RlRnJhbWUuY3BwCiBhY2Nlc3NpYmlsaXR5
L0FYVGV4dE1hcmtlci5jcHAKIGFjY2Vzc2liaWxpdHkvQVhUZXh0UnVuLmNwcAogYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjI4NmJkYjc4ZDE0Li4xNDBkYWYw
OTk4NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTg5NjgsNiArODk2OCw4IEBACiAJCTI5NDg5RkM1MTJDMDBGMDMwMEQ4M0Yw
RiAvKiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyOTQ5ODY4MTE5NTM0MTk0MDA3MkQyQkQgLyogVGV4dFVuZG9JbnNlcnRpb25NYXJr
dXBNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUZXh0VW5k
b0luc2VydGlvbk1hcmt1cE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk0
QkRBRTYyMUZGNTgyQTAwNTEwNzdCIC8qIEFjY2Vzc2liaWxpdHlPYmplY3RDb2NvYS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlPYmplY3RD
b2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjk1NUNGMTEyQjIzMEFFNjAw
MDFCRjgyIC8qIEFYUmVtb3RlRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVhSZW1vdGVGcmFtZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOTU1Q0YxMjJCMjMwQUU2MDAwMUJGODIg
LyogQVhSZW1vdGVGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBWFJlbW90ZUZyYW1lLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk3QkUzRDkxNkMwNDNEODAwMzMxNkJE
IC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTI5ODFBQkM0MTMxODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmls
aXR5TWF0aE1MRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5TWF0
aE1MRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5ODFDQTlEMTMx
ODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTIzNDcwLDYgKzIzNDcyLDggQEAKIAkJCQlDMDQ5M0VCNzI0NDY5OUU0MDA5QUFDODAg
LyogQVhMb2dnZXIuaCAqLywKIAkJCQkyOTgxQ0FBRjEzMTgyMkVDMDBEMTJGMkEgLyogQVhPYmpl
Y3RDYWNoZS5jcHAgKi8sCiAJCQkJMjlBODEyMUEwRkJCOUMxRDAwNTEwMjkzIC8qIEFYT2JqZWN0
Q2FjaGUuaCAqLywKKwkJCQkyOTU1Q0YxMjJCMjMwQUU2MDAwMUJGODIgLyogQVhSZW1vdGVGcmFt
ZS5jcHAgKi8sCisJCQkJMjk1NUNGMTEyQjIzMEFFNjAwMDFCRjgyIC8qIEFYUmVtb3RlRnJhbWUu
aCAqLywKIAkJCQlDMEUyMDhBMTI5Mzc5QzZGMDBDMEQyRDMgLyogQVhUZXh0TWFya2VyLmNwcCAq
LywKIAkJCQlDMEUyMDhBMDI5Mzc5QzZFMDBDMEQyRDMgLyogQVhUZXh0TWFya2VyLmggKi8sCiAJ
CQkJNDhDNEU4M0MyQjM0RDgzODAwODM0NjBBIC8qIEFYVGV4dFJ1bi5jcHAgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYQ29yZU9iamVjdC5oIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWENvcmVPYmplY3QuaAppbmRleCA0NDEwODRlY2I4MDUu
LjNmYmM3ZjhkYjI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WENvcmVPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYQ29yZU9i
amVjdC5oCkBAIC0yMDUsNiArMjA1LDcgQEAgZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5Um9sZSB7
CiAgICAgUHJvZ3Jlc3NJbmRpY2F0b3IsCiAgICAgUmFkaW9CdXR0b24sCiAgICAgUmFkaW9Hcm91
cCwKKyAgICBSZW1vdGVGcmFtZSwKICAgICBSb3dIZWFkZXIsCiAgICAgUm93LAogICAgIFJvd0dy
b3VwLApAQCAtNDQyLDYgKzQ0Myw4IEBAIEFMV0FZU19JTkxJTkUgU3RyaW5nIGFjY2Vzc2liaWxp
dHlSb2xlVG9TdHJpbmcoQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSkKICAgICAgICAgcmV0dXJuICJS
YWRpb0J1dHRvbiJfczsKICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0dyb3VwOgog
ICAgICAgICByZXR1cm4gIlJhZGlvR3JvdXAiX3M7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6UmVtb3RlRnJhbWU6CisgICAgICAgIHJldHVybiAiUmVtb3RlRnJhbWUiX3M7CiAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Um93SGVhZGVyOgogICAgICAgICByZXR1cm4gIlJvd0hlYWRl
ciJfczsKICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSb3c6CkBAIC04MTUsNiArODE4LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvd0lu
c3RhbmNlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlBUklB
R3JpZENlbGxJbnN0YW5jZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNBWElzb2xh
dGVkT2JqZWN0SW5zdGFuY2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQVhSZW1v
dGVGcmFtZSgpIGNvbnN0ID0gMDsKIAogICAgIGJvb2wgaXNIZWFkaW5nKCkgY29uc3QgeyByZXR1
cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkhlYWRpbmc7IH0KICAgICB2aXJ0
dWFsIGJvb2wgaXNMaW5rKCkgY29uc3QgPSAwOwpAQCAtOTE5LDYgKzkyMywxMiBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpc1RyZWVHcmlkKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNj
ZXNzaWJpbGl0eVJvbGU6OlRyZWVHcmlkOyB9CiAgICAgYm9vbCBpc1RyZWVJdGVtKCkgY29uc3Qg
eyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVJdGVtOyB9CiAg
ICAgYm9vbCBpc1Njcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vz
c2liaWxpdHlSb2xlOjpTY3JvbGxCYXI7IH0KKyAgICBib29sIGlzUmVtb3RlRnJhbWUoKSBjb25z
dCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmVtb3RlRnJhbWU7
IH0KKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2aXJ0dWFsIFJldGFpblB0cjxpZD4gcmVtb3Rl
RnJhbWVQbGF0Zm9ybUVsZW1lbnQoKSBjb25zdCA9IDA7CisjZW5kaWYKKyAgICB2aXJ0dWFsIGJv
b2wgaGFzUmVtb3RlRnJhbWVDaGlsZCgpIGNvbnN0ID0gMDsKKwogICAgIGJvb2wgaXNCdXR0b24o
KSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNNZXRlcigpIGNvbnN0ID0gMDsKIApAQCAtMTE1
OSw2ICsxMTY5LDggQEAgcHVibGljOgogICAgIC8vIFZpZXdwb3J0LXJlbGF0aXZlIG1lYW5zIHRo
YXQgd2hlbiB0aGUgcGFnZSBzY3JvbGxzLCB0aGUgcG9ydGlvbiBvZiB0aGUgcGFnZSBpbiB0aGUg
dmlld3BvcnQgY2hhbmdlcywgYW5kIHRodXMKICAgICAvLyBhbnkgdmlld3BvcnQtcmVsYXRpdmUg
cmVjdHMgZG8gdG9vIChzaW5jZSB0aGV5IGFyZSBlaXRoZXIgY2xvc2VyIHRvIG9yIGZhcnRoZXIg
ZnJvbSB0aGUgdmlld3BvcnQgb3JpZ2luIGFmdGVyIHRoZSBzY3JvbGwpLgogICAgIHZpcnR1YWwg
RmxvYXRQb2ludCBzY3JlZW5SZWxhdGl2ZVBvc2l0aW9uKCkgY29uc3QgPSAwOworICAgIC8vIFRo
aXMgaXMgdGhlIGFtb3VudCB0aGF0IHRoZSBSZW1vdGVGcmFtZSBpcyBvZmZzZXQgZnJvbSBpdHMg
Y29udGFpbmluZyBwYXJlbnQuCisgICAgdmlydHVhbCBJbnRQb2ludCByZW1vdGVGcmFtZU9mZnNl
dCgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgRmxvYXRSZWN0IGNvbnZlcnRGcmFtZVRvU3Bh
Y2UoY29uc3QgRmxvYXRSZWN0JiwgQWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZSkgY29uc3Qg
PSAwOwogI2lmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWExvZ2dlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
TG9nZ2VyLmNwcAppbmRleCBiNmUzMDZjZGRlY2YuLjdiMzVjOGY5ZDEwMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWExvZ2dlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BWExvZ2dlci5jcHAKQEAgLTg4Myw2ICs4ODMsOSBAQCB2b2lk
IHN0cmVhbUFYQ29yZU9iamVjdChUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IEFYQ29yZU9iamVj
dCYgb2JqZWN0LCBjb25zdCBPcAogICAgIGlmIChvcHRpb25zICYgQVhTdHJlYW1PcHRpb25zOjpS
b2xlKQogICAgICAgICBzdHJlYW0uZHVtcFByb3BlcnR5KCJyb2xlIiwgb2JqZWN0LnJvbGVWYWx1
ZSgpKTsKIAorICAgIGlmIChvYmplY3QucmVuZGVyZXIoKSkKKyAgICAgICAgc3RyZWFtLmR1bXBQ
cm9wZXJ0eSgicmVuZGVyTmFtZSIsIG9iamVjdC5yZW5kZXJlcigpLT5yZW5kZXJOYW1lKCkpOwor
CiAgICAgaWYgKG9wdGlvbnMgJiBBWFN0cmVhbU9wdGlvbnM6OlBhcmVudElEKSB7CiAgICAgICAg
IGF1dG8qIHBhcmVudCA9IG9iamVjdC5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICAgICAg
c3RyZWFtLmR1bXBQcm9wZXJ0eSgicGFyZW50SUQiLCBwYXJlbnQgPyBwYXJlbnQtPm9iamVjdElE
KCkgOiBBWElEKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RD
YWNoZS5jcHAKaW5kZXggNWU0ODE4MzRmNjQ2Li4zZWJiMmNiMjhjOTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtMzQsNiArMzQsNyBA
QAogI2luY2x1ZGUgIkFYSXNvbGF0ZWRPYmplY3QuaCIKICNpbmNsdWRlICJBWElzb2xhdGVkVHJl
ZS5oIgogI2luY2x1ZGUgIkFYTG9nZ2VyLmgiCisjaW5jbHVkZSAiQVhSZW1vdGVGcmFtZS5oIgog
I2luY2x1ZGUgIkFYVGV4dE1hcmtlci5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlBUklBR3Jp
ZC5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaCIKQEAgLTEwNTUsNyAr
MTA1NiwxMCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpjcmVhdGUoQWNj
ZXNzaWJpbGl0eVJvbGUgcm9sZSkKICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCiAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFibGVIZWFkZXJDb250YWluZXI6CiAgICAgICAgIG9iaiA9
IEFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lcjo6Y3JlYXRlKCk7Ci0gICAgICAgIGJy
ZWFrOyAgIAorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSZW1v
dGVGcmFtZToKKyAgICAgICAgb2JqID0gQVhSZW1vdGVGcmFtZTo6Y3JlYXRlKCk7CisgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNsaWRlclRodW1iOgogICAgICAg
ICBvYmogPSBBY2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWI6OmNyZWF0ZSgpOwogICAgICAgICBicmVh
azsKQEAgLTEzNTEsNiArMTM1NSwxNSBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZVJlY29t
cHV0ZUNlbGxTbG90cyhBY2Nlc3NpYmlsaXR5VGFibGUmIGF4VGFibGUpCiAjZW5kaWYKIH0KIAor
dm9pZCBBWE9iamVjdENhY2hlOjpvblJlbW90ZUZyYW1lSW5pdGlhbGl6ZWQoQVhSZW1vdGVGcmFt
ZSYgcmVtb3RlRnJhbWUpCit7CisjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJF
RSkKKyAgICB1cGRhdGVJc29sYXRlZFRyZWUocmVtb3RlRnJhbWUsIEFYUHJvcGVydHlOYW1lOjpS
ZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShyZW1v
dGVGcmFtZSk7CisjZW5kaWYKK30KKwogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVE
X1RSRUUpCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZVJvd3NwYW5DaGFuZ2VkKEFjY2Vzc2li
aWxpdHlUYWJsZUNlbGwmIGF4Q2VsbCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmgKaW5kZXggNjVlMDE2ZWMyZjJiLi5iZWI5ODU4YTBiZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCkBAIC00Nyw2ICs0
Nyw3IEBAIGNsYXNzIFRleHRTdHJlYW07CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
QVhSZW1vdGVGcmFtZTsKIGNsYXNzIEFjY2Vzc2liaWxpdHlUYWJsZTsKIGNsYXNzIEFjY2Vzc2li
aWxpdHlUYWJsZUNlbGw7CiBjbGFzcyBEb2N1bWVudDsKQEAgLTI0Niw2ICsyNDcsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBkZWZlck5vZGVBZGRlZE9yUmVtb3ZlZChOb2RlKik7CiAgICAgdm9pZCBo
YW5kbGVTY3JvbGxlZFRvQW5jaG9yKGNvbnN0IE5vZGUqIGFuY2hvck5vZGUpOwogICAgIHZvaWQg
b25TY3JvbGxiYXJVcGRhdGUoU2Nyb2xsVmlldyopOworICAgIHZvaWQgb25SZW1vdGVGcmFtZUlu
aXRpYWxpemVkKEFYUmVtb3RlRnJhbWUmKTsKIAogICAgIGJvb2wgaXNSZXRyaWV2aW5nQ3VycmVu
dE1vZGFsTm9kZSgpIHsgcmV0dXJuIG1faXNSZXRyaWV2aW5nQ3VycmVudE1vZGFsTm9kZTsgfQog
ICAgIE5vZGUqIG1vZGFsTm9kZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWFJlbW90ZUZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhSZW1vdGVGcmFtZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li5jZmJkZWRkOTgxY2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYUmVtb3RlRnJhbWUuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQVhSZW1vdGVGcmFtZS5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1JlZjxBWFJlbW90ZUZyYW1lPiBBWFJlbW90ZUZyYW1lOjpjcmVhdGUo
KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFYUmVtb3RlRnJhbWUpOworfQorCitMYXlv
dXRSZWN0IEFYUmVtb3RlRnJhbWU6OmVsZW1lbnRSZWN0KCkgY29uc3QKK3sKKyAgICBhdXRvKiBw
YXJlbnQgPSBwYXJlbnRPYmplY3QoKTsKKyAgICByZXR1cm4gcGFyZW50ID8gcGFyZW50LT5lbGVt
ZW50UmVjdCgpIDogTGF5b3V0UmVjdCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYUmVtb3RlRnJhbWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhSZW1vdGVGcmFtZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOTRkMmRmMDMwNGQyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFJlbW90ZUZyYW1lLmgKQEAgLTAs
MCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQWNjZXNz
aWJpbGl0eU1vY2tPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSZW1v
dGVGcmFtZTsKKworY2xhc3MgQVhSZW1vdGVGcmFtZSBmaW5hbCA6IHB1YmxpYyBBY2Nlc3NpYmls
aXR5TW9ja09iamVjdCB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxBWFJlbW90ZUZyYW1lPiBj
cmVhdGUoKTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgaW5pdGlhbGl6ZVBsYXRm
b3JtRWxlbWVudFdpdGhSZW1vdGVUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIGludCk7
CisgICAgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGdlbmVyYXRlUmVtb3RlVG9rZW4oKSBjb25z
dDsKKyAgICBSZXRhaW5QdHI8aWQ+IHJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkgY29uc3Qg
eyByZXR1cm4gbV9yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudDsgfQorICAgIHBpZF90IHByb2Nl
c3NJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzSWRlbnRpZmllcjsgfQorI2Vu
ZGlmCisKK3ByaXZhdGU6CisgICAgdmlydHVhbCB+QVhSZW1vdGVGcmFtZSgpID0gZGVmYXVsdDsK
KworICAgIEFjY2Vzc2liaWxpdHlSb2xlIGRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCkgeyBy
ZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlJlbW90ZUZyYW1lOyB9CisgICAgYm9vbCBjb21wdXRl
QWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9v
bCBpc0FYUmVtb3RlRnJhbWUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgTGF5b3V0UmVj
dCBlbGVtZW50UmVjdCgpIGNvbnN0OworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgUmV0YWlu
UHRyPGlkPiBtX3JlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50OworICAgIHBpZF90IG1fcHJvY2Vz
c0lkZW50aWZpZXIgeyAwIH07CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19BQ0NFU1NJQklMSVRZKEFYUmVtb3RlRnJhbWUsIGlz
QVhSZW1vdGVGcmFtZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggZDk3OTFhZjM4NmQ3Li41MmNmMDJkN2NlMDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcApAQCAtNTQ0LDcgKzU0NCw5IEBAIEZsb2F0UmVjdCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojpjb252ZXJ0RnJhbWVUb1NwYWNlKGNvbnN0IEZsb2F0UmVjdCYgZnJhbWVSZWN0LCBBCiAg
ICAgCiBGbG9hdFJlY3QgQWNjZXNzaWJpbGl0eU9iamVjdDo6cmVsYXRpdmVGcmFtZSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIGNvbnZlcnRGcmFtZVRvU3BhY2UoZWxlbWVudFJlY3QoKSwgQWNjZXNz
aWJpbGl0eUNvbnZlcnNpb25TcGFjZTo6UGFnZSk7CisgICAgYXV0byByZWN0ID0gZWxlbWVudFJl
Y3QoKTsKKyAgICByZWN0Lm1vdmVCeShyZW1vdGVGcmFtZU9mZnNldCgpKTsKKyAgICByZXR1cm4g
Y29udmVydEZyYW1lVG9TcGFjZShyZWN0LCBBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlOjpQ
YWdlKTsKIH0KIAogQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU9iamVjdDo6bmV4
dFNpYmxpbmdVbmlnbm9yZWQoaW50IGxpbWl0KSBjb25zdApAQCAtMjA4NiwxNCArMjA4OCwyMyBA
QCBjb25zdCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyogQWNjZXNzaWJpbGl0eU9iamVjdDo6YW5j
ZXN0b3JBY2Nlc3NpYmlsaXR5U2Nyb2xsVgogI2lmIFBMQVRGT1JNKENPQ09BKQogUmVtb3RlQVhP
YmplY3RSZWYgQWNjZXNzaWJpbGl0eU9iamVjdDo6cmVtb3RlUGFyZW50T2JqZWN0KCkgY29uc3QK
IHsKLSAgICBpZiAoYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpKSB7Ci0gICAgICAg
IGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpKQotICAgICAgICAgICAgcmV0dXJu
IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5hY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCk7Ci0g
ICAgfQotICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9j
dW1lbnQoKTsKKyAgICBhdXRvKiBmcmFtZSA9IGRvY3VtZW50ID8gZG9jdW1lbnQtPmZyYW1lKCkg
OiBudWxscHRyOworICAgIHJldHVybiBmcmFtZSA/IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5h
Y2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkgOiBudWxscHRyOwogfQogI2VuZGlmCiAKK0ludFBv
aW50IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnJlbW90ZUZyYW1lT2Zmc2V0KCkgY29uc3QKK3sKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyAgICBhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7
CisgICAgYXV0byogZnJhbWUgPSBkb2N1bWVudCA/IGRvY3VtZW50LT5mcmFtZSgpIDogbnVsbHB0
cjsKKyAgICByZXR1cm4gZnJhbWUgPyBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuYWNjZXNzaWJp
bGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCkgOiBJbnRQb2ludCgpOworI2Vsc2UKKyAgICByZXR1cm4g
SW50UG9pbnQoKTsKKyNlbmRpZgorfQorCiBEb2N1bWVudCogQWNjZXNzaWJpbGl0eU9iamVjdDo6
ZG9jdW1lbnQoKSBjb25zdAogewogICAgIGF1dG8qIGZyYW1lVmlldyA9IGRvY3VtZW50RnJhbWVW
aWV3KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5oCmluZGV4IDQwZDA0NDM4ZGUyMS4uMWIzNWFhYjdjY2JlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaApAQCAtMTAy
LDYgKzEwMiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorICAgIGJvb2wgaXNBWFJlbW90ZUZyYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlld0luc3Rh
bmNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3Np
YmlsaXR5U1ZHUm9vdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0FjY2Vz
c2liaWxpdHlUYWJsZUluc3RhbmNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
QEAgLTQ2MiwxMCArNDYzLDE0IEBAIHB1YmxpYzoKICAgICBXaWRnZXQqIHdpZGdldEZvckF0dGFj
aG1lbnRWaWV3KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIGJvb2wg
aXNQbHVnaW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCisgICAgSW50UG9p
bnQgcmVtb3RlRnJhbWVPZmZzZXQoKSBjb25zdCBvdmVycmlkZTsKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICBSZW1vdGVBWE9iamVjdFJlZiByZW1vdGVQYXJlbnRPYmplY3QoKSBjb25zdCBvdmVy
cmlkZTsKICAgICBGbG9hdFJlY3QgY29udmVydFJlY3RUb1BsYXRmb3JtU3BhY2UoY29uc3QgRmxv
YXRSZWN0JiwgQWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZSkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgUmV0YWluUHRyPGlkPiByZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG5pbDsgfQogI2VuZGlmCisgICAgYm9vbCBoYXNSZW1vdGVGcmFtZUNoaWxk
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIFBhZ2UqIHBhZ2UoKSBj
b25zdCBvdmVycmlkZTsKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCBvdmVycmlkZTsK
ICAgICBSZWZQdHI8RG9jdW1lbnQ+IHByb3RlY3RlZERvY3VtZW50KCkgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcAppbmRleCBlZThhYmVjM2Q3YjUuLjJmMTJlZjc1M2U0YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwCkBAIC0yNDEzLDcgKzI0MTMsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmFkZEF0dGFjaG1lbnRDaGlsZHJlbigpCiAKICAgICAvLyBMb2NhbEZyYW1lVmlldydz
IG5lZWQgdG8gYmUgaW5zZXJ0ZWQgaW50byB0aGUgQVggaGllcmFyY2h5IHdoZW4gZW5jb3VudGVy
ZWQuCiAgICAgV2lkZ2V0KiB3aWRnZXQgPSB3aWRnZXRGb3JBdHRhY2htZW50VmlldygpOwotICAg
IGlmICghd2lkZ2V0IHx8ICF3aWRnZXQtPmlzTG9jYWxGcmFtZVZpZXcoKSkKKyAgICBpZiAoIXdp
ZGdldCB8fCAhKHdpZGdldC0+aXNMb2NhbEZyYW1lVmlldygpIHx8IHdpZGdldC0+aXNSZW1vdGVG
cmFtZVZpZXcoKSkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBhZGRDaGlsZChheE9iamVj
dENhY2hlKCktPmdldE9yQ3JlYXRlKHdpZGdldCkpOwpAQCAtMjU2OCw3ICsyNTY4LDcgQEAgdm9p
ZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRDaGlsZHJlbigpCiAgICAgICAgIGF1dG8g
b3duZXJzID0gb2JqZWN0Lm93bmVycygpOwogICAgICAgICBpZiAob3duZXJzLnNpemUoKSAmJiAh
b3duZXJzLmNvbnRhaW5zKHRoaXMpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKwog
ICAgICAgICBhZGRDaGlsZCgmb2JqZWN0KTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwCmluZGV4
IDJiYmMzMDg3YjlmOC4uNTIxMjIyYWY2MDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcApAQCAtMjcsMTAg
KzI3LDEyIEBACiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaCIKIAogI2luY2x1
ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKKyNpbmNsdWRlICJBWFJlbW90ZUZyYW1lLmgiCiAjaW5jbHVk
ZSAiQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxl
bWVudC5oIgogI2luY2x1ZGUgIkxvY2FsRnJhbWUuaCIKICNpbmNsdWRlICJMb2NhbEZyYW1lVmll
dy5oIgorI2luY2x1ZGUgIlJlbW90ZUZyYW1lVmlldy5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1l
bnQuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKIApAQCAtNTIsNiArNTQsMTYgQEAgQWNjZXNzaWJp
bGl0eVNjcm9sbFZpZXc6On5BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldygpCiB2b2lkIEFjY2Vzc2li
aWxpdHlTY3JvbGxWaWV3OjpkZXRhY2hSZW1vdGVQYXJ0cyhBY2Nlc3NpYmlsaXR5RGV0YWNobWVu
dFR5cGUgZGV0YWNobWVudFR5cGUpCiB7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZGV0YWNo
UmVtb3RlUGFydHMoZGV0YWNobWVudFR5cGUpOworCisgICAgYXV0byogcmVtb3RlRnJhbWVWaWV3
ID0gZHluYW1pY0Rvd25jYXN0PFJlbW90ZUZyYW1lVmlldz4obV9zY3JvbGxWaWV3LmdldCgpKTsK
KyAgICBpZiAocmVtb3RlRnJhbWVWaWV3ICYmIG1fcmVtb3RlRnJhbWUgJiYgKGRldGFjaG1lbnRU
eXBlID09IEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZTo6RWxlbWVudERlc3Ryb3llZCB8fCBk
ZXRhY2htZW50VHlwZSA9PSBBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGU6OkNhY2hlRGVzdHJv
eWVkKSkgeworI2lmIFBMQVRGT1JNKE1BQykKKyAgICAgICAgYXV0byYgcmVtb3RlRnJhbWUgPSBy
ZW1vdGVGcmFtZVZpZXctPmZyYW1lKCk7CisgICAgICAgIHJlbW90ZUZyYW1lLnVuYmluZFJlbW90
ZUFjY2Vzc2liaWxpdHlGcmFtZXMobV9yZW1vdGVGcmFtZS0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7
CisjZW5kaWYKKyAgICAgICAgbV9yZW1vdGVGcmFtZSA9IG51bGxwdHI7CisgICAgfQorCiAgICAg
bV9zY3JvbGxWaWV3ID0gbnVsbHB0cjsKICAgICBtX2ZyYW1lT3duZXJFbGVtZW50ID0gbnVsbHB0
cjsKIH0KQEAgLTE3Nyw4ICsxODksMTAgQEAgQWNjZXNzaWJpbGl0eVNjcm9sbGJhciogQWNjZXNz
aWJpbGl0eVNjcm9sbFZpZXc6OmFkZENoaWxkU2Nyb2xsYmFyKFNjcm9sbGJhciogc2MKIHZvaWQg
QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmNsZWFyQ2hpbGRyZW4oKQogewogICAgIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OmNsZWFyQ2hpbGRyZW4oKTsKKwogICAgIG1fdmVydGljYWxTY3JvbGxiYXIg
PSBudWxscHRyOwogICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhciA9IG51bGxwdHI7CisKICAgICBt
X2NoaWxkcmVuRGlydHkgPSBmYWxzZTsKIH0KIApAQCAtMTkxLDExICsyMDUsNDUgQEAgYm9vbCBB
Y2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBj
b25zdAogICAgIHJldHVybiB3ZWJBcmVhLT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCk7CiB9CiAK
K3ZvaWQgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmFkZFJlbW90ZUZyYW1lQ2hpbGQoKQorewor
ICAgIGF1dG8qIHJlbW90ZUZyYW1lVmlldyA9IGR5bmFtaWNEb3duY2FzdDxSZW1vdGVGcmFtZVZp
ZXc+KG1fc2Nyb2xsVmlldy5nZXQoKSk7CisgICAgaWYgKCFyZW1vdGVGcmFtZVZpZXcpCisgICAg
ICAgIHJldHVybjsKKworICAgIFdlYWtQdHIgY2FjaGUgPSBheE9iamVjdENhY2hlKCk7CisgICAg
aWYgKCFjYWNoZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX3JlbW90ZUZyYW1lKSB7
CisgICAgICAgIC8vIE1ha2UgdGhlIGZhdXggZWxlbWVudCB0aGF0IHJlcHJlc2VudHMgdGhlIHJl
bW90ZSB0cmFuc2ZlciBlbGVtZW50IGZvciBBWC4KKyAgICAgICAgbV9yZW1vdGVGcmFtZSA9IGRv
d25jYXN0PEFYUmVtb3RlRnJhbWU+KGNhY2hlLT5jcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGU6OlJl
bW90ZUZyYW1lKSk7CisgICAgICAgIG1fcmVtb3RlRnJhbWUtPnNldFBhcmVudCh0aGlzKTsKKwor
I2lmIFBMQVRGT1JNKE1BQykKKyAgICAgICAgLy8gR2VuZXJhdGUgYSBuZXcgdG9rZW4gYW5kIHBh
c3MgaXQgYmFjayB0byB0aGUgb3RoZXIgcmVtb3RlIGZyYW1lIHNvIGl0IGNhbiBiaW5kIHRoZXNl
IG9iamVjdHMgdG9nZXRoZXIuCisgICAgICAgIGF1dG8gZ2VuZXJhdGVkVG9rZW4gPSBtX3JlbW90
ZUZyYW1lLT5nZW5lcmF0ZVJlbW90ZVRva2VuKCk7CisgICAgICAgIGF1dG8mIHJlbW90ZUZyYW1l
ID0gcmVtb3RlRnJhbWVWaWV3LT5mcmFtZSgpOworICAgICAgICByZW1vdGVGcmFtZS5iaW5kUmVt
b3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhnZXRwaWQoKSwgZ2VuZXJhdGVkVG9rZW4sIFt0aGlzLCAm
cmVtb3RlRnJhbWUsIHByb3RlY3RlZEFjY2Vzc2JpbGl0eVJlbW90ZUZyYW1lID0gUmVmUHRyIHsg
bV9yZW1vdGVGcmFtZSB9XSAoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHRva2VuLCBpbnQgcHJv
Y2Vzc0lkZW50aWZpZXIpIG11dGFibGUgeworICAgICAgICAgICAgcHJvdGVjdGVkQWNjZXNzYmls
aXR5UmVtb3RlRnJhbWUtPmluaXRpYWxpemVQbGF0Zm9ybUVsZW1lbnRXaXRoUmVtb3RlVG9rZW4o
dG9rZW4sIHByb2Nlc3NJZGVudGlmaWVyKTsKKworICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBy
ZW1vdGUgc2lkZSB3aXRoIHRoZSBvZmZzZXQgb2YgdGhpcyBvYmplY3Qgc28gaXQgY2FuIGNhbGN1
bGF0ZSBmcmFtZXMgY29ycmVjdGx5LgorICAgICAgICAgICAgYXV0byBsb2NhdGlvbiA9IGVsZW1l
bnRSZWN0KCkubG9jYXRpb24oKTsKKyAgICAgICAgICAgIHJlbW90ZUZyYW1lLnVwZGF0ZVJlbW90
ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChmbG9vcmVkSW50UG9pbnQobG9jYXRpb24pKTsKKyAg
ICAgICAgfSk7CisjZW5kaWYKKyAgICB9IGVsc2UKKyAgICAgICAgbV9yZW1vdGVGcmFtZS0+c2V0
UGFyZW50KHRoaXMpOworCisgICAgYWRkQ2hpbGQobV9yZW1vdGVGcmFtZS5nZXQoKSk7Cit9CisK
IHZvaWQgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmFkZENoaWxkcmVuKCkKIHsKICAgICBBU1NF
UlQoIW1fY2hpbGRyZW5Jbml0aWFsaXplZCk7CiAgICAgbV9jaGlsZHJlbkluaXRpYWxpemVkID0g
dHJ1ZTsKIAorICAgIGFkZFJlbW90ZUZyYW1lQ2hpbGQoKTsKICAgICBhZGRDaGlsZCh3ZWJBcmVh
T2JqZWN0KCkpOwogICAgIHVwZGF0ZVNjcm9sbGJhcnMoKTsKIH0KQEAgLTIwMyw3ICsyNTEsNyBA
QCB2b2lkIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjphZGRDaGlsZHJlbigpCiBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6d2ViQXJlYU9iamVjdCgpIGNvbnN0
CiB7CiAgICAgYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOwotICAgIGlmICghZG9j
dW1lbnQgfHwgIWRvY3VtZW50LT5oYXNMaXZpbmdSZW5kZXJUcmVlKCkpCisgICAgaWYgKCFkb2N1
bWVudCB8fCAhZG9jdW1lbnQtPmhhc0xpdmluZ1JlbmRlclRyZWUoKSB8fCBtX3JlbW90ZUZyYW1l
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmIChhdXRvKiBjYWNoZSA9IGF4T2Jq
ZWN0Q2FjaGUoKSkKQEAgLTIzNCw5ICsyODIsMTUgQEAgTGF5b3V0UmVjdCBBY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldzo6ZWxlbWVudFJlY3QoKSBjb25zdAogCiBEb2N1bWVudCogQWNjZXNzaWJpbGl0
eVNjcm9sbFZpZXc6OmRvY3VtZW50KCkgY29uc3QKIHsKLSAgICBpZiAoYXV0byogZnJhbWVWaWV3
ID0gZHluYW1pY0Rvd25jYXN0PExvY2FsRnJhbWVWaWV3PihtX3Njcm9sbFZpZXcuZ2V0KCkpKSB7
CisgICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGR5bmFtaWNEb3duY2FzdDxMb2NhbEZyYW1lVmll
dz4obV9zY3JvbGxWaWV3LmdldCgpKSkKICAgICAgICAgcmV0dXJuIGZyYW1lVmlldy0+ZnJhbWUo
KS5kb2N1bWVudCgpOworCisgICAgLy8gRm9yIHRoZSBSZW1vdGVGcmFtZVZpZXcgY2FzZSwgd2Ug
bmVlZCB0byByZXR1cm4gdGhlIGRvY3VtZW50IG9mIG91ciBob3N0aW5nIHBhcmVudCBzbyBheE9i
amVjdENhY2hlKCkgcmVzb2x2ZXMgY29ycmVjdGx5LgorICAgIGlmIChhdXRvKiByZW1vdGVGcmFt
ZVZpZXcgPSBkeW5hbWljRG93bmNhc3Q8UmVtb3RlRnJhbWVWaWV3PihtX3Njcm9sbFZpZXcuZ2V0
KCkpKSB7CisgICAgICAgIGlmIChhdXRvKiBvd25lciA9IHJlbW90ZUZyYW1lVmlldy0+ZnJhbWUo
KS5vd25lckVsZW1lbnQoKSkKKyAgICAgICAgICAgIHJldHVybiAmKG93bmVyLT5kb2N1bWVudCgp
KTsKICAgICB9CisKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdDo6ZG9jdW1lbnQoKTsK
IH0KIApAQCAtMjU5LDggKzMxMywxMCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmls
aXR5U2Nyb2xsVmlldzo6cGFyZW50T2JqZWN0KCkgY29uc3QKICAgICBXZWFrUHRyIG93bmVyID0g
bV9mcmFtZU93bmVyRWxlbWVudC5nZXQoKTsKICAgICBpZiAoYXV0byogbG9jYWxGcmFtZVZpZXcg
PSBkeW5hbWljRG93bmNhc3Q8TG9jYWxGcmFtZVZpZXc+KG1fc2Nyb2xsVmlldy5nZXQoKSkpCiAg
ICAgICAgIG93bmVyID0gbG9jYWxGcmFtZVZpZXctPmZyYW1lKCkub3duZXJFbGVtZW50KCk7Cisg
ICAgZWxzZSBpZiAoYXV0byogcmVtb3RlRnJhbWVWaWV3ID0gZHluYW1pY0Rvd25jYXN0PFJlbW90
ZUZyYW1lVmlldz4obV9zY3JvbGxWaWV3LmdldCgpKSkKKyAgICAgICAgb3duZXIgPSByZW1vdGVG
cmFtZVZpZXctPmZyYW1lKCkub3duZXJFbGVtZW50KCk7CiAKLSAgICBpZiAoY2FjaGUgJiYgb3du
ZXIgJiYgb3duZXItPnJlbmRlcmVyKCkpCisgICAgaWYgKG93bmVyICYmIG93bmVyLT5yZW5kZXJl
cigpKQogICAgICAgICByZXR1cm4gY2FjaGUtPmdldE9yQ3JlYXRlKG93bmVyLmdldCgpKTsKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaAppbmRleCA1NTcwNDQ2NzFjN2QuLjUyNWFj
NzgzZmJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5U2Nyb2xsVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXcuaApAQCAtMzAsNiArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgCitjbGFzcyBBWFJlbW90ZUZyYW1lOwogY2xhc3MgQWNjZXNzaWJpbGl0eVNj
cm9sbGJhcjsKIGNsYXNzIFNjcm9sbGJhcjsKIGNsYXNzIFNjcm9sbFZpZXc7CkBAIC01NCw3ICs1
NSw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlld0luc3Rh
bmNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgaXNFbmFibGVk
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIAorICAgIGJvb2wgaGFzUmVt
b3RlRnJhbWVDaGlsZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcmVtb3RlRnJhbWU7IH0KKwog
ICAgIGJvb2wgaXNBdHRhY2htZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUGxhdGZvcm1XaWRn
ZXQgcGxhdGZvcm1XaWRnZXQoKSBjb25zdCBvdmVycmlkZTsKICAgICBXaWRnZXQqIHdpZGdldEZv
ckF0dGFjaG1lbnRWaWV3KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gY3VycmVudFNjcm9sbFZp
ZXcoKTsgfQpAQCAtNjksNiArNzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0Rm9jdXNlZChi
b29sKSBvdmVycmlkZTsKICAgICBib29sIGNhblNldEZvY3VzQXR0cmlidXRlKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgYm9vbCBpc0ZvY3VzZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFk
ZFJlbW90ZUZyYW1lQ2hpbGQoKTsKIAogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIExvY2FsRnJhbWVWaWV3KiBkb2N1bWVudEZyYW1lVmlldygpIGNvbnN0IG92
ZXJyaWRlOwpAQCAtODUsNiArODgsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxBY2Nlc3NpYmls
aXR5T2JqZWN0PiBtX2hvcml6b250YWxTY3JvbGxiYXI7CiAgICAgUmVmUHRyPEFjY2Vzc2liaWxp
dHlPYmplY3Q+IG1fdmVydGljYWxTY3JvbGxiYXI7CiAgICAgYm9vbCBtX2NoaWxkcmVuRGlydHk7
CisgICAgUmVmUHRyPEFYUmVtb3RlRnJhbWU+IG1fcmVtb3RlRnJhbWU7CiB9OwogICAgIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuY3BwCmluZGV4IDVk
ZTk3MGYxZjcwZC4uNTE4N2IyZmEzNTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuY3Bw
CkBAIC0zNzAsNiArMzcwLDcgQEAgc3RhdGljIEF0c3BpOjpSb2xlIGF0c3BpUm9sZShBY2Nlc3Np
YmlsaXR5Um9sZSByb2xlKQogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlN1bW1hcnk6CiAg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFibGVIZWFkZXJDb250YWluZXI6CiAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3VnZ2VzdGlvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpSZW1vdGVGcmFtZToKICAgICAgICAgcmV0dXJuIEF0c3BpOjpSb2xlOjpVbmtub3duOwog
ICAgIC8vIEFkZCBtb3N0IG5ldyByb2xlcyBhYm92ZS4gVGhlIHJlbGVhc2UgYXNzZXJ0IGlzIGZv
ciByb2xlcyB0aGF0IGFyZSBoYW5kbGVkIHNwZWNpYWxseS4KICAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpMaXN0TWFya2VyOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5t
bQppbmRleCAyZjI5YjcyZmZlN2UuLjkyNDNhZDZiZDM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1Mu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJJT1MubW0KQEAgLTExMTIsNiArMTExMiw3IEBAIHN0YXRpYyBBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlciAqYW5jZXN0b3JXaXRoUm9sZShjb25zdCBBWENvcmVPYmplY3Qm
IGRlc2NlbmRhCiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6SWdub3JlZDoKICAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpMaW5lQnJlYWs6CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6UHJlc2VudGF0aW9uYWw6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmVtb3RlRnJh
bWU6CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bjoKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKaW5kZXggMTAxNDU0NjI3
OGYzLi4zNDJkNGM3MmU2NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCkBAIC0zNzgs
NiArMzc4LDEwIEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZVByb3BlcnRpZXMo
Y29uc3QgUmVmPEFjY2Vzc2liaWxpdHlPYmplY3Q+JiBheE9iCiAjZW5kaWYKIAogICAgIHNldE9i
amVjdFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJbnRlcm5hbExpbmtFbGVtZW50LCBvYmplY3Qu
aW50ZXJuYWxMaW5rRWxlbWVudCgpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6
SGFzUmVtb3RlRnJhbWVDaGlsZCwgb2JqZWN0Lmhhc1JlbW90ZUZyYW1lQ2hpbGQoKSk7CisgICAg
Ly8gRG9uJ3QgZHVwbGljYXRlIHRoZSByZW1vdGVGcmFtZU9mZnNldCBmb3IgZXZlcnkgb2JqZWN0
LiBKdXN0IHN0b3JlIGluIHRoZSBXZWJBcmVhLgorICAgIGlmIChvYmplY3QuaXNXZWJBcmVhKCkp
CisgICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpSZW1vdGVGcmFtZU9mZnNldCwg
b2JqZWN0LnJlbW90ZUZyYW1lT2Zmc2V0KCkpOwogCiAgICAgaW5pdGlhbGl6ZVBsYXRmb3JtUHJv
cGVydGllcyhheE9iamVjdCk7CiB9CkBAIC00NjQsNiArNDY4LDcgQEAgdm9pZCBBWElzb2xhdGVk
T2JqZWN0OjpzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEFYUHJvcGVy
dHlWYWx1ZVYKICAgICAgICAgW10oT3B0aW9uU2V0PEFYQW5jZXN0b3JGbGFnPiYgdHlwZWRWYWx1
ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZS5pc0VtcHR5KCk7IH0sCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgICAgIFtdKFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+JiB0eXBlZFZhbHVlKSB7
IHJldHVybiAhdHlwZWRWYWx1ZTsgfSwKKyAgICAgICAgW10oUmV0YWluUHRyPGlkPiYgdHlwZWRW
YWx1ZSkgeyByZXR1cm4gIXR5cGVkVmFsdWU7IH0sCiAjZW5kaWYKICAgICAgICAgW10oSW5zaWRl
TGluayYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZSA9PSBJbnNpZGVMaW5rKCk7IH0s
CiAgICAgICAgIFtdKFZlY3RvcjxWZWN0b3I8QVhJRD4+JiB0eXBlZFZhbHVlKSB7IHJldHVybiB0
eXBlZFZhbHVlLmlzRW1wdHkoKTsgfSwKQEAgLTEyMDYsNiArMTIxMSwyMSBAQCBMYXlvdXRSZWN0
IEFYSXNvbGF0ZWRPYmplY3Q6OmVsZW1lbnRSZWN0KCkgY29uc3QKICAgICB9KTsKIH0KIAorSW50
UG9pbnQgQVhJc29sYXRlZE9iamVjdDo6cmVtb3RlRnJhbWVPZmZzZXQoKSBjb25zdAoreworICAg
IGF1dG8qIHdlYkFyZWEgPSBBY2Nlc3NpYmlsaXR5OjpmaW5kQW5jZXN0b3I8QVhJc29sYXRlZE9i
amVjdD4oKnRoaXMsIHRydWUsIFtdIChjb25zdCBhdXRvJiBvYmplY3QpIHsKKyAgICAgICAgcmV0
dXJuIG9iamVjdC5pc1dlYkFyZWEoKTsKKyAgICB9KTsKKworICAgIGlmICghd2ViQXJlYSkKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKworICAgIGlmIChhdXRvIHBvaW50ID0gd2ViQXJlYS0+b3B0aW9u
YWxBdHRyaWJ1dGVWYWx1ZTxJbnRQb2ludD4oQVhQcm9wZXJ0eU5hbWU6OlJlbW90ZUZyYW1lT2Zm
c2V0KSkKKyAgICAgICAgcmV0dXJuICpwb2ludDsKKworICAgIHJldHVybiB7IH07Cit9CisKIEZs
b2F0UG9pbnQgQVhJc29sYXRlZE9iamVjdDo6c2NyZWVuUmVsYXRpdmVQb3NpdGlvbigpIGNvbnN0
CiB7CiAgICAgaWYgKGF1dG8gcG9pbnQgPSBvcHRpb25hbEF0dHJpYnV0ZVZhbHVlPEZsb2F0UG9p
bnQ+KEFYUHJvcGVydHlOYW1lOjpTY3JlZW5SZWxhdGl2ZVBvc2l0aW9uKSkKQEAgLTEyMjksMjIg
KzEyNDksMjMgQEAgRmxvYXRQb2ludCBBWElzb2xhdGVkT2JqZWN0OjpzY3JlZW5SZWxhdGl2ZVBv
c2l0aW9uKCkgY29uc3QKIAogRmxvYXRSZWN0IEFYSXNvbGF0ZWRPYmplY3Q6OnJlbGF0aXZlRnJh
bWUoKSBjb25zdAogeworICAgIEZsb2F0UmVjdCByZWxhdGl2ZUZyYW1lOworCiAgICAgaWYgKGF1
dG8gY2FjaGVkUmVsYXRpdmVGcmFtZSA9IG9wdGlvbmFsQXR0cmlidXRlVmFsdWU8SW50UmVjdD4o
QVhQcm9wZXJ0eU5hbWU6OlJlbGF0aXZlRnJhbWUpKSB7CiAgICAgICAgIC8vIFdlIHNob3VsZCBu
b3QgaGF2ZSBjYWNoZWQgYSByZWxhdGl2ZSBmcmFtZSBmb3IgZWxlbWVudHMgdGhhdCBnZXQgdGhl
aXIgZ2VvbWV0cnkgZnJvbSB0aGVpciBjaGlsZHJlbi4KICAgICAgICAgQVNTRVJUKCFtX2dldHNH
ZW9tZXRyeUZyb21DaGlsZHJlbik7Ci0gICAgICAgIHJldHVybiAqY2FjaGVkUmVsYXRpdmVGcmFt
ZTsKLSAgICB9Ci0KLSAgICBpZiAobV9nZXRzR2VvbWV0cnlGcm9tQ2hpbGRyZW4pIHsKKyAgICAg
ICAgcmVsYXRpdmVGcmFtZSA9ICpjYWNoZWRSZWxhdGl2ZUZyYW1lOworICAgIH0gZWxzZSBpZiAo
bV9nZXRzR2VvbWV0cnlGcm9tQ2hpbGRyZW4pIHsKICAgICAgICAgYXV0byBmcmFtZSA9IGVuY2xv
c2luZ0ludFJlY3QocmVsYXRpdmVGcmFtZUZyb21DaGlsZHJlbigpKTsKICAgICAgICAgaWYgKCFm
cmFtZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gZnJhbWU7CisgICAgICAgICAgICBy
ZWxhdGl2ZUZyYW1lID0gZnJhbWU7CiAgICAgICAgIC8vIEVpdGhlciB3ZSBoYWQgbm8gY2hpbGRy
ZW4sIG9yIG91ciBjaGlsZHJlbiBoYWQgZW1wdHkgZnJhbWVzLiBUaGUgcmlnaHQgdGhpbmcgdG8g
ZG8gd291bGQgYmUgdG8gcmV0dXJuCiAgICAgICAgIC8vIGEgcmVjdCBhdCB0aGUgcG9zaXRpb24g
b2YgdGhlIG5lYXJlc3QgcmVuZGVyIHRyZWUgYW5jZXN0b3Igd2l0aCBzb21lIG1hZGUtdXAgc2l6
ZSAoQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmJvdW5kaW5nQm94UmVjdCBkb2VzIHRoaXMpLgog
ICAgICAgICAvLyBIb3dldmVyLCB3ZSBkb24ndCBoYXZlIGFjY2VzcyB0byB0aGUgcmVuZGVyIHRy
ZWUgaW4gdGhpcyBjb250ZXh0IChvbmx5IHRoZSBBWCBpc29sYXRlZCB0cmVlLCB3aGljaCBpcyB0
b28gc3BhcnNlIGZvciB0aGlzIHB1cnBvc2UpLCBzbwogICAgICAgICAvLyB1bnRpbCB3ZSBjYWNo
ZSB0aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIGxldCdzIGdvIHRvIHRoZSBtYWluLXRocmVhZC4K
ICAgICB9IGVsc2UgaWYgKHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpDb2x1bW4g
fHwgcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRhYmxlSGVhZGVyQ29udGFpbmVy
KQotICAgICAgICByZXR1cm4gZXhwb3NlZFRhYmxlQW5jZXN0b3IoKSA/IHJlbGF0aXZlRnJhbWVG
cm9tQ2hpbGRyZW4oKSA6IEZsb2F0UmVjdCgpOworICAgICAgICByZWxhdGl2ZUZyYW1lID0gZXhw
b3NlZFRhYmxlQW5jZXN0b3IoKSA/IHJlbGF0aXZlRnJhbWVGcm9tQ2hpbGRyZW4oKSA6IEZsb2F0
UmVjdCgpOworCiAKICAgICAvLyBNb2NrIG9iamVjdHMgYW5kIFNWRyBvYmplY3RzIG5lZWQgdXNl
IHRoZSBtYWluIHRocmVhZCBzaW5jZSB0aGV5IGRvIG5vdCBoYXZlIHJlbmRlciBub2RlcyBhbmQg
YXJlIG5vdCBwYWludGVkIHdpdGggbGF5ZXJzLCByZXNwZWN0aXZlbHkuCiAgICAgLy8gRklYTUU6
IFJlbW92ZSBpc05vbkxheWVyU1ZHT2JqZWN0IHdoZW4gTEJTRSBpcyBlbmFibGVkICYgU1ZHIGZy
YW1lcyBhcmUgY2FjaGVkLgpAQCAtMTI2Niw2ICsxMjg3LDcgQEAgRmxvYXRSZWN0IEFYSXNvbGF0
ZWRPYmplY3Q6OnJlbGF0aXZlRnJhbWUoKSBjb25zdAogICAgIGlmIChhbmNlc3RvciAmJiBmcmFt
ZVJlY3QubG9jYXRpb24oKSA9PSBGbG9hdFBvaW50KCkpCiAgICAgICAgIGZyYW1lUmVjdC5zZXRM
b2NhdGlvbihhbmNlc3Rvci0+cmVsYXRpdmVGcmFtZSgpLmxvY2F0aW9uKCkpOwogCisgICAgZnJh
bWVSZWN0Lm1vdmVCeSh7IHJlbW90ZUZyYW1lT2Zmc2V0KCkgfSk7CiAgICAgcmV0dXJuIGZyYW1l
UmVjdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29s
YXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCmluZGV4IGQyYTY2YzJmNTNlNC4uZGU4
MjdkNWZlMDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCkBAIC0yOCw2ICsyOCw3IEBACiAj
aWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKIAogI2luY2x1ZGUgIkFYQ29y
ZU9iamVjdC5oIgorI2luY2x1ZGUgIkFYSXNvbGF0ZWRUcmVlLmgiCiAjaW5jbHVkZSAiQVhPYmpl
Y3RDYWNoZS5oIgogI2luY2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5o
IgpAQCAtMjE1LDYgKzIxNiw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0ZpbGVVcGxvYWRCdXR0
b24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5h
bWU6OklzRmlsZVVwbG9hZEJ1dHRvbik7IH0KICAgICBib29sIGlzTWV0ZXIoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWV0ZXIpOyB9
OwogICAgIEZsb2F0UG9pbnQgc2NyZWVuUmVsYXRpdmVQb3NpdGlvbigpIGNvbnN0IGZpbmFsOwor
ICAgIEludFBvaW50IHJlbW90ZUZyYW1lT2Zmc2V0KCkgY29uc3QgZmluYWw7CiAgICAgRmxvYXRS
ZWN0IHJlbGF0aXZlRnJhbWUoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGhhc0NhY2hlZFJlbGF0
aXZlRnJhbWUoKSBjb25zdCB7IHJldHVybiBvcHRpb25hbEF0dHJpYnV0ZVZhbHVlPEludFJlY3Q+
KEFYUHJvcGVydHlOYW1lOjpSZWxhdGl2ZUZyYW1lKS5oYXNfdmFsdWUoKTsgfQogI2lmIFBMQVRG
T1JNKE1BQykKQEAgLTI2Myw3ICsyNjUsNyBAQCBwcml2YXRlOgogICAgIEFYSXNvbGF0ZWRPYmpl
Y3QqIGFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3QgZmluYWw7CiAg
ICAgQVhJc29sYXRlZE9iamVjdCogZm9jdXNlZFVJRWxlbWVudCgpIGNvbnN0IGZpbmFsOwogICAg
IEFYQ29yZU9iamVjdCogaW50ZXJuYWxMaW5rRWxlbWVudCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG9iamVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJbnRlcm5hbExpbmtFbGVtZW50
KTsgfQotICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciByYWRpb0J1dHRvbkdyb3VwKCkg
Y29uc3QgeyByZXR1cm4gdHJlZSgpLT5vYmplY3RzRm9ySURzKHZlY3RvckF0dHJpYnV0ZVZhbHVl
PEFYSUQ+KEFYUHJvcGVydHlOYW1lOjpSYWRpb0J1dHRvbkdyb3VwKSk7IH0KKyAgICBBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3IgcmFkaW9CdXR0b25Hcm91cCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIHRyZWUoKS0+b2JqZWN0c0ZvcklEcyh2ZWN0b3JBdHRyaWJ1dGVWYWx1ZTxBWElEPihBWFBy
b3BlcnR5TmFtZTo6UmFkaW9CdXR0b25Hcm91cCkpOyB9CiAgICAgQVhJc29sYXRlZE9iamVjdCog
c2Nyb2xsQmFyKEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbikgZmluYWw7CiAgICAgY29uc3QgU3Ry
aW5nIHBsYWNlaG9sZGVyVmFsdWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdHJpbmdBdHRyaWJ1
dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6UGxhY2Vob2xkZXJWYWx1ZSk7IH0KICAgICBTdHJpbmcg
ZXhwYW5kZWRUZXh0VmFsdWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVW
YWx1ZShBWFByb3BlcnR5TmFtZTo6RXhwYW5kZWRUZXh0VmFsdWUpOyB9CkBAIC00NTYsNyArNDU4
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzQWNjZXNzaWJpbGl0eUFSSUFHcmlkSW5zdGFuY2Uo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5
QVJJQUdyaWRSb3dJbnN0YW5jZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
Ym9vbCBpc0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGxJbnN0YW5jZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIGZhbHNlOyB9Ci0KKyAgICBib29sIGlzQVhSZW1vdGVGcmFtZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc05hdGl2ZVRleHRDb250cm9sKCkgY29uc3Qg
ZmluYWw7CiAgICAgYm9vbCBpc0xpc3RCb3hPcHRpb24oKSBjb25zdCBmaW5hbDsKICAgICBib29s
IGlzTW9ja09iamVjdCgpIGNvbnN0IGZpbmFsOwpAQCAtNTM3LDcgKzUzOSw5IEBAIHByaXZhdGU6
CiAgICAgU3RyaW5nIG5hbWVBdHRyaWJ1dGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdHJpbmdB
dHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6TmFtZUF0dHJpYnV0ZSk7IH0KICNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICBib29sIGhhc0FwcGxlUERGQW5ub3RhdGlvbkF0dHJpYnV0ZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SGFz
QXBwbGVQREZBbm5vdGF0aW9uQXR0cmlidXRlKTsgfQorICAgIFJldGFpblB0cjxpZD4gcmVtb3Rl
RnJhbWVQbGF0Zm9ybUVsZW1lbnQoKSBjb25zdCBmaW5hbDsKICNlbmRpZgorICAgIGJvb2wgaGFz
UmVtb3RlRnJhbWVDaGlsZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1
ZShBWFByb3BlcnR5TmFtZTo6SGFzUmVtb3RlRnJhbWVDaGlsZCk7IH0KIAogI2lmIFBMQVRGT1JN
KENPQ09BKSAmJiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICBWZWN0b3I8UmV0YWluUHRyPGlk
Pj4gbW9kZWxFbGVtZW50Q2hpbGRyZW4oKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcApp
bmRleCA2OTY2NTg0NDhmNjUuLjNhY2MxOTk4YjFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNw
cApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQVhJc29sYXRlZE9iamVjdC5oIgogI2lu
Y2x1ZGUgIkFYTG9nZ2VyLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlLmgiCiAjaW5j
bHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlUm93LmgiCiAjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24u
aCIKICNpbmNsdWRlICJMb2NhbEZyYW1lVmlldy5oIgpAQCAtMjI1LDQ2ICsyMjYsMjYgQEAgUmVm
UHRyPEFYSXNvbGF0ZWRPYmplY3Q+IEFYSXNvbGF0ZWRUcmVlOjpvYmplY3RGb3JJRChjb25zdCBB
WElEIGF4SUQpIGNvbnN0CiAgICAgcmV0dXJuIGF4SUQuaXNWYWxpZCgpID8gbV9yZWFkZXJUaHJl
YWROb2RlTWFwLmdldChheElEKSA6IG51bGxwdHI7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFU+
Ci1WZWN0b3I8UmVmUHRyPEFYQ29yZU9iamVjdD4+IEFYSXNvbGF0ZWRUcmVlOjpvYmplY3RzRm9y
SURzKGNvbnN0IFUmIGF4SURzKQorUmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+IEFYSXNvbGF0ZWRU
cmVlOjpyZXRyaWV2ZU9iamVjdEZvcklERnJvbU1haW5UaHJlYWQoY29uc3QgQVhJRCBheElEKSBj
b25zdAogewotICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwotCi0gICAgVmVjdG9yPFJlZlB0
cjxBWENvcmVPYmplY3Q+PiByZXN1bHQ7Ci0gICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkoYXhJRHMuc2l6ZSgpKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGF4SUQgOiBheElEcykgewot
ICAgICAgICBSZWZQdHIgb2JqZWN0ID0gb2JqZWN0Rm9ySUQoYXhJRCk7Ci0gICAgICAgIGlmIChv
YmplY3QpIHsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoV1RGTW92ZShvYmplY3QpKTsKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gVGhlcmUgaXMgbm8g
aXNvbGF0ZWQgb2JqZWN0IGZvciB0aGlzIEFYSUQuIFRoaXMgY2FuIGhhcHBlbiBpZiB0aGUgY29y
cmVzcG9uZGluZyBsaXZlIG9iamVjdCBpcyBpZ25vcmVkLgotICAgICAgICAvLyBJZiB0aGVyZSBp
cyBhIGxpdmUgb2JqZWN0IGZvciB0aGlzIElEIGFuZCBpdCBpcyBhbiBpZ25vcmVkIHRhcmdldCBv
ZiBhIHJlbGF0aW9uc2hpcCwgY3JlYXRlIGFuIGlzb2xhdGVkIG9iamVjdCBmb3IgaXQuCi0gICAg
ICAgIG9iamVjdCA9IEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxS
ZWZQdHI8QVhJc29sYXRlZE9iamVjdD4+KFsmYXhJRCwgdGhpc10gKCkgLT4gUmVmUHRyPEFYSXNv
bGF0ZWRPYmplY3Q+IHsKLSAgICAgICAgICAgIGF1dG8qIGNhY2hlID0gYXhPYmplY3RDYWNoZSgp
OwotICAgICAgICAgICAgaWYgKCFjYWNoZSB8fCAhY2FjaGUtPnJlbGF0aW9uVGFyZ2V0SURzKCku
Y29udGFpbnMoYXhJRCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAg
ICAgICAgIFJlZlB0ciBheE9iamVjdCA9IGNhY2hlLT5vYmplY3RGb3JJRChheElEKTsKLSAgICAg
ICAgICAgIGlmICghYXhPYmplY3QgfHwgIWF4T2JqZWN0LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVk
KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAgICAgICAgIGF1dG8g
b2JqZWN0ID0gQVhJc29sYXRlZE9iamVjdDo6Y3JlYXRlKCpheE9iamVjdCwgY29uc3RfY2FzdDxB
WElzb2xhdGVkVHJlZSo+KHRoaXMpKTsKLSAgICAgICAgICAgIEFTU0VSVChheE9iamVjdC0+d3Jh
cHBlcigpKTsKLSAgICAgICAgICAgIG9iamVjdC0+YXR0YWNoUGxhdGZvcm1XcmFwcGVyKGF4T2Jq
ZWN0LT53cmFwcGVyKCkpOwotICAgICAgICAgICAgcmV0dXJuIG9iamVjdDsKLSAgICAgICAgfSk7
Ci0gICAgICAgIGlmIChvYmplY3QpIHsKLSAgICAgICAgICAgIG1fcmVhZGVyVGhyZWFkTm9kZU1h
cC5hZGQoYXhJRCwgKm9iamVjdCk7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKFdURk1vdmUo
b2JqZWN0KSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmVzdWx0LnNocmlua1RvRml0KCk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICAvLyBUaGVyZSBpcyBubyBpc29sYXRlZCBvYmplY3QgZm9y
IHRoaXMgQVhJRC4gVGhpcyBjYW4gaGFwcGVuIGlmIHRoZSBjb3JyZXNwb25kaW5nIGxpdmUgb2Jq
ZWN0IGlzIGlnbm9yZWQuCisgICAgLy8gSWYgdGhlcmUgaXMgYSBsaXZlIG9iamVjdCBmb3IgdGhp
cyBJRCBhbmQgaXQgaXMgYW4gaWdub3JlZCB0YXJnZXQgb2YgYSByZWxhdGlvbnNoaXAsIGNyZWF0
ZSBhbiBpc29sYXRlZCBvYmplY3QgZm9yIGl0LgorICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Ojpy
ZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8UmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+PihbJmF4
SUQsIHRoaXNdICgpIC0+IFJlZlB0cjxBWElzb2xhdGVkT2JqZWN0PiB7CisgICAgICAgIGF1dG8q
IGNhY2hlID0gYXhPYmplY3RDYWNoZSgpOworICAgICAgICBpZiAoIWNhY2hlIHx8ICFjYWNoZS0+
cmVsYXRpb25UYXJnZXRJRHMoKS5jb250YWlucyhheElEKSkKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgICAgIFJlZlB0ciBheE9iamVjdCA9IGNhY2hlLT5vYmplY3RGb3JJRChh
eElEKTsKKyAgICAgICAgaWYgKCFheE9iamVjdCB8fCAhYXhPYmplY3QtPmFjY2Vzc2liaWxpdHlJ
c0lnbm9yZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGF1dG8g
b2JqZWN0ID0gQVhJc29sYXRlZE9iamVjdDo6Y3JlYXRlKCpheE9iamVjdCwgY29uc3RfY2FzdDxB
WElzb2xhdGVkVHJlZSo+KHRoaXMpKTsKKyAgICAgICAgQVNTRVJUKGF4T2JqZWN0LT53cmFwcGVy
KCkpOworICAgICAgICBvYmplY3QtPmF0dGFjaFBsYXRmb3JtV3JhcHBlcihheE9iamVjdC0+d3Jh
cHBlcigpKTsKKyAgICAgICAgcmV0dXJuIG9iamVjdDsKKyAgICB9KTsKIH0KIAotCiB2b2lkIEFY
SXNvbGF0ZWRUcmVlOjpnZW5lcmF0ZVN1YnRyZWUoQWNjZXNzaWJpbGl0eU9iamVjdCYgYXhPYmpl
Y3QpCiB7CiAgICAgQVhUUkFDRSgiQVhJc29sYXRlZFRyZWU6OmdlbmVyYXRlU3VidHJlZSJfcyk7
CkBAIC02NjAsNiArNjQxLDEyIEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZU5vZGVQcm9w
ZXJ0aWVzKEFYQ29yZU9iamVjdCYgYXhPYmplY3QsIGNvbnN0IEFYUHJvcGVyCiAgICAgICAgIGNh
c2UgQVhQcm9wZXJ0eU5hbWU6OlBvc0luU2V0OgogICAgICAgICAgICAgcHJvcGVydHlNYXAuc2V0
KEFYUHJvcGVydHlOYW1lOjpQb3NJblNldCwgYXhPYmplY3QucG9zSW5TZXQoKSk7CiAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBWFByb3BlcnR5TmFtZTo6UmVtb3RlRnJhbWVQbGF0
Zm9ybUVsZW1lbnQ6CisgICAgICAgICAgICBwcm9wZXJ0eU1hcC5zZXQoQVhQcm9wZXJ0eU5hbWU6
OlJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50LCBheE9iamVjdC5yZW1vdGVGcmFtZVBsYXRmb3Jt
RWxlbWVudCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFYUHJvcGVydHlO
YW1lOjpIYXNSZW1vdGVGcmFtZUNoaWxkOgorICAgICAgICAgICAgcHJvcGVydHlNYXAuc2V0KEFY
UHJvcGVydHlOYW1lOjpIYXNSZW1vdGVGcmFtZUNoaWxkLCBheE9iamVjdC5oYXNSZW1vdGVGcmFt
ZUNoaWxkKCkpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQVhQcm9wZXJ0eU5h
bWU6OlJvbGVEZXNjcmlwdGlvbjoKICAgICAgICAgICAgIHByb3BlcnR5TWFwLnNldChBWFByb3Bl
cnR5TmFtZTo6Um9sZURlc2NyaXB0aW9uLCBheE9iamVjdC5yb2xlRGVzY3JpcHRpb24oKS5pc29s
YXRlZENvcHkoKSk7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4
IGE0MTc5Mjc5NzhkMi4uNDYxZWVhZTYwYWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKQEAgLTEw
NCw2ICsxMDQsNyBAQCBlbnVtIGNsYXNzIEFYUHJvcGVydHlOYW1lIDogdWludDE2X3QgewogICAg
IEhhc0hpZ2hsaWdodGluZywKICAgICBIYXNJdGFsaWNGb250LAogICAgIEhhc1BsYWluVGV4dCwK
KyAgICBIYXNSZW1vdGVGcmFtZUNoaWxkLAogICAgIEhhc1VuZGVybGluZSwKICAgICBIZWFkZXJD
b250YWluZXIsCiAgICAgSGVhZGluZ0xldmVsLApAQCAtMjAxLDYgKzIwMiw4IEBAIGVudW0gY2xh
c3MgQVhQcm9wZXJ0eU5hbWUgOiB1aW50MTZfdCB7CiAgICAgUHJldmVudEtleWJvYXJkRE9NRXZl
bnREaXNwYXRjaCwKICAgICBSYWRpb0J1dHRvbkdyb3VwLAogICAgIFJlbGF0aXZlRnJhbWUsCisg
ICAgUmVtb3RlRnJhbWVPZmZzZXQsCisgICAgUmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQsCiAg
ICAgUm9sZVZhbHVlLAogICAgIFJvbGVQbGF0Zm9ybVN0cmluZywKICAgICBSb2xlRGVzY3JpcHRp
b24sCkBAIC0yNTcsNiArMjYwLDcgQEAgdXNpbmcgQVhQcm9wZXJ0eU5hbWVTZXQgPSBIYXNoU2V0
PEFYUHJvcGVydHlOYW1lLCBJbnRIYXNoPEFYUHJvcGVydHlOYW1lPiwgV1RGOjoKIHVzaW5nIEFY
UHJvcGVydHlWYWx1ZVZhcmlhbnQgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIEFYSUQs
IFN0cmluZywgYm9vbCwgaW50LCB1bnNpZ25lZCwgZG91YmxlLCBmbG9hdCwgdWludDY0X3QsIEFj
Y2Vzc2liaWxpdHlCdXR0b25TdGF0ZSwgQ29sb3IsIFVSTCwgTGF5b3V0UmVjdCwgRmxvYXRQb2lu
dCwgRmxvYXRSZWN0LCBJbnRQb2ludCwgSW50UmVjdCwgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNp
Z25lZD4sIFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4sIFZlY3RvcjxBWElEPiwgVmVjdG9yPHN0
ZDo6cGFpcjxBWElELCBBWElEPj4sIFZlY3RvcjxTdHJpbmc+LCBQYXRoLCBPcHRpb25TZXQ8QVhB
bmNlc3RvckZsYWc+LCBJbnNpZGVMaW5rLCBWZWN0b3I8VmVjdG9yPEFYSUQ+PiwgQ2hhcmFjdGVy
UmFuZ2UsIHN0ZDo6cGFpcjxBWElELCBDaGFyYWN0ZXJSYW5nZT4KICNpZiBQTEFURk9STShDT0NP
QSkKICAgICAsIFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+CisgICAgLCBSZXRhaW5QdHI8
aWQ+CiAjZW5kaWYKICNpZiBFTkFCTEUoQVhfVEhSRUFEX1RFWFRfQVBJUykKICAgICAsIEFYVGV4
dFJ1bnMKQEAgLTM5Nyw2ICs0MDEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlRW1wdHlD
b250ZW50KEFjY2Vzc2liaWxpdHlPYmplY3QmKTsKICAgICBjb25zdGV4cHIgYm9vbCBpc1VwZGF0
aW5nU3VidHJlZSgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdE9mU3VidHJlZUJlaW5nVXBkYXRlZDsg
fQogICAgIGNvbnN0ZXhwciB2b2lkIHVwZGF0aW5nU3VidHJlZShBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBheE9iamVjdCkgeyBtX3Jvb3RPZlN1YnRyZWVCZWluZ1VwZGF0ZWQgPSBheE9iamVjdDsgfQor
ICAgIFJlZlB0cjxBWElzb2xhdGVkT2JqZWN0PiByZXRyaWV2ZU9iamVjdEZvcklERnJvbU1haW5U
aHJlYWQoY29uc3QgQVhJRCkgY29uc3Q7CiAKICAgICBlbnVtIGNsYXNzIEF0dGFjaFdyYXBwZXIg
OiBib29sIHsgT25NYWluVGhyZWFkLCBPbkFYVGhyZWFkIH07CiAgICAgc3RydWN0IE5vZGVDaGFu
Z2UgewpAQCAtNDk3LDYgKzUwMiwzMCBAQCBpbmxpbmUgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiBB
WElzb2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJRChzdGQ6Om9wdGlvbmFsPFBhZ2VJZAogICAgIHJl
dHVybiBwYWdlSUQgPyB0cmVlRm9yUGFnZUlEKCpwYWdlSUQpIDogbnVsbHB0cjsKIH0KIAordGVt
cGxhdGU8dHlwZW5hbWUgVT4KK2lubGluZSBWZWN0b3I8UmVmUHRyPEFYQ29yZU9iamVjdD4+IEFY
SXNvbGF0ZWRUcmVlOjpvYmplY3RzRm9ySURzKGNvbnN0IFUmIGF4SURzKQoreworICAgIEFTU0VS
VCghaXNNYWluVGhyZWFkKCkpOworCisgICAgVmVjdG9yPFJlZlB0cjxBWENvcmVPYmplY3Q+PiBy
ZXN1bHQ7CisgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYXhJRHMuc2l6ZSgpKTsK
KyAgICBmb3IgKGNvbnN0IGF1dG8mIGF4SUQgOiBheElEcykgeworICAgICAgICBSZWZQdHIgb2Jq
ZWN0ID0gb2JqZWN0Rm9ySUQoYXhJRCk7CisgICAgICAgIGlmIChvYmplY3QpIHsKKyAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoV1RGTW92ZShvYmplY3QpKTsKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICB9CisKKyAgICAgICAgb2JqZWN0ID0gcmV0cmlldmVPYmplY3RGb3JJREZyb21N
YWluVGhyZWFkKGF4SUQpOworICAgICAgICBpZiAob2JqZWN0KSB7CisgICAgICAgICAgICBtX3Jl
YWRlclRocmVhZE5vZGVNYXAuYWRkKGF4SUQsICpvYmplY3QpOworICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZChXVEZNb3ZlKG9iamVjdCkpOworICAgICAgICB9CisgICAgfQorICAgIHJlc3VsdC5z
aHJpbmtUb0ZpdCgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9tYWMvQVhJc29sYXRlZE9iamVjdE1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL21hYy9BWElzb2xhdGVkT2JqZWN0TWFjLm1tCmlu
ZGV4IGY4NjM1ZjIzODQxYy4uZTY3ZmM4NjYyOTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9tYWMvQVhJc29sYXRlZE9iamVjdE1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9tYWMvQVhJc29s
YXRlZE9iamVjdE1hYy5tbQpAQCAtNjMsNiArNjMsOCBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6
OmluaXRpYWxpemVQbGF0Zm9ybVByb3BlcnRpZXMoY29uc3QgUmVmPGNvbnN0IEFjY2Vzc2liaWxp
dAogICAgICAgICB9CiAgICAgfQogCisgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlJl
bW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50LCBvYmplY3QtPnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVt
ZW50KCkpOworCiAgICAgLy8gQ2FjaGUgdGhlIFN0cmluZ1ZhbHVlIG9ubHkgaWYgaXQgZGlmZmVy
cyBmcm9tIHRoZSBBdHRyaWJ1dGVkVGV4dC4KICAgICBhdXRvIHZhbHVlID0gb2JqZWN0LT5zdHJp
bmdWYWx1ZSgpOwogICAgIGlmICghYXR0cmlidXRlZFRleHQgfHwgdmFsdWUgIT0gU3RyaW5nKFth
dHRyaWJ1dGVkVGV4dCBzdHJpbmddKSkKQEAgLTIwNSw2ICsyMDcsMTEgQEAgdW5zaWduZWQgQVhJ
c29sYXRlZE9iamVjdDo6dGV4dExlbmd0aCgpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKK1Jl
dGFpblB0cjxpZD4gQVhJc29sYXRlZE9iamVjdDo6cmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQo
KSBjb25zdAoreworICAgIHJldHVybiBwcm9wZXJ0eVZhbHVlPFJldGFpblB0cjxpZD4+KEFYUHJv
cGVydHlOYW1lOjpSZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCk7Cit9CisKIFJldGFpblB0cjxO
U0F0dHJpYnV0ZWRTdHJpbmc+IEFYSXNvbGF0ZWRPYmplY3Q6OmF0dHJpYnV0ZWRTdHJpbmdGb3JU
ZXh0TWFya2VyUmFuZ2UoQVhUZXh0TWFya2VyUmFuZ2UmJiBtYXJrZXJSYW5nZSwgU3BlbGxDaGVj
ayBzcGVsbENoZWNrKSBjb25zdAogewogICAgIGlmICghbWFya2VyUmFuZ2UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVj
dE1hYy5tbQppbmRleCBiYTJhY2NkODBkMDQuLmZiYmUwYmIyYTA2NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0
TWFjLm1tCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkFj
Y2Vzc2liaWxpdHlPYmplY3QuaCIKIAorI2ltcG9ydCAiQVhSZW1vdGVGcmFtZS5oIgogI2ltcG9y
dCAiQWNjZXNzaWJpbGl0eUxhYmVsLmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5TGlzdC5oIgog
I2ltcG9ydCAiQ29sb3JDb2NvYS5oIgpAQCAtNTEsNiArNTIsNyBAQAogI2ltcG9ydCAiV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMuaCIKICNpbXBvcnQgIldpZGdldC5oIgogCisjaW1w
b3J0IDxwYWwvc3BpL2NvY29hL05TQWNjZXNzaWJpbGl0eVNQSS5oPgogI2ltcG9ydCA8cGFsL3Nw
aS9tYWMvTlNTcGVsbENoZWNrZXJTUEkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzQ5
LDYgKzc1MSwyOSBAQCBSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiBhdHRyaWJ1dGVkU3Ry
aW5nQ3JlYXRlKE5vZGUqIG5vZGUsIFN0cmluZ1ZpZXcgdGV4dAogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKK3N0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBBWFJlbW90ZUZyYW1lOjpnZW5lcmF0ZVJl
bW90ZVRva2VuKCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byogcGFyZW50ID0gcGFyZW50T2JqZWN0
KCkpIHsKKyAgICAgICAgLy8gV2UgdXNlIHRoZSBwYXJlbnQncyB3cmFwcGVyIHNvIHRoYXQgdGhl
IHJlbW90ZSBmcmFtZSBhY3RzIGFzIGEgcGFzcyB0aHJvdWdoIGZvciB0aGUgcmVtb3RlIHRva2Vu
IGJyaWRnZS4KKyAgICAgICAgTlNEYXRhICpkYXRhID0gW05TQWNjZXNzaWJpbGl0eVJlbW90ZVVJ
RWxlbWVudCByZW1vdGVUb2tlbkZvckxvY2FsVUlFbGVtZW50OnBhcmVudC0+d3JhcHBlcigpXTsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6c3BhbihzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW2Rh
dGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7CisgICAgfQorCisgICAgcmV0dXJuIHN0ZDo6c3Bh
bjxjb25zdCB1aW50OF90PiB7IH07Cit9CisKK3ZvaWQgQVhSZW1vdGVGcmFtZTo6aW5pdGlhbGl6
ZVBsYXRmb3JtRWxlbWVudFdpdGhSZW1vdGVUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4g
dG9rZW4sIGludCBwcm9jZXNzSWRlbnRpZmllcikKK3sKKyAgICBtX3Byb2Nlc3NJZGVudGlmaWVy
ID0gcHJvY2Vzc0lkZW50aWZpZXI7CisgICAgaWYgKFt3cmFwcGVyKCkgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3RvcihhY2Nlc3NpYmlsaXR5U2V0UHJlc2VudGVyUHJvY2Vzc0lkZW50aWZpZXI6
KV0pCisgICAgICAgIFsoaWQpd3JhcHBlcigpIGFjY2Vzc2liaWxpdHlTZXRQcmVzZW50ZXJQcm9j
ZXNzSWRlbnRpZmllcjpwcm9jZXNzSWRlbnRpZmllcl07CisgICAgTlNEYXRhICp0b2tlbkRhdGEg
PSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6dG9rZW4uZGF0YSgpIGxlbmd0aDp0b2tlbi5zaXplKCld
OworICAgIG1fcmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQgPSBhZG9wdE5TKFtbTlNBY2Nlc3Np
YmlsaXR5UmVtb3RlVUlFbGVtZW50IGFsbG9jXSBpbml0V2l0aFJlbW90ZVRva2VuOnRva2VuRGF0
YV0pOworCisgICAgaWYgKGF1dG8qIGNhY2hlID0gYXhPYmplY3RDYWNoZSgpKQorICAgICAgICBj
YWNoZS0+b25SZW1vdGVGcmFtZUluaXRpYWxpemVkKCp0aGlzKTsKK30KKwogbmFtZXNwYWNlIEFj
Y2Vzc2liaWxpdHkgewogCiBQbGF0Zm9ybVJvbGVNYXAgY3JlYXRlUGxhdGZvcm1Sb2xlTWFwKCkK
QEAgLTg5MSw2ICs5MTYsNyBAQCBQbGF0Zm9ybVJvbGVNYXAgY3JlYXRlUGxhdGZvcm1Sb2xlTWFw
KCkKICAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6U3VwZXJzY3JpcHQsIE5TQWNjZXNzaWJp
bGl0eUdyb3VwUm9sZSB9LAogICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpNb2RlbCwgTlNB
Y2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCiAgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlN1
Z2dlc3Rpb24sIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2li
aWxpdHlSb2xlOjpSZW1vdGVGcmFtZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCiAgICAg
fTsKICAgICBQbGF0Zm9ybVJvbGVNYXAgcm9sZU1hcDsKICAgICBmb3IgKGF1dG8mIHJvbGUgOiBy
b2xlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQppbmRleCA2MzU3
ZmE3YzI3MWIuLmYxNDI0NWZjM2I2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyQmFzZS5tbQpAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCAiQVhDb3JlT2JqZWN0LmgiCiAj
aW1wb3J0ICJBWElzb2xhdGVkT2JqZWN0LmgiCiAjaW1wb3J0ICJBWE9iamVjdENhY2hlLmgiCisj
aW1wb3J0ICJBWFJlbW90ZUZyYW1lLmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5QVJJQUdyaWRS
b3cuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlMaXN0LmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmls
aXR5TGlzdEJveC5oIgpAQCAtMjY1LDEzICsyNjYsMTMgQEAgTlNBcnJheSAqbWFrZU5TQXJyYXko
Y29uc3QgV2ViQ29yZTo6QVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
IGMKICAgICAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICAgICAgYXV0byB3cmFwcGVyID0gY2hp
bGQtPndyYXBwZXIoKTsKLQogICAgICAgICAvLyBXZSB3YW50IHRvIHJldHVybiB0aGUgYXR0YWNo
bWVudCB2aWV3IGluc3RlYWQgb2YgdGhlIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIGF0dGFjaG1l
bnQsCiAgICAgICAgIC8vIG90aGVyd2lzZSwgd2UgZ2V0IHBhbGluZHJvbWUgZXJyb3JzIGluIHRo
ZSBBWCBoaWVyYXJjaHkuCiAgICAgICAgIGlmIChjaGlsZC0+aXNBdHRhY2htZW50KCkpIHsKICAg
ICAgICAgICAgIGlmIChpZCBhdHRhY2htZW50VmlldyA9IHdyYXBwZXIuYXR0YWNobWVudFZpZXcp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGF0dGFjaG1lbnRWaWV3OwotICAgICAgICB9CisgICAg
ICAgIH0gZWxzZSBpZiAoY2hpbGQtPmlzUmVtb3RlRnJhbWUoKSkKKyAgICAgICAgICAgIHJldHVy
biBjaGlsZC0+cmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKS5nZXQoKTsKIAogICAgICAgICBy
ZXR1cm4gd3JhcHBlcjsKICAgICB9KS5hdXRvcmVsZWFzZSgpOwpAQCAtMzg5LDcgKzM5MCw3IEBA
IE5TQXJyYXkgKm1ha2VOU0FycmF5KGNvbnN0IFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6QWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBjCiAtIChCT09MKWlzSXNvbGF0ZWRPYmplY3QKIHsKICNp
ZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQotICAgIGF1dG8qIGJhY2tpbmdP
YmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKKyAgICBSZWZQdHIgYmFja2luZ09iamVjdCA9
IGR5bmFtaWNEb3duY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0PihzZWxmLmJhc2VVcGRhdGVCYWNr
aW5nU3RvcmUpOwogICAgIHJldHVybiBiYWNraW5nT2JqZWN0ICYmIGJhY2tpbmdPYmplY3QtPmlz
QVhJc29sYXRlZE9iamVjdEluc3RhbmNlKCk7CiAjZWxzZQogICAgIHJldHVybiBOTzsKQEAgLTUy
Myw3ICs1MjQsNyBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0UGF0aFRvU2NyZWVuU3BhY2VGdW5jdGlv
bihQYXRoQ29udmVyc2lvbkluZm8mIGNvbnZlcnNpb24sIGNvbgogCiAtIChDR1JlY3QpY29udmVy
dFJlY3RUb1NwYWNlOihjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKXJlY3Qgc3BhY2U6KEFjY2Vz
c2liaWxpdHlDb252ZXJzaW9uU3BhY2Upc3BhY2UKIHsKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0
ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgUmVmUHRyIGJhY2tpbmdPYmplY3QgPSBkeW5h
bWljRG93bmNhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdD4oc2VsZi5iYXNlVXBkYXRlQmFja2luZ1N0
b3JlKTsKICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCiAgICAgICAgIHJldHVybiBDR1JlY3RaZXJv
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IGU3YTI5NzVi
MDg1NC4uNWRlMTFjMmFjMzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1h
Yy5tbQpAQCAtMzQsNiArMzQsNyBAQAogI2ltcG9ydCAiQVhJc29sYXRlZE9iamVjdC5oIgogI2lt
cG9ydCAiQVhMb2dnZXIuaCIKICNpbXBvcnQgIkFYT2JqZWN0Q2FjaGUuaCIKKyNpbXBvcnQgIkFY
UmVtb3RlRnJhbWUuaCIKICNpbXBvcnQgIkFYVGV4dE1hcmtlci5oIgogI2ltcG9ydCAiQWNjZXNz
aWJpbGl0eUFSSUFHcmlkUm93LmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5TGFiZWwuaCIKQEAg
LTQ3OSw2ICs0ODAsMTAgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAjZGVmaW5lIE5TQWNj
ZXNzaWJpbGl0eVRleHRJbnB1dE1hcmtlZFRleHRNYXJrZXJSYW5nZUF0dHJpYnV0ZSBAIkFYVGV4
dElucHV0TWFya2VkVGV4dE1hcmtlclJhbmdlIgogI2VuZGlmCiAKKyNpZm5kZWYga0FYQ29udmVy
dFJlbGF0aXZlRnJhbWVQYXJhbWV0ZXJpemVkQXR0cmlidXRlCisjZGVmaW5lIGtBWENvbnZlcnRS
ZWxhdGl2ZUZyYW1lUGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBAIkFYQ29udmVydFJlbGF0aXZlRnJh
bWUiCisjZW5kaWYKKwogQGltcGxlbWVudGF0aW9uIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyCiAKIC0gKHZvaWQpZGV0YWNoCkBAIC02OTIsNyArNjk3LDcgQEAgc3RhdGljIFJldGFpblB0
cjxBWFRleHRNYXJrZXJSZWY+IHByZXZpb3VzVGV4dE1hcmtlcihBWE9iamVjdENhY2hlKiBjYWNo
ZSwgY29uc3QKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgYXV0byogYmFj
a2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0cjxBWENvcmVPYmpl
Y3Q+IGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKICAgICBpZiAoIWJhY2tp
bmdPYmplY3QpCiAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTEyNTYsNyArMTI2MSw3IEBAIEFM
TE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogCiAtIChOU0FycmF5ICopcmVuZGVy
V2lkZ2V0Q2hpbGRyZW4KIHsKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tp
bmdPYmplY3Q7CisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNlbGYu
YXhCYWNraW5nT2JqZWN0OwogICAgIGlmICghYmFja2luZ09iamVjdCB8fCAhYmFja2luZ09iamVj
dC0+aXNXaWRnZXQoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMTI3OSw3ICsxMjg0LDcg
QEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKIC0gKGlkKXJlbW90ZUFjY2Vz
c2liaWxpdHlQYXJlbnRPYmplY3QKIHsKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5h
eEJhY2tpbmdPYmplY3Q7CisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9
IHNlbGYuYXhCYWNraW5nT2JqZWN0OwogICAgIHJldHVybiBiYWNraW5nT2JqZWN0ID8gYmFja2lu
Z09iamVjdC0+cmVtb3RlUGFyZW50T2JqZWN0KCkgOiBuaWw7CiB9CiAKQEAgLTEyOTYsNyArMTMw
MSw3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRUb1ZlY3RvcihOU0FycmF5KiBhcnJheSwgQWNjZXNz
aWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoCiAKIC0gKEFYVGV4dE1hcmtlclJhbmdlUmVm
KXNlbGVjdGVkVGV4dE1hcmtlclJhbmdlCiB7Ci0gICAgYXV0byogYmFja2luZ09iamVjdCA9IHNl
bGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+IGJhY2tpbmdPYmpl
Y3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCiAgICAg
ICAgIHJldHVybiBuaWw7CiAKQEAgLTEzNjYsMTIgKzEzNzEsMTggQEAgc3RhdGljIHZvaWQgV2Vi
VHJhbnNmb3JtQ0dQYXRoVG9OU0JlemllclBhdGgodm9pZCogaW5mbywgY29uc3QgQ0dQYXRoRWxl
bWVudCAqZWwKIAogLSAoTlNTdHJpbmcqKXJvbGUKIHsKKyAgICBSZWZQdHI8QVhDb3JlT2JqZWN0
PiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgaWYgKCFiYWNraW5n
T2JqZWN0KQorICAgICAgICByZXR1cm4gbmlsOworCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19CRUdJTgotICAgIGlmIChzZWxmLmF4QmFja2luZ09iamVjdC0+aXNBdHRhY2htZW50KCkp
CisgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzQXR0YWNobWVudCgpKQogICAgICAgICByZXR1cm4g
W1tzZWxmIGF0dGFjaG1lbnRWaWV3XSBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nl
c3NpYmlsaXR5Um9sZUF0dHJpYnV0ZV07CisgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzUmVtb3Rl
RnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIFtiYWNraW5nT2JqZWN0LT5yZW1vdGVGcmFtZVBsYXRm
b3JtRWxlbWVudCgpLmdldCgpIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2li
aWxpdHlSb2xlQXR0cmlidXRlXTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAog
Ci0gICAgTlNTdHJpbmcgKnN0cmluZyA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5yb2xlUGxhdGZv
cm1TdHJpbmcoKTsKKyAgICBOU1N0cmluZyAqc3RyaW5nID0gYmFja2luZ09iamVjdC0+cm9sZVBs
YXRmb3JtU3RyaW5nKCk7CiAgICAgaWYgKHN0cmluZy5sZW5ndGgpCiAgICAgICAgIHJldHVybiBz
dHJpbmc7CiAgICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eVVua25vd25Sb2xlOwpAQCAtMTM3OSw3
ICsxMzkwLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKIC0gKEJPT0wp
aXNFbXB0eUdyb3VwCiB7Ci0gICAgYXV0byogYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5n
T2JqZWN0OworICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+IGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4
QmFja2luZ09iamVjdDsKICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIApAQCAtMTM4OCw2ICsxMzk5LDkgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfRU5ECiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogCisgICAgaWYgKGJhY2tpbmdP
YmplY3QtPmlzUmVtb3RlRnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgcmV0
dXJuIFtbc2VsZiByb2xlXSBpc0VxdWFsOk5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZV0KICAgICAg
ICAgJiYgYmFja2luZ09iamVjdC0+Y2hpbGRyZW4oKS5pc0VtcHR5KCkKICAgICAgICAgJiYgIVtb
c2VsZiByZW5kZXJXaWRnZXRDaGlsZHJlbl0gY291bnRdOwpAQCAtMTM5Niw3ICsxNDEwLDcgQEAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19CRUdJTgogLSAoTlNTdHJpbmcqKXN1YnJvbGUKIHsKLSAgICBhdXRvKiBiYWNraW5n
T2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4g
YmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OwogICAgIGlmICghYmFja2luZ09i
amVjdCkKICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMTQxMyw3ICsxNDI3LDcgQEAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKIC0gKE5TU3RyaW5nKilyb2xlRGVzY3JpcHRp
b24KIHsKLSAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7Cisg
ICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2Jq
ZWN0OwogICAgIGlmICghYmFja2luZ09iamVjdCkKICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAt
MTQyMSw2ICsxNDM1LDggQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAg
ICAvLyBhdHRhY2htZW50cyBoYXZlIHRoZSBBWEltYWdlIHJvbGUsIGJ1dCBhIGRpZmZlcmVudCBz
dWJyb2xlCiAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzQXR0YWNobWVudCgpKQogICAgICAgICBy
ZXR1cm4gW1tzZWxmIGF0dGFjaG1lbnRWaWV3XSBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
TlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlXTsKKyAgICBpZiAoYmFja2lu
Z09iamVjdC0+aXNSZW1vdGVGcmFtZSgpKQorICAgICAgICByZXR1cm4gW2JhY2tpbmdPYmplY3Qt
PnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkuZ2V0KCkgYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJvbGVEZXNjcmlwdGlvbkF0dHJpYnV0ZV07CiBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgIFN0cmluZyByb2xlRGVzY3JpcHRpb24g
PSBiYWNraW5nT2JqZWN0LT5yb2xlRGVzY3JpcHRpb24oKTsKQEAgLTE0NzMsNiArMTQ4OSwyOCBA
QCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICByZXR1cm4gYXhTY3JvbGxW
aWV3ID8gW2F4U2Nyb2xsVmlldy0+cGxhdGZvcm1XaWRnZXQoKSB3aW5kb3ddIDogbmlsOwogfQog
CistIChOU0FycmF5ICopX3RyYW5zZm9ybVNwZWNpYWxDaGlsZHJlbkNhc2VzOihSZWZQdHI8QVhD
b3JlT2JqZWN0PiliYWNraW5nT2JqZWN0Cit7CisjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCisg
ICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzTW9kZWwoKSkgeworICAgICAgICBhdXRvIG1vZGVsQ2hp
bGRyZW4gPSBiYWNraW5nT2JqZWN0LT5tb2RlbEVsZW1lbnRDaGlsZHJlbigpOworICAgICAgICBp
ZiAobW9kZWxDaGlsZHJlbi5zaXplKCkpIHsKKyAgICAgICAgICAgIHJldHVybiBjcmVhdGVOU0Fy
cmF5KFdURk1vdmUobW9kZWxDaGlsZHJlbiksIFtdIChhdXRvJiYgY2hpbGQpIC0+IGlkIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gY2hpbGQuZ2V0KCk7CisgICAgICAgICAgICB9KS5hdXRvcmVs
ZWFzZSgpOworICAgICAgICB9CisgICAgfQorI2VuZGlmCisKKyAgICBjb25zdCBhdXRvJiBjaGls
ZHJlbiA9IGJhY2tpbmdPYmplY3QtPmNoaWxkcmVuKCk7CisgICAgaWYgKCFjaGlsZHJlbi5zaXpl
KCkpIHsKKyAgICAgICAgaWYgKE5TQXJyYXkgKmNoaWxkcmVuID0gW3NlbGYgcmVuZGVyV2lkZ2V0
Q2hpbGRyZW5dKQorICAgICAgICAgICAgcmV0dXJuIGNoaWxkcmVuOworICAgIH0KKworICAgIHJl
dHVybiBuaWw7Cit9CisKIC8vIEZJWE1FOiBzcGxpdCB1cCB0aGlzIGZ1bmN0aW9uIGluIGEgYmV0
dGVyIHdheS4KIC8vIHN1Z2dlc3Rpb25zOiBVc2UgYSBoYXNoIHRhYmxlIHRoYXQgbWFwcyBhdHRy
aWJ1dGUgbmFtZXMgdG8gZnVuY3Rpb24gY2FsbHMsCiAvLyBvciBtYXliZSBwb2ludGVycyB0byBt
ZW1iZXIgZnVuY3Rpb25zCkBAIC0xNTMxLDIyICsxNTY5LDkgQEAgQUxMT1dfREVQUkVDQVRFRF9J
TVBMRU1FTlRBVElPTlNfRU5ECiAgICAgfQogCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1
YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZV0gfHwgW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuSW5OYXZpZ2F0aW9u
T3JkZXJBdHRyaWJ1dGVdKSB7Ci0jaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCi0gICAgICAgIGlm
IChiYWNraW5nT2JqZWN0LT5pc01vZGVsKCkpIHsKLSAgICAgICAgICAgIGF1dG8gbW9kZWxDaGls
ZHJlbiA9IGJhY2tpbmdPYmplY3QtPm1vZGVsRWxlbWVudENoaWxkcmVuKCk7Ci0gICAgICAgICAg
ICBpZiAobW9kZWxDaGlsZHJlbi5zaXplKCkpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gY3Jl
YXRlTlNBcnJheShXVEZNb3ZlKG1vZGVsQ2hpbGRyZW4pLCBbXSAoYXV0byYmIGNoaWxkKSAtPiBp
ZCB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZC5nZXQoKTsKLSAgICAgICAgICAg
ICAgICB9KS5hdXRvcmVsZWFzZSgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0jZW5kaWYK
LQotICAgICAgICBjb25zdCBhdXRvJiBjaGlsZHJlbiA9IGJhY2tpbmdPYmplY3QtPmNoaWxkcmVu
KCk7Ci0gICAgICAgIGlmIChjaGlsZHJlbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGlmIChO
U0FycmF5ICp3aWRnZXRDaGlsZHJlbiA9IFtzZWxmIHJlbmRlcldpZGdldENoaWxkcmVuXSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gd2lkZ2V0Q2hpbGRyZW47Ci0gICAgICAgIH0KKyAgICAgICAg
TlNBcnJheSAqc3BlY2lhbENoaWxkcmVuID0gW3NlbGYgX3RyYW5zZm9ybVNwZWNpYWxDaGlsZHJl
bkNhc2VzOmJhY2tpbmdPYmplY3RdOworICAgICAgICBpZiAoc3BlY2lhbENoaWxkcmVuLmNvdW50
KQorICAgICAgICAgICAgcmV0dXJuIHNwZWNpYWxDaGlsZHJlbjsKIAogICAgICAgICAvLyBUaGUg
dHJlZSdzIChBWE91dGxpbmUpIGNoaWxkcmVuIGFyZSBzdXBwb3NlZCB0byBiZSBpdHMgcm93cyBh
bmQgY29sdW1ucy4KICAgICAgICAgLy8gVGhlIEFSSUEgc3BlYyBkb2Vzbid0IGhhdmUgY29sdW1u
cywgc28gd2UganVzdCBuZWVkIHJvd3MuCkBAIC0xNTU3LDcgKzE1ODIsNyBAQCBBTExPV19ERVBS
RUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlz
VHJlZUl0ZW0oKSkKICAgICAgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0
LT5hcmlhVHJlZUl0ZW1Db250ZW50KCkpOwogCi0gICAgICAgIHJldHVybiBtYWtlTlNBcnJheShj
aGlsZHJlbik7CisgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT5jaGls
ZHJlbigpKTsKICAgICB9CiAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5n
OiBOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlXSkgewpAQCAtMTcxMywx
NiArMTczOCwxNCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBp
ZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlFbmFibGVk
QXR0cmlidXRlXSkKICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDogYmFj
a2luZ09iamVjdC0+aXNFbmFibGVkKCldOwogCi0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1
YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5U2l6ZUF0dHJpYnV0ZV0pIHsKLSAgICAgICAgYXV0
byBzaXplID0gYmFja2luZ09iamVjdC0+c2l6ZSgpOwotICAgICAgICByZXR1cm4gW05TVmFsdWUg
dmFsdWVXaXRoU2l6ZTpOU01ha2VTaXplKHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSldOwot
ICAgIH0KKyAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJp
bGl0eVNpemVBdHRyaWJ1dGVdKQorICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoU2l6
ZTooQ0dTaXplKWJhY2tpbmdPYmplY3QtPnNpemUoKV07CiAKICAgICBpZiAoW2F0dHJpYnV0ZU5h
bWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVByaW1hcnlTY3JlZW5IZWlnaHRBdHRy
aWJ1dGVdKQogICAgICAgICByZXR1cm4gQChiYWNraW5nT2JqZWN0LT5wcmltYXJ5U2NyZWVuUmVj
dCgpLmhlaWdodCgpKTsKIAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6
TlNBY2Nlc3NpYmlsaXR5UG9zaXRpb25BdHRyaWJ1dGVdKQotICAgICAgICByZXR1cm4gQChDR1Bv
aW50KGJhY2tpbmdPYmplY3QtPnNjcmVlblJlbGF0aXZlUG9zaXRpb24oKSkpOworICAgICAgICBy
ZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUG9pbnQ6KENHUG9pbnQpYmFja2luZ09iamVjdC0+c2Ny
ZWVuUmVsYXRpdmVQb3NpdGlvbigpXTsKIAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5UGF0aEF0dHJpYnV0ZV0pCiAgICAgICAgIHJldHVybiBb
c2VsZiBwYXRoXTsKQEAgLTIyMzcsNiArMjI2MCwxMCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExF
TUVOVEFUSU9OU19FTkQKICAgICAgICAgcmV0dXJuIHJhbmdlID8gcmFuZ2UucGxhdGZvcm1EYXRh
KCkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpIDogbmlsOwogICAgIH0KIAorICAgIC8vIFZvaWNlT3Zl
ciBwcm9wZXJ0eSB0byBpZ25vcmUgY2VydGFpbiBncm91cHMuCisgICAgaWYgKFthdHRyaWJ1dGVO
YW1lIGlzRXF1YWxUb1N0cmluZzpAIkFYQXV0b0ludGVyYWN0YWJsZSJdKQorICAgICAgICByZXR1
cm4gQChiYWNraW5nT2JqZWN0LT5pc1JlbW90ZUZyYW1lKCkpOworCiAgICAgLy8gVXNlZCBieSBM
YXlvdXRUZXN0cyBvbmx5LCBub3QgYnkgQVQgY2xpZW50cy4KICAgICBpZiAoVU5MSUtFTFkoW2F0
dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiQVhBUklBUm9sZSJdKSkKICAgICAgICAgcmV0
dXJuIGJhY2tpbmdPYmplY3QtPmNvbXB1dGVkUm9sZVN0cmluZygpOwpAQCAtMjMzMCw3ICsyMzU3
LDggQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIGlmIChh
eE9iamVjdC0+aXNBdHRhY2htZW50KCkpIHsKICAgICAgICAgICAgIGlmIChpZCBhdHRhY2htZW50
VmlldyA9IFtheE9iamVjdC0+d3JhcHBlcigpIGF0dGFjaG1lbnRWaWV3XSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gYXR0YWNobWVudFZpZXc7Ci0gICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlm
IChheE9iamVjdC0+aXNSZW1vdGVGcmFtZSgpKQorICAgICAgICAgICAgcmV0dXJuIGF4T2JqZWN0
LT5yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpLmdldCgpOwogCiAgICAgICAgIC8vIE9ubHkg
Y2FsbCBvdXQgdG8gdGhlIG1haW4tdGhyZWFkIGlmIHRoaXMgb2JqZWN0IGhhcyBhIGJhY2tpbmcg
d2lkZ2V0IHRvIHF1ZXJ5LgogICAgICAgICBpZiAoYXhPYmplY3QtPmlzV2lkZ2V0KCkpIHsKQEAg
LTI1MDcsNiArMjUzNSwxMCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQK
ICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNXZWJBcmVhKCkpCiAgICAgICAgIHJldHVybiB3ZWJB
cmVhUGFyYW1BdHRyczsKIAorICAgIC8vIFRoZSBvYmplY3QgdGhhdCBzZXJ2ZXMgdXAgdGhlIHJl
bW90ZSBmcmFtZSBhbHNvIGlzIHRoZSBvbmUgdGhhdCBkb2VzIHRoZSBmcmFtZSBjb252ZXJzaW9u
LgorICAgIGlmIChiYWNraW5nT2JqZWN0LT5oYXNSZW1vdGVGcmFtZUNoaWxkKCkpCisgICAgICAg
IHJldHVybiBbcGFyYW1BdHRycyBhcnJheUJ5QWRkaW5nT2JqZWN0OmtBWENvbnZlcnRSZWxhdGl2
ZUZyYW1lUGFyYW1ldGVyaXplZEF0dHJpYnV0ZV07CisKICAgICByZXR1cm4gcGFyYW1BdHRyczsK
IH0KIApAQCAtMjU3OCw3ICsyNjEwLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECiB7CiAgICAgQVhUUkFDRSgiV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNz
aWJpbGl0eVBlcmZvcm1TaG93TWVudUFjdGlvbiJfcyk7CiAKLSAgICBhdXRvKiBiYWNraW5nT2Jq
ZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFj
a2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OwogICAgIGlmICghYmFja2luZ09iamVj
dCkgewogICAgICAgICBBWExPRyhtYWtlU3RyaW5nKCJObyBiYWNraW5nT2JqZWN0IGZvciB3cmFw
cGVyICIsIGhleChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oc2VsZikpKSk7CiAgICAgICAg
IHJldHVybjsKQEAgLTI4MjIsNyArMjg1NCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5U
QVRJT05TX0VORAogICAgIGlmICghcmFuZ2UubGVuZ3RoKQogICAgICAgICByZXR1cm4gbmlsOwog
Ci0gICAgYXV0byogYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIFJl
ZlB0cjxBWENvcmVPYmplY3Q+IGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsK
ICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCiAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTMxNzcs
NiArMzIwOSwxOCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHdpZGdldENoaWxkcmVuOwogICAgICAgICAgICAgICAgIGNy
aXRlcmlhLnJlc3VsdHNMaW1pdCAtPSBbd2lkZ2V0Q2hpbGRyZW4gY291bnRdOwogICAgICAgICAg
ICAgfQorICAgICAgICB9IGVsc2UgaWYgKGJhY2tpbmdPYmplY3QtPmlzUmVtb3RlRnJhbWUoKQor
ICAgICAgICAgICAgJiYgY3JpdGVyaWEuc2VhcmNoS2V5cy5jb250YWlucyhBY2Nlc3NpYmlsaXR5
U2VhcmNoS2V5OjpBbnlUeXBlKQorICAgICAgICAgICAgJiYgKCFjcml0ZXJpYS52aXNpYmxlT25s
eSB8fCBiYWNraW5nT2JqZWN0LT5pc1Zpc2libGUoKSkpIHsKKyAgICAgICAgICAgIE5TQXJyYXkg
KnJlbW90ZUZyYW1lQ2hpbGRyZW4gPSBbc2VsZiBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGVdOworICAgICAgICAgICAgQVNTRVJUKHJl
bW90ZUZyYW1lQ2hpbGRyZW4uY291bnQgPT0gMSk7CisgICAgICAgICAgICBpZiAocmVtb3RlRnJh
bWVDaGlsZHJlbi5jb3VudCA9PSAxKSB7CisgICAgICAgICAgICAgICAgTlNVSW50ZWdlciBpbmNs
dWRlZENoaWxkcmVuQ291bnQgPSBzdGQ6Om1pbihbcmVtb3RlRnJhbWVDaGlsZHJlbiBjb3VudF0s
IE5TVUludGVnZXIoY3JpdGVyaWEucmVzdWx0c0xpbWl0KSk7CisgICAgICAgICAgICAgICAgd2lk
Z2V0Q2hpbGRyZW4gPSBbcmVtb3RlRnJhbWVDaGlsZHJlbiBzdWJhcnJheVdpdGhSYW5nZTpOU01h
a2VSYW5nZSgwLCBpbmNsdWRlZENoaWxkcmVuQ291bnQpXTsKKyAgICAgICAgICAgICAgICBpZiAo
W3dpZGdldENoaWxkcmVuIGNvdW50XSA+PSBjcml0ZXJpYS5yZXN1bHRzTGltaXQpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiByZW1vdGVGcmFtZUNoaWxkcmVuOworICAgICAgICAgICAgICAg
IGNyaXRlcmlhLnJlc3VsdHNMaW1pdCAtPSBbd2lkZ2V0Q2hpbGRyZW4gY291bnRdOworICAgICAg
ICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yIHJlc3VsdHM7CkBAIC0zNjc0LDYgKzM3MTgsMTEgQEAgQUxM
T1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgaWYgKFVOTElLRUxZKFthdHRy
aWJ1dGUgaXNFcXVhbFRvU3RyaW5nOl9BWFRleHRNYXJrZXJSYW5nZUZvck5TUmFuZ2VBdHRyaWJ1
dGVdKSkKICAgICAgICAgcmV0dXJuIGJhY2tpbmdPYmplY3QtPnRleHRNYXJrZXJSYW5nZUZvck5T
UmFuZ2UocmFuZ2UpLnBsYXRmb3JtRGF0YSgpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKIAorICAg
IGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzprQVhDb252ZXJ0UmVsYXRpdmVGcmFtZVBh
cmFtZXRlcml6ZWRBdHRyaWJ1dGVdKSB7CisgICAgICAgIGF1dG8qIHBhcmVudCA9IGJhY2tpbmdP
YmplY3QtPnBhcmVudE9iamVjdCgpOworICAgICAgICByZXR1cm4gcGFyZW50ID8gW05TVmFsdWUg
dmFsdWVXaXRoUmVjdDpwYXJlbnQtPmNvbnZlcnRGcmFtZVRvU3BhY2UoRmxvYXRSZWN0KHJlY3Qp
LCBBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlOjpQYWdlKV0gOiBuaWw7CisgICAgfQorCiAg
ICAgLy8gVGhlcmUgYXJlIHNvbWUgcGFyYW1ldGVycyB0aGF0IHN1cGVyIGhhbmRsZXMgdGhhdCBh
cmUgbm90IGV4cGxpY2l0bHkgcmV0dXJuZWQgYnkgdGhlIGxpc3Qgb2YgdGhlIGVsZW1lbnQncyBh
dHRyaWJ1dGVzLgogICAgIC8vIEluIHRoYXQgY2FzZSBpdCBtdXN0IGJlIHBhc3NlZCB0byBzdXBl
ci4KICAgICByZXR1cm4gW3N1cGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTphdHRyaWJ1
dGUgZm9yUGFyYW1ldGVyOnBhcmFtZXRlcl07CkBAIC0zNzI3LDggKzM3NzYsMTAgQEAgQUxMT1df
REVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIGlmICghY2hpbGQpCiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIg
KmNoaWxkV3JhcHBlciA9IGNoaWxkLT53cmFwcGVyKCk7Ci0gICAgICAgIGlmIChjaGlsZFdyYXBw
ZXIgPT0gdGFyZ2V0Q2hpbGQgfHwgKGNoaWxkLT5pc0F0dGFjaG1lbnQoKSAmJiBbY2hpbGRXcmFw
cGVyIGF0dGFjaG1lbnRWaWV3XSA9PSB0YXJnZXRDaGlsZCkpCisgICAgICAgIGlmIChjaGlsZFdy
YXBwZXIgPT0gdGFyZ2V0Q2hpbGQgfHwgKGNoaWxkLT5pc0F0dGFjaG1lbnQoKSAmJiBbY2hpbGRX
cmFwcGVyIGF0dGFjaG1lbnRWaWV3XSA9PSB0YXJnZXRDaGlsZCkKKyAgICAgICAgICAgIHx8IChj
aGlsZC0+aXNSZW1vdGVGcmFtZSgpICYmIGNoaWxkLT5yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVu
dCgpID09IHRhcmdldENoaWxkKSkgewogICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgIH0K
ICAgICB9CiAgICAgcmV0dXJuIE5TTm90Rm91bmQ7CiB9CkBAIC0zNzQ1LDcgKzM3OTYsNyBAQCBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIGlmIChbYXR0cmlidXRlIGlz
RXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZV0pIHsKICAgICAg
ICAgLy8gVHJlZSBpdGVtcyBvYmplY3QgcmV0dXJucyBhIGRpZmZlcmVudCBzZXQgb2YgY2hpbGRy
ZW4gdGhhbiB0aG9zZSB0aGF0IGFyZSBpbiBjaGlsZHJlbigpCiAgICAgICAgIC8vIGJlY2F1c2Ug
YW4gQVhPdXRsaW5lICh0aGUgbWFjIHJvbGUgaXMgYmVjb21lcykgaGFzIHNvbWUgb2RkIHN0aXB1
bGF0aW9ucy4KLSAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzVHJlZSgpIHx8IGJhY2tpbmdP
YmplY3QtPmlzVHJlZUl0ZW0oKSkKKyAgICAgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzVHJlZSgp
IHx8IGJhY2tpbmdPYmplY3QtPmlzVHJlZUl0ZW0oKSB8fCBiYWNraW5nT2JqZWN0LT5pc1JlbW90
ZUZyYW1lKCkpCiAgICAgICAgICAgICByZXR1cm4gW1tzZWxmIGFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZV0gY291bnRdOwogCiAgICAg
ICAgIGF1dG8gY2hpbGRyZW5TaXplID0gYmFja2luZ09iamVjdC0+Y2hpbGRyZW4oKS5zaXplKCk7
CkBAIC0zNzgxLDE2ICszODMyLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
CiAKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5BdHRyaWJ1dGVdKSB7CiAgICAgICAgIGlmIChiYWNraW5nT2JqZWN0LT5jaGlsZHJlbigp
LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgTlNBcnJheSAqY2hpbGRyZW4gPSBuaWw7Ci0jaWYg
RU5BQkxFKE1PREVMX0VMRU1FTlQpCi0gICAgICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNN
b2RlbCgpKSB7Ci0gICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBjcmVhdGVOU0FycmF5KGJhY2tp
bmdPYmplY3QtPm1vZGVsRWxlbWVudENoaWxkcmVuKCksIFtdIChhdXRvJiYgY2hpbGQpIC0+IGlk
IHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkLmdldCgpOwotICAgICAgICAgICAg
ICAgIH0pLmF1dG9yZWxlYXNlKCk7Ci0gICAgICAgICAgICB9IGVsc2UKLSNlbmRpZgotICAgICAg
ICAgICAgICAgIGNoaWxkcmVuID0gW3NlbGYgcmVuZGVyV2lkZ2V0Q2hpbGRyZW5dOwotICAgICAg
ICAgICAgCisgICAgICAgICAgICBOU0FycmF5ICpjaGlsZHJlbiA9IFtzZWxmIF90cmFuc2Zvcm1T
cGVjaWFsQ2hpbGRyZW5DYXNlczpiYWNraW5nT2JqZWN0XTsKICAgICAgICAgICAgIGlmICghY2hp
bGRyZW4pCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMzgyMSw4ICszODYzLDEz
IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAgICAgICAgICAgICAvLyBU
aGUgYXR0YWNobWVudCB2aWV3IHNob3VsZCBiZSByZXR1cm5lZCwgb3RoZXJ3aXNlIEFYIHBhbGlu
ZHJvbWUgZXJyb3JzIG9jY3VyLgogICAgICAgICAgICAgaWQgYXR0YWNobWVudFZpZXcgPSBuaWw7
Ci0gICAgICAgICAgICBpZiAoW3dyYXBwZXIgaXNLaW5kT2ZDbGFzczpbV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIgY2xhc3NdXSAmJiB3cmFwcGVyLmF4QmFja2luZ09iamVjdCAmJiB3cmFw
cGVyLmF4QmFja2luZ09iamVjdC0+aXNBdHRhY2htZW50KCkpCi0gICAgICAgICAgICAgICAgYXR0
YWNobWVudFZpZXcgPSBbd3JhcHBlciBhdHRhY2htZW50Vmlld107CisgICAgICAgICAgICBpZiAo
W3dyYXBwZXIgaXNLaW5kT2ZDbGFzczpbV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgY2xh
c3NdXSAmJiB3cmFwcGVyLmF4QmFja2luZ09iamVjdCkgeworICAgICAgICAgICAgICAgIGlmICh3
cmFwcGVyLmF4QmFja2luZ09iamVjdC0+aXNBdHRhY2htZW50KCkpCisgICAgICAgICAgICAgICAg
ICAgIGF0dGFjaG1lbnRWaWV3ID0gW3dyYXBwZXIgYXR0YWNobWVudFZpZXddOworICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKHdyYXBwZXIuYXhCYWNraW5nT2JqZWN0LT5pc1JlbW90ZUZyYW1lKCkp
CisgICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRWaWV3ID0gd3JhcHBlci5heEJhY2tpbmdP
YmplY3QtPnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkuZ2V0KCk7CisgICAgICAgICAgICB9
CisKICAgICAgICAgICAgIFtzdWJhcnJheSBhZGRPYmplY3Q6YXR0YWNobWVudFZpZXcgPyBhdHRh
Y2htZW50VmlldyA6IHdyYXBwZXJdOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5jcHAKaW5kZXggMjU4YzE0Yjg2YThiLi41NzE3YWRlMmE0NTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0xMDg1LDYgKzEwODUsMTEgQEAgUmVt
b3RlQVhPYmplY3RSZWYgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6YWNjZXNzaWJpbGl0eVJlbW90
ZU9iamVjdCgpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK0ludFBvaW50IEVtcHR5RnJhbWVM
b2FkZXJDbGllbnQ6OmFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCgpCit7CisgICAgcmV0
dXJuIHsgfTsKK30KKwogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiB2
b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnNldEFYSXNvbGF0ZWRUcmVlUm9vdChXZWJDb3Jl
OjpBWENvcmVPYmplY3QqKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5RnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1l
TG9hZGVyQ2xpZW50LmgKaW5kZXggMDk4Y2U1OGQxMTE5Li40NjcyZGUyOTg1MzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTg0LDYg
KzE4NCw3IEBAIHByaXZhdGU6CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZW1vdGVBWE9i
amVjdFJlZiBhY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkgZmluYWw7CisgICAgSW50UG9pbnQg
YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCkgZmluYWw7CiAjaWYgRU5BQkxFKEFDQ0VT
U0lCSUxJVFlfSVNPTEFURURfVFJFRSkKICAgICB2b2lkIHNldEFYSXNvbGF0ZWRUcmVlUm9vdChX
ZWJDb3JlOjpBWENvcmVPYmplY3QqKSBmaW5hbDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0xvY2FsRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Mb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggYjJkNTZmMDUwYWU5Li4wMGQz
YWQ1ZTJjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2NhbEZyYW1lTG9h
ZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvY2FsRnJhbWVMb2FkZXJD
bGllbnQuaApAQCAtMjkwLDYgKzI5MCw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICAvLyBBbGxvdyBhbiBhY2Nlc3NpYmlsaXR5IG9iamVjdCB0byByZXRyaWV2ZSBhIEZyYW1l
IHBhcmVudCBpZiB0aGVyZSdzIG5vIFBsYXRmb3JtV2lkZ2V0LgogICAgIHZpcnR1YWwgUmVtb3Rl
QVhPYmplY3RSZWYgYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpID0gMDsKKyAgICB2aXJ0dWFs
IEludFBvaW50IGFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCgpID0gMDsKICNpZiBFTkFC
TEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQogICAgIHZpcnR1YWwgdm9pZCBzZXRBWElz
b2xhdGVkVHJlZVJvb3QoQVhDb3JlT2JqZWN0KikgPSAwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cAppbmRleCBmNDZhMTg0NTA2NTcuLjBkYTdkNThhNWVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBA
IC0yMjA5LDExICsyMjA5LDE4IEBAIGJvb2wgUGFnZTo6c2hvdWxkVXBkYXRlQWNjZXNzaWJpbGl0
eVJlZ2lvbnMoKSBjb25zdAogICAgIEFTU0VSVChtX2xhc3RSZW5kZXJpbmdVcGRhdGVUaW1lc3Rh
bXAgPj0gbV9sYXN0QWNjZXNzaWJpbGl0eU9iamVjdFJlZ2lvbnNVcGRhdGUpOwogICAgIGlmICgo
bV9sYXN0UmVuZGVyaW5nVXBkYXRlVGltZXN0YW1wIC0gbV9sYXN0QWNjZXNzaWJpbGl0eU9iamVj
dFJlZ2lvbnNVcGRhdGUpIDwgdXBkYXRlSW50ZXJ2YWwpIHsKICAgICAgICAgLy8gV2UndmUgYWxy
ZWFkeSB1cGRhdGVkIGFjY2Vzc2liaWxpdHkgb2JqZWN0IHJlY3RzIHJlY2VudGx5LCBzbyBza2lw
IHRoaXMgdXBkYXRlIGFuZCBzY2hlZHVsZSBhbm90aGVyIGZvciBsYXRlci4KLSAgICAgICAgYXV0
byogbG9jYWxNYWluRnJhbWUgPSBkeW5hbWljRG93bmNhc3Q8TG9jYWxGcmFtZT4obWFpbkZyYW1l
KCkpOwotICAgICAgICBSZWZQdHIgbWFpbkRvY3VtZW50ID0gbG9jYWxNYWluRnJhbWUgPyBsb2Nh
bE1haW5GcmFtZS0+ZG9jdW1lbnQoKSA6IG51bGxwdHI7CisKKyAgICAgICAgUmVmUHRyPERvY3Vt
ZW50PiBwcm90ZWN0ZWRNYWluRG9jdW1lbnQ7CisgICAgICAgIGlmIChhdXRvKiBsb2NhbE1haW5G
cmFtZSA9IGR5bmFtaWNEb3duY2FzdDxMb2NhbEZyYW1lPihtYWluRnJhbWUoKSkpCisgICAgICAg
ICAgICBwcm90ZWN0ZWRNYWluRG9jdW1lbnQgPSBsb2NhbE1haW5GcmFtZSA/IGxvY2FsTWFpbkZy
YW1lLT5kb2N1bWVudCgpIDogbnVsbHB0cjsKKyAgICAgICAgZWxzZSBpZiAoYXV0byogcmVtb3Rl
RnJhbWUgPSBkeW5hbWljRG93bmNhc3Q8UmVtb3RlRnJhbWU+KG1haW5GcmFtZSgpKSkgeworICAg
ICAgICAgICAgaWYgKGF1dG8qIG93bmVyID0gcmVtb3RlRnJhbWUtPm93bmVyRWxlbWVudCgpKQor
ICAgICAgICAgICAgICAgIHByb3RlY3RlZE1haW5Eb2N1bWVudCA9ICYob3duZXItPmRvY3VtZW50
KCkpOworICAgICAgICB9CisKICAgICAgICAgLy8gSWYgYWNjZXNzaWJpbGl0eSBpcyBlbmFibGVk
IGFuZCB3ZSBoYXZlIGEgbWFpbiBkb2N1bWVudCwgdGhhdCBkb2N1bWVudCBzaG91bGQgaGF2ZSBh
biBBWCBvYmplY3QgY2FjaGUuCi0gICAgICAgIEFTU0VSVCghbWFpbkRvY3VtZW50IHx8IG1haW5E
b2N1bWVudC0+ZXhpc3RpbmdBWE9iamVjdENhY2hlKCkpOwotICAgICAgICBpZiAoQ2hlY2tlZFB0
ciB0b3BBeE9iamVjdENhY2hlID0gbWFpbkRvY3VtZW50ID8gbWFpbkRvY3VtZW50LT5leGlzdGlu
Z0FYT2JqZWN0Q2FjaGUoKSA6IG51bGxwdHIpCisgICAgICAgIEFTU0VSVCghcHJvdGVjdGVkTWFp
bkRvY3VtZW50IHx8IHByb3RlY3RlZE1haW5Eb2N1bWVudC0+ZXhpc3RpbmdBWE9iamVjdENhY2hl
KCkpOworICAgICAgICBpZiAoQ2hlY2tlZFB0ciB0b3BBeE9iamVjdENhY2hlID0gcHJvdGVjdGVk
TWFpbkRvY3VtZW50ID8gcHJvdGVjdGVkTWFpbkRvY3VtZW50LT5leGlzdGluZ0FYT2JqZWN0Q2Fj
aGUoKSA6IG51bGxwdHIpCiAgICAgICAgICAgICB0b3BBeE9iamVjdENhY2hlLT5zY2hlZHVsZU9i
amVjdFJlZ2lvbnNVcGRhdGUoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9SZW1vdGVGcmFtZS5jcHAKaW5kZXggNmZmODE3YjkzNjFmLi4yNGUwMTkzY2U1ZmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuY3BwCkBAIC0xMDAsNiArMTAwLDIxIEBAIHZv
aWQgUmVtb3RlRnJhbWU6OmJyb2FkY2FzdEZyYW1lUmVtb3ZhbFRvT3RoZXJQcm9jZXNzZXMoKQog
ICAgIG1fY2xpZW50LT5icm9hZGNhc3RGcmFtZVJlbW92YWxUb090aGVyUHJvY2Vzc2VzKCk7CiB9
CiAKK3ZvaWQgUmVtb3RlRnJhbWU6OnVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNl
dChJbnRQb2ludCBvZmZzZXQpCit7CisgICAgbV9jbGllbnQtPnVwZGF0ZVJlbW90ZUZyYW1lQWNj
ZXNzaWJpbGl0eU9mZnNldChmcmFtZUlEKCksIG9mZnNldCk7Cit9CisKK3ZvaWQgUmVtb3RlRnJh
bWU6OnVuYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVy
KQoreworICAgIG1fY2xpZW50LT51bmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKHByb2Nl
c3NJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVGcmFtZTo6YmluZFJlbW90ZUFjY2Vzc2li
aWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBzdGQ6OnNwYW48Y29uc3QgdWludDhf
dD4gZGF0YVRva2VuLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6c3Bhbjxjb25z
dCB1aW50OF90PiwgaW50KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICByZXR1cm4gbV9j
bGllbnQtPmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKHByb2Nlc3NJZGVudGlmaWVyLCBm
cmFtZUlEKCksIGRhdGFUb2tlbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiBG
cmFtZVZpZXcqIFJlbW90ZUZyYW1lOjp2aXJ0dWFsVmlldygpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fdmlldy5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJh
bWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuaAppbmRleCA3YmFkYTk5MDhh
MmQuLmJiOThlMDk2MWY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVG
cmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuaApAQCAtMzMsNiAr
MzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEludFBvaW50OwogY2xhc3Mg
UmVtb3RlRE9NV2luZG93OwogY2xhc3MgUmVtb3RlRnJhbWVDbGllbnQ7CiBjbGFzcyBSZW1vdGVG
cmFtZVZpZXc7CkBAIC02Miw2ICs2Myw5IEBAIHB1YmxpYzoKICAgICBNYXJrYWJsZTxMYXllckhv
c3RpbmdDb250ZXh0SWRlbnRpZmllcj4gbGF5ZXJIb3N0aW5nQ29udGV4dElkZW50aWZpZXIoKSBj
b25zdCB7IHJldHVybiBtX2xheWVySG9zdGluZ0NvbnRleHRJZGVudGlmaWVyOyB9CiAKICAgICBT
dHJpbmcgcmVuZGVyVHJlZUFzVGV4dChzaXplX3QgYmFzZUluZGVudCwgT3B0aW9uU2V0PFJlbmRl
ckFzVGV4dEZsYWc+KTsKKyAgICB2b2lkIGJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKGlu
dCBwcm9jZXNzSWRlbnRpZmllciwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgaW50KT4mJik7CisgICAgdm9p
ZCB1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQoSW50UG9pbnQpOworICAgIHZv
aWQgdW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQpOwogCiAgICAgdm9pZCBzZXRD
dXN0b21Vc2VyQWdlbnQoY29uc3QgU3RyaW5nJiBjdXN0b21Vc2VyQWdlbnQpIHsgbV9jdXN0b21V
c2VyQWdlbnQgPSBjdXN0b21Vc2VyQWdlbnQ7IH0KICAgICBTdHJpbmcgY3VzdG9tVXNlckFnZW50
KCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZy
YW1lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lQ2xpZW50LmgKaW5k
ZXggNGVmZDEwM2YzOTEyLi41NDFhMGQwMWM1NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUmVtb3RlRnJhbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90
ZUZyYW1lQ2xpZW50LmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBEYXRhU2VnbWVudDsKIGNsYXNzIEZyYW1lTG9hZFJlcXVlc3Q7CiBjbGFzcyBJbnRT
aXplOwogY2xhc3MgU2VjdXJpdHlPcmlnaW5EYXRhOwpAQCAtNDgsNiArNDksOSBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBTdHJpbmcgcmVuZGVyVHJlZUFzVGV4dChzaXplX3QgYmFzZUluZGVudCwg
T3B0aW9uU2V0PFJlbmRlckFzVGV4dEZsYWc+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGJyb2Fk
Y2FzdEZyYW1lUmVtb3ZhbFRvT3RoZXJQcm9jZXNzZXMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGNsb3NlUGFnZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYmluZFJlbW90ZUFjY2Vzc2liaWxp
dHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBGcmFtZUlkZW50aWZpZXIgdGFyZ2V0LCBj
b25zdCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YVRva2VuLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgaW50KT4mJikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQoRnJhbWVJ
ZGVudGlmaWVyIHRhcmdldCwgSW50UG9pbnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5iaW5k
UmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZm9j
dXMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVuZm9jdXMoKSA9IDA7CiAgICAgdmlydHVhbCB+
UmVtb3RlRnJhbWVDbGllbnQoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApp
bmRleCA4NGZjNDE5ZTU5Y2EuLjQyZWVlNjZhYjE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Bh
Z2VDbGllbnQuaApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0FjdGlv
bnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRm9jdXNEaXJlY3Rpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lSWRlbnRpZmllci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvSW5wdXRNb2RlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRp
YUNvbnRyb2xzQ29udGV4dE1lbnVJdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxUeXBl
cy5oPgpAQCAtMzE4LDcgKzMxOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0
ZVVuZG9SZWRvKFVuZG9PclJlZG8pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2hlZWxFdmVudFdh
c05vdEhhbmRsZWRCeVdlYkNvcmUoY29uc3QgTmF0aXZlV2ViV2hlZWxFdmVudCYpID0gMDsKICNp
ZiBQTEFURk9STShDT0NPQSkKLSAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzaWJpbGl0eVdlYlByb2Nl
c3NUb2tlblJlY2VpdmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBhY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNv
bnN0IHVpbnQ4X3Q+LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHBpZF90KSA9IDA7CiAgICAg
dmlydHVhbCBib29sIGV4ZWN1dGVTYXZlZENvbW1hbmRCeVNlbGVjdG9yKGNvbnN0IFN0cmluZyYg
c2VsZWN0b3IpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2VjdXJlSW5wdXRTdGF0ZSgp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRTZWN1cmVJbnB1dFN0YXRlKCkgPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4
IDZkMDM0MDdjZWU5Zi4uYjY0NjU2MmE3ZDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCkBAIC01NDcsNyArNTQ3LDcgQEAgdm9pZCBQ
cm92aXNpb25hbFBhZ2VQcm94eTo6cmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJ
bk1haW5GcmFtZShjb25zdAogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLXZvaWQgUHJv
dmlzaW9uYWxQYWdlUHJveHk6OnJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihz
dGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSkKK3ZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6
OnJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWlu
dDhfdD4gZGF0YSwgRnJhbWVJZGVudGlmaWVyKQogewogICAgIG1fYWNjZXNzaWJpbGl0eVRva2Vu
ID0gVmVjdG9yKGRhdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UHJvdmlzaW9uYWxQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lv
bmFsUGFnZVByb3h5LmgKaW5kZXggMDNiMjViYmY0ZTA2Li45NDUwYzFmY2M2MzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaApAQCAtMTc0LDcg
KzE3NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tE
b2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0Ep
Ci0gICAgdm9pZCByZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oc3RkOjpzcGFu
PGNvbnN0IHVpbnQ4X3Q+KTsKKyAgICB2b2lkIHJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxp
dHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
cik7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKICAgICB2b2lk
IGJpbmRBY2Nlc3NpYmlsaXR5VHJlZShjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKaW5kZXggZjJmYzhhNTRkODgzLi4yMzAzMDdhMTc0ZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCkBAIC00NSw2ICs0
NSw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYXN0ZWJvYXJkUHJveHkuaCIKKyNpbmNsdWRlICJX
ZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1
ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJzaXRlUG9saWNpZXNEYXRhLmgi
CkBAIC0xODQsNiArMTg1LDE0IEBAIHZvaWQgV2ViRnJhbWVQcm94eTo6bmF2aWdhdGVTZXJ2aWNl
V29ya2VyQ2xpZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJCiAgICAgfSk7CiB9
CiAKK3ZvaWQgV2ViRnJhbWVQcm94eTo6YmluZEFjY2Vzc2liaWxpdHlGcmFtZVdpdGhEYXRhKHN0
ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhKQoreworICAgIGlmICghbV9wYWdlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkJpbmRB
Y2Nlc3NpYmlsaXR5RnJhbWVXaXRoRGF0YShtX2ZyYW1lSUQsIGRhdGEpKTsKK30KKwogdm9pZCBX
ZWJGcmFtZVByb3h5Ojpsb2FkVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVy
cmVyKQogewogICAgIGlmICghbV9wYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViRnJhbWVQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQ
cm94eS5oCmluZGV4IGIwZGFlYjBlNjRmYy4uNzE1YmI4MGJhYjY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oCkBAIC0xNzAsNiArMTcwLDggQEAgcHVibGljOgogICAg
IHZvaWQgcmVtb3RlUHJvY2Vzc0RpZFRlcm1pbmF0ZSgpOwogICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXI+IHdlYlBhZ2VJREluQ3VycmVudFByb2Nlc3MoKTsKICAgICB2
b2lkIG5vdGlmeVBhcmVudE9mTG9hZENvbXBsZXRpb24oV2ViUHJvY2Vzc1Byb3h5Jik7CisgICAg
dm9pZCByZW1vdmVSZW1vdGVQYWdlc0ZvclN1c3BlbnNpb24oKTsKKyAgICB2b2lkIGJpbmRBY2Nl
c3NpYmlsaXR5RnJhbWVXaXRoRGF0YShzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pOwogCiAgICAg
Ym9vbCBpc0ZvY3VzZWQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKaW5kZXggMjYzODZhNjhiMjUyLi5hOTQ2M2FhOTdjY2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTI5Niw4ICsxMjk2LDEyIEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojpzd2FwVG9Qcm92aXNpb25hbFBhZ2Uoc3RkOjp1bmlxdWVfcHRyPFByb3Zp
c2lvbmFsUGFnZVByb3h5PiBwCiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBhdXRvIGFjY2Vz
c2liaWxpdHlUb2tlbiA9IHByb3Zpc2lvbmFsUGFnZS0+dGFrZUFjY2Vzc2liaWxpdHlUb2tlbigp
OwotICAgIGlmICghYWNjZXNzaWJpbGl0eVRva2VuLmlzRW1wdHkoKSkKLSAgICAgICAgcmVnaXN0
ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHsgYWNjZXNzaWJpbGl0eVRva2VuLmRhdGEo
KSwgYWNjZXNzaWJpbGl0eVRva2VuLnNpemUoKSB9KTsKKyAgICBpZiAoIWFjY2Vzc2liaWxpdHlU
b2tlbi5pc0VtcHR5KCkpIHsKKyAgICAgICAgcmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0
eVRva2VuKHsgYWNjZXNzaWJpbGl0eVRva2VuLmRhdGEoKSwgYWNjZXNzaWJpbGl0eVRva2VuLnNp
emUoKSB9LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgeworICAgICAgICAgICAgT2JqZWN0SWRl
bnRpZmllcjxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXJUeXBlPigwKSwKKyAgICAgICAgICAgIE9i
amVjdElkZW50aWZpZXI8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXJUeXBlPigwKQorICAgICAg
ICB9KTsKKyAgICB9CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkK
ICAgICBhdXRvIGFjY2Vzc2liaWxpdHlQbHVnSUQgPSBwcm92aXNpb25hbFBhZ2UtPmFjY2Vzc2li
aWxpdHlQbHVnSUQoKTsKQEAgLTEzNzk5LDYgKzEzODAzLDIyIEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzZW5kU2Nyb2xsUG9zaXRpb25DaGFuZ2VkRm9yTm9kZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkZyYW1lCiB9CiAjZW5kaWYKIAordm9pZCBXZWJQYWdlUHJveHk6OmJpbmRSZW1vdGVBY2Nlc3Np
YmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIGNvbnN0IHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhVG9rZW4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBpbnQpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jVG9Qcm9j
ZXNzQ29udGFpbmluZ0ZyYW1lKGZyYW1lSUQsIE1lc3NhZ2VzOjpXZWJQYWdlOjpCaW5kUmVtb3Rl
QWNjZXNzaWJpbGl0eUZyYW1lcyhwcm9jZXNzSWRlbnRpZmllciwgZnJhbWVJRCwgZGF0YVRva2Vu
KSk7CisgICAgaWYgKCFzZW5kUmVzdWx0LnN1Y2NlZWRlZCgpKQorICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIoeyB9LCAwKTsKKworICAgIGF1dG8gW2ZyYW1lRGF0YVRva2VuLCBmcmFt
ZVByb2Nlc3NJZGVudGlmaWVyXSA9IHNlbmRSZXN1bHQudGFrZVJlcGx5KCk7CisKKyAgICBjb21w
bGV0aW9uSGFuZGxlcihmcmFtZURhdGFUb2tlbiwgZnJhbWVQcm9jZXNzSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZz
ZXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OkludFBvaW50IG9m
ZnNldCkKK3sKKyAgICBzZW5kVG9Qcm9jZXNzQ29udGFpbmluZ0ZyYW1lKGZyYW1lSUQsIE1lc3Nh
Z2VzOjpXZWJQYWdlOjpVcGRhdGVSZW1vdGVQYWdlQWNjZXNzaWJpbGl0eU9mZnNldChmcmFtZUlE
LCBvZmZzZXQpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBXRUJQQUdF
UFJPWFlfUkVMRUFTRV9MT0cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5k
ZXggOTI5YjUwMDM4YTZiLi5mYTlmNDdkZmQ5M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCkBAIC0xMzU1LDcgKzEzNTUsNyBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICAvLyBDYWxsZWQgYnkgdGhlIHdlYiBwcm9jZXNzIHRocm91Z2ggYSBtZXNz
YWdlLgotICAgIHZvaWQgcmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6
c3Bhbjxjb25zdCB1aW50OF90Pik7CisgICAgdm9pZCByZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3Np
YmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIpOwogICAgIC8vIENhbGxlZCBieSB0aGUgVUkgcHJvY2VzcyB3aGVuIGl0IGlzIHJlYWR5
IHRvIHNlbmQgaXRzIHRva2VucyB0byB0aGUgd2ViIHByb2Nlc3MuCiAgICAgdm9pZCByZWdpc3Rl
clVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGVs
ZW1lbnRUb2tlbiwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHdpbmRvd1Rva2VuKTsKICAgICB2
b2lkIHJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHR5cGVzLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pOwpAQCAtMjk5MSw2ICsyOTkxLDgg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGZvY3VzUmVtb3RlRnJhbWUoSVBDOjpDb25uZWN0aW9uJiwg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lkIHBvc3RNZXNzYWdlVG9SZW1vdGUo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmln
aW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciB0YXJnZXQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiB0YXJnZXRPcmlnaW4sIGNvbnN0IFdlYkNvcmU6Ok1lc3Nh
Z2VXaXRoTWVzc2FnZVBvcnRzJik7CiAgICAgdm9pZCByZW5kZXJUcmVlQXNUZXh0KFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgc2l6ZV90IGJhc2VJbmRlbnQsIE9wdGlvblNldDxXZWJDb3JlOjpS
ZW5kZXJBc1RleHRGbGFnPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYpOwor
ICAgIHZvaWQgYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlm
aWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBk
YXRhVG9rZW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+
LCBpbnQpPiYmKTsKKyAgICB2b2lkIHVwZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNl
dChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OkludFBvaW50KTsKIAogICAgIHZv
aWQgc2V0VGV4dEluZGljYXRvckZyb21GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdl
YkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhJiYsIHVpbnQ2NF90KTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDRmZjUzYWMwMThl
MS4uMzE4ZmMzMzEyYjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zMjUsNyArMzI1LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZVByb3h5IHsKICAgICBFeGVjdXRlU2F2ZWRDb21tYW5kQnlTZWxlY3RvcihTdHJpbmcgc2VsZWN0
b3IpIC0+IChib29sIGhhbmRsZWQpIFN5bmNocm9ub3VzCiAKICAgICAjIFJlbW90ZSBhY2Nlc3Np
YmlsaXR5IG1lc3NhZ2VzCi0gICAgUmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vu
KHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhKQorICAgIFJlZ2lzdGVyV2ViUHJvY2Vzc0Fj
Y2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSwgV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCiAKICAgICAjIFNwZWVjaCBtZXNzYWdlcwogICAgIEdl
dElzU3BlYWtpbmcoKSAtPiAoYm9vbCBpc1NwZWFraW5nKSBTeW5jaHJvbm91cwpAQCAtNjMxLDQg
KzYzMSw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRm9jdXNSZW1vdGVGcmFt
ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKICAgICBQb3N0TWVzc2FnZVRvUmVt
b3RlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBzb3VyY2UsIFN0cmluZyBzb3VyY2VPcmlnaW4s
IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciB0YXJnZXQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhPiB0YXJnZXRPcmlnaW4sIHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdl
V2l0aE1lc3NhZ2VQb3J0cyBtZXNzYWdlKQogICAgIFJlbmRlclRyZWVBc1RleHQoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGlkZW50aWZpZXIsIHNpemVfdCBiYXNlSW5kZW50LCBPcHRpb25TZXQ8
V2ViQ29yZTo6UmVuZGVyQXNUZXh0RmxhZz4gYmVoYXZpb3IpIC0+IChTdHJpbmcgcmVuZGVyVHJl
ZUR1bXApIFN5bmNocm9ub3VzCisgICAgQmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50
IHByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3Rk
OjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGFUb2tlbikgLT4gKHN0ZDo6c3Bhbjxjb25zdCB1aW50
OF90PiB0b2tlbiwgaW50IHByb2Nlc3NJZGVudGlmaWVyKSBTeW5jaHJvbm91cworICAgIFVwZGF0
ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgV2ViQ29yZTo6SW50UG9pbnQgb2Zmc2V0KQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCAxMGM0ZjZhZTEyNTAuLjYz
ODhjYjQ2NzJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLmgKQEAgLTExMCw3ICsxMTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJB
bGxFZGl0Q29tbWFuZHMoKSBvdmVycmlkZTsKICAgICBib29sIGNhblVuZG9SZWRvKFVuZG9PclJl
ZG8pIG92ZXJyaWRlOwogICAgIHZvaWQgZXhlY3V0ZVVuZG9SZWRvKFVuZG9PclJlZG8pIG92ZXJy
aWRlOwotICAgIHZvaWQgYWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKHN0ZDo6
c3Bhbjxjb25zdCB1aW50OF90Pikgb3ZlcnJpZGU7CisgICAgdm9pZCBhY2Nlc3NpYmlsaXR5V2Vi
UHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIHBpZF90KSBvdmVycmlkZTsKICAgICBib29sIGV4ZWN1dGVTYXZlZENv
bW1hbmRCeVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IpIG92ZXJyaWRlOwogICAgIHZv
aWQgdXBkYXRlU2VjdXJlSW5wdXRTdGF0ZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVzZXRTZWN1
cmVJbnB1dFN0YXRlKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggY2IyM2Y0OTc0YTZiLi5iNWFkZGRjZTIzZmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
bW0KQEAgLTM4OSw3ICszODksNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpleGVjdXRlVW5kb1Jl
ZG8oVW5kb09yUmVkbyB1bmRvT3JSZWRvKQogICAgIHJldHVybiAodW5kb09yUmVkbyA9PSBVbmRv
T3JSZWRvOjpVbmRvKSA/IFtbY29udGVudFZpZXcoKSB1bmRvTWFuYWdlcl0gdW5kb10gOiBbW2Nv
bnRlbnRWaWV3KCkgdW5kb01hbmFnZXJdIHJlZG9dOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBs
OjphY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVp
bnQ4X3Q+IGRhdGEpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5V2ViUHJvY2Vz
c1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEsIFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciwgcGlkX3QpCiB7CiAgICAgTlNEYXRhICpyZW1vdGVUb2tlbiA9IFtOU0Rh
dGEgZGF0YVdpdGhCeXRlczpkYXRhLmRhdGEoKSBsZW5ndGg6ZGF0YS5zaXplKCldOwogICAgIFtj
b250ZW50VmlldygpIF9zZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuOnJlbW90ZVRva2Vu
XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJ
T1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmlu
ZGV4IDViMTBmNTljNjY2MS4uZGViNGQ1OGU1ZmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTc2MywxMSArNzYzLDEwIEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoYm9vbCkKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNz
QWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhKQordm9pZCBX
ZWJQYWdlUHJveHk6OnJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihzdGQ6OnNw
YW48Y29uc3QgdWludDhfdD4gZGF0YSwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCiB7Ci0gICAg
cHJvdGVjdGVkUGFnZUNsaWVudCgpLT5hY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2
ZWQoZGF0YSk7Ci19ICAgIAotCisgICAgcGFnZUNsaWVudCgpLmFjY2Vzc2liaWxpdHlXZWJQcm9j
ZXNzVG9rZW5SZWNlaXZlZChkYXRhLCBmcmFtZUlELCBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigp
LT5yZW1vdGVQcm9jZXNzSUQoKSk7Cit9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZWxheUFjY2Vz
c2liaWxpdHlOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25OYW1lLCBzdGQ6
OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKaW5kZXggZmI2YzYwNzg2N2FmLi5iZjhkYTQzMGQ4
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1w
bE1hYy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1h
Yy5oCkBAIC0xNzYsNyArMTc2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdlc3R1cmVFdmVudFdh
c05vdEhhbmRsZWRCeVdlYkNvcmUoY29uc3QgTmF0aXZlV2ViR2VzdHVyZUV2ZW50Jikgb3ZlcnJp
ZGU7CiAjZW5kaWYKIAotICAgIHZvaWQgYWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2Vp
dmVkKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Pikgb3ZlcnJpZGU7CisgICAgdm9pZCBhY2Nlc3Np
YmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHBpZF90KSBvdmVycmlkZTsKIAogICAgIHZvaWQgbWFr
ZUZpcnN0UmVzcG9uZGVyKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBhc3Npc3RpdmVUZWNobm9sb2d5
TWFrZUZpcnN0UmVzcG9uZGVyKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KaW5kZXggMDc4MGYxOGRhMWMyLi4wMTUwZWM0
NTEyY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGxNYWMubW0KQEAgLTU4MSw5ICs1ODEsOSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRUZXh0
SW5kaWNhdG9yQW5pbWF0aW9uUHJvZ3Jlc3MoZmxvYXQgcHJvZ3Jlc3MpCiAgICAgbV9pbXBsLT5z
ZXRUZXh0SW5kaWNhdG9yQW5pbWF0aW9uUHJvZ3Jlc3MocHJvZ3Jlc3MpOwogfQogCi12b2lkIFBh
Z2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpz
cGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmls
aXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEs
IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBwaWRfdCBwaWQpCiB7Ci0gICAgbV9p
bXBsLT5zZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuKFtOU0RhdGEgZGF0YVdpdGhCeXRl
czpkYXRhLmRhdGEoKSBsZW5ndGg6ZGF0YS5zaXplKCldKTsKKyAgICBtX2ltcGwtPnNldEFjY2Vz
c2liaWxpdHlXZWJQcm9jZXNzVG9rZW4oW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGEuZGF0YSgp
IGxlbmd0aDpkYXRhLnNpemUoKV0sIGZyYW1lSUQsIHBpZCk7CiB9CiAgICAgCiB2b2lkIFBhZ2VD
bGllbnRJbXBsOjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJl
ZUNvbnRleHQmIGxheWVyVHJlZUNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCBjZmIxMGZkYmI0MTMuLjg2OTYxN2EyOWQ4YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBA
IC0zMDYsMTIgKzMwNiwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybURpY3Rpb25h
cnlMb29rdXAoY29uc3QgRGljdGlvbmFyeVBvcHVwSW5mbyYgZGljdGlvbgogICAgIHByb3RlY3Rl
ZFBhZ2VDbGllbnQoKS0+ZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAoZGljdGlvbmFyeVBvcHVw
SW5mbyk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3Np
YmlsaXR5VG9rZW4oc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGEpCit2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKHN0ZDo6c3Bhbjxjb25z
dCB1aW50OF90PiBkYXRhLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKIHsKICAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBwcm90ZWN0ZWRQ
YWdlQ2xpZW50KCktPmFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChkYXRhKTsK
KyAgICBwcm90ZWN0ZWRQYWdlQ2xpZW50KCktPmFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5S
ZWNlaXZlZChkYXRhLCBmcmFtZUlELCBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpLT5yZW1vdGVQ
cm9jZXNzSUQoKSk7CiB9ICAgIAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bWFrZUZpcnN0UmVzcG9u
ZGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3SW1w
bC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlZpZXdJbXBsLmgKaW5kZXggM2U5
YTA5MzVhNzU5Li5hZjExY2U3ZjY2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
ZWJWaWV3SW1wbC5oCkBAIC00NDgsNyArNDQ4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SWdu
b3Jlc01vdXNlRHJhZ2dlZEV2ZW50cyhib29sKTsKICAgICBib29sIGlnbm9yZXNNb3VzZURyYWdn
ZWRFdmVudHMoKSBjb25zdCB7IHJldHVybiBtX2lnbm9yZXNNb3VzZURyYWdnZWRFdmVudHM7IH0K
IAotICAgIHZvaWQgc2V0QWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlbihOU0RhdGEgKik7Cisg
ICAgdm9pZCBzZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuKE5TRGF0YSAqLCBXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIHBpZF90KTsKICAgICB2b2lkIGFjY2Vzc2liaWxpdHlSZWdpc3Rl
clVJUHJvY2Vzc1Rva2VucygpOwogICAgIHZvaWQgdXBkYXRlUmVtb3RlQWNjZXNzaWJpbGl0eVJl
Z2lzdHJhdGlvbihib29sIHJlZ2lzdGVyUHJvY2Vzcyk7CiAgICAgaWQgYWNjZXNzaWJpbGl0eUZv
Y3VzZWRVSUVsZW1lbnQoKTsKQEAgLTkyOCw2ICs5MjgsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKICAgICBib29sIG1fYWxsb3dzTWFnbmlmaWNhdGlvbiB7IGZhbHNlIH07
CiAKICAgICBSZXRhaW5QdHI8TlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlFbGVtZW50PiBtX3JlbW90
ZUFjY2Vzc2liaWxpdHlDaGlsZDsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4g
bV9yZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVDYWNoZTsKIAogICAgIFJlZlB0cjxXZWJDb3JlOjpJ
bWFnZT4gbV9wcm9taXNlZEltYWdlOwogICAgIFN0cmluZyBtX3Byb21pc2VkRmlsZW5hbWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwubW0KaW5kZXggY2M4ZDNjN2Zm
MGM2Li43ZjM1NzcyYWI0ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmll
d0ltcGwubW0KQEAgLTM0NzksMTAgKzM0NzksMTIgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0SWdu
b3Jlc01vdXNlRHJhZ2dlZEV2ZW50cyhib29sIGlnbm9yZXNNb3VzZURyYWdnZWRFdmVudHMpCiAg
ICAgbV9pZ25vcmVzTW91c2VEcmFnZ2VkRXZlbnRzID0gaWdub3Jlc01vdXNlRHJhZ2dlZEV2ZW50
czsKIH0KIAotdm9pZCBXZWJWaWV3SW1wbDo6c2V0QWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tl
bihOU0RhdGEgKmRhdGEpCit2b2lkIFdlYlZpZXdJbXBsOjpzZXRBY2Nlc3NpYmlsaXR5V2ViUHJv
Y2Vzc1Rva2VuKE5TRGF0YSAqZGF0YSwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IHBpZF90IHBpZCkKIHsKLSAgICBtX3JlbW90ZUFjY2Vzc2liaWxpdHlDaGlsZCA9IGRhdGEubGVu
Z3RoID8gYWRvcHROUyhbW05TQWNjZXNzaWJpbGl0eVJlbW90ZVVJRWxlbWVudCBhbGxvY10gaW5p
dFdpdGhSZW1vdGVUb2tlbjpkYXRhXSkgOiBuaWw7Ci0gICAgdXBkYXRlUmVtb3RlQWNjZXNzaWJp
bGl0eVJlZ2lzdHJhdGlvbih0cnVlKTsKKyAgICBpZiAocGlkID09IG1fcGFnZS0+cHJvY2Vzcygp
LnByb2Nlc3NJRCgpKSB7CisgICAgICAgIG1fcmVtb3RlQWNjZXNzaWJpbGl0eUNoaWxkID0gZGF0
YS5sZW5ndGggPyBhZG9wdE5TKFtbTlNBY2Nlc3NpYmlsaXR5UmVtb3RlVUlFbGVtZW50IGFsbG9j
XSBpbml0V2l0aFJlbW90ZVRva2VuOmRhdGFdKSA6IG5pbDsKKyAgICAgICAgdXBkYXRlUmVtb3Rl
QWNjZXNzaWJpbGl0eVJlZ2lzdHJhdGlvbih0cnVlKTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViVmll
d0ltcGw6OnVwZGF0ZVJlbW90ZUFjY2Vzc2liaWxpdHlSZWdpc3RyYXRpb24oYm9vbCByZWdpc3Rl
clByb2Nlc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXgg
MzU5ODdhMWY4NWU0Li5lY2RkZWE5Zjk5ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxv
YWRlckNsaWVudC5jcHAKQEAgLTE4MDYsNiArMTgwNiwxMiBAQCB2b2lkIFdlYkxvY2FsRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JET01XaW5kb3dF
eHRlbgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgCitXZWJDb3JlOjpJbnRQb2ludCBXZWJM
b2NhbEZyYW1lTG9hZGVyQ2xpZW50OjphY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVPZmZzZXQoKQor
eworICAgIFJlZlB0ciB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAgIHJldHVybiB3ZWJQ
YWdlID8gd2ViUGFnZS0+YWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lT2Zmc2V0KCkgOiBJbnRQb2lu
dCgpOworfQorCiBSZW1vdGVBWE9iamVjdFJlZiBXZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50Ojph
Y2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkKIHsKICAgICBSZWZQdHIgd2ViUGFnZSA9IG1fZnJh
bWUtPnBhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDA2
NWNlNTUyZWEyMS4uY2NmYzk1Mjk5MTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJMb2NhbEZyYW1lTG9hZGVy
Q2xpZW50LmgKQEAgLTI0MCw2ICsyNDAsNyBAQCBwcml2YXRlOgogCiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgUmVtb3RlQVhPYmplY3RSZWYgYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpIGZp
bmFsOworICAgIFdlYkNvcmU6OkludFBvaW50IGFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNl
dCgpIGZpbmFsOwogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAgICAg
dm9pZCBzZXRBWElzb2xhdGVkVHJlZVJvb3QoV2ViQ29yZTo6QVhDb3JlT2JqZWN0KikgZmluYWw7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuY3BwCmluZGV4IDM4YjBmMzI1YWEx
Ni4uZDRkZjdlZjUyOWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUmVtb3RlRnJhbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVudC5jcHAKQEAgLTk2
LDYgKzk2LDQ0IEBAIFN0cmluZyBXZWJSZW1vdGVGcmFtZUNsaWVudDo6cmVuZGVyVHJlZUFzVGV4
dChzaXplX3QgYmFzZUluZGVudCwgT3B0aW9uU2V0PFJlbmRlCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAordm9pZCBXZWJSZW1vdGVGcmFtZUNsaWVudDo6dW5iaW5kUmVtb3RlQWNjZXNzaWJpbGl0
eUZyYW1lcyhpbnQgcHJvY2Vzc0lkZW50aWZpZXIpCit7CisjaWYgUExBVEZPUk0oQ09DT0EpCisg
ICAgLy8gTWFrZSBzdXJlIEFwcEtpdCBzeXN0ZW0ga25vd3MgYWJvdXQgb3VyIHJlbW90ZSBVSSBw
cm9jZXNzIHN0YXR1cyBub3cuCisgICAgaWYgKFJlZlB0ciBwYWdlID0gbV9mcmFtZS0+cGFnZSgp
KQorICAgICAgICBwYWdlLT5hY2Nlc3NpYmlsaXR5TWFuYWdlUmVtb3RlRWxlbWVudFN0YXR1cyhm
YWxzZSwgcHJvY2Vzc0lkZW50aWZpZXIpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocHJvY2Vz
c0lkZW50aWZpZXIpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViUmVtb3RlRnJhbWVDbGllbnQ6OnVw
ZGF0ZVJlbW90ZUZyYW1lQWNjZXNzaWJpbGl0eU9mZnNldChXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgV2ViQ29yZTo6SW50UG9pbnQgb2Zmc2V0KQoreworICAgIGlmIChSZWZQdHIg
cGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgcGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpVcGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxpdHlPZmZzZXQoZnJhbWVJRCwg
b2Zmc2V0KSk7Cit9CisKK3ZvaWQgV2ViUmVtb3RlRnJhbWVDbGllbnQ6OmJpbmRSZW1vdGVBY2Nl
c3NpYmlsaXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIGNvbnN0IHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhVG9rZW4s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBpbnQpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFJlZlB0ciBwYWdlID0gbV9mcmFtZS0+cGFnZSgp
OworICAgIGlmICghcGFnZSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6OnNwYW48
Y29uc3QgdWludDhfdD4geyB9LCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHBhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJp
bmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVzKHByb2Nlc3NJZGVudGlmaWVyLCBmcmFtZUlELCBk
YXRhVG9rZW4pKTsKKyAgICBpZiAoIXNlbmRSZXN1bHQuc3VjY2VlZGVkKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGF1dG8gW3Jlc3VsdFRva2VuLCBwcm9jZXNzSWRlbnRpZmllclJlc3VsdF0g
PSBzZW5kUmVzdWx0LnRha2VSZXBseSgpOworCisgICAgLy8gTWFrZSBzdXJlIEFwcEtpdCBzeXN0
ZW0ga25vd3MgYWJvdXQgb3VyIHJlbW90ZSBVSSBwcm9jZXNzIHN0YXR1cyBub3cuCisjaWYgUExB
VEZPUk0oQ09DT0EpCisgICAgcGFnZS0+YWNjZXNzaWJpbGl0eU1hbmFnZVJlbW90ZUVsZW1lbnRT
dGF0dXModHJ1ZSwgcHJvY2Vzc0lkZW50aWZpZXJSZXN1bHQpOworI2VuZGlmCisgICAgY29tcGxl
dGlvbkhhbmRsZXIocmVzdWx0VG9rZW4sIHByb2Nlc3NJZGVudGlmaWVyUmVzdWx0KTsKK30KKwog
dm9pZCBXZWJSZW1vdGVGcmFtZUNsaWVudDo6YnJvYWRjYXN0RnJhbWVSZW1vdmFsVG9PdGhlclBy
b2Nlc3NlcygpCiB7CiAgICAgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmJyb2FkY2FzdEZyYW1lUmVt
b3ZhbFRvT3RoZXJQcm9jZXNzZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVudC5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlbW90ZUZyYW1lQ2xpZW50LmgKaW5kZXgg
ZWYwZWRkMzAwNDhiLi5hYWI1ZDY2Njc0OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZW1vdGVGcmFtZUNsaWVudC5o
CkBAIC00OSw2ICs0OSwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1JlbW90
ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgc291cmNlLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9y
aWdpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHRhcmdldCwgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IHRhcmdldE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6TWVz
c2FnZVdpdGhNZXNzYWdlUG9ydHMmKSBmaW5hbDsKICAgICB2b2lkIGNoYW5nZUxvY2F0aW9uKFdl
YkNvcmU6OkZyYW1lTG9hZFJlcXVlc3QmJikgZmluYWw7CiAgICAgU3RyaW5nIHJlbmRlclRyZWVB
c1RleHQoc2l6ZV90IGJhc2VJbmRlbnQsIE9wdGlvblNldDxXZWJDb3JlOjpSZW5kZXJBc1RleHRG
bGFnPikgZmluYWw7CisgICAgdm9pZCBiaW5kUmVtb3RlQWNjZXNzaWJpbGl0eUZyYW1lcyhpbnQg
cHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgc3RkOjpzcGFuPGNv
bnN0IHVpbnQ4X3Q+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6c3Bhbjxjb25zdCB1aW50
OF90PiwgaW50KT4mJikgZmluYWw7CisgICAgdm9pZCB1bmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5
RnJhbWVzKGludCkgZmluYWw7CisgICAgdm9pZCB1cGRhdGVSZW1vdGVGcmFtZUFjY2Vzc2liaWxp
dHlPZmZzZXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpJbnRQb2ludCkgZmlu
YWw7CisKICAgICB2b2lkIGJyb2FkY2FzdEZyYW1lUmVtb3ZhbFRvT3RoZXJQcm9jZXNzZXMoKSBm
aW5hbDsKICAgICB2b2lkIGNsb3NlUGFnZSgpIGZpbmFsOwogICAgIHZvaWQgZm9jdXMoKSBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dl
YlBhZ2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dl
YlBhZ2VDb2NvYS5tbQppbmRleCBjZWZlMmUyMzQ1YWIuLmQ0ZTdjNmI1ZGNhZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2Nv
YS5tbQpAQCAtNzcsNiArNzcsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9VVElSZWdpc3RyeS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9VVElVdGlsaXRpZXMuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2Ev
TGF1bmNoU2VydmljZXNTUEkuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNBY2Nlc3NpYmls
aXR5U1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KICNpbXBv
cnQgPHd0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaD4KIApAQCAtNDA0LDEwICs0MDUsNTEgQEAg
dm9pZCBXZWJQYWdlOjpjbGVhckRpY3RhdGlvbkFsdGVybmF0aXZlcyhWZWN0b3I8RGljdGF0aW9u
Q29udGV4dD4mJiBjb250ZXh0cykKICAgICB9LCBEb2N1bWVudE1hcmtlcjo6VHlwZTo6RGljdGF0
aW9uQWx0ZXJuYXRpdmVzKTsKIH0KIAotdm9pZCBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5VHJhbnNm
ZXJSZW1vdGVUb2tlbihSZXRhaW5QdHI8TlNEYXRhPiByZW1vdGVUb2tlbikKK3ZvaWQgV2ViUGFn
ZTo6YWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oUmV0YWluUHRyPE5TRGF0YT4gcmVt
b3RlVG9rZW4sIEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogewogICAgIHN0ZDo6c3BhbiBkYXRh
VG9rZW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oW3JlbW90ZVRva2VuIGJ5dGVz
XSksIFtyZW1vdGVUb2tlbiBsZW5ndGhdKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihkYXRhVG9rZW4pKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2li
aWxpdHlUb2tlbihkYXRhVG9rZW4sIGZyYW1lSUQpKTsKK30KKwordm9pZCBXZWJQYWdlOjphY2Nl
c3NpYmlsaXR5TWFuYWdlUmVtb3RlRWxlbWVudFN0YXR1cyhib29sIHJlZ2lzdGVyU3RhdHVzLCBp
bnQgcHJvY2Vzc0lkZW50aWZpZXIpCit7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmIChyZWdp
c3RlclN0YXR1cykKKyAgICAgICAgW05TQWNjZXNzaWJpbGl0eVJlbW90ZVVJRWxlbWVudCByZWdp
c3RlclJlbW90ZVVJUHJvY2Vzc0lkZW50aWZpZXI6cHJvY2Vzc0lkZW50aWZpZXJdOworICAgIGVs
c2UKKyAgICAgICAgW05TQWNjZXNzaWJpbGl0eVJlbW90ZVVJRWxlbWVudCB1bnJlZ2lzdGVyUmVt
b3RlVUlQcm9jZXNzSWRlbnRpZmllcjpwcm9jZXNzSWRlbnRpZmllcl07CisjZWxzZQorICAgIFVO
VVNFRF9QQVJBTShyZWdpc3RlclN0YXR1cyk7CisgICAgVU5VU0VEX1BBUkFNKHByb2Nlc3NJZGVu
dGlmaWVyKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlBhZ2U6OmJpbmRSZW1vdGVBY2Nlc3NpYmls
aXR5RnJhbWVzKGludCBwcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhVG9rZW4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBpbnQpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIFJlZlB0ciB3ZWJGcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LndlYkZyYW1lKGZyYW1lSUQpOworICAgIGlmICghd2ViRnJhbWUpIHsKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0sIDAp
OworICAgIH0KKworICAgIFJlZlB0ciBjb3JlTG9jYWxGcmFtZSA9IHdlYkZyYW1lLT5jb3JlTG9j
YWxGcmFtZSgpOworICAgIGlmICghY29yZUxvY2FsRnJhbWUpIHsKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0sIDApOwor
ICAgIH0KKworICAgIGF1dG8qIHJlbmRlcmVyID0gY29yZUxvY2FsRnJhbWUtPmNvbnRlbnRSZW5k
ZXJlcigpOworICAgIGlmICghcmVuZGVyZXIpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0sIDApOworICAgIH0KKwor
ICAgIHJlZ2lzdGVyUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5VG9rZW5zKHByb2Nlc3NJZGVudGlm
aWVyLCBkYXRhVG9rZW4pOworCisgICAgLy8gR2V0IG91ciByZW1vdGUgdG9rZW4gZGF0YSBhbmQg
c2VuZCBiYWNrIHRvIHRoZSBSZW1vdGVGcmFtZS4KKyAgICBhdXRvIHJlbW90ZVRva2VuID0gYWNj
ZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0YSgpOworICAgIHN0ZDo6c3BhbiByZW1vdGVEYXRhVG9r
ZW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oW3JlbW90ZVRva2VuIGJ5dGVzXSks
IFtyZW1vdGVUb2tlbiBsZW5ndGhdKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihyZW1vdGVEYXRh
VG9rZW4sIGdldHBpZCgpKTsKIH0KIAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDhiYjU4Yjk0YzQ1Yi4u
MTYzYmNiYWE1MjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcApAQCAtMTU0Myw2ICsxNTQzLDE2IEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1EaWRT
ZWxlY3RBbGwoKQogCiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKKyNpZiAhUExB
VEZPUk0oQ09DT0EpCit2b2lkIFdlYlBhZ2U6OmJpbmRSZW1vdGVBY2Nlc3NpYmlsaXR5RnJhbWVz
KGludCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBpbnQpPiYm
KQoreworfQorCit2b2lkIFdlYlBhZ2U6OnVwZGF0ZVJlbW90ZVBhZ2VBY2Nlc3NpYmlsaXR5T2Zm
c2V0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6SW50UG9pbnQpCit7Cit9Cisj
ZW5kaWYKKwogdm9pZCBXZWJQYWdlOjp1cGRhdGVFZGl0b3JTdGF0ZUFmdGVyTGF5b3V0SWZFZGl0
YWJpbGl0eUNoYW5nZWQoKQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXBkYXRlIEVkaXRv
clN0YXRlSXNDb250ZW50RWRpdGFibGUgdG8gdHJhY2sgd2hldGhlciB0aGUgc3RhdGUgaXMgcmlj
aGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggNjg5
ZjI1YTJlOWRlLi5lMDQ2NzJjNWU2YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKQEAgLTY3MSw2ICs2NzEsMTAgQEAgcHVibGljOgogICAgIHZvaWQgY2xl
YXJIaXN0b3J5KCk7CiAKICAgICB2b2lkIGFjY2Vzc2liaWxpdHlTZXR0aW5nc0RpZENoYW5nZSgp
OworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgYWNjZXNzaWJpbGl0eU1hbmFnZVJlbW90
ZUVsZW1lbnRTdGF0dXMoYm9vbCwgaW50KTsKKyNlbmRpZgorCiAgICAgdm9pZCBzY3JlZW5Qcm9w
ZXJ0aWVzRGlkQ2hhbmdlKCk7CiAKICAgICB2b2lkIHNjYWxlUGFnZShkb3VibGUgc2NhbGUsIGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBvcmlnaW4pOwpAQCAtMTA0NSw3ICsxMDQ5LDEwIEBAIHB1
YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZUFj
Y2Vzc2liaWxpdHkoKTsKICAgICB2b2lkIHJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRv
a2VucyhzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZWxlbWVudFRva2VuLCBzdGQ6OnNwYW48Y29u
c3QgdWludDhfdD4gd2luZG93VG9rZW4pOworICAgIHZvaWQgcmVnaXN0ZXJSZW1vdGVGcmFtZUFj
Y2Vzc2liaWxpdHlUb2tlbnMocGlkX3QsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Pik7CiAgICAg
V0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdCogYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgp
OworICAgIFdlYkNvcmU6OkludFBvaW50IGFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCgp
OworICAgIHZvaWQgY3JlYXRlTW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50KHBpZF90KTsKICNpZiBF
TkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQogICAgIHZvaWQgY2FjaGVBWFBvc2l0
aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKICAgICB2b2lkIGNhY2hlQVhTaXplKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmKTsKQEAgLTIwOTUsNyArMjEwMiw3IEBAIHByaXZhdGU6CiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCByZXF1ZXN0QWN0aXZlTm93UGxheWluZ1Nlc3Np
b25JbmZvKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwgV2ViQ29yZTo6Tm93UGxheWluZ0lu
Zm8mJik+JiYpOwogICAgIFJldGFpblB0cjxOU0RhdGE+IGFjY2Vzc2liaWxpdHlSZW1vdGVUb2tl
bkRhdGEoKSBjb25zdDsKLSAgICB2b2lkIGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2Vu
KFJldGFpblB0cjxOU0RhdGE+KTsKKyAgICB2b2lkIGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90
ZVRva2VuKFJldGFpblB0cjxOU0RhdGE+LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogI2Vu
ZGlmCiAKICAgICB2b2lkIHNldFNob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cyhib29s
IGRpc3BhdGNoKSB7IG1fc2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzID0gZGlzcGF0
Y2g7IH0KQEAgLTIyMDUsNiArMjIxMiw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJlbW90ZVBv
c3RNZXNzYWdlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBzb3VyY2UsIGNvbnN0IFN0cmluZyYg
c291cmNlT3JpZ2luLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgdGFyZ2V0LCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJiB0YXJnZXRPcmlnaW4sIGNvbnN0IFdl
YkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJik7CiAgICAgdm9pZCByZW5kZXJUcmVlQXNU
ZXh0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgc2l6ZV90IGJhc2VJbmRlbnQsIE9wdGlvblNl
dDxXZWJDb3JlOjpSZW5kZXJBc1RleHRGbGFnPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJp
bmcmJik+JiYpOworICAgIHZvaWQgYmluZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHBy
b2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHN0ZDo6c3Bhbjxjb25z
dCB1aW50OF90PiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6OnNwYW48Y29uc3QgdWludDhf
dD4sIGludCk+JiYpOworICAgIHZvaWQgdXBkYXRlUmVtb3RlUGFnZUFjY2Vzc2liaWxpdHlPZmZz
ZXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpJbnRQb2ludCk7CiAKICAgICB2
b2lkIHJlcXVlc3RUZXh0RXh0cmFjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVj
dD4mJiBjb2xsZWN0aW9uUmVjdEluUm9vdFZpZXcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
Q29yZTo6VGV4dEV4dHJhY3Rpb246Okl0ZW0mJik+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA4ZjZiZTYz
ZmE4MTMuLjJhMmMwODI5Mjk1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC00ODksNiArNDg5LDkgQEAgR2VuZXJh
dGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNF
ZGl0aW5nQ29tbWFuZFR5cGUKIAogICAgIENvcHlMaW5rVG9IaWdobGlnaHQoKQogCisgICAgQmlu
ZFJlbW90ZUFjY2Vzc2liaWxpdHlGcmFtZXMoaW50IHByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGFU
b2tlbikgLT4gKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiB0b2tlbiwgaW50IHByb2Nlc3NJZGVu
dGlmaWVyKSBTeW5jaHJvbm91cworICAgIFVwZGF0ZVJlbW90ZVBhZ2VBY2Nlc3NpYmlsaXR5T2Zm
c2V0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpJbnRQb2ludCBv
ZmZzZXQpOworCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgV2luZG93QW5kVmlld0ZyYW1lc0No
YW5nZWQoc3RydWN0IFdlYktpdDo6Vmlld1dpbmRvd0Nvb3JkaW5hdGVzIGNvb3JkaW5hdGVzKQog
ICAgIFNldE1haW5GcmFtZUlzU2Nyb2xsYWJsZShib29sIGlzU2Nyb2xsYWJsZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXgg
MTA0NDEwYzgyYzhjLi5hN2M4NjBkMDFmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0yNDMsMTIgKzI0MywxNSBAQCB2
b2lkIFdlYlBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6ZUFjY2Vzc2liaWxpdHkoKQogICAgIG1fbW9j
a0FjY2Vzc2liaWxpdHlFbGVtZW50ID0gYWRvcHROUyhbW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VP
YmplY3QgYWxsb2NdIGluaXRdKTsKICAgICBbbV9tb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgc2V0
V2ViUGFnZTp0aGlzXTsKIAotICAgIGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKGFj
Y2Vzc2liaWxpdHlSZW1vdGVUb2tlbkRhdGEoKSk7CisgICAgUmVmUHRyIGxvY2FsTWFpbkZyYW1l
ID0gZHluYW1pY0Rvd25jYXN0PExvY2FsRnJhbWU+KG1fcGFnZS0+bWFpbkZyYW1lKCkpOworICAg
IGlmIChsb2NhbE1haW5GcmFtZSkKKyAgICAgICAgYWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3Rl
VG9rZW4oYWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0YSgpLCBsb2NhbE1haW5GcmFtZS0+ZnJh
bWVJRCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybVJlaW5pdGlhbGl6ZSgpCiB7Ci0g
ICAgYWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oYWNjZXNzaWJpbGl0eVJlbW90ZVRv
a2VuRGF0YSgpKTsKKyAgICBSZWYgZnJhbWUgPSBDaGVja2VkUmVmKG1fcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCkpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBhY2Nlc3NpYmlsaXR5VHJhbnNm
ZXJSZW1vdGVUb2tlbihhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCksIGZyYW1lLT5mcmFt
ZUlEKCkpOwogfQogCiBSZXRhaW5QdHI8TlNEYXRhPiBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5UmVt
b3RlVG9rZW5EYXRhKCkgY29uc3QKQEAgLTY0NCw2ICs2NDcsMTYgQEAgTlNPYmplY3QgKldlYlBh
Z2U6OmFjY2Vzc2liaWxpdHlPYmplY3RGb3JNYWluRnJhbWVQbHVnaW4oKQogICAgIHJldHVybiBu
aWw7CiB9CiAgICAgCit2b2lkIFdlYlBhZ2U6OnVwZGF0ZVJlbW90ZVBhZ2VBY2Nlc3NpYmlsaXR5
T2Zmc2V0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6SW50UG9pbnQpCit7Cisg
ICAgLy8gRklYTUU6IEltcGxlbWVudAorfQorCit2b2lkIFdlYlBhZ2U6OnJlZ2lzdGVyUmVtb3Rl
RnJhbWVBY2Nlc3NpYmlsaXR5VG9rZW5zKHBpZF90LCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4p
Cit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudAorfQorCiB2b2lkIFdlYlBhZ2U6OnJlZ2lzdGVy
VUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VucyhzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZWxl
bWVudFRva2VuLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pCiB7CiAgICAgTlNEYXRhICplbGVt
ZW50VG9rZW5EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmVsZW1lbnRUb2tlbi5kYXRhKCkg
bGVuZ3RoOmVsZW1lbnRUb2tlbi5zaXplKCldOwpAQCAtNjYyLDYgKzY3NSwxMiBAQCB2b2lkIFdl
YlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZAogICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiB9CiAKK1dlYkNv
cmU6OkludFBvaW50IFdlYlBhZ2U6OmFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCgpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4geyB9OworfQorCiBXS0FjY2Vzc2li
aWxpdHlXZWJQYWdlT2JqZWN0KiBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkK
IHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFn
ZU9iamVjdEJhc2UuaAppbmRleCAzOWU5MGUzYzg5NWUuLjQ5NzAwNzBhNDU1ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdl
YlBhZ2VPYmplY3RCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmgKQEAgLTQ1LDYgKzQ1LDggQEAg
Y2xhc3MgQVhDb3JlT2JqZWN0OwogICAgIFdlYkNvcmU6OkludFNpemUgbV9zaXplIFdURl9HVUFS
REVEX0JZX0xPQ0sobV9jYWNoZUxvY2spOwogICAgIFRocmVhZFNhZmVXZWFrUHRyPFdlYkNvcmU6
OkFYQ29yZU9iamVjdD4gbV9pc29sYXRlZFRyZWVSb290OwogI2VuZGlmCisKKyAgICBXZWJDb3Jl
OjpJbnRQb2ludCBtX3JlbW90ZUZyYW1lT2Zmc2V0OwogICAgIFJldGFpblB0cjxpZD4gbV9wYXJl
bnQ7CiAgICAgYm9vbCBtX2hhc01haW5GcmFtZVBsdWdpbjsKIH0KQEAgLTU2LDkgKzU4LDExIEBA
IGNsYXNzIEFYQ29yZU9iamVjdDsKIC0gKHZvaWQpc2V0SXNvbGF0ZWRUcmVlUm9vdDooTmFrZWRQ
dHI8V2ViQ29yZTo6QVhDb3JlT2JqZWN0Pilyb290OwogI2VuZGlmCiAtICh2b2lkKXNldFJlbW90
ZVBhcmVudDooaWQpcGFyZW50OworLSAodm9pZClzZXRSZW1vdGVGcmFtZU9mZnNldDooV2ViQ29y
ZTo6SW50UG9pbnQpb2Zmc2V0OwogLSAodm9pZClzZXRIYXNNYWluRnJhbWVQbHVnaW46KGJvb2wp
aGFzUGx1Z2luOwogCiAtIChpZClhY2Nlc3NpYmlsaXR5Um9vdE9iamVjdFdyYXBwZXI7CiAtIChp
ZClhY2Nlc3NpYmlsaXR5Rm9jdXNlZFVJRWxlbWVudDsKKy0gKFdlYkNvcmU6OkludFBvaW50KWFj
Y2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldDsKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmpl
Y3RCYXNlLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNz
aWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tCmluZGV4IDZmOTk1NDVhZWJmNS4uYmVjOGQ3M2Zh
YTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tB
Y2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tCkBA
IC0zNiw5ICszNiwxMSBAQAogI2ltcG9ydCAiV0tTdHJpbmdDRi5oIgogI2ltcG9ydCA8V2ViQ29y
ZS9BWE9iamVjdENhY2hlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50Lmg+CisjaW1wb3J0
IDxXZWJDb3JlL0ZyYW1lVHJlZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbEZyYW1lLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0xvY2FsRnJhbWVWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2Uu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvUmVtb3RlRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2Ny
b2xsVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxiYXIuaD4KIApAQCAtNTcsMTEgKzU5
LDE3IEBAIG5hbWVzcGFjZSBheCA9IFdlYkNvcmU6OkFjY2Vzc2liaWxpdHk7CiAgICAgaWYgKCFw
YWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8qIGxvY2FsTWFpbkZyYW1l
ID0gZHluYW1pY0Rvd25jYXN0PFdlYkNvcmU6OkxvY2FsRnJhbWU+KHBhZ2UtPm1haW5GcmFtZSgp
KTsKLSAgICBpZiAoIWxvY2FsTWFpbkZyYW1lIHx8ICFsb2NhbE1haW5GcmFtZS0+ZG9jdW1lbnQo
KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKGF1dG8qIGxvY2FsTWFpbkZyYW1l
ID0gZHluYW1pY0Rvd25jYXN0PFdlYkNvcmU6OkxvY2FsRnJhbWU+KHBhZ2UtPm1haW5GcmFtZSgp
KSkgeworICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBsb2NhbE1haW5GcmFtZS0+ZG9jdW1l
bnQoKSkKKyAgICAgICAgICAgIHJldHVybiBkb2N1bWVudC0+YXhPYmplY3RDYWNoZSgpOworICAg
IH0gZWxzZSBpZiAoYXV0byogcmVtb3RlTWFpbkZyYW1lID0gZHluYW1pY0Rvd25jYXN0PFdlYkNv
cmU6OlJlbW90ZUZyYW1lPihwYWdlLT5tYWluRnJhbWUoKSkpIHsKKyAgICAgICAgYXV0byYgdHJl
ZSA9IHJlbW90ZU1haW5GcmFtZS0+dHJlZSgpOworICAgICAgICBhdXRvKiBmaXJzdEZyYW1lID0g
ZHluYW1pY0Rvd25jYXN0PFdlYkNvcmU6OkxvY2FsRnJhbWU+KHRyZWUuZmlyc3RDaGlsZCgpKTsK
KyAgICAgICAgYXV0byogZG9jdW1lbnQgPSBmaXJzdEZyYW1lID8gZmlyc3RGcmFtZS0+ZG9jdW1l
bnQoKSA6IG51bGxwdHI7CisgICAgICAgIHJldHVybiBkb2N1bWVudCA/IGRvY3VtZW50LT5heE9i
amVjdENhY2hlKCkgOiBudWxscHRyOworICAgIH0KIAotICAgIHJldHVybiBsb2NhbE1haW5GcmFt
ZS0+ZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpOworICAgIHJldHVybiBudWxscHRyOwogfQog
CiAtIChpZClhY2Nlc3NpYmlsaXR5UGx1Z2luT2JqZWN0CkBAIC0xNTIsNiArMTYwLDE3IEBAIG5h
bWVzcGFjZSBheCA9IFdlYkNvcmU6OkFjY2Vzc2liaWxpdHk7CiAgICAgbV9oYXNNYWluRnJhbWVQ
bHVnaW4gPSBoYXNQbHVnaW47CiB9CiAKKy0gKHZvaWQpc2V0UmVtb3RlRnJhbWVPZmZzZXQ6KFdl
YkNvcmU6OkludFBvaW50KW9mZnNldAoreworICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwor
ICAgIG1fcmVtb3RlRnJhbWVPZmZzZXQgPSBvZmZzZXQ7Cit9CisKKy0gKFdlYkNvcmU6OkludFBv
aW50KWFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldAoreworICAgIHJldHVybiBtX3JlbW90
ZUZyYW1lT2Zmc2V0OworfQorCiAtICh2b2lkKXNldFJlbW90ZVBhcmVudDooaWQpcGFyZW50CiB7
CiAgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IDk2ZWQ2NGFkYmNmZi4uNWY5
Yjg4MGM4MGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV2ViUGFnZU1hYy5tbQpAQCAtMTIzLDE2ICsxMjMsMTIgQEAgdm9pZCBXZWJQYWdlOjpwbGF0
Zm9ybUluaXRpYWxpemVBY2Nlc3NpYmlsaXR5KCkKICAgICAvLyBDdXJyZW50bHksIGl0IGlzIGFs
c28gbmVlZGVkIHRvIGFsbG9jYXRlIGFuZCBpbml0aWFsaXplIGFuIE5TQXBwbGljYXRpb24gb2Jq
ZWN0LgogICAgIFtOU0FwcGxpY2F0aW9uIF9hY2Nlc3NpYmlsaXR5SW5pdGlhbGl6ZV07CiAKLSAg
ICBhdXRvIG1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCA9IGFkb3B0TlMoW1tXS0FjY2Vzc2liaWxp
dHlXZWJQYWdlT2JqZWN0IGFsbG9jXSBpbml0XSk7Ci0KICAgICAvLyBHZXQgdGhlIHBpZCBmb3Ig
dGhlIHN0YXJ0aW5nIHByb2Nlc3MuCiAgICAgcGlkX3QgcGlkID0gV2ViQ29yZTo6cHJlc2VudGlu
Z0FwcGxpY2F0aW9uUElEKCk7Ci0gICAgaWYgKFttb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihhY2Nlc3NpYmlsaXR5U2V0UHJlc2VudGVyUHJvY2Vz
c0lkZW50aWZpZXI6KV0pCi0gICAgICAgIFsoaWQpbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50Lmdl
dCgpIGFjY2Vzc2liaWxpdHlTZXRQcmVzZW50ZXJQcm9jZXNzSWRlbnRpZmllcjpwaWRdOwotICAg
IFttb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgc2V0V2ViUGFnZTp0aGlzXTsKLSAgICBtX21vY2tB
Y2Nlc3NpYmlsaXR5RWxlbWVudCA9IFdURk1vdmUobW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50KTsK
LQotICAgIGFjY2Vzc2liaWxpdHlUcmFuc2ZlclJlbW90ZVRva2VuKGFjY2Vzc2liaWxpdHlSZW1v
dGVUb2tlbkRhdGEoKSk7CisgICAgY3JlYXRlTW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50KHBpZCk7
CisgICAgUmVmUHRyIGxvY2FsTWFpbkZyYW1lID0gZHluYW1pY0Rvd25jYXN0PExvY2FsRnJhbWU+
KG1fcGFnZS0+bWFpbkZyYW1lKCkpOworICAgIGlmIChsb2NhbE1haW5GcmFtZSkKKyAgICAgICAg
YWNjZXNzaWJpbGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oYWNjZXNzaWJpbGl0eVJlbW90ZVRva2Vu
RGF0YSgpLCBsb2NhbE1haW5GcmFtZS0+ZnJhbWVJRCgpKTsKIAogICAgIC8vIENsb3NlIE1hY2gg
Y29ubmVjdGlvbiB0byBMYXVuY2ggU2VydmljZXMuCiAjaWYgSEFWRShMU19TRVJWRVJfQ09OTkVD
VElPTl9TVEFUVVNfUkVMRUFTRV9OT1RJRklDQVRJT05TX01BU0spCkBAIC0xNDQsOSArMTQwLDIw
IEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplQWNjZXNzaWJpbGl0eSgpCiAgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmV2b2tlTGF1bmNoU2VydmljZXNTYW5kYm94RXh0ZW5z
aW9uKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6Y3JlYXRlTW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50
KHBpZF90IHBpZCkKK3sKKyAgICBhdXRvIG1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCA9IGFkb3B0
TlMoW1tXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0IGFsbG9jXSBpbml0XSk7CisKKyAgICBp
ZiAoW21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KGFjY2Vzc2liaWxpdHlTZXRQcmVzZW50ZXJQcm9jZXNzSWRlbnRpZmllcjopXSkKKyAgICAgICAg
WyhpZCltb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQuZ2V0KCkgYWNjZXNzaWJpbGl0eVNldFByZXNl
bnRlclByb2Nlc3NJZGVudGlmaWVyOnBpZF07CisgICAgW21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVu
dCBzZXRXZWJQYWdlOnRoaXNdOworICAgIG1fbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50ID0gV1RG
TW92ZShtb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQpOworfQorCiB2b2lkIFdlYlBhZ2U6OnBsYXRm
b3JtUmVpbml0aWFsaXplKCkKIHsKLSAgICBhY2Nlc3NpYmlsaXR5VHJhbnNmZXJSZW1vdGVUb2tl
bihhY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW5EYXRhKCkpOworICAgIFJlZiBmcmFtZSA9IG1fcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgYWNjZXNzaWJp
bGl0eVRyYW5zZmVyUmVtb3RlVG9rZW4oYWNjZXNzaWJpbGl0eVJlbW90ZVRva2VuRGF0YSgpLCBm
cmFtZS0+ZnJhbWVJRCgpKTsKIH0KIAogUmV0YWluUHRyPE5TRGF0YT4gV2ViUGFnZTo6YWNjZXNz
aWJpbGl0eVJlbW90ZVRva2VuRGF0YSgpIGNvbnN0CkBAIC00NjksMTIgKzQ3NiwyNyBAQCBib29s
IFdlYlBhZ2U6OnBlcmZvcm1Ob25FZGl0aW5nQmVoYXZpb3JGb3JTZWxlY3Rvcihjb25zdCBTdHJp
bmcmIHNlbGVjdG9yLCBLZXlibwogICAgIHJldHVybiBkaWRQZXJmb3JtQWN0aW9uOwogfQogCit2
b2lkIFdlYlBhZ2U6OnVwZGF0ZVJlbW90ZVBhZ2VBY2Nlc3NpYmlsaXR5T2Zmc2V0KFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpJbnRQb2ludCBvZmZzZXQpCit7Cisg
ICAgW2FjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSBzZXRSZW1vdGVGcmFtZU9mZnNldDpvZmZz
ZXRdOworfQorCit2b2lkIFdlYlBhZ2U6OnJlZ2lzdGVyUmVtb3RlRnJhbWVBY2Nlc3NpYmlsaXR5
VG9rZW5zKHBpZF90IHBpZCwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGVsZW1lbnRUb2tlbikK
K3sKKyAgICBOU0RhdGEgKmVsZW1lbnRUb2tlbkRhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6
ZWxlbWVudFRva2VuLmRhdGEoKSBsZW5ndGg6ZWxlbWVudFRva2VuLnNpemUoKV07CisgICAgYXV0
byByZW1vdGVFbGVtZW50ID0gZWxlbWVudFRva2VuRGF0YS5sZW5ndGggPyBhZG9wdE5TKFtbTlNB
Y2Nlc3NpYmlsaXR5UmVtb3RlVUlFbGVtZW50IGFsbG9jXSBpbml0V2l0aFJlbW90ZVRva2VuOmVs
ZW1lbnRUb2tlbkRhdGFdKSA6IG5pbDsKKworICAgIGNyZWF0ZU1vY2tBY2Nlc3NpYmlsaXR5RWxl
bWVudChwaWQpOworICAgIFthY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkgc2V0UmVtb3RlUGFy
ZW50OnJlbW90ZUVsZW1lbnQuZ2V0KCldOworfQorCiB2b2lkIFdlYlBhZ2U6OnJlZ2lzdGVyVUlQ
cm9jZXNzQWNjZXNzaWJpbGl0eVRva2VucyhzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZWxlbWVu
dFRva2VuLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gd2luZG93VG9rZW4pCiB7CiAgICAgTlNE
YXRhICplbGVtZW50VG9rZW5EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmVsZW1lbnRUb2tl
bi5kYXRhKCkgbGVuZ3RoOmVsZW1lbnRUb2tlbi5zaXplKCldOwogICAgIE5TRGF0YSAqd2luZG93
VG9rZW5EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOndpbmRvd1Rva2VuLmRhdGEoKSBsZW5n
dGg6d2luZG93VG9rZW4uc2l6ZSgpXTsKICAgICBhdXRvIHJlbW90ZUVsZW1lbnQgPSBlbGVtZW50
VG9rZW5EYXRhLmxlbmd0aCA/IGFkb3B0TlMoW1tOU0FjY2Vzc2liaWxpdHlSZW1vdGVVSUVsZW1l
bnQgYWxsb2NdIGluaXRXaXRoUmVtb3RlVG9rZW46ZWxlbWVudFRva2VuRGF0YV0pIDogbmlsOwog
ICAgIGF1dG8gcmVtb3RlV2luZG93ID0gd2luZG93VG9rZW5EYXRhLmxlbmd0aCA/IGFkb3B0TlMo
W1tOU0FjY2Vzc2liaWxpdHlSZW1vdGVVSUVsZW1lbnQgYWxsb2NdIGluaXRXaXRoUmVtb3RlVG9r
ZW46d2luZG93VG9rZW5EYXRhXSkgOiBuaWw7CisKICAgICBbcmVtb3RlRWxlbWVudCBzZXRXaW5k
b3dVSUVsZW1lbnQ6cmVtb3RlV2luZG93LmdldCgpXTsKICAgICBbcmVtb3RlRWxlbWVudCBzZXRU
b3BMZXZlbFVJRWxlbWVudDpyZW1vdGVXaW5kb3cuZ2V0KCldOwogCkBAIC01MTYsNiArNTM4LDEx
IEBAIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QqIFdlYlBhZ2U6OmFjY2Vzc2liaWxpdHlS
ZW1vdGVPYmplY3QoKQogICAgIHJldHVybiBtX21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudC5nZXQo
KTsKIH0KIAorV2ViQ29yZTo6SW50UG9pbnQgV2ViUGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90ZUZy
YW1lT2Zmc2V0KCkKK3sKKyAgICByZXR1cm4gW21fbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50IGFj
Y2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldF07Cit9CisKICNpZiBFTkFCTEUoQUNDRVNTSUJJ
TElUWV9JU09MQVRFRF9UUkVFKQogdm9pZCBXZWJQYWdlOjpjYWNoZUFYUG9zaXRpb24oY29uc3Qg
V2ViQ29yZTo6RmxvYXRQb2ludCYgcG9pbnQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAKaW5kZXggNWJjNTZmNDI3Zjc4Li5mODgzYWEyNjI2ZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTE1NzEsNiArMTU3MSwxMCBAQCB2b2lk
IFdlYlByb2Nlc3M6OnVwZGF0ZUNQVU1vbml0b3JTdGF0ZShDUFVNb25pdG9yVXBkYXRlUmVhc29u
KQogewogfQogCit2b2lkIFdlYlByb2Nlc3M6OmJpbmRBY2Nlc3NpYmlsaXR5RnJhbWVXaXRoRGF0
YShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PikKK3sK
K30KKwogI2VuZGlmCiAKIHZvaWQgV2ViUHJvY2Vzczo6cGFnZUFjdGl2aXR5U3RhdGVEaWRDaGFu
Z2UoUGFnZUlkZW50aWZpZXIsIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlPiBjaGFu
Z2VkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggYjBkOTA0NWE4MDgy
Li4wMTIwZTQ1NWJlZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAt
NjYsNiArNjYsOSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2NyZWVuUHJvcGVydGllcy5oPgogI2lu
Y2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAjaW5jbHVkZSA8d3RmL01hY2hTZW5kUmlnaHQu
aD4KKworT0JKQ19DTEFTUyBOU011dGFibGVEaWN0aW9uYXJ5OworCiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKEdUSykKQEAgLTg4LDYgKzkxLDcgQEAKICNpbmNsdWRlICJXZWJTUUxpdGVEYXRhYmFz
ZVRyYWNrZXIuaCIKICNlbmRpZgogCisKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgT2JqZWN0Owog
fQpAQCAtNTE1LDYgKzUxOSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybVNldENhY2hl
TW9kZWwoQ2FjaGVNb2RlbCk7CiAKICAgICB2b2lkIHNldEVuaGFuY2VkQWNjZXNzaWJpbGl0eShi
b29sKTsKKyAgICB2b2lkIGJpbmRBY2Nlc3NpYmlsaXR5RnJhbWVXaXRoRGF0YShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Pik7CiAKICAgICB2b2lkIHN0
YXJ0TWVtb3J5U2FtcGxlcihTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgY29uc3QgU3RyaW5n
JiwgY29uc3QgZG91YmxlKTsKICAgICB2b2lkIHN0b3BNZW1vcnlTYW1wbGVyKCk7CkBAIC04MzEs
NiArODM2LDcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBIYXNoQ291bnRl
ZFNldDxTdHJpbmc+IG1fcGVuZGluZ1Bhc3RlYm9hcmRXcml0ZUNvdW50czsKICAgICBzdGQ6Om9w
dGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IG1fYXVkaXRUb2tlbkZvclNlbGY7CisgICAgUmV0YWluUHRy
PE5TTXV0YWJsZURpY3Rpb25hcnk+IG1fYWNjZXNzaWJpbGl0eVJlbW90ZUZyYW1lVG9rZW5DYWNo
ZTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA5OWI0MDJhZjExY2EuLmQ3
NzVmZTdkMzhkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KQEAgLTY5LDYgKzY5LDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdh
Y3lSZWNlaXZlciBOb3RSZWZDb3VudGVkIHsKICAgICBTZXRUZXh0Q2hlY2tlclN0YXRlKHN0cnVj
dCBXZWJLaXQ6OlRleHRDaGVja2VyU3RhdGUgdGV4dENoZWNrZXJTdGF0ZSkKIAogICAgIFNldEVu
aGFuY2VkQWNjZXNzaWJpbGl0eShib29sIGZsYWcpCisgICAgQmluZEFjY2Vzc2liaWxpdHlGcmFt
ZVdpdGhEYXRhKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdGQ6OnNwYW48Y29u
c3QgdWludDhfdD4gZGF0YSk7CiAKICAgICBHYXJiYWdlQ29sbGVjdEphdmFTY3JpcHRPYmplY3Rz
KCkKICAgICBTZXRKYXZhU2NyaXB0R2FyYmFnZUNvbGxlY3RvclRpbWVyRW5hYmxlZChib29sIGVu
YWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9j
ZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0Nv
Y29hLm1tCmluZGV4IGNlNzBkYzBkNjVhYi4uOGYyZDVkMzQ3N2E5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KQEAgLTIxNiw2ICsy
MTYsMTYgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybVNldENhY2hlTW9kZWwoQ2FjaGVNb2Rl
bCkKIHsKIH0KIAordm9pZCBXZWJQcm9jZXNzOjpiaW5kQWNjZXNzaWJpbGl0eUZyYW1lV2l0aERh
dGEoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0ZDo6c3Bhbjxjb25zdCB1aW50
OF90PiBkYXRhKQoreworICAgIGlmICghbV9hY2Nlc3NpYmlsaXR5UmVtb3RlRnJhbWVUb2tlbkNh
Y2hlKQorICAgICAgICBtX2FjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZVRva2VuQ2FjaGUgPSBhZG9w
dE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOworCisgICAgYXV0byBmcmFt
ZUludCA9IGZyYW1lSUQub2JqZWN0KCkudG9VSW50NjQoKTsKKyAgICBOU0RhdGEgKm5zRGF0YSA9
IFtOU0RhdGEgZGF0YVdpdGhCeXRlczpkYXRhLmRhdGEoKSBsZW5ndGg6ZGF0YS5zaXplKCldOwor
ICAgIFttX2FjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZVRva2VuQ2FjaGUgc2V0T2JqZWN0Om5zRGF0
YSBmb3JLZXk6QChmcmFtZUludCldOworfQorCiBpZCBXZWJQcm9jZXNzOjphY2Nlc3NpYmlsaXR5
Rm9jdXNlZFVJRWxlbWVudCgpCiB7CiAgICAgYXV0byByZXRyaWV2ZUZvY3VzZWRVSUVsZW1lbnRG
cm9tTWFpblRocmVhZCA9IFtdICgpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDIx
ZTIxZjA4YmQ2NC4uYjRjZjI4MmMxOGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAg
LTIyNSw2ICsyMjUsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBSZW1vdGVBWE9iamVjdFJl
ZiBhY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkgZmluYWwgeyByZXR1cm4gMDsgfQorICAgIFdl
YkNvcmU6OkludFBvaW50IGFjY2Vzc2liaWxpdHlSZW1vdGVGcmFtZU9mZnNldCgpIGZpbmFsIHsg
cmV0dXJuIHsgfTsgfQogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAg
ICAgdm9pZCBzZXRBWElzb2xhdGVkVHJlZVJvb3QoV2ViQ29yZTo6QVhDb3JlT2JqZWN0KikgZmlu
YWwgeyB9CiAjZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>