<?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>88384</bug_id>
          
          <creation_ts>2012-06-05 18:19:09 -0700</creation_ts>
          <short_desc>[chromium] Certain settings in CCSettings could be global</short_desc>
          <delta_ts>2012-06-14 13:41:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>88934</dependson>
    
    <dependson>89060</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter>vollick</reporter>
          <assigned_to>vollick</assigned_to>
          <cc>abarth</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>tkent</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>642074</commentid>
    <comment_count>0</comment_count>
    <who name="">vollick</who>
    <bug_when>2012-06-05 18:19:09 -0700</bug_when>
    <thetext>Certain settings (e.g., enabling per-tile painting) could be made global. To accomplish this, CCSettings should be moved to its own file, the current CCSettings should be renamed CCLayerTreeSettings and retain only those settings that may vary from tab to tab. This will depend on a chromium patch to prepare for the API breakage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642075</commentid>
    <comment_count>1</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-06-05 18:23:28 -0700</bug_when>
    <thetext>+1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642089</commentid>
    <comment_count>2</comment_count>
      <attachid>145911</attachid>
    <who name="">vollick</who>
    <bug_when>2012-06-05 18:53:13 -0700</bug_when>
    <thetext>Created attachment 145911
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642090</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-05 18:54:53 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642107</commentid>
    <comment_count>4</comment_count>
      <attachid>145911</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-05 19:24:16 -0700</bug_when>
    <thetext>Comment on attachment 145911
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCSettings.cpp:53
&gt; +static const IntSize defaultTileSizeDefault = IntSize(256, 256);
&gt; +static IntSize s_defaultTileSize = defaultTileSizeDefault;

This smells like a static initializer - is it?  If so that&apos;s a no-no.  Perhaps we could use a lazy singleton pattern instead?

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:3483
&gt; +        CCSettings::setAcceleratedPaintingEnabled(page()-&gt;settings()-&gt;acceleratedDrawingEnabled());

I think this is (slightly) wrong - we shouldn&apos;t have every view clobbering the global settings.  Since this is exposed through WebKit API the embedder (chromium) should be making these decisions based on command line flags or whatnot before we even get to here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642707</commentid>
    <comment_count>5</comment_count>
      <attachid>146086</attachid>
    <who name="">vollick</who>
    <bug_when>2012-06-06 12:44:08 -0700</bug_when>
    <thetext>Created attachment 146086
Patch

(In reply to comment #4)
&gt; (From update of attachment 145911 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=145911&amp;action=review
&gt;
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCSettings.cpp:53
&gt; &gt; +static const IntSize defaultTileSizeDefault = IntSize(256, 256);
&gt; &gt; +static IntSize s_defaultTileSize = defaultTileSizeDefault;
&gt;
&gt; This smells like a static initializer - is it?  If so that&apos;s a no-no.  Perhaps we could use a lazy singleton pattern instead?
*blush* Fixed.
&gt;
&gt; &gt; Source/WebKit/chromium/src/WebViewImpl.cpp:3483
&gt; &gt; +        CCSettings::setAcceleratedPaintingEnabled(page()-&gt;settings()-&gt;acceleratedDrawingEnabled());
&gt;
&gt; I think this is (slightly) wrong - we shouldn&apos;t have every view clobbering the global settings.  Since this is exposed through WebKit API the embedder (chromium) should be making these decisions based on command line flags or whatnot before we even get to here.
Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642898</commentid>
    <comment_count>6</comment_count>
      <attachid>146086</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-06 15:36:47 -0700</bug_when>
    <thetext>Comment on attachment 146086
Patch

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

Getting there!

&gt; Source/WebCore/platform/graphics/chromium/cc/CCSettings.cpp:113
&gt; +    MutexLocker lock(m_mutex);

this is the suck :(  we query settings all the time, we shouldn&apos;t be taking a mutex hit each one!

i would define the interface as saying that the embedder is responsible for initializing these settings before the compositor starts running and they have to take care of the appropriate happens-before relationships.  one easy way to do this is to set everything before calling WebCompositor::initialize().  then you don&apos;t need any internal locking

&gt; Source/WebCore/platform/graphics/chromium/cc/CCSettings.cpp:199
&gt; +    if (s_instance)

looking at it more this seems a bit silly.  to avoid static initializers, we just need to avoid having any non-POD globals. the only settings we have are bools, ints, and IntSizes.  if we stored the IntSize as pairs of ints and converted them to IntSize at call time then they could all live as statics without any issue

&gt; Source/WebKit/chromium/public/WebCompositor.h:55
&gt; +    WEBKIT_EXPORT static bool acceleratedPaintingEnabled();

you need to document the rules for these settings. when can they be set? how long are they valid for? what is their relationship with initialize() / shutdown() ?

why do we have getters on these? does anyone use the WebCompositor interface for anything other than setting?

&gt; Source/WebKit/chromium/src/WebCompositorImpl.cpp:51
&gt; +    CCSettings::initialize();
&gt;      WebCompositorImpl::initialize(implThread);

it&apos;s unfortunate to require both</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642904</commentid>
    <comment_count>7</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-06-06 15:40:31 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCSettings.cpp:113
&gt; &gt; +    MutexLocker lock(m_mutex);
&gt; i would define the interface as saying that the embedder is responsible for initializing these settings before the compositor starts running and they have to take care of the appropriate happens-before relationships.  one easy way to do this is to set everything before calling WebCompositor::initialize().  then you don&apos;t need any internal locking

This is where having the public methods that affect CCSettings being on WebCompositor would be helpful.... that way you can basically say &quot;these can only be set before you call the initialize function.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642988</commentid>
    <comment_count>8</comment_count>
    <who name="">vollick</who>
    <bug_when>2012-06-06 17:18:01 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 146086 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=146086&amp;action=review
&gt; 
&gt; Getting there!
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCSettings.cpp:113
&gt; &gt; +    MutexLocker lock(m_mutex);
&gt; 
&gt; this is the suck :(  we query settings all the time, we shouldn&apos;t be taking a mutex hit each one!
&gt; 
&gt; i would define the interface as saying that the embedder is responsible for initializing these settings before the compositor starts running and they have to take care of the appropriate happens-before relationships.  one easy way to do this is to set everything before calling WebCompositor::initialize().  then you don&apos;t need any internal locking
&gt;

Looking at render_thread_impl.cc, we lazily initialize the WebCompositor in several spots, but we only have the preferences we need in order to initialize the global settings in one of them (when we create a view). This approach would require us to guarantee that the first time we try to initialize the WebCompositor is when we create a view which, given the lazy-initialization approach, is not currently not the case. We _can_ guarantee that the settings are in place before the creation of the first view. Would that be ok?


&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCSettings.cpp:199
&gt; &gt; +    if (s_instance)
&gt; 
&gt; looking at it more this seems a bit silly.  to avoid static initializers, we just need to avoid having any non-POD globals. the only settings we have are bools, ints, and IntSizes.  if we stored the IntSize as pairs of ints and converted them to IntSize at call time then they could all live as statics without any issue
Sounds good. I will do this.

&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebCompositor.h:55
&gt; &gt; +    WEBKIT_EXPORT static bool acceleratedPaintingEnabled();
&gt; 
&gt; you need to document the rules for these settings. when can they be set? how long are they valid for? what is their relationship with initialize() / shutdown() ?

Initialize and shutdown will be going away. The rules will be -- you can only start using the getters once you&apos;re done with the setters. And you can only use the setters on the main thread. Should I adjust the code to enforce this?

&gt; 
&gt; why do we have getters on these? does anyone use the WebCompositor interface for anything other than setting?

Will remove these.

&gt; 
&gt; &gt; Source/WebKit/chromium/src/WebCompositorImpl.cpp:51
&gt; &gt; +    CCSettings::initialize();
&gt; &gt;      WebCompositorImpl::initialize(implThread);
&gt; 
&gt; it&apos;s unfortunate to require both

CCSettings::initialize() should be going away.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643189</commentid>
    <comment_count>9</comment_count>
      <attachid>146191</attachid>
    <who name="">vollick</who>
    <bug_when>2012-06-06 21:37:32 -0700</bug_when>
    <thetext>Created attachment 146191
Patch

(In reply to comment #6)
&gt; (From update of attachment 146086 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=146086&amp;action=review
&gt;
&gt; Getting there!
&gt;
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCSettings.cpp:113
&gt; &gt; +    MutexLocker lock(m_mutex);
&gt;
&gt; this is the suck :(  we query settings all the time, we shouldn&apos;t be taking a mutex hit each one!
&gt;
&gt; i would define the interface as saying that the embedder is responsible for initializing these settings before the compositor starts running and they have to take care of the appropriate happens-before relationships.  one easy way to do this is to set everything before calling WebCompositor::initialize().  then you don&apos;t need any internal locking
Done.
&gt;
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCSettings.cpp:199
&gt; &gt; +    if (s_instance)
&gt;
&gt; looking at it more this seems a bit silly.  to avoid static initializers, we just need to avoid having any non-POD globals. the only settings we have are bools, ints, and IntSizes.  if we stored the IntSize as pairs of ints and converted them to IntSize at call time then they could all live as statics without any issue
Fixed.
&gt;
&gt; &gt; Source/WebKit/chromium/public/WebCompositor.h:55
&gt; &gt; +    WEBKIT_EXPORT static bool acceleratedPaintingEnabled();
&gt;
&gt; you need to document the rules for these settings. when can they be set? how long are they valid for? what is their relationship with initialize() / shutdown() ?
Done.
&gt;
&gt; why do we have getters on these? does anyone use the WebCompositor interface for anything other than setting?
Removed.
&gt;
&gt; &gt; Source/WebKit/chromium/src/WebCompositorImpl.cpp:51
&gt; &gt; +    CCSettings::initialize();
&gt; &gt;      WebCompositorImpl::initialize(implThread);
&gt;
&gt; it&apos;s unfortunate to require both
Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643420</commentid>
    <comment_count>10</comment_count>
      <attachid>146191</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-07 04:47:15 -0700</bug_when>
    <thetext>Comment on attachment 146191
Patch

Attachment 146191 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12919131</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643808</commentid>
    <comment_count>11</comment_count>
      <attachid>146191</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-07 12:46:17 -0700</bug_when>
    <thetext>Comment on attachment 146191
Patch

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

Still have one static initializer and this doesn&apos;t appear to quite compile, but otherwise I think this is looking good.  R- for now since we need another round but it&apos;s close.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCSettings.cpp:45
&gt; +static size_t s_maxPartialTextureUpdatesDefault = std::numeric_limits&lt;size_t&gt;::max();

hey guess what this is!  sadly, it&apos;s a static initializer. If you&apos;re on linux here&apos;s a way to test things like this:

$ cat test.cc
#include &lt;limits&gt;

int mybar = std::numeric_limits&lt;int&gt;::max();

int main() {
    return 0;
}
jamesr@jamesr:~$ g++ test.cc -o test -O2
jamesr@jamesr:~$ /path/to/chromium/checkout/src/tools/linux/dump-static-initializers.py test
mybar (initializer offset 0x4005d0 size 0xb)
  mybar

Found 1 static initializers in 1 files.


works with clang as well.

I&apos;d suggest just a really big number or perhaps the slightly uglier static_cast&lt;size_t&gt;(-1);

&gt; Source/WebCore/platform/graphics/chromium/cc/CCSettings.h:35
&gt; +    // Must be called on the main thread before WebCompostor::initialize.

Typo: Compostor.  We aren&apos;t turning layers into manure here :D

I think having one comment describing this would make more sense - and I&apos;d also group all the setters together at the bottom since most people looking at this 

It&apos;s a bit of a (conceptual) layering violation to have this refer to WebCompositor, that&apos;s a WebKit client API. I think the comment in WebCompositor.h is sufficient - alternately you could describe the invariants here in terms of other CC concepts

&gt; Source/WebKit/chromium/tests/CCLayerTreeHostTest.cpp:639
&gt; +        // For these tests, we will enable threaded animations.
&gt; +        WebCompositor::setAcceleratedAnimationEnabled(true);

For all of these tests?  Is this a change in behavior, or just shuffling logic around?

&gt; Source/WebKit/chromium/tests/CCTestCommon.h:33
&gt; +// If you have a test that modifies or uses global settings, keep an instance
&gt; +// of this class to ensure that you start and end with a clean slate.

Could we instead have WebCompositor::shutdown() reset the settings?  Tests that depend on these things should hopefully be calling ::initialize()/::shutdown() already - right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644634</commentid>
    <comment_count>12</comment_count>
      <attachid>146558</attachid>
    <who name="">vollick</who>
    <bug_when>2012-06-08 06:55:05 -0700</bug_when>
    <thetext>Created attachment 146558
Patch

(In reply to comment #11)
&gt; (From update of attachment 146191 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=146191&amp;action=review
&gt;
&gt; Still have one static initializer and this doesn&apos;t appear to quite compile, but otherwise I think this is looking good.  R- for now since we need another round but it&apos;s close.
&gt;
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCSettings.cpp:45
&gt; &gt; +static size_t s_maxPartialTextureUpdatesDefault = std::numeric_limits&lt;size_t&gt;::max();
&gt;
&gt; hey guess what this is!  sadly, it&apos;s a static initializer. If you&apos;re on linux here&apos;s a way to test things like this:
&gt;
&gt; $ cat test.cc
&gt; #include &lt;limits&gt;
&gt;
&gt; int mybar = std::numeric_limits&lt;int&gt;::max();
&gt;
&gt; int main() {
&gt;     return 0;
&gt; }
&gt; jamesr@jamesr:~$ g++ test.cc -o test -O2
&gt; jamesr@jamesr:~$ /path/to/chromium/checkout/src/tools/linux/dump-static-initializers.py test
&gt; mybar (initializer offset 0x4005d0 size 0xb)
&gt;   mybar
&gt;
&gt; Found 1 static initializers in 1 files.
&gt;
&gt;
&gt; works with clang as well.
&gt;
&gt; I&apos;d suggest just a really big number or perhaps the slightly uglier static_cast&lt;size_t&gt;(-1);
D&apos;oh! Fixed. (Thanks for the tip, too).
&gt;
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCSettings.h:35
&gt; &gt; +    // Must be called on the main thread before WebCompostor::initialize.
&gt;
&gt; Typo: Compostor.  We aren&apos;t turning layers into manure here :D
&gt;
&gt; I think having one comment describing this would make more sense - and I&apos;d also group all the setters together at the bottom since most people looking at this
&gt;
&gt; It&apos;s a bit of a (conceptual) layering violation to have this refer to WebCompositor, that&apos;s a WebKit client API. I think the comment in WebCompositor.h is sufficient - alternately you could describe the invariants here in terms of other CC concepts
I&apos;ve updated the comment, but I think I&apos;ve noticed a problem. in CCLayerTreeHost::initializeLayerRenderer, we update the global settings based on capabilities we get from the layer renderer. This could, I think, happen more than once per process. Is this an issue? If so, do you think it would be better if CCSettings held the &apos;requested&apos; settings, and CCLayerTreeSettings held the &apos;effective&apos; settings (based on the real capabilities of the machine)?
&gt;
&gt; &gt; Source/WebKit/chromium/tests/CCLayerTreeHostTest.cpp:639
&gt; &gt; +        // For these tests, we will enable threaded animations.
&gt; &gt; +        WebCompositor::setAcceleratedAnimationEnabled(true);
&gt;
&gt; For all of these tests?  Is this a change in behavior, or just shuffling logic around?
This is not a behavior change -- I just moved the spot where I applied the setting.
&gt;
&gt; &gt; Source/WebKit/chromium/tests/CCTestCommon.h:33
&gt; &gt; +// If you have a test that modifies or uses global settings, keep an instance
&gt; &gt; +// of this class to ensure that you start and end with a clean slate.
&gt;
&gt; Could we instead have WebCompositor::shutdown() reset the settings?  Tests that depend on these things should hopefully be calling ::initialize()/::shutdown() already - right?

Done. This won&apos;t work for all the tests, though. Some tests do use the settings, but don&apos;t initialize or shut down the WebCompositor. E.g., LayerRendererChromiumTest2.initializationDoesNotMakeSynchronousCalls.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644948</commentid>
    <comment_count>13</comment_count>
      <attachid>146558</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-08 12:44:01 -0700</bug_when>
    <thetext>Comment on attachment 146558
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:147
&gt; +    // Update settings based on capabilities that we got back from the renderer.

Ah yes, I think this is a (potential) problem - these capabilities are specific to the context used by this compositor instance, so I think it&apos;s (slightly) wrong to have them change global settings.  I say slightly because it would only matter if different contexts had different capabilities - it&apos;s really hard to think of a case where that would happen.

I could imagine these changing over time - for instance, on a dual-GPU system if we switched from one to the other I could imagine the maximum texture size changing.  Today if that happens we lose all contexts on the &quot;old&quot; device and then have to reinitialize them all.

Perhaps some of these really should be CCLayerTreeSettings - such as usingAcceleratedPainting, maxPartialTextureUpdates, maxUntiledLayerSize.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:150
&gt; +    CCSettings::setDefaultTileSize(IntSize(min(CCSettings::defaultTileSize().width(), m_proxy-&gt;layerRendererCapabilities().maxTextureSize),

It&apos;s a bit strange to set the default value based on a capability - but maybe this setting is just poorly named?  I think we can safely assume that the max texture size will always be &gt;=2k since that&apos;s required by DX9, so maybe we don&apos;t need this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645151</commentid>
    <comment_count>14</comment_count>
      <attachid>146666</attachid>
    <who name="">vollick</who>
    <bug_when>2012-06-08 17:32:57 -0700</bug_when>
    <thetext>Created attachment 146666
Patch

(In reply to comment #13)
&gt; (From update of attachment 146558 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=146558&amp;action=review
&gt;
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:147
&gt; &gt; +    // Update settings based on capabilities that we got back from the renderer.
&gt;
&gt; Ah yes, I think this is a (potential) problem - these capabilities are specific to the context used by this compositor instance, so I think it&apos;s (slightly) wrong to have them change global settings.  I say slightly because it would only matter if different contexts had different capabilities - it&apos;s really hard to think of a case where that would happen.
&gt;
&gt; I could imagine these changing over time - for instance, on a dual-GPU system if we switched from one to the other I could imagine the maximum texture size changing.  Today if that happens we lose all contexts on the &quot;old&quot; device and then have to reinitialize them all.
&gt;
&gt; Perhaps some of these really should be CCLayerTreeSettings - such as usingAcceleratedPainting, maxPartialTextureUpdates, maxUntiledLayerSize.
That sounds safe. I&apos;ve made these CCLayerTreeSettings.
&gt;
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:150
&gt; &gt; +    CCSettings::setDefaultTileSize(IntSize(min(CCSettings::defaultTileSize().width(), m_proxy-&gt;layerRendererCapabilities().maxTextureSize),
&gt;
&gt; It&apos;s a bit strange to set the default value based on a capability - but maybe this setting is just poorly named?  I think we can safely assume that the max texture size will always be &gt;=2k since that&apos;s required by DX9, so maybe we don&apos;t need this?
I&apos;m not sure about the name, but at first glance it seems reasonable to bound the default tile size by the maximum possible texture size.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645157</commentid>
    <comment_count>15</comment_count>
      <attachid>146666</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-08 17:43:55 -0700</bug_when>
    <thetext>Comment on attachment 146666
Patch

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

R=me.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCSettings.cpp:29
&gt; +#include &lt;limits&gt;

I think this #include is unused now

&gt; Source/WebKit/chromium/public/WebCompositor.h:32
&gt; +#include &quot;platform/WebSize.h&quot;

this appears to be unused

&gt; Source/WebKit/chromium/tests/CCTestCommon.h:2
&gt; + * Copyright (C) 2011 Google Inc. All rights reserved.

2012</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646078</commentid>
    <comment_count>16</comment_count>
      <attachid>146871</attachid>
    <who name="">vollick</who>
    <bug_when>2012-06-11 10:30:29 -0700</bug_when>
    <thetext>Created attachment 146871
=patch for landing

(In reply to comment #15)
&gt; (From update of attachment 146666 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=146666&amp;action=review
&gt;
&gt; R=me.
&gt;
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCSettings.cpp:29
&gt; &gt; +#include &lt;limits&gt;
&gt;
&gt; I think this #include is unused now
Removed.
&gt;
&gt; &gt; Source/WebKit/chromium/public/WebCompositor.h:32
&gt; &gt; +#include &quot;platform/WebSize.h&quot;
&gt;
&gt; this appears to be unused
Removed.
&gt;
&gt; &gt; Source/WebKit/chromium/tests/CCTestCommon.h:2
&gt; &gt; + * Copyright (C) 2011 Google Inc. All rights reserved.
&gt;
&gt; 2012
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646079</commentid>
    <comment_count>17</comment_count>
      <attachid>146871</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-11 10:31:11 -0700</bug_when>
    <thetext>Comment on attachment 146871
=patch for landing

=cq+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646159</commentid>
    <comment_count>18</comment_count>
      <attachid>146871</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-11 12:10:51 -0700</bug_when>
    <thetext>Comment on attachment 146871
=patch for landing

Rejecting attachment 146871 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
med &apos;setPartialSwapEnabled&apos;
Source/WebKit/chromium/webkit/glue/webpreferences.cc:372: error: &apos;class WebKit::WebSettings&apos; has no member named &apos;setPerTilePaintingEnabled&apos;
cc1plus: warnings being treated as errors
At global scope:
cc1plus: error: unrecognized command line option &quot;-Wno-narrowing&quot;
cc1plus: error: unrecognized command line option &quot;-Wno-narrowing&quot;
make: *** [out/Debug/obj.target/glue/Source/WebKit/chromium/webkit/glue/webpreferences.o] Error 1
make: *** Waiting for unfinished jobs....

Full output: http://queues.webkit.org/results/12938488</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646292</commentid>
    <comment_count>19</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-11 14:54:30 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 146871 [details])
&gt; Rejecting attachment 146871 [details] from commit-queue.
&gt; 
&gt; Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2
&gt; 
&gt; Last 500 characters of output:
&gt; med &apos;setPartialSwapEnabled&apos;
&gt; Source/WebKit/chromium/webkit/glue/webpreferences.cc:372: error: &apos;class WebKit::WebSettings&apos; has no member named &apos;setPerTilePaintingEnabled&apos;

Looks like you&apos;ll need to land some chromium-side changes first or add more guards.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646307</commentid>
    <comment_count>20</comment_count>
    <who name="">vollick</who>
    <bug_when>2012-06-11 15:08:38 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #18)
&gt; &gt; (From update of attachment 146871 [details] [details])
&gt; &gt; Rejecting attachment 146871 [details] [details] from commit-queue.
&gt; &gt; 
&gt; &gt; Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2
&gt; &gt; 
&gt; &gt; Last 500 characters of output:
&gt; &gt; med &apos;setPartialSwapEnabled&apos;
&gt; &gt; Source/WebKit/chromium/webkit/glue/webpreferences.cc:372: error: &apos;class WebKit::WebSettings&apos; has no member named &apos;setPerTilePaintingEnabled&apos;
&gt; 
&gt; Looks like you&apos;ll need to land some chromium-side changes first or add more guards.

Strange. The chromium side has landed and does include guards. Has it maybe not rolled?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646322</commentid>
    <comment_count>21</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-11 15:24:03 -0700</bug_when>
    <thetext>Check Source/WebKit/chromium/DEPS to see.  If it hasn&apos;t, please post a separate patch to roll that rev to the value you want and mark that as blocking this one (separate patch to avoid merge conflict hell).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648152</commentid>
    <comment_count>22</comment_count>
      <attachid>146871</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-13 09:46:35 -0700</bug_when>
    <thetext>Comment on attachment 146871
=patch for landing

Attachment 146871 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12951310</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648217</commentid>
    <comment_count>23</comment_count>
      <attachid>147355</attachid>
    <who name="">vollick</who>
    <bug_when>2012-06-13 10:27:54 -0700</bug_when>
    <thetext>Created attachment 147355
Patch

Fix DRT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648724</commentid>
    <comment_count>24</comment_count>
      <attachid>147355</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-13 20:16:04 -0700</bug_when>
    <thetext>Comment on attachment 147355
Patch

Clearing flags on attachment: 147355

Committed r120268: &lt;http://trac.webkit.org/changeset/120268&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648725</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-13 20:16:10 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648754</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-13 20:55:19 -0700</bug_when>
    <thetext>Re-opened since this is blocked by 89060</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649167</commentid>
    <comment_count>27</comment_count>
      <attachid>147587</attachid>
    <who name="">vollick</who>
    <bug_when>2012-06-14 07:39:18 -0700</bug_when>
    <thetext>Created attachment 147587
Patch

Fix DRT again.

Ensure that we enable/disable per tile painting only once before we initialize
the WebCompositor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649441</commentid>
    <comment_count>28</comment_count>
      <attachid>147587</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-14 13:41:17 -0700</bug_when>
    <thetext>Comment on attachment 147587
Patch

Clearing flags on attachment: 147587

Committed r120360: &lt;http://trac.webkit.org/changeset/120360&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649442</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-14 13:41:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145911</attachid>
            <date>2012-06-05 18:53:13 -0700</date>
            <delta_ts>2012-06-06 12:44:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88384-20120605215310.patch</filename>
            <type>text/plain</type>
            <size>66741</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5NTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA1Mjg3MjBjZTc1ODhh
NjI5NjE1NzUyZTJkZWJiM2Y2YzM1YmQ3ZjU2Li5kNDNiZTY4MjdiZTY4MjEyMTViYjIwMDJlNWRl
NTNiMTk1ODlhNzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNi0wNSAg
SWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IENlcnRhaW4gc2V0dGluZ3MgaW4gQ0NTZXR0aW5ncyBjb3VsZCBiZSBnbG9iYWwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4Mzg0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMv
V2ViTGF5ZXJUcmVlVmlldy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgIChTZXR0aW5n
cyk6CisKIDIwMTItMDYtMDUgIE1hcmsgUGlsZ3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFtDaHJvbWl1bV0gTW92ZSBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UgdG8g
UGxhdGZvcm0uaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDRkNTFiNTMxNDg4NDQzMTFkODFlZWU3YTFkMTFlNDA5
ODRjNGRjNzEuLjQ1Zjg1MGZlNzU4ZDRkZTEwMTFiYWZjOThiOGU3M2Q0NGVjNTEwYjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw4MSBAQAorMjAxMi0wNi0wNSAgSWFuIFZvbGxpY2sgIDx2b2xsaWNr
QGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIENlcnRhaW4gc2V0dGluZ3MgaW4g
Q0NTZXR0aW5ncyBjb3VsZCBiZSBnbG9iYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg4Mzg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoTm8gZnVuY3Rpb25hbGl0eSBjaGFuZ2Up
CisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudExheWVyQ2hyb21pdW06OmNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6YWRkQW5pbWF0aW9uKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVUaWxlU2l6ZUFuZFRpbGlu
Z09wdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1
Z1JlY3RIaXN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDRGVidWdSZWN0SGlzdG9yeTo6
ZW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0RlYnVnUmVjdEhpc3Rvcnk6OnNhdmVEZWJ1
Z1JlY3RzRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3RvcnkuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoQ0NEZWJ1Z1JlY3RIaXN0b3J5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDSGVhZHNV
cERpc3BsYXk6OmVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NIZWFkc1VwRGlzcGxheTo6
c2hvd1BsYXRmb3JtTGF5ZXJUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDSGVhZHNVcERpc3Bs
YXk6OnNob3dEZWJ1Z1JlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDSGVhZHNVcERpc3BsYXk6
OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NIZWFkc1VwRGlzcGxheTo6ZHJhd0h1ZENvbnRl
bnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDSGVhZHNVcERpc3BsYXk6OmRyYXdEZWJ1Z1JlY3Rz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNw
bGF5Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDSGVhZHNVcERpc3BsYXkpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OkNDTGF5ZXJUcmVlSG9zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmluaXRpYWxpemVMYXllclJlbmRlcmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6YnVmZmVyZWRVcGRhdGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6cmVxdWVzdFBhcnRpYWxUZXh0dXJlVXBkYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6YW5pbWF0ZUxheWVycyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZVNldHRpbmdzOjpDQ0xheWVyVHJlZVNldHRpbmdz
KToKKyAgICAgICAgKENDTGF5ZXJUcmVlU2V0dGluZ3MpOgorICAgICAgICAoQ0NMYXllclRyZWVI
b3N0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6c2V0dGluZ3MpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OkNDTGF5ZXJUcmVlSG9zdEltcGwp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6YW5pbWF0ZUxheWVycyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5oOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0SW1wbCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5oOgorICAgICAgICAoQ0NSZW5kZXJl
ckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlcmVyOjpzZXR0aW5ncyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTZXR0aW5ncy5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6Q0NTZXR0aW5nczo6YWNjZWxlcmF0ZWRQYWludGluZ0VuYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTZXR0aW5nczo6c2V0QWNjZWxlcmF0ZWRQYWludGlu
Z0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NldHRp
bmdzOjpwZXJUaWxlUGFpbnRpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2V0dGlu
Z3M6OnNldFBlclRpbGVQYWludGluZ0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTZXR0
aW5nczo6cGFydGlhbFN3YXBFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2V0dGluZ3M6
OnNldFBhcnRpYWxTd2FwRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NldHRpbmdzOjph
Y2NlbGVyYXRlZEFuaW1hdGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTZXR0aW5n
czo6c2V0QWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkND
U2V0dGluZ3M6OnJlZnJlc2hSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2V0dGluZ3M6OnNl
dFJlZnJlc2hSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2V0dGluZ3M6Om1heFBhcnRpYWxU
ZXh0dXJlVXBkYXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NldHRpbmdzOjpzZXRNYXhQYXJ0
aWFsVGV4dHVyZVVwZGF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTZXR0aW5nczo6ZGVmYXVs
dFRpbGVTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2V0dGluZ3M6OnNldERlZmF1bHRUaWxl
U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NldHRpbmdzOjptYXhVbnRpbGVkTGF5ZXJTaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2V0dGluZ3M6OnNldE1heFVudGlsZWRMYXllclNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NTZXR0aW5nczo6cmVzZXQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2V0dGluZ3MuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5o
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ1NldHRpbmdzKToKKwogMjAxMi0wNi0w
NSAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0Nh
aXJvXSBbT3BlbkdMXSBFbmFibGUgR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IGI2NjJkNzY1YzcxZTc4NDE4OThlYmI4ZmQxNWZiMGJhNmZi
ZjNkYTUuLjc5NzQ2N2MxNzE3YTVkNjdkZDlmMTk2NjIxN2NiYTdhMGYxMDUzYzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTItMDYtMDUgIElhbiBWb2xs
aWNrICA8dm9sbGlja0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBDZXJ0YWlu
IHNldHRpbmdzIGluIENDU2V0dGluZ3MgY291bGQgYmUgZ2xvYmFsCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODM4NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBz
cmMvV2ViTGF5ZXJUcmVlVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5nczo6b3BlcmF0b3IgQ0NMYXllclRyZWVTZXR0
aW5ncyk6CisgICAgICAgICogc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlld0ltcGw6OldlYkxheWVyVHJlZVZpZXdJbXBsKToKKyAg
ICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6V2ViVmlld0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0SXNBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhv
c3RJbXBsVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NMYXllclRyZWVIb3N0SW1w
bFRlc3Q6OkNDTGF5ZXJUcmVlSG9zdEltcGxUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpD
Q0xheWVyVHJlZUhvc3RJbXBsVGVzdDo6fkNDTGF5ZXJUcmVlSG9zdEltcGxUZXN0KToKKyAgICAg
ICAgKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpURVNU
X0YpOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwOgorICAgICAgICAo
V1RGOjpNb2NrTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZSk6CisgICAgICAgIChXVEY6Ok1vY2tM
YXllclRyZWVIb3N0SW1wbDo6TW9ja0xheWVyVHJlZUhvc3RJbXBsKToKKyAgICAgICAgKFdURjo6
TW9ja0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXVEY6Ok1vY2tMYXllclRyZWVI
b3N0OjpjcmVhdGVMYXllclRyZWVIb3N0SW1wbCk6CisgICAgICAgIChXVEY6Ok1vY2tMYXllclRy
ZWVIb3N0OjpNb2NrTGF5ZXJUcmVlSG9zdCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9z
dFRlc3Q6OnJ1blRlc3QpOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0VGVzdCk6CisgICAgICAg
IChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RBdG9taWNDb21taXQ6OkNDTGF5ZXJUcmVlSG9zdFRl
c3RBdG9taWNDb21taXQpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0QXRvbWlj
Q29tbWl0V2l0aFBhcnRpYWxVcGRhdGU6OkNDTGF5ZXJUcmVlSG9zdFRlc3RBdG9taWNDb21taXRX
aXRoUGFydGlhbFVwZGF0ZSk6CisgICAgICAgICogdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVt
VGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvTGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAg
ICAqIHRlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAgICAoVEVTVF9G
KToKKyAgICAgICAgKiB0ZXN0cy9UZXh0dXJlTGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAg
ICAqIHRlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorCiAyMDEyLTA2LTA1ICBNYXJr
IFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIE1v
dmUgY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlIHRvIFBsYXRmb3JtLmgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oIGIvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKaW5kZXggMjNk
MGQ2M2NlOWRkMjhhNWI1YmFkNzEyOGVhYTE0OWE5NzNiOWRlNi4uZWYwOWNjMGJkNzkwMTBkYzI0
ZTM1MzYzMTJiNTJlNjNjYzc1OWFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKQEAgLTI2LDYgKzI2LDggQEAKICNpZm5kZWYg
V2ViTGF5ZXJUcmVlVmlld19oCiAjZGVmaW5lIFdlYkxheWVyVHJlZVZpZXdfaAogCisjZGVmaW5l
IFdFQkxBWUVSVFJFRVZJRVdfSEFTX01JTklNQUxfU0VUVElOR1MgMQorCiAjaW5jbHVkZSAiV2Vi
Q29sb3IuaCIKICNpbmNsdWRlICJXZWJDb21tb24uaCIKICNpbmNsdWRlICJXZWJOb25Db3B5YWJs
ZS5oIgpAQCAtMzQsNyArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDQ0xh
eWVyVHJlZUhvc3Q7Ci1zdHJ1Y3QgQ0NTZXR0aW5nczsKK2NsYXNzIENDTGF5ZXJUcmVlU2V0dGlu
Z3M7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDksMzUgKzUxLDIxIEBAIGNsYXNzIFdl
YkxheWVyVHJlZVZpZXcgOiBwdWJsaWMgV2ViTm9uQ29weWFibGUgewogcHVibGljOgogICAgIHN0
cnVjdCBTZXR0aW5ncyB7CiAgICAgICAgIFNldHRpbmdzKCkKLSAgICAgICAgICAgIDogYWNjZWxl
cmF0ZVBhaW50aW5nKGZhbHNlKQotICAgICAgICAgICAgLCBmb3JjZVNvZnR3YXJlQ29tcG9zaXRp
bmcoZmFsc2UpCisgICAgICAgICAgICA6IGZvcmNlU29mdHdhcmVDb21wb3NpdGluZyhmYWxzZSkK
ICAgICAgICAgICAgICwgc2hvd0ZQU0NvdW50ZXIoZmFsc2UpCiAgICAgICAgICAgICAsIHNob3dQ
bGF0Zm9ybUxheWVyVHJlZShmYWxzZSkKICAgICAgICAgICAgICwgc2hvd1BhaW50UmVjdHMoZmFs
c2UpCi0gICAgICAgICAgICAsIHJlZnJlc2hSYXRlKDApCi0gICAgICAgICAgICAsIHBlclRpbGVQ
YWludGluZyhmYWxzZSkKLSAgICAgICAgICAgICwgcGFydGlhbFN3YXBFbmFibGVkKGZhbHNlKQot
ICAgICAgICAgICAgLCB0aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQoZmFsc2UpCi0gICAgICAgICAg
ICAsIGRlZmF1bHRUaWxlU2l6ZShXZWJTaXplKDI1NiwgMjU2KSkKLSAgICAgICAgICAgICwgbWF4
VW50aWxlZExheWVyU2l6ZShXZWJTaXplKDUxMiwgNTEyKSkKICAgICAgICAgICAgICwgZGV2aWNl
U2NhbGVGYWN0b3IoMSkKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgYm9vbCBhY2Nl
bGVyYXRlUGFpbnRpbmc7CiAgICAgICAgIGJvb2wgZm9yY2VTb2Z0d2FyZUNvbXBvc2l0aW5nOwog
ICAgICAgICBib29sIHNob3dGUFNDb3VudGVyOwogICAgICAgICBib29sIHNob3dQbGF0Zm9ybUxh
eWVyVHJlZTsKICAgICAgICAgYm9vbCBzaG93UGFpbnRSZWN0czsKLSAgICAgICAgZG91YmxlIHJl
ZnJlc2hSYXRlOwotICAgICAgICBib29sIHBlclRpbGVQYWludGluZzsKLSAgICAgICAgYm9vbCBw
YXJ0aWFsU3dhcEVuYWJsZWQ7Ci0gICAgICAgIGJvb2wgdGhyZWFkZWRBbmltYXRpb25FbmFibGVk
OwotICAgICAgICBXZWJTaXplIGRlZmF1bHRUaWxlU2l6ZTsKLSAgICAgICAgV2ViU2l6ZSBtYXhV
bnRpbGVkTGF5ZXJTaXplOwogICAgICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcjsKICNpZiBX
RUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICAgICAgb3BlcmF0b3IgV2ViQ29yZTo6Q0NTZXR0aW5n
cygpIGNvbnN0OworICAgICAgICBvcGVyYXRvciBXZWJDb3JlOjpDQ0xheWVyVHJlZVNldHRpbmdz
KCkgY29uc3Q7CiAjZW5kaWYKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggY2JlMmM0ZmMx
NTYyMTg4M2E5NjlhZmM2NmJlNTU3OGJmN2Q0OTVmZS4uYTNkYmQ4MzQzYmM0ZjZkN2NlZmRjZjU3
NTFiZDRkY2E3MWRmYjU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzc0Miw2ICszNzQyLDggQEAK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njb3BlZFRocmVh
ZFByb3h5LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuaCcsCisgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTZXR0aW5ncy5jcHAnLAorICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2V0dGluZ3MuaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NoYXJlZFF1YWRTdGF0
ZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Npbmds
ZVRocmVhZFByb3h5LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKaW5k
ZXggYWU4ZDMyMDhiZmJhYjhkN2FkZTk4MmE3ZDhhOTNhMmQ4M2VkN2RhZi4uNTAzZGUyZTM5M2Yx
MGZhOWQwZGQ5OTU5OGY4OWUyMzU2MjNlZGUzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNo
cm9taXVtLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJv
bWl1bS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3VwcG9ydC5oIgogI2luY2x1ZGUgImNjL0NDTGF5
ZXJUcmVlSG9zdC5oIgorI2luY2x1ZGUgImNjL0NDU2V0dGluZ3MuaCIKICNpbmNsdWRlIDxwdWJs
aWMvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIApAQCAtMTI1LDkg
KzEyNiw5IEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OmNyZWF0ZVRleHR1cmVVcGRhdGVy
SWZOZWVkZWQoKQogewogICAgIGlmIChtX3RleHR1cmVVcGRhdGVyKQogICAgICAgICByZXR1cm47
Ci0gICAgaWYgKGxheWVyVHJlZUhvc3QoKS0+c2V0dGluZ3MoKS5hY2NlbGVyYXRlUGFpbnRpbmcp
CisgICAgaWYgKENDU2V0dGluZ3M6OmFjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkKCkpCiAgICAg
ICAgIG1fdGV4dHVyZVVwZGF0ZXIgPSBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OmNyZWF0ZShDb250ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUobV9kZWxlZ2F0
ZSkpOwotICAgIGVsc2UgaWYgKGxheWVyVHJlZUhvc3QoKS0+c2V0dGluZ3MoKS5wZXJUaWxlUGFp
bnRpbmcpCisgICAgZWxzZSBpZiAoQ0NTZXR0aW5nczo6cGVyVGlsZVBhaW50aW5nRW5hYmxlZCgp
KQogICAgICAgICBtX3RleHR1cmVVcGRhdGVyID0gQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKENvbnRlbnRMYXllclBhaW50ZXI6OmNyZWF0ZShtX2RlbGVn
YXRlKSwgbGF5ZXJUcmVlSG9zdCgpLT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdN
YXBTdWIpOwogICAgIGVsc2UKICAgICAgICAgbV90ZXh0dXJlVXBkYXRlciA9IEJpdG1hcENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShDb250ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUo
bV9kZWxlZ2F0ZSksIGxheWVyVHJlZUhvc3QoKS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygp
LnVzaW5nTWFwU3ViKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggZjYxZmQzNWQ1MzAwMTQx
ZjJiMmZmMjZiODc2NGI4ZjYyZTAzZTIzZC4uNzM3OTFmZDYwODllYWJlYWNiYTFjZmE0NDFlMzJi
YWVlNGRhZjQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNp
bmNsdWRlICJjYy9DQ0xheWVyQW5pbWF0aW9uRGVsZWdhdGUuaCIKICNpbmNsdWRlICJjYy9DQ0xh
eWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgorI2luY2x1ZGUgImNj
L0NDU2V0dGluZ3MuaCIKICNpbmNsdWRlICJza2lhL2V4dC9wbGF0Zm9ybV9jYW52YXMuaCIKIAog
dXNpbmcgbmFtZXNwYWNlIHN0ZDsKQEAgLTYwMSwxMSArNjAyLDExIEBAIHZvaWQgTGF5ZXJDaHJv
bWl1bTo6c2V0VHJhbnNmb3JtRnJvbUFuaW1hdGlvbihjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgdHJhCiAKIGJvb2wgTGF5ZXJDaHJvbWl1bTo6YWRkQW5pbWF0aW9uKGNvbnN0IEtleWZy
YW1lVmFsdWVMaXN0JiB2YWx1ZXMsIGNvbnN0IEludFNpemUmIGJveFNpemUsIGNvbnN0IEFuaW1h
dGlvbiogYW5pbWF0aW9uLCBpbnQgYW5pbWF0aW9uSWQsIGludCBncm91cElkLCBkb3VibGUgdGlt
ZU9mZnNldCkKIHsKLSAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdCB8fCAhbV9sYXllclRyZWVIb3N0
LT5zZXR0aW5ncygpLnRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZCkKKyAgICBpZiAoIUNDU2V0dGlu
Z3M6OmFjY2VsZXJhdGVkQW5pbWF0aW9uRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBib29sIGFkZGVkQW5pbWF0aW9uID0gbV9sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIt
PmFkZEFuaW1hdGlvbih2YWx1ZXMsIGJveFNpemUsIGFuaW1hdGlvbiwgYW5pbWF0aW9uSWQsIGdy
b3VwSWQsIHRpbWVPZmZzZXQpOwotICAgIGlmIChhZGRlZEFuaW1hdGlvbikgeworICAgIGlmIChh
ZGRlZEFuaW1hdGlvbiAmJiBtX2xheWVyVHJlZUhvc3QpIHsKICAgICAgICAgbV9sYXllclRyZWVI
b3N0LT5kaWRBZGRBbmltYXRpb24oKTsKICAgICAgICAgc2V0TmVlZHNDb21taXQoKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCA4ZGU0NDljMDM0ZDA4
ZWQ1Mjc5N2ZjY2RjMmE1YjVmNTE0ZGIzNjc2Li5jMDI1MjY2MWE2YmE3OWFkYWQ2YmE4ZDNhZTdm
NzFmMDU4MzNmM2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAg
LTY0LDYgKzY0LDcgQEAKICNpbmNsdWRlICJjYy9DQ1JlbmRlclBhc3MuaCIKICNpbmNsdWRlICJj
Yy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDUmVuZGVyU3VyZmFjZUZp
bHRlcnMuaCIKKyNpbmNsdWRlICJjYy9DQ1NldHRpbmdzLmgiCiAjaW5jbHVkZSAiY2MvQ0NTb2xp
ZENvbG9yRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ1RleHR1cmVEcmF3UXVhZC5oIgogI2lu
Y2x1ZGUgImNjL0NDVGlsZURyYXdRdWFkLmgiCkBAIC0yNjgsNyArMjY5LDcgQEAgYm9vbCBMYXll
clJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemUoKQogCiAgICAgbV9jb250ZXh0LT5zZXRDb250
ZXh0TG9zdENhbGxiYWNrKENvbnRleHRMb3N0Q2FsbGJhY2tBZGFwdGVyOjpjcmVhdGUobV9jbGll
bnQpKTsKIAotICAgIGlmIChzZXR0aW5ncygpLmFjY2VsZXJhdGVQYWludGluZyAmJiBjb250ZXh0
U3VwcG9ydHNBY2NlbGVyYXRlZFBhaW50aW5nKG1fY29udGV4dC5nZXQoKSkpCisgICAgaWYgKEND
U2V0dGluZ3M6OmFjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkKCkgJiYgY29udGV4dFN1cHBvcnRz
QWNjZWxlcmF0ZWRQYWludGluZyhtX2NvbnRleHQuZ2V0KCkpKQogICAgICAgICBtX2NhcGFiaWxp
dGllcy51c2luZ0FjY2VsZXJhdGVkUGFpbnRpbmcgPSB0cnVlOwogCiAgICAgV2ViQ29yZTo6RXh0
ZW5zaW9uczNEKiBleHRlbnNpb25zID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCk7CkBAIC0y
NzYsNyArMjc3LDcgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemUoKQog
ICAgIGlmIChtX2NhcGFiaWxpdGllcy5jb250ZXh0SGFzQ2FjaGVkRnJvbnRCdWZmZXIpCiAgICAg
ICAgIGV4dGVuc2lvbnMtPmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9NSVVNX2Zyb250X2J1ZmZlcl9j
YWNoZWQiKTsKIAotICAgIG1fY2FwYWJpbGl0aWVzLnVzaW5nUGFydGlhbFN3YXAgPSBzZXR0aW5n
cygpLnBhcnRpYWxTd2FwRW5hYmxlZCAmJiBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfQ0hST01J
VU1fcG9zdF9zdWJfYnVmZmVyIik7CisgICAgbV9jYXBhYmlsaXRpZXMudXNpbmdQYXJ0aWFsU3dh
cCA9IENDU2V0dGluZ3M6OnBhcnRpYWxTd2FwRW5hYmxlZCgpICYmIGV4dGVuc2lvbnMtPnN1cHBv
cnRzKCJHTF9DSFJPTUlVTV9wb3N0X3N1Yl9idWZmZXIiKTsKICAgICBpZiAobV9jYXBhYmlsaXRp
ZXMudXNpbmdQYXJ0aWFsU3dhcCkKICAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgi
R0xfQ0hST01JVU1fcG9zdF9zdWJfYnVmZmVyIik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21p
dW0uY3BwCmluZGV4IDEyZTM3MTdjYTZkZmYxYzM4YWM5NGRiYjE3ZWU2YzY3ZmQwY2Q1MWUuLjA5
NDhkOTk0NDQ0NmFlMjE4OWU0OTUwOTY4NWQ4ZDA0MjIxZGQwMDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRM
YXllckNocm9taXVtLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIlRyYWNlRXZlbnQu
aCIKIAogI2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCisjaW5jbHVkZSAiY2MvQ0NTZXR0aW5n
cy5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1Rp
bGVkTGF5ZXJJbXBsLmgiCiAKQEAgLTExMSw5ICsxMTIsOCBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJv
bWl1bTo6dXBkYXRlVGlsZVNpemVBbmRUaWxpbmdPcHRpb24oKQogewogICAgIEFTU0VSVChsYXll
clRyZWVIb3N0KCkpOwogCi0gICAgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MgPSBsYXllclRy
ZWVIb3N0KCktPnNldHRpbmdzKCk7Ci0gICAgY29uc3QgSW50U2l6ZSYgZGVmYXVsdFRpbGVTaXpl
ID0gc2V0dGluZ3MuZGVmYXVsdFRpbGVTaXplOwotICAgIGNvbnN0IEludFNpemUmIG1heFVudGls
ZWRMYXllclNpemUgPSBzZXR0aW5ncy5tYXhVbnRpbGVkTGF5ZXJTaXplOworICAgIGNvbnN0IElu
dFNpemUmIGRlZmF1bHRUaWxlU2l6ZSA9IENDU2V0dGluZ3M6OmRlZmF1bHRUaWxlU2l6ZSgpOwor
ICAgIGNvbnN0IEludFNpemUmIG1heFVudGlsZWRMYXllclNpemUgPSBDQ1NldHRpbmdzOjptYXhV
bnRpbGVkTGF5ZXJTaXplKCk7CiAgICAgaW50IGxheWVyV2lkdGggPSBjb250ZW50Qm91bmRzKCku
d2lkdGgoKTsKICAgICBpbnQgbGF5ZXJIZWlnaHQgPSBjb250ZW50Qm91bmRzKCkuaGVpZ2h0KCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDRGVidWdSZWN0SGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3RvcnkuY3BwCmluZGV4IDNjODhkY2M0MDAz
YTY2OTE4OTNmNzViNTQ1ZmYwZDY0OTVkODg4MTEuLjE3ZDU5NDZlYzJlY2NkZWJhY2JhZjAzNDhm
ZjgxMDYyZjk4N2E0NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDRGVidWdSZWN0SGlzdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5LmNwcApA
QCAtMzgsMTIgKzM4LDEyIEBAIENDRGVidWdSZWN0SGlzdG9yeTo6Q0NEZWJ1Z1JlY3RIaXN0b3J5
KCkKIHsKIH0KIAotYm9vbCBDQ0RlYnVnUmVjdEhpc3Rvcnk6OmVuYWJsZWQoY29uc3QgQ0NTZXR0
aW5ncyYgc2V0dGluZ3MpCitib29sIENDRGVidWdSZWN0SGlzdG9yeTo6ZW5hYmxlZChjb25zdCBD
Q0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncykKIHsKICAgICByZXR1cm4gc2V0dGluZ3Muc2hv
d1BhaW50UmVjdHMgfHwgc2V0dGluZ3Muc2hvd1Byb3BlcnR5Q2hhbmdlZFJlY3RzIHx8IHNldHRp
bmdzLnNob3dTdXJmYWNlRGFtYWdlUmVjdHM7CiB9CiAKLXZvaWQgQ0NEZWJ1Z1JlY3RIaXN0b3J5
OjpzYXZlRGVidWdSZWN0c0ZvckN1cnJlbnRGcmFtZShDQ0xheWVySW1wbCogcm9vdExheWVyLCBj
b25zdCBWZWN0b3I8Q0NMYXllckltcGwqPiYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgY29uc3Qg
Q0NTZXR0aW5ncyYgc2V0dGluZ3MpCit2b2lkIENDRGVidWdSZWN0SGlzdG9yeTo6c2F2ZURlYnVn
UmVjdHNGb3JDdXJyZW50RnJhbWUoQ0NMYXllckltcGwqIHJvb3RMYXllciwgY29uc3QgVmVjdG9y
PENDTGF5ZXJJbXBsKj4mIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGNvbnN0IENDTGF5ZXJUcmVl
U2V0dGluZ3MmIHNldHRpbmdzKQogewogICAgIC8vIEZvciBub3csIGNsZWFyIGFsbCByZWN0cyBm
cm9tIHByZXZpb3VzIGZyYW1lcy4gSW4gdGhlIGZ1dHVyZSB3ZSBtYXkgd2FudCB0byBzdG9yZQog
ICAgIC8vIGFsbCBkZWJ1ZyByZWN0cyBmb3IgYSBoaXN0b3J5IG9mIG1hbnkgZnJhbWVzLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NE
ZWJ1Z1JlY3RIaXN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3RvcnkuaAppbmRleCA5M2RhMTA3YWRlNGZiNzc0OWFiMmQ1
Y2U3NDc1YTIyNmNiYjBlMTQ0Li5iYjNjZGI3OWQ1NzE4NDdiMjc2ZTk3YzgwZmQ2OGMxYWMyYzQ4
ZDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0RlYnVnUmVjdEhpc3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3RvcnkuaApAQCAtMzUsNyArMzUsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ0xheWVySW1wbDsKLXN0cnVjdCBDQ1Nl
dHRpbmdzOworc3RydWN0IENDTGF5ZXJUcmVlU2V0dGluZ3M7CiAKIC8vIFRoZXJlIGFyZSBjdXJy
ZW50bHkgdGhyZWUgdHlwZXMgb2YgZGVidWcgcmVjdHM6CiAvLwpAQCAtNjMsNyArNjMsNyBAQCBz
dHJ1Y3QgQ0NEZWJ1Z1JlY3QgewogCiAvLyBUaGlzIGNsYXNzIG1haW50YWlucyBhIGhpc3Rvcnkg
b2YgcmVjdHMgb2YgdmFyaW91cyB0eXBlcyB0aGF0IGNhbiBiZSB1c2VkCiAvLyBmb3IgZGVidWdn
aW5nIHB1cnBvc2VzLiBUaGUgb3ZlcmhlYWQgb2YgY29sbGVjdGluZyByZWN0cyBpcyBwZXJmb3Jt
ZWQgb25seSBpZgotLy8gdGhlIGFwcHJvcHJpYXRlIENDU2V0dGluZ3MgYXJlIGVuYWJsZWQuCisv
LyB0aGUgYXBwcm9wcmlhdGUgQ0NMYXllclRyZWVTZXR0aW5ncyBhcmUgZW5hYmxlZC4KIGNsYXNz
IENDRGVidWdSZWN0SGlzdG9yeSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NEZWJ1Z1Jl
Y3RIaXN0b3J5KTsKIHB1YmxpYzoKQEAgLTcyLDEwICs3MiwxMCBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBhZG9wdFB0cihuZXcgQ0NEZWJ1Z1JlY3RIaXN0b3J5KCkpOwogICAgIH0KIAotICAg
IGJvb2wgZW5hYmxlZChjb25zdCBDQ1NldHRpbmdzJik7CisgICAgYm9vbCBlbmFibGVkKGNvbnN0
IENDTGF5ZXJUcmVlU2V0dGluZ3MmKTsKIAogICAgIC8vIE5vdGU6IFNhdmluZyBkZWJ1ZyByZWN0
cyBtdXN0IGhhcHBlbiBiZWZvcmUgbGF5ZXJzJyBjaGFuZ2UgdHJhY2tpbmcgaXMgcmVzZXQuCi0g
ICAgdm9pZCBzYXZlRGVidWdSZWN0c0ZvckN1cnJlbnRGcmFtZShDQ0xheWVySW1wbCogcm9vdExh
eWVyLCBjb25zdCBWZWN0b3I8Q0NMYXllckltcGwqPiYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwg
Y29uc3QgQ0NTZXR0aW5ncyYpOworICAgIHZvaWQgc2F2ZURlYnVnUmVjdHNGb3JDdXJyZW50RnJh
bWUoQ0NMYXllckltcGwqIHJvb3RMYXllciwgY29uc3QgVmVjdG9yPENDTGF5ZXJJbXBsKj4mIHJl
bmRlclN1cmZhY2VMYXllckxpc3QsIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmKTsKIAogICAg
IGNvbnN0IFZlY3RvcjxDQ0RlYnVnUmVjdD4mIGRlYnVnUmVjdHMoKSB7IHJldHVybiBtX2RlYnVn
UmVjdHM7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcAppbmRleCAzNDg1YTQ4
YTRhYTQxNjhlZTBkMDQxYmU3ZDEwM2FiYmVjYTI1OTM1Li4xYmJjMDQ2ZTdhNTgyMWFiMGUwMzk5
NDZiNjBjODFhMGVjYzlhMjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcApA
QCAtNTIsMTcgKzUyLDE3IEBAIHZvaWQgQ0NIZWFkc1VwRGlzcGxheTo6c2V0Rm9udEF0bGFzKFBh
c3NPd25QdHI8Q0NGb250QXRsYXM+IGZvbnRBdGxhcykKICAgICBtX2ZvbnRBdGxhcyA9IGZvbnRB
dGxhczsKIH0KIAotYm9vbCBDQ0hlYWRzVXBEaXNwbGF5OjplbmFibGVkKGNvbnN0IENDU2V0dGlu
Z3MmIHNldHRpbmdzKSBjb25zdAorYm9vbCBDQ0hlYWRzVXBEaXNwbGF5OjplbmFibGVkKGNvbnN0
IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzKSBjb25zdAogewogICAgIHJldHVybiBzaG93
UGxhdGZvcm1MYXllclRyZWUoc2V0dGluZ3MpIHx8IHNldHRpbmdzLnNob3dGUFNDb3VudGVyIHx8
IHNob3dEZWJ1Z1JlY3RzKHNldHRpbmdzKTsKIH0KIAotYm9vbCBDQ0hlYWRzVXBEaXNwbGF5Ojpz
aG93UGxhdGZvcm1MYXllclRyZWUoY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MpIGNvbnN0Citi
b29sIENDSGVhZHNVcERpc3BsYXk6OnNob3dQbGF0Zm9ybUxheWVyVHJlZShjb25zdCBDQ0xheWVy
VHJlZVNldHRpbmdzJiBzZXR0aW5ncykgY29uc3QKIHsKICAgICByZXR1cm4gc2V0dGluZ3Muc2hv
d1BsYXRmb3JtTGF5ZXJUcmVlOwogfQogCi1ib29sIENDSGVhZHNVcERpc3BsYXk6OnNob3dEZWJ1
Z1JlY3RzKGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKSBjb25zdAorYm9vbCBDQ0hlYWRzVXBE
aXNwbGF5OjpzaG93RGVidWdSZWN0cyhjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5n
cykgY29uc3QKIHsKICAgICByZXR1cm4gc2V0dGluZ3Muc2hvd1BhaW50UmVjdHMgfHwgc2V0dGlu
Z3Muc2hvd1Byb3BlcnR5Q2hhbmdlZFJlY3RzIHx8IHNldHRpbmdzLnNob3dTdXJmYWNlRGFtYWdl
UmVjdHM7CiB9CkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgQ0NIZWFkc1VwRGlzcGxheTo6ZHJhdyhD
Q0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCkKICAgICBpZiAoIW1faHVkVGV4
dHVyZSkKICAgICAgICAgbV9odWRUZXh0dXJlID0gTWFuYWdlZFRleHR1cmU6OmNyZWF0ZShsYXll
clJlbmRlcmVyLT5pbXBsVGV4dHVyZU1hbmFnZXIoKSk7CiAKLSAgICBjb25zdCBDQ1NldHRpbmdz
JiBzZXR0aW5ncyA9IGxheWVyVHJlZUhvc3RJbXBsLT5zZXR0aW5ncygpOworICAgIGNvbnN0IEND
TGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzID0gbGF5ZXJUcmVlSG9zdEltcGwtPnNldHRpbmdz
KCk7CiAgICAgLy8gVXNlIGEgZnVsbHNjcmVlbiB0ZXh0dXJlIG9ubHkgaWYgd2UgbmVlZCB0by4u
LgogICAgIEludFNpemUgaHVkU2l6ZTsKICAgICBpZiAoc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKHNl
dHRpbmdzKSB8fCBzaG93RGVidWdSZWN0cyhzZXR0aW5ncykpIHsKQEAgLTEyOCw3ICsxMjgsNyBA
QCB2b2lkIENDSGVhZHNVcERpc3BsYXk6OmRyYXcoQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJU
cmVlSG9zdEltcGwpCiAgICAgbV9odWRUZXh0dXJlLT51bnJlc2VydmUoKTsKIH0KIAotdm9pZCBD
Q0hlYWRzVXBEaXNwbGF5OjpkcmF3SHVkQ29udGVudHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCwgY29uc3QgQ0NTZXR0aW5n
cyYgc2V0dGluZ3MsIGNvbnN0IEludFNpemUmIGh1ZFNpemUpCit2b2lkIENDSGVhZHNVcERpc3Bs
YXk6OmRyYXdIdWRDb250ZW50cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIENDTGF5ZXJUcmVl
SG9zdEltcGwqIGxheWVyVHJlZUhvc3RJbXBsLCBjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBz
ZXR0aW5ncywgY29uc3QgSW50U2l6ZSYgaHVkU2l6ZSkKIHsKICAgICBpZiAoc2hvd1BsYXRmb3Jt
TGF5ZXJUcmVlKHNldHRpbmdzKSkgewogICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29s
b3IoMCwgMCwgMCwgMTkyKSwgQ29sb3JTcGFjZURldmljZVJHQik7CkBAIC0yMjEsNyArMjIxLDcg
QEAgdm9pZCBDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3RlBTQ291bnRlclRleHQoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBDQ0ZyYW1lUmF0ZUMKICAgICAgICAgbV9mb250QXRsYXMtPmRyYXdUZXh0
KGNvbnRleHQsIFN0cmluZzo6Zm9ybWF0KCJGUFM6ICU0LjFmICsvLSAlMy4xZiIsIGF2ZXJhZ2VG
UFMsIHN0ZERldmlhdGlvbiksIEludFBvaW50KDEwLCBoZWlnaHQgLyAzKSwgSW50U2l6ZSh3aWR0
aCwgaGVpZ2h0KSk7CiB9CiAKLXZvaWQgQ0NIZWFkc1VwRGlzcGxheTo6ZHJhd0RlYnVnUmVjdHMo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBDQ0RlYnVnUmVjdEhpc3RvcnkqIGRlYnVnUmVjdEhp
c3RvcnksIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKQordm9pZCBDQ0hlYWRzVXBEaXNwbGF5
OjpkcmF3RGVidWdSZWN0cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIENDRGVidWdSZWN0SGlz
dG9yeSogZGVidWdSZWN0SGlzdG9yeSwgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGlu
Z3MpCiB7CiAgICAgY29uc3QgVmVjdG9yPENDRGVidWdSZWN0PiYgZGVidWdSZWN0cyA9IGRlYnVn
UmVjdEhpc3RvcnktPmRlYnVnUmVjdHMoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRl
YnVnUmVjdHMuc2l6ZSgpOyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuaAppbmRl
eCA0ODMxZTVkZDE4YzNlMTEyMWExOTJiOTlhNzRhZjFiYWNjZDJjZmFkLi5lMWNlOTNhNmMzZTkw
Y2IzNDQ1ZWI5N2QyZjYwZWUwNDQwZjRjNTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxh
eS5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIENDRnJhbWVSYXRlQ291bnRlcjsKIGNsYXNzIEND
TGF5ZXJUcmVlSG9zdEltcGw7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBNYW5hZ2Vk
VGV4dHVyZTsKLXN0cnVjdCBDQ1NldHRpbmdzOworc3RydWN0IENDTGF5ZXJUcmVlU2V0dGluZ3M7
CiAKIC8vIENsYXNzIHRoYXQgaGFuZGxlcyBkcmF3aW5nIG9mIGNvbXBvc2l0ZWQgcmVuZGVyIGxh
eWVycyB1c2luZyBHTC4KIGNsYXNzIENDSGVhZHNVcERpc3BsYXkgewpAQCAtNTEsMTkgKzUxLDE5
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Rm9udEF0bGFzKFBhc3NPd25QdHI8Q0NGb250QXRs
YXM+KTsKIAotICAgIGJvb2wgZW5hYmxlZChjb25zdCBDQ1NldHRpbmdzJikgY29uc3Q7CisgICAg
Ym9vbCBlbmFibGVkKGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmKSBjb25zdDsKICAgICB2b2lk
IGRyYXcoQ0NMYXllclRyZWVIb3N0SW1wbCopOwogCiBwcml2YXRlOgogICAgIENDSGVhZHNVcERp
c3BsYXkoKSB7IH07CiAKLSAgICB2b2lkIGRyYXdIdWRDb250ZW50cyhHcmFwaGljc0NvbnRleHQq
LCBDQ0xheWVyVHJlZUhvc3RJbXBsKiwgY29uc3QgQ0NTZXR0aW5ncyYsIGNvbnN0IEludFNpemUm
IGh1ZFNpemUpOworICAgIHZvaWQgZHJhd0h1ZENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCosIEND
TGF5ZXJUcmVlSG9zdEltcGwqLCBjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiwgY29uc3QgSW50
U2l6ZSYgaHVkU2l6ZSk7CiAgICAgdm9pZCBkcmF3RlBTQ291bnRlcihHcmFwaGljc0NvbnRleHQq
LCBDQ0ZyYW1lUmF0ZUNvdW50ZXIqLCBpbnQgdG9wLCBpbnQgaGVpZ2h0KTsKICAgICB2b2lkIGRy
YXdGUFNDb3VudGVyVGV4dChHcmFwaGljc0NvbnRleHQqLCBDQ0ZyYW1lUmF0ZUNvdW50ZXIqLCBp
bnQgdG9wLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwotICAgIHZvaWQgZHJhd0RlYnVnUmVjdHMo
R3JhcGhpY3NDb250ZXh0KiwgQ0NEZWJ1Z1JlY3RIaXN0b3J5KiwgY29uc3QgQ0NTZXR0aW5ncyYp
OworICAgIHZvaWQgZHJhd0RlYnVnUmVjdHMoR3JhcGhpY3NDb250ZXh0KiwgQ0NEZWJ1Z1JlY3RI
aXN0b3J5KiwgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYpOwogCi0gICAgYm9vbCBzaG93UGxh
dGZvcm1MYXllclRyZWUoY29uc3QgQ0NTZXR0aW5ncyYpIGNvbnN0OwotICAgIGJvb2wgc2hvd0Rl
YnVnUmVjdHMoY29uc3QgQ0NTZXR0aW5ncyYpIGNvbnN0OworICAgIGJvb2wgc2hvd1BsYXRmb3Jt
TGF5ZXJUcmVlKGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmKSBjb25zdDsKKyAgICBib29sIHNo
b3dEZWJ1Z1JlY3RzKGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmKSBjb25zdDsKIAogICAgIE93
blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV9odWRUZXh0dXJlOwogICAgIE93blB0cjxDQ0ZvbnRBdGxh
cz4gbV9mb250QXRsYXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCBmYTBl
YjY0YzM2NWIxOGRlMGQ5NjlmYzgzZTliNDgzNWEzODY5MzRhLi5hYmU3ZWRlZGEzYjMwNzBjN2E4
Mjk4MWFmYzliMzMzMTE1MmZhZjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAK
QEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaCIK
ICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NPY2Ns
dXNpb25UcmFja2VyLmgiCisjaW5jbHVkZSAiY2MvQ0NTZXR0aW5ncy5oIgogI2luY2x1ZGUgImNj
L0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZC5oIgogI2luY2x1
ZGUgImNjL0NDVGhyZWFkUHJveHkuaCIKQEAgLTU4LDcgKzU5LDcgQEAgYm9vbCBDQ0xheWVyVHJl
ZUhvc3Q6OmFueUxheWVyVHJlZUhvc3RJbnN0YW5jZUV4aXN0cygpCiAgICAgcmV0dXJuIG51bUxh
eWVyVHJlZUluc3RhbmNlcyA+IDA7CiB9CiAKLVBhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0PiBD
Q0xheWVyVHJlZUhvc3Q6OmNyZWF0ZShDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwgY29u
c3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MpCitQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdD4gQ0NM
YXllclRyZWVIb3N0OjpjcmVhdGUoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQsIGNvbnN0
IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzKQogewogICAgIE93blB0cjxDQ0xheWVyVHJl
ZUhvc3Q+IGxheWVyVHJlZUhvc3QgPSBhZG9wdFB0cihuZXcgQ0NMYXllclRyZWVIb3N0KGNsaWVu
dCwgc2V0dGluZ3MpKTsKICAgICBpZiAoIWxheWVyVHJlZUhvc3QtPmluaXRpYWxpemUoKSkKQEAg
LTY2LDcgKzY3LDcgQEAgUGFzc093blB0cjxDQ0xheWVyVHJlZUhvc3Q+IENDTGF5ZXJUcmVlSG9z
dDo6Y3JlYXRlKENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW4KICAgICByZXR1cm4gbGF5ZXJU
cmVlSG9zdC5yZWxlYXNlKCk7CiB9CiAKLUNDTGF5ZXJUcmVlSG9zdDo6Q0NMYXllclRyZWVIb3N0
KENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50LCBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5n
cykKK0NDTGF5ZXJUcmVlSG9zdDo6Q0NMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdENsaWVu
dCogY2xpZW50LCBjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncykKICAgICA6IG1f
Y29tcG9zaXRvcklkZW50aWZpZXIoLTEpCiAgICAgLCBtX2FuaW1hdGluZyhmYWxzZSkKICAgICAs
IG1fbmVlZHNBbmltYXRlTGF5ZXJzKGZhbHNlKQpAQCAtMTQxLDI1ICsxNDIsMjIgQEAgdm9pZCBD
Q0xheWVyVHJlZUhvc3Q6OmluaXRpYWxpemVMYXllclJlbmRlcmVyKCkKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIC8vIFVwZGF0ZSBtX3NldHRpbmdzIGJhc2VkIG9uIGNhcGFiaWxpdGll
cyB0aGF0IHdlIGdvdCBiYWNrIGZyb20gdGhlIHJlbmRlcmVyLgotICAgIG1fc2V0dGluZ3MuYWNj
ZWxlcmF0ZVBhaW50aW5nID0gbV9wcm94eS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLnVz
aW5nQWNjZWxlcmF0ZWRQYWludGluZzsKLQotICAgIC8vIFVwZGF0ZSBtX3NldHRpbmdzIGJhc2Vk
IG9uIHBhcnRpYWwgdXBkYXRlIGNhcGFiaWxpdHkuCi0gICAgbV9zZXR0aW5ncy5tYXhQYXJ0aWFs
VGV4dHVyZVVwZGF0ZXMgPSBtaW4obV9zZXR0aW5ncy5tYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMs
IG1fcHJveHktPm1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcygpKTsKLQogICAgIG1fY29udGVudHNU
ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoMCwgMCwgbV9wcm94eS0+bGF5
ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLm1heFRleHR1cmVTaXplKTsKIAorICAgIC8vIFVwZGF0
ZSBzZXR0aW5ncyBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgdGhhdCB3ZSBnb3QgYmFjayBmcm9tIHRo
ZSByZW5kZXJlci4KKyAgICBDQ1NldHRpbmdzOjpzZXRBY2NlbGVyYXRlZFBhaW50aW5nRW5hYmxl
ZChtX3Byb3h5LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdBY2NlbGVyYXRlZFBh
aW50aW5nKTsKKyAgICBDQ1NldHRpbmdzOjpzZXRNYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMobWlu
KENDU2V0dGluZ3M6Om1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcygpLCBtX3Byb3h5LT5tYXhQYXJ0
aWFsVGV4dHVyZVVwZGF0ZXMoKSkpOworICAgIENDU2V0dGluZ3M6OnNldERlZmF1bHRUaWxlU2l6
ZShJbnRTaXplKG1pbihDQ1NldHRpbmdzOjpkZWZhdWx0VGlsZVNpemUoKS53aWR0aCgpLCBtX3By
b3h5LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4VGV4dHVyZVNpemUpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbihDQ1NldHRpbmdzOjpkZWZh
dWx0VGlsZVNpemUoKS5oZWlnaHQoKSwgbV9wcm94eS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGll
cygpLm1heFRleHR1cmVTaXplKSkpOworICAgIENDU2V0dGluZ3M6OnNldE1heFVudGlsZWRMYXll
clNpemUoSW50U2l6ZShtaW4oQ0NTZXR0aW5nczo6bWF4VW50aWxlZExheWVyU2l6ZSgpLndpZHRo
KCksIG1fcHJveHktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbihDQ1Nl
dHRpbmdzOjptYXhVbnRpbGVkTGF5ZXJTaXplKCkuaGVpZ2h0KCksIG1fcHJveHktPmxheWVyUmVu
ZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSkpKTsKKwogICAgIC8vIEZJWE1FOiBU
aGlzIGlzIHRoZSBzYW1lIGFzIHNldENvbnRlbnRzTWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMs
IGJ1dAogICAgIC8vIHdlJ3JlIGluIHRoZSBtaWRkbGUgb2YgYSBjb21taXQgaGVyZSBhbmQgZG9u
J3Qgd2FudCB0byBmb3JjZSBhbm90aGVyLgogICAgIG1fbWVtb3J5QWxsb2NhdGlvbkJ5dGVzID0g
VGV4dHVyZU1hbmFnZXI6OmhpZ2hMaW1pdEJ5dGVzKGRldmljZVZpZXdwb3J0U2l6ZSgpKTsKICAg
ICBtX21lbW9yeUFsbG9jYXRpb25Jc0ZvckRpc3BsYXkgPSB0cnVlOwogCiAgICAgbV9sYXllclJl
bmRlcmVySW5pdGlhbGl6ZWQgPSB0cnVlOwotCi0gICAgbV9zZXR0aW5ncy5kZWZhdWx0VGlsZVNp
emUgPSBJbnRTaXplKG1pbihtX3NldHRpbmdzLmRlZmF1bHRUaWxlU2l6ZS53aWR0aCgpLCBtX3By
b3h5LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4VGV4dHVyZVNpemUpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW4obV9zZXR0aW5ncy5kZWZhdWx0
VGlsZVNpemUuaGVpZ2h0KCksIG1fcHJveHktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5t
YXhUZXh0dXJlU2l6ZSkpOwotICAgIG1fc2V0dGluZ3MubWF4VW50aWxlZExheWVyU2l6ZSA9IElu
dFNpemUobWluKG1fc2V0dGluZ3MubWF4VW50aWxlZExheWVyU2l6ZS53aWR0aCgpLCBtX3Byb3h5
LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4VGV4dHVyZVNpemUpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluKG1fc2V0dGluZ3MubWF4VW50
aWxlZExheWVyU2l6ZS5oZWlnaHQoKSwgbV9wcm94eS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGll
cygpLm1heFRleHR1cmVTaXplKSk7CiB9CiAKIENDTGF5ZXJUcmVlSG9zdDo6UmVjcmVhdGVSZXN1
bHQgQ0NMYXllclRyZWVIb3N0OjpyZWNyZWF0ZUNvbnRleHQoKQpAQCAtNjY0LDEyICs2NjIsMTIg
QEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnN0b3BSYXRlTGltaXRlcihHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCkKIAogYm9vbCBDQ0xheWVyVHJlZUhvc3Q6OmJ1ZmZlcmVkVXBkYXRlcygpCiB7
Ci0gICAgcmV0dXJuIG1fc2V0dGluZ3MubWF4UGFydGlhbFRleHR1cmVVcGRhdGVzICE9IG51bWVy
aWNfbGltaXRzPHNpemVfdD46Om1heCgpOworICAgIHJldHVybiBDQ1NldHRpbmdzOjptYXhQYXJ0
aWFsVGV4dHVyZVVwZGF0ZXMoKSAhPSBudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKTsKIH0K
IAogYm9vbCBDQ0xheWVyVHJlZUhvc3Q6OnJlcXVlc3RQYXJ0aWFsVGV4dHVyZVVwZGF0ZSgpCiB7
Ci0gICAgaWYgKG1fcGFydGlhbFRleHR1cmVVcGRhdGVSZXF1ZXN0cyA+PSBtX3NldHRpbmdzLm1h
eFBhcnRpYWxUZXh0dXJlVXBkYXRlcykKKyAgICBpZiAobV9wYXJ0aWFsVGV4dHVyZVVwZGF0ZVJl
cXVlc3RzID49IENDU2V0dGluZ3M6Om1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcygpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBtX3BhcnRpYWxUZXh0dXJlVXBkYXRlUmVxdWVzdHMrKzsK
QEAgLTY4Myw3ICs2ODEsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6ZGVsZXRlVGV4dHVyZUFm
dGVyQ29tbWl0KFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cgogCiB2b2lkIENDTGF5
ZXJUcmVlSG9zdDo6YW5pbWF0ZUxheWVycyhkb3VibGUgbW9ub3RvbmljVGltZSkKIHsKLSAgICBp
ZiAoIW1fc2V0dGluZ3MudGhyZWFkZWRBbmltYXRpb25FbmFibGVkIHx8ICFtX25lZWRzQW5pbWF0
ZUxheWVycykKKyAgICBpZiAoIUNDU2V0dGluZ3M6OmFjY2VsZXJhdGVkQW5pbWF0aW9uRW5hYmxl
ZCgpIHx8ICFtX25lZWRzQW5pbWF0ZUxheWVycykKICAgICAgICAgcmV0dXJuOwogCiAgICAgVFJB
Q0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVMYXllcnMiLCB0aGlzLCAwKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXggNDM0YWVjMjc0MjIwMWM1ZjZkNWI0OWNj
NTM3ZTE4MDM5YzJjODY0ZC4uNWM4NzgzZjg1ZGU2NGQ5ODJkYzc2ODUyNzU1MmNkZjRiYzQwZGNi
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTc0LDM5ICs3NCwyMyBAQCBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCB+Q0NMYXllclRyZWVIb3N0Q2xpZW50KCkgeyB9CiB9OwogCi1z
dHJ1Y3QgQ0NTZXR0aW5ncyB7Ci0gICAgQ0NTZXR0aW5ncygpCi0gICAgICAgICAgICA6IGFjY2Vs
ZXJhdGVQYWludGluZyhmYWxzZSkKLSAgICAgICAgICAgICwgZm9yY2VTb2Z0d2FyZUNvbXBvc2l0
aW5nKGZhbHNlKQorc3RydWN0IENDTGF5ZXJUcmVlU2V0dGluZ3MgeworICAgIENDTGF5ZXJUcmVl
U2V0dGluZ3MoKQorICAgICAgICAgICAgOiBmb3JjZVNvZnR3YXJlQ29tcG9zaXRpbmcoZmFsc2Up
CiAgICAgICAgICAgICAsIHNob3dGUFNDb3VudGVyKGZhbHNlKQogICAgICAgICAgICAgLCBzaG93
UGxhdGZvcm1MYXllclRyZWUoZmFsc2UpCiAgICAgICAgICAgICAsIHNob3dQYWludFJlY3RzKGZh
bHNlKQogICAgICAgICAgICAgLCBzaG93UHJvcGVydHlDaGFuZ2VkUmVjdHMoZmFsc2UpCiAgICAg
ICAgICAgICAsIHNob3dTdXJmYWNlRGFtYWdlUmVjdHMoZmFsc2UpCi0gICAgICAgICAgICAsIHJl
ZnJlc2hSYXRlKDApCi0gICAgICAgICAgICAsIHBlclRpbGVQYWludGluZyhmYWxzZSkKLSAgICAg
ICAgICAgICwgcGFydGlhbFN3YXBFbmFibGVkKGZhbHNlKQotICAgICAgICAgICAgLCB0aHJlYWRl
ZEFuaW1hdGlvbkVuYWJsZWQoZmFsc2UpCi0gICAgICAgICAgICAsIG1heFBhcnRpYWxUZXh0dXJl
VXBkYXRlcyhzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKQotICAgICAgICAgICAg
LCBkZWZhdWx0VGlsZVNpemUoSW50U2l6ZSgyNTYsIDI1NikpCi0gICAgICAgICAgICAsIG1heFVu
dGlsZWRMYXllclNpemUoSW50U2l6ZSg1MTIsIDUxMikpCiAgICAgICAgICAgICAsIGRldmljZVNj
YWxlRmFjdG9yKDEpCiAgICAgeyB9CiAKLSAgICBib29sIGFjY2VsZXJhdGVQYWludGluZzsKICAg
ICBib29sIGZvcmNlU29mdHdhcmVDb21wb3NpdGluZzsKICAgICBib29sIHNob3dGUFNDb3VudGVy
OwogICAgIGJvb2wgc2hvd1BsYXRmb3JtTGF5ZXJUcmVlOwogICAgIGJvb2wgc2hvd1BhaW50UmVj
dHM7CiAgICAgYm9vbCBzaG93UHJvcGVydHlDaGFuZ2VkUmVjdHM7CiAgICAgYm9vbCBzaG93U3Vy
ZmFjZURhbWFnZVJlY3RzOwotICAgIGRvdWJsZSByZWZyZXNoUmF0ZTsKLSAgICBib29sIHBlclRp
bGVQYWludGluZzsKLSAgICBib29sIHBhcnRpYWxTd2FwRW5hYmxlZDsKLSAgICBib29sIHRocmVh
ZGVkQW5pbWF0aW9uRW5hYmxlZDsKLSAgICBzaXplX3QgbWF4UGFydGlhbFRleHR1cmVVcGRhdGVz
OwotICAgIEludFNpemUgZGVmYXVsdFRpbGVTaXplOwotICAgIEludFNpemUgbWF4VW50aWxlZExh
eWVyU2l6ZTsKICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcjsKIH07CiAKQEAgLTE0Myw3ICsx
MjcsNyBAQCBzdHJ1Y3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyB7CiBjbGFzcyBDQ0xheWVy
VHJlZUhvc3QgOiBwdWJsaWMgUmF0ZUxpbWl0ZXJDbGllbnQgewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKENDTGF5ZXJUcmVlSG9zdCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8
Q0NMYXllclRyZWVIb3N0PiBjcmVhdGUoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiwgY29uc3QgQ0NT
ZXR0aW5ncyYpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdD4gY3JlYXRl
KENDTGF5ZXJUcmVlSG9zdENsaWVudCosIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmKTsKICAg
ICB2aXJ0dWFsIH5DQ0xheWVyVHJlZUhvc3QoKTsKIAogICAgIHZvaWQgc2V0U3VyZmFjZVJlYWR5
KCk7CkBAIC0yMTksNyArMjAzLDcgQEAgcHVibGljOgogICAgIGNvbnN0IExheWVyQ2hyb21pdW0q
IHJvb3RMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdExheWVyLmdldCgpOyB9CiAgICAgdm9p
ZCBzZXRSb290TGF5ZXIoUGFzc1JlZlB0cjxMYXllckNocm9taXVtPik7CiAKLSAgICBjb25zdCBD
Q1NldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fc2V0dGluZ3M7IH0KKyAgICBj
b25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fc2V0
dGluZ3M7IH0KIAogICAgIHZvaWQgc2V0Vmlld3BvcnRTaXplKGNvbnN0IEludFNpemUmKTsKIApA
QCAtMjUxLDcgKzIzNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZVRleHR1cmVBZnRlckNv
bW1pdChQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPik7CiAKIHByb3RlY3RlZDoKLSAgICBDQ0xh
eWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiwgY29uc3QgQ0NTZXR0aW5ncyYpOwor
ICAgIENDTGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3RDbGllbnQqLCBjb25zdCBDQ0xheWVy
VHJlZVNldHRpbmdzJik7CiAgICAgYm9vbCBpbml0aWFsaXplKCk7CiAKIHByaXZhdGU6CkBAIC0y
OTIsNyArMjc2LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbV9yb290
TGF5ZXI7CiAgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiBtX2NvbnRlbnRzVGV4dHVyZU1hbmFn
ZXI7CiAKLSAgICBDQ1NldHRpbmdzIG1fc2V0dGluZ3M7CisgICAgQ0NMYXllclRyZWVTZXR0aW5n
cyBtX3NldHRpbmdzOwogCiAgICAgSW50U2l6ZSBtX3ZpZXdwb3J0U2l6ZTsKICAgICBJbnRTaXpl
IG1fZGV2aWNlVmlld3BvcnRTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmNwcAppbmRleCBkNzhkNDI5ZjI5NmE1MWVjYjAxNmI3MjNmZjRhYjBjODQ3YWJkZjBmLi5jMmFi
MGY3ZWE1N2NmYjdiOGViOTAyYTljODY1NzUwN2M3Y2ViZGRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgImNjL0ND
TGF5ZXJUcmVlSG9zdENvbW1vbi5oIgogI2luY2x1ZGUgImNjL0NDTWF0aFV0aWwuaCIKICNpbmNs
dWRlICJjYy9DQ1BhZ2VTY2FsZUFuaW1hdGlvbi5oIgorI2luY2x1ZGUgImNjL0NDU2V0dGluZ3Mu
aCIKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgiCiAjaW5jbHVkZSAiY2MvQ0NU
aHJlYWRUYXNrLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkBAIC0xMDUsMTIgKzEw
NiwxMiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxDQ0RlbGF5QmFzZWRUaW1lU291cmNlPiBtX3Rp
bWVTb3VyY2U7CiB9OwogCi1QYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IENDTGF5ZXJU
cmVlSG9zdEltcGw6OmNyZWF0ZShjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncywgQ0NMYXllclRy
ZWVIb3N0SW1wbENsaWVudCogY2xpZW50KQorUGFzc093blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBs
PiBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYg
c2V0dGluZ3MsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqIGNsaWVudCkKIHsKICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IENDTGF5ZXJUcmVlSG9zdEltcGwoc2V0dGluZ3MsIGNsaWVudCkpOwog
fQogCi1DQ0xheWVyVHJlZUhvc3RJbXBsOjpDQ0xheWVyVHJlZUhvc3RJbXBsKGNvbnN0IENDU2V0
dGluZ3MmIHNldHRpbmdzLCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KiBjbGllbnQpCitDQ0xh
eWVyVHJlZUhvc3RJbXBsOjpDQ0xheWVyVHJlZUhvc3RJbXBsKGNvbnN0IENDTGF5ZXJUcmVlU2V0
dGluZ3MmIHNldHRpbmdzLCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KiBjbGllbnQpCiAgICAg
OiBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX3NvdXJjZUZyYW1lTnVtYmVyKC0xKQogICAgICwg
bV9mcmFtZU51bWJlcigwKQpAQCAtMjU2LDcgKzI1Nyw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0
SW1wbDo6Y2FsY3VsYXRlUmVuZGVyU3VyZmFjZUxheWVyTGlzdChDQ0xheWVyTGlzdCYgcmVuZGVy
U3VyCiAKICAgICAgICAgaWYgKCFsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdQYXJ0
aWFsU3dhcCkKICAgICAgICAgICAgIG1fcm9vdFNjaXNzb3JSZWN0ID0gRmxvYXRSZWN0KEZsb2F0
UG9pbnQoMCwgMCksIGRldmljZVZpZXdwb3J0U2l6ZSgpKTsKLSAgICAKKwogICAgICAgICBDQ0xh
eWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZVZpc2libGVBbmRTY2lzc29yUmVjdHMocmVuZGVy
U3VyZmFjZUxheWVyTGlzdCwgbV9yb290U2Npc3NvclJlY3QpOwogICAgIH0KIH0KQEAgLTg1NCw3
ICs4NTUsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVQYWdlU2NhbGUoZG91
YmxlIG1vbm90b25pY1RpbWUpCiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6YW5pbWF0ZUxh
eWVycyhkb3VibGUgbW9ub3RvbmljVGltZSwgZG91YmxlIHdhbGxDbG9ja1RpbWUpCiB7Ci0gICAg
aWYgKCFtX3NldHRpbmdzLnRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZCB8fCAhbV9uZWVkc0FuaW1h
dGVMYXllcnMgfHwgIW1fcm9vdExheWVySW1wbCkKKyAgICBpZiAoIUNDU2V0dGluZ3M6OmFjY2Vs
ZXJhdGVkQW5pbWF0aW9uRW5hYmxlZCgpIHx8ICFtX25lZWRzQW5pbWF0ZUxheWVycyB8fCAhbV9y
b290TGF5ZXJJbXBsKQogICAgICAgICByZXR1cm47CiAKICAgICBUUkFDRV9FVkVOVCgiQ0NMYXll
clRyZWVIb3N0SW1wbDo6YW5pbWF0ZUxheWVycyIsIHRoaXMsIDApOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5oCmluZGV4IGM3NDBhNjYyMDJmNGJkMGYxYjNkMDYwNmQzYWViYTk0
ODlkMjAwOTIuLjQwNjA2MTEzOTI3ODkwY2IyNTU0MTU4MGY4MDZiNzE3ZTQ0OGVlNzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKQEAgLTY4LDcgKzY4LDcgQEAgY2xhc3Mg
Q0NMYXllclRyZWVIb3N0SW1wbCA6IHB1YmxpYyBDQ0lucHV0SGFuZGxlckNsaWVudCwgQ0NSZW5k
ZXJlckNsaWVudCB7CiAgICAgdHlwZWRlZiBWZWN0b3I8Q0NMYXllckltcGwqPiBDQ0xheWVyTGlz
dDsKIAogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+
IGNyZWF0ZShjb25zdCBDQ1NldHRpbmdzJiwgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCopOwor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IGNyZWF0ZShjb25zdCBD
Q0xheWVyVHJlZVNldHRpbmdzJiwgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCopOwogICAgIHZp
cnR1YWwgfkNDTGF5ZXJUcmVlSG9zdEltcGwoKTsKIAogICAgIC8vIENDSW5wdXRIYW5kbGVyQ2xp
ZW50IGltcGxlbWVudGF0aW9uCkBAIC0xMDUsNyArMTA1LDcgQEAgcHVibGljOgogCiAgICAgLy8g
Q0NSZW5kZXJlckNsaWVudCBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgY29uc3QgSW50U2l6
ZSYgZGV2aWNlVmlld3BvcnRTaXplKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9kZXZpY2VW
aWV3cG9ydFNpemU7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKCkg
Y29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9zZXR0aW5nczsgfQorICAgIHZpcnR1YWwgY29uc3Qg
Q0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBt
X3NldHRpbmdzOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZExvc2VDb250ZXh0KCkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZSgpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRGdWxsUm9vdExheWVyRGFtYWdlKCkgT1ZFUlJJREU7CkBAIC0xNjgs
NyArMTY4LDcgQEAgcHVibGljOgogICAgIENDRGVidWdSZWN0SGlzdG9yeSogZGVidWdSZWN0SGlz
dG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdSZWN0SGlzdG9yeS5nZXQoKTsgfQogCiBwcm90
ZWN0ZWQ6Ci0gICAgQ0NMYXllclRyZWVIb3N0SW1wbChjb25zdCBDQ1NldHRpbmdzJiwgQ0NMYXll
clRyZWVIb3N0SW1wbENsaWVudCopOworICAgIENDTGF5ZXJUcmVlSG9zdEltcGwoY29uc3QgQ0NM
YXllclRyZWVTZXR0aW5ncyYsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqKTsKIAogICAgIHZv
aWQgYW5pbWF0ZVBhZ2VTY2FsZShkb3VibGUgbW9ub3RvbmljVGltZSk7CiAgICAgdm9pZCBhbmlt
YXRlR2VzdHVyZXMoZG91YmxlIG1vbm90b25pY1RpbWUpOwpAQCAtMjEzLDcgKzIxMyw3IEBAIHBy
aXZhdGU6CiAgICAgT3duUHRyPENDUmVuZGVyZXI+IG1fbGF5ZXJSZW5kZXJlcjsKICAgICBPd25Q
dHI8Q0NMYXllckltcGw+IG1fcm9vdExheWVySW1wbDsKICAgICBDQ0xheWVySW1wbCogbV9zY3Jv
bGxMYXllckltcGw7Ci0gICAgQ0NTZXR0aW5ncyBtX3NldHRpbmdzOworICAgIENDTGF5ZXJUcmVl
U2V0dGluZ3MgbV9zZXR0aW5nczsKICAgICBJbnRTaXplIG1fdmlld3BvcnRTaXplOwogICAgIElu
dFNpemUgbV9kZXZpY2VWaWV3cG9ydFNpemU7CiAgICAgYm9vbCBtX3Zpc2libGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRl
cmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jl
bmRlcmVyLmgKaW5kZXggOWM5MzhhOTkwYWJjNGQ5YjU1NTQ2OGU3MDg2ZDdiNTM2MWI2MDUxOS4u
MzJmODM1OGM3NDRkYzBlOGMxOGU5NGIwNjRhOTFkNTA0ODA1ZWZhNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
ZXIuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBUZXh0dXJlVXBsb2FkZXI7CiBjbGFzcyBDQ1Jl
bmRlcmVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIGNvbnN0IEludFNpemUmIGRldmlj
ZVZpZXdwb3J0U2l6ZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGNvbnN0IENDU2V0dGluZ3Mm
IHNldHRpbmdzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3QgQ0NMYXllclRyZWVTZXR0
aW5ncyYgc2V0dGluZ3MoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZExvc2VDb250
ZXh0KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGUoKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHNldEZ1bGxSb290TGF5ZXJEYW1hZ2UoKSA9IDA7CkBAIC01Nyw3
ICs1Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFi
aWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgY29uc3QgPSAwOwogCi0gICAgY29uc3QgQ0NTZXR0aW5n
cyYgc2V0dGluZ3MoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudC0+c2V0dGluZ3MoKTsgfQorICAg
IGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9j
bGllbnQtPnNldHRpbmdzKCk7IH0KIAogICAgIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSgp
IHsgcmV0dXJuIG1fY2xpZW50LT5kZXZpY2VWaWV3cG9ydFNpemUoKTsgfQogICAgIGludCB2aWV3
cG9ydFdpZHRoKCkgeyByZXR1cm4gdmlld3BvcnRTaXplKCkud2lkdGgoKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTZXR0aW5n
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Nl
dHRpbmdzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YWQ4ZDUzNGNmOTcyNzcxMTk1ZTdlZjg2YjQ3MWVlZWE5
ZTQwZGVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTZXR0aW5ncy5jcHAKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiY2MvQ0NTZXR0aW5ncy5oIgor
CisjaW5jbHVkZSA8bGltaXRzPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSB7
CitzdGF0aWMgY29uc3QgYm9vbCBhY2NlbGVyYXRlZFBhaW50aW5nRW5hYmxlZERlZmF1bHQgPSBm
YWxzZTsKK3N0YXRpYyBib29sIHNfYWNjZWxlcmF0ZWRQYWludGluZ0VuYWJsZWQgPSBhY2NlbGVy
YXRlZFBhaW50aW5nRW5hYmxlZERlZmF1bHQ7CisKK3N0YXRpYyBjb25zdCBib29sIHBlclRpbGVQ
YWludGluZ0VuYWJsZWREZWZhdWx0ID0gZmFsc2U7CitzdGF0aWMgYm9vbCBzX3BlclRpbGVQYWlu
dGluZ0VuYWJsZWQgPSBwZXJUaWxlUGFpbnRpbmdFbmFibGVkRGVmYXVsdDsKKworc3RhdGljIGNv
bnN0IGJvb2wgcGFydGlhbFN3YXBFbmFibGVkRGVmYXVsdCA9IGZhbHNlOworc3RhdGljIGJvb2wg
c19wYXJ0aWFsU3dhcEVuYWJsZWQgPSBwYXJ0aWFsU3dhcEVuYWJsZWREZWZhdWx0OworCitzdGF0
aWMgY29uc3QgYm9vbCBhY2NlbGVyYXRlZEFuaW1hdGlvbkVuYWJsZWREZWZhdWx0ID0gZmFsc2U7
CitzdGF0aWMgYm9vbCBzX2FjY2VsZXJhdGVkQW5pbWF0aW9uRW5hYmxlZCA9IGFjY2VsZXJhdGVk
QW5pbWF0aW9uRW5hYmxlZERlZmF1bHQ7CisKK3N0YXRpYyBjb25zdCBkb3VibGUgcmVmcmVzaFJh
dGVEZWZhdWx0ID0gMDsKK3N0YXRpYyBkb3VibGUgc19yZWZlc2hSYXRlID0gcmVmcmVzaFJhdGVE
ZWZhdWx0OworCitzdGF0aWMgY29uc3Qgc2l6ZV90IG1heFBhcnRpYWxUZXh0dXJlVXBkYXRlc0Rl
ZmF1bHQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpOworc3RhdGljIHNpemVf
dCBzX21heFBhcnRpYWxUZXh0dXJlVXBkYXRlcyA9IG1heFBhcnRpYWxUZXh0dXJlVXBkYXRlc0Rl
ZmF1bHQ7CisKK3N0YXRpYyBjb25zdCBJbnRTaXplIGRlZmF1bHRUaWxlU2l6ZURlZmF1bHQgPSBJ
bnRTaXplKDI1NiwgMjU2KTsKK3N0YXRpYyBJbnRTaXplIHNfZGVmYXVsdFRpbGVTaXplID0gZGVm
YXVsdFRpbGVTaXplRGVmYXVsdDsKKworc3RhdGljIGNvbnN0IEludFNpemUgbWF4VW50aWxlZExh
eWVyU2l6ZURlZmF1bHQgPSBJbnRTaXplKDUxMiwgNTEyKTsKK3N0YXRpYyBJbnRTaXplIHNfbWF4
VW50aWxlZExheWVyU2l6ZSA9IG1heFVudGlsZWRMYXllclNpemVEZWZhdWx0OworfQorCitib29s
IENDU2V0dGluZ3M6OmFjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkKCkgeyByZXR1cm4gc19hY2Nl
bGVyYXRlZFBhaW50aW5nRW5hYmxlZDsgfQordm9pZCBDQ1NldHRpbmdzOjpzZXRBY2NlbGVyYXRl
ZFBhaW50aW5nRW5hYmxlZChib29sIGVuYWJsZWQpIHsgc19hY2NlbGVyYXRlZFBhaW50aW5nRW5h
YmxlZCA9IGVuYWJsZWQ7IH0KKworYm9vbCBDQ1NldHRpbmdzOjpwZXJUaWxlUGFpbnRpbmdFbmFi
bGVkKCkgeyByZXR1cm4gc19wZXJUaWxlUGFpbnRpbmdFbmFibGVkOyB9Cit2b2lkIENDU2V0dGlu
Z3M6OnNldFBlclRpbGVQYWludGluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKSB7IHNfcGVyVGlsZVBh
aW50aW5nRW5hYmxlZCA9IGVuYWJsZWQ7IH0KKworYm9vbCBDQ1NldHRpbmdzOjpwYXJ0aWFsU3dh
cEVuYWJsZWQoKSB7IHJldHVybiBzX3BhcnRpYWxTd2FwRW5hYmxlZDsgfQordm9pZCBDQ1NldHRp
bmdzOjpzZXRQYXJ0aWFsU3dhcEVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IHNfcGFydGlhbFN3YXBF
bmFibGVkID0gZW5hYmxlZDsgfQorCitib29sIENDU2V0dGluZ3M6OmFjY2VsZXJhdGVkQW5pbWF0
aW9uRW5hYmxlZCgpIHsgcmV0dXJuIHNfYWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkOyB9Cit2
b2lkIENDU2V0dGluZ3M6OnNldEFjY2VsZXJhdGVkQW5pbWF0aW9uRW5hYmxlZChib29sIGVuYWJs
ZWQpIHsgc19hY2NlbGVyYXRlZEFuaW1hdGlvbkVuYWJsZWQgPSBlbmFibGVkOyB9CisKK2RvdWJs
ZSBDQ1NldHRpbmdzOjpyZWZyZXNoUmF0ZSgpIHsgcmV0dXJuIHNfcmVmZXNoUmF0ZTsgfQordm9p
ZCBDQ1NldHRpbmdzOjpzZXRSZWZyZXNoUmF0ZShkb3VibGUgcmVmcmVzaFJhdGUpIHsgc19yZWZl
c2hSYXRlID0gcmVmcmVzaFJhdGU7IH0KKworc2l6ZV90IENDU2V0dGluZ3M6Om1heFBhcnRpYWxU
ZXh0dXJlVXBkYXRlcygpIHsgcmV0dXJuIHNfbWF4UGFydGlhbFRleHR1cmVVcGRhdGVzOyB9Cit2
b2lkIENDU2V0dGluZ3M6OnNldE1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcyhzaXplX3QgdXBkYXRl
cykgeyBzX21heFBhcnRpYWxUZXh0dXJlVXBkYXRlcyA9IHVwZGF0ZXM7IH0KKworY29uc3QgSW50
U2l6ZSYgQ0NTZXR0aW5nczo6ZGVmYXVsdFRpbGVTaXplKCkgeyByZXR1cm4gc19kZWZhdWx0VGls
ZVNpemU7IH0KK3ZvaWQgQ0NTZXR0aW5nczo6c2V0RGVmYXVsdFRpbGVTaXplKGNvbnN0IEludFNp
emUmIHNpemUpIHsgc19kZWZhdWx0VGlsZVNpemUgPSBzaXplOyB9CisKK2NvbnN0IEludFNpemUm
IENDU2V0dGluZ3M6Om1heFVudGlsZWRMYXllclNpemUoKSB7IHJldHVybiBzX21heFVudGlsZWRM
YXllclNpemU7IH0KK3ZvaWQgQ0NTZXR0aW5nczo6c2V0TWF4VW50aWxlZExheWVyU2l6ZShjb25z
dCBJbnRTaXplJiBzaXplKSB7IHNfbWF4VW50aWxlZExheWVyU2l6ZSA9IHNpemU7IH0KKwordm9p
ZCBDQ1NldHRpbmdzOjpyZXNldCgpCit7CisgICAgc19hY2NlbGVyYXRlZFBhaW50aW5nRW5hYmxl
ZCA9IGFjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkRGVmYXVsdDsKKyAgICBzX3BlclRpbGVQYWlu
dGluZ0VuYWJsZWQgPSBwZXJUaWxlUGFpbnRpbmdFbmFibGVkRGVmYXVsdDsKKyAgICBzX3BhcnRp
YWxTd2FwRW5hYmxlZCA9IHBhcnRpYWxTd2FwRW5hYmxlZERlZmF1bHQ7CisgICAgc19hY2NlbGVy
YXRlZEFuaW1hdGlvbkVuYWJsZWQgPSBhY2NlbGVyYXRlZEFuaW1hdGlvbkVuYWJsZWREZWZhdWx0
OworICAgIHNfcmVmZXNoUmF0ZSA9IHJlZnJlc2hSYXRlRGVmYXVsdDsKKyAgICBzX21heFBhcnRp
YWxUZXh0dXJlVXBkYXRlcyA9IG1heFBhcnRpYWxUZXh0dXJlVXBkYXRlc0RlZmF1bHQ7CisgICAg
c19kZWZhdWx0VGlsZVNpemUgPSBkZWZhdWx0VGlsZVNpemVEZWZhdWx0OworICAgIHNfbWF4VW50
aWxlZExheWVyU2l6ZSA9IG1heFVudGlsZWRMYXllclNpemVEZWZhdWx0OworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NldHRpbmdzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTZlZTIyOWI2ODNl
ZDdkNGJhMzhlMDI4ZmZiNzYxOWEyMDRiNjQ3ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2V0dGluZ3MuaApAQCAtMCww
ICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENDU2V0dGluZ3NfaAorI2RlZmluZSBD
Q1NldHRpbmdzX2gKKworI2luY2x1ZGUgIkludFNpemUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBDQ1NldHRpbmdzIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBhY2NlbGVy
YXRlZFBhaW50aW5nRW5hYmxlZCgpOworICAgIHN0YXRpYyB2b2lkIHNldEFjY2VsZXJhdGVkUGFp
bnRpbmdFbmFibGVkKGJvb2wpOworCisgICAgc3RhdGljIGJvb2wgcGVyVGlsZVBhaW50aW5nRW5h
YmxlZCgpOworICAgIHN0YXRpYyB2b2lkIHNldFBlclRpbGVQYWludGluZ0VuYWJsZWQoYm9vbCk7
CisKKyAgICBzdGF0aWMgYm9vbCBwYXJ0aWFsU3dhcEVuYWJsZWQoKTsKKyAgICBzdGF0aWMgdm9p
ZCBzZXRQYXJ0aWFsU3dhcEVuYWJsZWQoYm9vbCk7CisKKyAgICBzdGF0aWMgYm9vbCBhY2NlbGVy
YXRlZEFuaW1hdGlvbkVuYWJsZWQoKTsKKyAgICBzdGF0aWMgdm9pZCBzZXRBY2NlbGVyYXRlZEFu
aW1hdGlvbkVuYWJsZWQoYm9vbCk7CisKKyAgICBzdGF0aWMgZG91YmxlIHJlZnJlc2hSYXRlKCk7
CisgICAgc3RhdGljIHZvaWQgc2V0UmVmcmVzaFJhdGUoZG91YmxlKTsKKworICAgIHN0YXRpYyBz
aXplX3QgbWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKCk7CisgICAgc3RhdGljIHZvaWQgc2V0TWF4
UGFydGlhbFRleHR1cmVVcGRhdGVzKHNpemVfdCk7CisKKyAgICBzdGF0aWMgY29uc3QgSW50U2l6
ZSYgZGVmYXVsdFRpbGVTaXplKCk7CisgICAgc3RhdGljIHZvaWQgc2V0RGVmYXVsdFRpbGVTaXpl
KGNvbnN0IEludFNpemUmKTsKKworICAgIHN0YXRpYyBjb25zdCBJbnRTaXplJiBtYXhVbnRpbGVk
TGF5ZXJTaXplKCk7CisgICAgc3RhdGljIHZvaWQgc2V0TWF4VW50aWxlZExheWVyU2l6ZShjb25z
dCBJbnRTaXplJik7CisKKyAgICBzdGF0aWMgdm9pZCByZXNldCgpOworCitwcml2YXRlOgorICAg
IENDU2V0dGluZ3MoKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IENDU2V0dGluZ3NfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDM0MDc0MThjNGEz
YzNlNDk5ZTFiOWIzMzRkODdkNjY2NTBkMjAxZjkuLmI2Y2ZhOTg1MDNiMDBiMWNmYzMzMDY2NWI3
ODM0ODRlMzQ3ODI4M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0
Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTExNSw2ICsx
MTUsNyBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViQ29tcG9zaXRvckNsaWVudC5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXIuaCcsCiAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50Lmgn
LAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViQ29tcG9zaXRvclNldHRpbmdzLmgnLAogICAg
ICAgICAgICAgICAgICdwdWJsaWMvV2ViQ29uc29sZU1lc3NhZ2UuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJDb250ZXh0TWVudURhdGEuaCcsCiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmgnLApAQCAtNDkzLDYgKzQ5NCw3
IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJDb21wb3NpdG9ySW1wbC5oJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNwcCcsCiAgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5oJywKKyAgICAgICAg
ICAgICAgICAnc3JjL1dlYkNvbXBvc2l0b3JTZXR0aW5ncy5jcHAnLAogICAgICAgICAgICAgICAg
ICdzcmMvV2ViQ29udGVudExheWVyLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJDb250
ZW50TGF5ZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJDb250ZW50TGF5ZXJJ
bXBsLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJU
cmVlVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3
LmNwcAppbmRleCBhZTIwYWVhOWEzNTgzZTYzNDI0OWY1YmI0ZGI0MDg4Mjg0ZDgyNmYxLi41YTg1
MDZkMzk2NDkyMDhhYTVkZjAxNTY4YWEyN2U0MThkNTJjNTdiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcApAQCAtMzcsMjAgKzM3LDE0IEBA
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci1XZWJMYXll
clRyZWVWaWV3OjpTZXR0aW5nczo6b3BlcmF0b3IgQ0NTZXR0aW5ncygpIGNvbnN0CisKK1dlYkxh
eWVyVHJlZVZpZXc6OlNldHRpbmdzOjpvcGVyYXRvciBDQ0xheWVyVHJlZVNldHRpbmdzKCkgY29u
c3QKIHsKLSAgICBDQ1NldHRpbmdzIHNldHRpbmdzOwotICAgIHNldHRpbmdzLmFjY2VsZXJhdGVQ
YWludGluZyA9IGFjY2VsZXJhdGVQYWludGluZzsKKyAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNl
dHRpbmdzOwogICAgIHNldHRpbmdzLmZvcmNlU29mdHdhcmVDb21wb3NpdGluZyA9IGZvcmNlU29m
dHdhcmVDb21wb3NpdGluZzsKICAgICBzZXR0aW5ncy5zaG93RlBTQ291bnRlciA9IHNob3dGUFND
b3VudGVyOwogICAgIHNldHRpbmdzLnNob3dQbGF0Zm9ybUxheWVyVHJlZSA9IHNob3dQbGF0Zm9y
bUxheWVyVHJlZTsKICAgICBzZXR0aW5ncy5zaG93UGFpbnRSZWN0cyA9IHNob3dQYWludFJlY3Rz
OwotICAgIHNldHRpbmdzLnJlZnJlc2hSYXRlID0gcmVmcmVzaFJhdGU7Ci0gICAgc2V0dGluZ3Mu
cGVyVGlsZVBhaW50aW5nID0gcGVyVGlsZVBhaW50aW5nOwotICAgIHNldHRpbmdzLnBhcnRpYWxT
d2FwRW5hYmxlZCA9IHBhcnRpYWxTd2FwRW5hYmxlZDsKLSAgICBzZXR0aW5ncy50aHJlYWRlZEFu
aW1hdGlvbkVuYWJsZWQgPSB0aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQ7Ci0gICAgc2V0dGluZ3Mu
ZGVmYXVsdFRpbGVTaXplID0gZGVmYXVsdFRpbGVTaXplOwotICAgIHNldHRpbmdzLm1heFVudGls
ZWRMYXllclNpemUgPSBtYXhVbnRpbGVkTGF5ZXJTaXplOwogICAgIHNldHRpbmdzLmRldmljZVNj
YWxlRmFjdG9yID0gZGV2aWNlU2NhbGVGYWN0b3I7CiAKICAgICAvLyBGSVhNRTogc2hvd0ZQU0Nv
dW50ZXIgLyBzaG93UGxhdGZvcm1MYXllclRyZWUgLyBtYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMg
YXJlbid0IHN1cHBvcnRlZCBjdXJyZW50bHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHAKaW5kZXggMTdkNWZlODY3NWE3ZWNhZTI0
MjA2M2UyYTczMDJhNzM2NDcyMDlmMC4uMGQ2NTE5MjUxYzA3NTA2N2M0ZmFiMWUzMTg0MmUzODE3
NmU1OTZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJU
cmVlVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVy
VHJlZVZpZXdJbXBsLmNwcApAQCAtODEsNyArODEsNyBAQCBQYXNzT3duUHRyPFdlYkxheWVyVHJl
ZVZpZXdJbXBsPiBXZWJMYXllclRyZWVWaWV3SW1wbDo6Y3JlYXRlKFdlYkxheWVyVHJlZVZpZXdD
bAogICAgIHJldHVybiBpbXBsLnJlbGVhc2UoKTsKIH0KIAotV2ViTGF5ZXJUcmVlVmlld0ltcGw6
OldlYkxheWVyVHJlZVZpZXdJbXBsKFdlYkxheWVyVHJlZVZpZXdDbGllbnQqIGNsaWVudCwgY29u
c3QgV2ViTGF5ZXJUcmVlVmlldzo6U2V0dGluZ3MmIHNldHRpbmdzKSAKK1dlYkxheWVyVHJlZVZp
ZXdJbXBsOjpXZWJMYXllclRyZWVWaWV3SW1wbChXZWJMYXllclRyZWVWaWV3Q2xpZW50KiBjbGll
bnQsIGNvbnN0IFdlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzJiBzZXR0aW5ncykKICAgICA6IG1f
Y2xpZW50QWRhcHRlcihhZG9wdFB0cihuZXcgV2ViTGF5ZXJUcmVlVmlld0NsaWVudEFkYXB0ZXIo
Y2xpZW50KSkpCiAgICAgLCBtX2xheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0OjpjcmVhdGUo
bV9jbGllbnRBZGFwdGVyLmdldCgpLCBzZXR0aW5ncykpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggOGI0ZTJlYWYwNDYxNTIwODdkOGIwODFmZjJm
ZDcyYjU4YjBkMmE1Mi4uY2Y4OGI5MWYwZjQxZDBmMTIyNDQ4YjU4NWYzOWE3NzM0YjhiZDIzZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMTQ2LDYg
KzE0Niw3IEBACiAjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgogI2luY2x1ZGUgIldoZWVsRXZl
bnQuaCIKICNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCisjaW5jbHVkZSAiY2MvQ0NTZXR0aW5ncy5o
IgogI2luY2x1ZGUgInBhaW50aW5nL0dyYXBoaWNzQ29udGV4dEJ1aWxkZXIuaCIKICNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJTdHJpbmcuaCIKQEAgLTQ1OCw3ICs0NTksNyBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwo
V2ViVmlld0NsaWVudCogY2xpZW50KQogI2lmIEVOQUJMRShCQVRURVJZX1NUQVRVUykKICAgICBw
cm92aWRlQmF0dGVyeVRvKG1fcGFnZS5nZXQoKSwgbV9iYXR0ZXJ5Q2xpZW50LmdldCgpKTsKICNl
bmRpZgotICAgIAorCiAgICAgbV9wYWdlLT5zZXRHcm91cE5hbWUocGFnZUdyb3VwTmFtZSk7CiAK
ICNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKQEAgLTM0NzksMjAgKzM0ODAsMTkgQEAg
dm9pZCBXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGJvb2wg
YWN0aXZlKQogICAgIH0gZWxzZSB7CiAgICAgICAgIFRSQUNFX0VWRU5UKCJXZWJWaWV3SW1wbDo6
c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKHRydWUpIiwgdGhpcywgMCk7CiAKKyAg
ICAgICAgQ0NTZXR0aW5nczo6c2V0QWNjZWxlcmF0ZWRQYWludGluZ0VuYWJsZWQocGFnZSgpLT5z
ZXR0aW5ncygpLT5hY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkKCkpOworICAgICAgICBDQ1NldHRp
bmdzOjpzZXRQZXJUaWxlUGFpbnRpbmdFbmFibGVkKHBhZ2UoKS0+c2V0dGluZ3MoKS0+cGVyVGls
ZURyYXdpbmdFbmFibGVkKCkpOworICAgICAgICBDQ1NldHRpbmdzOjpzZXRQYXJ0aWFsU3dhcEVu
YWJsZWQocGFnZSgpLT5zZXR0aW5ncygpLT5wYXJ0aWFsU3dhcEVuYWJsZWQoKSk7CisgICAgICAg
IENDU2V0dGluZ3M6OnNldEFjY2VsZXJhdGVkQW5pbWF0aW9uRW5hYmxlZChwYWdlKCktPnNldHRp
bmdzKCktPnRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZCgpKTsKKyAgICAgICAgQ0NTZXR0aW5nczo6
c2V0RGVmYXVsdFRpbGVTaXplKHNldHRpbmdzSW1wbCgpLT5kZWZhdWx0VGlsZVNpemUoKSk7Cisg
ICAgICAgIENDU2V0dGluZ3M6OnNldE1heFVudGlsZWRMYXllclNpemUoc2V0dGluZ3NJbXBsKCkt
Pm1heFVudGlsZWRMYXllclNpemUoKSk7CisKICAgICAgICAgV2ViTGF5ZXJUcmVlVmlldzo6U2V0
dGluZ3MgbGF5ZXJUcmVlVmlld1NldHRpbmdzOwotICAgICAgICBsYXllclRyZWVWaWV3U2V0dGlu
Z3MuYWNjZWxlcmF0ZVBhaW50aW5nID0gcGFnZSgpLT5zZXR0aW5ncygpLT5hY2NlbGVyYXRlZERy
YXdpbmdFbmFibGVkKCk7CiAgICAgICAgIGxheWVyVHJlZVZpZXdTZXR0aW5ncy5zaG93RlBTQ291
bnRlciA9IHNldHRpbmdzSW1wbCgpLT5zaG93RlBTQ291bnRlcigpOwogICAgICAgICBsYXllclRy
ZWVWaWV3U2V0dGluZ3Muc2hvd1BsYXRmb3JtTGF5ZXJUcmVlID0gc2V0dGluZ3NJbXBsKCktPnNo
b3dQbGF0Zm9ybUxheWVyVHJlZSgpOwogICAgICAgICBsYXllclRyZWVWaWV3U2V0dGluZ3Muc2hv
d1BhaW50UmVjdHMgPSBzZXR0aW5nc0ltcGwoKS0+c2hvd1BhaW50UmVjdHMoKTsKICAgICAgICAg
bGF5ZXJUcmVlVmlld1NldHRpbmdzLmZvcmNlU29mdHdhcmVDb21wb3NpdGluZyA9IHNldHRpbmdz
KCktPmZvcmNlU29mdHdhcmVDb21wb3NpdGluZygpOwogCi0gICAgICAgIGxheWVyVHJlZVZpZXdT
ZXR0aW5ncy5wZXJUaWxlUGFpbnRpbmcgPSBwYWdlKCktPnNldHRpbmdzKCktPnBlclRpbGVEcmF3
aW5nRW5hYmxlZCgpOwotICAgICAgICBsYXllclRyZWVWaWV3U2V0dGluZ3MucGFydGlhbFN3YXBF
bmFibGVkID0gcGFnZSgpLT5zZXR0aW5ncygpLT5wYXJ0aWFsU3dhcEVuYWJsZWQoKTsKLSAgICAg
ICAgbGF5ZXJUcmVlVmlld1NldHRpbmdzLnRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZCA9IHBhZ2Uo
KS0+c2V0dGluZ3MoKS0+dGhyZWFkZWRBbmltYXRpb25FbmFibGVkKCk7Ci0KLSAgICAgICAgbGF5
ZXJUcmVlVmlld1NldHRpbmdzLmRlZmF1bHRUaWxlU2l6ZSA9IHNldHRpbmdzSW1wbCgpLT5kZWZh
dWx0VGlsZVNpemUoKTsKLSAgICAgICAgbGF5ZXJUcmVlVmlld1NldHRpbmdzLm1heFVudGlsZWRM
YXllclNpemUgPSBzZXR0aW5nc0ltcGwoKS0+bWF4VW50aWxlZExheWVyU2l6ZSgpOwotCiAgICAg
ICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0ID0gTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0
OjpjcmVhdGUoV2ViVmlld0ltcGxDb250ZW50UGFpbnRlcjo6Y3JlYXRlKHRoaXMpKTsKICAgICAg
ICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QtPnNldFNob3dEZWJ1Z0JvcmRlcnMocGFnZSgp
LT5zZXR0aW5ncygpLT5zaG93RGVidWdCb3JkZXJzKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4
IGU2MjMxZDM0ZjExN2E4NjE5OGExZWY1ZjI2NmNlODc2YTg4NzllYmUuLjE1NzY3NjI1M2U3MTY1
YjQ4YTAxODI3MGY5YzdhYWIxODU4ZDgzNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC0zNSw2ICsz
NSw3IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXllclRpbGluZ0RhdGEuaCIKICNpbmNsdWRlICJjYy9D
Q1F1YWRDdWxsZXIuaCIKICNpbmNsdWRlICJjYy9DQ1Njcm9sbGJhckxheWVySW1wbC5oIgorI2lu
Y2x1ZGUgImNjL0NDU2V0dGluZ3MuaCIKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5
LmgiCiAjaW5jbHVkZSAiY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9D
Q1RleHR1cmVMYXllckltcGwuaCIKQEAgLTY1LDEyICs2NiwxNyBAQCBwdWJsaWM6CiAgICAgICAg
IDogbV9kaWRSZXF1ZXN0Q29tbWl0KGZhbHNlKQogICAgICAgICAsIG1fZGlkUmVxdWVzdFJlZHJh
dyhmYWxzZSkKICAgICB7Ci0gICAgICAgIENDU2V0dGluZ3Mgc2V0dGluZ3M7CisgICAgICAgIEND
TGF5ZXJUcmVlU2V0dGluZ3Mgc2V0dGluZ3M7CiAgICAgICAgIG1faG9zdEltcGwgPSBDQ0xheWVy
VHJlZUhvc3RJbXBsOjpjcmVhdGUoc2V0dGluZ3MsIHRoaXMpOwogICAgICAgICBtX2hvc3RJbXBs
LT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjcmVhdGVDb250ZXh0KCksIFVudGhyb3R0bGVkVXBs
b2FkZXIpOwogICAgICAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMCwg
MTApKTsKICAgICB9CiAKKyAgICB2aXJ0dWFsIH5DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCgpCisg
ICAgeworICAgICAgICBDQ1NldHRpbmdzOjpyZXNldCgpOworICAgIH0KKwogICAgIHZpcnR1YWwg
dm9pZCBkaWRMb3NlQ29udGV4dE9uSW1wbFRocmVhZCgpIE9WRVJSSURFIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGVPbkltcGxUaHJlYWQoKSBPVkVSUklERSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKSBPVkVSUklERSB7
IG1fZGlkUmVxdWVzdFJlZHJhdyA9IHRydWU7IH0KQEAgLTgwLDEwICs4Niw5IEBAIHB1YmxpYzoK
IAogICAgIFBhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gY3JlYXRlTGF5ZXJUcmVlSG9z
dChib29sIHBhcnRpYWxTd2FwLCBQYXNzUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBncmFwaGlj
c0NvbnRleHQsIFBhc3NPd25QdHI8Q0NMYXllckltcGw+IHJvb3RQdHIpCiAgICAgewotICAgICAg
ICBDQ1NldHRpbmdzIHNldHRpbmdzOwotCi0gICAgICAgIHNldHRpbmdzLnBhcnRpYWxTd2FwRW5h
YmxlZCA9IHBhcnRpYWxTd2FwOworICAgICAgICBDQ1NldHRpbmdzOjpzZXRQYXJ0aWFsU3dhcEVu
YWJsZWQocGFydGlhbFN3YXApOwogCisgICAgICAgIENDTGF5ZXJUcmVlU2V0dGluZ3Mgc2V0dGlu
Z3M7CiAgICAgICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBteUhvc3RJbXBsID0gQ0NM
YXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKHNldHRpbmdzLCB0aGlzKTsKIAogICAgICAgICBteUhv
c3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihncmFwaGljc0NvbnRleHQsIFVudGhyb3R0
bGVkVXBsb2FkZXIpOwpAQCAtMTA2NCw4ICsxMDY5LDggQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9z
dEltcGxUZXN0LCBwYXJ0aWFsU3dhcFJlY2VpdmVzRGFtYWdlUmVjdCkKIAogICAgIC8vIFRoaXMg
dGVzdCBjcmVhdGVzIGl0cyBvd24gQ0NMYXllclRyZWVIb3N0SW1wbCwgc28KICAgICAvLyB0aGF0
IHdlIGNhbiBmb3JjZSBwYXJ0aWFsIHN3YXAgZW5hYmxlZC4KLSAgICBDQ1NldHRpbmdzIHNldHRp
bmdzOwotICAgIHNldHRpbmdzLnBhcnRpYWxTd2FwRW5hYmxlZCA9IHRydWU7CisgICAgQ0NMYXll
clRyZWVTZXR0aW5ncyBzZXR0aW5nczsKKyAgICBDQ1NldHRpbmdzOjpzZXRQYXJ0aWFsU3dhcEVu
YWJsZWQodHJ1ZSk7CiAgICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IGxheWVyVHJlZUhv
c3RJbXBsID0gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKHNldHRpbmdzLCB0aGlzKTsKICAg
ICBsYXllclRyZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY2NDb250ZXh0LCBV
bnRocm90dGxlZFVwbG9hZGVyKTsKICAgICBsYXllclRyZWVIb3N0SW1wbC0+c2V0Vmlld3BvcnRT
aXplKEludFNpemUoNTAwLCA1MDApKTsKQEAgLTEyNzEsNyArMTI3Niw3IEBAIFRFU1RfRihDQ0xh
eWVyVHJlZUhvc3RJbXBsVGVzdCwgcGFydGlhbFN3YXBOb1VwZGF0ZSkKICAgICBoYXJuZXNzLm11
c3RTZXRTY2lzc29yKDAsIDAsIDEwLCAxMCk7CiAKICAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0
SW1wbD4gbXlIb3N0SW1wbCA9IGNyZWF0ZUxheWVyVHJlZUhvc3QodHJ1ZSwgY29udGV4dCwgRmFr
ZUxheWVyV2l0aFF1YWRzOjpjcmVhdGUoMSkpOwotICAgIAorCiAgICAgLy8gRHJhdyBvbmNlIHRv
IG1ha2Ugc3VyZSBsYXllciBpcyBub3QgbmV3CiAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJh
bWVEYXRhIGZyYW1lOwogICAgIEVYUEVDVF9UUlVFKG15SG9zdEltcGwtPnByZXBhcmVUb0RyYXco
ZnJhbWUpKTsKQEAgLTEyOTgsNyArMTMwMyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVy
biBXZWJTdHJpbmcoIkdMX0NIUk9NSVVNX3Bvc3Rfc3ViX2J1ZmZlciIpOwogICAgICAgICByZXR1
cm4gV2ViU3RyaW5nKCk7CiAgICAgfQotICAgIAorCiAgICAgV2ViU3RyaW5nIGdldFJlcXVlc3Rh
YmxlRXh0ZW5zaW9uc0NIUk9NSVVNKCkKICAgICB7CiAgICAgICAgIHJldHVybiBXZWJTdHJpbmco
IkdMX0NIUk9NSVVNX3Bvc3Rfc3ViX2J1ZmZlciIpOwpAQCAtMTMwNywxMCArMTMxMiwxMSBAQCBw
dWJsaWM6CiAKIHN0YXRpYyBQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IHNldHVwTGF5
ZXJzRm9yT3BhY2l0eShib29sIHBhcnRpYWxTd2FwLCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50
KiBjbGllbnQpCiB7Ci0gICAgQ0NTZXR0aW5ncyBzZXR0aW5nczsKLSAgICBzZXR0aW5ncy5wYXJ0
aWFsU3dhcEVuYWJsZWQgPSBwYXJ0aWFsU3dhcDsKKyAgICBDQ1NldHRpbmdzOjpzZXRQYXJ0aWFs
U3dhcEVuYWJsZWQocGFydGlhbFN3YXApOwogCiAgICAgUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0
PiBjb250ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKEdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3
IFBhcnRpYWxTd2FwQ29udGV4dCgpKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5
VG9Ib3N0V2luZG93KSk7CisKKyAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOwogICAg
IE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBteUhvc3RJbXBsID0gQ0NMYXllclRyZWVIb3N0
SW1wbDo6Y3JlYXRlKHNldHRpbmdzLCBjbGllbnQpOwogICAgIG15SG9zdEltcGwtPmluaXRpYWxp
emVMYXllclJlbmRlcmVyKGNvbnRleHQucmVsZWFzZSgpLCBVbnRocm90dGxlZFVwbG9hZGVyKTsK
ICAgICBteUhvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMDAsIDEwMCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5j
cHAKaW5kZXggYWEyN2U4OGY3ZGMzZWQ4MDgwMjEwNjQ5Y2NkMGJlMzAwMjdjZjBiZi4uZGI4NWZi
ODY4OWEyMTc2MmI4ZWMxMmJmYmM0NTMzYmU1YzU3NmQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC00NCw2ICs0
NCw3IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NTY29wZWRUaHJlYWRQcm94eS5oIgorI2lu
Y2x1ZGUgImNjL0NDU2V0dGluZ3MuaCIKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5
LmgiCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgImNjL0NDVGhy
ZWFkVGFzay5oIgpAQCAtMTU0LDcgKzE1NSw3IEBAIHB1YmxpYzoKIC8vIEFkYXB0cyBDQ0xheWVy
VHJlZUhvc3RJbXBsIGZvciB0ZXN0LiBSdW5zIHJlYWwgY29kZSwgdGhlbiBpbnZva2VzIHRlc3Qg
aG9va3MuCiBjbGFzcyBNb2NrTGF5ZXJUcmVlSG9zdEltcGwgOiBwdWJsaWMgQ0NMYXllclRyZWVI
b3N0SW1wbCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8TW9ja0xheWVyVHJlZUhv
c3RJbXBsPiBjcmVhdGUoVGVzdEhvb2tzKiB0ZXN0SG9va3MsIGNvbnN0IENDU2V0dGluZ3MmIHNl
dHRpbmdzLCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KiBjbGllbnQpCisgICAgc3RhdGljIFBh
c3NPd25QdHI8TW9ja0xheWVyVHJlZUhvc3RJbXBsPiBjcmVhdGUoVGVzdEhvb2tzKiB0ZXN0SG9v
a3MsIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzLCBDQ0xheWVyVHJlZUhvc3RJ
bXBsQ2xpZW50KiBjbGllbnQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IE1v
Y2tMYXllclRyZWVIb3N0SW1wbCh0ZXN0SG9va3MsIHNldHRpbmdzLCBjbGllbnQpKTsKICAgICB9
CkBAIC0yMDIsNyArMjAzLDcgQEAgcHJvdGVjdGVkOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBN
b2NrTGF5ZXJUcmVlSG9zdEltcGwoVGVzdEhvb2tzKiB0ZXN0SG9va3MsIGNvbnN0IENDU2V0dGlu
Z3MmIHNldHRpbmdzLCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KiBjbGllbnQpCisgICAgTW9j
a0xheWVyVHJlZUhvc3RJbXBsKFRlc3RIb29rcyogdGVzdEhvb2tzLCBjb25zdCBDQ0xheWVyVHJl
ZVNldHRpbmdzJiBzZXR0aW5ncywgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCogY2xpZW50KQog
ICAgICAgICA6IENDTGF5ZXJUcmVlSG9zdEltcGwoc2V0dGluZ3MsIGNsaWVudCkKICAgICAgICAg
LCBtX3Rlc3RIb29rcyh0ZXN0SG9va3MpCiAgICAgewpAQCAtMjE0LDEzICsyMTUsOSBAQCBwcml2
YXRlOgogLy8gQWRhcHRzIENDTGF5ZXJUcmVlSG9zdCBmb3IgdGVzdC4gSW5qZWN0cyBNb2NrTGF5
ZXJUcmVlSG9zdEltcGwuCiBjbGFzcyBNb2NrTGF5ZXJUcmVlSG9zdCA6IHB1YmxpYyBDQ0xheWVy
VHJlZUhvc3QgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPE1vY2tMYXllclRyZWVI
b3N0PiBjcmVhdGUoVGVzdEhvb2tzKiB0ZXN0SG9va3MsIENDTGF5ZXJUcmVlSG9zdENsaWVudCog
Y2xpZW50LCBQYXNzUmVmUHRyPExheWVyQ2hyb21pdW0+IHJvb3RMYXllciwgY29uc3QgQ0NTZXR0
aW5ncyYgc2V0dGluZ3MpCisgICAgc3RhdGljIFBhc3NPd25QdHI8TW9ja0xheWVyVHJlZUhvc3Q+
IGNyZWF0ZShUZXN0SG9va3MqIHRlc3RIb29rcywgQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGll
bnQsIFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcm9vdExheWVyLCBjb25zdCBDQ0xheWVyVHJl
ZVNldHRpbmdzJiBzZXR0aW5ncykKICAgICB7Ci0gICAgICAgIC8vIEZvciB0aGVzZSB0ZXN0cywg
d2Ugd2lsbCBlbmFibGUgdGhyZWFkZWQgYW5pbWF0aW9ucy4KLSAgICAgICAgQ0NTZXR0aW5ncyBz
ZXR0aW5nc0NvcHkgPSBzZXR0aW5nczsKLSAgICAgICAgc2V0dGluZ3NDb3B5LnRocmVhZGVkQW5p
bWF0aW9uRW5hYmxlZCA9IHRydWU7Ci0KLSAgICAgICAgT3duUHRyPE1vY2tMYXllclRyZWVIb3N0
PiBsYXllclRyZWVIb3N0KGFkb3B0UHRyKG5ldyBNb2NrTGF5ZXJUcmVlSG9zdCh0ZXN0SG9va3Ms
IGNsaWVudCwgc2V0dGluZ3NDb3B5KSkpOworICAgICAgICBPd25QdHI8TW9ja0xheWVyVHJlZUhv
c3Q+IGxheWVyVHJlZUhvc3QoYWRvcHRQdHIobmV3IE1vY2tMYXllclRyZWVIb3N0KHRlc3RIb29r
cywgY2xpZW50LCBzZXR0aW5ncykpKTsKICAgICAgICAgYm9vbCBzdWNjZXNzID0gbGF5ZXJUcmVl
SG9zdC0+aW5pdGlhbGl6ZSgpOwogICAgICAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKICAgICAg
ICAgbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKHJvb3RMYXllcik7CkBAIC0yMzUsMTAgKzIz
Miw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc093blB0cjxDQ0xheWVyVHJlZUhvc3RJ
bXBsPiBjcmVhdGVMYXllclRyZWVIb3N0SW1wbChDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KiBj
bGllbnQpCiAgICAgewotICAgICAgICAvLyBGb3IgdGhlc2UgdGVzdHMsIHdlIHdpbGwgZW5hYmxl
IHRocmVhZGVkIGFuaW1hdGlvbnMuCi0gICAgICAgIENDU2V0dGluZ3MgY29weVNldHRpbmdzID0g
c2V0dGluZ3MoKTsKLSAgICAgICAgY29weVNldHRpbmdzLnRocmVhZGVkQW5pbWF0aW9uRW5hYmxl
ZCA9IHRydWU7Ci0gICAgICAgIHJldHVybiBNb2NrTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZSht
X3Rlc3RIb29rcywgY29weVNldHRpbmdzLCBjbGllbnQpOworICAgICAgICByZXR1cm4gTW9ja0xh
eWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUobV90ZXN0SG9va3MsIHNldHRpbmdzKCksIGNsaWVudCk7
CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZEFkZEFuaW1hdGlvbigpIE9WRVJSSURFCkBA
IC0yNTMsNyArMjQ3LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBNb2NrTGF5
ZXJUcmVlSG9zdChUZXN0SG9va3MqIHRlc3RIb29rcywgQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBj
bGllbnQsIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKQorICAgIE1vY2tMYXllclRyZWVIb3N0
KFRlc3RIb29rcyogdGVzdEhvb2tzLCBDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwgY29u
c3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MpCiAgICAgICAgIDogQ0NMYXllclRyZWVI
b3N0KGNsaWVudCwgc2V0dGluZ3MpCiAgICAgICAgICwgbV90ZXN0SG9va3ModGVzdEhvb2tzKQog
ICAgICAgICAsIG1fZGlkQWRkQW5pbWF0aW9uV2FzQ2FsbGVkKGZhbHNlKQpAQCAtNjQxLDYgKzYz
NSw5IEBAIHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwgdm9pZCBydW5UZXN0KGJvb2wgdGhyZWFk
ZWQpCiAgICAgeworICAgICAgICAvLyBGb3IgdGhlc2UgdGVzdHMsIHdlIHdpbGwgZW5hYmxlIHRo
cmVhZGVkIGFuaW1hdGlvbnMuCisgICAgICAgIENDU2V0dGluZ3M6OnNldEFjY2VsZXJhdGVkQW5p
bWF0aW9uRW5hYmxlZCh0cnVlKTsKKwogICAgICAgICBpZiAodGhyZWFkZWQpIHsKICAgICAgICAg
ICAgIG1fd2ViVGhyZWFkID0gYWRvcHRQdHIoV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5j
cmVhdGVUaHJlYWQoIkNDTGF5ZXJUcmVlSG9zdFRlc3QiKSk7CiAgICAgICAgICAgICBXZWJDb21w
b3NpdG9yOjppbml0aWFsaXplKG1fd2ViVGhyZWFkLmdldCgpKTsKQEAgLTY3NSw5ICs2NzIsMTAg
QEAgcHJvdGVjdGVkOgogICAgICAgICB9CiAgICAgICAgIGFmdGVyVGVzdCgpOwogICAgICAgICBX
ZWJDb21wb3NpdG9yOjpzaHV0ZG93bigpOworICAgICAgICBDQ1NldHRpbmdzOjpyZXNldCgpOwog
ICAgIH0KIAotICAgIENDU2V0dGluZ3MgbV9zZXR0aW5nczsKKyAgICBDQ0xheWVyVHJlZVNldHRp
bmdzIG1fc2V0dGluZ3M7CiAgICAgT3duUHRyPE1vY2tMYXllclRyZWVIb3N0Q2xpZW50PiBtX2Ns
aWVudDsKICAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0PiBtX2xheWVyVHJlZUhvc3Q7CiAKQEAg
LTIxNDAsNyArMjEzOCw3IEBAIHB1YmxpYzoKICAgICAgICAgOiBtX2xheWVyKENvbnRlbnRMYXll
ckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpjcmVhdGUoJm1fZGVsZWdhdGUpKQogICAgIHsK
ICAgICAgICAgLy8gTWFrZSBzdXJlIHBhcnRpYWwgdGV4dHVyZSB1cGRhdGVzIGFyZSB0dXJuZWQg
b2ZmLgotICAgICAgICBtX3NldHRpbmdzLm1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcyA9IDA7Cisg
ICAgICAgIENDU2V0dGluZ3M6OnNldE1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcygwKTsKICAgICB9
CiAKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5UZXN0KCkKQEAgLTIyNDAsNyArMjIzOCw3IEBAIHB1
YmxpYzoKICAgICAgICAgLCBtX251bUNvbW1pdHMoMCkKICAgICB7CiAgICAgICAgIC8vIEFsbG93
IG9uZSBwYXJ0aWFsIHRleHR1cmUgdXBkYXRlLgotICAgICAgICBtX3NldHRpbmdzLm1heFBhcnRp
YWxUZXh0dXJlVXBkYXRlcyA9IDE7CisgICAgICAgIENDU2V0dGluZ3M6OnNldE1heFBhcnRpYWxU
ZXh0dXJlVXBkYXRlcygxKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5UZXN0KCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNo
cm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5
ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IGE1NjUxNDZhNWQ0OTE5NjViN2IxYWQyNWQ2ZmU2OWM1
MTUxNTQwZjkuLjc0ZjI2ZDBkYjU5ZjgzNTIwYTE3NDUzY2NkNjFlZDJhMjk2NDNkNmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVt
VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVy
Q2hyb21pdW1UZXN0LmNwcApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAg
ICAgRmFrZUNDTGF5ZXJUcmVlSG9zdCgpCi0gICAgICAgIDogQ0NMYXllclRyZWVIb3N0KCZtX2Ns
aWVudCwgQ0NTZXR0aW5ncygpKQorICAgICAgICA6IENDTGF5ZXJUcmVlSG9zdCgmbV9jbGllbnQs
IENDTGF5ZXJUcmVlU2V0dGluZ3MoKSkKICAgICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IDgyMTNkZDgx
MjA3MWU1YTM1MGMyZDVmMTc2MGUwYmJmYThkNDhmNWUuLmNlZjM1Y2M0YzdkMzQ5YjQ4M2IzYzZm
YWQ4MGU3MDIzOTg5OTRkNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIG5hbWVzcGFjZSB7CiBj
bGFzcyBNb2NrQ0NMYXllclRyZWVIb3N0IDogcHVibGljIENDTGF5ZXJUcmVlSG9zdCB7CiBwdWJs
aWM6CiAgICAgTW9ja0NDTGF5ZXJUcmVlSG9zdCgpCi0gICAgICAgIDogQ0NMYXllclRyZWVIb3N0
KCZtX2Zha2VDbGllbnQsIENDU2V0dGluZ3MoKSkKKyAgICAgICAgOiBDQ0xheWVyVHJlZUhvc3Qo
Jm1fZmFrZUNsaWVudCwgQ0NMYXllclRyZWVTZXR0aW5ncygpKQogICAgIHsKICAgICAgICAgaW5p
dGlhbGl6ZSgpOwogICAgIH0KQEAgLTYxNCw3ICs2MTQsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6
CiAgICAgRmFrZUNDTGF5ZXJUcmVlSG9zdCgpCi0gICAgICAgIDogQ0NMYXllclRyZWVIb3N0KCZt
X2NsaWVudCwgQ0NTZXR0aW5ncygpKQorICAgICAgICA6IENDTGF5ZXJUcmVlSG9zdCgmbV9jbGll
bnQsIENDTGF5ZXJUcmVlU2V0dGluZ3MoKSkKICAgICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0
LmNwcAppbmRleCBlODZmZDBiZTEwOTJmZjZiYmUwZWVmOTY1ZjBmNGU3YTBjMDYxOGU2Li4wYmYx
N2Y3M2IyMmMyNWFlYTUxNzU1YWYwNjc0NzJjM2Y4N2JmNmRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5j
cHAKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogCiAgICAgLy8gQ0NSZW5kZXJlckNsaWVudCBt
ZXRob2RzLgogICAgIHZpcnR1YWwgY29uc3QgSW50U2l6ZSYgZGV2aWNlVmlld3BvcnRTaXplKCkg
Y29uc3QgT1ZFUlJJREUgeyBzdGF0aWMgSW50U2l6ZSBmYWtlU2l6ZTsgcmV0dXJuIGZha2VTaXpl
OyB9Ci0gICAgdmlydHVhbCBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IE9WRVJS
SURFIHsgc3RhdGljIENDU2V0dGluZ3MgZmFrZVNldHRpbmdzOyByZXR1cm4gZmFrZVNldHRpbmdz
OyB9CisgICAgdmlydHVhbCBjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncygpIGNv
bnN0IE9WRVJSSURFIHsgc3RhdGljIENDTGF5ZXJUcmVlU2V0dGluZ3MgZmFrZVNldHRpbmdzOyBy
ZXR1cm4gZmFrZVNldHRpbmdzOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZExvc2VDb250ZXh0KCkg
T1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZSgpIE9W
RVJSSURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRGdWxsUm9vdExheWVyRGFtYWdlKCkgT1ZF
UlJJREUgeyBtX3NldEZ1bGxSb290TGF5ZXJEYW1hZ2VDb3VudCsrOyB9CkBAIC0xODEsNyArMTgx
LDcgQEAgVEVTVF9GKExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QsIFN3YXBCdWZmZXJzV2hpbGVC
YWNrYnVmZmVyRGlzY2FyZGVkU2hvdWxkSWdub3IKICAgICBzd2FwQnVmZmVycygpOwogICAgIEVY
UEVDVF9FUSgwLCBtX21vY2tDb250ZXh0LmZyYW1lQ291bnQoKSk7CiAgICAgRVhQRUNUX0VRKDIs
IG1fbW9ja0NsaWVudC5zZXRGdWxsUm9vdExheWVyRGFtYWdlQ291bnQoKSk7Ci0gICAgCisKICAg
ICBzd2FwQnVmZmVycygpOwogICAgIEVYUEVDVF9FUSgwLCBtX21vY2tDb250ZXh0LmZyYW1lQ291
bnQoKSk7CiAgICAgRVhQRUNUX0VRKDMsIG1fbW9ja0NsaWVudC5zZXRGdWxsUm9vdExheWVyRGFt
YWdlQ291bnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Rl
eHR1cmVMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L1RleHR1cmVMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggYjYwMDE3ZmQ5YWEwODBiNGZkN2Y2
OWY5YTBmZWUwYzI2OGI0NDllYS4uZDBjYzNkOTZmMTRlYmNmZThkM2M5OGIzZGY2MjdjMGQ2M2E0
OGNlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UZXh0dXJlTGF5
ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGV4
dHVyZUxheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2Ugewog
Y2xhc3MgTW9ja0NDTGF5ZXJUcmVlSG9zdCA6IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3QgewogcHVi
bGljOgogICAgIE1vY2tDQ0xheWVyVHJlZUhvc3QoKQotICAgICAgICA6IENDTGF5ZXJUcmVlSG9z
dCgmbV9mYWtlQ2xpZW50LCBDQ1NldHRpbmdzKCkpCisgICAgICAgIDogQ0NMYXllclRyZWVIb3N0
KCZtX2Zha2VDbGllbnQsIENDTGF5ZXJUcmVlU2V0dGluZ3MoKSkKICAgICB7CiAgICAgICAgIGlu
aXRpYWxpemUoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCBmMGMxMzEzZjkwZWU3NTJkNGMy
MjE3OGFkMzk0NDc4YjI1NzYxNjIwLi43Nzk0ZGU0YTA3MjM4ZTZmMTMxZmQ1OTAwNGM5YTRjNWJh
YjZjZDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGls
ZWRMYXllckNocm9taXVtVGVzdC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDQ1Rp
bGVkTGF5ZXJUZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiRmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVu
dC5oIgogI2luY2x1ZGUgIldlYkNvbXBvc2l0b3IuaCIKKyNpbmNsdWRlICJjYy9DQ1NldHRpbmdz
LmgiCiAjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIiAvLyBGb3IgRGVidWdTY29w
ZWRTZXRJbXBsVGhyZWFkCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KICNpbmNsdWRlIDxwdWJs
aWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KQEAgLTc5Nyw3ICs3OTgsNyBAQCBURVNUKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHNraXBzRHJhd0dldHNSZXNldCkKICAgICAvLyBJbml0aWFs
aXplIHdpdGhvdXQgdGhyZWFkaW5nIHN1cHBvcnQuCiAgICAgV2ViS2l0OjpXZWJDb21wb3NpdG9y
Ojppbml0aWFsaXplKDApOwogICAgIEZha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQgZmFrZUNDTGF5
ZXJUcmVlSG9zdENsaWVudDsKLSAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0PiBjY0xheWVyVHJl
ZUhvc3QgPSBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSgmZmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVu
dCwgQ0NTZXR0aW5ncygpKTsKKyAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0PiBjY0xheWVyVHJl
ZUhvc3QgPSBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSgmZmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVu
dCwgQ0NMYXllclRyZWVTZXR0aW5ncygpKTsKIAogICAgIC8vIENyZWF0ZSB0d28gMzAwIHggMzAw
IHRpbGVkIGxheWVycy4KICAgICBJbnRTaXplIGNvbnRlbnRCb3VuZHMoMzAwLCAzMDApOwpAQCAt
ODczLDggKzg3NCw4IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaHVnZUxheWVyVXBk
YXRlQ3Jhc2gpCiAKIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcGFydGlhbFVwZGF0ZXMp
CiB7Ci0gICAgQ0NTZXR0aW5ncyBzZXR0aW5nczsKLSAgICBzZXR0aW5ncy5tYXhQYXJ0aWFsVGV4
dHVyZVVwZGF0ZXMgPSA0OworICAgIENDTGF5ZXJUcmVlU2V0dGluZ3Mgc2V0dGluZ3M7CisgICAg
Q0NTZXR0aW5nczo6c2V0TWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKDQpOwogICAgIC8vIEluaXRp
YWxpemUgd2l0aG91dCB0aHJlYWRpbmcgc3VwcG9ydC4KICAgICBXZWJLaXQ6OldlYkNvbXBvc2l0
b3I6OmluaXRpYWxpemUoMCk7CiAgICAgRmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudCBmYWtlQ0NM
YXllclRyZWVIb3N0Q2xpZW50OwpAQCAtOTk1LDYgKzk5Niw3IEBAIFRFU1QoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgcGFydGlhbFVwZGF0ZXMpCiAgICAgY2NMYXllclRyZWVIb3N0LT5zZXRSb290
TGF5ZXIoMCk7CiAgICAgY2NMYXllclRyZWVIb3N0LmNsZWFyKCk7CiAgICAgV2ViS2l0OjpXZWJD
b21wb3NpdG9yOjpzaHV0ZG93bigpOworICAgIENDU2V0dGluZ3M6OnJlc2V0KCk7CiB9CiAKIFRF
U1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aG91dE9jY2x1c2lvbikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVHJlZVN5bmNocm9uaXpl
clRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UcmVlU3luY2hyb25pemVy
VGVzdC5jcHAKaW5kZXggZWRkZWQ1YWQyZWJkNjc2M2RjZTFjODRkMTQ0NGI4M2I3ZjgwYTgwNi4u
MDg1OTdmMWRjNjJkMzAzYTMxZjUwNWViMTZhNjE2MDA1OWVlYjhiMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UcmVlU3luY2hyb25pemVyVGVzdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UcmVlU3luY2hyb25pemVyVGVzdC5jcHAKQEAg
LTE2Myw3ICsxNjMsNyBAQCBURVNUKFRyZWVTeW5jaHJvbml6ZXJUZXN0LCBzeW5jU2ltcGxlVHJl
ZUZyb21FbXB0eSkKIHsKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKIAotICAg
IENDU2V0dGluZ3Mgc2V0dGluZ3M7CisgICAgQ0NMYXllclRyZWVTZXR0aW5ncyBzZXR0aW5nczsK
ICAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gaG9zdEltcGwgPSBDQ0xheWVyVHJlZUhv
c3RJbXBsOjpjcmVhdGUoc2V0dGluZ3MsIDApOwogCiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+
IGxheWVyVHJlZVJvb3QgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKQEAgLTE4MSw3ICsxODEs
NyBAQCBURVNUKFRyZWVTeW5jaHJvbml6ZXJUZXN0LCBzeW5jU2ltcGxlVHJlZVJldXNpbmdMYXll
cnMpCiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7CiAgICAgVmVjdG9yPGludD4g
Y2NMYXllckRlc3RydWN0aW9uTGlzdDsKIAotICAgIENDU2V0dGluZ3Mgc2V0dGluZ3M7CisgICAg
Q0NMYXllclRyZWVTZXR0aW5ncyBzZXR0aW5nczsKICAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0
SW1wbD4gaG9zdEltcGwgPSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoc2V0dGluZ3MsIDAp
OwogCiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGxheWVyVHJlZVJvb3QgPSBNb2NrTGF5ZXJD
aHJvbWl1bTo6Y3JlYXRlKCZjY0xheWVyRGVzdHJ1Y3Rpb25MaXN0KTsKQEAgLTIxMSw3ICsyMTEs
NyBAQCBURVNUKFRyZWVTeW5jaHJvbml6ZXJUZXN0LCBzeW5jU2ltcGxlVHJlZUFuZFRyYWNrU3Rh
Y2tpbmdPcmRlckNoYW5nZSkKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKICAg
ICBWZWN0b3I8aW50PiBjY0xheWVyRGVzdHJ1Y3Rpb25MaXN0OwogCi0gICAgQ0NTZXR0aW5ncyBz
ZXR0aW5nczsKKyAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOwogICAgIE93blB0cjxD
Q0xheWVyVHJlZUhvc3RJbXBsPiBob3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0
ZShzZXR0aW5ncywgMCk7CiAKICAgICAvLyBTZXQgdXAgdGhlIHRyZWUgYW5kIHN5bmMgb25jZS4g
Y2hpbGQyIG5lZWRzIHRvIGJlIHN5bmNlZCBoZXJlLCB0b28sIGV2ZW4gdGhvdWdoIHdlCkBAIC0y
NDAsNyArMjQwLDcgQEAgVEVTVChUcmVlU3luY2hyb25pemVyVGVzdCwgc3luY1NpbXBsZVRyZWVB
bmRQcm9wZXJ0aWVzKQogewogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwogCi0g
ICAgQ0NTZXR0aW5ncyBzZXR0aW5nczsKKyAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdz
OwogICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBob3N0SW1wbCA9IENDTGF5ZXJUcmVl
SG9zdEltcGw6OmNyZWF0ZShzZXR0aW5ncywgMCk7CiAKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1
bT4gbGF5ZXJUcmVlUm9vdCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwpAQCAtMjc3LDcgKzI3
Nyw3IEBAIFRFU1QoVHJlZVN5bmNocm9uaXplclRlc3QsIHJldXNlQ0NMYXllcnNBZnRlclN0cnVj
dHVyYWxDaGFuZ2UpCiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7CiAgICAgVmVj
dG9yPGludD4gY2NMYXllckRlc3RydWN0aW9uTGlzdDsKIAotICAgIENDU2V0dGluZ3Mgc2V0dGlu
Z3M7CisgICAgQ0NMYXllclRyZWVTZXR0aW5ncyBzZXR0aW5nczsKICAgICBPd25QdHI8Q0NMYXll
clRyZWVIb3N0SW1wbD4gaG9zdEltcGwgPSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoc2V0
dGluZ3MsIDApOwogCiAgICAgLy8gU2V0IHVwIGEgdHJlZSB3aXRoIHRoaXMgc29ydCBvZiBzdHJ1
Y3R1cmU6CkBAIC0zMjcsNyArMzI3LDcgQEAgVEVTVChUcmVlU3luY2hyb25pemVyVGVzdCwgc3lu
Y1NpbXBsZVRyZWVUaGVuRGVzdHJveSkKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1w
bDsKICAgICBWZWN0b3I8aW50PiBjY0xheWVyRGVzdHJ1Y3Rpb25MaXN0OwogCi0gICAgQ0NTZXR0
aW5ncyBzZXR0aW5nczsKKyAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOwogICAgIE93
blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBob3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6
OmNyZWF0ZShzZXR0aW5ncywgMCk7CiAKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gb2xkTGF5
ZXJUcmVlUm9vdCA9IE1vY2tMYXllckNocm9taXVtOjpjcmVhdGUoJmNjTGF5ZXJEZXN0cnVjdGlv
bkxpc3QpOwpAQCAtMzYwLDcgKzM2MCw3IEBAIFRFU1QoVHJlZVN5bmNocm9uaXplclRlc3QsIHN5
bmNNYXNrUmVwbGljYUFuZFJlcGxpY2FNYXNrTGF5ZXJzKQogewogICAgIERlYnVnU2NvcGVkU2V0
SW1wbFRocmVhZCBpbXBsOwogCi0gICAgQ0NTZXR0aW5ncyBzZXR0aW5nczsKKyAgICBDQ0xheWVy
VHJlZVNldHRpbmdzIHNldHRpbmdzOwogICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBo
b3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShzZXR0aW5ncywgMCk7CiAKICAg
ICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbGF5ZXJUcmVlUm9vdCA9IExheWVyQ2hyb21pdW06OmNy
ZWF0ZSgpOwpAQCAtNDA2LDcgKzQwNiw3IEBAIFRFU1QoVHJlZVN5bmNocm9uaXplclRlc3QsIHN5
bmNocm9uaXplQW5pbWF0aW9ucykKIHsKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1w
bDsKIAotICAgIENDU2V0dGluZ3Mgc2V0dGluZ3M7CisgICAgQ0NMYXllclRyZWVTZXR0aW5ncyBz
ZXR0aW5nczsKICAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gaG9zdEltcGwgPSBDQ0xh
eWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoc2V0dGluZ3MsIDApOwogCiAgICAgUmVmUHRyPExheWVy
Q2hyb21pdW0+IGxheWVyVHJlZVJvb3QgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146086</attachid>
            <date>2012-06-06 12:44:08 -0700</date>
            <delta_ts>2012-06-06 21:37:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88384-20120606154407.patch</filename>
            <type>text/plain</type>
            <size>88764</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5NTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA1Mjg3MjBjZTc1ODhh
NjI5NjE1NzUyZTJkZWJiM2Y2YzM1YmQ3ZjU2Li4xMDVjMzVhNWRhOWZkYzRlZWEyODUyZjMyMjA4
OWY2OWM4NjMxZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNi0wNiAg
SWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IENlcnRhaW4gc2V0dGluZ3MgaW4gQ0NTZXR0aW5ncyBjb3VsZCBiZSBnbG9iYWwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4Mzg0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMv
V2ViTGF5ZXJUcmVlVmlldy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgIChTZXR0aW5n
cyk6CisKIDIwMTItMDYtMDUgIE1hcmsgUGlsZ3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFtDaHJvbWl1bV0gTW92ZSBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UgdG8g
UGxhdGZvcm0uaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDRkNTFiNTMxNDg4NDQzMTFkODFlZWU3YTFkMTFlNDA5
ODRjNGRjNzEuLjhkNmRmYjU5ZTk4ZTNlNTRhNDg0Yzk5OTMwYWM2ZmY4NmQ2NTU0M2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMTIgQEAKKzIwMTItMDYtMDYgIElhbiBWb2xsaWNrICA8dm9sbGlj
a0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBDZXJ0YWluIHNldHRpbmdzIGlu
IENDU2V0dGluZ3MgY291bGQgYmUgZ2xvYmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04ODM4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE5vIGZ1bmN0aW9uYWxpdHkgY2hhbmdl
KS4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OlNldHRp
bmdzKToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U2V0dGluZ3M6OnNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseSk6CisgICAgICAgIChX
ZWJDb3JlOjpTZXR0aW5nczo6c2V0VXNlc1BhZ2VDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXR0aW5nczo6c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2V0dGluZ3M6OnNldFNob3dEZWJ1Z0JvcmRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6
U2V0dGluZ3M6OnNldFNob3dSZXBhaW50Q291bnRlcik6CisgICAgICAgICogcGFnZS9TZXR0aW5n
cy5oOgorICAgICAgICAoU2V0dGluZ3MpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRMYXllckNocm9taXVtOjpjcmVhdGVUZXh0dXJlVXBkYXRlcklmTmVlZGVkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OmFkZEFuaW1hdGlvbik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlVGlsZVNpemVBbmRUaWxpbmdP
cHRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdS
ZWN0SGlzdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0RlYnVnUmVjdEhpc3Rvcnk6OmVu
YWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NEZWJ1Z1JlY3RIaXN0b3J5OjpzYXZlRGVidWdS
ZWN0c0ZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KENDRGVidWdSZWN0SGlzdG9yeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBE
aXNwbGF5OjplbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDSGVhZHNVcERpc3BsYXk6OnNo
b3dQbGF0Zm9ybUxheWVyVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5
OjpzaG93RGVidWdSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5Ojpk
cmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNDSGVhZHNVcERpc3BsYXk6OmRyYXdIdWRDb250ZW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3RGVidWdSZWN0cyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxh
eS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ0hlYWRzVXBEaXNwbGF5KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlcik6CisgICAgICAg
IChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmJ1ZmZlcmVkVXBkYXRlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnJlcXVlc3RQYXJ0aWFsVGV4dHVyZVVwZGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmFuaW1hdGVMYXllcnMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVTZXR0aW5nczo6Q0NMYXllclRyZWVTZXR0aW5ncyk6
CisgICAgICAgIChDQ0xheWVyVHJlZVNldHRpbmdzKToKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnNldHRpbmdzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpDQ0xheWVyVHJlZUhvc3RJbXBsKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRlclN1
cmZhY2VMYXllckxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6
YW5pbWF0ZUxheWVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5oOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0SW1wbCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5oOgorICAg
ICAgICAoQ0NSZW5kZXJlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlcmVyOjpz
ZXR0aW5ncyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTZXR0
aW5ncy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q0NTZXR0aW5nczo6Q0NTZXR0aW5n
cyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2V0dGluZ3M6OmFj
Y2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2V0dGluZ3M6
OnNldEFjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2V0
dGluZ3M6OnBlclRpbGVQYWludGluZ0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTZXR0
aW5nczo6c2V0UGVyVGlsZVBhaW50aW5nRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Nl
dHRpbmdzOjpwYXJ0aWFsU3dhcEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTZXR0aW5n
czo6c2V0UGFydGlhbFN3YXBFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2V0dGluZ3M6
OmFjY2VsZXJhdGVkQW5pbWF0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NldHRp
bmdzOjpzZXRBY2NlbGVyYXRlZEFuaW1hdGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NTZXR0aW5nczo6bWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDU2V0dGluZ3M6OnNldE1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcyk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1NldHRpbmdzOjpkZWZhdWx0VGlsZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NT
ZXR0aW5nczo6c2V0RGVmYXVsdFRpbGVTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2V0dGlu
Z3M6Om1heFVudGlsZWRMYXllclNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTZXR0aW5nczo6
c2V0TWF4VW50aWxlZExheWVyU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NldHRpbmdzOjph
Y2NlbGVyYXRlZFBhaW50aW5nRW5hYmxlZEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkND
U2V0dGluZ3M6OnNldEFjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkSW50ZXJuYWwpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NTZXR0aW5nczo6cGVyVGlsZVBhaW50aW5nRW5hYmxlZEludGVybmFsKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDU2V0dGluZ3M6OnNldFBlclRpbGVQYWludGluZ0VuYWJsZWRJ
bnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NldHRpbmdzOjpwYXJ0aWFsU3dhcEVuYWJs
ZWRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NldHRpbmdzOjpzZXRQYXJ0aWFsU3dh
cEVuYWJsZWRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NldHRpbmdzOjphY2NlbGVy
YXRlZEFuaW1hdGlvbkVuYWJsZWRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NldHRp
bmdzOjpzZXRBY2NlbGVyYXRlZEFuaW1hdGlvbkVuYWJsZWRJbnRlcm5hbCk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1NldHRpbmdzOjptYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXNJbnRlcm5hbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1NldHRpbmdzOjpzZXRNYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXNJ
bnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NldHRpbmdzOjpkZWZhdWx0VGlsZVNpemVJ
bnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NldHRpbmdzOjpzZXREZWZhdWx0VGlsZVNp
emVJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NldHRpbmdzOjptYXhVbnRpbGVkTGF5
ZXJTaXplSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTZXR0aW5nczo6c2V0TWF4VW50
aWxlZExheWVyU2l6ZUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2V0dGluZ3M6Omlu
c3RhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2V0dGluZ3M6OmluaXRpYWxpemUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NTZXR0aW5nczo6c2h1dGRvd24pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2V0dGluZ3MuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKENDU2V0dGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTZXR0aW5n
czo6fkNDU2V0dGluZ3MpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHA6
CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmg6CisgICAgICAgIChJbnRlcm5h
bFNldHRpbmdzKToKKwogMjAxMi0wNi0wNSAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGln
YWxpYS5jb20+CiAKICAgICAgICAgW0NhaXJvXSBbT3BlbkdMXSBFbmFibGUgR0xfT0VTX3N0YW5k
YXJkX2Rlcml2YXRpdmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGI2NjJkNzY1Yzcx
ZTc4NDE4OThlYmI4ZmQxNWZiMGJhNmZiZjNkYTUuLjM2ZWJmNTRjZDNhYjBlZmM2NjkwZDAzNDE1
N2FkMzQ1ZjA0MzIzYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzMg
QEAKKzIwMTItMDYtMDYgIElhbiBWb2xsaWNrICA8dm9sbGlja0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgW2Nocm9taXVtXSBDZXJ0YWluIHNldHRpbmdzIGluIENDU2V0dGluZ3MgY291bGQgYmUg
Z2xvYmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
ODM4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViS2l0Lmd5cGk6CisgICAgICAgICogcHVibGljL1dlYkNvbXBvc2l0b3IuaDoKKyAgICAgICAg
KFdlYkNvbXBvc2l0b3IpOgorICAgICAgICAqIHB1YmxpYy9XZWJTZXR0aW5ncy5oOgorICAgICAg
ICAqIHNyYy9XZWJDb21wb3NpdG9ySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBv
c2l0b3I6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpzaHV0
ZG93bik6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3I6OmFjY2VsZXJhdGVkUGFpbnRp
bmdFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvcjo6c2V0QWNjZWxlcmF0
ZWRQYWludGluZ0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29tcG9zaXRvcjo6cGVyVGlsZVBhaW50aW5nRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvbXBvc2l0b3I6OnNldFBlclRpbGVQYWludGluZ0VuYWJsZWQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb21wb3NpdG9yOjpwYXJ0aWFsU3dhcEVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb21wb3NpdG9yOjpzZXRQYXJ0aWFsU3dhcEVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb21wb3NpdG9yOjphY2NlbGVyYXRlZEFuaW1hdGlvbkVuYWJsZWQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb21wb3NpdG9yOjpzZXRBY2NlbGVyYXRlZEFuaW1hdGlvbkVuYWJsZWQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yOjptYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpzZXRNYXhQYXJ0aWFsVGV4dHVyZVVw
ZGF0ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpkZWZhdWx0VGlsZVNpemUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpzZXREZWZhdWx0VGlsZVNpemUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yOjptYXhVbnRpbGVkTGF5ZXJTaXplKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvcjo6c2V0TWF4VW50aWxlZExheWVyU2l6ZSk6Cisg
ICAgICAgICogc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6U2V0dGluZ3M6Om9wZXJhdG9yIENDTGF5
ZXJUcmVlU2V0dGluZ3MpOgorICAgICAgICAqIHNyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXdJbXBsOjpXZWJMYXllclRyZWVWaWV3
SW1wbCk6CisgICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlNldHRpbmdzSW1wbDo6V2ViU2V0dGluZ3NJbXBsKToKKyAgICAgICAgKiBzcmMvV2Vi
U2V0dGluZ3NJbXBsLmg6CisgICAgICAgIChXZWJTZXR0aW5nc0ltcGwpOgorICAgICAgICAqIHNy
Yy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpXZWJWaWV3
SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdBY3RpdmUpOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0
LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcDoKKyAgICAgICAg
KFdURjo6TW9ja0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUpOgorICAgICAgICAoV1RGOjpNb2Nr
TGF5ZXJUcmVlSG9zdEltcGw6Ok1vY2tMYXllclRyZWVIb3N0SW1wbCk6CisgICAgICAgIChXVEY6
Ok1vY2tMYXllclRyZWVIb3N0OjpjcmVhdGUpOgorICAgICAgICAoV1RGOjpNb2NrTGF5ZXJUcmVl
SG9zdDo6Y3JlYXRlTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAgICAoV1RGOjpNb2NrTGF5ZXJU
cmVlSG9zdDo6TW9ja0xheWVyVHJlZUhvc3QpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhv
c3RUZXN0OjpydW5UZXN0KToKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdFRlc3QpOgorICAgICAg
ICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0QXRvbWljQ29tbWl0OjpDQ0xheWVyVHJlZUhvc3RU
ZXN0QXRvbWljQ29tbWl0KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdEF0b21p
Y0NvbW1pdDo6YmVnaW5UZXN0KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdEF0
b21pY0NvbW1pdFdpdGhQYXJ0aWFsVXBkYXRlOjpDQ0xheWVyVHJlZUhvc3RUZXN0QXRvbWljQ29t
bWl0V2l0aFBhcnRpYWxVcGRhdGUpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0
QXRvbWljQ29tbWl0V2l0aFBhcnRpYWxVcGRhdGU6OmJlZ2luVGVzdCk6CisgICAgICAgICogdGVz
dHMvQ0NUZXN0Q29tbW9uLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuaC4KKyAgICAgICAgKFdlYktpdFRl
c3RzKToKKyAgICAgICAgKENDU2NvcGVkU2V0dGluZ3MpOgorICAgICAgICAoV2ViS2l0VGVzdHM6
OkNDU2NvcGVkU2V0dGluZ3M6OkNDU2NvcGVkU2V0dGluZ3MpOgorICAgICAgICAoV2ViS2l0VGVz
dHM6OkNDU2NvcGVkU2V0dGluZ3M6On5DQ1Njb3BlZFNldHRpbmdzKToKKyAgICAgICAgKiB0ZXN0
cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9MYXllckNo
cm9taXVtVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVz
dC5jcHA6CisgICAgICAgIChMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0KToKKyAgICAgICAgKFRF
U1RfRik6CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiB0ZXN0cy9UZXh0dXJlTGF5ZXJDaHJv
bWl1bVRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3Bw
OgorICAgICAgICAqIHRlc3RzL1RyZWVTeW5jaHJvbml6ZXJUZXN0LmNwcDoKKyAgICAgICAgKFdl
YktpdFRlc3RzOjpURVNUKToKKwogMjAxMi0wNi0wNSAgTWFyayBQaWxncmltICA8cGlsZ3JpbUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBNb3ZlIGNyZWF0ZUxvY2FsU3RvcmFn
ZU5hbWVzcGFjZSB0byBQbGF0Zm9ybS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1
bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCmluZGV4IDIzZDBkNjNjZTlkZDI4YTViNWJhZDcx
MjhlYWExNDlhOTczYjlkZTYuLjk5YjYwOWE1MjU4NzE4ODRhODZlNzgzY2MzNzUzMmM4MTJjNjlj
Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJU
cmVlVmlldy5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJU
cmVlVmlldy5oCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IENDTGF5ZXJUcmVlSG9zdDsKLXN0cnVjdCBDQ1NldHRpbmdzOworY2xhc3MgQ0NMYXllclRyZWVT
ZXR0aW5nczsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00OSwzNSArNDksMjMgQEAgY2xh
c3MgV2ViTGF5ZXJUcmVlVmlldyA6IHB1YmxpYyBXZWJOb25Db3B5YWJsZSB7CiBwdWJsaWM6CiAg
ICAgc3RydWN0IFNldHRpbmdzIHsKICAgICAgICAgU2V0dGluZ3MoKQotICAgICAgICAgICAgOiBh
Y2NlbGVyYXRlUGFpbnRpbmcoZmFsc2UpCi0gICAgICAgICAgICAsIGZvcmNlU29mdHdhcmVDb21w
b3NpdGluZyhmYWxzZSkKKyAgICAgICAgICAgIDogZm9yY2VTb2Z0d2FyZUNvbXBvc2l0aW5nKGZh
bHNlKQogICAgICAgICAgICAgLCBzaG93RlBTQ291bnRlcihmYWxzZSkKICAgICAgICAgICAgICwg
c2hvd1BsYXRmb3JtTGF5ZXJUcmVlKGZhbHNlKQogICAgICAgICAgICAgLCBzaG93UGFpbnRSZWN0
cyhmYWxzZSkKLSAgICAgICAgICAgICwgcmVmcmVzaFJhdGUoMCkKLSAgICAgICAgICAgICwgcGVy
VGlsZVBhaW50aW5nKGZhbHNlKQotICAgICAgICAgICAgLCBwYXJ0aWFsU3dhcEVuYWJsZWQoZmFs
c2UpCi0gICAgICAgICAgICAsIHRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZChmYWxzZSkKLSAgICAg
ICAgICAgICwgZGVmYXVsdFRpbGVTaXplKFdlYlNpemUoMjU2LCAyNTYpKQotICAgICAgICAgICAg
LCBtYXhVbnRpbGVkTGF5ZXJTaXplKFdlYlNpemUoNTEyLCA1MTIpKQogICAgICAgICAgICAgLCBk
ZXZpY2VTY2FsZUZhY3RvcigxKQorICAgICAgICAgICAgLCByZWZyZXNoUmF0ZSgwKQogICAgICAg
ICB7CiAgICAgICAgIH0KIAotICAgICAgICBib29sIGFjY2VsZXJhdGVQYWludGluZzsKICAgICAg
ICAgYm9vbCBmb3JjZVNvZnR3YXJlQ29tcG9zaXRpbmc7CiAgICAgICAgIGJvb2wgc2hvd0ZQU0Nv
dW50ZXI7CiAgICAgICAgIGJvb2wgc2hvd1BsYXRmb3JtTGF5ZXJUcmVlOwogICAgICAgICBib29s
IHNob3dQYWludFJlY3RzOwotICAgICAgICBkb3VibGUgcmVmcmVzaFJhdGU7Ci0gICAgICAgIGJv
b2wgcGVyVGlsZVBhaW50aW5nOwotICAgICAgICBib29sIHBhcnRpYWxTd2FwRW5hYmxlZDsKLSAg
ICAgICAgYm9vbCB0aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQ7Ci0gICAgICAgIFdlYlNpemUgZGVm
YXVsdFRpbGVTaXplOwotICAgICAgICBXZWJTaXplIG1heFVudGlsZWRMYXllclNpemU7CiAgICAg
ICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yOworICAgICAgICBkb3VibGUgcmVmcmVzaFJhdGU7
CiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgICAgIG9wZXJhdG9yIFdlYkNvcmU6OkND
U2V0dGluZ3MoKSBjb25zdDsKKyAgICAgICAgb3BlcmF0b3IgV2ViQ29yZTo6Q0NMYXllclRyZWVT
ZXR0aW5ncygpIGNvbnN0OwogI2VuZGlmCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGNi
ZTJjNGZjMTU2MjE4ODNhOTY5YWZjNjZiZTU1NzhiZjdkNDk1ZmUuLmEzZGJkODM0M2JjNGY2ZDdj
ZWZkY2Y1NzUxYmQ0ZGNhNzFkZmI1NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTM3NDIsNiArMzc0
Miw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29w
ZWRUaHJlYWRQcm94eS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmgnLAorICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2V0dGluZ3MuY3BwJywKKyAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NldHRpbmdzLmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmNw
cCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFyZWRR
dWFkU3RhdGUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaW5nbGVUaHJlYWRQcm94eS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAppbmRleCA1
ZmU5Yzk4NGYxNTE0YjY0NTU2NjcwMWRlMmNjZmNmNzVkNmY5OGY1Li5mYWMwNjllYjE4ZjExYTk5
YzQ2NzhhMzY4Y2VlYmNmMzIxYzRmMmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcApAQCAt
MjU4LDE1ICsyNTgsMTIgQEAgU2V0dGluZ3M6OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCiAgICAgLCBt
X3Nob3VsZERpc3BsYXlDYXB0aW9ucyhmYWxzZSkKICAgICAsIG1fc2hvdWxkRGlzcGxheVRleHRE
ZXNjcmlwdGlvbnMoZmFsc2UpCiAjZW5kaWYKLSAgICAsIG1fcGVyVGlsZURyYXdpbmdFbmFibGVk
KGZhbHNlKQotICAgICwgbV9wYXJ0aWFsU3dhcEVuYWJsZWQoZmFsc2UpCiAgICAgLCBtX3Njcm9s
bGluZ0Nvb3JkaW5hdG9yRW5hYmxlZChmYWxzZSkKICAgICAsIG1fbm90aWZpY2F0aW9uc0VuYWJs
ZWQodHJ1ZSkKICAgICAsIG1fbmVlZHNJc0xvYWRpbmdJbkFQSVNlbnNlUXVpcmsoZmFsc2UpCiAj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICAsIG1fdG91Y2hFdmVudEVtdWxhdGlvbkVuYWJs
ZWQoZmFsc2UpCiAjZW5kaWYKLSAgICAsIG1fdGhyZWFkZWRBbmltYXRpb25FbmFibGVkKGZhbHNl
KQogICAgICwgbV9zaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbihmYWxzZSkKICAgICAsIG1f
d2FudHNCYWxhbmNlZFNldERlZmVyc0xvYWRpbmdCZWhhdmlvcihmYWxzZSkKICAgICAsIG1fcmVx
dWVzdEFuaW1hdGlvbkZyYW1lRW5hYmxlZCh0cnVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCmluZGV4
IDdmMWVjYTdkYmQxMzk0NTg3ZGU3MmYwMWY3YTVmYjdjNWI1YjUzOTguLjM2ZDhmOWExNTUxNGZk
M2IyYzIzMTVlYWI3NDE5NmZmNWIyYmU5MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKQEAgLTUz
OSwxMiArNTM5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIHNob3VsZERp
c3BsYXlUZXh0RGVzY3JpcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGREaXNwbGF5VGV4
dERlc2NyaXB0aW9uczsgfQogI2VuZGlmCiAKLSAgICAgICAgdm9pZCBzZXRQZXJUaWxlRHJhd2lu
Z0VuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fcGVyVGlsZURyYXdpbmdFbmFibGVkID0gZW5hYmxl
ZDsgfQotICAgICAgICBib29sIHBlclRpbGVEcmF3aW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGVyVGlsZURyYXdpbmdFbmFibGVkOyB9Ci0KLSAgICAgICAgdm9pZCBzZXRQYXJ0aWFsU3dh
cEVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fcGFydGlhbFN3YXBFbmFibGVkID0gZW5hYmxlZDsg
fQotICAgICAgICBib29sIHBhcnRpYWxTd2FwRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFy
dGlhbFN3YXBFbmFibGVkOyB9Ci0KICAgICAgICAgdm9pZCBzZXRTY3JvbGxpbmdDb29yZGluYXRv
ckVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3JFbmFibGVkID0g
ZW5hYmxlZDsgfQogICAgICAgICBib29sIHNjcm9sbGluZ0Nvb3JkaW5hdG9yRW5hYmxlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3JFbmFibGVkOyB9CiAKQEAgLTU2MCw5
ICs1NTQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgaXNUb3VjaEV2ZW50
RW11bGF0aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fdG91Y2hFdmVudEVtdWxhdGlvbkVu
YWJsZWQ7IH0KICNlbmRpZgogCi0gICAgICAgIHZvaWQgc2V0VGhyZWFkZWRBbmltYXRpb25FbmFi
bGVkKGJvb2wgZW5hYmxlZCkgeyBtX3RocmVhZGVkQW5pbWF0aW9uRW5hYmxlZCA9IGVuYWJsZWQ7
IH0KLSAgICAgICAgYm9vbCB0aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX3RocmVhZGVkQW5pbWF0aW9uRW5hYmxlZDsgfQotCiAgICAgICAgIHZvaWQgc2V0U2hvdWxk
UmVzcGVjdEltYWdlT3JpZW50YXRpb24oYm9vbCBlbmFibGVkKSB7IG1fc2hvdWxkUmVzcGVjdElt
YWdlT3JpZW50YXRpb24gPSBlbmFibGVkOyB9CiAgICAgICAgIGJvb2wgc2hvdWxkUmVzcGVjdElt
YWdlT3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFJlc3BlY3RJbWFnZU9yaWVu
dGF0aW9uOyB9CiAKQEAgLTc1MCw5ICs3NDEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIGJvb2wgbV9zaG91bGREaXNwbGF5Q2FwdGlvbnMgOiAxOwogICAgICAgICBib29sIG1fc2hv
dWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMgOiAxOwogI2VuZGlmCi0gICAgICAgIGJvb2wgbV9w
ZXJUaWxlRHJhd2luZ0VuYWJsZWQgOiAxOwotICAgICAgICBib29sIG1fcGFydGlhbFN3YXBFbmFi
bGVkIDogMTsKLQogICAgICAgICBib29sIG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3JFbmFibGVkIDog
MTsKIAogICAgICAgICBib29sIG1fbm90aWZpY2F0aW9uc0VuYWJsZWQgOiAxOwpAQCAtNzYxLDcg
Kzc0OSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQog
ICAgICAgICBib29sIG1fdG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQgOiAxOwogI2VuZGlmCi0g
ICAgICAgIGJvb2wgbV90aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQgOiAxOwogICAgICAgICBib29s
IG1fc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24gOiAxOwogICAgICAgICBib29sIG1fd2Fu
dHNCYWxhbmNlZFNldERlZmVyc0xvYWRpbmdCZWhhdmlvciA6IDE7CiAgICAgICAgIGJvb2wgbV9y
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVFbmFibGVkIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNo
cm9taXVtLmNwcAppbmRleCBhZThkMzIwOGJmYmFiOGQ3YWRlOTgyYTdkOGE5M2EyZDgzZWQ3ZGFm
Li41MDNkZTJlMzkzZjEwZmE5ZDBkZDk5NTk4Zjg5ZTIzNTYyM2VkZTNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJv
bWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q29udGVudExheWVyQ2hyb21pdW0uY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiTGF5
ZXJSZW5kZXJlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdXBwb3J0LmgiCiAjaW5j
bHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCisjaW5jbHVkZSAiY2MvQ0NTZXR0aW5ncy5oIgog
I2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5o
PgogCkBAIC0xMjUsOSArMTI2LDkgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
VGV4dHVyZVVwZGF0ZXJJZk5lZWRlZCgpCiB7CiAgICAgaWYgKG1fdGV4dHVyZVVwZGF0ZXIpCiAg
ICAgICAgIHJldHVybjsKLSAgICBpZiAobGF5ZXJUcmVlSG9zdCgpLT5zZXR0aW5ncygpLmFjY2Vs
ZXJhdGVQYWludGluZykKKyAgICBpZiAoQ0NTZXR0aW5nczo6YWNjZWxlcmF0ZWRQYWludGluZ0Vu
YWJsZWQoKSkKICAgICAgICAgbV90ZXh0dXJlVXBkYXRlciA9IEZyYW1lQnVmZmVyU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKENvbnRlbnRMYXllclBhaW50ZXI6OmNy
ZWF0ZShtX2RlbGVnYXRlKSk7Ci0gICAgZWxzZSBpZiAobGF5ZXJUcmVlSG9zdCgpLT5zZXR0aW5n
cygpLnBlclRpbGVQYWludGluZykKKyAgICBlbHNlIGlmIChDQ1NldHRpbmdzOjpwZXJUaWxlUGFp
bnRpbmdFbmFibGVkKCkpCiAgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXIgPSBCaXRtYXBTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUoQ29udGVudExheWVyUGFpbnRlcjo6
Y3JlYXRlKG1fZGVsZWdhdGUpLCBsYXllclRyZWVIb3N0KCktPmxheWVyUmVuZGVyZXJDYXBhYmls
aXRpZXMoKS51c2luZ01hcFN1Yik7CiAgICAgZWxzZQogICAgICAgICBtX3RleHR1cmVVcGRhdGVy
ID0gQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKENvbnRlbnRMYXllclBh
aW50ZXI6OmNyZWF0ZShtX2RlbGVnYXRlKSwgbGF5ZXJUcmVlSG9zdCgpLT5sYXllclJlbmRlcmVy
Q2FwYWJpbGl0aWVzKCkudXNpbmdNYXBTdWIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAppbmRleCBm
NjFmZDM1ZDUzMDAxNDFmMmIyZmYyNmI4NzY0YjhmNjJlMDNlMjNkLi43Mzc5MWZkNjA4OWVhYmVh
Y2JhMWNmYTQ0MWUzMmJhZWU0ZGFmNDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcApAQCAtNDIs
NiArNDIsNyBAQAogI2luY2x1ZGUgImNjL0NDTGF5ZXJBbmltYXRpb25EZWxlZ2F0ZS5oIgogI2lu
Y2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0Lmgi
CisjaW5jbHVkZSAiY2MvQ0NTZXR0aW5ncy5oIgogI2luY2x1ZGUgInNraWEvZXh0L3BsYXRmb3Jt
X2NhbnZhcy5oIgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAtNjAxLDExICs2MDIsMTEgQEAg
dm9pZCBMYXllckNocm9taXVtOjpzZXRUcmFuc2Zvcm1Gcm9tQW5pbWF0aW9uKGNvbnN0IFdlYlRy
YW5zZm9ybWF0aW9uTWF0cml4JiB0cmEKIAogYm9vbCBMYXllckNocm9taXVtOjphZGRBbmltYXRp
b24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlcywgY29uc3QgSW50U2l6ZSYgYm94U2l6
ZSwgY29uc3QgQW5pbWF0aW9uKiBhbmltYXRpb24sIGludCBhbmltYXRpb25JZCwgaW50IGdyb3Vw
SWQsIGRvdWJsZSB0aW1lT2Zmc2V0KQogewotICAgIGlmICghbV9sYXllclRyZWVIb3N0IHx8ICFt
X2xheWVyVHJlZUhvc3QtPnNldHRpbmdzKCkudGhyZWFkZWRBbmltYXRpb25FbmFibGVkKQorICAg
IGlmICghQ0NTZXR0aW5nczo6YWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgYWRkZWRBbmltYXRpb24gPSBtX2xheWVyQW5pbWF0
aW9uQ29udHJvbGxlci0+YWRkQW5pbWF0aW9uKHZhbHVlcywgYm94U2l6ZSwgYW5pbWF0aW9uLCBh
bmltYXRpb25JZCwgZ3JvdXBJZCwgdGltZU9mZnNldCk7Ci0gICAgaWYgKGFkZGVkQW5pbWF0aW9u
KSB7CisgICAgaWYgKGFkZGVkQW5pbWF0aW9uICYmIG1fbGF5ZXJUcmVlSG9zdCkgewogICAgICAg
ICBtX2xheWVyVHJlZUhvc3QtPmRpZEFkZEFuaW1hdGlvbigpOwogICAgICAgICBzZXROZWVkc0Nv
bW1pdCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4
IDhkZTQ0OWMwMzRkMDhlZDUyNzk3ZmNjZGMyYTViNWY1MTRkYjM2NzYuLmMwMjUyNjYxYTZiYTc5
YWRhZDZiYThkM2FlN2Y3MWYwNTgzM2YzZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmNwcApAQCAtNjQsNiArNjQsNyBAQAogI2luY2x1ZGUgImNjL0NDUmVuZGVyUGFzcy5o
IgogI2luY2x1ZGUgImNjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NS
ZW5kZXJTdXJmYWNlRmlsdGVycy5oIgorI2luY2x1ZGUgImNjL0NDU2V0dGluZ3MuaCIKICNpbmNs
dWRlICJjYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVyZURy
YXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaWxlRHJhd1F1YWQuaCIKQEAgLTI2OCw3ICsyNjks
NyBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZSgpCiAKICAgICBtX2Nv
bnRleHQtPnNldENvbnRleHRMb3N0Q2FsbGJhY2soQ29udGV4dExvc3RDYWxsYmFja0FkYXB0ZXI6
OmNyZWF0ZShtX2NsaWVudCkpOwogCi0gICAgaWYgKHNldHRpbmdzKCkuYWNjZWxlcmF0ZVBhaW50
aW5nICYmIGNvbnRleHRTdXBwb3J0c0FjY2VsZXJhdGVkUGFpbnRpbmcobV9jb250ZXh0LmdldCgp
KSkKKyAgICBpZiAoQ0NTZXR0aW5nczo6YWNjZWxlcmF0ZWRQYWludGluZ0VuYWJsZWQoKSAmJiBj
b250ZXh0U3VwcG9ydHNBY2NlbGVyYXRlZFBhaW50aW5nKG1fY29udGV4dC5nZXQoKSkpCiAgICAg
ICAgIG1fY2FwYWJpbGl0aWVzLnVzaW5nQWNjZWxlcmF0ZWRQYWludGluZyA9IHRydWU7CiAKICAg
ICBXZWJDb3JlOjpFeHRlbnNpb25zM0QqIGV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKTsKQEAgLTI3Niw3ICsyNzcsNyBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
aW5pdGlhbGl6ZSgpCiAgICAgaWYgKG1fY2FwYWJpbGl0aWVzLmNvbnRleHRIYXNDYWNoZWRGcm9u
dEJ1ZmZlcikKICAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgiR0xfQ0hST01JVU1f
ZnJvbnRfYnVmZmVyX2NhY2hlZCIpOwogCi0gICAgbV9jYXBhYmlsaXRpZXMudXNpbmdQYXJ0aWFs
U3dhcCA9IHNldHRpbmdzKCkucGFydGlhbFN3YXBFbmFibGVkICYmIGV4dGVuc2lvbnMtPnN1cHBv
cnRzKCJHTF9DSFJPTUlVTV9wb3N0X3N1Yl9idWZmZXIiKTsKKyAgICBtX2NhcGFiaWxpdGllcy51
c2luZ1BhcnRpYWxTd2FwID0gQ0NTZXR0aW5nczo6cGFydGlhbFN3YXBFbmFibGVkKCkgJiYgZXh0
ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0NIUk9NSVVNX3Bvc3Rfc3ViX2J1ZmZlciIpOwogICAgIGlm
IChtX2NhcGFiaWxpdGllcy51c2luZ1BhcnRpYWxTd2FwKQogICAgICAgICBleHRlbnNpb25zLT5l
bnN1cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9wb3N0X3N1Yl9idWZmZXIiKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNo
cm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rp
bGVkTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMTJlMzcxN2NhNmRmZjFjMzhhYzk0ZGJiMTdlZTZj
NjdmZDBjZDUxZS4uMDk0OGQ5OTQ0NDQ2YWUyMTg5ZTQ5NTA5Njg1ZDhkMDQyMjFkZDAwOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRM
YXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVk
ZSAiVHJhY2VFdmVudC5oIgogCiAjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKKyNpbmNsdWRl
ICJjYy9DQ1NldHRpbmdzLmgiCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2lu
Y2x1ZGUgImNjL0NDVGlsZWRMYXllckltcGwuaCIKIApAQCAtMTExLDkgKzExMiw4IEBAIHZvaWQg
VGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVUaWxlU2l6ZUFuZFRpbGluZ09wdGlvbigpCiB7CiAg
ICAgQVNTRVJUKGxheWVyVHJlZUhvc3QoKSk7CiAKLSAgICBjb25zdCBDQ1NldHRpbmdzJiBzZXR0
aW5ncyA9IGxheWVyVHJlZUhvc3QoKS0+c2V0dGluZ3MoKTsKLSAgICBjb25zdCBJbnRTaXplJiBk
ZWZhdWx0VGlsZVNpemUgPSBzZXR0aW5ncy5kZWZhdWx0VGlsZVNpemU7Ci0gICAgY29uc3QgSW50
U2l6ZSYgbWF4VW50aWxlZExheWVyU2l6ZSA9IHNldHRpbmdzLm1heFVudGlsZWRMYXllclNpemU7
CisgICAgY29uc3QgSW50U2l6ZSYgZGVmYXVsdFRpbGVTaXplID0gQ0NTZXR0aW5nczo6ZGVmYXVs
dFRpbGVTaXplKCk7CisgICAgY29uc3QgSW50U2l6ZSYgbWF4VW50aWxlZExheWVyU2l6ZSA9IEND
U2V0dGluZ3M6Om1heFVudGlsZWRMYXllclNpemUoKTsKICAgICBpbnQgbGF5ZXJXaWR0aCA9IGNv
bnRlbnRCb3VuZHMoKS53aWR0aCgpOwogICAgIGludCBsYXllckhlaWdodCA9IGNvbnRlbnRCb3Vu
ZHMoKS5oZWlnaHQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdSZWN0SGlzdG9yeS5jcHAKaW5k
ZXggM2M4OGRjYzQwMDNhNjY5MTg5M2Y3NWI1NDVmZjBkNjQ5NWQ4ODgxMS4uMTdkNTk0NmVjMmVj
Y2RlYmFjYmFmMDM0OGZmODEwNjJmOTg3YTQ1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVj
dEhpc3RvcnkuY3BwCkBAIC0zOCwxMiArMzgsMTIgQEAgQ0NEZWJ1Z1JlY3RIaXN0b3J5OjpDQ0Rl
YnVnUmVjdEhpc3RvcnkoKQogewogfQogCi1ib29sIENDRGVidWdSZWN0SGlzdG9yeTo6ZW5hYmxl
ZChjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncykKK2Jvb2wgQ0NEZWJ1Z1JlY3RIaXN0b3J5Ojpl
bmFibGVkKGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzKQogewogICAgIHJldHVy
biBzZXR0aW5ncy5zaG93UGFpbnRSZWN0cyB8fCBzZXR0aW5ncy5zaG93UHJvcGVydHlDaGFuZ2Vk
UmVjdHMgfHwgc2V0dGluZ3Muc2hvd1N1cmZhY2VEYW1hZ2VSZWN0czsKIH0KIAotdm9pZCBDQ0Rl
YnVnUmVjdEhpc3Rvcnk6OnNhdmVEZWJ1Z1JlY3RzRm9yQ3VycmVudEZyYW1lKENDTGF5ZXJJbXBs
KiByb290TGF5ZXIsIGNvbnN0IFZlY3RvcjxDQ0xheWVySW1wbCo+JiByZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0LCBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncykKK3ZvaWQgQ0NEZWJ1Z1JlY3RIaXN0
b3J5OjpzYXZlRGVidWdSZWN0c0ZvckN1cnJlbnRGcmFtZShDQ0xheWVySW1wbCogcm9vdExheWVy
LCBjb25zdCBWZWN0b3I8Q0NMYXllckltcGwqPiYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgY29u
c3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MpCiB7CiAgICAgLy8gRm9yIG5vdywgY2xl
YXIgYWxsIHJlY3RzIGZyb20gcHJldmlvdXMgZnJhbWVzLiBJbiB0aGUgZnV0dXJlIHdlIG1heSB3
YW50IHRvIHN0b3JlCiAgICAgLy8gYWxsIGRlYnVnIHJlY3RzIGZvciBhIGhpc3Rvcnkgb2YgbWFu
eSBmcmFtZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdSZWN0SGlzdG9yeS5oCmluZGV4IDkzZGExMDdh
ZGU0ZmI3NzQ5YWIyZDVjZTc0NzVhMjI2Y2JiMGUxNDQuLmJiM2NkYjc5ZDU3MTg0N2IyNzZlOTdj
ODBmZDY4YzFhYzJjNDhkNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdSZWN0SGlzdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdSZWN0SGlzdG9yeS5oCkBA
IC0zNSw3ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDTGF5ZXJJbXBs
Owotc3RydWN0IENDU2V0dGluZ3M7CitzdHJ1Y3QgQ0NMYXllclRyZWVTZXR0aW5nczsKIAogLy8g
VGhlcmUgYXJlIGN1cnJlbnRseSB0aHJlZSB0eXBlcyBvZiBkZWJ1ZyByZWN0czoKIC8vCkBAIC02
Myw3ICs2Myw3IEBAIHN0cnVjdCBDQ0RlYnVnUmVjdCB7CiAKIC8vIFRoaXMgY2xhc3MgbWFpbnRh
aW5zIGEgaGlzdG9yeSBvZiByZWN0cyBvZiB2YXJpb3VzIHR5cGVzIHRoYXQgY2FuIGJlIHVzZWQK
IC8vIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuIFRoZSBvdmVyaGVhZCBvZiBjb2xsZWN0aW5nIHJl
Y3RzIGlzIHBlcmZvcm1lZCBvbmx5IGlmCi0vLyB0aGUgYXBwcm9wcmlhdGUgQ0NTZXR0aW5ncyBh
cmUgZW5hYmxlZC4KKy8vIHRoZSBhcHByb3ByaWF0ZSBDQ0xheWVyVHJlZVNldHRpbmdzIGFyZSBl
bmFibGVkLgogY2xhc3MgQ0NEZWJ1Z1JlY3RIaXN0b3J5IHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShDQ0RlYnVnUmVjdEhpc3RvcnkpOwogcHVibGljOgpAQCAtNzIsMTAgKzcyLDEwIEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ0RlYnVnUmVjdEhpc3RvcnkoKSk7
CiAgICAgfQogCi0gICAgYm9vbCBlbmFibGVkKGNvbnN0IENDU2V0dGluZ3MmKTsKKyAgICBib29s
IGVuYWJsZWQoY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYpOwogCiAgICAgLy8gTm90ZTogU2F2
aW5nIGRlYnVnIHJlY3RzIG11c3QgaGFwcGVuIGJlZm9yZSBsYXllcnMnIGNoYW5nZSB0cmFja2lu
ZyBpcyByZXNldC4KLSAgICB2b2lkIHNhdmVEZWJ1Z1JlY3RzRm9yQ3VycmVudEZyYW1lKENDTGF5
ZXJJbXBsKiByb290TGF5ZXIsIGNvbnN0IFZlY3RvcjxDQ0xheWVySW1wbCo+JiByZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0LCBjb25zdCBDQ1NldHRpbmdzJik7CisgICAgdm9pZCBzYXZlRGVidWdSZWN0
c0ZvckN1cnJlbnRGcmFtZShDQ0xheWVySW1wbCogcm9vdExheWVyLCBjb25zdCBWZWN0b3I8Q0NM
YXllckltcGwqPiYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgY29uc3QgQ0NMYXllclRyZWVTZXR0
aW5ncyYpOwogCiAgICAgY29uc3QgVmVjdG9yPENDRGVidWdSZWN0PiYgZGVidWdSZWN0cygpIHsg
cmV0dXJuIG1fZGVidWdSZWN0czsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3Bw
CmluZGV4IDM0ODVhNDhhNGFhNDE2OGVlMGQwNDFiZTdkMTAzYWJiZWNhMjU5MzUuLjFiYmMwNDZl
N2E1ODIxYWIwZTAzOTk0NmI2MGM4MWEwZWNjOWEyN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNV
cERpc3BsYXkuY3BwCkBAIC01MiwxNyArNTIsMTcgQEAgdm9pZCBDQ0hlYWRzVXBEaXNwbGF5Ojpz
ZXRGb250QXRsYXMoUGFzc093blB0cjxDQ0ZvbnRBdGxhcz4gZm9udEF0bGFzKQogICAgIG1fZm9u
dEF0bGFzID0gZm9udEF0bGFzOwogfQogCi1ib29sIENDSGVhZHNVcERpc3BsYXk6OmVuYWJsZWQo
Y29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MpIGNvbnN0Citib29sIENDSGVhZHNVcERpc3BsYXk6
OmVuYWJsZWQoY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIHNob3dQbGF0Zm9ybUxheWVyVHJlZShzZXR0aW5ncykgfHwgc2V0dGluZ3Muc2hv
d0ZQU0NvdW50ZXIgfHwgc2hvd0RlYnVnUmVjdHMoc2V0dGluZ3MpOwogfQogCi1ib29sIENDSGVh
ZHNVcERpc3BsYXk6OnNob3dQbGF0Zm9ybUxheWVyVHJlZShjb25zdCBDQ1NldHRpbmdzJiBzZXR0
aW5ncykgY29uc3QKK2Jvb2wgQ0NIZWFkc1VwRGlzcGxheTo6c2hvd1BsYXRmb3JtTGF5ZXJUcmVl
KGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzKSBjb25zdAogewogICAgIHJldHVy
biBzZXR0aW5ncy5zaG93UGxhdGZvcm1MYXllclRyZWU7CiB9CiAKLWJvb2wgQ0NIZWFkc1VwRGlz
cGxheTo6c2hvd0RlYnVnUmVjdHMoY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MpIGNvbnN0Citi
b29sIENDSGVhZHNVcERpc3BsYXk6OnNob3dEZWJ1Z1JlY3RzKGNvbnN0IENDTGF5ZXJUcmVlU2V0
dGluZ3MmIHNldHRpbmdzKSBjb25zdAogewogICAgIHJldHVybiBzZXR0aW5ncy5zaG93UGFpbnRS
ZWN0cyB8fCBzZXR0aW5ncy5zaG93UHJvcGVydHlDaGFuZ2VkUmVjdHMgfHwgc2V0dGluZ3Muc2hv
d1N1cmZhY2VEYW1hZ2VSZWN0czsKIH0KQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBDQ0hlYWRzVXBE
aXNwbGF5OjpkcmF3KENDTGF5ZXJUcmVlSG9zdEltcGwqIGxheWVyVHJlZUhvc3RJbXBsKQogICAg
IGlmICghbV9odWRUZXh0dXJlKQogICAgICAgICBtX2h1ZFRleHR1cmUgPSBNYW5hZ2VkVGV4dHVy
ZTo6Y3JlYXRlKGxheWVyUmVuZGVyZXItPmltcGxUZXh0dXJlTWFuYWdlcigpKTsKIAotICAgIGNv
bnN0IENDU2V0dGluZ3MmIHNldHRpbmdzID0gbGF5ZXJUcmVlSG9zdEltcGwtPnNldHRpbmdzKCk7
CisgICAgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MgPSBsYXllclRyZWVIb3N0
SW1wbC0+c2V0dGluZ3MoKTsKICAgICAvLyBVc2UgYSBmdWxsc2NyZWVuIHRleHR1cmUgb25seSBp
ZiB3ZSBuZWVkIHRvLi4uCiAgICAgSW50U2l6ZSBodWRTaXplOwogICAgIGlmIChzaG93UGxhdGZv
cm1MYXllclRyZWUoc2V0dGluZ3MpIHx8IHNob3dEZWJ1Z1JlY3RzKHNldHRpbmdzKSkgewpAQCAt
MTI4LDcgKzEyOCw3IEBAIHZvaWQgQ0NIZWFkc1VwRGlzcGxheTo6ZHJhdyhDQ0xheWVyVHJlZUhv
c3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCkKICAgICBtX2h1ZFRleHR1cmUtPnVucmVzZXJ2ZSgp
OwogfQogCi12b2lkIENDSGVhZHNVcERpc3BsYXk6OmRyYXdIdWRDb250ZW50cyhHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIENDTGF5ZXJUcmVlSG9zdEltcGwqIGxheWVyVHJlZUhvc3RJbXBsLCBj
b25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncywgY29uc3QgSW50U2l6ZSYgaHVkU2l6ZSkKK3ZvaWQg
Q0NIZWFkc1VwRGlzcGxheTo6ZHJhd0h1ZENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVlSG9zdEltcGwsIGNvbnN0IENDTGF5ZXJU
cmVlU2V0dGluZ3MmIHNldHRpbmdzLCBjb25zdCBJbnRTaXplJiBodWRTaXplKQogewogICAgIGlm
IChzaG93UGxhdGZvcm1MYXllclRyZWUoc2V0dGluZ3MpKSB7CiAgICAgICAgIGNvbnRleHQtPnNl
dEZpbGxDb2xvcihDb2xvcigwLCAwLCAwLCAxOTIpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKQEAg
LTIyMSw3ICsyMjEsNyBAQCB2b2lkIENDSGVhZHNVcERpc3BsYXk6OmRyYXdGUFNDb3VudGVyVGV4
dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIENDRnJhbWVSYXRlQwogICAgICAgICBtX2ZvbnRB
dGxhcy0+ZHJhd1RleHQoY29udGV4dCwgU3RyaW5nOjpmb3JtYXQoIkZQUzogJTQuMWYgKy8tICUz
LjFmIiwgYXZlcmFnZUZQUywgc3RkRGV2aWF0aW9uKSwgSW50UG9pbnQoMTAsIGhlaWdodCAvIDMp
LCBJbnRTaXplKHdpZHRoLCBoZWlnaHQpKTsKIH0KIAotdm9pZCBDQ0hlYWRzVXBEaXNwbGF5Ojpk
cmF3RGVidWdSZWN0cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIENDRGVidWdSZWN0SGlzdG9y
eSogZGVidWdSZWN0SGlzdG9yeSwgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MpCit2b2lkIEND
SGVhZHNVcERpc3BsYXk6OmRyYXdEZWJ1Z1JlY3RzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Q0NEZWJ1Z1JlY3RIaXN0b3J5KiBkZWJ1Z1JlY3RIaXN0b3J5LCBjb25zdCBDQ0xheWVyVHJlZVNl
dHRpbmdzJiBzZXR0aW5ncykKIHsKICAgICBjb25zdCBWZWN0b3I8Q0NEZWJ1Z1JlY3Q+JiBkZWJ1
Z1JlY3RzID0gZGVidWdSZWN0SGlzdG9yeS0+ZGVidWdSZWN0cygpOwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgZGVidWdSZWN0cy5zaXplKCk7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1Vw
RGlzcGxheS5oCmluZGV4IDQ4MzFlNWRkMThjM2UxMTIxYTE5MmI5OWE3NGFmMWJhY2NkMmNmYWQu
LmUxY2U5M2E2YzNlOTBjYjM0NDVlYjk3ZDJmNjBlZTA0NDBmNGM1OWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3Bs
YXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0hlYWRzVXBEaXNwbGF5LmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgQ0NGcmFtZVJhdGVDb3Vu
dGVyOwogY2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsK
IGNsYXNzIE1hbmFnZWRUZXh0dXJlOwotc3RydWN0IENDU2V0dGluZ3M7CitzdHJ1Y3QgQ0NMYXll
clRyZWVTZXR0aW5nczsKIAogLy8gQ2xhc3MgdGhhdCBoYW5kbGVzIGRyYXdpbmcgb2YgY29tcG9z
aXRlZCByZW5kZXIgbGF5ZXJzIHVzaW5nIEdMLgogY2xhc3MgQ0NIZWFkc1VwRGlzcGxheSB7CkBA
IC01MSwxOSArNTEsMTkgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRGb250QXRsYXMoUGFzc093
blB0cjxDQ0ZvbnRBdGxhcz4pOwogCi0gICAgYm9vbCBlbmFibGVkKGNvbnN0IENDU2V0dGluZ3Mm
KSBjb25zdDsKKyAgICBib29sIGVuYWJsZWQoY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYpIGNv
bnN0OwogICAgIHZvaWQgZHJhdyhDQ0xheWVyVHJlZUhvc3RJbXBsKik7CiAKIHByaXZhdGU6CiAg
ICAgQ0NIZWFkc1VwRGlzcGxheSgpIHsgfTsKIAotICAgIHZvaWQgZHJhd0h1ZENvbnRlbnRzKEdy
YXBoaWNzQ29udGV4dCosIENDTGF5ZXJUcmVlSG9zdEltcGwqLCBjb25zdCBDQ1NldHRpbmdzJiwg
Y29uc3QgSW50U2l6ZSYgaHVkU2l6ZSk7CisgICAgdm9pZCBkcmF3SHVkQ29udGVudHMoR3JhcGhp
Y3NDb250ZXh0KiwgQ0NMYXllclRyZWVIb3N0SW1wbCosIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGlu
Z3MmLCBjb25zdCBJbnRTaXplJiBodWRTaXplKTsKICAgICB2b2lkIGRyYXdGUFNDb3VudGVyKEdy
YXBoaWNzQ29udGV4dCosIENDRnJhbWVSYXRlQ291bnRlciosIGludCB0b3AsIGludCBoZWlnaHQp
OwogICAgIHZvaWQgZHJhd0ZQU0NvdW50ZXJUZXh0KEdyYXBoaWNzQ29udGV4dCosIENDRnJhbWVS
YXRlQ291bnRlciosIGludCB0b3AsIGludCB3aWR0aCwgaW50IGhlaWdodCk7Ci0gICAgdm9pZCBk
cmF3RGVidWdSZWN0cyhHcmFwaGljc0NvbnRleHQqLCBDQ0RlYnVnUmVjdEhpc3RvcnkqLCBjb25z
dCBDQ1NldHRpbmdzJik7CisgICAgdm9pZCBkcmF3RGVidWdSZWN0cyhHcmFwaGljc0NvbnRleHQq
LCBDQ0RlYnVnUmVjdEhpc3RvcnkqLCBjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJik7CiAKLSAg
ICBib29sIHNob3dQbGF0Zm9ybUxheWVyVHJlZShjb25zdCBDQ1NldHRpbmdzJikgY29uc3Q7Ci0g
ICAgYm9vbCBzaG93RGVidWdSZWN0cyhjb25zdCBDQ1NldHRpbmdzJikgY29uc3Q7CisgICAgYm9v
bCBzaG93UGxhdGZvcm1MYXllclRyZWUoY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYpIGNvbnN0
OworICAgIGJvb2wgc2hvd0RlYnVnUmVjdHMoY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYpIGNv
bnN0OwogCiAgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX2h1ZFRleHR1cmU7CiAgICAgT3du
UHRyPENDRm9udEF0bGFzPiBtX2ZvbnRBdGxhczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
Y3BwCmluZGV4IGZhMGViNjRjMzY1YjE4ZGUwZDk2OWZjODNlOWI0ODM1YTM4NjkzNGEuLmFiZTdl
ZGVkYTNiMzA3MGM3YTgyOTgxYWZjOWIzMzMxMTUyZmFmOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVl
SG9zdENvbW1vbi5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKICNpbmNs
dWRlICJjYy9DQ09jY2x1c2lvblRyYWNrZXIuaCIKKyNpbmNsdWRlICJjYy9DQ1NldHRpbmdzLmgi
CiAjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgogI2luY2x1ZGUgImNjL0NDVGhy
ZWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWRQcm94eS5oIgpAQCAtNTgsNyArNTksNyBAQCBi
b29sIENDTGF5ZXJUcmVlSG9zdDo6YW55TGF5ZXJUcmVlSG9zdEluc3RhbmNlRXhpc3RzKCkKICAg
ICByZXR1cm4gbnVtTGF5ZXJUcmVlSW5zdGFuY2VzID4gMDsKIH0KIAotUGFzc093blB0cjxDQ0xh
eWVyVHJlZUhvc3Q+IENDTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKENDTGF5ZXJUcmVlSG9zdENsaWVu
dCogY2xpZW50LCBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncykKK1Bhc3NPd25QdHI8Q0NMYXll
clRyZWVIb3N0PiBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZShDQ0xheWVyVHJlZUhvc3RDbGllbnQq
IGNsaWVudCwgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MpCiB7CiAgICAgT3du
UHRyPENDTGF5ZXJUcmVlSG9zdD4gbGF5ZXJUcmVlSG9zdCA9IGFkb3B0UHRyKG5ldyBDQ0xheWVy
VHJlZUhvc3QoY2xpZW50LCBzZXR0aW5ncykpOwogICAgIGlmICghbGF5ZXJUcmVlSG9zdC0+aW5p
dGlhbGl6ZSgpKQpAQCAtNjYsNyArNjcsNyBAQCBQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdD4g
Q0NMYXllclRyZWVIb3N0OjpjcmVhdGUoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGllbgogICAg
IHJldHVybiBsYXllclRyZWVIb3N0LnJlbGVhc2UoKTsKIH0KIAotQ0NMYXllclRyZWVIb3N0OjpD
Q0xheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQsIGNvbnN0IENDU2V0
dGluZ3MmIHNldHRpbmdzKQorQ0NMYXllclRyZWVIb3N0OjpDQ0xheWVyVHJlZUhvc3QoQ0NMYXll
clRyZWVIb3N0Q2xpZW50KiBjbGllbnQsIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRp
bmdzKQogICAgIDogbV9jb21wb3NpdG9ySWRlbnRpZmllcigtMSkKICAgICAsIG1fYW5pbWF0aW5n
KGZhbHNlKQogICAgICwgbV9uZWVkc0FuaW1hdGVMYXllcnMoZmFsc2UpCkBAIC0xNDEsMjUgKzE0
MiwyMiBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoKQog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gVXBkYXRlIG1fc2V0dGluZ3MgYmFzZWQg
b24gY2FwYWJpbGl0aWVzIHRoYXQgd2UgZ290IGJhY2sgZnJvbSB0aGUgcmVuZGVyZXIuCi0gICAg
bV9zZXR0aW5ncy5hY2NlbGVyYXRlUGFpbnRpbmcgPSBtX3Byb3h5LT5sYXllclJlbmRlcmVyQ2Fw
YWJpbGl0aWVzKCkudXNpbmdBY2NlbGVyYXRlZFBhaW50aW5nOwotCi0gICAgLy8gVXBkYXRlIG1f
c2V0dGluZ3MgYmFzZWQgb24gcGFydGlhbCB1cGRhdGUgY2FwYWJpbGl0eS4KLSAgICBtX3NldHRp
bmdzLm1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcyA9IG1pbihtX3NldHRpbmdzLm1heFBhcnRpYWxU
ZXh0dXJlVXBkYXRlcywgbV9wcm94eS0+bWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKCkpOwotCiAg
ICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSgwLCAw
LCBtX3Byb3h5LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4VGV4dHVyZVNpemUpOwog
CisgICAgLy8gVXBkYXRlIHNldHRpbmdzIGJhc2VkIG9uIGNhcGFiaWxpdGllcyB0aGF0IHdlIGdv
dCBiYWNrIGZyb20gdGhlIHJlbmRlcmVyLgorICAgIENDU2V0dGluZ3M6OnNldEFjY2VsZXJhdGVk
UGFpbnRpbmdFbmFibGVkKG1fcHJveHktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS51c2lu
Z0FjY2VsZXJhdGVkUGFpbnRpbmcpOworICAgIENDU2V0dGluZ3M6OnNldE1heFBhcnRpYWxUZXh0
dXJlVXBkYXRlcyhtaW4oQ0NTZXR0aW5nczo6bWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKCksIG1f
cHJveHktPm1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcygpKSk7CisgICAgQ0NTZXR0aW5nczo6c2V0
RGVmYXVsdFRpbGVTaXplKEludFNpemUobWluKENDU2V0dGluZ3M6OmRlZmF1bHRUaWxlU2l6ZSgp
LndpZHRoKCksIG1fcHJveHktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJl
U2l6ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluKEND
U2V0dGluZ3M6OmRlZmF1bHRUaWxlU2l6ZSgpLmhlaWdodCgpLCBtX3Byb3h5LT5sYXllclJlbmRl
cmVyQ2FwYWJpbGl0aWVzKCkubWF4VGV4dHVyZVNpemUpKSk7CisgICAgQ0NTZXR0aW5nczo6c2V0
TWF4VW50aWxlZExheWVyU2l6ZShJbnRTaXplKG1pbihDQ1NldHRpbmdzOjptYXhVbnRpbGVkTGF5
ZXJTaXplKCkud2lkdGgoKSwgbV9wcm94eS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLm1h
eFRleHR1cmVTaXplKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWluKENDU2V0dGluZ3M6Om1heFVudGlsZWRMYXllclNpemUoKS5oZWlnaHQoKSwgbV9w
cm94eS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLm1heFRleHR1cmVTaXplKSkpOworCiAg
ICAgLy8gRklYTUU6IFRoaXMgaXMgdGhlIHNhbWUgYXMgc2V0Q29udGVudHNNZW1vcnlBbGxvY2F0
aW9uTGltaXRCeXRlcywgYnV0CiAgICAgLy8gd2UncmUgaW4gdGhlIG1pZGRsZSBvZiBhIGNvbW1p
dCBoZXJlIGFuZCBkb24ndCB3YW50IHRvIGZvcmNlIGFub3RoZXIuCiAgICAgbV9tZW1vcnlBbGxv
Y2F0aW9uQnl0ZXMgPSBUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXMoZGV2aWNlVmlld3Bv
cnRTaXplKCkpOwogICAgIG1fbWVtb3J5QWxsb2NhdGlvbklzRm9yRGlzcGxheSA9IHRydWU7CiAK
ICAgICBtX2xheWVyUmVuZGVyZXJJbml0aWFsaXplZCA9IHRydWU7Ci0KLSAgICBtX3NldHRpbmdz
LmRlZmF1bHRUaWxlU2l6ZSA9IEludFNpemUobWluKG1fc2V0dGluZ3MuZGVmYXVsdFRpbGVTaXpl
LndpZHRoKCksIG1fcHJveHktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJl
U2l6ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbihtX3Nl
dHRpbmdzLmRlZmF1bHRUaWxlU2l6ZS5oZWlnaHQoKSwgbV9wcm94eS0+bGF5ZXJSZW5kZXJlckNh
cGFiaWxpdGllcygpLm1heFRleHR1cmVTaXplKSk7Ci0gICAgbV9zZXR0aW5ncy5tYXhVbnRpbGVk
TGF5ZXJTaXplID0gSW50U2l6ZShtaW4obV9zZXR0aW5ncy5tYXhVbnRpbGVkTGF5ZXJTaXplLndp
ZHRoKCksIG1fcHJveHktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6
ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW4obV9z
ZXR0aW5ncy5tYXhVbnRpbGVkTGF5ZXJTaXplLmhlaWdodCgpLCBtX3Byb3h5LT5sYXllclJlbmRl
cmVyQ2FwYWJpbGl0aWVzKCkubWF4VGV4dHVyZVNpemUpKTsKIH0KIAogQ0NMYXllclRyZWVIb3N0
OjpSZWNyZWF0ZVJlc3VsdCBDQ0xheWVyVHJlZUhvc3Q6OnJlY3JlYXRlQ29udGV4dCgpCkBAIC02
NjQsMTIgKzY2MiwxMiBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c3RvcFJhdGVMaW1pdGVyKEdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQogCiBib29sIENDTGF5ZXJUcmVlSG9zdDo6YnVmZmVy
ZWRVcGRhdGVzKCkKIHsKLSAgICByZXR1cm4gbV9zZXR0aW5ncy5tYXhQYXJ0aWFsVGV4dHVyZVVw
ZGF0ZXMgIT0gbnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7CisgICAgcmV0dXJuIENDU2V0
dGluZ3M6Om1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcygpICE9IG51bWVyaWNfbGltaXRzPHNpemVf
dD46Om1heCgpOwogfQogCiBib29sIENDTGF5ZXJUcmVlSG9zdDo6cmVxdWVzdFBhcnRpYWxUZXh0
dXJlVXBkYXRlKCkKIHsKLSAgICBpZiAobV9wYXJ0aWFsVGV4dHVyZVVwZGF0ZVJlcXVlc3RzID49
IG1fc2V0dGluZ3MubWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKQorICAgIGlmIChtX3BhcnRpYWxU
ZXh0dXJlVXBkYXRlUmVxdWVzdHMgPj0gQ0NTZXR0aW5nczo6bWF4UGFydGlhbFRleHR1cmVVcGRh
dGVzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1fcGFydGlhbFRleHR1cmVVcGRh
dGVSZXF1ZXN0cysrOwpAQCAtNjgzLDcgKzY4MSw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojpk
ZWxldGVUZXh0dXJlQWZ0ZXJDb21taXQoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVy
CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0OjphbmltYXRlTGF5ZXJzKGRvdWJsZSBtb25vdG9uaWNU
aW1lKQogewotICAgIGlmICghbV9zZXR0aW5ncy50aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQgfHwg
IW1fbmVlZHNBbmltYXRlTGF5ZXJzKQorICAgIGlmICghQ0NTZXR0aW5nczo6YWNjZWxlcmF0ZWRB
bmltYXRpb25FbmFibGVkKCkgfHwgIW1fbmVlZHNBbmltYXRlTGF5ZXJzKQogICAgICAgICByZXR1
cm47CiAKICAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0SW1wbDo6YW5pbWF0ZUxheWVy
cyIsIHRoaXMsIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCA0MzRhZWMyNzQy
MjAxYzVmNmQ1YjQ5Y2M1MzdlMTgwMzljMmM4NjRkLi5hZDVlMTZjMTNmNTEwOTM0YzhkYWFkNzI4
YmZkYTRkOWQwNDExZTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtNzQsNDAg
Kzc0LDI2IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5DQ0xheWVyVHJlZUhvc3RDbGllbnQo
KSB7IH0KIH07CiAKLXN0cnVjdCBDQ1NldHRpbmdzIHsKLSAgICBDQ1NldHRpbmdzKCkKLSAgICAg
ICAgICAgIDogYWNjZWxlcmF0ZVBhaW50aW5nKGZhbHNlKQotICAgICAgICAgICAgLCBmb3JjZVNv
ZnR3YXJlQ29tcG9zaXRpbmcoZmFsc2UpCitzdHJ1Y3QgQ0NMYXllclRyZWVTZXR0aW5ncyB7Cisg
ICAgQ0NMYXllclRyZWVTZXR0aW5ncygpCisgICAgICAgICAgICA6IGZvcmNlU29mdHdhcmVDb21w
b3NpdGluZyhmYWxzZSkKICAgICAgICAgICAgICwgc2hvd0ZQU0NvdW50ZXIoZmFsc2UpCiAgICAg
ICAgICAgICAsIHNob3dQbGF0Zm9ybUxheWVyVHJlZShmYWxzZSkKICAgICAgICAgICAgICwgc2hv
d1BhaW50UmVjdHMoZmFsc2UpCiAgICAgICAgICAgICAsIHNob3dQcm9wZXJ0eUNoYW5nZWRSZWN0
cyhmYWxzZSkKICAgICAgICAgICAgICwgc2hvd1N1cmZhY2VEYW1hZ2VSZWN0cyhmYWxzZSkKLSAg
ICAgICAgICAgICwgcmVmcmVzaFJhdGUoMCkKLSAgICAgICAgICAgICwgcGVyVGlsZVBhaW50aW5n
KGZhbHNlKQotICAgICAgICAgICAgLCBwYXJ0aWFsU3dhcEVuYWJsZWQoZmFsc2UpCi0gICAgICAg
ICAgICAsIHRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZChmYWxzZSkKLSAgICAgICAgICAgICwgbWF4
UGFydGlhbFRleHR1cmVVcGRhdGVzKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkp
Ci0gICAgICAgICAgICAsIGRlZmF1bHRUaWxlU2l6ZShJbnRTaXplKDI1NiwgMjU2KSkKLSAgICAg
ICAgICAgICwgbWF4VW50aWxlZExheWVyU2l6ZShJbnRTaXplKDUxMiwgNTEyKSkKICAgICAgICAg
ICAgICwgZGV2aWNlU2NhbGVGYWN0b3IoMSkKKyAgICAgICAgICAgICwgcmVmcmVzaFJhdGUoMCkK
ICAgICB7IH0KIAotICAgIGJvb2wgYWNjZWxlcmF0ZVBhaW50aW5nOwogICAgIGJvb2wgZm9yY2VT
b2Z0d2FyZUNvbXBvc2l0aW5nOwogICAgIGJvb2wgc2hvd0ZQU0NvdW50ZXI7CiAgICAgYm9vbCBz
aG93UGxhdGZvcm1MYXllclRyZWU7CiAgICAgYm9vbCBzaG93UGFpbnRSZWN0czsKICAgICBib29s
IHNob3dQcm9wZXJ0eUNoYW5nZWRSZWN0czsKICAgICBib29sIHNob3dTdXJmYWNlRGFtYWdlUmVj
dHM7Ci0gICAgZG91YmxlIHJlZnJlc2hSYXRlOwotICAgIGJvb2wgcGVyVGlsZVBhaW50aW5nOwot
ICAgIGJvb2wgcGFydGlhbFN3YXBFbmFibGVkOwotICAgIGJvb2wgdGhyZWFkZWRBbmltYXRpb25F
bmFibGVkOwotICAgIHNpemVfdCBtYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXM7Ci0gICAgSW50U2l6
ZSBkZWZhdWx0VGlsZVNpemU7Ci0gICAgSW50U2l6ZSBtYXhVbnRpbGVkTGF5ZXJTaXplOwogICAg
IGZsb2F0IGRldmljZVNjYWxlRmFjdG9yOworICAgIGRvdWJsZSByZWZyZXNoUmF0ZTsKIH07CiAK
IC8vIFByb3ZpZGVzIGluZm9ybWF0aW9uIG9uIGFuIEltcGwncyByZW5kZXJpbmcgY2FwYWJpbGl0
aWVzIGJhY2sgdG8gdGhlIENDTGF5ZXJUcmVlSG9zdApAQCAtMTQzLDcgKzEyOSw3IEBAIHN0cnVj
dCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzIHsKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdCA6IHB1
YmxpYyBSYXRlTGltaXRlckNsaWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NMYXll
clRyZWVIb3N0KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxDQ0xheWVyVHJlZUhv
c3Q+IGNyZWF0ZShDQ0xheWVyVHJlZUhvc3RDbGllbnQqLCBjb25zdCBDQ1NldHRpbmdzJik7Cisg
ICAgc3RhdGljIFBhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0PiBjcmVhdGUoQ0NMYXllclRyZWVI
b3N0Q2xpZW50KiwgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYpOwogICAgIHZpcnR1YWwgfkND
TGF5ZXJUcmVlSG9zdCgpOwogCiAgICAgdm9pZCBzZXRTdXJmYWNlUmVhZHkoKTsKQEAgLTIxOSw3
ICsyMDUsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9yb290TGF5ZXIuZ2V0KCk7IH0KICAgICB2b2lkIHNldFJvb3RMYXll
cihQYXNzUmVmUHRyPExheWVyQ2hyb21pdW0+KTsKIAotICAgIGNvbnN0IENDU2V0dGluZ3MmIHNl
dHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0aW5nczsgfQorICAgIGNvbnN0IENDTGF5ZXJU
cmVlU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0aW5nczsgfQogCiAg
ICAgdm9pZCBzZXRWaWV3cG9ydFNpemUoY29uc3QgSW50U2l6ZSYpOwogCkBAIC0yNTEsNyArMjM3
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlVGV4dHVyZUFmdGVyQ29tbWl0KFBhc3NPd25Q
dHI8TWFuYWdlZFRleHR1cmU+KTsKIAogcHJvdGVjdGVkOgotICAgIENDTGF5ZXJUcmVlSG9zdChD
Q0xheWVyVHJlZUhvc3RDbGllbnQqLCBjb25zdCBDQ1NldHRpbmdzJik7CisgICAgQ0NMYXllclRy
ZWVIb3N0KENDTGF5ZXJUcmVlSG9zdENsaWVudCosIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3Mm
KTsKICAgICBib29sIGluaXRpYWxpemUoKTsKIAogcHJpdmF0ZToKQEAgLTI5Miw3ICsyNzgsNyBA
QCBwcml2YXRlOgogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBtX3Jvb3RMYXllcjsKICAgICBP
d25QdHI8VGV4dHVyZU1hbmFnZXI+IG1fY29udGVudHNUZXh0dXJlTWFuYWdlcjsKIAotICAgIEND
U2V0dGluZ3MgbV9zZXR0aW5nczsKKyAgICBDQ0xheWVyVHJlZVNldHRpbmdzIG1fc2V0dGluZ3M7
CiAKICAgICBJbnRTaXplIG1fdmlld3BvcnRTaXplOwogICAgIEludFNpemUgbV9kZXZpY2VWaWV3
cG9ydFNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IGQ3
OGQ0MjlmMjk2YTUxZWNiMDE2YjcyM2ZmNGFiMGM4NDdhYmRmMGYuLmMyYWIwZjdlYTU3Y2ZiN2I4
ZWI5MDJhOWM4NjU3NTA3YzdjZWJkZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dEltcGwuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0
Q29tbW9uLmgiCiAjaW5jbHVkZSAiY2MvQ0NNYXRoVXRpbC5oIgogI2luY2x1ZGUgImNjL0NDUGFn
ZVNjYWxlQW5pbWF0aW9uLmgiCisjaW5jbHVkZSAiY2MvQ0NTZXR0aW5ncy5oIgogI2luY2x1ZGUg
ImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZFRhc2suaCIK
ICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KQEAgLTEwNSwxMiArMTA2LDEyIEBAIHByaXZh
dGU6CiAgICAgUmVmUHRyPENDRGVsYXlCYXNlZFRpbWVTb3VyY2U+IG1fdGltZVNvdXJjZTsKIH07
CiAKLVBhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gQ0NMYXllclRyZWVIb3N0SW1wbDo6
Y3JlYXRlKGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzLCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xp
ZW50KiBjbGllbnQpCitQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IENDTGF5ZXJUcmVl
SG9zdEltcGw6OmNyZWF0ZShjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncywgQ0NM
YXllclRyZWVIb3N0SW1wbENsaWVudCogY2xpZW50KQogewogICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgQ0NMYXllclRyZWVIb3N0SW1wbChzZXR0aW5ncywgY2xpZW50KSk7CiB9CiAKLUNDTGF5ZXJU
cmVlSG9zdEltcGw6OkNDTGF5ZXJUcmVlSG9zdEltcGwoY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGlu
Z3MsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqIGNsaWVudCkKK0NDTGF5ZXJUcmVlSG9zdElt
cGw6OkNDTGF5ZXJUcmVlSG9zdEltcGwoY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGlu
Z3MsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqIGNsaWVudCkKICAgICA6IG1fY2xpZW50KGNs
aWVudCkKICAgICAsIG1fc291cmNlRnJhbWVOdW1iZXIoLTEpCiAgICAgLCBtX2ZyYW1lTnVtYmVy
KDApCkBAIC0yNTYsNyArMjU3LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxh
dGVSZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KENDTGF5ZXJMaXN0JiByZW5kZXJTdXIKIAogICAgICAg
ICBpZiAoIWxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS51c2luZ1BhcnRpYWxTd2FwKQogICAg
ICAgICAgICAgbV9yb290U2Npc3NvclJlY3QgPSBGbG9hdFJlY3QoRmxvYXRQb2ludCgwLCAwKSwg
ZGV2aWNlVmlld3BvcnRTaXplKCkpOwotICAgIAorCiAgICAgICAgIENDTGF5ZXJUcmVlSG9zdENv
bW1vbjo6Y2FsY3VsYXRlVmlzaWJsZUFuZFNjaXNzb3JSZWN0cyhyZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0LCBtX3Jvb3RTY2lzc29yUmVjdCk7CiAgICAgfQogfQpAQCAtODU0LDcgKzg1NSw3IEBAIHZv
aWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6YW5pbWF0ZVBhZ2VTY2FsZShkb3VibGUgbW9ub3Rvbmlj
VGltZSkKIAogdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRlTGF5ZXJzKGRvdWJsZSBt
b25vdG9uaWNUaW1lLCBkb3VibGUgd2FsbENsb2NrVGltZSkKIHsKLSAgICBpZiAoIW1fc2V0dGlu
Z3MudGhyZWFkZWRBbmltYXRpb25FbmFibGVkIHx8ICFtX25lZWRzQW5pbWF0ZUxheWVycyB8fCAh
bV9yb290TGF5ZXJJbXBsKQorICAgIGlmICghQ0NTZXR0aW5nczo6YWNjZWxlcmF0ZWRBbmltYXRp
b25FbmFibGVkKCkgfHwgIW1fbmVlZHNBbmltYXRlTGF5ZXJzIHx8ICFtX3Jvb3RMYXllckltcGwp
CiAgICAgICAgIHJldHVybjsKIAogICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3RJbXBs
OjphbmltYXRlTGF5ZXJzIiwgdGhpcywgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmgKaW5kZXggYzc0MGE2NjIwMmY0YmQwZjFiM2QwNjA2ZDNhZWJhOTQ4OWQyMDA5Mi4uNDA2
MDYxMTM5Mjc4OTBjYjI1NTQxNTgwZjgwNmI3MTdlNDQ4ZWU3MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtNjgsNyArNjgsNyBAQCBjbGFzcyBDQ0xheWVyVHJlZUhv
c3RJbXBsIDogcHVibGljIENDSW5wdXRIYW5kbGVyQ2xpZW50LCBDQ1JlbmRlcmVyQ2xpZW50IHsK
ICAgICB0eXBlZGVmIFZlY3RvcjxDQ0xheWVySW1wbCo+IENDTGF5ZXJMaXN0OwogCiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gY3JlYXRlKGNvbnN0
IENDU2V0dGluZ3MmLCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50Kik7CisgICAgc3RhdGljIFBh
c3NPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gY3JlYXRlKGNvbnN0IENDTGF5ZXJUcmVlU2V0
dGluZ3MmLCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+Q0NMYXll
clRyZWVIb3N0SW1wbCgpOwogCiAgICAgLy8gQ0NJbnB1dEhhbmRsZXJDbGllbnQgaW1wbGVtZW50
YXRpb24KQEAgLTEwNSw3ICsxMDUsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBDQ1JlbmRlcmVyQ2xp
ZW50IGltcGxlbWVudGF0aW9uCiAgICAgdmlydHVhbCBjb25zdCBJbnRTaXplJiBkZXZpY2VWaWV3
cG9ydFNpemUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2RldmljZVZpZXdwb3J0U2l6ZTsg
fQotICAgIHZpcnR1YWwgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCBPVkVSUklE
RSB7IHJldHVybiBtX3NldHRpbmdzOyB9CisgICAgdmlydHVhbCBjb25zdCBDQ0xheWVyVHJlZVNl
dHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fc2V0dGluZ3M7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgZGlkTG9zZUNvbnRleHQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgb25Td2FwQnVmZmVyc0NvbXBsZXRlKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IHNldEZ1bGxSb290TGF5ZXJEYW1hZ2UoKSBPVkVSUklERTsKQEAgLTE2OCw3ICsxNjgsNyBAQCBw
dWJsaWM6CiAgICAgQ0NEZWJ1Z1JlY3RIaXN0b3J5KiBkZWJ1Z1JlY3RIaXN0b3J5KCkgY29uc3Qg
eyByZXR1cm4gbV9kZWJ1Z1JlY3RIaXN0b3J5LmdldCgpOyB9CiAKIHByb3RlY3RlZDoKLSAgICBD
Q0xheWVyVHJlZUhvc3RJbXBsKGNvbnN0IENDU2V0dGluZ3MmLCBDQ0xheWVyVHJlZUhvc3RJbXBs
Q2xpZW50Kik7CisgICAgQ0NMYXllclRyZWVIb3N0SW1wbChjb25zdCBDQ0xheWVyVHJlZVNldHRp
bmdzJiwgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCopOwogCiAgICAgdm9pZCBhbmltYXRlUGFn
ZVNjYWxlKGRvdWJsZSBtb25vdG9uaWNUaW1lKTsKICAgICB2b2lkIGFuaW1hdGVHZXN0dXJlcyhk
b3VibGUgbW9ub3RvbmljVGltZSk7CkBAIC0yMTMsNyArMjEzLDcgQEAgcHJpdmF0ZToKICAgICBP
d25QdHI8Q0NSZW5kZXJlcj4gbV9sYXllclJlbmRlcmVyOwogICAgIE93blB0cjxDQ0xheWVySW1w
bD4gbV9yb290TGF5ZXJJbXBsOwogICAgIENDTGF5ZXJJbXBsKiBtX3Njcm9sbExheWVySW1wbDsK
LSAgICBDQ1NldHRpbmdzIG1fc2V0dGluZ3M7CisgICAgQ0NMYXllclRyZWVTZXR0aW5ncyBtX3Nl
dHRpbmdzOwogICAgIEludFNpemUgbV92aWV3cG9ydFNpemU7CiAgICAgSW50U2l6ZSBtX2Rldmlj
ZVZpZXdwb3J0U2l6ZTsKICAgICBib29sIG1fdmlzaWJsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyZXIuaAppbmRl
eCA5YzkzOGE5OTBhYmM0ZDliNTU1NDY4ZTcwODZkN2I1MzYxYjYwNTE5Li4zMmY4MzU4Yzc0NGRj
MGU4YzE4ZTk0YjA2NGE5MWQ1MDQ4MDVlZmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5oCkBAIC00Myw3
ICs0Myw3IEBAIGNsYXNzIFRleHR1cmVVcGxvYWRlcjsKIGNsYXNzIENDUmVuZGVyZXJDbGllbnQg
ewogcHVibGljOgogICAgIHZpcnR1YWwgY29uc3QgSW50U2l6ZSYgZGV2aWNlVmlld3BvcnRTaXpl
KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5n
cygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkTG9zZUNvbnRleHQoKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZSgpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0RnVsbFJvb3RMYXllckRhbWFnZSgpID0gMDsKQEAgLTU3LDcgKzU3LDcgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBjYXBh
YmlsaXRpZXMoKSBjb25zdCA9IDA7CiAKLSAgICBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncygp
IGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50LT5zZXR0aW5ncygpOyB9CisgICAgY29uc3QgQ0NMYXll
clRyZWVTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudC0+c2V0dGlu
Z3MoKTsgfQogCiAgICAgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKCkgeyByZXR1cm4gbV9j
bGllbnQtPmRldmljZVZpZXdwb3J0U2l6ZSgpOyB9CiAgICAgaW50IHZpZXdwb3J0V2lkdGgoKSB7
IHJldHVybiB2aWV3cG9ydFNpemUoKS53aWR0aCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NldHRpbmdzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2V0dGluZ3MuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjU4OGEzZmExN2M3Njc0NWM3NWNmNDVmNjUxZWYyYWNjNDU0YTQzYTUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NldHRpbmdzLmNwcApAQCAtMCwwICsxLDIxMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiY2MvQ0NTZXR0aW5ncy5oIgorCisjaW5jbHVkZSA8
bGltaXRzPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSB7CitzdGF0aWMgQ0NT
ZXR0aW5ncyogc19pbnN0YW5jZSA9IDA7Cit9CisKK0NDU2V0dGluZ3M6OkNDU2V0dGluZ3MoKQor
ICAgIDogbV9hY2NlbGVyYXRlZFBhaW50aW5nRW5hYmxlZChmYWxzZSkKKyAgICAsIG1fcGVyVGls
ZVBhaW50aW5nRW5hYmxlZChmYWxzZSkKKyAgICAsIG1fcGFydGlhbFN3YXBFbmFibGVkKGZhbHNl
KQorICAgICwgbV9hY2NlbGVyYXRlZEFuaW1hdGlvbkVuYWJsZWQoZmFsc2UpCisgICAgLCBtX21h
eFBhcnRpYWxUZXh0dXJlVXBkYXRlcyhzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgp
KQorICAgICwgbV9kZWZhdWx0VGlsZVNpemUoSW50U2l6ZSgyNTYsIDI1NikpCisgICAgLCBtX21h
eFVudGlsZWRMYXllclNpemUoSW50U2l6ZSg1MTIsIDUxMikpCit7Cit9CisKK2Jvb2wgQ0NTZXR0
aW5nczo6YWNjZWxlcmF0ZWRQYWludGluZ0VuYWJsZWQoKQoreworICAgIHJldHVybiBpbnN0YW5j
ZSgpLT5hY2NlbGVyYXRlZFBhaW50aW5nRW5hYmxlZEludGVybmFsKCk7Cit9Cit2b2lkIENDU2V0
dGluZ3M6OnNldEFjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAg
ICBpbnN0YW5jZSgpLT5zZXRBY2NlbGVyYXRlZFBhaW50aW5nRW5hYmxlZEludGVybmFsKGVuYWJs
ZWQpOworfQorCitib29sIENDU2V0dGluZ3M6OnBlclRpbGVQYWludGluZ0VuYWJsZWQoKQorewor
ICAgIHJldHVybiBpbnN0YW5jZSgpLT5wZXJUaWxlUGFpbnRpbmdFbmFibGVkSW50ZXJuYWwoKTsK
K30KK3ZvaWQgQ0NTZXR0aW5nczo6c2V0UGVyVGlsZVBhaW50aW5nRW5hYmxlZChib29sIGVuYWJs
ZWQpCit7CisgICAgaW5zdGFuY2UoKS0+c2V0UGVyVGlsZVBhaW50aW5nRW5hYmxlZEludGVybmFs
KGVuYWJsZWQpOworfQorCitib29sIENDU2V0dGluZ3M6OnBhcnRpYWxTd2FwRW5hYmxlZCgpCit7
CisgICAgcmV0dXJuIGluc3RhbmNlKCktPnBhcnRpYWxTd2FwRW5hYmxlZEludGVybmFsKCk7Cit9
Cit2b2lkIENDU2V0dGluZ3M6OnNldFBhcnRpYWxTd2FwRW5hYmxlZChib29sIGVuYWJsZWQpCit7
CisgICAgaW5zdGFuY2UoKS0+c2V0UGFydGlhbFN3YXBFbmFibGVkSW50ZXJuYWwoZW5hYmxlZCk7
Cit9CisKK2Jvb2wgQ0NTZXR0aW5nczo6YWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkKCkKK3sK
KyAgICByZXR1cm4gaW5zdGFuY2UoKS0+YWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkSW50ZXJu
YWwoKTsKK30KK3ZvaWQgQ0NTZXR0aW5nczo6c2V0QWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVk
KGJvb2wgZW5hYmxlZCkKK3sKKyAgICBpbnN0YW5jZSgpLT5zZXRBY2NlbGVyYXRlZEFuaW1hdGlv
bkVuYWJsZWRJbnRlcm5hbChlbmFibGVkKTsKK30KKworc2l6ZV90IENDU2V0dGluZ3M6Om1heFBh
cnRpYWxUZXh0dXJlVXBkYXRlcygpCit7CisgICAgcmV0dXJuIGluc3RhbmNlKCktPm1heFBhcnRp
YWxUZXh0dXJlVXBkYXRlc0ludGVybmFsKCk7Cit9Cit2b2lkIENDU2V0dGluZ3M6OnNldE1heFBh
cnRpYWxUZXh0dXJlVXBkYXRlcyhzaXplX3QgdXBkYXRlcykKK3sKKyAgICBpbnN0YW5jZSgpLT5z
ZXRNYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXNJbnRlcm5hbCh1cGRhdGVzKTsKK30KKworSW50U2l6
ZSBDQ1NldHRpbmdzOjpkZWZhdWx0VGlsZVNpemUoKQoreworICAgIHJldHVybiBpbnN0YW5jZSgp
LT5kZWZhdWx0VGlsZVNpemVJbnRlcm5hbCgpOworfQordm9pZCBDQ1NldHRpbmdzOjpzZXREZWZh
dWx0VGlsZVNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAgICBpbnN0YW5jZSgpLT5zZXRE
ZWZhdWx0VGlsZVNpemVJbnRlcm5hbChzaXplKTsKK30KKworSW50U2l6ZSBDQ1NldHRpbmdzOjpt
YXhVbnRpbGVkTGF5ZXJTaXplKCkKK3sKKyAgICByZXR1cm4gaW5zdGFuY2UoKS0+bWF4VW50aWxl
ZExheWVyU2l6ZUludGVybmFsKCk7Cit9Cit2b2lkIENDU2V0dGluZ3M6OnNldE1heFVudGlsZWRM
YXllclNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAgICBpbnN0YW5jZSgpLT5zZXRNYXhV
bnRpbGVkTGF5ZXJTaXplSW50ZXJuYWwoc2l6ZSk7Cit9CisKK2Jvb2wgQ0NTZXR0aW5nczo6YWNj
ZWxlcmF0ZWRQYWludGluZ0VuYWJsZWRJbnRlcm5hbCgpCit7CisgICAgTXV0ZXhMb2NrZXIgbG9j
ayhtX211dGV4KTsKKyAgICByZXR1cm4gbV9hY2NlbGVyYXRlZFBhaW50aW5nRW5hYmxlZDsKK30K
K3ZvaWQgQ0NTZXR0aW5nczo6c2V0QWNjZWxlcmF0ZWRQYWludGluZ0VuYWJsZWRJbnRlcm5hbChi
b29sIGVuYWJsZWQpCit7CisgICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKKyAgICBtX2Fj
Y2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkID0gZW5hYmxlZDsKK30KKworYm9vbCBDQ1NldHRpbmdz
OjpwZXJUaWxlUGFpbnRpbmdFbmFibGVkSW50ZXJuYWwoKQoreworICAgIE11dGV4TG9ja2VyIGxv
Y2sobV9tdXRleCk7CisgICAgcmV0dXJuIG1fcGVyVGlsZVBhaW50aW5nRW5hYmxlZDsKK30KK3Zv
aWQgQ0NTZXR0aW5nczo6c2V0UGVyVGlsZVBhaW50aW5nRW5hYmxlZEludGVybmFsKGJvb2wgZW5h
YmxlZCkKK3sKKyAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOworICAgIG1fcGVyVGlsZVBh
aW50aW5nRW5hYmxlZCA9IGVuYWJsZWQ7Cit9CisKK2Jvb2wgQ0NTZXR0aW5nczo6cGFydGlhbFN3
YXBFbmFibGVkSW50ZXJuYWwoKQoreworICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7Cisg
ICAgcmV0dXJuIG1fcGFydGlhbFN3YXBFbmFibGVkOworfQordm9pZCBDQ1NldHRpbmdzOjpzZXRQ
YXJ0aWFsU3dhcEVuYWJsZWRJbnRlcm5hbChib29sIGVuYWJsZWQpCit7CisgICAgTXV0ZXhMb2Nr
ZXIgbG9jayhtX211dGV4KTsKKyAgICBtX3BhcnRpYWxTd2FwRW5hYmxlZCA9IGVuYWJsZWQ7Cit9
CisKK2Jvb2wgQ0NTZXR0aW5nczo6YWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkSW50ZXJuYWwo
KQoreworICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CisgICAgcmV0dXJuIG1fYWNjZWxl
cmF0ZWRBbmltYXRpb25FbmFibGVkOworfQordm9pZCBDQ1NldHRpbmdzOjpzZXRBY2NlbGVyYXRl
ZEFuaW1hdGlvbkVuYWJsZWRJbnRlcm5hbChib29sIGVuYWJsZWQpCit7CisgICAgTXV0ZXhMb2Nr
ZXIgbG9jayhtX211dGV4KTsKKyAgICBtX2FjY2VsZXJhdGVkQW5pbWF0aW9uRW5hYmxlZCA9IGVu
YWJsZWQ7Cit9CisKK3NpemVfdCBDQ1NldHRpbmdzOjptYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXNJ
bnRlcm5hbCgpCit7CisgICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKKyAgICByZXR1cm4g
bV9tYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXM7Cit9Cit2b2lkIENDU2V0dGluZ3M6OnNldE1heFBh
cnRpYWxUZXh0dXJlVXBkYXRlc0ludGVybmFsKHNpemVfdCB1cGRhdGVzKQoreworICAgIE11dGV4
TG9ja2VyIGxvY2sobV9tdXRleCk7CisgICAgbV9tYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMgPSB1
cGRhdGVzOworfQorCitJbnRTaXplIENDU2V0dGluZ3M6OmRlZmF1bHRUaWxlU2l6ZUludGVybmFs
KCkKK3sKKyAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOworICAgIHJldHVybiBtX2RlZmF1
bHRUaWxlU2l6ZTsKK30KK3ZvaWQgQ0NTZXR0aW5nczo6c2V0RGVmYXVsdFRpbGVTaXplSW50ZXJu
YWwoY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgp
OworICAgIG1fZGVmYXVsdFRpbGVTaXplID0gc2l6ZTsKK30KKworSW50U2l6ZSBDQ1NldHRpbmdz
OjptYXhVbnRpbGVkTGF5ZXJTaXplSW50ZXJuYWwoKQoreworICAgIE11dGV4TG9ja2VyIGxvY2so
bV9tdXRleCk7CisgICAgcmV0dXJuIG1fbWF4VW50aWxlZExheWVyU2l6ZTsKK30KK3ZvaWQgQ0NT
ZXR0aW5nczo6c2V0TWF4VW50aWxlZExheWVyU2l6ZUludGVybmFsKGNvbnN0IEludFNpemUmIHNp
emUpCit7CisgICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKKyAgICBtX21heFVudGlsZWRM
YXllclNpemUgPSBzaXplOworfQorCitDQ1NldHRpbmdzKiBDQ1NldHRpbmdzOjppbnN0YW5jZSgp
Cit7CisgICAgQVNTRVJUKHNfaW5zdGFuY2UpOworICAgIGlmICghc19pbnN0YW5jZSkKKyAgICAg
ICAgaW5pdGlhbGl6ZSgpOworICAgIHJldHVybiBzX2luc3RhbmNlOworfQorCit2b2lkIENDU2V0
dGluZ3M6OmluaXRpYWxpemUoKQoreworICAgIEFTU0VSVCghc19pbnN0YW5jZSk7CisgICAgaWYg
KHNfaW5zdGFuY2UpCisgICAgICAgIHNodXRkb3duKCk7CisgICAgc19pbnN0YW5jZSA9IG5ldyBD
Q1NldHRpbmdzKCk7Cit9CisKK3ZvaWQgQ0NTZXR0aW5nczo6c2h1dGRvd24oKQoreworICAgIEFT
U0VSVChzX2luc3RhbmNlKTsKKyAgICBpZiAoc19pbnN0YW5jZSkKKyAgICAgICAgZGVsZXRlIHNf
aW5zdGFuY2U7CisgICAgc19pbnN0YW5jZSA9IDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2V0dGluZ3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NGFkZDNkNThmM2ZjY2E0OTczYzgyOWJm
ZWUzOTFiZDZkODBiZGJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTZXR0aW5ncy5oCkBAIC0wLDAgKzEsMTAzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisg
KiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIENDU2V0dGluZ3NfaAorI2RlZmluZSBDQ1NldHRpbmdzX2gK
KworI2luY2x1ZGUgIkludFNpemUuaCIKKworI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRp
dmVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ0NTZXR0aW5ncyB7CitwdWJs
aWM6CisgICAgc3RhdGljIGJvb2wgYWNjZWxlcmF0ZWRQYWludGluZ0VuYWJsZWQoKTsKKyAgICBz
dGF0aWMgdm9pZCBzZXRBY2NlbGVyYXRlZFBhaW50aW5nRW5hYmxlZChib29sKTsKKworICAgIHN0
YXRpYyBib29sIHBlclRpbGVQYWludGluZ0VuYWJsZWQoKTsKKyAgICBzdGF0aWMgdm9pZCBzZXRQ
ZXJUaWxlUGFpbnRpbmdFbmFibGVkKGJvb2wpOworCisgICAgc3RhdGljIGJvb2wgcGFydGlhbFN3
YXBFbmFibGVkKCk7CisgICAgc3RhdGljIHZvaWQgc2V0UGFydGlhbFN3YXBFbmFibGVkKGJvb2wp
OworCisgICAgc3RhdGljIGJvb2wgYWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkKCk7CisgICAg
c3RhdGljIHZvaWQgc2V0QWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkKGJvb2wpOworCisgICAg
c3RhdGljIHNpemVfdCBtYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoKTsKKyAgICBzdGF0aWMgdm9p
ZCBzZXRNYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoc2l6ZV90KTsKKworICAgIHN0YXRpYyBJbnRT
aXplIGRlZmF1bHRUaWxlU2l6ZSgpOworICAgIHN0YXRpYyB2b2lkIHNldERlZmF1bHRUaWxlU2l6
ZShjb25zdCBJbnRTaXplJik7CisKKyAgICBzdGF0aWMgSW50U2l6ZSBtYXhVbnRpbGVkTGF5ZXJT
aXplKCk7CisgICAgc3RhdGljIHZvaWQgc2V0TWF4VW50aWxlZExheWVyU2l6ZShjb25zdCBJbnRT
aXplJik7CisKKyAgICAvLyBNdXN0IGJlIGNhbGxlZCAoYW5kIGNhbGxlZCBvbmx5IG9uY2UpIGJl
Zm9yZSB1c2luZyBhbnkgb2YgdGhlc2Ugc2V0dGluZ3MuCisgICAgc3RhdGljIHZvaWQgaW5pdGlh
bGl6ZSgpOworCisgICAgLy8gU2hvdWxkIGJlIGNhbGxlZCAoYW5kIGNhbGxlZCBvbmx5IG9uY2Up
IHdoZW4gZG9uZSB3aXRoIHRoZXNlIHNldHRpbmdzLgorICAgIHN0YXRpYyB2b2lkIHNodXRkb3du
KCk7CisKK3ByaXZhdGU6CisgICAgQ0NTZXR0aW5ncygpOworICAgIH5DQ1NldHRpbmdzKCkgeyB9
CisKKyAgICBib29sIGFjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkSW50ZXJuYWwoKTsKKyAgICB2
b2lkIHNldEFjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkSW50ZXJuYWwoYm9vbCk7CisKKyAgICBi
b29sIHBlclRpbGVQYWludGluZ0VuYWJsZWRJbnRlcm5hbCgpOworICAgIHZvaWQgc2V0UGVyVGls
ZVBhaW50aW5nRW5hYmxlZEludGVybmFsKGJvb2wpOworCisgICAgYm9vbCBwYXJ0aWFsU3dhcEVu
YWJsZWRJbnRlcm5hbCgpOworICAgIHZvaWQgc2V0UGFydGlhbFN3YXBFbmFibGVkSW50ZXJuYWwo
Ym9vbCk7CisKKyAgICBib29sIGFjY2VsZXJhdGVkQW5pbWF0aW9uRW5hYmxlZEludGVybmFsKCk7
CisgICAgdm9pZCBzZXRBY2NlbGVyYXRlZEFuaW1hdGlvbkVuYWJsZWRJbnRlcm5hbChib29sKTsK
KworICAgIHNpemVfdCBtYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXNJbnRlcm5hbCgpOworICAgIHZv
aWQgc2V0TWF4UGFydGlhbFRleHR1cmVVcGRhdGVzSW50ZXJuYWwoc2l6ZV90KTsKKworICAgIElu
dFNpemUgZGVmYXVsdFRpbGVTaXplSW50ZXJuYWwoKTsKKyAgICB2b2lkIHNldERlZmF1bHRUaWxl
U2l6ZUludGVybmFsKGNvbnN0IEludFNpemUmKTsKKworICAgIEludFNpemUgbWF4VW50aWxlZExh
eWVyU2l6ZUludGVybmFsKCk7CisgICAgdm9pZCBzZXRNYXhVbnRpbGVkTGF5ZXJTaXplSW50ZXJu
YWwoY29uc3QgSW50U2l6ZSYpOworCisgICAgc3RhdGljIENDU2V0dGluZ3MqIGluc3RhbmNlKCk7
CisKKyAgICBib29sIG1fYWNjZWxlcmF0ZWRQYWludGluZ0VuYWJsZWQ7CisgICAgYm9vbCBtX3Bl
clRpbGVQYWludGluZ0VuYWJsZWQ7CisgICAgYm9vbCBtX3BhcnRpYWxTd2FwRW5hYmxlZDsKKyAg
ICBib29sIG1fYWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkOworICAgIHNpemVfdCBtX21heFBh
cnRpYWxUZXh0dXJlVXBkYXRlczsKKyAgICBJbnRTaXplIG1fZGVmYXVsdFRpbGVTaXplOworICAg
IEludFNpemUgbV9tYXhVbnRpbGVkTGF5ZXJTaXplOworCisgICAgTXV0ZXggbV9tdXRleDsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIENDU2V0dGluZ3NfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKaW5kZXggZTRkMDYxZTI4
NWNlMTY0MjVmZDk2OGNiMzBmZTUxYmUyMDMzMjdjZi4uMDUzOTY2YjNhZmZiNWM4YmQ4YzY5NjQ1
NDgyMDAzYzNlMjBmN2VmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbFNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0
dGluZ3MuY3BwCkBAIC0yMzQsMTIgKzIzNCw2IEBAIHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0
UGFnZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yLCBpbnQgeCwgaW50IHksIEV4Y2VwCiAg
ICAgcGFnZSgpLT5zZXRQYWdlU2NhbGVGYWN0b3Ioc2NhbGVGYWN0b3IsIEludFBvaW50KHgsIHkp
KTsKIH0KIAotdm9pZCBJbnRlcm5hbFNldHRpbmdzOjpzZXRQZXJUaWxlRHJhd2luZ0VuYWJsZWQo
Ym9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBJbnRlcm5hbFNldHRpbmdz
R3VhcmRGb3JTZXR0aW5ncygpOwotICAgIHNldHRpbmdzKCktPnNldFBlclRpbGVEcmF3aW5nRW5h
YmxlZChlbmFibGVkKTsKLX0KLQogdm9pZCBJbnRlcm5hbFNldHRpbmdzOjpzZXRTaGFkb3dET01F
bmFibGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAjaWYgRU5BQkxFKFNI
QURPV19ET00pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0
dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oCmluZGV4
IDRmZTgyMjYzNWI3NWJkMzI3MzRiNjJlNTAwNjQ2NmQ1ZDc4ZjBmOTAuLmNkMjhiNjM2NWRiZmM3
NDNhNTI4MDhkNWQzZjgyMjVlOGZiODU2NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxTZXR0aW5ncy5oCkBAIC02MSw3ICs2MSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFVu
aWZpZWRUZXh0Q2hlY2tpbmdFbmFibGVkKGJvb2wsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBib29s
IHVuaWZpZWRUZXh0Q2hlY2tpbmdFbmFibGVkKEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNl
dFBhZ2VTY2FsZUZhY3RvcihmbG9hdCBzY2FsZUZhY3RvciwgaW50IHgsIGludCB5LCBFeGNlcHRp
b25Db2RlJik7Ci0gICAgdm9pZCBzZXRQZXJUaWxlRHJhd2luZ0VuYWJsZWQoYm9vbCBlbmFibGVk
LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXRUb3VjaEV2ZW50RW11bGF0aW9uRW5hYmxl
ZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNldERldmljZVN1cHBv
cnRzVG91Y2goYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXREZXZp
Y2VTdXBwb3J0c01vdXNlKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cGkKaW5kZXggMWMxMWYyZDc5MDZjOTBlMzhhMTg5YmJlNGQzN2IyYjc3
Y2NjNzMyMy4uNjYzMDA0NWQ4ODQxN2I1NmEyMzgyNzQ5NjY5MDY3MDM0NmI5ZTBlMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXBpCkBAIC04Nyw2ICs4Nyw3IEBACiAgICAgICAgICAgICAn
dGVzdHMvQ0NTY2hlZHVsZXJUZXN0Q29tbW9uLmgnLAogICAgICAgICAgICAgJ3Rlc3RzL0NDU2No
ZWR1bGVyVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0NDU29saWRDb2xvckxheWVySW1w
bFRlc3QuY3BwJywKKyAgICAgICAgICAgICd0ZXN0cy9DQ1Rlc3RDb21tb24uaCcsCiAgICAgICAg
ICAgICAndGVzdHMvQ0NUaWxlZExheWVySW1wbFRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0
cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmgnLAogICAgICAgICAgICAgJ3Rlc3RzL0NDVGlsZWRM
YXllclRlc3RDb21tb24uY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkNvbXBvc2l0b3IuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkNvbXBvc2l0b3IuaAppbmRleCAzZWFkZWYzMmMzN2IzMTM0OWI5OTM3N2EyZTE5ZjhjMDZhOGY4
ZDQ4Li5hZDZhYjQ0MjEwYTNhMWY3OWQ3NzIwMzZlZjcwMjUxMjYzODMyODQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yLmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvci5oCkBAIC0yNiw3ICsyNiwx
MCBAQAogI2lmbmRlZiBXZWJDb21wb3NpdG9yX2gKICNkZWZpbmUgV2ViQ29tcG9zaXRvcl9oCiAK
KyNkZWZpbmUgV0VCQ09NUE9TSVRPUl9PV05TX1NFVFRJTkdTIDEKKwogI2luY2x1ZGUgInBsYXRm
b3JtL1dlYkNvbW1vbi5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlNpemUuaCIKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKQEAgLTQ5LDYgKzUyLDI3IEBAIHB1YmxpYzoKICAgICAvLyBhZnRlciBz
aHV0ZG93bi4KICAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyB2b2lkIHNodXRkb3duKCk7CiAKKyAg
ICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBib29sIGFjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkKCk7
CisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRBY2NlbGVyYXRlZFBhaW50aW5nRW5h
YmxlZChib29sKTsKKworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIGJvb2wgcGVyVGlsZVBhaW50
aW5nRW5hYmxlZCgpOworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIHZvaWQgc2V0UGVyVGlsZVBh
aW50aW5nRW5hYmxlZChib29sKTsKKworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIGJvb2wgcGFy
dGlhbFN3YXBFbmFibGVkKCk7CisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRQYXJ0
aWFsU3dhcEVuYWJsZWQoYm9vbCk7CisKKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBib29sIGFj
Y2VsZXJhdGVkQW5pbWF0aW9uRW5hYmxlZCgpOworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIHZv
aWQgc2V0QWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkKGJvb2wpOworCisgICAgV0VCS0lUX0VY
UE9SVCBzdGF0aWMgc2l6ZV90IG1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcygpOworICAgIFdFQktJ
VF9FWFBPUlQgc3RhdGljIHZvaWQgc2V0TWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKHNpemVfdCk7
CisKKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJTaXplIGRlZmF1bHRUaWxlU2l6ZSgpOwor
ICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIHZvaWQgc2V0RGVmYXVsdFRpbGVTaXplKGNvbnN0IFdl
YlNpemUmKTsKKworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYlNpemUgbWF4VW50aWxlZExh
eWVyU2l6ZSgpOworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIHZvaWQgc2V0TWF4VW50aWxlZExh
eWVyU2l6ZShjb25zdCBXZWJTaXplJik7CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5XZWJD
b21wb3NpdG9yKCkgeyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNl
dHRpbmdzLmgKaW5kZXggZGQ3NDEyZGE1OTJiZDYzMDc1MWU3YTI4YzM5NGFkZTQ2M2EzYjk3Zi4u
MmEwYWUwZDJiZGQwYWFkNjU0MzgzYTU2MTZhYmRmMzYyYTE1ZmYzYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCkBAIC0xNDcsMTQgKzE0Nyw5IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxl
ZChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpc3VhbFdvcmRNb3ZlbWVudEVuYWJs
ZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZFBhaW50aW5nRW5h
YmxlZChib29sKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldFBlclRpbGVQYWludGluZ0VuYWJs
ZWQoYm9vbCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRQYXJ0aWFsU3dhcEVuYWJsZWQoYm9v
bCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRUaHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQoYm9v
bCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWV3cG9ydEVuYWJsZWQoYm9vbCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRNZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZShib29s
KSA9IDA7CiAgICAgdmlydHVhbCBib29sIHZpZXdwb3J0RW5hYmxlZCgpIGNvbnN0ID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0RGVmYXVsdFRpbGVTaXplKFdlYlNpemUpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0TWF4VW50aWxlZExheWVyU2l6ZShXZWJTaXplKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHNldEZpeGVkUG9zaXRpb25DcmVhdGVzU3RhY2tpbmdDb250ZXh0KGJvb2wpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0U3luY1hIUkluRG9jdW1lbnRzRW5hYmxlZChib29sKSA9IDA7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbXBsLmNw
cAppbmRleCA5MWQ4YjFiZTY2MDQ1YTM5OGQyNzg4OGVjY2UwZjdmYjZmMjMyOTExLi5kNGRkM2E2
YjBmNGIxOTU0ODI0NDJhMDgyMmY2NDdkNWEwODE5NWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvckltcGwuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAj
aW5jbHVkZSAiV2ViSW5wdXRFdmVudC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5o
IgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKKyNpbmNsdWRlICJjYy9DQ1NldHRpbmdzLmgiCiAj
aW5jbHVkZSA8d3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CkBAIC00NiwxMyArNDcsMzYgQEAgQ0NUaHJlYWQqIFdlYkNvbXBvc2l0b3JJbXBsOjpz
X2ltcGxUaHJlYWQgPSAwOwogCiB2b2lkIFdlYkNvbXBvc2l0b3I6OmluaXRpYWxpemUoV2ViVGhy
ZWFkKiBpbXBsVGhyZWFkKQogeworICAgIENDU2V0dGluZ3M6OmluaXRpYWxpemUoKTsKICAgICBX
ZWJDb21wb3NpdG9ySW1wbDo6aW5pdGlhbGl6ZShpbXBsVGhyZWFkKTsKIH0KIHZvaWQgV2ViQ29t
cG9zaXRvcjo6c2h1dGRvd24oKQogewogICAgIFdlYkNvbXBvc2l0b3JJbXBsOjpzaHV0ZG93bigp
OworICAgIENDU2V0dGluZ3M6OnNodXRkb3duKCk7CiB9CiAKK2Jvb2wgV2ViQ29tcG9zaXRvcjo6
YWNjZWxlcmF0ZWRQYWludGluZ0VuYWJsZWQoKSB7IHJldHVybiBDQ1NldHRpbmdzOjphY2NlbGVy
YXRlZFBhaW50aW5nRW5hYmxlZCgpOyB9Cit2b2lkIFdlYkNvbXBvc2l0b3I6OnNldEFjY2VsZXJh
dGVkUGFpbnRpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBDQ1NldHRpbmdzOjpzZXRBY2NlbGVy
YXRlZFBhaW50aW5nRW5hYmxlZChlbmFibGVkKTsgfQorCitib29sIFdlYkNvbXBvc2l0b3I6OnBl
clRpbGVQYWludGluZ0VuYWJsZWQoKSB7IHJldHVybiBDQ1NldHRpbmdzOjpwZXJUaWxlUGFpbnRp
bmdFbmFibGVkKCk7IH0KK3ZvaWQgV2ViQ29tcG9zaXRvcjo6c2V0UGVyVGlsZVBhaW50aW5nRW5h
YmxlZChib29sIGVuYWJsZWQpIHsgQ0NTZXR0aW5nczo6c2V0UGVyVGlsZVBhaW50aW5nRW5hYmxl
ZChlbmFibGVkKTsgfQorCitib29sIFdlYkNvbXBvc2l0b3I6OnBhcnRpYWxTd2FwRW5hYmxlZCgp
IHsgcmV0dXJuIENDU2V0dGluZ3M6OnBhcnRpYWxTd2FwRW5hYmxlZCgpOyB9Cit2b2lkIFdlYkNv
bXBvc2l0b3I6OnNldFBhcnRpYWxTd2FwRW5hYmxlZChib29sIGVuYWJsZWQpIHsgQ0NTZXR0aW5n
czo6c2V0UGFydGlhbFN3YXBFbmFibGVkKGVuYWJsZWQpOyB9CisKK2Jvb2wgV2ViQ29tcG9zaXRv
cjo6YWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkKCkgeyByZXR1cm4gQ0NTZXR0aW5nczo6YWNj
ZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkKCk7IH0KK3ZvaWQgV2ViQ29tcG9zaXRvcjo6c2V0QWNj
ZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBDQ1NldHRpbmdzOjpzZXRB
Y2NlbGVyYXRlZEFuaW1hdGlvbkVuYWJsZWQoZW5hYmxlZCk7IH0KKworc2l6ZV90IFdlYkNvbXBv
c2l0b3I6Om1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcygpIHsgcmV0dXJuIENDU2V0dGluZ3M6Om1h
eFBhcnRpYWxUZXh0dXJlVXBkYXRlcygpOyB9Cit2b2lkIFdlYkNvbXBvc2l0b3I6OnNldE1heFBh
cnRpYWxUZXh0dXJlVXBkYXRlcyhzaXplX3QgdXBkYXRlcykgeyBDQ1NldHRpbmdzOjpzZXRNYXhQ
YXJ0aWFsVGV4dHVyZVVwZGF0ZXModXBkYXRlcyk7IH0KKworV2ViU2l6ZSBXZWJDb21wb3NpdG9y
OjpkZWZhdWx0VGlsZVNpemUoKSB7IHJldHVybiBDQ1NldHRpbmdzOjpkZWZhdWx0VGlsZVNpemUo
KTsgfQordm9pZCBXZWJDb21wb3NpdG9yOjpzZXREZWZhdWx0VGlsZVNpemUoY29uc3QgV2ViU2l6
ZSYgc2l6ZSkgeyBDQ1NldHRpbmdzOjpzZXREZWZhdWx0VGlsZVNpemUoc2l6ZSk7IH0KKworV2Vi
U2l6ZSBXZWJDb21wb3NpdG9yOjptYXhVbnRpbGVkTGF5ZXJTaXplKCkgeyByZXR1cm4gQ0NTZXR0
aW5nczo6bWF4VW50aWxlZExheWVyU2l6ZSgpOyB9Cit2b2lkIFdlYkNvbXBvc2l0b3I6OnNldE1h
eFVudGlsZWRMYXllclNpemUoY29uc3QgV2ViU2l6ZSYgc2l6ZSkgeyBDQ1NldHRpbmdzOjpzZXRN
YXhVbnRpbGVkTGF5ZXJTaXplKHNpemUpOyB9CisKIHZvaWQgV2ViQ29tcG9zaXRvckltcGw6Omlu
aXRpYWxpemUoV2ViVGhyZWFkKiBpbXBsVGhyZWFkKQogewogICAgIEFTU0VSVCghc19pbml0aWFs
aXplZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRy
ZWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcu
Y3BwCmluZGV4IGFlMjBhZWE5YTM1ODNlNjM0MjQ5ZjViYjRkYjQwODgyODRkODI2ZjEuLjY5Zjlk
NjcwM2ZkNjFmZGFjMjE5ODVmMTdkOTg2NWE3ODhmYTRlYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCkBAIC0zNywyMCArMzcsMTUgQEAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLVdlYkxheWVy
VHJlZVZpZXc6OlNldHRpbmdzOjpvcGVyYXRvciBDQ1NldHRpbmdzKCkgY29uc3QKKworV2ViTGF5
ZXJUcmVlVmlldzo6U2V0dGluZ3M6Om9wZXJhdG9yIENDTGF5ZXJUcmVlU2V0dGluZ3MoKSBjb25z
dAogewotICAgIENDU2V0dGluZ3Mgc2V0dGluZ3M7Ci0gICAgc2V0dGluZ3MuYWNjZWxlcmF0ZVBh
aW50aW5nID0gYWNjZWxlcmF0ZVBhaW50aW5nOworICAgIENDTGF5ZXJUcmVlU2V0dGluZ3Mgc2V0
dGluZ3M7CiAgICAgc2V0dGluZ3MuZm9yY2VTb2Z0d2FyZUNvbXBvc2l0aW5nID0gZm9yY2VTb2Z0
d2FyZUNvbXBvc2l0aW5nOwogICAgIHNldHRpbmdzLnNob3dGUFNDb3VudGVyID0gc2hvd0ZQU0Nv
dW50ZXI7CiAgICAgc2V0dGluZ3Muc2hvd1BsYXRmb3JtTGF5ZXJUcmVlID0gc2hvd1BsYXRmb3Jt
TGF5ZXJUcmVlOwogICAgIHNldHRpbmdzLnNob3dQYWludFJlY3RzID0gc2hvd1BhaW50UmVjdHM7
CiAgICAgc2V0dGluZ3MucmVmcmVzaFJhdGUgPSByZWZyZXNoUmF0ZTsKLSAgICBzZXR0aW5ncy5w
ZXJUaWxlUGFpbnRpbmcgPSBwZXJUaWxlUGFpbnRpbmc7Ci0gICAgc2V0dGluZ3MucGFydGlhbFN3
YXBFbmFibGVkID0gcGFydGlhbFN3YXBFbmFibGVkOwotICAgIHNldHRpbmdzLnRocmVhZGVkQW5p
bWF0aW9uRW5hYmxlZCA9IHRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZDsKLSAgICBzZXR0aW5ncy5k
ZWZhdWx0VGlsZVNpemUgPSBkZWZhdWx0VGlsZVNpemU7Ci0gICAgc2V0dGluZ3MubWF4VW50aWxl
ZExheWVyU2l6ZSA9IG1heFVudGlsZWRMYXllclNpemU7CiAgICAgc2V0dGluZ3MuZGV2aWNlU2Nh
bGVGYWN0b3IgPSBkZXZpY2VTY2FsZUZhY3RvcjsKIAogICAgIC8vIEZJWE1FOiBzaG93RlBTQ291
bnRlciAvIHNob3dQbGF0Zm9ybUxheWVyVHJlZSAvIG1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcyBh
cmVuJ3Qgc3VwcG9ydGVkIGN1cnJlbnRseS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcAppbmRleCAxN2Q1ZmU4Njc1YTdlY2FlMjQy
MDYzZTJhNzMwMmE3MzY0NzIwOWYwLi4wZDY1MTkyNTFjMDc1MDY3YzRmYWIxZTMxODQyZTM4MTc2
ZTU5NmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRy
ZWVWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJU
cmVlVmlld0ltcGwuY3BwCkBAIC04MSw3ICs4MSw3IEBAIFBhc3NPd25QdHI8V2ViTGF5ZXJUcmVl
Vmlld0ltcGw+IFdlYkxheWVyVHJlZVZpZXdJbXBsOjpjcmVhdGUoV2ViTGF5ZXJUcmVlVmlld0Ns
CiAgICAgcmV0dXJuIGltcGwucmVsZWFzZSgpOwogfQogCi1XZWJMYXllclRyZWVWaWV3SW1wbDo6
V2ViTGF5ZXJUcmVlVmlld0ltcGwoV2ViTGF5ZXJUcmVlVmlld0NsaWVudCogY2xpZW50LCBjb25z
dCBXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5ncyYgc2V0dGluZ3MpIAorV2ViTGF5ZXJUcmVlVmll
d0ltcGw6OldlYkxheWVyVHJlZVZpZXdJbXBsKFdlYkxheWVyVHJlZVZpZXdDbGllbnQqIGNsaWVu
dCwgY29uc3QgV2ViTGF5ZXJUcmVlVmlldzo6U2V0dGluZ3MmIHNldHRpbmdzKQogICAgIDogbV9j
bGllbnRBZGFwdGVyKGFkb3B0UHRyKG5ldyBXZWJMYXllclRyZWVWaWV3Q2xpZW50QWRhcHRlcihj
bGllbnQpKSkKICAgICAsIG1fbGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSht
X2NsaWVudEFkYXB0ZXIuZ2V0KCksIHNldHRpbmdzKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCmluZGV4IDI5YzRkOWMxMzA0MmMxYTI4NGNj
ZGE5ZjA1Yzk2ZGJkMGU5MGRkNWYuLmJjZDc5ODA4MDBmYTMwOTAyZDY4OTNmMGMyYTRkYmMyMmNl
YTJmYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdz
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBs
LmNwcApAQCAtNTMsOCArNTMsNiBAQCBXZWJTZXR0aW5nc0ltcGw6OldlYlNldHRpbmdzSW1wbChT
ZXR0aW5ncyogc2V0dGluZ3MpCiAgICAgLCBtX3Nob3dQYWludFJlY3RzKGZhbHNlKQogICAgICwg
bV92aWV3cG9ydEVuYWJsZWQoZmFsc2UpCiAgICAgLCBtX2FwcGx5RGVmYXVsdERldmljZVNjYWxl
RmFjdG9ySW5Db21wb3NpdG9yKGZhbHNlKQotICAgICwgbV9kZWZhdWx0VGlsZVNpemUoV2ViU2l6
ZSgyNTYsIDI1NikpCi0gICAgLCBtX21heFVudGlsZWRMYXllclNpemUoV2ViU2l6ZSg1MTIsIDUx
MikpCiB7CiAgICAgQVNTRVJUKHNldHRpbmdzKTsKIH0KQEAgLTU5NywyMSArNTk1LDYgQEAgdm9p
ZCBXZWJTZXR0aW5nc0ltcGw6OnNldEFjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkKGJvb2wgZW5h
YmxlZCkKICAgICBtX3NldHRpbmdzLT5zZXRBY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkKGVuYWJs
ZWQpOwogfQogCi12b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0UGVyVGlsZVBhaW50aW5nRW5hYmxl
ZChib29sIGVuYWJsZWQpCi17Ci0gICAgbV9zZXR0aW5ncy0+c2V0UGVyVGlsZURyYXdpbmdFbmFi
bGVkKGVuYWJsZWQpOwotfQotCi12b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0UGFydGlhbFN3YXBF
bmFibGVkKGJvb2wgZW5hYmxlZCkKLXsKLSAgICBtX3NldHRpbmdzLT5zZXRQYXJ0aWFsU3dhcEVu
YWJsZWQoZW5hYmxlZCk7Ci19Ci0KLXZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRUaHJlYWRlZEFu
aW1hdGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkKQotewotICAgIG1fc2V0dGluZ3MtPnNldFRocmVh
ZGVkQW5pbWF0aW9uRW5hYmxlZChlbmFibGVkKTsKLX0KLQogdm9pZCBXZWJTZXR0aW5nc0ltcGw6
OnNldE1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlKGJvb2wgcmVxdWlyZWQpCiB7CiAg
ICAgbV9zZXR0aW5ncy0+c2V0TWVkaWFQbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUocmVxdWly
ZWQpOwpAQCAtNjI3LDE2ICs2MTAsNiBAQCB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0Vmlld3Bv
cnRFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBtX3ZpZXdwb3J0RW5hYmxlZCA9IGVuYWJsZWQ7
CiB9CiAKLXZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXREZWZhdWx0VGlsZVNpemUoV2ViU2l6ZSBz
aXplKQotewotICAgIG1fZGVmYXVsdFRpbGVTaXplID0gc2l6ZTsKLX0KLQotdm9pZCBXZWJTZXR0
aW5nc0ltcGw6OnNldE1heFVudGlsZWRMYXllclNpemUoV2ViU2l6ZSBzaXplKQotewotICAgIG1f
bWF4VW50aWxlZExheWVyU2l6ZSA9IHNpemU7Ci19Ci0KIHZvaWQgV2ViU2V0dGluZ3NJbXBsOjpz
ZXRTeW5jWEhSSW5Eb2N1bWVudHNFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICAgICBtX3NldHRp
bmdzLT5zZXRTeW5jWEhSSW5Eb2N1bWVudHNFbmFibGVkKGVuYWJsZWQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAppbmRleCBhNWQxNzJiMWFlM2U4Yzhi
OTA3NDlmNTNjZWI5ZWJhYmFlNzQxMjE2Li42NDQ0YjY1Y2I3ZjVmMDcyMzIzOWQ0NjcwZDYxMjY1
Y2Q3MjNkOTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0
aW5nc0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0lt
cGwuaApAQCAtMTA1LDggKzEwNSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2hv
d0ZQU0NvdW50ZXIoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldFNob3dQbGF0Zm9ybUxheWVy
VHJlZShib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvd1BhaW50UmVjdHMoYm9vbCk7Ci0g
ICAgdmlydHVhbCB2b2lkIHNldERlZmF1bHRUaWxlU2l6ZShXZWJTaXplKTsKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0TWF4VW50aWxlZExheWVyU2l6ZShXZWJTaXplKTsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0RWRpdGluZ0JlaGF2aW9yKEVkaXRpbmdCZWhhdmlvcik7CiAgICAgdmlydHVhbCB2b2lkIHNl
dEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShib29sKTsKQEAgLTE0NSw5ICsxNDMsNiBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHNldFNob3VsZERpc3BsYXlDYXB0aW9ucyhib29sKTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0U2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMoYm9vbCk7CiAgICAg
dmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkKGJvb2wpOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRQZXJUaWxlUGFpbnRpbmdFbmFibGVkKGJvb2wpOwotICAgIHZpcnR1YWwg
dm9pZCBzZXRQYXJ0aWFsU3dhcEVuYWJsZWQoYm9vbCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldFRo
cmVhZGVkQW5pbWF0aW9uRW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Rml4ZWRQ
b3NpdGlvbkNyZWF0ZXNTdGFja2luZ0NvbnRleHQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNl
dFZpZXdwb3J0RW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TWVkaWFQbGF5YmFj
a1JlcXVpcmVzVXNlckdlc3R1cmUoYm9vbCk7CkBAIC0xNTgsOCArMTUzLDYgQEAgcHVibGljOgog
ICAgIGJvb2wgc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKCkgY29uc3QgeyByZXR1cm4gbV9zaG93UGxh
dGZvcm1MYXllclRyZWU7IH0KICAgICBib29sIHNob3dQYWludFJlY3RzKCkgY29uc3QgeyByZXR1
cm4gbV9zaG93UGFpbnRSZWN0czsgfQogICAgIGJvb2wgYXBwbHlEZWZhdWx0RGV2aWNlU2NhbGVG
YWN0b3JJbkNvbXBvc2l0b3IoKSBjb25zdCB7IHJldHVybiBtX2FwcGx5RGVmYXVsdERldmljZVNj
YWxlRmFjdG9ySW5Db21wb3NpdG9yOyB9Ci0gICAgV2ViU2l6ZSBkZWZhdWx0VGlsZVNpemUoKSBj
b25zdCB7IHJldHVybiBtX2RlZmF1bHRUaWxlU2l6ZTsgfQotICAgIFdlYlNpemUgbWF4VW50aWxl
ZExheWVyU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4VW50aWxlZExheWVyU2l6ZTsgfQogICAg
IHZpcnR1YWwgYm9vbCBmb3JjZVNvZnR3YXJlQ29tcG9zaXRpbmcoKSBjb25zdCB7IHJldHVybiBt
X2ZvcmNlU29mdHdhcmVDb21wb3NpdGluZzsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDhiNGUyZWFmMDQ2MTUyMDg3ZDhiMDgx
ZmYyZmQ3MmI1OGIwZDJhNTIuLjEzNGNjNTI5NTdiY2RkMmRkMmQxZWI0MTUwZmE2OThlYzY4MzU3
YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTE0
Niw2ICsxNDYsNyBAQAogI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKICNpbmNsdWRlICJXaGVl
bEV2ZW50LmgiCiAjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgorI2luY2x1ZGUgImNjL0NDU2V0dGlu
Z3MuaCIKICNpbmNsdWRlICJwYWludGluZy9HcmFwaGljc0NvbnRleHRCdWlsZGVyLmgiCiAjaW5j
bHVkZSAicGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgiCiAjaW5jbHVkZSAicGxhdGZv
cm0vV2ViU3RyaW5nLmgiCkBAIC00NTgsNyArNDU5LDcgQEAgV2ViVmlld0ltcGw6OldlYlZpZXdJ
bXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCkKICNpZiBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpCiAg
ICAgcHJvdmlkZUJhdHRlcnlUbyhtX3BhZ2UuZ2V0KCksIG1fYmF0dGVyeUNsaWVudC5nZXQoKSk7
CiAjZW5kaWYKLSAgICAKKwogICAgIG1fcGFnZS0+c2V0R3JvdXBOYW1lKHBhZ2VHcm91cE5hbWUp
OwogCiAjaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCkBAIC0zNDgwLDE5ICszNDgxLDEx
IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShi
b29sIGFjdGl2ZSkKICAgICAgICAgVFJBQ0VfRVZFTlQoIldlYlZpZXdJbXBsOjpzZXRJc0FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUodHJ1ZSkiLCB0aGlzLCAwKTsKIAogICAgICAgICBXZWJM
YXllclRyZWVWaWV3OjpTZXR0aW5ncyBsYXllclRyZWVWaWV3U2V0dGluZ3M7Ci0gICAgICAgIGxh
eWVyVHJlZVZpZXdTZXR0aW5ncy5hY2NlbGVyYXRlUGFpbnRpbmcgPSBwYWdlKCktPnNldHRpbmdz
KCktPmFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQoKTsKICAgICAgICAgbGF5ZXJUcmVlVmlld1Nl
dHRpbmdzLnNob3dGUFNDb3VudGVyID0gc2V0dGluZ3NJbXBsKCktPnNob3dGUFNDb3VudGVyKCk7
CiAgICAgICAgIGxheWVyVHJlZVZpZXdTZXR0aW5ncy5zaG93UGxhdGZvcm1MYXllclRyZWUgPSBz
ZXR0aW5nc0ltcGwoKS0+c2hvd1BsYXRmb3JtTGF5ZXJUcmVlKCk7CiAgICAgICAgIGxheWVyVHJl
ZVZpZXdTZXR0aW5ncy5zaG93UGFpbnRSZWN0cyA9IHNldHRpbmdzSW1wbCgpLT5zaG93UGFpbnRS
ZWN0cygpOwogICAgICAgICBsYXllclRyZWVWaWV3U2V0dGluZ3MuZm9yY2VTb2Z0d2FyZUNvbXBv
c2l0aW5nID0gc2V0dGluZ3MoKS0+Zm9yY2VTb2Z0d2FyZUNvbXBvc2l0aW5nKCk7CiAKLSAgICAg
ICAgbGF5ZXJUcmVlVmlld1NldHRpbmdzLnBlclRpbGVQYWludGluZyA9IHBhZ2UoKS0+c2V0dGlu
Z3MoKS0+cGVyVGlsZURyYXdpbmdFbmFibGVkKCk7Ci0gICAgICAgIGxheWVyVHJlZVZpZXdTZXR0
aW5ncy5wYXJ0aWFsU3dhcEVuYWJsZWQgPSBwYWdlKCktPnNldHRpbmdzKCktPnBhcnRpYWxTd2Fw
RW5hYmxlZCgpOwotICAgICAgICBsYXllclRyZWVWaWV3U2V0dGluZ3MudGhyZWFkZWRBbmltYXRp
b25FbmFibGVkID0gcGFnZSgpLT5zZXR0aW5ncygpLT50aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQo
KTsKLQotICAgICAgICBsYXllclRyZWVWaWV3U2V0dGluZ3MuZGVmYXVsdFRpbGVTaXplID0gc2V0
dGluZ3NJbXBsKCktPmRlZmF1bHRUaWxlU2l6ZSgpOwotICAgICAgICBsYXllclRyZWVWaWV3U2V0
dGluZ3MubWF4VW50aWxlZExheWVyU2l6ZSA9IHNldHRpbmdzSW1wbCgpLT5tYXhVbnRpbGVkTGF5
ZXJTaXplKCk7Ci0KICAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QgPSBOb25Db21w
b3NpdGVkQ29udGVudEhvc3Q6OmNyZWF0ZShXZWJWaWV3SW1wbENvbnRlbnRQYWludGVyOjpjcmVh
dGUodGhpcykpOwogICAgICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC0+c2V0U2hvd0Rl
YnVnQm9yZGVycyhwYWdlKCktPnNldHRpbmdzKCktPnNob3dEZWJ1Z0JvcmRlcnMoKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1w
bFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJ
bXBsVGVzdC5jcHAKaW5kZXggZTYyMzFkMzRmMTE3YTg2MTk4YTFlZjVmMjY2Y2U4NzZhODg3OWVi
ZS4uYzkwNTg0MDc1YTM0MmFhMWFmMzFkZGY5MjM2MjlmMjg4ZDE1ZTY3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVz
dC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNDQW5pbWF0aW9uVGVzdENvbW1v
bi5oIgogI2luY2x1ZGUgIkNDTGF5ZXJUZXN0Q29tbW9uLmgiCisjaW5jbHVkZSAiQ0NUZXN0Q29t
bW9uLmgiCiAjaW5jbHVkZSAiRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmgiCkBAIC0zNSw2ICszNiw3IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXllclRpbGluZ0RhdGEu
aCIKICNpbmNsdWRlICJjYy9DQ1F1YWRDdWxsZXIuaCIKICNpbmNsdWRlICJjYy9DQ1Njcm9sbGJh
ckxheWVySW1wbC5oIgorI2luY2x1ZGUgImNjL0NDU2V0dGluZ3MuaCIKICNpbmNsdWRlICJjYy9D
Q1NpbmdsZVRocmVhZFByb3h5LmgiCiAjaW5jbHVkZSAiY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQu
aCIKICNpbmNsdWRlICJjYy9DQ1RleHR1cmVMYXllckltcGwuaCIKQEAgLTY1LDcgKzY3LDcgQEAg
cHVibGljOgogICAgICAgICA6IG1fZGlkUmVxdWVzdENvbW1pdChmYWxzZSkKICAgICAgICAgLCBt
X2RpZFJlcXVlc3RSZWRyYXcoZmFsc2UpCiAgICAgewotICAgICAgICBDQ1NldHRpbmdzIHNldHRp
bmdzOworICAgICAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOwogICAgICAgICBtX2hv
c3RJbXBsID0gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKHNldHRpbmdzLCB0aGlzKTsKICAg
ICAgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgp
LCBVbnRocm90dGxlZFVwbG9hZGVyKTsKICAgICAgICAgbV9ob3N0SW1wbC0+c2V0Vmlld3BvcnRT
aXplKEludFNpemUoMTAsIDEwKSk7CkBAIC04MCwxMCArODIsOSBAQCBwdWJsaWM6CiAKICAgICBQ
YXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IGNyZWF0ZUxheWVyVHJlZUhvc3QoYm9vbCBw
YXJ0aWFsU3dhcCwgUGFzc1JlZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gZ3JhcGhpY3NDb250ZXh0
LCBQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiByb290UHRyKQogICAgIHsKLSAgICAgICAgQ0NTZXR0
aW5ncyBzZXR0aW5nczsKLQotICAgICAgICBzZXR0aW5ncy5wYXJ0aWFsU3dhcEVuYWJsZWQgPSBw
YXJ0aWFsU3dhcDsKKyAgICAgICAgQ0NTZXR0aW5nczo6c2V0UGFydGlhbFN3YXBFbmFibGVkKHBh
cnRpYWxTd2FwKTsKIAorICAgICAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOwogICAg
ICAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gbXlIb3N0SW1wbCA9IENDTGF5ZXJUcmVl
SG9zdEltcGw6OmNyZWF0ZShzZXR0aW5ncywgdGhpcyk7CiAKICAgICAgICAgbXlIb3N0SW1wbC0+
aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoZ3JhcGhpY3NDb250ZXh0LCBVbnRocm90dGxlZFVwbG9h
ZGVyKTsKQEAgLTE0OCw2ICsxNDksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgT3duUHRyPENDTGF5ZXJU
cmVlSG9zdEltcGw+IG1faG9zdEltcGw7CiAgICAgYm9vbCBtX2RpZFJlcXVlc3RDb21taXQ7CiAg
ICAgYm9vbCBtX2RpZFJlcXVlc3RSZWRyYXc7CisgICAgQ0NTY29wZWRTZXR0aW5ncyBtX3Njb3Bl
ZFNldHRpbmdzOwogfTsKIAogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBzY3JvbGxE
ZWx0YU5vTGF5ZXJzKQpAQCAtMTA2NCw4ICsxMDY2LDggQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9z
dEltcGxUZXN0LCBwYXJ0aWFsU3dhcFJlY2VpdmVzRGFtYWdlUmVjdCkKIAogICAgIC8vIFRoaXMg
dGVzdCBjcmVhdGVzIGl0cyBvd24gQ0NMYXllclRyZWVIb3N0SW1wbCwgc28KICAgICAvLyB0aGF0
IHdlIGNhbiBmb3JjZSBwYXJ0aWFsIHN3YXAgZW5hYmxlZC4KLSAgICBDQ1NldHRpbmdzIHNldHRp
bmdzOwotICAgIHNldHRpbmdzLnBhcnRpYWxTd2FwRW5hYmxlZCA9IHRydWU7CisgICAgQ0NMYXll
clRyZWVTZXR0aW5ncyBzZXR0aW5nczsKKyAgICBDQ1NldHRpbmdzOjpzZXRQYXJ0aWFsU3dhcEVu
YWJsZWQodHJ1ZSk7CiAgICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IGxheWVyVHJlZUhv
c3RJbXBsID0gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKHNldHRpbmdzLCB0aGlzKTsKICAg
ICBsYXllclRyZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY2NDb250ZXh0LCBV
bnRocm90dGxlZFVwbG9hZGVyKTsKICAgICBsYXllclRyZWVIb3N0SW1wbC0+c2V0Vmlld3BvcnRT
aXplKEludFNpemUoNTAwLCA1MDApKTsKQEAgLTEyNzEsNyArMTI3Myw3IEBAIFRFU1RfRihDQ0xh
eWVyVHJlZUhvc3RJbXBsVGVzdCwgcGFydGlhbFN3YXBOb1VwZGF0ZSkKICAgICBoYXJuZXNzLm11
c3RTZXRTY2lzc29yKDAsIDAsIDEwLCAxMCk7CiAKICAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0
SW1wbD4gbXlIb3N0SW1wbCA9IGNyZWF0ZUxheWVyVHJlZUhvc3QodHJ1ZSwgY29udGV4dCwgRmFr
ZUxheWVyV2l0aFF1YWRzOjpjcmVhdGUoMSkpOwotICAgIAorCiAgICAgLy8gRHJhdyBvbmNlIHRv
IG1ha2Ugc3VyZSBsYXllciBpcyBub3QgbmV3CiAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJh
bWVEYXRhIGZyYW1lOwogICAgIEVYUEVDVF9UUlVFKG15SG9zdEltcGwtPnByZXBhcmVUb0RyYXco
ZnJhbWUpKTsKQEAgLTEyOTgsNyArMTMwMCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVy
biBXZWJTdHJpbmcoIkdMX0NIUk9NSVVNX3Bvc3Rfc3ViX2J1ZmZlciIpOwogICAgICAgICByZXR1
cm4gV2ViU3RyaW5nKCk7CiAgICAgfQotICAgIAorCiAgICAgV2ViU3RyaW5nIGdldFJlcXVlc3Rh
YmxlRXh0ZW5zaW9uc0NIUk9NSVVNKCkKICAgICB7CiAgICAgICAgIHJldHVybiBXZWJTdHJpbmco
IkdMX0NIUk9NSVVNX3Bvc3Rfc3ViX2J1ZmZlciIpOwpAQCAtMTMwNywxMCArMTMwOSwxMSBAQCBw
dWJsaWM6CiAKIHN0YXRpYyBQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IHNldHVwTGF5
ZXJzRm9yT3BhY2l0eShib29sIHBhcnRpYWxTd2FwLCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50
KiBjbGllbnQpCiB7Ci0gICAgQ0NTZXR0aW5ncyBzZXR0aW5nczsKLSAgICBzZXR0aW5ncy5wYXJ0
aWFsU3dhcEVuYWJsZWQgPSBwYXJ0aWFsU3dhcDsKKyAgICBDQ1NldHRpbmdzOjpzZXRQYXJ0aWFs
U3dhcEVuYWJsZWQocGFydGlhbFN3YXApOwogCiAgICAgUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0
PiBjb250ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKEdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3
IFBhcnRpYWxTd2FwQ29udGV4dCgpKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5
VG9Ib3N0V2luZG93KSk7CisKKyAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOwogICAg
IE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBteUhvc3RJbXBsID0gQ0NMYXllclRyZWVIb3N0
SW1wbDo6Y3JlYXRlKHNldHRpbmdzLCBjbGllbnQpOwogICAgIG15SG9zdEltcGwtPmluaXRpYWxp
emVMYXllclJlbmRlcmVyKGNvbnRleHQucmVsZWFzZSgpLCBVbnRocm90dGxlZFVwbG9hZGVyKTsK
ICAgICBteUhvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMDAsIDEwMCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5j
cHAKaW5kZXggYWEyN2U4OGY3ZGMzZWQ4MDgwMjEwNjQ5Y2NkMGJlMzAwMjdjZjBiZi4uZGU4YTI0
YTdiNzZmZWMwZDY3OGQyOGJlMzkxZTExMjIwMGUxMmFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC00NCw2ICs0
NCw3IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NTY29wZWRUaHJlYWRQcm94eS5oIgorI2lu
Y2x1ZGUgImNjL0NDU2V0dGluZ3MuaCIKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5
LmgiCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgImNjL0NDVGhy
ZWFkVGFzay5oIgpAQCAtMTU0LDcgKzE1NSw3IEBAIHB1YmxpYzoKIC8vIEFkYXB0cyBDQ0xheWVy
VHJlZUhvc3RJbXBsIGZvciB0ZXN0LiBSdW5zIHJlYWwgY29kZSwgdGhlbiBpbnZva2VzIHRlc3Qg
aG9va3MuCiBjbGFzcyBNb2NrTGF5ZXJUcmVlSG9zdEltcGwgOiBwdWJsaWMgQ0NMYXllclRyZWVI
b3N0SW1wbCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8TW9ja0xheWVyVHJlZUhv
c3RJbXBsPiBjcmVhdGUoVGVzdEhvb2tzKiB0ZXN0SG9va3MsIGNvbnN0IENDU2V0dGluZ3MmIHNl
dHRpbmdzLCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KiBjbGllbnQpCisgICAgc3RhdGljIFBh
c3NPd25QdHI8TW9ja0xheWVyVHJlZUhvc3RJbXBsPiBjcmVhdGUoVGVzdEhvb2tzKiB0ZXN0SG9v
a3MsIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzLCBDQ0xheWVyVHJlZUhvc3RJ
bXBsQ2xpZW50KiBjbGllbnQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IE1v
Y2tMYXllclRyZWVIb3N0SW1wbCh0ZXN0SG9va3MsIHNldHRpbmdzLCBjbGllbnQpKTsKICAgICB9
CkBAIC0yMDIsNyArMjAzLDcgQEAgcHJvdGVjdGVkOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBN
b2NrTGF5ZXJUcmVlSG9zdEltcGwoVGVzdEhvb2tzKiB0ZXN0SG9va3MsIGNvbnN0IENDU2V0dGlu
Z3MmIHNldHRpbmdzLCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KiBjbGllbnQpCisgICAgTW9j
a0xheWVyVHJlZUhvc3RJbXBsKFRlc3RIb29rcyogdGVzdEhvb2tzLCBjb25zdCBDQ0xheWVyVHJl
ZVNldHRpbmdzJiBzZXR0aW5ncywgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCogY2xpZW50KQog
ICAgICAgICA6IENDTGF5ZXJUcmVlSG9zdEltcGwoc2V0dGluZ3MsIGNsaWVudCkKICAgICAgICAg
LCBtX3Rlc3RIb29rcyh0ZXN0SG9va3MpCiAgICAgewpAQCAtMjE0LDEzICsyMTUsOSBAQCBwcml2
YXRlOgogLy8gQWRhcHRzIENDTGF5ZXJUcmVlSG9zdCBmb3IgdGVzdC4gSW5qZWN0cyBNb2NrTGF5
ZXJUcmVlSG9zdEltcGwuCiBjbGFzcyBNb2NrTGF5ZXJUcmVlSG9zdCA6IHB1YmxpYyBDQ0xheWVy
VHJlZUhvc3QgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPE1vY2tMYXllclRyZWVI
b3N0PiBjcmVhdGUoVGVzdEhvb2tzKiB0ZXN0SG9va3MsIENDTGF5ZXJUcmVlSG9zdENsaWVudCog
Y2xpZW50LCBQYXNzUmVmUHRyPExheWVyQ2hyb21pdW0+IHJvb3RMYXllciwgY29uc3QgQ0NTZXR0
aW5ncyYgc2V0dGluZ3MpCisgICAgc3RhdGljIFBhc3NPd25QdHI8TW9ja0xheWVyVHJlZUhvc3Q+
IGNyZWF0ZShUZXN0SG9va3MqIHRlc3RIb29rcywgQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGll
bnQsIFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcm9vdExheWVyLCBjb25zdCBDQ0xheWVyVHJl
ZVNldHRpbmdzJiBzZXR0aW5ncykKICAgICB7Ci0gICAgICAgIC8vIEZvciB0aGVzZSB0ZXN0cywg
d2Ugd2lsbCBlbmFibGUgdGhyZWFkZWQgYW5pbWF0aW9ucy4KLSAgICAgICAgQ0NTZXR0aW5ncyBz
ZXR0aW5nc0NvcHkgPSBzZXR0aW5nczsKLSAgICAgICAgc2V0dGluZ3NDb3B5LnRocmVhZGVkQW5p
bWF0aW9uRW5hYmxlZCA9IHRydWU7Ci0KLSAgICAgICAgT3duUHRyPE1vY2tMYXllclRyZWVIb3N0
PiBsYXllclRyZWVIb3N0KGFkb3B0UHRyKG5ldyBNb2NrTGF5ZXJUcmVlSG9zdCh0ZXN0SG9va3Ms
IGNsaWVudCwgc2V0dGluZ3NDb3B5KSkpOworICAgICAgICBPd25QdHI8TW9ja0xheWVyVHJlZUhv
c3Q+IGxheWVyVHJlZUhvc3QoYWRvcHRQdHIobmV3IE1vY2tMYXllclRyZWVIb3N0KHRlc3RIb29r
cywgY2xpZW50LCBzZXR0aW5ncykpKTsKICAgICAgICAgYm9vbCBzdWNjZXNzID0gbGF5ZXJUcmVl
SG9zdC0+aW5pdGlhbGl6ZSgpOwogICAgICAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKICAgICAg
ICAgbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKHJvb3RMYXllcik7CkBAIC0yMzUsMTAgKzIz
Miw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc093blB0cjxDQ0xheWVyVHJlZUhvc3RJ
bXBsPiBjcmVhdGVMYXllclRyZWVIb3N0SW1wbChDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KiBj
bGllbnQpCiAgICAgewotICAgICAgICAvLyBGb3IgdGhlc2UgdGVzdHMsIHdlIHdpbGwgZW5hYmxl
IHRocmVhZGVkIGFuaW1hdGlvbnMuCi0gICAgICAgIENDU2V0dGluZ3MgY29weVNldHRpbmdzID0g
c2V0dGluZ3MoKTsKLSAgICAgICAgY29weVNldHRpbmdzLnRocmVhZGVkQW5pbWF0aW9uRW5hYmxl
ZCA9IHRydWU7Ci0gICAgICAgIHJldHVybiBNb2NrTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZSht
X3Rlc3RIb29rcywgY29weVNldHRpbmdzLCBjbGllbnQpOworICAgICAgICByZXR1cm4gTW9ja0xh
eWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUobV90ZXN0SG9va3MsIHNldHRpbmdzKCksIGNsaWVudCk7
CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZEFkZEFuaW1hdGlvbigpIE9WRVJSSURFCkBA
IC0yNTMsNyArMjQ3LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBNb2NrTGF5
ZXJUcmVlSG9zdChUZXN0SG9va3MqIHRlc3RIb29rcywgQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBj
bGllbnQsIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKQorICAgIE1vY2tMYXllclRyZWVIb3N0
KFRlc3RIb29rcyogdGVzdEhvb2tzLCBDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwgY29u
c3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MpCiAgICAgICAgIDogQ0NMYXllclRyZWVI
b3N0KGNsaWVudCwgc2V0dGluZ3MpCiAgICAgICAgICwgbV90ZXN0SG9va3ModGVzdEhvb2tzKQog
ICAgICAgICAsIG1fZGlkQWRkQW5pbWF0aW9uV2FzQ2FsbGVkKGZhbHNlKQpAQCAtNjQ3LDYgKzY0
MSw5IEBAIHByb3RlY3RlZDoKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBXZWJDb21wb3Np
dG9yOjppbml0aWFsaXplKDApOwogCisgICAgICAgIC8vIEZvciB0aGVzZSB0ZXN0cywgd2Ugd2ls
bCBlbmFibGUgdGhyZWFkZWQgYW5pbWF0aW9ucy4KKyAgICAgICAgV2ViQ29tcG9zaXRvcjo6c2V0
QWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkKHRydWUpOworCiAgICAgICAgIEFTU0VSVChDQ1By
b3h5Ojppc01haW5UaHJlYWQoKSk7CiAgICAgICAgIG1fbWFpblRocmVhZFByb3h5ID0gQ0NTY29w
ZWRUaHJlYWRQcm94eTo6Y3JlYXRlKENDUHJveHk6Om1haW5UaHJlYWQoKSk7CiAKQEAgLTY3Nyw3
ICs2NzQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIFdlYkNvbXBvc2l0b3I6OnNodXRkb3duKCk7
CiAgICAgfQogCi0gICAgQ0NTZXR0aW5ncyBtX3NldHRpbmdzOworICAgIENDTGF5ZXJUcmVlU2V0
dGluZ3MgbV9zZXR0aW5nczsKICAgICBPd25QdHI8TW9ja0xheWVyVHJlZUhvc3RDbGllbnQ+IG1f
Y2xpZW50OwogICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3Q+IG1fbGF5ZXJUcmVlSG9zdDsKIApA
QCAtMjEzOSwxMiArMjEzNiwxMyBAQCBwdWJsaWM6CiAgICAgQ0NMYXllclRyZWVIb3N0VGVzdEF0
b21pY0NvbW1pdCgpCiAgICAgICAgIDogbV9sYXllcihDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhV
cGRhdGVUcmFja2luZzo6Y3JlYXRlKCZtX2RlbGVnYXRlKSkKICAgICB7Ci0gICAgICAgIC8vIE1h
a2Ugc3VyZSBwYXJ0aWFsIHRleHR1cmUgdXBkYXRlcyBhcmUgdHVybmVkIG9mZi4KLSAgICAgICAg
bV9zZXR0aW5ncy5tYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMgPSAwOwogICAgIH0KIAogICAgIHZp
cnR1YWwgdm9pZCBiZWdpblRlc3QoKQogICAgIHsKKyAgICAgICAgLy8gTWFrZSBzdXJlIHBhcnRp
YWwgdGV4dHVyZSB1cGRhdGVzIGFyZSB0dXJuZWQgb2ZmLgorICAgICAgICBXZWJDb21wb3NpdG9y
OjpzZXRNYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoMCk7CisKICAgICAgICAgbV9sYXllclRyZWVI
b3N0LT5zZXRSb290TGF5ZXIobV9sYXllcik7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0
Vmlld3BvcnRTaXplKEludFNpemUoMTAsIDEwKSk7CiAKQEAgLTIyMzksMTIgKzIyMzcsMTMgQEAg
cHVibGljOgogICAgICAgICAsIG1fY2hpbGQoQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRl
VHJhY2tpbmc6OmNyZWF0ZSgmbV9kZWxlZ2F0ZSkpCiAgICAgICAgICwgbV9udW1Db21taXRzKDAp
CiAgICAgewotICAgICAgICAvLyBBbGxvdyBvbmUgcGFydGlhbCB0ZXh0dXJlIHVwZGF0ZS4KLSAg
ICAgICAgbV9zZXR0aW5ncy5tYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMgPSAxOwogICAgIH0KIAog
ICAgIHZpcnR1YWwgdm9pZCBiZWdpblRlc3QoKQogICAgIHsKKyAgICAgICAgLy8gQWxsb3cgb25l
IHBhcnRpYWwgdGV4dHVyZSB1cGRhdGUuCisgICAgICAgIFdlYkNvbXBvc2l0b3I6OnNldE1heFBh
cnRpYWxUZXh0dXJlVXBkYXRlcygxKTsKKwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFJv
b3RMYXllcihtX3BhcmVudCk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRT
aXplKEludFNpemUoMTAsIDIwKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NUZXN0Q29tbW9uLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
VGVzdENvbW1vbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlNGYxYzFkMDZiMjc4ZmYyYjRlOWE2NWI5ODkxZDg5
NzViZTk1NTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDVGVzdENvbW1vbi5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
Q0NUZXN0Q29tbW9uX2gKKyNkZWZpbmUgQ0NUZXN0Q29tbW9uX2gKKworI2luY2x1ZGUgImNjL0ND
U2V0dGluZ3MuaCIKKworbmFtZXNwYWNlIFdlYktpdFRlc3RzIHsKKworLy8gSWYgeW91IGhhdmUg
YSB0ZXN0IHRoYXQgbW9kaWZpZXMgZ2xvYmFsIHNldHRpbmdzLCBidXQgZG9lcyBub3QgaW5pdGlh
bGl6ZSBvcgorLy8gb3Igc2h1dGRvd24gdGhlIFdlYkNvbXBvc2l0b3IsIGtlZXAgb25lIG9mIHRo
ZXNlIGluIHNjb3BlZCBmb3IgdGhlIGR1cmF0aW9uCisvLyBvZiB5b3VyIHRlc3QuCitjbGFzcyBD
Q1Njb3BlZFNldHRpbmdzIHsKK3B1YmxpYzoKKyAgICBDQ1Njb3BlZFNldHRpbmdzKCkgeyBXZWJD
b3JlOjpDQ1NldHRpbmdzOjppbml0aWFsaXplKCk7IH0KKyAgICB+Q0NTY29wZWRTZXR0aW5ncygp
IHsgV2ViQ29yZTo6Q0NTZXR0aW5nczo6c2h1dGRvd24oKTsgfQorfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0VGVzdHMKKworI2VuZGlmIC8vIENDVGVzdENvbW1vbl9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0
LmNwcAppbmRleCBhNTY1MTQ2YTVkNDkxOTY1YjdiMWFkMjVkNmZlNjljNTE1MTU0MGY5Li43NGYy
NmQwZGI1OWY4MzUyMGExNzQ1M2NjZDYxZWQyYTI5NjQzZDZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5j
cHAKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEZha2VDQ0xheWVy
VHJlZUhvc3QoKQotICAgICAgICA6IENDTGF5ZXJUcmVlSG9zdCgmbV9jbGllbnQsIENDU2V0dGlu
Z3MoKSkKKyAgICAgICAgOiBDQ0xheWVyVHJlZUhvc3QoJm1fY2xpZW50LCBDQ0xheWVyVHJlZVNl
dHRpbmdzKCkpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0xheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCA4MjEzZGQ4MTIwNzFlNWEzNTBjMmQ1
ZjE3NjBlMGJiZmE4ZDQ4ZjVlLi5jZWYzNWNjNGM3ZDM0OWI0ODNiM2M2ZmFkODBlNzAyMzk4OTk0
ZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyQ2hyb21p
dW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyQ2hyb21p
dW1UZXN0LmNwcApAQCAtNTcsNyArNTcsNyBAQCBuYW1lc3BhY2UgewogY2xhc3MgTW9ja0NDTGF5
ZXJUcmVlSG9zdCA6IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3QgewogcHVibGljOgogICAgIE1vY2tD
Q0xheWVyVHJlZUhvc3QoKQotICAgICAgICA6IENDTGF5ZXJUcmVlSG9zdCgmbV9mYWtlQ2xpZW50
LCBDQ1NldHRpbmdzKCkpCisgICAgICAgIDogQ0NMYXllclRyZWVIb3N0KCZtX2Zha2VDbGllbnQs
IENDTGF5ZXJUcmVlU2V0dGluZ3MoKSkKICAgICB7CiAgICAgICAgIGluaXRpYWxpemUoKTsKICAg
ICB9CkBAIC02MTQsNyArNjE0LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEZha2VDQ0xh
eWVyVHJlZUhvc3QoKQotICAgICAgICA6IENDTGF5ZXJUcmVlSG9zdCgmbV9jbGllbnQsIENDU2V0
dGluZ3MoKSkKKyAgICAgICAgOiBDQ0xheWVyVHJlZUhvc3QoJm1fY2xpZW50LCBDQ0xheWVyVHJl
ZVNldHRpbmdzKCkpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHAKaW5kZXggZTg2
ZmQwYmUxMDkyZmY2YmJlMGVlZjk2NWYwZjRlN2EwYzA2MThlNi4uMjI4MjU3MmQyMmFiNzJiYjQ5
MmU3YTJmOGJiMTQ3Y2VjODgxNjVlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC0yNSw5ICsy
NSwxMSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJv
bWl1bS5oIgogCisjaW5jbHVkZSAiQ0NUZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiRmFrZVdlYkdy
YXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCIKKyNpbmNsdWRlICJjYy9DQ1NldHRpbmdz
LmgiCiAjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgogCiAjaW5jbHVkZSA8Z21v
Y2svZ21vY2suaD4KQEAgLTM1LDYgKzM3LDcgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdlYktpdFRlc3RzOwog
CiBjbGFzcyBGcmFtZUNvdW50aW5nTWVtb3J5QWxsb2NhdGlvblNldHRpbmdDb250ZXh0IDogcHVi
bGljIEZha2VXZWJHcmFwaGljc0NvbnRleHQzRCB7CiBwdWJsaWM6CkBAIC03Myw3ICs3Niw3IEBA
IHB1YmxpYzoKIAogICAgIC8vIENDUmVuZGVyZXJDbGllbnQgbWV0aG9kcy4KICAgICB2aXJ0dWFs
IGNvbnN0IEludFNpemUmIGRldmljZVZpZXdwb3J0U2l6ZSgpIGNvbnN0IE9WRVJSSURFIHsgc3Rh
dGljIEludFNpemUgZmFrZVNpemU7IHJldHVybiBmYWtlU2l6ZTsgfQotICAgIHZpcnR1YWwgY29u
c3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCBPVkVSUklERSB7IHN0YXRpYyBDQ1NldHRp
bmdzIGZha2VTZXR0aW5nczsgcmV0dXJuIGZha2VTZXR0aW5nczsgfQorICAgIHZpcnR1YWwgY29u
c3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCBPVkVSUklERSB7IHN0YXRp
YyBDQ0xheWVyVHJlZVNldHRpbmdzIGZha2VTZXR0aW5nczsgcmV0dXJuIGZha2VTZXR0aW5nczsg
fQogICAgIHZpcnR1YWwgdm9pZCBkaWRMb3NlQ29udGV4dCgpIE9WRVJSSURFIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGUoKSBPVkVSUklERSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgc2V0RnVsbFJvb3RMYXllckRhbWFnZSgpIE9WRVJSSURFIHsgbV9zZXRGdWxsUm9v
dExheWVyRGFtYWdlQ291bnQrKzsgfQpAQCAtMTMwLDYgKzEzMyw3IEBAIHByb3RlY3RlZDoKICAg
ICBGcmFtZUNvdW50aW5nTWVtb3J5QWxsb2NhdGlvblNldHRpbmdDb250ZXh0JiBtX21vY2tDb250
ZXh0OwogICAgIEZha2VDQ1JlbmRlcmVyQ2xpZW50IG1fbW9ja0NsaWVudDsKICAgICBGYWtlTGF5
ZXJSZW5kZXJlckNocm9taXVtIG1fbGF5ZXJSZW5kZXJlckNocm9taXVtOworICAgIENDU2NvcGVk
U2V0dGluZ3MgbV9zY29wZWRTZXR0aW5nczsKIH07CiAKIC8vIFRlc3QgTGF5ZXJSZW5kZXJlckNo
cm9taXVtIGRpc2NhcmRGcmFtZWJ1ZmZlciBmdW5jdGlvbmFsaXR5OgpAQCAtMTgxLDcgKzE4NSw3
IEBAIFRFU1RfRihMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LCBTd2FwQnVmZmVyc1doaWxlQmFj
a2J1ZmZlckRpc2NhcmRlZFNob3VsZElnbm9yCiAgICAgc3dhcEJ1ZmZlcnMoKTsKICAgICBFWFBF
Q1RfRVEoMCwgbV9tb2NrQ29udGV4dC5mcmFtZUNvdW50KCkpOwogICAgIEVYUEVDVF9FUSgyLCBt
X21vY2tDbGllbnQuc2V0RnVsbFJvb3RMYXllckRhbWFnZUNvdW50KCkpOwotICAgIAorCiAgICAg
c3dhcEJ1ZmZlcnMoKTsKICAgICBFWFBFQ1RfRVEoMCwgbV9tb2NrQ29udGV4dC5mcmFtZUNvdW50
KCkpOwogICAgIEVYUEVDVF9FUSgzLCBtX21vY2tDbGllbnQuc2V0RnVsbFJvb3RMYXllckRhbWFn
ZUNvdW50KCkpOwpAQCAtMjcyLDYgKzI3Niw3IEBAIHB1YmxpYzoKIC8vIFRoaXMgdGVzdCBpc24n
dCB1c2luZyB0aGUgc2FtZSBmaXh0dXJlIGFzIExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QsIGFu
ZCB5b3UgY2FuJ3QgbWl4IFRFU1QoKSBhbmQgVEVTVF9GKCkgd2l0aCB0aGUgc2FtZSBuYW1lLCBo
ZW5jZSBMUkMyLgogVEVTVChMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0MiwgaW5pdGlhbGl6YXRp
b25Eb2VzTm90TWFrZVN5bmNocm9ub3VzQ2FsbHMpCiB7CisgICAgQ0NTY29wZWRTZXR0aW5ncyBz
Y29wZWRTZXR0aW5nczsKICAgICBGYWtlQ0NSZW5kZXJlckNsaWVudCBtb2NrQ2xpZW50OwogICAg
IEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0gbGF5ZXJSZW5kZXJlckNocm9taXVtKCZtb2NrQ2xp
ZW50LCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21X
ZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBGb3JiaWRTeW5jaHJvbm91c0NhbGxDb250ZXh0KSwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KSk7CiAKQEAgLTMxMyw2
ICszMTgsNyBAQCBwcml2YXRlOgogCiBURVNUKExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QyLCBp
bml0aWFsaXphdGlvbldpdGhRdWlja2x5TG9zdENvbnRleHREb2VzTm90QXNzZXJ0KQogeworICAg
IENDU2NvcGVkU2V0dGluZ3Mgc2NvcGVkU2V0dGluZ3M7CiAgICAgRmFrZUNDUmVuZGVyZXJDbGll
bnQgbW9ja0NsaWVudDsKICAgICBGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtIGxheWVyUmVuZGVy
ZXJDaHJvbWl1bSgmbW9ja0NsaWVudCwgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVH
cmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgTG9zZUNvbnRleHRPbkZp
cnN0R2V0Q29udGV4dCksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdp
bmRvdykpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RleHR1
cmVMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Rl
eHR1cmVMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggYjYwMDE3ZmQ5YWEwODBiNGZkN2Y2OWY5
YTBmZWUwYzI2OGI0NDllYS4uZDBjYzNkOTZmMTRlYmNmZThkM2M5OGIzZGY2MjdjMGQ2M2E0OGNl
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UZXh0dXJlTGF5ZXJD
aHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGV4dHVy
ZUxheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgewogY2xh
c3MgTW9ja0NDTGF5ZXJUcmVlSG9zdCA6IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3QgewogcHVibGlj
OgogICAgIE1vY2tDQ0xheWVyVHJlZUhvc3QoKQotICAgICAgICA6IENDTGF5ZXJUcmVlSG9zdCgm
bV9mYWtlQ2xpZW50LCBDQ1NldHRpbmdzKCkpCisgICAgICAgIDogQ0NMYXllclRyZWVIb3N0KCZt
X2Zha2VDbGllbnQsIENDTGF5ZXJUcmVlU2V0dGluZ3MoKSkKICAgICB7CiAgICAgICAgIGluaXRp
YWxpemUoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCBmMGMxMzEzZjkwZWU3NTJkNGMyMjE3
OGFkMzk0NDc4YjI1NzYxNjIwLi43MThhMzY3YzgxZDJlODY4NjA1NTg5ZjdmYjhkYmYzNjM1OGRh
YmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRM
YXllckNocm9taXVtVGVzdC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDQ1RpbGVk
TGF5ZXJUZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiRmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudC5o
IgogI2luY2x1ZGUgIldlYkNvbXBvc2l0b3IuaCIKKyNpbmNsdWRlICJjYy9DQ1NldHRpbmdzLmgi
CiAjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIiAvLyBGb3IgRGVidWdTY29wZWRT
ZXRJbXBsVGhyZWFkCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KICNpbmNsdWRlIDxwdWJsaWMv
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KQEAgLTc5Nyw3ICs3OTgsNyBAQCBURVNUKFRpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QsIHNraXBzRHJhd0dldHNSZXNldCkKICAgICAvLyBJbml0aWFsaXpl
IHdpdGhvdXQgdGhyZWFkaW5nIHN1cHBvcnQuCiAgICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpp
bml0aWFsaXplKDApOwogICAgIEZha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQgZmFrZUNDTGF5ZXJU
cmVlSG9zdENsaWVudDsKLSAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0PiBjY0xheWVyVHJlZUhv
c3QgPSBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSgmZmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudCwg
Q0NTZXR0aW5ncygpKTsKKyAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0PiBjY0xheWVyVHJlZUhv
c3QgPSBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSgmZmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudCwg
Q0NMYXllclRyZWVTZXR0aW5ncygpKTsKIAogICAgIC8vIENyZWF0ZSB0d28gMzAwIHggMzAwIHRp
bGVkIGxheWVycy4KICAgICBJbnRTaXplIGNvbnRlbnRCb3VuZHMoMzAwLCAzMDApOwpAQCAtODcz
LDEwICs4NzQsMTIgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBodWdlTGF5ZXJVcGRh
dGVDcmFzaCkKIAogVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwYXJ0aWFsVXBkYXRlcykK
IHsKLSAgICBDQ1NldHRpbmdzIHNldHRpbmdzOwotICAgIHNldHRpbmdzLm1heFBhcnRpYWxUZXh0
dXJlVXBkYXRlcyA9IDQ7CiAgICAgLy8gSW5pdGlhbGl6ZSB3aXRob3V0IHRocmVhZGluZyBzdXBw
b3J0LgogICAgIFdlYktpdDo6V2ViQ29tcG9zaXRvcjo6aW5pdGlhbGl6ZSgwKTsKKworICAgIEND
TGF5ZXJUcmVlU2V0dGluZ3Mgc2V0dGluZ3M7CisgICAgQ0NTZXR0aW5nczo6c2V0TWF4UGFydGlh
bFRleHR1cmVVcGRhdGVzKDQpOworCiAgICAgRmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudCBmYWtl
Q0NMYXllclRyZWVIb3N0Q2xpZW50OwogICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3Q+IGNjTGF5
ZXJUcmVlSG9zdCA9IENDTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCZmYWtlQ0NMYXllclRyZWVIb3N0
Q2xpZW50LCBzZXR0aW5ncyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvVHJlZVN5bmNocm9uaXplclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9UcmVlU3luY2hyb25pemVyVGVzdC5jcHAKaW5kZXggZWRkZWQ1YWQyZWJkNjc2M2RjZTFj
ODRkMTQ0NGI4M2I3ZjgwYTgwNi4uMDg1OTdmMWRjNjJkMzAzYTMxZjUwNWViMTZhNjE2MDA1OWVl
YjhiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UcmVlU3luY2hy
b25pemVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UcmVlU3lu
Y2hyb25pemVyVGVzdC5jcHAKQEAgLTE2Myw3ICsxNjMsNyBAQCBURVNUKFRyZWVTeW5jaHJvbml6
ZXJUZXN0LCBzeW5jU2ltcGxlVHJlZUZyb21FbXB0eSkKIHsKICAgICBEZWJ1Z1Njb3BlZFNldElt
cGxUaHJlYWQgaW1wbDsKIAotICAgIENDU2V0dGluZ3Mgc2V0dGluZ3M7CisgICAgQ0NMYXllclRy
ZWVTZXR0aW5ncyBzZXR0aW5nczsKICAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gaG9z
dEltcGwgPSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoc2V0dGluZ3MsIDApOwogCiAgICAg
UmVmUHRyPExheWVyQ2hyb21pdW0+IGxheWVyVHJlZVJvb3QgPSBMYXllckNocm9taXVtOjpjcmVh
dGUoKTsKQEAgLTE4MSw3ICsxODEsNyBAQCBURVNUKFRyZWVTeW5jaHJvbml6ZXJUZXN0LCBzeW5j
U2ltcGxlVHJlZVJldXNpbmdMYXllcnMpCiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGlt
cGw7CiAgICAgVmVjdG9yPGludD4gY2NMYXllckRlc3RydWN0aW9uTGlzdDsKIAotICAgIENDU2V0
dGluZ3Mgc2V0dGluZ3M7CisgICAgQ0NMYXllclRyZWVTZXR0aW5ncyBzZXR0aW5nczsKICAgICBP
d25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gaG9zdEltcGwgPSBDQ0xheWVyVHJlZUhvc3RJbXBs
OjpjcmVhdGUoc2V0dGluZ3MsIDApOwogCiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGxheWVy
VHJlZVJvb3QgPSBNb2NrTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCZjY0xheWVyRGVzdHJ1Y3Rpb25M
aXN0KTsKQEAgLTIxMSw3ICsyMTEsNyBAQCBURVNUKFRyZWVTeW5jaHJvbml6ZXJUZXN0LCBzeW5j
U2ltcGxlVHJlZUFuZFRyYWNrU3RhY2tpbmdPcmRlckNoYW5nZSkKICAgICBEZWJ1Z1Njb3BlZFNl
dEltcGxUaHJlYWQgaW1wbDsKICAgICBWZWN0b3I8aW50PiBjY0xheWVyRGVzdHJ1Y3Rpb25MaXN0
OwogCi0gICAgQ0NTZXR0aW5ncyBzZXR0aW5nczsKKyAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNl
dHRpbmdzOwogICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBob3N0SW1wbCA9IENDTGF5
ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShzZXR0aW5ncywgMCk7CiAKICAgICAvLyBTZXQgdXAgdGhl
IHRyZWUgYW5kIHN5bmMgb25jZS4gY2hpbGQyIG5lZWRzIHRvIGJlIHN5bmNlZCBoZXJlLCB0b28s
IGV2ZW4gdGhvdWdoIHdlCkBAIC0yNDAsNyArMjQwLDcgQEAgVEVTVChUcmVlU3luY2hyb25pemVy
VGVzdCwgc3luY1NpbXBsZVRyZWVBbmRQcm9wZXJ0aWVzKQogewogICAgIERlYnVnU2NvcGVkU2V0
SW1wbFRocmVhZCBpbXBsOwogCi0gICAgQ0NTZXR0aW5ncyBzZXR0aW5nczsKKyAgICBDQ0xheWVy
VHJlZVNldHRpbmdzIHNldHRpbmdzOwogICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBo
b3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShzZXR0aW5ncywgMCk7CiAKICAg
ICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbGF5ZXJUcmVlUm9vdCA9IExheWVyQ2hyb21pdW06OmNy
ZWF0ZSgpOwpAQCAtMjc3LDcgKzI3Nyw3IEBAIFRFU1QoVHJlZVN5bmNocm9uaXplclRlc3QsIHJl
dXNlQ0NMYXllcnNBZnRlclN0cnVjdHVyYWxDaGFuZ2UpCiAgICAgRGVidWdTY29wZWRTZXRJbXBs
VGhyZWFkIGltcGw7CiAgICAgVmVjdG9yPGludD4gY2NMYXllckRlc3RydWN0aW9uTGlzdDsKIAot
ICAgIENDU2V0dGluZ3Mgc2V0dGluZ3M7CisgICAgQ0NMYXllclRyZWVTZXR0aW5ncyBzZXR0aW5n
czsKICAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gaG9zdEltcGwgPSBDQ0xheWVyVHJl
ZUhvc3RJbXBsOjpjcmVhdGUoc2V0dGluZ3MsIDApOwogCiAgICAgLy8gU2V0IHVwIGEgdHJlZSB3
aXRoIHRoaXMgc29ydCBvZiBzdHJ1Y3R1cmU6CkBAIC0zMjcsNyArMzI3LDcgQEAgVEVTVChUcmVl
U3luY2hyb25pemVyVGVzdCwgc3luY1NpbXBsZVRyZWVUaGVuRGVzdHJveSkKICAgICBEZWJ1Z1Nj
b3BlZFNldEltcGxUaHJlYWQgaW1wbDsKICAgICBWZWN0b3I8aW50PiBjY0xheWVyRGVzdHJ1Y3Rp
b25MaXN0OwogCi0gICAgQ0NTZXR0aW5ncyBzZXR0aW5nczsKKyAgICBDQ0xheWVyVHJlZVNldHRp
bmdzIHNldHRpbmdzOwogICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBob3N0SW1wbCA9
IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShzZXR0aW5ncywgMCk7CiAKICAgICBSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gb2xkTGF5ZXJUcmVlUm9vdCA9IE1vY2tMYXllckNocm9taXVtOjpjcmVh
dGUoJmNjTGF5ZXJEZXN0cnVjdGlvbkxpc3QpOwpAQCAtMzYwLDcgKzM2MCw3IEBAIFRFU1QoVHJl
ZVN5bmNocm9uaXplclRlc3QsIHN5bmNNYXNrUmVwbGljYUFuZFJlcGxpY2FNYXNrTGF5ZXJzKQog
ewogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwogCi0gICAgQ0NTZXR0aW5ncyBz
ZXR0aW5nczsKKyAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOwogICAgIE93blB0cjxD
Q0xheWVyVHJlZUhvc3RJbXBsPiBob3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0
ZShzZXR0aW5ncywgMCk7CiAKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbGF5ZXJUcmVlUm9v
dCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwpAQCAtNDA2LDcgKzQwNiw3IEBAIFRFU1QoVHJl
ZVN5bmNocm9uaXplclRlc3QsIHN5bmNocm9uaXplQW5pbWF0aW9ucykKIHsKICAgICBEZWJ1Z1Nj
b3BlZFNldEltcGxUaHJlYWQgaW1wbDsKIAotICAgIENDU2V0dGluZ3Mgc2V0dGluZ3M7CisgICAg
Q0NMYXllclRyZWVTZXR0aW5ncyBzZXR0aW5nczsKICAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0
SW1wbD4gaG9zdEltcGwgPSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoc2V0dGluZ3MsIDAp
OwogCiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGxheWVyVHJlZVJvb3QgPSBMYXllckNocm9t
aXVtOjpjcmVhdGUoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146191</attachid>
            <date>2012-06-06 21:37:32 -0700</date>
            <delta_ts>2012-06-08 06:54:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88384-20120607003731.patch</filename>
            <type>text/plain</type>
            <size>84123</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5NjcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBjMDU3MTc2ZDE5ODFi
ZWFjNmNlZWZiYTQxOTZiMDExMWQ4ZDI2MDgyLi43ZDY1NmFiNTQ1YjJhMjM2NGU2MGQ5NDI1MDA4
MjMyZTFkZWMwNmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNi0wNiAg
SWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IENlcnRhaW4gc2V0dGluZ3MgaW4gQ0NTZXR0aW5ncyBjb3VsZCBiZSBnbG9iYWwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4Mzg0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMv
V2ViTGF5ZXJUcmVlVmlldy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgIChTZXR0aW5n
cyk6CisKIDIwMTItMDYtMDYgIE1hcmsgUGlsZ3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFtDaHJvbWl1bV0gTW92ZSBjcmVhdGVNZXNzYWdlUG9ydENoYW5uZWwgdG8gUGxh
dGZvcm0uaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IGE3MDViYmQ5NWE4NmQwYjZmMDVmODlhNzU5ODYyMTFjZTk0
ZDAwNDIuLjg1NWQxNGIyNGRjOWU0MWRkMWU0OWRkOWQwOWE1ZmVhYTNlYjY3MWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw4NyBAQAorMjAxMi0wNi0wNiAgSWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIENlcnRhaW4gc2V0dGluZ3MgaW4gQ0NT
ZXR0aW5ncyBjb3VsZCBiZSBnbG9iYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg4Mzg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBObyBmdW5jdGlvbmFsaXR5IGNoYW5nZS4KKwor
ICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgICogcGFnZS9TZXR0
aW5ncy5oOgorICAgICAgICAoU2V0dGluZ3MpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRMYXllckNocm9taXVtOjpjcmVhdGVUZXh0dXJlVXBkYXRlcklmTmVlZGVkKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OmFkZEFuaW1hdGlvbik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlVGlsZVNpemVBbmRUaWxp
bmdPcHRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVi
dWdSZWN0SGlzdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0RlYnVnUmVjdEhpc3Rvcnk6
OmVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NEZWJ1Z1JlY3RIaXN0b3J5OjpzYXZlRGVi
dWdSZWN0c0ZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKENDRGVidWdSZWN0SGlzdG9yeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRz
VXBEaXNwbGF5OjplbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDSGVhZHNVcERpc3BsYXk6
OnNob3dQbGF0Zm9ybUxheWVyVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNw
bGF5OjpzaG93RGVidWdSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5
OjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNDSGVhZHNVcERpc3BsYXk6OmRyYXdIdWRDb250
ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3RGVidWdSZWN0
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlz
cGxheS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ0hlYWRzVXBEaXNwbGF5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmJ1ZmZlcmVkVXBkYXRlcyk6CisgICAgICAg
IChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnJlcXVlc3RQYXJ0aWFsVGV4dHVyZVVwZGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmFuaW1hdGVMYXllcnMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVTZXR0aW5nczo6Q0NMYXllclRyZWVTZXR0aW5n
cyk6CisgICAgICAgIChDQ0xheWVyVHJlZVNldHRpbmdzKToKKyAgICAgICAgKENDTGF5ZXJUcmVl
SG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnNldHRpbmdzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpDQ0xheWVyVHJlZUhvc3RJbXBs
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRl
clN1cmZhY2VMYXllckxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1w
bDo6YW5pbWF0ZUxheWVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0SW1wbCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5oOgor
ICAgICAgICAoQ0NSZW5kZXJlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlcmVy
OjpzZXR0aW5ncyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
ZXR0aW5ncy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1NldHRpbmdzOjphY2NlbGVyYXRlZFBhaW50aW5nRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1NldHRpbmdzOjpzZXRBY2NlbGVyYXRlZFBhaW50aW5nRW5hYmxlZCk6CisgICAgICAg
IChXZWJDb3JlOjpDQ1NldHRpbmdzOjpwZXJUaWxlUGFpbnRpbmdFbmFibGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDU2V0dGluZ3M6OnNldFBlclRpbGVQYWludGluZ0VuYWJsZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NTZXR0aW5nczo6cGFydGlhbFN3YXBFbmFibGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDU2V0dGluZ3M6OnNldFBhcnRpYWxTd2FwRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1NldHRpbmdzOjphY2NlbGVyYXRlZEFuaW1hdGlvbkVuYWJsZWQpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NTZXR0aW5nczo6c2V0QWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDU2V0dGluZ3M6Om1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1NldHRpbmdzOjpzZXRNYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NTZXR0aW5nczo6ZGVmYXVsdFRpbGVTaXplKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDU2V0dGluZ3M6OnNldERlZmF1bHRUaWxlU2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1NldHRpbmdzOjptYXhVbnRpbGVkTGF5ZXJTaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDU2V0dGluZ3M6OnNldE1heFVudGlsZWRMYXllclNpemUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NTZXR0aW5nczo6cmVzZXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2V0dGluZ3MuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KENDU2V0dGluZ3MpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHA6Cisg
ICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmg6CisgICAgICAgIChJbnRlcm5hbFNl
dHRpbmdzKToKKwogMjAxMi0wNi0wNiAgQWxlYyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgSW5kZXhlZERCOiBPcHRpbWl6ZSBzaW5nbGUta2V5IGdldCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDhlZWFlMDRmNWYzYjY1N2Y0YzYyY2VhYmY1MjdjOWQ3
ZDU5NmE0ZTcuLjAzODBmNzBiN2Y5MzIxNTFkNDA0YTA1ZDg1Y2YwYjgwZGI5NDY4N2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMTItMDYtMDYgIElhbiBW
b2xsaWNrICA8dm9sbGlja0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBDZXJ0
YWluIHNldHRpbmdzIGluIENDU2V0dGluZ3MgY291bGQgYmUgZ2xvYmFsCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODM4NAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lmd5cGk6CisgICAgICAg
ICogcHVibGljL1dlYkNvbXBvc2l0b3IuaDoKKyAgICAgICAgKFdlYkNvbXBvc2l0b3IpOgorICAg
ICAgICAqIHB1YmxpYy9XZWJTZXR0aW5ncy5oOgorICAgICAgICAqIHNyYy9XZWJDb21wb3NpdG9y
SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3I6OnNldEFjY2VsZXJhdGVk
UGFpbnRpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbXBvc2l0b3I6OnNldFBlclRpbGVQYWludGluZ0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb21wb3NpdG9yOjpzZXRQYXJ0aWFsU3dhcEVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb21wb3NpdG9yOjpzZXRBY2NlbGVyYXRlZEFuaW1hdGlvbkVuYWJsZWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpzZXRNYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpzZXREZWZhdWx0VGlsZVNpemUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpzZXRNYXhVbnRpbGVkTGF5ZXJTaXplKToKKyAg
ICAgICAgKiBzcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5nczo6b3BlcmF0b3IgQ0NMYXll
clRyZWVTZXR0aW5ncyk6CisgICAgICAgICogc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlld0ltcGw6OldlYkxheWVyVHJlZVZpZXdJ
bXBsKToKKyAgICAgICAgKiBzcmMvV2ViU2V0dGluZ3NJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViU2V0dGluZ3NJbXBsOjpXZWJTZXR0aW5nc0ltcGwpOgorICAgICAgICAqIHNyYy9XZWJT
ZXR0aW5nc0ltcGwuaDoKKyAgICAgICAgKFdlYlNldHRpbmdzSW1wbCk6CisgICAgICAgICogc3Jj
L1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OldlYlZpZXdJ
bXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0FjdGl2ZSk6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3Qu
Y3BwOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwOgorICAgICAgICAo
V1RGOjpNb2NrTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZSk6CisgICAgICAgIChXVEY6Ok1vY2tM
YXllclRyZWVIb3N0SW1wbDo6TW9ja0xheWVyVHJlZUhvc3RJbXBsKToKKyAgICAgICAgKFdURjo6
TW9ja0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXVEY6Ok1vY2tMYXllclRyZWVI
b3N0OjpjcmVhdGVMYXllclRyZWVIb3N0SW1wbCk6CisgICAgICAgIChXVEY6Ok1vY2tMYXllclRy
ZWVIb3N0OjpNb2NrTGF5ZXJUcmVlSG9zdCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9z
dFRlc3Q6OnJ1blRlc3QpOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0VGVzdCk6CisgICAgICAg
IChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RBdG9taWNDb21taXQ6OkNDTGF5ZXJUcmVlSG9zdFRl
c3RBdG9taWNDb21taXQpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0QXRvbWlj
Q29tbWl0V2l0aFBhcnRpYWxVcGRhdGU6OkNDTGF5ZXJUcmVlSG9zdFRlc3RBdG9taWNDb21taXRX
aXRoUGFydGlhbFVwZGF0ZSk6CisgICAgICAgICogdGVzdHMvQ0NUZXN0Q29tbW9uLmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVh
ZHNVcERpc3BsYXkuaC4KKyAgICAgICAgKFdlYktpdFRlc3RzKToKKyAgICAgICAgKENDU2NvcGVk
U2V0dGluZ3MpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDU2NvcGVkU2V0dGluZ3M6OkNDU2Nv
cGVkU2V0dGluZ3MpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDU2NvcGVkU2V0dGluZ3M6On5D
Q1Njb3BlZFNldHRpbmdzKToKKyAgICAgICAgKiB0ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1U
ZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9MYXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAg
ICogdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgIChMYXllclJl
bmRlcmVyQ2hyb21pdW1UZXN0KToKKyAgICAgICAgKFRFU1RfRik6CisgICAgICAgIChURVNUKToK
KyAgICAgICAgKiB0ZXN0cy9UZXh0dXJlTGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAgICAq
IHRlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL1RyZWVT
eW5jaHJvbml6ZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdFRlc3RzOjpURVNUKToKKwogMjAx
Mi0wNi0wNiAgTWFyayBQaWxncmltICA8cGlsZ3JpbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
W0Nocm9taXVtXSBNb3ZlIGNyZWF0ZU1lc3NhZ2VQb3J0Q2hhbm5lbCB0byBQbGF0Zm9ybS5oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZp
ZXcuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5o
CmluZGV4IDIzZDBkNjNjZTlkZDI4YTViNWJhZDcxMjhlYWExNDlhOTczYjlkZTYuLjk5YjYwOWE1
MjU4NzE4ODRhODZlNzgzY2MzNzUzMmM4MTJjNjljY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCisrKyBiL1NvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCkBAIC0zNCw3ICszNCw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdDsKLXN0cnVjdCBD
Q1NldHRpbmdzOworY2xhc3MgQ0NMYXllclRyZWVTZXR0aW5nczsKIH0KIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC00OSwzNSArNDksMjMgQEAgY2xhc3MgV2ViTGF5ZXJUcmVlVmlldyA6IHB1Ymxp
YyBXZWJOb25Db3B5YWJsZSB7CiBwdWJsaWM6CiAgICAgc3RydWN0IFNldHRpbmdzIHsKICAgICAg
ICAgU2V0dGluZ3MoKQotICAgICAgICAgICAgOiBhY2NlbGVyYXRlUGFpbnRpbmcoZmFsc2UpCi0g
ICAgICAgICAgICAsIGZvcmNlU29mdHdhcmVDb21wb3NpdGluZyhmYWxzZSkKKyAgICAgICAgICAg
IDogZm9yY2VTb2Z0d2FyZUNvbXBvc2l0aW5nKGZhbHNlKQogICAgICAgICAgICAgLCBzaG93RlBT
Q291bnRlcihmYWxzZSkKICAgICAgICAgICAgICwgc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKGZhbHNl
KQogICAgICAgICAgICAgLCBzaG93UGFpbnRSZWN0cyhmYWxzZSkKLSAgICAgICAgICAgICwgcmVm
cmVzaFJhdGUoMCkKLSAgICAgICAgICAgICwgcGVyVGlsZVBhaW50aW5nKGZhbHNlKQotICAgICAg
ICAgICAgLCBwYXJ0aWFsU3dhcEVuYWJsZWQoZmFsc2UpCi0gICAgICAgICAgICAsIHRocmVhZGVk
QW5pbWF0aW9uRW5hYmxlZChmYWxzZSkKLSAgICAgICAgICAgICwgZGVmYXVsdFRpbGVTaXplKFdl
YlNpemUoMjU2LCAyNTYpKQotICAgICAgICAgICAgLCBtYXhVbnRpbGVkTGF5ZXJTaXplKFdlYlNp
emUoNTEyLCA1MTIpKQogICAgICAgICAgICAgLCBkZXZpY2VTY2FsZUZhY3RvcigxKQorICAgICAg
ICAgICAgLCByZWZyZXNoUmF0ZSgwKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBi
b29sIGFjY2VsZXJhdGVQYWludGluZzsKICAgICAgICAgYm9vbCBmb3JjZVNvZnR3YXJlQ29tcG9z
aXRpbmc7CiAgICAgICAgIGJvb2wgc2hvd0ZQU0NvdW50ZXI7CiAgICAgICAgIGJvb2wgc2hvd1Bs
YXRmb3JtTGF5ZXJUcmVlOwogICAgICAgICBib29sIHNob3dQYWludFJlY3RzOwotICAgICAgICBk
b3VibGUgcmVmcmVzaFJhdGU7Ci0gICAgICAgIGJvb2wgcGVyVGlsZVBhaW50aW5nOwotICAgICAg
ICBib29sIHBhcnRpYWxTd2FwRW5hYmxlZDsKLSAgICAgICAgYm9vbCB0aHJlYWRlZEFuaW1hdGlv
bkVuYWJsZWQ7Ci0gICAgICAgIFdlYlNpemUgZGVmYXVsdFRpbGVTaXplOwotICAgICAgICBXZWJT
aXplIG1heFVudGlsZWRMYXllclNpemU7CiAgICAgICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9y
OworICAgICAgICBkb3VibGUgcmVmcmVzaFJhdGU7CiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9O
Ci0gICAgICAgIG9wZXJhdG9yIFdlYkNvcmU6OkNDU2V0dGluZ3MoKSBjb25zdDsKKyAgICAgICAg
b3BlcmF0b3IgV2ViQ29yZTo6Q0NMYXllclRyZWVTZXR0aW5ncygpIGNvbnN0OwogI2VuZGlmCiAg
ICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDRhOWM4NTc4ZjQwMGQyODcxMDFiYWFmMTY2YmUx
ZGEwNDAyMWZkYzYuLjY1YmRiNGNhNGYxOGY4OGE4MWRjZGZjY2RmMjY3YjZhNjM4MGU0ZTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKQEAgLTM3NDUsNiArMzc0NSw4IEBACiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29wZWRUaHJlYWRQcm94eS5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5j
cHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xs
YmFyTGF5ZXJJbXBsLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2V0dGluZ3MuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NldHRpbmdzLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAnLApA
QCAtNjY0NCw3ICs2NjQ2LDcgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0lt
YWdlcy9zZWFyY2hTbWFsbEdyYXkucG5nJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQt
ZW5kL0ltYWdlcy9zZWFyY2hTbWFsbFdoaXRlLnBuZycsCiAgICAgICAgICAgICAnaW5zcGVjdG9y
L2Zyb250LWVuZC9JbWFnZXMvc2VhcmNoTmV4dC5wbmcnLAotICAgICAgICAgICAgJ2luc3BlY3Rv
ci9mcm9udC1lbmQvSW1hZ2VzL3NlYXJjaFByZXYucG5nJywKKyAgICAgICAgICAgICdpbnNwZWN0
b3IvZnJvbnQtZW5kL0ltYWdlcy9zZWFyY2hQcmV2LnBuZycsICAgICAgICAgICAgCiAgICAgICAg
ICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9JbWFnZXMvc2VnbWVudC5wbmcnLAogICAgICAgICAg
ICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL3NlZ21lbnRFbmQucG5nJywKICAgICAgICAg
ICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9zZWdtZW50SG92ZXIucG5nJywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TZXR0aW5ncy5jcHAKaW5kZXggNWZlOWM5ODRmMTUxNGI2NDU1NjY3MDFkZTJjY2ZjZjc1
ZDZmOThmNS4uZmFjMDY5ZWIxOGYxMWE5OWM0Njc4YTM2OGNlZWJjZjMyMWM0ZjJmMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy5jcHAKQEAgLTI1OCwxNSArMjU4LDEyIEBAIFNldHRpbmdzOjpTZXR0
aW5ncyhQYWdlKiBwYWdlKQogICAgICwgbV9zaG91bGREaXNwbGF5Q2FwdGlvbnMoZmFsc2UpCiAg
ICAgLCBtX3Nob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zKGZhbHNlKQogI2VuZGlmCi0gICAg
LCBtX3BlclRpbGVEcmF3aW5nRW5hYmxlZChmYWxzZSkKLSAgICAsIG1fcGFydGlhbFN3YXBFbmFi
bGVkKGZhbHNlKQogICAgICwgbV9zY3JvbGxpbmdDb29yZGluYXRvckVuYWJsZWQoZmFsc2UpCiAg
ICAgLCBtX25vdGlmaWNhdGlvbnNFbmFibGVkKHRydWUpCiAgICAgLCBtX25lZWRzSXNMb2FkaW5n
SW5BUElTZW5zZVF1aXJrKGZhbHNlKQogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgLCBt
X3RvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKGZhbHNlKQogI2VuZGlmCi0gICAgLCBtX3RocmVh
ZGVkQW5pbWF0aW9uRW5hYmxlZChmYWxzZSkKICAgICAsIG1fc2hvdWxkUmVzcGVjdEltYWdlT3Jp
ZW50YXRpb24oZmFsc2UpCiAgICAgLCBtX3dhbnRzQmFsYW5jZWRTZXREZWZlcnNMb2FkaW5nQmVo
YXZpb3IoZmFsc2UpCiAgICAgLCBtX3JlcXVlc3RBbmltYXRpb25GcmFtZUVuYWJsZWQodHJ1ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3MuaAppbmRleCA3ZjFlY2E3ZGJkMTM5NDU4N2RlNzJmMDFmN2E1ZmI3
YzViNWI1Mzk4Li4zNmQ4ZjlhMTU1MTRmZDNiMmMyMzE1ZWFiNzQxOTZmZjViMmJlOTA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy5oCkBAIC01MzksMTIgKzUzOSw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgYm9vbCBzaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9ucygpIGNvbnN0IHsg
cmV0dXJuIG1fc2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnM7IH0KICNlbmRpZgogCi0gICAg
ICAgIHZvaWQgc2V0UGVyVGlsZURyYXdpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3BlclRp
bGVEcmF3aW5nRW5hYmxlZCA9IGVuYWJsZWQ7IH0KLSAgICAgICAgYm9vbCBwZXJUaWxlRHJhd2lu
Z0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3BlclRpbGVEcmF3aW5nRW5hYmxlZDsgfQotCi0g
ICAgICAgIHZvaWQgc2V0UGFydGlhbFN3YXBFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3BhcnRp
YWxTd2FwRW5hYmxlZCA9IGVuYWJsZWQ7IH0KLSAgICAgICAgYm9vbCBwYXJ0aWFsU3dhcEVuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiBtX3BhcnRpYWxTd2FwRW5hYmxlZDsgfQotCiAgICAgICAgIHZv
aWQgc2V0U2Nyb2xsaW5nQ29vcmRpbmF0b3JFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3Njcm9s
bGluZ0Nvb3JkaW5hdG9yRW5hYmxlZCA9IGVuYWJsZWQ7IH0KICAgICAgICAgYm9vbCBzY3JvbGxp
bmdDb29yZGluYXRvckVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGluZ0Nvb3JkaW5h
dG9yRW5hYmxlZDsgfQogCkBAIC01NjAsOSArNTU0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBib29sIGlzVG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX3RvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkOyB9CiAjZW5kaWYKIAotICAgICAgICB2b2lk
IHNldFRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV90aHJlYWRlZEFu
aW1hdGlvbkVuYWJsZWQgPSBlbmFibGVkOyB9Ci0gICAgICAgIGJvb2wgdGhyZWFkZWRBbmltYXRp
b25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV90aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQ7IH0K
LQogICAgICAgICB2b2lkIHNldFNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKGJvb2wgZW5h
YmxlZCkgeyBtX3Nob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uID0gZW5hYmxlZDsgfQogICAg
ICAgICBib29sIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9zaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbjsgfQogCkBAIC03NTAsOSArNzQxLDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1fc2hvdWxkRGlzcGxheUNhcHRpb25z
IDogMTsKICAgICAgICAgYm9vbCBtX3Nob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zIDogMTsK
ICNlbmRpZgotICAgICAgICBib29sIG1fcGVyVGlsZURyYXdpbmdFbmFibGVkIDogMTsKLSAgICAg
ICAgYm9vbCBtX3BhcnRpYWxTd2FwRW5hYmxlZCA6IDE7Ci0KICAgICAgICAgYm9vbCBtX3Njcm9s
bGluZ0Nvb3JkaW5hdG9yRW5hYmxlZCA6IDE7CiAKICAgICAgICAgYm9vbCBtX25vdGlmaWNhdGlv
bnNFbmFibGVkIDogMTsKQEAgLTc2MSw3ICs3NDksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICAgICAgYm9vbCBtX3RvdWNoRXZlbnRFbXVsYXRp
b25FbmFibGVkIDogMTsKICNlbmRpZgotICAgICAgICBib29sIG1fdGhyZWFkZWRBbmltYXRpb25F
bmFibGVkIDogMTsKICAgICAgICAgYm9vbCBtX3Nob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9u
IDogMTsKICAgICAgICAgYm9vbCBtX3dhbnRzQmFsYW5jZWRTZXREZWZlcnNMb2FkaW5nQmVoYXZp
b3IgOiAxOwogICAgICAgICBib29sIG1fcmVxdWVzdEFuaW1hdGlvbkZyYW1lRW5hYmxlZCA6IDE7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
b250ZW50TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggYWU4ZDMyMDhiZmJhYjhk
N2FkZTk4MmE3ZDhhOTNhMmQ4M2VkN2RhZi4uNTAzZGUyZTM5M2YxMGZhOWQwZGQ5OTU5OGY4OWUy
MzU2MjNlZGUzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcApAQCAtNDEs
NiArNDEsNyBAQAogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUg
IlBsYXRmb3JtU3VwcG9ydC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgorI2lu
Y2x1ZGUgImNjL0NDU2V0dGluZ3MuaCIKICNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KICNp
bmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIApAQCAtMTI1LDkgKzEyNiw5IEBAIHZvaWQgQ29u
dGVudExheWVyQ2hyb21pdW06OmNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQoKQogewogICAg
IGlmIChtX3RleHR1cmVVcGRhdGVyKQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKGxheWVyVHJl
ZUhvc3QoKS0+c2V0dGluZ3MoKS5hY2NlbGVyYXRlUGFpbnRpbmcpCisgICAgaWYgKENDU2V0dGlu
Z3M6OmFjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkKCkpCiAgICAgICAgIG1fdGV4dHVyZVVwZGF0
ZXIgPSBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0
ZShDb250ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUobV9kZWxlZ2F0ZSkpOwotICAgIGVsc2UgaWYg
KGxheWVyVHJlZUhvc3QoKS0+c2V0dGluZ3MoKS5wZXJUaWxlUGFpbnRpbmcpCisgICAgZWxzZSBp
ZiAoQ0NTZXR0aW5nczo6cGVyVGlsZVBhaW50aW5nRW5hYmxlZCgpKQogICAgICAgICBtX3RleHR1
cmVVcGRhdGVyID0gQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3Jl
YXRlKENvbnRlbnRMYXllclBhaW50ZXI6OmNyZWF0ZShtX2RlbGVnYXRlKSwgbGF5ZXJUcmVlSG9z
dCgpLT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdNYXBTdWIpOwogICAgIGVsc2UK
ICAgICAgICAgbV90ZXh0dXJlVXBkYXRlciA9IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OmNyZWF0ZShDb250ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUobV9kZWxlZ2F0ZSksIGxheWVy
VHJlZUhvc3QoKS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLnVzaW5nTWFwU3ViKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggZjYxZmQzNWQ1MzAwMTQxZjJiMmZmMjZiODc2NGI4ZjYy
ZTAzZTIzZC4uNzM3OTFmZDYwODllYWJlYWNiYTFjZmE0NDFlMzJiYWVlNGRhZjQ1MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJv
bWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJjYy9DQ0xheWVy
QW5pbWF0aW9uRGVsZWdhdGUuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgogI2luY2x1
ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgorI2luY2x1ZGUgImNjL0NDU2V0dGluZ3MuaCIKICNp
bmNsdWRlICJza2lhL2V4dC9wbGF0Zm9ybV9jYW52YXMuaCIKIAogdXNpbmcgbmFtZXNwYWNlIHN0
ZDsKQEAgLTYwMSwxMSArNjAyLDExIEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0VHJhbnNmb3Jt
RnJvbUFuaW1hdGlvbihjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhCiAKIGJvb2wg
TGF5ZXJDaHJvbWl1bTo6YWRkQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1
ZXMsIGNvbnN0IEludFNpemUmIGJveFNpemUsIGNvbnN0IEFuaW1hdGlvbiogYW5pbWF0aW9uLCBp
bnQgYW5pbWF0aW9uSWQsIGludCBncm91cElkLCBkb3VibGUgdGltZU9mZnNldCkKIHsKLSAgICBp
ZiAoIW1fbGF5ZXJUcmVlSG9zdCB8fCAhbV9sYXllclRyZWVIb3N0LT5zZXR0aW5ncygpLnRocmVh
ZGVkQW5pbWF0aW9uRW5hYmxlZCkKKyAgICBpZiAoIUNDU2V0dGluZ3M6OmFjY2VsZXJhdGVkQW5p
bWF0aW9uRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBib29sIGFkZGVk
QW5pbWF0aW9uID0gbV9sYXllckFuaW1hdGlvbkNvbnRyb2xsZXItPmFkZEFuaW1hdGlvbih2YWx1
ZXMsIGJveFNpemUsIGFuaW1hdGlvbiwgYW5pbWF0aW9uSWQsIGdyb3VwSWQsIHRpbWVPZmZzZXQp
OwotICAgIGlmIChhZGRlZEFuaW1hdGlvbikgeworICAgIGlmIChhZGRlZEFuaW1hdGlvbiAmJiBt
X2xheWVyVHJlZUhvc3QpIHsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5kaWRBZGRBbmltYXRp
b24oKTsKICAgICAgICAgc2V0TmVlZHNDb21taXQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmNwcAppbmRleCA1NWNmNzRmMmY4NDFlMmJmMmVjOWU0NjdjMWY1N2Iw
NzljYWU5ZmVlLi44YTNjY2M0ZWI5ZmM1ZGU0ZDRlZDk2YjNjNTFlMTgyMjQ3ODA5Yjg1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTY0LDYgKzY0LDcgQEAKICNp
bmNsdWRlICJjYy9DQ1JlbmRlclBhc3MuaCIKICNpbmNsdWRlICJjYy9DQ1JlbmRlclBhc3NEcmF3
UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDUmVuZGVyU3VyZmFjZUZpbHRlcnMuaCIKKyNpbmNsdWRl
ICJjYy9DQ1NldHRpbmdzLmgiCiAjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgog
I2luY2x1ZGUgImNjL0NDU29saWRDb2xvckRyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NUZXh0
dXJlRHJhd1F1YWQuaCIKQEAgLTI4Myw3ICsyODQsNyBAQCBib29sIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6aW5pdGlhbGl6ZSgpCiAKICAgICBtX2NvbnRleHQtPnNldENvbnRleHRMb3N0Q2FsbGJh
Y2soQ29udGV4dExvc3RDYWxsYmFja0FkYXB0ZXI6OmNyZWF0ZShtX2NsaWVudCkpOwogCi0gICAg
aWYgKHNldHRpbmdzKCkuYWNjZWxlcmF0ZVBhaW50aW5nICYmIGNvbnRleHRTdXBwb3J0c0FjY2Vs
ZXJhdGVkUGFpbnRpbmcobV9jb250ZXh0LmdldCgpKSkKKyAgICBpZiAoQ0NTZXR0aW5nczo6YWNj
ZWxlcmF0ZWRQYWludGluZ0VuYWJsZWQoKSAmJiBjb250ZXh0U3VwcG9ydHNBY2NlbGVyYXRlZFBh
aW50aW5nKG1fY29udGV4dC5nZXQoKSkpCiAgICAgICAgIG1fY2FwYWJpbGl0aWVzLnVzaW5nQWNj
ZWxlcmF0ZWRQYWludGluZyA9IHRydWU7CiAKICAgICBXZWJDb3JlOjpFeHRlbnNpb25zM0QqIGV4
dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKTsKQEAgLTI5MSw3ICsyOTIsNyBA
QCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZSgpCiAgICAgaWYgKG1fY2Fw
YWJpbGl0aWVzLmNvbnRleHRIYXNDYWNoZWRGcm9udEJ1ZmZlcikKICAgICAgICAgZXh0ZW5zaW9u
cy0+ZW5zdXJlRW5hYmxlZCgiR0xfQ0hST01JVU1fZnJvbnRfYnVmZmVyX2NhY2hlZCIpOwogCi0g
ICAgbV9jYXBhYmlsaXRpZXMudXNpbmdQYXJ0aWFsU3dhcCA9IHNldHRpbmdzKCkucGFydGlhbFN3
YXBFbmFibGVkICYmIGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9DSFJPTUlVTV9wb3N0X3N1Yl9i
dWZmZXIiKTsKKyAgICBtX2NhcGFiaWxpdGllcy51c2luZ1BhcnRpYWxTd2FwID0gQ0NTZXR0aW5n
czo6cGFydGlhbFN3YXBFbmFibGVkKCkgJiYgZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0NIUk9N
SVVNX3Bvc3Rfc3ViX2J1ZmZlciIpOwogICAgIGlmIChtX2NhcGFiaWxpdGllcy51c2luZ1BhcnRp
YWxTd2FwKQogICAgICAgICBleHRlbnNpb25zLT5lbnN1cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9w
b3N0X3N1Yl9idWZmZXIiKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXgg
MTJlMzcxN2NhNmRmZjFjMzhhYzk0ZGJiMTdlZTZjNjdmZDBjZDUxZS4uMDk0OGQ5OTQ0NDQ2YWUy
MTg5ZTQ5NTA5Njg1ZDhkMDQyMjFkZDAwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0u
Y3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogCiAjaW5jbHVk
ZSAiY2MvQ0NMYXllckltcGwuaCIKKyNpbmNsdWRlICJjYy9DQ1NldHRpbmdzLmgiCiAjaW5jbHVk
ZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgImNjL0NDVGlsZWRMYXllckltcGwu
aCIKIApAQCAtMTExLDkgKzExMiw4IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVU
aWxlU2l6ZUFuZFRpbGluZ09wdGlvbigpCiB7CiAgICAgQVNTRVJUKGxheWVyVHJlZUhvc3QoKSk7
CiAKLSAgICBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncyA9IGxheWVyVHJlZUhvc3QoKS0+c2V0
dGluZ3MoKTsKLSAgICBjb25zdCBJbnRTaXplJiBkZWZhdWx0VGlsZVNpemUgPSBzZXR0aW5ncy5k
ZWZhdWx0VGlsZVNpemU7Ci0gICAgY29uc3QgSW50U2l6ZSYgbWF4VW50aWxlZExheWVyU2l6ZSA9
IHNldHRpbmdzLm1heFVudGlsZWRMYXllclNpemU7CisgICAgY29uc3QgSW50U2l6ZSYgZGVmYXVs
dFRpbGVTaXplID0gQ0NTZXR0aW5nczo6ZGVmYXVsdFRpbGVTaXplKCk7CisgICAgY29uc3QgSW50
U2l6ZSYgbWF4VW50aWxlZExheWVyU2l6ZSA9IENDU2V0dGluZ3M6Om1heFVudGlsZWRMYXllclNp
emUoKTsKICAgICBpbnQgbGF5ZXJXaWR0aCA9IGNvbnRlbnRCb3VuZHMoKS53aWR0aCgpOwogICAg
IGludCBsYXllckhlaWdodCA9IGNvbnRlbnRCb3VuZHMoKS5oZWlnaHQoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z1Jl
Y3RIaXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDRGVidWdSZWN0SGlzdG9yeS5jcHAKaW5kZXggM2M4OGRjYzQwMDNhNjY5MTg5M2Y3NWI1
NDVmZjBkNjQ5NWQ4ODgxMS4uMTdkNTk0NmVjMmVjY2RlYmFjYmFmMDM0OGZmODEwNjJmOTg3YTQ1
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3RvcnkuY3BwCkBAIC0zOCwxMiArMzgs
MTIgQEAgQ0NEZWJ1Z1JlY3RIaXN0b3J5OjpDQ0RlYnVnUmVjdEhpc3RvcnkoKQogewogfQogCi1i
b29sIENDRGVidWdSZWN0SGlzdG9yeTo6ZW5hYmxlZChjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5n
cykKK2Jvb2wgQ0NEZWJ1Z1JlY3RIaXN0b3J5OjplbmFibGVkKGNvbnN0IENDTGF5ZXJUcmVlU2V0
dGluZ3MmIHNldHRpbmdzKQogewogICAgIHJldHVybiBzZXR0aW5ncy5zaG93UGFpbnRSZWN0cyB8
fCBzZXR0aW5ncy5zaG93UHJvcGVydHlDaGFuZ2VkUmVjdHMgfHwgc2V0dGluZ3Muc2hvd1N1cmZh
Y2VEYW1hZ2VSZWN0czsKIH0KIAotdm9pZCBDQ0RlYnVnUmVjdEhpc3Rvcnk6OnNhdmVEZWJ1Z1Jl
Y3RzRm9yQ3VycmVudEZyYW1lKENDTGF5ZXJJbXBsKiByb290TGF5ZXIsIGNvbnN0IFZlY3RvcjxD
Q0xheWVySW1wbCo+JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBjb25zdCBDQ1NldHRpbmdzJiBz
ZXR0aW5ncykKK3ZvaWQgQ0NEZWJ1Z1JlY3RIaXN0b3J5OjpzYXZlRGVidWdSZWN0c0ZvckN1cnJl
bnRGcmFtZShDQ0xheWVySW1wbCogcm9vdExheWVyLCBjb25zdCBWZWN0b3I8Q0NMYXllckltcGwq
PiYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0
dGluZ3MpCiB7CiAgICAgLy8gRm9yIG5vdywgY2xlYXIgYWxsIHJlY3RzIGZyb20gcHJldmlvdXMg
ZnJhbWVzLiBJbiB0aGUgZnV0dXJlIHdlIG1heSB3YW50IHRvIHN0b3JlCiAgICAgLy8gYWxsIGRl
YnVnIHJlY3RzIGZvciBhIGhpc3Rvcnkgb2YgbWFueSBmcmFtZXMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3Rv
cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVi
dWdSZWN0SGlzdG9yeS5oCmluZGV4IDkzZGExMDdhZGU0ZmI3NzQ5YWIyZDVjZTc0NzVhMjI2Y2Ji
MGUxNDQuLmJiM2NkYjc5ZDU3MTg0N2IyNzZlOTdjODBmZDY4YzFhYzJjNDhkNmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdS
ZWN0SGlzdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDRGVidWdSZWN0SGlzdG9yeS5oCkBAIC0zNSw3ICszNSw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIENDTGF5ZXJJbXBsOwotc3RydWN0IENDU2V0dGluZ3M7CitzdHJ1
Y3QgQ0NMYXllclRyZWVTZXR0aW5nczsKIAogLy8gVGhlcmUgYXJlIGN1cnJlbnRseSB0aHJlZSB0
eXBlcyBvZiBkZWJ1ZyByZWN0czoKIC8vCkBAIC02Myw3ICs2Myw3IEBAIHN0cnVjdCBDQ0RlYnVn
UmVjdCB7CiAKIC8vIFRoaXMgY2xhc3MgbWFpbnRhaW5zIGEgaGlzdG9yeSBvZiByZWN0cyBvZiB2
YXJpb3VzIHR5cGVzIHRoYXQgY2FuIGJlIHVzZWQKIC8vIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMu
IFRoZSBvdmVyaGVhZCBvZiBjb2xsZWN0aW5nIHJlY3RzIGlzIHBlcmZvcm1lZCBvbmx5IGlmCi0v
LyB0aGUgYXBwcm9wcmlhdGUgQ0NTZXR0aW5ncyBhcmUgZW5hYmxlZC4KKy8vIHRoZSBhcHByb3By
aWF0ZSBDQ0xheWVyVHJlZVNldHRpbmdzIGFyZSBlbmFibGVkLgogY2xhc3MgQ0NEZWJ1Z1JlY3RI
aXN0b3J5IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ0RlYnVnUmVjdEhpc3RvcnkpOwog
cHVibGljOgpAQCAtNzIsMTAgKzcyLDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBDQ0RlYnVnUmVjdEhpc3RvcnkoKSk7CiAgICAgfQogCi0gICAgYm9vbCBlbmFibGVk
KGNvbnN0IENDU2V0dGluZ3MmKTsKKyAgICBib29sIGVuYWJsZWQoY29uc3QgQ0NMYXllclRyZWVT
ZXR0aW5ncyYpOwogCiAgICAgLy8gTm90ZTogU2F2aW5nIGRlYnVnIHJlY3RzIG11c3QgaGFwcGVu
IGJlZm9yZSBsYXllcnMnIGNoYW5nZSB0cmFja2luZyBpcyByZXNldC4KLSAgICB2b2lkIHNhdmVE
ZWJ1Z1JlY3RzRm9yQ3VycmVudEZyYW1lKENDTGF5ZXJJbXBsKiByb290TGF5ZXIsIGNvbnN0IFZl
Y3RvcjxDQ0xheWVySW1wbCo+JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBjb25zdCBDQ1NldHRp
bmdzJik7CisgICAgdm9pZCBzYXZlRGVidWdSZWN0c0ZvckN1cnJlbnRGcmFtZShDQ0xheWVySW1w
bCogcm9vdExheWVyLCBjb25zdCBWZWN0b3I8Q0NMYXllckltcGwqPiYgcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdCwgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYpOwogCiAgICAgY29uc3QgVmVjdG9y
PENDRGVidWdSZWN0PiYgZGVidWdSZWN0cygpIHsgcmV0dXJuIG1fZGVidWdSZWN0czsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0hlYWRzVXBEaXNwbGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCmluZGV4IDM0ODVhNDhhNGFhNDE2OGVlMGQw
NDFiZTdkMTAzYWJiZWNhMjU5MzUuLjFiYmMwNDZlN2E1ODIxYWIwZTAzOTk0NmI2MGM4MWEwZWNj
OWEyN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCkBAIC01MiwxNyArNTIs
MTcgQEAgdm9pZCBDQ0hlYWRzVXBEaXNwbGF5OjpzZXRGb250QXRsYXMoUGFzc093blB0cjxDQ0Zv
bnRBdGxhcz4gZm9udEF0bGFzKQogICAgIG1fZm9udEF0bGFzID0gZm9udEF0bGFzOwogfQogCi1i
b29sIENDSGVhZHNVcERpc3BsYXk6OmVuYWJsZWQoY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3Mp
IGNvbnN0Citib29sIENDSGVhZHNVcERpc3BsYXk6OmVuYWJsZWQoY29uc3QgQ0NMYXllclRyZWVT
ZXR0aW5ncyYgc2V0dGluZ3MpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHNob3dQbGF0Zm9ybUxheWVy
VHJlZShzZXR0aW5ncykgfHwgc2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIgfHwgc2hvd0RlYnVnUmVj
dHMoc2V0dGluZ3MpOwogfQogCi1ib29sIENDSGVhZHNVcERpc3BsYXk6OnNob3dQbGF0Zm9ybUxh
eWVyVHJlZShjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncykgY29uc3QKK2Jvb2wgQ0NIZWFkc1Vw
RGlzcGxheTo6c2hvd1BsYXRmb3JtTGF5ZXJUcmVlKGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3Mm
IHNldHRpbmdzKSBjb25zdAogewogICAgIHJldHVybiBzZXR0aW5ncy5zaG93UGxhdGZvcm1MYXll
clRyZWU7CiB9CiAKLWJvb2wgQ0NIZWFkc1VwRGlzcGxheTo6c2hvd0RlYnVnUmVjdHMoY29uc3Qg
Q0NTZXR0aW5ncyYgc2V0dGluZ3MpIGNvbnN0Citib29sIENDSGVhZHNVcERpc3BsYXk6OnNob3dE
ZWJ1Z1JlY3RzKGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzKSBjb25zdAogewog
ICAgIHJldHVybiBzZXR0aW5ncy5zaG93UGFpbnRSZWN0cyB8fCBzZXR0aW5ncy5zaG93UHJvcGVy
dHlDaGFuZ2VkUmVjdHMgfHwgc2V0dGluZ3Muc2hvd1N1cmZhY2VEYW1hZ2VSZWN0czsKIH0KQEAg
LTc4LDcgKzc4LDcgQEAgdm9pZCBDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3KENDTGF5ZXJUcmVlSG9z
dEltcGwqIGxheWVyVHJlZUhvc3RJbXBsKQogICAgIGlmICghbV9odWRUZXh0dXJlKQogICAgICAg
ICBtX2h1ZFRleHR1cmUgPSBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKGxheWVyUmVuZGVyZXItPmlt
cGxUZXh0dXJlTWFuYWdlcigpKTsKIAotICAgIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzID0g
bGF5ZXJUcmVlSG9zdEltcGwtPnNldHRpbmdzKCk7CisgICAgY29uc3QgQ0NMYXllclRyZWVTZXR0
aW5ncyYgc2V0dGluZ3MgPSBsYXllclRyZWVIb3N0SW1wbC0+c2V0dGluZ3MoKTsKICAgICAvLyBV
c2UgYSBmdWxsc2NyZWVuIHRleHR1cmUgb25seSBpZiB3ZSBuZWVkIHRvLi4uCiAgICAgSW50U2l6
ZSBodWRTaXplOwogICAgIGlmIChzaG93UGxhdGZvcm1MYXllclRyZWUoc2V0dGluZ3MpIHx8IHNo
b3dEZWJ1Z1JlY3RzKHNldHRpbmdzKSkgewpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgQ0NIZWFk
c1VwRGlzcGxheTo6ZHJhdyhDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCkK
ICAgICBtX2h1ZFRleHR1cmUtPnVucmVzZXJ2ZSgpOwogfQogCi12b2lkIENDSGVhZHNVcERpc3Bs
YXk6OmRyYXdIdWRDb250ZW50cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIENDTGF5ZXJUcmVl
SG9zdEltcGwqIGxheWVyVHJlZUhvc3RJbXBsLCBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncywg
Y29uc3QgSW50U2l6ZSYgaHVkU2l6ZSkKK3ZvaWQgQ0NIZWFkc1VwRGlzcGxheTo6ZHJhd0h1ZENv
bnRlbnRzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5
ZXJUcmVlSG9zdEltcGwsIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzLCBjb25z
dCBJbnRTaXplJiBodWRTaXplKQogewogICAgIGlmIChzaG93UGxhdGZvcm1MYXllclRyZWUoc2V0
dGluZ3MpKSB7CiAgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcigwLCAwLCAwLCAx
OTIpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKQEAgLTIyMSw3ICsyMjEsNyBAQCB2b2lkIENDSGVh
ZHNVcERpc3BsYXk6OmRyYXdGUFNDb3VudGVyVGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IENDRnJhbWVSYXRlQwogICAgICAgICBtX2ZvbnRBdGxhcy0+ZHJhd1RleHQoY29udGV4dCwgU3Ry
aW5nOjpmb3JtYXQoIkZQUzogJTQuMWYgKy8tICUzLjFmIiwgYXZlcmFnZUZQUywgc3RkRGV2aWF0
aW9uKSwgSW50UG9pbnQoMTAsIGhlaWdodCAvIDMpLCBJbnRTaXplKHdpZHRoLCBoZWlnaHQpKTsK
IH0KIAotdm9pZCBDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3RGVidWdSZWN0cyhHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIENDRGVidWdSZWN0SGlzdG9yeSogZGVidWdSZWN0SGlzdG9yeSwgY29uc3Qg
Q0NTZXR0aW5ncyYgc2V0dGluZ3MpCit2b2lkIENDSGVhZHNVcERpc3BsYXk6OmRyYXdEZWJ1Z1Jl
Y3RzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgQ0NEZWJ1Z1JlY3RIaXN0b3J5KiBkZWJ1Z1Jl
Y3RIaXN0b3J5LCBjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncykKIHsKICAgICBj
b25zdCBWZWN0b3I8Q0NEZWJ1Z1JlY3Q+JiBkZWJ1Z1JlY3RzID0gZGVidWdSZWN0SGlzdG9yeS0+
ZGVidWdSZWN0cygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGVidWdSZWN0cy5zaXpl
KCk7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5oCmluZGV4IDQ4MzFlNWRkMThj
M2UxMTIxYTE5MmI5OWE3NGFmMWJhY2NkMmNmYWQuLmUxY2U5M2E2YzNlOTBjYjM0NDVlYjk3ZDJm
NjBlZTA0NDBmNGM1OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmgKQEAgLTM2LDcg
KzM2LDcgQEAgY2xhc3MgQ0NGcmFtZVJhdGVDb3VudGVyOwogY2xhc3MgQ0NMYXllclRyZWVIb3N0
SW1wbDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIE1hbmFnZWRUZXh0dXJlOwotc3Ry
dWN0IENDU2V0dGluZ3M7CitzdHJ1Y3QgQ0NMYXllclRyZWVTZXR0aW5nczsKIAogLy8gQ2xhc3Mg
dGhhdCBoYW5kbGVzIGRyYXdpbmcgb2YgY29tcG9zaXRlZCByZW5kZXIgbGF5ZXJzIHVzaW5nIEdM
LgogY2xhc3MgQ0NIZWFkc1VwRGlzcGxheSB7CkBAIC01MSwxOSArNTEsMTkgQEAgcHVibGljOgog
CiAgICAgdm9pZCBzZXRGb250QXRsYXMoUGFzc093blB0cjxDQ0ZvbnRBdGxhcz4pOwogCi0gICAg
Ym9vbCBlbmFibGVkKGNvbnN0IENDU2V0dGluZ3MmKSBjb25zdDsKKyAgICBib29sIGVuYWJsZWQo
Y29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYpIGNvbnN0OwogICAgIHZvaWQgZHJhdyhDQ0xheWVy
VHJlZUhvc3RJbXBsKik7CiAKIHByaXZhdGU6CiAgICAgQ0NIZWFkc1VwRGlzcGxheSgpIHsgfTsK
IAotICAgIHZvaWQgZHJhd0h1ZENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCosIENDTGF5ZXJUcmVl
SG9zdEltcGwqLCBjb25zdCBDQ1NldHRpbmdzJiwgY29uc3QgSW50U2l6ZSYgaHVkU2l6ZSk7Cisg
ICAgdm9pZCBkcmF3SHVkQ29udGVudHMoR3JhcGhpY3NDb250ZXh0KiwgQ0NMYXllclRyZWVIb3N0
SW1wbCosIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmLCBjb25zdCBJbnRTaXplJiBodWRTaXpl
KTsKICAgICB2b2lkIGRyYXdGUFNDb3VudGVyKEdyYXBoaWNzQ29udGV4dCosIENDRnJhbWVSYXRl
Q291bnRlciosIGludCB0b3AsIGludCBoZWlnaHQpOwogICAgIHZvaWQgZHJhd0ZQU0NvdW50ZXJU
ZXh0KEdyYXBoaWNzQ29udGV4dCosIENDRnJhbWVSYXRlQ291bnRlciosIGludCB0b3AsIGludCB3
aWR0aCwgaW50IGhlaWdodCk7Ci0gICAgdm9pZCBkcmF3RGVidWdSZWN0cyhHcmFwaGljc0NvbnRl
eHQqLCBDQ0RlYnVnUmVjdEhpc3RvcnkqLCBjb25zdCBDQ1NldHRpbmdzJik7CisgICAgdm9pZCBk
cmF3RGVidWdSZWN0cyhHcmFwaGljc0NvbnRleHQqLCBDQ0RlYnVnUmVjdEhpc3RvcnkqLCBjb25z
dCBDQ0xheWVyVHJlZVNldHRpbmdzJik7CiAKLSAgICBib29sIHNob3dQbGF0Zm9ybUxheWVyVHJl
ZShjb25zdCBDQ1NldHRpbmdzJikgY29uc3Q7Ci0gICAgYm9vbCBzaG93RGVidWdSZWN0cyhjb25z
dCBDQ1NldHRpbmdzJikgY29uc3Q7CisgICAgYm9vbCBzaG93UGxhdGZvcm1MYXllclRyZWUoY29u
c3QgQ0NMYXllclRyZWVTZXR0aW5ncyYpIGNvbnN0OworICAgIGJvb2wgc2hvd0RlYnVnUmVjdHMo
Y29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYpIGNvbnN0OwogCiAgICAgT3duUHRyPE1hbmFnZWRU
ZXh0dXJlPiBtX2h1ZFRleHR1cmU7CiAgICAgT3duUHRyPENDRm9udEF0bGFzPiBtX2ZvbnRBdGxh
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IGZhMGViNjRjMzY1YjE4ZGUw
ZDk2OWZjODNlOWI0ODM1YTM4NjkzNGEuLmFiZTdlZGVkYTNiMzA3MGM3YTgyOTgxYWZjOWIzMzMx
MTUyZmFmOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtMzgsNiArMzgs
NyBAQAogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oIgogI2luY2x1ZGUgImNj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKICNpbmNsdWRlICJjYy9DQ09jY2x1c2lvblRyYWNrZXIu
aCIKKyNpbmNsdWRlICJjYy9DQ1NldHRpbmdzLmgiCiAjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5oIgogI2luY2x1ZGUgImNjL0NDVGhyZWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJl
YWRQcm94eS5oIgpAQCAtNTgsNyArNTksNyBAQCBib29sIENDTGF5ZXJUcmVlSG9zdDo6YW55TGF5
ZXJUcmVlSG9zdEluc3RhbmNlRXhpc3RzKCkKICAgICByZXR1cm4gbnVtTGF5ZXJUcmVlSW5zdGFu
Y2VzID4gMDsKIH0KIAotUGFzc093blB0cjxDQ0xheWVyVHJlZUhvc3Q+IENDTGF5ZXJUcmVlSG9z
dDo6Y3JlYXRlKENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50LCBjb25zdCBDQ1NldHRpbmdz
JiBzZXR0aW5ncykKK1Bhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0PiBDQ0xheWVyVHJlZUhvc3Q6
OmNyZWF0ZShDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwgY29uc3QgQ0NMYXllclRyZWVT
ZXR0aW5ncyYgc2V0dGluZ3MpCiB7CiAgICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdD4gbGF5ZXJU
cmVlSG9zdCA9IGFkb3B0UHRyKG5ldyBDQ0xheWVyVHJlZUhvc3QoY2xpZW50LCBzZXR0aW5ncykp
OwogICAgIGlmICghbGF5ZXJUcmVlSG9zdC0+aW5pdGlhbGl6ZSgpKQpAQCAtNjYsNyArNjcsNyBA
QCBQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdD4gQ0NMYXllclRyZWVIb3N0OjpjcmVhdGUoQ0NM
YXllclRyZWVIb3N0Q2xpZW50KiBjbGllbgogICAgIHJldHVybiBsYXllclRyZWVIb3N0LnJlbGVh
c2UoKTsKIH0KIAotQ0NMYXllclRyZWVIb3N0OjpDQ0xheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVI
b3N0Q2xpZW50KiBjbGllbnQsIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKQorQ0NMYXllclRy
ZWVIb3N0OjpDQ0xheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQsIGNv
bnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzKQogICAgIDogbV9jb21wb3NpdG9ySWRl
bnRpZmllcigtMSkKICAgICAsIG1fYW5pbWF0aW5nKGZhbHNlKQogICAgICwgbV9uZWVkc0FuaW1h
dGVMYXllcnMoZmFsc2UpCkBAIC0xNDEsMjUgKzE0MiwyMiBAQCB2b2lkIENDTGF5ZXJUcmVlSG9z
dDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgLy8gVXBkYXRlIG1fc2V0dGluZ3MgYmFzZWQgb24gY2FwYWJpbGl0aWVzIHRoYXQgd2UgZ290
IGJhY2sgZnJvbSB0aGUgcmVuZGVyZXIuCi0gICAgbV9zZXR0aW5ncy5hY2NlbGVyYXRlUGFpbnRp
bmcgPSBtX3Byb3h5LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdBY2NlbGVyYXRl
ZFBhaW50aW5nOwotCi0gICAgLy8gVXBkYXRlIG1fc2V0dGluZ3MgYmFzZWQgb24gcGFydGlhbCB1
cGRhdGUgY2FwYWJpbGl0eS4KLSAgICBtX3NldHRpbmdzLm1heFBhcnRpYWxUZXh0dXJlVXBkYXRl
cyA9IG1pbihtX3NldHRpbmdzLm1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcywgbV9wcm94eS0+bWF4
UGFydGlhbFRleHR1cmVVcGRhdGVzKCkpOwotCiAgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2Vy
ID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSgwLCAwLCBtX3Byb3h5LT5sYXllclJlbmRlcmVyQ2Fw
YWJpbGl0aWVzKCkubWF4VGV4dHVyZVNpemUpOwogCisgICAgLy8gVXBkYXRlIHNldHRpbmdzIGJh
c2VkIG9uIGNhcGFiaWxpdGllcyB0aGF0IHdlIGdvdCBiYWNrIGZyb20gdGhlIHJlbmRlcmVyLgor
ICAgIENDU2V0dGluZ3M6OnNldEFjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkKG1fcHJveHktPmxh
eWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS51c2luZ0FjY2VsZXJhdGVkUGFpbnRpbmcpOworICAg
IENDU2V0dGluZ3M6OnNldE1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcyhtaW4oQ0NTZXR0aW5nczo6
bWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKCksIG1fcHJveHktPm1heFBhcnRpYWxUZXh0dXJlVXBk
YXRlcygpKSk7CisgICAgQ0NTZXR0aW5nczo6c2V0RGVmYXVsdFRpbGVTaXplKEludFNpemUobWlu
KENDU2V0dGluZ3M6OmRlZmF1bHRUaWxlU2l6ZSgpLndpZHRoKCksIG1fcHJveHktPmxheWVyUmVu
ZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWluKENDU2V0dGluZ3M6OmRlZmF1bHRUaWxlU2l6ZSgp
LmhlaWdodCgpLCBtX3Byb3h5LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4VGV4dHVy
ZVNpemUpKSk7CisgICAgQ0NTZXR0aW5nczo6c2V0TWF4VW50aWxlZExheWVyU2l6ZShJbnRTaXpl
KG1pbihDQ1NldHRpbmdzOjptYXhVbnRpbGVkTGF5ZXJTaXplKCkud2lkdGgoKSwgbV9wcm94eS0+
bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLm1heFRleHR1cmVTaXplKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluKENDU2V0dGluZ3M6Om1heFVu
dGlsZWRMYXllclNpemUoKS5oZWlnaHQoKSwgbV9wcm94eS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxp
dGllcygpLm1heFRleHR1cmVTaXplKSkpOworCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgdGhlIHNh
bWUgYXMgc2V0Q29udGVudHNNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcywgYnV0CiAgICAgLy8g
d2UncmUgaW4gdGhlIG1pZGRsZSBvZiBhIGNvbW1pdCBoZXJlIGFuZCBkb24ndCB3YW50IHRvIGZv
cmNlIGFub3RoZXIuCiAgICAgbV9tZW1vcnlBbGxvY2F0aW9uQnl0ZXMgPSBUZXh0dXJlTWFuYWdl
cjo6aGlnaExpbWl0Qnl0ZXMoZGV2aWNlVmlld3BvcnRTaXplKCkpOwogICAgIG1fbWVtb3J5QWxs
b2NhdGlvbklzRm9yRGlzcGxheSA9IHRydWU7CiAKICAgICBtX2xheWVyUmVuZGVyZXJJbml0aWFs
aXplZCA9IHRydWU7Ci0KLSAgICBtX3NldHRpbmdzLmRlZmF1bHRUaWxlU2l6ZSA9IEludFNpemUo
bWluKG1fc2V0dGluZ3MuZGVmYXVsdFRpbGVTaXplLndpZHRoKCksIG1fcHJveHktPmxheWVyUmVu
ZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1pbihtX3NldHRpbmdzLmRlZmF1bHRUaWxlU2l6ZS5oZWln
aHQoKSwgbV9wcm94eS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLm1heFRleHR1cmVTaXpl
KSk7Ci0gICAgbV9zZXR0aW5ncy5tYXhVbnRpbGVkTGF5ZXJTaXplID0gSW50U2l6ZShtaW4obV9z
ZXR0aW5ncy5tYXhVbnRpbGVkTGF5ZXJTaXplLndpZHRoKCksIG1fcHJveHktPmxheWVyUmVuZGVy
ZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtaW4obV9zZXR0aW5ncy5tYXhVbnRpbGVkTGF5ZXJTaXpl
LmhlaWdodCgpLCBtX3Byb3h5LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4VGV4dHVy
ZVNpemUpKTsKIH0KIAogQ0NMYXllclRyZWVIb3N0OjpSZWNyZWF0ZVJlc3VsdCBDQ0xheWVyVHJl
ZUhvc3Q6OnJlY3JlYXRlQ29udGV4dCgpCkBAIC02NjQsMTIgKzY2MiwxMiBAQCB2b2lkIENDTGF5
ZXJUcmVlSG9zdDo6c3RvcFJhdGVMaW1pdGVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQog
CiBib29sIENDTGF5ZXJUcmVlSG9zdDo6YnVmZmVyZWRVcGRhdGVzKCkKIHsKLSAgICByZXR1cm4g
bV9zZXR0aW5ncy5tYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMgIT0gbnVtZXJpY19saW1pdHM8c2l6
ZV90Pjo6bWF4KCk7CisgICAgcmV0dXJuIENDU2V0dGluZ3M6Om1heFBhcnRpYWxUZXh0dXJlVXBk
YXRlcygpICE9IG51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpOwogfQogCiBib29sIENDTGF5
ZXJUcmVlSG9zdDo6cmVxdWVzdFBhcnRpYWxUZXh0dXJlVXBkYXRlKCkKIHsKLSAgICBpZiAobV9w
YXJ0aWFsVGV4dHVyZVVwZGF0ZVJlcXVlc3RzID49IG1fc2V0dGluZ3MubWF4UGFydGlhbFRleHR1
cmVVcGRhdGVzKQorICAgIGlmIChtX3BhcnRpYWxUZXh0dXJlVXBkYXRlUmVxdWVzdHMgPj0gQ0NT
ZXR0aW5nczo6bWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIG1fcGFydGlhbFRleHR1cmVVcGRhdGVSZXF1ZXN0cysrOwpAQCAtNjgzLDcgKzY4
MSw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpkZWxldGVUZXh0dXJlQWZ0ZXJDb21taXQoUGFz
c093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyCiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojph
bmltYXRlTGF5ZXJzKGRvdWJsZSBtb25vdG9uaWNUaW1lKQogewotICAgIGlmICghbV9zZXR0aW5n
cy50aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQgfHwgIW1fbmVlZHNBbmltYXRlTGF5ZXJzKQorICAg
IGlmICghQ0NTZXR0aW5nczo6YWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkKCkgfHwgIW1fbmVl
ZHNBbmltYXRlTGF5ZXJzKQogICAgICAgICByZXR1cm47CiAKICAgICBUUkFDRV9FVkVOVCgiQ0NM
YXllclRyZWVIb3N0SW1wbDo6YW5pbWF0ZUxheWVycyIsIHRoaXMsIDApOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3QuaAppbmRleCA0MzRhZWMyNzQyMjAxYzVmNmQ1YjQ5Y2M1MzdlMTgwMzljMmM4
NjRkLi5hZDVlMTZjMTNmNTEwOTM0YzhkYWFkNzI4YmZkYTRkOWQwNDExZTNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtNzQsNDAgKzc0LDI2IEBAIHByb3RlY3RlZDoKICAgICB2
aXJ0dWFsIH5DQ0xheWVyVHJlZUhvc3RDbGllbnQoKSB7IH0KIH07CiAKLXN0cnVjdCBDQ1NldHRp
bmdzIHsKLSAgICBDQ1NldHRpbmdzKCkKLSAgICAgICAgICAgIDogYWNjZWxlcmF0ZVBhaW50aW5n
KGZhbHNlKQotICAgICAgICAgICAgLCBmb3JjZVNvZnR3YXJlQ29tcG9zaXRpbmcoZmFsc2UpCitz
dHJ1Y3QgQ0NMYXllclRyZWVTZXR0aW5ncyB7CisgICAgQ0NMYXllclRyZWVTZXR0aW5ncygpCisg
ICAgICAgICAgICA6IGZvcmNlU29mdHdhcmVDb21wb3NpdGluZyhmYWxzZSkKICAgICAgICAgICAg
ICwgc2hvd0ZQU0NvdW50ZXIoZmFsc2UpCiAgICAgICAgICAgICAsIHNob3dQbGF0Zm9ybUxheWVy
VHJlZShmYWxzZSkKICAgICAgICAgICAgICwgc2hvd1BhaW50UmVjdHMoZmFsc2UpCiAgICAgICAg
ICAgICAsIHNob3dQcm9wZXJ0eUNoYW5nZWRSZWN0cyhmYWxzZSkKICAgICAgICAgICAgICwgc2hv
d1N1cmZhY2VEYW1hZ2VSZWN0cyhmYWxzZSkKLSAgICAgICAgICAgICwgcmVmcmVzaFJhdGUoMCkK
LSAgICAgICAgICAgICwgcGVyVGlsZVBhaW50aW5nKGZhbHNlKQotICAgICAgICAgICAgLCBwYXJ0
aWFsU3dhcEVuYWJsZWQoZmFsc2UpCi0gICAgICAgICAgICAsIHRocmVhZGVkQW5pbWF0aW9uRW5h
YmxlZChmYWxzZSkKLSAgICAgICAgICAgICwgbWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKHN0ZDo6
bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpCi0gICAgICAgICAgICAsIGRlZmF1bHRUaWxl
U2l6ZShJbnRTaXplKDI1NiwgMjU2KSkKLSAgICAgICAgICAgICwgbWF4VW50aWxlZExheWVyU2l6
ZShJbnRTaXplKDUxMiwgNTEyKSkKICAgICAgICAgICAgICwgZGV2aWNlU2NhbGVGYWN0b3IoMSkK
KyAgICAgICAgICAgICwgcmVmcmVzaFJhdGUoMCkKICAgICB7IH0KIAotICAgIGJvb2wgYWNjZWxl
cmF0ZVBhaW50aW5nOwogICAgIGJvb2wgZm9yY2VTb2Z0d2FyZUNvbXBvc2l0aW5nOwogICAgIGJv
b2wgc2hvd0ZQU0NvdW50ZXI7CiAgICAgYm9vbCBzaG93UGxhdGZvcm1MYXllclRyZWU7CiAgICAg
Ym9vbCBzaG93UGFpbnRSZWN0czsKICAgICBib29sIHNob3dQcm9wZXJ0eUNoYW5nZWRSZWN0czsK
ICAgICBib29sIHNob3dTdXJmYWNlRGFtYWdlUmVjdHM7Ci0gICAgZG91YmxlIHJlZnJlc2hSYXRl
OwotICAgIGJvb2wgcGVyVGlsZVBhaW50aW5nOwotICAgIGJvb2wgcGFydGlhbFN3YXBFbmFibGVk
OwotICAgIGJvb2wgdGhyZWFkZWRBbmltYXRpb25FbmFibGVkOwotICAgIHNpemVfdCBtYXhQYXJ0
aWFsVGV4dHVyZVVwZGF0ZXM7Ci0gICAgSW50U2l6ZSBkZWZhdWx0VGlsZVNpemU7Ci0gICAgSW50
U2l6ZSBtYXhVbnRpbGVkTGF5ZXJTaXplOwogICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yOwor
ICAgIGRvdWJsZSByZWZyZXNoUmF0ZTsKIH07CiAKIC8vIFByb3ZpZGVzIGluZm9ybWF0aW9uIG9u
IGFuIEltcGwncyByZW5kZXJpbmcgY2FwYWJpbGl0aWVzIGJhY2sgdG8gdGhlIENDTGF5ZXJUcmVl
SG9zdApAQCAtMTQzLDcgKzEyOSw3IEBAIHN0cnVjdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVz
IHsKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdCA6IHB1YmxpYyBSYXRlTGltaXRlckNsaWVudCB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NMYXllclRyZWVIb3N0KTsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc093blB0cjxDQ0xheWVyVHJlZUhvc3Q+IGNyZWF0ZShDQ0xheWVyVHJlZUhvc3RD
bGllbnQqLCBjb25zdCBDQ1NldHRpbmdzJik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NMYXll
clRyZWVIb3N0PiBjcmVhdGUoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiwgY29uc3QgQ0NMYXllclRy
ZWVTZXR0aW5ncyYpOwogICAgIHZpcnR1YWwgfkNDTGF5ZXJUcmVlSG9zdCgpOwogCiAgICAgdm9p
ZCBzZXRTdXJmYWNlUmVhZHkoKTsKQEAgLTIxOSw3ICsyMDUsNyBAQCBwdWJsaWM6CiAgICAgY29u
c3QgTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9yb290TGF5ZXIu
Z2V0KCk7IH0KICAgICB2b2lkIHNldFJvb3RMYXllcihQYXNzUmVmUHRyPExheWVyQ2hyb21pdW0+
KTsKIAotICAgIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9z
ZXR0aW5nczsgfQorICAgIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzKCkgY29u
c3QgeyByZXR1cm4gbV9zZXR0aW5nczsgfQogCiAgICAgdm9pZCBzZXRWaWV3cG9ydFNpemUoY29u
c3QgSW50U2l6ZSYpOwogCkBAIC0yNTEsNyArMjM3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVs
ZXRlVGV4dHVyZUFmdGVyQ29tbWl0KFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKIAogcHJv
dGVjdGVkOgotICAgIENDTGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3RDbGllbnQqLCBjb25z
dCBDQ1NldHRpbmdzJik7CisgICAgQ0NMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdENsaWVu
dCosIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmKTsKICAgICBib29sIGluaXRpYWxpemUoKTsK
IAogcHJpdmF0ZToKQEAgLTI5Miw3ICsyNzgsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxMYXll
ckNocm9taXVtPiBtX3Jvb3RMYXllcjsKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IG1fY29u
dGVudHNUZXh0dXJlTWFuYWdlcjsKIAotICAgIENDU2V0dGluZ3MgbV9zZXR0aW5nczsKKyAgICBD
Q0xheWVyVHJlZVNldHRpbmdzIG1fc2V0dGluZ3M7CiAKICAgICBJbnRTaXplIG1fdmlld3BvcnRT
aXplOwogICAgIEludFNpemUgbV9kZXZpY2VWaWV3cG9ydFNpemU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IGQ3OGQ0MjlmMjk2YTUxZWNiMDE2YjcyM2ZmNGFi
MGM4NDdhYmRmMGYuLmMyYWIwZjdlYTU3Y2ZiN2I4ZWI5MDJhOWM4NjU3NTA3YzdjZWJkZGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC00Miw2ICs0Miw3IEBA
CiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmgiCiAjaW5jbHVkZSAiY2MvQ0NN
YXRoVXRpbC5oIgogI2luY2x1ZGUgImNjL0NDUGFnZVNjYWxlQW5pbWF0aW9uLmgiCisjaW5jbHVk
ZSAiY2MvQ0NTZXR0aW5ncy5oIgogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIK
ICNpbmNsdWRlICJjYy9DQ1RocmVhZFRhc2suaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUu
aD4KQEAgLTEwNSwxMiArMTA2LDEyIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPENDRGVsYXlCYXNl
ZFRpbWVTb3VyY2U+IG1fdGltZVNvdXJjZTsKIH07CiAKLVBhc3NPd25QdHI8Q0NMYXllclRyZWVI
b3N0SW1wbD4gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKGNvbnN0IENDU2V0dGluZ3MmIHNl
dHRpbmdzLCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KiBjbGllbnQpCitQYXNzT3duUHRyPEND
TGF5ZXJUcmVlSG9zdEltcGw+IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShjb25zdCBDQ0xh
eWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncywgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCogY2xp
ZW50KQogewogICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NMYXllclRyZWVIb3N0SW1wbChzZXR0
aW5ncywgY2xpZW50KSk7CiB9CiAKLUNDTGF5ZXJUcmVlSG9zdEltcGw6OkNDTGF5ZXJUcmVlSG9z
dEltcGwoY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGll
bnQqIGNsaWVudCkKK0NDTGF5ZXJUcmVlSG9zdEltcGw6OkNDTGF5ZXJUcmVlSG9zdEltcGwoY29u
c3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGll
bnQqIGNsaWVudCkKICAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fc291cmNlRnJhbWVO
dW1iZXIoLTEpCiAgICAgLCBtX2ZyYW1lTnVtYmVyKDApCkBAIC0yNTYsNyArMjU3LDcgQEAgdm9p
ZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KEND
TGF5ZXJMaXN0JiByZW5kZXJTdXIKIAogICAgICAgICBpZiAoIWxheWVyUmVuZGVyZXJDYXBhYmls
aXRpZXMoKS51c2luZ1BhcnRpYWxTd2FwKQogICAgICAgICAgICAgbV9yb290U2Npc3NvclJlY3Qg
PSBGbG9hdFJlY3QoRmxvYXRQb2ludCgwLCAwKSwgZGV2aWNlVmlld3BvcnRTaXplKCkpOwotICAg
IAorCiAgICAgICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlVmlzaWJsZUFuZFNj
aXNzb3JSZWN0cyhyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBtX3Jvb3RTY2lzc29yUmVjdCk7CiAg
ICAgfQogfQpAQCAtODU0LDcgKzg1NSw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6YW5p
bWF0ZVBhZ2VTY2FsZShkb3VibGUgbW9ub3RvbmljVGltZSkKIAogdm9pZCBDQ0xheWVyVHJlZUhv
c3RJbXBsOjphbmltYXRlTGF5ZXJzKGRvdWJsZSBtb25vdG9uaWNUaW1lLCBkb3VibGUgd2FsbENs
b2NrVGltZSkKIHsKLSAgICBpZiAoIW1fc2V0dGluZ3MudGhyZWFkZWRBbmltYXRpb25FbmFibGVk
IHx8ICFtX25lZWRzQW5pbWF0ZUxheWVycyB8fCAhbV9yb290TGF5ZXJJbXBsKQorICAgIGlmICgh
Q0NTZXR0aW5nczo6YWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkKCkgfHwgIW1fbmVlZHNBbmlt
YXRlTGF5ZXJzIHx8ICFtX3Jvb3RMYXllckltcGwpCiAgICAgICAgIHJldHVybjsKIAogICAgIFRS
QUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRlTGF5ZXJzIiwgdGhpcywgMCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggYzc0MGE2NjIwMmY0YmQw
ZjFiM2QwNjA2ZDNhZWJhOTQ4OWQyMDA5Mi4uNDA2MDYxMTM5Mjc4OTBjYjI1NTQxNTgwZjgwNmI3
MTdlNDQ4ZWU3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtNjgs
NyArNjgsNyBAQCBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsIDogcHVibGljIENDSW5wdXRIYW5k
bGVyQ2xpZW50LCBDQ1JlbmRlcmVyQ2xpZW50IHsKICAgICB0eXBlZGVmIFZlY3RvcjxDQ0xheWVy
SW1wbCo+IENDTGF5ZXJMaXN0OwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NM
YXllclRyZWVIb3N0SW1wbD4gY3JlYXRlKGNvbnN0IENDU2V0dGluZ3MmLCBDQ0xheWVyVHJlZUhv
c3RJbXBsQ2xpZW50Kik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1w
bD4gY3JlYXRlKGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmLCBDQ0xheWVyVHJlZUhvc3RJbXBs
Q2xpZW50Kik7CiAgICAgdmlydHVhbCB+Q0NMYXllclRyZWVIb3N0SW1wbCgpOwogCiAgICAgLy8g
Q0NJbnB1dEhhbmRsZXJDbGllbnQgaW1wbGVtZW50YXRpb24KQEAgLTEwNSw3ICsxMDUsNyBAQCBw
dWJsaWM6CiAKICAgICAvLyBDQ1JlbmRlcmVyQ2xpZW50IGltcGxlbWVudGF0aW9uCiAgICAgdmly
dHVhbCBjb25zdCBJbnRTaXplJiBkZXZpY2VWaWV3cG9ydFNpemUoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBtX2RldmljZVZpZXdwb3J0U2l6ZTsgfQotICAgIHZpcnR1YWwgY29uc3QgQ0NTZXR0
aW5ncyYgc2V0dGluZ3MoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3NldHRpbmdzOyB9Cisg
ICAgdmlydHVhbCBjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIG1fc2V0dGluZ3M7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkTG9zZUNv
bnRleHQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgb25Td2FwQnVmZmVyc0NvbXBsZXRl
KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldEZ1bGxSb290TGF5ZXJEYW1hZ2UoKSBP
VkVSUklERTsKQEAgLTE2OCw3ICsxNjgsNyBAQCBwdWJsaWM6CiAgICAgQ0NEZWJ1Z1JlY3RIaXN0
b3J5KiBkZWJ1Z1JlY3RIaXN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z1JlY3RIaXN0b3J5
LmdldCgpOyB9CiAKIHByb3RlY3RlZDoKLSAgICBDQ0xheWVyVHJlZUhvc3RJbXBsKGNvbnN0IEND
U2V0dGluZ3MmLCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50Kik7CisgICAgQ0NMYXllclRyZWVI
b3N0SW1wbChjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiwgQ0NMYXllclRyZWVIb3N0SW1wbENs
aWVudCopOwogCiAgICAgdm9pZCBhbmltYXRlUGFnZVNjYWxlKGRvdWJsZSBtb25vdG9uaWNUaW1l
KTsKICAgICB2b2lkIGFuaW1hdGVHZXN0dXJlcyhkb3VibGUgbW9ub3RvbmljVGltZSk7CkBAIC0y
MTMsNyArMjEzLDcgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8Q0NSZW5kZXJlcj4gbV9sYXllclJl
bmRlcmVyOwogICAgIE93blB0cjxDQ0xheWVySW1wbD4gbV9yb290TGF5ZXJJbXBsOwogICAgIEND
TGF5ZXJJbXBsKiBtX3Njcm9sbExheWVySW1wbDsKLSAgICBDQ1NldHRpbmdzIG1fc2V0dGluZ3M7
CisgICAgQ0NMYXllclRyZWVTZXR0aW5ncyBtX3NldHRpbmdzOwogICAgIEludFNpemUgbV92aWV3
cG9ydFNpemU7CiAgICAgSW50U2l6ZSBtX2RldmljZVZpZXdwb3J0U2l6ZTsKICAgICBib29sIG1f
dmlzaWJsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUmVuZGVyZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUmVuZGVyZXIuaAppbmRleCA5YzkzOGE5OTBhYmM0ZDliNTU1NDY4ZTcw
ODZkN2I1MzYxYjYwNTE5Li4zMmY4MzU4Yzc0NGRjMGU4YzE4ZTk0YjA2NGE5MWQ1MDQ4MDVlZmE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlcmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NSZW5kZXJlci5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIFRleHR1cmVVcGxv
YWRlcjsKIGNsYXNzIENDUmVuZGVyZXJDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgY29u
c3QgSW50U2l6ZSYgZGV2aWNlVmlld3BvcnRTaXplKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwg
Y29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25z
dCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkTG9zZUNvbnRleHQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZl
cnNDb21wbGV0ZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RnVsbFJvb3RMYXllckRhbWFn
ZSgpID0gMDsKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBjb25zdCBM
YXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdCA9IDA7CiAKLSAg
ICBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50LT5z
ZXR0aW5ncygpOyB9CisgICAgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MoKSBj
b25zdCB7IHJldHVybiBtX2NsaWVudC0+c2V0dGluZ3MoKTsgfQogCiAgICAgY29uc3QgSW50U2l6
ZSYgdmlld3BvcnRTaXplKCkgeyByZXR1cm4gbV9jbGllbnQtPmRldmljZVZpZXdwb3J0U2l6ZSgp
OyB9CiAgICAgaW50IHZpZXdwb3J0V2lkdGgoKSB7IHJldHVybiB2aWV3cG9ydFNpemUoKS53aWR0
aCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2V0dGluZ3MuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlkYzA0NDViOTIxNzFkNmUy
NzQ5ZDc4OWZhMWFmMzE1ZjQ5MmQ0NTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NldHRpbmdzLmNwcApAQCAtMCwwICsx
LDExMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAi
Y2MvQ0NTZXR0aW5ncy5oIgorCisjaW5jbHVkZSA8bGltaXRzPgorCituYW1lc3BhY2UgeworCitz
dGF0aWMgYm9vbCBzX2FjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkRGVmYXVsdCA9IGZhbHNlOwor
c3RhdGljIGJvb2wgc19hY2NlbGVyYXRlZFBhaW50aW5nRW5hYmxlZCA9IHNfYWNjZWxlcmF0ZWRQ
YWludGluZ0VuYWJsZWREZWZhdWx0OworCitzdGF0aWMgYm9vbCBzX3BlclRpbGVQYWludGluZ0Vu
YWJsZWREZWZhdWx0ID0gZmFsc2U7CitzdGF0aWMgYm9vbCBzX3BlclRpbGVQYWludGluZ0VuYWJs
ZWQgPSBzX3BlclRpbGVQYWludGluZ0VuYWJsZWREZWZhdWx0OworCitzdGF0aWMgYm9vbCBzX3Bh
cnRpYWxTd2FwRW5hYmxlZERlZmF1bHQgPSBmYWxzZTsKK3N0YXRpYyBib29sIHNfcGFydGlhbFN3
YXBFbmFibGVkID0gc19wYXJ0aWFsU3dhcEVuYWJsZWREZWZhdWx0OworCitzdGF0aWMgYm9vbCBz
X2FjY2VsZXJhdGVkQW5pbWF0aW9uRW5hYmxlZERlZmF1bHQgPSBmYWxzZTsKK3N0YXRpYyBib29s
IHNfYWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkID0gc19hY2NlbGVyYXRlZEFuaW1hdGlvbkVu
YWJsZWREZWZhdWx0OworCitzdGF0aWMgc2l6ZV90IHNfbWF4UGFydGlhbFRleHR1cmVVcGRhdGVz
RGVmYXVsdCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7CitzdGF0aWMgc2l6
ZV90IHNfbWF4UGFydGlhbFRleHR1cmVVcGRhdGVzID0gc19tYXhQYXJ0aWFsVGV4dHVyZVVwZGF0
ZXNEZWZhdWx0OworCitzdGF0aWMgaW50IHNfZGVmYXVsdFRpbGVXaWR0aERlZmF1bHQgPSAyNTY7
CitzdGF0aWMgaW50IHNfZGVmYXVsdFRpbGVXaWR0aCA9IHNfZGVmYXVsdFRpbGVXaWR0aERlZmF1
bHQ7CisKK3N0YXRpYyBpbnQgc19kZWZhdWx0VGlsZUhlaWdodERlZmF1bHQgPSAyNTY7CitzdGF0
aWMgaW50IHNfZGVmYXVsdFRpbGVIZWlnaHQgPSBzX2RlZmF1bHRUaWxlSGVpZ2h0RGVmYXVsdDsK
Kworc3RhdGljIGludCBzX21heFVudGlsZWRMYXllcldpZHRoRGVmYXVsdCA9IDUxMjsKK3N0YXRp
YyBpbnQgc19tYXhVbnRpbGVkTGF5ZXJXaWR0aCA9IHNfbWF4VW50aWxlZExheWVyV2lkdGhEZWZh
dWx0OworCitzdGF0aWMgaW50IHNfbWF4VW50aWxlZExheWVySGVpZ2h0RGVmYXVsdCA9IDUxMjsK
K3N0YXRpYyBpbnQgc19tYXhVbnRpbGVkTGF5ZXJIZWlnaHQgPSBzX21heFVudGlsZWRMYXllckhl
aWdodERlZmF1bHQ7CisKK30gLy8gbmFtZXNwYWNlCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Ym9vbCBDQ1NldHRpbmdzOjphY2NlbGVyYXRlZFBhaW50aW5nRW5hYmxlZCgpIHsgcmV0dXJuIHNf
YWNjZWxlcmF0ZWRQYWludGluZ0VuYWJsZWQ7IH0KK3ZvaWQgQ0NTZXR0aW5nczo6c2V0QWNjZWxl
cmF0ZWRQYWludGluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKSB7IHNfYWNjZWxlcmF0ZWRQYWludGlu
Z0VuYWJsZWQgPSBlbmFibGVkOyB9CisKK2Jvb2wgQ0NTZXR0aW5nczo6cGVyVGlsZVBhaW50aW5n
RW5hYmxlZCgpIHsgcmV0dXJuIHNfcGVyVGlsZVBhaW50aW5nRW5hYmxlZDsgfQordm9pZCBDQ1Nl
dHRpbmdzOjpzZXRQZXJUaWxlUGFpbnRpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBzX3BlclRp
bGVQYWludGluZ0VuYWJsZWQgPSBlbmFibGVkOyB9CisKK2Jvb2wgQ0NTZXR0aW5nczo6cGFydGlh
bFN3YXBFbmFibGVkKCkgeyByZXR1cm4gc19wYXJ0aWFsU3dhcEVuYWJsZWQ7IH0KK3ZvaWQgQ0NT
ZXR0aW5nczo6c2V0UGFydGlhbFN3YXBFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBzX3BhcnRpYWxT
d2FwRW5hYmxlZCA9IGVuYWJsZWQ7IH0KKworYm9vbCBDQ1NldHRpbmdzOjphY2NlbGVyYXRlZEFu
aW1hdGlvbkVuYWJsZWQoKSB7IHJldHVybiBzX2FjY2VsZXJhdGVkQW5pbWF0aW9uRW5hYmxlZDsg
fQordm9pZCBDQ1NldHRpbmdzOjpzZXRBY2NlbGVyYXRlZEFuaW1hdGlvbkVuYWJsZWQoYm9vbCBl
bmFibGVkKSB7IHNfYWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkID0gZW5hYmxlZDsgfQorCitz
aXplX3QgQ0NTZXR0aW5nczo6bWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKCkgeyByZXR1cm4gc19t
YXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXM7IH0KK3ZvaWQgQ0NTZXR0aW5nczo6c2V0TWF4UGFydGlh
bFRleHR1cmVVcGRhdGVzKHNpemVfdCB1cGRhdGVzKSB7IHNfbWF4UGFydGlhbFRleHR1cmVVcGRh
dGVzID0gdXBkYXRlczsgfQorCitJbnRTaXplIENDU2V0dGluZ3M6OmRlZmF1bHRUaWxlU2l6ZSgp
Cit7CisgICAgcmV0dXJuIEludFNpemUoc19kZWZhdWx0VGlsZVdpZHRoLCBzX2RlZmF1bHRUaWxl
SGVpZ2h0KTsKK30KK3ZvaWQgQ0NTZXR0aW5nczo6c2V0RGVmYXVsdFRpbGVTaXplKGNvbnN0IElu
dFNpemUmIHNpemUpCit7CisgICAgc19kZWZhdWx0VGlsZVdpZHRoID0gc2l6ZS53aWR0aCgpOwor
ICAgIHNfZGVmYXVsdFRpbGVIZWlnaHQgPSBzaXplLmhlaWdodCgpOworfQorCitJbnRTaXplIEND
U2V0dGluZ3M6Om1heFVudGlsZWRMYXllclNpemUoKQoreworICAgIHJldHVybiBJbnRTaXplKHNf
bWF4VW50aWxlZExheWVyV2lkdGgsIHNfbWF4VW50aWxlZExheWVySGVpZ2h0KTsKK30KK3ZvaWQg
Q0NTZXR0aW5nczo6c2V0TWF4VW50aWxlZExheWVyU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQor
eworICAgIHNfbWF4VW50aWxlZExheWVyV2lkdGggPSBzaXplLndpZHRoKCk7CisgICAgc19tYXhV
bnRpbGVkTGF5ZXJIZWlnaHQgPSBzaXplLmhlaWdodCgpOworfQorCit2b2lkIENDU2V0dGluZ3M6
OnJlc2V0KCkKK3sKKyAgICBzX2FjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkID0gc19hY2NlbGVy
YXRlZFBhaW50aW5nRW5hYmxlZERlZmF1bHQ7CisgICAgc19wZXJUaWxlUGFpbnRpbmdFbmFibGVk
ID0gc19wZXJUaWxlUGFpbnRpbmdFbmFibGVkRGVmYXVsdDsKKyAgICBzX3BhcnRpYWxTd2FwRW5h
YmxlZCA9IHNfcGFydGlhbFN3YXBFbmFibGVkRGVmYXVsdDsKKyAgICBzX2FjY2VsZXJhdGVkQW5p
bWF0aW9uRW5hYmxlZCA9IHNfYWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkRGVmYXVsdDsKKyAg
ICBzX21heFBhcnRpYWxUZXh0dXJlVXBkYXRlcyA9IHNfbWF4UGFydGlhbFRleHR1cmVVcGRhdGVz
RGVmYXVsdDsKKyAgICBzX2RlZmF1bHRUaWxlV2lkdGggPSBzX2RlZmF1bHRUaWxlV2lkdGhEZWZh
dWx0OworICAgIHNfZGVmYXVsdFRpbGVIZWlnaHQgPSBzX2RlZmF1bHRUaWxlSGVpZ2h0RGVmYXVs
dDsKKyAgICBzX21heFVudGlsZWRMYXllcldpZHRoID0gc19tYXhVbnRpbGVkTGF5ZXJXaWR0aERl
ZmF1bHQ7CisgICAgc19tYXhVbnRpbGVkTGF5ZXJIZWlnaHQgPSBzX21heFVudGlsZWRMYXllckhl
aWdodERlZmF1bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2V0dGluZ3MuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2V0dGluZ3Mu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41NmQ3YWQ1NjQwOTc3ODMwOTI5OGE4YjIwNmZiNzAxZTNkZDY4YTNlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTZXR0aW5ncy5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgQ0NTZXR0aW5nc19oCisjZGVmaW5lIENDU2V0dGluZ3NfaAorCisjaW5jbHVkZSAiSW50U2l6
ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENDU2V0dGluZ3MgeworcHVibGlj
OgorICAgIHN0YXRpYyBib29sIGFjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkKCk7CisgICAgLy8g
TXVzdCBiZSBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkIGJlZm9yZSBXZWJDb21wb3N0b3I6Omlu
aXRpYWxpemUuCisgICAgc3RhdGljIHZvaWQgc2V0QWNjZWxlcmF0ZWRQYWludGluZ0VuYWJsZWQo
Ym9vbCk7CisKKyAgICBzdGF0aWMgYm9vbCBwZXJUaWxlUGFpbnRpbmdFbmFibGVkKCk7CisgICAg
Ly8gTXVzdCBiZSBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkIGJlZm9yZSBXZWJDb21wb3N0b3I6
OmluaXRpYWxpemUuCisgICAgc3RhdGljIHZvaWQgc2V0UGVyVGlsZVBhaW50aW5nRW5hYmxlZChi
b29sKTsKKworICAgIHN0YXRpYyBib29sIHBhcnRpYWxTd2FwRW5hYmxlZCgpOworICAgIC8vIE11
c3QgYmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZCBiZWZvcmUgV2ViQ29tcG9zdG9yOjppbml0
aWFsaXplLgorICAgIHN0YXRpYyB2b2lkIHNldFBhcnRpYWxTd2FwRW5hYmxlZChib29sKTsKKwor
ICAgIHN0YXRpYyBib29sIGFjY2VsZXJhdGVkQW5pbWF0aW9uRW5hYmxlZCgpOworICAgIC8vIE11
c3QgYmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZCBiZWZvcmUgV2ViQ29tcG9zdG9yOjppbml0
aWFsaXplLgorICAgIHN0YXRpYyB2b2lkIHNldEFjY2VsZXJhdGVkQW5pbWF0aW9uRW5hYmxlZChi
b29sKTsKKworICAgIHN0YXRpYyBzaXplX3QgbWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKCk7Cisg
ICAgLy8gTXVzdCBiZSBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkIGJlZm9yZSBXZWJDb21wb3N0
b3I6OmluaXRpYWxpemUuCisgICAgc3RhdGljIHZvaWQgc2V0TWF4UGFydGlhbFRleHR1cmVVcGRh
dGVzKHNpemVfdCk7CisKKyAgICBzdGF0aWMgSW50U2l6ZSBkZWZhdWx0VGlsZVNpemUoKTsKKyAg
ICAvLyBNdXN0IGJlIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQgYmVmb3JlIFdlYkNvbXBvc3Rv
cjo6aW5pdGlhbGl6ZS4KKyAgICBzdGF0aWMgdm9pZCBzZXREZWZhdWx0VGlsZVNpemUoY29uc3Qg
SW50U2l6ZSYpOworCisgICAgc3RhdGljIEludFNpemUgbWF4VW50aWxlZExheWVyU2l6ZSgpOwor
ICAgIC8vIE11c3QgYmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZCBiZWZvcmUgV2ViQ29tcG9z
dG9yOjppbml0aWFsaXplLgorICAgIHN0YXRpYyB2b2lkIHNldE1heFVudGlsZWRMYXllclNpemUo
Y29uc3QgSW50U2l6ZSYpOworCisgICAgLy8gVGhlc2Ugc2V0dGluZ3MgYXJlIG1lYW50IHRvIGJl
IHNldCBvbmx5IG9uY2UsIGFuZCBvbmx5IHJlYWQgdGhlcmVhZnRlci4KKyAgICAvLyBUaGlzIGZ1
bmN0aW9uIGlzIG9ubHkgZm9yIHJlc2V0dGluZyBzZXR0aW5ncyBpbiB0ZXN0cy4KKyAgICBzdGF0
aWMgdm9pZCByZXNldCgpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gQ0NTZXR0aW5nc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFsU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdz
LmNwcAppbmRleCBlNGQwNjFlMjg1Y2UxNjQyNWZkOTY4Y2IzMGZlNTFiZTIwMzMyN2NmLi4wNTM5
NjZiM2FmZmI1YzhiZDhjNjk2NDU0ODIwMDNjM2UyMGY3ZWZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKQEAgLTIzNCwxMiArMjM0LDYgQEAgdm9pZCBJ
bnRlcm5hbFNldHRpbmdzOjpzZXRQYWdlU2NhbGVGYWN0b3IoZmxvYXQgc2NhbGVGYWN0b3IsIGlu
dCB4LCBpbnQgeSwgRXhjZXAKICAgICBwYWdlKCktPnNldFBhZ2VTY2FsZUZhY3RvcihzY2FsZUZh
Y3RvciwgSW50UG9pbnQoeCwgeSkpOwogfQogCi12b2lkIEludGVybmFsU2V0dGluZ3M6OnNldFBl
clRpbGVEcmF3aW5nRW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewot
ICAgIEludGVybmFsU2V0dGluZ3NHdWFyZEZvclNldHRpbmdzKCk7Ci0gICAgc2V0dGluZ3MoKS0+
c2V0UGVyVGlsZURyYXdpbmdFbmFibGVkKGVuYWJsZWQpOwotfQotCiB2b2lkIEludGVybmFsU2V0
dGluZ3M6OnNldFNoYWRvd0RPTUVuYWJsZWQoYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbFNldHRpbmdzLmgKaW5kZXggNGZlODIyNjM1Yjc1YmQzMjczNGI2MmU1MDA2NDY2ZDVkNzhm
MGY5MC4uY2QyOGI2MzY1ZGJmYzc0M2E1MjgwOGQ1ZDNmODIyNWU4ZmI4NTY0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmgKQEAgLTYxLDcgKzYxLDYgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0VW5pZmllZFRleHRDaGVja2luZ0VuYWJsZWQoYm9vbCwgRXhjZXB0
aW9uQ29kZSYpOwogICAgIGJvb2wgdW5pZmllZFRleHRDaGVja2luZ0VuYWJsZWQoRXhjZXB0aW9u
Q29kZSYpOwogICAgIHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yLCBp
bnQgeCwgaW50IHksIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHNldFBlclRpbGVEcmF3aW5n
RW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNldFRvdWNo
RXZlbnRFbXVsYXRpb25FbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYpOwogICAg
IHZvaWQgc2V0RGV2aWNlU3VwcG9ydHNUb3VjaChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUm
KTsKICAgICB2b2lkIHNldERldmljZVN1cHBvcnRzTW91c2UoYm9vbCBlbmFibGVkLCBFeGNlcHRp
b25Db2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBp
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQppbmRleCAxYzExZjJkNzkwNmM5
MGUzOGExODliYmU0ZDM3YjJiNzdjY2M3MzIzLi42NjMwMDQ1ZDg4NDE3YjU2YTIzODI3NDk2Njkw
NjcwMzQ2YjllMGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5n
eXBpCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKQEAgLTg3LDYgKzg3
LDcgQEAKICAgICAgICAgICAgICd0ZXN0cy9DQ1NjaGVkdWxlclRlc3RDb21tb24uaCcsCiAgICAg
ICAgICAgICAndGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMv
Q0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVzdC5jcHAnLAorICAgICAgICAgICAgJ3Rlc3RzL0NDVGVz
dENvbW1vbi5oJywKICAgICAgICAgICAgICd0ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAn
LAogICAgICAgICAgICAgJ3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaCcsCiAgICAgICAg
ICAgICAndGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5jcHAnLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvci5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvci5oCmluZGV4IDNlYWRlZjMyYzM3YjMxMzQ5
Yjk5Mzc3YTJlMTlmOGMwNmE4ZjhkNDguLmU0ZDUyMThiZWRmZGE1NTU4YTExYjg1YmFiY2Q5NjA2
ZTVkZDcwYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNv
bXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3Np
dG9yLmgKQEAgLTI2LDcgKzI2LDEwIEBACiAjaWZuZGVmIFdlYkNvbXBvc2l0b3JfaAogI2RlZmlu
ZSBXZWJDb21wb3NpdG9yX2gKIAorI2RlZmluZSBXRUJDT01QT1NJVE9SX09XTlNfU0VUVElOR1Mg
MQorCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAicGxhdGZvcm0v
V2ViU2l6ZS5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNDksNiArNTIsMTUgQEAgcHVi
bGljOgogICAgIC8vIGFmdGVyIHNodXRkb3duLgogICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIHZv
aWQgc2h1dGRvd24oKTsKIAorICAgIC8vIFRoZXNlIG1heSBvbmx5IGJlIGNhbGxlZCBiZWZvcmUg
aW5pdGlhbGl6ZS4KKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyB2b2lkIHNldEFjY2VsZXJhdGVk
UGFpbnRpbmdFbmFibGVkKGJvb2wpOworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIHZvaWQgc2V0
UGVyVGlsZVBhaW50aW5nRW5hYmxlZChib29sKTsKKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyB2
b2lkIHNldFBhcnRpYWxTd2FwRW5hYmxlZChib29sKTsKKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRp
YyB2b2lkIHNldEFjY2VsZXJhdGVkQW5pbWF0aW9uRW5hYmxlZChib29sKTsKKyAgICBXRUJLSVRf
RVhQT1JUIHN0YXRpYyB2b2lkIHNldE1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcyhzaXplX3QpOwor
ICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIHZvaWQgc2V0RGVmYXVsdFRpbGVTaXplKGNvbnN0IFdl
YlNpemUmKTsKKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyB2b2lkIHNldE1heFVudGlsZWRMYXll
clNpemUoY29uc3QgV2ViU2l6ZSYpOworCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+V2ViQ29t
cG9zaXRvcigpIHsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlNldHRpbmdzLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0
aW5ncy5oCmluZGV4IDAxYWM0NDBhMzVlNjU0NTU1MjM1YzQ3YTM5OTA0ZmFhMTNlNTBjZmIuLjNj
MTQzYWVjZTYxOTRhYjNkYTQ3ZDhlMjE0YjJjMmRlMGE4MmMzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaApAQCAtMTQ4LDE0ICsxNDgsOSBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQo
Ym9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaXN1YWxXb3JkTW92ZW1lbnRFbmFibGVk
KGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRQYWludGluZ0VuYWJs
ZWQoYm9vbCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRQZXJUaWxlUGFpbnRpbmdFbmFibGVk
KGJvb2wpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UGFydGlhbFN3YXBFbmFibGVkKGJvb2wp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGhyZWFkZWRBbmltYXRpb25FbmFibGVkKGJvb2wp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Vmlld3BvcnRFbmFibGVkKGJvb2wpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0TWVkaWFQbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUoYm9vbCkg
PSAwOwogICAgIHZpcnR1YWwgYm9vbCB2aWV3cG9ydEVuYWJsZWQoKSBjb25zdCA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHNldERlZmF1bHRUaWxlU2l6ZShXZWJTaXplKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHNldE1heFVudGlsZWRMYXllclNpemUoV2ViU2l6ZSkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRGaXhlZFBvc2l0aW9uQ3JlYXRlc1N0YWNraW5nQ29udGV4dChib29sKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNldFN5bmNYSFJJbkRvY3VtZW50c0VuYWJsZWQoYm9vbCkgPSAwOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW1wbC5jcHAK
aW5kZXggOTFkOGIxYmU2NjA0NWEzOThkMjc4ODhlY2NlMGY3ZmI2ZjIzMjkxMS4uZDNhYWNhODhl
MTkyNWFmM2U3MTVlMGU0ZTcxY2NkZGM0Y2RjZWE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbXBsLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgIldlYklucHV0RXZlbnQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIK
ICNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCisjaW5jbHVkZSAiY2MvQ0NTZXR0aW5ncy5oIgogI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwpAQCAtNTMsNiArNTQsNDggQEAgdm9pZCBXZWJDb21wb3NpdG9yOjpzaHV0ZG93bigpCiAg
ICAgV2ViQ29tcG9zaXRvckltcGw6OnNodXRkb3duKCk7CiB9CiAKK3ZvaWQgV2ViQ29tcG9zaXRv
cjo6c2V0QWNjZWxlcmF0ZWRQYWludGluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAgIEFT
U0VSVCghV2ViQ29tcG9zaXRvckltcGw6OmluaXRpYWxpemVkKCkpOworICAgIENDU2V0dGluZ3M6
OnNldEFjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkKGVuYWJsZWQpOworfQorCit2b2lkIFdlYkNv
bXBvc2l0b3I6OnNldFBlclRpbGVQYWludGluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAg
IEFTU0VSVCghV2ViQ29tcG9zaXRvckltcGw6OmluaXRpYWxpemVkKCkpOworICAgIENDU2V0dGlu
Z3M6OnNldFBlclRpbGVQYWludGluZ0VuYWJsZWQoZW5hYmxlZCk7Cit9CisKK3ZvaWQgV2ViQ29t
cG9zaXRvcjo6c2V0UGFydGlhbFN3YXBFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBBU1NF
UlQoIVdlYkNvbXBvc2l0b3JJbXBsOjppbml0aWFsaXplZCgpKTsKKyAgICBDQ1NldHRpbmdzOjpz
ZXRQYXJ0aWFsU3dhcEVuYWJsZWQoZW5hYmxlZCk7Cit9CisKK3ZvaWQgV2ViQ29tcG9zaXRvcjo6
c2V0QWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBBU1NF
UlQoIVdlYkNvbXBvc2l0b3JJbXBsOjppbml0aWFsaXplZCgpKTsKKyAgICBDQ1NldHRpbmdzOjpz
ZXRBY2NlbGVyYXRlZEFuaW1hdGlvbkVuYWJsZWQoZW5hYmxlZCk7Cit9CisKK3ZvaWQgV2ViQ29t
cG9zaXRvcjo6c2V0TWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKHNpemVfdCB1cGRhdGVzKQorewor
ICAgIEFTU0VSVCghV2ViQ29tcG9zaXRvckltcGw6OmluaXRpYWxpemVkKCkpOworICAgIENDU2V0
dGluZ3M6OnNldE1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcyh1cGRhdGVzKTsKK30KKwordm9pZCBX
ZWJDb21wb3NpdG9yOjpzZXREZWZhdWx0VGlsZVNpemUoY29uc3QgV2ViU2l6ZSYgc2l6ZSkKK3sK
KyAgICBBU1NFUlQoIVdlYkNvbXBvc2l0b3JJbXBsOjppbml0aWFsaXplZCgpKTsKKyAgICBDQ1Nl
dHRpbmdzOjpzZXREZWZhdWx0VGlsZVNpemUoc2l6ZSk7Cit9CisKK3ZvaWQgV2ViQ29tcG9zaXRv
cjo6c2V0TWF4VW50aWxlZExheWVyU2l6ZShjb25zdCBXZWJTaXplJiBzaXplKQoreworICAgIEFT
U0VSVCghV2ViQ29tcG9zaXRvckltcGw6OmluaXRpYWxpemVkKCkpOworICAgIENDU2V0dGluZ3M6
OnNldE1heFVudGlsZWRMYXllclNpemUoc2l6ZSk7Cit9CisKIHZvaWQgV2ViQ29tcG9zaXRvcklt
cGw6OmluaXRpYWxpemUoV2ViVGhyZWFkKiBpbXBsVGhyZWFkKQogewogICAgIEFTU0VSVCghc19p
bml0aWFsaXplZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJM
YXllclRyZWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJl
ZVZpZXcuY3BwCmluZGV4IGFlMjBhZWE5YTM1ODNlNjM0MjQ5ZjViYjRkYjQwODgyODRkODI2ZjEu
LjY5ZjlkNjcwM2ZkNjFmZGFjMjE5ODVmMTdkOTg2NWE3ODhmYTRlYjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCkBAIC0zNywyMCArMzcs
MTUgQEAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLVdl
YkxheWVyVHJlZVZpZXc6OlNldHRpbmdzOjpvcGVyYXRvciBDQ1NldHRpbmdzKCkgY29uc3QKKwor
V2ViTGF5ZXJUcmVlVmlldzo6U2V0dGluZ3M6Om9wZXJhdG9yIENDTGF5ZXJUcmVlU2V0dGluZ3Mo
KSBjb25zdAogewotICAgIENDU2V0dGluZ3Mgc2V0dGluZ3M7Ci0gICAgc2V0dGluZ3MuYWNjZWxl
cmF0ZVBhaW50aW5nID0gYWNjZWxlcmF0ZVBhaW50aW5nOworICAgIENDTGF5ZXJUcmVlU2V0dGlu
Z3Mgc2V0dGluZ3M7CiAgICAgc2V0dGluZ3MuZm9yY2VTb2Z0d2FyZUNvbXBvc2l0aW5nID0gZm9y
Y2VTb2Z0d2FyZUNvbXBvc2l0aW5nOwogICAgIHNldHRpbmdzLnNob3dGUFNDb3VudGVyID0gc2hv
d0ZQU0NvdW50ZXI7CiAgICAgc2V0dGluZ3Muc2hvd1BsYXRmb3JtTGF5ZXJUcmVlID0gc2hvd1Bs
YXRmb3JtTGF5ZXJUcmVlOwogICAgIHNldHRpbmdzLnNob3dQYWludFJlY3RzID0gc2hvd1BhaW50
UmVjdHM7CiAgICAgc2V0dGluZ3MucmVmcmVzaFJhdGUgPSByZWZyZXNoUmF0ZTsKLSAgICBzZXR0
aW5ncy5wZXJUaWxlUGFpbnRpbmcgPSBwZXJUaWxlUGFpbnRpbmc7Ci0gICAgc2V0dGluZ3MucGFy
dGlhbFN3YXBFbmFibGVkID0gcGFydGlhbFN3YXBFbmFibGVkOwotICAgIHNldHRpbmdzLnRocmVh
ZGVkQW5pbWF0aW9uRW5hYmxlZCA9IHRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZDsKLSAgICBzZXR0
aW5ncy5kZWZhdWx0VGlsZVNpemUgPSBkZWZhdWx0VGlsZVNpemU7Ci0gICAgc2V0dGluZ3MubWF4
VW50aWxlZExheWVyU2l6ZSA9IG1heFVudGlsZWRMYXllclNpemU7CiAgICAgc2V0dGluZ3MuZGV2
aWNlU2NhbGVGYWN0b3IgPSBkZXZpY2VTY2FsZUZhY3RvcjsKIAogICAgIC8vIEZJWE1FOiBzaG93
RlBTQ291bnRlciAvIHNob3dQbGF0Zm9ybUxheWVyVHJlZSAvIG1heFBhcnRpYWxUZXh0dXJlVXBk
YXRlcyBhcmVuJ3Qgc3VwcG9ydGVkIGN1cnJlbnRseS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcAppbmRleCAxN2Q1ZmU4Njc1YTdl
Y2FlMjQyMDYzZTJhNzMwMmE3MzY0NzIwOWYwLi4wZDY1MTkyNTFjMDc1MDY3YzRmYWIxZTMxODQy
ZTM4MTc2ZTU5NmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJM
YXllclRyZWVWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
TGF5ZXJUcmVlVmlld0ltcGwuY3BwCkBAIC04MSw3ICs4MSw3IEBAIFBhc3NPd25QdHI8V2ViTGF5
ZXJUcmVlVmlld0ltcGw+IFdlYkxheWVyVHJlZVZpZXdJbXBsOjpjcmVhdGUoV2ViTGF5ZXJUcmVl
Vmlld0NsCiAgICAgcmV0dXJuIGltcGwucmVsZWFzZSgpOwogfQogCi1XZWJMYXllclRyZWVWaWV3
SW1wbDo6V2ViTGF5ZXJUcmVlVmlld0ltcGwoV2ViTGF5ZXJUcmVlVmlld0NsaWVudCogY2xpZW50
LCBjb25zdCBXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5ncyYgc2V0dGluZ3MpIAorV2ViTGF5ZXJU
cmVlVmlld0ltcGw6OldlYkxheWVyVHJlZVZpZXdJbXBsKFdlYkxheWVyVHJlZVZpZXdDbGllbnQq
IGNsaWVudCwgY29uc3QgV2ViTGF5ZXJUcmVlVmlldzo6U2V0dGluZ3MmIHNldHRpbmdzKQogICAg
IDogbV9jbGllbnRBZGFwdGVyKGFkb3B0UHRyKG5ldyBXZWJMYXllclRyZWVWaWV3Q2xpZW50QWRh
cHRlcihjbGllbnQpKSkKICAgICAsIG1fbGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3Q6OmNy
ZWF0ZShtX2NsaWVudEFkYXB0ZXIuZ2V0KCksIHNldHRpbmdzKSkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCmluZGV4IGMwNmVjMjAzODUxOTQx
NGYyNThhNGJjYTI1ZmQxNWE3MGViM2FmNTYuLmI4NzAxZWNjOTNhNTU4MDVmYjY2MmVhNDAwZjc5
MTM2ZTQ0OTZhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNl
dHRpbmdzSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGlu
Z3NJbXBsLmNwcApAQCAtNTMsOCArNTMsNiBAQCBXZWJTZXR0aW5nc0ltcGw6OldlYlNldHRpbmdz
SW1wbChTZXR0aW5ncyogc2V0dGluZ3MpCiAgICAgLCBtX3Nob3dQYWludFJlY3RzKGZhbHNlKQog
ICAgICwgbV92aWV3cG9ydEVuYWJsZWQoZmFsc2UpCiAgICAgLCBtX2FwcGx5RGVmYXVsdERldmlj
ZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKGZhbHNlKQotICAgICwgbV9kZWZhdWx0VGlsZVNpemUo
V2ViU2l6ZSgyNTYsIDI1NikpCi0gICAgLCBtX21heFVudGlsZWRMYXllclNpemUoV2ViU2l6ZSg1
MTIsIDUxMikpCiB7CiAgICAgQVNTRVJUKHNldHRpbmdzKTsKIH0KQEAgLTYwMiwyMSArNjAwLDYg
QEAgdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldEFjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkKGJv
b2wgZW5hYmxlZCkKICAgICBtX3NldHRpbmdzLT5zZXRBY2NlbGVyYXRlZERyYXdpbmdFbmFibGVk
KGVuYWJsZWQpOwogfQogCi12b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0UGVyVGlsZVBhaW50aW5n
RW5hYmxlZChib29sIGVuYWJsZWQpCi17Ci0gICAgbV9zZXR0aW5ncy0+c2V0UGVyVGlsZURyYXdp
bmdFbmFibGVkKGVuYWJsZWQpOwotfQotCi12b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0UGFydGlh
bFN3YXBFbmFibGVkKGJvb2wgZW5hYmxlZCkKLXsKLSAgICBtX3NldHRpbmdzLT5zZXRQYXJ0aWFs
U3dhcEVuYWJsZWQoZW5hYmxlZCk7Ci19Ci0KLXZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRUaHJl
YWRlZEFuaW1hdGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkKQotewotICAgIG1fc2V0dGluZ3MtPnNl
dFRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZChlbmFibGVkKTsKLX0KLQogdm9pZCBXZWJTZXR0aW5n
c0ltcGw6OnNldE1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlKGJvb2wgcmVxdWlyZWQp
CiB7CiAgICAgbV9zZXR0aW5ncy0+c2V0TWVkaWFQbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUo
cmVxdWlyZWQpOwpAQCAtNjMyLDE2ICs2MTUsNiBAQCB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0
Vmlld3BvcnRFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBtX3ZpZXdwb3J0RW5hYmxlZCA9IGVu
YWJsZWQ7CiB9CiAKLXZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXREZWZhdWx0VGlsZVNpemUoV2Vi
U2l6ZSBzaXplKQotewotICAgIG1fZGVmYXVsdFRpbGVTaXplID0gc2l6ZTsKLX0KLQotdm9pZCBX
ZWJTZXR0aW5nc0ltcGw6OnNldE1heFVudGlsZWRMYXllclNpemUoV2ViU2l6ZSBzaXplKQotewot
ICAgIG1fbWF4VW50aWxlZExheWVyU2l6ZSA9IHNpemU7Ci19Ci0KIHZvaWQgV2ViU2V0dGluZ3NJ
bXBsOjpzZXRTeW5jWEhSSW5Eb2N1bWVudHNFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICAgICBt
X3NldHRpbmdzLT5zZXRTeW5jWEhSSW5Eb2N1bWVudHNFbmFibGVkKGVuYWJsZWQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAppbmRleCAyNTIyMWVkYzcw
NmJiMGNhYTQzZjE5ZWU0ZmIyZThmYWZlZGJkYzRiLi5iZGM5MTc3MzFhMjgzM2ZjMjZmZTU1ZmJk
NjYxNDcxOWVkNWMxYjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTZXR0aW5nc0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0
aW5nc0ltcGwuaApAQCAtMTA2LDggKzEwNiw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
c2V0U2hvd0ZQU0NvdW50ZXIoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldFNob3dQbGF0Zm9y
bUxheWVyVHJlZShib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvd1BhaW50UmVjdHMoYm9v
bCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldERlZmF1bHRUaWxlU2l6ZShXZWJTaXplKTsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0TWF4VW50aWxlZExheWVyU2l6ZShXZWJTaXplKTsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0RWRpdGluZ0JlaGF2aW9yKEVkaXRpbmdCZWhhdmlvcik7CiAgICAgdmlydHVhbCB2
b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShib29sKTsKQEAgLTE0Niw5ICsxNDQsNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFNob3VsZERpc3BsYXlDYXB0aW9ucyhib29sKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMoYm9vbCk7
CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkKGJvb2wpOwot
ICAgIHZpcnR1YWwgdm9pZCBzZXRQZXJUaWxlUGFpbnRpbmdFbmFibGVkKGJvb2wpOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRQYXJ0aWFsU3dhcEVuYWJsZWQoYm9vbCk7Ci0gICAgdmlydHVhbCB2b2lk
IHNldFRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
Rml4ZWRQb3NpdGlvbkNyZWF0ZXNTdGFja2luZ0NvbnRleHQoYm9vbCk7CiAgICAgdmlydHVhbCB2
b2lkIHNldFZpZXdwb3J0RW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TWVkaWFQ
bGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUoYm9vbCk7CkBAIC0xNTksOCArMTU0LDYgQEAgcHVi
bGljOgogICAgIGJvb2wgc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKCkgY29uc3QgeyByZXR1cm4gbV9z
aG93UGxhdGZvcm1MYXllclRyZWU7IH0KICAgICBib29sIHNob3dQYWludFJlY3RzKCkgY29uc3Qg
eyByZXR1cm4gbV9zaG93UGFpbnRSZWN0czsgfQogICAgIGJvb2wgYXBwbHlEZWZhdWx0RGV2aWNl
U2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IoKSBjb25zdCB7IHJldHVybiBtX2FwcGx5RGVmYXVsdERl
dmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yOyB9Ci0gICAgV2ViU2l6ZSBkZWZhdWx0VGlsZVNp
emUoKSBjb25zdCB7IHJldHVybiBtX2RlZmF1bHRUaWxlU2l6ZTsgfQotICAgIFdlYlNpemUgbWF4
VW50aWxlZExheWVyU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4VW50aWxlZExheWVyU2l6ZTsg
fQogICAgIHZpcnR1YWwgYm9vbCBmb3JjZVNvZnR3YXJlQ29tcG9zaXRpbmcoKSBjb25zdCB7IHJl
dHVybiBtX2ZvcmNlU29mdHdhcmVDb21wb3NpdGluZzsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IGQxMDkzN2YzZjk1Y2YyMzQ3
NGY2ZjllMzk5ZDVjMTZmNDlhN2E1ZDEuLjIzZmI3ZmU4NTcxNGU0MGMwOGNmNjFjMzdkMjUzN2Fj
YWZjZjFiZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAK
QEAgLTE0Niw2ICsxNDYsNyBAQAogI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKICNpbmNsdWRl
ICJXaGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgorI2luY2x1ZGUgImNjL0ND
U2V0dGluZ3MuaCIKICNpbmNsdWRlICJwYWludGluZy9HcmFwaGljc0NvbnRleHRCdWlsZGVyLmgi
CiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgiCiAjaW5jbHVkZSAi
cGxhdGZvcm0vV2ViU3RyaW5nLmgiCkBAIC00NTgsNyArNDU5LDcgQEAgV2ViVmlld0ltcGw6Oldl
YlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCkKICNpZiBFTkFCTEUoQkFUVEVSWV9TVEFU
VVMpCiAgICAgcHJvdmlkZUJhdHRlcnlUbyhtX3BhZ2UuZ2V0KCksIG1fYmF0dGVyeUNsaWVudC5n
ZXQoKSk7CiAjZW5kaWYKLSAgICAKKwogICAgIG1fcGFnZS0+c2V0R3JvdXBOYW1lKHBhZ2VHcm91
cE5hbWUpOwogCiAjaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCkBAIC0zNDYwLDE5ICsz
NDYxLDExIEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Fj
dGl2ZShib29sIGFjdGl2ZSkKICAgICAgICAgVFJBQ0VfRVZFTlQoIldlYlZpZXdJbXBsOjpzZXRJ
c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUodHJ1ZSkiLCB0aGlzLCAwKTsKIAogICAgICAg
ICBXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5ncyBsYXllclRyZWVWaWV3U2V0dGluZ3M7Ci0gICAg
ICAgIGxheWVyVHJlZVZpZXdTZXR0aW5ncy5hY2NlbGVyYXRlUGFpbnRpbmcgPSBwYWdlKCktPnNl
dHRpbmdzKCktPmFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQoKTsKICAgICAgICAgbGF5ZXJUcmVl
Vmlld1NldHRpbmdzLnNob3dGUFNDb3VudGVyID0gc2V0dGluZ3NJbXBsKCktPnNob3dGUFNDb3Vu
dGVyKCk7CiAgICAgICAgIGxheWVyVHJlZVZpZXdTZXR0aW5ncy5zaG93UGxhdGZvcm1MYXllclRy
ZWUgPSBzZXR0aW5nc0ltcGwoKS0+c2hvd1BsYXRmb3JtTGF5ZXJUcmVlKCk7CiAgICAgICAgIGxh
eWVyVHJlZVZpZXdTZXR0aW5ncy5zaG93UGFpbnRSZWN0cyA9IHNldHRpbmdzSW1wbCgpLT5zaG93
UGFpbnRSZWN0cygpOwogICAgICAgICBsYXllclRyZWVWaWV3U2V0dGluZ3MuZm9yY2VTb2Z0d2Fy
ZUNvbXBvc2l0aW5nID0gc2V0dGluZ3MoKS0+Zm9yY2VTb2Z0d2FyZUNvbXBvc2l0aW5nKCk7CiAK
LSAgICAgICAgbGF5ZXJUcmVlVmlld1NldHRpbmdzLnBlclRpbGVQYWludGluZyA9IHBhZ2UoKS0+
c2V0dGluZ3MoKS0+cGVyVGlsZURyYXdpbmdFbmFibGVkKCk7Ci0gICAgICAgIGxheWVyVHJlZVZp
ZXdTZXR0aW5ncy5wYXJ0aWFsU3dhcEVuYWJsZWQgPSBwYWdlKCktPnNldHRpbmdzKCktPnBhcnRp
YWxTd2FwRW5hYmxlZCgpOwotICAgICAgICBsYXllclRyZWVWaWV3U2V0dGluZ3MudGhyZWFkZWRB
bmltYXRpb25FbmFibGVkID0gcGFnZSgpLT5zZXR0aW5ncygpLT50aHJlYWRlZEFuaW1hdGlvbkVu
YWJsZWQoKTsKLQotICAgICAgICBsYXllclRyZWVWaWV3U2V0dGluZ3MuZGVmYXVsdFRpbGVTaXpl
ID0gc2V0dGluZ3NJbXBsKCktPmRlZmF1bHRUaWxlU2l6ZSgpOwotICAgICAgICBsYXllclRyZWVW
aWV3U2V0dGluZ3MubWF4VW50aWxlZExheWVyU2l6ZSA9IHNldHRpbmdzSW1wbCgpLT5tYXhVbnRp
bGVkTGF5ZXJTaXplKCk7Ci0KICAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QgPSBO
b25Db21wb3NpdGVkQ29udGVudEhvc3Q6OmNyZWF0ZShXZWJWaWV3SW1wbENvbnRlbnRQYWludGVy
OjpjcmVhdGUodGhpcykpOwogICAgICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC0+c2V0
U2hvd0RlYnVnQm9yZGVycyhwYWdlKCktPnNldHRpbmdzKCktPnNob3dEZWJ1Z0JvcmRlcnMoKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVI
b3N0SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJl
ZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXggZTYyMzFkMzRmMTE3YTg2MTk4YTFlZjVmMjY2Y2U4NzZh
ODg3OWViZS4uYzkwNTg0MDc1YTM0MmFhMWFmMzFkZGY5MjM2MjlmMjg4ZDE1ZTY3ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVz
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJ
bXBsVGVzdC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNDQW5pbWF0aW9uVGVz
dENvbW1vbi5oIgogI2luY2x1ZGUgIkNDTGF5ZXJUZXN0Q29tbW9uLmgiCisjaW5jbHVkZSAiQ0NU
ZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJl
ckNocm9taXVtLmgiCkBAIC0zNSw2ICszNiw3IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXllclRpbGlu
Z0RhdGEuaCIKICNpbmNsdWRlICJjYy9DQ1F1YWRDdWxsZXIuaCIKICNpbmNsdWRlICJjYy9DQ1Nj
cm9sbGJhckxheWVySW1wbC5oIgorI2luY2x1ZGUgImNjL0NDU2V0dGluZ3MuaCIKICNpbmNsdWRl
ICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgiCiAjaW5jbHVkZSAiY2MvQ0NTb2xpZENvbG9yRHJh
d1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ1RleHR1cmVMYXllckltcGwuaCIKQEAgLTY1LDcgKzY3
LDcgQEAgcHVibGljOgogICAgICAgICA6IG1fZGlkUmVxdWVzdENvbW1pdChmYWxzZSkKICAgICAg
ICAgLCBtX2RpZFJlcXVlc3RSZWRyYXcoZmFsc2UpCiAgICAgewotICAgICAgICBDQ1NldHRpbmdz
IHNldHRpbmdzOworICAgICAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOwogICAgICAg
ICBtX2hvc3RJbXBsID0gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKHNldHRpbmdzLCB0aGlz
KTsKICAgICAgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29u
dGV4dCgpLCBVbnRocm90dGxlZFVwbG9hZGVyKTsKICAgICAgICAgbV9ob3N0SW1wbC0+c2V0Vmll
d3BvcnRTaXplKEludFNpemUoMTAsIDEwKSk7CkBAIC04MCwxMCArODIsOSBAQCBwdWJsaWM6CiAK
ICAgICBQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IGNyZWF0ZUxheWVyVHJlZUhvc3Qo
Ym9vbCBwYXJ0aWFsU3dhcCwgUGFzc1JlZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gZ3JhcGhpY3ND
b250ZXh0LCBQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiByb290UHRyKQogICAgIHsKLSAgICAgICAg
Q0NTZXR0aW5ncyBzZXR0aW5nczsKLQotICAgICAgICBzZXR0aW5ncy5wYXJ0aWFsU3dhcEVuYWJs
ZWQgPSBwYXJ0aWFsU3dhcDsKKyAgICAgICAgQ0NTZXR0aW5nczo6c2V0UGFydGlhbFN3YXBFbmFi
bGVkKHBhcnRpYWxTd2FwKTsKIAorICAgICAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdz
OwogICAgICAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gbXlIb3N0SW1wbCA9IENDTGF5
ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShzZXR0aW5ncywgdGhpcyk7CiAKICAgICAgICAgbXlIb3N0
SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoZ3JhcGhpY3NDb250ZXh0LCBVbnRocm90dGxl
ZFVwbG9hZGVyKTsKQEAgLTE0OCw2ICsxNDksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgT3duUHRyPEND
TGF5ZXJUcmVlSG9zdEltcGw+IG1faG9zdEltcGw7CiAgICAgYm9vbCBtX2RpZFJlcXVlc3RDb21t
aXQ7CiAgICAgYm9vbCBtX2RpZFJlcXVlc3RSZWRyYXc7CisgICAgQ0NTY29wZWRTZXR0aW5ncyBt
X3Njb3BlZFNldHRpbmdzOwogfTsKIAogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBz
Y3JvbGxEZWx0YU5vTGF5ZXJzKQpAQCAtMTA2NCw4ICsxMDY2LDggQEAgVEVTVF9GKENDTGF5ZXJU
cmVlSG9zdEltcGxUZXN0LCBwYXJ0aWFsU3dhcFJlY2VpdmVzRGFtYWdlUmVjdCkKIAogICAgIC8v
IFRoaXMgdGVzdCBjcmVhdGVzIGl0cyBvd24gQ0NMYXllclRyZWVIb3N0SW1wbCwgc28KICAgICAv
LyB0aGF0IHdlIGNhbiBmb3JjZSBwYXJ0aWFsIHN3YXAgZW5hYmxlZC4KLSAgICBDQ1NldHRpbmdz
IHNldHRpbmdzOwotICAgIHNldHRpbmdzLnBhcnRpYWxTd2FwRW5hYmxlZCA9IHRydWU7CisgICAg
Q0NMYXllclRyZWVTZXR0aW5ncyBzZXR0aW5nczsKKyAgICBDQ1NldHRpbmdzOjpzZXRQYXJ0aWFs
U3dhcEVuYWJsZWQodHJ1ZSk7CiAgICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IGxheWVy
VHJlZUhvc3RJbXBsID0gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKHNldHRpbmdzLCB0aGlz
KTsKICAgICBsYXllclRyZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY2NDb250
ZXh0LCBVbnRocm90dGxlZFVwbG9hZGVyKTsKICAgICBsYXllclRyZWVIb3N0SW1wbC0+c2V0Vmll
d3BvcnRTaXplKEludFNpemUoNTAwLCA1MDApKTsKQEAgLTEyNzEsNyArMTI3Myw3IEBAIFRFU1Rf
RihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgcGFydGlhbFN3YXBOb1VwZGF0ZSkKICAgICBoYXJu
ZXNzLm11c3RTZXRTY2lzc29yKDAsIDAsIDEwLCAxMCk7CiAKICAgICBPd25QdHI8Q0NMYXllclRy
ZWVIb3N0SW1wbD4gbXlIb3N0SW1wbCA9IGNyZWF0ZUxheWVyVHJlZUhvc3QodHJ1ZSwgY29udGV4
dCwgRmFrZUxheWVyV2l0aFF1YWRzOjpjcmVhdGUoMSkpOwotICAgIAorCiAgICAgLy8gRHJhdyBv
bmNlIHRvIG1ha2Ugc3VyZSBsYXllciBpcyBub3QgbmV3CiAgICAgQ0NMYXllclRyZWVIb3N0SW1w
bDo6RnJhbWVEYXRhIGZyYW1lOwogICAgIEVYUEVDVF9UUlVFKG15SG9zdEltcGwtPnByZXBhcmVU
b0RyYXcoZnJhbWUpKTsKQEAgLTEyOTgsNyArMTMwMCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
IHJldHVybiBXZWJTdHJpbmcoIkdMX0NIUk9NSVVNX3Bvc3Rfc3ViX2J1ZmZlciIpOwogICAgICAg
ICByZXR1cm4gV2ViU3RyaW5nKCk7CiAgICAgfQotICAgIAorCiAgICAgV2ViU3RyaW5nIGdldFJl
cXVlc3RhYmxlRXh0ZW5zaW9uc0NIUk9NSVVNKCkKICAgICB7CiAgICAgICAgIHJldHVybiBXZWJT
dHJpbmcoIkdMX0NIUk9NSVVNX3Bvc3Rfc3ViX2J1ZmZlciIpOwpAQCAtMTMwNywxMCArMTMwOSwx
MSBAQCBwdWJsaWM6CiAKIHN0YXRpYyBQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IHNl
dHVwTGF5ZXJzRm9yT3BhY2l0eShib29sIHBhcnRpYWxTd2FwLCBDQ0xheWVyVHJlZUhvc3RJbXBs
Q2xpZW50KiBjbGllbnQpCiB7Ci0gICAgQ0NTZXR0aW5ncyBzZXR0aW5nczsKLSAgICBzZXR0aW5n
cy5wYXJ0aWFsU3dhcEVuYWJsZWQgPSBwYXJ0aWFsU3dhcDsKKyAgICBDQ1NldHRpbmdzOjpzZXRQ
YXJ0aWFsU3dhcEVuYWJsZWQocGFydGlhbFN3YXApOwogCiAgICAgUmVmUHRyPENDR3JhcGhpY3ND
b250ZXh0PiBjb250ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKEdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQ
dHIobmV3IFBhcnRpYWxTd2FwQ29udGV4dCgpKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRp
cmVjdGx5VG9Ib3N0V2luZG93KSk7CisKKyAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdz
OwogICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBteUhvc3RJbXBsID0gQ0NMYXllclRy
ZWVIb3N0SW1wbDo6Y3JlYXRlKHNldHRpbmdzLCBjbGllbnQpOwogICAgIG15SG9zdEltcGwtPmlu
aXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQucmVsZWFzZSgpLCBVbnRocm90dGxlZFVwbG9h
ZGVyKTsKICAgICBteUhvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMDAsIDEwMCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhv
c3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0
VGVzdC5jcHAKaW5kZXggYWEyN2U4OGY3ZGMzZWQ4MDgwMjEwNjQ5Y2NkMGJlMzAwMjdjZjBiZi4u
ZmYyMTM5YzdiNTFlNmZhNjNkYTFhODM1MmM1NWU2M2M0YTdkYzljNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC00
NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKICNpbmNsdWRlICJjYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NTY29wZWRUaHJlYWRQcm94eS5o
IgorI2luY2x1ZGUgImNjL0NDU2V0dGluZ3MuaCIKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVh
ZFByb3h5LmgiCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgImNj
L0NDVGhyZWFkVGFzay5oIgpAQCAtMTU0LDcgKzE1NSw3IEBAIHB1YmxpYzoKIC8vIEFkYXB0cyBD
Q0xheWVyVHJlZUhvc3RJbXBsIGZvciB0ZXN0LiBSdW5zIHJlYWwgY29kZSwgdGhlbiBpbnZva2Vz
IHRlc3QgaG9va3MuCiBjbGFzcyBNb2NrTGF5ZXJUcmVlSG9zdEltcGwgOiBwdWJsaWMgQ0NMYXll
clRyZWVIb3N0SW1wbCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8TW9ja0xheWVy
VHJlZUhvc3RJbXBsPiBjcmVhdGUoVGVzdEhvb2tzKiB0ZXN0SG9va3MsIGNvbnN0IENDU2V0dGlu
Z3MmIHNldHRpbmdzLCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KiBjbGllbnQpCisgICAgc3Rh
dGljIFBhc3NPd25QdHI8TW9ja0xheWVyVHJlZUhvc3RJbXBsPiBjcmVhdGUoVGVzdEhvb2tzKiB0
ZXN0SG9va3MsIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzLCBDQ0xheWVyVHJl
ZUhvc3RJbXBsQ2xpZW50KiBjbGllbnQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IE1vY2tMYXllclRyZWVIb3N0SW1wbCh0ZXN0SG9va3MsIHNldHRpbmdzLCBjbGllbnQpKTsK
ICAgICB9CkBAIC0yMDIsNyArMjAzLDcgQEAgcHJvdGVjdGVkOgogICAgIH0KIAogcHJpdmF0ZToK
LSAgICBNb2NrTGF5ZXJUcmVlSG9zdEltcGwoVGVzdEhvb2tzKiB0ZXN0SG9va3MsIGNvbnN0IEND
U2V0dGluZ3MmIHNldHRpbmdzLCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KiBjbGllbnQpCisg
ICAgTW9ja0xheWVyVHJlZUhvc3RJbXBsKFRlc3RIb29rcyogdGVzdEhvb2tzLCBjb25zdCBDQ0xh
eWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncywgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCogY2xp
ZW50KQogICAgICAgICA6IENDTGF5ZXJUcmVlSG9zdEltcGwoc2V0dGluZ3MsIGNsaWVudCkKICAg
ICAgICAgLCBtX3Rlc3RIb29rcyh0ZXN0SG9va3MpCiAgICAgewpAQCAtMjE0LDEzICsyMTUsOSBA
QCBwcml2YXRlOgogLy8gQWRhcHRzIENDTGF5ZXJUcmVlSG9zdCBmb3IgdGVzdC4gSW5qZWN0cyBN
b2NrTGF5ZXJUcmVlSG9zdEltcGwuCiBjbGFzcyBNb2NrTGF5ZXJUcmVlSG9zdCA6IHB1YmxpYyBD
Q0xheWVyVHJlZUhvc3QgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPE1vY2tMYXll
clRyZWVIb3N0PiBjcmVhdGUoVGVzdEhvb2tzKiB0ZXN0SG9va3MsIENDTGF5ZXJUcmVlSG9zdENs
aWVudCogY2xpZW50LCBQYXNzUmVmUHRyPExheWVyQ2hyb21pdW0+IHJvb3RMYXllciwgY29uc3Qg
Q0NTZXR0aW5ncyYgc2V0dGluZ3MpCisgICAgc3RhdGljIFBhc3NPd25QdHI8TW9ja0xheWVyVHJl
ZUhvc3Q+IGNyZWF0ZShUZXN0SG9va3MqIHRlc3RIb29rcywgQ0NMYXllclRyZWVIb3N0Q2xpZW50
KiBjbGllbnQsIFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcm9vdExheWVyLCBjb25zdCBDQ0xh
eWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncykKICAgICB7Ci0gICAgICAgIC8vIEZvciB0aGVzZSB0
ZXN0cywgd2Ugd2lsbCBlbmFibGUgdGhyZWFkZWQgYW5pbWF0aW9ucy4KLSAgICAgICAgQ0NTZXR0
aW5ncyBzZXR0aW5nc0NvcHkgPSBzZXR0aW5nczsKLSAgICAgICAgc2V0dGluZ3NDb3B5LnRocmVh
ZGVkQW5pbWF0aW9uRW5hYmxlZCA9IHRydWU7Ci0KLSAgICAgICAgT3duUHRyPE1vY2tMYXllclRy
ZWVIb3N0PiBsYXllclRyZWVIb3N0KGFkb3B0UHRyKG5ldyBNb2NrTGF5ZXJUcmVlSG9zdCh0ZXN0
SG9va3MsIGNsaWVudCwgc2V0dGluZ3NDb3B5KSkpOworICAgICAgICBPd25QdHI8TW9ja0xheWVy
VHJlZUhvc3Q+IGxheWVyVHJlZUhvc3QoYWRvcHRQdHIobmV3IE1vY2tMYXllclRyZWVIb3N0KHRl
c3RIb29rcywgY2xpZW50LCBzZXR0aW5ncykpKTsKICAgICAgICAgYm9vbCBzdWNjZXNzID0gbGF5
ZXJUcmVlSG9zdC0+aW5pdGlhbGl6ZSgpOwogICAgICAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsK
ICAgICAgICAgbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKHJvb3RMYXllcik7CkBAIC0yMzUs
MTAgKzIzMiw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc093blB0cjxDQ0xheWVyVHJl
ZUhvc3RJbXBsPiBjcmVhdGVMYXllclRyZWVIb3N0SW1wbChDQ0xheWVyVHJlZUhvc3RJbXBsQ2xp
ZW50KiBjbGllbnQpCiAgICAgewotICAgICAgICAvLyBGb3IgdGhlc2UgdGVzdHMsIHdlIHdpbGwg
ZW5hYmxlIHRocmVhZGVkIGFuaW1hdGlvbnMuCi0gICAgICAgIENDU2V0dGluZ3MgY29weVNldHRp
bmdzID0gc2V0dGluZ3MoKTsKLSAgICAgICAgY29weVNldHRpbmdzLnRocmVhZGVkQW5pbWF0aW9u
RW5hYmxlZCA9IHRydWU7Ci0gICAgICAgIHJldHVybiBNb2NrTGF5ZXJUcmVlSG9zdEltcGw6OmNy
ZWF0ZShtX3Rlc3RIb29rcywgY29weVNldHRpbmdzLCBjbGllbnQpOworICAgICAgICByZXR1cm4g
TW9ja0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUobV90ZXN0SG9va3MsIHNldHRpbmdzKCksIGNs
aWVudCk7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZEFkZEFuaW1hdGlvbigpIE9WRVJS
SURFCkBAIC0yNTMsNyArMjQ3LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBN
b2NrTGF5ZXJUcmVlSG9zdChUZXN0SG9va3MqIHRlc3RIb29rcywgQ0NMYXllclRyZWVIb3N0Q2xp
ZW50KiBjbGllbnQsIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKQorICAgIE1vY2tMYXllclRy
ZWVIb3N0KFRlc3RIb29rcyogdGVzdEhvb2tzLCBDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVu
dCwgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MpCiAgICAgICAgIDogQ0NMYXll
clRyZWVIb3N0KGNsaWVudCwgc2V0dGluZ3MpCiAgICAgICAgICwgbV90ZXN0SG9va3ModGVzdEhv
b2tzKQogICAgICAgICAsIG1fZGlkQWRkQW5pbWF0aW9uV2FzQ2FsbGVkKGZhbHNlKQpAQCAtNjQx
LDYgKzYzNSw5IEBAIHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwgdm9pZCBydW5UZXN0KGJvb2wg
dGhyZWFkZWQpCiAgICAgeworICAgICAgICAvLyBGb3IgdGhlc2UgdGVzdHMsIHdlIHdpbGwgZW5h
YmxlIHRocmVhZGVkIGFuaW1hdGlvbnMuCisgICAgICAgIFdlYkNvbXBvc2l0b3I6OnNldEFjY2Vs
ZXJhdGVkQW5pbWF0aW9uRW5hYmxlZCh0cnVlKTsKKwogICAgICAgICBpZiAodGhyZWFkZWQpIHsK
ICAgICAgICAgICAgIG1fd2ViVGhyZWFkID0gYWRvcHRQdHIoV2ViS2l0OjpQbGF0Zm9ybTo6Y3Vy
cmVudCgpLT5jcmVhdGVUaHJlYWQoIkNDTGF5ZXJUcmVlSG9zdFRlc3QiKSk7CiAgICAgICAgICAg
ICBXZWJDb21wb3NpdG9yOjppbml0aWFsaXplKG1fd2ViVGhyZWFkLmdldCgpKTsKQEAgLTY3Nyw3
ICs2NzQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIFdlYkNvbXBvc2l0b3I6OnNodXRkb3duKCk7
CiAgICAgfQogCi0gICAgQ0NTZXR0aW5ncyBtX3NldHRpbmdzOworICAgIENDTGF5ZXJUcmVlU2V0
dGluZ3MgbV9zZXR0aW5nczsKICAgICBPd25QdHI8TW9ja0xheWVyVHJlZUhvc3RDbGllbnQ+IG1f
Y2xpZW50OwogICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3Q+IG1fbGF5ZXJUcmVlSG9zdDsKIApA
QCAtMjE0MCw3ICsyMTM3LDcgQEAgcHVibGljOgogICAgICAgICA6IG1fbGF5ZXIoQ29udGVudExh
eWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OmNyZWF0ZSgmbV9kZWxlZ2F0ZSkpCiAgICAg
ewogICAgICAgICAvLyBNYWtlIHN1cmUgcGFydGlhbCB0ZXh0dXJlIHVwZGF0ZXMgYXJlIHR1cm5l
ZCBvZmYuCi0gICAgICAgIG1fc2V0dGluZ3MubWF4UGFydGlhbFRleHR1cmVVcGRhdGVzID0gMDsK
KyAgICAgICAgV2ViQ29tcG9zaXRvcjo6c2V0TWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKDApOwog
ICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBiZWdpblRlc3QoKQpAQCAtMjI0MCw3ICsyMjM3LDcg
QEAgcHVibGljOgogICAgICAgICAsIG1fbnVtQ29tbWl0cygwKQogICAgIHsKICAgICAgICAgLy8g
QWxsb3cgb25lIHBhcnRpYWwgdGV4dHVyZSB1cGRhdGUuCi0gICAgICAgIG1fc2V0dGluZ3MubWF4
UGFydGlhbFRleHR1cmVVcGRhdGVzID0gMTsKKyAgICAgICAgV2ViQ29tcG9zaXRvcjo6c2V0TWF4
UGFydGlhbFRleHR1cmVVcGRhdGVzKDEpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBiZWdp
blRlc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1Rlc3RD
b21tb24uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUZXN0Q29tbW9uLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uY2EzNjg0YTYzZDk5NDkyOTliZDk2Y2NlNTBkNzlkYTdjNmUwZWJkMgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUZXN0Q29tbW9uLmgK
QEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDQ1Rlc3RDb21tb25faAor
I2RlZmluZSBDQ1Rlc3RDb21tb25faAorCisjaW5jbHVkZSAiY2MvQ0NTZXR0aW5ncy5oIgorCitu
YW1lc3BhY2UgV2ViS2l0VGVzdHMgeworCisvLyBJZiB5b3UgaGF2ZSBhIHRlc3QgdGhhdCBtb2Rp
ZmllcyBvciB1c2VzIGdsb2JhbCBzZXR0aW5ncywga2VlcCBhbiBpbnN0YW5jZQorLy8gb2YgdGhp
cyBjbGFzcyB0byBlbnN1cmUgdGhhdCB5b3Ugc3RhcnQgYW5kIGVuZCB3aXRoIGEgY2xlYW4gc2xh
dGUuCitjbGFzcyBDQ1Njb3BlZFNldHRpbmdzIHsKK3B1YmxpYzoKKyAgICBDQ1Njb3BlZFNldHRp
bmdzKCkgeyBXZWJDb3JlOjpDQ1NldHRpbmdzOjpyZXNldCgpOyB9CisgICAgfkNDU2NvcGVkU2V0
dGluZ3MoKSB7IFdlYkNvcmU6OkNDU2V0dGluZ3M6OnJlc2V0KCk7IH0KK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdFRlc3RzCisKKyNlbmRpZiAvLyBDQ1Rlc3RDb21tb25faApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVt
VGVzdC5jcHAKaW5kZXggYTU2NTE0NmE1ZDQ5MTk2NWI3YjFhZDI1ZDZmZTY5YzUxNTE1NDBmOS4u
NzRmMjZkMGRiNTlmODM1MjBhMTc0NTNjY2Q2MWVkMmEyOTY0M2Q2YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRl
c3QuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBGYWtlQ0NM
YXllclRyZWVIb3N0KCkKLSAgICAgICAgOiBDQ0xheWVyVHJlZUhvc3QoJm1fY2xpZW50LCBDQ1Nl
dHRpbmdzKCkpCisgICAgICAgIDogQ0NMYXllclRyZWVIb3N0KCZtX2NsaWVudCwgQ0NMYXllclRy
ZWVTZXR0aW5ncygpKQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvTGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggODIxM2RkODEyMDcxZTVhMzUw
YzJkNWYxNzYwZTBiYmZhOGQ0OGY1ZS4uY2VmMzVjYzRjN2QzNDliNDgzYjNjNmZhZDgwZTcwMjM5
ODk5NGQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllckNo
cm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllckNo
cm9taXVtVGVzdC5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgbmFtZXNwYWNlIHsKIGNsYXNzIE1vY2tD
Q0xheWVyVHJlZUhvc3QgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0IHsKIHB1YmxpYzoKICAgICBN
b2NrQ0NMYXllclRyZWVIb3N0KCkKLSAgICAgICAgOiBDQ0xheWVyVHJlZUhvc3QoJm1fZmFrZUNs
aWVudCwgQ0NTZXR0aW5ncygpKQorICAgICAgICA6IENDTGF5ZXJUcmVlSG9zdCgmbV9mYWtlQ2xp
ZW50LCBDQ0xheWVyVHJlZVNldHRpbmdzKCkpCiAgICAgewogICAgICAgICBpbml0aWFsaXplKCk7
CiAgICAgfQpAQCAtNjE0LDcgKzYxNCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBGYWtl
Q0NMYXllclRyZWVIb3N0KCkKLSAgICAgICAgOiBDQ0xheWVyVHJlZUhvc3QoJm1fY2xpZW50LCBD
Q1NldHRpbmdzKCkpCisgICAgICAgIDogQ0NMYXllclRyZWVIb3N0KCZtX2NsaWVudCwgQ0NMYXll
clRyZWVTZXR0aW5ncygpKQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4
IDQwMTdkMzhiZmYyN2I4M2MwMWUwMDIxMzYxYTUwNjg1ODQyYTJiOTcuLmVjY2JhYWQ3ZTg4NmVi
NzU5MzUzYTk3MTkzOTRlZDlmMDcwYWUxMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcApAQCAtMjUs
MTAgKzI1LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJl
ckNocm9taXVtLmgiCiAKKyNpbmNsdWRlICJDQ1Rlc3RDb21tb24uaCIKICNpbmNsdWRlICJGYWtl
V2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYkNvbXBv
c2l0b3IuaCIKKyNpbmNsdWRlICJjYy9DQ1NldHRpbmdzLmgiCiAjaW5jbHVkZSAiY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5oIgogCiAjaW5jbHVkZSA8Z21vY2svZ21vY2suaD4KQEAgLTM2LDYgKzM4
LDcgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwordXNpbmcgbmFtZXNwYWNlIFdlYktpdFRlc3RzOwogCiBjbGFzcyBGcmFtZUNvdW50aW5nTWVt
b3J5QWxsb2NhdGlvblNldHRpbmdDb250ZXh0IDogcHVibGljIEZha2VXZWJHcmFwaGljc0NvbnRl
eHQzRCB7CiBwdWJsaWM6CkBAIC04MSw3ICs4NCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIENDUmVu
ZGVyZXJDbGllbnQgbWV0aG9kcy4KICAgICB2aXJ0dWFsIGNvbnN0IEludFNpemUmIGRldmljZVZp
ZXdwb3J0U2l6ZSgpIGNvbnN0IE9WRVJSSURFIHsgc3RhdGljIEludFNpemUgZmFrZVNpemU7IHJl
dHVybiBmYWtlU2l6ZTsgfQotICAgIHZpcnR1YWwgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3Mo
KSBjb25zdCBPVkVSUklERSB7IHN0YXRpYyBDQ1NldHRpbmdzIGZha2VTZXR0aW5nczsgcmV0dXJu
IGZha2VTZXR0aW5nczsgfQorICAgIHZpcnR1YWwgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYg
c2V0dGluZ3MoKSBjb25zdCBPVkVSUklERSB7IHN0YXRpYyBDQ0xheWVyVHJlZVNldHRpbmdzIGZh
a2VTZXR0aW5nczsgcmV0dXJuIGZha2VTZXR0aW5nczsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRM
b3NlQ29udGV4dCgpIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCBvblN3YXBCdWZmZXJz
Q29tcGxldGUoKSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0RnVsbFJvb3RMYXll
ckRhbWFnZSgpIE9WRVJSSURFIHsgbV9zZXRGdWxsUm9vdExheWVyRGFtYWdlQ291bnQrKzsgfQpA
QCAtMTQ3LDYgKzE1MCw3IEBAIHByb3RlY3RlZDoKICAgICBGcmFtZUNvdW50aW5nTWVtb3J5QWxs
b2NhdGlvblNldHRpbmdDb250ZXh0JiBtX21vY2tDb250ZXh0OwogICAgIEZha2VDQ1JlbmRlcmVy
Q2xpZW50IG1fbW9ja0NsaWVudDsKICAgICBGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtIG1fbGF5
ZXJSZW5kZXJlckNocm9taXVtOworICAgIENDU2NvcGVkU2V0dGluZ3MgbV9zY29wZWRTZXR0aW5n
czsKIH07CiAKIC8vIFRlc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtIGRpc2NhcmRGcmFtZWJ1ZmZl
ciBmdW5jdGlvbmFsaXR5OgpAQCAtMTk4LDcgKzIwMiw3IEBAIFRFU1RfRihMYXllclJlbmRlcmVy
Q2hyb21pdW1UZXN0LCBTd2FwQnVmZmVyc1doaWxlQmFja2J1ZmZlckRpc2NhcmRlZFNob3VsZEln
bm9yCiAgICAgc3dhcEJ1ZmZlcnMoKTsKICAgICBFWFBFQ1RfRVEoMCwgbV9tb2NrQ29udGV4dC5m
cmFtZUNvdW50KCkpOwogICAgIEVYUEVDVF9FUSgyLCBtX21vY2tDbGllbnQuc2V0RnVsbFJvb3RM
YXllckRhbWFnZUNvdW50KCkpOwotICAgIAorCiAgICAgc3dhcEJ1ZmZlcnMoKTsKICAgICBFWFBF
Q1RfRVEoMCwgbV9tb2NrQ29udGV4dC5mcmFtZUNvdW50KCkpOwogICAgIEVYUEVDVF9FUSgzLCBt
X21vY2tDbGllbnQuc2V0RnVsbFJvb3RMYXllckRhbWFnZUNvdW50KCkpOwpAQCAtMjg5LDYgKzI5
Myw3IEBAIHB1YmxpYzoKIC8vIFRoaXMgdGVzdCBpc24ndCB1c2luZyB0aGUgc2FtZSBmaXh0dXJl
IGFzIExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QsIGFuZCB5b3UgY2FuJ3QgbWl4IFRFU1QoKSBh
bmQgVEVTVF9GKCkgd2l0aCB0aGUgc2FtZSBuYW1lLCBoZW5jZSBMUkMyLgogVEVTVChMYXllclJl
bmRlcmVyQ2hyb21pdW1UZXN0MiwgaW5pdGlhbGl6YXRpb25Eb2VzTm90TWFrZVN5bmNocm9ub3Vz
Q2FsbHMpCiB7CisgICAgQ0NTY29wZWRTZXR0aW5ncyBzY29wZWRTZXR0aW5nczsKICAgICBGYWtl
Q0NSZW5kZXJlckNsaWVudCBtb2NrQ2xpZW50OwogICAgIEZha2VMYXllclJlbmRlcmVyQ2hyb21p
dW0gbGF5ZXJSZW5kZXJlckNocm9taXVtKCZtb2NrQ2xpZW50LCBHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBG
b3JiaWRTeW5jaHJvbm91c0NhbGxDb250ZXh0KSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRp
cmVjdGx5VG9Ib3N0V2luZG93KSk7CiAKQEAgLTMzMCw2ICszMzUsNyBAQCBwcml2YXRlOgogCiBU
RVNUKExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QyLCBpbml0aWFsaXphdGlvbldpdGhRdWlja2x5
TG9zdENvbnRleHREb2VzTm90QXNzZXJ0KQogeworICAgIENDU2NvcGVkU2V0dGluZ3Mgc2NvcGVk
U2V0dGluZ3M7CiAgICAgRmFrZUNDUmVuZGVyZXJDbGllbnQgbW9ja0NsaWVudDsKICAgICBGYWtl
TGF5ZXJSZW5kZXJlckNocm9taXVtIGxheWVyUmVuZGVyZXJDaHJvbWl1bSgmbW9ja0NsaWVudCwg
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29u
dGV4dChhZG9wdFB0cihuZXcgTG9zZUNvbnRleHRPbkZpcnN0R2V0Q29udGV4dCksIEdyYXBoaWNz
Q29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdykpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RleHR1cmVMYXllckNocm9taXVtVGVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RleHR1cmVMYXllckNocm9taXVtVGVzdC5j
cHAKaW5kZXggYjYwMDE3ZmQ5YWEwODBiNGZkN2Y2OWY5YTBmZWUwYzI2OGI0NDllYS4uZDBjYzNk
OTZmMTRlYmNmZThkM2M5OGIzZGY2MjdjMGQ2M2E0OGNlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9UZXh0dXJlTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGV4dHVyZUxheWVyQ2hyb21pdW1UZXN0LmNwcApA
QCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgewogY2xhc3MgTW9ja0NDTGF5ZXJUcmVlSG9zdCA6
IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3QgewogcHVibGljOgogICAgIE1vY2tDQ0xheWVyVHJlZUhv
c3QoKQotICAgICAgICA6IENDTGF5ZXJUcmVlSG9zdCgmbV9mYWtlQ2xpZW50LCBDQ1NldHRpbmdz
KCkpCisgICAgICAgIDogQ0NMYXllclRyZWVIb3N0KCZtX2Zha2VDbGllbnQsIENDTGF5ZXJUcmVl
U2V0dGluZ3MoKSkKICAgICB7CiAgICAgICAgIGluaXRpYWxpemUoKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0
LmNwcAppbmRleCBmMGMxMzEzZjkwZWU3NTJkNGMyMjE3OGFkMzk0NDc4YjI1NzYxNjIwLi43MThh
MzY3YzgxZDJlODY4NjA1NTg5ZjdmYjhkYmYzNjM1OGRhYmNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmgiCiAjaW5j
bHVkZSAiRmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudC5oIgogI2luY2x1ZGUgIldlYkNvbXBvc2l0
b3IuaCIKKyNpbmNsdWRlICJjYy9DQ1NldHRpbmdzLmgiCiAjaW5jbHVkZSAiY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5oIiAvLyBGb3IgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkCiAjaW5jbHVkZSA8
Z3Rlc3QvZ3Rlc3QuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgu
aD4KQEAgLTc5Nyw3ICs3OTgsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHNraXBz
RHJhd0dldHNSZXNldCkKICAgICAvLyBJbml0aWFsaXplIHdpdGhvdXQgdGhyZWFkaW5nIHN1cHBv
cnQuCiAgICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjppbml0aWFsaXplKDApOwogICAgIEZha2VD
Q0xheWVyVHJlZUhvc3RDbGllbnQgZmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudDsKLSAgICBPd25Q
dHI8Q0NMYXllclRyZWVIb3N0PiBjY0xheWVyVHJlZUhvc3QgPSBDQ0xheWVyVHJlZUhvc3Q6OmNy
ZWF0ZSgmZmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudCwgQ0NTZXR0aW5ncygpKTsKKyAgICBPd25Q
dHI8Q0NMYXllclRyZWVIb3N0PiBjY0xheWVyVHJlZUhvc3QgPSBDQ0xheWVyVHJlZUhvc3Q6OmNy
ZWF0ZSgmZmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudCwgQ0NMYXllclRyZWVTZXR0aW5ncygpKTsK
IAogICAgIC8vIENyZWF0ZSB0d28gMzAwIHggMzAwIHRpbGVkIGxheWVycy4KICAgICBJbnRTaXpl
IGNvbnRlbnRCb3VuZHMoMzAwLCAzMDApOwpAQCAtODczLDEwICs4NzQsMTIgQEAgVEVTVChUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCBodWdlTGF5ZXJVcGRhdGVDcmFzaCkKIAogVEVTVChUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCBwYXJ0aWFsVXBkYXRlcykKIHsKLSAgICBDQ1NldHRpbmdzIHNldHRp
bmdzOwotICAgIHNldHRpbmdzLm1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcyA9IDQ7CiAgICAgLy8g
SW5pdGlhbGl6ZSB3aXRob3V0IHRocmVhZGluZyBzdXBwb3J0LgogICAgIFdlYktpdDo6V2ViQ29t
cG9zaXRvcjo6aW5pdGlhbGl6ZSgwKTsKKworICAgIENDTGF5ZXJUcmVlU2V0dGluZ3Mgc2V0dGlu
Z3M7CisgICAgQ0NTZXR0aW5nczo6c2V0TWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKDQpOworCiAg
ICAgRmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudCBmYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50Owog
ICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3Q+IGNjTGF5ZXJUcmVlSG9zdCA9IENDTGF5ZXJUcmVl
SG9zdDo6Y3JlYXRlKCZmYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50LCBzZXR0aW5ncyk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVHJlZVN5bmNocm9uaXplclRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UcmVlU3luY2hyb25pemVyVGVz
dC5jcHAKaW5kZXggZWRkZWQ1YWQyZWJkNjc2M2RjZTFjODRkMTQ0NGI4M2I3ZjgwYTgwNi4uMDg1
OTdmMWRjNjJkMzAzYTMxZjUwNWViMTZhNjE2MDA1OWVlYjhiMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UcmVlU3luY2hyb25pemVyVGVzdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UcmVlU3luY2hyb25pemVyVGVzdC5jcHAKQEAgLTE2
Myw3ICsxNjMsNyBAQCBURVNUKFRyZWVTeW5jaHJvbml6ZXJUZXN0LCBzeW5jU2ltcGxlVHJlZUZy
b21FbXB0eSkKIHsKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKIAotICAgIEND
U2V0dGluZ3Mgc2V0dGluZ3M7CisgICAgQ0NMYXllclRyZWVTZXR0aW5ncyBzZXR0aW5nczsKICAg
ICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gaG9zdEltcGwgPSBDQ0xheWVyVHJlZUhvc3RJ
bXBsOjpjcmVhdGUoc2V0dGluZ3MsIDApOwogCiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGxh
eWVyVHJlZVJvb3QgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKQEAgLTE4MSw3ICsxODEsNyBA
QCBURVNUKFRyZWVTeW5jaHJvbml6ZXJUZXN0LCBzeW5jU2ltcGxlVHJlZVJldXNpbmdMYXllcnMp
CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7CiAgICAgVmVjdG9yPGludD4gY2NM
YXllckRlc3RydWN0aW9uTGlzdDsKIAotICAgIENDU2V0dGluZ3Mgc2V0dGluZ3M7CisgICAgQ0NM
YXllclRyZWVTZXR0aW5ncyBzZXR0aW5nczsKICAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1w
bD4gaG9zdEltcGwgPSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoc2V0dGluZ3MsIDApOwog
CiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGxheWVyVHJlZVJvb3QgPSBNb2NrTGF5ZXJDaHJv
bWl1bTo6Y3JlYXRlKCZjY0xheWVyRGVzdHJ1Y3Rpb25MaXN0KTsKQEAgLTIxMSw3ICsyMTEsNyBA
QCBURVNUKFRyZWVTeW5jaHJvbml6ZXJUZXN0LCBzeW5jU2ltcGxlVHJlZUFuZFRyYWNrU3RhY2tp
bmdPcmRlckNoYW5nZSkKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKICAgICBW
ZWN0b3I8aW50PiBjY0xheWVyRGVzdHJ1Y3Rpb25MaXN0OwogCi0gICAgQ0NTZXR0aW5ncyBzZXR0
aW5nczsKKyAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOwogICAgIE93blB0cjxDQ0xh
eWVyVHJlZUhvc3RJbXBsPiBob3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShz
ZXR0aW5ncywgMCk7CiAKICAgICAvLyBTZXQgdXAgdGhlIHRyZWUgYW5kIHN5bmMgb25jZS4gY2hp
bGQyIG5lZWRzIHRvIGJlIHN5bmNlZCBoZXJlLCB0b28sIGV2ZW4gdGhvdWdoIHdlCkBAIC0yNDAs
NyArMjQwLDcgQEAgVEVTVChUcmVlU3luY2hyb25pemVyVGVzdCwgc3luY1NpbXBsZVRyZWVBbmRQ
cm9wZXJ0aWVzKQogewogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwogCi0gICAg
Q0NTZXR0aW5ncyBzZXR0aW5nczsKKyAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOwog
ICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBob3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9z
dEltcGw6OmNyZWF0ZShzZXR0aW5ncywgMCk7CiAKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
bGF5ZXJUcmVlUm9vdCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwpAQCAtMjc3LDcgKzI3Nyw3
IEBAIFRFU1QoVHJlZVN5bmNocm9uaXplclRlc3QsIHJldXNlQ0NMYXllcnNBZnRlclN0cnVjdHVy
YWxDaGFuZ2UpCiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7CiAgICAgVmVjdG9y
PGludD4gY2NMYXllckRlc3RydWN0aW9uTGlzdDsKIAotICAgIENDU2V0dGluZ3Mgc2V0dGluZ3M7
CisgICAgQ0NMYXllclRyZWVTZXR0aW5ncyBzZXR0aW5nczsKICAgICBPd25QdHI8Q0NMYXllclRy
ZWVIb3N0SW1wbD4gaG9zdEltcGwgPSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoc2V0dGlu
Z3MsIDApOwogCiAgICAgLy8gU2V0IHVwIGEgdHJlZSB3aXRoIHRoaXMgc29ydCBvZiBzdHJ1Y3R1
cmU6CkBAIC0zMjcsNyArMzI3LDcgQEAgVEVTVChUcmVlU3luY2hyb25pemVyVGVzdCwgc3luY1Np
bXBsZVRyZWVUaGVuRGVzdHJveSkKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsK
ICAgICBWZWN0b3I8aW50PiBjY0xheWVyRGVzdHJ1Y3Rpb25MaXN0OwogCi0gICAgQ0NTZXR0aW5n
cyBzZXR0aW5nczsKKyAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOwogICAgIE93blB0
cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBob3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNy
ZWF0ZShzZXR0aW5ncywgMCk7CiAKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gb2xkTGF5ZXJU
cmVlUm9vdCA9IE1vY2tMYXllckNocm9taXVtOjpjcmVhdGUoJmNjTGF5ZXJEZXN0cnVjdGlvbkxp
c3QpOwpAQCAtMzYwLDcgKzM2MCw3IEBAIFRFU1QoVHJlZVN5bmNocm9uaXplclRlc3QsIHN5bmNN
YXNrUmVwbGljYUFuZFJlcGxpY2FNYXNrTGF5ZXJzKQogewogICAgIERlYnVnU2NvcGVkU2V0SW1w
bFRocmVhZCBpbXBsOwogCi0gICAgQ0NTZXR0aW5ncyBzZXR0aW5nczsKKyAgICBDQ0xheWVyVHJl
ZVNldHRpbmdzIHNldHRpbmdzOwogICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBob3N0
SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShzZXR0aW5ncywgMCk7CiAKICAgICBS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbGF5ZXJUcmVlUm9vdCA9IExheWVyQ2hyb21pdW06OmNyZWF0
ZSgpOwpAQCAtNDA2LDcgKzQwNiw3IEBAIFRFU1QoVHJlZVN5bmNocm9uaXplclRlc3QsIHN5bmNo
cm9uaXplQW5pbWF0aW9ucykKIHsKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsK
IAotICAgIENDU2V0dGluZ3Mgc2V0dGluZ3M7CisgICAgQ0NMYXllclRyZWVTZXR0aW5ncyBzZXR0
aW5nczsKICAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gaG9zdEltcGwgPSBDQ0xheWVy
VHJlZUhvc3RJbXBsOjpjcmVhdGUoc2V0dGluZ3MsIDApOwogCiAgICAgUmVmUHRyPExheWVyQ2hy
b21pdW0+IGxheWVyVHJlZVJvb3QgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146558</attachid>
            <date>2012-06-08 06:55:05 -0700</date>
            <delta_ts>2012-06-08 17:32:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88384-20120608095504.patch</filename>
            <type>text/plain</type>
            <size>83817</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5NjcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBjMDU3MTc2ZDE5ODFi
ZWFjNmNlZWZiYTQxOTZiMDExMWQ4ZDI2MDgyLi43ZDY1NmFiNTQ1YjJhMjM2NGU2MGQ5NDI1MDA4
MjMyZTFkZWMwNmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNi0wNiAg
SWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IENlcnRhaW4gc2V0dGluZ3MgaW4gQ0NTZXR0aW5ncyBjb3VsZCBiZSBnbG9iYWwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4Mzg0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMv
V2ViTGF5ZXJUcmVlVmlldy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgIChTZXR0aW5n
cyk6CisKIDIwMTItMDYtMDYgIE1hcmsgUGlsZ3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFtDaHJvbWl1bV0gTW92ZSBjcmVhdGVNZXNzYWdlUG9ydENoYW5uZWwgdG8gUGxh
dGZvcm0uaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IGE3MDViYmQ5NWE4NmQwYjZmMDVmODlhNzU5ODYyMTFjZTk0
ZDAwNDIuLjg1NWQxNGIyNGRjOWU0MWRkMWU0OWRkOWQwOWE1ZmVhYTNlYjY3MWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw4NyBAQAorMjAxMi0wNi0wNiAgSWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIENlcnRhaW4gc2V0dGluZ3MgaW4gQ0NT
ZXR0aW5ncyBjb3VsZCBiZSBnbG9iYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg4Mzg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBObyBmdW5jdGlvbmFsaXR5IGNoYW5nZS4KKwor
ICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgICogcGFnZS9TZXR0
aW5ncy5oOgorICAgICAgICAoU2V0dGluZ3MpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRMYXllckNocm9taXVtOjpjcmVhdGVUZXh0dXJlVXBkYXRlcklmTmVlZGVkKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OmFkZEFuaW1hdGlvbik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlVGlsZVNpemVBbmRUaWxp
bmdPcHRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVi
dWdSZWN0SGlzdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0RlYnVnUmVjdEhpc3Rvcnk6
OmVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NEZWJ1Z1JlY3RIaXN0b3J5OjpzYXZlRGVi
dWdSZWN0c0ZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKENDRGVidWdSZWN0SGlzdG9yeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRz
VXBEaXNwbGF5OjplbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDSGVhZHNVcERpc3BsYXk6
OnNob3dQbGF0Zm9ybUxheWVyVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNw
bGF5OjpzaG93RGVidWdSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5
OjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNDSGVhZHNVcERpc3BsYXk6OmRyYXdIdWRDb250
ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3RGVidWdSZWN0
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlz
cGxheS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ0hlYWRzVXBEaXNwbGF5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmJ1ZmZlcmVkVXBkYXRlcyk6CisgICAgICAg
IChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnJlcXVlc3RQYXJ0aWFsVGV4dHVyZVVwZGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmFuaW1hdGVMYXllcnMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVTZXR0aW5nczo6Q0NMYXllclRyZWVTZXR0aW5n
cyk6CisgICAgICAgIChDQ0xheWVyVHJlZVNldHRpbmdzKToKKyAgICAgICAgKENDTGF5ZXJUcmVl
SG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnNldHRpbmdzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpDQ0xheWVyVHJlZUhvc3RJbXBs
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRl
clN1cmZhY2VMYXllckxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1w
bDo6YW5pbWF0ZUxheWVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0SW1wbCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5oOgor
ICAgICAgICAoQ0NSZW5kZXJlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlcmVy
OjpzZXR0aW5ncyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
ZXR0aW5ncy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1NldHRpbmdzOjphY2NlbGVyYXRlZFBhaW50aW5nRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1NldHRpbmdzOjpzZXRBY2NlbGVyYXRlZFBhaW50aW5nRW5hYmxlZCk6CisgICAgICAg
IChXZWJDb3JlOjpDQ1NldHRpbmdzOjpwZXJUaWxlUGFpbnRpbmdFbmFibGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDU2V0dGluZ3M6OnNldFBlclRpbGVQYWludGluZ0VuYWJsZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NTZXR0aW5nczo6cGFydGlhbFN3YXBFbmFibGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDU2V0dGluZ3M6OnNldFBhcnRpYWxTd2FwRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1NldHRpbmdzOjphY2NlbGVyYXRlZEFuaW1hdGlvbkVuYWJsZWQpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NTZXR0aW5nczo6c2V0QWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDU2V0dGluZ3M6Om1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1NldHRpbmdzOjpzZXRNYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NTZXR0aW5nczo6ZGVmYXVsdFRpbGVTaXplKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDU2V0dGluZ3M6OnNldERlZmF1bHRUaWxlU2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1NldHRpbmdzOjptYXhVbnRpbGVkTGF5ZXJTaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDU2V0dGluZ3M6OnNldE1heFVudGlsZWRMYXllclNpemUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NTZXR0aW5nczo6cmVzZXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2V0dGluZ3MuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KENDU2V0dGluZ3MpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHA6Cisg
ICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmg6CisgICAgICAgIChJbnRlcm5hbFNl
dHRpbmdzKToKKwogMjAxMi0wNi0wNiAgQWxlYyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgSW5kZXhlZERCOiBPcHRpbWl6ZSBzaW5nbGUta2V5IGdldCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDhlZWFlMDRmNWYzYjY1N2Y0YzYyY2VhYmY1MjdjOWQ3
ZDU5NmE0ZTcuLjAzODBmNzBiN2Y5MzIxNTFkNDA0YTA1ZDg1Y2YwYjgwZGI5NDY4N2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMTItMDYtMDYgIElhbiBW
b2xsaWNrICA8dm9sbGlja0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBDZXJ0
YWluIHNldHRpbmdzIGluIENDU2V0dGluZ3MgY291bGQgYmUgZ2xvYmFsCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODM4NAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lmd5cGk6CisgICAgICAg
ICogcHVibGljL1dlYkNvbXBvc2l0b3IuaDoKKyAgICAgICAgKFdlYkNvbXBvc2l0b3IpOgorICAg
ICAgICAqIHB1YmxpYy9XZWJTZXR0aW5ncy5oOgorICAgICAgICAqIHNyYy9XZWJDb21wb3NpdG9y
SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3I6OnNldEFjY2VsZXJhdGVk
UGFpbnRpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbXBvc2l0b3I6OnNldFBlclRpbGVQYWludGluZ0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb21wb3NpdG9yOjpzZXRQYXJ0aWFsU3dhcEVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb21wb3NpdG9yOjpzZXRBY2NlbGVyYXRlZEFuaW1hdGlvbkVuYWJsZWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpzZXRNYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpzZXREZWZhdWx0VGlsZVNpemUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpzZXRNYXhVbnRpbGVkTGF5ZXJTaXplKToKKyAg
ICAgICAgKiBzcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5nczo6b3BlcmF0b3IgQ0NMYXll
clRyZWVTZXR0aW5ncyk6CisgICAgICAgICogc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlld0ltcGw6OldlYkxheWVyVHJlZVZpZXdJ
bXBsKToKKyAgICAgICAgKiBzcmMvV2ViU2V0dGluZ3NJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViU2V0dGluZ3NJbXBsOjpXZWJTZXR0aW5nc0ltcGwpOgorICAgICAgICAqIHNyYy9XZWJT
ZXR0aW5nc0ltcGwuaDoKKyAgICAgICAgKFdlYlNldHRpbmdzSW1wbCk6CisgICAgICAgICogc3Jj
L1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OldlYlZpZXdJ
bXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0FjdGl2ZSk6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3Qu
Y3BwOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwOgorICAgICAgICAo
V1RGOjpNb2NrTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZSk6CisgICAgICAgIChXVEY6Ok1vY2tM
YXllclRyZWVIb3N0SW1wbDo6TW9ja0xheWVyVHJlZUhvc3RJbXBsKToKKyAgICAgICAgKFdURjo6
TW9ja0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXVEY6Ok1vY2tMYXllclRyZWVI
b3N0OjpjcmVhdGVMYXllclRyZWVIb3N0SW1wbCk6CisgICAgICAgIChXVEY6Ok1vY2tMYXllclRy
ZWVIb3N0OjpNb2NrTGF5ZXJUcmVlSG9zdCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9z
dFRlc3Q6OnJ1blRlc3QpOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0VGVzdCk6CisgICAgICAg
IChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RBdG9taWNDb21taXQ6OkNDTGF5ZXJUcmVlSG9zdFRl
c3RBdG9taWNDb21taXQpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0QXRvbWlj
Q29tbWl0V2l0aFBhcnRpYWxVcGRhdGU6OkNDTGF5ZXJUcmVlSG9zdFRlc3RBdG9taWNDb21taXRX
aXRoUGFydGlhbFVwZGF0ZSk6CisgICAgICAgICogdGVzdHMvQ0NUZXN0Q29tbW9uLmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVh
ZHNVcERpc3BsYXkuaC4KKyAgICAgICAgKFdlYktpdFRlc3RzKToKKyAgICAgICAgKENDU2NvcGVk
U2V0dGluZ3MpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDU2NvcGVkU2V0dGluZ3M6OkNDU2Nv
cGVkU2V0dGluZ3MpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDU2NvcGVkU2V0dGluZ3M6On5D
Q1Njb3BlZFNldHRpbmdzKToKKyAgICAgICAgKiB0ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1U
ZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9MYXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAg
ICogdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgIChMYXllclJl
bmRlcmVyQ2hyb21pdW1UZXN0KToKKyAgICAgICAgKFRFU1RfRik6CisgICAgICAgIChURVNUKToK
KyAgICAgICAgKiB0ZXN0cy9UZXh0dXJlTGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAgICAq
IHRlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL1RyZWVT
eW5jaHJvbml6ZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdFRlc3RzOjpURVNUKToKKwogMjAx
Mi0wNi0wNiAgTWFyayBQaWxncmltICA8cGlsZ3JpbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
W0Nocm9taXVtXSBNb3ZlIGNyZWF0ZU1lc3NhZ2VQb3J0Q2hhbm5lbCB0byBQbGF0Zm9ybS5oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZp
ZXcuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5o
CmluZGV4IDIzZDBkNjNjZTlkZDI4YTViNWJhZDcxMjhlYWExNDlhOTczYjlkZTYuLjk5YjYwOWE1
MjU4NzE4ODRhODZlNzgzY2MzNzUzMmM4MTJjNjljY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCisrKyBiL1NvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCkBAIC0zNCw3ICszNCw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdDsKLXN0cnVjdCBD
Q1NldHRpbmdzOworY2xhc3MgQ0NMYXllclRyZWVTZXR0aW5nczsKIH0KIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC00OSwzNSArNDksMjMgQEAgY2xhc3MgV2ViTGF5ZXJUcmVlVmlldyA6IHB1Ymxp
YyBXZWJOb25Db3B5YWJsZSB7CiBwdWJsaWM6CiAgICAgc3RydWN0IFNldHRpbmdzIHsKICAgICAg
ICAgU2V0dGluZ3MoKQotICAgICAgICAgICAgOiBhY2NlbGVyYXRlUGFpbnRpbmcoZmFsc2UpCi0g
ICAgICAgICAgICAsIGZvcmNlU29mdHdhcmVDb21wb3NpdGluZyhmYWxzZSkKKyAgICAgICAgICAg
IDogZm9yY2VTb2Z0d2FyZUNvbXBvc2l0aW5nKGZhbHNlKQogICAgICAgICAgICAgLCBzaG93RlBT
Q291bnRlcihmYWxzZSkKICAgICAgICAgICAgICwgc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKGZhbHNl
KQogICAgICAgICAgICAgLCBzaG93UGFpbnRSZWN0cyhmYWxzZSkKLSAgICAgICAgICAgICwgcmVm
cmVzaFJhdGUoMCkKLSAgICAgICAgICAgICwgcGVyVGlsZVBhaW50aW5nKGZhbHNlKQotICAgICAg
ICAgICAgLCBwYXJ0aWFsU3dhcEVuYWJsZWQoZmFsc2UpCi0gICAgICAgICAgICAsIHRocmVhZGVk
QW5pbWF0aW9uRW5hYmxlZChmYWxzZSkKLSAgICAgICAgICAgICwgZGVmYXVsdFRpbGVTaXplKFdl
YlNpemUoMjU2LCAyNTYpKQotICAgICAgICAgICAgLCBtYXhVbnRpbGVkTGF5ZXJTaXplKFdlYlNp
emUoNTEyLCA1MTIpKQogICAgICAgICAgICAgLCBkZXZpY2VTY2FsZUZhY3RvcigxKQorICAgICAg
ICAgICAgLCByZWZyZXNoUmF0ZSgwKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBi
b29sIGFjY2VsZXJhdGVQYWludGluZzsKICAgICAgICAgYm9vbCBmb3JjZVNvZnR3YXJlQ29tcG9z
aXRpbmc7CiAgICAgICAgIGJvb2wgc2hvd0ZQU0NvdW50ZXI7CiAgICAgICAgIGJvb2wgc2hvd1Bs
YXRmb3JtTGF5ZXJUcmVlOwogICAgICAgICBib29sIHNob3dQYWludFJlY3RzOwotICAgICAgICBk
b3VibGUgcmVmcmVzaFJhdGU7Ci0gICAgICAgIGJvb2wgcGVyVGlsZVBhaW50aW5nOwotICAgICAg
ICBib29sIHBhcnRpYWxTd2FwRW5hYmxlZDsKLSAgICAgICAgYm9vbCB0aHJlYWRlZEFuaW1hdGlv
bkVuYWJsZWQ7Ci0gICAgICAgIFdlYlNpemUgZGVmYXVsdFRpbGVTaXplOwotICAgICAgICBXZWJT
aXplIG1heFVudGlsZWRMYXllclNpemU7CiAgICAgICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9y
OworICAgICAgICBkb3VibGUgcmVmcmVzaFJhdGU7CiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9O
Ci0gICAgICAgIG9wZXJhdG9yIFdlYkNvcmU6OkNDU2V0dGluZ3MoKSBjb25zdDsKKyAgICAgICAg
b3BlcmF0b3IgV2ViQ29yZTo6Q0NMYXllclRyZWVTZXR0aW5ncygpIGNvbnN0OwogI2VuZGlmCiAg
ICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDRhOWM4NTc4ZjQwMGQyODcxMDFiYWFmMTY2YmUx
ZGEwNDAyMWZkYzYuLjY1YmRiNGNhNGYxOGY4OGE4MWRjZGZjY2RmMjY3YjZhNjM4MGU0ZTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKQEAgLTM3NDUsNiArMzc0NSw4IEBACiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29wZWRUaHJlYWRQcm94eS5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5j
cHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xs
YmFyTGF5ZXJJbXBsLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2V0dGluZ3MuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NldHRpbmdzLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAnLApA
QCAtNjY0NCw3ICs2NjQ2LDcgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0lt
YWdlcy9zZWFyY2hTbWFsbEdyYXkucG5nJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQt
ZW5kL0ltYWdlcy9zZWFyY2hTbWFsbFdoaXRlLnBuZycsCiAgICAgICAgICAgICAnaW5zcGVjdG9y
L2Zyb250LWVuZC9JbWFnZXMvc2VhcmNoTmV4dC5wbmcnLAotICAgICAgICAgICAgJ2luc3BlY3Rv
ci9mcm9udC1lbmQvSW1hZ2VzL3NlYXJjaFByZXYucG5nJywKKyAgICAgICAgICAgICdpbnNwZWN0
b3IvZnJvbnQtZW5kL0ltYWdlcy9zZWFyY2hQcmV2LnBuZycsICAgICAgICAgICAgCiAgICAgICAg
ICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9JbWFnZXMvc2VnbWVudC5wbmcnLAogICAgICAgICAg
ICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL3NlZ21lbnRFbmQucG5nJywKICAgICAgICAg
ICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9zZWdtZW50SG92ZXIucG5nJywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TZXR0aW5ncy5jcHAKaW5kZXggNWZlOWM5ODRmMTUxNGI2NDU1NjY3MDFkZTJjY2ZjZjc1
ZDZmOThmNS4uZmFjMDY5ZWIxOGYxMWE5OWM0Njc4YTM2OGNlZWJjZjMyMWM0ZjJmMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy5jcHAKQEAgLTI1OCwxNSArMjU4LDEyIEBAIFNldHRpbmdzOjpTZXR0
aW5ncyhQYWdlKiBwYWdlKQogICAgICwgbV9zaG91bGREaXNwbGF5Q2FwdGlvbnMoZmFsc2UpCiAg
ICAgLCBtX3Nob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zKGZhbHNlKQogI2VuZGlmCi0gICAg
LCBtX3BlclRpbGVEcmF3aW5nRW5hYmxlZChmYWxzZSkKLSAgICAsIG1fcGFydGlhbFN3YXBFbmFi
bGVkKGZhbHNlKQogICAgICwgbV9zY3JvbGxpbmdDb29yZGluYXRvckVuYWJsZWQoZmFsc2UpCiAg
ICAgLCBtX25vdGlmaWNhdGlvbnNFbmFibGVkKHRydWUpCiAgICAgLCBtX25lZWRzSXNMb2FkaW5n
SW5BUElTZW5zZVF1aXJrKGZhbHNlKQogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgLCBt
X3RvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKGZhbHNlKQogI2VuZGlmCi0gICAgLCBtX3RocmVh
ZGVkQW5pbWF0aW9uRW5hYmxlZChmYWxzZSkKICAgICAsIG1fc2hvdWxkUmVzcGVjdEltYWdlT3Jp
ZW50YXRpb24oZmFsc2UpCiAgICAgLCBtX3dhbnRzQmFsYW5jZWRTZXREZWZlcnNMb2FkaW5nQmVo
YXZpb3IoZmFsc2UpCiAgICAgLCBtX3JlcXVlc3RBbmltYXRpb25GcmFtZUVuYWJsZWQodHJ1ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3MuaAppbmRleCA3ZjFlY2E3ZGJkMTM5NDU4N2RlNzJmMDFmN2E1ZmI3
YzViNWI1Mzk4Li4zNmQ4ZjlhMTU1MTRmZDNiMmMyMzE1ZWFiNzQxOTZmZjViMmJlOTA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy5oCkBAIC01MzksMTIgKzUzOSw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgYm9vbCBzaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9ucygpIGNvbnN0IHsg
cmV0dXJuIG1fc2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnM7IH0KICNlbmRpZgogCi0gICAg
ICAgIHZvaWQgc2V0UGVyVGlsZURyYXdpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3BlclRp
bGVEcmF3aW5nRW5hYmxlZCA9IGVuYWJsZWQ7IH0KLSAgICAgICAgYm9vbCBwZXJUaWxlRHJhd2lu
Z0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3BlclRpbGVEcmF3aW5nRW5hYmxlZDsgfQotCi0g
ICAgICAgIHZvaWQgc2V0UGFydGlhbFN3YXBFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3BhcnRp
YWxTd2FwRW5hYmxlZCA9IGVuYWJsZWQ7IH0KLSAgICAgICAgYm9vbCBwYXJ0aWFsU3dhcEVuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiBtX3BhcnRpYWxTd2FwRW5hYmxlZDsgfQotCiAgICAgICAgIHZv
aWQgc2V0U2Nyb2xsaW5nQ29vcmRpbmF0b3JFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3Njcm9s
bGluZ0Nvb3JkaW5hdG9yRW5hYmxlZCA9IGVuYWJsZWQ7IH0KICAgICAgICAgYm9vbCBzY3JvbGxp
bmdDb29yZGluYXRvckVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGluZ0Nvb3JkaW5h
dG9yRW5hYmxlZDsgfQogCkBAIC01NjAsOSArNTU0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBib29sIGlzVG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX3RvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkOyB9CiAjZW5kaWYKIAotICAgICAgICB2b2lk
IHNldFRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV90aHJlYWRlZEFu
aW1hdGlvbkVuYWJsZWQgPSBlbmFibGVkOyB9Ci0gICAgICAgIGJvb2wgdGhyZWFkZWRBbmltYXRp
b25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV90aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQ7IH0K
LQogICAgICAgICB2b2lkIHNldFNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKGJvb2wgZW5h
YmxlZCkgeyBtX3Nob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uID0gZW5hYmxlZDsgfQogICAg
ICAgICBib29sIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9zaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbjsgfQogCkBAIC03NTAsOSArNzQxLDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1fc2hvdWxkRGlzcGxheUNhcHRpb25z
IDogMTsKICAgICAgICAgYm9vbCBtX3Nob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zIDogMTsK
ICNlbmRpZgotICAgICAgICBib29sIG1fcGVyVGlsZURyYXdpbmdFbmFibGVkIDogMTsKLSAgICAg
ICAgYm9vbCBtX3BhcnRpYWxTd2FwRW5hYmxlZCA6IDE7Ci0KICAgICAgICAgYm9vbCBtX3Njcm9s
bGluZ0Nvb3JkaW5hdG9yRW5hYmxlZCA6IDE7CiAKICAgICAgICAgYm9vbCBtX25vdGlmaWNhdGlv
bnNFbmFibGVkIDogMTsKQEAgLTc2MSw3ICs3NDksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICAgICAgYm9vbCBtX3RvdWNoRXZlbnRFbXVsYXRp
b25FbmFibGVkIDogMTsKICNlbmRpZgotICAgICAgICBib29sIG1fdGhyZWFkZWRBbmltYXRpb25F
bmFibGVkIDogMTsKICAgICAgICAgYm9vbCBtX3Nob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9u
IDogMTsKICAgICAgICAgYm9vbCBtX3dhbnRzQmFsYW5jZWRTZXREZWZlcnNMb2FkaW5nQmVoYXZp
b3IgOiAxOwogICAgICAgICBib29sIG1fcmVxdWVzdEFuaW1hdGlvbkZyYW1lRW5hYmxlZCA6IDE7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
b250ZW50TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggYWU4ZDMyMDhiZmJhYjhk
N2FkZTk4MmE3ZDhhOTNhMmQ4M2VkN2RhZi4uNTAzZGUyZTM5M2YxMGZhOWQwZGQ5OTU5OGY4OWUy
MzU2MjNlZGUzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcApAQCAtNDEs
NiArNDEsNyBAQAogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUg
IlBsYXRmb3JtU3VwcG9ydC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgorI2lu
Y2x1ZGUgImNjL0NDU2V0dGluZ3MuaCIKICNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KICNp
bmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIApAQCAtMTI1LDkgKzEyNiw5IEBAIHZvaWQgQ29u
dGVudExheWVyQ2hyb21pdW06OmNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQoKQogewogICAg
IGlmIChtX3RleHR1cmVVcGRhdGVyKQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKGxheWVyVHJl
ZUhvc3QoKS0+c2V0dGluZ3MoKS5hY2NlbGVyYXRlUGFpbnRpbmcpCisgICAgaWYgKENDU2V0dGlu
Z3M6OmFjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkKCkpCiAgICAgICAgIG1fdGV4dHVyZVVwZGF0
ZXIgPSBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0
ZShDb250ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUobV9kZWxlZ2F0ZSkpOwotICAgIGVsc2UgaWYg
KGxheWVyVHJlZUhvc3QoKS0+c2V0dGluZ3MoKS5wZXJUaWxlUGFpbnRpbmcpCisgICAgZWxzZSBp
ZiAoQ0NTZXR0aW5nczo6cGVyVGlsZVBhaW50aW5nRW5hYmxlZCgpKQogICAgICAgICBtX3RleHR1
cmVVcGRhdGVyID0gQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3Jl
YXRlKENvbnRlbnRMYXllclBhaW50ZXI6OmNyZWF0ZShtX2RlbGVnYXRlKSwgbGF5ZXJUcmVlSG9z
dCgpLT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdNYXBTdWIpOwogICAgIGVsc2UK
ICAgICAgICAgbV90ZXh0dXJlVXBkYXRlciA9IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OmNyZWF0ZShDb250ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUobV9kZWxlZ2F0ZSksIGxheWVy
VHJlZUhvc3QoKS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLnVzaW5nTWFwU3ViKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggZjYxZmQzNWQ1MzAwMTQxZjJiMmZmMjZiODc2NGI4ZjYy
ZTAzZTIzZC4uNzM3OTFmZDYwODllYWJlYWNiYTFjZmE0NDFlMzJiYWVlNGRhZjQ1MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJv
bWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJjYy9DQ0xheWVy
QW5pbWF0aW9uRGVsZWdhdGUuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgogI2luY2x1
ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgorI2luY2x1ZGUgImNjL0NDU2V0dGluZ3MuaCIKICNp
bmNsdWRlICJza2lhL2V4dC9wbGF0Zm9ybV9jYW52YXMuaCIKIAogdXNpbmcgbmFtZXNwYWNlIHN0
ZDsKQEAgLTYwMSwxMSArNjAyLDExIEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0VHJhbnNmb3Jt
RnJvbUFuaW1hdGlvbihjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhCiAKIGJvb2wg
TGF5ZXJDaHJvbWl1bTo6YWRkQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1
ZXMsIGNvbnN0IEludFNpemUmIGJveFNpemUsIGNvbnN0IEFuaW1hdGlvbiogYW5pbWF0aW9uLCBp
bnQgYW5pbWF0aW9uSWQsIGludCBncm91cElkLCBkb3VibGUgdGltZU9mZnNldCkKIHsKLSAgICBp
ZiAoIW1fbGF5ZXJUcmVlSG9zdCB8fCAhbV9sYXllclRyZWVIb3N0LT5zZXR0aW5ncygpLnRocmVh
ZGVkQW5pbWF0aW9uRW5hYmxlZCkKKyAgICBpZiAoIUNDU2V0dGluZ3M6OmFjY2VsZXJhdGVkQW5p
bWF0aW9uRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBib29sIGFkZGVk
QW5pbWF0aW9uID0gbV9sYXllckFuaW1hdGlvbkNvbnRyb2xsZXItPmFkZEFuaW1hdGlvbih2YWx1
ZXMsIGJveFNpemUsIGFuaW1hdGlvbiwgYW5pbWF0aW9uSWQsIGdyb3VwSWQsIHRpbWVPZmZzZXQp
OwotICAgIGlmIChhZGRlZEFuaW1hdGlvbikgeworICAgIGlmIChhZGRlZEFuaW1hdGlvbiAmJiBt
X2xheWVyVHJlZUhvc3QpIHsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5kaWRBZGRBbmltYXRp
b24oKTsKICAgICAgICAgc2V0TmVlZHNDb21taXQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmNwcAppbmRleCA1NWNmNzRmMmY4NDFlMmJmMmVjOWU0NjdjMWY1N2Iw
NzljYWU5ZmVlLi44YTNjY2M0ZWI5ZmM1ZGU0ZDRlZDk2YjNjNTFlMTgyMjQ3ODA5Yjg1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTY0LDYgKzY0LDcgQEAKICNp
bmNsdWRlICJjYy9DQ1JlbmRlclBhc3MuaCIKICNpbmNsdWRlICJjYy9DQ1JlbmRlclBhc3NEcmF3
UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDUmVuZGVyU3VyZmFjZUZpbHRlcnMuaCIKKyNpbmNsdWRl
ICJjYy9DQ1NldHRpbmdzLmgiCiAjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgog
I2luY2x1ZGUgImNjL0NDU29saWRDb2xvckRyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NUZXh0
dXJlRHJhd1F1YWQuaCIKQEAgLTI4Myw3ICsyODQsNyBAQCBib29sIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6aW5pdGlhbGl6ZSgpCiAKICAgICBtX2NvbnRleHQtPnNldENvbnRleHRMb3N0Q2FsbGJh
Y2soQ29udGV4dExvc3RDYWxsYmFja0FkYXB0ZXI6OmNyZWF0ZShtX2NsaWVudCkpOwogCi0gICAg
aWYgKHNldHRpbmdzKCkuYWNjZWxlcmF0ZVBhaW50aW5nICYmIGNvbnRleHRTdXBwb3J0c0FjY2Vs
ZXJhdGVkUGFpbnRpbmcobV9jb250ZXh0LmdldCgpKSkKKyAgICBpZiAoQ0NTZXR0aW5nczo6YWNj
ZWxlcmF0ZWRQYWludGluZ0VuYWJsZWQoKSAmJiBjb250ZXh0U3VwcG9ydHNBY2NlbGVyYXRlZFBh
aW50aW5nKG1fY29udGV4dC5nZXQoKSkpCiAgICAgICAgIG1fY2FwYWJpbGl0aWVzLnVzaW5nQWNj
ZWxlcmF0ZWRQYWludGluZyA9IHRydWU7CiAKICAgICBXZWJDb3JlOjpFeHRlbnNpb25zM0QqIGV4
dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKTsKQEAgLTI5MSw3ICsyOTIsNyBA
QCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZSgpCiAgICAgaWYgKG1fY2Fw
YWJpbGl0aWVzLmNvbnRleHRIYXNDYWNoZWRGcm9udEJ1ZmZlcikKICAgICAgICAgZXh0ZW5zaW9u
cy0+ZW5zdXJlRW5hYmxlZCgiR0xfQ0hST01JVU1fZnJvbnRfYnVmZmVyX2NhY2hlZCIpOwogCi0g
ICAgbV9jYXBhYmlsaXRpZXMudXNpbmdQYXJ0aWFsU3dhcCA9IHNldHRpbmdzKCkucGFydGlhbFN3
YXBFbmFibGVkICYmIGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9DSFJPTUlVTV9wb3N0X3N1Yl9i
dWZmZXIiKTsKKyAgICBtX2NhcGFiaWxpdGllcy51c2luZ1BhcnRpYWxTd2FwID0gQ0NTZXR0aW5n
czo6cGFydGlhbFN3YXBFbmFibGVkKCkgJiYgZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0NIUk9N
SVVNX3Bvc3Rfc3ViX2J1ZmZlciIpOwogICAgIGlmIChtX2NhcGFiaWxpdGllcy51c2luZ1BhcnRp
YWxTd2FwKQogICAgICAgICBleHRlbnNpb25zLT5lbnN1cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9w
b3N0X3N1Yl9idWZmZXIiKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXgg
MTJlMzcxN2NhNmRmZjFjMzhhYzk0ZGJiMTdlZTZjNjdmZDBjZDUxZS4uMDk0OGQ5OTQ0NDQ2YWUy
MTg5ZTQ5NTA5Njg1ZDhkMDQyMjFkZDAwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0u
Y3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogCiAjaW5jbHVk
ZSAiY2MvQ0NMYXllckltcGwuaCIKKyNpbmNsdWRlICJjYy9DQ1NldHRpbmdzLmgiCiAjaW5jbHVk
ZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgImNjL0NDVGlsZWRMYXllckltcGwu
aCIKIApAQCAtMTExLDkgKzExMiw4IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVU
aWxlU2l6ZUFuZFRpbGluZ09wdGlvbigpCiB7CiAgICAgQVNTRVJUKGxheWVyVHJlZUhvc3QoKSk7
CiAKLSAgICBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncyA9IGxheWVyVHJlZUhvc3QoKS0+c2V0
dGluZ3MoKTsKLSAgICBjb25zdCBJbnRTaXplJiBkZWZhdWx0VGlsZVNpemUgPSBzZXR0aW5ncy5k
ZWZhdWx0VGlsZVNpemU7Ci0gICAgY29uc3QgSW50U2l6ZSYgbWF4VW50aWxlZExheWVyU2l6ZSA9
IHNldHRpbmdzLm1heFVudGlsZWRMYXllclNpemU7CisgICAgY29uc3QgSW50U2l6ZSYgZGVmYXVs
dFRpbGVTaXplID0gQ0NTZXR0aW5nczo6ZGVmYXVsdFRpbGVTaXplKCk7CisgICAgY29uc3QgSW50
U2l6ZSYgbWF4VW50aWxlZExheWVyU2l6ZSA9IENDU2V0dGluZ3M6Om1heFVudGlsZWRMYXllclNp
emUoKTsKICAgICBpbnQgbGF5ZXJXaWR0aCA9IGNvbnRlbnRCb3VuZHMoKS53aWR0aCgpOwogICAg
IGludCBsYXllckhlaWdodCA9IGNvbnRlbnRCb3VuZHMoKS5oZWlnaHQoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z1Jl
Y3RIaXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDRGVidWdSZWN0SGlzdG9yeS5jcHAKaW5kZXggM2M4OGRjYzQwMDNhNjY5MTg5M2Y3NWI1
NDVmZjBkNjQ5NWQ4ODgxMS4uMTdkNTk0NmVjMmVjY2RlYmFjYmFmMDM0OGZmODEwNjJmOTg3YTQ1
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3RvcnkuY3BwCkBAIC0zOCwxMiArMzgs
MTIgQEAgQ0NEZWJ1Z1JlY3RIaXN0b3J5OjpDQ0RlYnVnUmVjdEhpc3RvcnkoKQogewogfQogCi1i
b29sIENDRGVidWdSZWN0SGlzdG9yeTo6ZW5hYmxlZChjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5n
cykKK2Jvb2wgQ0NEZWJ1Z1JlY3RIaXN0b3J5OjplbmFibGVkKGNvbnN0IENDTGF5ZXJUcmVlU2V0
dGluZ3MmIHNldHRpbmdzKQogewogICAgIHJldHVybiBzZXR0aW5ncy5zaG93UGFpbnRSZWN0cyB8
fCBzZXR0aW5ncy5zaG93UHJvcGVydHlDaGFuZ2VkUmVjdHMgfHwgc2V0dGluZ3Muc2hvd1N1cmZh
Y2VEYW1hZ2VSZWN0czsKIH0KIAotdm9pZCBDQ0RlYnVnUmVjdEhpc3Rvcnk6OnNhdmVEZWJ1Z1Jl
Y3RzRm9yQ3VycmVudEZyYW1lKENDTGF5ZXJJbXBsKiByb290TGF5ZXIsIGNvbnN0IFZlY3RvcjxD
Q0xheWVySW1wbCo+JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBjb25zdCBDQ1NldHRpbmdzJiBz
ZXR0aW5ncykKK3ZvaWQgQ0NEZWJ1Z1JlY3RIaXN0b3J5OjpzYXZlRGVidWdSZWN0c0ZvckN1cnJl
bnRGcmFtZShDQ0xheWVySW1wbCogcm9vdExheWVyLCBjb25zdCBWZWN0b3I8Q0NMYXllckltcGwq
PiYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0
dGluZ3MpCiB7CiAgICAgLy8gRm9yIG5vdywgY2xlYXIgYWxsIHJlY3RzIGZyb20gcHJldmlvdXMg
ZnJhbWVzLiBJbiB0aGUgZnV0dXJlIHdlIG1heSB3YW50IHRvIHN0b3JlCiAgICAgLy8gYWxsIGRl
YnVnIHJlY3RzIGZvciBhIGhpc3Rvcnkgb2YgbWFueSBmcmFtZXMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3Rv
cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVi
dWdSZWN0SGlzdG9yeS5oCmluZGV4IDkzZGExMDdhZGU0ZmI3NzQ5YWIyZDVjZTc0NzVhMjI2Y2Ji
MGUxNDQuLmJiM2NkYjc5ZDU3MTg0N2IyNzZlOTdjODBmZDY4YzFhYzJjNDhkNmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdS
ZWN0SGlzdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDRGVidWdSZWN0SGlzdG9yeS5oCkBAIC0zNSw3ICszNSw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIENDTGF5ZXJJbXBsOwotc3RydWN0IENDU2V0dGluZ3M7CitzdHJ1
Y3QgQ0NMYXllclRyZWVTZXR0aW5nczsKIAogLy8gVGhlcmUgYXJlIGN1cnJlbnRseSB0aHJlZSB0
eXBlcyBvZiBkZWJ1ZyByZWN0czoKIC8vCkBAIC02Myw3ICs2Myw3IEBAIHN0cnVjdCBDQ0RlYnVn
UmVjdCB7CiAKIC8vIFRoaXMgY2xhc3MgbWFpbnRhaW5zIGEgaGlzdG9yeSBvZiByZWN0cyBvZiB2
YXJpb3VzIHR5cGVzIHRoYXQgY2FuIGJlIHVzZWQKIC8vIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMu
IFRoZSBvdmVyaGVhZCBvZiBjb2xsZWN0aW5nIHJlY3RzIGlzIHBlcmZvcm1lZCBvbmx5IGlmCi0v
LyB0aGUgYXBwcm9wcmlhdGUgQ0NTZXR0aW5ncyBhcmUgZW5hYmxlZC4KKy8vIHRoZSBhcHByb3By
aWF0ZSBDQ0xheWVyVHJlZVNldHRpbmdzIGFyZSBlbmFibGVkLgogY2xhc3MgQ0NEZWJ1Z1JlY3RI
aXN0b3J5IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ0RlYnVnUmVjdEhpc3RvcnkpOwog
cHVibGljOgpAQCAtNzIsMTAgKzcyLDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBDQ0RlYnVnUmVjdEhpc3RvcnkoKSk7CiAgICAgfQogCi0gICAgYm9vbCBlbmFibGVk
KGNvbnN0IENDU2V0dGluZ3MmKTsKKyAgICBib29sIGVuYWJsZWQoY29uc3QgQ0NMYXllclRyZWVT
ZXR0aW5ncyYpOwogCiAgICAgLy8gTm90ZTogU2F2aW5nIGRlYnVnIHJlY3RzIG11c3QgaGFwcGVu
IGJlZm9yZSBsYXllcnMnIGNoYW5nZSB0cmFja2luZyBpcyByZXNldC4KLSAgICB2b2lkIHNhdmVE
ZWJ1Z1JlY3RzRm9yQ3VycmVudEZyYW1lKENDTGF5ZXJJbXBsKiByb290TGF5ZXIsIGNvbnN0IFZl
Y3RvcjxDQ0xheWVySW1wbCo+JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBjb25zdCBDQ1NldHRp
bmdzJik7CisgICAgdm9pZCBzYXZlRGVidWdSZWN0c0ZvckN1cnJlbnRGcmFtZShDQ0xheWVySW1w
bCogcm9vdExheWVyLCBjb25zdCBWZWN0b3I8Q0NMYXllckltcGwqPiYgcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdCwgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYpOwogCiAgICAgY29uc3QgVmVjdG9y
PENDRGVidWdSZWN0PiYgZGVidWdSZWN0cygpIHsgcmV0dXJuIG1fZGVidWdSZWN0czsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0hlYWRzVXBEaXNwbGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCmluZGV4IDM0ODVhNDhhNGFhNDE2OGVlMGQw
NDFiZTdkMTAzYWJiZWNhMjU5MzUuLjFiYmMwNDZlN2E1ODIxYWIwZTAzOTk0NmI2MGM4MWEwZWNj
OWEyN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCkBAIC01MiwxNyArNTIs
MTcgQEAgdm9pZCBDQ0hlYWRzVXBEaXNwbGF5OjpzZXRGb250QXRsYXMoUGFzc093blB0cjxDQ0Zv
bnRBdGxhcz4gZm9udEF0bGFzKQogICAgIG1fZm9udEF0bGFzID0gZm9udEF0bGFzOwogfQogCi1i
b29sIENDSGVhZHNVcERpc3BsYXk6OmVuYWJsZWQoY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3Mp
IGNvbnN0Citib29sIENDSGVhZHNVcERpc3BsYXk6OmVuYWJsZWQoY29uc3QgQ0NMYXllclRyZWVT
ZXR0aW5ncyYgc2V0dGluZ3MpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHNob3dQbGF0Zm9ybUxheWVy
VHJlZShzZXR0aW5ncykgfHwgc2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIgfHwgc2hvd0RlYnVnUmVj
dHMoc2V0dGluZ3MpOwogfQogCi1ib29sIENDSGVhZHNVcERpc3BsYXk6OnNob3dQbGF0Zm9ybUxh
eWVyVHJlZShjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncykgY29uc3QKK2Jvb2wgQ0NIZWFkc1Vw
RGlzcGxheTo6c2hvd1BsYXRmb3JtTGF5ZXJUcmVlKGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3Mm
IHNldHRpbmdzKSBjb25zdAogewogICAgIHJldHVybiBzZXR0aW5ncy5zaG93UGxhdGZvcm1MYXll
clRyZWU7CiB9CiAKLWJvb2wgQ0NIZWFkc1VwRGlzcGxheTo6c2hvd0RlYnVnUmVjdHMoY29uc3Qg
Q0NTZXR0aW5ncyYgc2V0dGluZ3MpIGNvbnN0Citib29sIENDSGVhZHNVcERpc3BsYXk6OnNob3dE
ZWJ1Z1JlY3RzKGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzKSBjb25zdAogewog
ICAgIHJldHVybiBzZXR0aW5ncy5zaG93UGFpbnRSZWN0cyB8fCBzZXR0aW5ncy5zaG93UHJvcGVy
dHlDaGFuZ2VkUmVjdHMgfHwgc2V0dGluZ3Muc2hvd1N1cmZhY2VEYW1hZ2VSZWN0czsKIH0KQEAg
LTc4LDcgKzc4LDcgQEAgdm9pZCBDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3KENDTGF5ZXJUcmVlSG9z
dEltcGwqIGxheWVyVHJlZUhvc3RJbXBsKQogICAgIGlmICghbV9odWRUZXh0dXJlKQogICAgICAg
ICBtX2h1ZFRleHR1cmUgPSBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKGxheWVyUmVuZGVyZXItPmlt
cGxUZXh0dXJlTWFuYWdlcigpKTsKIAotICAgIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzID0g
bGF5ZXJUcmVlSG9zdEltcGwtPnNldHRpbmdzKCk7CisgICAgY29uc3QgQ0NMYXllclRyZWVTZXR0
aW5ncyYgc2V0dGluZ3MgPSBsYXllclRyZWVIb3N0SW1wbC0+c2V0dGluZ3MoKTsKICAgICAvLyBV
c2UgYSBmdWxsc2NyZWVuIHRleHR1cmUgb25seSBpZiB3ZSBuZWVkIHRvLi4uCiAgICAgSW50U2l6
ZSBodWRTaXplOwogICAgIGlmIChzaG93UGxhdGZvcm1MYXllclRyZWUoc2V0dGluZ3MpIHx8IHNo
b3dEZWJ1Z1JlY3RzKHNldHRpbmdzKSkgewpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgQ0NIZWFk
c1VwRGlzcGxheTo6ZHJhdyhDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCkK
ICAgICBtX2h1ZFRleHR1cmUtPnVucmVzZXJ2ZSgpOwogfQogCi12b2lkIENDSGVhZHNVcERpc3Bs
YXk6OmRyYXdIdWRDb250ZW50cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIENDTGF5ZXJUcmVl
SG9zdEltcGwqIGxheWVyVHJlZUhvc3RJbXBsLCBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncywg
Y29uc3QgSW50U2l6ZSYgaHVkU2l6ZSkKK3ZvaWQgQ0NIZWFkc1VwRGlzcGxheTo6ZHJhd0h1ZENv
bnRlbnRzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5
ZXJUcmVlSG9zdEltcGwsIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzLCBjb25z
dCBJbnRTaXplJiBodWRTaXplKQogewogICAgIGlmIChzaG93UGxhdGZvcm1MYXllclRyZWUoc2V0
dGluZ3MpKSB7CiAgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcigwLCAwLCAwLCAx
OTIpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKQEAgLTIyMSw3ICsyMjEsNyBAQCB2b2lkIENDSGVh
ZHNVcERpc3BsYXk6OmRyYXdGUFNDb3VudGVyVGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IENDRnJhbWVSYXRlQwogICAgICAgICBtX2ZvbnRBdGxhcy0+ZHJhd1RleHQoY29udGV4dCwgU3Ry
aW5nOjpmb3JtYXQoIkZQUzogJTQuMWYgKy8tICUzLjFmIiwgYXZlcmFnZUZQUywgc3RkRGV2aWF0
aW9uKSwgSW50UG9pbnQoMTAsIGhlaWdodCAvIDMpLCBJbnRTaXplKHdpZHRoLCBoZWlnaHQpKTsK
IH0KIAotdm9pZCBDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3RGVidWdSZWN0cyhHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIENDRGVidWdSZWN0SGlzdG9yeSogZGVidWdSZWN0SGlzdG9yeSwgY29uc3Qg
Q0NTZXR0aW5ncyYgc2V0dGluZ3MpCit2b2lkIENDSGVhZHNVcERpc3BsYXk6OmRyYXdEZWJ1Z1Jl
Y3RzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgQ0NEZWJ1Z1JlY3RIaXN0b3J5KiBkZWJ1Z1Jl
Y3RIaXN0b3J5LCBjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncykKIHsKICAgICBj
b25zdCBWZWN0b3I8Q0NEZWJ1Z1JlY3Q+JiBkZWJ1Z1JlY3RzID0gZGVidWdSZWN0SGlzdG9yeS0+
ZGVidWdSZWN0cygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGVidWdSZWN0cy5zaXpl
KCk7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5oCmluZGV4IDQ4MzFlNWRkMThj
M2UxMTIxYTE5MmI5OWE3NGFmMWJhY2NkMmNmYWQuLmUxY2U5M2E2YzNlOTBjYjM0NDVlYjk3ZDJm
NjBlZTA0NDBmNGM1OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmgKQEAgLTM2LDcg
KzM2LDcgQEAgY2xhc3MgQ0NGcmFtZVJhdGVDb3VudGVyOwogY2xhc3MgQ0NMYXllclRyZWVIb3N0
SW1wbDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIE1hbmFnZWRUZXh0dXJlOwotc3Ry
dWN0IENDU2V0dGluZ3M7CitzdHJ1Y3QgQ0NMYXllclRyZWVTZXR0aW5nczsKIAogLy8gQ2xhc3Mg
dGhhdCBoYW5kbGVzIGRyYXdpbmcgb2YgY29tcG9zaXRlZCByZW5kZXIgbGF5ZXJzIHVzaW5nIEdM
LgogY2xhc3MgQ0NIZWFkc1VwRGlzcGxheSB7CkBAIC01MSwxOSArNTEsMTkgQEAgcHVibGljOgog
CiAgICAgdm9pZCBzZXRGb250QXRsYXMoUGFzc093blB0cjxDQ0ZvbnRBdGxhcz4pOwogCi0gICAg
Ym9vbCBlbmFibGVkKGNvbnN0IENDU2V0dGluZ3MmKSBjb25zdDsKKyAgICBib29sIGVuYWJsZWQo
Y29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYpIGNvbnN0OwogICAgIHZvaWQgZHJhdyhDQ0xheWVy
VHJlZUhvc3RJbXBsKik7CiAKIHByaXZhdGU6CiAgICAgQ0NIZWFkc1VwRGlzcGxheSgpIHsgfTsK
IAotICAgIHZvaWQgZHJhd0h1ZENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCosIENDTGF5ZXJUcmVl
SG9zdEltcGwqLCBjb25zdCBDQ1NldHRpbmdzJiwgY29uc3QgSW50U2l6ZSYgaHVkU2l6ZSk7Cisg
ICAgdm9pZCBkcmF3SHVkQ29udGVudHMoR3JhcGhpY3NDb250ZXh0KiwgQ0NMYXllclRyZWVIb3N0
SW1wbCosIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmLCBjb25zdCBJbnRTaXplJiBodWRTaXpl
KTsKICAgICB2b2lkIGRyYXdGUFNDb3VudGVyKEdyYXBoaWNzQ29udGV4dCosIENDRnJhbWVSYXRl
Q291bnRlciosIGludCB0b3AsIGludCBoZWlnaHQpOwogICAgIHZvaWQgZHJhd0ZQU0NvdW50ZXJU
ZXh0KEdyYXBoaWNzQ29udGV4dCosIENDRnJhbWVSYXRlQ291bnRlciosIGludCB0b3AsIGludCB3
aWR0aCwgaW50IGhlaWdodCk7Ci0gICAgdm9pZCBkcmF3RGVidWdSZWN0cyhHcmFwaGljc0NvbnRl
eHQqLCBDQ0RlYnVnUmVjdEhpc3RvcnkqLCBjb25zdCBDQ1NldHRpbmdzJik7CisgICAgdm9pZCBk
cmF3RGVidWdSZWN0cyhHcmFwaGljc0NvbnRleHQqLCBDQ0RlYnVnUmVjdEhpc3RvcnkqLCBjb25z
dCBDQ0xheWVyVHJlZVNldHRpbmdzJik7CiAKLSAgICBib29sIHNob3dQbGF0Zm9ybUxheWVyVHJl
ZShjb25zdCBDQ1NldHRpbmdzJikgY29uc3Q7Ci0gICAgYm9vbCBzaG93RGVidWdSZWN0cyhjb25z
dCBDQ1NldHRpbmdzJikgY29uc3Q7CisgICAgYm9vbCBzaG93UGxhdGZvcm1MYXllclRyZWUoY29u
c3QgQ0NMYXllclRyZWVTZXR0aW5ncyYpIGNvbnN0OworICAgIGJvb2wgc2hvd0RlYnVnUmVjdHMo
Y29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYpIGNvbnN0OwogCiAgICAgT3duUHRyPE1hbmFnZWRU
ZXh0dXJlPiBtX2h1ZFRleHR1cmU7CiAgICAgT3duUHRyPENDRm9udEF0bGFzPiBtX2ZvbnRBdGxh
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IGZhMGViNjRjMzY1YjE4ZGUw
ZDk2OWZjODNlOWI0ODM1YTM4NjkzNGEuLmFiZTdlZGVkYTNiMzA3MGM3YTgyOTgxYWZjOWIzMzMx
MTUyZmFmOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtMzgsNiArMzgs
NyBAQAogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oIgogI2luY2x1ZGUgImNj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKICNpbmNsdWRlICJjYy9DQ09jY2x1c2lvblRyYWNrZXIu
aCIKKyNpbmNsdWRlICJjYy9DQ1NldHRpbmdzLmgiCiAjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5oIgogI2luY2x1ZGUgImNjL0NDVGhyZWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJl
YWRQcm94eS5oIgpAQCAtNTgsNyArNTksNyBAQCBib29sIENDTGF5ZXJUcmVlSG9zdDo6YW55TGF5
ZXJUcmVlSG9zdEluc3RhbmNlRXhpc3RzKCkKICAgICByZXR1cm4gbnVtTGF5ZXJUcmVlSW5zdGFu
Y2VzID4gMDsKIH0KIAotUGFzc093blB0cjxDQ0xheWVyVHJlZUhvc3Q+IENDTGF5ZXJUcmVlSG9z
dDo6Y3JlYXRlKENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50LCBjb25zdCBDQ1NldHRpbmdz
JiBzZXR0aW5ncykKK1Bhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0PiBDQ0xheWVyVHJlZUhvc3Q6
OmNyZWF0ZShDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwgY29uc3QgQ0NMYXllclRyZWVT
ZXR0aW5ncyYgc2V0dGluZ3MpCiB7CiAgICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdD4gbGF5ZXJU
cmVlSG9zdCA9IGFkb3B0UHRyKG5ldyBDQ0xheWVyVHJlZUhvc3QoY2xpZW50LCBzZXR0aW5ncykp
OwogICAgIGlmICghbGF5ZXJUcmVlSG9zdC0+aW5pdGlhbGl6ZSgpKQpAQCAtNjYsNyArNjcsNyBA
QCBQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdD4gQ0NMYXllclRyZWVIb3N0OjpjcmVhdGUoQ0NM
YXllclRyZWVIb3N0Q2xpZW50KiBjbGllbgogICAgIHJldHVybiBsYXllclRyZWVIb3N0LnJlbGVh
c2UoKTsKIH0KIAotQ0NMYXllclRyZWVIb3N0OjpDQ0xheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVI
b3N0Q2xpZW50KiBjbGllbnQsIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKQorQ0NMYXllclRy
ZWVIb3N0OjpDQ0xheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQsIGNv
bnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzKQogICAgIDogbV9jb21wb3NpdG9ySWRl
bnRpZmllcigtMSkKICAgICAsIG1fYW5pbWF0aW5nKGZhbHNlKQogICAgICwgbV9uZWVkc0FuaW1h
dGVMYXllcnMoZmFsc2UpCkBAIC0xNDEsMjUgKzE0MiwyMiBAQCB2b2lkIENDTGF5ZXJUcmVlSG9z
dDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgLy8gVXBkYXRlIG1fc2V0dGluZ3MgYmFzZWQgb24gY2FwYWJpbGl0aWVzIHRoYXQgd2UgZ290
IGJhY2sgZnJvbSB0aGUgcmVuZGVyZXIuCi0gICAgbV9zZXR0aW5ncy5hY2NlbGVyYXRlUGFpbnRp
bmcgPSBtX3Byb3h5LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdBY2NlbGVyYXRl
ZFBhaW50aW5nOwotCi0gICAgLy8gVXBkYXRlIG1fc2V0dGluZ3MgYmFzZWQgb24gcGFydGlhbCB1
cGRhdGUgY2FwYWJpbGl0eS4KLSAgICBtX3NldHRpbmdzLm1heFBhcnRpYWxUZXh0dXJlVXBkYXRl
cyA9IG1pbihtX3NldHRpbmdzLm1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcywgbV9wcm94eS0+bWF4
UGFydGlhbFRleHR1cmVVcGRhdGVzKCkpOwotCiAgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2Vy
ID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSgwLCAwLCBtX3Byb3h5LT5sYXllclJlbmRlcmVyQ2Fw
YWJpbGl0aWVzKCkubWF4VGV4dHVyZVNpemUpOwogCisgICAgLy8gVXBkYXRlIHNldHRpbmdzIGJh
c2VkIG9uIGNhcGFiaWxpdGllcyB0aGF0IHdlIGdvdCBiYWNrIGZyb20gdGhlIHJlbmRlcmVyLgor
ICAgIENDU2V0dGluZ3M6OnNldEFjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkKG1fcHJveHktPmxh
eWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS51c2luZ0FjY2VsZXJhdGVkUGFpbnRpbmcpOworICAg
IENDU2V0dGluZ3M6OnNldE1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcyhtaW4oQ0NTZXR0aW5nczo6
bWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKCksIG1fcHJveHktPm1heFBhcnRpYWxUZXh0dXJlVXBk
YXRlcygpKSk7CisgICAgQ0NTZXR0aW5nczo6c2V0RGVmYXVsdFRpbGVTaXplKEludFNpemUobWlu
KENDU2V0dGluZ3M6OmRlZmF1bHRUaWxlU2l6ZSgpLndpZHRoKCksIG1fcHJveHktPmxheWVyUmVu
ZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWluKENDU2V0dGluZ3M6OmRlZmF1bHRUaWxlU2l6ZSgp
LmhlaWdodCgpLCBtX3Byb3h5LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4VGV4dHVy
ZVNpemUpKSk7CisgICAgQ0NTZXR0aW5nczo6c2V0TWF4VW50aWxlZExheWVyU2l6ZShJbnRTaXpl
KG1pbihDQ1NldHRpbmdzOjptYXhVbnRpbGVkTGF5ZXJTaXplKCkud2lkdGgoKSwgbV9wcm94eS0+
bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLm1heFRleHR1cmVTaXplKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluKENDU2V0dGluZ3M6Om1heFVu
dGlsZWRMYXllclNpemUoKS5oZWlnaHQoKSwgbV9wcm94eS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxp
dGllcygpLm1heFRleHR1cmVTaXplKSkpOworCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgdGhlIHNh
bWUgYXMgc2V0Q29udGVudHNNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcywgYnV0CiAgICAgLy8g
d2UncmUgaW4gdGhlIG1pZGRsZSBvZiBhIGNvbW1pdCBoZXJlIGFuZCBkb24ndCB3YW50IHRvIGZv
cmNlIGFub3RoZXIuCiAgICAgbV9tZW1vcnlBbGxvY2F0aW9uQnl0ZXMgPSBUZXh0dXJlTWFuYWdl
cjo6aGlnaExpbWl0Qnl0ZXMoZGV2aWNlVmlld3BvcnRTaXplKCkpOwogICAgIG1fbWVtb3J5QWxs
b2NhdGlvbklzRm9yRGlzcGxheSA9IHRydWU7CiAKICAgICBtX2xheWVyUmVuZGVyZXJJbml0aWFs
aXplZCA9IHRydWU7Ci0KLSAgICBtX3NldHRpbmdzLmRlZmF1bHRUaWxlU2l6ZSA9IEludFNpemUo
bWluKG1fc2V0dGluZ3MuZGVmYXVsdFRpbGVTaXplLndpZHRoKCksIG1fcHJveHktPmxheWVyUmVu
ZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1pbihtX3NldHRpbmdzLmRlZmF1bHRUaWxlU2l6ZS5oZWln
aHQoKSwgbV9wcm94eS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLm1heFRleHR1cmVTaXpl
KSk7Ci0gICAgbV9zZXR0aW5ncy5tYXhVbnRpbGVkTGF5ZXJTaXplID0gSW50U2l6ZShtaW4obV9z
ZXR0aW5ncy5tYXhVbnRpbGVkTGF5ZXJTaXplLndpZHRoKCksIG1fcHJveHktPmxheWVyUmVuZGVy
ZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtaW4obV9zZXR0aW5ncy5tYXhVbnRpbGVkTGF5ZXJTaXpl
LmhlaWdodCgpLCBtX3Byb3h5LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4VGV4dHVy
ZVNpemUpKTsKIH0KIAogQ0NMYXllclRyZWVIb3N0OjpSZWNyZWF0ZVJlc3VsdCBDQ0xheWVyVHJl
ZUhvc3Q6OnJlY3JlYXRlQ29udGV4dCgpCkBAIC02NjQsMTIgKzY2MiwxMiBAQCB2b2lkIENDTGF5
ZXJUcmVlSG9zdDo6c3RvcFJhdGVMaW1pdGVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQog
CiBib29sIENDTGF5ZXJUcmVlSG9zdDo6YnVmZmVyZWRVcGRhdGVzKCkKIHsKLSAgICByZXR1cm4g
bV9zZXR0aW5ncy5tYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMgIT0gbnVtZXJpY19saW1pdHM8c2l6
ZV90Pjo6bWF4KCk7CisgICAgcmV0dXJuIENDU2V0dGluZ3M6Om1heFBhcnRpYWxUZXh0dXJlVXBk
YXRlcygpICE9IG51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpOwogfQogCiBib29sIENDTGF5
ZXJUcmVlSG9zdDo6cmVxdWVzdFBhcnRpYWxUZXh0dXJlVXBkYXRlKCkKIHsKLSAgICBpZiAobV9w
YXJ0aWFsVGV4dHVyZVVwZGF0ZVJlcXVlc3RzID49IG1fc2V0dGluZ3MubWF4UGFydGlhbFRleHR1
cmVVcGRhdGVzKQorICAgIGlmIChtX3BhcnRpYWxUZXh0dXJlVXBkYXRlUmVxdWVzdHMgPj0gQ0NT
ZXR0aW5nczo6bWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIG1fcGFydGlhbFRleHR1cmVVcGRhdGVSZXF1ZXN0cysrOwpAQCAtNjgzLDcgKzY4
MSw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpkZWxldGVUZXh0dXJlQWZ0ZXJDb21taXQoUGFz
c093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyCiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojph
bmltYXRlTGF5ZXJzKGRvdWJsZSBtb25vdG9uaWNUaW1lKQogewotICAgIGlmICghbV9zZXR0aW5n
cy50aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQgfHwgIW1fbmVlZHNBbmltYXRlTGF5ZXJzKQorICAg
IGlmICghQ0NTZXR0aW5nczo6YWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkKCkgfHwgIW1fbmVl
ZHNBbmltYXRlTGF5ZXJzKQogICAgICAgICByZXR1cm47CiAKICAgICBUUkFDRV9FVkVOVCgiQ0NM
YXllclRyZWVIb3N0SW1wbDo6YW5pbWF0ZUxheWVycyIsIHRoaXMsIDApOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3QuaAppbmRleCA0MzRhZWMyNzQyMjAxYzVmNmQ1YjQ5Y2M1MzdlMTgwMzljMmM4
NjRkLi5hZDVlMTZjMTNmNTEwOTM0YzhkYWFkNzI4YmZkYTRkOWQwNDExZTNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtNzQsNDAgKzc0LDI2IEBAIHByb3RlY3RlZDoKICAgICB2
aXJ0dWFsIH5DQ0xheWVyVHJlZUhvc3RDbGllbnQoKSB7IH0KIH07CiAKLXN0cnVjdCBDQ1NldHRp
bmdzIHsKLSAgICBDQ1NldHRpbmdzKCkKLSAgICAgICAgICAgIDogYWNjZWxlcmF0ZVBhaW50aW5n
KGZhbHNlKQotICAgICAgICAgICAgLCBmb3JjZVNvZnR3YXJlQ29tcG9zaXRpbmcoZmFsc2UpCitz
dHJ1Y3QgQ0NMYXllclRyZWVTZXR0aW5ncyB7CisgICAgQ0NMYXllclRyZWVTZXR0aW5ncygpCisg
ICAgICAgICAgICA6IGZvcmNlU29mdHdhcmVDb21wb3NpdGluZyhmYWxzZSkKICAgICAgICAgICAg
ICwgc2hvd0ZQU0NvdW50ZXIoZmFsc2UpCiAgICAgICAgICAgICAsIHNob3dQbGF0Zm9ybUxheWVy
VHJlZShmYWxzZSkKICAgICAgICAgICAgICwgc2hvd1BhaW50UmVjdHMoZmFsc2UpCiAgICAgICAg
ICAgICAsIHNob3dQcm9wZXJ0eUNoYW5nZWRSZWN0cyhmYWxzZSkKICAgICAgICAgICAgICwgc2hv
d1N1cmZhY2VEYW1hZ2VSZWN0cyhmYWxzZSkKLSAgICAgICAgICAgICwgcmVmcmVzaFJhdGUoMCkK
LSAgICAgICAgICAgICwgcGVyVGlsZVBhaW50aW5nKGZhbHNlKQotICAgICAgICAgICAgLCBwYXJ0
aWFsU3dhcEVuYWJsZWQoZmFsc2UpCi0gICAgICAgICAgICAsIHRocmVhZGVkQW5pbWF0aW9uRW5h
YmxlZChmYWxzZSkKLSAgICAgICAgICAgICwgbWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKHN0ZDo6
bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpCi0gICAgICAgICAgICAsIGRlZmF1bHRUaWxl
U2l6ZShJbnRTaXplKDI1NiwgMjU2KSkKLSAgICAgICAgICAgICwgbWF4VW50aWxlZExheWVyU2l6
ZShJbnRTaXplKDUxMiwgNTEyKSkKICAgICAgICAgICAgICwgZGV2aWNlU2NhbGVGYWN0b3IoMSkK
KyAgICAgICAgICAgICwgcmVmcmVzaFJhdGUoMCkKICAgICB7IH0KIAotICAgIGJvb2wgYWNjZWxl
cmF0ZVBhaW50aW5nOwogICAgIGJvb2wgZm9yY2VTb2Z0d2FyZUNvbXBvc2l0aW5nOwogICAgIGJv
b2wgc2hvd0ZQU0NvdW50ZXI7CiAgICAgYm9vbCBzaG93UGxhdGZvcm1MYXllclRyZWU7CiAgICAg
Ym9vbCBzaG93UGFpbnRSZWN0czsKICAgICBib29sIHNob3dQcm9wZXJ0eUNoYW5nZWRSZWN0czsK
ICAgICBib29sIHNob3dTdXJmYWNlRGFtYWdlUmVjdHM7Ci0gICAgZG91YmxlIHJlZnJlc2hSYXRl
OwotICAgIGJvb2wgcGVyVGlsZVBhaW50aW5nOwotICAgIGJvb2wgcGFydGlhbFN3YXBFbmFibGVk
OwotICAgIGJvb2wgdGhyZWFkZWRBbmltYXRpb25FbmFibGVkOwotICAgIHNpemVfdCBtYXhQYXJ0
aWFsVGV4dHVyZVVwZGF0ZXM7Ci0gICAgSW50U2l6ZSBkZWZhdWx0VGlsZVNpemU7Ci0gICAgSW50
U2l6ZSBtYXhVbnRpbGVkTGF5ZXJTaXplOwogICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yOwor
ICAgIGRvdWJsZSByZWZyZXNoUmF0ZTsKIH07CiAKIC8vIFByb3ZpZGVzIGluZm9ybWF0aW9uIG9u
IGFuIEltcGwncyByZW5kZXJpbmcgY2FwYWJpbGl0aWVzIGJhY2sgdG8gdGhlIENDTGF5ZXJUcmVl
SG9zdApAQCAtMTQzLDcgKzEyOSw3IEBAIHN0cnVjdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVz
IHsKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdCA6IHB1YmxpYyBSYXRlTGltaXRlckNsaWVudCB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NMYXllclRyZWVIb3N0KTsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc093blB0cjxDQ0xheWVyVHJlZUhvc3Q+IGNyZWF0ZShDQ0xheWVyVHJlZUhvc3RD
bGllbnQqLCBjb25zdCBDQ1NldHRpbmdzJik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NMYXll
clRyZWVIb3N0PiBjcmVhdGUoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiwgY29uc3QgQ0NMYXllclRy
ZWVTZXR0aW5ncyYpOwogICAgIHZpcnR1YWwgfkNDTGF5ZXJUcmVlSG9zdCgpOwogCiAgICAgdm9p
ZCBzZXRTdXJmYWNlUmVhZHkoKTsKQEAgLTIxOSw3ICsyMDUsNyBAQCBwdWJsaWM6CiAgICAgY29u
c3QgTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9yb290TGF5ZXIu
Z2V0KCk7IH0KICAgICB2b2lkIHNldFJvb3RMYXllcihQYXNzUmVmUHRyPExheWVyQ2hyb21pdW0+
KTsKIAotICAgIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9z
ZXR0aW5nczsgfQorICAgIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzKCkgY29u
c3QgeyByZXR1cm4gbV9zZXR0aW5nczsgfQogCiAgICAgdm9pZCBzZXRWaWV3cG9ydFNpemUoY29u
c3QgSW50U2l6ZSYpOwogCkBAIC0yNTEsNyArMjM3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVs
ZXRlVGV4dHVyZUFmdGVyQ29tbWl0KFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKIAogcHJv
dGVjdGVkOgotICAgIENDTGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3RDbGllbnQqLCBjb25z
dCBDQ1NldHRpbmdzJik7CisgICAgQ0NMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdENsaWVu
dCosIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmKTsKICAgICBib29sIGluaXRpYWxpemUoKTsK
IAogcHJpdmF0ZToKQEAgLTI5Miw3ICsyNzgsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxMYXll
ckNocm9taXVtPiBtX3Jvb3RMYXllcjsKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IG1fY29u
dGVudHNUZXh0dXJlTWFuYWdlcjsKIAotICAgIENDU2V0dGluZ3MgbV9zZXR0aW5nczsKKyAgICBD
Q0xheWVyVHJlZVNldHRpbmdzIG1fc2V0dGluZ3M7CiAKICAgICBJbnRTaXplIG1fdmlld3BvcnRT
aXplOwogICAgIEludFNpemUgbV9kZXZpY2VWaWV3cG9ydFNpemU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IGQ3OGQ0MjlmMjk2YTUxZWNiMDE2YjcyM2ZmNGFi
MGM4NDdhYmRmMGYuLmMyYWIwZjdlYTU3Y2ZiN2I4ZWI5MDJhOWM4NjU3NTA3YzdjZWJkZGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC00Miw2ICs0Miw3IEBA
CiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmgiCiAjaW5jbHVkZSAiY2MvQ0NN
YXRoVXRpbC5oIgogI2luY2x1ZGUgImNjL0NDUGFnZVNjYWxlQW5pbWF0aW9uLmgiCisjaW5jbHVk
ZSAiY2MvQ0NTZXR0aW5ncy5oIgogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIK
ICNpbmNsdWRlICJjYy9DQ1RocmVhZFRhc2suaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUu
aD4KQEAgLTEwNSwxMiArMTA2LDEyIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPENDRGVsYXlCYXNl
ZFRpbWVTb3VyY2U+IG1fdGltZVNvdXJjZTsKIH07CiAKLVBhc3NPd25QdHI8Q0NMYXllclRyZWVI
b3N0SW1wbD4gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKGNvbnN0IENDU2V0dGluZ3MmIHNl
dHRpbmdzLCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KiBjbGllbnQpCitQYXNzT3duUHRyPEND
TGF5ZXJUcmVlSG9zdEltcGw+IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShjb25zdCBDQ0xh
eWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncywgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCogY2xp
ZW50KQogewogICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NMYXllclRyZWVIb3N0SW1wbChzZXR0
aW5ncywgY2xpZW50KSk7CiB9CiAKLUNDTGF5ZXJUcmVlSG9zdEltcGw6OkNDTGF5ZXJUcmVlSG9z
dEltcGwoY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGll
bnQqIGNsaWVudCkKK0NDTGF5ZXJUcmVlSG9zdEltcGw6OkNDTGF5ZXJUcmVlSG9zdEltcGwoY29u
c3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGll
bnQqIGNsaWVudCkKICAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fc291cmNlRnJhbWVO
dW1iZXIoLTEpCiAgICAgLCBtX2ZyYW1lTnVtYmVyKDApCkBAIC0yNTYsNyArMjU3LDcgQEAgdm9p
ZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KEND
TGF5ZXJMaXN0JiByZW5kZXJTdXIKIAogICAgICAgICBpZiAoIWxheWVyUmVuZGVyZXJDYXBhYmls
aXRpZXMoKS51c2luZ1BhcnRpYWxTd2FwKQogICAgICAgICAgICAgbV9yb290U2Npc3NvclJlY3Qg
PSBGbG9hdFJlY3QoRmxvYXRQb2ludCgwLCAwKSwgZGV2aWNlVmlld3BvcnRTaXplKCkpOwotICAg
IAorCiAgICAgICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlVmlzaWJsZUFuZFNj
aXNzb3JSZWN0cyhyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBtX3Jvb3RTY2lzc29yUmVjdCk7CiAg
ICAgfQogfQpAQCAtODU0LDcgKzg1NSw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6YW5p
bWF0ZVBhZ2VTY2FsZShkb3VibGUgbW9ub3RvbmljVGltZSkKIAogdm9pZCBDQ0xheWVyVHJlZUhv
c3RJbXBsOjphbmltYXRlTGF5ZXJzKGRvdWJsZSBtb25vdG9uaWNUaW1lLCBkb3VibGUgd2FsbENs
b2NrVGltZSkKIHsKLSAgICBpZiAoIW1fc2V0dGluZ3MudGhyZWFkZWRBbmltYXRpb25FbmFibGVk
IHx8ICFtX25lZWRzQW5pbWF0ZUxheWVycyB8fCAhbV9yb290TGF5ZXJJbXBsKQorICAgIGlmICgh
Q0NTZXR0aW5nczo6YWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkKCkgfHwgIW1fbmVlZHNBbmlt
YXRlTGF5ZXJzIHx8ICFtX3Jvb3RMYXllckltcGwpCiAgICAgICAgIHJldHVybjsKIAogICAgIFRS
QUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRlTGF5ZXJzIiwgdGhpcywgMCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggYzc0MGE2NjIwMmY0YmQw
ZjFiM2QwNjA2ZDNhZWJhOTQ4OWQyMDA5Mi4uNDA2MDYxMTM5Mjc4OTBjYjI1NTQxNTgwZjgwNmI3
MTdlNDQ4ZWU3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtNjgs
NyArNjgsNyBAQCBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsIDogcHVibGljIENDSW5wdXRIYW5k
bGVyQ2xpZW50LCBDQ1JlbmRlcmVyQ2xpZW50IHsKICAgICB0eXBlZGVmIFZlY3RvcjxDQ0xheWVy
SW1wbCo+IENDTGF5ZXJMaXN0OwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NM
YXllclRyZWVIb3N0SW1wbD4gY3JlYXRlKGNvbnN0IENDU2V0dGluZ3MmLCBDQ0xheWVyVHJlZUhv
c3RJbXBsQ2xpZW50Kik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1w
bD4gY3JlYXRlKGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmLCBDQ0xheWVyVHJlZUhvc3RJbXBs
Q2xpZW50Kik7CiAgICAgdmlydHVhbCB+Q0NMYXllclRyZWVIb3N0SW1wbCgpOwogCiAgICAgLy8g
Q0NJbnB1dEhhbmRsZXJDbGllbnQgaW1wbGVtZW50YXRpb24KQEAgLTEwNSw3ICsxMDUsNyBAQCBw
dWJsaWM6CiAKICAgICAvLyBDQ1JlbmRlcmVyQ2xpZW50IGltcGxlbWVudGF0aW9uCiAgICAgdmly
dHVhbCBjb25zdCBJbnRTaXplJiBkZXZpY2VWaWV3cG9ydFNpemUoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBtX2RldmljZVZpZXdwb3J0U2l6ZTsgfQotICAgIHZpcnR1YWwgY29uc3QgQ0NTZXR0
aW5ncyYgc2V0dGluZ3MoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3NldHRpbmdzOyB9Cisg
ICAgdmlydHVhbCBjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIG1fc2V0dGluZ3M7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkTG9zZUNv
bnRleHQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgb25Td2FwQnVmZmVyc0NvbXBsZXRl
KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldEZ1bGxSb290TGF5ZXJEYW1hZ2UoKSBP
VkVSUklERTsKQEAgLTE2OCw3ICsxNjgsNyBAQCBwdWJsaWM6CiAgICAgQ0NEZWJ1Z1JlY3RIaXN0
b3J5KiBkZWJ1Z1JlY3RIaXN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z1JlY3RIaXN0b3J5
LmdldCgpOyB9CiAKIHByb3RlY3RlZDoKLSAgICBDQ0xheWVyVHJlZUhvc3RJbXBsKGNvbnN0IEND
U2V0dGluZ3MmLCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50Kik7CisgICAgQ0NMYXllclRyZWVI
b3N0SW1wbChjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiwgQ0NMYXllclRyZWVIb3N0SW1wbENs
aWVudCopOwogCiAgICAgdm9pZCBhbmltYXRlUGFnZVNjYWxlKGRvdWJsZSBtb25vdG9uaWNUaW1l
KTsKICAgICB2b2lkIGFuaW1hdGVHZXN0dXJlcyhkb3VibGUgbW9ub3RvbmljVGltZSk7CkBAIC0y
MTMsNyArMjEzLDcgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8Q0NSZW5kZXJlcj4gbV9sYXllclJl
bmRlcmVyOwogICAgIE93blB0cjxDQ0xheWVySW1wbD4gbV9yb290TGF5ZXJJbXBsOwogICAgIEND
TGF5ZXJJbXBsKiBtX3Njcm9sbExheWVySW1wbDsKLSAgICBDQ1NldHRpbmdzIG1fc2V0dGluZ3M7
CisgICAgQ0NMYXllclRyZWVTZXR0aW5ncyBtX3NldHRpbmdzOwogICAgIEludFNpemUgbV92aWV3
cG9ydFNpemU7CiAgICAgSW50U2l6ZSBtX2RldmljZVZpZXdwb3J0U2l6ZTsKICAgICBib29sIG1f
dmlzaWJsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUmVuZGVyZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUmVuZGVyZXIuaAppbmRleCA5YzkzOGE5OTBhYmM0ZDliNTU1NDY4ZTcw
ODZkN2I1MzYxYjYwNTE5Li4zMmY4MzU4Yzc0NGRjMGU4YzE4ZTk0YjA2NGE5MWQ1MDQ4MDVlZmE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlcmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NSZW5kZXJlci5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIFRleHR1cmVVcGxv
YWRlcjsKIGNsYXNzIENDUmVuZGVyZXJDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgY29u
c3QgSW50U2l6ZSYgZGV2aWNlVmlld3BvcnRTaXplKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwg
Y29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25z
dCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkTG9zZUNvbnRleHQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZl
cnNDb21wbGV0ZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RnVsbFJvb3RMYXllckRhbWFn
ZSgpID0gMDsKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBjb25zdCBM
YXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdCA9IDA7CiAKLSAg
ICBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50LT5z
ZXR0aW5ncygpOyB9CisgICAgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MoKSBj
b25zdCB7IHJldHVybiBtX2NsaWVudC0+c2V0dGluZ3MoKTsgfQogCiAgICAgY29uc3QgSW50U2l6
ZSYgdmlld3BvcnRTaXplKCkgeyByZXR1cm4gbV9jbGllbnQtPmRldmljZVZpZXdwb3J0U2l6ZSgp
OyB9CiAgICAgaW50IHZpZXdwb3J0V2lkdGgoKSB7IHJldHVybiB2aWV3cG9ydFNpemUoKS53aWR0
aCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2V0dGluZ3MuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0ZWEyN2ZmY2I1NDljZjVi
Y2M0ZDc4ZmE3MDM3OGU3YWI1ZDBkY2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NldHRpbmdzLmNwcApAQCAtMCwwICsx
LDExNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAi
Y2MvQ0NTZXR0aW5ncy5oIgorCisjaW5jbHVkZSA8bGltaXRzPgorCituYW1lc3BhY2UgeworCitz
dGF0aWMgYm9vbCBzX2FjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkRGVmYXVsdCA9IGZhbHNlOwor
c3RhdGljIGJvb2wgc19hY2NlbGVyYXRlZFBhaW50aW5nRW5hYmxlZCA9IHNfYWNjZWxlcmF0ZWRQ
YWludGluZ0VuYWJsZWREZWZhdWx0OworCitzdGF0aWMgYm9vbCBzX3BlclRpbGVQYWludGluZ0Vu
YWJsZWREZWZhdWx0ID0gZmFsc2U7CitzdGF0aWMgYm9vbCBzX3BlclRpbGVQYWludGluZ0VuYWJs
ZWQgPSBzX3BlclRpbGVQYWludGluZ0VuYWJsZWREZWZhdWx0OworCitzdGF0aWMgYm9vbCBzX3Bh
cnRpYWxTd2FwRW5hYmxlZERlZmF1bHQgPSBmYWxzZTsKK3N0YXRpYyBib29sIHNfcGFydGlhbFN3
YXBFbmFibGVkID0gc19wYXJ0aWFsU3dhcEVuYWJsZWREZWZhdWx0OworCitzdGF0aWMgYm9vbCBz
X2FjY2VsZXJhdGVkQW5pbWF0aW9uRW5hYmxlZERlZmF1bHQgPSBmYWxzZTsKK3N0YXRpYyBib29s
IHNfYWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkID0gc19hY2NlbGVyYXRlZEFuaW1hdGlvbkVu
YWJsZWREZWZhdWx0OworCitzdGF0aWMgc2l6ZV90IHNfbWF4UGFydGlhbFRleHR1cmVVcGRhdGVz
RGVmYXVsdCA9IHN0YXRpY19jYXN0PHNpemVfdD4oLTEpOworc3RhdGljIHNpemVfdCBzX21heFBh
cnRpYWxUZXh0dXJlVXBkYXRlcyA9IHNfbWF4UGFydGlhbFRleHR1cmVVcGRhdGVzRGVmYXVsdDsK
Kworc3RhdGljIGludCBzX2RlZmF1bHRUaWxlV2lkdGhEZWZhdWx0ID0gMjU2Oworc3RhdGljIGlu
dCBzX2RlZmF1bHRUaWxlV2lkdGggPSBzX2RlZmF1bHRUaWxlV2lkdGhEZWZhdWx0OworCitzdGF0
aWMgaW50IHNfZGVmYXVsdFRpbGVIZWlnaHREZWZhdWx0ID0gMjU2Oworc3RhdGljIGludCBzX2Rl
ZmF1bHRUaWxlSGVpZ2h0ID0gc19kZWZhdWx0VGlsZUhlaWdodERlZmF1bHQ7CisKK3N0YXRpYyBp
bnQgc19tYXhVbnRpbGVkTGF5ZXJXaWR0aERlZmF1bHQgPSA1MTI7CitzdGF0aWMgaW50IHNfbWF4
VW50aWxlZExheWVyV2lkdGggPSBzX21heFVudGlsZWRMYXllcldpZHRoRGVmYXVsdDsKKworc3Rh
dGljIGludCBzX21heFVudGlsZWRMYXllckhlaWdodERlZmF1bHQgPSA1MTI7CitzdGF0aWMgaW50
IHNfbWF4VW50aWxlZExheWVySGVpZ2h0ID0gc19tYXhVbnRpbGVkTGF5ZXJIZWlnaHREZWZhdWx0
OworCit9IC8vIG5hbWVzcGFjZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgQ0NTZXR0
aW5nczo6YWNjZWxlcmF0ZWRQYWludGluZ0VuYWJsZWQoKSB7IHJldHVybiBzX2FjY2VsZXJhdGVk
UGFpbnRpbmdFbmFibGVkOyB9Cit2b2lkIENDU2V0dGluZ3M6OnNldEFjY2VsZXJhdGVkUGFpbnRp
bmdFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBzX2FjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkID0g
ZW5hYmxlZDsgfQorCitib29sIENDU2V0dGluZ3M6OnBlclRpbGVQYWludGluZ0VuYWJsZWQoKSB7
IHJldHVybiBzX3BlclRpbGVQYWludGluZ0VuYWJsZWQ7IH0KK3ZvaWQgQ0NTZXR0aW5nczo6c2V0
UGVyVGlsZVBhaW50aW5nRW5hYmxlZChib29sIGVuYWJsZWQpIHsgc19wZXJUaWxlUGFpbnRpbmdF
bmFibGVkID0gZW5hYmxlZDsgfQorCitib29sIENDU2V0dGluZ3M6OnBhcnRpYWxTd2FwRW5hYmxl
ZCgpIHsgcmV0dXJuIHNfcGFydGlhbFN3YXBFbmFibGVkOyB9Cit2b2lkIENDU2V0dGluZ3M6OnNl
dFBhcnRpYWxTd2FwRW5hYmxlZChib29sIGVuYWJsZWQpIHsgc19wYXJ0aWFsU3dhcEVuYWJsZWQg
PSBlbmFibGVkOyB9CisKK2Jvb2wgQ0NTZXR0aW5nczo6YWNjZWxlcmF0ZWRBbmltYXRpb25FbmFi
bGVkKCkgeyByZXR1cm4gc19hY2NlbGVyYXRlZEFuaW1hdGlvbkVuYWJsZWQ7IH0KK3ZvaWQgQ0NT
ZXR0aW5nczo6c2V0QWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBz
X2FjY2VsZXJhdGVkQW5pbWF0aW9uRW5hYmxlZCA9IGVuYWJsZWQ7IH0KKworc2l6ZV90IENDU2V0
dGluZ3M6Om1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcygpCit7CisgICAgcmV0dXJuIHNfbWF4UGFy
dGlhbFRleHR1cmVVcGRhdGVzIDwgMCA/IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4
KCkgOiBzX21heFBhcnRpYWxUZXh0dXJlVXBkYXRlczsKK30KK3ZvaWQgQ0NTZXR0aW5nczo6c2V0
TWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKHNpemVfdCB1cGRhdGVzKSB7IHNfbWF4UGFydGlhbFRl
eHR1cmVVcGRhdGVzID0gdXBkYXRlczsgfQorCitJbnRTaXplIENDU2V0dGluZ3M6OmRlZmF1bHRU
aWxlU2l6ZSgpCit7CisgICAgcmV0dXJuIEludFNpemUoc19kZWZhdWx0VGlsZVdpZHRoLCBzX2Rl
ZmF1bHRUaWxlSGVpZ2h0KTsKK30KK3ZvaWQgQ0NTZXR0aW5nczo6c2V0RGVmYXVsdFRpbGVTaXpl
KGNvbnN0IEludFNpemUmIHNpemUpCit7CisgICAgc19kZWZhdWx0VGlsZVdpZHRoID0gc2l6ZS53
aWR0aCgpOworICAgIHNfZGVmYXVsdFRpbGVIZWlnaHQgPSBzaXplLmhlaWdodCgpOworfQorCitJ
bnRTaXplIENDU2V0dGluZ3M6Om1heFVudGlsZWRMYXllclNpemUoKQoreworICAgIHJldHVybiBJ
bnRTaXplKHNfbWF4VW50aWxlZExheWVyV2lkdGgsIHNfbWF4VW50aWxlZExheWVySGVpZ2h0KTsK
K30KK3ZvaWQgQ0NTZXR0aW5nczo6c2V0TWF4VW50aWxlZExheWVyU2l6ZShjb25zdCBJbnRTaXpl
JiBzaXplKQoreworICAgIHNfbWF4VW50aWxlZExheWVyV2lkdGggPSBzaXplLndpZHRoKCk7Cisg
ICAgc19tYXhVbnRpbGVkTGF5ZXJIZWlnaHQgPSBzaXplLmhlaWdodCgpOworfQorCit2b2lkIEND
U2V0dGluZ3M6OnJlc2V0KCkKK3sKKyAgICBzX2FjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkID0g
c19hY2NlbGVyYXRlZFBhaW50aW5nRW5hYmxlZERlZmF1bHQ7CisgICAgc19wZXJUaWxlUGFpbnRp
bmdFbmFibGVkID0gc19wZXJUaWxlUGFpbnRpbmdFbmFibGVkRGVmYXVsdDsKKyAgICBzX3BhcnRp
YWxTd2FwRW5hYmxlZCA9IHNfcGFydGlhbFN3YXBFbmFibGVkRGVmYXVsdDsKKyAgICBzX2FjY2Vs
ZXJhdGVkQW5pbWF0aW9uRW5hYmxlZCA9IHNfYWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkRGVm
YXVsdDsKKyAgICBzX21heFBhcnRpYWxUZXh0dXJlVXBkYXRlcyA9IHNfbWF4UGFydGlhbFRleHR1
cmVVcGRhdGVzRGVmYXVsdDsKKyAgICBzX2RlZmF1bHRUaWxlV2lkdGggPSBzX2RlZmF1bHRUaWxl
V2lkdGhEZWZhdWx0OworICAgIHNfZGVmYXVsdFRpbGVIZWlnaHQgPSBzX2RlZmF1bHRUaWxlSGVp
Z2h0RGVmYXVsdDsKKyAgICBzX21heFVudGlsZWRMYXllcldpZHRoID0gc19tYXhVbnRpbGVkTGF5
ZXJXaWR0aERlZmF1bHQ7CisgICAgc19tYXhVbnRpbGVkTGF5ZXJIZWlnaHQgPSBzX21heFVudGls
ZWRMYXllckhlaWdodERlZmF1bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2V0
dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2V0dGluZ3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZWIxNmNiY2RiNTIzMjQ1MWQ0NTNiMDk4MjQyMmM0M2Y1
MWNlMWU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTZXR0aW5ncy5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
CisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgQ0NTZXR0aW5nc19oCisjZGVmaW5lIENDU2V0dGluZ3NfaAorCisjaW5jbHVk
ZSAiSW50U2l6ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENDU2V0dGluZ3Mg
eworcHVibGljOgorICAgIHN0YXRpYyBib29sIGFjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkKCk7
CisgICAgc3RhdGljIGJvb2wgcGVyVGlsZVBhaW50aW5nRW5hYmxlZCgpOworICAgIHN0YXRpYyBi
b29sIHBhcnRpYWxTd2FwRW5hYmxlZCgpOworICAgIHN0YXRpYyBib29sIGFjY2VsZXJhdGVkQW5p
bWF0aW9uRW5hYmxlZCgpOworICAgIHN0YXRpYyBzaXplX3QgbWF4UGFydGlhbFRleHR1cmVVcGRh
dGVzKCk7CisgICAgc3RhdGljIEludFNpemUgZGVmYXVsdFRpbGVTaXplKCk7CisgICAgc3RhdGlj
IEludFNpemUgbWF4VW50aWxlZExheWVyU2l6ZSgpOworCisgICAgLy8gVGhlc2Ugc2V0dGVycyBz
aG91bGQgb25seSBiZSB1c2VkIG9uIHRoZSBtYWluIHRocmVhZCBiZWZvcmUgdGhlIGxheWVyCisg
ICAgLy8gcmVuZGVyZXIgaXMgaW5pdGlhbGl6ZWQuCisgICAgc3RhdGljIHZvaWQgc2V0QWNjZWxl
cmF0ZWRQYWludGluZ0VuYWJsZWQoYm9vbCk7CisgICAgc3RhdGljIHZvaWQgc2V0UGVyVGlsZVBh
aW50aW5nRW5hYmxlZChib29sKTsKKyAgICBzdGF0aWMgdm9pZCBzZXRQYXJ0aWFsU3dhcEVuYWJs
ZWQoYm9vbCk7CisgICAgc3RhdGljIHZvaWQgc2V0QWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVk
KGJvb2wpOworICAgIHN0YXRpYyB2b2lkIHNldE1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcyhzaXpl
X3QpOworICAgIHN0YXRpYyB2b2lkIHNldERlZmF1bHRUaWxlU2l6ZShjb25zdCBJbnRTaXplJik7
CisgICAgc3RhdGljIHZvaWQgc2V0TWF4VW50aWxlZExheWVyU2l6ZShjb25zdCBJbnRTaXplJik7
CisKKyAgICAvLyBUaGVzZSBzZXR0aW5ncyBhcmUgbWVhbnQgdG8gYmUgc2V0IG9ubHkgb25jZSwg
YW5kIG9ubHkgcmVhZCB0aGVyZWFmdGVyLgorICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgb25seSBm
b3IgcmVzZXR0aW5nIHNldHRpbmdzIGluIHRlc3RzLgorICAgIHN0YXRpYyB2b2lkIHJlc2V0KCk7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBDQ1NldHRpbmdzX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCmluZGV4IGU0ZDA2
MWUyODVjZTE2NDI1ZmQ5NjhjYjMwZmU1MWJlMjAzMzI3Y2YuLjA1Mzk2NmIzYWZmYjVjOGJkOGM2
OTY0NTQ4MjAwM2MzZTIwZjdlZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bFNldHRpbmdzLmNwcApAQCAtMjM0LDEyICsyMzQsNiBAQCB2b2lkIEludGVybmFsU2V0dGluZ3M6
OnNldFBhZ2VTY2FsZUZhY3RvcihmbG9hdCBzY2FsZUZhY3RvciwgaW50IHgsIGludCB5LCBFeGNl
cAogICAgIHBhZ2UoKS0+c2V0UGFnZVNjYWxlRmFjdG9yKHNjYWxlRmFjdG9yLCBJbnRQb2ludCh4
LCB5KSk7CiB9CiAKLXZvaWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0UGVyVGlsZURyYXdpbmdFbmFi
bGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgSW50ZXJuYWxTZXR0
aW5nc0d1YXJkRm9yU2V0dGluZ3MoKTsKLSAgICBzZXR0aW5ncygpLT5zZXRQZXJUaWxlRHJhd2lu
Z0VuYWJsZWQoZW5hYmxlZCk7Ci19Ci0KIHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0U2hhZG93
RE9NRW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogI2lmIEVOQUJM
RShTSEFET1dfRE9NKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bFNldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaApp
bmRleCA0ZmU4MjI2MzViNzViZDMyNzM0YjYyZTUwMDY0NjZkNWQ3OGYwZjkwLi5jZDI4YjYzNjVk
YmZjNzQzYTUyODA4ZDVkM2Y4MjI1ZThmYjg1NjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFsU2V0dGluZ3MuaApAQCAtNjEsNyArNjEsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRVbmlmaWVkVGV4dENoZWNraW5nRW5hYmxlZChib29sLCBFeGNlcHRpb25Db2RlJik7CiAgICAg
Ym9vbCB1bmlmaWVkVGV4dENoZWNraW5nRW5hYmxlZChFeGNlcHRpb25Db2RlJik7CiAgICAgdm9p
ZCBzZXRQYWdlU2NhbGVGYWN0b3IoZmxvYXQgc2NhbGVGYWN0b3IsIGludCB4LCBpbnQgeSwgRXhj
ZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgc2V0UGVyVGlsZURyYXdpbmdFbmFibGVkKGJvb2wgZW5h
YmxlZCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0VG91Y2hFdmVudEVtdWxhdGlvbkVu
YWJsZWQoYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXREZXZpY2VT
dXBwb3J0c1RvdWNoKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0
RGV2aWNlU3VwcG9ydHNNb3VzZShib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXBpCmluZGV4IDFjMTFmMmQ3OTA2YzkwZTM4YTE4OWJiZTRkMzdi
MmI3N2NjYzczMjMuLjY2MzAwNDVkODg0MTdiNTZhMjM4Mjc0OTY2OTA2NzAzNDZiOWUwZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQpAQCAtODcsNiArODcsNyBAQAogICAgICAgICAg
ICAgJ3Rlc3RzL0NDU2NoZWR1bGVyVGVzdENvbW1vbi5oJywKICAgICAgICAgICAgICd0ZXN0cy9D
Q1NjaGVkdWxlclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9DQ1NvbGlkQ29sb3JMYXll
ckltcGxUZXN0LmNwcCcsCisgICAgICAgICAgICAndGVzdHMvQ0NUZXN0Q29tbW9uLmgnLAogICAg
ICAgICAgICAgJ3Rlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0LmNwcCcsCiAgICAgICAgICAgICAn
dGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oJywKICAgICAgICAgICAgICd0ZXN0cy9DQ1Rp
bGVkTGF5ZXJUZXN0Q29tbW9uLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJDb21wb3NpdG9yLmgKaW5kZXggM2VhZGVmMzJjMzdiMzEzNDliOTkzNzdhMmUxOWY4YzA2
YThmOGQ0OC4uZTRkNTIxOGJlZGZkYTU1NThhMTFiODViYWJjZDk2MDZlNWRkNzBiNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3IuaApAQCAtMjYsNyAr
MjYsMTAgQEAKICNpZm5kZWYgV2ViQ29tcG9zaXRvcl9oCiAjZGVmaW5lIFdlYkNvbXBvc2l0b3Jf
aAogCisjZGVmaW5lIFdFQkNPTVBPU0lUT1JfT1dOU19TRVRUSU5HUyAxCisKICNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJDb21tb24uaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTaXplLmgiCiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCkBAIC00OSw2ICs1MiwxNSBAQCBwdWJsaWM6CiAgICAgLy8gYWZ0
ZXIgc2h1dGRvd24uCiAgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBzaHV0ZG93bigpOwog
CisgICAgLy8gVGhlc2UgbWF5IG9ubHkgYmUgY2FsbGVkIGJlZm9yZSBpbml0aWFsaXplLgorICAg
IFdFQktJVF9FWFBPUlQgc3RhdGljIHZvaWQgc2V0QWNjZWxlcmF0ZWRQYWludGluZ0VuYWJsZWQo
Ym9vbCk7CisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRQZXJUaWxlUGFpbnRpbmdF
bmFibGVkKGJvb2wpOworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIHZvaWQgc2V0UGFydGlhbFN3
YXBFbmFibGVkKGJvb2wpOworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIHZvaWQgc2V0QWNjZWxl
cmF0ZWRBbmltYXRpb25FbmFibGVkKGJvb2wpOworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIHZv
aWQgc2V0TWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKHNpemVfdCk7CisgICAgV0VCS0lUX0VYUE9S
VCBzdGF0aWMgdm9pZCBzZXREZWZhdWx0VGlsZVNpemUoY29uc3QgV2ViU2l6ZSYpOworICAgIFdF
QktJVF9FWFBPUlQgc3RhdGljIHZvaWQgc2V0TWF4VW50aWxlZExheWVyU2l6ZShjb25zdCBXZWJT
aXplJik7CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5XZWJDb21wb3NpdG9yKCkgeyB9CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3Mu
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKaW5kZXggMDFh
YzQ0MGEzNWU2NTQ1NTUyMzVjNDdhMzk5MDRmYWExM2U1MGNmYi4uM2MxNDNhZWNlNjE5NGFiM2Rh
NDdkOGUyMTRiMmMyZGUwYTgyYzMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJTZXR0aW5ncy5oCkBAIC0xNDgsMTQgKzE0OCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgc2V0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZChib29sKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHNldFZpc3VhbFdvcmRNb3ZlbWVudEVuYWJsZWQoYm9vbCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZFBhaW50aW5nRW5hYmxlZChib29sKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIHNldFBlclRpbGVQYWludGluZ0VuYWJsZWQoYm9vbCkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRQYXJ0aWFsU3dhcEVuYWJsZWQoYm9vbCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRUaHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRWaWV3cG9ydEVuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRNZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZShib29sKSA9IDA7CiAgICAgdmlydHVh
bCBib29sIHZpZXdwb3J0RW5hYmxlZCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
RGVmYXVsdFRpbGVTaXplKFdlYlNpemUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TWF4VW50
aWxlZExheWVyU2l6ZShXZWJTaXplKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEZpeGVkUG9z
aXRpb25DcmVhdGVzU3RhY2tpbmdDb250ZXh0KGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0U3luY1hIUkluRG9jdW1lbnRzRW5hYmxlZChib29sKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbXBsLmNwcAppbmRleCA5MWQ4YjFiZTY2
MDQ1YTM5OGQyNzg4OGVjY2UwZjdmYjZmMjMyOTExLi4xMDFlYThlYTIxZGIyNTFjMDliNGVjYTIz
MTk5NjM1MWE1MzZhZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJDb21wb3NpdG9ySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Q29tcG9zaXRvckltcGwuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiV2ViSW5wdXRF
dmVudC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgImNjL0ND
UHJveHkuaCIKKyNpbmNsdWRlICJjYy9DQ1NldHRpbmdzLmgiCiAjaW5jbHVkZSA8d3RmL1RocmVh
ZGluZ1ByaW1pdGl2ZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC01MSw2ICs1
Miw0OSBAQCB2b2lkIFdlYkNvbXBvc2l0b3I6OmluaXRpYWxpemUoV2ViVGhyZWFkKiBpbXBsVGhy
ZWFkKQogdm9pZCBXZWJDb21wb3NpdG9yOjpzaHV0ZG93bigpCiB7CiAgICAgV2ViQ29tcG9zaXRv
ckltcGw6OnNodXRkb3duKCk7CisgICAgQ0NTZXR0aW5nczo6cmVzZXQoKTsKK30KKwordm9pZCBX
ZWJDb21wb3NpdG9yOjpzZXRBY2NlbGVyYXRlZFBhaW50aW5nRW5hYmxlZChib29sIGVuYWJsZWQp
Cit7CisgICAgQVNTRVJUKCFXZWJDb21wb3NpdG9ySW1wbDo6aW5pdGlhbGl6ZWQoKSk7CisgICAg
Q0NTZXR0aW5nczo6c2V0QWNjZWxlcmF0ZWRQYWludGluZ0VuYWJsZWQoZW5hYmxlZCk7Cit9CisK
K3ZvaWQgV2ViQ29tcG9zaXRvcjo6c2V0UGVyVGlsZVBhaW50aW5nRW5hYmxlZChib29sIGVuYWJs
ZWQpCit7CisgICAgQVNTRVJUKCFXZWJDb21wb3NpdG9ySW1wbDo6aW5pdGlhbGl6ZWQoKSk7Cisg
ICAgQ0NTZXR0aW5nczo6c2V0UGVyVGlsZVBhaW50aW5nRW5hYmxlZChlbmFibGVkKTsKK30KKwor
dm9pZCBXZWJDb21wb3NpdG9yOjpzZXRQYXJ0aWFsU3dhcEVuYWJsZWQoYm9vbCBlbmFibGVkKQor
eworICAgIEFTU0VSVCghV2ViQ29tcG9zaXRvckltcGw6OmluaXRpYWxpemVkKCkpOworICAgIEND
U2V0dGluZ3M6OnNldFBhcnRpYWxTd2FwRW5hYmxlZChlbmFibGVkKTsKK30KKwordm9pZCBXZWJD
b21wb3NpdG9yOjpzZXRBY2NlbGVyYXRlZEFuaW1hdGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkKQor
eworICAgIEFTU0VSVCghV2ViQ29tcG9zaXRvckltcGw6OmluaXRpYWxpemVkKCkpOworICAgIEND
U2V0dGluZ3M6OnNldEFjY2VsZXJhdGVkQW5pbWF0aW9uRW5hYmxlZChlbmFibGVkKTsKK30KKwor
dm9pZCBXZWJDb21wb3NpdG9yOjpzZXRNYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoc2l6ZV90IHVw
ZGF0ZXMpCit7CisgICAgQVNTRVJUKCFXZWJDb21wb3NpdG9ySW1wbDo6aW5pdGlhbGl6ZWQoKSk7
CisgICAgQ0NTZXR0aW5nczo6c2V0TWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKHVwZGF0ZXMpOwor
fQorCit2b2lkIFdlYkNvbXBvc2l0b3I6OnNldERlZmF1bHRUaWxlU2l6ZShjb25zdCBXZWJTaXpl
JiBzaXplKQoreworICAgIEFTU0VSVCghV2ViQ29tcG9zaXRvckltcGw6OmluaXRpYWxpemVkKCkp
OworICAgIENDU2V0dGluZ3M6OnNldERlZmF1bHRUaWxlU2l6ZShzaXplKTsKK30KKwordm9pZCBX
ZWJDb21wb3NpdG9yOjpzZXRNYXhVbnRpbGVkTGF5ZXJTaXplKGNvbnN0IFdlYlNpemUmIHNpemUp
Cit7CisgICAgQVNTRVJUKCFXZWJDb21wb3NpdG9ySW1wbDo6aW5pdGlhbGl6ZWQoKSk7CisgICAg
Q0NTZXR0aW5nczo6c2V0TWF4VW50aWxlZExheWVyU2l6ZShzaXplKTsKIH0KIAogdm9pZCBXZWJD
b21wb3NpdG9ySW1wbDo6aW5pdGlhbGl6ZShXZWJUaHJlYWQqIGltcGxUaHJlYWQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCmluZGV4IGFlMjBh
ZWE5YTM1ODNlNjM0MjQ5ZjViYjRkYjQwODgyODRkODI2ZjEuLjY5ZjlkNjcwM2ZkNjFmZGFjMjE5
ODVmMTdkOTg2NWE3ODhmYTRlYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkxheWVyVHJlZVZpZXcuY3BwCkBAIC0zNywyMCArMzcsMTUgQEAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLVdlYkxheWVyVHJlZVZpZXc6OlNldHRp
bmdzOjpvcGVyYXRvciBDQ1NldHRpbmdzKCkgY29uc3QKKworV2ViTGF5ZXJUcmVlVmlldzo6U2V0
dGluZ3M6Om9wZXJhdG9yIENDTGF5ZXJUcmVlU2V0dGluZ3MoKSBjb25zdAogewotICAgIENDU2V0
dGluZ3Mgc2V0dGluZ3M7Ci0gICAgc2V0dGluZ3MuYWNjZWxlcmF0ZVBhaW50aW5nID0gYWNjZWxl
cmF0ZVBhaW50aW5nOworICAgIENDTGF5ZXJUcmVlU2V0dGluZ3Mgc2V0dGluZ3M7CiAgICAgc2V0
dGluZ3MuZm9yY2VTb2Z0d2FyZUNvbXBvc2l0aW5nID0gZm9yY2VTb2Z0d2FyZUNvbXBvc2l0aW5n
OwogICAgIHNldHRpbmdzLnNob3dGUFNDb3VudGVyID0gc2hvd0ZQU0NvdW50ZXI7CiAgICAgc2V0
dGluZ3Muc2hvd1BsYXRmb3JtTGF5ZXJUcmVlID0gc2hvd1BsYXRmb3JtTGF5ZXJUcmVlOwogICAg
IHNldHRpbmdzLnNob3dQYWludFJlY3RzID0gc2hvd1BhaW50UmVjdHM7CiAgICAgc2V0dGluZ3Mu
cmVmcmVzaFJhdGUgPSByZWZyZXNoUmF0ZTsKLSAgICBzZXR0aW5ncy5wZXJUaWxlUGFpbnRpbmcg
PSBwZXJUaWxlUGFpbnRpbmc7Ci0gICAgc2V0dGluZ3MucGFydGlhbFN3YXBFbmFibGVkID0gcGFy
dGlhbFN3YXBFbmFibGVkOwotICAgIHNldHRpbmdzLnRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZCA9
IHRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZDsKLSAgICBzZXR0aW5ncy5kZWZhdWx0VGlsZVNpemUg
PSBkZWZhdWx0VGlsZVNpemU7Ci0gICAgc2V0dGluZ3MubWF4VW50aWxlZExheWVyU2l6ZSA9IG1h
eFVudGlsZWRMYXllclNpemU7CiAgICAgc2V0dGluZ3MuZGV2aWNlU2NhbGVGYWN0b3IgPSBkZXZp
Y2VTY2FsZUZhY3RvcjsKIAogICAgIC8vIEZJWE1FOiBzaG93RlBTQ291bnRlciAvIHNob3dQbGF0
Zm9ybUxheWVyVHJlZSAvIG1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcyBhcmVuJ3Qgc3VwcG9ydGVk
IGN1cnJlbnRseS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxh
eWVyVHJlZVZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVy
VHJlZVZpZXdJbXBsLmNwcAppbmRleCAxN2Q1ZmU4Njc1YTdlY2FlMjQyMDYzZTJhNzMwMmE3MzY0
NzIwOWYwLi4wZDY1MTkyNTFjMDc1MDY3YzRmYWIxZTMxODQyZTM4MTc2ZTU5NmEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3Bw
CkBAIC04MSw3ICs4MSw3IEBAIFBhc3NPd25QdHI8V2ViTGF5ZXJUcmVlVmlld0ltcGw+IFdlYkxh
eWVyVHJlZVZpZXdJbXBsOjpjcmVhdGUoV2ViTGF5ZXJUcmVlVmlld0NsCiAgICAgcmV0dXJuIGlt
cGwucmVsZWFzZSgpOwogfQogCi1XZWJMYXllclRyZWVWaWV3SW1wbDo6V2ViTGF5ZXJUcmVlVmll
d0ltcGwoV2ViTGF5ZXJUcmVlVmlld0NsaWVudCogY2xpZW50LCBjb25zdCBXZWJMYXllclRyZWVW
aWV3OjpTZXR0aW5ncyYgc2V0dGluZ3MpIAorV2ViTGF5ZXJUcmVlVmlld0ltcGw6OldlYkxheWVy
VHJlZVZpZXdJbXBsKFdlYkxheWVyVHJlZVZpZXdDbGllbnQqIGNsaWVudCwgY29uc3QgV2ViTGF5
ZXJUcmVlVmlldzo6U2V0dGluZ3MmIHNldHRpbmdzKQogICAgIDogbV9jbGllbnRBZGFwdGVyKGFk
b3B0UHRyKG5ldyBXZWJMYXllclRyZWVWaWV3Q2xpZW50QWRhcHRlcihjbGllbnQpKSkKICAgICAs
IG1fbGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZShtX2NsaWVudEFkYXB0ZXIu
Z2V0KCksIHNldHRpbmdzKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlNldHRpbmdzSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJT
ZXR0aW5nc0ltcGwuY3BwCmluZGV4IGMwNmVjMjAzODUxOTQxNGYyNThhNGJjYTI1ZmQxNWE3MGVi
M2FmNTYuLmI4NzAxZWNjOTNhNTU4MDVmYjY2MmVhNDAwZjc5MTM2ZTQ0OTZhMzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcApAQCAtNTMsOCAr
NTMsNiBAQCBXZWJTZXR0aW5nc0ltcGw6OldlYlNldHRpbmdzSW1wbChTZXR0aW5ncyogc2V0dGlu
Z3MpCiAgICAgLCBtX3Nob3dQYWludFJlY3RzKGZhbHNlKQogICAgICwgbV92aWV3cG9ydEVuYWJs
ZWQoZmFsc2UpCiAgICAgLCBtX2FwcGx5RGVmYXVsdERldmljZVNjYWxlRmFjdG9ySW5Db21wb3Np
dG9yKGZhbHNlKQotICAgICwgbV9kZWZhdWx0VGlsZVNpemUoV2ViU2l6ZSgyNTYsIDI1NikpCi0g
ICAgLCBtX21heFVudGlsZWRMYXllclNpemUoV2ViU2l6ZSg1MTIsIDUxMikpCiB7CiAgICAgQVNT
RVJUKHNldHRpbmdzKTsKIH0KQEAgLTYwMiwyMSArNjAwLDYgQEAgdm9pZCBXZWJTZXR0aW5nc0lt
cGw6OnNldEFjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBtX3Nl
dHRpbmdzLT5zZXRBY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkKGVuYWJsZWQpOwogfQogCi12b2lk
IFdlYlNldHRpbmdzSW1wbDo6c2V0UGVyVGlsZVBhaW50aW5nRW5hYmxlZChib29sIGVuYWJsZWQp
Ci17Ci0gICAgbV9zZXR0aW5ncy0+c2V0UGVyVGlsZURyYXdpbmdFbmFibGVkKGVuYWJsZWQpOwot
fQotCi12b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0UGFydGlhbFN3YXBFbmFibGVkKGJvb2wgZW5h
YmxlZCkKLXsKLSAgICBtX3NldHRpbmdzLT5zZXRQYXJ0aWFsU3dhcEVuYWJsZWQoZW5hYmxlZCk7
Ci19Ci0KLXZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRUaHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQo
Ym9vbCBlbmFibGVkKQotewotICAgIG1fc2V0dGluZ3MtPnNldFRocmVhZGVkQW5pbWF0aW9uRW5h
YmxlZChlbmFibGVkKTsKLX0KLQogdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldE1lZGlhUGxheWJh
Y2tSZXF1aXJlc1VzZXJHZXN0dXJlKGJvb2wgcmVxdWlyZWQpCiB7CiAgICAgbV9zZXR0aW5ncy0+
c2V0TWVkaWFQbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUocmVxdWlyZWQpOwpAQCAtNjMyLDE2
ICs2MTUsNiBAQCB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0Vmlld3BvcnRFbmFibGVkKGJvb2wg
ZW5hYmxlZCkKICAgICBtX3ZpZXdwb3J0RW5hYmxlZCA9IGVuYWJsZWQ7CiB9CiAKLXZvaWQgV2Vi
U2V0dGluZ3NJbXBsOjpzZXREZWZhdWx0VGlsZVNpemUoV2ViU2l6ZSBzaXplKQotewotICAgIG1f
ZGVmYXVsdFRpbGVTaXplID0gc2l6ZTsKLX0KLQotdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldE1h
eFVudGlsZWRMYXllclNpemUoV2ViU2l6ZSBzaXplKQotewotICAgIG1fbWF4VW50aWxlZExheWVy
U2l6ZSA9IHNpemU7Ci19Ci0KIHZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRTeW5jWEhSSW5Eb2N1
bWVudHNFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICAgICBtX3NldHRpbmdzLT5zZXRTeW5jWEhS
SW5Eb2N1bWVudHNFbmFibGVkKGVuYWJsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJTZXR0aW5nc0ltcGwuaAppbmRleCAyNTIyMWVkYzcwNmJiMGNhYTQzZjE5ZWU0ZmIyZThm
YWZlZGJkYzRiLi5iZGM5MTc3MzFhMjgzM2ZjMjZmZTU1ZmJkNjYxNDcxOWVkNWMxYjk0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaApAQCAtMTA2LDgg
KzEwNiw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvd0ZQU0NvdW50ZXIoYm9v
bCk7CiAgICAgdmlydHVhbCB2b2lkIHNldFNob3dQbGF0Zm9ybUxheWVyVHJlZShib29sKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0U2hvd1BhaW50UmVjdHMoYm9vbCk7Ci0gICAgdmlydHVhbCB2b2lk
IHNldERlZmF1bHRUaWxlU2l6ZShXZWJTaXplKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TWF4VW50
aWxlZExheWVyU2l6ZShXZWJTaXplKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RWRpdGluZ0JlaGF2
aW9yKEVkaXRpbmdCZWhhdmlvcik7CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRGb3JjZUNvbXBvc2l0
aW5nTW9kZShib29sKTsKQEAgLTE0Niw5ICsxNDQsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHNldFNob3VsZERpc3BsYXlDYXB0aW9ucyhib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
U2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNl
dEFjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkKGJvb2wpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRQ
ZXJUaWxlUGFpbnRpbmdFbmFibGVkKGJvb2wpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRQYXJ0aWFs
U3dhcEVuYWJsZWQoYm9vbCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldFRocmVhZGVkQW5pbWF0aW9u
RW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Rml4ZWRQb3NpdGlvbkNyZWF0ZXNT
dGFja2luZ0NvbnRleHQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZXdwb3J0RW5hYmxl
ZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TWVkaWFQbGF5YmFja1JlcXVpcmVzVXNlckdl
c3R1cmUoYm9vbCk7CkBAIC0xNTksOCArMTU0LDYgQEAgcHVibGljOgogICAgIGJvb2wgc2hvd1Bs
YXRmb3JtTGF5ZXJUcmVlKCkgY29uc3QgeyByZXR1cm4gbV9zaG93UGxhdGZvcm1MYXllclRyZWU7
IH0KICAgICBib29sIHNob3dQYWludFJlY3RzKCkgY29uc3QgeyByZXR1cm4gbV9zaG93UGFpbnRS
ZWN0czsgfQogICAgIGJvb2wgYXBwbHlEZWZhdWx0RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0
b3IoKSBjb25zdCB7IHJldHVybiBtX2FwcGx5RGVmYXVsdERldmljZVNjYWxlRmFjdG9ySW5Db21w
b3NpdG9yOyB9Ci0gICAgV2ViU2l6ZSBkZWZhdWx0VGlsZVNpemUoKSBjb25zdCB7IHJldHVybiBt
X2RlZmF1bHRUaWxlU2l6ZTsgfQotICAgIFdlYlNpemUgbWF4VW50aWxlZExheWVyU2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbWF4VW50aWxlZExheWVyU2l6ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBm
b3JjZVNvZnR3YXJlQ29tcG9zaXRpbmcoKSBjb25zdCB7IHJldHVybiBtX2ZvcmNlU29mdHdhcmVD
b21wb3NpdGluZzsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwCmluZGV4IGQxMDkzN2YzZjk1Y2YyMzQ3NGY2ZjllMzk5ZDVjMTZmNDlhN2E1
ZDEuLjIzZmI3ZmU4NTcxNGU0MGMwOGNmNjFjMzdkMjUzN2FjYWZjZjFiZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTE0Niw2ICsxNDYsNyBAQAog
I2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKICNpbmNsdWRlICJXaGVlbEV2ZW50LmgiCiAjaW5j
bHVkZSAiY2MvQ0NQcm94eS5oIgorI2luY2x1ZGUgImNjL0NDU2V0dGluZ3MuaCIKICNpbmNsdWRl
ICJwYWludGluZy9HcmFwaGljc0NvbnRleHRCdWlsZGVyLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0v
V2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgi
CkBAIC00NTgsNyArNDU5LDcgQEAgV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGll
bnQqIGNsaWVudCkKICNpZiBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpCiAgICAgcHJvdmlkZUJhdHRl
cnlUbyhtX3BhZ2UuZ2V0KCksIG1fYmF0dGVyeUNsaWVudC5nZXQoKSk7CiAjZW5kaWYKLSAgICAK
KwogICAgIG1fcGFnZS0+c2V0R3JvdXBOYW1lKHBhZ2VHcm91cE5hbWUpOwogCiAjaWYgRU5BQkxF
KFBBR0VfVklTSUJJTElUWV9BUEkpCkBAIC0zNDYwLDE5ICszNDYxLDExIEBAIHZvaWQgV2ViVmll
d0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFjdGl2ZSkKICAg
ICAgICAgVFJBQ0VfRVZFTlQoIldlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRp
bmdBY3RpdmUodHJ1ZSkiLCB0aGlzLCAwKTsKIAogICAgICAgICBXZWJMYXllclRyZWVWaWV3OjpT
ZXR0aW5ncyBsYXllclRyZWVWaWV3U2V0dGluZ3M7Ci0gICAgICAgIGxheWVyVHJlZVZpZXdTZXR0
aW5ncy5hY2NlbGVyYXRlUGFpbnRpbmcgPSBwYWdlKCktPnNldHRpbmdzKCktPmFjY2VsZXJhdGVk
RHJhd2luZ0VuYWJsZWQoKTsKICAgICAgICAgbGF5ZXJUcmVlVmlld1NldHRpbmdzLnNob3dGUFND
b3VudGVyID0gc2V0dGluZ3NJbXBsKCktPnNob3dGUFNDb3VudGVyKCk7CiAgICAgICAgIGxheWVy
VHJlZVZpZXdTZXR0aW5ncy5zaG93UGxhdGZvcm1MYXllclRyZWUgPSBzZXR0aW5nc0ltcGwoKS0+
c2hvd1BsYXRmb3JtTGF5ZXJUcmVlKCk7CiAgICAgICAgIGxheWVyVHJlZVZpZXdTZXR0aW5ncy5z
aG93UGFpbnRSZWN0cyA9IHNldHRpbmdzSW1wbCgpLT5zaG93UGFpbnRSZWN0cygpOwogICAgICAg
ICBsYXllclRyZWVWaWV3U2V0dGluZ3MuZm9yY2VTb2Z0d2FyZUNvbXBvc2l0aW5nID0gc2V0dGlu
Z3MoKS0+Zm9yY2VTb2Z0d2FyZUNvbXBvc2l0aW5nKCk7CiAKLSAgICAgICAgbGF5ZXJUcmVlVmll
d1NldHRpbmdzLnBlclRpbGVQYWludGluZyA9IHBhZ2UoKS0+c2V0dGluZ3MoKS0+cGVyVGlsZURy
YXdpbmdFbmFibGVkKCk7Ci0gICAgICAgIGxheWVyVHJlZVZpZXdTZXR0aW5ncy5wYXJ0aWFsU3dh
cEVuYWJsZWQgPSBwYWdlKCktPnNldHRpbmdzKCktPnBhcnRpYWxTd2FwRW5hYmxlZCgpOwotICAg
ICAgICBsYXllclRyZWVWaWV3U2V0dGluZ3MudGhyZWFkZWRBbmltYXRpb25FbmFibGVkID0gcGFn
ZSgpLT5zZXR0aW5ncygpLT50aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQoKTsKLQotICAgICAgICBs
YXllclRyZWVWaWV3U2V0dGluZ3MuZGVmYXVsdFRpbGVTaXplID0gc2V0dGluZ3NJbXBsKCktPmRl
ZmF1bHRUaWxlU2l6ZSgpOwotICAgICAgICBsYXllclRyZWVWaWV3U2V0dGluZ3MubWF4VW50aWxl
ZExheWVyU2l6ZSA9IHNldHRpbmdzSW1wbCgpLT5tYXhVbnRpbGVkTGF5ZXJTaXplKCk7Ci0KICAg
ICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QgPSBOb25Db21wb3NpdGVkQ29udGVudEhv
c3Q6OmNyZWF0ZShXZWJWaWV3SW1wbENvbnRlbnRQYWludGVyOjpjcmVhdGUodGhpcykpOwogICAg
ICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC0+c2V0U2hvd0RlYnVnQm9yZGVycyhwYWdl
KCktPnNldHRpbmdzKCktPnNob3dEZWJ1Z0JvcmRlcnMoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5k
ZXggZTYyMzFkMzRmMTE3YTg2MTk4YTFlZjVmMjY2Y2U4NzZhODg3OWViZS4uYzkwNTg0MDc1YTM0
MmFhMWFmMzFkZGY5MjM2MjlmMjg4ZDE1ZTY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2luY2x1ZGUgIkNDQW5pbWF0aW9uVGVzdENvbW1vbi5oIgogI2luY2x1ZGUg
IkNDTGF5ZXJUZXN0Q29tbW9uLmgiCisjaW5jbHVkZSAiQ0NUZXN0Q29tbW9uLmgiCiAjaW5jbHVk
ZSAiRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlLmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCkBAIC0zNSw2
ICszNiw3IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXllclRpbGluZ0RhdGEuaCIKICNpbmNsdWRlICJj
Yy9DQ1F1YWRDdWxsZXIuaCIKICNpbmNsdWRlICJjYy9DQ1Njcm9sbGJhckxheWVySW1wbC5oIgor
I2luY2x1ZGUgImNjL0NDU2V0dGluZ3MuaCIKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFBy
b3h5LmgiCiAjaW5jbHVkZSAiY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuaCIKICNpbmNsdWRlICJj
Yy9DQ1RleHR1cmVMYXllckltcGwuaCIKQEAgLTY1LDcgKzY3LDcgQEAgcHVibGljOgogICAgICAg
ICA6IG1fZGlkUmVxdWVzdENvbW1pdChmYWxzZSkKICAgICAgICAgLCBtX2RpZFJlcXVlc3RSZWRy
YXcoZmFsc2UpCiAgICAgewotICAgICAgICBDQ1NldHRpbmdzIHNldHRpbmdzOworICAgICAgICBD
Q0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOwogICAgICAgICBtX2hvc3RJbXBsID0gQ0NMYXll
clRyZWVIb3N0SW1wbDo6Y3JlYXRlKHNldHRpbmdzLCB0aGlzKTsKICAgICAgICAgbV9ob3N0SW1w
bC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgpLCBVbnRocm90dGxlZFVw
bG9hZGVyKTsKICAgICAgICAgbV9ob3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMTAs
IDEwKSk7CkBAIC04MCwxMCArODIsOSBAQCBwdWJsaWM6CiAKICAgICBQYXNzT3duUHRyPENDTGF5
ZXJUcmVlSG9zdEltcGw+IGNyZWF0ZUxheWVyVHJlZUhvc3QoYm9vbCBwYXJ0aWFsU3dhcCwgUGFz
c1JlZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gZ3JhcGhpY3NDb250ZXh0LCBQYXNzT3duUHRyPEND
TGF5ZXJJbXBsPiByb290UHRyKQogICAgIHsKLSAgICAgICAgQ0NTZXR0aW5ncyBzZXR0aW5nczsK
LQotICAgICAgICBzZXR0aW5ncy5wYXJ0aWFsU3dhcEVuYWJsZWQgPSBwYXJ0aWFsU3dhcDsKKyAg
ICAgICAgQ0NTZXR0aW5nczo6c2V0UGFydGlhbFN3YXBFbmFibGVkKHBhcnRpYWxTd2FwKTsKIAor
ICAgICAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOwogICAgICAgICBPd25QdHI8Q0NM
YXllclRyZWVIb3N0SW1wbD4gbXlIb3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0
ZShzZXR0aW5ncywgdGhpcyk7CiAKICAgICAgICAgbXlIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVy
UmVuZGVyZXIoZ3JhcGhpY3NDb250ZXh0LCBVbnRocm90dGxlZFVwbG9hZGVyKTsKQEAgLTE0OCw2
ICsxNDksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IG1f
aG9zdEltcGw7CiAgICAgYm9vbCBtX2RpZFJlcXVlc3RDb21taXQ7CiAgICAgYm9vbCBtX2RpZFJl
cXVlc3RSZWRyYXc7CisgICAgQ0NTY29wZWRTZXR0aW5ncyBtX3Njb3BlZFNldHRpbmdzOwogfTsK
IAogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBzY3JvbGxEZWx0YU5vTGF5ZXJzKQpA
QCAtMTA2NCw4ICsxMDY2LDggQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBwYXJ0
aWFsU3dhcFJlY2VpdmVzRGFtYWdlUmVjdCkKIAogICAgIC8vIFRoaXMgdGVzdCBjcmVhdGVzIGl0
cyBvd24gQ0NMYXllclRyZWVIb3N0SW1wbCwgc28KICAgICAvLyB0aGF0IHdlIGNhbiBmb3JjZSBw
YXJ0aWFsIHN3YXAgZW5hYmxlZC4KLSAgICBDQ1NldHRpbmdzIHNldHRpbmdzOwotICAgIHNldHRp
bmdzLnBhcnRpYWxTd2FwRW5hYmxlZCA9IHRydWU7CisgICAgQ0NMYXllclRyZWVTZXR0aW5ncyBz
ZXR0aW5nczsKKyAgICBDQ1NldHRpbmdzOjpzZXRQYXJ0aWFsU3dhcEVuYWJsZWQodHJ1ZSk7CiAg
ICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IGxheWVyVHJlZUhvc3RJbXBsID0gQ0NMYXll
clRyZWVIb3N0SW1wbDo6Y3JlYXRlKHNldHRpbmdzLCB0aGlzKTsKICAgICBsYXllclRyZWVIb3N0
SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY2NDb250ZXh0LCBVbnRocm90dGxlZFVwbG9h
ZGVyKTsKICAgICBsYXllclRyZWVIb3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoNTAw
LCA1MDApKTsKQEAgLTEyNzEsNyArMTI3Myw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdCwgcGFydGlhbFN3YXBOb1VwZGF0ZSkKICAgICBoYXJuZXNzLm11c3RTZXRTY2lzc29yKDAs
IDAsIDEwLCAxMCk7CiAKICAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gbXlIb3N0SW1w
bCA9IGNyZWF0ZUxheWVyVHJlZUhvc3QodHJ1ZSwgY29udGV4dCwgRmFrZUxheWVyV2l0aFF1YWRz
OjpjcmVhdGUoMSkpOwotICAgIAorCiAgICAgLy8gRHJhdyBvbmNlIHRvIG1ha2Ugc3VyZSBsYXll
ciBpcyBub3QgbmV3CiAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1lOwog
ICAgIEVYUEVDVF9UUlVFKG15SG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKQEAgLTEy
OTgsNyArMTMwMCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBXZWJTdHJpbmcoIkdM
X0NIUk9NSVVNX3Bvc3Rfc3ViX2J1ZmZlciIpOwogICAgICAgICByZXR1cm4gV2ViU3RyaW5nKCk7
CiAgICAgfQotICAgIAorCiAgICAgV2ViU3RyaW5nIGdldFJlcXVlc3RhYmxlRXh0ZW5zaW9uc0NI
Uk9NSVVNKCkKICAgICB7CiAgICAgICAgIHJldHVybiBXZWJTdHJpbmcoIkdMX0NIUk9NSVVNX3Bv
c3Rfc3ViX2J1ZmZlciIpOwpAQCAtMTMwNywxMCArMTMwOSwxMSBAQCBwdWJsaWM6CiAKIHN0YXRp
YyBQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IHNldHVwTGF5ZXJzRm9yT3BhY2l0eShi
b29sIHBhcnRpYWxTd2FwLCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KiBjbGllbnQpCiB7Ci0g
ICAgQ0NTZXR0aW5ncyBzZXR0aW5nczsKLSAgICBzZXR0aW5ncy5wYXJ0aWFsU3dhcEVuYWJsZWQg
PSBwYXJ0aWFsU3dhcDsKKyAgICBDQ1NldHRpbmdzOjpzZXRQYXJ0aWFsU3dhcEVuYWJsZWQocGFy
dGlhbFN3YXApOwogCiAgICAgUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250ZXh0ID0gQ0NH
cmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRl
R3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IFBhcnRpYWxTd2FwQ29u
dGV4dCgpKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KSk7
CisKKyAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOwogICAgIE93blB0cjxDQ0xheWVy
VHJlZUhvc3RJbXBsPiBteUhvc3RJbXBsID0gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKHNl
dHRpbmdzLCBjbGllbnQpOwogICAgIG15SG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVy
KGNvbnRleHQucmVsZWFzZSgpLCBVbnRocm90dGxlZFVwbG9hZGVyKTsKICAgICBteUhvc3RJbXBs
LT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMDAsIDEwMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggYWEyN2U4
OGY3ZGMzZWQ4MDgwMjEwNjQ5Y2NkMGJlMzAwMjdjZjBiZi4uZmYyMTM5YzdiNTFlNmZhNjNkYTFh
ODM1MmM1NWU2M2M0YTdkYzljNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVk
ZSAiY2MvQ0NMYXllckltcGwuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgi
CiAjaW5jbHVkZSAiY2MvQ0NTY29wZWRUaHJlYWRQcm94eS5oIgorI2luY2x1ZGUgImNjL0NDU2V0
dGluZ3MuaCIKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgiCiAjaW5jbHVkZSAi
Y2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgImNjL0NDVGhyZWFkVGFzay5oIgpAQCAt
MTU0LDcgKzE1NSw3IEBAIHB1YmxpYzoKIC8vIEFkYXB0cyBDQ0xheWVyVHJlZUhvc3RJbXBsIGZv
ciB0ZXN0LiBSdW5zIHJlYWwgY29kZSwgdGhlbiBpbnZva2VzIHRlc3QgaG9va3MuCiBjbGFzcyBN
b2NrTGF5ZXJUcmVlSG9zdEltcGwgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0SW1wbCB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8TW9ja0xheWVyVHJlZUhvc3RJbXBsPiBjcmVhdGUo
VGVzdEhvb2tzKiB0ZXN0SG9va3MsIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzLCBDQ0xheWVy
VHJlZUhvc3RJbXBsQ2xpZW50KiBjbGllbnQpCisgICAgc3RhdGljIFBhc3NPd25QdHI8TW9ja0xh
eWVyVHJlZUhvc3RJbXBsPiBjcmVhdGUoVGVzdEhvb2tzKiB0ZXN0SG9va3MsIGNvbnN0IENDTGF5
ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzLCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KiBjbGll
bnQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IE1vY2tMYXllclRyZWVIb3N0
SW1wbCh0ZXN0SG9va3MsIHNldHRpbmdzLCBjbGllbnQpKTsKICAgICB9CkBAIC0yMDIsNyArMjAz
LDcgQEAgcHJvdGVjdGVkOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBNb2NrTGF5ZXJUcmVlSG9z
dEltcGwoVGVzdEhvb2tzKiB0ZXN0SG9va3MsIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzLCBD
Q0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KiBjbGllbnQpCisgICAgTW9ja0xheWVyVHJlZUhvc3RJ
bXBsKFRlc3RIb29rcyogdGVzdEhvb2tzLCBjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0
aW5ncywgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCogY2xpZW50KQogICAgICAgICA6IENDTGF5
ZXJUcmVlSG9zdEltcGwoc2V0dGluZ3MsIGNsaWVudCkKICAgICAgICAgLCBtX3Rlc3RIb29rcyh0
ZXN0SG9va3MpCiAgICAgewpAQCAtMjE0LDEzICsyMTUsOSBAQCBwcml2YXRlOgogLy8gQWRhcHRz
IENDTGF5ZXJUcmVlSG9zdCBmb3IgdGVzdC4gSW5qZWN0cyBNb2NrTGF5ZXJUcmVlSG9zdEltcGwu
CiBjbGFzcyBNb2NrTGF5ZXJUcmVlSG9zdCA6IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3QgewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPE1vY2tMYXllclRyZWVIb3N0PiBjcmVhdGUoVGVz
dEhvb2tzKiB0ZXN0SG9va3MsIENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50LCBQYXNzUmVm
UHRyPExheWVyQ2hyb21pdW0+IHJvb3RMYXllciwgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3Mp
CisgICAgc3RhdGljIFBhc3NPd25QdHI8TW9ja0xheWVyVHJlZUhvc3Q+IGNyZWF0ZShUZXN0SG9v
a3MqIHRlc3RIb29rcywgQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gcm9vdExheWVyLCBjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0
aW5ncykKICAgICB7Ci0gICAgICAgIC8vIEZvciB0aGVzZSB0ZXN0cywgd2Ugd2lsbCBlbmFibGUg
dGhyZWFkZWQgYW5pbWF0aW9ucy4KLSAgICAgICAgQ0NTZXR0aW5ncyBzZXR0aW5nc0NvcHkgPSBz
ZXR0aW5nczsKLSAgICAgICAgc2V0dGluZ3NDb3B5LnRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZCA9
IHRydWU7Ci0KLSAgICAgICAgT3duUHRyPE1vY2tMYXllclRyZWVIb3N0PiBsYXllclRyZWVIb3N0
KGFkb3B0UHRyKG5ldyBNb2NrTGF5ZXJUcmVlSG9zdCh0ZXN0SG9va3MsIGNsaWVudCwgc2V0dGlu
Z3NDb3B5KSkpOworICAgICAgICBPd25QdHI8TW9ja0xheWVyVHJlZUhvc3Q+IGxheWVyVHJlZUhv
c3QoYWRvcHRQdHIobmV3IE1vY2tMYXllclRyZWVIb3N0KHRlc3RIb29rcywgY2xpZW50LCBzZXR0
aW5ncykpKTsKICAgICAgICAgYm9vbCBzdWNjZXNzID0gbGF5ZXJUcmVlSG9zdC0+aW5pdGlhbGl6
ZSgpOwogICAgICAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKICAgICAgICAgbGF5ZXJUcmVlSG9z
dC0+c2V0Um9vdExheWVyKHJvb3RMYXllcik7CkBAIC0yMzUsMTAgKzIzMiw3IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgUGFzc093blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBjcmVhdGVMYXll
clRyZWVIb3N0SW1wbChDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KiBjbGllbnQpCiAgICAgewot
ICAgICAgICAvLyBGb3IgdGhlc2UgdGVzdHMsIHdlIHdpbGwgZW5hYmxlIHRocmVhZGVkIGFuaW1h
dGlvbnMuCi0gICAgICAgIENDU2V0dGluZ3MgY29weVNldHRpbmdzID0gc2V0dGluZ3MoKTsKLSAg
ICAgICAgY29weVNldHRpbmdzLnRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZCA9IHRydWU7Ci0gICAg
ICAgIHJldHVybiBNb2NrTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShtX3Rlc3RIb29rcywgY29w
eVNldHRpbmdzLCBjbGllbnQpOworICAgICAgICByZXR1cm4gTW9ja0xheWVyVHJlZUhvc3RJbXBs
OjpjcmVhdGUobV90ZXN0SG9va3MsIHNldHRpbmdzKCksIGNsaWVudCk7CiAgICAgfQogCiAgICAg
dmlydHVhbCB2b2lkIGRpZEFkZEFuaW1hdGlvbigpIE9WRVJSSURFCkBAIC0yNTMsNyArMjQ3LDcg
QEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBNb2NrTGF5ZXJUcmVlSG9zdChUZXN0
SG9va3MqIHRlc3RIb29rcywgQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQsIGNvbnN0IEND
U2V0dGluZ3MmIHNldHRpbmdzKQorICAgIE1vY2tMYXllclRyZWVIb3N0KFRlc3RIb29rcyogdGVz
dEhvb2tzLCBDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwgY29uc3QgQ0NMYXllclRyZWVT
ZXR0aW5ncyYgc2V0dGluZ3MpCiAgICAgICAgIDogQ0NMYXllclRyZWVIb3N0KGNsaWVudCwgc2V0
dGluZ3MpCiAgICAgICAgICwgbV90ZXN0SG9va3ModGVzdEhvb2tzKQogICAgICAgICAsIG1fZGlk
QWRkQW5pbWF0aW9uV2FzQ2FsbGVkKGZhbHNlKQpAQCAtNjQxLDYgKzYzNSw5IEBAIHByb3RlY3Rl
ZDoKIAogICAgIHZpcnR1YWwgdm9pZCBydW5UZXN0KGJvb2wgdGhyZWFkZWQpCiAgICAgeworICAg
ICAgICAvLyBGb3IgdGhlc2UgdGVzdHMsIHdlIHdpbGwgZW5hYmxlIHRocmVhZGVkIGFuaW1hdGlv
bnMuCisgICAgICAgIFdlYkNvbXBvc2l0b3I6OnNldEFjY2VsZXJhdGVkQW5pbWF0aW9uRW5hYmxl
ZCh0cnVlKTsKKwogICAgICAgICBpZiAodGhyZWFkZWQpIHsKICAgICAgICAgICAgIG1fd2ViVGhy
ZWFkID0gYWRvcHRQdHIoV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5jcmVhdGVUaHJlYWQo
IkNDTGF5ZXJUcmVlSG9zdFRlc3QiKSk7CiAgICAgICAgICAgICBXZWJDb21wb3NpdG9yOjppbml0
aWFsaXplKG1fd2ViVGhyZWFkLmdldCgpKTsKQEAgLTY3Nyw3ICs2NzQsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgICAgIFdlYkNvbXBvc2l0b3I6OnNodXRkb3duKCk7CiAgICAgfQogCi0gICAgQ0NTZXR0
aW5ncyBtX3NldHRpbmdzOworICAgIENDTGF5ZXJUcmVlU2V0dGluZ3MgbV9zZXR0aW5nczsKICAg
ICBPd25QdHI8TW9ja0xheWVyVHJlZUhvc3RDbGllbnQ+IG1fY2xpZW50OwogICAgIE93blB0cjxD
Q0xheWVyVHJlZUhvc3Q+IG1fbGF5ZXJUcmVlSG9zdDsKIApAQCAtMjE0MCw3ICsyMTM3LDcgQEAg
cHVibGljOgogICAgICAgICA6IG1fbGF5ZXIoQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRl
VHJhY2tpbmc6OmNyZWF0ZSgmbV9kZWxlZ2F0ZSkpCiAgICAgewogICAgICAgICAvLyBNYWtlIHN1
cmUgcGFydGlhbCB0ZXh0dXJlIHVwZGF0ZXMgYXJlIHR1cm5lZCBvZmYuCi0gICAgICAgIG1fc2V0
dGluZ3MubWF4UGFydGlhbFRleHR1cmVVcGRhdGVzID0gMDsKKyAgICAgICAgV2ViQ29tcG9zaXRv
cjo6c2V0TWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKDApOwogICAgIH0KIAogICAgIHZpcnR1YWwg
dm9pZCBiZWdpblRlc3QoKQpAQCAtMjI0MCw3ICsyMjM3LDcgQEAgcHVibGljOgogICAgICAgICAs
IG1fbnVtQ29tbWl0cygwKQogICAgIHsKICAgICAgICAgLy8gQWxsb3cgb25lIHBhcnRpYWwgdGV4
dHVyZSB1cGRhdGUuCi0gICAgICAgIG1fc2V0dGluZ3MubWF4UGFydGlhbFRleHR1cmVVcGRhdGVz
ID0gMTsKKyAgICAgICAgV2ViQ29tcG9zaXRvcjo6c2V0TWF4UGFydGlhbFRleHR1cmVVcGRhdGVz
KDEpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBiZWdpblRlc3QoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1Rlc3RDb21tb24uaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NUZXN0Q29tbW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2EzNjg0YTYzZDk5
NDkyOTliZDk2Y2NlNTBkNzlkYTdjNmUwZWJkMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUZXN0Q29tbW9uLmgKQEAgLTAsMCArMSw0MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICog
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBDQ1Rlc3RDb21tb25faAorI2RlZmluZSBDQ1Rlc3RDb21tb25f
aAorCisjaW5jbHVkZSAiY2MvQ0NTZXR0aW5ncy5oIgorCituYW1lc3BhY2UgV2ViS2l0VGVzdHMg
eworCisvLyBJZiB5b3UgaGF2ZSBhIHRlc3QgdGhhdCBtb2RpZmllcyBvciB1c2VzIGdsb2JhbCBz
ZXR0aW5ncywga2VlcCBhbiBpbnN0YW5jZQorLy8gb2YgdGhpcyBjbGFzcyB0byBlbnN1cmUgdGhh
dCB5b3Ugc3RhcnQgYW5kIGVuZCB3aXRoIGEgY2xlYW4gc2xhdGUuCitjbGFzcyBDQ1Njb3BlZFNl
dHRpbmdzIHsKK3B1YmxpYzoKKyAgICBDQ1Njb3BlZFNldHRpbmdzKCkgeyBXZWJDb3JlOjpDQ1Nl
dHRpbmdzOjpyZXNldCgpOyB9CisgICAgfkNDU2NvcGVkU2V0dGluZ3MoKSB7IFdlYkNvcmU6OkND
U2V0dGluZ3M6OnJlc2V0KCk7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdFRlc3RzCisK
KyNlbmRpZiAvLyBDQ1Rlc3RDb21tb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggYTU2NTE0
NmE1ZDQ5MTk2NWI3YjFhZDI1ZDZmZTY5YzUxNTE1NDBmOS4uNzRmMjZkMGRiNTlmODM1MjBhMTc0
NTNjY2Q2MWVkMmEyOTY0M2Q2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC02NSw3ICs2NSw3
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBGYWtlQ0NMYXllclRyZWVIb3N0KCkKLSAgICAg
ICAgOiBDQ0xheWVyVHJlZUhvc3QoJm1fY2xpZW50LCBDQ1NldHRpbmdzKCkpCisgICAgICAgIDog
Q0NMYXllclRyZWVIb3N0KCZtX2NsaWVudCwgQ0NMYXllclRyZWVTZXR0aW5ncygpKQogICAgIHsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJD
aHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllckNocm9t
aXVtVGVzdC5jcHAKaW5kZXggODIxM2RkODEyMDcxZTVhMzUwYzJkNWYxNzYwZTBiYmZhOGQ0OGY1
ZS4uY2VmMzVjYzRjN2QzNDliNDgzYjNjNmZhZDgwZTcwMjM5ODk5NGQ1NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVzdC5jcHAKQEAgLTU3
LDcgKzU3LDcgQEAgbmFtZXNwYWNlIHsKIGNsYXNzIE1vY2tDQ0xheWVyVHJlZUhvc3QgOiBwdWJs
aWMgQ0NMYXllclRyZWVIb3N0IHsKIHB1YmxpYzoKICAgICBNb2NrQ0NMYXllclRyZWVIb3N0KCkK
LSAgICAgICAgOiBDQ0xheWVyVHJlZUhvc3QoJm1fZmFrZUNsaWVudCwgQ0NTZXR0aW5ncygpKQor
ICAgICAgICA6IENDTGF5ZXJUcmVlSG9zdCgmbV9mYWtlQ2xpZW50LCBDQ0xheWVyVHJlZVNldHRp
bmdzKCkpCiAgICAgewogICAgICAgICBpbml0aWFsaXplKCk7CiAgICAgfQpAQCAtNjE0LDcgKzYx
NCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBGYWtlQ0NMYXllclRyZWVIb3N0KCkKLSAg
ICAgICAgOiBDQ0xheWVyVHJlZUhvc3QoJm1fY2xpZW50LCBDQ1NldHRpbmdzKCkpCisgICAgICAg
IDogQ0NMYXllclRyZWVIb3N0KCZtX2NsaWVudCwgQ0NMYXllclRyZWVTZXR0aW5ncygpKQogICAg
IHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5
ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IDQwMTdkMzhiZmYyN2I4M2MwMWUw
MDIxMzYxYTUwNjg1ODQyYTJiOTcuLmVjY2JhYWQ3ZTg4NmViNzU5MzUzYTk3MTkzOTRlZDlmMDcw
YWUxMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5k
ZXJlckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9M
YXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcApAQCAtMjUsMTAgKzI1LDEyIEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAKKyNpbmNs
dWRlICJDQ1Rlc3RDb21tb24uaCIKICNpbmNsdWRlICJGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0Qu
aCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYkNvbXBvc2l0b3IuaCIKKyNpbmNsdWRlICJj
Yy9DQ1NldHRpbmdzLmgiCiAjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgogCiAj
aW5jbHVkZSA8Z21vY2svZ21vY2suaD4KQEAgLTM2LDYgKzM4LDcgQEAKIAogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdl
YktpdFRlc3RzOwogCiBjbGFzcyBGcmFtZUNvdW50aW5nTWVtb3J5QWxsb2NhdGlvblNldHRpbmdD
b250ZXh0IDogcHVibGljIEZha2VXZWJHcmFwaGljc0NvbnRleHQzRCB7CiBwdWJsaWM6CkBAIC04
MSw3ICs4NCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIENDUmVuZGVyZXJDbGllbnQgbWV0aG9kcy4K
ICAgICB2aXJ0dWFsIGNvbnN0IEludFNpemUmIGRldmljZVZpZXdwb3J0U2l6ZSgpIGNvbnN0IE9W
RVJSSURFIHsgc3RhdGljIEludFNpemUgZmFrZVNpemU7IHJldHVybiBmYWtlU2l6ZTsgfQotICAg
IHZpcnR1YWwgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCBPVkVSUklERSB7IHN0
YXRpYyBDQ1NldHRpbmdzIGZha2VTZXR0aW5nczsgcmV0dXJuIGZha2VTZXR0aW5nczsgfQorICAg
IHZpcnR1YWwgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCBPVkVS
UklERSB7IHN0YXRpYyBDQ0xheWVyVHJlZVNldHRpbmdzIGZha2VTZXR0aW5nczsgcmV0dXJuIGZh
a2VTZXR0aW5nczsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRMb3NlQ29udGV4dCgpIE9WRVJSSURF
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGUoKSBPVkVSUklERSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0RnVsbFJvb3RMYXllckRhbWFnZSgpIE9WRVJSSURFIHsg
bV9zZXRGdWxsUm9vdExheWVyRGFtYWdlQ291bnQrKzsgfQpAQCAtMTQ3LDYgKzE1MCw3IEBAIHBy
b3RlY3RlZDoKICAgICBGcmFtZUNvdW50aW5nTWVtb3J5QWxsb2NhdGlvblNldHRpbmdDb250ZXh0
JiBtX21vY2tDb250ZXh0OwogICAgIEZha2VDQ1JlbmRlcmVyQ2xpZW50IG1fbW9ja0NsaWVudDsK
ICAgICBGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtIG1fbGF5ZXJSZW5kZXJlckNocm9taXVtOwor
ICAgIENDU2NvcGVkU2V0dGluZ3MgbV9zY29wZWRTZXR0aW5nczsKIH07CiAKIC8vIFRlc3QgTGF5
ZXJSZW5kZXJlckNocm9taXVtIGRpc2NhcmRGcmFtZWJ1ZmZlciBmdW5jdGlvbmFsaXR5OgpAQCAt
MTk4LDcgKzIwMiw3IEBAIFRFU1RfRihMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LCBTd2FwQnVm
ZmVyc1doaWxlQmFja2J1ZmZlckRpc2NhcmRlZFNob3VsZElnbm9yCiAgICAgc3dhcEJ1ZmZlcnMo
KTsKICAgICBFWFBFQ1RfRVEoMCwgbV9tb2NrQ29udGV4dC5mcmFtZUNvdW50KCkpOwogICAgIEVY
UEVDVF9FUSgyLCBtX21vY2tDbGllbnQuc2V0RnVsbFJvb3RMYXllckRhbWFnZUNvdW50KCkpOwot
ICAgIAorCiAgICAgc3dhcEJ1ZmZlcnMoKTsKICAgICBFWFBFQ1RfRVEoMCwgbV9tb2NrQ29udGV4
dC5mcmFtZUNvdW50KCkpOwogICAgIEVYUEVDVF9FUSgzLCBtX21vY2tDbGllbnQuc2V0RnVsbFJv
b3RMYXllckRhbWFnZUNvdW50KCkpOwpAQCAtMjg5LDYgKzI5Myw3IEBAIHB1YmxpYzoKIC8vIFRo
aXMgdGVzdCBpc24ndCB1c2luZyB0aGUgc2FtZSBmaXh0dXJlIGFzIExheWVyUmVuZGVyZXJDaHJv
bWl1bVRlc3QsIGFuZCB5b3UgY2FuJ3QgbWl4IFRFU1QoKSBhbmQgVEVTVF9GKCkgd2l0aCB0aGUg
c2FtZSBuYW1lLCBoZW5jZSBMUkMyLgogVEVTVChMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0Miwg
aW5pdGlhbGl6YXRpb25Eb2VzTm90TWFrZVN5bmNocm9ub3VzQ2FsbHMpCiB7CisgICAgQ0NTY29w
ZWRTZXR0aW5ncyBzY29wZWRTZXR0aW5nczsKICAgICBGYWtlQ0NSZW5kZXJlckNsaWVudCBtb2Nr
Q2xpZW50OwogICAgIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0gbGF5ZXJSZW5kZXJlckNocm9t
aXVtKCZtb2NrQ2xpZW50LCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNz
Q29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBGb3JiaWRTeW5jaHJvbm91c0NhbGxD
b250ZXh0KSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KSk7
CiAKQEAgLTMzMCw2ICszMzUsNyBAQCBwcml2YXRlOgogCiBURVNUKExheWVyUmVuZGVyZXJDaHJv
bWl1bVRlc3QyLCBpbml0aWFsaXphdGlvbldpdGhRdWlja2x5TG9zdENvbnRleHREb2VzTm90QXNz
ZXJ0KQogeworICAgIENDU2NvcGVkU2V0dGluZ3Mgc2NvcGVkU2V0dGluZ3M7CiAgICAgRmFrZUND
UmVuZGVyZXJDbGllbnQgbW9ja0NsaWVudDsKICAgICBGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVt
IGxheWVyUmVuZGVyZXJDaHJvbWl1bSgmbW9ja0NsaWVudCwgR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgTG9z
ZUNvbnRleHRPbkZpcnN0R2V0Q29udGV4dCksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJl
Y3RseVRvSG9zdFdpbmRvdykpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1RleHR1cmVMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL1RleHR1cmVMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggYjYwMDE3ZmQ5YWEw
ODBiNGZkN2Y2OWY5YTBmZWUwYzI2OGI0NDllYS4uZDBjYzNkOTZmMTRlYmNmZThkM2M5OGIzZGY2
MjdjMGQ2M2E0OGNlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9U
ZXh0dXJlTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvVGV4dHVyZUxheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtNDMsNyArNDMsNyBAQCBuYW1l
c3BhY2UgewogY2xhc3MgTW9ja0NDTGF5ZXJUcmVlSG9zdCA6IHB1YmxpYyBDQ0xheWVyVHJlZUhv
c3QgewogcHVibGljOgogICAgIE1vY2tDQ0xheWVyVHJlZUhvc3QoKQotICAgICAgICA6IENDTGF5
ZXJUcmVlSG9zdCgmbV9mYWtlQ2xpZW50LCBDQ1NldHRpbmdzKCkpCisgICAgICAgIDogQ0NMYXll
clRyZWVIb3N0KCZtX2Zha2VDbGllbnQsIENDTGF5ZXJUcmVlU2V0dGluZ3MoKSkKICAgICB7CiAg
ICAgICAgIGluaXRpYWxpemUoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCBmMGMxMzEzZjkw
ZWU3NTJkNGMyMjE3OGFkMzk0NDc4YjI1NzYxNjIwLi43MThhMzY3YzgxZDJlODY4NjA1NTg5Zjdm
YjhkYmYzNjM1OGRhYmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNs
dWRlICJDQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiRmFrZUNDTGF5ZXJUcmVl
SG9zdENsaWVudC5oIgogI2luY2x1ZGUgIldlYkNvbXBvc2l0b3IuaCIKKyNpbmNsdWRlICJjYy9D
Q1NldHRpbmdzLmgiCiAjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIiAvLyBGb3Ig
RGVidWdTY29wZWRTZXRJbXBsVGhyZWFkCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KICNpbmNs
dWRlIDxwdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KQEAgLTc5Nyw3ICs3OTgsNyBA
QCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHNraXBzRHJhd0dldHNSZXNldCkKICAgICAv
LyBJbml0aWFsaXplIHdpdGhvdXQgdGhyZWFkaW5nIHN1cHBvcnQuCiAgICAgV2ViS2l0OjpXZWJD
b21wb3NpdG9yOjppbml0aWFsaXplKDApOwogICAgIEZha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQg
ZmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudDsKLSAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0PiBj
Y0xheWVyVHJlZUhvc3QgPSBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSgmZmFrZUNDTGF5ZXJUcmVl
SG9zdENsaWVudCwgQ0NTZXR0aW5ncygpKTsKKyAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0PiBj
Y0xheWVyVHJlZUhvc3QgPSBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSgmZmFrZUNDTGF5ZXJUcmVl
SG9zdENsaWVudCwgQ0NMYXllclRyZWVTZXR0aW5ncygpKTsKIAogICAgIC8vIENyZWF0ZSB0d28g
MzAwIHggMzAwIHRpbGVkIGxheWVycy4KICAgICBJbnRTaXplIGNvbnRlbnRCb3VuZHMoMzAwLCAz
MDApOwpAQCAtODczLDEwICs4NzQsMTIgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBo
dWdlTGF5ZXJVcGRhdGVDcmFzaCkKIAogVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwYXJ0
aWFsVXBkYXRlcykKIHsKLSAgICBDQ1NldHRpbmdzIHNldHRpbmdzOwotICAgIHNldHRpbmdzLm1h
eFBhcnRpYWxUZXh0dXJlVXBkYXRlcyA9IDQ7CiAgICAgLy8gSW5pdGlhbGl6ZSB3aXRob3V0IHRo
cmVhZGluZyBzdXBwb3J0LgogICAgIFdlYktpdDo6V2ViQ29tcG9zaXRvcjo6aW5pdGlhbGl6ZSgw
KTsKKworICAgIENDTGF5ZXJUcmVlU2V0dGluZ3Mgc2V0dGluZ3M7CisgICAgQ0NTZXR0aW5nczo6
c2V0TWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKDQpOworCiAgICAgRmFrZUNDTGF5ZXJUcmVlSG9z
dENsaWVudCBmYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50OwogICAgIE93blB0cjxDQ0xheWVyVHJl
ZUhvc3Q+IGNjTGF5ZXJUcmVlSG9zdCA9IENDTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCZmYWtlQ0NM
YXllclRyZWVIb3N0Q2xpZW50LCBzZXR0aW5ncyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvVHJlZVN5bmNocm9uaXplclRlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9UcmVlU3luY2hyb25pemVyVGVzdC5jcHAKaW5kZXggZWRkZWQ1YWQy
ZWJkNjc2M2RjZTFjODRkMTQ0NGI4M2I3ZjgwYTgwNi4uMDg1OTdmMWRjNjJkMzAzYTMxZjUwNWVi
MTZhNjE2MDA1OWVlYjhiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9UcmVlU3luY2hyb25pemVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9UcmVlU3luY2hyb25pemVyVGVzdC5jcHAKQEAgLTE2Myw3ICsxNjMsNyBAQCBURVNUKFRy
ZWVTeW5jaHJvbml6ZXJUZXN0LCBzeW5jU2ltcGxlVHJlZUZyb21FbXB0eSkKIHsKICAgICBEZWJ1
Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKIAotICAgIENDU2V0dGluZ3Mgc2V0dGluZ3M7Cisg
ICAgQ0NMYXllclRyZWVTZXR0aW5ncyBzZXR0aW5nczsKICAgICBPd25QdHI8Q0NMYXllclRyZWVI
b3N0SW1wbD4gaG9zdEltcGwgPSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoc2V0dGluZ3Ms
IDApOwogCiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGxheWVyVHJlZVJvb3QgPSBMYXllckNo
cm9taXVtOjpjcmVhdGUoKTsKQEAgLTE4MSw3ICsxODEsNyBAQCBURVNUKFRyZWVTeW5jaHJvbml6
ZXJUZXN0LCBzeW5jU2ltcGxlVHJlZVJldXNpbmdMYXllcnMpCiAgICAgRGVidWdTY29wZWRTZXRJ
bXBsVGhyZWFkIGltcGw7CiAgICAgVmVjdG9yPGludD4gY2NMYXllckRlc3RydWN0aW9uTGlzdDsK
IAotICAgIENDU2V0dGluZ3Mgc2V0dGluZ3M7CisgICAgQ0NMYXllclRyZWVTZXR0aW5ncyBzZXR0
aW5nczsKICAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gaG9zdEltcGwgPSBDQ0xheWVy
VHJlZUhvc3RJbXBsOjpjcmVhdGUoc2V0dGluZ3MsIDApOwogCiAgICAgUmVmUHRyPExheWVyQ2hy
b21pdW0+IGxheWVyVHJlZVJvb3QgPSBNb2NrTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCZjY0xheWVy
RGVzdHJ1Y3Rpb25MaXN0KTsKQEAgLTIxMSw3ICsyMTEsNyBAQCBURVNUKFRyZWVTeW5jaHJvbml6
ZXJUZXN0LCBzeW5jU2ltcGxlVHJlZUFuZFRyYWNrU3RhY2tpbmdPcmRlckNoYW5nZSkKICAgICBE
ZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKICAgICBWZWN0b3I8aW50PiBjY0xheWVyRGVz
dHJ1Y3Rpb25MaXN0OwogCi0gICAgQ0NTZXR0aW5ncyBzZXR0aW5nczsKKyAgICBDQ0xheWVyVHJl
ZVNldHRpbmdzIHNldHRpbmdzOwogICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBob3N0
SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShzZXR0aW5ncywgMCk7CiAKICAgICAv
LyBTZXQgdXAgdGhlIHRyZWUgYW5kIHN5bmMgb25jZS4gY2hpbGQyIG5lZWRzIHRvIGJlIHN5bmNl
ZCBoZXJlLCB0b28sIGV2ZW4gdGhvdWdoIHdlCkBAIC0yNDAsNyArMjQwLDcgQEAgVEVTVChUcmVl
U3luY2hyb25pemVyVGVzdCwgc3luY1NpbXBsZVRyZWVBbmRQcm9wZXJ0aWVzKQogewogICAgIERl
YnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwogCi0gICAgQ0NTZXR0aW5ncyBzZXR0aW5nczsK
KyAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOwogICAgIE93blB0cjxDQ0xheWVyVHJl
ZUhvc3RJbXBsPiBob3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShzZXR0aW5n
cywgMCk7CiAKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbGF5ZXJUcmVlUm9vdCA9IExheWVy
Q2hyb21pdW06OmNyZWF0ZSgpOwpAQCAtMjc3LDcgKzI3Nyw3IEBAIFRFU1QoVHJlZVN5bmNocm9u
aXplclRlc3QsIHJldXNlQ0NMYXllcnNBZnRlclN0cnVjdHVyYWxDaGFuZ2UpCiAgICAgRGVidWdT
Y29wZWRTZXRJbXBsVGhyZWFkIGltcGw7CiAgICAgVmVjdG9yPGludD4gY2NMYXllckRlc3RydWN0
aW9uTGlzdDsKIAotICAgIENDU2V0dGluZ3Mgc2V0dGluZ3M7CisgICAgQ0NMYXllclRyZWVTZXR0
aW5ncyBzZXR0aW5nczsKICAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gaG9zdEltcGwg
PSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoc2V0dGluZ3MsIDApOwogCiAgICAgLy8gU2V0
IHVwIGEgdHJlZSB3aXRoIHRoaXMgc29ydCBvZiBzdHJ1Y3R1cmU6CkBAIC0zMjcsNyArMzI3LDcg
QEAgVEVTVChUcmVlU3luY2hyb25pemVyVGVzdCwgc3luY1NpbXBsZVRyZWVUaGVuRGVzdHJveSkK
ICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKICAgICBWZWN0b3I8aW50PiBjY0xh
eWVyRGVzdHJ1Y3Rpb25MaXN0OwogCi0gICAgQ0NTZXR0aW5ncyBzZXR0aW5nczsKKyAgICBDQ0xh
eWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOwogICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBs
PiBob3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShzZXR0aW5ncywgMCk7CiAK
ICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gb2xkTGF5ZXJUcmVlUm9vdCA9IE1vY2tMYXllckNo
cm9taXVtOjpjcmVhdGUoJmNjTGF5ZXJEZXN0cnVjdGlvbkxpc3QpOwpAQCAtMzYwLDcgKzM2MCw3
IEBAIFRFU1QoVHJlZVN5bmNocm9uaXplclRlc3QsIHN5bmNNYXNrUmVwbGljYUFuZFJlcGxpY2FN
YXNrTGF5ZXJzKQogewogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwogCi0gICAg
Q0NTZXR0aW5ncyBzZXR0aW5nczsKKyAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOwog
ICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBob3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9z
dEltcGw6OmNyZWF0ZShzZXR0aW5ncywgMCk7CiAKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
bGF5ZXJUcmVlUm9vdCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwpAQCAtNDA2LDcgKzQwNiw3
IEBAIFRFU1QoVHJlZVN5bmNocm9uaXplclRlc3QsIHN5bmNocm9uaXplQW5pbWF0aW9ucykKIHsK
ICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKIAotICAgIENDU2V0dGluZ3Mgc2V0
dGluZ3M7CisgICAgQ0NMYXllclRyZWVTZXR0aW5ncyBzZXR0aW5nczsKICAgICBPd25QdHI8Q0NM
YXllclRyZWVIb3N0SW1wbD4gaG9zdEltcGwgPSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUo
c2V0dGluZ3MsIDApOwogCiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGxheWVyVHJlZVJvb3Qg
PSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146666</attachid>
            <date>2012-06-08 17:32:57 -0700</date>
            <delta_ts>2012-06-11 10:30:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88384-20120608203256.patch</filename>
            <type>text/plain</type>
            <size>72095</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5ODYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBjMDU3MTc2ZDE5ODFi
ZWFjNmNlZWZiYTQxOTZiMDExMWQ4ZDI2MDgyLi4wMDY2OWU2NWQyN2I3OWUzMzM0ZDA1Y2U3YmVk
MjgxNWYxODBkMmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNi0wOCAg
SWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IENlcnRhaW4gc2V0dGluZ3MgaW4gQ0NTZXR0aW5ncyBjb3VsZCBiZSBnbG9iYWwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4Mzg0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMv
V2ViTGF5ZXJUcmVlVmlldy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgIChTZXR0aW5n
cyk6CisKIDIwMTItMDYtMDYgIE1hcmsgUGlsZ3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFtDaHJvbWl1bV0gTW92ZSBjcmVhdGVNZXNzYWdlUG9ydENoYW5uZWwgdG8gUGxh
dGZvcm0uaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDhhMDlmMzQ3MDlhNDNmNjYxNDhkOGIzZWE2ZjY1NzU4MDk2
ZGE0YzkuLjNiZGZhY2ZkNTE0MzUzNzUxMzQ1NGYwZTM4YmI4OTg4OWE0ZDc0ZjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw3NiBAQAorMjAxMi0wNi0wOCAgSWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIENlcnRhaW4gc2V0dGluZ3MgaW4gQ0NT
ZXR0aW5ncyBjb3VsZCBiZSBnbG9iYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg4Mzg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBObyBmdW5jdGlvbmFsaXR5IGNoYW5nZS4KKwor
ICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgICogcGFnZS9TZXR0
aW5ncy5oOgorICAgICAgICAoU2V0dGluZ3MpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRMYXllckNocm9taXVtOjpjcmVhdGVUZXh0dXJlVXBkYXRlcklmTmVlZGVkKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OmFkZEFuaW1hdGlvbik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlVGlsZVNpemVBbmRUaWxp
bmdPcHRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVi
dWdSZWN0SGlzdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0RlYnVnUmVjdEhpc3Rvcnk6
OmVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NEZWJ1Z1JlY3RIaXN0b3J5OjpzYXZlRGVi
dWdSZWN0c0ZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKENDRGVidWdSZWN0SGlzdG9yeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRz
VXBEaXNwbGF5OjplbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDSGVhZHNVcERpc3BsYXk6
OnNob3dQbGF0Zm9ybUxheWVyVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNw
bGF5OjpzaG93RGVidWdSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5
OjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNDSGVhZHNVcERpc3BsYXk6OmRyYXdIdWRDb250
ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3RGVidWdSZWN0
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlz
cGxheS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ0hlYWRzVXBEaXNwbGF5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjphbmltYXRlTGF5ZXJzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJUcmVlU2V0dGluZ3M6OkNDTGF5ZXJUcmVlU2V0dGluZ3MpOgorICAgICAg
ICAoQ0NMYXllclRyZWVTZXR0aW5ncyk6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpzZXR0aW5ncyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6Q0NMYXllclRyZWVIb3N0SW1wbCk6CisgICAgICAg
IChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVM
YXllcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuaDoKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyZXIuaDoKKyAgICAgICAgKEND
UmVuZGVyZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJlcjo6c2V0dGluZ3Mp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2V0dGluZ3MuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTZXR0aW5n
czo6cGVyVGlsZVBhaW50aW5nRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NldHRpbmdz
OjpzZXRQZXJUaWxlUGFpbnRpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2V0dGlu
Z3M6OnBhcnRpYWxTd2FwRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NldHRpbmdzOjpz
ZXRQYXJ0aWFsU3dhcEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTZXR0aW5nczo6YWNj
ZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2V0dGluZ3M6
OnNldEFjY2VsZXJhdGVkQW5pbWF0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Nl
dHRpbmdzOjpyZXNldCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTZXR0aW5ncy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NTZXR0
aW5ncyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcDoKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaDoKKyAgICAgICAgKEludGVybmFsU2V0dGluZ3Mp
OgorCiAyMDEyLTA2LTA4ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgW2Nocm9taXVtXSBDbGVhbiB1cCBzb21lIHVubmVjZXNzYXJ5IExheWVyQ2hyb21p
dW0uaCBpbmNsdWRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBkZWU4ZmU4NmI3MWZl
YTc1ZjIzZTE0MDY3NWI0MjMzMGNjOWVlZTg4Li5lMjI4MTRkMjBjNzcwYTVlNDg5OTczZDI5NzU5
MmNjZTllY2NkNjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBA
CisyMDEyLTA2LTA4ICBJYW4gVm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFtjaHJvbWl1bV0gQ2VydGFpbiBzZXR0aW5ncyBpbiBDQ1NldHRpbmdzIGNvdWxkIGJlIGds
b2JhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODgz
ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YktpdC5neXBpOgorICAgICAgICAqIHB1YmxpYy9XZWJDb21wb3NpdG9yLmg6CisgICAgICAgIChX
ZWJDb21wb3NpdG9yKToKKyAgICAgICAgKiBwdWJsaWMvV2ViU2V0dGluZ3MuaDoKKyAgICAgICAg
KiBzcmMvV2ViQ29tcG9zaXRvckltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3Np
dG9yOjpzaHV0ZG93bik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b21wb3NpdG9yOjpzZXRQZXJUaWxlUGFpbnRpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29tcG9zaXRvcjo6c2V0UGFydGlhbFN3YXBFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29tcG9zaXRvcjo6c2V0QWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkKToKKyAgICAgICAg
KiBzcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5nczo6b3BlcmF0b3IgQ0NMYXllclRyZWVT
ZXR0aW5ncyk6CisgICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5jcHA6CisgICAgICAgICog
c3JjL1dlYlNldHRpbmdzSW1wbC5oOgorICAgICAgICAoV2ViU2V0dGluZ3NJbXBsKToKKyAgICAg
ICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
V2ViVmlld0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVy
YXRlZENvbXBvc2l0aW5nQWN0aXZlKToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RJ
bXBsVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHA6Cisg
ICAgICAgIChXVEY6Ok1vY2tMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKFdU
Rjo6TW9ja0xheWVyVHJlZUhvc3RJbXBsOjpNb2NrTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAg
ICAoV1RGOjpNb2NrTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKToKKyAgICAgICAgKFdURjo6TW9ja0xh
eWVyVHJlZUhvc3Q6OmNyZWF0ZUxheWVyVHJlZUhvc3RJbXBsKToKKyAgICAgICAgKFdURjo6TW9j
a0xheWVyVHJlZUhvc3Q6Ok1vY2tMYXllclRyZWVIb3N0KToKKyAgICAgICAgKFdURjo6Q0NMYXll
clRyZWVIb3N0VGVzdDo6cnVuVGVzdCk6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3RUZXN0KToK
KyAgICAgICAgKiB0ZXN0cy9DQ1Rlc3RDb21tb24uaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5oLgorICAg
ICAgICAoV2ViS2l0VGVzdHMpOgorICAgICAgICAoQ0NTY29wZWRTZXR0aW5ncyk6CisgICAgICAg
IChXZWJLaXRUZXN0czo6Q0NTY29wZWRTZXR0aW5nczo6Q0NTY29wZWRTZXR0aW5ncyk6CisgICAg
ICAgIChXZWJLaXRUZXN0czo6Q0NTY29wZWRTZXR0aW5nczo6fkNDU2NvcGVkU2V0dGluZ3MpOgor
ICAgICAgICAqIHRlc3RzL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAgICAo
V2ViS2l0VGVzdHM6Ok1vY2tMYXllclRyZWVIb3N0OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0
VGVzdHM6Ok1vY2tMYXllclRyZWVIb3N0OjpjcmVhdGVMYXllclRyZWVIb3N0SW1wbCk6CisgICAg
ICAgIChXZWJLaXRUZXN0czo6TW9ja0xheWVyVHJlZUhvc3Q6Ok1vY2tMYXllclRyZWVIb3N0KToK
KyAgICAgICAgKFdlYktpdFRlc3RzOjpHcmFwaGljc0xheWVyQ2hyb21pdW1UZXN0OjpHcmFwaGlj
c0xheWVyQ2hyb21pdW1UZXN0KToKKyAgICAgICAgKiB0ZXN0cy9MYXllckNocm9taXVtVGVzdC5j
cHA6CisgICAgICAgICogdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHA6CisgICAg
ICAgIChMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0KToKKyAgICAgICAgKFRFU1RfRik6CisgICAg
ICAgIChURVNUKToKKyAgICAgICAgKiB0ZXN0cy9UZXh0dXJlTGF5ZXJDaHJvbWl1bVRlc3QuY3Bw
OgorICAgICAgICAqIHRlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAgICAq
IHRlc3RzL1RyZWVTeW5jaHJvbml6ZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdFRlc3RzOjpU
RVNUKToKKwogMjAxMi0wNi0wOCAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFtjaHJvbWl1bV0gQ2xlYW4gdXAgc29tZSB1bm5lY2Vzc2FyeSBMYXllckNo
cm9taXVtLmggaW5jbHVkZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJMYXllclRyZWVWaWV3LmgKaW5kZXggMjNkMGQ2M2NlOWRkMjhhNWI1YmFkNzEyOGVhYTE0
OWE5NzNiOWRlNi4uOGM2MzQyYmY4YmQxYTFjNmE4ZWI0ZjgzYTE2OGMwNjlkY2E3ZmQyMyAxMDA2
NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3
LmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3
LmgKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ0NMYXll
clRyZWVIb3N0Owotc3RydWN0IENDU2V0dGluZ3M7CitzdHJ1Y3QgQ0NMYXllclRyZWVTZXR0aW5n
czsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01NSw5ICs1NSw2IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgICwgc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKGZhbHNlKQogICAgICAgICAgICAgLCBz
aG93UGFpbnRSZWN0cyhmYWxzZSkKICAgICAgICAgICAgICwgcmVmcmVzaFJhdGUoMCkKLSAgICAg
ICAgICAgICwgcGVyVGlsZVBhaW50aW5nKGZhbHNlKQotICAgICAgICAgICAgLCBwYXJ0aWFsU3dh
cEVuYWJsZWQoZmFsc2UpCi0gICAgICAgICAgICAsIHRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZChm
YWxzZSkKICAgICAgICAgICAgICwgZGVmYXVsdFRpbGVTaXplKFdlYlNpemUoMjU2LCAyNTYpKQog
ICAgICAgICAgICAgLCBtYXhVbnRpbGVkTGF5ZXJTaXplKFdlYlNpemUoNTEyLCA1MTIpKQogICAg
ICAgICAgICAgLCBkZXZpY2VTY2FsZUZhY3RvcigxKQpAQCAtNzAsMTQgKzY3LDExIEBAIHB1Ymxp
YzoKICAgICAgICAgYm9vbCBzaG93UGxhdGZvcm1MYXllclRyZWU7CiAgICAgICAgIGJvb2wgc2hv
d1BhaW50UmVjdHM7CiAgICAgICAgIGRvdWJsZSByZWZyZXNoUmF0ZTsKLSAgICAgICAgYm9vbCBw
ZXJUaWxlUGFpbnRpbmc7Ci0gICAgICAgIGJvb2wgcGFydGlhbFN3YXBFbmFibGVkOwotICAgICAg
ICBib29sIHRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZDsKICAgICAgICAgV2ViU2l6ZSBkZWZhdWx0
VGlsZVNpemU7CiAgICAgICAgIFdlYlNpemUgbWF4VW50aWxlZExheWVyU2l6ZTsKICAgICAgICAg
ZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3I7CiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAg
ICAgIG9wZXJhdG9yIFdlYkNvcmU6OkNDU2V0dGluZ3MoKSBjb25zdDsKKyAgICAgICAgb3BlcmF0
b3IgV2ViQ29yZTo6Q0NMYXllclRyZWVTZXR0aW5ncygpIGNvbnN0OwogI2VuZGlmCiAgICAgfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCmluZGV4IDEyZTZjYTM5M2IwYjkzMmNlYTY4YTcyMWFiOWJlZWJiOWY1
NGQ4YWEuLmFmMmJmM2MxNjMzZmRlYzRhZTQ0NWRlNzMzZTUwZTZhNGMzNTg3N2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKQEAgLTM3MzksNiArMzczOSw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTY29wZWRUaHJlYWRQcm94eS5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5jcHAnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5
ZXJJbXBsLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2V0dGluZ3MuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NldHRpbmdzLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2hhcmVkUXVhZFN0YXRlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuaCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAnLApAQCAtNjY0
Miw3ICs2NjQ0LDcgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9z
ZWFyY2hTbWFsbEdyYXkucG5nJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0lt
YWdlcy9zZWFyY2hTbWFsbFdoaXRlLnBuZycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250
LWVuZC9JbWFnZXMvc2VhcmNoTmV4dC5wbmcnLAotICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9u
dC1lbmQvSW1hZ2VzL3NlYXJjaFByZXYucG5nJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvZnJv
bnQtZW5kL0ltYWdlcy9zZWFyY2hQcmV2LnBuZycsICAgICAgICAgICAgCiAgICAgICAgICAgICAn
aW5zcGVjdG9yL2Zyb250LWVuZC9JbWFnZXMvc2VnbWVudC5wbmcnLAogICAgICAgICAgICAgJ2lu
c3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL3NlZ21lbnRFbmQucG5nJywKICAgICAgICAgICAgICdp
bnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9zZWdtZW50SG92ZXIucG5nJywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZXR0aW5ncy5jcHAKaW5kZXggOTZjMDJhZDMwMWNjMTI1ZDI2Yjc2ODFiNmU2YTI2MTQ3Y2E3Nzkw
Zi4uNjUyN2Y1MTgzOThmYTA0OGZhOWUwNjZhMGE1ZDczMDNmNzhhMTE0YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5ncy5jcHAKQEAgLTI1NywxNSArMjU3LDEyIEBAIFNldHRpbmdzOjpTZXR0aW5ncyhQ
YWdlKiBwYWdlKQogICAgICwgbV9zaG91bGREaXNwbGF5Q2FwdGlvbnMoZmFsc2UpCiAgICAgLCBt
X3Nob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zKGZhbHNlKQogI2VuZGlmCi0gICAgLCBtX3Bl
clRpbGVEcmF3aW5nRW5hYmxlZChmYWxzZSkKLSAgICAsIG1fcGFydGlhbFN3YXBFbmFibGVkKGZh
bHNlKQogICAgICwgbV9zY3JvbGxpbmdDb29yZGluYXRvckVuYWJsZWQoZmFsc2UpCiAgICAgLCBt
X25vdGlmaWNhdGlvbnNFbmFibGVkKHRydWUpCiAgICAgLCBtX25lZWRzSXNMb2FkaW5nSW5BUElT
ZW5zZVF1aXJrKGZhbHNlKQogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgLCBtX3RvdWNo
RXZlbnRFbXVsYXRpb25FbmFibGVkKGZhbHNlKQogI2VuZGlmCi0gICAgLCBtX3RocmVhZGVkQW5p
bWF0aW9uRW5hYmxlZChmYWxzZSkKICAgICAsIG1fc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRp
b24oZmFsc2UpCiAgICAgLCBtX3dhbnRzQmFsYW5jZWRTZXREZWZlcnNMb2FkaW5nQmVoYXZpb3Io
ZmFsc2UpCiAgICAgLCBtX3JlcXVlc3RBbmltYXRpb25GcmFtZUVuYWJsZWQodHJ1ZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2V0dGluZ3MuaAppbmRleCBkMzBmNGMwNDgyZTg2MDBmMGZkMTYyM2M1ZWEzNWM3NjM0NzUx
NjRjLi43OWFmM2E0Yzk4OTJlNDkzN2M4NTVmYjkzZDM3OTZiMDYxZGFjYjZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5ncy5oCkBAIC01MzYsMTIgKzUzNiw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgYm9vbCBzaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9ucygpIGNvbnN0IHsgcmV0dXJu
IG1fc2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnM7IH0KICNlbmRpZgogCi0gICAgICAgIHZv
aWQgc2V0UGVyVGlsZURyYXdpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3BlclRpbGVEcmF3
aW5nRW5hYmxlZCA9IGVuYWJsZWQ7IH0KLSAgICAgICAgYm9vbCBwZXJUaWxlRHJhd2luZ0VuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiBtX3BlclRpbGVEcmF3aW5nRW5hYmxlZDsgfQotCi0gICAgICAg
IHZvaWQgc2V0UGFydGlhbFN3YXBFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3BhcnRpYWxTd2Fw
RW5hYmxlZCA9IGVuYWJsZWQ7IH0KLSAgICAgICAgYm9vbCBwYXJ0aWFsU3dhcEVuYWJsZWQoKSBj
b25zdCB7IHJldHVybiBtX3BhcnRpYWxTd2FwRW5hYmxlZDsgfQotCiAgICAgICAgIHZvaWQgc2V0
U2Nyb2xsaW5nQ29vcmRpbmF0b3JFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3Njcm9sbGluZ0Nv
b3JkaW5hdG9yRW5hYmxlZCA9IGVuYWJsZWQ7IH0KICAgICAgICAgYm9vbCBzY3JvbGxpbmdDb29y
ZGluYXRvckVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yRW5h
YmxlZDsgfQogCkBAIC01NTcsOSArNTUxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBib29sIGlzVG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3Rv
dWNoRXZlbnRFbXVsYXRpb25FbmFibGVkOyB9CiAjZW5kaWYKIAotICAgICAgICB2b2lkIHNldFRo
cmVhZGVkQW5pbWF0aW9uRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV90aHJlYWRlZEFuaW1hdGlv
bkVuYWJsZWQgPSBlbmFibGVkOyB9Ci0gICAgICAgIGJvb2wgdGhyZWFkZWRBbmltYXRpb25FbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gbV90aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQ7IH0KLQogICAg
ICAgICB2b2lkIHNldFNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKGJvb2wgZW5hYmxlZCkg
eyBtX3Nob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uID0gZW5hYmxlZDsgfQogICAgICAgICBi
b29sIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaG91
bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbjsgfQogCkBAIC03NDYsOSArNzM3LDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1fc2hvdWxkRGlzcGxheUNhcHRpb25zIDogMTsK
ICAgICAgICAgYm9vbCBtX3Nob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zIDogMTsKICNlbmRp
ZgotICAgICAgICBib29sIG1fcGVyVGlsZURyYXdpbmdFbmFibGVkIDogMTsKLSAgICAgICAgYm9v
bCBtX3BhcnRpYWxTd2FwRW5hYmxlZCA6IDE7Ci0KICAgICAgICAgYm9vbCBtX3Njcm9sbGluZ0Nv
b3JkaW5hdG9yRW5hYmxlZCA6IDE7CiAKICAgICAgICAgYm9vbCBtX25vdGlmaWNhdGlvbnNFbmFi
bGVkIDogMTsKQEAgLTc1Nyw3ICs3NDUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5B
QkxFKFRPVUNIX0VWRU5UUykKICAgICAgICAgYm9vbCBtX3RvdWNoRXZlbnRFbXVsYXRpb25FbmFi
bGVkIDogMTsKICNlbmRpZgotICAgICAgICBib29sIG1fdGhyZWFkZWRBbmltYXRpb25FbmFibGVk
IDogMTsKICAgICAgICAgYm9vbCBtX3Nob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uIDogMTsK
ICAgICAgICAgYm9vbCBtX3dhbnRzQmFsYW5jZWRTZXREZWZlcnNMb2FkaW5nQmVoYXZpb3IgOiAx
OwogICAgICAgICBib29sIG1fcmVxdWVzdEFuaW1hdGlvbkZyYW1lRW5hYmxlZCA6IDE7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50
TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggYWU4ZDMyMDhiZmJhYjhkN2FkZTk4
MmE3ZDhhOTNhMmQ4M2VkN2RhZi4uYjZhMDI1NjFjZTJjYmM0YzM3YTY3ZTM1ZmMyODMwODJjODU3
Yjk3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcApAQCAtNDEsNiArNDEs
NyBAQAogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtU3VwcG9ydC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgorI2luY2x1ZGUg
ImNjL0NDU2V0dGluZ3MuaCIKICNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KICNpbmNsdWRl
IDx3dGYvQ3VycmVudFRpbWUuaD4KIApAQCAtMTI3LDcgKzEyOCw3IEBAIHZvaWQgQ29udGVudExh
eWVyQ2hyb21pdW06OmNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQoKQogICAgICAgICByZXR1
cm47CiAgICAgaWYgKGxheWVyVHJlZUhvc3QoKS0+c2V0dGluZ3MoKS5hY2NlbGVyYXRlUGFpbnRp
bmcpCiAgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXIgPSBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShDb250ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUo
bV9kZWxlZ2F0ZSkpOwotICAgIGVsc2UgaWYgKGxheWVyVHJlZUhvc3QoKS0+c2V0dGluZ3MoKS5w
ZXJUaWxlUGFpbnRpbmcpCisgICAgZWxzZSBpZiAoQ0NTZXR0aW5nczo6cGVyVGlsZVBhaW50aW5n
RW5hYmxlZCgpKQogICAgICAgICBtX3RleHR1cmVVcGRhdGVyID0gQml0bWFwU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKENvbnRlbnRMYXllclBhaW50ZXI6OmNyZWF0
ZShtX2RlbGVnYXRlKSwgbGF5ZXJUcmVlSG9zdCgpLT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVz
KCkudXNpbmdNYXBTdWIpOwogICAgIGVsc2UKICAgICAgICAgbV90ZXh0dXJlVXBkYXRlciA9IEJp
dG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShDb250ZW50TGF5ZXJQYWludGVy
OjpjcmVhdGUobV9kZWxlZ2F0ZSksIGxheWVyVHJlZUhvc3QoKS0+bGF5ZXJSZW5kZXJlckNhcGFi
aWxpdGllcygpLnVzaW5nTWFwU3ViKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggZDM1ZjU5
MjE5ZmY3NDNjZmQ5ZGU2YmQ3OWViZTU5MWNhYzkyMWFhOS4uNWM4NGRjNDVhYWJmZGMyMTk3MjNk
NjM2YzQ2MWMyMDhhNmMyYWRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTQzLDYgKzQz
LDcgQEAKICNpbmNsdWRlICJjYy9DQ0xheWVyQW5pbWF0aW9uRGVsZWdhdGUuaCIKICNpbmNsdWRl
ICJjYy9DQ0xheWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgorI2lu
Y2x1ZGUgImNjL0NDU2V0dGluZ3MuaCIKICNpbmNsdWRlICJza2lhL2V4dC9wbGF0Zm9ybV9jYW52
YXMuaCIKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKQEAgLTYwMiwxMiArNjAzLDE0IEBAIHZvaWQg
TGF5ZXJDaHJvbWl1bTo6c2V0VHJhbnNmb3JtRnJvbUFuaW1hdGlvbihjb25zdCBXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgdHJhCiAKIGJvb2wgTGF5ZXJDaHJvbWl1bTo6YWRkQW5pbWF0aW9uKFBh
c3NPd25QdHI8Q0NBY3RpdmVBbmltYXRpb24+IGFuaW1hdGlvbikKIHsKLSAgICBpZiAoIW1fbGF5
ZXJUcmVlSG9zdCB8fCAhbV9sYXllclRyZWVIb3N0LT5zZXR0aW5ncygpLnRocmVhZGVkQW5pbWF0
aW9uRW5hYmxlZCkKKyAgICBpZiAoIUNDU2V0dGluZ3M6OmFjY2VsZXJhdGVkQW5pbWF0aW9uRW5h
YmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBtX2xheWVyQW5pbWF0aW9uQ29u
dHJvbGxlci0+YWRkQW5pbWF0aW9uKGFuaW1hdGlvbik7Ci0gICAgbV9sYXllclRyZWVIb3N0LT5k
aWRBZGRBbmltYXRpb24oKTsKLSAgICBzZXROZWVkc0NvbW1pdCgpOworICAgIGlmIChtX2xheWVy
VHJlZUhvc3QpIHsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5kaWRBZGRBbmltYXRpb24oKTsK
KyAgICAgICAgc2V0TmVlZHNDb21taXQoKTsKKyAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IDU1Y2Y3NGYyZjg0MWUy
YmYyZWM5ZTQ2N2MxZjU3YjA3OWNhZTlmZWUuLmYwNjJlZTJhYmIzZTU0YzJiYzAyM2YyZjRmZTYw
YTM5M2FkNzc0NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAt
NjQsNiArNjQsNyBAQAogI2luY2x1ZGUgImNjL0NDUmVuZGVyUGFzcy5oIgogI2luY2x1ZGUgImNj
L0NDUmVuZGVyUGFzc0RyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJTdXJmYWNlRmls
dGVycy5oIgorI2luY2x1ZGUgImNjL0NDU2V0dGluZ3MuaCIKICNpbmNsdWRlICJjYy9DQ1Npbmds
ZVRocmVhZFByb3h5LmgiCiAjaW5jbHVkZSAiY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuaCIKICNp
bmNsdWRlICJjYy9DQ1RleHR1cmVEcmF3UXVhZC5oIgpAQCAtMjkxLDcgKzI5Miw3IEBAIGJvb2wg
TGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplKCkKICAgICBpZiAobV9jYXBhYmlsaXRp
ZXMuY29udGV4dEhhc0NhY2hlZEZyb250QnVmZmVyKQogICAgICAgICBleHRlbnNpb25zLT5lbnN1
cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9mcm9udF9idWZmZXJfY2FjaGVkIik7CiAKLSAgICBtX2Nh
cGFiaWxpdGllcy51c2luZ1BhcnRpYWxTd2FwID0gc2V0dGluZ3MoKS5wYXJ0aWFsU3dhcEVuYWJs
ZWQgJiYgZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0NIUk9NSVVNX3Bvc3Rfc3ViX2J1ZmZlciIp
OworICAgIG1fY2FwYWJpbGl0aWVzLnVzaW5nUGFydGlhbFN3YXAgPSBDQ1NldHRpbmdzOjpwYXJ0
aWFsU3dhcEVuYWJsZWQoKSAmJiBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfQ0hST01JVU1fcG9z
dF9zdWJfYnVmZmVyIik7CiAgICAgaWYgKG1fY2FwYWJpbGl0aWVzLnVzaW5nUGFydGlhbFN3YXAp
CiAgICAgICAgIGV4dGVuc2lvbnMtPmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9NSVVNX3Bvc3Rfc3Vi
X2J1ZmZlciIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAppbmRleCAxMmUzNzE3
Y2E2ZGZmMWMzOGFjOTRkYmIxN2VlNmM2N2ZkMGNkNTFlLi43NDc0YzMxY2Y4YjhkZWZlYWQ0YWVk
MDkwNDIyOWM3NzRmYzQ3NGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKQEAg
LTExMSw5ICsxMTEsOCBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlVGlsZVNpemVB
bmRUaWxpbmdPcHRpb24oKQogewogICAgIEFTU0VSVChsYXllclRyZWVIb3N0KCkpOwogCi0gICAg
Y29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MgPSBsYXllclRyZWVIb3N0KCktPnNldHRpbmdzKCk7
Ci0gICAgY29uc3QgSW50U2l6ZSYgZGVmYXVsdFRpbGVTaXplID0gc2V0dGluZ3MuZGVmYXVsdFRp
bGVTaXplOwotICAgIGNvbnN0IEludFNpemUmIG1heFVudGlsZWRMYXllclNpemUgPSBzZXR0aW5n
cy5tYXhVbnRpbGVkTGF5ZXJTaXplOworICAgIGNvbnN0IEludFNpemUmIGRlZmF1bHRUaWxlU2l6
ZSA9IGxheWVyVHJlZUhvc3QoKS0+c2V0dGluZ3MoKS5kZWZhdWx0VGlsZVNpemU7CisgICAgY29u
c3QgSW50U2l6ZSYgbWF4VW50aWxlZExheWVyU2l6ZSA9IGxheWVyVHJlZUhvc3QoKS0+c2V0dGlu
Z3MoKS5tYXhVbnRpbGVkTGF5ZXJTaXplOwogICAgIGludCBsYXllcldpZHRoID0gY29udGVudEJv
dW5kcygpLndpZHRoKCk7CiAgICAgaW50IGxheWVySGVpZ2h0ID0gY29udGVudEJvdW5kcygpLmhl
aWdodCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5LmNwcAppbmRleCAzYzg4
ZGNjNDAwM2E2NjkxODkzZjc1YjU0NWZmMGQ2NDk1ZDg4ODExLi4xN2Q1OTQ2ZWMyZWNjZGViYWNi
YWYwMzQ4ZmY4MTA2MmY5ODdhNDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3RvcnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdSZWN0SGlzdG9y
eS5jcHAKQEAgLTM4LDEyICszOCwxMiBAQCBDQ0RlYnVnUmVjdEhpc3Rvcnk6OkNDRGVidWdSZWN0
SGlzdG9yeSgpCiB7CiB9CiAKLWJvb2wgQ0NEZWJ1Z1JlY3RIaXN0b3J5OjplbmFibGVkKGNvbnN0
IENDU2V0dGluZ3MmIHNldHRpbmdzKQorYm9vbCBDQ0RlYnVnUmVjdEhpc3Rvcnk6OmVuYWJsZWQo
Y29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MpCiB7CiAgICAgcmV0dXJuIHNldHRp
bmdzLnNob3dQYWludFJlY3RzIHx8IHNldHRpbmdzLnNob3dQcm9wZXJ0eUNoYW5nZWRSZWN0cyB8
fCBzZXR0aW5ncy5zaG93U3VyZmFjZURhbWFnZVJlY3RzOwogfQogCi12b2lkIENDRGVidWdSZWN0
SGlzdG9yeTo6c2F2ZURlYnVnUmVjdHNGb3JDdXJyZW50RnJhbWUoQ0NMYXllckltcGwqIHJvb3RM
YXllciwgY29uc3QgVmVjdG9yPENDTGF5ZXJJbXBsKj4mIHJlbmRlclN1cmZhY2VMYXllckxpc3Qs
IGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKQordm9pZCBDQ0RlYnVnUmVjdEhpc3Rvcnk6OnNh
dmVEZWJ1Z1JlY3RzRm9yQ3VycmVudEZyYW1lKENDTGF5ZXJJbXBsKiByb290TGF5ZXIsIGNvbnN0
IFZlY3RvcjxDQ0xheWVySW1wbCo+JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBjb25zdCBDQ0xh
eWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncykKIHsKICAgICAvLyBGb3Igbm93LCBjbGVhciBhbGwg
cmVjdHMgZnJvbSBwcmV2aW91cyBmcmFtZXMuIEluIHRoZSBmdXR1cmUgd2UgbWF5IHdhbnQgdG8g
c3RvcmUKICAgICAvLyBhbGwgZGVidWcgcmVjdHMgZm9yIGEgaGlzdG9yeSBvZiBtYW55IGZyYW1l
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDRGVidWdSZWN0SGlzdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5LmgKaW5kZXggOTNkYTEwN2FkZTRmYjc3
NDlhYjJkNWNlNzQ3NWEyMjZjYmIwZTE0NC4uYmIzY2RiNzlkNTcxODQ3YjI3NmU5N2M4MGZkNjhj
MWFjMmM0OGQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5LmgKQEAgLTM1LDcg
KzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NMYXllckltcGw7Ci1zdHJ1
Y3QgQ0NTZXR0aW5nczsKK3N0cnVjdCBDQ0xheWVyVHJlZVNldHRpbmdzOwogCiAvLyBUaGVyZSBh
cmUgY3VycmVudGx5IHRocmVlIHR5cGVzIG9mIGRlYnVnIHJlY3RzOgogLy8KQEAgLTYzLDcgKzYz
LDcgQEAgc3RydWN0IENDRGVidWdSZWN0IHsKIAogLy8gVGhpcyBjbGFzcyBtYWludGFpbnMgYSBo
aXN0b3J5IG9mIHJlY3RzIG9mIHZhcmlvdXMgdHlwZXMgdGhhdCBjYW4gYmUgdXNlZAogLy8gZm9y
IGRlYnVnZ2luZyBwdXJwb3Nlcy4gVGhlIG92ZXJoZWFkIG9mIGNvbGxlY3RpbmcgcmVjdHMgaXMg
cGVyZm9ybWVkIG9ubHkgaWYKLS8vIHRoZSBhcHByb3ByaWF0ZSBDQ1NldHRpbmdzIGFyZSBlbmFi
bGVkLgorLy8gdGhlIGFwcHJvcHJpYXRlIENDTGF5ZXJUcmVlU2V0dGluZ3MgYXJlIGVuYWJsZWQu
CiBjbGFzcyBDQ0RlYnVnUmVjdEhpc3RvcnkgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEND
RGVidWdSZWN0SGlzdG9yeSk7CiBwdWJsaWM6CkBAIC03MiwxMCArNzIsMTAgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDRGVidWdSZWN0SGlzdG9yeSgpKTsKICAgICB9
CiAKLSAgICBib29sIGVuYWJsZWQoY29uc3QgQ0NTZXR0aW5ncyYpOworICAgIGJvb2wgZW5hYmxl
ZChjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJik7CiAKICAgICAvLyBOb3RlOiBTYXZpbmcgZGVi
dWcgcmVjdHMgbXVzdCBoYXBwZW4gYmVmb3JlIGxheWVycycgY2hhbmdlIHRyYWNraW5nIGlzIHJl
c2V0LgotICAgIHZvaWQgc2F2ZURlYnVnUmVjdHNGb3JDdXJyZW50RnJhbWUoQ0NMYXllckltcGwq
IHJvb3RMYXllciwgY29uc3QgVmVjdG9yPENDTGF5ZXJJbXBsKj4mIHJlbmRlclN1cmZhY2VMYXll
ckxpc3QsIGNvbnN0IENDU2V0dGluZ3MmKTsKKyAgICB2b2lkIHNhdmVEZWJ1Z1JlY3RzRm9yQ3Vy
cmVudEZyYW1lKENDTGF5ZXJJbXBsKiByb290TGF5ZXIsIGNvbnN0IFZlY3RvcjxDQ0xheWVySW1w
bCo+JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJik7
CiAKICAgICBjb25zdCBWZWN0b3I8Q0NEZWJ1Z1JlY3Q+JiBkZWJ1Z1JlY3RzKCkgeyByZXR1cm4g
bV9kZWJ1Z1JlY3RzOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAKaW5kZXgg
MzQ4NWE0OGE0YWE0MTY4ZWUwZDA0MWJlN2QxMDNhYmJlY2EyNTkzNS4uMWJiYzA0NmU3YTU4MjFh
YjBlMDM5OTQ2YjYwYzgxYTBlY2M5YTI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxh
eS5jcHAKQEAgLTUyLDE3ICs1MiwxNyBAQCB2b2lkIENDSGVhZHNVcERpc3BsYXk6OnNldEZvbnRB
dGxhcyhQYXNzT3duUHRyPENDRm9udEF0bGFzPiBmb250QXRsYXMpCiAgICAgbV9mb250QXRsYXMg
PSBmb250QXRsYXM7CiB9CiAKLWJvb2wgQ0NIZWFkc1VwRGlzcGxheTo6ZW5hYmxlZChjb25zdCBD
Q1NldHRpbmdzJiBzZXR0aW5ncykgY29uc3QKK2Jvb2wgQ0NIZWFkc1VwRGlzcGxheTo6ZW5hYmxl
ZChjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncykgY29uc3QKIHsKICAgICByZXR1
cm4gc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKHNldHRpbmdzKSB8fCBzZXR0aW5ncy5zaG93RlBTQ291
bnRlciB8fCBzaG93RGVidWdSZWN0cyhzZXR0aW5ncyk7CiB9CiAKLWJvb2wgQ0NIZWFkc1VwRGlz
cGxheTo6c2hvd1BsYXRmb3JtTGF5ZXJUcmVlKGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKSBj
b25zdAorYm9vbCBDQ0hlYWRzVXBEaXNwbGF5OjpzaG93UGxhdGZvcm1MYXllclRyZWUoY29uc3Qg
Q0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHNldHRp
bmdzLnNob3dQbGF0Zm9ybUxheWVyVHJlZTsKIH0KIAotYm9vbCBDQ0hlYWRzVXBEaXNwbGF5Ojpz
aG93RGVidWdSZWN0cyhjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncykgY29uc3QKK2Jvb2wgQ0NI
ZWFkc1VwRGlzcGxheTo6c2hvd0RlYnVnUmVjdHMoY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYg
c2V0dGluZ3MpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHNldHRpbmdzLnNob3dQYWludFJlY3RzIHx8
IHNldHRpbmdzLnNob3dQcm9wZXJ0eUNoYW5nZWRSZWN0cyB8fCBzZXR0aW5ncy5zaG93U3VyZmFj
ZURhbWFnZVJlY3RzOwogfQpAQCAtNzgsNyArNzgsNyBAQCB2b2lkIENDSGVhZHNVcERpc3BsYXk6
OmRyYXcoQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVlSG9zdEltcGwpCiAgICAgaWYgKCFt
X2h1ZFRleHR1cmUpCiAgICAgICAgIG1faHVkVGV4dHVyZSA9IE1hbmFnZWRUZXh0dXJlOjpjcmVh
dGUobGF5ZXJSZW5kZXJlci0+aW1wbFRleHR1cmVNYW5hZ2VyKCkpOwogCi0gICAgY29uc3QgQ0NT
ZXR0aW5ncyYgc2V0dGluZ3MgPSBsYXllclRyZWVIb3N0SW1wbC0+c2V0dGluZ3MoKTsKKyAgICBj
b25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncyA9IGxheWVyVHJlZUhvc3RJbXBsLT5z
ZXR0aW5ncygpOwogICAgIC8vIFVzZSBhIGZ1bGxzY3JlZW4gdGV4dHVyZSBvbmx5IGlmIHdlIG5l
ZWQgdG8uLi4KICAgICBJbnRTaXplIGh1ZFNpemU7CiAgICAgaWYgKHNob3dQbGF0Zm9ybUxheWVy
VHJlZShzZXR0aW5ncykgfHwgc2hvd0RlYnVnUmVjdHMoc2V0dGluZ3MpKSB7CkBAIC0xMjgsNyAr
MTI4LDcgQEAgdm9pZCBDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3KENDTGF5ZXJUcmVlSG9zdEltcGwq
IGxheWVyVHJlZUhvc3RJbXBsKQogICAgIG1faHVkVGV4dHVyZS0+dW5yZXNlcnZlKCk7CiB9CiAK
LXZvaWQgQ0NIZWFkc1VwRGlzcGxheTo6ZHJhd0h1ZENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVlSG9zdEltcGwsIGNvbnN0IEND
U2V0dGluZ3MmIHNldHRpbmdzLCBjb25zdCBJbnRTaXplJiBodWRTaXplKQordm9pZCBDQ0hlYWRz
VXBEaXNwbGF5OjpkcmF3SHVkQ29udGVudHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBDQ0xh
eWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCwgY29uc3QgQ0NMYXllclRyZWVTZXR0
aW5ncyYgc2V0dGluZ3MsIGNvbnN0IEludFNpemUmIGh1ZFNpemUpCiB7CiAgICAgaWYgKHNob3dQ
bGF0Zm9ybUxheWVyVHJlZShzZXR0aW5ncykpIHsKICAgICAgICAgY29udGV4dC0+c2V0RmlsbENv
bG9yKENvbG9yKDAsIDAsIDAsIDE5MiksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwpAQCAtMjIxLDcg
KzIyMSw3IEBAIHZvaWQgQ0NIZWFkc1VwRGlzcGxheTo6ZHJhd0ZQU0NvdW50ZXJUZXh0KEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgQ0NGcmFtZVJhdGVDCiAgICAgICAgIG1fZm9udEF0bGFzLT5k
cmF3VGV4dChjb250ZXh0LCBTdHJpbmc6OmZvcm1hdCgiRlBTOiAlNC4xZiArLy0gJTMuMWYiLCBh
dmVyYWdlRlBTLCBzdGREZXZpYXRpb24pLCBJbnRQb2ludCgxMCwgaGVpZ2h0IC8gMyksIEludFNp
emUod2lkdGgsIGhlaWdodCkpOwogfQogCi12b2lkIENDSGVhZHNVcERpc3BsYXk6OmRyYXdEZWJ1
Z1JlY3RzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgQ0NEZWJ1Z1JlY3RIaXN0b3J5KiBkZWJ1
Z1JlY3RIaXN0b3J5LCBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncykKK3ZvaWQgQ0NIZWFkc1Vw
RGlzcGxheTo6ZHJhd0RlYnVnUmVjdHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBDQ0RlYnVn
UmVjdEhpc3RvcnkqIGRlYnVnUmVjdEhpc3RvcnksIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3Mm
IHNldHRpbmdzKQogewogICAgIGNvbnN0IFZlY3RvcjxDQ0RlYnVnUmVjdD4mIGRlYnVnUmVjdHMg
PSBkZWJ1Z1JlY3RIaXN0b3J5LT5kZWJ1Z1JlY3RzKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBkZWJ1Z1JlY3RzLnNpemUoKTsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5
LmgKaW5kZXggNDgzMWU1ZGQxOGMzZTExMjFhMTkyYjk5YTc0YWYxYmFjY2QyY2ZhZC4uZTFjZTkz
YTZjM2U5MGNiMzQ0NWViOTdkMmY2MGVlMDQ0MGY0YzU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNV
cERpc3BsYXkuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBDQ0ZyYW1lUmF0ZUNvdW50ZXI7CiBj
bGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3Mg
TWFuYWdlZFRleHR1cmU7Ci1zdHJ1Y3QgQ0NTZXR0aW5nczsKK3N0cnVjdCBDQ0xheWVyVHJlZVNl
dHRpbmdzOwogCiAvLyBDbGFzcyB0aGF0IGhhbmRsZXMgZHJhd2luZyBvZiBjb21wb3NpdGVkIHJl
bmRlciBsYXllcnMgdXNpbmcgR0wuCiBjbGFzcyBDQ0hlYWRzVXBEaXNwbGF5IHsKQEAgLTUxLDE5
ICs1MSwxOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEZvbnRBdGxhcyhQYXNzT3duUHRyPEND
Rm9udEF0bGFzPik7CiAKLSAgICBib29sIGVuYWJsZWQoY29uc3QgQ0NTZXR0aW5ncyYpIGNvbnN0
OworICAgIGJvb2wgZW5hYmxlZChjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJikgY29uc3Q7CiAg
ICAgdm9pZCBkcmF3KENDTGF5ZXJUcmVlSG9zdEltcGwqKTsKIAogcHJpdmF0ZToKICAgICBDQ0hl
YWRzVXBEaXNwbGF5KCkgeyB9OwogCi0gICAgdm9pZCBkcmF3SHVkQ29udGVudHMoR3JhcGhpY3ND
b250ZXh0KiwgQ0NMYXllclRyZWVIb3N0SW1wbCosIGNvbnN0IENDU2V0dGluZ3MmLCBjb25zdCBJ
bnRTaXplJiBodWRTaXplKTsKKyAgICB2b2lkIGRyYXdIdWRDb250ZW50cyhHcmFwaGljc0NvbnRl
eHQqLCBDQ0xheWVyVHJlZUhvc3RJbXBsKiwgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYsIGNv
bnN0IEludFNpemUmIGh1ZFNpemUpOwogICAgIHZvaWQgZHJhd0ZQU0NvdW50ZXIoR3JhcGhpY3ND
b250ZXh0KiwgQ0NGcmFtZVJhdGVDb3VudGVyKiwgaW50IHRvcCwgaW50IGhlaWdodCk7CiAgICAg
dm9pZCBkcmF3RlBTQ291bnRlclRleHQoR3JhcGhpY3NDb250ZXh0KiwgQ0NGcmFtZVJhdGVDb3Vu
dGVyKiwgaW50IHRvcCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKLSAgICB2b2lkIGRyYXdEZWJ1
Z1JlY3RzKEdyYXBoaWNzQ29udGV4dCosIENDRGVidWdSZWN0SGlzdG9yeSosIGNvbnN0IENDU2V0
dGluZ3MmKTsKKyAgICB2b2lkIGRyYXdEZWJ1Z1JlY3RzKEdyYXBoaWNzQ29udGV4dCosIENDRGVi
dWdSZWN0SGlzdG9yeSosIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmKTsKIAotICAgIGJvb2wg
c2hvd1BsYXRmb3JtTGF5ZXJUcmVlKGNvbnN0IENDU2V0dGluZ3MmKSBjb25zdDsKLSAgICBib29s
IHNob3dEZWJ1Z1JlY3RzKGNvbnN0IENDU2V0dGluZ3MmKSBjb25zdDsKKyAgICBib29sIHNob3dQ
bGF0Zm9ybUxheWVyVHJlZShjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJikgY29uc3Q7CisgICAg
Ym9vbCBzaG93RGVidWdSZWN0cyhjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJikgY29uc3Q7CiAK
ICAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IG1faHVkVGV4dHVyZTsKICAgICBPd25QdHI8Q0NG
b250QXRsYXM+IG1fZm9udEF0bGFzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5k
ZXggZmEwZWI2NGMzNjViMThkZTBkOTY5ZmM4M2U5YjQ4MzVhMzg2OTM0YS4uMjMzOWUzMTMzODE4
MjcwZjI4YWMwZDY2MzI1NDVjMTQ4M2U3NTY2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0Q29t
bW9uLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIgogI2luY2x1ZGUgImNj
L0NDT2NjbHVzaW9uVHJhY2tlci5oIgorI2luY2x1ZGUgImNjL0NDU2V0dGluZ3MuaCIKICNpbmNs
dWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWQuaCIK
ICNpbmNsdWRlICJjYy9DQ1RocmVhZFByb3h5LmgiCkBAIC01OCw3ICs1OSw3IEBAIGJvb2wgQ0NM
YXllclRyZWVIb3N0OjphbnlMYXllclRyZWVIb3N0SW5zdGFuY2VFeGlzdHMoKQogICAgIHJldHVy
biBudW1MYXllclRyZWVJbnN0YW5jZXMgPiAwOwogfQogCi1QYXNzT3duUHRyPENDTGF5ZXJUcmVl
SG9zdD4gQ0NMYXllclRyZWVIb3N0OjpjcmVhdGUoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGll
bnQsIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKQorUGFzc093blB0cjxDQ0xheWVyVHJlZUhv
c3Q+IENDTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50
LCBjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncykKIHsKICAgICBPd25QdHI8Q0NM
YXllclRyZWVIb3N0PiBsYXllclRyZWVIb3N0ID0gYWRvcHRQdHIobmV3IENDTGF5ZXJUcmVlSG9z
dChjbGllbnQsIHNldHRpbmdzKSk7CiAgICAgaWYgKCFsYXllclRyZWVIb3N0LT5pbml0aWFsaXpl
KCkpCkBAIC02Niw3ICs2Nyw3IEBAIFBhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0PiBDQ0xheWVy
VHJlZUhvc3Q6OmNyZWF0ZShDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVuCiAgICAgcmV0dXJu
IGxheWVyVHJlZUhvc3QucmVsZWFzZSgpOwogfQogCi1DQ0xheWVyVHJlZUhvc3Q6OkNDTGF5ZXJU
cmVlSG9zdChDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwgY29uc3QgQ0NTZXR0aW5ncyYg
c2V0dGluZ3MpCitDQ0xheWVyVHJlZUhvc3Q6OkNDTGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhv
c3RDbGllbnQqIGNsaWVudCwgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MpCiAg
ICAgOiBtX2NvbXBvc2l0b3JJZGVudGlmaWVyKC0xKQogICAgICwgbV9hbmltYXRpbmcoZmFsc2Up
CiAgICAgLCBtX25lZWRzQW5pbWF0ZUxheWVycyhmYWxzZSkKQEAgLTY4Myw3ICs2ODQsNyBAQCB2
b2lkIENDTGF5ZXJUcmVlSG9zdDo6ZGVsZXRlVGV4dHVyZUFmdGVyQ29tbWl0KFBhc3NPd25QdHI8
TWFuYWdlZFRleHR1cmU+IHRleHR1cgogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6YW5pbWF0ZUxh
eWVycyhkb3VibGUgbW9ub3RvbmljVGltZSkKIHsKLSAgICBpZiAoIW1fc2V0dGluZ3MudGhyZWFk
ZWRBbmltYXRpb25FbmFibGVkIHx8ICFtX25lZWRzQW5pbWF0ZUxheWVycykKKyAgICBpZiAoIUND
U2V0dGluZ3M6OmFjY2VsZXJhdGVkQW5pbWF0aW9uRW5hYmxlZCgpIHx8ICFtX25lZWRzQW5pbWF0
ZUxheWVycykKICAgICAgICAgcmV0dXJuOwogCiAgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVl
SG9zdEltcGw6OmFuaW1hdGVMYXllcnMiLCB0aGlzLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmgKaW5kZXggNDM0YWVjMjc0MjIwMWM1ZjZkNWI0OWNjNTM3ZTE4MDM5YzJjODY0ZC4uOTUz
N2VmNmU5ODY2YzM0Y2EyMjMwNmRiYzk0NzNjNzNjMTY3NjZkYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmgKQEAgLTc0LDggKzc0LDggQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfkND
TGF5ZXJUcmVlSG9zdENsaWVudCgpIHsgfQogfTsKIAotc3RydWN0IENDU2V0dGluZ3MgewotICAg
IENDU2V0dGluZ3MoKQorc3RydWN0IENDTGF5ZXJUcmVlU2V0dGluZ3MgeworICAgIENDTGF5ZXJU
cmVlU2V0dGluZ3MoKQogICAgICAgICAgICAgOiBhY2NlbGVyYXRlUGFpbnRpbmcoZmFsc2UpCiAg
ICAgICAgICAgICAsIGZvcmNlU29mdHdhcmVDb21wb3NpdGluZyhmYWxzZSkKICAgICAgICAgICAg
ICwgc2hvd0ZQU0NvdW50ZXIoZmFsc2UpCkBAIC04NCw5ICs4NCw2IEBAIHN0cnVjdCBDQ1NldHRp
bmdzIHsKICAgICAgICAgICAgICwgc2hvd1Byb3BlcnR5Q2hhbmdlZFJlY3RzKGZhbHNlKQogICAg
ICAgICAgICAgLCBzaG93U3VyZmFjZURhbWFnZVJlY3RzKGZhbHNlKQogICAgICAgICAgICAgLCBy
ZWZyZXNoUmF0ZSgwKQotICAgICAgICAgICAgLCBwZXJUaWxlUGFpbnRpbmcoZmFsc2UpCi0gICAg
ICAgICAgICAsIHBhcnRpYWxTd2FwRW5hYmxlZChmYWxzZSkKLSAgICAgICAgICAgICwgdGhyZWFk
ZWRBbmltYXRpb25FbmFibGVkKGZhbHNlKQogICAgICAgICAgICAgLCBtYXhQYXJ0aWFsVGV4dHVy
ZVVwZGF0ZXMoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSkKICAgICAgICAgICAg
ICwgZGVmYXVsdFRpbGVTaXplKEludFNpemUoMjU2LCAyNTYpKQogICAgICAgICAgICAgLCBtYXhV
bnRpbGVkTGF5ZXJTaXplKEludFNpemUoNTEyLCA1MTIpKQpAQCAtMTAxLDkgKzk4LDYgQEAgc3Ry
dWN0IENDU2V0dGluZ3MgewogICAgIGJvb2wgc2hvd1Byb3BlcnR5Q2hhbmdlZFJlY3RzOwogICAg
IGJvb2wgc2hvd1N1cmZhY2VEYW1hZ2VSZWN0czsKICAgICBkb3VibGUgcmVmcmVzaFJhdGU7Ci0g
ICAgYm9vbCBwZXJUaWxlUGFpbnRpbmc7Ci0gICAgYm9vbCBwYXJ0aWFsU3dhcEVuYWJsZWQ7Ci0g
ICAgYm9vbCB0aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQ7CiAgICAgc2l6ZV90IG1heFBhcnRpYWxU
ZXh0dXJlVXBkYXRlczsKICAgICBJbnRTaXplIGRlZmF1bHRUaWxlU2l6ZTsKICAgICBJbnRTaXpl
IG1heFVudGlsZWRMYXllclNpemU7CkBAIC0xNDMsNyArMTM3LDcgQEAgc3RydWN0IExheWVyUmVu
ZGVyZXJDYXBhYmlsaXRpZXMgewogY2xhc3MgQ0NMYXllclRyZWVIb3N0IDogcHVibGljIFJhdGVM
aW1pdGVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ0xheWVyVHJlZUhvc3Qp
OwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdD4gY3JlYXRl
KENDTGF5ZXJUcmVlSG9zdENsaWVudCosIGNvbnN0IENDU2V0dGluZ3MmKTsKKyAgICBzdGF0aWMg
UGFzc093blB0cjxDQ0xheWVyVHJlZUhvc3Q+IGNyZWF0ZShDQ0xheWVyVHJlZUhvc3RDbGllbnQq
LCBjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJik7CiAgICAgdmlydHVhbCB+Q0NMYXllclRyZWVI
b3N0KCk7CiAKICAgICB2b2lkIHNldFN1cmZhY2VSZWFkeSgpOwpAQCAtMjE5LDcgKzIxMyw3IEBA
IHB1YmxpYzoKICAgICBjb25zdCBMYXllckNocm9taXVtKiByb290TGF5ZXIoKSBjb25zdCB7IHJl
dHVybiBtX3Jvb3RMYXllci5nZXQoKTsgfQogICAgIHZvaWQgc2V0Um9vdExheWVyKFBhc3NSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4pOwogCi0gICAgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MoKSBj
b25zdCB7IHJldHVybiBtX3NldHRpbmdzOyB9CisgICAgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5n
cyYgc2V0dGluZ3MoKSBjb25zdCB7IHJldHVybiBtX3NldHRpbmdzOyB9CiAKICAgICB2b2lkIHNl
dFZpZXdwb3J0U2l6ZShjb25zdCBJbnRTaXplJik7CiAKQEAgLTI1MSw3ICsyNDUsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBkZWxldGVUZXh0dXJlQWZ0ZXJDb21taXQoUGFzc093blB0cjxNYW5hZ2Vk
VGV4dHVyZT4pOwogCiBwcm90ZWN0ZWQ6Ci0gICAgQ0NMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVl
SG9zdENsaWVudCosIGNvbnN0IENDU2V0dGluZ3MmKTsKKyAgICBDQ0xheWVyVHJlZUhvc3QoQ0NM
YXllclRyZWVIb3N0Q2xpZW50KiwgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYpOwogICAgIGJv
b2wgaW5pdGlhbGl6ZSgpOwogCiBwcml2YXRlOgpAQCAtMjkyLDcgKzI4Niw3IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG1fcm9vdExheWVyOwogICAgIE93blB0cjxUZXh0
dXJlTWFuYWdlcj4gbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyOwogCi0gICAgQ0NTZXR0aW5ncyBt
X3NldHRpbmdzOworICAgIENDTGF5ZXJUcmVlU2V0dGluZ3MgbV9zZXR0aW5nczsKIAogICAgIElu
dFNpemUgbV92aWV3cG9ydFNpemU7CiAgICAgSW50U2l6ZSBtX2RldmljZVZpZXdwb3J0U2l6ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggNWIxM2UxYjhlY2I1
NmY4MTFiNjE2NzRlYTI4MTE0ZWE0YzcwMDM2Yi4uNWI3NmI4MTJiOWFlODVjMjljMmE2MTI4M2Mw
OTY5MmIwMDYyMDIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAK
QEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaCIK
ICNpbmNsdWRlICJjYy9DQ01hdGhVdGlsLmgiCiAjaW5jbHVkZSAiY2MvQ0NQYWdlU2NhbGVBbmlt
YXRpb24uaCIKKyNpbmNsdWRlICJjYy9DQ1NldHRpbmdzLmgiCiAjaW5jbHVkZSAiY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5oIgogI2luY2x1ZGUgImNjL0NDVGhyZWFkVGFzay5oIgogI2luY2x1ZGUg
PHd0Zi9DdXJyZW50VGltZS5oPgpAQCAtMTA1LDEyICsxMDYsMTIgQEAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8Q0NEZWxheUJhc2VkVGltZVNvdXJjZT4gbV90aW1lU291cmNlOwogfTsKIAotUGFzc093
blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoY29u
c3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqIGNsaWVu
dCkKK1Bhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gQ0NMYXllclRyZWVIb3N0SW1wbDo6
Y3JlYXRlKGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzLCBDQ0xheWVyVHJlZUhv
c3RJbXBsQ2xpZW50KiBjbGllbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ0xheWVy
VHJlZUhvc3RJbXBsKHNldHRpbmdzLCBjbGllbnQpKTsKIH0KIAotQ0NMYXllclRyZWVIb3N0SW1w
bDo6Q0NMYXllclRyZWVIb3N0SW1wbChjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncywgQ0NMYXll
clRyZWVIb3N0SW1wbENsaWVudCogY2xpZW50KQorQ0NMYXllclRyZWVIb3N0SW1wbDo6Q0NMYXll
clRyZWVIb3N0SW1wbChjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncywgQ0NMYXll
clRyZWVIb3N0SW1wbENsaWVudCogY2xpZW50KQogICAgIDogbV9jbGllbnQoY2xpZW50KQogICAg
ICwgbV9zb3VyY2VGcmFtZU51bWJlcigtMSkKICAgICAsIG1fZnJhbWVOdW1iZXIoMCkKQEAgLTI1
Niw3ICsyNTcsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRlclN1
cmZhY2VMYXllckxpc3QoQ0NMYXllckxpc3QmIHJlbmRlclN1cgogCiAgICAgICAgIGlmICghbGF5
ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLnVzaW5nUGFydGlhbFN3YXApCiAgICAgICAgICAgICBt
X3Jvb3RTY2lzc29yUmVjdCA9IEZsb2F0UmVjdChGbG9hdFBvaW50KDAsIDApLCBkZXZpY2VWaWV3
cG9ydFNpemUoKSk7Ci0gICAgCisKICAgICAgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxj
dWxhdGVWaXNpYmxlQW5kU2Npc3NvclJlY3RzKHJlbmRlclN1cmZhY2VMYXllckxpc3QsIG1fcm9v
dFNjaXNzb3JSZWN0KTsKICAgICB9CiB9CkBAIC04NTksNyArODYwLDcgQEAgdm9pZCBDQ0xheWVy
VHJlZUhvc3RJbXBsOjphbmltYXRlUGFnZVNjYWxlKGRvdWJsZSBtb25vdG9uaWNUaW1lKQogCiB2
b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVMYXllcnMoZG91YmxlIG1vbm90b25pY1Rp
bWUsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKQogewotICAgIGlmICghbV9zZXR0aW5ncy50aHJlYWRl
ZEFuaW1hdGlvbkVuYWJsZWQgfHwgIW1fbmVlZHNBbmltYXRlTGF5ZXJzIHx8ICFtX3Jvb3RMYXll
ckltcGwpCisgICAgaWYgKCFDQ1NldHRpbmdzOjphY2NlbGVyYXRlZEFuaW1hdGlvbkVuYWJsZWQo
KSB8fCAhbV9uZWVkc0FuaW1hdGVMYXllcnMgfHwgIW1fcm9vdExheWVySW1wbCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVM
YXllcnMiLCB0aGlzLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAppbmRl
eCBjNzQwYTY2MjAyZjRiZDBmMWIzZDA2MDZkM2FlYmE5NDg5ZDIwMDkyLi40MDYwNjExMzkyNzg5
MGNiMjU1NDE1ODBmODA2YjcxN2U0NDhlZTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0SW1wbC5oCkBAIC02OCw3ICs2OCw3IEBAIGNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGwgOiBw
dWJsaWMgQ0NJbnB1dEhhbmRsZXJDbGllbnQsIENDUmVuZGVyZXJDbGllbnQgewogICAgIHR5cGVk
ZWYgVmVjdG9yPENDTGF5ZXJJbXBsKj4gQ0NMYXllckxpc3Q7CiAKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc093blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBjcmVhdGUoY29uc3QgQ0NTZXR0aW5n
cyYsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxD
Q0xheWVyVHJlZUhvc3RJbXBsPiBjcmVhdGUoY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYsIEND
TGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqKTsKICAgICB2aXJ0dWFsIH5DQ0xheWVyVHJlZUhvc3RJ
bXBsKCk7CiAKICAgICAvLyBDQ0lucHV0SGFuZGxlckNsaWVudCBpbXBsZW1lbnRhdGlvbgpAQCAt
MTA1LDcgKzEwNSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIENDUmVuZGVyZXJDbGllbnQgaW1wbGVt
ZW50YXRpb24KICAgICB2aXJ0dWFsIGNvbnN0IEludFNpemUmIGRldmljZVZpZXdwb3J0U2l6ZSgp
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fZGV2aWNlVmlld3BvcnRTaXplOyB9Ci0gICAgdmly
dHVhbCBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJu
IG1fc2V0dGluZ3M7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNl
dHRpbmdzKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9zZXR0aW5nczsgfQogICAgIHZpcnR1
YWwgdm9pZCBkaWRMb3NlQ29udGV4dCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBvblN3
YXBCdWZmZXJzQ29tcGxldGUoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RnVsbFJv
b3RMYXllckRhbWFnZSgpIE9WRVJSSURFOwpAQCAtMTY4LDcgKzE2OCw3IEBAIHB1YmxpYzoKICAg
ICBDQ0RlYnVnUmVjdEhpc3RvcnkqIGRlYnVnUmVjdEhpc3RvcnkoKSBjb25zdCB7IHJldHVybiBt
X2RlYnVnUmVjdEhpc3RvcnkuZ2V0KCk7IH0KIAogcHJvdGVjdGVkOgotICAgIENDTGF5ZXJUcmVl
SG9zdEltcGwoY29uc3QgQ0NTZXR0aW5ncyYsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqKTsK
KyAgICBDQ0xheWVyVHJlZUhvc3RJbXBsKGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmLCBDQ0xh
eWVyVHJlZUhvc3RJbXBsQ2xpZW50Kik7CiAKICAgICB2b2lkIGFuaW1hdGVQYWdlU2NhbGUoZG91
YmxlIG1vbm90b25pY1RpbWUpOwogICAgIHZvaWQgYW5pbWF0ZUdlc3R1cmVzKGRvdWJsZSBtb25v
dG9uaWNUaW1lKTsKQEAgLTIxMyw3ICsyMTMsNyBAQCBwcml2YXRlOgogICAgIE93blB0cjxDQ1Jl
bmRlcmVyPiBtX2xheWVyUmVuZGVyZXI7CiAgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBtX3Jvb3RM
YXllckltcGw7CiAgICAgQ0NMYXllckltcGwqIG1fc2Nyb2xsTGF5ZXJJbXBsOwotICAgIENDU2V0
dGluZ3MgbV9zZXR0aW5nczsKKyAgICBDQ0xheWVyVHJlZVNldHRpbmdzIG1fc2V0dGluZ3M7CiAg
ICAgSW50U2l6ZSBtX3ZpZXdwb3J0U2l6ZTsKICAgICBJbnRTaXplIG1fZGV2aWNlVmlld3BvcnRT
aXplOwogICAgIGJvb2wgbV92aXNpYmxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5oCmluZGV4IDljOTM4YTk5
MGFiYzRkOWI1NTU0NjhlNzA4NmQ3YjUzNjFiNjA1MTkuLjMyZjgzNThjNzQ0ZGMwZThjMThlOTRi
MDY0YTkxZDUwNDgwNWVmYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmVyLmgKQEAgLTQzLDcgKzQzLDcgQEAg
Y2xhc3MgVGV4dHVyZVVwbG9hZGVyOwogY2xhc3MgQ0NSZW5kZXJlckNsaWVudCB7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCBjb25zdCBJbnRTaXplJiBkZXZpY2VWaWV3cG9ydFNpemUoKSBjb25zdCA9
IDA7Ci0gICAgdmlydHVhbCBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRMb3NlQ29udGV4dCgpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgb25Td2FwQnVmZmVyc0NvbXBsZXRlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRG
dWxsUm9vdExheWVyRGFtYWdlKCkgPSAwOwpAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIGNvbnN0IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcygp
IGNvbnN0ID0gMDsKIAotICAgIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgeyBy
ZXR1cm4gbV9jbGllbnQtPnNldHRpbmdzKCk7IH0KKyAgICBjb25zdCBDQ0xheWVyVHJlZVNldHRp
bmdzJiBzZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50LT5zZXR0aW5ncygpOyB9CiAK
ICAgICBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUoKSB7IHJldHVybiBtX2NsaWVudC0+ZGV2
aWNlVmlld3BvcnRTaXplKCk7IH0KICAgICBpbnQgdmlld3BvcnRXaWR0aCgpIHsgcmV0dXJuIHZp
ZXdwb3J0U2l6ZSgpLndpZHRoKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTZXR0aW5ncy5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGMyODgzMzBmZTc1ZjQyYzY2NDhlMGNmOGEwZDE2Mzg4YTM4NDRlOAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2V0dGlu
Z3MuY3BwCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2luY2x1ZGUgImNjL0NDU2V0dGluZ3MuaCIKKworI2luY2x1ZGUgPGxpbWl0cz4KKwor
bmFtZXNwYWNlIHsKK3N0YXRpYyBib29sIHNfcGVyVGlsZVBhaW50aW5nRW5hYmxlZCA9IGZhbHNl
Oworc3RhdGljIGJvb2wgc19wYXJ0aWFsU3dhcEVuYWJsZWQgPSBmYWxzZTsKK3N0YXRpYyBib29s
IHNfYWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkID0gZmFsc2U7Cit9IC8vIG5hbWVzcGFjZQor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgQ0NTZXR0aW5nczo6cGVyVGlsZVBhaW50aW5n
RW5hYmxlZCgpIHsgcmV0dXJuIHNfcGVyVGlsZVBhaW50aW5nRW5hYmxlZDsgfQordm9pZCBDQ1Nl
dHRpbmdzOjpzZXRQZXJUaWxlUGFpbnRpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBzX3BlclRp
bGVQYWludGluZ0VuYWJsZWQgPSBlbmFibGVkOyB9CisKK2Jvb2wgQ0NTZXR0aW5nczo6cGFydGlh
bFN3YXBFbmFibGVkKCkgeyByZXR1cm4gc19wYXJ0aWFsU3dhcEVuYWJsZWQ7IH0KK3ZvaWQgQ0NT
ZXR0aW5nczo6c2V0UGFydGlhbFN3YXBFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBzX3BhcnRpYWxT
d2FwRW5hYmxlZCA9IGVuYWJsZWQ7IH0KKworYm9vbCBDQ1NldHRpbmdzOjphY2NlbGVyYXRlZEFu
aW1hdGlvbkVuYWJsZWQoKSB7IHJldHVybiBzX2FjY2VsZXJhdGVkQW5pbWF0aW9uRW5hYmxlZDsg
fQordm9pZCBDQ1NldHRpbmdzOjpzZXRBY2NlbGVyYXRlZEFuaW1hdGlvbkVuYWJsZWQoYm9vbCBl
bmFibGVkKSB7IHNfYWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkID0gZW5hYmxlZDsgfQorCit2
b2lkIENDU2V0dGluZ3M6OnJlc2V0KCkKK3sKKyAgICBzX3BlclRpbGVQYWludGluZ0VuYWJsZWQg
PSBmYWxzZTsKKyAgICBzX3BhcnRpYWxTd2FwRW5hYmxlZCA9IGZhbHNlOworICAgIHNfYWNjZWxl
cmF0ZWRBbmltYXRpb25FbmFibGVkID0gZmFsc2U7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2V0dGluZ3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OGY4YzJmZmQzNTJlNWRhOTY0YzZkYmU5
OGRlYjAwYWNkMGE5OWUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTZXR0aW5ncy5oCkBAIC0wLDAgKzEsNTEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAq
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgQ0NTZXR0aW5nc19oCisjZGVmaW5lIENDU2V0dGluZ3NfaAor
CisjaW5jbHVkZSAiSW50U2l6ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEND
U2V0dGluZ3MgeworcHVibGljOgorICAgIHN0YXRpYyBib29sIHBlclRpbGVQYWludGluZ0VuYWJs
ZWQoKTsKKyAgICBzdGF0aWMgYm9vbCBwYXJ0aWFsU3dhcEVuYWJsZWQoKTsKKyAgICBzdGF0aWMg
Ym9vbCBhY2NlbGVyYXRlZEFuaW1hdGlvbkVuYWJsZWQoKTsKKworICAgIC8vIFRoZXNlIHNldHRl
cnMgc2hvdWxkIG9ubHkgYmUgdXNlZCBvbiB0aGUgbWFpbiB0aHJlYWQgYmVmb3JlIHRoZSBsYXll
cgorICAgIC8vIHJlbmRlcmVyIGlzIGluaXRpYWxpemVkLgorICAgIHN0YXRpYyB2b2lkIHNldFBl
clRpbGVQYWludGluZ0VuYWJsZWQoYm9vbCk7CisgICAgc3RhdGljIHZvaWQgc2V0UGFydGlhbFN3
YXBFbmFibGVkKGJvb2wpOworICAgIHN0YXRpYyB2b2lkIHNldEFjY2VsZXJhdGVkQW5pbWF0aW9u
RW5hYmxlZChib29sKTsKKworICAgIC8vIFRoZXNlIHNldHRpbmdzIGFyZSBtZWFudCB0byBiZSBz
ZXQgb25seSBvbmNlLCBhbmQgb25seSByZWFkIHRoZXJlYWZ0ZXIuCisgICAgLy8gVGhpcyBmdW5j
dGlvbiBpcyBvbmx5IGZvciByZXNldHRpbmcgc2V0dGluZ3MgaW4gdGVzdHMuCisgICAgc3RhdGlj
IHZvaWQgcmVzZXQoKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IENDU2V0dGluZ3NfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bFNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5j
cHAKaW5kZXggZWFiZWJlMDk1ZjljZjc3ZWNmM2VmOTI1MzE2ZTgxZWEzN2MxNDY2Mi4uZTFkOWNk
YjhkN2RhNzE1YzcwNWNjMGRkNmRhYjJlOWI2OGIxYTA4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCkBAIC0yMzQsMTIgKzIzNCw2IEBAIHZvaWQgSW50
ZXJuYWxTZXR0aW5nczo6c2V0UGFnZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yLCBpbnQg
eCwgaW50IHksIEV4Y2VwCiAgICAgcGFnZSgpLT5zZXRQYWdlU2NhbGVGYWN0b3Ioc2NhbGVGYWN0
b3IsIEludFBvaW50KHgsIHkpKTsKIH0KIAotdm9pZCBJbnRlcm5hbFNldHRpbmdzOjpzZXRQZXJU
aWxlRHJhd2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAg
ICBJbnRlcm5hbFNldHRpbmdzR3VhcmRGb3JTZXR0aW5ncygpOwotICAgIHNldHRpbmdzKCktPnNl
dFBlclRpbGVEcmF3aW5nRW5hYmxlZChlbmFibGVkKTsKLX0KLQogdm9pZCBJbnRlcm5hbFNldHRp
bmdzOjpzZXRTaGFkb3dET01FbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CiAjaWYgRU5BQkxFKFNIQURPV19ET00pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxTZXR0aW5ncy5oCmluZGV4IDRmZTgyMjYzNWI3NWJkMzI3MzRiNjJlNTAwNjQ2NmQ1ZDc4ZjBm
OTAuLmNkMjhiNjM2NWRiZmM3NDNhNTI4MDhkNWQzZjgyMjVlOGZiODU2NGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oCkBAIC02MSw3ICs2MSw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFVuaWZpZWRUZXh0Q2hlY2tpbmdFbmFibGVkKGJvb2wsIEV4Y2VwdGlv
bkNvZGUmKTsKICAgICBib29sIHVuaWZpZWRUZXh0Q2hlY2tpbmdFbmFibGVkKEV4Y2VwdGlvbkNv
ZGUmKTsKICAgICB2b2lkIHNldFBhZ2VTY2FsZUZhY3RvcihmbG9hdCBzY2FsZUZhY3RvciwgaW50
IHgsIGludCB5LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBzZXRQZXJUaWxlRHJhd2luZ0Vu
YWJsZWQoYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXRUb3VjaEV2
ZW50RW11bGF0aW9uRW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2
b2lkIHNldERldmljZVN1cHBvcnRzVG91Y2goYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJik7
CiAgICAgdm9pZCBzZXREZXZpY2VTdXBwb3J0c01vdXNlKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9u
Q29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaSBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKaW5kZXggZjIzMTU0YWU0MDQ1N2I3
ZTgwNzk5NzM4NzMxOTRiY2EyMGE2N2I3MS4uNGE1MDU1MDE1YmZhNDVhYzJiZTlkMzhlODgzMjRl
ZDBhNTFjZTEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
aQorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCkBAIC04Nyw2ICs4Nyw3
IEBACiAgICAgICAgICAgICAndGVzdHMvQ0NTY2hlZHVsZXJUZXN0Q29tbW9uLmgnLAogICAgICAg
ICAgICAgJ3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0ND
U29saWRDb2xvckxheWVySW1wbFRlc3QuY3BwJywKKyAgICAgICAgICAgICd0ZXN0cy9DQ1Rlc3RD
b21tb24uaCcsCiAgICAgICAgICAgICAndGVzdHMvQ0NUaWxlZExheWVySW1wbFRlc3QuY3BwJywK
ICAgICAgICAgICAgICd0ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmgnLAogICAgICAgICAg
ICAgJ3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3IuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3IuaAppbmRleCAzZWFkZWYzMmMzN2IzMTM0OWI5
OTM3N2EyZTE5ZjhjMDZhOGY4ZDQ4Li5jZDBkNjhhODM5ZWY0Mzc4MjE4ZWUzZWE4NDAyN2FkNzQw
MDBhMDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb21w
b3NpdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRv
ci5oCkBAIC0yNiw3ICsyNiwxMCBAQAogI2lmbmRlZiBXZWJDb21wb3NpdG9yX2gKICNkZWZpbmUg
V2ViQ29tcG9zaXRvcl9oCiAKKyNkZWZpbmUgV0VCQ09NUE9TSVRPUl9PV05TX1NFVFRJTkdTIDEK
KwogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dl
YlNpemUuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQ5LDYgKzUyLDExIEBAIHB1Ymxp
YzoKICAgICAvLyBhZnRlciBzaHV0ZG93bi4KICAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyB2b2lk
IHNodXRkb3duKCk7CiAKKyAgICAvLyBUaGVzZSBtYXkgb25seSBiZSBjYWxsZWQgYmVmb3JlIGlu
aXRpYWxpemUuCisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRQZXJUaWxlUGFpbnRp
bmdFbmFibGVkKGJvb2wpOworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIHZvaWQgc2V0UGFydGlh
bFN3YXBFbmFibGVkKGJvb2wpOworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIHZvaWQgc2V0QWNj
ZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkKGJvb2wpOworCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVh
bCB+V2ViQ29tcG9zaXRvcigpIHsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlNldHRpbmdzLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJTZXR0aW5ncy5oCmluZGV4IDg4ZDlhMDEzOGQyMTQxYTExNGI5MGJlOTVjZDBkMzYzMmM2
MDYzZjYuLjA1MjhkOGVmNGVhYmM2ZmY4ZDdlMjcwODE0MjBhZmEwNmRjOTIwNWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaApAQCAtMTQ3LDkgKzE0Nyw2
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0SGl4aWU3NldlYlNvY2tldFByb3RvY29s
RW5hYmxlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpc3VhbFdvcmRNb3ZlbWVu
dEVuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZFBhaW50
aW5nRW5hYmxlZChib29sKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldFBlclRpbGVQYWludGlu
Z0VuYWJsZWQoYm9vbCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRQYXJ0aWFsU3dhcEVuYWJs
ZWQoYm9vbCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRUaHJlYWRlZEFuaW1hdGlvbkVuYWJs
ZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWV3cG9ydEVuYWJsZWQoYm9vbCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRNZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVy
ZShib29sKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHZpZXdwb3J0RW5hYmxlZCgpIGNvbnN0ID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbXBsLmNw
cAppbmRleCA5MWQ4YjFiZTY2MDQ1YTM5OGQyNzg4OGVjY2UwZjdmYjZmMjMyOTExLi5mNGU5NmUw
YmUxOTEwNmIzOWEwYmZkMjgyY2I0OWMwMmQxY2QwYTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvckltcGwuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAj
aW5jbHVkZSAiV2ViSW5wdXRFdmVudC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5o
IgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKKyNpbmNsdWRlICJjYy9DQ1NldHRpbmdzLmgiCiAj
aW5jbHVkZSA8d3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CkBAIC01MSw2ICs1MiwyNSBAQCB2b2lkIFdlYkNvbXBvc2l0b3I6OmluaXRpYWxpemUo
V2ViVGhyZWFkKiBpbXBsVGhyZWFkKQogdm9pZCBXZWJDb21wb3NpdG9yOjpzaHV0ZG93bigpCiB7
CiAgICAgV2ViQ29tcG9zaXRvckltcGw6OnNodXRkb3duKCk7CisgICAgQ0NTZXR0aW5nczo6cmVz
ZXQoKTsKK30KKwordm9pZCBXZWJDb21wb3NpdG9yOjpzZXRQZXJUaWxlUGFpbnRpbmdFbmFibGVk
KGJvb2wgZW5hYmxlZCkKK3sKKyAgICBBU1NFUlQoIVdlYkNvbXBvc2l0b3JJbXBsOjppbml0aWFs
aXplZCgpKTsKKyAgICBDQ1NldHRpbmdzOjpzZXRQZXJUaWxlUGFpbnRpbmdFbmFibGVkKGVuYWJs
ZWQpOworfQorCit2b2lkIFdlYkNvbXBvc2l0b3I6OnNldFBhcnRpYWxTd2FwRW5hYmxlZChib29s
IGVuYWJsZWQpCit7CisgICAgQVNTRVJUKCFXZWJDb21wb3NpdG9ySW1wbDo6aW5pdGlhbGl6ZWQo
KSk7CisgICAgQ0NTZXR0aW5nczo6c2V0UGFydGlhbFN3YXBFbmFibGVkKGVuYWJsZWQpOworfQor
Cit2b2lkIFdlYkNvbXBvc2l0b3I6OnNldEFjY2VsZXJhdGVkQW5pbWF0aW9uRW5hYmxlZChib29s
IGVuYWJsZWQpCit7CisgICAgQVNTRVJUKCFXZWJDb21wb3NpdG9ySW1wbDo6aW5pdGlhbGl6ZWQo
KSk7CisgICAgQ0NTZXR0aW5nczo6c2V0QWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkKGVuYWJs
ZWQpOwogfQogCiB2b2lkIFdlYkNvbXBvc2l0b3JJbXBsOjppbml0aWFsaXplKFdlYlRocmVhZCog
aW1wbFRocmVhZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxh
eWVyVHJlZVZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVl
Vmlldy5jcHAKaW5kZXggYWUyMGFlYTlhMzU4M2U2MzQyNDlmNWJiNGRiNDA4ODI4NGQ4MjZmMS4u
NjVmNDExZWYyNjI5ODgyYzllZjEwYzA0MmI1NjNjNDIxNTBhYzMyNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAKQEAgLTM3LDE4ICszNywx
NSBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewotV2Vi
TGF5ZXJUcmVlVmlldzo6U2V0dGluZ3M6Om9wZXJhdG9yIENDU2V0dGluZ3MoKSBjb25zdAorCitX
ZWJMYXllclRyZWVWaWV3OjpTZXR0aW5nczo6b3BlcmF0b3IgQ0NMYXllclRyZWVTZXR0aW5ncygp
IGNvbnN0CiB7Ci0gICAgQ0NTZXR0aW5ncyBzZXR0aW5nczsKLSAgICBzZXR0aW5ncy5hY2NlbGVy
YXRlUGFpbnRpbmcgPSBhY2NlbGVyYXRlUGFpbnRpbmc7CisgICAgQ0NMYXllclRyZWVTZXR0aW5n
cyBzZXR0aW5nczsKICAgICBzZXR0aW5ncy5mb3JjZVNvZnR3YXJlQ29tcG9zaXRpbmcgPSBmb3Jj
ZVNvZnR3YXJlQ29tcG9zaXRpbmc7CiAgICAgc2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIgPSBzaG93
RlBTQ291bnRlcjsKICAgICBzZXR0aW5ncy5zaG93UGxhdGZvcm1MYXllclRyZWUgPSBzaG93UGxh
dGZvcm1MYXllclRyZWU7CiAgICAgc2V0dGluZ3Muc2hvd1BhaW50UmVjdHMgPSBzaG93UGFpbnRS
ZWN0czsKICAgICBzZXR0aW5ncy5yZWZyZXNoUmF0ZSA9IHJlZnJlc2hSYXRlOwotICAgIHNldHRp
bmdzLnBlclRpbGVQYWludGluZyA9IHBlclRpbGVQYWludGluZzsKLSAgICBzZXR0aW5ncy5wYXJ0
aWFsU3dhcEVuYWJsZWQgPSBwYXJ0aWFsU3dhcEVuYWJsZWQ7Ci0gICAgc2V0dGluZ3MudGhyZWFk
ZWRBbmltYXRpb25FbmFibGVkID0gdGhyZWFkZWRBbmltYXRpb25FbmFibGVkOwogICAgIHNldHRp
bmdzLmRlZmF1bHRUaWxlU2l6ZSA9IGRlZmF1bHRUaWxlU2l6ZTsKICAgICBzZXR0aW5ncy5tYXhV
bnRpbGVkTGF5ZXJTaXplID0gbWF4VW50aWxlZExheWVyU2l6ZTsKICAgICBzZXR0aW5ncy5kZXZp
Y2VTY2FsZUZhY3RvciA9IGRldmljZVNjYWxlRmFjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKaW5kZXggOTQyMzY4OTY4NzY2ZTc2YmE4NDI3
NjIwNzNhNTMzMjliYTA2Zjc3Ny4uNWY4Nzc2YjU4YTM1ODg1YTlhYTUyMmU1Njk1M2M0YjBkZGJi
YTE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwu
Y3BwCkBAIC01OTIsMjEgKzU5Miw2IEBAIHZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRBY2NlbGVy
YXRlZFBhaW50aW5nRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgbV9zZXR0aW5ncy0+c2V0QWNj
ZWxlcmF0ZWREcmF3aW5nRW5hYmxlZChlbmFibGVkKTsKIH0KIAotdm9pZCBXZWJTZXR0aW5nc0lt
cGw6OnNldFBlclRpbGVQYWludGluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQotewotICAgIG1fc2V0
dGluZ3MtPnNldFBlclRpbGVEcmF3aW5nRW5hYmxlZChlbmFibGVkKTsKLX0KLQotdm9pZCBXZWJT
ZXR0aW5nc0ltcGw6OnNldFBhcnRpYWxTd2FwRW5hYmxlZChib29sIGVuYWJsZWQpCi17Ci0gICAg
bV9zZXR0aW5ncy0+c2V0UGFydGlhbFN3YXBFbmFibGVkKGVuYWJsZWQpOwotfQotCi12b2lkIFdl
YlNldHRpbmdzSW1wbDo6c2V0VGhyZWFkZWRBbmltYXRpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkK
LXsKLSAgICBtX3NldHRpbmdzLT5zZXRUaHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQoZW5hYmxlZCk7
Ci19Ci0KIHZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRNZWRpYVBsYXliYWNrUmVxdWlyZXNVc2Vy
R2VzdHVyZShib29sIHJlcXVpcmVkKQogewogICAgIG1fc2V0dGluZ3MtPnNldE1lZGlhUGxheWJh
Y2tSZXF1aXJlc1VzZXJHZXN0dXJlKHJlcXVpcmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKaW5kZXggZWE3Y2YzZmY5MjIzZDg0YmY0MjRmZDI3YzVi
OTM0NjBlNDU4N2M1My4uMmI1OGMwNDQzYjlmMTA3N2NhMjQ4N2I3MDI2N2QwNTQxYzVkZGI4OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKQEAgLTE0
NCw5ICsxNDQsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFNob3VsZERpc3BsYXlD
YXB0aW9ucyhib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkRGlzcGxheVRleHREZXNj
cmlwdGlvbnMoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkUGFpbnRpbmdF
bmFibGVkKGJvb2wpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRQZXJUaWxlUGFpbnRpbmdFbmFibGVk
KGJvb2wpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRQYXJ0aWFsU3dhcEVuYWJsZWQoYm9vbCk7Ci0g
ICAgdmlydHVhbCB2b2lkIHNldFRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZChib29sKTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0Rml4ZWRQb3NpdGlvbkNyZWF0ZXNTdGFja2luZ0NvbnRleHQoYm9vbCk7
CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZXdwb3J0RW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0TWVkaWFQbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUoYm9vbCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggZjkwYjFmOGFmN2JkM2Vh
OWMyMmI2YzFkZmVlN2Q2NjBhYWQxODA5ZS4uNGQ0MGQwODRkMzQ1M2I3ZjBmNzA3MWRkMzM4YjZj
OTg2MDI3MThiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cApAQCAtMTQ2LDYgKzE0Niw3IEBACiAjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgogI2luY2x1
ZGUgIldoZWVsRXZlbnQuaCIKICNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCisjaW5jbHVkZSAiY2Mv
Q0NTZXR0aW5ncy5oIgogI2luY2x1ZGUgInBhaW50aW5nL0dyYXBoaWNzQ29udGV4dEJ1aWxkZXIu
aCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCIKICNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKQEAgLTQ1OCw3ICs0NTksNyBAQCBXZWJWaWV3SW1wbDo6
V2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCogY2xpZW50KQogI2lmIEVOQUJMRShCQVRURVJZX1NU
QVRVUykKICAgICBwcm92aWRlQmF0dGVyeVRvKG1fcGFnZS5nZXQoKSwgbV9iYXR0ZXJ5Q2xpZW50
LmdldCgpKTsKICNlbmRpZgotICAgIAorCiAgICAgbV9wYWdlLT5zZXRHcm91cE5hbWUocGFnZUdy
b3VwTmFtZSk7CiAKICNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKQEAgLTM0NjYsMTAg
KzM0NjcsNiBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdB
Y3RpdmUoYm9vbCBhY3RpdmUpCiAgICAgICAgIGxheWVyVHJlZVZpZXdTZXR0aW5ncy5zaG93UGFp
bnRSZWN0cyA9IHNldHRpbmdzSW1wbCgpLT5zaG93UGFpbnRSZWN0cygpOwogICAgICAgICBsYXll
clRyZWVWaWV3U2V0dGluZ3MuZm9yY2VTb2Z0d2FyZUNvbXBvc2l0aW5nID0gc2V0dGluZ3MoKS0+
Zm9yY2VTb2Z0d2FyZUNvbXBvc2l0aW5nKCk7CiAKLSAgICAgICAgbGF5ZXJUcmVlVmlld1NldHRp
bmdzLnBlclRpbGVQYWludGluZyA9IHBhZ2UoKS0+c2V0dGluZ3MoKS0+cGVyVGlsZURyYXdpbmdF
bmFibGVkKCk7Ci0gICAgICAgIGxheWVyVHJlZVZpZXdTZXR0aW5ncy5wYXJ0aWFsU3dhcEVuYWJs
ZWQgPSBwYWdlKCktPnNldHRpbmdzKCktPnBhcnRpYWxTd2FwRW5hYmxlZCgpOwotICAgICAgICBs
YXllclRyZWVWaWV3U2V0dGluZ3MudGhyZWFkZWRBbmltYXRpb25FbmFibGVkID0gcGFnZSgpLT5z
ZXR0aW5ncygpLT50aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQoKTsKLQogICAgICAgICBsYXllclRy
ZWVWaWV3U2V0dGluZ3MuZGVmYXVsdFRpbGVTaXplID0gc2V0dGluZ3NJbXBsKCktPmRlZmF1bHRU
aWxlU2l6ZSgpOwogICAgICAgICBsYXllclRyZWVWaWV3U2V0dGluZ3MubWF4VW50aWxlZExheWVy
U2l6ZSA9IHNldHRpbmdzSW1wbCgpLT5tYXhVbnRpbGVkTGF5ZXJTaXplKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVz
dC5jcHAKaW5kZXggMTY1N2MzMzQxODkxMzAzY2VjMzNlNjA5ZGNiZDc5ZTQxYjJjYzc5YS4uMjA4
NGU5YWI1ZTU3NThlZGJlNGRmYTYyMWY5OTBkMzY2ODk4Njg4ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAK
QEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNDQW5pbWF0aW9uVGVzdENvbW1vbi5oIgog
I2luY2x1ZGUgIkNDTGF5ZXJUZXN0Q29tbW9uLmgiCisjaW5jbHVkZSAiQ0NUZXN0Q29tbW9uLmgi
CiAjaW5jbHVkZSAiRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlLmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgi
CkBAIC0zNSw2ICszNiw3IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXllclRpbGluZ0RhdGEuaCIKICNp
bmNsdWRlICJjYy9DQ1F1YWRDdWxsZXIuaCIKICNpbmNsdWRlICJjYy9DQ1Njcm9sbGJhckxheWVy
SW1wbC5oIgorI2luY2x1ZGUgImNjL0NDU2V0dGluZ3MuaCIKICNpbmNsdWRlICJjYy9DQ1Npbmds
ZVRocmVhZFByb3h5LmgiCiAjaW5jbHVkZSAiY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuaCIKICNp
bmNsdWRlICJjYy9DQ1RleHR1cmVMYXllckltcGwuaCIKQEAgLTY1LDcgKzY3LDcgQEAgcHVibGlj
OgogICAgICAgICA6IG1fZGlkUmVxdWVzdENvbW1pdChmYWxzZSkKICAgICAgICAgLCBtX2RpZFJl
cXVlc3RSZWRyYXcoZmFsc2UpCiAgICAgewotICAgICAgICBDQ1NldHRpbmdzIHNldHRpbmdzOwor
ICAgICAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOwogICAgICAgICBtX2hvc3RJbXBs
ID0gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKHNldHRpbmdzLCB0aGlzKTsKICAgICAgICAg
bV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgpLCBVbnRo
cm90dGxlZFVwbG9hZGVyKTsKICAgICAgICAgbV9ob3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKElu
dFNpemUoMTAsIDEwKSk7CkBAIC04MCwxMCArODIsOSBAQCBwdWJsaWM6CiAKICAgICBQYXNzT3du
UHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IGNyZWF0ZUxheWVyVHJlZUhvc3QoYm9vbCBwYXJ0aWFs
U3dhcCwgUGFzc1JlZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gZ3JhcGhpY3NDb250ZXh0LCBQYXNz
T3duUHRyPENDTGF5ZXJJbXBsPiByb290UHRyKQogICAgIHsKLSAgICAgICAgQ0NTZXR0aW5ncyBz
ZXR0aW5nczsKLQotICAgICAgICBzZXR0aW5ncy5wYXJ0aWFsU3dhcEVuYWJsZWQgPSBwYXJ0aWFs
U3dhcDsKKyAgICAgICAgQ0NTZXR0aW5nczo6c2V0UGFydGlhbFN3YXBFbmFibGVkKHBhcnRpYWxT
d2FwKTsKIAorICAgICAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOwogICAgICAgICBP
d25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gbXlIb3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdElt
cGw6OmNyZWF0ZShzZXR0aW5ncywgdGhpcyk7CiAKICAgICAgICAgbXlIb3N0SW1wbC0+aW5pdGlh
bGl6ZUxheWVyUmVuZGVyZXIoZ3JhcGhpY3NDb250ZXh0LCBVbnRocm90dGxlZFVwbG9hZGVyKTsK
QEAgLTE0OCw2ICsxNDksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgT3duUHRyPENDTGF5ZXJUcmVlSG9z
dEltcGw+IG1faG9zdEltcGw7CiAgICAgYm9vbCBtX2RpZFJlcXVlc3RDb21taXQ7CiAgICAgYm9v
bCBtX2RpZFJlcXVlc3RSZWRyYXc7CisgICAgQ0NTY29wZWRTZXR0aW5ncyBtX3Njb3BlZFNldHRp
bmdzOwogfTsKIAogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBzY3JvbGxEZWx0YU5v
TGF5ZXJzKQpAQCAtMTA3MCw4ICsxMDcyLDggQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxU
ZXN0LCBwYXJ0aWFsU3dhcFJlY2VpdmVzRGFtYWdlUmVjdCkKIAogICAgIC8vIFRoaXMgdGVzdCBj
cmVhdGVzIGl0cyBvd24gQ0NMYXllclRyZWVIb3N0SW1wbCwgc28KICAgICAvLyB0aGF0IHdlIGNh
biBmb3JjZSBwYXJ0aWFsIHN3YXAgZW5hYmxlZC4KLSAgICBDQ1NldHRpbmdzIHNldHRpbmdzOwot
ICAgIHNldHRpbmdzLnBhcnRpYWxTd2FwRW5hYmxlZCA9IHRydWU7CisgICAgQ0NMYXllclRyZWVT
ZXR0aW5ncyBzZXR0aW5nczsKKyAgICBDQ1NldHRpbmdzOjpzZXRQYXJ0aWFsU3dhcEVuYWJsZWQo
dHJ1ZSk7CiAgICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IGxheWVyVHJlZUhvc3RJbXBs
ID0gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKHNldHRpbmdzLCB0aGlzKTsKICAgICBsYXll
clRyZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY2NDb250ZXh0LCBVbnRocm90
dGxlZFVwbG9hZGVyKTsKICAgICBsYXllclRyZWVIb3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKElu
dFNpemUoNTAwLCA1MDApKTsKQEAgLTEyNzcsNyArMTI3OSw3IEBAIFRFU1RfRihDQ0xheWVyVHJl
ZUhvc3RJbXBsVGVzdCwgcGFydGlhbFN3YXBOb1VwZGF0ZSkKICAgICBoYXJuZXNzLm11c3RTZXRT
Y2lzc29yKDAsIDAsIDEwLCAxMCk7CiAKICAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4g
bXlIb3N0SW1wbCA9IGNyZWF0ZUxheWVyVHJlZUhvc3QodHJ1ZSwgY29udGV4dCwgRmFrZUxheWVy
V2l0aFF1YWRzOjpjcmVhdGUoMSkpOwotICAgIAorCiAgICAgLy8gRHJhdyBvbmNlIHRvIG1ha2Ug
c3VyZSBsYXllciBpcyBub3QgbmV3CiAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRh
IGZyYW1lOwogICAgIEVYUEVDVF9UUlVFKG15SG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUp
KTsKQEAgLTEzMDQsNyArMTMwNiw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBXZWJT
dHJpbmcoIkdMX0NIUk9NSVVNX3Bvc3Rfc3ViX2J1ZmZlciIpOwogICAgICAgICByZXR1cm4gV2Vi
U3RyaW5nKCk7CiAgICAgfQotICAgIAorCiAgICAgV2ViU3RyaW5nIGdldFJlcXVlc3RhYmxlRXh0
ZW5zaW9uc0NIUk9NSVVNKCkKICAgICB7CiAgICAgICAgIHJldHVybiBXZWJTdHJpbmcoIkdMX0NI
Uk9NSVVNX3Bvc3Rfc3ViX2J1ZmZlciIpOwpAQCAtMTMxMywxMCArMTMxNSwxMSBAQCBwdWJsaWM6
CiAKIHN0YXRpYyBQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IHNldHVwTGF5ZXJzRm9y
T3BhY2l0eShib29sIHBhcnRpYWxTd2FwLCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KiBjbGll
bnQpCiB7Ci0gICAgQ0NTZXR0aW5ncyBzZXR0aW5nczsKLSAgICBzZXR0aW5ncy5wYXJ0aWFsU3dh
cEVuYWJsZWQgPSBwYXJ0aWFsU3dhcDsKKyAgICBDQ1NldHRpbmdzOjpzZXRQYXJ0aWFsU3dhcEVu
YWJsZWQocGFydGlhbFN3YXApOwogCiAgICAgUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250
ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IFBhcnRp
YWxTd2FwQ29udGV4dCgpKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0
V2luZG93KSk7CisKKyAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOwogICAgIE93blB0
cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBteUhvc3RJbXBsID0gQ0NMYXllclRyZWVIb3N0SW1wbDo6
Y3JlYXRlKHNldHRpbmdzLCBjbGllbnQpOwogICAgIG15SG9zdEltcGwtPmluaXRpYWxpemVMYXll
clJlbmRlcmVyKGNvbnRleHQucmVsZWFzZSgpLCBVbnRocm90dGxlZFVwbG9hZGVyKTsKICAgICBt
eUhvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMDAsIDEwMCkpOwpAQCAtMTQxOSw4
ICsxNDIyLDggQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBjb250cmlidXRpbmdM
YXllckVtcHR5U2Npc3Nvck5vUGFydGlhbFN3YXApCiAKIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJ
bXBsVGVzdCwgZGlkRHJhd05vdENhbGxlZE9uU2Npc3NvcmVkTGF5ZXIpCiB7Ci0gICAgQ0NTZXR0
aW5ncyBzZXR0aW5nczsKLSAgICBzZXR0aW5ncy5wYXJ0aWFsU3dhcEVuYWJsZWQgPSB0cnVlOwor
ICAgIENDTGF5ZXJUcmVlU2V0dGluZ3Mgc2V0dGluZ3M7CisgICAgQ0NTZXR0aW5nczo6c2V0UGFy
dGlhbFN3YXBFbmFibGVkKHRydWUpOwogCiAgICAgUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBj
b250ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKEdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IFBh
cnRpYWxTd2FwQ29udGV4dCgpKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9I
b3N0V2luZG93KSk7CiAgICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IG15SG9zdEltcGwg
PSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoc2V0dGluZ3MsIHRoaXMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5k
ZXggZTI3NDIyNDQ5NzI5MmZiMTM3MjdkMzkwOWZiZTdjMzUxNzYyNDgyYS4uNjUwZmFmMTJlZWYx
NjNjYmRiYjIzZWQxNDllMDQyYmI4OWE3ODAwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC00NCw2ICs0NCw3IEBA
CiAjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhv
c3RJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NTY29wZWRUaHJlYWRQcm94eS5oIgorI2luY2x1ZGUg
ImNjL0NDU2V0dGluZ3MuaCIKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgiCiAj
aW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgImNjL0NDVGhyZWFkVGFz
ay5oIgpAQCAtMTU0LDcgKzE1NSw3IEBAIHB1YmxpYzoKIC8vIEFkYXB0cyBDQ0xheWVyVHJlZUhv
c3RJbXBsIGZvciB0ZXN0LiBSdW5zIHJlYWwgY29kZSwgdGhlbiBpbnZva2VzIHRlc3QgaG9va3Mu
CiBjbGFzcyBNb2NrTGF5ZXJUcmVlSG9zdEltcGwgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0SW1w
bCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8TW9ja0xheWVyVHJlZUhvc3RJbXBs
PiBjcmVhdGUoVGVzdEhvb2tzKiB0ZXN0SG9va3MsIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdz
LCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KiBjbGllbnQpCisgICAgc3RhdGljIFBhc3NPd25Q
dHI8TW9ja0xheWVyVHJlZUhvc3RJbXBsPiBjcmVhdGUoVGVzdEhvb2tzKiB0ZXN0SG9va3MsIGNv
bnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzLCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xp
ZW50KiBjbGllbnQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IE1vY2tMYXll
clRyZWVIb3N0SW1wbCh0ZXN0SG9va3MsIHNldHRpbmdzLCBjbGllbnQpKTsKICAgICB9CkBAIC0y
MDIsNyArMjAzLDcgQEAgcHJvdGVjdGVkOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBNb2NrTGF5
ZXJUcmVlSG9zdEltcGwoVGVzdEhvb2tzKiB0ZXN0SG9va3MsIGNvbnN0IENDU2V0dGluZ3MmIHNl
dHRpbmdzLCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KiBjbGllbnQpCisgICAgTW9ja0xheWVy
VHJlZUhvc3RJbXBsKFRlc3RIb29rcyogdGVzdEhvb2tzLCBjb25zdCBDQ0xheWVyVHJlZVNldHRp
bmdzJiBzZXR0aW5ncywgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCogY2xpZW50KQogICAgICAg
ICA6IENDTGF5ZXJUcmVlSG9zdEltcGwoc2V0dGluZ3MsIGNsaWVudCkKICAgICAgICAgLCBtX3Rl
c3RIb29rcyh0ZXN0SG9va3MpCiAgICAgewpAQCAtMjE0LDEzICsyMTUsOSBAQCBwcml2YXRlOgog
Ly8gQWRhcHRzIENDTGF5ZXJUcmVlSG9zdCBmb3IgdGVzdC4gSW5qZWN0cyBNb2NrTGF5ZXJUcmVl
SG9zdEltcGwuCiBjbGFzcyBNb2NrTGF5ZXJUcmVlSG9zdCA6IHB1YmxpYyBDQ0xheWVyVHJlZUhv
c3QgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPE1vY2tMYXllclRyZWVIb3N0PiBj
cmVhdGUoVGVzdEhvb2tzKiB0ZXN0SG9va3MsIENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50
LCBQYXNzUmVmUHRyPExheWVyQ2hyb21pdW0+IHJvb3RMYXllciwgY29uc3QgQ0NTZXR0aW5ncyYg
c2V0dGluZ3MpCisgICAgc3RhdGljIFBhc3NPd25QdHI8TW9ja0xheWVyVHJlZUhvc3Q+IGNyZWF0
ZShUZXN0SG9va3MqIHRlc3RIb29rcywgQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQsIFBh
c3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcm9vdExheWVyLCBjb25zdCBDQ0xheWVyVHJlZVNldHRp
bmdzJiBzZXR0aW5ncykKICAgICB7Ci0gICAgICAgIC8vIEZvciB0aGVzZSB0ZXN0cywgd2Ugd2ls
bCBlbmFibGUgdGhyZWFkZWQgYW5pbWF0aW9ucy4KLSAgICAgICAgQ0NTZXR0aW5ncyBzZXR0aW5n
c0NvcHkgPSBzZXR0aW5nczsKLSAgICAgICAgc2V0dGluZ3NDb3B5LnRocmVhZGVkQW5pbWF0aW9u
RW5hYmxlZCA9IHRydWU7Ci0KLSAgICAgICAgT3duUHRyPE1vY2tMYXllclRyZWVIb3N0PiBsYXll
clRyZWVIb3N0KGFkb3B0UHRyKG5ldyBNb2NrTGF5ZXJUcmVlSG9zdCh0ZXN0SG9va3MsIGNsaWVu
dCwgc2V0dGluZ3NDb3B5KSkpOworICAgICAgICBPd25QdHI8TW9ja0xheWVyVHJlZUhvc3Q+IGxh
eWVyVHJlZUhvc3QoYWRvcHRQdHIobmV3IE1vY2tMYXllclRyZWVIb3N0KHRlc3RIb29rcywgY2xp
ZW50LCBzZXR0aW5ncykpKTsKICAgICAgICAgYm9vbCBzdWNjZXNzID0gbGF5ZXJUcmVlSG9zdC0+
aW5pdGlhbGl6ZSgpOwogICAgICAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKICAgICAgICAgbGF5
ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKHJvb3RMYXllcik7CkBAIC0yMzUsMTAgKzIzMiw3IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc093blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBj
cmVhdGVMYXllclRyZWVIb3N0SW1wbChDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KiBjbGllbnQp
CiAgICAgewotICAgICAgICAvLyBGb3IgdGhlc2UgdGVzdHMsIHdlIHdpbGwgZW5hYmxlIHRocmVh
ZGVkIGFuaW1hdGlvbnMuCi0gICAgICAgIENDU2V0dGluZ3MgY29weVNldHRpbmdzID0gc2V0dGlu
Z3MoKTsKLSAgICAgICAgY29weVNldHRpbmdzLnRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZCA9IHRy
dWU7Ci0gICAgICAgIHJldHVybiBNb2NrTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShtX3Rlc3RI
b29rcywgY29weVNldHRpbmdzLCBjbGllbnQpOworICAgICAgICByZXR1cm4gTW9ja0xheWVyVHJl
ZUhvc3RJbXBsOjpjcmVhdGUobV90ZXN0SG9va3MsIHNldHRpbmdzKCksIGNsaWVudCk7CiAgICAg
fQogCiAgICAgdmlydHVhbCB2b2lkIGRpZEFkZEFuaW1hdGlvbigpIE9WRVJSSURFCkBAIC0yNTMs
NyArMjQ3LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBNb2NrTGF5ZXJUcmVl
SG9zdChUZXN0SG9va3MqIHRlc3RIb29rcywgQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQs
IGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKQorICAgIE1vY2tMYXllclRyZWVIb3N0KFRlc3RI
b29rcyogdGVzdEhvb2tzLCBDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwgY29uc3QgQ0NM
YXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MpCiAgICAgICAgIDogQ0NMYXllclRyZWVIb3N0KGNs
aWVudCwgc2V0dGluZ3MpCiAgICAgICAgICwgbV90ZXN0SG9va3ModGVzdEhvb2tzKQogICAgICAg
ICAsIG1fZGlkQWRkQW5pbWF0aW9uV2FzQ2FsbGVkKGZhbHNlKQpAQCAtNjQxLDYgKzYzNSw5IEBA
IHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwgdm9pZCBydW5UZXN0KGJvb2wgdGhyZWFkZWQpCiAg
ICAgeworICAgICAgICAvLyBGb3IgdGhlc2UgdGVzdHMsIHdlIHdpbGwgZW5hYmxlIHRocmVhZGVk
IGFuaW1hdGlvbnMuCisgICAgICAgIFdlYkNvbXBvc2l0b3I6OnNldEFjY2VsZXJhdGVkQW5pbWF0
aW9uRW5hYmxlZCh0cnVlKTsKKwogICAgICAgICBpZiAodGhyZWFkZWQpIHsKICAgICAgICAgICAg
IG1fd2ViVGhyZWFkID0gYWRvcHRQdHIoV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5jcmVh
dGVUaHJlYWQoIkNDTGF5ZXJUcmVlSG9zdFRlc3QiKSk7CiAgICAgICAgICAgICBXZWJDb21wb3Np
dG9yOjppbml0aWFsaXplKG1fd2ViVGhyZWFkLmdldCgpKTsKQEAgLTY3Nyw3ICs2NzQsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgICAgIFdlYkNvbXBvc2l0b3I6OnNodXRkb3duKCk7CiAgICAgfQogCi0g
ICAgQ0NTZXR0aW5ncyBtX3NldHRpbmdzOworICAgIENDTGF5ZXJUcmVlU2V0dGluZ3MgbV9zZXR0
aW5nczsKICAgICBPd25QdHI8TW9ja0xheWVyVHJlZUhvc3RDbGllbnQ+IG1fY2xpZW50OwogICAg
IE93blB0cjxDQ0xheWVyVHJlZUhvc3Q+IG1fbGF5ZXJUcmVlSG9zdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1Rlc3RDb21tb24uaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NUZXN0Q29tbW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2EzNjg0YTYzZDk5
NDkyOTliZDk2Y2NlNTBkNzlkYTdjNmUwZWJkMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUZXN0Q29tbW9uLmgKQEAgLTAsMCArMSw0MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICog
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBDQ1Rlc3RDb21tb25faAorI2RlZmluZSBDQ1Rlc3RDb21tb25f
aAorCisjaW5jbHVkZSAiY2MvQ0NTZXR0aW5ncy5oIgorCituYW1lc3BhY2UgV2ViS2l0VGVzdHMg
eworCisvLyBJZiB5b3UgaGF2ZSBhIHRlc3QgdGhhdCBtb2RpZmllcyBvciB1c2VzIGdsb2JhbCBz
ZXR0aW5ncywga2VlcCBhbiBpbnN0YW5jZQorLy8gb2YgdGhpcyBjbGFzcyB0byBlbnN1cmUgdGhh
dCB5b3Ugc3RhcnQgYW5kIGVuZCB3aXRoIGEgY2xlYW4gc2xhdGUuCitjbGFzcyBDQ1Njb3BlZFNl
dHRpbmdzIHsKK3B1YmxpYzoKKyAgICBDQ1Njb3BlZFNldHRpbmdzKCkgeyBXZWJDb3JlOjpDQ1Nl
dHRpbmdzOjpyZXNldCgpOyB9CisgICAgfkNDU2NvcGVkU2V0dGluZ3MoKSB7IFdlYkNvcmU6OkND
U2V0dGluZ3M6OnJlc2V0KCk7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdFRlc3RzCisK
KyNlbmRpZiAvLyBDQ1Rlc3RDb21tb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9HcmFwaGljc0xheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvR3JhcGhpY3NMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggYjgzODA0
OTVhZjkwMDJlNmM2OWYwNDdjZWRhYWY5NzIyZGYyYjM2NC4uNGZkY2Y0ZjQxZTE5MTdjZjcxY2Nj
NzRiMTM5NzM1N2NmNjNmYmYzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9HcmFwaGljc0xheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC04Myw5ICs4Myw3
IEBAIGNsYXNzIE1vY2tMYXllclRyZWVIb3N0IDogcHVibGljIENDTGF5ZXJUcmVlSG9zdCB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8TW9ja0xheWVyVHJlZUhvc3Q+IGNyZWF0ZSgp
CiAgICAgewotICAgICAgICAvLyBGb3IgdGhlc2UgdGVzdHMsIHdlIHdpbGwgZW5hYmxlIHRocmVh
ZGVkIGFuaW1hdGlvbnMuCi0gICAgICAgIENDU2V0dGluZ3Mgc2V0dGluZ3M7Ci0gICAgICAgIHNl
dHRpbmdzLnRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZCA9IHRydWU7CisgICAgICAgIENDTGF5ZXJU
cmVlU2V0dGluZ3Mgc2V0dGluZ3M7CiAgICAgICAgIE93blB0cjxNb2NrTGF5ZXJUcmVlSG9zdD4g
bGF5ZXJUcmVlSG9zdChhZG9wdFB0cihuZXcgTW9ja0xheWVyVHJlZUhvc3QobmV3IE1vY2tMYXll
clRyZWVIb3N0Q2xpZW50KCksIHNldHRpbmdzKSkpOwogICAgICAgICBib29sIHN1Y2Nlc3MgPSBs
YXllclRyZWVIb3N0LT5pbml0aWFsaXplKCk7CiAgICAgICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3Mp
OwpAQCAtOTYsMTQgKzk0LDExIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc093blB0cjxD
Q0xheWVyVHJlZUhvc3RJbXBsPiBjcmVhdGVMYXllclRyZWVIb3N0SW1wbChDQ0xheWVyVHJlZUhv
c3RJbXBsQ2xpZW50KiBjbGllbnQpCiAgICAgewotICAgICAgICAvLyBGb3IgdGhlc2UgdGVzdHMs
IHdlIHdpbGwgZW5hYmxlIHRocmVhZGVkIGFuaW1hdGlvbnMuCi0gICAgICAgIENDU2V0dGluZ3Mg
Y29weVNldHRpbmdzID0gc2V0dGluZ3MoKTsKLSAgICAgICAgY29weVNldHRpbmdzLnRocmVhZGVk
QW5pbWF0aW9uRW5hYmxlZCA9IHRydWU7Ci0gICAgICAgIHJldHVybiBDQ0xheWVyVHJlZUhvc3RJ
bXBsOjpjcmVhdGUoY29weVNldHRpbmdzLCBjbGllbnQpOworICAgICAgICByZXR1cm4gQ0NMYXll
clRyZWVIb3N0SW1wbDo6Y3JlYXRlKHNldHRpbmdzKCksIGNsaWVudCk7CiAgICAgfQogCiBwcml2
YXRlOgotICAgIE1vY2tMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50
LCBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncykKKyAgICBNb2NrTGF5ZXJUcmVlSG9zdChDQ0xh
eWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0
dGluZ3MpCiAgICAgICAgIDogQ0NMYXllclRyZWVIb3N0KGNsaWVudCwgc2V0dGluZ3MpCiAgICAg
ewogICAgIH0KQEAgLTExMyw2ICsxMDgsOCBAQCBjbGFzcyBHcmFwaGljc0xheWVyQ2hyb21pdW1U
ZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogcHVibGljOgogICAgIEdyYXBoaWNzTGF5ZXJD
aHJvbWl1bVRlc3QoKQogICAgIHsKKyAgICAgICAgLy8gRm9yIHRoZXNlIHRlc3RzLCB3ZSB3aWxs
IGVuYWJsZSB0aHJlYWRlZCBhbmltYXRpb25zLgorICAgICAgICBXZWJDb21wb3NpdG9yOjpzZXRB
Y2NlbGVyYXRlZEFuaW1hdGlvbkVuYWJsZWQodHJ1ZSk7CiAgICAgICAgIFdlYkNvbXBvc2l0b3I6
OmluaXRpYWxpemUoMCk7CiAgICAgICAgIG1fZ3JhcGhpY3NMYXllciA9IHN0YXRpY19wb2ludGVy
X2Nhc3Q8R3JhcGhpY3NMYXllckNocm9taXVtPihHcmFwaGljc0xheWVyOjpjcmVhdGUoJm1fY2xp
ZW50KSk7CiAgICAgICAgIG1fcGxhdGZvcm1MYXllciA9IHN0YXRpY19jYXN0PExheWVyQ2hyb21p
dW0qPihtX2dyYXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IDk1NDE3NGFi
NzYzNTdhNzEzMjQwMWExZDBhM2NjODM4YzhlZDkxYTkuLjFiZWY5MmJjZWZmNGU2NjUxMGRmNzgx
ODczOGNhMmFlZGI4NjliYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIG5hbWVzcGFjZSB7CiBj
bGFzcyBNb2NrQ0NMYXllclRyZWVIb3N0IDogcHVibGljIENDTGF5ZXJUcmVlSG9zdCB7CiBwdWJs
aWM6CiAgICAgTW9ja0NDTGF5ZXJUcmVlSG9zdCgpCi0gICAgICAgIDogQ0NMYXllclRyZWVIb3N0
KCZtX2Zha2VDbGllbnQsIENDU2V0dGluZ3MoKSkKKyAgICAgICAgOiBDQ0xheWVyVHJlZUhvc3Qo
Jm1fZmFrZUNsaWVudCwgQ0NMYXllclRyZWVTZXR0aW5ncygpKQogICAgIHsKICAgICAgICAgaW5p
dGlhbGl6ZSgpOwogICAgIH0KQEAgLTYxNiw3ICs2MTYsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6
CiAgICAgRmFrZUNDTGF5ZXJUcmVlSG9zdCgpCi0gICAgICAgIDogQ0NMYXllclRyZWVIb3N0KCZt
X2NsaWVudCwgQ0NTZXR0aW5ncygpKQorICAgICAgICA6IENDTGF5ZXJUcmVlSG9zdCgmbV9jbGll
bnQsIENDTGF5ZXJUcmVlU2V0dGluZ3MoKSkKICAgICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0
LmNwcAppbmRleCA0MDE3ZDM4YmZmMjdiODNjMDFlMDAyMTM2MWE1MDY4NTg0MmEyYjk3Li5lY2Ni
YWFkN2U4ODZlYjc1OTM1M2E5NzE5Mzk0ZWQ5ZjA3MGFlMTEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5j
cHAKQEAgLTI1LDEwICsyNSwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkxh
eWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogCisjaW5jbHVkZSAiQ0NUZXN0Q29tbW9uLmgiCiAjaW5j
bHVkZSAiRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0M0QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCIKICNpbmNsdWRl
ICJXZWJDb21wb3NpdG9yLmgiCisjaW5jbHVkZSAiY2MvQ0NTZXR0aW5ncy5oIgogI2luY2x1ZGUg
ImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKIAogI2luY2x1ZGUgPGdtb2NrL2dtb2NrLmg+CkBA
IC0zNiw2ICszOCw3IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXRUZXN0czsKIAogY2xhc3MgRnJhbWVD
b3VudGluZ01lbW9yeUFsbG9jYXRpb25TZXR0aW5nQ29udGV4dCA6IHB1YmxpYyBGYWtlV2ViR3Jh
cGhpY3NDb250ZXh0M0QgewogcHVibGljOgpAQCAtODEsNyArODQsNyBAQCBwdWJsaWM6CiAKICAg
ICAvLyBDQ1JlbmRlcmVyQ2xpZW50IG1ldGhvZHMuCiAgICAgdmlydHVhbCBjb25zdCBJbnRTaXpl
JiBkZXZpY2VWaWV3cG9ydFNpemUoKSBjb25zdCBPVkVSUklERSB7IHN0YXRpYyBJbnRTaXplIGZh
a2VTaXplOyByZXR1cm4gZmFrZVNpemU7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IENDU2V0dGluZ3Mm
IHNldHRpbmdzKCkgY29uc3QgT1ZFUlJJREUgeyBzdGF0aWMgQ0NTZXR0aW5ncyBmYWtlU2V0dGlu
Z3M7IHJldHVybiBmYWtlU2V0dGluZ3M7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IENDTGF5ZXJUcmVl
U2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgT1ZFUlJJREUgeyBzdGF0aWMgQ0NMYXllclRyZWVT
ZXR0aW5ncyBmYWtlU2V0dGluZ3M7IHJldHVybiBmYWtlU2V0dGluZ3M7IH0KICAgICB2aXJ0dWFs
IHZvaWQgZGlkTG9zZUNvbnRleHQoKSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgb25T
d2FwQnVmZmVyc0NvbXBsZXRlKCkgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldEZ1
bGxSb290TGF5ZXJEYW1hZ2UoKSBPVkVSUklERSB7IG1fc2V0RnVsbFJvb3RMYXllckRhbWFnZUNv
dW50Kys7IH0KQEAgLTE0Nyw2ICsxNTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgRnJhbWVDb3VudGlu
Z01lbW9yeUFsbG9jYXRpb25TZXR0aW5nQ29udGV4dCYgbV9tb2NrQ29udGV4dDsKICAgICBGYWtl
Q0NSZW5kZXJlckNsaWVudCBtX21vY2tDbGllbnQ7CiAgICAgRmFrZUxheWVyUmVuZGVyZXJDaHJv
bWl1bSBtX2xheWVyUmVuZGVyZXJDaHJvbWl1bTsKKyAgICBDQ1Njb3BlZFNldHRpbmdzIG1fc2Nv
cGVkU2V0dGluZ3M7CiB9OwogCiAvLyBUZXN0IExheWVyUmVuZGVyZXJDaHJvbWl1bSBkaXNjYXJk
RnJhbWVidWZmZXIgZnVuY3Rpb25hbGl0eToKQEAgLTE5OCw3ICsyMDIsNyBAQCBURVNUX0YoTGF5
ZXJSZW5kZXJlckNocm9taXVtVGVzdCwgU3dhcEJ1ZmZlcnNXaGlsZUJhY2tidWZmZXJEaXNjYXJk
ZWRTaG91bGRJZ25vcgogICAgIHN3YXBCdWZmZXJzKCk7CiAgICAgRVhQRUNUX0VRKDAsIG1fbW9j
a0NvbnRleHQuZnJhbWVDb3VudCgpKTsKICAgICBFWFBFQ1RfRVEoMiwgbV9tb2NrQ2xpZW50LnNl
dEZ1bGxSb290TGF5ZXJEYW1hZ2VDb3VudCgpKTsKLSAgICAKKwogICAgIHN3YXBCdWZmZXJzKCk7
CiAgICAgRVhQRUNUX0VRKDAsIG1fbW9ja0NvbnRleHQuZnJhbWVDb3VudCgpKTsKICAgICBFWFBF
Q1RfRVEoMywgbV9tb2NrQ2xpZW50LnNldEZ1bGxSb290TGF5ZXJEYW1hZ2VDb3VudCgpKTsKQEAg
LTI4OSw2ICsyOTMsNyBAQCBwdWJsaWM6CiAvLyBUaGlzIHRlc3QgaXNuJ3QgdXNpbmcgdGhlIHNh
bWUgZml4dHVyZSBhcyBMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LCBhbmQgeW91IGNhbid0IG1p
eCBURVNUKCkgYW5kIFRFU1RfRigpIHdpdGggdGhlIHNhbWUgbmFtZSwgaGVuY2UgTFJDMi4KIFRF
U1QoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdDIsIGluaXRpYWxpemF0aW9uRG9lc05vdE1ha2VT
eW5jaHJvbm91c0NhbGxzKQogeworICAgIENDU2NvcGVkU2V0dGluZ3Mgc2NvcGVkU2V0dGluZ3M7
CiAgICAgRmFrZUNDUmVuZGVyZXJDbGllbnQgbW9ja0NsaWVudDsKICAgICBGYWtlTGF5ZXJSZW5k
ZXJlckNocm9taXVtIGxheWVyUmVuZGVyZXJDaHJvbWl1bSgmbW9ja0NsaWVudCwgR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9w
dFB0cihuZXcgRm9yYmlkU3luY2hyb25vdXNDYWxsQ29udGV4dCksIEdyYXBoaWNzQ29udGV4dDNE
OjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdykpOwogCkBAIC0zMzAsNiArMzM1LDcgQEAgcHJp
dmF0ZToKIAogVEVTVChMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0MiwgaW5pdGlhbGl6YXRpb25X
aXRoUXVpY2tseUxvc3RDb250ZXh0RG9lc05vdEFzc2VydCkKIHsKKyAgICBDQ1Njb3BlZFNldHRp
bmdzIHNjb3BlZFNldHRpbmdzOwogICAgIEZha2VDQ1JlbmRlcmVyQ2xpZW50IG1vY2tDbGllbnQ7
CiAgICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bSBsYXllclJlbmRlcmVyQ2hyb21pdW0oJm1v
Y2tDbGllbnQsIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0
RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IExvc2VDb250ZXh0T25GaXJzdEdldENvbnRleHQp
LCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UZXh0dXJlTGF5ZXJDaHJvbWl1
bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UZXh0dXJlTGF5ZXJDaHJv
bWl1bVRlc3QuY3BwCmluZGV4IGI2MDAxN2ZkOWFhMDgwYjRmZDdmNjlmOWEwZmVlMGMyNjhiNDQ5
ZWEuLmQwY2MzZDk2ZjE0ZWJjZmU4ZDNjOThiM2RmNjI3YzBkNjNhNDhjZWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGV4dHVyZUxheWVyQ2hyb21pdW1UZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RleHR1cmVMYXllckNocm9taXVt
VGVzdC5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIHsKIGNsYXNzIE1vY2tDQ0xheWVy
VHJlZUhvc3QgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0IHsKIHB1YmxpYzoKICAgICBNb2NrQ0NM
YXllclRyZWVIb3N0KCkKLSAgICAgICAgOiBDQ0xheWVyVHJlZUhvc3QoJm1fZmFrZUNsaWVudCwg
Q0NTZXR0aW5ncygpKQorICAgICAgICA6IENDTGF5ZXJUcmVlSG9zdCgmbV9mYWtlQ2xpZW50LCBD
Q0xheWVyVHJlZVNldHRpbmdzKCkpCiAgICAgewogICAgICAgICBpbml0aWFsaXplKCk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hy
b21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNo
cm9taXVtVGVzdC5jcHAKaW5kZXggZjBjMTMxM2Y5MGVlNzUyZDRjMjIxNzhhZDM5NDQ3OGIyNTc2
MTYyMC4uNWUzMDFkOGViNDE5NDA3OTczZDA0MmUzZDkzN2JmZWZmNTgwMjU5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QuY3BwCkBAIC03OTcsNyArNzk3LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBz
a2lwc0RyYXdHZXRzUmVzZXQpCiAgICAgLy8gSW5pdGlhbGl6ZSB3aXRob3V0IHRocmVhZGluZyBz
dXBwb3J0LgogICAgIFdlYktpdDo6V2ViQ29tcG9zaXRvcjo6aW5pdGlhbGl6ZSgwKTsKICAgICBG
YWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50IGZha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQ7Ci0gICAg
T3duUHRyPENDTGF5ZXJUcmVlSG9zdD4gY2NMYXllclRyZWVIb3N0ID0gQ0NMYXllclRyZWVIb3N0
OjpjcmVhdGUoJmZha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQsIENDU2V0dGluZ3MoKSk7CisgICAg
T3duUHRyPENDTGF5ZXJUcmVlSG9zdD4gY2NMYXllclRyZWVIb3N0ID0gQ0NMYXllclRyZWVIb3N0
OjpjcmVhdGUoJmZha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQsIENDTGF5ZXJUcmVlU2V0dGluZ3Mo
KSk7CiAKICAgICAvLyBDcmVhdGUgdHdvIDMwMCB4IDMwMCB0aWxlZCBsYXllcnMuCiAgICAgSW50
U2l6ZSBjb250ZW50Qm91bmRzKDMwMCwgMzAwKTsKQEAgLTg3MywxMCArODczLDEyIEBAIFRFU1Qo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgaHVnZUxheWVyVXBkYXRlQ3Jhc2gpCiAKIFRFU1QoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgcGFydGlhbFVwZGF0ZXMpCiB7Ci0gICAgQ0NTZXR0aW5ncyBz
ZXR0aW5nczsKLSAgICBzZXR0aW5ncy5tYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMgPSA0OwogICAg
IC8vIEluaXRpYWxpemUgd2l0aG91dCB0aHJlYWRpbmcgc3VwcG9ydC4KICAgICBXZWJLaXQ6Oldl
YkNvbXBvc2l0b3I6OmluaXRpYWxpemUoMCk7CisKKyAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNl
dHRpbmdzOworICAgIHNldHRpbmdzLm1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcyA9IDQ7CisKICAg
ICBGYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50IGZha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQ7CiAg
ICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdD4gY2NMYXllclRyZWVIb3N0ID0gQ0NMYXllclRyZWVI
b3N0OjpjcmVhdGUoJmZha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQsIHNldHRpbmdzKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UcmVlU3luY2hyb25pemVyVGVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RyZWVTeW5jaHJvbml6ZXJUZXN0
LmNwcAppbmRleCBlZGRlZDVhZDJlYmQ2NzYzZGNlMWM4NGQxNDQ0YjgzYjdmODBhODA2Li4wODU5
N2YxZGM2MmQzMDNhMzFmNTA1ZWIxNmE2MTYwMDU5ZWViOGIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RyZWVTeW5jaHJvbml6ZXJUZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RyZWVTeW5jaHJvbml6ZXJUZXN0LmNwcApAQCAtMTYz
LDcgKzE2Myw3IEBAIFRFU1QoVHJlZVN5bmNocm9uaXplclRlc3QsIHN5bmNTaW1wbGVUcmVlRnJv
bUVtcHR5KQogewogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwogCi0gICAgQ0NT
ZXR0aW5ncyBzZXR0aW5nczsKKyAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOwogICAg
IE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBob3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdElt
cGw6OmNyZWF0ZShzZXR0aW5ncywgMCk7CiAKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbGF5
ZXJUcmVlUm9vdCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwpAQCAtMTgxLDcgKzE4MSw3IEBA
IFRFU1QoVHJlZVN5bmNocm9uaXplclRlc3QsIHN5bmNTaW1wbGVUcmVlUmV1c2luZ0xheWVycykK
ICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKICAgICBWZWN0b3I8aW50PiBjY0xh
eWVyRGVzdHJ1Y3Rpb25MaXN0OwogCi0gICAgQ0NTZXR0aW5ncyBzZXR0aW5nczsKKyAgICBDQ0xh
eWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOwogICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBs
PiBob3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShzZXR0aW5ncywgMCk7CiAK
ICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbGF5ZXJUcmVlUm9vdCA9IE1vY2tMYXllckNocm9t
aXVtOjpjcmVhdGUoJmNjTGF5ZXJEZXN0cnVjdGlvbkxpc3QpOwpAQCAtMjExLDcgKzIxMSw3IEBA
IFRFU1QoVHJlZVN5bmNocm9uaXplclRlc3QsIHN5bmNTaW1wbGVUcmVlQW5kVHJhY2tTdGFja2lu
Z09yZGVyQ2hhbmdlKQogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwogICAgIFZl
Y3RvcjxpbnQ+IGNjTGF5ZXJEZXN0cnVjdGlvbkxpc3Q7CiAKLSAgICBDQ1NldHRpbmdzIHNldHRp
bmdzOworICAgIENDTGF5ZXJUcmVlU2V0dGluZ3Mgc2V0dGluZ3M7CiAgICAgT3duUHRyPENDTGF5
ZXJUcmVlSG9zdEltcGw+IGhvc3RJbXBsID0gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKHNl
dHRpbmdzLCAwKTsKIAogICAgIC8vIFNldCB1cCB0aGUgdHJlZSBhbmQgc3luYyBvbmNlLiBjaGls
ZDIgbmVlZHMgdG8gYmUgc3luY2VkIGhlcmUsIHRvbywgZXZlbiB0aG91Z2ggd2UKQEAgLTI0MCw3
ICsyNDAsNyBAQCBURVNUKFRyZWVTeW5jaHJvbml6ZXJUZXN0LCBzeW5jU2ltcGxlVHJlZUFuZFBy
b3BlcnRpZXMpCiB7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7CiAKLSAgICBD
Q1NldHRpbmdzIHNldHRpbmdzOworICAgIENDTGF5ZXJUcmVlU2V0dGluZ3Mgc2V0dGluZ3M7CiAg
ICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IGhvc3RJbXBsID0gQ0NMYXllclRyZWVIb3N0
SW1wbDo6Y3JlYXRlKHNldHRpbmdzLCAwKTsKIAogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBs
YXllclRyZWVSb290ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CkBAIC0yNzcsNyArMjc3LDcg
QEAgVEVTVChUcmVlU3luY2hyb25pemVyVGVzdCwgcmV1c2VDQ0xheWVyc0FmdGVyU3RydWN0dXJh
bENoYW5nZSkKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKICAgICBWZWN0b3I8
aW50PiBjY0xheWVyRGVzdHJ1Y3Rpb25MaXN0OwogCi0gICAgQ0NTZXR0aW5ncyBzZXR0aW5nczsK
KyAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOwogICAgIE93blB0cjxDQ0xheWVyVHJl
ZUhvc3RJbXBsPiBob3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShzZXR0aW5n
cywgMCk7CiAKICAgICAvLyBTZXQgdXAgYSB0cmVlIHdpdGggdGhpcyBzb3J0IG9mIHN0cnVjdHVy
ZToKQEAgLTMyNyw3ICszMjcsNyBAQCBURVNUKFRyZWVTeW5jaHJvbml6ZXJUZXN0LCBzeW5jU2lt
cGxlVHJlZVRoZW5EZXN0cm95KQogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwog
ICAgIFZlY3RvcjxpbnQ+IGNjTGF5ZXJEZXN0cnVjdGlvbkxpc3Q7CiAKLSAgICBDQ1NldHRpbmdz
IHNldHRpbmdzOworICAgIENDTGF5ZXJUcmVlU2V0dGluZ3Mgc2V0dGluZ3M7CiAgICAgT3duUHRy
PENDTGF5ZXJUcmVlSG9zdEltcGw+IGhvc3RJbXBsID0gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3Jl
YXRlKHNldHRpbmdzLCAwKTsKIAogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBvbGRMYXllclRy
ZWVSb290ID0gTW9ja0xheWVyQ2hyb21pdW06OmNyZWF0ZSgmY2NMYXllckRlc3RydWN0aW9uTGlz
dCk7CkBAIC0zNjAsNyArMzYwLDcgQEAgVEVTVChUcmVlU3luY2hyb25pemVyVGVzdCwgc3luY01h
c2tSZXBsaWNhQW5kUmVwbGljYU1hc2tMYXllcnMpCiB7CiAgICAgRGVidWdTY29wZWRTZXRJbXBs
VGhyZWFkIGltcGw7CiAKLSAgICBDQ1NldHRpbmdzIHNldHRpbmdzOworICAgIENDTGF5ZXJUcmVl
U2V0dGluZ3Mgc2V0dGluZ3M7CiAgICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IGhvc3RJ
bXBsID0gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKHNldHRpbmdzLCAwKTsKIAogICAgIFJl
ZlB0cjxMYXllckNocm9taXVtPiBsYXllclRyZWVSb290ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
KCk7CkBAIC00MDYsNyArNDA2LDcgQEAgVEVTVChUcmVlU3luY2hyb25pemVyVGVzdCwgc3luY2hy
b25pemVBbmltYXRpb25zKQogewogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwog
Ci0gICAgQ0NTZXR0aW5ncyBzZXR0aW5nczsKKyAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRp
bmdzOwogICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBob3N0SW1wbCA9IENDTGF5ZXJU
cmVlSG9zdEltcGw6OmNyZWF0ZShzZXR0aW5ncywgMCk7CiAKICAgICBSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gbGF5ZXJUcmVlUm9vdCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146871</attachid>
            <date>2012-06-11 10:30:29 -0700</date>
            <delta_ts>2012-06-13 10:27:48 -0700</delta_ts>
            <desc>=patch for landing</desc>
            <filename>bug-88384-20120611133028.patch</filename>
            <type>text/plain</type>
            <size>74658</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5OTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA4Yjg0Y2UyYzNhZWM2
ZTIxZDJjODJmM2Y5MjAzZjc4NjgxM2UzNmRiLi4xZWIwMWRkNWUzMzhiZTVhZmRlMWJhOTY2MjY1
MWE3ODZmZmUyYThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNi0wOCAg
SWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IENlcnRhaW4gc2V0dGluZ3MgaW4gQ0NTZXR0aW5ncyBjb3VsZCBiZSBnbG9iYWwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4Mzg0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCisKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMv
V2ViTGF5ZXJUcmVlVmlldy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgIChTZXR0aW5n
cyk6CisKIDIwMTItMDYtMDggIERhdmlkIFJldmVtYW4gIDxyZXZlbWFuQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBbQ2hyb21pdW1dIENvbXBvc2l0b3IgZG9lc24ndCBzdXBwb3J0IHRyYW5zbHVj
ZW50IHJvb3QgbGF5ZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDVjYzJhMzZlYjdiMTI4MTRiMTMyOTc1YmEz
Y2MzOTUwYmNjNTM1NDguLjg5OWFhZWIyN2Y4NmU5MjNlYTkzZWJhMjYzNmRmMjMzZDdhN2Y1NmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NiBAQAorMjAxMi0wNi0wOCAgSWFuIFZvbGxpY2sgIDx2
b2xsaWNrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIENlcnRhaW4gc2V0dGlu
Z3MgaW4gQ0NTZXR0aW5ncyBjb3VsZCBiZSBnbG9iYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4Mzg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmFt
ZXMgUm9iaW5zb24uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBObyBmdW5jdGlvbmFsaXR5IGNo
YW5nZS4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgICog
cGFnZS9TZXR0aW5ncy5oOgorICAgICAgICAoU2V0dGluZ3MpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVtOjpjcmVhdGVUZXh0dXJlVXBkYXRlcklmTmVlZGVk
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OmFkZEFuaW1hdGlvbik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVt
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlVGlsZVNp
emVBbmRUaWxpbmdPcHRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDRGVidWdSZWN0SGlzdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0RlYnVnUmVj
dEhpc3Rvcnk6OmVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NEZWJ1Z1JlY3RIaXN0b3J5
OjpzYXZlRGVidWdSZWN0c0ZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5Lmg6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKENDRGVidWdSZWN0SGlzdG9yeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0hlYWRzVXBEaXNwbGF5OjplbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDSGVhZHNV
cERpc3BsYXk6OnNob3dQbGF0Zm9ybUxheWVyVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0hl
YWRzVXBEaXNwbGF5OjpzaG93RGVidWdSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRz
VXBEaXNwbGF5OjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNDSGVhZHNVcERpc3BsYXk6OmRy
YXdIdWRDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3
RGVidWdSZWN0cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NI
ZWFkc1VwRGlzcGxheS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ0hlYWRzVXBE
aXNwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpDQ0xheWVyVHJlZUhvc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjphbmltYXRlTGF5ZXJzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlU2V0dGluZ3M6OkNDTGF5ZXJUcmVlU2V0dGluZ3Mp
OgorICAgICAgICAoQ0NMYXllclRyZWVTZXR0aW5ncyk6CisgICAgICAgIChDQ0xheWVyVHJlZUhv
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpzZXR0aW5ncyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6Q0NMYXllclRyZWVIb3N0SW1wbCk6
CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6
OmFuaW1hdGVMYXllcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuaDoKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdEltcGwpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyZXIuaDoKKyAg
ICAgICAgKENDUmVuZGVyZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJlcjo6
c2V0dGluZ3MpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2V0
dGluZ3MuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NTZXR0aW5nczo6cGVyVGlsZVBhaW50aW5nRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1NldHRpbmdzOjpzZXRQZXJUaWxlUGFpbnRpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDU2V0dGluZ3M6OnBhcnRpYWxTd2FwRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Nl
dHRpbmdzOjpzZXRQYXJ0aWFsU3dhcEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTZXR0
aW5nczo6YWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkND
U2V0dGluZ3M6OnNldEFjY2VsZXJhdGVkQW5pbWF0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1NldHRpbmdzOjpyZXNldCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTZXR0aW5ncy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoQ0NTZXR0aW5ncyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcDoK
KyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaDoKKyAgICAgICAgKEludGVybmFs
U2V0dGluZ3MpOgorCiAyMDEyLTA2LTExICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtp
dC5vcmc+CiAKICAgICAgICAgW1F0XVtXaW5dIEZpeCBVU3RyaW5nIHJlbGF0ZWQgYnVpbGQgcHJv
YmxlbSBpbiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IDEwYTlkMTZjN2FiYWU2YTZjZWYwYWFiODQ1MzJiNTE2ODU1
MmQ3ZjguLjhjZTdmMzMzOTJkZTZkYmVkNmE1ZTg2NjZiYWVlMDg1ODc0NzRhZjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTggQEAKKzIwMTItMDYtMDggIElhbiBWb2xs
aWNrICA8dm9sbGlja0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBDZXJ0YWlu
IHNldHRpbmdzIGluIENDU2V0dGluZ3MgY291bGQgYmUgZ2xvYmFsCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODM4NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IEphbWVzIFJvYmluc29uLgorCisgICAgICAgICogV2ViS2l0Lmd5cGk6CisgICAgICAgICog
cHVibGljL1dlYkNvbXBvc2l0b3IuaDoKKyAgICAgICAgKFdlYkNvbXBvc2l0b3IpOgorICAgICAg
ICAqIHB1YmxpYy9XZWJTZXR0aW5ncy5oOgorICAgICAgICAqIHNyYy9XZWJDb21wb3NpdG9ySW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3I6OnNodXRkb3duKToKKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3I6OnNldFBlclRpbGVQ
YWludGluZ0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpzZXRQYXJ0
aWFsU3dhcEVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpzZXRBY2Nl
bGVyYXRlZEFuaW1hdGlvbkVuYWJsZWQpOgorICAgICAgICAqIHNyYy9XZWJMYXllclRyZWVWaWV3
LmNwcDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZp
ZXc6OlNldHRpbmdzOjpvcGVyYXRvciBDQ0xheWVyVHJlZVNldHRpbmdzKToKKyAgICAgICAgKiBz
cmMvV2ViU2V0dGluZ3NJbXBsLmNwcDoKKyAgICAgICAgKiBzcmMvV2ViU2V0dGluZ3NJbXBsLmg6
CisgICAgICAgIChXZWJTZXR0aW5nc0ltcGwpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUp
OgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcDoKKyAgICAgICAg
KiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcDoKKyAgICAgICAgKFdURjo6TW9ja0xheWVy
VHJlZUhvc3RJbXBsOjpjcmVhdGUpOgorICAgICAgICAoV1RGOjpNb2NrTGF5ZXJUcmVlSG9zdElt
cGw6Ok1vY2tMYXllclRyZWVIb3N0SW1wbCk6CisgICAgICAgIChXVEY6Ok1vY2tMYXllclRyZWVI
b3N0OjpjcmVhdGUpOgorICAgICAgICAoV1RGOjpNb2NrTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlTGF5
ZXJUcmVlSG9zdEltcGwpOgorICAgICAgICAoV1RGOjpNb2NrTGF5ZXJUcmVlSG9zdDo6TW9ja0xh
eWVyVHJlZUhvc3QpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0OjpydW5UZXN0
KToKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdFRlc3QpOgorICAgICAgICAqIHRlc3RzL0NDVGVz
dENvbW1vbi5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmguCisgICAgICAgIChXZWJLaXRUZXN0cyk6Cisg
ICAgICAgIChDQ1Njb3BlZFNldHRpbmdzKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ1Njb3Bl
ZFNldHRpbmdzOjpDQ1Njb3BlZFNldHRpbmdzKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ1Nj
b3BlZFNldHRpbmdzOjp+Q0NTY29wZWRTZXR0aW5ncyk6CisgICAgICAgICogdGVzdHMvR3JhcGhp
Y3NMYXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6TW9ja0xheWVy
VHJlZUhvc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXRUZXN0czo6TW9ja0xheWVyVHJlZUhv
c3Q6OmNyZWF0ZUxheWVyVHJlZUhvc3RJbXBsKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpNb2Nr
TGF5ZXJUcmVlSG9zdDo6TW9ja0xheWVyVHJlZUhvc3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6
OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3Q6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QpOgor
ICAgICAgICAqIHRlc3RzL0xheWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9M
YXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKExheWVyUmVuZGVyZXJDaHJv
bWl1bVRlc3QpOgorICAgICAgICAoVEVTVF9GKToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAq
IHRlc3RzL1RleHR1cmVMYXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvVGls
ZWRMYXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvVHJlZVN5bmNocm9uaXpl
clRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0VGVzdHM6OlRFU1QpOgorCiAyMDEyLTA2LTExICBN
aW4gUWluICA8cWlubWluQGdvb2dsZS5jb20+CiAKICAgICAgICAgQWRkaW5nIGEgZmxhZyB0byBz
aG93IGZ1bGxzY3JlZW4gbWVkaWEgY29udHJvbHMgaW4gY2hyb21pdW0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oIGIvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKaW5kZXggNDY3ZjY1
Y2Q1NWQ3YTllYjgzMTE3YzQwZjljYjgyMGNhMzk4MDI3NS4uNzJiNWFiOWMyZDQ0MDMyOTUxNjJl
N2M3Mzg1YWJlOTI1YjBjOWEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgQ0NMYXllclRyZWVIb3N0Owotc3RydWN0IENDU2V0dGluZ3M7Citz
dHJ1Y3QgQ0NMYXllclRyZWVTZXR0aW5nczsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01
NSw5ICs1NSw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgICwgc2hvd1BsYXRmb3JtTGF5ZXJUcmVl
KGZhbHNlKQogICAgICAgICAgICAgLCBzaG93UGFpbnRSZWN0cyhmYWxzZSkKICAgICAgICAgICAg
ICwgcmVmcmVzaFJhdGUoMCkKLSAgICAgICAgICAgICwgcGVyVGlsZVBhaW50aW5nKGZhbHNlKQot
ICAgICAgICAgICAgLCBwYXJ0aWFsU3dhcEVuYWJsZWQoZmFsc2UpCi0gICAgICAgICAgICAsIHRo
cmVhZGVkQW5pbWF0aW9uRW5hYmxlZChmYWxzZSkKICAgICAgICAgICAgICwgZGVmYXVsdFRpbGVT
aXplKFdlYlNpemUoMjU2LCAyNTYpKQogICAgICAgICAgICAgLCBtYXhVbnRpbGVkTGF5ZXJTaXpl
KFdlYlNpemUoNTEyLCA1MTIpKQogICAgICAgICAgICAgLCBkZXZpY2VTY2FsZUZhY3RvcigxKQpA
QCAtNzAsMTQgKzY3LDExIEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBzaG93UGxhdGZvcm1MYXll
clRyZWU7CiAgICAgICAgIGJvb2wgc2hvd1BhaW50UmVjdHM7CiAgICAgICAgIGRvdWJsZSByZWZy
ZXNoUmF0ZTsKLSAgICAgICAgYm9vbCBwZXJUaWxlUGFpbnRpbmc7Ci0gICAgICAgIGJvb2wgcGFy
dGlhbFN3YXBFbmFibGVkOwotICAgICAgICBib29sIHRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZDsK
ICAgICAgICAgV2ViU2l6ZSBkZWZhdWx0VGlsZVNpemU7CiAgICAgICAgIFdlYlNpemUgbWF4VW50
aWxlZExheWVyU2l6ZTsKICAgICAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3I7CiAjaWYgV0VC
S0lUX0lNUExFTUVOVEFUSU9OCi0gICAgICAgIG9wZXJhdG9yIFdlYkNvcmU6OkNDU2V0dGluZ3Mo
KSBjb25zdDsKKyAgICAgICAgb3BlcmF0b3IgV2ViQ29yZTo6Q0NMYXllclRyZWVTZXR0aW5ncygp
IGNvbnN0OwogI2VuZGlmCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDUyMzUxMjJmOTFj
YzliMWJjZTY4ZTNjZWFiNGIwM2QwZWUxODc1MTAuLjU4OGMzZDQ0ZTAyMTUwNmJiYjg0Y2IxMWRi
OGVkY2Q4NTA5YTFlYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTM3NDgsNiArMzc0OCw4IEBACiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29wZWRUaHJlYWRQ
cm94eS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Nj
cm9sbGJhckxheWVySW1wbC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2V0dGluZ3MuY3BwJywKKyAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NldHRpbmdzLmgnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmNwcCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUu
aCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5jcHAnLApAQCAtNjY0Niw3ICs2NjQ4LDcgQEAKICAgICAgICAgICAgICdpbnNw
ZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9zZWFyY2hTbWFsbEdyYXkucG5nJywKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9zZWFyY2hTbWFsbFdoaXRlLnBuZycsCiAgICAg
ICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9JbWFnZXMvc2VhcmNoTmV4dC5wbmcnLAotICAg
ICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL3NlYXJjaFByZXYucG5nJywKKyAg
ICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9zZWFyY2hQcmV2LnBuZycsICAg
ICAgICAgICAgCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9JbWFnZXMvc2VnbWVu
dC5wbmcnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL3NlZ21lbnRF
bmQucG5nJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9zZWdtZW50
SG92ZXIucG5nJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKaW5kZXggOTZjMDJhZDMwMWNjMTI1
ZDI2Yjc2ODFiNmU2YTI2MTQ3Y2E3NzkwZi4uNjUyN2Y1MTgzOThmYTA0OGZhOWUwNjZhMGE1ZDcz
MDNmNzhhMTE0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKQEAgLTI1NywxNSArMjU3LDEy
IEBAIFNldHRpbmdzOjpTZXR0aW5ncyhQYWdlKiBwYWdlKQogICAgICwgbV9zaG91bGREaXNwbGF5
Q2FwdGlvbnMoZmFsc2UpCiAgICAgLCBtX3Nob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zKGZh
bHNlKQogI2VuZGlmCi0gICAgLCBtX3BlclRpbGVEcmF3aW5nRW5hYmxlZChmYWxzZSkKLSAgICAs
IG1fcGFydGlhbFN3YXBFbmFibGVkKGZhbHNlKQogICAgICwgbV9zY3JvbGxpbmdDb29yZGluYXRv
ckVuYWJsZWQoZmFsc2UpCiAgICAgLCBtX25vdGlmaWNhdGlvbnNFbmFibGVkKHRydWUpCiAgICAg
LCBtX25lZWRzSXNMb2FkaW5nSW5BUElTZW5zZVF1aXJrKGZhbHNlKQogI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpCiAgICAgLCBtX3RvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKGZhbHNlKQogI2Vu
ZGlmCi0gICAgLCBtX3RocmVhZGVkQW5pbWF0aW9uRW5hYmxlZChmYWxzZSkKICAgICAsIG1fc2hv
dWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oZmFsc2UpCiAgICAgLCBtX3dhbnRzQmFsYW5jZWRT
ZXREZWZlcnNMb2FkaW5nQmVoYXZpb3IoZmFsc2UpCiAgICAgLCBtX3JlcXVlc3RBbmltYXRpb25G
cmFtZUVuYWJsZWQodHJ1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGlu
Z3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAppbmRleCBkMzBmNGMwNDgyZTg2
MDBmMGZkMTYyM2M1ZWEzNWM3NjM0NzUxNjRjLi43OWFmM2E0Yzk4OTJlNDkzN2M4NTVmYjkzZDM3
OTZiMDYxZGFjYjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCkBAIC01MzYsMTIgKzUzNiw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBzaG91bGREaXNwbGF5VGV4dERlc2Ny
aXB0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnM7
IH0KICNlbmRpZgogCi0gICAgICAgIHZvaWQgc2V0UGVyVGlsZURyYXdpbmdFbmFibGVkKGJvb2wg
ZW5hYmxlZCkgeyBtX3BlclRpbGVEcmF3aW5nRW5hYmxlZCA9IGVuYWJsZWQ7IH0KLSAgICAgICAg
Ym9vbCBwZXJUaWxlRHJhd2luZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3BlclRpbGVEcmF3
aW5nRW5hYmxlZDsgfQotCi0gICAgICAgIHZvaWQgc2V0UGFydGlhbFN3YXBFbmFibGVkKGJvb2wg
ZW5hYmxlZCkgeyBtX3BhcnRpYWxTd2FwRW5hYmxlZCA9IGVuYWJsZWQ7IH0KLSAgICAgICAgYm9v
bCBwYXJ0aWFsU3dhcEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3BhcnRpYWxTd2FwRW5hYmxl
ZDsgfQotCiAgICAgICAgIHZvaWQgc2V0U2Nyb2xsaW5nQ29vcmRpbmF0b3JFbmFibGVkKGJvb2wg
ZW5hYmxlZCkgeyBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yRW5hYmxlZCA9IGVuYWJsZWQ7IH0KICAg
ICAgICAgYm9vbCBzY3JvbGxpbmdDb29yZGluYXRvckVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X3Njcm9sbGluZ0Nvb3JkaW5hdG9yRW5hYmxlZDsgfQogCkBAIC01NTcsOSArNTUxLDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGlzVG91Y2hFdmVudEVtdWxhdGlvbkVuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiBtX3RvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkOyB9CiAjZW5k
aWYKIAotICAgICAgICB2b2lkIHNldFRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZChib29sIGVuYWJs
ZWQpIHsgbV90aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQgPSBlbmFibGVkOyB9Ci0gICAgICAgIGJv
b2wgdGhyZWFkZWRBbmltYXRpb25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV90aHJlYWRlZEFu
aW1hdGlvbkVuYWJsZWQ7IH0KLQogICAgICAgICB2b2lkIHNldFNob3VsZFJlc3BlY3RJbWFnZU9y
aWVudGF0aW9uKGJvb2wgZW5hYmxlZCkgeyBtX3Nob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9u
ID0gZW5hYmxlZDsgfQogICAgICAgICBib29sIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbjsgfQogCkBA
IC03NDYsOSArNzM3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1fc2hv
dWxkRGlzcGxheUNhcHRpb25zIDogMTsKICAgICAgICAgYm9vbCBtX3Nob3VsZERpc3BsYXlUZXh0
RGVzY3JpcHRpb25zIDogMTsKICNlbmRpZgotICAgICAgICBib29sIG1fcGVyVGlsZURyYXdpbmdF
bmFibGVkIDogMTsKLSAgICAgICAgYm9vbCBtX3BhcnRpYWxTd2FwRW5hYmxlZCA6IDE7Ci0KICAg
ICAgICAgYm9vbCBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yRW5hYmxlZCA6IDE7CiAKICAgICAgICAg
Ym9vbCBtX25vdGlmaWNhdGlvbnNFbmFibGVkIDogMTsKQEAgLTc1Nyw3ICs3NDUsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICAgICAgYm9vbCBt
X3RvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkIDogMTsKICNlbmRpZgotICAgICAgICBib29sIG1f
dGhyZWFkZWRBbmltYXRpb25FbmFibGVkIDogMTsKICAgICAgICAgYm9vbCBtX3Nob3VsZFJlc3Bl
Y3RJbWFnZU9yaWVudGF0aW9uIDogMTsKICAgICAgICAgYm9vbCBtX3dhbnRzQmFsYW5jZWRTZXRE
ZWZlcnNMb2FkaW5nQmVoYXZpb3IgOiAxOwogICAgICAgICBib29sIG1fcmVxdWVzdEFuaW1hdGlv
bkZyYW1lRW5hYmxlZCA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKaW5k
ZXggYWU4ZDMyMDhiZmJhYjhkN2FkZTk4MmE3ZDhhOTNhMmQ4M2VkN2RhZi4uYjZhMDI1NjFjZTJj
YmM0YzM3YTY3ZTM1ZmMyODMwODJjODU3Yjk3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNo
cm9taXVtLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJv
bWl1bS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3VwcG9ydC5oIgogI2luY2x1ZGUgImNjL0NDTGF5
ZXJUcmVlSG9zdC5oIgorI2luY2x1ZGUgImNjL0NDU2V0dGluZ3MuaCIKICNpbmNsdWRlIDxwdWJs
aWMvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIApAQCAtMTI3LDcg
KzEyOCw3IEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OmNyZWF0ZVRleHR1cmVVcGRhdGVy
SWZOZWVkZWQoKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKGxheWVyVHJlZUhvc3QoKS0+c2V0
dGluZ3MoKS5hY2NlbGVyYXRlUGFpbnRpbmcpCiAgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXIgPSBG
cmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShDb250
ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUobV9kZWxlZ2F0ZSkpOwotICAgIGVsc2UgaWYgKGxheWVy
VHJlZUhvc3QoKS0+c2V0dGluZ3MoKS5wZXJUaWxlUGFpbnRpbmcpCisgICAgZWxzZSBpZiAoQ0NT
ZXR0aW5nczo6cGVyVGlsZVBhaW50aW5nRW5hYmxlZCgpKQogICAgICAgICBtX3RleHR1cmVVcGRh
dGVyID0gQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKENv
bnRlbnRMYXllclBhaW50ZXI6OmNyZWF0ZShtX2RlbGVnYXRlKSwgbGF5ZXJUcmVlSG9zdCgpLT5s
YXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdNYXBTdWIpOwogICAgIGVsc2UKICAgICAg
ICAgbV90ZXh0dXJlVXBkYXRlciA9IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNy
ZWF0ZShDb250ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUobV9kZWxlZ2F0ZSksIGxheWVyVHJlZUhv
c3QoKS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLnVzaW5nTWFwU3ViKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21p
dW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJD
aHJvbWl1bS5jcHAKaW5kZXggZDM1ZjU5MjE5ZmY3NDNjZmQ5ZGU2YmQ3OWViZTU5MWNhYzkyMWFh
OS4uNWM4NGRjNDVhYWJmZGMyMTk3MjNkNjM2YzQ2MWMyMDhhNmMyYWRjMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJD
aHJvbWl1bS5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJjYy9DQ0xheWVyQW5pbWF0
aW9uRGVsZWdhdGUuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgogI2luY2x1ZGUgImNj
L0NDTGF5ZXJUcmVlSG9zdC5oIgorI2luY2x1ZGUgImNjL0NDU2V0dGluZ3MuaCIKICNpbmNsdWRl
ICJza2lhL2V4dC9wbGF0Zm9ybV9jYW52YXMuaCIKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKQEAg
LTYwMiwxMiArNjAzLDE0IEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0VHJhbnNmb3JtRnJvbUFu
aW1hdGlvbihjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhCiAKIGJvb2wgTGF5ZXJD
aHJvbWl1bTo6YWRkQW5pbWF0aW9uKFBhc3NPd25QdHI8Q0NBY3RpdmVBbmltYXRpb24+IGFuaW1h
dGlvbikKIHsKLSAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdCB8fCAhbV9sYXllclRyZWVIb3N0LT5z
ZXR0aW5ncygpLnRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZCkKKyAgICBpZiAoIUNDU2V0dGluZ3M6
OmFjY2VsZXJhdGVkQW5pbWF0aW9uRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBtX2xheWVyQW5pbWF0aW9uQ29udHJvbGxlci0+YWRkQW5pbWF0aW9uKGFuaW1hdGlvbik7
Ci0gICAgbV9sYXllclRyZWVIb3N0LT5kaWRBZGRBbmltYXRpb24oKTsKLSAgICBzZXROZWVkc0Nv
bW1pdCgpOworICAgIGlmIChtX2xheWVyVHJlZUhvc3QpIHsKKyAgICAgICAgbV9sYXllclRyZWVI
b3N0LT5kaWRBZGRBbmltYXRpb24oKTsKKyAgICAgICAgc2V0TmVlZHNDb21taXQoKTsKKyAgICB9
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
Y3BwCmluZGV4IDc4MGZjMzJlM2EzZjNmMTEwODhhZDY2NWNhZGZiOWUwMDUwZDdiODQuLmVmZTkx
MWU5OTYwOThjMDRlYTM1YzcxZjNmZjBhZDMyODc5MjkwYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmNwcApAQCAtNjQsNiArNjQsNyBAQAogI2luY2x1ZGUgImNjL0NDUmVu
ZGVyUGFzcy5oIgogI2luY2x1ZGUgImNjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmgiCiAjaW5jbHVk
ZSAiY2MvQ0NSZW5kZXJTdXJmYWNlRmlsdGVycy5oIgorI2luY2x1ZGUgImNjL0NDU2V0dGluZ3Mu
aCIKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgiCiAjaW5jbHVkZSAiY2MvQ0NT
b2xpZENvbG9yRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ1RleHR1cmVEcmF3UXVhZC5oIgpA
QCAtMjkxLDcgKzI5Miw3IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXpl
KCkKICAgICBpZiAobV9jYXBhYmlsaXRpZXMuY29udGV4dEhhc0NhY2hlZEZyb250QnVmZmVyKQog
ICAgICAgICBleHRlbnNpb25zLT5lbnN1cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9mcm9udF9idWZm
ZXJfY2FjaGVkIik7CiAKLSAgICBtX2NhcGFiaWxpdGllcy51c2luZ1BhcnRpYWxTd2FwID0gc2V0
dGluZ3MoKS5wYXJ0aWFsU3dhcEVuYWJsZWQgJiYgZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0NI
Uk9NSVVNX3Bvc3Rfc3ViX2J1ZmZlciIpOworICAgIG1fY2FwYWJpbGl0aWVzLnVzaW5nUGFydGlh
bFN3YXAgPSBDQ1NldHRpbmdzOjpwYXJ0aWFsU3dhcEVuYWJsZWQoKSAmJiBleHRlbnNpb25zLT5z
dXBwb3J0cygiR0xfQ0hST01JVU1fcG9zdF9zdWJfYnVmZmVyIik7CiAgICAgaWYgKG1fY2FwYWJp
bGl0aWVzLnVzaW5nUGFydGlhbFN3YXApCiAgICAgICAgIGV4dGVuc2lvbnMtPmVuc3VyZUVuYWJs
ZWQoIkdMX0NIUk9NSVVNX3Bvc3Rfc3ViX2J1ZmZlciIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNo
cm9taXVtLmNwcAppbmRleCAxMmUzNzE3Y2E2ZGZmMWMzOGFjOTRkYmIxN2VlNmM2N2ZkMGNkNTFl
Li43NDc0YzMxY2Y4YjhkZWZlYWQ0YWVkMDkwNDIyOWM3NzRmYzQ3NGY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21p
dW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rp
bGVkTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTExMSw5ICsxMTEsOCBAQCB2b2lkIFRpbGVkTGF5ZXJD
aHJvbWl1bTo6dXBkYXRlVGlsZVNpemVBbmRUaWxpbmdPcHRpb24oKQogewogICAgIEFTU0VSVChs
YXllclRyZWVIb3N0KCkpOwogCi0gICAgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MgPSBsYXll
clRyZWVIb3N0KCktPnNldHRpbmdzKCk7Ci0gICAgY29uc3QgSW50U2l6ZSYgZGVmYXVsdFRpbGVT
aXplID0gc2V0dGluZ3MuZGVmYXVsdFRpbGVTaXplOwotICAgIGNvbnN0IEludFNpemUmIG1heFVu
dGlsZWRMYXllclNpemUgPSBzZXR0aW5ncy5tYXhVbnRpbGVkTGF5ZXJTaXplOworICAgIGNvbnN0
IEludFNpemUmIGRlZmF1bHRUaWxlU2l6ZSA9IGxheWVyVHJlZUhvc3QoKS0+c2V0dGluZ3MoKS5k
ZWZhdWx0VGlsZVNpemU7CisgICAgY29uc3QgSW50U2l6ZSYgbWF4VW50aWxlZExheWVyU2l6ZSA9
IGxheWVyVHJlZUhvc3QoKS0+c2V0dGluZ3MoKS5tYXhVbnRpbGVkTGF5ZXJTaXplOwogICAgIGlu
dCBsYXllcldpZHRoID0gY29udGVudEJvdW5kcygpLndpZHRoKCk7CiAgICAgaW50IGxheWVySGVp
Z2h0ID0gY29udGVudEJvdW5kcygpLmhlaWdodCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3RvcnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z1Jl
Y3RIaXN0b3J5LmNwcAppbmRleCAzYzg4ZGNjNDAwM2E2NjkxODkzZjc1YjU0NWZmMGQ2NDk1ZDg4
ODExLi4xN2Q1OTQ2ZWMyZWNjZGViYWNiYWYwMzQ4ZmY4MTA2MmY5ODdhNDUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVj
dEhpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDRGVidWdSZWN0SGlzdG9yeS5jcHAKQEAgLTM4LDEyICszOCwxMiBAQCBDQ0RlYnVn
UmVjdEhpc3Rvcnk6OkNDRGVidWdSZWN0SGlzdG9yeSgpCiB7CiB9CiAKLWJvb2wgQ0NEZWJ1Z1Jl
Y3RIaXN0b3J5OjplbmFibGVkKGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKQorYm9vbCBDQ0Rl
YnVnUmVjdEhpc3Rvcnk6OmVuYWJsZWQoY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGlu
Z3MpCiB7CiAgICAgcmV0dXJuIHNldHRpbmdzLnNob3dQYWludFJlY3RzIHx8IHNldHRpbmdzLnNo
b3dQcm9wZXJ0eUNoYW5nZWRSZWN0cyB8fCBzZXR0aW5ncy5zaG93U3VyZmFjZURhbWFnZVJlY3Rz
OwogfQogCi12b2lkIENDRGVidWdSZWN0SGlzdG9yeTo6c2F2ZURlYnVnUmVjdHNGb3JDdXJyZW50
RnJhbWUoQ0NMYXllckltcGwqIHJvb3RMYXllciwgY29uc3QgVmVjdG9yPENDTGF5ZXJJbXBsKj4m
IHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKQordm9p
ZCBDQ0RlYnVnUmVjdEhpc3Rvcnk6OnNhdmVEZWJ1Z1JlY3RzRm9yQ3VycmVudEZyYW1lKENDTGF5
ZXJJbXBsKiByb290TGF5ZXIsIGNvbnN0IFZlY3RvcjxDQ0xheWVySW1wbCo+JiByZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0LCBjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncykKIHsKICAg
ICAvLyBGb3Igbm93LCBjbGVhciBhbGwgcmVjdHMgZnJvbSBwcmV2aW91cyBmcmFtZXMuIEluIHRo
ZSBmdXR1cmUgd2UgbWF5IHdhbnQgdG8gc3RvcmUKICAgICAvLyBhbGwgZGVidWcgcmVjdHMgZm9y
IGEgaGlzdG9yeSBvZiBtYW55IGZyYW1lcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdSZWN0SGlzdG9yeS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5
LmgKaW5kZXggOTNkYTEwN2FkZTRmYjc3NDlhYjJkNWNlNzQ3NWEyMjZjYmIwZTE0NC4uYmIzY2Ri
NzlkNTcxODQ3YjI3NmU5N2M4MGZkNjhjMWFjMmM0OGQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1
Z1JlY3RIaXN0b3J5LmgKQEAgLTM1LDcgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQ0NMYXllckltcGw7Ci1zdHJ1Y3QgQ0NTZXR0aW5nczsKK3N0cnVjdCBDQ0xheWVyVHJl
ZVNldHRpbmdzOwogCiAvLyBUaGVyZSBhcmUgY3VycmVudGx5IHRocmVlIHR5cGVzIG9mIGRlYnVn
IHJlY3RzOgogLy8KQEAgLTYzLDcgKzYzLDcgQEAgc3RydWN0IENDRGVidWdSZWN0IHsKIAogLy8g
VGhpcyBjbGFzcyBtYWludGFpbnMgYSBoaXN0b3J5IG9mIHJlY3RzIG9mIHZhcmlvdXMgdHlwZXMg
dGhhdCBjYW4gYmUgdXNlZAogLy8gZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy4gVGhlIG92ZXJoZWFk
IG9mIGNvbGxlY3RpbmcgcmVjdHMgaXMgcGVyZm9ybWVkIG9ubHkgaWYKLS8vIHRoZSBhcHByb3By
aWF0ZSBDQ1NldHRpbmdzIGFyZSBlbmFibGVkLgorLy8gdGhlIGFwcHJvcHJpYXRlIENDTGF5ZXJU
cmVlU2V0dGluZ3MgYXJlIGVuYWJsZWQuCiBjbGFzcyBDQ0RlYnVnUmVjdEhpc3RvcnkgewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKENDRGVidWdSZWN0SGlzdG9yeSk7CiBwdWJsaWM6CkBAIC03
MiwxMCArNzIsMTAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDRGVi
dWdSZWN0SGlzdG9yeSgpKTsKICAgICB9CiAKLSAgICBib29sIGVuYWJsZWQoY29uc3QgQ0NTZXR0
aW5ncyYpOworICAgIGJvb2wgZW5hYmxlZChjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJik7CiAK
ICAgICAvLyBOb3RlOiBTYXZpbmcgZGVidWcgcmVjdHMgbXVzdCBoYXBwZW4gYmVmb3JlIGxheWVy
cycgY2hhbmdlIHRyYWNraW5nIGlzIHJlc2V0LgotICAgIHZvaWQgc2F2ZURlYnVnUmVjdHNGb3JD
dXJyZW50RnJhbWUoQ0NMYXllckltcGwqIHJvb3RMYXllciwgY29uc3QgVmVjdG9yPENDTGF5ZXJJ
bXBsKj4mIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGNvbnN0IENDU2V0dGluZ3MmKTsKKyAgICB2
b2lkIHNhdmVEZWJ1Z1JlY3RzRm9yQ3VycmVudEZyYW1lKENDTGF5ZXJJbXBsKiByb290TGF5ZXIs
IGNvbnN0IFZlY3RvcjxDQ0xheWVySW1wbCo+JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBjb25z
dCBDQ0xheWVyVHJlZVNldHRpbmdzJik7CiAKICAgICBjb25zdCBWZWN0b3I8Q0NEZWJ1Z1JlY3Q+
JiBkZWJ1Z1JlY3RzKCkgeyByZXR1cm4gbV9kZWJ1Z1JlY3RzOyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3Bs
YXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NI
ZWFkc1VwRGlzcGxheS5jcHAKaW5kZXggMzQ4NWE0OGE0YWE0MTY4ZWUwZDA0MWJlN2QxMDNhYmJl
Y2EyNTkzNS4uMWJiYzA0NmU3YTU4MjFhYjBlMDM5OTQ2YjYwYzgxYTBlY2M5YTI3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFk
c1VwRGlzcGxheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAKQEAgLTUyLDE3ICs1MiwxNyBAQCB2b2lkIEND
SGVhZHNVcERpc3BsYXk6OnNldEZvbnRBdGxhcyhQYXNzT3duUHRyPENDRm9udEF0bGFzPiBmb250
QXRsYXMpCiAgICAgbV9mb250QXRsYXMgPSBmb250QXRsYXM7CiB9CiAKLWJvb2wgQ0NIZWFkc1Vw
RGlzcGxheTo6ZW5hYmxlZChjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncykgY29uc3QKK2Jvb2wg
Q0NIZWFkc1VwRGlzcGxheTo6ZW5hYmxlZChjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0
aW5ncykgY29uc3QKIHsKICAgICByZXR1cm4gc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKHNldHRpbmdz
KSB8fCBzZXR0aW5ncy5zaG93RlBTQ291bnRlciB8fCBzaG93RGVidWdSZWN0cyhzZXR0aW5ncyk7
CiB9CiAKLWJvb2wgQ0NIZWFkc1VwRGlzcGxheTo6c2hvd1BsYXRmb3JtTGF5ZXJUcmVlKGNvbnN0
IENDU2V0dGluZ3MmIHNldHRpbmdzKSBjb25zdAorYm9vbCBDQ0hlYWRzVXBEaXNwbGF5OjpzaG93
UGxhdGZvcm1MYXllclRyZWUoY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIHNldHRpbmdzLnNob3dQbGF0Zm9ybUxheWVyVHJlZTsKIH0KIAot
Ym9vbCBDQ0hlYWRzVXBEaXNwbGF5OjpzaG93RGVidWdSZWN0cyhjb25zdCBDQ1NldHRpbmdzJiBz
ZXR0aW5ncykgY29uc3QKK2Jvb2wgQ0NIZWFkc1VwRGlzcGxheTo6c2hvd0RlYnVnUmVjdHMoY29u
c3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHNl
dHRpbmdzLnNob3dQYWludFJlY3RzIHx8IHNldHRpbmdzLnNob3dQcm9wZXJ0eUNoYW5nZWRSZWN0
cyB8fCBzZXR0aW5ncy5zaG93U3VyZmFjZURhbWFnZVJlY3RzOwogfQpAQCAtNzgsNyArNzgsNyBA
QCB2b2lkIENDSGVhZHNVcERpc3BsYXk6OmRyYXcoQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJU
cmVlSG9zdEltcGwpCiAgICAgaWYgKCFtX2h1ZFRleHR1cmUpCiAgICAgICAgIG1faHVkVGV4dHVy
ZSA9IE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUobGF5ZXJSZW5kZXJlci0+aW1wbFRleHR1cmVNYW5h
Z2VyKCkpOwogCi0gICAgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MgPSBsYXllclRyZWVIb3N0
SW1wbC0+c2V0dGluZ3MoKTsKKyAgICBjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5n
cyA9IGxheWVyVHJlZUhvc3RJbXBsLT5zZXR0aW5ncygpOwogICAgIC8vIFVzZSBhIGZ1bGxzY3Jl
ZW4gdGV4dHVyZSBvbmx5IGlmIHdlIG5lZWQgdG8uLi4KICAgICBJbnRTaXplIGh1ZFNpemU7CiAg
ICAgaWYgKHNob3dQbGF0Zm9ybUxheWVyVHJlZShzZXR0aW5ncykgfHwgc2hvd0RlYnVnUmVjdHMo
c2V0dGluZ3MpKSB7CkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBDQ0hlYWRzVXBEaXNwbGF5Ojpk
cmF3KENDTGF5ZXJUcmVlSG9zdEltcGwqIGxheWVyVHJlZUhvc3RJbXBsKQogICAgIG1faHVkVGV4
dHVyZS0+dW5yZXNlcnZlKCk7CiB9CiAKLXZvaWQgQ0NIZWFkc1VwRGlzcGxheTo6ZHJhd0h1ZENv
bnRlbnRzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5
ZXJUcmVlSG9zdEltcGwsIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzLCBjb25zdCBJbnRTaXpl
JiBodWRTaXplKQordm9pZCBDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3SHVkQ29udGVudHMoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1w
bCwgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MsIGNvbnN0IEludFNpemUmIGh1
ZFNpemUpCiB7CiAgICAgaWYgKHNob3dQbGF0Zm9ybUxheWVyVHJlZShzZXR0aW5ncykpIHsKICAg
ICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yKDAsIDAsIDAsIDE5MiksIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOwpAQCAtMjIxLDcgKzIyMSw3IEBAIHZvaWQgQ0NIZWFkc1VwRGlzcGxheTo6
ZHJhd0ZQU0NvdW50ZXJUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgQ0NGcmFtZVJhdGVD
CiAgICAgICAgIG1fZm9udEF0bGFzLT5kcmF3VGV4dChjb250ZXh0LCBTdHJpbmc6OmZvcm1hdCgi
RlBTOiAlNC4xZiArLy0gJTMuMWYiLCBhdmVyYWdlRlBTLCBzdGREZXZpYXRpb24pLCBJbnRQb2lu
dCgxMCwgaGVpZ2h0IC8gMyksIEludFNpemUod2lkdGgsIGhlaWdodCkpOwogfQogCi12b2lkIEND
SGVhZHNVcERpc3BsYXk6OmRyYXdEZWJ1Z1JlY3RzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Q0NEZWJ1Z1JlY3RIaXN0b3J5KiBkZWJ1Z1JlY3RIaXN0b3J5LCBjb25zdCBDQ1NldHRpbmdzJiBz
ZXR0aW5ncykKK3ZvaWQgQ0NIZWFkc1VwRGlzcGxheTo6ZHJhd0RlYnVnUmVjdHMoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBDQ0RlYnVnUmVjdEhpc3RvcnkqIGRlYnVnUmVjdEhpc3RvcnksIGNv
bnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzKQogewogICAgIGNvbnN0IFZlY3RvcjxD
Q0RlYnVnUmVjdD4mIGRlYnVnUmVjdHMgPSBkZWJ1Z1JlY3RIaXN0b3J5LT5kZWJ1Z1JlY3RzKCk7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkZWJ1Z1JlY3RzLnNpemUoKTsgKytpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0hlYWRzVXBEaXNwbGF5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmgKaW5kZXggNDgzMWU1ZGQxOGMzZTExMjFhMTkyYjk5
YTc0YWYxYmFjY2QyY2ZhZC4uZTFjZTkzYTZjM2U5MGNiMzQ0NWViOTdkMmY2MGVlMDQ0MGY0YzU5
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NIZWFkc1VwRGlzcGxheS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFz
cyBDQ0ZyYW1lUmF0ZUNvdW50ZXI7CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsOwogY2xhc3Mg
R3JhcGhpY3NDb250ZXh0OwogY2xhc3MgTWFuYWdlZFRleHR1cmU7Ci1zdHJ1Y3QgQ0NTZXR0aW5n
czsKK3N0cnVjdCBDQ0xheWVyVHJlZVNldHRpbmdzOwogCiAvLyBDbGFzcyB0aGF0IGhhbmRsZXMg
ZHJhd2luZyBvZiBjb21wb3NpdGVkIHJlbmRlciBsYXllcnMgdXNpbmcgR0wuCiBjbGFzcyBDQ0hl
YWRzVXBEaXNwbGF5IHsKQEAgLTUxLDE5ICs1MSwxOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNl
dEZvbnRBdGxhcyhQYXNzT3duUHRyPENDRm9udEF0bGFzPik7CiAKLSAgICBib29sIGVuYWJsZWQo
Y29uc3QgQ0NTZXR0aW5ncyYpIGNvbnN0OworICAgIGJvb2wgZW5hYmxlZChjb25zdCBDQ0xheWVy
VHJlZVNldHRpbmdzJikgY29uc3Q7CiAgICAgdm9pZCBkcmF3KENDTGF5ZXJUcmVlSG9zdEltcGwq
KTsKIAogcHJpdmF0ZToKICAgICBDQ0hlYWRzVXBEaXNwbGF5KCkgeyB9OwogCi0gICAgdm9pZCBk
cmF3SHVkQ29udGVudHMoR3JhcGhpY3NDb250ZXh0KiwgQ0NMYXllclRyZWVIb3N0SW1wbCosIGNv
bnN0IENDU2V0dGluZ3MmLCBjb25zdCBJbnRTaXplJiBodWRTaXplKTsKKyAgICB2b2lkIGRyYXdI
dWRDb250ZW50cyhHcmFwaGljc0NvbnRleHQqLCBDQ0xheWVyVHJlZUhvc3RJbXBsKiwgY29uc3Qg
Q0NMYXllclRyZWVTZXR0aW5ncyYsIGNvbnN0IEludFNpemUmIGh1ZFNpemUpOwogICAgIHZvaWQg
ZHJhd0ZQU0NvdW50ZXIoR3JhcGhpY3NDb250ZXh0KiwgQ0NGcmFtZVJhdGVDb3VudGVyKiwgaW50
IHRvcCwgaW50IGhlaWdodCk7CiAgICAgdm9pZCBkcmF3RlBTQ291bnRlclRleHQoR3JhcGhpY3ND
b250ZXh0KiwgQ0NGcmFtZVJhdGVDb3VudGVyKiwgaW50IHRvcCwgaW50IHdpZHRoLCBpbnQgaGVp
Z2h0KTsKLSAgICB2b2lkIGRyYXdEZWJ1Z1JlY3RzKEdyYXBoaWNzQ29udGV4dCosIENDRGVidWdS
ZWN0SGlzdG9yeSosIGNvbnN0IENDU2V0dGluZ3MmKTsKKyAgICB2b2lkIGRyYXdEZWJ1Z1JlY3Rz
KEdyYXBoaWNzQ29udGV4dCosIENDRGVidWdSZWN0SGlzdG9yeSosIGNvbnN0IENDTGF5ZXJUcmVl
U2V0dGluZ3MmKTsKIAotICAgIGJvb2wgc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKGNvbnN0IENDU2V0
dGluZ3MmKSBjb25zdDsKLSAgICBib29sIHNob3dEZWJ1Z1JlY3RzKGNvbnN0IENDU2V0dGluZ3Mm
KSBjb25zdDsKKyAgICBib29sIHNob3dQbGF0Zm9ybUxheWVyVHJlZShjb25zdCBDQ0xheWVyVHJl
ZVNldHRpbmdzJikgY29uc3Q7CisgICAgYm9vbCBzaG93RGVidWdSZWN0cyhjb25zdCBDQ0xheWVy
VHJlZVNldHRpbmdzJikgY29uc3Q7CiAKICAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IG1faHVk
VGV4dHVyZTsKICAgICBPd25QdHI8Q0NGb250QXRsYXM+IG1fZm9udEF0bGFzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggMGEwMTU0YzNlZmUzZTAzYmE1MDQ4ZjFiNjg0YTI1
YTg0NDFiNGZkYi4uMWQzOWY3OTY0N2I5YzY0NDBhNGY3MmY5OTdmMzk5NDAzNzkxZTg2MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVk
ZSAiY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVI
b3N0SW1wbC5oIgogI2luY2x1ZGUgImNjL0NDT2NjbHVzaW9uVHJhY2tlci5oIgorI2luY2x1ZGUg
ImNjL0NDU2V0dGluZ3MuaCIKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgiCiAj
aW5jbHVkZSAiY2MvQ0NUaHJlYWQuaCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZFByb3h5LmgiCkBA
IC01OCw3ICs1OSw3IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0OjphbnlMYXllclRyZWVIb3N0SW5z
dGFuY2VFeGlzdHMoKQogICAgIHJldHVybiBudW1MYXllclRyZWVJbnN0YW5jZXMgPiAwOwogfQog
Ci1QYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdD4gQ0NMYXllclRyZWVIb3N0OjpjcmVhdGUoQ0NM
YXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQsIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKQor
UGFzc093blB0cjxDQ0xheWVyVHJlZUhvc3Q+IENDTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKENDTGF5
ZXJUcmVlSG9zdENsaWVudCogY2xpZW50LCBjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0
aW5ncykKIHsKICAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0PiBsYXllclRyZWVIb3N0ID0gYWRv
cHRQdHIobmV3IENDTGF5ZXJUcmVlSG9zdChjbGllbnQsIHNldHRpbmdzKSk7CiAgICAgaWYgKCFs
YXllclRyZWVIb3N0LT5pbml0aWFsaXplKCkpCkBAIC02Niw3ICs2Nyw3IEBAIFBhc3NPd25QdHI8
Q0NMYXllclRyZWVIb3N0PiBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZShDQ0xheWVyVHJlZUhvc3RD
bGllbnQqIGNsaWVuCiAgICAgcmV0dXJuIGxheWVyVHJlZUhvc3QucmVsZWFzZSgpOwogfQogCi1D
Q0xheWVyVHJlZUhvc3Q6OkNDTGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNs
aWVudCwgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MpCitDQ0xheWVyVHJlZUhvc3Q6OkNDTGF5
ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwgY29uc3QgQ0NMYXllclRy
ZWVTZXR0aW5ncyYgc2V0dGluZ3MpCiAgICAgOiBtX2NvbXBvc2l0b3JJZGVudGlmaWVyKC0xKQog
ICAgICwgbV9hbmltYXRpbmcoZmFsc2UpCiAgICAgLCBtX25lZWRzQW5pbWF0ZUxheWVycyhmYWxz
ZSkKQEAgLTY4NSw3ICs2ODYsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6ZGVsZXRlVGV4dHVy
ZUFmdGVyQ29tbWl0KFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cgogCiB2b2lkIEND
TGF5ZXJUcmVlSG9zdDo6YW5pbWF0ZUxheWVycyhkb3VibGUgbW9ub3RvbmljVGltZSkKIHsKLSAg
ICBpZiAoIW1fc2V0dGluZ3MudGhyZWFkZWRBbmltYXRpb25FbmFibGVkIHx8ICFtX25lZWRzQW5p
bWF0ZUxheWVycykKKyAgICBpZiAoIUNDU2V0dGluZ3M6OmFjY2VsZXJhdGVkQW5pbWF0aW9uRW5h
YmxlZCgpIHx8ICFtX25lZWRzQW5pbWF0ZUxheWVycykKICAgICAgICAgcmV0dXJuOwogCiAgICAg
VFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVMYXllcnMiLCB0aGlzLCAw
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXggNDgxZDNjZTYxZTllOTI5Mjc5YTA1
MGQzMWNhNGVmODhlNzJiMjc2Mi4uOGNlZjcxYWY2NTg0NzVkOGRjYmJjOTdlYTZjYjI0NmExY2Mz
ZmZiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTc0LDggKzc0LDggQEAgcHJv
dGVjdGVkOgogICAgIHZpcnR1YWwgfkNDTGF5ZXJUcmVlSG9zdENsaWVudCgpIHsgfQogfTsKIAot
c3RydWN0IENDU2V0dGluZ3MgewotICAgIENDU2V0dGluZ3MoKQorc3RydWN0IENDTGF5ZXJUcmVl
U2V0dGluZ3MgeworICAgIENDTGF5ZXJUcmVlU2V0dGluZ3MoKQogICAgICAgICAgICAgOiBhY2Nl
bGVyYXRlUGFpbnRpbmcoZmFsc2UpCiAgICAgICAgICAgICAsIGZvcmNlU29mdHdhcmVDb21wb3Np
dGluZyhmYWxzZSkKICAgICAgICAgICAgICwgc2hvd0ZQU0NvdW50ZXIoZmFsc2UpCkBAIC04NCw5
ICs4NCw2IEBAIHN0cnVjdCBDQ1NldHRpbmdzIHsKICAgICAgICAgICAgICwgc2hvd1Byb3BlcnR5
Q2hhbmdlZFJlY3RzKGZhbHNlKQogICAgICAgICAgICAgLCBzaG93U3VyZmFjZURhbWFnZVJlY3Rz
KGZhbHNlKQogICAgICAgICAgICAgLCByZWZyZXNoUmF0ZSgwKQotICAgICAgICAgICAgLCBwZXJU
aWxlUGFpbnRpbmcoZmFsc2UpCi0gICAgICAgICAgICAsIHBhcnRpYWxTd2FwRW5hYmxlZChmYWxz
ZSkKLSAgICAgICAgICAgICwgdGhyZWFkZWRBbmltYXRpb25FbmFibGVkKGZhbHNlKQogICAgICAg
ICAgICAgLCBtYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoc3RkOjpudW1lcmljX2xpbWl0czxzaXpl
X3Q+OjptYXgoKSkKICAgICAgICAgICAgICwgZGVmYXVsdFRpbGVTaXplKEludFNpemUoMjU2LCAy
NTYpKQogICAgICAgICAgICAgLCBtYXhVbnRpbGVkTGF5ZXJTaXplKEludFNpemUoNTEyLCA1MTIp
KQpAQCAtMTAxLDkgKzk4LDYgQEAgc3RydWN0IENDU2V0dGluZ3MgewogICAgIGJvb2wgc2hvd1By
b3BlcnR5Q2hhbmdlZFJlY3RzOwogICAgIGJvb2wgc2hvd1N1cmZhY2VEYW1hZ2VSZWN0czsKICAg
ICBkb3VibGUgcmVmcmVzaFJhdGU7Ci0gICAgYm9vbCBwZXJUaWxlUGFpbnRpbmc7Ci0gICAgYm9v
bCBwYXJ0aWFsU3dhcEVuYWJsZWQ7Ci0gICAgYm9vbCB0aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQ7
CiAgICAgc2l6ZV90IG1heFBhcnRpYWxUZXh0dXJlVXBkYXRlczsKICAgICBJbnRTaXplIGRlZmF1
bHRUaWxlU2l6ZTsKICAgICBJbnRTaXplIG1heFVudGlsZWRMYXllclNpemU7CkBAIC0xNDMsNyAr
MTM3LDcgQEAgc3RydWN0IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMgewogY2xhc3MgQ0NMYXll
clRyZWVIb3N0IDogcHVibGljIFJhdGVMaW1pdGVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShDQ0xheWVyVHJlZUhvc3QpOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRy
PENDTGF5ZXJUcmVlSG9zdD4gY3JlYXRlKENDTGF5ZXJUcmVlSG9zdENsaWVudCosIGNvbnN0IEND
U2V0dGluZ3MmKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ0xheWVyVHJlZUhvc3Q+IGNyZWF0
ZShDQ0xheWVyVHJlZUhvc3RDbGllbnQqLCBjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJik7CiAg
ICAgdmlydHVhbCB+Q0NMYXllclRyZWVIb3N0KCk7CiAKICAgICB2b2lkIHNldFN1cmZhY2VSZWFk
eSgpOwpAQCAtMjE5LDcgKzIxMyw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBMYXllckNocm9taXVt
KiByb290TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RMYXllci5nZXQoKTsgfQogICAgIHZv
aWQgc2V0Um9vdExheWVyKFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4pOwogCi0gICAgY29uc3Qg
Q0NTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCB7IHJldHVybiBtX3NldHRpbmdzOyB9CisgICAg
Y29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCB7IHJldHVybiBtX3Nl
dHRpbmdzOyB9CiAKICAgICB2b2lkIHNldFZpZXdwb3J0U2l6ZShjb25zdCBJbnRTaXplJik7CiAK
QEAgLTI1Myw3ICsyNDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVUZXh0dXJlQWZ0ZXJD
b21taXQoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4pOwogCiBwcm90ZWN0ZWQ6Ci0gICAgQ0NM
YXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdENsaWVudCosIGNvbnN0IENDU2V0dGluZ3MmKTsK
KyAgICBDQ0xheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiwgY29uc3QgQ0NMYXll
clRyZWVTZXR0aW5ncyYpOwogICAgIGJvb2wgaW5pdGlhbGl6ZSgpOwogCiBwcml2YXRlOgpAQCAt
Mjk0LDcgKzI4OCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG1fcm9v
dExheWVyOwogICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gbV9jb250ZW50c1RleHR1cmVNYW5h
Z2VyOwogCi0gICAgQ0NTZXR0aW5ncyBtX3NldHRpbmdzOworICAgIENDTGF5ZXJUcmVlU2V0dGlu
Z3MgbV9zZXR0aW5nczsKIAogICAgIEludFNpemUgbV92aWV3cG9ydFNpemU7CiAgICAgSW50U2l6
ZSBtX2RldmljZVZpZXdwb3J0U2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1w
bC5jcHAKaW5kZXggNDQxZmEwYTdhZDUyMzRlZjhjNTdmZDU5ZjQwNTMwZjE4MDc2NzRjNy4uYTFm
OWM1YzNiYzBkMWUzYWZjZWRhYzYyNjVhNTI5OGMzMTdjNTA0YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJjYy9D
Q0xheWVyVHJlZUhvc3RDb21tb24uaCIKICNpbmNsdWRlICJjYy9DQ01hdGhVdGlsLmgiCiAjaW5j
bHVkZSAiY2MvQ0NQYWdlU2NhbGVBbmltYXRpb24uaCIKKyNpbmNsdWRlICJjYy9DQ1NldHRpbmdz
LmgiCiAjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgogI2luY2x1ZGUgImNjL0ND
VGhyZWFkVGFzay5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpAQCAtMTA1LDEyICsx
MDYsMTIgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Q0NEZWxheUJhc2VkVGltZVNvdXJjZT4gbV90
aW1lU291cmNlOwogfTsKIAotUGFzc093blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBDQ0xheWVy
VHJlZUhvc3RJbXBsOjpjcmVhdGUoY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MsIENDTGF5ZXJU
cmVlSG9zdEltcGxDbGllbnQqIGNsaWVudCkKK1Bhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1w
bD4gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3Mm
IHNldHRpbmdzLCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KiBjbGllbnQpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBDQ0xheWVyVHJlZUhvc3RJbXBsKHNldHRpbmdzLCBjbGllbnQpKTsK
IH0KIAotQ0NMYXllclRyZWVIb3N0SW1wbDo6Q0NMYXllclRyZWVIb3N0SW1wbChjb25zdCBDQ1Nl
dHRpbmdzJiBzZXR0aW5ncywgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCogY2xpZW50KQorQ0NM
YXllclRyZWVIb3N0SW1wbDo6Q0NMYXllclRyZWVIb3N0SW1wbChjb25zdCBDQ0xheWVyVHJlZVNl
dHRpbmdzJiBzZXR0aW5ncywgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCogY2xpZW50KQogICAg
IDogbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9zb3VyY2VGcmFtZU51bWJlcigtMSkKICAgICAs
IG1fZnJhbWVOdW1iZXIoMCkKQEAgLTI1Nyw3ICsyNTgsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9z
dEltcGw6OmNhbGN1bGF0ZVJlbmRlclN1cmZhY2VMYXllckxpc3QoQ0NMYXllckxpc3QmIHJlbmRl
clN1cgogCiAgICAgICAgIGlmICghbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLnVzaW5nUGFy
dGlhbFN3YXApCiAgICAgICAgICAgICBtX3Jvb3RTY2lzc29yUmVjdCA9IEZsb2F0UmVjdChGbG9h
dFBvaW50KDAsIDApLCBkZXZpY2VWaWV3cG9ydFNpemUoKSk7Ci0gICAgCisKICAgICAgICAgQ0NM
YXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVWaXNpYmxlQW5kU2Npc3NvclJlY3RzKHJlbmRl
clN1cmZhY2VMYXllckxpc3QsIG1fcm9vdFNjaXNzb3JSZWN0KTsKICAgICB9CiB9CkBAIC04NTYs
NyArODU3LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRlUGFnZVNjYWxlKGRv
dWJsZSBtb25vdG9uaWNUaW1lKQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVM
YXllcnMoZG91YmxlIG1vbm90b25pY1RpbWUsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKQogewotICAg
IGlmICghbV9zZXR0aW5ncy50aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQgfHwgIW1fbmVlZHNBbmlt
YXRlTGF5ZXJzIHx8ICFtX3Jvb3RMYXllckltcGwpCisgICAgaWYgKCFDQ1NldHRpbmdzOjphY2Nl
bGVyYXRlZEFuaW1hdGlvbkVuYWJsZWQoKSB8fCAhbV9uZWVkc0FuaW1hdGVMYXllcnMgfHwgIW1f
cm9vdExheWVySW1wbCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgVFJBQ0VfRVZFTlQoIkNDTGF5
ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVMYXllcnMiLCB0aGlzLCAwKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuaAppbmRleCAwOTVjMGU1YjM5MzI0MWE2OTVjNTE0MDUwZjQwZGJm
ODNlODNiMDkxLi5iY2E3MDAwZmU0NjQyY2JjZWM1OWJlYzIxYjMxZjdhMWJjOWQwYmQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCkBAIC02OCw3ICs2OCw3IEBAIGNsYXNz
IENDTGF5ZXJUcmVlSG9zdEltcGwgOiBwdWJsaWMgQ0NJbnB1dEhhbmRsZXJDbGllbnQsIENDUmVu
ZGVyZXJDbGllbnQgewogICAgIHR5cGVkZWYgVmVjdG9yPENDTGF5ZXJJbXBsKj4gQ0NMYXllckxp
c3Q7CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBs
PiBjcmVhdGUoY29uc3QgQ0NTZXR0aW5ncyYsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqKTsK
KyAgICBzdGF0aWMgUGFzc093blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBjcmVhdGUoY29uc3Qg
Q0NMYXllclRyZWVTZXR0aW5ncyYsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqKTsKICAgICB2
aXJ0dWFsIH5DQ0xheWVyVHJlZUhvc3RJbXBsKCk7CiAKICAgICAvLyBDQ0lucHV0SGFuZGxlckNs
aWVudCBpbXBsZW1lbnRhdGlvbgpAQCAtMTA2LDcgKzEwNiw3IEBAIHB1YmxpYzoKIAogICAgIC8v
IENDUmVuZGVyZXJDbGllbnQgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFsIGNvbnN0IEludFNp
emUmIGRldmljZVZpZXdwb3J0U2l6ZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fZGV2aWNl
Vmlld3BvcnRTaXplOyB9Ci0gICAgdmlydHVhbCBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncygp
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fc2V0dGluZ3M7IH0KKyAgICB2aXJ0dWFsIGNvbnN0
IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4g
bV9zZXR0aW5nczsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRMb3NlQ29udGV4dCgpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGUoKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0RnVsbFJvb3RMYXllckRhbWFnZSgpIE9WRVJSSURFOwpAQCAtMTcy
LDcgKzE3Miw3IEBAIHB1YmxpYzoKICAgICBDQ0RlYnVnUmVjdEhpc3RvcnkqIGRlYnVnUmVjdEhp
c3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnUmVjdEhpc3RvcnkuZ2V0KCk7IH0KIAogcHJv
dGVjdGVkOgotICAgIENDTGF5ZXJUcmVlSG9zdEltcGwoY29uc3QgQ0NTZXR0aW5ncyYsIENDTGF5
ZXJUcmVlSG9zdEltcGxDbGllbnQqKTsKKyAgICBDQ0xheWVyVHJlZUhvc3RJbXBsKGNvbnN0IEND
TGF5ZXJUcmVlU2V0dGluZ3MmLCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50Kik7CiAKICAgICB2
b2lkIGFuaW1hdGVQYWdlU2NhbGUoZG91YmxlIG1vbm90b25pY1RpbWUpOwogICAgIHZvaWQgYW5p
bWF0ZUdlc3R1cmVzKGRvdWJsZSBtb25vdG9uaWNUaW1lKTsKQEAgLTIxNyw3ICsyMTcsNyBAQCBw
cml2YXRlOgogICAgIE93blB0cjxDQ1JlbmRlcmVyPiBtX2xheWVyUmVuZGVyZXI7CiAgICAgT3du
UHRyPENDTGF5ZXJJbXBsPiBtX3Jvb3RMYXllckltcGw7CiAgICAgQ0NMYXllckltcGwqIG1fc2Ny
b2xsTGF5ZXJJbXBsOwotICAgIENDU2V0dGluZ3MgbV9zZXR0aW5nczsKKyAgICBDQ0xheWVyVHJl
ZVNldHRpbmdzIG1fc2V0dGluZ3M7CiAgICAgSW50U2l6ZSBtX3ZpZXdwb3J0U2l6ZTsKICAgICBJ
bnRTaXplIG1fZGV2aWNlVmlld3BvcnRTaXplOwogICAgIGJvb2wgbV92aXNpYmxlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJlci5oCmluZGV4IDljOTM4YTk5MGFiYzRkOWI1NTU0NjhlNzA4NmQ3YjUzNjFiNjA1MTku
LjMyZjgzNThjNzQ0ZGMwZThjMThlOTRiMDY0YTkxZDUwNDgwNWVmYTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRl
cmVyLmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgVGV4dHVyZVVwbG9hZGVyOwogY2xhc3MgQ0NS
ZW5kZXJlckNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCBjb25zdCBJbnRTaXplJiBkZXZp
Y2VWaWV3cG9ydFNpemUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBjb25zdCBDQ1NldHRpbmdz
JiBzZXR0aW5ncygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IENDTGF5ZXJUcmVlU2V0
dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRMb3NlQ29u
dGV4dCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb25Td2FwQnVmZmVyc0NvbXBsZXRlKCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRGdWxsUm9vdExheWVyRGFtYWdlKCkgPSAwOwpAQCAtNTcs
NyArNTcsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGNvbnN0IExheWVyUmVuZGVyZXJDYXBh
YmlsaXRpZXMmIGNhcGFiaWxpdGllcygpIGNvbnN0ID0gMDsKIAotICAgIGNvbnN0IENDU2V0dGlu
Z3MmIHNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQtPnNldHRpbmdzKCk7IH0KKyAg
ICBjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1f
Y2xpZW50LT5zZXR0aW5ncygpOyB9CiAKICAgICBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUo
KSB7IHJldHVybiBtX2NsaWVudC0+ZGV2aWNlVmlld3BvcnRTaXplKCk7IH0KICAgICBpbnQgdmll
d3BvcnRXaWR0aCgpIHsgcmV0dXJuIHZpZXdwb3J0U2l6ZSgpLndpZHRoKCk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2V0dGlu
Z3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
ZXR0aW5ncy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTZlZjU1MTdhOTNlYzhmMWZhMzU5OTAxZjUwZGQ4YWIy
NDhkMzAwOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2V0dGluZ3MuY3BwCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgImNjL0NDU2V0dGluZ3MuaCIK
KworbmFtZXNwYWNlIHsKK3N0YXRpYyBib29sIHNfcGVyVGlsZVBhaW50aW5nRW5hYmxlZCA9IGZh
bHNlOworc3RhdGljIGJvb2wgc19wYXJ0aWFsU3dhcEVuYWJsZWQgPSBmYWxzZTsKK3N0YXRpYyBi
b29sIHNfYWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkID0gZmFsc2U7Cit9IC8vIG5hbWVzcGFj
ZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgQ0NTZXR0aW5nczo6cGVyVGlsZVBhaW50
aW5nRW5hYmxlZCgpIHsgcmV0dXJuIHNfcGVyVGlsZVBhaW50aW5nRW5hYmxlZDsgfQordm9pZCBD
Q1NldHRpbmdzOjpzZXRQZXJUaWxlUGFpbnRpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBzX3Bl
clRpbGVQYWludGluZ0VuYWJsZWQgPSBlbmFibGVkOyB9CisKK2Jvb2wgQ0NTZXR0aW5nczo6cGFy
dGlhbFN3YXBFbmFibGVkKCkgeyByZXR1cm4gc19wYXJ0aWFsU3dhcEVuYWJsZWQ7IH0KK3ZvaWQg
Q0NTZXR0aW5nczo6c2V0UGFydGlhbFN3YXBFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBzX3BhcnRp
YWxTd2FwRW5hYmxlZCA9IGVuYWJsZWQ7IH0KKworYm9vbCBDQ1NldHRpbmdzOjphY2NlbGVyYXRl
ZEFuaW1hdGlvbkVuYWJsZWQoKSB7IHJldHVybiBzX2FjY2VsZXJhdGVkQW5pbWF0aW9uRW5hYmxl
ZDsgfQordm9pZCBDQ1NldHRpbmdzOjpzZXRBY2NlbGVyYXRlZEFuaW1hdGlvbkVuYWJsZWQoYm9v
bCBlbmFibGVkKSB7IHNfYWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkID0gZW5hYmxlZDsgfQor
Cit2b2lkIENDU2V0dGluZ3M6OnJlc2V0KCkKK3sKKyAgICBzX3BlclRpbGVQYWludGluZ0VuYWJs
ZWQgPSBmYWxzZTsKKyAgICBzX3BhcnRpYWxTd2FwRW5hYmxlZCA9IGZhbHNlOworICAgIHNfYWNj
ZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkID0gZmFsc2U7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2V0dGluZ3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OGY4YzJmZmQzNTJlNWRhOTY0YzZk
YmU5OGRlYjAwYWNkMGE5OWUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTZXR0aW5ncy5oCkBAIC0wLDAgKzEsNTEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMK
KyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgQ0NTZXR0aW5nc19oCisjZGVmaW5lIENDU2V0dGluZ3Nf
aAorCisjaW5jbHVkZSAiSW50U2l6ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IENDU2V0dGluZ3MgeworcHVibGljOgorICAgIHN0YXRpYyBib29sIHBlclRpbGVQYWludGluZ0Vu
YWJsZWQoKTsKKyAgICBzdGF0aWMgYm9vbCBwYXJ0aWFsU3dhcEVuYWJsZWQoKTsKKyAgICBzdGF0
aWMgYm9vbCBhY2NlbGVyYXRlZEFuaW1hdGlvbkVuYWJsZWQoKTsKKworICAgIC8vIFRoZXNlIHNl
dHRlcnMgc2hvdWxkIG9ubHkgYmUgdXNlZCBvbiB0aGUgbWFpbiB0aHJlYWQgYmVmb3JlIHRoZSBs
YXllcgorICAgIC8vIHJlbmRlcmVyIGlzIGluaXRpYWxpemVkLgorICAgIHN0YXRpYyB2b2lkIHNl
dFBlclRpbGVQYWludGluZ0VuYWJsZWQoYm9vbCk7CisgICAgc3RhdGljIHZvaWQgc2V0UGFydGlh
bFN3YXBFbmFibGVkKGJvb2wpOworICAgIHN0YXRpYyB2b2lkIHNldEFjY2VsZXJhdGVkQW5pbWF0
aW9uRW5hYmxlZChib29sKTsKKworICAgIC8vIFRoZXNlIHNldHRpbmdzIGFyZSBtZWFudCB0byBi
ZSBzZXQgb25seSBvbmNlLCBhbmQgb25seSByZWFkIHRoZXJlYWZ0ZXIuCisgICAgLy8gVGhpcyBm
dW5jdGlvbiBpcyBvbmx5IGZvciByZXNldHRpbmcgc2V0dGluZ3MgaW4gdGVzdHMuCisgICAgc3Rh
dGljIHZvaWQgcmVzZXQoKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIENDU2V0dGluZ3NfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbFNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5n
cy5jcHAKaW5kZXggZWFiZWJlMDk1ZjljZjc3ZWNmM2VmOTI1MzE2ZTgxZWEzN2MxNDY2Mi4uZTFk
OWNkYjhkN2RhNzE1YzcwNWNjMGRkNmRhYjJlOWI2OGIxYTA4NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCkBAIC0yMzQsMTIgKzIzNCw2IEBAIHZvaWQg
SW50ZXJuYWxTZXR0aW5nczo6c2V0UGFnZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yLCBp
bnQgeCwgaW50IHksIEV4Y2VwCiAgICAgcGFnZSgpLT5zZXRQYWdlU2NhbGVGYWN0b3Ioc2NhbGVG
YWN0b3IsIEludFBvaW50KHgsIHkpKTsKIH0KIAotdm9pZCBJbnRlcm5hbFNldHRpbmdzOjpzZXRQ
ZXJUaWxlRHJhd2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJiBlYykKLXsK
LSAgICBJbnRlcm5hbFNldHRpbmdzR3VhcmRGb3JTZXR0aW5ncygpOwotICAgIHNldHRpbmdzKCkt
PnNldFBlclRpbGVEcmF3aW5nRW5hYmxlZChlbmFibGVkKTsKLX0KLQogdm9pZCBJbnRlcm5hbFNl
dHRpbmdzOjpzZXRTaGFkb3dET01FbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CiAjaWYgRU5BQkxFKFNIQURPV19ET00pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxTZXR0aW5ncy5oCmluZGV4IDRmZTgyMjYzNWI3NWJkMzI3MzRiNjJlNTAwNjQ2NmQ1ZDc4
ZjBmOTAuLmNkMjhiNjM2NWRiZmM3NDNhNTI4MDhkNWQzZjgyMjVlOGZiODU2NGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oCkBAIC02MSw3ICs2MSw2IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFVuaWZpZWRUZXh0Q2hlY2tpbmdFbmFibGVkKGJvb2wsIEV4Y2Vw
dGlvbkNvZGUmKTsKICAgICBib29sIHVuaWZpZWRUZXh0Q2hlY2tpbmdFbmFibGVkKEV4Y2VwdGlv
bkNvZGUmKTsKICAgICB2b2lkIHNldFBhZ2VTY2FsZUZhY3RvcihmbG9hdCBzY2FsZUZhY3Rvciwg
aW50IHgsIGludCB5LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBzZXRQZXJUaWxlRHJhd2lu
Z0VuYWJsZWQoYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXRUb3Vj
aEV2ZW50RW11bGF0aW9uRW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmKTsKICAg
ICB2b2lkIHNldERldmljZVN1cHBvcnRzVG91Y2goYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2Rl
Jik7CiAgICAgdm9pZCBzZXREZXZpY2VTdXBwb3J0c01vdXNlKGJvb2wgZW5hYmxlZCwgRXhjZXB0
aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
aSBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKaW5kZXggYzE4NzI4YjAwOTMw
YWFiMGEyMzRlMTIzODVmYjE2NTdlNGQwZTE0Yi4uNmNkYWU2NmFlMmNiYjBjYTQ3ZDI5NGNkYTkw
MWM1ZWUzNjE3ZjcxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwaQorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCkBAIC04OCw2ICs4
OCw3IEBACiAgICAgICAgICAgICAndGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcCcsCiAgICAgICAg
ICAgICAndGVzdHMvQ0NTaW5nbGVUaHJlYWRQcm94eVRlc3QuY3BwJywKICAgICAgICAgICAgICd0
ZXN0cy9DQ1NvbGlkQ29sb3JMYXllckltcGxUZXN0LmNwcCcsCisgICAgICAgICAgICAndGVzdHMv
Q0NUZXN0Q29tbW9uLmgnLAogICAgICAgICAgICAgJ3Rlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0
LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oJywKICAg
ICAgICAgICAgICd0ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmNwcCcsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yLmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yLmgKaW5kZXggM2VhZGVmMzJjMzdi
MzEzNDliOTkzNzdhMmUxOWY4YzA2YThmOGQ0OC4uNmUwZGEyYjIyNzBhYjExN2FmMTE2Y2EyZGQy
NDg1MjhiYTRkYTQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViQ29tcG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNv
bXBvc2l0b3IuaApAQCAtMjYsNiArMjYsOCBAQAogI2lmbmRlZiBXZWJDb21wb3NpdG9yX2gKICNk
ZWZpbmUgV2ViQ29tcG9zaXRvcl9oCiAKKyNkZWZpbmUgV0VCQ09NUE9TSVRPUl9PV05TX1NFVFRJ
TkdTIDEKKwogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKQEAgLTQ5LDYgKzUxLDExIEBAIHB1YmxpYzoKICAgICAvLyBhZnRlciBzaHV0ZG93bi4K
ICAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyB2b2lkIHNodXRkb3duKCk7CiAKKyAgICAvLyBUaGVz
ZSBtYXkgb25seSBiZSBjYWxsZWQgYmVmb3JlIGluaXRpYWxpemUuCisgICAgV0VCS0lUX0VYUE9S
VCBzdGF0aWMgdm9pZCBzZXRQZXJUaWxlUGFpbnRpbmdFbmFibGVkKGJvb2wpOworICAgIFdFQktJ
VF9FWFBPUlQgc3RhdGljIHZvaWQgc2V0UGFydGlhbFN3YXBFbmFibGVkKGJvb2wpOworICAgIFdF
QktJVF9FWFBPUlQgc3RhdGljIHZvaWQgc2V0QWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkKGJv
b2wpOworCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+V2ViQ29tcG9zaXRvcigpIHsgfQogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCmluZGV4IDg4ZDlh
MDEzOGQyMTQxYTExNGI5MGJlOTVjZDBkMzYzMmM2MDYzZjYuLjA1MjhkOGVmNGVhYmM2ZmY4ZDdl
MjcwODE0MjBhZmEwNmRjOTIwNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlNldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViU2V0dGluZ3MuaApAQCAtMTQ3LDkgKzE0Nyw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgc2V0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHNldFZpc3VhbFdvcmRNb3ZlbWVudEVuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZFBhaW50aW5nRW5hYmxlZChib29sKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHNldFBlclRpbGVQYWludGluZ0VuYWJsZWQoYm9vbCkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRQYXJ0aWFsU3dhcEVuYWJsZWQoYm9vbCkgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBzZXRUaHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRWaWV3cG9ydEVuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRN
ZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZShib29sKSA9IDA7CiAgICAgdmlydHVhbCBi
b29sIHZpZXdwb3J0RW5hYmxlZCgpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbXBsLmNwcAppbmRleCA5MWQ4YjFiZTY2MDQ1YTM5OGQy
Nzg4OGVjY2UwZjdmYjZmMjMyOTExLi5mNGU5NmUwYmUxOTEwNmIzOWEwYmZkMjgyY2I0OWMwMmQx
Y2QwYTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3Np
dG9ySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRv
ckltcGwuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiV2ViSW5wdXRFdmVudC5oIgog
I2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIK
KyNpbmNsdWRlICJjYy9DQ1NldHRpbmdzLmgiCiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZ1ByaW1p
dGl2ZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC01MSw2ICs1MiwyNSBAQCB2
b2lkIFdlYkNvbXBvc2l0b3I6OmluaXRpYWxpemUoV2ViVGhyZWFkKiBpbXBsVGhyZWFkKQogdm9p
ZCBXZWJDb21wb3NpdG9yOjpzaHV0ZG93bigpCiB7CiAgICAgV2ViQ29tcG9zaXRvckltcGw6OnNo
dXRkb3duKCk7CisgICAgQ0NTZXR0aW5nczo6cmVzZXQoKTsKK30KKwordm9pZCBXZWJDb21wb3Np
dG9yOjpzZXRQZXJUaWxlUGFpbnRpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBBU1NF
UlQoIVdlYkNvbXBvc2l0b3JJbXBsOjppbml0aWFsaXplZCgpKTsKKyAgICBDQ1NldHRpbmdzOjpz
ZXRQZXJUaWxlUGFpbnRpbmdFbmFibGVkKGVuYWJsZWQpOworfQorCit2b2lkIFdlYkNvbXBvc2l0
b3I6OnNldFBhcnRpYWxTd2FwRW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAgQVNTRVJUKCFX
ZWJDb21wb3NpdG9ySW1wbDo6aW5pdGlhbGl6ZWQoKSk7CisgICAgQ0NTZXR0aW5nczo6c2V0UGFy
dGlhbFN3YXBFbmFibGVkKGVuYWJsZWQpOworfQorCit2b2lkIFdlYkNvbXBvc2l0b3I6OnNldEFj
Y2VsZXJhdGVkQW5pbWF0aW9uRW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAgQVNTRVJUKCFX
ZWJDb21wb3NpdG9ySW1wbDo6aW5pdGlhbGl6ZWQoKSk7CisgICAgQ0NTZXR0aW5nczo6c2V0QWNj
ZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkKGVuYWJsZWQpOwogfQogCiB2b2lkIFdlYkNvbXBvc2l0
b3JJbXBsOjppbml0aWFsaXplKFdlYlRocmVhZCogaW1wbFRocmVhZCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAKaW5kZXggZmVkM2RiOTc1OTg1
Yzc4YzM2MjkxMjg3ODhhYzY0MWFmMDEzN2Y4MC4uZTA0MmYyNTE3MzBmYWM5N2VhOGY2MTg0NjA0
Yjk4MmZmYjUwMDkzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
TGF5ZXJUcmVlVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5
ZXJUcmVlVmlldy5jcHAKQEAgLTM3LDE4ICszNywxNSBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewotV2ViTGF5ZXJUcmVlVmlldzo6U2V0dGluZ3M6Om9w
ZXJhdG9yIENDU2V0dGluZ3MoKSBjb25zdAorCitXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5nczo6
b3BlcmF0b3IgQ0NMYXllclRyZWVTZXR0aW5ncygpIGNvbnN0CiB7Ci0gICAgQ0NTZXR0aW5ncyBz
ZXR0aW5nczsKLSAgICBzZXR0aW5ncy5hY2NlbGVyYXRlUGFpbnRpbmcgPSBhY2NlbGVyYXRlUGFp
bnRpbmc7CisgICAgQ0NMYXllclRyZWVTZXR0aW5ncyBzZXR0aW5nczsKICAgICBzZXR0aW5ncy5m
b3JjZVNvZnR3YXJlQ29tcG9zaXRpbmcgPSBmb3JjZVNvZnR3YXJlQ29tcG9zaXRpbmc7CiAgICAg
c2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIgPSBzaG93RlBTQ291bnRlcjsKICAgICBzZXR0aW5ncy5z
aG93UGxhdGZvcm1MYXllclRyZWUgPSBzaG93UGxhdGZvcm1MYXllclRyZWU7CiAgICAgc2V0dGlu
Z3Muc2hvd1BhaW50UmVjdHMgPSBzaG93UGFpbnRSZWN0czsKICAgICBzZXR0aW5ncy5yZWZyZXNo
UmF0ZSA9IHJlZnJlc2hSYXRlOwotICAgIHNldHRpbmdzLnBlclRpbGVQYWludGluZyA9IHBlclRp
bGVQYWludGluZzsKLSAgICBzZXR0aW5ncy5wYXJ0aWFsU3dhcEVuYWJsZWQgPSBwYXJ0aWFsU3dh
cEVuYWJsZWQ7Ci0gICAgc2V0dGluZ3MudGhyZWFkZWRBbmltYXRpb25FbmFibGVkID0gdGhyZWFk
ZWRBbmltYXRpb25FbmFibGVkOwogICAgIHNldHRpbmdzLmRlZmF1bHRUaWxlU2l6ZSA9IGRlZmF1
bHRUaWxlU2l6ZTsKICAgICBzZXR0aW5ncy5tYXhVbnRpbGVkTGF5ZXJTaXplID0gbWF4VW50aWxl
ZExheWVyU2l6ZTsKICAgICBzZXR0aW5ncy5kZXZpY2VTY2FsZUZhY3RvciA9IGRldmljZVNjYWxl
RmFjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGlu
Z3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5j
cHAKaW5kZXggOTQyMzY4OTY4NzY2ZTc2YmE4NDI3NjIwNzNhNTMzMjliYTA2Zjc3Ny4uNWY4Nzc2
YjU4YTM1ODg1YTlhYTUyMmU1Njk1M2M0YjBkZGJiYTE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCkBAIC01OTIsMjEgKzU5Miw2IEBAIHZv
aWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRBY2NlbGVyYXRlZFBhaW50aW5nRW5hYmxlZChib29sIGVu
YWJsZWQpCiAgICAgbV9zZXR0aW5ncy0+c2V0QWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZChlbmFi
bGVkKTsKIH0KIAotdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldFBlclRpbGVQYWludGluZ0VuYWJs
ZWQoYm9vbCBlbmFibGVkKQotewotICAgIG1fc2V0dGluZ3MtPnNldFBlclRpbGVEcmF3aW5nRW5h
YmxlZChlbmFibGVkKTsKLX0KLQotdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldFBhcnRpYWxTd2Fw
RW5hYmxlZChib29sIGVuYWJsZWQpCi17Ci0gICAgbV9zZXR0aW5ncy0+c2V0UGFydGlhbFN3YXBF
bmFibGVkKGVuYWJsZWQpOwotfQotCi12b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0VGhyZWFkZWRB
bmltYXRpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkKLXsKLSAgICBtX3NldHRpbmdzLT5zZXRUaHJl
YWRlZEFuaW1hdGlvbkVuYWJsZWQoZW5hYmxlZCk7Ci19Ci0KIHZvaWQgV2ViU2V0dGluZ3NJbXBs
OjpzZXRNZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZShib29sIHJlcXVpcmVkKQogewog
ICAgIG1fc2V0dGluZ3MtPnNldE1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlKHJlcXVp
cmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdz
SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKaW5k
ZXggZWE3Y2YzZmY5MjIzZDg0YmY0MjRmZDI3YzViOTM0NjBlNDU4N2M1My4uMmI1OGMwNDQzYjlm
MTA3N2NhMjQ4N2I3MDI2N2QwNTQxYzVkZGI4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKQEAgLTE0NCw5ICsxNDQsNiBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHNldFNob3VsZERpc3BsYXlDYXB0aW9ucyhib29sKTsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0U2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMoYm9vbCk7CiAgICAgdmlydHVh
bCB2b2lkIHNldEFjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkKGJvb2wpOwotICAgIHZpcnR1YWwg
dm9pZCBzZXRQZXJUaWxlUGFpbnRpbmdFbmFibGVkKGJvb2wpOwotICAgIHZpcnR1YWwgdm9pZCBz
ZXRQYXJ0aWFsU3dhcEVuYWJsZWQoYm9vbCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldFRocmVhZGVk
QW5pbWF0aW9uRW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Rml4ZWRQb3NpdGlv
bkNyZWF0ZXNTdGFja2luZ0NvbnRleHQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZXdw
b3J0RW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TWVkaWFQbGF5YmFja1JlcXVp
cmVzVXNlckdlc3R1cmUoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAKaW5kZXggYTQ0MDk3YmE0Yjg3YTkyN2ZjODMwMjg5Y2JhNGY4ZmU5YmQ3NzZiMC4u
ZDk0ZGFmOTc0ZTQyM2ZiNDRlZjhmNWQwN2E2ODRjMjVmZTZkNTcxNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMTQ2LDYgKzE0Niw3IEBACiAjaW5j
bHVkZSAiV2ViVmlld0NsaWVudC5oIgogI2luY2x1ZGUgIldoZWVsRXZlbnQuaCIKICNpbmNsdWRl
ICJjYy9DQ1Byb3h5LmgiCisjaW5jbHVkZSAiY2MvQ0NTZXR0aW5ncy5oIgogI2luY2x1ZGUgInBh
aW50aW5nL0dyYXBoaWNzQ29udGV4dEJ1aWxkZXIuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJL
aXRQbGF0Zm9ybVN1cHBvcnQuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKQEAg
LTQ1OCw3ICs0NTksNyBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCog
Y2xpZW50KQogI2lmIEVOQUJMRShCQVRURVJZX1NUQVRVUykKICAgICBwcm92aWRlQmF0dGVyeVRv
KG1fcGFnZS5nZXQoKSwgbV9iYXR0ZXJ5Q2xpZW50LmdldCgpKTsKICNlbmRpZgotICAgIAorCiAg
ICAgbV9wYWdlLT5zZXRHcm91cE5hbWUocGFnZUdyb3VwTmFtZSk7CiAKICNpZiBFTkFCTEUoUEFH
RV9WSVNJQklMSVRZX0FQSSkKQEAgLTM0NzEsMTAgKzM0NzIsNiBAQCB2b2lkIFdlYlZpZXdJbXBs
OjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoYm9vbCBhY3RpdmUpCiAgICAgICAg
IGxheWVyVHJlZVZpZXdTZXR0aW5ncy5zaG93UGFpbnRSZWN0cyA9IHNldHRpbmdzSW1wbCgpLT5z
aG93UGFpbnRSZWN0cygpOwogICAgICAgICBsYXllclRyZWVWaWV3U2V0dGluZ3MuZm9yY2VTb2Z0
d2FyZUNvbXBvc2l0aW5nID0gc2V0dGluZ3MoKS0+Zm9yY2VTb2Z0d2FyZUNvbXBvc2l0aW5nKCk7
CiAKLSAgICAgICAgbGF5ZXJUcmVlVmlld1NldHRpbmdzLnBlclRpbGVQYWludGluZyA9IHBhZ2Uo
KS0+c2V0dGluZ3MoKS0+cGVyVGlsZURyYXdpbmdFbmFibGVkKCk7Ci0gICAgICAgIGxheWVyVHJl
ZVZpZXdTZXR0aW5ncy5wYXJ0aWFsU3dhcEVuYWJsZWQgPSBwYWdlKCktPnNldHRpbmdzKCktPnBh
cnRpYWxTd2FwRW5hYmxlZCgpOwotICAgICAgICBsYXllclRyZWVWaWV3U2V0dGluZ3MudGhyZWFk
ZWRBbmltYXRpb25FbmFibGVkID0gcGFnZSgpLT5zZXR0aW5ncygpLT50aHJlYWRlZEFuaW1hdGlv
bkVuYWJsZWQoKTsKLQogICAgICAgICBsYXllclRyZWVWaWV3U2V0dGluZ3MuZGVmYXVsdFRpbGVT
aXplID0gc2V0dGluZ3NJbXBsKCktPmRlZmF1bHRUaWxlU2l6ZSgpOwogICAgICAgICBsYXllclRy
ZWVWaWV3U2V0dGluZ3MubWF4VW50aWxlZExheWVyU2l6ZSA9IHNldHRpbmdzSW1wbCgpLT5tYXhV
bnRpbGVkTGF5ZXJTaXplKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXggZjI2ZmRmODEwZWUwOWQ2
NDdiNDY2NmY1YzE1YzY2ZDMwMGMyM2NlNC4uMzE0OGI4ZDI5MGRlZTBjNGIxODFjNmFkNjZjZTlm
ODAwZmM2YzA2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xh
eWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1
ZGUgIkNDQW5pbWF0aW9uVGVzdENvbW1vbi5oIgogI2luY2x1ZGUgIkNDTGF5ZXJUZXN0Q29tbW9u
LmgiCisjaW5jbHVkZSAiQ0NUZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiRmFrZVdlYkdyYXBoaWNz
Q29udGV4dDNELmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCiAjaW5j
bHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCkBAIC0zNSw2ICszNiw3IEBACiAjaW5jbHVk
ZSAiY2MvQ0NMYXllclRpbGluZ0RhdGEuaCIKICNpbmNsdWRlICJjYy9DQ1F1YWRDdWxsZXIuaCIK
ICNpbmNsdWRlICJjYy9DQ1Njcm9sbGJhckxheWVySW1wbC5oIgorI2luY2x1ZGUgImNjL0NDU2V0
dGluZ3MuaCIKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgiCiAjaW5jbHVkZSAi
Y2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ1RleHR1cmVMYXllcklt
cGwuaCIKQEAgLTY1LDcgKzY3LDcgQEAgcHVibGljOgogICAgICAgICA6IG1fZGlkUmVxdWVzdENv
bW1pdChmYWxzZSkKICAgICAgICAgLCBtX2RpZFJlcXVlc3RSZWRyYXcoZmFsc2UpCiAgICAgewot
ICAgICAgICBDQ1NldHRpbmdzIHNldHRpbmdzOworICAgICAgICBDQ0xheWVyVHJlZVNldHRpbmdz
IHNldHRpbmdzOwogICAgICAgICBtX2hvc3RJbXBsID0gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3Jl
YXRlKHNldHRpbmdzLCB0aGlzKTsKICAgICAgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVy
UmVuZGVyZXIoY3JlYXRlQ29udGV4dCgpLCBVbnRocm90dGxlZFVwbG9hZGVyKTsKICAgICAgICAg
bV9ob3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMTAsIDEwKSk7CkBAIC04MCwxMCAr
ODIsOSBAQCBwdWJsaWM6CiAKICAgICBQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IGNy
ZWF0ZUxheWVyVHJlZUhvc3QoYm9vbCBwYXJ0aWFsU3dhcCwgUGFzc1JlZlB0cjxDQ0dyYXBoaWNz
Q29udGV4dD4gZ3JhcGhpY3NDb250ZXh0LCBQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiByb290UHRy
KQogICAgIHsKLSAgICAgICAgQ0NTZXR0aW5ncyBzZXR0aW5nczsKLQotICAgICAgICBzZXR0aW5n
cy5wYXJ0aWFsU3dhcEVuYWJsZWQgPSBwYXJ0aWFsU3dhcDsKKyAgICAgICAgQ0NTZXR0aW5nczo6
c2V0UGFydGlhbFN3YXBFbmFibGVkKHBhcnRpYWxTd2FwKTsKIAorICAgICAgICBDQ0xheWVyVHJl
ZVNldHRpbmdzIHNldHRpbmdzOwogICAgICAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4g
bXlIb3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShzZXR0aW5ncywgdGhpcyk7
CiAKICAgICAgICAgbXlIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoZ3JhcGhpY3ND
b250ZXh0LCBVbnRocm90dGxlZFVwbG9hZGVyKTsKQEAgLTE0OCw2ICsxNDksNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IG1faG9zdEltcGw7CiAgICAgYm9v
bCBtX2RpZFJlcXVlc3RDb21taXQ7CiAgICAgYm9vbCBtX2RpZFJlcXVlc3RSZWRyYXc7CisgICAg
Q0NTY29wZWRTZXR0aW5ncyBtX3Njb3BlZFNldHRpbmdzOwogfTsKIAogVEVTVF9GKENDTGF5ZXJU
cmVlSG9zdEltcGxUZXN0LCBzY3JvbGxEZWx0YU5vTGF5ZXJzKQpAQCAtMTExMSw4ICsxMTEzLDgg
QEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBwYXJ0aWFsU3dhcFJlY2VpdmVzRGFt
YWdlUmVjdCkKIAogICAgIC8vIFRoaXMgdGVzdCBjcmVhdGVzIGl0cyBvd24gQ0NMYXllclRyZWVI
b3N0SW1wbCwgc28KICAgICAvLyB0aGF0IHdlIGNhbiBmb3JjZSBwYXJ0aWFsIHN3YXAgZW5hYmxl
ZC4KLSAgICBDQ1NldHRpbmdzIHNldHRpbmdzOwotICAgIHNldHRpbmdzLnBhcnRpYWxTd2FwRW5h
YmxlZCA9IHRydWU7CisgICAgQ0NMYXllclRyZWVTZXR0aW5ncyBzZXR0aW5nczsKKyAgICBDQ1Nl
dHRpbmdzOjpzZXRQYXJ0aWFsU3dhcEVuYWJsZWQodHJ1ZSk7CiAgICAgT3duUHRyPENDTGF5ZXJU
cmVlSG9zdEltcGw+IGxheWVyVHJlZUhvc3RJbXBsID0gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3Jl
YXRlKHNldHRpbmdzLCB0aGlzKTsKICAgICBsYXllclRyZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxh
eWVyUmVuZGVyZXIoY2NDb250ZXh0LCBVbnRocm90dGxlZFVwbG9hZGVyKTsKICAgICBsYXllclRy
ZWVIb3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoNTAwLCA1MDApKTsKQEAgLTEzMTgs
NyArMTMyMCw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgcGFydGlhbFN3YXBO
b1VwZGF0ZSkKICAgICBoYXJuZXNzLm11c3RTZXRTY2lzc29yKDAsIDAsIDEwLCAxMCk7CiAKICAg
ICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gbXlIb3N0SW1wbCA9IGNyZWF0ZUxheWVyVHJl
ZUhvc3QodHJ1ZSwgY29udGV4dCwgRmFrZUxheWVyV2l0aFF1YWRzOjpjcmVhdGUoMSkpOwotICAg
IAorCiAgICAgLy8gRHJhdyBvbmNlIHRvIG1ha2Ugc3VyZSBsYXllciBpcyBub3QgbmV3CiAgICAg
Q0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1lOwogICAgIEVYUEVDVF9UUlVFKG15
SG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKQEAgLTEzNDUsNyArMTM0Nyw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIHJldHVybiBXZWJTdHJpbmcoIkdMX0NIUk9NSVVNX3Bvc3Rfc3Vi
X2J1ZmZlciIpOwogICAgICAgICByZXR1cm4gV2ViU3RyaW5nKCk7CiAgICAgfQotICAgIAorCiAg
ICAgV2ViU3RyaW5nIGdldFJlcXVlc3RhYmxlRXh0ZW5zaW9uc0NIUk9NSVVNKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBXZWJTdHJpbmcoIkdMX0NIUk9NSVVNX3Bvc3Rfc3ViX2J1ZmZlciIpOwpA
QCAtMTM1NCwxMCArMTM1NiwxMSBAQCBwdWJsaWM6CiAKIHN0YXRpYyBQYXNzT3duUHRyPENDTGF5
ZXJUcmVlSG9zdEltcGw+IHNldHVwTGF5ZXJzRm9yT3BhY2l0eShib29sIHBhcnRpYWxTd2FwLCBD
Q0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgQ0NTZXR0aW5ncyBzZXR0
aW5nczsKLSAgICBzZXR0aW5ncy5wYXJ0aWFsU3dhcEVuYWJsZWQgPSBwYXJ0aWFsU3dhcDsKKyAg
ICBDQ1NldHRpbmdzOjpzZXRQYXJ0aWFsU3dhcEVuYWJsZWQocGFydGlhbFN3YXApOwogCiAgICAg
UmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNy
ZWF0ZTNEKEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJv
bVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IFBhcnRpYWxTd2FwQ29udGV4dCgpKSwgR3JhcGhpY3ND
b250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KSk7CisKKyAgICBDQ0xheWVyVHJl
ZVNldHRpbmdzIHNldHRpbmdzOwogICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBteUhv
c3RJbXBsID0gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKHNldHRpbmdzLCBjbGllbnQpOwog
ICAgIG15SG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQucmVsZWFzZSgp
LCBVbnRocm90dGxlZFVwbG9hZGVyKTsKICAgICBteUhvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUo
SW50U2l6ZSgxMDAsIDEwMCkpOwpAQCAtMTQ2MCw4ICsxNDYzLDggQEAgVEVTVF9GKENDTGF5ZXJU
cmVlSG9zdEltcGxUZXN0LCBjb250cmlidXRpbmdMYXllckVtcHR5U2Npc3Nvck5vUGFydGlhbFN3
YXApCiAKIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgZGlkRHJhd05vdENhbGxlZE9u
U2Npc3NvcmVkTGF5ZXIpCiB7Ci0gICAgQ0NTZXR0aW5ncyBzZXR0aW5nczsKLSAgICBzZXR0aW5n
cy5wYXJ0aWFsU3dhcEVuYWJsZWQgPSB0cnVlOworICAgIENDTGF5ZXJUcmVlU2V0dGluZ3Mgc2V0
dGluZ3M7CisgICAgQ0NTZXR0aW5nczo6c2V0UGFydGlhbFN3YXBFbmFibGVkKHRydWUpOwogCiAg
ICAgUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6
OmNyZWF0ZTNEKEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0
RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IFBhcnRpYWxTd2FwQ29udGV4dCgpKSwgR3JhcGhp
Y3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KSk7CiAgICAgT3duUHRyPEND
TGF5ZXJUcmVlSG9zdEltcGw+IG15SG9zdEltcGwgPSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVh
dGUoc2V0dGluZ3MsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggYjAzNDM3MGNlZTYxNzU2YzE4ZmY0ODAy
MDliZjNiNDFkNTgwMzY1Yi4uMWJjMTFiYWUzMTZkODczYjVlMjEyNDM2MTA4ZDgxZGYyNjVlM2Ri
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhv
c3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVl
SG9zdFRlc3QuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQ29udGVudExheWVyQ2hy
b21pdW0uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCIKICNpbmNsdWRl
ICJjYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgiCisjaW5jbHVkZSAiY2MvQ0NTZXR0aW5ncy5oIgog
I2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1RpbWluZ0Z1
bmN0aW9uLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViVGhyZWFkLmgiCkBAIC01Nyw2ICs1OCwy
NSBAQCBuYW1lc3BhY2UgewogY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdCA6IHB1YmxpYyBDQ1Ro
cmVhZGVkVGVzdCB7IH07CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RUZXN0VGhyZWFkT25seSA6IHB1
YmxpYyBDQ1RocmVhZGVkVGVzdFRocmVhZE9ubHkgeyB9OwogCisvLyBTaG9ydGxpdmVkIGxheWVy
VHJlZUhvc3RzIHNob3VsZG4ndCBkaWUuCitjbGFzcyBDQ0xheWVyVHJlZUhvc3RUZXN0U2hvcnRs
aXZlZDEgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0VGVzdCB7CitwdWJsaWM6CisgICAgQ0NMYXll
clRyZWVIb3N0VGVzdFNob3J0bGl2ZWQxKCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5U
ZXN0KCkKKyAgICB7CisgICAgICAgIC8vIEtpbGwgdGhlIGxheWVyVHJlZUhvc3QgaW1tZWRpYXRl
bHkuCisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKDApOworICAgICAgICBt
X2xheWVyVHJlZUhvc3QuY2xlYXIoKTsKKworICAgICAgICBlbmRUZXN0KCk7CisgICAgfQorCisg
ICAgdmlydHVhbCB2b2lkIGFmdGVyVGVzdCgpCisgICAgeworICAgIH0KK307CisKIC8vIFNob3J0
bGl2ZWQgbGF5ZXJUcmVlSG9zdHMgc2hvdWxkbid0IGRpZSB3aXRoIGEgY29tbWl0IGluIGZsaWdo
dC4KIGNsYXNzIENDTGF5ZXJUcmVlSG9zdFRlc3RTaG9ydGxpdmVkMiA6IHB1YmxpYyBDQ0xheWVy
VHJlZUhvc3RUZXN0IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NUZXN0Q29tbW9uLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
VGVzdENvbW1vbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5ZmNlOTgxODhjY2JkMzFiZTk4MzBjMjVmNjYwNzEz
MjEzM2I3YzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDVGVzdENvbW1vbi5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
Q0NUZXN0Q29tbW9uX2gKKyNkZWZpbmUgQ0NUZXN0Q29tbW9uX2gKKworI2luY2x1ZGUgImNjL0ND
U2V0dGluZ3MuaCIKKworbmFtZXNwYWNlIFdlYktpdFRlc3RzIHsKKworLy8gSWYgeW91IGhhdmUg
YSB0ZXN0IHRoYXQgbW9kaWZpZXMgb3IgdXNlcyBnbG9iYWwgc2V0dGluZ3MsIGtlZXAgYW4gaW5z
dGFuY2UKKy8vIG9mIHRoaXMgY2xhc3MgdG8gZW5zdXJlIHRoYXQgeW91IHN0YXJ0IGFuZCBlbmQg
d2l0aCBhIGNsZWFuIHNsYXRlLgorY2xhc3MgQ0NTY29wZWRTZXR0aW5ncyB7CitwdWJsaWM6Cisg
ICAgQ0NTY29wZWRTZXR0aW5ncygpIHsgV2ViQ29yZTo6Q0NTZXR0aW5nczo6cmVzZXQoKTsgfQor
ICAgIH5DQ1Njb3BlZFNldHRpbmdzKCkgeyBXZWJDb3JlOjpDQ1NldHRpbmdzOjpyZXNldCgpOyB9
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXRUZXN0cworCisjZW5kaWYgLy8gQ0NUZXN0Q29t
bW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaHJlYWRl
ZFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RocmVhZGVkVGVzdC5j
cHAKaW5kZXggYzllYmJhMTIyZmZhZWNhYjRjMGMyMDk3ZWZmNzAyODA5NGE1NjEyNi4uN2I0Njhh
YjdjOTYyYWZjZmYwMzhiMjAzMTU5YWVlZGNiYWEyNDIyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RocmVhZGVkVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ1RocmVhZGVkVGVzdC5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCBQ
YXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBUZXN0SG9va3M6OmNyZWF0ZUNvbnRleHQoKQog
ICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4
dEZyb21XZWJDb250ZXh0KHdlYkNvbnRleHQucmVsZWFzZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6
UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpOwogfQogCi1QYXNzT3duUHRyPE1vY2tMYXllclRy
ZWVIb3N0SW1wbD4gTW9ja0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoVGVzdEhvb2tzKiB0ZXN0
SG9va3MsIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzLCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xp
ZW50KiBjbGllbnQpCitQYXNzT3duUHRyPE1vY2tMYXllclRyZWVIb3N0SW1wbD4gTW9ja0xheWVy
VHJlZUhvc3RJbXBsOjpjcmVhdGUoVGVzdEhvb2tzKiB0ZXN0SG9va3MsIGNvbnN0IENDTGF5ZXJU
cmVlU2V0dGluZ3MmIHNldHRpbmdzLCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KiBjbGllbnQp
CiB7CiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNb2NrTGF5ZXJUcmVlSG9zdEltcGwodGVzdEhv
b2tzLCBzZXR0aW5ncywgY2xpZW50KSk7CiB9CkBAIC0xNTUsNyArMTU1LDcgQEAgZG91YmxlIE1v
Y2tMYXllclRyZWVIb3N0SW1wbDo6bG93RnJlcXVlbmN5QW5pbWF0aW9uSW50ZXJ2YWwoKSBjb25z
dAogICAgIHJldHVybiAxLjAgLyA2MDsKIH0KIAotTW9ja0xheWVyVHJlZUhvc3RJbXBsOjpNb2Nr
TGF5ZXJUcmVlSG9zdEltcGwoVGVzdEhvb2tzKiB0ZXN0SG9va3MsIGNvbnN0IENDU2V0dGluZ3Mm
IHNldHRpbmdzLCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KiBjbGllbnQpCitNb2NrTGF5ZXJU
cmVlSG9zdEltcGw6Ok1vY2tMYXllclRyZWVIb3N0SW1wbChUZXN0SG9va3MqIHRlc3RIb29rcywg
Y29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MsIENDTGF5ZXJUcmVlSG9zdEltcGxD
bGllbnQqIGNsaWVudCkKICAgICA6IENDTGF5ZXJUcmVlSG9zdEltcGwoc2V0dGluZ3MsIGNsaWVu
dCkKICAgICAsIG1fdGVzdEhvb2tzKHRlc3RIb29rcykKIHsKQEAgLTE2NCwxMyArMTY0LDkgQEAg
TW9ja0xheWVyVHJlZUhvc3RJbXBsOjpNb2NrTGF5ZXJUcmVlSG9zdEltcGwoVGVzdEhvb2tzKiB0
ZXN0SG9va3MsIGNvbnN0IENDU2V0dGkKIC8vIEFkYXB0cyBDQ0xheWVyVHJlZUhvc3QgZm9yIHRl
c3QuIEluamVjdHMgTW9ja0xheWVyVHJlZUhvc3RJbXBsLgogY2xhc3MgTW9ja0xheWVyVHJlZUhv
c3QgOiBwdWJsaWMgV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc093blB0cjxNb2NrTGF5ZXJUcmVlSG9zdD4gY3JlYXRlKFRlc3RIb29rcyogdGVzdEhv
b2tzLCBXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpMYXllckNocm9taXVtPiByb290TGF5ZXIsIGNvbnN0IFdlYkNvcmU6OkNDU2V0dGlu
Z3MmIHNldHRpbmdzKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPE1vY2tMYXllclRyZWVIb3N0PiBj
cmVhdGUoVGVzdEhvb2tzKiB0ZXN0SG9va3MsIFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdENsaWVu
dCogY2xpZW50LCBQYXNzUmVmUHRyPFdlYkNvcmU6OkxheWVyQ2hyb21pdW0+IHJvb3RMYXllciwg
Y29uc3QgV2ViQ29yZTo6Q0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MpCiAgICAgewotICAg
ICAgICAvLyBGb3IgdGhlc2UgdGVzdHMsIHdlIHdpbGwgZW5hYmxlIHRocmVhZGVkIGFuaW1hdGlv
bnMuCi0gICAgICAgIENDU2V0dGluZ3Mgc2V0dGluZ3NDb3B5ID0gc2V0dGluZ3M7Ci0gICAgICAg
IHNldHRpbmdzQ29weS50aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQgPSB0cnVlOwotCi0gICAgICAg
IE93blB0cjxNb2NrTGF5ZXJUcmVlSG9zdD4gbGF5ZXJUcmVlSG9zdChhZG9wdFB0cihuZXcgTW9j
a0xheWVyVHJlZUhvc3QodGVzdEhvb2tzLCBjbGllbnQsIHNldHRpbmdzQ29weSkpKTsKKyAgICAg
ICAgT3duUHRyPE1vY2tMYXllclRyZWVIb3N0PiBsYXllclRyZWVIb3N0KGFkb3B0UHRyKG5ldyBN
b2NrTGF5ZXJUcmVlSG9zdCh0ZXN0SG9va3MsIGNsaWVudCwgc2V0dGluZ3MpKSk7CiAgICAgICAg
IGJvb2wgc3VjY2VzcyA9IGxheWVyVHJlZUhvc3QtPmluaXRpYWxpemUoKTsKICAgICAgICAgRVhQ
RUNUX1RSVUUoc3VjY2Vzcyk7CiAgICAgICAgIGxheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihy
b290TGF5ZXIpOwpAQCAtMTg1LDEwICsxODEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBh
c3NPd25QdHI8V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbD4gY3JlYXRlTGF5ZXJUcmVlSG9z
dEltcGwoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbENsaWVudCogY2xpZW50KQogICAgIHsK
LSAgICAgICAgLy8gRm9yIHRoZXNlIHRlc3RzLCB3ZSB3aWxsIGVuYWJsZSB0aHJlYWRlZCBhbmlt
YXRpb25zLgotICAgICAgICBDQ1NldHRpbmdzIGNvcHlTZXR0aW5ncyA9IHNldHRpbmdzKCk7Ci0g
ICAgICAgIGNvcHlTZXR0aW5ncy50aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQgPSB0cnVlOwotICAg
ICAgICByZXR1cm4gTW9ja0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUobV90ZXN0SG9va3MsIGNv
cHlTZXR0aW5ncywgY2xpZW50KTsKKyAgICAgICAgcmV0dXJuIE1vY2tMYXllclRyZWVIb3N0SW1w
bDo6Y3JlYXRlKG1fdGVzdEhvb2tzLCBzZXR0aW5ncygpLCBjbGllbnQpOwogICAgIH0KIAogICAg
IHZpcnR1YWwgdm9pZCBkaWRBZGRBbmltYXRpb24oKSBPVkVSUklERQpAQCAtMTk4LDcgKzE5MSw3
IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgTW9ja0xheWVyVHJlZUhvc3QoVGVz
dEhvb2tzKiB0ZXN0SG9va3MsIFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50
LCBjb25zdCBXZWJDb3JlOjpDQ1NldHRpbmdzJiBzZXR0aW5ncykKKyAgICBNb2NrTGF5ZXJUcmVl
SG9zdChUZXN0SG9va3MqIHRlc3RIb29rcywgV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Q2xpZW50
KiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OkNDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzKQog
ICAgICAgICA6IENDTGF5ZXJUcmVlSG9zdChjbGllbnQsIHNldHRpbmdzKQogICAgICAgICAsIG1f
dGVzdEhvb2tzKHRlc3RIb29rcykKICAgICB7CkBAIC02MTUsNiArNjA4LDkgQEAgdm9pZCBDQ1Ro
cmVhZGVkVGVzdDo6ZGlzcGF0Y2hEaWRBZGRBbmltYXRpb24odm9pZCogc2VsZikKIAogdm9pZCBD
Q1RocmVhZGVkVGVzdDo6cnVuVGVzdChib29sIHRocmVhZGVkKQogeworICAgIC8vIEZvciB0aGVz
ZSB0ZXN0cywgd2Ugd2lsbCBlbmFibGUgdGhyZWFkZWQgYW5pbWF0aW9ucy4KKyAgICBXZWJDb21w
b3NpdG9yOjpzZXRBY2NlbGVyYXRlZEFuaW1hdGlvbkVuYWJsZWQodHJ1ZSk7CisKICAgICBpZiAo
dGhyZWFkZWQpIHsKICAgICAgICAgbV93ZWJUaHJlYWQgPSBhZG9wdFB0cihXZWJLaXQ6OlBsYXRm
b3JtOjpjdXJyZW50KCktPmNyZWF0ZVRocmVhZCgiQ0NUaHJlYWRlZFRlc3QiKSk7CiAgICAgICAg
IFdlYkNvbXBvc2l0b3I6OmluaXRpYWxpemUobV93ZWJUaHJlYWQuZ2V0KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RocmVhZGVkVGVzdC5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RocmVhZGVkVGVzdC5oCmluZGV4IDdmMzU4MTYwYTZk
NjViNTkyNTAxZjM3ZThkMDhhYjI4ODM2MWU4ZjcuLjRlZGM0ZTUyMTY4MWY4MTllZjhjZDA5NjVl
OGQ2ZmMzOTVhYzY5YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NUaHJlYWRlZFRlc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGhy
ZWFkZWRUZXN0LmgKQEAgLTEzNSw3ICsxMzUsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFs
IHZvaWQgcnVuVGVzdChib29sIHRocmVhZGVkKTsKIAotICAgIFdlYkNvcmU6OkNDU2V0dGluZ3Mg
bV9zZXR0aW5nczsKKyAgICBXZWJDb3JlOjpDQ0xheWVyVHJlZVNldHRpbmdzIG1fc2V0dGluZ3M7
CiAgICAgT3duUHRyPE1vY2tDQ0xheWVyVHJlZUhvc3RDbGllbnQ+IG1fY2xpZW50OwogICAgIE93
blB0cjxXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q+IG1fbGF5ZXJUcmVlSG9zdDsKIApAQCAtMTY1
LDcgKzE2NSw3IEBAIHB1YmxpYzoKIC8vIEFkYXB0cyBDQ0xheWVyVHJlZUhvc3RJbXBsIGZvciB0
ZXN0LiBSdW5zIHJlYWwgY29kZSwgdGhlbiBpbnZva2VzIHRlc3QgaG9va3MuCiBjbGFzcyBNb2Nr
TGF5ZXJUcmVlSG9zdEltcGwgOiBwdWJsaWMgV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbCB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8TW9ja0xheWVyVHJlZUhvc3RJbXBsPiBj
cmVhdGUoVGVzdEhvb2tzKiwgY29uc3QgV2ViQ29yZTo6Q0NTZXR0aW5ncyYsIFdlYkNvcmU6OkND
TGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxNb2NrTGF5
ZXJUcmVlSG9zdEltcGw+IGNyZWF0ZShUZXN0SG9va3MqLCBjb25zdCBXZWJDb3JlOjpDQ0xheWVy
VHJlZVNldHRpbmdzJiwgV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbENsaWVudCopOwogCiAg
ICAgdmlydHVhbCB2b2lkIGJlZ2luQ29tbWl0KCk7CiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdENv
bXBsZXRlKCk7CkBAIC0xODEsNyArMTgxLDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgZG91
YmxlIGxvd0ZyZXF1ZW5jeUFuaW1hdGlvbkludGVydmFsKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0g
ICAgTW9ja0xheWVyVHJlZUhvc3RJbXBsKFRlc3RIb29rcyosIGNvbnN0IFdlYkNvcmU6OkNDU2V0
dGluZ3MmLCBXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50Kik7CisgICAgTW9ja0xh
eWVyVHJlZUhvc3RJbXBsKFRlc3RIb29rcyosIGNvbnN0IFdlYkNvcmU6OkNDTGF5ZXJUcmVlU2V0
dGluZ3MmLCBXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50Kik7CiAKICAgICBUZXN0
SG9va3MqIG1fdGVzdEhvb2tzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvR3JhcGhpY3NMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IGI4MzgwNDk1
YWY5MDAyZTZjNjlmMDQ3Y2VkYWFmOTcyMmRmMmIzNjQuLjRmZGNmNGY0MWUxOTE3Y2Y3MWNjYzc0
YjEzOTczNTdjZjYzZmJmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvR3JhcGhpY3NMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9HcmFwaGljc0xheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtODMsOSArODMsNyBA
QCBjbGFzcyBNb2NrTGF5ZXJUcmVlSG9zdCA6IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3QgewogcHVi
bGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPE1vY2tMYXllclRyZWVIb3N0PiBjcmVhdGUoKQog
ICAgIHsKLSAgICAgICAgLy8gRm9yIHRoZXNlIHRlc3RzLCB3ZSB3aWxsIGVuYWJsZSB0aHJlYWRl
ZCBhbmltYXRpb25zLgotICAgICAgICBDQ1NldHRpbmdzIHNldHRpbmdzOwotICAgICAgICBzZXR0
aW5ncy50aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQgPSB0cnVlOworICAgICAgICBDQ0xheWVyVHJl
ZVNldHRpbmdzIHNldHRpbmdzOwogICAgICAgICBPd25QdHI8TW9ja0xheWVyVHJlZUhvc3Q+IGxh
eWVyVHJlZUhvc3QoYWRvcHRQdHIobmV3IE1vY2tMYXllclRyZWVIb3N0KG5ldyBNb2NrTGF5ZXJU
cmVlSG9zdENsaWVudCgpLCBzZXR0aW5ncykpKTsKICAgICAgICAgYm9vbCBzdWNjZXNzID0gbGF5
ZXJUcmVlSG9zdC0+aW5pdGlhbGl6ZSgpOwogICAgICAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsK
QEAgLTk2LDE0ICs5NCwxMSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q0NM
YXllclRyZWVIb3N0SW1wbD4gY3JlYXRlTGF5ZXJUcmVlSG9zdEltcGwoQ0NMYXllclRyZWVIb3N0
SW1wbENsaWVudCogY2xpZW50KQogICAgIHsKLSAgICAgICAgLy8gRm9yIHRoZXNlIHRlc3RzLCB3
ZSB3aWxsIGVuYWJsZSB0aHJlYWRlZCBhbmltYXRpb25zLgotICAgICAgICBDQ1NldHRpbmdzIGNv
cHlTZXR0aW5ncyA9IHNldHRpbmdzKCk7Ci0gICAgICAgIGNvcHlTZXR0aW5ncy50aHJlYWRlZEFu
aW1hdGlvbkVuYWJsZWQgPSB0cnVlOwotICAgICAgICByZXR1cm4gQ0NMYXllclRyZWVIb3N0SW1w
bDo6Y3JlYXRlKGNvcHlTZXR0aW5ncywgY2xpZW50KTsKKyAgICAgICAgcmV0dXJuIENDTGF5ZXJU
cmVlSG9zdEltcGw6OmNyZWF0ZShzZXR0aW5ncygpLCBjbGllbnQpOwogICAgIH0KIAogcHJpdmF0
ZToKLSAgICBNb2NrTGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwg
Y29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MpCisgICAgTW9ja0xheWVyVHJlZUhvc3QoQ0NMYXll
clRyZWVIb3N0Q2xpZW50KiBjbGllbnQsIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRp
bmdzKQogICAgICAgICA6IENDTGF5ZXJUcmVlSG9zdChjbGllbnQsIHNldHRpbmdzKQogICAgIHsK
ICAgICB9CkBAIC0xMTMsNiArMTA4LDggQEAgY2xhc3MgR3JhcGhpY3NMYXllckNocm9taXVtVGVz
dCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKIHB1YmxpYzoKICAgICBHcmFwaGljc0xheWVyQ2hy
b21pdW1UZXN0KCkKICAgICB7CisgICAgICAgIC8vIEZvciB0aGVzZSB0ZXN0cywgd2Ugd2lsbCBl
bmFibGUgdGhyZWFkZWQgYW5pbWF0aW9ucy4KKyAgICAgICAgV2ViQ29tcG9zaXRvcjo6c2V0QWNj
ZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkKHRydWUpOwogICAgICAgICBXZWJDb21wb3NpdG9yOjpp
bml0aWFsaXplKDApOwogICAgICAgICBtX2dyYXBoaWNzTGF5ZXIgPSBzdGF0aWNfcG9pbnRlcl9j
YXN0PEdyYXBoaWNzTGF5ZXJDaHJvbWl1bT4oR3JhcGhpY3NMYXllcjo6Y3JlYXRlKCZtX2NsaWVu
dCkpOwogICAgICAgICBtX3BsYXRmb3JtTGF5ZXIgPSBzdGF0aWNfY2FzdDxMYXllckNocm9taXVt
Kj4obV9ncmFwaGljc0xheWVyLT5wbGF0Zm9ybUxheWVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCA5NTQxNzRhYjc2
MzU3YTcxMzI0MDFhMWQwYTNjYzgzOGM4ZWQ5MWE5Li4xYmVmOTJiY2VmZjRlNjY1MTBkZjc4MTg3
MzhjYTJhZWRiODY5YmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0xheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0xheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtNTcsNyArNTcsNyBAQCBuYW1lc3BhY2UgewogY2xh
c3MgTW9ja0NDTGF5ZXJUcmVlSG9zdCA6IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3QgewogcHVibGlj
OgogICAgIE1vY2tDQ0xheWVyVHJlZUhvc3QoKQotICAgICAgICA6IENDTGF5ZXJUcmVlSG9zdCgm
bV9mYWtlQ2xpZW50LCBDQ1NldHRpbmdzKCkpCisgICAgICAgIDogQ0NMYXllclRyZWVIb3N0KCZt
X2Zha2VDbGllbnQsIENDTGF5ZXJUcmVlU2V0dGluZ3MoKSkKICAgICB7CiAgICAgICAgIGluaXRp
YWxpemUoKTsKICAgICB9CkBAIC02MTYsNyArNjE2LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIEZha2VDQ0xheWVyVHJlZUhvc3QoKQotICAgICAgICA6IENDTGF5ZXJUcmVlSG9zdCgmbV9j
bGllbnQsIENDU2V0dGluZ3MoKSkKKyAgICAgICAgOiBDQ0xheWVyVHJlZUhvc3QoJm1fY2xpZW50
LCBDQ0xheWVyVHJlZVNldHRpbmdzKCkpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5j
cHAKaW5kZXggNzZkNTk2ODMyYTAxNzk1ZmQxMzY5NWZkZWMwODI3ZGJhMTRiNjM5My4uOTI2OTIx
N2MzYjA0YTVlOGU4NjFhOWUzNjMxMzM5ZDFjYTdjODIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3Bw
CkBAIC0yNSwxMCArMjUsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJMYXll
clJlbmRlcmVyQ2hyb21pdW0uaCIKIAorI2luY2x1ZGUgIkNDVGVzdENvbW1vbi5oIgogI2luY2x1
ZGUgIkZha2VXZWJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dDNELmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCiAjaW5jbHVkZSAi
V2ViQ29tcG9zaXRvci5oIgorI2luY2x1ZGUgImNjL0NDU2V0dGluZ3MuaCIKICNpbmNsdWRlICJj
Yy9DQ1NpbmdsZVRocmVhZFByb3h5LmgiCiAKICNpbmNsdWRlIDxnbW9jay9nbW9jay5oPgpAQCAt
MzYsNiArMzgsNyBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0VGVzdHM7CiAKIGNsYXNzIEZyYW1lQ291
bnRpbmdNZW1vcnlBbGxvY2F0aW9uU2V0dGluZ0NvbnRleHQgOiBwdWJsaWMgRmFrZVdlYkdyYXBo
aWNzQ29udGV4dDNEIHsKIHB1YmxpYzoKQEAgLTgxLDcgKzg0LDcgQEAgcHVibGljOgogCiAgICAg
Ly8gQ0NSZW5kZXJlckNsaWVudCBtZXRob2RzLgogICAgIHZpcnR1YWwgY29uc3QgSW50U2l6ZSYg
ZGV2aWNlVmlld3BvcnRTaXplKCkgY29uc3QgT1ZFUlJJREUgeyBzdGF0aWMgSW50U2l6ZSBmYWtl
U2l6ZTsgcmV0dXJuIGZha2VTaXplOyB9Ci0gICAgdmlydHVhbCBjb25zdCBDQ1NldHRpbmdzJiBz
ZXR0aW5ncygpIGNvbnN0IE9WRVJSSURFIHsgc3RhdGljIENDU2V0dGluZ3MgZmFrZVNldHRpbmdz
OyByZXR1cm4gZmFrZVNldHRpbmdzOyB9CisgICAgdmlydHVhbCBjb25zdCBDQ0xheWVyVHJlZVNl
dHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IE9WRVJSSURFIHsgc3RhdGljIENDTGF5ZXJUcmVlU2V0
dGluZ3MgZmFrZVNldHRpbmdzOyByZXR1cm4gZmFrZVNldHRpbmdzOyB9CiAgICAgdmlydHVhbCB2
b2lkIGRpZExvc2VDb250ZXh0KCkgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIG9uU3dh
cEJ1ZmZlcnNDb21wbGV0ZSgpIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRGdWxs
Um9vdExheWVyRGFtYWdlKCkgT1ZFUlJJREUgeyBtX3NldEZ1bGxSb290TGF5ZXJEYW1hZ2VDb3Vu
dCsrOyB9CkBAIC0xNDcsNiArMTUwLDcgQEAgcHJvdGVjdGVkOgogICAgIEZyYW1lQ291bnRpbmdN
ZW1vcnlBbGxvY2F0aW9uU2V0dGluZ0NvbnRleHQmIG1fbW9ja0NvbnRleHQ7CiAgICAgRmFrZUND
UmVuZGVyZXJDbGllbnQgbV9tb2NrQ2xpZW50OwogICAgIEZha2VMYXllclJlbmRlcmVyQ2hyb21p
dW0gbV9sYXllclJlbmRlcmVyQ2hyb21pdW07CisgICAgQ0NTY29wZWRTZXR0aW5ncyBtX3Njb3Bl
ZFNldHRpbmdzOwogfTsKIAogLy8gVGVzdCBMYXllclJlbmRlcmVyQ2hyb21pdW0gZGlzY2FyZEZy
YW1lYnVmZmVyIGZ1bmN0aW9uYWxpdHk6CkBAIC0xOTgsNyArMjAyLDcgQEAgVEVTVF9GKExheWVy
UmVuZGVyZXJDaHJvbWl1bVRlc3QsIFN3YXBCdWZmZXJzV2hpbGVCYWNrYnVmZmVyRGlzY2FyZGVk
U2hvdWxkSWdub3IKICAgICBzd2FwQnVmZmVycygpOwogICAgIEVYUEVDVF9FUSgwLCBtX21vY2tD
b250ZXh0LmZyYW1lQ291bnQoKSk7CiAgICAgRVhQRUNUX0VRKDIsIG1fbW9ja0NsaWVudC5zZXRG
dWxsUm9vdExheWVyRGFtYWdlQ291bnQoKSk7Ci0gICAgCisKICAgICBzd2FwQnVmZmVycygpOwog
ICAgIEVYUEVDVF9FUSgwLCBtX21vY2tDb250ZXh0LmZyYW1lQ291bnQoKSk7CiAgICAgRVhQRUNU
X0VRKDMsIG1fbW9ja0NsaWVudC5zZXRGdWxsUm9vdExheWVyRGFtYWdlQ291bnQoKSk7CkBAIC0y
ODksNiArMjkzLDcgQEAgcHVibGljOgogLy8gVGhpcyB0ZXN0IGlzbid0IHVzaW5nIHRoZSBzYW1l
IGZpeHR1cmUgYXMgTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdCwgYW5kIHlvdSBjYW4ndCBtaXgg
VEVTVCgpIGFuZCBURVNUX0YoKSB3aXRoIHRoZSBzYW1lIG5hbWUsIGhlbmNlIExSQzIuCiBURVNU
KExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QyLCBpbml0aWFsaXphdGlvbkRvZXNOb3RNYWtlU3lu
Y2hyb25vdXNDYWxscykKIHsKKyAgICBDQ1Njb3BlZFNldHRpbmdzIHNjb3BlZFNldHRpbmdzOwog
ICAgIEZha2VDQ1JlbmRlcmVyQ2xpZW50IG1vY2tDbGllbnQ7CiAgICAgRmFrZUxheWVyUmVuZGVy
ZXJDaHJvbWl1bSBsYXllclJlbmRlcmVyQ2hyb21pdW0oJm1vY2tDbGllbnQsIEdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQ
dHIobmV3IEZvcmJpZFN5bmNocm9ub3VzQ2FsbENvbnRleHQpLCBHcmFwaGljc0NvbnRleHQzRDo6
UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpKTsKIApAQCAtMzMwLDYgKzMzNSw3IEBAIHByaXZh
dGU6CiAKIFRFU1QoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdDIsIGluaXRpYWxpemF0aW9uV2l0
aFF1aWNrbHlMb3N0Q29udGV4dERvZXNOb3RBc3NlcnQpCiB7CisgICAgQ0NTY29wZWRTZXR0aW5n
cyBzY29wZWRTZXR0aW5nczsKICAgICBGYWtlQ0NSZW5kZXJlckNsaWVudCBtb2NrQ2xpZW50Owog
ICAgIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0gbGF5ZXJSZW5kZXJlckNocm9taXVtKCZtb2Nr
Q2xpZW50LCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZy
b21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBMb3NlQ29udGV4dE9uRmlyc3RHZXRDb250ZXh0KSwg
R3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGV4dHVyZUxheWVyQ2hyb21pdW1U
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGV4dHVyZUxheWVyQ2hyb21p
dW1UZXN0LmNwcAppbmRleCBiNjAwMTdmZDlhYTA4MGI0ZmQ3ZjY5ZjlhMGZlZTBjMjY4YjQ0OWVh
Li5kMGNjM2Q5NmYxNGViY2ZlOGQzYzk4YjNkZjYyN2MwZDYzYTQ4Y2VkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RleHR1cmVMYXllckNocm9taXVtVGVzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UZXh0dXJlTGF5ZXJDaHJvbWl1bVRl
c3QuY3BwCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSB7CiBjbGFzcyBNb2NrQ0NMYXllclRy
ZWVIb3N0IDogcHVibGljIENDTGF5ZXJUcmVlSG9zdCB7CiBwdWJsaWM6CiAgICAgTW9ja0NDTGF5
ZXJUcmVlSG9zdCgpCi0gICAgICAgIDogQ0NMYXllclRyZWVIb3N0KCZtX2Zha2VDbGllbnQsIEND
U2V0dGluZ3MoKSkKKyAgICAgICAgOiBDQ0xheWVyVHJlZUhvc3QoJm1fZmFrZUNsaWVudCwgQ0NM
YXllclRyZWVTZXR0aW5ncygpKQogICAgIHsKICAgICAgICAgaW5pdGlhbGl6ZSgpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9t
aXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QuY3BwCmluZGV4IGYwYzEzMTNmOTBlZTc1MmQ0YzIyMTc4YWQzOTQ0NzhiMjU3NjE2
MjAuLjVlMzAxZDhlYjQxOTQwNzk3M2QwNDJlM2Q5MzdiZmVmZjU4MDI1OWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0
LmNwcApAQCAtNzk3LDcgKzc5Nyw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgc2tp
cHNEcmF3R2V0c1Jlc2V0KQogICAgIC8vIEluaXRpYWxpemUgd2l0aG91dCB0aHJlYWRpbmcgc3Vw
cG9ydC4KICAgICBXZWJLaXQ6OldlYkNvbXBvc2l0b3I6OmluaXRpYWxpemUoMCk7CiAgICAgRmFr
ZUNDTGF5ZXJUcmVlSG9zdENsaWVudCBmYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50OwotICAgIE93
blB0cjxDQ0xheWVyVHJlZUhvc3Q+IGNjTGF5ZXJUcmVlSG9zdCA9IENDTGF5ZXJUcmVlSG9zdDo6
Y3JlYXRlKCZmYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50LCBDQ1NldHRpbmdzKCkpOworICAgIE93
blB0cjxDQ0xheWVyVHJlZUhvc3Q+IGNjTGF5ZXJUcmVlSG9zdCA9IENDTGF5ZXJUcmVlSG9zdDo6
Y3JlYXRlKCZmYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50LCBDQ0xheWVyVHJlZVNldHRpbmdzKCkp
OwogCiAgICAgLy8gQ3JlYXRlIHR3byAzMDAgeCAzMDAgdGlsZWQgbGF5ZXJzLgogICAgIEludFNp
emUgY29udGVudEJvdW5kcygzMDAsIDMwMCk7CkBAIC04NzMsMTAgKzg3MywxMiBAQCBURVNUKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGh1Z2VMYXllclVwZGF0ZUNyYXNoKQogCiBURVNUKFRpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QsIHBhcnRpYWxVcGRhdGVzKQogewotICAgIENDU2V0dGluZ3Mgc2V0
dGluZ3M7Ci0gICAgc2V0dGluZ3MubWF4UGFydGlhbFRleHR1cmVVcGRhdGVzID0gNDsKICAgICAv
LyBJbml0aWFsaXplIHdpdGhvdXQgdGhyZWFkaW5nIHN1cHBvcnQuCiAgICAgV2ViS2l0OjpXZWJD
b21wb3NpdG9yOjppbml0aWFsaXplKDApOworCisgICAgQ0NMYXllclRyZWVTZXR0aW5ncyBzZXR0
aW5nczsKKyAgICBzZXR0aW5ncy5tYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMgPSA0OworCiAgICAg
RmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudCBmYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50OwogICAg
IE93blB0cjxDQ0xheWVyVHJlZUhvc3Q+IGNjTGF5ZXJUcmVlSG9zdCA9IENDTGF5ZXJUcmVlSG9z
dDo6Y3JlYXRlKCZmYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50LCBzZXR0aW5ncyk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVHJlZVN5bmNocm9uaXplclRlc3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UcmVlU3luY2hyb25pemVyVGVzdC5j
cHAKaW5kZXggZWRkZWQ1YWQyZWJkNjc2M2RjZTFjODRkMTQ0NGI4M2I3ZjgwYTgwNi4uMDg1OTdm
MWRjNjJkMzAzYTMxZjUwNWViMTZhNjE2MDA1OWVlYjhiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9UcmVlU3luY2hyb25pemVyVGVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UcmVlU3luY2hyb25pemVyVGVzdC5jcHAKQEAgLTE2Myw3
ICsxNjMsNyBAQCBURVNUKFRyZWVTeW5jaHJvbml6ZXJUZXN0LCBzeW5jU2ltcGxlVHJlZUZyb21F
bXB0eSkKIHsKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKIAotICAgIENDU2V0
dGluZ3Mgc2V0dGluZ3M7CisgICAgQ0NMYXllclRyZWVTZXR0aW5ncyBzZXR0aW5nczsKICAgICBP
d25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gaG9zdEltcGwgPSBDQ0xheWVyVHJlZUhvc3RJbXBs
OjpjcmVhdGUoc2V0dGluZ3MsIDApOwogCiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGxheWVy
VHJlZVJvb3QgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKQEAgLTE4MSw3ICsxODEsNyBAQCBU
RVNUKFRyZWVTeW5jaHJvbml6ZXJUZXN0LCBzeW5jU2ltcGxlVHJlZVJldXNpbmdMYXllcnMpCiAg
ICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7CiAgICAgVmVjdG9yPGludD4gY2NMYXll
ckRlc3RydWN0aW9uTGlzdDsKIAotICAgIENDU2V0dGluZ3Mgc2V0dGluZ3M7CisgICAgQ0NMYXll
clRyZWVTZXR0aW5ncyBzZXR0aW5nczsKICAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4g
aG9zdEltcGwgPSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoc2V0dGluZ3MsIDApOwogCiAg
ICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGxheWVyVHJlZVJvb3QgPSBNb2NrTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlKCZjY0xheWVyRGVzdHJ1Y3Rpb25MaXN0KTsKQEAgLTIxMSw3ICsyMTEsNyBAQCBU
RVNUKFRyZWVTeW5jaHJvbml6ZXJUZXN0LCBzeW5jU2ltcGxlVHJlZUFuZFRyYWNrU3RhY2tpbmdP
cmRlckNoYW5nZSkKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKICAgICBWZWN0
b3I8aW50PiBjY0xheWVyRGVzdHJ1Y3Rpb25MaXN0OwogCi0gICAgQ0NTZXR0aW5ncyBzZXR0aW5n
czsKKyAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOwogICAgIE93blB0cjxDQ0xheWVy
VHJlZUhvc3RJbXBsPiBob3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShzZXR0
aW5ncywgMCk7CiAKICAgICAvLyBTZXQgdXAgdGhlIHRyZWUgYW5kIHN5bmMgb25jZS4gY2hpbGQy
IG5lZWRzIHRvIGJlIHN5bmNlZCBoZXJlLCB0b28sIGV2ZW4gdGhvdWdoIHdlCkBAIC0yNDAsNyAr
MjQwLDcgQEAgVEVTVChUcmVlU3luY2hyb25pemVyVGVzdCwgc3luY1NpbXBsZVRyZWVBbmRQcm9w
ZXJ0aWVzKQogewogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwogCi0gICAgQ0NT
ZXR0aW5ncyBzZXR0aW5nczsKKyAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOwogICAg
IE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBob3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdElt
cGw6OmNyZWF0ZShzZXR0aW5ncywgMCk7CiAKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbGF5
ZXJUcmVlUm9vdCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwpAQCAtMjc3LDcgKzI3Nyw3IEBA
IFRFU1QoVHJlZVN5bmNocm9uaXplclRlc3QsIHJldXNlQ0NMYXllcnNBZnRlclN0cnVjdHVyYWxD
aGFuZ2UpCiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7CiAgICAgVmVjdG9yPGlu
dD4gY2NMYXllckRlc3RydWN0aW9uTGlzdDsKIAotICAgIENDU2V0dGluZ3Mgc2V0dGluZ3M7Cisg
ICAgQ0NMYXllclRyZWVTZXR0aW5ncyBzZXR0aW5nczsKICAgICBPd25QdHI8Q0NMYXllclRyZWVI
b3N0SW1wbD4gaG9zdEltcGwgPSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoc2V0dGluZ3Ms
IDApOwogCiAgICAgLy8gU2V0IHVwIGEgdHJlZSB3aXRoIHRoaXMgc29ydCBvZiBzdHJ1Y3R1cmU6
CkBAIC0zMjcsNyArMzI3LDcgQEAgVEVTVChUcmVlU3luY2hyb25pemVyVGVzdCwgc3luY1NpbXBs
ZVRyZWVUaGVuRGVzdHJveSkKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKICAg
ICBWZWN0b3I8aW50PiBjY0xheWVyRGVzdHJ1Y3Rpb25MaXN0OwogCi0gICAgQ0NTZXR0aW5ncyBz
ZXR0aW5nczsKKyAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOwogICAgIE93blB0cjxD
Q0xheWVyVHJlZUhvc3RJbXBsPiBob3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0
ZShzZXR0aW5ncywgMCk7CiAKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gb2xkTGF5ZXJUcmVl
Um9vdCA9IE1vY2tMYXllckNocm9taXVtOjpjcmVhdGUoJmNjTGF5ZXJEZXN0cnVjdGlvbkxpc3Qp
OwpAQCAtMzYwLDcgKzM2MCw3IEBAIFRFU1QoVHJlZVN5bmNocm9uaXplclRlc3QsIHN5bmNNYXNr
UmVwbGljYUFuZFJlcGxpY2FNYXNrTGF5ZXJzKQogewogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRo
cmVhZCBpbXBsOwogCi0gICAgQ0NTZXR0aW5ncyBzZXR0aW5nczsKKyAgICBDQ0xheWVyVHJlZVNl
dHRpbmdzIHNldHRpbmdzOwogICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBob3N0SW1w
bCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShzZXR0aW5ncywgMCk7CiAKICAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gbGF5ZXJUcmVlUm9vdCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgp
OwpAQCAtNDA2LDcgKzQwNiw3IEBAIFRFU1QoVHJlZVN5bmNocm9uaXplclRlc3QsIHN5bmNocm9u
aXplQW5pbWF0aW9ucykKIHsKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKIAot
ICAgIENDU2V0dGluZ3Mgc2V0dGluZ3M7CisgICAgQ0NMYXllclRyZWVTZXR0aW5ncyBzZXR0aW5n
czsKICAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gaG9zdEltcGwgPSBDQ0xheWVyVHJl
ZUhvc3RJbXBsOjpjcmVhdGUoc2V0dGluZ3MsIDApOwogCiAgICAgUmVmUHRyPExheWVyQ2hyb21p
dW0+IGxheWVyVHJlZVJvb3QgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147355</attachid>
            <date>2012-06-13 10:27:54 -0700</date>
            <delta_ts>2012-06-14 07:39:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88384-20120613132753.patch</filename>
            <type>text/plain</type>
            <size>76875</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA2MTgzN2E5OGRkNTBk
ZTA2NGYzMzM3MmI4NzliNzdhYTQ4NDAyNWEwLi45MGM1NzA4YzdjZjA5MzhhM2MzM2U0NDFkYWRj
N2UwODM5MmY0ZWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNi0xMyAg
SWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IENlcnRhaW4gc2V0dGluZ3MgaW4gQ0NTZXR0aW5ncyBjb3VsZCBiZSBnbG9iYWwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4Mzg0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCisKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMv
V2ViTGF5ZXJUcmVlVmlldy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgIChTZXR0aW5n
cyk6CisKIDIwMTItMDYtMTEgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBbY2hyb21pdW1dIFBvcnQgRHJhd2luZ0J1ZmZlckNocm9taXVtIGZyb20gVGV4
dHVyZUxheWVyQ2hyb21pdW0gb3ZlciB0byBXZWJFeHRlcm5hbFRleHR1cmVMYXllcgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDFmZjE1MTY5MGNlNjhkN2VlN2I3NjdhMDU3ZWRlYTNhMzBiNjM0ZTQuLmFmYmExYjFm
OTkzYzFjNjMzNjZjYmEyMjNiNGY0OTQxYzQ1NWI2NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3
NiBAQAorMjAxMi0wNi0xMyAgSWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBbY2hyb21pdW1dIENlcnRhaW4gc2V0dGluZ3MgaW4gQ0NTZXR0aW5ncyBjb3VsZCBi
ZSBnbG9iYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg4Mzg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzLiBObyBuZXcgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIFdlYkNvcmUu
Z3lwaToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNl
dHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5oOgorICAgICAgICAo
U2V0dGluZ3MpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRM
YXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVt
OjpjcmVhdGVUZXh0dXJlVXBkYXRlcklmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
Q2hyb21pdW06OmFkZEFuaW1hdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
UmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRp
bGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlVGlsZVNpemVBbmRUaWxpbmdPcHRpb24pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdSZWN0SGlzdG9yeS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDQ0RlYnVnUmVjdEhpc3Rvcnk6OmVuYWJsZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NEZWJ1Z1JlY3RIaXN0b3J5OjpzYXZlRGVidWdSZWN0c0ZvckN1cnJlbnRG
cmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z1Jl
Y3RIaXN0b3J5Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDRGVidWdSZWN0SGlz
dG9yeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1Vw
RGlzcGxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5OjplbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDSGVhZHNVcERpc3BsYXk6OnNob3dQbGF0Zm9ybUxheWVy
VHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5OjpzaG93RGVidWdSZWN0
cyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3KToKKyAgICAgICAg
KFdlYkNvcmU6OkNDSGVhZHNVcERpc3BsYXk6OmRyYXdIdWRDb250ZW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3RGVidWdSZWN0cyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5oOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChDQ0hlYWRzVXBEaXNwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllclRyZWVIb3N0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0OjpDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRy
ZWVIb3N0OjphbmltYXRlTGF5ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVl
U2V0dGluZ3M6OkNDTGF5ZXJUcmVlU2V0dGluZ3MpOgorICAgICAgICAoQ0NMYXllclRyZWVTZXR0
aW5ncyk6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NM
YXllclRyZWVIb3N0OjpzZXR0aW5ncyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVI
b3N0SW1wbDo6Q0NMYXllclRyZWVIb3N0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVMYXllcnMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaDoKKyAg
ICAgICAgKENDTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUmVuZGVyZXIuaDoKKyAgICAgICAgKENDUmVuZGVyZXJDbGllbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJlcjo6c2V0dGluZ3MpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2V0dGluZ3MuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTZXR0aW5nczo6cGVyVGlsZVBhaW50aW5n
RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NldHRpbmdzOjpzZXRQZXJUaWxlUGFpbnRp
bmdFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2V0dGluZ3M6OnBhcnRpYWxTd2FwRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NldHRpbmdzOjpzZXRQYXJ0aWFsU3dhcEVuYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTZXR0aW5nczo6YWNjZWxlcmF0ZWRBbmltYXRpb25F
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2V0dGluZ3M6OnNldEFjY2VsZXJhdGVkQW5p
bWF0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NldHRpbmdzOjpyZXNldCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTZXR0aW5ncy5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NTZXR0aW5ncyk6CisgICAgICAgICog
dGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFs
U2V0dGluZ3MuaDoKKyAgICAgICAgKEludGVybmFsU2V0dGluZ3MpOgorCiAyMDEyLTA2LTEyICBB
bGV4aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIEZp
eCBwYWNraW5nIGluIFN0eWxlQm94RGF0YSBmb3IgV2luZG93cy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKaW5kZXggMTk5MjE3NGQ4YWNjZGQ2OGVhOGFjNmIxMjRkNjE1YzA5YTE2NjQ5Zi4uOWIz
ODMxNTY0YTU3M2M4YWRjNjVhNGM5MDcwYjFmMTRjYWExYWZhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw2NiBAQAorMjAxMi0wNi0xMyAgSWFuIFZvbGxpY2sgIDx2b2xs
aWNrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIENlcnRhaW4gc2V0dGluZ3Mg
aW4gQ0NTZXR0aW5ncyBjb3VsZCBiZSBnbG9iYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTg4Mzg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMg
Um9iaW5zb24uCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiBwdWJsaWMvV2Vi
Q29tcG9zaXRvci5oOgorICAgICAgICAoV2ViQ29tcG9zaXRvcik6CisgICAgICAgICogcHVibGlj
L1dlYlNldHRpbmdzLmg6CisgICAgICAgICogc3JjL1dlYkNvbXBvc2l0b3JJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvcjo6c2h1dGRvd24pOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvcjo6c2V0UGVyVGlsZVBhaW50aW5nRW5h
YmxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3I6OnNldFBhcnRpYWxTd2FwRW5h
YmxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3I6OnNldEFjY2VsZXJhdGVkQW5p
bWF0aW9uRW5hYmxlZCk6CisgICAgICAgICogc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwOgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6U2V0dGlu
Z3M6Om9wZXJhdG9yIENDTGF5ZXJUcmVlU2V0dGluZ3MpOgorICAgICAgICAqIHNyYy9XZWJTZXR0
aW5nc0ltcGwuY3BwOgorICAgICAgICAqIHNyYy9XZWJTZXR0aW5nc0ltcGwuaDoKKyAgICAgICAg
KFdlYlNldHRpbmdzSW1wbCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKToKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSk6CisgICAgICAg
ICogdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL0ND
TGF5ZXJUcmVlSG9zdFRlc3QuY3BwOgorICAgICAgICAoV1RGKToKKyAgICAgICAgKENDTGF5ZXJU
cmVlSG9zdFRlc3RTaG9ydGxpdmVkMSk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRl
c3RTaG9ydGxpdmVkMTo6Q0NMYXllclRyZWVIb3N0VGVzdFNob3J0bGl2ZWQxKToKKyAgICAgICAg
KFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdFNob3J0bGl2ZWQxOjpiZWdpblRlc3QpOgorICAgICAg
ICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0U2hvcnRsaXZlZDE6OmFmdGVyVGVzdCk6CisgICAg
ICAgICogdGVzdHMvQ0NUZXN0Q29tbW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0VGVzdHMp
OgorICAgICAgICAoQ0NTY29wZWRTZXR0aW5ncyk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NT
Y29wZWRTZXR0aW5nczo6Q0NTY29wZWRTZXR0aW5ncyk6CisgICAgICAgIChXZWJLaXRUZXN0czo6
Q0NTY29wZWRTZXR0aW5nczo6fkNDU2NvcGVkU2V0dGluZ3MpOgorICAgICAgICAqIHRlc3RzL0ND
VGhyZWFkZWRUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdFRlc3RzOjpNb2NrTGF5ZXJUcmVlSG9z
dEltcGw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXRUZXN0czo6TW9ja0xheWVyVHJlZUhvc3RJ
bXBsOjpNb2NrTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAgICAoV2ViS2l0VGVzdHM6Ok1vY2tM
YXllclRyZWVIb3N0OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0VGVzdHM6Ok1vY2tMYXllclRy
ZWVIb3N0OjpjcmVhdGVMYXllclRyZWVIb3N0SW1wbCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6
TW9ja0xheWVyVHJlZUhvc3Q6Ok1vY2tMYXllclRyZWVIb3N0KToKKyAgICAgICAgKFdlYktpdFRl
c3RzOjpDQ1RocmVhZGVkVGVzdDo6cnVuVGVzdCk6CisgICAgICAgICogdGVzdHMvQ0NUaHJlYWRl
ZFRlc3QuaDoKKyAgICAgICAgKENDVGhyZWFkZWRUZXN0KToKKyAgICAgICAgKE1vY2tMYXllclRy
ZWVIb3N0SW1wbCk6CisgICAgICAgICogdGVzdHMvR3JhcGhpY3NMYXllckNocm9taXVtVGVzdC5j
cHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6TW9ja0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXRUZXN0czo6TW9ja0xheWVyVHJlZUhvc3Q6OmNyZWF0ZUxheWVyVHJlZUhv
c3RJbXBsKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpNb2NrTGF5ZXJUcmVlSG9zdDo6TW9ja0xh
eWVyVHJlZUhvc3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1
bVRlc3Q6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QpOgorICAgICAgICAqIHRlc3RzL0xheWVy
Q2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1U
ZXN0LmNwcDoKKyAgICAgICAgKExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QpOgorICAgICAgICAo
VEVTVF9GKToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIHRlc3RzL1RleHR1cmVMYXllckNo
cm9taXVtVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5j
cHA6CisgICAgICAgICogdGVzdHMvVHJlZVN5bmNocm9uaXplclRlc3QuY3BwOgorICAgICAgICAo
V2ViS2l0VGVzdHM6OlRFU1QpOgorCiAyMDEyLTA2LTEyICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5l
QGdvb2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBQYWludCBzY3JvbGxiYXJzIG9uIFdl
YktpdCB0aHJlYWQgYW5kIGNvbXBvc2l0ZSB0aG9zZSB0ZXh0dXJlcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmggYi9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaAppbmRleCA0NjdmNjVj
ZDU1ZDdhOWViODMxMTdjNDBmOWNiODIwY2EzOTgwMjc1Li43MmI1YWI5YzJkNDQwMzI5NTE2MmU3
YzczODVhYmU5MjViMGM5YTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYkxheWVyVHJlZVZpZXcuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYkxheWVyVHJlZVZpZXcuaApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3Q7Ci1zdHJ1Y3QgQ0NTZXR0aW5nczsKK3N0
cnVjdCBDQ0xheWVyVHJlZVNldHRpbmdzOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU1
LDkgKzU1LDYgQEAgcHVibGljOgogICAgICAgICAgICAgLCBzaG93UGxhdGZvcm1MYXllclRyZWUo
ZmFsc2UpCiAgICAgICAgICAgICAsIHNob3dQYWludFJlY3RzKGZhbHNlKQogICAgICAgICAgICAg
LCByZWZyZXNoUmF0ZSgwKQotICAgICAgICAgICAgLCBwZXJUaWxlUGFpbnRpbmcoZmFsc2UpCi0g
ICAgICAgICAgICAsIHBhcnRpYWxTd2FwRW5hYmxlZChmYWxzZSkKLSAgICAgICAgICAgICwgdGhy
ZWFkZWRBbmltYXRpb25FbmFibGVkKGZhbHNlKQogICAgICAgICAgICAgLCBkZWZhdWx0VGlsZVNp
emUoV2ViU2l6ZSgyNTYsIDI1NikpCiAgICAgICAgICAgICAsIG1heFVudGlsZWRMYXllclNpemUo
V2ViU2l6ZSg1MTIsIDUxMikpCiAgICAgICAgICAgICAsIGRldmljZVNjYWxlRmFjdG9yKDEpCkBA
IC03MCwxNCArNjcsMTEgQEAgcHVibGljOgogICAgICAgICBib29sIHNob3dQbGF0Zm9ybUxheWVy
VHJlZTsKICAgICAgICAgYm9vbCBzaG93UGFpbnRSZWN0czsKICAgICAgICAgZG91YmxlIHJlZnJl
c2hSYXRlOwotICAgICAgICBib29sIHBlclRpbGVQYWludGluZzsKLSAgICAgICAgYm9vbCBwYXJ0
aWFsU3dhcEVuYWJsZWQ7Ci0gICAgICAgIGJvb2wgdGhyZWFkZWRBbmltYXRpb25FbmFibGVkOwog
ICAgICAgICBXZWJTaXplIGRlZmF1bHRUaWxlU2l6ZTsKICAgICAgICAgV2ViU2l6ZSBtYXhVbnRp
bGVkTGF5ZXJTaXplOwogICAgICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcjsKICNpZiBXRUJL
SVRfSU1QTEVNRU5UQVRJT04KLSAgICAgICAgb3BlcmF0b3IgV2ViQ29yZTo6Q0NTZXR0aW5ncygp
IGNvbnN0OworICAgICAgICBvcGVyYXRvciBXZWJDb3JlOjpDQ0xheWVyVHJlZVNldHRpbmdzKCkg
Y29uc3Q7CiAjZW5kaWYKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggN2EyMWNiNWIyNWUz
Y2UyMjJiMGQ3NGRhYzcyMmFjZjA1ZmU2MGIyZC4uODE4ZGRkMDdiYjA3ZTJhYzM3Y2EzYzZmNWE1
NGFhODY0ZGFlZTYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzc0OCw2ICszNzQ4LDggQEAKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njb3BlZFRocmVhZFBy
b3h5LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Ny
b2xsYmFyTGF5ZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTZXR0aW5ncy5jcHAnLAorICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2V0dGluZ3MuaCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NoYXJlZFF1YWRTdGF0ZS5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRo
cmVhZFByb3h5LmNwcCcsCkBAIC02NjQ3LDcgKzY2NDksNyBAQAogICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9mcm9udC1lbmQvSW1hZ2VzL3NlYXJjaFNtYWxsR3JheS5wbmcnLAogICAgICAgICAgICAg
J2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL3NlYXJjaFNtYWxsV2hpdGUucG5nJywKICAgICAg
ICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9zZWFyY2hOZXh0LnBuZycsCi0gICAg
ICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9JbWFnZXMvc2VhcmNoUHJldi5wbmcnLAorICAg
ICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL3NlYXJjaFByZXYucG5nJywgICAg
ICAgICAgICAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9zZWdtZW50
LnBuZycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9JbWFnZXMvc2VnbWVudEVu
ZC5wbmcnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL3NlZ21lbnRI
b3Zlci5wbmcnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAppbmRleCBmNWRiMjBkMmZhYTM5ZDVk
NzRhZDZjMmI5YmQwMThjZjQ4OWE1YTI1Li5iMWQxOTEzYWUwZGU5OTUyYTA4ZmFlMTkzYzcxNDE4
ZDNkMzYxYjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcApAQCAtMjU3LDE1ICsyNTcsMTIg
QEAgU2V0dGluZ3M6OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCiAgICAgLCBtX3Nob3VsZERpc3BsYXlD
YXB0aW9ucyhmYWxzZSkKICAgICAsIG1fc2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMoZmFs
c2UpCiAjZW5kaWYKLSAgICAsIG1fcGVyVGlsZURyYXdpbmdFbmFibGVkKGZhbHNlKQotICAgICwg
bV9wYXJ0aWFsU3dhcEVuYWJsZWQoZmFsc2UpCiAgICAgLCBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9y
RW5hYmxlZChmYWxzZSkKICAgICAsIG1fbm90aWZpY2F0aW9uc0VuYWJsZWQodHJ1ZSkKICAgICAs
IG1fbmVlZHNJc0xvYWRpbmdJbkFQSVNlbnNlUXVpcmsoZmFsc2UpCiAjaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKICAgICAsIG1fdG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQoZmFsc2UpCiAjZW5k
aWYKLSAgICAsIG1fdGhyZWFkZWRBbmltYXRpb25FbmFibGVkKGZhbHNlKQogICAgICwgbV9zaG91
bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbihmYWxzZSkKICAgICAsIG1fd2FudHNCYWxhbmNlZFNl
dERlZmVyc0xvYWRpbmdCZWhhdmlvcihmYWxzZSkKICAgICAsIG1fcmVxdWVzdEFuaW1hdGlvbkZy
YW1lRW5hYmxlZCh0cnVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5n
cy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCmluZGV4IGQzMGY0YzA0ODJlODYw
MGYwZmQxNjIzYzVlYTM1Yzc2MzQ3NTE2NGMuLjc5YWYzYTRjOTg5MmU0OTM3Yzg1NWZiOTNkMzc5
NmIwNjFkYWNiNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKQEAgLTUzNiwxMiArNTM2LDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIHNob3VsZERpc3BsYXlUZXh0RGVzY3Jp
cHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9uczsg
fQogI2VuZGlmCiAKLSAgICAgICAgdm9pZCBzZXRQZXJUaWxlRHJhd2luZ0VuYWJsZWQoYm9vbCBl
bmFibGVkKSB7IG1fcGVyVGlsZURyYXdpbmdFbmFibGVkID0gZW5hYmxlZDsgfQotICAgICAgICBi
b29sIHBlclRpbGVEcmF3aW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGVyVGlsZURyYXdp
bmdFbmFibGVkOyB9Ci0KLSAgICAgICAgdm9pZCBzZXRQYXJ0aWFsU3dhcEVuYWJsZWQoYm9vbCBl
bmFibGVkKSB7IG1fcGFydGlhbFN3YXBFbmFibGVkID0gZW5hYmxlZDsgfQotICAgICAgICBib29s
IHBhcnRpYWxTd2FwRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFydGlhbFN3YXBFbmFibGVk
OyB9Ci0KICAgICAgICAgdm9pZCBzZXRTY3JvbGxpbmdDb29yZGluYXRvckVuYWJsZWQoYm9vbCBl
bmFibGVkKSB7IG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3JFbmFibGVkID0gZW5hYmxlZDsgfQogICAg
ICAgICBib29sIHNjcm9sbGluZ0Nvb3JkaW5hdG9yRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2Nyb2xsaW5nQ29vcmRpbmF0b3JFbmFibGVkOyB9CiAKQEAgLTU1Nyw5ICs1NTEsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgaXNUb3VjaEV2ZW50RW11bGF0aW9uRW5hYmxl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fdG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQ7IH0KICNlbmRp
ZgogCi0gICAgICAgIHZvaWQgc2V0VGhyZWFkZWRBbmltYXRpb25FbmFibGVkKGJvb2wgZW5hYmxl
ZCkgeyBtX3RocmVhZGVkQW5pbWF0aW9uRW5hYmxlZCA9IGVuYWJsZWQ7IH0KLSAgICAgICAgYm9v
bCB0aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3RocmVhZGVkQW5p
bWF0aW9uRW5hYmxlZDsgfQotCiAgICAgICAgIHZvaWQgc2V0U2hvdWxkUmVzcGVjdEltYWdlT3Jp
ZW50YXRpb24oYm9vbCBlbmFibGVkKSB7IG1fc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24g
PSBlbmFibGVkOyB9CiAgICAgICAgIGJvb2wgc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24o
KSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uOyB9CiAKQEAg
LTc0Niw5ICs3MzcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9zaG91
bGREaXNwbGF5Q2FwdGlvbnMgOiAxOwogICAgICAgICBib29sIG1fc2hvdWxkRGlzcGxheVRleHRE
ZXNjcmlwdGlvbnMgOiAxOwogI2VuZGlmCi0gICAgICAgIGJvb2wgbV9wZXJUaWxlRHJhd2luZ0Vu
YWJsZWQgOiAxOwotICAgICAgICBib29sIG1fcGFydGlhbFN3YXBFbmFibGVkIDogMTsKLQogICAg
ICAgICBib29sIG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3JFbmFibGVkIDogMTsKIAogICAgICAgICBi
b29sIG1fbm90aWZpY2F0aW9uc0VuYWJsZWQgOiAxOwpAQCAtNzU3LDcgKzc0NSw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgICAgICBib29sIG1f
dG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQgOiAxOwogI2VuZGlmCi0gICAgICAgIGJvb2wgbV90
aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQgOiAxOwogICAgICAgICBib29sIG1fc2hvdWxkUmVzcGVj
dEltYWdlT3JpZW50YXRpb24gOiAxOwogICAgICAgICBib29sIG1fd2FudHNCYWxhbmNlZFNldERl
ZmVyc0xvYWRpbmdCZWhhdmlvciA6IDE7CiAgICAgICAgIGJvb2wgbV9yZXF1ZXN0QW5pbWF0aW9u
RnJhbWVFbmFibGVkIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAppbmRl
eCBhZThkMzIwOGJmYmFiOGQ3YWRlOTgyYTdkOGE5M2EyZDgzZWQ3ZGFmLi5iNmEwMjU2MWNlMmNi
YzRjMzdhNjdlMzVmYzI4MzA4MmM4NTdiOTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hy
b21pdW0uY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdXBwb3J0LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXll
clRyZWVIb3N0LmgiCisjaW5jbHVkZSAiY2MvQ0NTZXR0aW5ncy5oIgogI2luY2x1ZGUgPHB1Ymxp
Yy9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCkBAIC0xMjcsNyAr
MTI4LDcgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGV4dHVyZVVwZGF0ZXJJ
Zk5lZWRlZCgpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAobGF5ZXJUcmVlSG9zdCgpLT5zZXR0
aW5ncygpLmFjY2VsZXJhdGVQYWludGluZykKICAgICAgICAgbV90ZXh0dXJlVXBkYXRlciA9IEZy
YW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKENvbnRl
bnRMYXllclBhaW50ZXI6OmNyZWF0ZShtX2RlbGVnYXRlKSk7Ci0gICAgZWxzZSBpZiAobGF5ZXJU
cmVlSG9zdCgpLT5zZXR0aW5ncygpLnBlclRpbGVQYWludGluZykKKyAgICBlbHNlIGlmIChDQ1Nl
dHRpbmdzOjpwZXJUaWxlUGFpbnRpbmdFbmFibGVkKCkpCiAgICAgICAgIG1fdGV4dHVyZVVwZGF0
ZXIgPSBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUoQ29u
dGVudExheWVyUGFpbnRlcjo6Y3JlYXRlKG1fZGVsZWdhdGUpLCBsYXllclRyZWVIb3N0KCktPmxh
eWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS51c2luZ01hcFN1Yik7CiAgICAgZWxzZQogICAgICAg
ICBtX3RleHR1cmVVcGRhdGVyID0gQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3Jl
YXRlKENvbnRlbnRMYXllclBhaW50ZXI6OmNyZWF0ZShtX2RlbGVnYXRlKSwgbGF5ZXJUcmVlSG9z
dCgpLT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdNYXBTdWIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNo
cm9taXVtLmNwcAppbmRleCBiYzgyZmViMGRmNDNmN2I0ODVmMDIxOTc2YjIyNzYxY2Q2MWQxODI1
Li5mY2FkZmEyOWVmMzBlMGMxYzU1MGYxZWFjMjA1Y2E1YWU3MGQwN2QxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNo
cm9taXVtLmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgImNjL0NDTGF5ZXJBbmltYXRp
b25EZWxlZ2F0ZS5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiY2Mv
Q0NMYXllclRyZWVIb3N0LmgiCisjaW5jbHVkZSAiY2MvQ0NTZXR0aW5ncy5oIgogI2luY2x1ZGUg
InNraWEvZXh0L3BsYXRmb3JtX2NhbnZhcy5oIgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAt
NjA2LDEyICs2MDcsMTQgQEAgdm9pZCBMYXllckNocm9taXVtOjpzZXRUcmFuc2Zvcm1Gcm9tQW5p
bWF0aW9uKGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmEKIAogYm9vbCBMYXllckNo
cm9taXVtOjphZGRBbmltYXRpb24oUGFzc093blB0cjxDQ0FjdGl2ZUFuaW1hdGlvbj4gYW5pbWF0
aW9uKQogewotICAgIGlmICghbV9sYXllclRyZWVIb3N0IHx8ICFtX2xheWVyVHJlZUhvc3QtPnNl
dHRpbmdzKCkudGhyZWFkZWRBbmltYXRpb25FbmFibGVkKQorICAgIGlmICghQ0NTZXR0aW5nczo6
YWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIG1fbGF5ZXJBbmltYXRpb25Db250cm9sbGVyLT5hZGRBbmltYXRpb24oYW5pbWF0aW9uKTsK
LSAgICBtX2xheWVyVHJlZUhvc3QtPmRpZEFkZEFuaW1hdGlvbigpOwotICAgIHNldE5lZWRzQ29t
bWl0KCk7CisgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkgeworICAgICAgICBtX2xheWVyVHJlZUhv
c3QtPmRpZEFkZEFuaW1hdGlvbigpOworICAgICAgICBzZXROZWVkc0NvbW1pdCgpOworICAgIH0K
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5j
cHAKaW5kZXggMGU1YWY0MTdmN2I3MGQ2ZjhkMzY1M2M4MzgxZDRlMDUyOWNjNzNjZS4uMjgxMDc1
ZTRhZDNlNzM2OTBlMmU1ZTJmY2JkZWZiNmMyMTA5MjNhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uY3BwCkBAIC02NCw2ICs2NCw3IEBACiAjaW5jbHVkZSAiY2MvQ0NSZW5k
ZXJQYXNzLmgiCiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaCIKICNpbmNsdWRl
ICJjYy9DQ1JlbmRlclN1cmZhY2VGaWx0ZXJzLmgiCisjaW5jbHVkZSAiY2MvQ0NTZXR0aW5ncy5o
IgogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKICNpbmNsdWRlICJjYy9DQ1Nv
bGlkQ29sb3JEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVyZURyYXdRdWFkLmgiCkBA
IC0yOTEsNyArMjkyLDcgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemUo
KQogICAgIGlmIChtX2NhcGFiaWxpdGllcy5jb250ZXh0SGFzQ2FjaGVkRnJvbnRCdWZmZXIpCiAg
ICAgICAgIGV4dGVuc2lvbnMtPmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9NSVVNX2Zyb250X2J1ZmZl
cl9jYWNoZWQiKTsKIAotICAgIG1fY2FwYWJpbGl0aWVzLnVzaW5nUGFydGlhbFN3YXAgPSBzZXR0
aW5ncygpLnBhcnRpYWxTd2FwRW5hYmxlZCAmJiBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfQ0hS
T01JVU1fcG9zdF9zdWJfYnVmZmVyIik7CisgICAgbV9jYXBhYmlsaXRpZXMudXNpbmdQYXJ0aWFs
U3dhcCA9IENDU2V0dGluZ3M6OnBhcnRpYWxTd2FwRW5hYmxlZCgpICYmIGV4dGVuc2lvbnMtPnN1
cHBvcnRzKCJHTF9DSFJPTUlVTV9wb3N0X3N1Yl9idWZmZXIiKTsKICAgICBpZiAobV9jYXBhYmls
aXRpZXMudXNpbmdQYXJ0aWFsU3dhcCkKICAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxl
ZCgiR0xfQ0hST01JVU1fcG9zdF9zdWJfYnVmZmVyIik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hy
b21pdW0uY3BwCmluZGV4IDEyZTM3MTdjYTZkZmYxYzM4YWM5NGRiYjE3ZWU2YzY3ZmQwY2Q1MWUu
Ljc0NzRjMzFjZjhiOGRlZmVhZDRhZWQwOTA0MjI5Yzc3NGZjNDc0ZjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGls
ZWRMYXllckNocm9taXVtLmNwcApAQCAtMTExLDkgKzExMSw4IEBAIHZvaWQgVGlsZWRMYXllckNo
cm9taXVtOjp1cGRhdGVUaWxlU2l6ZUFuZFRpbGluZ09wdGlvbigpCiB7CiAgICAgQVNTRVJUKGxh
eWVyVHJlZUhvc3QoKSk7CiAKLSAgICBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncyA9IGxheWVy
VHJlZUhvc3QoKS0+c2V0dGluZ3MoKTsKLSAgICBjb25zdCBJbnRTaXplJiBkZWZhdWx0VGlsZVNp
emUgPSBzZXR0aW5ncy5kZWZhdWx0VGlsZVNpemU7Ci0gICAgY29uc3QgSW50U2l6ZSYgbWF4VW50
aWxlZExheWVyU2l6ZSA9IHNldHRpbmdzLm1heFVudGlsZWRMYXllclNpemU7CisgICAgY29uc3Qg
SW50U2l6ZSYgZGVmYXVsdFRpbGVTaXplID0gbGF5ZXJUcmVlSG9zdCgpLT5zZXR0aW5ncygpLmRl
ZmF1bHRUaWxlU2l6ZTsKKyAgICBjb25zdCBJbnRTaXplJiBtYXhVbnRpbGVkTGF5ZXJTaXplID0g
bGF5ZXJUcmVlSG9zdCgpLT5zZXR0aW5ncygpLm1heFVudGlsZWRMYXllclNpemU7CiAgICAgaW50
IGxheWVyV2lkdGggPSBjb250ZW50Qm91bmRzKCkud2lkdGgoKTsKICAgICBpbnQgbGF5ZXJIZWln
aHQgPSBjb250ZW50Qm91bmRzKCkuaGVpZ2h0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdSZWN0SGlzdG9yeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVj
dEhpc3RvcnkuY3BwCmluZGV4IDNjODhkY2M0MDAzYTY2OTE4OTNmNzViNTQ1ZmYwZDY0OTVkODg4
MTEuLjE3ZDU5NDZlYzJlY2NkZWJhY2JhZjAzNDhmZjgxMDYyZjk4N2E0NTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdSZWN0
SGlzdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5LmNwcApAQCAtMzgsMTIgKzM4LDEyIEBAIENDRGVidWdS
ZWN0SGlzdG9yeTo6Q0NEZWJ1Z1JlY3RIaXN0b3J5KCkKIHsKIH0KIAotYm9vbCBDQ0RlYnVnUmVj
dEhpc3Rvcnk6OmVuYWJsZWQoY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MpCitib29sIENDRGVi
dWdSZWN0SGlzdG9yeTo6ZW5hYmxlZChjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5n
cykKIHsKICAgICByZXR1cm4gc2V0dGluZ3Muc2hvd1BhaW50UmVjdHMgfHwgc2V0dGluZ3Muc2hv
d1Byb3BlcnR5Q2hhbmdlZFJlY3RzIHx8IHNldHRpbmdzLnNob3dTdXJmYWNlRGFtYWdlUmVjdHM7
CiB9CiAKLXZvaWQgQ0NEZWJ1Z1JlY3RIaXN0b3J5OjpzYXZlRGVidWdSZWN0c0ZvckN1cnJlbnRG
cmFtZShDQ0xheWVySW1wbCogcm9vdExheWVyLCBjb25zdCBWZWN0b3I8Q0NMYXllckltcGwqPiYg
cmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MpCit2b2lk
IENDRGVidWdSZWN0SGlzdG9yeTo6c2F2ZURlYnVnUmVjdHNGb3JDdXJyZW50RnJhbWUoQ0NMYXll
ckltcGwqIHJvb3RMYXllciwgY29uc3QgVmVjdG9yPENDTGF5ZXJJbXBsKj4mIHJlbmRlclN1cmZh
Y2VMYXllckxpc3QsIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzKQogewogICAg
IC8vIEZvciBub3csIGNsZWFyIGFsbCByZWN0cyBmcm9tIHByZXZpb3VzIGZyYW1lcy4gSW4gdGhl
IGZ1dHVyZSB3ZSBtYXkgd2FudCB0byBzdG9yZQogICAgIC8vIGFsbCBkZWJ1ZyByZWN0cyBmb3Ig
YSBoaXN0b3J5IG9mIG1hbnkgZnJhbWVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3Rvcnku
aAppbmRleCA5M2RhMTA3YWRlNGZiNzc0OWFiMmQ1Y2U3NDc1YTIyNmNiYjBlMTQ0Li5iYjNjZGI3
OWQ1NzE4NDdiMjc2ZTk3YzgwZmQ2OGMxYWMyYzQ4ZDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3RvcnkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVn
UmVjdEhpc3RvcnkuaApAQCAtMzUsNyArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDQ0xheWVySW1wbDsKLXN0cnVjdCBDQ1NldHRpbmdzOworc3RydWN0IENDTGF5ZXJUcmVl
U2V0dGluZ3M7CiAKIC8vIFRoZXJlIGFyZSBjdXJyZW50bHkgdGhyZWUgdHlwZXMgb2YgZGVidWcg
cmVjdHM6CiAvLwpAQCAtNjMsNyArNjMsNyBAQCBzdHJ1Y3QgQ0NEZWJ1Z1JlY3QgewogCiAvLyBU
aGlzIGNsYXNzIG1haW50YWlucyBhIGhpc3Rvcnkgb2YgcmVjdHMgb2YgdmFyaW91cyB0eXBlcyB0
aGF0IGNhbiBiZSB1c2VkCiAvLyBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLiBUaGUgb3ZlcmhlYWQg
b2YgY29sbGVjdGluZyByZWN0cyBpcyBwZXJmb3JtZWQgb25seSBpZgotLy8gdGhlIGFwcHJvcHJp
YXRlIENDU2V0dGluZ3MgYXJlIGVuYWJsZWQuCisvLyB0aGUgYXBwcm9wcmlhdGUgQ0NMYXllclRy
ZWVTZXR0aW5ncyBhcmUgZW5hYmxlZC4KIGNsYXNzIENDRGVidWdSZWN0SGlzdG9yeSB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NEZWJ1Z1JlY3RIaXN0b3J5KTsKIHB1YmxpYzoKQEAgLTcy
LDEwICs3MiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NEZWJ1
Z1JlY3RIaXN0b3J5KCkpOwogICAgIH0KIAotICAgIGJvb2wgZW5hYmxlZChjb25zdCBDQ1NldHRp
bmdzJik7CisgICAgYm9vbCBlbmFibGVkKGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmKTsKIAog
ICAgIC8vIE5vdGU6IFNhdmluZyBkZWJ1ZyByZWN0cyBtdXN0IGhhcHBlbiBiZWZvcmUgbGF5ZXJz
JyBjaGFuZ2UgdHJhY2tpbmcgaXMgcmVzZXQuCi0gICAgdm9pZCBzYXZlRGVidWdSZWN0c0ZvckN1
cnJlbnRGcmFtZShDQ0xheWVySW1wbCogcm9vdExheWVyLCBjb25zdCBWZWN0b3I8Q0NMYXllcklt
cGwqPiYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgY29uc3QgQ0NTZXR0aW5ncyYpOworICAgIHZv
aWQgc2F2ZURlYnVnUmVjdHNGb3JDdXJyZW50RnJhbWUoQ0NMYXllckltcGwqIHJvb3RMYXllciwg
Y29uc3QgVmVjdG9yPENDTGF5ZXJJbXBsKj4mIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGNvbnN0
IENDTGF5ZXJUcmVlU2V0dGluZ3MmKTsKIAogICAgIGNvbnN0IFZlY3RvcjxDQ0RlYnVnUmVjdD4m
IGRlYnVnUmVjdHMoKSB7IHJldHVybiBtX2RlYnVnUmVjdHM7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxh
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hl
YWRzVXBEaXNwbGF5LmNwcAppbmRleCAzNDg1YTQ4YTRhYTQxNjhlZTBkMDQxYmU3ZDEwM2FiYmVj
YTI1OTM1Li4xYmJjMDQ2ZTdhNTgyMWFiMGUwMzk5NDZiNjBjODFhMGVjYzlhMjdmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRz
VXBEaXNwbGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcApAQCAtNTIsMTcgKzUyLDE3IEBAIHZvaWQgQ0NI
ZWFkc1VwRGlzcGxheTo6c2V0Rm9udEF0bGFzKFBhc3NPd25QdHI8Q0NGb250QXRsYXM+IGZvbnRB
dGxhcykKICAgICBtX2ZvbnRBdGxhcyA9IGZvbnRBdGxhczsKIH0KIAotYm9vbCBDQ0hlYWRzVXBE
aXNwbGF5OjplbmFibGVkKGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKSBjb25zdAorYm9vbCBD
Q0hlYWRzVXBEaXNwbGF5OjplbmFibGVkKGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRp
bmdzKSBjb25zdAogewogICAgIHJldHVybiBzaG93UGxhdGZvcm1MYXllclRyZWUoc2V0dGluZ3Mp
IHx8IHNldHRpbmdzLnNob3dGUFNDb3VudGVyIHx8IHNob3dEZWJ1Z1JlY3RzKHNldHRpbmdzKTsK
IH0KIAotYm9vbCBDQ0hlYWRzVXBEaXNwbGF5OjpzaG93UGxhdGZvcm1MYXllclRyZWUoY29uc3Qg
Q0NTZXR0aW5ncyYgc2V0dGluZ3MpIGNvbnN0Citib29sIENDSGVhZHNVcERpc3BsYXk6OnNob3dQ
bGF0Zm9ybUxheWVyVHJlZShjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncykgY29u
c3QKIHsKICAgICByZXR1cm4gc2V0dGluZ3Muc2hvd1BsYXRmb3JtTGF5ZXJUcmVlOwogfQogCi1i
b29sIENDSGVhZHNVcERpc3BsYXk6OnNob3dEZWJ1Z1JlY3RzKGNvbnN0IENDU2V0dGluZ3MmIHNl
dHRpbmdzKSBjb25zdAorYm9vbCBDQ0hlYWRzVXBEaXNwbGF5OjpzaG93RGVidWdSZWN0cyhjb25z
dCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncykgY29uc3QKIHsKICAgICByZXR1cm4gc2V0
dGluZ3Muc2hvd1BhaW50UmVjdHMgfHwgc2V0dGluZ3Muc2hvd1Byb3BlcnR5Q2hhbmdlZFJlY3Rz
IHx8IHNldHRpbmdzLnNob3dTdXJmYWNlRGFtYWdlUmVjdHM7CiB9CkBAIC03OCw3ICs3OCw3IEBA
IHZvaWQgQ0NIZWFkc1VwRGlzcGxheTo6ZHJhdyhDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRy
ZWVIb3N0SW1wbCkKICAgICBpZiAoIW1faHVkVGV4dHVyZSkKICAgICAgICAgbV9odWRUZXh0dXJl
ID0gTWFuYWdlZFRleHR1cmU6OmNyZWF0ZShsYXllclJlbmRlcmVyLT5pbXBsVGV4dHVyZU1hbmFn
ZXIoKSk7CiAKLSAgICBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncyA9IGxheWVyVHJlZUhvc3RJ
bXBsLT5zZXR0aW5ncygpOworICAgIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdz
ID0gbGF5ZXJUcmVlSG9zdEltcGwtPnNldHRpbmdzKCk7CiAgICAgLy8gVXNlIGEgZnVsbHNjcmVl
biB0ZXh0dXJlIG9ubHkgaWYgd2UgbmVlZCB0by4uLgogICAgIEludFNpemUgaHVkU2l6ZTsKICAg
ICBpZiAoc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKHNldHRpbmdzKSB8fCBzaG93RGVidWdSZWN0cyhz
ZXR0aW5ncykpIHsKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIENDSGVhZHNVcERpc3BsYXk6OmRy
YXcoQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVlSG9zdEltcGwpCiAgICAgbV9odWRUZXh0
dXJlLT51bnJlc2VydmUoKTsKIH0KIAotdm9pZCBDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3SHVkQ29u
dGVudHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXll
clRyZWVIb3N0SW1wbCwgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MsIGNvbnN0IEludFNpemUm
IGh1ZFNpemUpCit2b2lkIENDSGVhZHNVcERpc3BsYXk6OmRyYXdIdWRDb250ZW50cyhHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIENDTGF5ZXJUcmVlSG9zdEltcGwqIGxheWVyVHJlZUhvc3RJbXBs
LCBjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncywgY29uc3QgSW50U2l6ZSYgaHVk
U2l6ZSkKIHsKICAgICBpZiAoc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKHNldHRpbmdzKSkgewogICAg
ICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3IoMCwgMCwgMCwgMTkyKSwgQ29sb3JTcGFj
ZURldmljZVJHQik7CkBAIC0yMjEsNyArMjIxLDcgQEAgdm9pZCBDQ0hlYWRzVXBEaXNwbGF5Ojpk
cmF3RlBTQ291bnRlclRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBDQ0ZyYW1lUmF0ZUMK
ICAgICAgICAgbV9mb250QXRsYXMtPmRyYXdUZXh0KGNvbnRleHQsIFN0cmluZzo6Zm9ybWF0KCJG
UFM6ICU0LjFmICsvLSAlMy4xZiIsIGF2ZXJhZ2VGUFMsIHN0ZERldmlhdGlvbiksIEludFBvaW50
KDEwLCBoZWlnaHQgLyAzKSwgSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSk7CiB9CiAKLXZvaWQgQ0NI
ZWFkc1VwRGlzcGxheTo6ZHJhd0RlYnVnUmVjdHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBD
Q0RlYnVnUmVjdEhpc3RvcnkqIGRlYnVnUmVjdEhpc3RvcnksIGNvbnN0IENDU2V0dGluZ3MmIHNl
dHRpbmdzKQordm9pZCBDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3RGVidWdSZWN0cyhHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIENDRGVidWdSZWN0SGlzdG9yeSogZGVidWdSZWN0SGlzdG9yeSwgY29u
c3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MpCiB7CiAgICAgY29uc3QgVmVjdG9yPEND
RGVidWdSZWN0PiYgZGVidWdSZWN0cyA9IGRlYnVnUmVjdEhpc3RvcnktPmRlYnVnUmVjdHMoKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRlYnVnUmVjdHMuc2l6ZSgpOyArK2kpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
SGVhZHNVcERpc3BsYXkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuaAppbmRleCA0ODMxZTVkZDE4YzNlMTEyMWExOTJiOTlh
NzRhZjFiYWNjZDJjZmFkLi5lMWNlOTNhNmMzZTkwY2IzNDQ1ZWI5N2QyZjYwZWUwNDQwZjRjNTlm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0hlYWRzVXBEaXNwbGF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNz
IENDRnJhbWVSYXRlQ291bnRlcjsKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGw7CiBjbGFzcyBH
cmFwaGljc0NvbnRleHQ7CiBjbGFzcyBNYW5hZ2VkVGV4dHVyZTsKLXN0cnVjdCBDQ1NldHRpbmdz
Oworc3RydWN0IENDTGF5ZXJUcmVlU2V0dGluZ3M7CiAKIC8vIENsYXNzIHRoYXQgaGFuZGxlcyBk
cmF3aW5nIG9mIGNvbXBvc2l0ZWQgcmVuZGVyIGxheWVycyB1c2luZyBHTC4KIGNsYXNzIENDSGVh
ZHNVcERpc3BsYXkgewpAQCAtNTEsMTkgKzUxLDE5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0
Rm9udEF0bGFzKFBhc3NPd25QdHI8Q0NGb250QXRsYXM+KTsKIAotICAgIGJvb2wgZW5hYmxlZChj
b25zdCBDQ1NldHRpbmdzJikgY29uc3Q7CisgICAgYm9vbCBlbmFibGVkKGNvbnN0IENDTGF5ZXJU
cmVlU2V0dGluZ3MmKSBjb25zdDsKICAgICB2b2lkIGRyYXcoQ0NMYXllclRyZWVIb3N0SW1wbCop
OwogCiBwcml2YXRlOgogICAgIENDSGVhZHNVcERpc3BsYXkoKSB7IH07CiAKLSAgICB2b2lkIGRy
YXdIdWRDb250ZW50cyhHcmFwaGljc0NvbnRleHQqLCBDQ0xheWVyVHJlZUhvc3RJbXBsKiwgY29u
c3QgQ0NTZXR0aW5ncyYsIGNvbnN0IEludFNpemUmIGh1ZFNpemUpOworICAgIHZvaWQgZHJhd0h1
ZENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCosIENDTGF5ZXJUcmVlSG9zdEltcGwqLCBjb25zdCBD
Q0xheWVyVHJlZVNldHRpbmdzJiwgY29uc3QgSW50U2l6ZSYgaHVkU2l6ZSk7CiAgICAgdm9pZCBk
cmF3RlBTQ291bnRlcihHcmFwaGljc0NvbnRleHQqLCBDQ0ZyYW1lUmF0ZUNvdW50ZXIqLCBpbnQg
dG9wLCBpbnQgaGVpZ2h0KTsKICAgICB2b2lkIGRyYXdGUFNDb3VudGVyVGV4dChHcmFwaGljc0Nv
bnRleHQqLCBDQ0ZyYW1lUmF0ZUNvdW50ZXIqLCBpbnQgdG9wLCBpbnQgd2lkdGgsIGludCBoZWln
aHQpOwotICAgIHZvaWQgZHJhd0RlYnVnUmVjdHMoR3JhcGhpY3NDb250ZXh0KiwgQ0NEZWJ1Z1Jl
Y3RIaXN0b3J5KiwgY29uc3QgQ0NTZXR0aW5ncyYpOworICAgIHZvaWQgZHJhd0RlYnVnUmVjdHMo
R3JhcGhpY3NDb250ZXh0KiwgQ0NEZWJ1Z1JlY3RIaXN0b3J5KiwgY29uc3QgQ0NMYXllclRyZWVT
ZXR0aW5ncyYpOwogCi0gICAgYm9vbCBzaG93UGxhdGZvcm1MYXllclRyZWUoY29uc3QgQ0NTZXR0
aW5ncyYpIGNvbnN0OwotICAgIGJvb2wgc2hvd0RlYnVnUmVjdHMoY29uc3QgQ0NTZXR0aW5ncyYp
IGNvbnN0OworICAgIGJvb2wgc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKGNvbnN0IENDTGF5ZXJUcmVl
U2V0dGluZ3MmKSBjb25zdDsKKyAgICBib29sIHNob3dEZWJ1Z1JlY3RzKGNvbnN0IENDTGF5ZXJU
cmVlU2V0dGluZ3MmKSBjb25zdDsKIAogICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV9odWRU
ZXh0dXJlOwogICAgIE93blB0cjxDQ0ZvbnRBdGxhcz4gbV9mb250QXRsYXM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmNwcAppbmRleCBhYmE0NTQ0Nzk1NTFiN2QxMGJmYTFiNWRhNmIxYjQy
ODQxZWZlMjFhLi5lZWM4NDQ3MmJiYTY1NmI1NmY5YmU1NzkxZmY0Mjk5NGI3ZTA5NzEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRl
ICJjYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhv
c3RJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NPY2NsdXNpb25UcmFja2VyLmgiCisjaW5jbHVkZSAi
Y2MvQ0NTZXR0aW5ncy5oIgogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKICNp
bmNsdWRlICJjYy9DQ1RocmVhZC5oIgogI2luY2x1ZGUgImNjL0NDVGhyZWFkUHJveHkuaCIKQEAg
LTU4LDcgKzU5LDcgQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3Q6OmFueUxheWVyVHJlZUhvc3RJbnN0
YW5jZUV4aXN0cygpCiAgICAgcmV0dXJuIG51bUxheWVyVHJlZUluc3RhbmNlcyA+IDA7CiB9CiAK
LVBhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0PiBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZShDQ0xh
eWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MpCitQ
YXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdD4gQ0NMYXllclRyZWVIb3N0OjpjcmVhdGUoQ0NMYXll
clRyZWVIb3N0Q2xpZW50KiBjbGllbnQsIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRp
bmdzKQogewogICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3Q+IGxheWVyVHJlZUhvc3QgPSBhZG9w
dFB0cihuZXcgQ0NMYXllclRyZWVIb3N0KGNsaWVudCwgc2V0dGluZ3MpKTsKICAgICBpZiAoIWxh
eWVyVHJlZUhvc3QtPmluaXRpYWxpemUoKSkKQEAgLTY2LDcgKzY3LDcgQEAgUGFzc093blB0cjxD
Q0xheWVyVHJlZUhvc3Q+IENDTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKENDTGF5ZXJUcmVlSG9zdENs
aWVudCogY2xpZW4KICAgICByZXR1cm4gbGF5ZXJUcmVlSG9zdC5yZWxlYXNlKCk7CiB9CiAKLUND
TGF5ZXJUcmVlSG9zdDo6Q0NMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xp
ZW50LCBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncykKK0NDTGF5ZXJUcmVlSG9zdDo6Q0NMYXll
clRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50LCBjb25zdCBDQ0xheWVyVHJl
ZVNldHRpbmdzJiBzZXR0aW5ncykKICAgICA6IG1fY29tcG9zaXRvcklkZW50aWZpZXIoLTEpCiAg
ICAgLCBtX2FuaW1hdGluZyhmYWxzZSkKICAgICAsIG1fbmVlZHNBbmltYXRlTGF5ZXJzKGZhbHNl
KQpAQCAtNjgyLDcgKzY4Myw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpkZWxldGVUZXh0dXJl
QWZ0ZXJDb21taXQoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyCiAKIHZvaWQgQ0NM
YXllclRyZWVIb3N0OjphbmltYXRlTGF5ZXJzKGRvdWJsZSBtb25vdG9uaWNUaW1lKQogewotICAg
IGlmICghbV9zZXR0aW5ncy50aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQgfHwgIW1fbmVlZHNBbmlt
YXRlTGF5ZXJzKQorICAgIGlmICghQ0NTZXR0aW5nczo6YWNjZWxlcmF0ZWRBbmltYXRpb25FbmFi
bGVkKCkgfHwgIW1fbmVlZHNBbmltYXRlTGF5ZXJzKQogICAgICAgICByZXR1cm47CiAKICAgICBU
UkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0SW1wbDo6YW5pbWF0ZUxheWVycyIsIHRoaXMsIDAp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCAzYzNhZTAzZjY2YzhlZjQ1N2E4MzFj
ZTYyZGMxZDg0ZmNmYzM0MWUyLi5lNDAyMzY4ZTk1MTFmNzc1YzU3MzM1MTRhZjNlZGYxOWQzNGY0
NDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtNzQsOCArNzQsOCBAQCBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCB+Q0NMYXllclRyZWVIb3N0Q2xpZW50KCkgeyB9CiB9OwogCi1z
dHJ1Y3QgQ0NTZXR0aW5ncyB7Ci0gICAgQ0NTZXR0aW5ncygpCitzdHJ1Y3QgQ0NMYXllclRyZWVT
ZXR0aW5ncyB7CisgICAgQ0NMYXllclRyZWVTZXR0aW5ncygpCiAgICAgICAgICAgICA6IGFjY2Vs
ZXJhdGVQYWludGluZyhmYWxzZSkKICAgICAgICAgICAgICwgZm9yY2VTb2Z0d2FyZUNvbXBvc2l0
aW5nKGZhbHNlKQogICAgICAgICAgICAgLCBzaG93RlBTQ291bnRlcihmYWxzZSkKQEAgLTg0LDkg
Kzg0LDYgQEAgc3RydWN0IENDU2V0dGluZ3MgewogICAgICAgICAgICAgLCBzaG93UHJvcGVydHlD
aGFuZ2VkUmVjdHMoZmFsc2UpCiAgICAgICAgICAgICAsIHNob3dTdXJmYWNlRGFtYWdlUmVjdHMo
ZmFsc2UpCiAgICAgICAgICAgICAsIHJlZnJlc2hSYXRlKDApCi0gICAgICAgICAgICAsIHBlclRp
bGVQYWludGluZyhmYWxzZSkKLSAgICAgICAgICAgICwgcGFydGlhbFN3YXBFbmFibGVkKGZhbHNl
KQotICAgICAgICAgICAgLCB0aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQoZmFsc2UpCiAgICAgICAg
ICAgICAsIG1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcyhzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVf
dD46Om1heCgpKQogICAgICAgICAgICAgLCBkZWZhdWx0VGlsZVNpemUoSW50U2l6ZSgyNTYsIDI1
NikpCiAgICAgICAgICAgICAsIG1heFVudGlsZWRMYXllclNpemUoSW50U2l6ZSg1MTIsIDUxMikp
CkBAIC0xMDEsOSArOTgsNiBAQCBzdHJ1Y3QgQ0NTZXR0aW5ncyB7CiAgICAgYm9vbCBzaG93UHJv
cGVydHlDaGFuZ2VkUmVjdHM7CiAgICAgYm9vbCBzaG93U3VyZmFjZURhbWFnZVJlY3RzOwogICAg
IGRvdWJsZSByZWZyZXNoUmF0ZTsKLSAgICBib29sIHBlclRpbGVQYWludGluZzsKLSAgICBib29s
IHBhcnRpYWxTd2FwRW5hYmxlZDsKLSAgICBib29sIHRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZDsK
ICAgICBzaXplX3QgbWF4UGFydGlhbFRleHR1cmVVcGRhdGVzOwogICAgIEludFNpemUgZGVmYXVs
dFRpbGVTaXplOwogICAgIEludFNpemUgbWF4VW50aWxlZExheWVyU2l6ZTsKQEAgLTE0Myw3ICsx
MzcsNyBAQCBzdHJ1Y3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyB7CiBjbGFzcyBDQ0xheWVy
VHJlZUhvc3QgOiBwdWJsaWMgUmF0ZUxpbWl0ZXJDbGllbnQgewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKENDTGF5ZXJUcmVlSG9zdCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8
Q0NMYXllclRyZWVIb3N0PiBjcmVhdGUoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiwgY29uc3QgQ0NT
ZXR0aW5ncyYpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdD4gY3JlYXRl
KENDTGF5ZXJUcmVlSG9zdENsaWVudCosIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmKTsKICAg
ICB2aXJ0dWFsIH5DQ0xheWVyVHJlZUhvc3QoKTsKIAogICAgIHZvaWQgc2V0U3VyZmFjZVJlYWR5
KCk7CkBAIC0yMTksNyArMjEzLDcgQEAgcHVibGljOgogICAgIGNvbnN0IExheWVyQ2hyb21pdW0q
IHJvb3RMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdExheWVyLmdldCgpOyB9CiAgICAgdm9p
ZCBzZXRSb290TGF5ZXIoUGFzc1JlZlB0cjxMYXllckNocm9taXVtPik7CiAKLSAgICBjb25zdCBD
Q1NldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fc2V0dGluZ3M7IH0KKyAgICBj
b25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fc2V0
dGluZ3M7IH0KIAogICAgIHZvaWQgc2V0Vmlld3BvcnRTaXplKGNvbnN0IEludFNpemUmKTsKIApA
QCAtMjU0LDcgKzI0OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZVRleHR1cmVBZnRlckNv
bW1pdChQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPik7CiAKIHByb3RlY3RlZDoKLSAgICBDQ0xh
eWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiwgY29uc3QgQ0NTZXR0aW5ncyYpOwor
ICAgIENDTGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3RDbGllbnQqLCBjb25zdCBDQ0xheWVy
VHJlZVNldHRpbmdzJik7CiAgICAgYm9vbCBpbml0aWFsaXplKCk7CiAKIHByaXZhdGU6CkBAIC0y
OTUsNyArMjg5LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbV9yb290
TGF5ZXI7CiAgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiBtX2NvbnRlbnRzVGV4dHVyZU1hbmFn
ZXI7CiAKLSAgICBDQ1NldHRpbmdzIG1fc2V0dGluZ3M7CisgICAgQ0NMYXllclRyZWVTZXR0aW5n
cyBtX3NldHRpbmdzOwogCiAgICAgSW50U2l6ZSBtX3ZpZXdwb3J0U2l6ZTsKICAgICBJbnRTaXpl
IG1fZGV2aWNlVmlld3BvcnRTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmNwcAppbmRleCA2MGM0MmQ3ZDc0MzNiNGRhMjZjMjUwMDIyZmVmOGY5MDI0MDZmYmU1Li4xZDVi
ZDAxNzcyMWQyZDZjM2IzN2NiNGI3ZTc0YTYxOTZmZjI5Mjc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgImNjL0ND
TGF5ZXJUcmVlSG9zdENvbW1vbi5oIgogI2luY2x1ZGUgImNjL0NDTWF0aFV0aWwuaCIKICNpbmNs
dWRlICJjYy9DQ1BhZ2VTY2FsZUFuaW1hdGlvbi5oIgorI2luY2x1ZGUgImNjL0NDU2V0dGluZ3Mu
aCIKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgiCiAjaW5jbHVkZSAiY2MvQ0NU
aHJlYWRUYXNrLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkBAIC0xMDUsMTIgKzEw
NiwxMiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxDQ0RlbGF5QmFzZWRUaW1lU291cmNlPiBtX3Rp
bWVTb3VyY2U7CiB9OwogCi1QYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IENDTGF5ZXJU
cmVlSG9zdEltcGw6OmNyZWF0ZShjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncywgQ0NMYXllclRy
ZWVIb3N0SW1wbENsaWVudCogY2xpZW50KQorUGFzc093blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBs
PiBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYg
c2V0dGluZ3MsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqIGNsaWVudCkKIHsKICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IENDTGF5ZXJUcmVlSG9zdEltcGwoc2V0dGluZ3MsIGNsaWVudCkpOwog
fQogCi1DQ0xheWVyVHJlZUhvc3RJbXBsOjpDQ0xheWVyVHJlZUhvc3RJbXBsKGNvbnN0IENDU2V0
dGluZ3MmIHNldHRpbmdzLCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KiBjbGllbnQpCitDQ0xh
eWVyVHJlZUhvc3RJbXBsOjpDQ0xheWVyVHJlZUhvc3RJbXBsKGNvbnN0IENDTGF5ZXJUcmVlU2V0
dGluZ3MmIHNldHRpbmdzLCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KiBjbGllbnQpCiAgICAg
OiBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX3NvdXJjZUZyYW1lTnVtYmVyKC0xKQogICAgICwg
bV9mcmFtZU51bWJlcigwKQpAQCAtMjU3LDcgKzI1OCw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0
SW1wbDo6Y2FsY3VsYXRlUmVuZGVyU3VyZmFjZUxheWVyTGlzdChDQ0xheWVyTGlzdCYgcmVuZGVy
U3VyCiAKICAgICAgICAgaWYgKCFsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdQYXJ0
aWFsU3dhcCkKICAgICAgICAgICAgIG1fcm9vdFNjaXNzb3JSZWN0ID0gRmxvYXRSZWN0KEZsb2F0
UG9pbnQoMCwgMCksIGRldmljZVZpZXdwb3J0U2l6ZSgpKTsKLSAgICAKKwogICAgICAgICBDQ0xh
eWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZVZpc2libGVBbmRTY2lzc29yUmVjdHMocmVuZGVy
U3VyZmFjZUxheWVyTGlzdCwgbV9yb290U2Npc3NvclJlY3QpOwogICAgIH0KIH0KQEAgLTg1OCw3
ICs4NTksNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVQYWdlU2NhbGUoZG91
YmxlIG1vbm90b25pY1RpbWUpCiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6YW5pbWF0ZUxh
eWVycyhkb3VibGUgbW9ub3RvbmljVGltZSwgZG91YmxlIHdhbGxDbG9ja1RpbWUpCiB7Ci0gICAg
aWYgKCFtX3NldHRpbmdzLnRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZCB8fCAhbV9uZWVkc0FuaW1h
dGVMYXllcnMgfHwgIW1fcm9vdExheWVySW1wbCkKKyAgICBpZiAoIUNDU2V0dGluZ3M6OmFjY2Vs
ZXJhdGVkQW5pbWF0aW9uRW5hYmxlZCgpIHx8ICFtX25lZWRzQW5pbWF0ZUxheWVycyB8fCAhbV9y
b290TGF5ZXJJbXBsKQogICAgICAgICByZXR1cm47CiAKICAgICBUUkFDRV9FVkVOVCgiQ0NMYXll
clRyZWVIb3N0SW1wbDo6YW5pbWF0ZUxheWVycyIsIHRoaXMsIDApOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5oCmluZGV4IDA5NWMwZTViMzkzMjQxYTY5NWM1MTQwNTBmNDBkYmY4
M2U4M2IwOTEuLmJjYTcwMDBmZTQ2NDJjYmNlYzU5YmVjMjFiMzFmN2ExYmM5ZDBiZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKQEAgLTY4LDcgKzY4LDcgQEAgY2xhc3Mg
Q0NMYXllclRyZWVIb3N0SW1wbCA6IHB1YmxpYyBDQ0lucHV0SGFuZGxlckNsaWVudCwgQ0NSZW5k
ZXJlckNsaWVudCB7CiAgICAgdHlwZWRlZiBWZWN0b3I8Q0NMYXllckltcGwqPiBDQ0xheWVyTGlz
dDsKIAogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+
IGNyZWF0ZShjb25zdCBDQ1NldHRpbmdzJiwgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCopOwor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IGNyZWF0ZShjb25zdCBD
Q0xheWVyVHJlZVNldHRpbmdzJiwgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCopOwogICAgIHZp
cnR1YWwgfkNDTGF5ZXJUcmVlSG9zdEltcGwoKTsKIAogICAgIC8vIENDSW5wdXRIYW5kbGVyQ2xp
ZW50IGltcGxlbWVudGF0aW9uCkBAIC0xMDYsNyArMTA2LDcgQEAgcHVibGljOgogCiAgICAgLy8g
Q0NSZW5kZXJlckNsaWVudCBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgY29uc3QgSW50U2l6
ZSYgZGV2aWNlVmlld3BvcnRTaXplKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9kZXZpY2VW
aWV3cG9ydFNpemU7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKCkg
Y29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9zZXR0aW5nczsgfQorICAgIHZpcnR1YWwgY29uc3Qg
Q0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBt
X3NldHRpbmdzOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZExvc2VDb250ZXh0KCkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZSgpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRGdWxsUm9vdExheWVyRGFtYWdlKCkgT1ZFUlJJREU7CkBAIC0xNzIs
NyArMTcyLDcgQEAgcHVibGljOgogICAgIENDRGVidWdSZWN0SGlzdG9yeSogZGVidWdSZWN0SGlz
dG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdSZWN0SGlzdG9yeS5nZXQoKTsgfQogCiBwcm90
ZWN0ZWQ6Ci0gICAgQ0NMYXllclRyZWVIb3N0SW1wbChjb25zdCBDQ1NldHRpbmdzJiwgQ0NMYXll
clRyZWVIb3N0SW1wbENsaWVudCopOworICAgIENDTGF5ZXJUcmVlSG9zdEltcGwoY29uc3QgQ0NM
YXllclRyZWVTZXR0aW5ncyYsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqKTsKIAogICAgIHZv
aWQgYW5pbWF0ZVBhZ2VTY2FsZShkb3VibGUgbW9ub3RvbmljVGltZSk7CiAgICAgdm9pZCBhbmlt
YXRlR2VzdHVyZXMoZG91YmxlIG1vbm90b25pY1RpbWUpOwpAQCAtMjE3LDcgKzIxNyw3IEBAIHBy
aXZhdGU6CiAgICAgT3duUHRyPENDUmVuZGVyZXI+IG1fbGF5ZXJSZW5kZXJlcjsKICAgICBPd25Q
dHI8Q0NMYXllckltcGw+IG1fcm9vdExheWVySW1wbDsKICAgICBDQ0xheWVySW1wbCogbV9zY3Jv
bGxMYXllckltcGw7Ci0gICAgQ0NTZXR0aW5ncyBtX3NldHRpbmdzOworICAgIENDTGF5ZXJUcmVl
U2V0dGluZ3MgbV9zZXR0aW5nczsKICAgICBJbnRTaXplIG1fdmlld3BvcnRTaXplOwogICAgIElu
dFNpemUgbV9kZXZpY2VWaWV3cG9ydFNpemU7CiAgICAgYm9vbCBtX3Zpc2libGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRl
cmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jl
bmRlcmVyLmgKaW5kZXggOWM5MzhhOTkwYWJjNGQ5YjU1NTQ2OGU3MDg2ZDdiNTM2MWI2MDUxOS4u
MzJmODM1OGM3NDRkYzBlOGMxOGU5NGIwNjRhOTFkNTA0ODA1ZWZhNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
ZXIuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBUZXh0dXJlVXBsb2FkZXI7CiBjbGFzcyBDQ1Jl
bmRlcmVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIGNvbnN0IEludFNpemUmIGRldmlj
ZVZpZXdwb3J0U2l6ZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGNvbnN0IENDU2V0dGluZ3Mm
IHNldHRpbmdzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3QgQ0NMYXllclRyZWVTZXR0
aW5ncyYgc2V0dGluZ3MoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZExvc2VDb250
ZXh0KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGUoKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHNldEZ1bGxSb290TGF5ZXJEYW1hZ2UoKSA9IDA7CkBAIC01Nyw3
ICs1Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFi
aWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgY29uc3QgPSAwOwogCi0gICAgY29uc3QgQ0NTZXR0aW5n
cyYgc2V0dGluZ3MoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudC0+c2V0dGluZ3MoKTsgfQorICAg
IGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9j
bGllbnQtPnNldHRpbmdzKCk7IH0KIAogICAgIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSgp
IHsgcmV0dXJuIG1fY2xpZW50LT5kZXZpY2VWaWV3cG9ydFNpemUoKTsgfQogICAgIGludCB2aWV3
cG9ydFdpZHRoKCkgeyByZXR1cm4gdmlld3BvcnRTaXplKCkud2lkdGgoKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTZXR0aW5n
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Nl
dHRpbmdzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNmVmNTUxN2E5M2VjOGYxZmEzNTk5MDFmNTBkZDhhYjI0
OGQzMDA4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTZXR0aW5ncy5jcHAKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiY2MvQ0NTZXR0aW5ncy5oIgor
CituYW1lc3BhY2Ugeworc3RhdGljIGJvb2wgc19wZXJUaWxlUGFpbnRpbmdFbmFibGVkID0gZmFs
c2U7CitzdGF0aWMgYm9vbCBzX3BhcnRpYWxTd2FwRW5hYmxlZCA9IGZhbHNlOworc3RhdGljIGJv
b2wgc19hY2NlbGVyYXRlZEFuaW1hdGlvbkVuYWJsZWQgPSBmYWxzZTsKK30gLy8gbmFtZXNwYWNl
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9vbCBDQ1NldHRpbmdzOjpwZXJUaWxlUGFpbnRp
bmdFbmFibGVkKCkgeyByZXR1cm4gc19wZXJUaWxlUGFpbnRpbmdFbmFibGVkOyB9Cit2b2lkIEND
U2V0dGluZ3M6OnNldFBlclRpbGVQYWludGluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKSB7IHNfcGVy
VGlsZVBhaW50aW5nRW5hYmxlZCA9IGVuYWJsZWQ7IH0KKworYm9vbCBDQ1NldHRpbmdzOjpwYXJ0
aWFsU3dhcEVuYWJsZWQoKSB7IHJldHVybiBzX3BhcnRpYWxTd2FwRW5hYmxlZDsgfQordm9pZCBD
Q1NldHRpbmdzOjpzZXRQYXJ0aWFsU3dhcEVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IHNfcGFydGlh
bFN3YXBFbmFibGVkID0gZW5hYmxlZDsgfQorCitib29sIENDU2V0dGluZ3M6OmFjY2VsZXJhdGVk
QW5pbWF0aW9uRW5hYmxlZCgpIHsgcmV0dXJuIHNfYWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVk
OyB9Cit2b2lkIENDU2V0dGluZ3M6OnNldEFjY2VsZXJhdGVkQW5pbWF0aW9uRW5hYmxlZChib29s
IGVuYWJsZWQpIHsgc19hY2NlbGVyYXRlZEFuaW1hdGlvbkVuYWJsZWQgPSBlbmFibGVkOyB9CisK
K3ZvaWQgQ0NTZXR0aW5nczo6cmVzZXQoKQoreworICAgIHNfcGVyVGlsZVBhaW50aW5nRW5hYmxl
ZCA9IGZhbHNlOworICAgIHNfcGFydGlhbFN3YXBFbmFibGVkID0gZmFsc2U7CisgICAgc19hY2Nl
bGVyYXRlZEFuaW1hdGlvbkVuYWJsZWQgPSBmYWxzZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTZXR0aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTZXR0aW5ncy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg4ZjhjMmZmZDM1MmU1ZGE5NjRjNmRi
ZTk4ZGViMDBhY2QwYTk5ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NldHRpbmdzLmgKQEAgLTAsMCArMSw1MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwor
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBDQ1NldHRpbmdzX2gKKyNkZWZpbmUgQ0NTZXR0aW5nc19o
CisKKyNpbmNsdWRlICJJbnRTaXplLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
Q0NTZXR0aW5ncyB7CitwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgcGVyVGlsZVBhaW50aW5nRW5h
YmxlZCgpOworICAgIHN0YXRpYyBib29sIHBhcnRpYWxTd2FwRW5hYmxlZCgpOworICAgIHN0YXRp
YyBib29sIGFjY2VsZXJhdGVkQW5pbWF0aW9uRW5hYmxlZCgpOworCisgICAgLy8gVGhlc2Ugc2V0
dGVycyBzaG91bGQgb25seSBiZSB1c2VkIG9uIHRoZSBtYWluIHRocmVhZCBiZWZvcmUgdGhlIGxh
eWVyCisgICAgLy8gcmVuZGVyZXIgaXMgaW5pdGlhbGl6ZWQuCisgICAgc3RhdGljIHZvaWQgc2V0
UGVyVGlsZVBhaW50aW5nRW5hYmxlZChib29sKTsKKyAgICBzdGF0aWMgdm9pZCBzZXRQYXJ0aWFs
U3dhcEVuYWJsZWQoYm9vbCk7CisgICAgc3RhdGljIHZvaWQgc2V0QWNjZWxlcmF0ZWRBbmltYXRp
b25FbmFibGVkKGJvb2wpOworCisgICAgLy8gVGhlc2Ugc2V0dGluZ3MgYXJlIG1lYW50IHRvIGJl
IHNldCBvbmx5IG9uY2UsIGFuZCBvbmx5IHJlYWQgdGhlcmVhZnRlci4KKyAgICAvLyBUaGlzIGZ1
bmN0aW9uIGlzIG9ubHkgZm9yIHJlc2V0dGluZyBzZXR0aW5ncyBpbiB0ZXN0cy4KKyAgICBzdGF0
aWMgdm9pZCByZXNldCgpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gQ0NTZXR0aW5nc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFsU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdz
LmNwcAppbmRleCBlYWJlYmUwOTVmOWNmNzdlY2YzZWY5MjUzMTZlODFlYTM3YzE0NjYyLi5lMWQ5
Y2RiOGQ3ZGE3MTVjNzA1Y2MwZGQ2ZGFiMmU5YjY4YjFhMDg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKQEAgLTIzNCwxMiArMjM0LDYgQEAgdm9pZCBJ
bnRlcm5hbFNldHRpbmdzOjpzZXRQYWdlU2NhbGVGYWN0b3IoZmxvYXQgc2NhbGVGYWN0b3IsIGlu
dCB4LCBpbnQgeSwgRXhjZXAKICAgICBwYWdlKCktPnNldFBhZ2VTY2FsZUZhY3RvcihzY2FsZUZh
Y3RvciwgSW50UG9pbnQoeCwgeSkpOwogfQogCi12b2lkIEludGVybmFsU2V0dGluZ3M6OnNldFBl
clRpbGVEcmF3aW5nRW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewot
ICAgIEludGVybmFsU2V0dGluZ3NHdWFyZEZvclNldHRpbmdzKCk7Ci0gICAgc2V0dGluZ3MoKS0+
c2V0UGVyVGlsZURyYXdpbmdFbmFibGVkKGVuYWJsZWQpOwotfQotCiB2b2lkIEludGVybmFsU2V0
dGluZ3M6OnNldFNoYWRvd0RPTUVuYWJsZWQoYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbFNldHRpbmdzLmgKaW5kZXggNGZlODIyNjM1Yjc1YmQzMjczNGI2MmU1MDA2NDY2ZDVkNzhm
MGY5MC4uY2QyOGI2MzY1ZGJmYzc0M2E1MjgwOGQ1ZDNmODIyNWU4ZmI4NTY0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmgKQEAgLTYxLDcgKzYxLDYgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0VW5pZmllZFRleHRDaGVja2luZ0VuYWJsZWQoYm9vbCwgRXhjZXB0
aW9uQ29kZSYpOwogICAgIGJvb2wgdW5pZmllZFRleHRDaGVja2luZ0VuYWJsZWQoRXhjZXB0aW9u
Q29kZSYpOwogICAgIHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yLCBp
bnQgeCwgaW50IHksIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHNldFBlclRpbGVEcmF3aW5n
RW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNldFRvdWNo
RXZlbnRFbXVsYXRpb25FbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYpOwogICAg
IHZvaWQgc2V0RGV2aWNlU3VwcG9ydHNUb3VjaChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUm
KTsKICAgICB2b2lkIHNldERldmljZVN1cHBvcnRzTW91c2UoYm9vbCBlbmFibGVkLCBFeGNlcHRp
b25Db2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBp
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQppbmRleCBmOGE0YmM2NWRkOWM0
MDcxZDhkY2VlNmJjNjViZWExZGI3MmZhMjY2Li45ZmRhOGRjOGY3ODU1ZWZkYzQ5YzczNGM3NmVh
NDRlOGI0ZDdlYWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5n
eXBpCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKQEAgLTg4LDYgKzg4
LDcgQEAKICAgICAgICAgICAgICd0ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwJywKICAgICAgICAg
ICAgICd0ZXN0cy9DQ1NpbmdsZVRocmVhZFByb3h5VGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rl
c3RzL0NDU29saWRDb2xvckxheWVySW1wbFRlc3QuY3BwJywKKyAgICAgICAgICAgICd0ZXN0cy9D
Q1Rlc3RDb21tb24uaCcsCiAgICAgICAgICAgICAndGVzdHMvQ0NUaWxlZExheWVySW1wbFRlc3Qu
Y3BwJywKICAgICAgICAgICAgICd0ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmgnLAogICAg
ICAgICAgICAgJ3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uY3BwJywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3IuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3IuaAppbmRleCAzZWFkZWYzMmMzN2Iz
MTM0OWI5OTM3N2EyZTE5ZjhjMDZhOGY4ZDQ4Li42ZTBkYTJiMjI3MGFiMTE3YWYxMTZjYTJkZDI0
ODUyOGJhNGRhNDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJDb21wb3NpdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29t
cG9zaXRvci5oCkBAIC0yNiw2ICsyNiw4IEBACiAjaWZuZGVmIFdlYkNvbXBvc2l0b3JfaAogI2Rl
ZmluZSBXZWJDb21wb3NpdG9yX2gKIAorI2RlZmluZSBXRUJDT01QT1NJVE9SX09XTlNfU0VUVElO
R1MgMQorCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtNDksNiArNTEsMTEgQEAgcHVibGljOgogICAgIC8vIGFmdGVyIHNodXRkb3duLgog
ICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIHZvaWQgc2h1dGRvd24oKTsKIAorICAgIC8vIFRoZXNl
IG1heSBvbmx5IGJlIGNhbGxlZCBiZWZvcmUgaW5pdGlhbGl6ZS4KKyAgICBXRUJLSVRfRVhQT1JU
IHN0YXRpYyB2b2lkIHNldFBlclRpbGVQYWludGluZ0VuYWJsZWQoYm9vbCk7CisgICAgV0VCS0lU
X0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRQYXJ0aWFsU3dhcEVuYWJsZWQoYm9vbCk7CisgICAgV0VC
S0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRBY2NlbGVyYXRlZEFuaW1hdGlvbkVuYWJsZWQoYm9v
bCk7CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5XZWJDb21wb3NpdG9yKCkgeyB9CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKaW5kZXggODhkOWEw
MTM4ZDIxNDFhMTE0YjkwYmU5NWNkMGQzNjMyYzYwNjNmNi4uMDUyOGQ4ZWY0ZWFiYzZmZjhkN2Uy
NzA4MTQyMGFmYTA2ZGM5MjA1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJTZXR0aW5ncy5oCkBAIC0xNDcsOSArMTQ3LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBzZXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0VmlzdWFsV29yZE1vdmVtZW50RW5hYmxlZChib29sKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkKGJvb2wpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0UGVyVGlsZVBhaW50aW5nRW5hYmxlZChib29sKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIHNldFBhcnRpYWxTd2FwRW5hYmxlZChib29sKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHNldFRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHNldFZpZXdwb3J0RW5hYmxlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldE1l
ZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIGJv
b2wgdmlld3BvcnRFbmFibGVkKCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViQ29tcG9zaXRvckltcGwuY3BwCmluZGV4IDkxZDhiMWJlNjYwNDVhMzk4ZDI3
ODg4ZWNjZTBmN2ZiNmYyMzI5MTEuLmY0ZTk2ZTBiZTE5MTA2YjM5YTBiZmQyODJjYjQ5YzAyZDFj
ZDBhMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0
b3JJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9y
SW1wbC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJXZWJJbnB1dEV2ZW50LmgiCiAj
aW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCiAjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgor
I2luY2x1ZGUgImNjL0NDU2V0dGluZ3MuaCIKICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0
aXZlcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTUxLDYgKzUyLDI1IEBAIHZv
aWQgV2ViQ29tcG9zaXRvcjo6aW5pdGlhbGl6ZShXZWJUaHJlYWQqIGltcGxUaHJlYWQpCiB2b2lk
IFdlYkNvbXBvc2l0b3I6OnNodXRkb3duKCkKIHsKICAgICBXZWJDb21wb3NpdG9ySW1wbDo6c2h1
dGRvd24oKTsKKyAgICBDQ1NldHRpbmdzOjpyZXNldCgpOworfQorCit2b2lkIFdlYkNvbXBvc2l0
b3I6OnNldFBlclRpbGVQYWludGluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAgIEFTU0VS
VCghV2ViQ29tcG9zaXRvckltcGw6OmluaXRpYWxpemVkKCkpOworICAgIENDU2V0dGluZ3M6OnNl
dFBlclRpbGVQYWludGluZ0VuYWJsZWQoZW5hYmxlZCk7Cit9CisKK3ZvaWQgV2ViQ29tcG9zaXRv
cjo6c2V0UGFydGlhbFN3YXBFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBBU1NFUlQoIVdl
YkNvbXBvc2l0b3JJbXBsOjppbml0aWFsaXplZCgpKTsKKyAgICBDQ1NldHRpbmdzOjpzZXRQYXJ0
aWFsU3dhcEVuYWJsZWQoZW5hYmxlZCk7Cit9CisKK3ZvaWQgV2ViQ29tcG9zaXRvcjo6c2V0QWNj
ZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBBU1NFUlQoIVdl
YkNvbXBvc2l0b3JJbXBsOjppbml0aWFsaXplZCgpKTsKKyAgICBDQ1NldHRpbmdzOjpzZXRBY2Nl
bGVyYXRlZEFuaW1hdGlvbkVuYWJsZWQoZW5hYmxlZCk7CiB9CiAKIHZvaWQgV2ViQ29tcG9zaXRv
ckltcGw6OmluaXRpYWxpemUoV2ViVGhyZWFkKiBpbXBsVGhyZWFkKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcAppbmRleCBmZWQzZGI5NzU5ODVj
NzhjMzYyOTEyODc4OGFjNjQxYWYwMTM3ZjgwLi5lMDQyZjI1MTczMGZhYzk3ZWE4ZjYxODQ2MDRi
OTgyZmZiNTAwOTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJM
YXllclRyZWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXll
clRyZWVWaWV3LmNwcApAQCAtMzcsMTggKzM3LDE1IEBACiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci1XZWJMYXllclRyZWVWaWV3OjpTZXR0aW5nczo6b3Bl
cmF0b3IgQ0NTZXR0aW5ncygpIGNvbnN0CisKK1dlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzOjpv
cGVyYXRvciBDQ0xheWVyVHJlZVNldHRpbmdzKCkgY29uc3QKIHsKLSAgICBDQ1NldHRpbmdzIHNl
dHRpbmdzOwotICAgIHNldHRpbmdzLmFjY2VsZXJhdGVQYWludGluZyA9IGFjY2VsZXJhdGVQYWlu
dGluZzsKKyAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOwogICAgIHNldHRpbmdzLmZv
cmNlU29mdHdhcmVDb21wb3NpdGluZyA9IGZvcmNlU29mdHdhcmVDb21wb3NpdGluZzsKICAgICBz
ZXR0aW5ncy5zaG93RlBTQ291bnRlciA9IHNob3dGUFNDb3VudGVyOwogICAgIHNldHRpbmdzLnNo
b3dQbGF0Zm9ybUxheWVyVHJlZSA9IHNob3dQbGF0Zm9ybUxheWVyVHJlZTsKICAgICBzZXR0aW5n
cy5zaG93UGFpbnRSZWN0cyA9IHNob3dQYWludFJlY3RzOwogICAgIHNldHRpbmdzLnJlZnJlc2hS
YXRlID0gcmVmcmVzaFJhdGU7Ci0gICAgc2V0dGluZ3MucGVyVGlsZVBhaW50aW5nID0gcGVyVGls
ZVBhaW50aW5nOwotICAgIHNldHRpbmdzLnBhcnRpYWxTd2FwRW5hYmxlZCA9IHBhcnRpYWxTd2Fw
RW5hYmxlZDsKLSAgICBzZXR0aW5ncy50aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQgPSB0aHJlYWRl
ZEFuaW1hdGlvbkVuYWJsZWQ7CiAgICAgc2V0dGluZ3MuZGVmYXVsdFRpbGVTaXplID0gZGVmYXVs
dFRpbGVTaXplOwogICAgIHNldHRpbmdzLm1heFVudGlsZWRMYXllclNpemUgPSBtYXhVbnRpbGVk
TGF5ZXJTaXplOwogICAgIHNldHRpbmdzLmRldmljZVNjYWxlRmFjdG9yID0gZGV2aWNlU2NhbGVG
YWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5n
c0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNw
cAppbmRleCA5NDIzNjg5Njg3NjZlNzZiYTg0Mjc2MjA3M2E1MzMyOWJhMDZmNzc3Li41Zjg3NzZi
NThhMzU4ODVhOWFhNTIyZTU2OTUzYzRiMGRkYmJhMTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKQEAgLTU5MiwyMSArNTkyLDYgQEAgdm9p
ZCBXZWJTZXR0aW5nc0ltcGw6OnNldEFjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkKGJvb2wgZW5h
YmxlZCkKICAgICBtX3NldHRpbmdzLT5zZXRBY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkKGVuYWJs
ZWQpOwogfQogCi12b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0UGVyVGlsZVBhaW50aW5nRW5hYmxl
ZChib29sIGVuYWJsZWQpCi17Ci0gICAgbV9zZXR0aW5ncy0+c2V0UGVyVGlsZURyYXdpbmdFbmFi
bGVkKGVuYWJsZWQpOwotfQotCi12b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0UGFydGlhbFN3YXBF
bmFibGVkKGJvb2wgZW5hYmxlZCkKLXsKLSAgICBtX3NldHRpbmdzLT5zZXRQYXJ0aWFsU3dhcEVu
YWJsZWQoZW5hYmxlZCk7Ci19Ci0KLXZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRUaHJlYWRlZEFu
aW1hdGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkKQotewotICAgIG1fc2V0dGluZ3MtPnNldFRocmVh
ZGVkQW5pbWF0aW9uRW5hYmxlZChlbmFibGVkKTsKLX0KLQogdm9pZCBXZWJTZXR0aW5nc0ltcGw6
OnNldE1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlKGJvb2wgcmVxdWlyZWQpCiB7CiAg
ICAgbV9zZXR0aW5ncy0+c2V0TWVkaWFQbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUocmVxdWly
ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJ
bXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAppbmRl
eCBlYTdjZjNmZjkyMjNkODRiZjQyNGZkMjdjNWI5MzQ2MGU0NTg3YzUzLi4yYjU4YzA0NDNiOWYx
MDc3Y2EyNDg3YjcwMjY3ZDA1NDFjNWRkYjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJTZXR0aW5nc0ltcGwuaApAQCAtMTQ0LDkgKzE0NCw2IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgc2V0U2hvdWxkRGlzcGxheUNhcHRpb25zKGJvb2wpOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRTaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9ucyhib29sKTsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0QWNjZWxlcmF0ZWRQYWludGluZ0VuYWJsZWQoYm9vbCk7Ci0gICAgdmlydHVhbCB2
b2lkIHNldFBlclRpbGVQYWludGluZ0VuYWJsZWQoYm9vbCk7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dFBhcnRpYWxTd2FwRW5hYmxlZChib29sKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGhyZWFkZWRB
bmltYXRpb25FbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRGaXhlZFBvc2l0aW9u
Q3JlYXRlc1N0YWNraW5nQ29udGV4dChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Vmlld3Bv
cnRFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRNZWRpYVBsYXliYWNrUmVxdWly
ZXNVc2VyR2VzdHVyZShib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcAppbmRleCA5MzBhMjIzZmNkOGM0ZmZmNTJkNjlhYTZjYWY5MDVjY2Y1NTJkZDZlLi4z
YzAyZDM2NDJhYWU3NzBkOTBhN2Y4OWM1ZDBiMjI3MGY4MzkzZDBiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0xNDYsNiArMTQ2LDcgQEAKICNpbmNs
dWRlICJXZWJWaWV3Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVudC5oIgogI2luY2x1ZGUg
ImNjL0NDUHJveHkuaCIKKyNpbmNsdWRlICJjYy9DQ1NldHRpbmdzLmgiCiAjaW5jbHVkZSAicGFp
bnRpbmcvR3JhcGhpY3NDb250ZXh0QnVpbGRlci5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYktp
dFBsYXRmb3JtU3VwcG9ydC5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgpAQCAt
NDU4LDcgKzQ1OSw3IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3Q2xpZW50KiBj
bGllbnQpCiAjaWYgRU5BQkxFKEJBVFRFUllfU1RBVFVTKQogICAgIHByb3ZpZGVCYXR0ZXJ5VG8o
bV9wYWdlLmdldCgpLCBtX2JhdHRlcnlDbGllbnQuZ2V0KCkpOwogI2VuZGlmCi0gICAgCisKICAg
ICBtX3BhZ2UtPnNldEdyb3VwTmFtZShwYWdlR3JvdXBOYW1lKTsKIAogI2lmIEVOQUJMRShQQUdF
X1ZJU0lCSUxJVFlfQVBJKQpAQCAtMzQ3MSwxMCArMzQ3Miw2IEBAIHZvaWQgV2ViVmlld0ltcGw6
OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFjdGl2ZSkKICAgICAgICAg
bGF5ZXJUcmVlVmlld1NldHRpbmdzLnNob3dQYWludFJlY3RzID0gc2V0dGluZ3NJbXBsKCktPnNo
b3dQYWludFJlY3RzKCk7CiAgICAgICAgIGxheWVyVHJlZVZpZXdTZXR0aW5ncy5mb3JjZVNvZnR3
YXJlQ29tcG9zaXRpbmcgPSBzZXR0aW5ncygpLT5mb3JjZVNvZnR3YXJlQ29tcG9zaXRpbmcoKTsK
IAotICAgICAgICBsYXllclRyZWVWaWV3U2V0dGluZ3MucGVyVGlsZVBhaW50aW5nID0gcGFnZSgp
LT5zZXR0aW5ncygpLT5wZXJUaWxlRHJhd2luZ0VuYWJsZWQoKTsKLSAgICAgICAgbGF5ZXJUcmVl
Vmlld1NldHRpbmdzLnBhcnRpYWxTd2FwRW5hYmxlZCA9IHBhZ2UoKS0+c2V0dGluZ3MoKS0+cGFy
dGlhbFN3YXBFbmFibGVkKCk7Ci0gICAgICAgIGxheWVyVHJlZVZpZXdTZXR0aW5ncy50aHJlYWRl
ZEFuaW1hdGlvbkVuYWJsZWQgPSBwYWdlKCktPnNldHRpbmdzKCktPnRocmVhZGVkQW5pbWF0aW9u
RW5hYmxlZCgpOwotCiAgICAgICAgIGxheWVyVHJlZVZpZXdTZXR0aW5ncy5kZWZhdWx0VGlsZVNp
emUgPSBzZXR0aW5nc0ltcGwoKS0+ZGVmYXVsdFRpbGVTaXplKCk7CiAgICAgICAgIGxheWVyVHJl
ZVZpZXdTZXR0aW5ncy5tYXhVbnRpbGVkTGF5ZXJTaXplID0gc2V0dGluZ3NJbXBsKCktPm1heFVu
dGlsZWRMYXllclNpemUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAppbmRleCBhNjFkZDgxMmQzODc2ZjQ3
NzM1ZDY5NWQzZmNlMDdmZWY0OWJiNDQ1Li43ZDZkY2Y3OWVlNGZjMDFlNGNhN2YwZWQwYmYyOWE5
ZWNhOGY1M2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5
ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVk
ZSAiQ0NBbmltYXRpb25UZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiQ0NMYXllclRlc3RDb21tb24u
aCIKKyNpbmNsdWRlICJDQ1Rlc3RDb21tb24uaCIKICNpbmNsdWRlICJGYWtlV2ViR3JhcGhpY3ND
b250ZXh0M0QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCIKICNpbmNs
dWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKQEAgLTM2LDYgKzM3LDcgQEAKICNpbmNsdWRl
ICJjYy9DQ0xheWVyVGlsaW5nRGF0YS5oIgogI2luY2x1ZGUgImNjL0NDUXVhZEN1bGxlci5oIgog
I2luY2x1ZGUgImNjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmgiCisjaW5jbHVkZSAiY2MvQ0NTZXR0
aW5ncy5oIgogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKICNpbmNsdWRlICJj
Yy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVyZUxheWVySW1w
bC5oIgpAQCAtNjYsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9kaWRSZXF1ZXN0Q29t
bWl0KGZhbHNlKQogICAgICAgICAsIG1fZGlkUmVxdWVzdFJlZHJhdyhmYWxzZSkKICAgICB7Ci0g
ICAgICAgIENDU2V0dGluZ3Mgc2V0dGluZ3M7CisgICAgICAgIENDTGF5ZXJUcmVlU2V0dGluZ3Mg
c2V0dGluZ3M7CiAgICAgICAgIG1faG9zdEltcGwgPSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVh
dGUoc2V0dGluZ3MsIHRoaXMpOwogICAgICAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJS
ZW5kZXJlcihjcmVhdGVDb250ZXh0KCksIFVudGhyb3R0bGVkVXBsb2FkZXIpOwogICAgICAgICBt
X2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMCwgMTApKTsKQEAgLTgxLDEwICs4
Myw5IEBAIHB1YmxpYzoKIAogICAgIFBhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gY3Jl
YXRlTGF5ZXJUcmVlSG9zdChib29sIHBhcnRpYWxTd2FwLCBQYXNzUmVmUHRyPENDR3JhcGhpY3ND
b250ZXh0PiBncmFwaGljc0NvbnRleHQsIFBhc3NPd25QdHI8Q0NMYXllckltcGw+IHJvb3RQdHIp
CiAgICAgewotICAgICAgICBDQ1NldHRpbmdzIHNldHRpbmdzOwotCi0gICAgICAgIHNldHRpbmdz
LnBhcnRpYWxTd2FwRW5hYmxlZCA9IHBhcnRpYWxTd2FwOworICAgICAgICBDQ1NldHRpbmdzOjpz
ZXRQYXJ0aWFsU3dhcEVuYWJsZWQocGFydGlhbFN3YXApOwogCisgICAgICAgIENDTGF5ZXJUcmVl
U2V0dGluZ3Mgc2V0dGluZ3M7CiAgICAgICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBt
eUhvc3RJbXBsID0gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKHNldHRpbmdzLCB0aGlzKTsK
IAogICAgICAgICBteUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihncmFwaGljc0Nv
bnRleHQsIFVudGhyb3R0bGVkVXBsb2FkZXIpOwpAQCAtMTUwLDYgKzE1MSw3IEBAIHByb3RlY3Rl
ZDoKICAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gbV9ob3N0SW1wbDsKICAgICBib29s
IG1fZGlkUmVxdWVzdENvbW1pdDsKICAgICBib29sIG1fZGlkUmVxdWVzdFJlZHJhdzsKKyAgICBD
Q1Njb3BlZFNldHRpbmdzIG1fc2NvcGVkU2V0dGluZ3M7CiB9OwogCiBURVNUX0YoQ0NMYXllclRy
ZWVIb3N0SW1wbFRlc3QsIHNjcm9sbERlbHRhTm9MYXllcnMpCkBAIC0xMTE1LDggKzExMTcsOCBA
QCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHBhcnRpYWxTd2FwUmVjZWl2ZXNEYW1h
Z2VSZWN0KQogCiAgICAgLy8gVGhpcyB0ZXN0IGNyZWF0ZXMgaXRzIG93biBDQ0xheWVyVHJlZUhv
c3RJbXBsLCBzbwogICAgIC8vIHRoYXQgd2UgY2FuIGZvcmNlIHBhcnRpYWwgc3dhcCBlbmFibGVk
LgotICAgIENDU2V0dGluZ3Mgc2V0dGluZ3M7Ci0gICAgc2V0dGluZ3MucGFydGlhbFN3YXBFbmFi
bGVkID0gdHJ1ZTsKKyAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOworICAgIENDU2V0
dGluZ3M6OnNldFBhcnRpYWxTd2FwRW5hYmxlZCh0cnVlKTsKICAgICBPd25QdHI8Q0NMYXllclRy
ZWVIb3N0SW1wbD4gbGF5ZXJUcmVlSG9zdEltcGwgPSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVh
dGUoc2V0dGluZ3MsIHRoaXMpOwogICAgIGxheWVyVHJlZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5
ZXJSZW5kZXJlcihjY0NvbnRleHQsIFVudGhyb3R0bGVkVXBsb2FkZXIpOwogICAgIGxheWVyVHJl
ZUhvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSg1MDAsIDUwMCkpOwpAQCAtMTMyMiw3
ICsxMzI0LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBwYXJ0aWFsU3dhcE5v
VXBkYXRlKQogICAgIGhhcm5lc3MubXVzdFNldFNjaXNzb3IoMCwgMCwgMTAsIDEwKTsKIAogICAg
IE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBteUhvc3RJbXBsID0gY3JlYXRlTGF5ZXJUcmVl
SG9zdCh0cnVlLCBjb250ZXh0LCBGYWtlTGF5ZXJXaXRoUXVhZHM6OmNyZWF0ZSgxKSk7Ci0gICAg
CisKICAgICAvLyBEcmF3IG9uY2UgdG8gbWFrZSBzdXJlIGxheWVyIGlzIG5vdCBuZXcKICAgICBD
Q0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7CiAgICAgRVhQRUNUX1RSVUUobXlI
b3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOwpAQCAtMTM0OSw3ICsxMzUxLDcgQEAgcHVi
bGljOgogICAgICAgICAgICAgcmV0dXJuIFdlYlN0cmluZygiR0xfQ0hST01JVU1fcG9zdF9zdWJf
YnVmZmVyIik7CiAgICAgICAgIHJldHVybiBXZWJTdHJpbmcoKTsKICAgICB9Ci0gICAgCisKICAg
ICBXZWJTdHJpbmcgZ2V0UmVxdWVzdGFibGVFeHRlbnNpb25zQ0hST01JVU0oKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIFdlYlN0cmluZygiR0xfQ0hST01JVU1fcG9zdF9zdWJfYnVmZmVyIik7CkBA
IC0xMzU4LDEwICsxMzYwLDExIEBAIHB1YmxpYzoKIAogc3RhdGljIFBhc3NPd25QdHI8Q0NMYXll
clRyZWVIb3N0SW1wbD4gc2V0dXBMYXllcnNGb3JPcGFjaXR5KGJvb2wgcGFydGlhbFN3YXAsIEND
TGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqIGNsaWVudCkKIHsKLSAgICBDQ1NldHRpbmdzIHNldHRp
bmdzOwotICAgIHNldHRpbmdzLnBhcnRpYWxTd2FwRW5hYmxlZCA9IHBhcnRpYWxTd2FwOworICAg
IENDU2V0dGluZ3M6OnNldFBhcnRpYWxTd2FwRW5hYmxlZChwYXJ0aWFsU3dhcCk7CiAKICAgICBS
ZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQgPSBDQ0dyYXBoaWNzQ29udGV4dDo6Y3Jl
YXRlM0QoR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9t
V2ViQ29udGV4dChhZG9wdFB0cihuZXcgUGFydGlhbFN3YXBDb250ZXh0KCkpLCBHcmFwaGljc0Nv
bnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpKTsKKworICAgIENDTGF5ZXJUcmVl
U2V0dGluZ3Mgc2V0dGluZ3M7CiAgICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IG15SG9z
dEltcGwgPSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoc2V0dGluZ3MsIGNsaWVudCk7CiAg
ICAgbXlIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dC5yZWxlYXNlKCks
IFVudGhyb3R0bGVkVXBsb2FkZXIpOwogICAgIG15SG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJ
bnRTaXplKDEwMCwgMTAwKSk7CkBAIC0xNDY3LDggKzE0NzAsOCBAQCBURVNUX0YoQ0NMYXllclRy
ZWVIb3N0SW1wbFRlc3QsIGNvbnRyaWJ1dGluZ0xheWVyRW1wdHlTY2lzc29yTm9QYXJ0aWFsU3dh
cCkKIAogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBkaWREcmF3Tm90Q2FsbGVkT25T
Y2lzc29yZWRMYXllcikKIHsKLSAgICBDQ1NldHRpbmdzIHNldHRpbmdzOwotICAgIHNldHRpbmdz
LnBhcnRpYWxTd2FwRW5hYmxlZCA9IHRydWU7CisgICAgQ0NMYXllclRyZWVTZXR0aW5ncyBzZXR0
aW5nczsKKyAgICBDQ1NldHRpbmdzOjpzZXRQYXJ0aWFsU3dhcEVuYWJsZWQodHJ1ZSk7CiAKICAg
ICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQgPSBDQ0dyYXBoaWNzQ29udGV4dDo6
Y3JlYXRlM0QoR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRG
cm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgUGFydGlhbFN3YXBDb250ZXh0KCkpLCBHcmFwaGlj
c0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpKTsKICAgICBPd25QdHI8Q0NM
YXllclRyZWVIb3N0SW1wbD4gbXlIb3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0
ZShzZXR0aW5ncywgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAppbmRleCBhYWNkOWE1ZDY5MGYzMjE3NGIxZTJlOWEy
ZTIxYmJjOTdlYTZkMGM2Li41YmMzZTZiYmQzOTk0N2JiZTY1ZTNiNDY4MDIzZGMxMWU1MzViMWM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9z
dFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVI
b3N0VGVzdC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJDb250ZW50TGF5ZXJDaHJv
bWl1bS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIgogI2luY2x1ZGUg
ImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKKyNpbmNsdWRlICJjYy9DQ1NldHRpbmdzLmgiCiAj
aW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgImNjL0NDVGltaW5nRnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJUaHJlYWQuaCIKQEAgLTU3LDYgKzU4LDI1
IEBAIG5hbWVzcGFjZSB7CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RUZXN0IDogcHVibGljIENDVGhy
ZWFkZWRUZXN0IHsgfTsKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdFRlc3RUaHJlYWRPbmx5IDogcHVi
bGljIENDVGhyZWFkZWRUZXN0VGhyZWFkT25seSB7IH07CiAKKy8vIFNob3J0bGl2ZWQgbGF5ZXJU
cmVlSG9zdHMgc2hvdWxkbid0IGRpZS4KK2NsYXNzIENDTGF5ZXJUcmVlSG9zdFRlc3RTaG9ydGxp
dmVkMSA6IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3RUZXN0IHsKK3B1YmxpYzoKKyAgICBDQ0xheWVy
VHJlZUhvc3RUZXN0U2hvcnRsaXZlZDEoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBiZWdpblRl
c3QoKQorICAgIHsKKyAgICAgICAgLy8gS2lsbCB0aGUgbGF5ZXJUcmVlSG9zdCBpbW1lZGlhdGVs
eS4KKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIoMCk7CisgICAgICAgIG1f
bGF5ZXJUcmVlSG9zdC5jbGVhcigpOworCisgICAgICAgIGVuZFRlc3QoKTsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgYWZ0ZXJUZXN0KCkKKyAgICB7CisgICAgfQorfTsKKwogLy8gU2hvcnRs
aXZlZCBsYXllclRyZWVIb3N0cyBzaG91bGRuJ3QgZGllIHdpdGggYSBjb21taXQgaW4gZmxpZ2h0
LgogY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdFNob3J0bGl2ZWQyIDogcHVibGljIENDTGF5ZXJU
cmVlSG9zdFRlc3QgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ1Rlc3RDb21tb24uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NU
ZXN0Q29tbW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODlmY2U5ODE4OGNjYmQzMWJlOTgzMGMyNWY2NjA3MTMy
MTMzYjdjNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NUZXN0Q29tbW9uLmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBD
Q1Rlc3RDb21tb25faAorI2RlZmluZSBDQ1Rlc3RDb21tb25faAorCisjaW5jbHVkZSAiY2MvQ0NT
ZXR0aW5ncy5oIgorCituYW1lc3BhY2UgV2ViS2l0VGVzdHMgeworCisvLyBJZiB5b3UgaGF2ZSBh
IHRlc3QgdGhhdCBtb2RpZmllcyBvciB1c2VzIGdsb2JhbCBzZXR0aW5ncywga2VlcCBhbiBpbnN0
YW5jZQorLy8gb2YgdGhpcyBjbGFzcyB0byBlbnN1cmUgdGhhdCB5b3Ugc3RhcnQgYW5kIGVuZCB3
aXRoIGEgY2xlYW4gc2xhdGUuCitjbGFzcyBDQ1Njb3BlZFNldHRpbmdzIHsKK3B1YmxpYzoKKyAg
ICBDQ1Njb3BlZFNldHRpbmdzKCkgeyBXZWJDb3JlOjpDQ1NldHRpbmdzOjpyZXNldCgpOyB9Cisg
ICAgfkNDU2NvcGVkU2V0dGluZ3MoKSB7IFdlYkNvcmU6OkNDU2V0dGluZ3M6OnJlc2V0KCk7IH0K
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdFRlc3RzCisKKyNlbmRpZiAvLyBDQ1Rlc3RDb21t
b25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RocmVhZGVk
VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGhyZWFkZWRUZXN0LmNw
cAppbmRleCBjOWViYmExMjJmZmFlY2FiNGMwYzIwOTdlZmY3MDI4MDk0YTU2MTI2Li43YjQ2OGFi
N2M5NjJhZmNmZjAzOGIyMDMxNTlhZWVkY2JhYTI0MjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDVGhyZWFkZWRUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDVGhyZWFkZWRUZXN0LmNwcApAQCAtMTEzLDcgKzExMyw3IEBAIFBh
c3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IFRlc3RIb29rczo6Y3JlYXRlQ29udGV4dCgpCiAg
ICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0
RnJvbVdlYkNvbnRleHQod2ViQ29udGV4dC5yZWxlYXNlKCksIEdyYXBoaWNzQ29udGV4dDNEOjpS
ZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyk7CiB9CiAKLVBhc3NPd25QdHI8TW9ja0xheWVyVHJl
ZUhvc3RJbXBsPiBNb2NrTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShUZXN0SG9va3MqIHRlc3RI
b29rcywgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGll
bnQqIGNsaWVudCkKK1Bhc3NPd25QdHI8TW9ja0xheWVyVHJlZUhvc3RJbXBsPiBNb2NrTGF5ZXJU
cmVlSG9zdEltcGw6OmNyZWF0ZShUZXN0SG9va3MqIHRlc3RIb29rcywgY29uc3QgQ0NMYXllclRy
ZWVTZXR0aW5ncyYgc2V0dGluZ3MsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqIGNsaWVudCkK
IHsKICAgICByZXR1cm4gYWRvcHRQdHIobmV3IE1vY2tMYXllclRyZWVIb3N0SW1wbCh0ZXN0SG9v
a3MsIHNldHRpbmdzLCBjbGllbnQpKTsKIH0KQEAgLTE1NSw3ICsxNTUsNyBAQCBkb3VibGUgTW9j
a0xheWVyVHJlZUhvc3RJbXBsOjpsb3dGcmVxdWVuY3lBbmltYXRpb25JbnRlcnZhbCgpIGNvbnN0
CiAgICAgcmV0dXJuIDEuMCAvIDYwOwogfQogCi1Nb2NrTGF5ZXJUcmVlSG9zdEltcGw6Ok1vY2tM
YXllclRyZWVIb3N0SW1wbChUZXN0SG9va3MqIHRlc3RIb29rcywgY29uc3QgQ0NTZXR0aW5ncyYg
c2V0dGluZ3MsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqIGNsaWVudCkKK01vY2tMYXllclRy
ZWVIb3N0SW1wbDo6TW9ja0xheWVyVHJlZUhvc3RJbXBsKFRlc3RIb29rcyogdGVzdEhvb2tzLCBj
b25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncywgQ0NMYXllclRyZWVIb3N0SW1wbENs
aWVudCogY2xpZW50KQogICAgIDogQ0NMYXllclRyZWVIb3N0SW1wbChzZXR0aW5ncywgY2xpZW50
KQogICAgICwgbV90ZXN0SG9va3ModGVzdEhvb2tzKQogewpAQCAtMTY0LDEzICsxNjQsOSBAQCBN
b2NrTGF5ZXJUcmVlSG9zdEltcGw6Ok1vY2tMYXllclRyZWVIb3N0SW1wbChUZXN0SG9va3MqIHRl
c3RIb29rcywgY29uc3QgQ0NTZXR0aQogLy8gQWRhcHRzIENDTGF5ZXJUcmVlSG9zdCBmb3IgdGVz
dC4gSW5qZWN0cyBNb2NrTGF5ZXJUcmVlSG9zdEltcGwuCiBjbGFzcyBNb2NrTGF5ZXJUcmVlSG9z
dCA6IHB1YmxpYyBXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3QgewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzT3duUHRyPE1vY2tMYXllclRyZWVIb3N0PiBjcmVhdGUoVGVzdEhvb2tzKiB0ZXN0SG9v
a3MsIFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50LCBQYXNzUmVmUHRyPFdl
YkNvcmU6OkxheWVyQ2hyb21pdW0+IHJvb3RMYXllciwgY29uc3QgV2ViQ29yZTo6Q0NTZXR0aW5n
cyYgc2V0dGluZ3MpCisgICAgc3RhdGljIFBhc3NPd25QdHI8TW9ja0xheWVyVHJlZUhvc3Q+IGNy
ZWF0ZShUZXN0SG9va3MqIHRlc3RIb29rcywgV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Q2xpZW50
KiBjbGllbnQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6TGF5ZXJDaHJvbWl1bT4gcm9vdExheWVyLCBj
b25zdCBXZWJDb3JlOjpDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncykKICAgICB7Ci0gICAg
ICAgIC8vIEZvciB0aGVzZSB0ZXN0cywgd2Ugd2lsbCBlbmFibGUgdGhyZWFkZWQgYW5pbWF0aW9u
cy4KLSAgICAgICAgQ0NTZXR0aW5ncyBzZXR0aW5nc0NvcHkgPSBzZXR0aW5nczsKLSAgICAgICAg
c2V0dGluZ3NDb3B5LnRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZCA9IHRydWU7Ci0KLSAgICAgICAg
T3duUHRyPE1vY2tMYXllclRyZWVIb3N0PiBsYXllclRyZWVIb3N0KGFkb3B0UHRyKG5ldyBNb2Nr
TGF5ZXJUcmVlSG9zdCh0ZXN0SG9va3MsIGNsaWVudCwgc2V0dGluZ3NDb3B5KSkpOworICAgICAg
ICBPd25QdHI8TW9ja0xheWVyVHJlZUhvc3Q+IGxheWVyVHJlZUhvc3QoYWRvcHRQdHIobmV3IE1v
Y2tMYXllclRyZWVIb3N0KHRlc3RIb29rcywgY2xpZW50LCBzZXR0aW5ncykpKTsKICAgICAgICAg
Ym9vbCBzdWNjZXNzID0gbGF5ZXJUcmVlSG9zdC0+aW5pdGlhbGl6ZSgpOwogICAgICAgICBFWFBF
Q1RfVFJVRShzdWNjZXNzKTsKICAgICAgICAgbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKHJv
b3RMYXllcik7CkBAIC0xODUsMTAgKzE4MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFz
c093blB0cjxXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsPiBjcmVhdGVMYXllclRyZWVIb3N0
SW1wbChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KiBjbGllbnQpCiAgICAgewot
ICAgICAgICAvLyBGb3IgdGhlc2UgdGVzdHMsIHdlIHdpbGwgZW5hYmxlIHRocmVhZGVkIGFuaW1h
dGlvbnMuCi0gICAgICAgIENDU2V0dGluZ3MgY29weVNldHRpbmdzID0gc2V0dGluZ3MoKTsKLSAg
ICAgICAgY29weVNldHRpbmdzLnRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZCA9IHRydWU7Ci0gICAg
ICAgIHJldHVybiBNb2NrTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShtX3Rlc3RIb29rcywgY29w
eVNldHRpbmdzLCBjbGllbnQpOworICAgICAgICByZXR1cm4gTW9ja0xheWVyVHJlZUhvc3RJbXBs
OjpjcmVhdGUobV90ZXN0SG9va3MsIHNldHRpbmdzKCksIGNsaWVudCk7CiAgICAgfQogCiAgICAg
dmlydHVhbCB2b2lkIGRpZEFkZEFuaW1hdGlvbigpIE9WRVJSSURFCkBAIC0xOTgsNyArMTkxLDcg
QEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBNb2NrTGF5ZXJUcmVlSG9zdChUZXN0
SG9va3MqIHRlc3RIb29rcywgV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQs
IGNvbnN0IFdlYkNvcmU6OkNDU2V0dGluZ3MmIHNldHRpbmdzKQorICAgIE1vY2tMYXllclRyZWVI
b3N0KFRlc3RIb29rcyogdGVzdEhvb2tzLCBXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RDbGllbnQq
IGNsaWVudCwgY29uc3QgV2ViQ29yZTo6Q0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MpCiAg
ICAgICAgIDogQ0NMYXllclRyZWVIb3N0KGNsaWVudCwgc2V0dGluZ3MpCiAgICAgICAgICwgbV90
ZXN0SG9va3ModGVzdEhvb2tzKQogICAgIHsKQEAgLTYxNSw2ICs2MDgsOSBAQCB2b2lkIENDVGhy
ZWFkZWRUZXN0OjpkaXNwYXRjaERpZEFkZEFuaW1hdGlvbih2b2lkKiBzZWxmKQogCiB2b2lkIEND
VGhyZWFkZWRUZXN0OjpydW5UZXN0KGJvb2wgdGhyZWFkZWQpCiB7CisgICAgLy8gRm9yIHRoZXNl
IHRlc3RzLCB3ZSB3aWxsIGVuYWJsZSB0aHJlYWRlZCBhbmltYXRpb25zLgorICAgIFdlYkNvbXBv
c2l0b3I6OnNldEFjY2VsZXJhdGVkQW5pbWF0aW9uRW5hYmxlZCh0cnVlKTsKKwogICAgIGlmICh0
aHJlYWRlZCkgewogICAgICAgICBtX3dlYlRocmVhZCA9IGFkb3B0UHRyKFdlYktpdDo6UGxhdGZv
cm06OmN1cnJlbnQoKS0+Y3JlYXRlVGhyZWFkKCJDQ1RocmVhZGVkVGVzdCIpKTsKICAgICAgICAg
V2ViQ29tcG9zaXRvcjo6aW5pdGlhbGl6ZShtX3dlYlRocmVhZC5nZXQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGhyZWFkZWRUZXN0LmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGhyZWFkZWRUZXN0LmgKaW5kZXggN2YzNTgxNjBhNmQ2
NWI1OTI1MDFmMzdlOGQwOGFiMjg4MzYxZThmNy4uNGVkYzRlNTIxNjgxZjgxOWVmOGNkMDk2NWU4
ZDZmYzM5NWFjNjliNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q1RocmVhZGVkVGVzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaHJl
YWRlZFRlc3QuaApAQCAtMTM1LDcgKzEzNSw3IEBAIHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwg
dm9pZCBydW5UZXN0KGJvb2wgdGhyZWFkZWQpOwogCi0gICAgV2ViQ29yZTo6Q0NTZXR0aW5ncyBt
X3NldHRpbmdzOworICAgIFdlYkNvcmU6OkNDTGF5ZXJUcmVlU2V0dGluZ3MgbV9zZXR0aW5nczsK
ICAgICBPd25QdHI8TW9ja0NDTGF5ZXJUcmVlSG9zdENsaWVudD4gbV9jbGllbnQ7CiAgICAgT3du
UHRyPFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdD4gbV9sYXllclRyZWVIb3N0OwogCkBAIC0xNjUs
NyArMTY1LDcgQEAgcHVibGljOgogLy8gQWRhcHRzIENDTGF5ZXJUcmVlSG9zdEltcGwgZm9yIHRl
c3QuIFJ1bnMgcmVhbCBjb2RlLCB0aGVuIGludm9rZXMgdGVzdCBob29rcy4KIGNsYXNzIE1vY2tM
YXllclRyZWVIb3N0SW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxNb2NrTGF5ZXJUcmVlSG9zdEltcGw+IGNy
ZWF0ZShUZXN0SG9va3MqLCBjb25zdCBXZWJDb3JlOjpDQ1NldHRpbmdzJiwgV2ViQ29yZTo6Q0NM
YXllclRyZWVIb3N0SW1wbENsaWVudCopOworICAgIHN0YXRpYyBQYXNzT3duUHRyPE1vY2tMYXll
clRyZWVIb3N0SW1wbD4gY3JlYXRlKFRlc3RIb29rcyosIGNvbnN0IFdlYkNvcmU6OkNDTGF5ZXJU
cmVlU2V0dGluZ3MmLCBXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50Kik7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgYmVnaW5Db21taXQoKTsKICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29t
cGxldGUoKTsKQEAgLTE4MSw3ICsxODEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBkb3Vi
bGUgbG93RnJlcXVlbmN5QW5pbWF0aW9uSW50ZXJ2YWwoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAg
ICBNb2NrTGF5ZXJUcmVlSG9zdEltcGwoVGVzdEhvb2tzKiwgY29uc3QgV2ViQ29yZTo6Q0NTZXR0
aW5ncyYsIFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqKTsKKyAgICBNb2NrTGF5
ZXJUcmVlSG9zdEltcGwoVGVzdEhvb2tzKiwgY29uc3QgV2ViQ29yZTo6Q0NMYXllclRyZWVTZXR0
aW5ncyYsIFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqKTsKIAogICAgIFRlc3RI
b29rcyogbV90ZXN0SG9va3M7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9HcmFwaGljc0xheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvR3JhcGhpY3NMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggYjgzODA0OTVh
ZjkwMDJlNmM2OWYwNDdjZWRhYWY5NzIyZGYyYjM2NC4uNGZkY2Y0ZjQxZTE5MTdjZjcxY2NjNzRi
MTM5NzM1N2NmNjNmYmYzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9HcmFwaGljc0xheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC04Myw5ICs4Myw3IEBA
IGNsYXNzIE1vY2tMYXllclRyZWVIb3N0IDogcHVibGljIENDTGF5ZXJUcmVlSG9zdCB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8TW9ja0xheWVyVHJlZUhvc3Q+IGNyZWF0ZSgpCiAg
ICAgewotICAgICAgICAvLyBGb3IgdGhlc2UgdGVzdHMsIHdlIHdpbGwgZW5hYmxlIHRocmVhZGVk
IGFuaW1hdGlvbnMuCi0gICAgICAgIENDU2V0dGluZ3Mgc2V0dGluZ3M7Ci0gICAgICAgIHNldHRp
bmdzLnRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZCA9IHRydWU7CisgICAgICAgIENDTGF5ZXJUcmVl
U2V0dGluZ3Mgc2V0dGluZ3M7CiAgICAgICAgIE93blB0cjxNb2NrTGF5ZXJUcmVlSG9zdD4gbGF5
ZXJUcmVlSG9zdChhZG9wdFB0cihuZXcgTW9ja0xheWVyVHJlZUhvc3QobmV3IE1vY2tMYXllclRy
ZWVIb3N0Q2xpZW50KCksIHNldHRpbmdzKSkpOwogICAgICAgICBib29sIHN1Y2Nlc3MgPSBsYXll
clRyZWVIb3N0LT5pbml0aWFsaXplKCk7CiAgICAgICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOwpA
QCAtOTYsMTQgKzk0LDExIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc093blB0cjxDQ0xh
eWVyVHJlZUhvc3RJbXBsPiBjcmVhdGVMYXllclRyZWVIb3N0SW1wbChDQ0xheWVyVHJlZUhvc3RJ
bXBsQ2xpZW50KiBjbGllbnQpCiAgICAgewotICAgICAgICAvLyBGb3IgdGhlc2UgdGVzdHMsIHdl
IHdpbGwgZW5hYmxlIHRocmVhZGVkIGFuaW1hdGlvbnMuCi0gICAgICAgIENDU2V0dGluZ3MgY29w
eVNldHRpbmdzID0gc2V0dGluZ3MoKTsKLSAgICAgICAgY29weVNldHRpbmdzLnRocmVhZGVkQW5p
bWF0aW9uRW5hYmxlZCA9IHRydWU7Ci0gICAgICAgIHJldHVybiBDQ0xheWVyVHJlZUhvc3RJbXBs
OjpjcmVhdGUoY29weVNldHRpbmdzLCBjbGllbnQpOworICAgICAgICByZXR1cm4gQ0NMYXllclRy
ZWVIb3N0SW1wbDo6Y3JlYXRlKHNldHRpbmdzKCksIGNsaWVudCk7CiAgICAgfQogCiBwcml2YXRl
OgotICAgIE1vY2tMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50LCBj
b25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncykKKyAgICBNb2NrTGF5ZXJUcmVlSG9zdChDQ0xheWVy
VHJlZUhvc3RDbGllbnQqIGNsaWVudCwgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGlu
Z3MpCiAgICAgICAgIDogQ0NMYXllclRyZWVIb3N0KGNsaWVudCwgc2V0dGluZ3MpCiAgICAgewog
ICAgIH0KQEAgLTExMyw2ICsxMDgsOCBAQCBjbGFzcyBHcmFwaGljc0xheWVyQ2hyb21pdW1UZXN0
IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogcHVibGljOgogICAgIEdyYXBoaWNzTGF5ZXJDaHJv
bWl1bVRlc3QoKQogICAgIHsKKyAgICAgICAgLy8gRm9yIHRoZXNlIHRlc3RzLCB3ZSB3aWxsIGVu
YWJsZSB0aHJlYWRlZCBhbmltYXRpb25zLgorICAgICAgICBXZWJDb21wb3NpdG9yOjpzZXRBY2Nl
bGVyYXRlZEFuaW1hdGlvbkVuYWJsZWQodHJ1ZSk7CiAgICAgICAgIFdlYkNvbXBvc2l0b3I6Omlu
aXRpYWxpemUoMCk7CiAgICAgICAgIG1fZ3JhcGhpY3NMYXllciA9IHN0YXRpY19wb2ludGVyX2Nh
c3Q8R3JhcGhpY3NMYXllckNocm9taXVtPihHcmFwaGljc0xheWVyOjpjcmVhdGUoJm1fY2xpZW50
KSk7CiAgICAgICAgIG1fcGxhdGZvcm1MYXllciA9IHN0YXRpY19jYXN0PExheWVyQ2hyb21pdW0q
PihtX2dyYXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IDk1NDE3NGFiNzYz
NTdhNzEzMjQwMWExZDBhM2NjODM4YzhlZDkxYTkuLjFiZWY5MmJjZWZmNGU2NjUxMGRmNzgxODcz
OGNhMmFlZGI4NjliYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
TGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
TGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIG5hbWVzcGFjZSB7CiBjbGFz
cyBNb2NrQ0NMYXllclRyZWVIb3N0IDogcHVibGljIENDTGF5ZXJUcmVlSG9zdCB7CiBwdWJsaWM6
CiAgICAgTW9ja0NDTGF5ZXJUcmVlSG9zdCgpCi0gICAgICAgIDogQ0NMYXllclRyZWVIb3N0KCZt
X2Zha2VDbGllbnQsIENDU2V0dGluZ3MoKSkKKyAgICAgICAgOiBDQ0xheWVyVHJlZUhvc3QoJm1f
ZmFrZUNsaWVudCwgQ0NMYXllclRyZWVTZXR0aW5ncygpKQogICAgIHsKICAgICAgICAgaW5pdGlh
bGl6ZSgpOwogICAgIH0KQEAgLTYxNiw3ICs2MTYsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAg
ICAgRmFrZUNDTGF5ZXJUcmVlSG9zdCgpCi0gICAgICAgIDogQ0NMYXllclRyZWVIb3N0KCZtX2Ns
aWVudCwgQ0NTZXR0aW5ncygpKQorICAgICAgICA6IENDTGF5ZXJUcmVlSG9zdCgmbV9jbGllbnQs
IENDTGF5ZXJUcmVlU2V0dGluZ3MoKSkKICAgICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNw
cAppbmRleCA3NmQ1OTY4MzJhMDE3OTVmZDEzNjk1ZmRlYzA4MjdkYmExNGI2MzkzLi45MjY5MjE3
YzNiMDRhNWU4ZTg2MWE5ZTM2MzEzMzlkMWNhN2M4MjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHAK
QEAgLTI1LDEwICsyNSwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkxheWVy
UmVuZGVyZXJDaHJvbWl1bS5oIgogCisjaW5jbHVkZSAiQ0NUZXN0Q29tbW9uLmgiCiAjaW5jbHVk
ZSAiRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
M0QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCIKICNpbmNsdWRlICJX
ZWJDb21wb3NpdG9yLmgiCisjaW5jbHVkZSAiY2MvQ0NTZXR0aW5ncy5oIgogI2luY2x1ZGUgImNj
L0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKIAogI2luY2x1ZGUgPGdtb2NrL2dtb2NrLmg+CkBAIC0z
Niw2ICszOCw3IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXRUZXN0czsKIAogY2xhc3MgRnJhbWVDb3Vu
dGluZ01lbW9yeUFsbG9jYXRpb25TZXR0aW5nQ29udGV4dCA6IHB1YmxpYyBGYWtlV2ViR3JhcGhp
Y3NDb250ZXh0M0QgewogcHVibGljOgpAQCAtODEsNyArODQsNyBAQCBwdWJsaWM6CiAKICAgICAv
LyBDQ1JlbmRlcmVyQ2xpZW50IG1ldGhvZHMuCiAgICAgdmlydHVhbCBjb25zdCBJbnRTaXplJiBk
ZXZpY2VWaWV3cG9ydFNpemUoKSBjb25zdCBPVkVSUklERSB7IHN0YXRpYyBJbnRTaXplIGZha2VT
aXplOyByZXR1cm4gZmFrZVNpemU7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IENDU2V0dGluZ3MmIHNl
dHRpbmdzKCkgY29uc3QgT1ZFUlJJREUgeyBzdGF0aWMgQ0NTZXR0aW5ncyBmYWtlU2V0dGluZ3M7
IHJldHVybiBmYWtlU2V0dGluZ3M7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IENDTGF5ZXJUcmVlU2V0
dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgT1ZFUlJJREUgeyBzdGF0aWMgQ0NMYXllclRyZWVTZXR0
aW5ncyBmYWtlU2V0dGluZ3M7IHJldHVybiBmYWtlU2V0dGluZ3M7IH0KICAgICB2aXJ0dWFsIHZv
aWQgZGlkTG9zZUNvbnRleHQoKSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgb25Td2Fw
QnVmZmVyc0NvbXBsZXRlKCkgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldEZ1bGxS
b290TGF5ZXJEYW1hZ2UoKSBPVkVSUklERSB7IG1fc2V0RnVsbFJvb3RMYXllckRhbWFnZUNvdW50
Kys7IH0KQEAgLTE0Nyw2ICsxNTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgRnJhbWVDb3VudGluZ01l
bW9yeUFsbG9jYXRpb25TZXR0aW5nQ29udGV4dCYgbV9tb2NrQ29udGV4dDsKICAgICBGYWtlQ0NS
ZW5kZXJlckNsaWVudCBtX21vY2tDbGllbnQ7CiAgICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1
bSBtX2xheWVyUmVuZGVyZXJDaHJvbWl1bTsKKyAgICBDQ1Njb3BlZFNldHRpbmdzIG1fc2NvcGVk
U2V0dGluZ3M7CiB9OwogCiAvLyBUZXN0IExheWVyUmVuZGVyZXJDaHJvbWl1bSBkaXNjYXJkRnJh
bWVidWZmZXIgZnVuY3Rpb25hbGl0eToKQEAgLTE5OCw3ICsyMDIsNyBAQCBURVNUX0YoTGF5ZXJS
ZW5kZXJlckNocm9taXVtVGVzdCwgU3dhcEJ1ZmZlcnNXaGlsZUJhY2tidWZmZXJEaXNjYXJkZWRT
aG91bGRJZ25vcgogICAgIHN3YXBCdWZmZXJzKCk7CiAgICAgRVhQRUNUX0VRKDAsIG1fbW9ja0Nv
bnRleHQuZnJhbWVDb3VudCgpKTsKICAgICBFWFBFQ1RfRVEoMiwgbV9tb2NrQ2xpZW50LnNldEZ1
bGxSb290TGF5ZXJEYW1hZ2VDb3VudCgpKTsKLSAgICAKKwogICAgIHN3YXBCdWZmZXJzKCk7CiAg
ICAgRVhQRUNUX0VRKDAsIG1fbW9ja0NvbnRleHQuZnJhbWVDb3VudCgpKTsKICAgICBFWFBFQ1Rf
RVEoMywgbV9tb2NrQ2xpZW50LnNldEZ1bGxSb290TGF5ZXJEYW1hZ2VDb3VudCgpKTsKQEAgLTI4
OSw2ICsyOTMsNyBAQCBwdWJsaWM6CiAvLyBUaGlzIHRlc3QgaXNuJ3QgdXNpbmcgdGhlIHNhbWUg
Zml4dHVyZSBhcyBMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LCBhbmQgeW91IGNhbid0IG1peCBU
RVNUKCkgYW5kIFRFU1RfRigpIHdpdGggdGhlIHNhbWUgbmFtZSwgaGVuY2UgTFJDMi4KIFRFU1Qo
TGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdDIsIGluaXRpYWxpemF0aW9uRG9lc05vdE1ha2VTeW5j
aHJvbm91c0NhbGxzKQogeworICAgIENDU2NvcGVkU2V0dGluZ3Mgc2NvcGVkU2V0dGluZ3M7CiAg
ICAgRmFrZUNDUmVuZGVyZXJDbGllbnQgbW9ja0NsaWVudDsKICAgICBGYWtlTGF5ZXJSZW5kZXJl
ckNocm9taXVtIGxheWVyUmVuZGVyZXJDaHJvbWl1bSgmbW9ja0NsaWVudCwgR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0
cihuZXcgRm9yYmlkU3luY2hyb25vdXNDYWxsQ29udGV4dCksIEdyYXBoaWNzQ29udGV4dDNEOjpS
ZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdykpOwogCkBAIC0zMzAsNiArMzM1LDcgQEAgcHJpdmF0
ZToKIAogVEVTVChMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0MiwgaW5pdGlhbGl6YXRpb25XaXRo
UXVpY2tseUxvc3RDb250ZXh0RG9lc05vdEFzc2VydCkKIHsKKyAgICBDQ1Njb3BlZFNldHRpbmdz
IHNjb3BlZFNldHRpbmdzOwogICAgIEZha2VDQ1JlbmRlcmVyQ2xpZW50IG1vY2tDbGllbnQ7CiAg
ICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bSBsYXllclJlbmRlcmVyQ2hyb21pdW0oJm1vY2tD
bGllbnQsIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJv
bVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IExvc2VDb250ZXh0T25GaXJzdEdldENvbnRleHQpLCBH
cmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UZXh0dXJlTGF5ZXJDaHJvbWl1bVRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UZXh0dXJlTGF5ZXJDaHJvbWl1
bVRlc3QuY3BwCmluZGV4IGI2MDAxN2ZkOWFhMDgwYjRmZDdmNjlmOWEwZmVlMGMyNjhiNDQ5ZWEu
LmQwY2MzZDk2ZjE0ZWJjZmU4ZDNjOThiM2RmNjI3YzBkNjNhNDhjZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGV4dHVyZUxheWVyQ2hyb21pdW1UZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RleHR1cmVMYXllckNocm9taXVtVGVz
dC5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIHsKIGNsYXNzIE1vY2tDQ0xheWVyVHJl
ZUhvc3QgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0IHsKIHB1YmxpYzoKICAgICBNb2NrQ0NMYXll
clRyZWVIb3N0KCkKLSAgICAgICAgOiBDQ0xheWVyVHJlZUhvc3QoJm1fZmFrZUNsaWVudCwgQ0NT
ZXR0aW5ncygpKQorICAgICAgICA6IENDTGF5ZXJUcmVlSG9zdCgmbV9mYWtlQ2xpZW50LCBDQ0xh
eWVyVHJlZVNldHRpbmdzKCkpCiAgICAgewogICAgICAgICBpbml0aWFsaXplKCk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21p
dW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9t
aXVtVGVzdC5jcHAKaW5kZXggZjBjMTMxM2Y5MGVlNzUyZDRjMjIxNzhhZDM5NDQ3OGIyNTc2MTYy
MC4uNWUzMDFkOGViNDE5NDA3OTczZDA0MmUzZDkzN2JmZWZmNTgwMjU5ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qu
Y3BwCkBAIC03OTcsNyArNzk3LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBza2lw
c0RyYXdHZXRzUmVzZXQpCiAgICAgLy8gSW5pdGlhbGl6ZSB3aXRob3V0IHRocmVhZGluZyBzdXBw
b3J0LgogICAgIFdlYktpdDo6V2ViQ29tcG9zaXRvcjo6aW5pdGlhbGl6ZSgwKTsKICAgICBGYWtl
Q0NMYXllclRyZWVIb3N0Q2xpZW50IGZha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQ7Ci0gICAgT3du
UHRyPENDTGF5ZXJUcmVlSG9zdD4gY2NMYXllclRyZWVIb3N0ID0gQ0NMYXllclRyZWVIb3N0Ojpj
cmVhdGUoJmZha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQsIENDU2V0dGluZ3MoKSk7CisgICAgT3du
UHRyPENDTGF5ZXJUcmVlSG9zdD4gY2NMYXllclRyZWVIb3N0ID0gQ0NMYXllclRyZWVIb3N0Ojpj
cmVhdGUoJmZha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQsIENDTGF5ZXJUcmVlU2V0dGluZ3MoKSk7
CiAKICAgICAvLyBDcmVhdGUgdHdvIDMwMCB4IDMwMCB0aWxlZCBsYXllcnMuCiAgICAgSW50U2l6
ZSBjb250ZW50Qm91bmRzKDMwMCwgMzAwKTsKQEAgLTg3MywxMCArODczLDEyIEBAIFRFU1QoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgaHVnZUxheWVyVXBkYXRlQ3Jhc2gpCiAKIFRFU1QoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgcGFydGlhbFVwZGF0ZXMpCiB7Ci0gICAgQ0NTZXR0aW5ncyBzZXR0
aW5nczsKLSAgICBzZXR0aW5ncy5tYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMgPSA0OwogICAgIC8v
IEluaXRpYWxpemUgd2l0aG91dCB0aHJlYWRpbmcgc3VwcG9ydC4KICAgICBXZWJLaXQ6OldlYkNv
bXBvc2l0b3I6OmluaXRpYWxpemUoMCk7CisKKyAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRp
bmdzOworICAgIHNldHRpbmdzLm1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcyA9IDQ7CisKICAgICBG
YWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50IGZha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQ7CiAgICAg
T3duUHRyPENDTGF5ZXJUcmVlSG9zdD4gY2NMYXllclRyZWVIb3N0ID0gQ0NMYXllclRyZWVIb3N0
OjpjcmVhdGUoJmZha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQsIHNldHRpbmdzKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UcmVlU3luY2hyb25pemVyVGVzdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RyZWVTeW5jaHJvbml6ZXJUZXN0LmNw
cAppbmRleCBlZGRlZDVhZDJlYmQ2NzYzZGNlMWM4NGQxNDQ0YjgzYjdmODBhODA2Li4wODU5N2Yx
ZGM2MmQzMDNhMzFmNTA1ZWIxNmE2MTYwMDU5ZWViOGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL1RyZWVTeW5jaHJvbml6ZXJUZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RyZWVTeW5jaHJvbml6ZXJUZXN0LmNwcApAQCAtMTYzLDcg
KzE2Myw3IEBAIFRFU1QoVHJlZVN5bmNocm9uaXplclRlc3QsIHN5bmNTaW1wbGVUcmVlRnJvbUVt
cHR5KQogewogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwogCi0gICAgQ0NTZXR0
aW5ncyBzZXR0aW5nczsKKyAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOwogICAgIE93
blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBob3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6
OmNyZWF0ZShzZXR0aW5ncywgMCk7CiAKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbGF5ZXJU
cmVlUm9vdCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwpAQCAtMTgxLDcgKzE4MSw3IEBAIFRF
U1QoVHJlZVN5bmNocm9uaXplclRlc3QsIHN5bmNTaW1wbGVUcmVlUmV1c2luZ0xheWVycykKICAg
ICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKICAgICBWZWN0b3I8aW50PiBjY0xheWVy
RGVzdHJ1Y3Rpb25MaXN0OwogCi0gICAgQ0NTZXR0aW5ncyBzZXR0aW5nczsKKyAgICBDQ0xheWVy
VHJlZVNldHRpbmdzIHNldHRpbmdzOwogICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBo
b3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShzZXR0aW5ncywgMCk7CiAKICAg
ICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbGF5ZXJUcmVlUm9vdCA9IE1vY2tMYXllckNocm9taXVt
OjpjcmVhdGUoJmNjTGF5ZXJEZXN0cnVjdGlvbkxpc3QpOwpAQCAtMjExLDcgKzIxMSw3IEBAIFRF
U1QoVHJlZVN5bmNocm9uaXplclRlc3QsIHN5bmNTaW1wbGVUcmVlQW5kVHJhY2tTdGFja2luZ09y
ZGVyQ2hhbmdlKQogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwogICAgIFZlY3Rv
cjxpbnQ+IGNjTGF5ZXJEZXN0cnVjdGlvbkxpc3Q7CiAKLSAgICBDQ1NldHRpbmdzIHNldHRpbmdz
OworICAgIENDTGF5ZXJUcmVlU2V0dGluZ3Mgc2V0dGluZ3M7CiAgICAgT3duUHRyPENDTGF5ZXJU
cmVlSG9zdEltcGw+IGhvc3RJbXBsID0gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKHNldHRp
bmdzLCAwKTsKIAogICAgIC8vIFNldCB1cCB0aGUgdHJlZSBhbmQgc3luYyBvbmNlLiBjaGlsZDIg
bmVlZHMgdG8gYmUgc3luY2VkIGhlcmUsIHRvbywgZXZlbiB0aG91Z2ggd2UKQEAgLTI0MCw3ICsy
NDAsNyBAQCBURVNUKFRyZWVTeW5jaHJvbml6ZXJUZXN0LCBzeW5jU2ltcGxlVHJlZUFuZFByb3Bl
cnRpZXMpCiB7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7CiAKLSAgICBDQ1Nl
dHRpbmdzIHNldHRpbmdzOworICAgIENDTGF5ZXJUcmVlU2V0dGluZ3Mgc2V0dGluZ3M7CiAgICAg
T3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IGhvc3RJbXBsID0gQ0NMYXllclRyZWVIb3N0SW1w
bDo6Y3JlYXRlKHNldHRpbmdzLCAwKTsKIAogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBsYXll
clRyZWVSb290ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CkBAIC0yNzcsNyArMjc3LDcgQEAg
VEVTVChUcmVlU3luY2hyb25pemVyVGVzdCwgcmV1c2VDQ0xheWVyc0FmdGVyU3RydWN0dXJhbENo
YW5nZSkKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKICAgICBWZWN0b3I8aW50
PiBjY0xheWVyRGVzdHJ1Y3Rpb25MaXN0OwogCi0gICAgQ0NTZXR0aW5ncyBzZXR0aW5nczsKKyAg
ICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOwogICAgIE93blB0cjxDQ0xheWVyVHJlZUhv
c3RJbXBsPiBob3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShzZXR0aW5ncywg
MCk7CiAKICAgICAvLyBTZXQgdXAgYSB0cmVlIHdpdGggdGhpcyBzb3J0IG9mIHN0cnVjdHVyZToK
QEAgLTMyNyw3ICszMjcsNyBAQCBURVNUKFRyZWVTeW5jaHJvbml6ZXJUZXN0LCBzeW5jU2ltcGxl
VHJlZVRoZW5EZXN0cm95KQogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwogICAg
IFZlY3RvcjxpbnQ+IGNjTGF5ZXJEZXN0cnVjdGlvbkxpc3Q7CiAKLSAgICBDQ1NldHRpbmdzIHNl
dHRpbmdzOworICAgIENDTGF5ZXJUcmVlU2V0dGluZ3Mgc2V0dGluZ3M7CiAgICAgT3duUHRyPEND
TGF5ZXJUcmVlSG9zdEltcGw+IGhvc3RJbXBsID0gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRl
KHNldHRpbmdzLCAwKTsKIAogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBvbGRMYXllclRyZWVS
b290ID0gTW9ja0xheWVyQ2hyb21pdW06OmNyZWF0ZSgmY2NMYXllckRlc3RydWN0aW9uTGlzdCk7
CkBAIC0zNjAsNyArMzYwLDcgQEAgVEVTVChUcmVlU3luY2hyb25pemVyVGVzdCwgc3luY01hc2tS
ZXBsaWNhQW5kUmVwbGljYU1hc2tMYXllcnMpCiB7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhy
ZWFkIGltcGw7CiAKLSAgICBDQ1NldHRpbmdzIHNldHRpbmdzOworICAgIENDTGF5ZXJUcmVlU2V0
dGluZ3Mgc2V0dGluZ3M7CiAgICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IGhvc3RJbXBs
ID0gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKHNldHRpbmdzLCAwKTsKIAogICAgIFJlZlB0
cjxMYXllckNocm9taXVtPiBsYXllclRyZWVSb290ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7
CkBAIC00MDYsNyArNDA2LDcgQEAgVEVTVChUcmVlU3luY2hyb25pemVyVGVzdCwgc3luY2hyb25p
emVBbmltYXRpb25zKQogewogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwogCi0g
ICAgQ0NTZXR0aW5ncyBzZXR0aW5nczsKKyAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdz
OwogICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBob3N0SW1wbCA9IENDTGF5ZXJUcmVl
SG9zdEltcGw6OmNyZWF0ZShzZXR0aW5ncywgMCk7CiAKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1
bT4gbGF5ZXJUcmVlUm9vdCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDIxYmQ3N2UyZDllZDk3YzBh
MzE2YTExZjYwZDI5OTQ1ZTBiNWEyYmUuLmE2M2MwZjAxOTllYTBmOWY3NGVmYzc4Yzk1NWU4YWE1
NGZiZTk4ZmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wNi0xMyAgSWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIENlcnRhaW4gc2V0dGluZ3MgaW4gQ0NT
ZXR0aW5ncyBjb3VsZCBiZSBnbG9iYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg4Mzg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5z
b24uCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQcmVmZXJlbmNlcy5j
cHA6CisgICAgICAgIChXZWJQcmVmZXJlbmNlczo6YXBwbHlUbyk6CisKIDIwMTItMDYtMTIgIEFz
aG9kIE5ha2FzaGlhbiAgPGFzaG9kbmFrYXNoaWFuQHlhaG9vLmNvbT4KIAogICAgICAgICBXaW5M
YXVuY2hlciBzaG91bGQgc2hvdyBsb2FkaW5nIGVycm9ycwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vV2ViUHJlZmVyZW5jZXMuY3BwIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vV2ViUHJlZmVyZW5jZXMuY3BwCmluZGV4IDMyMjdjMDIzMTJiM2IzOTAw
Njc4MmMzODc3ZDA4YjYzN2RmY2FiOTQuLmE4ZDZhY2YxZGI0YmM1ZjRiZGU4N2I0ODI3YzUyMjdk
ZmEwNjNiMWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlBy
ZWZlcmVuY2VzLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQcmVm
ZXJlbmNlcy5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJXZWJQcmVmZXJlbmNlcy5oIgogCisjaW5jbHVkZSAiV2ViQ29tcG9zaXRvci5oIgogI2lu
Y2x1ZGUgIldlYlZpZXcuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKQEAgLTIyNiw3ICsy
MjcsNiBAQCB2b2lkIFdlYlByZWZlcmVuY2VzOjphcHBseVRvKFdlYlZpZXcqIHdlYlZpZXcpCiAg
ICAgc2V0dGluZ3MtPnNldERlZmVycmVkMmRDYW52YXNFbmFibGVkKGRlZmVycmVkMmRDYW52YXNF
bmFibGVkKTsKICAgICBzZXR0aW5ncy0+c2V0QWNjZWxlcmF0ZWRQYWludGluZ0VuYWJsZWQoYWNj
ZWxlcmF0ZWRQYWludGluZ0VuYWJsZWQpOwogICAgIHNldHRpbmdzLT5zZXRIaXhpZTc2V2ViU29j
a2V0UHJvdG9jb2xFbmFibGVkKGhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQpOwotICAg
IHNldHRpbmdzLT5zZXRQZXJUaWxlUGFpbnRpbmdFbmFibGVkKHBlclRpbGVQYWludGluZ0VuYWJs
ZWQpOwogICAgIHNldHRpbmdzLT5zZXRNb2NrU2Nyb2xsYmFyc0VuYWJsZWQobW9ja1Njcm9sbGJh
cnNFbmFibGVkKTsKIAogICAgIC8vIEZpeGVkIHZhbHVlcy4KQEAgLTI0Niw0ICsyNDYsNyBAQCB2
b2lkIFdlYlByZWZlcmVuY2VzOjphcHBseVRvKFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgc2V0dGlu
Z3MtPnNldFZhbGlkYXRpb25NZXNzYWdlVGltZXJNYWduaWZpY2F0aW9uKC0xKTsKICAgICBzZXR0
aW5ncy0+c2V0VmlzdWFsV29yZE1vdmVtZW50RW5hYmxlZChmYWxzZSk7CiAgICAgc2V0dGluZ3Mt
PnNldFBhc3N3b3JkRWNob0VuYWJsZWQoZmFsc2UpOworCisgICAgLy8gQXBwbHkgZ2xvYmFsIFdl
YkNvbXBvc2l0b3Igc2V0dGluZ3MuCisgICAgV2ViQ29tcG9zaXRvcjo6c2V0UGVyVGlsZVBhaW50
aW5nRW5hYmxlZChwZXJUaWxlUGFpbnRpbmdFbmFibGVkKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147587</attachid>
            <date>2012-06-14 07:39:18 -0700</date>
            <delta_ts>2012-06-14 13:41:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88384-20120614103918.patch</filename>
            <type>text/plain</type>
            <size>79759</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMzE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA2ODkyOWNkZjdmMWVj
YzcxMWU2Yzk5MjE2N2MwNTg3YzQ4ZDdiM2NhLi5mZWYyYzhhZGE3YWY4NDg0YThlYjAxNGE4Zjg2
Y2U3MjA1ZDA2YjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNi0xNCAg
SWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IENlcnRhaW4gc2V0dGluZ3MgaW4gQ0NTZXR0aW5ncyBjb3VsZCBiZSBnbG9iYWwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4Mzg0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMv
V2ViTGF5ZXJUcmVlVmlldy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgIChTZXR0aW5n
cyk6CisKIDIwMTItMDYtMTQgIEV1Z2VuZSBLbHl1Y2huaWtvdiAgPGV1c3Rhcy5idWdAZ21haWwu
Y29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJlZmFjdG9yIG1lc3NhZ2UgbG9vcCBpbnN0
cnVtZW50YXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWM0YTU3YWUxNzU3YmI4OWQ1NGQ2MDQzZGZjNmU1
ZGZhYmFhN2JhZS4uNmJjZWQyNWFkZGZiMTM5ODZiM2UwYThkOWU3OTM0OGFjOTkzZjljMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDEyLTA2LTE0ICBJYW4gVm9sbGljayAgPHZvbGxp
Y2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQ2VydGFpbiBzZXR0aW5ncyBp
biBDQ1NldHRpbmdzIGNvdWxkIGJlIGdsb2JhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODgzODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIE5vIG5ldyBmdW5jdGlvbmFsaXR5Lgor
CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OlNldHRpbmdzKToKKyAgICAgICAgKiBwYWdlL1Nl
dHRpbmdzLmg6CisgICAgICAgIChTZXR0aW5ncyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudExheWVyQ2hyb21pdW06OmNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6YWRkQW5pbWF0aW9uKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVUaWxlU2l6ZUFuZFRp
bGluZ09wdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NE
ZWJ1Z1JlY3RIaXN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDRGVidWdSZWN0SGlzdG9y
eTo6ZW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0RlYnVnUmVjdEhpc3Rvcnk6OnNhdmVE
ZWJ1Z1JlY3RzRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3RvcnkuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoQ0NEZWJ1Z1JlY3RIaXN0b3J5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDSGVh
ZHNVcERpc3BsYXk6OmVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NIZWFkc1VwRGlzcGxh
eTo6c2hvd1BsYXRmb3JtTGF5ZXJUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDSGVhZHNVcERp
c3BsYXk6OnNob3dEZWJ1Z1JlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDSGVhZHNVcERpc3Bs
YXk6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NIZWFkc1VwRGlzcGxheTo6ZHJhd0h1ZENv
bnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDSGVhZHNVcERpc3BsYXk6OmRyYXdEZWJ1Z1Jl
Y3RzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBE
aXNwbGF5Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDSGVhZHNVcERpc3BsYXkp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OkNDTGF5ZXJUcmVlSG9zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmFuaW1hdGVMYXllcnMpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllclRyZWVTZXR0aW5nczo6Q0NMYXllclRyZWVTZXR0aW5ncyk6CisgICAg
ICAgIChDQ0xheWVyVHJlZVNldHRpbmdzKToKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnNldHRpbmdzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpDQ0xheWVyVHJlZUhvc3RJbXBsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRlclN1cmZhY2VM
YXllckxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6YW5pbWF0
ZUxheWVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5oOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0SW1wbCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5oOgorICAgICAgICAo
Q0NSZW5kZXJlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlcmVyOjpzZXR0aW5n
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTZXR0aW5ncy5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NldHRp
bmdzOjpwZXJUaWxlUGFpbnRpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2V0dGlu
Z3M6OnNldFBlclRpbGVQYWludGluZ0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTZXR0
aW5nczo6cGFydGlhbFN3YXBFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2V0dGluZ3M6
OnNldFBhcnRpYWxTd2FwRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NldHRpbmdzOjph
Y2NlbGVyYXRlZEFuaW1hdGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTZXR0aW5n
czo6c2V0QWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkND
U2V0dGluZ3M6OnJlc2V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NldHRpbmdzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ1Nl
dHRpbmdzKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwOgorICAgICAg
ICAqIHRlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oOgorICAgICAgICAoSW50ZXJuYWxTZXR0aW5n
cyk6CisKIDIwMTItMDYtMTQgIEV1Z2VuZSBLbHl1Y2huaWtvdiAgPGV1c3Rhcy5idWdAZ21haWwu
Y29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJlZmFjdG9yIG1lc3NhZ2UgbG9vcCBpbnN0
cnVtZW50YXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGRlMDMyNWNiZWVkNDQ3
OTgzZWJjYWMyZDc1M2Y3ZjIyMzk2OGE2MjYuLmUyY2IwMTA5NTE3ZTAwMWFkN2I0OTQ2ZTE4ZTRh
OGU4MWJiMGQyYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjYgQEAK
KzIwMTItMDYtMTQgIElhbiBWb2xsaWNrICA8dm9sbGlja0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgW2Nocm9taXVtXSBDZXJ0YWluIHNldHRpbmdzIGluIENDU2V0dGluZ3MgY291bGQgYmUgZ2xv
YmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODM4
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
S2l0Lmd5cGk6CisgICAgICAgICogcHVibGljL1dlYkNvbXBvc2l0b3IuaDoKKyAgICAgICAgKFdl
YkNvbXBvc2l0b3IpOgorICAgICAgICAqIHB1YmxpYy9XZWJTZXR0aW5ncy5oOgorICAgICAgICAq
IHNyYy9XZWJDb21wb3NpdG9ySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0
b3I6OnNodXRkb3duKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bXBvc2l0b3I6OnNldFBlclRpbGVQYWludGluZ0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb21wb3NpdG9yOjpzZXRQYXJ0aWFsU3dhcEVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb21wb3NpdG9yOjpzZXRBY2NlbGVyYXRlZEFuaW1hdGlvbkVuYWJsZWQpOgorICAgICAgICAq
IHNyYy9XZWJMYXllclRyZWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzOjpvcGVyYXRvciBDQ0xheWVyVHJlZVNl
dHRpbmdzKToKKyAgICAgICAgKiBzcmMvV2ViU2V0dGluZ3NJbXBsLmNwcDoKKyAgICAgICAgKiBz
cmMvV2ViU2V0dGluZ3NJbXBsLmg6CisgICAgICAgIChXZWJTZXR0aW5nc0ltcGwpOgorICAgICAg
ICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpX
ZWJWaWV3SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJh
dGVkQ29tcG9zaXRpbmdBY3RpdmUpOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdElt
cGxUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcDoKKyAg
ICAgICAgKFdURik6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3RUZXN0U2hvcnRsaXZlZDEpOgor
ICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0U2hvcnRsaXZlZDE6OkNDTGF5ZXJUcmVl
SG9zdFRlc3RTaG9ydGxpdmVkMSk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RT
aG9ydGxpdmVkMTo6YmVnaW5UZXN0KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVz
dFNob3J0bGl2ZWQxOjphZnRlclRlc3QpOgorICAgICAgICAqIHRlc3RzL0NDVGVzdENvbW1vbi5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdFRlc3RzKToKKyAgICAgICAgKENDU2NvcGVkU2V0dGlu
Z3MpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDU2NvcGVkU2V0dGluZ3M6OkNDU2NvcGVkU2V0
dGluZ3MpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDU2NvcGVkU2V0dGluZ3M6On5DQ1Njb3Bl
ZFNldHRpbmdzKToKKyAgICAgICAgKiB0ZXN0cy9DQ1RocmVhZGVkVGVzdC5jcHA6CisgICAgICAg
IChXZWJLaXRUZXN0czo6TW9ja0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUpOgorICAgICAgICAo
V2ViS2l0VGVzdHM6Ok1vY2tMYXllclRyZWVIb3N0SW1wbDo6TW9ja0xheWVyVHJlZUhvc3RJbXBs
KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpNb2NrTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYktpdFRlc3RzOjpNb2NrTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlTGF5ZXJUcmVlSG9z
dEltcGwpOgorICAgICAgICAoV2ViS2l0VGVzdHM6Ok1vY2tMYXllclRyZWVIb3N0OjpNb2NrTGF5
ZXJUcmVlSG9zdCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NUaHJlYWRlZFRlc3Q6OnJ1blRl
c3QpOgorICAgICAgICAqIHRlc3RzL0NDVGhyZWFkZWRUZXN0Lmg6CisgICAgICAgIChDQ1RocmVh
ZGVkVGVzdCk6CisgICAgICAgIChNb2NrTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAgICAqIHRl
c3RzL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0VGVzdHM6
Ok1vY2tMYXllclRyZWVIb3N0OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0VGVzdHM6Ok1vY2tM
YXllclRyZWVIb3N0OjpjcmVhdGVMYXllclRyZWVIb3N0SW1wbCk6CisgICAgICAgIChXZWJLaXRU
ZXN0czo6TW9ja0xheWVyVHJlZUhvc3Q6Ok1vY2tMYXllclRyZWVIb3N0KToKKyAgICAgICAgKFdl
YktpdFRlc3RzOjpHcmFwaGljc0xheWVyQ2hyb21pdW1UZXN0OjpHcmFwaGljc0xheWVyQ2hyb21p
dW1UZXN0KToKKyAgICAgICAgKiB0ZXN0cy9MYXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAg
ICogdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgIChMYXllclJl
bmRlcmVyQ2hyb21pdW1UZXN0KToKKyAgICAgICAgKFRFU1RfRik6CisgICAgICAgIChURVNUKToK
KyAgICAgICAgKiB0ZXN0cy9UZXh0dXJlTGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAgICAq
IHRlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL1RyZWVT
eW5jaHJvbml6ZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdFRlc3RzOjpURVNUKToKKwogMjAx
Mi0wNi0xNCAgRXVnZW5lIEtseXVjaG5pa292ICA8ZXVzdGFzLmJ1Z0BnbWFpbC5jb20+CiAKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogUmVmYWN0b3IgbWVzc2FnZSBsb29wIGluc3RydW1lbnRhdGlv
bi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJU
cmVlVmlldy5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVW
aWV3LmgKaW5kZXggNDY3ZjY1Y2Q1NWQ3YTllYjgzMTE3YzQwZjljYjgyMGNhMzk4MDI3NS4uNzJi
NWFiOWMyZDQ0MDMyOTUxNjJlN2M3Mzg1YWJlOTI1YjBjOWEwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKKysrIGIvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKQEAgLTM0LDcgKzM0
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ0NMYXllclRyZWVIb3N0Owotc3Ry
dWN0IENDU2V0dGluZ3M7CitzdHJ1Y3QgQ0NMYXllclRyZWVTZXR0aW5nczsKIH0KIAogbmFtZXNw
YWNlIFdlYktpdCB7CkBAIC01NSw5ICs1NSw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgICwgc2hv
d1BsYXRmb3JtTGF5ZXJUcmVlKGZhbHNlKQogICAgICAgICAgICAgLCBzaG93UGFpbnRSZWN0cyhm
YWxzZSkKICAgICAgICAgICAgICwgcmVmcmVzaFJhdGUoMCkKLSAgICAgICAgICAgICwgcGVyVGls
ZVBhaW50aW5nKGZhbHNlKQotICAgICAgICAgICAgLCBwYXJ0aWFsU3dhcEVuYWJsZWQoZmFsc2Up
Ci0gICAgICAgICAgICAsIHRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZChmYWxzZSkKICAgICAgICAg
ICAgICwgZGVmYXVsdFRpbGVTaXplKFdlYlNpemUoMjU2LCAyNTYpKQogICAgICAgICAgICAgLCBt
YXhVbnRpbGVkTGF5ZXJTaXplKFdlYlNpemUoNTEyLCA1MTIpKQogICAgICAgICAgICAgLCBkZXZp
Y2VTY2FsZUZhY3RvcigxKQpAQCAtNzAsMTQgKzY3LDExIEBAIHB1YmxpYzoKICAgICAgICAgYm9v
bCBzaG93UGxhdGZvcm1MYXllclRyZWU7CiAgICAgICAgIGJvb2wgc2hvd1BhaW50UmVjdHM7CiAg
ICAgICAgIGRvdWJsZSByZWZyZXNoUmF0ZTsKLSAgICAgICAgYm9vbCBwZXJUaWxlUGFpbnRpbmc7
Ci0gICAgICAgIGJvb2wgcGFydGlhbFN3YXBFbmFibGVkOwotICAgICAgICBib29sIHRocmVhZGVk
QW5pbWF0aW9uRW5hYmxlZDsKICAgICAgICAgV2ViU2l6ZSBkZWZhdWx0VGlsZVNpemU7CiAgICAg
ICAgIFdlYlNpemUgbWF4VW50aWxlZExheWVyU2l6ZTsKICAgICAgICAgZmxvYXQgZGV2aWNlU2Nh
bGVGYWN0b3I7CiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgICAgIG9wZXJhdG9yIFdl
YkNvcmU6OkNDU2V0dGluZ3MoKSBjb25zdDsKKyAgICAgICAgb3BlcmF0b3IgV2ViQ29yZTo6Q0NM
YXllclRyZWVTZXR0aW5ncygpIGNvbnN0OwogI2VuZGlmCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CmluZGV4IDdhNDUwZDc2MzQ0YzE2NjM2ODJlYWQ3NjE0OThmZjBhYjllMzg2YWUuLmY4OGNjNmJi
ZDU4OGUyNzBlMDA2MWQ1NjM2MDNhZjA5YjQ5MWI4NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTM3
NTEsNiArMzc1MSw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTY29wZWRUaHJlYWRQcm94eS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5jcHAnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmgnLAorICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2V0dGluZ3MuY3BwJywK
KyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NldHRpbmdzLmgn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2hhcmVkUXVh
ZFN0YXRlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaGFyZWRRdWFkU3RhdGUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAnLApAQCAtNjY1Nyw3ICs2NjU5LDcgQEAK
ICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9zZWFyY2hTbWFsbEdyYXku
cG5nJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9zZWFyY2hTbWFs
bFdoaXRlLnBuZycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9JbWFnZXMvc2Vh
cmNoTmV4dC5wbmcnLAotICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL3Nl
YXJjaFByZXYucG5nJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9z
ZWFyY2hQcmV2LnBuZycsICAgICAgICAgICAgCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250
LWVuZC9JbWFnZXMvc2VnbWVudC5wbmcnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1l
bmQvSW1hZ2VzL3NlZ21lbnRFbmQucG5nJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQt
ZW5kL0ltYWdlcy9zZWdtZW50SG92ZXIucG5nJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKaW5k
ZXggZjVkYjIwZDJmYWEzOWQ1ZDc0YWQ2YzJiOWJkMDE4Y2Y0ODlhNWEyNS4uYjFkMTkxM2FlMGRl
OTk1MmEwOGZhZTE5M2M3MTQxOGQzZDM2MWI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9TZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAK
QEAgLTI1NywxNSArMjU3LDEyIEBAIFNldHRpbmdzOjpTZXR0aW5ncyhQYWdlKiBwYWdlKQogICAg
ICwgbV9zaG91bGREaXNwbGF5Q2FwdGlvbnMoZmFsc2UpCiAgICAgLCBtX3Nob3VsZERpc3BsYXlU
ZXh0RGVzY3JpcHRpb25zKGZhbHNlKQogI2VuZGlmCi0gICAgLCBtX3BlclRpbGVEcmF3aW5nRW5h
YmxlZChmYWxzZSkKLSAgICAsIG1fcGFydGlhbFN3YXBFbmFibGVkKGZhbHNlKQogICAgICwgbV9z
Y3JvbGxpbmdDb29yZGluYXRvckVuYWJsZWQoZmFsc2UpCiAgICAgLCBtX25vdGlmaWNhdGlvbnNF
bmFibGVkKHRydWUpCiAgICAgLCBtX25lZWRzSXNMb2FkaW5nSW5BUElTZW5zZVF1aXJrKGZhbHNl
KQogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgLCBtX3RvdWNoRXZlbnRFbXVsYXRpb25F
bmFibGVkKGZhbHNlKQogI2VuZGlmCi0gICAgLCBtX3RocmVhZGVkQW5pbWF0aW9uRW5hYmxlZChm
YWxzZSkKICAgICAsIG1fc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oZmFsc2UpCiAgICAg
LCBtX3dhbnRzQmFsYW5jZWRTZXREZWZlcnNMb2FkaW5nQmVoYXZpb3IoZmFsc2UpCiAgICAgLCBt
X3JlcXVlc3RBbmltYXRpb25GcmFtZUVuYWJsZWQodHJ1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApp
bmRleCBkMzBmNGMwNDgyZTg2MDBmMGZkMTYyM2M1ZWEzNWM3NjM0NzUxNjRjLi43OWFmM2E0Yzk4
OTJlNDkzN2M4NTVmYjkzZDM3OTZiMDYxZGFjYjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCkBA
IC01MzYsMTIgKzUzNiw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBzaG91
bGREaXNwbGF5VGV4dERlc2NyaXB0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkRGlzcGxh
eVRleHREZXNjcmlwdGlvbnM7IH0KICNlbmRpZgogCi0gICAgICAgIHZvaWQgc2V0UGVyVGlsZURy
YXdpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3BlclRpbGVEcmF3aW5nRW5hYmxlZCA9IGVu
YWJsZWQ7IH0KLSAgICAgICAgYm9vbCBwZXJUaWxlRHJhd2luZ0VuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBtX3BlclRpbGVEcmF3aW5nRW5hYmxlZDsgfQotCi0gICAgICAgIHZvaWQgc2V0UGFydGlh
bFN3YXBFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3BhcnRpYWxTd2FwRW5hYmxlZCA9IGVuYWJs
ZWQ7IH0KLSAgICAgICAgYm9vbCBwYXJ0aWFsU3dhcEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X3BhcnRpYWxTd2FwRW5hYmxlZDsgfQotCiAgICAgICAgIHZvaWQgc2V0U2Nyb2xsaW5nQ29vcmRp
bmF0b3JFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yRW5hYmxl
ZCA9IGVuYWJsZWQ7IH0KICAgICAgICAgYm9vbCBzY3JvbGxpbmdDb29yZGluYXRvckVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yRW5hYmxlZDsgfQogCkBAIC01
NTcsOSArNTUxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGlzVG91Y2hF
dmVudEVtdWxhdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3RvdWNoRXZlbnRFbXVsYXRp
b25FbmFibGVkOyB9CiAjZW5kaWYKIAotICAgICAgICB2b2lkIHNldFRocmVhZGVkQW5pbWF0aW9u
RW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV90aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQgPSBlbmFi
bGVkOyB9Ci0gICAgICAgIGJvb2wgdGhyZWFkZWRBbmltYXRpb25FbmFibGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV90aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQ7IH0KLQogICAgICAgICB2b2lkIHNldFNo
b3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKGJvb2wgZW5hYmxlZCkgeyBtX3Nob3VsZFJlc3Bl
Y3RJbWFnZU9yaWVudGF0aW9uID0gZW5hYmxlZDsgfQogICAgICAgICBib29sIHNob3VsZFJlc3Bl
Y3RJbWFnZU9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRSZXNwZWN0SW1hZ2VP
cmllbnRhdGlvbjsgfQogCkBAIC03NDYsOSArNzM3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBib29sIG1fc2hvdWxkRGlzcGxheUNhcHRpb25zIDogMTsKICAgICAgICAgYm9vbCBt
X3Nob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zIDogMTsKICNlbmRpZgotICAgICAgICBib29s
IG1fcGVyVGlsZURyYXdpbmdFbmFibGVkIDogMTsKLSAgICAgICAgYm9vbCBtX3BhcnRpYWxTd2Fw
RW5hYmxlZCA6IDE7Ci0KICAgICAgICAgYm9vbCBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yRW5hYmxl
ZCA6IDE7CiAKICAgICAgICAgYm9vbCBtX25vdGlmaWNhdGlvbnNFbmFibGVkIDogMTsKQEAgLTc1
Nyw3ICs3NDUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKICAgICAgICAgYm9vbCBtX3RvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkIDogMTsKICNlbmRp
ZgotICAgICAgICBib29sIG1fdGhyZWFkZWRBbmltYXRpb25FbmFibGVkIDogMTsKICAgICAgICAg
Ym9vbCBtX3Nob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uIDogMTsKICAgICAgICAgYm9vbCBt
X3dhbnRzQmFsYW5jZWRTZXREZWZlcnNMb2FkaW5nQmVoYXZpb3IgOiAxOwogICAgICAgICBib29s
IG1fcmVxdWVzdEFuaW1hdGlvbkZyYW1lRW5hYmxlZCA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5
ZXJDaHJvbWl1bS5jcHAKaW5kZXggYWU4ZDMyMDhiZmJhYjhkN2FkZTk4MmE3ZDhhOTNhMmQ4M2Vk
N2RhZi4uYjZhMDI1NjFjZTJjYmM0YzM3YTY3ZTM1ZmMyODMwODJjODU3Yjk3ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVy
Q2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUg
IkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3VwcG9ydC5oIgog
I2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgorI2luY2x1ZGUgImNjL0NDU2V0dGluZ3Mu
aCIKICNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRp
bWUuaD4KIApAQCAtMTI3LDcgKzEyOCw3IEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OmNy
ZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQoKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKGxh
eWVyVHJlZUhvc3QoKS0+c2V0dGluZ3MoKS5hY2NlbGVyYXRlUGFpbnRpbmcpCiAgICAgICAgIG1f
dGV4dHVyZVVwZGF0ZXIgPSBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6OmNyZWF0ZShDb250ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUobV9kZWxlZ2F0ZSkpOwot
ICAgIGVsc2UgaWYgKGxheWVyVHJlZUhvc3QoKS0+c2V0dGluZ3MoKS5wZXJUaWxlUGFpbnRpbmcp
CisgICAgZWxzZSBpZiAoQ0NTZXR0aW5nczo6cGVyVGlsZVBhaW50aW5nRW5hYmxlZCgpKQogICAg
ICAgICBtX3RleHR1cmVVcGRhdGVyID0gQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6Y3JlYXRlKENvbnRlbnRMYXllclBhaW50ZXI6OmNyZWF0ZShtX2RlbGVnYXRlKSwg
bGF5ZXJUcmVlSG9zdCgpLT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdNYXBTdWIp
OwogICAgIGVsc2UKICAgICAgICAgbV90ZXh0dXJlVXBkYXRlciA9IEJpdG1hcENhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShDb250ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUobV9kZWxl
Z2F0ZSksIGxheWVyVHJlZUhvc3QoKS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLnVzaW5n
TWFwU3ViKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggYmM4MmZlYjBkZjQzZjdiNDg1ZjAy
MTk3NmIyMjc2MWNkNjFkMTgyNS4uZmNhZGZhMjllZjMwZTBjMWM1NTBmMWVhYzIwNWNhNWFlNzBk
MDdkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRl
ICJjYy9DQ0xheWVyQW5pbWF0aW9uRGVsZWdhdGUuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVySW1w
bC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgorI2luY2x1ZGUgImNjL0NDU2V0
dGluZ3MuaCIKICNpbmNsdWRlICJza2lhL2V4dC9wbGF0Zm9ybV9jYW52YXMuaCIKIAogdXNpbmcg
bmFtZXNwYWNlIHN0ZDsKQEAgLTYwNiwxMiArNjA3LDE0IEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6
c2V0VHJhbnNmb3JtRnJvbUFuaW1hdGlvbihjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
dHJhCiAKIGJvb2wgTGF5ZXJDaHJvbWl1bTo6YWRkQW5pbWF0aW9uKFBhc3NPd25QdHI8Q0NBY3Rp
dmVBbmltYXRpb24+IGFuaW1hdGlvbikKIHsKLSAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdCB8fCAh
bV9sYXllclRyZWVIb3N0LT5zZXR0aW5ncygpLnRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZCkKKyAg
ICBpZiAoIUNDU2V0dGluZ3M6OmFjY2VsZXJhdGVkQW5pbWF0aW9uRW5hYmxlZCgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBtX2xheWVyQW5pbWF0aW9uQ29udHJvbGxlci0+YWRkQW5p
bWF0aW9uKGFuaW1hdGlvbik7Ci0gICAgbV9sYXllclRyZWVIb3N0LT5kaWRBZGRBbmltYXRpb24o
KTsKLSAgICBzZXROZWVkc0NvbW1pdCgpOworICAgIGlmIChtX2xheWVyVHJlZUhvc3QpIHsKKyAg
ICAgICAgbV9sYXllclRyZWVIb3N0LT5kaWRBZGRBbmltYXRpb24oKTsKKyAgICAgICAgc2V0TmVl
ZHNDb21taXQoKTsKKyAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IGFiZmRiNDRjNzYyNGIzNzFmNzkxNTcxYzllZjdi
YmQzNjM4ZjZmMDcuLmMwNmEwMGMyYmQ4ODkyMDYzMDBlMGU4NDAxMzZkMzEzMjVhMzA4ZTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
UmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAtNjQsNiArNjQsNyBAQAog
I2luY2x1ZGUgImNjL0NDUmVuZGVyUGFzcy5oIgogI2luY2x1ZGUgImNjL0NDUmVuZGVyUGFzc0Ry
YXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJTdXJmYWNlRmlsdGVycy5oIgorI2luY2x1
ZGUgImNjL0NDU2V0dGluZ3MuaCIKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5Lmgi
CiAjaW5jbHVkZSAiY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ1N0
cmVhbVZpZGVvRHJhd1F1YWQuaCIKQEAgLTI5Miw3ICsyOTMsNyBAQCBib29sIExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZSgpCiAgICAgaWYgKG1fY2FwYWJpbGl0aWVzLmNvbnRleHRI
YXNDYWNoZWRGcm9udEJ1ZmZlcikKICAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgi
R0xfQ0hST01JVU1fZnJvbnRfYnVmZmVyX2NhY2hlZCIpOwogCi0gICAgbV9jYXBhYmlsaXRpZXMu
dXNpbmdQYXJ0aWFsU3dhcCA9IHNldHRpbmdzKCkucGFydGlhbFN3YXBFbmFibGVkICYmIGV4dGVu
c2lvbnMtPnN1cHBvcnRzKCJHTF9DSFJPTUlVTV9wb3N0X3N1Yl9idWZmZXIiKTsKKyAgICBtX2Nh
cGFiaWxpdGllcy51c2luZ1BhcnRpYWxTd2FwID0gQ0NTZXR0aW5nczo6cGFydGlhbFN3YXBFbmFi
bGVkKCkgJiYgZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0NIUk9NSVVNX3Bvc3Rfc3ViX2J1ZmZl
ciIpOwogICAgIGlmIChtX2NhcGFiaWxpdGllcy51c2luZ1BhcnRpYWxTd2FwKQogICAgICAgICBl
eHRlbnNpb25zLT5lbnN1cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9wb3N0X3N1Yl9idWZmZXIiKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VGlsZWRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMTJlMzcxN2NhNmRmZjFjMzhh
Yzk0ZGJiMTdlZTZjNjdmZDBjZDUxZS4uNzQ3NGMzMWNmOGI4ZGVmZWFkNGFlZDA5MDQyMjljNzc0
ZmM0NzRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCkBAIC0xMTEsOSArMTEx
LDggQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZVRpbGVTaXplQW5kVGlsaW5nT3B0
aW9uKCkKIHsKICAgICBBU1NFUlQobGF5ZXJUcmVlSG9zdCgpKTsKIAotICAgIGNvbnN0IENDU2V0
dGluZ3MmIHNldHRpbmdzID0gbGF5ZXJUcmVlSG9zdCgpLT5zZXR0aW5ncygpOwotICAgIGNvbnN0
IEludFNpemUmIGRlZmF1bHRUaWxlU2l6ZSA9IHNldHRpbmdzLmRlZmF1bHRUaWxlU2l6ZTsKLSAg
ICBjb25zdCBJbnRTaXplJiBtYXhVbnRpbGVkTGF5ZXJTaXplID0gc2V0dGluZ3MubWF4VW50aWxl
ZExheWVyU2l6ZTsKKyAgICBjb25zdCBJbnRTaXplJiBkZWZhdWx0VGlsZVNpemUgPSBsYXllclRy
ZWVIb3N0KCktPnNldHRpbmdzKCkuZGVmYXVsdFRpbGVTaXplOworICAgIGNvbnN0IEludFNpemUm
IG1heFVudGlsZWRMYXllclNpemUgPSBsYXllclRyZWVIb3N0KCktPnNldHRpbmdzKCkubWF4VW50
aWxlZExheWVyU2l6ZTsKICAgICBpbnQgbGF5ZXJXaWR0aCA9IGNvbnRlbnRCb3VuZHMoKS53aWR0
aCgpOwogICAgIGludCBsYXllckhlaWdodCA9IGNvbnRlbnRCb3VuZHMoKS5oZWlnaHQoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NEZWJ1Z1JlY3RIaXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDRGVidWdSZWN0SGlzdG9yeS5jcHAKaW5kZXggM2M4OGRjYzQwMDNhNjY5
MTg5M2Y3NWI1NDVmZjBkNjQ5NWQ4ODgxMS4uMTdkNTk0NmVjMmVjY2RlYmFjYmFmMDM0OGZmODEw
NjJmOTg3YTQ1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3RvcnkuY3BwCkBAIC0z
OCwxMiArMzgsMTIgQEAgQ0NEZWJ1Z1JlY3RIaXN0b3J5OjpDQ0RlYnVnUmVjdEhpc3RvcnkoKQog
ewogfQogCi1ib29sIENDRGVidWdSZWN0SGlzdG9yeTo6ZW5hYmxlZChjb25zdCBDQ1NldHRpbmdz
JiBzZXR0aW5ncykKK2Jvb2wgQ0NEZWJ1Z1JlY3RIaXN0b3J5OjplbmFibGVkKGNvbnN0IENDTGF5
ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzKQogewogICAgIHJldHVybiBzZXR0aW5ncy5zaG93UGFp
bnRSZWN0cyB8fCBzZXR0aW5ncy5zaG93UHJvcGVydHlDaGFuZ2VkUmVjdHMgfHwgc2V0dGluZ3Mu
c2hvd1N1cmZhY2VEYW1hZ2VSZWN0czsKIH0KIAotdm9pZCBDQ0RlYnVnUmVjdEhpc3Rvcnk6OnNh
dmVEZWJ1Z1JlY3RzRm9yQ3VycmVudEZyYW1lKENDTGF5ZXJJbXBsKiByb290TGF5ZXIsIGNvbnN0
IFZlY3RvcjxDQ0xheWVySW1wbCo+JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBjb25zdCBDQ1Nl
dHRpbmdzJiBzZXR0aW5ncykKK3ZvaWQgQ0NEZWJ1Z1JlY3RIaXN0b3J5OjpzYXZlRGVidWdSZWN0
c0ZvckN1cnJlbnRGcmFtZShDQ0xheWVySW1wbCogcm9vdExheWVyLCBjb25zdCBWZWN0b3I8Q0NM
YXllckltcGwqPiYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgY29uc3QgQ0NMYXllclRyZWVTZXR0
aW5ncyYgc2V0dGluZ3MpCiB7CiAgICAgLy8gRm9yIG5vdywgY2xlYXIgYWxsIHJlY3RzIGZyb20g
cHJldmlvdXMgZnJhbWVzLiBJbiB0aGUgZnV0dXJlIHdlIG1heSB3YW50IHRvIHN0b3JlCiAgICAg
Ly8gYWxsIGRlYnVnIHJlY3RzIGZvciBhIGhpc3Rvcnkgb2YgbWFueSBmcmFtZXMuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVn
UmVjdEhpc3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDRGVidWdSZWN0SGlzdG9yeS5oCmluZGV4IDkzZGExMDdhZGU0ZmI3NzQ5YWIyZDVjZTc0
NzVhMjI2Y2JiMGUxNDQuLmJiM2NkYjc5ZDU3MTg0N2IyNzZlOTdjODBmZDY4YzFhYzJjNDhkNmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDRGVidWdSZWN0SGlzdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDRGVidWdSZWN0SGlzdG9yeS5oCkBAIC0zNSw3ICszNSw3IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDTGF5ZXJJbXBsOwotc3RydWN0IENDU2V0dGlu
Z3M7CitzdHJ1Y3QgQ0NMYXllclRyZWVTZXR0aW5nczsKIAogLy8gVGhlcmUgYXJlIGN1cnJlbnRs
eSB0aHJlZSB0eXBlcyBvZiBkZWJ1ZyByZWN0czoKIC8vCkBAIC02Myw3ICs2Myw3IEBAIHN0cnVj
dCBDQ0RlYnVnUmVjdCB7CiAKIC8vIFRoaXMgY2xhc3MgbWFpbnRhaW5zIGEgaGlzdG9yeSBvZiBy
ZWN0cyBvZiB2YXJpb3VzIHR5cGVzIHRoYXQgY2FuIGJlIHVzZWQKIC8vIGZvciBkZWJ1Z2dpbmcg
cHVycG9zZXMuIFRoZSBvdmVyaGVhZCBvZiBjb2xsZWN0aW5nIHJlY3RzIGlzIHBlcmZvcm1lZCBv
bmx5IGlmCi0vLyB0aGUgYXBwcm9wcmlhdGUgQ0NTZXR0aW5ncyBhcmUgZW5hYmxlZC4KKy8vIHRo
ZSBhcHByb3ByaWF0ZSBDQ0xheWVyVHJlZVNldHRpbmdzIGFyZSBlbmFibGVkLgogY2xhc3MgQ0NE
ZWJ1Z1JlY3RIaXN0b3J5IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ0RlYnVnUmVjdEhp
c3RvcnkpOwogcHVibGljOgpAQCAtNzIsMTAgKzcyLDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBDQ0RlYnVnUmVjdEhpc3RvcnkoKSk7CiAgICAgfQogCi0gICAgYm9v
bCBlbmFibGVkKGNvbnN0IENDU2V0dGluZ3MmKTsKKyAgICBib29sIGVuYWJsZWQoY29uc3QgQ0NM
YXllclRyZWVTZXR0aW5ncyYpOwogCiAgICAgLy8gTm90ZTogU2F2aW5nIGRlYnVnIHJlY3RzIG11
c3QgaGFwcGVuIGJlZm9yZSBsYXllcnMnIGNoYW5nZSB0cmFja2luZyBpcyByZXNldC4KLSAgICB2
b2lkIHNhdmVEZWJ1Z1JlY3RzRm9yQ3VycmVudEZyYW1lKENDTGF5ZXJJbXBsKiByb290TGF5ZXIs
IGNvbnN0IFZlY3RvcjxDQ0xheWVySW1wbCo+JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBjb25z
dCBDQ1NldHRpbmdzJik7CisgICAgdm9pZCBzYXZlRGVidWdSZWN0c0ZvckN1cnJlbnRGcmFtZShD
Q0xheWVySW1wbCogcm9vdExheWVyLCBjb25zdCBWZWN0b3I8Q0NMYXllckltcGwqPiYgcmVuZGVy
U3VyZmFjZUxheWVyTGlzdCwgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYpOwogCiAgICAgY29u
c3QgVmVjdG9yPENDRGVidWdSZWN0PiYgZGVidWdSZWN0cygpIHsgcmV0dXJuIG1fZGVidWdSZWN0
czsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCmluZGV4IDM0ODVhNDhhNGFh
NDE2OGVlMGQwNDFiZTdkMTAzYWJiZWNhMjU5MzUuLjFiYmMwNDZlN2E1ODIxYWIwZTAzOTk0NmI2
MGM4MWEwZWNjOWEyN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCkBAIC01
MiwxNyArNTIsMTcgQEAgdm9pZCBDQ0hlYWRzVXBEaXNwbGF5OjpzZXRGb250QXRsYXMoUGFzc093
blB0cjxDQ0ZvbnRBdGxhcz4gZm9udEF0bGFzKQogICAgIG1fZm9udEF0bGFzID0gZm9udEF0bGFz
OwogfQogCi1ib29sIENDSGVhZHNVcERpc3BsYXk6OmVuYWJsZWQoY29uc3QgQ0NTZXR0aW5ncyYg
c2V0dGluZ3MpIGNvbnN0Citib29sIENDSGVhZHNVcERpc3BsYXk6OmVuYWJsZWQoY29uc3QgQ0NM
YXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHNob3dQbGF0
Zm9ybUxheWVyVHJlZShzZXR0aW5ncykgfHwgc2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIgfHwgc2hv
d0RlYnVnUmVjdHMoc2V0dGluZ3MpOwogfQogCi1ib29sIENDSGVhZHNVcERpc3BsYXk6OnNob3dQ
bGF0Zm9ybUxheWVyVHJlZShjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncykgY29uc3QKK2Jvb2wg
Q0NIZWFkc1VwRGlzcGxheTo6c2hvd1BsYXRmb3JtTGF5ZXJUcmVlKGNvbnN0IENDTGF5ZXJUcmVl
U2V0dGluZ3MmIHNldHRpbmdzKSBjb25zdAogewogICAgIHJldHVybiBzZXR0aW5ncy5zaG93UGxh
dGZvcm1MYXllclRyZWU7CiB9CiAKLWJvb2wgQ0NIZWFkc1VwRGlzcGxheTo6c2hvd0RlYnVnUmVj
dHMoY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MpIGNvbnN0Citib29sIENDSGVhZHNVcERpc3Bs
YXk6OnNob3dEZWJ1Z1JlY3RzKGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzKSBj
b25zdAogewogICAgIHJldHVybiBzZXR0aW5ncy5zaG93UGFpbnRSZWN0cyB8fCBzZXR0aW5ncy5z
aG93UHJvcGVydHlDaGFuZ2VkUmVjdHMgfHwgc2V0dGluZ3Muc2hvd1N1cmZhY2VEYW1hZ2VSZWN0
czsKIH0KQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3KENDTGF5
ZXJUcmVlSG9zdEltcGwqIGxheWVyVHJlZUhvc3RJbXBsKQogICAgIGlmICghbV9odWRUZXh0dXJl
KQogICAgICAgICBtX2h1ZFRleHR1cmUgPSBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKGxheWVyUmVu
ZGVyZXItPmltcGxUZXh0dXJlTWFuYWdlcigpKTsKIAotICAgIGNvbnN0IENDU2V0dGluZ3MmIHNl
dHRpbmdzID0gbGF5ZXJUcmVlSG9zdEltcGwtPnNldHRpbmdzKCk7CisgICAgY29uc3QgQ0NMYXll
clRyZWVTZXR0aW5ncyYgc2V0dGluZ3MgPSBsYXllclRyZWVIb3N0SW1wbC0+c2V0dGluZ3MoKTsK
ICAgICAvLyBVc2UgYSBmdWxsc2NyZWVuIHRleHR1cmUgb25seSBpZiB3ZSBuZWVkIHRvLi4uCiAg
ICAgSW50U2l6ZSBodWRTaXplOwogICAgIGlmIChzaG93UGxhdGZvcm1MYXllclRyZWUoc2V0dGlu
Z3MpIHx8IHNob3dEZWJ1Z1JlY3RzKHNldHRpbmdzKSkgewpAQCAtMTI4LDcgKzEyOCw3IEBAIHZv
aWQgQ0NIZWFkc1VwRGlzcGxheTo6ZHJhdyhDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVI
b3N0SW1wbCkKICAgICBtX2h1ZFRleHR1cmUtPnVucmVzZXJ2ZSgpOwogfQogCi12b2lkIENDSGVh
ZHNVcERpc3BsYXk6OmRyYXdIdWRDb250ZW50cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIEND
TGF5ZXJUcmVlSG9zdEltcGwqIGxheWVyVHJlZUhvc3RJbXBsLCBjb25zdCBDQ1NldHRpbmdzJiBz
ZXR0aW5ncywgY29uc3QgSW50U2l6ZSYgaHVkU2l6ZSkKK3ZvaWQgQ0NIZWFkc1VwRGlzcGxheTo6
ZHJhd0h1ZENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgQ0NMYXllclRyZWVIb3N0
SW1wbCogbGF5ZXJUcmVlSG9zdEltcGwsIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRp
bmdzLCBjb25zdCBJbnRTaXplJiBodWRTaXplKQogewogICAgIGlmIChzaG93UGxhdGZvcm1MYXll
clRyZWUoc2V0dGluZ3MpKSB7CiAgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcigw
LCAwLCAwLCAxOTIpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKQEAgLTIyMSw3ICsyMjEsNyBAQCB2
b2lkIENDSGVhZHNVcERpc3BsYXk6OmRyYXdGUFNDb3VudGVyVGV4dChHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIENDRnJhbWVSYXRlQwogICAgICAgICBtX2ZvbnRBdGxhcy0+ZHJhd1RleHQoY29u
dGV4dCwgU3RyaW5nOjpmb3JtYXQoIkZQUzogJTQuMWYgKy8tICUzLjFmIiwgYXZlcmFnZUZQUywg
c3RkRGV2aWF0aW9uKSwgSW50UG9pbnQoMTAsIGhlaWdodCAvIDMpLCBJbnRTaXplKHdpZHRoLCBo
ZWlnaHQpKTsKIH0KIAotdm9pZCBDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3RGVidWdSZWN0cyhHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIENDRGVidWdSZWN0SGlzdG9yeSogZGVidWdSZWN0SGlzdG9y
eSwgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MpCit2b2lkIENDSGVhZHNVcERpc3BsYXk6OmRy
YXdEZWJ1Z1JlY3RzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgQ0NEZWJ1Z1JlY3RIaXN0b3J5
KiBkZWJ1Z1JlY3RIaXN0b3J5LCBjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncykK
IHsKICAgICBjb25zdCBWZWN0b3I8Q0NEZWJ1Z1JlY3Q+JiBkZWJ1Z1JlY3RzID0gZGVidWdSZWN0
SGlzdG9yeS0+ZGVidWdSZWN0cygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGVidWdS
ZWN0cy5zaXplKCk7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5oCmluZGV4IDQ4
MzFlNWRkMThjM2UxMTIxYTE5MmI5OWE3NGFmMWJhY2NkMmNmYWQuLmUxY2U5M2E2YzNlOTBjYjM0
NDVlYjk3ZDJmNjBlZTA0NDBmNGM1OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmgK
QEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgQ0NGcmFtZVJhdGVDb3VudGVyOwogY2xhc3MgQ0NMYXll
clRyZWVIb3N0SW1wbDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIE1hbmFnZWRUZXh0
dXJlOwotc3RydWN0IENDU2V0dGluZ3M7CitzdHJ1Y3QgQ0NMYXllclRyZWVTZXR0aW5nczsKIAog
Ly8gQ2xhc3MgdGhhdCBoYW5kbGVzIGRyYXdpbmcgb2YgY29tcG9zaXRlZCByZW5kZXIgbGF5ZXJz
IHVzaW5nIEdMLgogY2xhc3MgQ0NIZWFkc1VwRGlzcGxheSB7CkBAIC01MSwxOSArNTEsMTkgQEAg
cHVibGljOgogCiAgICAgdm9pZCBzZXRGb250QXRsYXMoUGFzc093blB0cjxDQ0ZvbnRBdGxhcz4p
OwogCi0gICAgYm9vbCBlbmFibGVkKGNvbnN0IENDU2V0dGluZ3MmKSBjb25zdDsKKyAgICBib29s
IGVuYWJsZWQoY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYpIGNvbnN0OwogICAgIHZvaWQgZHJh
dyhDQ0xheWVyVHJlZUhvc3RJbXBsKik7CiAKIHByaXZhdGU6CiAgICAgQ0NIZWFkc1VwRGlzcGxh
eSgpIHsgfTsKIAotICAgIHZvaWQgZHJhd0h1ZENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCosIEND
TGF5ZXJUcmVlSG9zdEltcGwqLCBjb25zdCBDQ1NldHRpbmdzJiwgY29uc3QgSW50U2l6ZSYgaHVk
U2l6ZSk7CisgICAgdm9pZCBkcmF3SHVkQ29udGVudHMoR3JhcGhpY3NDb250ZXh0KiwgQ0NMYXll
clRyZWVIb3N0SW1wbCosIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmLCBjb25zdCBJbnRTaXpl
JiBodWRTaXplKTsKICAgICB2b2lkIGRyYXdGUFNDb3VudGVyKEdyYXBoaWNzQ29udGV4dCosIEND
RnJhbWVSYXRlQ291bnRlciosIGludCB0b3AsIGludCBoZWlnaHQpOwogICAgIHZvaWQgZHJhd0ZQ
U0NvdW50ZXJUZXh0KEdyYXBoaWNzQ29udGV4dCosIENDRnJhbWVSYXRlQ291bnRlciosIGludCB0
b3AsIGludCB3aWR0aCwgaW50IGhlaWdodCk7Ci0gICAgdm9pZCBkcmF3RGVidWdSZWN0cyhHcmFw
aGljc0NvbnRleHQqLCBDQ0RlYnVnUmVjdEhpc3RvcnkqLCBjb25zdCBDQ1NldHRpbmdzJik7Cisg
ICAgdm9pZCBkcmF3RGVidWdSZWN0cyhHcmFwaGljc0NvbnRleHQqLCBDQ0RlYnVnUmVjdEhpc3Rv
cnkqLCBjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJik7CiAKLSAgICBib29sIHNob3dQbGF0Zm9y
bUxheWVyVHJlZShjb25zdCBDQ1NldHRpbmdzJikgY29uc3Q7Ci0gICAgYm9vbCBzaG93RGVidWdS
ZWN0cyhjb25zdCBDQ1NldHRpbmdzJikgY29uc3Q7CisgICAgYm9vbCBzaG93UGxhdGZvcm1MYXll
clRyZWUoY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYpIGNvbnN0OworICAgIGJvb2wgc2hvd0Rl
YnVnUmVjdHMoY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYpIGNvbnN0OwogCiAgICAgT3duUHRy
PE1hbmFnZWRUZXh0dXJlPiBtX2h1ZFRleHR1cmU7CiAgICAgT3duUHRyPENDRm9udEF0bGFzPiBt
X2ZvbnRBdGxhczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IGFiYTQ1NDQ3
OTU1MWI3ZDEwYmZhMWI1ZGE2YjFiNDI4NDFlZmUyMWEuLmVlYzg0NDcyYmJhNjU2YjU2ZjliZTU3
OTFmZjQyOTk0YjdlMDk3MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAt
MzgsNiArMzgsNyBAQAogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oIgogI2lu
Y2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKICNpbmNsdWRlICJjYy9DQ09jY2x1c2lv
blRyYWNrZXIuaCIKKyNpbmNsdWRlICJjYy9DQ1NldHRpbmdzLmgiCiAjaW5jbHVkZSAiY2MvQ0NT
aW5nbGVUaHJlYWRQcm94eS5oIgogI2luY2x1ZGUgImNjL0NDVGhyZWFkLmgiCiAjaW5jbHVkZSAi
Y2MvQ0NUaHJlYWRQcm94eS5oIgpAQCAtNTgsNyArNTksNyBAQCBib29sIENDTGF5ZXJUcmVlSG9z
dDo6YW55TGF5ZXJUcmVlSG9zdEluc3RhbmNlRXhpc3RzKCkKICAgICByZXR1cm4gbnVtTGF5ZXJU
cmVlSW5zdGFuY2VzID4gMDsKIH0KIAotUGFzc093blB0cjxDQ0xheWVyVHJlZUhvc3Q+IENDTGF5
ZXJUcmVlSG9zdDo6Y3JlYXRlKENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50LCBjb25zdCBD
Q1NldHRpbmdzJiBzZXR0aW5ncykKK1Bhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0PiBDQ0xheWVy
VHJlZUhvc3Q6OmNyZWF0ZShDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwgY29uc3QgQ0NM
YXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MpCiB7CiAgICAgT3duUHRyPENDTGF5ZXJUcmVlSG9z
dD4gbGF5ZXJUcmVlSG9zdCA9IGFkb3B0UHRyKG5ldyBDQ0xheWVyVHJlZUhvc3QoY2xpZW50LCBz
ZXR0aW5ncykpOwogICAgIGlmICghbGF5ZXJUcmVlSG9zdC0+aW5pdGlhbGl6ZSgpKQpAQCAtNjYs
NyArNjcsNyBAQCBQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdD4gQ0NMYXllclRyZWVIb3N0Ojpj
cmVhdGUoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGllbgogICAgIHJldHVybiBsYXllclRyZWVI
b3N0LnJlbGVhc2UoKTsKIH0KIAotQ0NMYXllclRyZWVIb3N0OjpDQ0xheWVyVHJlZUhvc3QoQ0NM
YXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQsIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKQor
Q0NMYXllclRyZWVIb3N0OjpDQ0xheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBj
bGllbnQsIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzKQogICAgIDogbV9jb21w
b3NpdG9ySWRlbnRpZmllcigtMSkKICAgICAsIG1fYW5pbWF0aW5nKGZhbHNlKQogICAgICwgbV9u
ZWVkc0FuaW1hdGVMYXllcnMoZmFsc2UpCkBAIC02ODIsNyArNjgzLDcgQEAgdm9pZCBDQ0xheWVy
VHJlZUhvc3Q6OmRlbGV0ZVRleHR1cmVBZnRlckNvbW1pdChQYXNzT3duUHRyPE1hbmFnZWRUZXh0
dXJlPiB0ZXh0dXIKIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmFuaW1hdGVMYXllcnMoZG91Ymxl
IG1vbm90b25pY1RpbWUpCiB7Ci0gICAgaWYgKCFtX3NldHRpbmdzLnRocmVhZGVkQW5pbWF0aW9u
RW5hYmxlZCB8fCAhbV9uZWVkc0FuaW1hdGVMYXllcnMpCisgICAgaWYgKCFDQ1NldHRpbmdzOjph
Y2NlbGVyYXRlZEFuaW1hdGlvbkVuYWJsZWQoKSB8fCAhbV9uZWVkc0FuaW1hdGVMYXllcnMpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3RJbXBsOjph
bmltYXRlTGF5ZXJzIiwgdGhpcywgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4
IDNjM2FlMDNmNjZjOGVmNDU3YTgzMWNlNjJkYzFkODRmY2ZjMzQxZTIuLmU0MDIzNjhlOTUxMWY3
NzVjNTczMzUxNGFmM2VkZjE5ZDM0ZjQ0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5o
CkBAIC03NCw4ICs3NCw4IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5DQ0xheWVyVHJlZUhv
c3RDbGllbnQoKSB7IH0KIH07CiAKLXN0cnVjdCBDQ1NldHRpbmdzIHsKLSAgICBDQ1NldHRpbmdz
KCkKK3N0cnVjdCBDQ0xheWVyVHJlZVNldHRpbmdzIHsKKyAgICBDQ0xheWVyVHJlZVNldHRpbmdz
KCkKICAgICAgICAgICAgIDogYWNjZWxlcmF0ZVBhaW50aW5nKGZhbHNlKQogICAgICAgICAgICAg
LCBmb3JjZVNvZnR3YXJlQ29tcG9zaXRpbmcoZmFsc2UpCiAgICAgICAgICAgICAsIHNob3dGUFND
b3VudGVyKGZhbHNlKQpAQCAtODQsOSArODQsNiBAQCBzdHJ1Y3QgQ0NTZXR0aW5ncyB7CiAgICAg
ICAgICAgICAsIHNob3dQcm9wZXJ0eUNoYW5nZWRSZWN0cyhmYWxzZSkKICAgICAgICAgICAgICwg
c2hvd1N1cmZhY2VEYW1hZ2VSZWN0cyhmYWxzZSkKICAgICAgICAgICAgICwgcmVmcmVzaFJhdGUo
MCkKLSAgICAgICAgICAgICwgcGVyVGlsZVBhaW50aW5nKGZhbHNlKQotICAgICAgICAgICAgLCBw
YXJ0aWFsU3dhcEVuYWJsZWQoZmFsc2UpCi0gICAgICAgICAgICAsIHRocmVhZGVkQW5pbWF0aW9u
RW5hYmxlZChmYWxzZSkKICAgICAgICAgICAgICwgbWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKHN0
ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpCiAgICAgICAgICAgICAsIGRlZmF1bHRU
aWxlU2l6ZShJbnRTaXplKDI1NiwgMjU2KSkKICAgICAgICAgICAgICwgbWF4VW50aWxlZExheWVy
U2l6ZShJbnRTaXplKDUxMiwgNTEyKSkKQEAgLTEwMSw5ICs5OCw2IEBAIHN0cnVjdCBDQ1NldHRp
bmdzIHsKICAgICBib29sIHNob3dQcm9wZXJ0eUNoYW5nZWRSZWN0czsKICAgICBib29sIHNob3dT
dXJmYWNlRGFtYWdlUmVjdHM7CiAgICAgZG91YmxlIHJlZnJlc2hSYXRlOwotICAgIGJvb2wgcGVy
VGlsZVBhaW50aW5nOwotICAgIGJvb2wgcGFydGlhbFN3YXBFbmFibGVkOwotICAgIGJvb2wgdGhy
ZWFkZWRBbmltYXRpb25FbmFibGVkOwogICAgIHNpemVfdCBtYXhQYXJ0aWFsVGV4dHVyZVVwZGF0
ZXM7CiAgICAgSW50U2l6ZSBkZWZhdWx0VGlsZVNpemU7CiAgICAgSW50U2l6ZSBtYXhVbnRpbGVk
TGF5ZXJTaXplOwpAQCAtMTQzLDcgKzEzNyw3IEBAIHN0cnVjdCBMYXllclJlbmRlcmVyQ2FwYWJp
bGl0aWVzIHsKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdCA6IHB1YmxpYyBSYXRlTGltaXRlckNsaWVu
dCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NMYXllclRyZWVIb3N0KTsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc093blB0cjxDQ0xheWVyVHJlZUhvc3Q+IGNyZWF0ZShDQ0xheWVyVHJl
ZUhvc3RDbGllbnQqLCBjb25zdCBDQ1NldHRpbmdzJik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8
Q0NMYXllclRyZWVIb3N0PiBjcmVhdGUoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiwgY29uc3QgQ0NM
YXllclRyZWVTZXR0aW5ncyYpOwogICAgIHZpcnR1YWwgfkNDTGF5ZXJUcmVlSG9zdCgpOwogCiAg
ICAgdm9pZCBzZXRTdXJmYWNlUmVhZHkoKTsKQEAgLTIxOSw3ICsyMTMsNyBAQCBwdWJsaWM6CiAg
ICAgY29uc3QgTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9yb290
TGF5ZXIuZ2V0KCk7IH0KICAgICB2b2lkIHNldFJvb3RMYXllcihQYXNzUmVmUHRyPExheWVyQ2hy
b21pdW0+KTsKIAotICAgIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgeyByZXR1
cm4gbV9zZXR0aW5nczsgfQorICAgIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdz
KCkgY29uc3QgeyByZXR1cm4gbV9zZXR0aW5nczsgfQogCiAgICAgdm9pZCBzZXRWaWV3cG9ydFNp
emUoY29uc3QgSW50U2l6ZSYpOwogCkBAIC0yNTQsNyArMjQ4LDcgQEAgcHVibGljOgogICAgIHZv
aWQgZGVsZXRlVGV4dHVyZUFmdGVyQ29tbWl0KFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsK
IAogcHJvdGVjdGVkOgotICAgIENDTGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3RDbGllbnQq
LCBjb25zdCBDQ1NldHRpbmdzJik7CisgICAgQ0NMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9z
dENsaWVudCosIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmKTsKICAgICBib29sIGluaXRpYWxp
emUoKTsKIAogcHJpdmF0ZToKQEAgLTI5NSw3ICsyODksNyBAQCBwcml2YXRlOgogICAgIFJlZlB0
cjxMYXllckNocm9taXVtPiBtX3Jvb3RMYXllcjsKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+
IG1fY29udGVudHNUZXh0dXJlTWFuYWdlcjsKIAotICAgIENDU2V0dGluZ3MgbV9zZXR0aW5nczsK
KyAgICBDQ0xheWVyVHJlZVNldHRpbmdzIG1fc2V0dGluZ3M7CiAKICAgICBJbnRTaXplIG1fdmll
d3BvcnRTaXplOwogICAgIEludFNpemUgbV9kZXZpY2VWaWV3cG9ydFNpemU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IDY1Zjg1ZmZmYWY0MmQ0NDM0N2E3NGNl
MzY3ZTQzZTFiYWUyYjAzZWIuLmE5ODVjM2Y2MmEyMWU3MDE3YmE4YjBhMjViYWQwODVkNmQ1MTIz
YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC00Miw2ICs0
Miw3IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmgiCiAjaW5jbHVkZSAi
Y2MvQ0NNYXRoVXRpbC5oIgogI2luY2x1ZGUgImNjL0NDUGFnZVNjYWxlQW5pbWF0aW9uLmgiCisj
aW5jbHVkZSAiY2MvQ0NTZXR0aW5ncy5oIgogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJv
eHkuaCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZFRhc2suaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVu
dFRpbWUuaD4KQEAgLTEwNSwxMiArMTA2LDEyIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPENDRGVs
YXlCYXNlZFRpbWVTb3VyY2U+IG1fdGltZVNvdXJjZTsKIH07CiAKLVBhc3NPd25QdHI8Q0NMYXll
clRyZWVIb3N0SW1wbD4gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKGNvbnN0IENDU2V0dGlu
Z3MmIHNldHRpbmdzLCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KiBjbGllbnQpCitQYXNzT3du
UHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShjb25z
dCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncywgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVu
dCogY2xpZW50KQogewogICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NMYXllclRyZWVIb3N0SW1w
bChzZXR0aW5ncywgY2xpZW50KSk7CiB9CiAKLUNDTGF5ZXJUcmVlSG9zdEltcGw6OkNDTGF5ZXJU
cmVlSG9zdEltcGwoY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MsIENDTGF5ZXJUcmVlSG9zdElt
cGxDbGllbnQqIGNsaWVudCkKK0NDTGF5ZXJUcmVlSG9zdEltcGw6OkNDTGF5ZXJUcmVlSG9zdElt
cGwoY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MsIENDTGF5ZXJUcmVlSG9zdElt
cGxDbGllbnQqIGNsaWVudCkKICAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fc291cmNl
RnJhbWVOdW1iZXIoLTEpCiAgICAgLCBtX2ZyYW1lTnVtYmVyKDApCkBAIC0yNTcsNyArMjU4LDcg
QEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0KENDTGF5ZXJMaXN0JiByZW5kZXJTdXIKIAogICAgICAgICBpZiAoIWxheWVyUmVuZGVyZXJD
YXBhYmlsaXRpZXMoKS51c2luZ1BhcnRpYWxTd2FwKQogICAgICAgICAgICAgbV9yb290U2Npc3Nv
clJlY3QgPSBGbG9hdFJlY3QoRmxvYXRQb2ludCgwLCAwKSwgZGV2aWNlVmlld3BvcnRTaXplKCkp
OwotICAgIAorCiAgICAgICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlVmlzaWJs
ZUFuZFNjaXNzb3JSZWN0cyhyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBtX3Jvb3RTY2lzc29yUmVj
dCk7CiAgICAgfQogfQpAQCAtODU4LDcgKzg1OSw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1w
bDo6YW5pbWF0ZVBhZ2VTY2FsZShkb3VibGUgbW9ub3RvbmljVGltZSkKIAogdm9pZCBDQ0xheWVy
VHJlZUhvc3RJbXBsOjphbmltYXRlTGF5ZXJzKGRvdWJsZSBtb25vdG9uaWNUaW1lLCBkb3VibGUg
d2FsbENsb2NrVGltZSkKIHsKLSAgICBpZiAoIW1fc2V0dGluZ3MudGhyZWFkZWRBbmltYXRpb25F
bmFibGVkIHx8ICFtX25lZWRzQW5pbWF0ZUxheWVycyB8fCAhbV9yb290TGF5ZXJJbXBsKQorICAg
IGlmICghQ0NTZXR0aW5nczo6YWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkKCkgfHwgIW1fbmVl
ZHNBbmltYXRlTGF5ZXJzIHx8ICFtX3Jvb3RMYXllckltcGwpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRlTGF5ZXJzIiwgdGhp
cywgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggOTE5NDJiZmVi
ZmYxNjc1YjQyOTRlMjE2NzkyM2EzYWRmZDZmNzI0Ni4uNGRiOTAxZjczNzEyOTE0MDQxYTgyMjgx
NmMwZGQyZGJlYTkxMzBjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApA
QCAtNjgsNyArNjgsNyBAQCBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsIDogcHVibGljIENDSW5w
dXRIYW5kbGVyQ2xpZW50LCBDQ1JlbmRlcmVyQ2xpZW50IHsKICAgICB0eXBlZGVmIFZlY3RvcjxD
Q0xheWVySW1wbCo+IENDTGF5ZXJMaXN0OwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25Q
dHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gY3JlYXRlKGNvbnN0IENDU2V0dGluZ3MmLCBDQ0xheWVy
VHJlZUhvc3RJbXBsQ2xpZW50Kik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NMYXllclRyZWVI
b3N0SW1wbD4gY3JlYXRlKGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmLCBDQ0xheWVyVHJlZUhv
c3RJbXBsQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+Q0NMYXllclRyZWVIb3N0SW1wbCgpOwogCiAg
ICAgLy8gQ0NJbnB1dEhhbmRsZXJDbGllbnQgaW1wbGVtZW50YXRpb24KQEAgLTEwNiw3ICsxMDYs
NyBAQCBwdWJsaWM6CiAKICAgICAvLyBDQ1JlbmRlcmVyQ2xpZW50IGltcGxlbWVudGF0aW9uCiAg
ICAgdmlydHVhbCBjb25zdCBJbnRTaXplJiBkZXZpY2VWaWV3cG9ydFNpemUoKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiBtX2RldmljZVZpZXdwb3J0U2l6ZTsgfQotICAgIHZpcnR1YWwgY29uc3Qg
Q0NTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3NldHRpbmdz
OyB9CisgICAgdmlydHVhbCBjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncygpIGNv
bnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fc2V0dGluZ3M7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlk
TG9zZUNvbnRleHQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgb25Td2FwQnVmZmVyc0Nv
bXBsZXRlKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldEZ1bGxSb290TGF5ZXJEYW1h
Z2UoKSBPVkVSUklERTsKQEAgLTE3Miw3ICsxNzIsNyBAQCBwdWJsaWM6CiAgICAgQ0NEZWJ1Z1Jl
Y3RIaXN0b3J5KiBkZWJ1Z1JlY3RIaXN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z1JlY3RI
aXN0b3J5LmdldCgpOyB9CiAKIHByb3RlY3RlZDoKLSAgICBDQ0xheWVyVHJlZUhvc3RJbXBsKGNv
bnN0IENDU2V0dGluZ3MmLCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50Kik7CisgICAgQ0NMYXll
clRyZWVIb3N0SW1wbChjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiwgQ0NMYXllclRyZWVIb3N0
SW1wbENsaWVudCopOwogCiAgICAgdm9pZCBhbmltYXRlUGFnZVNjYWxlKGRvdWJsZSBtb25vdG9u
aWNUaW1lKTsKICAgICB2b2lkIGFuaW1hdGVHZXN0dXJlcyhkb3VibGUgbW9ub3RvbmljVGltZSk7
CkBAIC0yMTcsNyArMjE3LDcgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8Q0NSZW5kZXJlcj4gbV9s
YXllclJlbmRlcmVyOwogICAgIE93blB0cjxDQ0xheWVySW1wbD4gbV9yb290TGF5ZXJJbXBsOwog
ICAgIENDTGF5ZXJJbXBsKiBtX3Njcm9sbExheWVySW1wbDsKLSAgICBDQ1NldHRpbmdzIG1fc2V0
dGluZ3M7CisgICAgQ0NMYXllclRyZWVTZXR0aW5ncyBtX3NldHRpbmdzOwogICAgIEludFNpemUg
bV92aWV3cG9ydFNpemU7CiAgICAgSW50U2l6ZSBtX2RldmljZVZpZXdwb3J0U2l6ZTsKICAgICBi
b29sIG1fdmlzaWJsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyZXIuaAppbmRleCA5YzkzOGE5OTBhYmM0ZDliNTU1
NDY4ZTcwODZkN2I1MzYxYjYwNTE5Li4zMmY4MzU4Yzc0NGRjMGU4YzE4ZTk0YjA2NGE5MWQ1MDQ4
MDVlZmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1JlbmRlcmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIFRleHR1
cmVVcGxvYWRlcjsKIGNsYXNzIENDUmVuZGVyZXJDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1
YWwgY29uc3QgSW50U2l6ZSYgZGV2aWNlVmlld3BvcnRTaXplKCkgY29uc3QgPSAwOwotICAgIHZp
cnR1YWwgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkTG9zZUNvbnRleHQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9uU3dh
cEJ1ZmZlcnNDb21wbGV0ZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RnVsbFJvb3RMYXll
ckRhbWFnZSgpID0gMDsKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBj
b25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdCA9IDA7
CiAKLSAgICBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fY2xp
ZW50LT5zZXR0aW5ncygpOyB9CisgICAgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGlu
Z3MoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudC0+c2V0dGluZ3MoKTsgfQogCiAgICAgY29uc3Qg
SW50U2l6ZSYgdmlld3BvcnRTaXplKCkgeyByZXR1cm4gbV9jbGllbnQtPmRldmljZVZpZXdwb3J0
U2l6ZSgpOyB9CiAgICAgaW50IHZpZXdwb3J0V2lkdGgoKSB7IHJldHVybiB2aWV3cG9ydFNpemUo
KS53aWR0aCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2V0dGluZ3MuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2ZWY1NTE3YTkz
ZWM4ZjFmYTM1OTkwMWY1MGRkOGFiMjQ4ZDMwMDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NldHRpbmdzLmNwcApAQCAt
MCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNs
dWRlICJjYy9DQ1NldHRpbmdzLmgiCisKK25hbWVzcGFjZSB7CitzdGF0aWMgYm9vbCBzX3BlclRp
bGVQYWludGluZ0VuYWJsZWQgPSBmYWxzZTsKK3N0YXRpYyBib29sIHNfcGFydGlhbFN3YXBFbmFi
bGVkID0gZmFsc2U7CitzdGF0aWMgYm9vbCBzX2FjY2VsZXJhdGVkQW5pbWF0aW9uRW5hYmxlZCA9
IGZhbHNlOworfSAvLyBuYW1lc3BhY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIEND
U2V0dGluZ3M6OnBlclRpbGVQYWludGluZ0VuYWJsZWQoKSB7IHJldHVybiBzX3BlclRpbGVQYWlu
dGluZ0VuYWJsZWQ7IH0KK3ZvaWQgQ0NTZXR0aW5nczo6c2V0UGVyVGlsZVBhaW50aW5nRW5hYmxl
ZChib29sIGVuYWJsZWQpIHsgc19wZXJUaWxlUGFpbnRpbmdFbmFibGVkID0gZW5hYmxlZDsgfQor
Citib29sIENDU2V0dGluZ3M6OnBhcnRpYWxTd2FwRW5hYmxlZCgpIHsgcmV0dXJuIHNfcGFydGlh
bFN3YXBFbmFibGVkOyB9Cit2b2lkIENDU2V0dGluZ3M6OnNldFBhcnRpYWxTd2FwRW5hYmxlZChi
b29sIGVuYWJsZWQpIHsgc19wYXJ0aWFsU3dhcEVuYWJsZWQgPSBlbmFibGVkOyB9CisKK2Jvb2wg
Q0NTZXR0aW5nczo6YWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkKCkgeyByZXR1cm4gc19hY2Nl
bGVyYXRlZEFuaW1hdGlvbkVuYWJsZWQ7IH0KK3ZvaWQgQ0NTZXR0aW5nczo6c2V0QWNjZWxlcmF0
ZWRBbmltYXRpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBzX2FjY2VsZXJhdGVkQW5pbWF0aW9u
RW5hYmxlZCA9IGVuYWJsZWQ7IH0KKwordm9pZCBDQ1NldHRpbmdzOjpyZXNldCgpCit7CisgICAg
c19wZXJUaWxlUGFpbnRpbmdFbmFibGVkID0gZmFsc2U7CisgICAgc19wYXJ0aWFsU3dhcEVuYWJs
ZWQgPSBmYWxzZTsKKyAgICBzX2FjY2VsZXJhdGVkQW5pbWF0aW9uRW5hYmxlZCA9IGZhbHNlOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NldHRpbmdzLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ODhmOGMyZmZkMzUyZTVkYTk2NGM2ZGJlOThkZWIwMGFjZDBhOTllMQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2V0dGlu
Z3MuaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENDU2V0dGluZ3Nf
aAorI2RlZmluZSBDQ1NldHRpbmdzX2gKKworI2luY2x1ZGUgIkludFNpemUuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBDQ1NldHRpbmdzIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
Ym9vbCBwZXJUaWxlUGFpbnRpbmdFbmFibGVkKCk7CisgICAgc3RhdGljIGJvb2wgcGFydGlhbFN3
YXBFbmFibGVkKCk7CisgICAgc3RhdGljIGJvb2wgYWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVk
KCk7CisKKyAgICAvLyBUaGVzZSBzZXR0ZXJzIHNob3VsZCBvbmx5IGJlIHVzZWQgb24gdGhlIG1h
aW4gdGhyZWFkIGJlZm9yZSB0aGUgbGF5ZXIKKyAgICAvLyByZW5kZXJlciBpcyBpbml0aWFsaXpl
ZC4KKyAgICBzdGF0aWMgdm9pZCBzZXRQZXJUaWxlUGFpbnRpbmdFbmFibGVkKGJvb2wpOworICAg
IHN0YXRpYyB2b2lkIHNldFBhcnRpYWxTd2FwRW5hYmxlZChib29sKTsKKyAgICBzdGF0aWMgdm9p
ZCBzZXRBY2NlbGVyYXRlZEFuaW1hdGlvbkVuYWJsZWQoYm9vbCk7CisKKyAgICAvLyBUaGVzZSBz
ZXR0aW5ncyBhcmUgbWVhbnQgdG8gYmUgc2V0IG9ubHkgb25jZSwgYW5kIG9ubHkgcmVhZCB0aGVy
ZWFmdGVyLgorICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgb25seSBmb3IgcmVzZXR0aW5nIHNldHRp
bmdzIGluIHRlc3RzLgorICAgIHN0YXRpYyB2b2lkIHJlc2V0KCk7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBDQ1NldHRpbmdzX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCmluZGV4IGVhYmViZTA5NWY5Y2Y3N2VjZjNlZjky
NTMxNmU4MWVhMzdjMTQ2NjIuLmUxZDljZGI4ZDdkYTcxNWM3MDVjYzBkZDZkYWIyZTliNjhiMWEw
ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcApAQCAt
MjM0LDEyICsyMzQsNiBAQCB2b2lkIEludGVybmFsU2V0dGluZ3M6OnNldFBhZ2VTY2FsZUZhY3Rv
cihmbG9hdCBzY2FsZUZhY3RvciwgaW50IHgsIGludCB5LCBFeGNlcAogICAgIHBhZ2UoKS0+c2V0
UGFnZVNjYWxlRmFjdG9yKHNjYWxlRmFjdG9yLCBJbnRQb2ludCh4LCB5KSk7CiB9CiAKLXZvaWQg
SW50ZXJuYWxTZXR0aW5nczo6c2V0UGVyVGlsZURyYXdpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCwg
RXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgSW50ZXJuYWxTZXR0aW5nc0d1YXJkRm9yU2V0dGlu
Z3MoKTsKLSAgICBzZXR0aW5ncygpLT5zZXRQZXJUaWxlRHJhd2luZ0VuYWJsZWQoZW5hYmxlZCk7
Ci19Ci0KIHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0U2hhZG93RE9NRW5hYmxlZChib29sIGVu
YWJsZWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogI2lmIEVOQUJMRShTSEFET1dfRE9NKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaAppbmRleCA0ZmU4MjI2MzViNzVi
ZDMyNzM0YjYyZTUwMDY0NjZkNWQ3OGYwZjkwLi5jZDI4YjYzNjVkYmZjNzQzYTUyODA4ZDVkM2Y4
MjI1ZThmYjg1NjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
U2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3Mu
aApAQCAtNjEsNyArNjEsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRVbmlmaWVkVGV4dENoZWNr
aW5nRW5hYmxlZChib29sLCBFeGNlcHRpb25Db2RlJik7CiAgICAgYm9vbCB1bmlmaWVkVGV4dENo
ZWNraW5nRW5hYmxlZChFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXRQYWdlU2NhbGVGYWN0
b3IoZmxvYXQgc2NhbGVGYWN0b3IsIGludCB4LCBpbnQgeSwgRXhjZXB0aW9uQ29kZSYpOwotICAg
IHZvaWQgc2V0UGVyVGlsZURyYXdpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29k
ZSYpOwogICAgIHZvaWQgc2V0VG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQoYm9vbCBlbmFibGVk
LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXREZXZpY2VTdXBwb3J0c1RvdWNoKGJvb2wg
ZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0RGV2aWNlU3VwcG9ydHNNb3Vz
ZShib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5n
eXBpCmluZGV4IGY4YTRiYzY1ZGQ5YzQwNzFkOGRjZWU2YmM2NWJlYTFkYjcyZmEyNjYuLjlmZGE4
ZGM4Zjc4NTVlZmRjNDljNzM0Yzc2ZWE0NGU4YjRkN2VhZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9X
ZWJLaXQuZ3lwaQpAQCAtODgsNiArODgsNyBAQAogICAgICAgICAgICAgJ3Rlc3RzL0NDU2NoZWR1
bGVyVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0NDU2luZ2xlVGhyZWFkUHJveHlUZXN0
LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVzdC5jcHAn
LAorICAgICAgICAgICAgJ3Rlc3RzL0NDVGVzdENvbW1vbi5oJywKICAgICAgICAgICAgICd0ZXN0
cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0NDVGlsZWRM
YXllclRlc3RDb21tb24uaCcsCiAgICAgICAgICAgICAndGVzdHMvQ0NUaWxlZExheWVyVGVzdENv
bW1vbi5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
Q29tcG9zaXRvci5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRv
ci5oCmluZGV4IDNlYWRlZjMyYzM3YjMxMzQ5Yjk5Mzc3YTJlMTlmOGMwNmE4ZjhkNDguLjZlMGRh
MmIyMjcwYWIxMTdhZjExNmNhMmRkMjQ4NTI4YmE0ZGE0OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yLmgKQEAgLTI2LDYgKzI2LDggQEAKICNpZm5k
ZWYgV2ViQ29tcG9zaXRvcl9oCiAjZGVmaW5lIFdlYkNvbXBvc2l0b3JfaAogCisjZGVmaW5lIFdF
QkNPTVBPU0lUT1JfT1dOU19TRVRUSU5HUyAxCisKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21t
b24uaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00OSw2ICs1MSwxMSBAQCBwdWJsaWM6CiAg
ICAgLy8gYWZ0ZXIgc2h1dGRvd24uCiAgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBzaHV0
ZG93bigpOwogCisgICAgLy8gVGhlc2UgbWF5IG9ubHkgYmUgY2FsbGVkIGJlZm9yZSBpbml0aWFs
aXplLgorICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIHZvaWQgc2V0UGVyVGlsZVBhaW50aW5nRW5h
YmxlZChib29sKTsKKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyB2b2lkIHNldFBhcnRpYWxTd2Fw
RW5hYmxlZChib29sKTsKKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyB2b2lkIHNldEFjY2VsZXJh
dGVkQW5pbWF0aW9uRW5hYmxlZChib29sKTsKKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfldl
YkNvbXBvc2l0b3IoKSB7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJTZXR0aW5ncy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
U2V0dGluZ3MuaAppbmRleCA4OGQ5YTAxMzhkMjE0MWExMTRiOTBiZTk1Y2QwZDM2MzJjNjA2M2Y2
Li4wNTI4ZDhlZjRlYWJjNmZmOGQ3ZTI3MDgxNDIwYWZhMDZkYzkyMDVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKQEAgLTE0Nyw5ICsxNDcsNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJs
ZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaXN1YWxXb3JkTW92ZW1lbnRFbmFi
bGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRQYWludGluZ0Vu
YWJsZWQoYm9vbCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRQZXJUaWxlUGFpbnRpbmdFbmFi
bGVkKGJvb2wpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UGFydGlhbFN3YXBFbmFibGVkKGJv
b2wpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGhyZWFkZWRBbmltYXRpb25FbmFibGVkKGJv
b2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Vmlld3BvcnRFbmFibGVkKGJvb2wpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0TWVkaWFQbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUoYm9v
bCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCB2aWV3cG9ydEVuYWJsZWQoKSBjb25zdCA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW1wbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW1wbC5jcHAKaW5k
ZXggOTFkOGIxYmU2NjA0NWEzOThkMjc4ODhlY2NlMGY3ZmI2ZjIzMjkxMS4uZjRlOTZlMGJlMTkx
MDZiMzlhMGJmZDI4MmNiNDljMDJkMWNkMGExNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbXBsLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1
ZGUgIldlYklucHV0RXZlbnQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKICNp
bmNsdWRlICJjYy9DQ1Byb3h5LmgiCisjaW5jbHVkZSAiY2MvQ0NTZXR0aW5ncy5oIgogI2luY2x1
ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwpAQCAtNTEsNiArNTIsMjUgQEAgdm9pZCBXZWJDb21wb3NpdG9yOjppbml0aWFsaXplKFdlYlRo
cmVhZCogaW1wbFRocmVhZCkKIHZvaWQgV2ViQ29tcG9zaXRvcjo6c2h1dGRvd24oKQogewogICAg
IFdlYkNvbXBvc2l0b3JJbXBsOjpzaHV0ZG93bigpOworICAgIENDU2V0dGluZ3M6OnJlc2V0KCk7
Cit9CisKK3ZvaWQgV2ViQ29tcG9zaXRvcjo6c2V0UGVyVGlsZVBhaW50aW5nRW5hYmxlZChib29s
IGVuYWJsZWQpCit7CisgICAgQVNTRVJUKCFXZWJDb21wb3NpdG9ySW1wbDo6aW5pdGlhbGl6ZWQo
KSk7CisgICAgQ0NTZXR0aW5nczo6c2V0UGVyVGlsZVBhaW50aW5nRW5hYmxlZChlbmFibGVkKTsK
K30KKwordm9pZCBXZWJDb21wb3NpdG9yOjpzZXRQYXJ0aWFsU3dhcEVuYWJsZWQoYm9vbCBlbmFi
bGVkKQoreworICAgIEFTU0VSVCghV2ViQ29tcG9zaXRvckltcGw6OmluaXRpYWxpemVkKCkpOwor
ICAgIENDU2V0dGluZ3M6OnNldFBhcnRpYWxTd2FwRW5hYmxlZChlbmFibGVkKTsKK30KKwordm9p
ZCBXZWJDb21wb3NpdG9yOjpzZXRBY2NlbGVyYXRlZEFuaW1hdGlvbkVuYWJsZWQoYm9vbCBlbmFi
bGVkKQoreworICAgIEFTU0VSVCghV2ViQ29tcG9zaXRvckltcGw6OmluaXRpYWxpemVkKCkpOwor
ICAgIENDU2V0dGluZ3M6OnNldEFjY2VsZXJhdGVkQW5pbWF0aW9uRW5hYmxlZChlbmFibGVkKTsK
IH0KIAogdm9pZCBXZWJDb21wb3NpdG9ySW1wbDo6aW5pdGlhbGl6ZShXZWJUaHJlYWQqIGltcGxU
aHJlYWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRy
ZWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcu
Y3BwCmluZGV4IGZlZDNkYjk3NTk4NWM3OGMzNjI5MTI4Nzg4YWM2NDFhZjAxMzdmODAuLmUwNDJm
MjUxNzMwZmFjOTdlYThmNjE4NDYwNGI5ODJmZmI1MDA5M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCkBAIC0zNywxOCArMzcsMTUgQEAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLVdlYkxheWVy
VHJlZVZpZXc6OlNldHRpbmdzOjpvcGVyYXRvciBDQ1NldHRpbmdzKCkgY29uc3QKKworV2ViTGF5
ZXJUcmVlVmlldzo6U2V0dGluZ3M6Om9wZXJhdG9yIENDTGF5ZXJUcmVlU2V0dGluZ3MoKSBjb25z
dAogewotICAgIENDU2V0dGluZ3Mgc2V0dGluZ3M7Ci0gICAgc2V0dGluZ3MuYWNjZWxlcmF0ZVBh
aW50aW5nID0gYWNjZWxlcmF0ZVBhaW50aW5nOworICAgIENDTGF5ZXJUcmVlU2V0dGluZ3Mgc2V0
dGluZ3M7CiAgICAgc2V0dGluZ3MuZm9yY2VTb2Z0d2FyZUNvbXBvc2l0aW5nID0gZm9yY2VTb2Z0
d2FyZUNvbXBvc2l0aW5nOwogICAgIHNldHRpbmdzLnNob3dGUFNDb3VudGVyID0gc2hvd0ZQU0Nv
dW50ZXI7CiAgICAgc2V0dGluZ3Muc2hvd1BsYXRmb3JtTGF5ZXJUcmVlID0gc2hvd1BsYXRmb3Jt
TGF5ZXJUcmVlOwogICAgIHNldHRpbmdzLnNob3dQYWludFJlY3RzID0gc2hvd1BhaW50UmVjdHM7
CiAgICAgc2V0dGluZ3MucmVmcmVzaFJhdGUgPSByZWZyZXNoUmF0ZTsKLSAgICBzZXR0aW5ncy5w
ZXJUaWxlUGFpbnRpbmcgPSBwZXJUaWxlUGFpbnRpbmc7Ci0gICAgc2V0dGluZ3MucGFydGlhbFN3
YXBFbmFibGVkID0gcGFydGlhbFN3YXBFbmFibGVkOwotICAgIHNldHRpbmdzLnRocmVhZGVkQW5p
bWF0aW9uRW5hYmxlZCA9IHRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZDsKICAgICBzZXR0aW5ncy5k
ZWZhdWx0VGlsZVNpemUgPSBkZWZhdWx0VGlsZVNpemU7CiAgICAgc2V0dGluZ3MubWF4VW50aWxl
ZExheWVyU2l6ZSA9IG1heFVudGlsZWRMYXllclNpemU7CiAgICAgc2V0dGluZ3MuZGV2aWNlU2Nh
bGVGYWN0b3IgPSBkZXZpY2VTY2FsZUZhY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCmluZGV4IDk0MjM2ODk2ODc2NmU3NmJhODQyNzYyMDcz
YTUzMzI5YmEwNmY3NzcuLjVmODc3NmI1OGEzNTg4NWE5YWE1MjJlNTY5NTNjNGIwZGRiYmExNmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcApA
QCAtNTkyLDIxICs1OTIsNiBAQCB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0QWNjZWxlcmF0ZWRQ
YWludGluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIG1fc2V0dGluZ3MtPnNldEFjY2VsZXJh
dGVkRHJhd2luZ0VuYWJsZWQoZW5hYmxlZCk7CiB9CiAKLXZvaWQgV2ViU2V0dGluZ3NJbXBsOjpz
ZXRQZXJUaWxlUGFpbnRpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKLXsKLSAgICBtX3NldHRpbmdz
LT5zZXRQZXJUaWxlRHJhd2luZ0VuYWJsZWQoZW5hYmxlZCk7Ci19Ci0KLXZvaWQgV2ViU2V0dGlu
Z3NJbXBsOjpzZXRQYXJ0aWFsU3dhcEVuYWJsZWQoYm9vbCBlbmFibGVkKQotewotICAgIG1fc2V0
dGluZ3MtPnNldFBhcnRpYWxTd2FwRW5hYmxlZChlbmFibGVkKTsKLX0KLQotdm9pZCBXZWJTZXR0
aW5nc0ltcGw6OnNldFRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZChib29sIGVuYWJsZWQpCi17Ci0g
ICAgbV9zZXR0aW5ncy0+c2V0VGhyZWFkZWRBbmltYXRpb25FbmFibGVkKGVuYWJsZWQpOwotfQot
CiB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0TWVkaWFQbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1
cmUoYm9vbCByZXF1aXJlZCkKIHsKICAgICBtX3NldHRpbmdzLT5zZXRNZWRpYVBsYXliYWNrUmVx
dWlyZXNVc2VyR2VzdHVyZShyZXF1aXJlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlNldHRpbmdzSW1wbC5oCmluZGV4IGVhN2NmM2ZmOTIyM2Q4NGJmNDI0ZmQyN2M1YjkzNDYw
ZTQ1ODdjNTMuLjJiNThjMDQ0M2I5ZjEwNzdjYTI0ODdiNzAyNjdkMDU0MWM1ZGRiODggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCkBAIC0xNDQsOSAr
MTQ0LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGREaXNwbGF5Q2FwdGlv
bnMoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldFNob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRp
b25zKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZFBhaW50aW5nRW5hYmxl
ZChib29sKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UGVyVGlsZVBhaW50aW5nRW5hYmxlZChib29s
KTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UGFydGlhbFN3YXBFbmFibGVkKGJvb2wpOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRUaHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQoYm9vbCk7CiAgICAgdmlydHVh
bCB2b2lkIHNldEZpeGVkUG9zaXRpb25DcmVhdGVzU3RhY2tpbmdDb250ZXh0KGJvb2wpOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRWaWV3cG9ydEVuYWJsZWQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lk
IHNldE1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlKGJvb2wpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IGFiNjc3NTFlNzM0YTU0YTVhOTQ3
ZGMzMTU5OWZhOTZmM2NkYjdlYTUuLmZmYTgxYjRiYzM2N2RkZjMxNmQ3MzlkOWMwNmY4OTU2ZGNh
NmNkMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAg
LTE0Nyw2ICsxNDcsNyBAQAogI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKICNpbmNsdWRlICJX
aGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgorI2luY2x1ZGUgImNjL0NDU2V0
dGluZ3MuaCIKICNpbmNsdWRlICJwYWludGluZy9HcmFwaGljc0NvbnRleHRCdWlsZGVyLmgiCiAj
aW5jbHVkZSAicGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgiCiAjaW5jbHVkZSAicGxh
dGZvcm0vV2ViU3RyaW5nLmgiCkBAIC00NjIsNyArNDYzLDcgQEAgV2ViVmlld0ltcGw6OldlYlZp
ZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCkKICNpZiBFTkFCTEUoQkFUVEVSWV9TVEFUVVMp
CiAgICAgcHJvdmlkZUJhdHRlcnlUbyhtX3BhZ2UuZ2V0KCksIG1fYmF0dGVyeUNsaWVudC5nZXQo
KSk7CiAjZW5kaWYKLSAgICAKKwogICAgIG1fcGFnZS0+c2V0R3JvdXBOYW1lKHBhZ2VHcm91cE5h
bWUpOwogCiAjaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCkBAIC0zNDc2LDEwICszNDc3
LDYgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZl
KGJvb2wgYWN0aXZlKQogICAgICAgICBsYXllclRyZWVWaWV3U2V0dGluZ3Muc2hvd1BhaW50UmVj
dHMgPSBzZXR0aW5nc0ltcGwoKS0+c2hvd1BhaW50UmVjdHMoKTsKICAgICAgICAgbGF5ZXJUcmVl
Vmlld1NldHRpbmdzLmZvcmNlU29mdHdhcmVDb21wb3NpdGluZyA9IHNldHRpbmdzKCktPmZvcmNl
U29mdHdhcmVDb21wb3NpdGluZygpOwogCi0gICAgICAgIGxheWVyVHJlZVZpZXdTZXR0aW5ncy5w
ZXJUaWxlUGFpbnRpbmcgPSBwYWdlKCktPnNldHRpbmdzKCktPnBlclRpbGVEcmF3aW5nRW5hYmxl
ZCgpOwotICAgICAgICBsYXllclRyZWVWaWV3U2V0dGluZ3MucGFydGlhbFN3YXBFbmFibGVkID0g
cGFnZSgpLT5zZXR0aW5ncygpLT5wYXJ0aWFsU3dhcEVuYWJsZWQoKTsKLSAgICAgICAgbGF5ZXJU
cmVlVmlld1NldHRpbmdzLnRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZCA9IHBhZ2UoKS0+c2V0dGlu
Z3MoKS0+dGhyZWFkZWRBbmltYXRpb25FbmFibGVkKCk7Ci0KICAgICAgICAgbGF5ZXJUcmVlVmll
d1NldHRpbmdzLmRlZmF1bHRUaWxlU2l6ZSA9IHNldHRpbmdzSW1wbCgpLT5kZWZhdWx0VGlsZVNp
emUoKTsKICAgICAgICAgbGF5ZXJUcmVlVmlld1NldHRpbmdzLm1heFVudGlsZWRMYXllclNpemUg
PSBzZXR0aW5nc0ltcGwoKS0+bWF4VW50aWxlZExheWVyU2l6ZSgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3Bw
CmluZGV4IGE2MWRkODEyZDM4NzZmNDc3MzVkNjk1ZDNmY2UwN2ZlZjQ5YmI0NDUuLjdkNmRjZjc5
ZWU0ZmMwMWU0Y2E3ZjBlZDBiZjI5YTllY2E4ZjUzZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJDQ0FuaW1hdGlvblRlc3RDb21tb24uaCIKICNpbmNs
dWRlICJDQ0xheWVyVGVzdENvbW1vbi5oIgorI2luY2x1ZGUgIkNDVGVzdENvbW1vbi5oIgogI2lu
Y2x1ZGUgIkZha2VXZWJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgpAQCAt
MzYsNiArMzcsNyBAQAogI2luY2x1ZGUgImNjL0NDTGF5ZXJUaWxpbmdEYXRhLmgiCiAjaW5jbHVk
ZSAiY2MvQ0NRdWFkQ3VsbGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NTY3JvbGxiYXJMYXllckltcGwu
aCIKKyNpbmNsdWRlICJjYy9DQ1NldHRpbmdzLmgiCiAjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5oIgogI2luY2x1ZGUgImNjL0NDU29saWRDb2xvckRyYXdRdWFkLmgiCiAjaW5jbHVk
ZSAiY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmgiCkBAIC02Niw3ICs2OCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgOiBtX2RpZFJlcXVlc3RDb21taXQoZmFsc2UpCiAgICAgICAgICwgbV9kaWRSZXF1ZXN0
UmVkcmF3KGZhbHNlKQogICAgIHsKLSAgICAgICAgQ0NTZXR0aW5ncyBzZXR0aW5nczsKKyAgICAg
ICAgQ0NMYXllclRyZWVTZXR0aW5ncyBzZXR0aW5nczsKICAgICAgICAgbV9ob3N0SW1wbCA9IEND
TGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShzZXR0aW5ncywgdGhpcyk7CiAgICAgICAgIG1faG9z
dEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSwgVW50aHJvdHRs
ZWRVcGxvYWRlcik7CiAgICAgICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXpl
KDEwLCAxMCkpOwpAQCAtODEsMTAgKzgzLDkgQEAgcHVibGljOgogCiAgICAgUGFzc093blB0cjxD
Q0xheWVyVHJlZUhvc3RJbXBsPiBjcmVhdGVMYXllclRyZWVIb3N0KGJvb2wgcGFydGlhbFN3YXAs
IFBhc3NSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGdyYXBoaWNzQ29udGV4dCwgUGFzc093blB0
cjxDQ0xheWVySW1wbD4gcm9vdFB0cikKICAgICB7Ci0gICAgICAgIENDU2V0dGluZ3Mgc2V0dGlu
Z3M7Ci0KLSAgICAgICAgc2V0dGluZ3MucGFydGlhbFN3YXBFbmFibGVkID0gcGFydGlhbFN3YXA7
CisgICAgICAgIENDU2V0dGluZ3M6OnNldFBhcnRpYWxTd2FwRW5hYmxlZChwYXJ0aWFsU3dhcCk7
CiAKKyAgICAgICAgQ0NMYXllclRyZWVTZXR0aW5ncyBzZXR0aW5nczsKICAgICAgICAgT3duUHRy
PENDTGF5ZXJUcmVlSG9zdEltcGw+IG15SG9zdEltcGwgPSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpj
cmVhdGUoc2V0dGluZ3MsIHRoaXMpOwogCiAgICAgICAgIG15SG9zdEltcGwtPmluaXRpYWxpemVM
YXllclJlbmRlcmVyKGdyYXBoaWNzQ29udGV4dCwgVW50aHJvdHRsZWRVcGxvYWRlcik7CkBAIC0x
NTAsNiArMTUxLDcgQEAgcHJvdGVjdGVkOgogICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBs
PiBtX2hvc3RJbXBsOwogICAgIGJvb2wgbV9kaWRSZXF1ZXN0Q29tbWl0OwogICAgIGJvb2wgbV9k
aWRSZXF1ZXN0UmVkcmF3OworICAgIENDU2NvcGVkU2V0dGluZ3MgbV9zY29wZWRTZXR0aW5nczsK
IH07CiAKIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc2Nyb2xsRGVsdGFOb0xheWVy
cykKQEAgLTExMTUsOCArMTExNyw4IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwg
cGFydGlhbFN3YXBSZWNlaXZlc0RhbWFnZVJlY3QpCiAKICAgICAvLyBUaGlzIHRlc3QgY3JlYXRl
cyBpdHMgb3duIENDTGF5ZXJUcmVlSG9zdEltcGwsIHNvCiAgICAgLy8gdGhhdCB3ZSBjYW4gZm9y
Y2UgcGFydGlhbCBzd2FwIGVuYWJsZWQuCi0gICAgQ0NTZXR0aW5ncyBzZXR0aW5nczsKLSAgICBz
ZXR0aW5ncy5wYXJ0aWFsU3dhcEVuYWJsZWQgPSB0cnVlOworICAgIENDTGF5ZXJUcmVlU2V0dGlu
Z3Mgc2V0dGluZ3M7CisgICAgQ0NTZXR0aW5nczo6c2V0UGFydGlhbFN3YXBFbmFibGVkKHRydWUp
OwogICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBsYXllclRyZWVIb3N0SW1wbCA9IEND
TGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShzZXR0aW5ncywgdGhpcyk7CiAgICAgbGF5ZXJUcmVl
SG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNjQ29udGV4dCwgVW50aHJvdHRsZWRV
cGxvYWRlcik7CiAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXpl
KDUwMCwgNTAwKSk7CkBAIC0xMzIyLDcgKzEzMjQsNyBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0
SW1wbFRlc3QsIHBhcnRpYWxTd2FwTm9VcGRhdGUpCiAgICAgaGFybmVzcy5tdXN0U2V0U2Npc3Nv
cigwLCAwLCAxMCwgMTApOwogCiAgICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IG15SG9z
dEltcGwgPSBjcmVhdGVMYXllclRyZWVIb3N0KHRydWUsIGNvbnRleHQsIEZha2VMYXllcldpdGhR
dWFkczo6Y3JlYXRlKDEpKTsKLSAgICAKKwogICAgIC8vIERyYXcgb25jZSB0byBtYWtlIHN1cmUg
bGF5ZXIgaXMgbm90IG5ldwogICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFt
ZTsKICAgICBFWFBFQ1RfVFJVRShteUhvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CkBA
IC0xMzQ5LDcgKzEzNTEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gV2ViU3RyaW5n
KCJHTF9DSFJPTUlVTV9wb3N0X3N1Yl9idWZmZXIiKTsKICAgICAgICAgcmV0dXJuIFdlYlN0cmlu
ZygpOwogICAgIH0KLSAgICAKKwogICAgIFdlYlN0cmluZyBnZXRSZXF1ZXN0YWJsZUV4dGVuc2lv
bnNDSFJPTUlVTSgpCiAgICAgewogICAgICAgICByZXR1cm4gV2ViU3RyaW5nKCJHTF9DSFJPTUlV
TV9wb3N0X3N1Yl9idWZmZXIiKTsKQEAgLTEzNTgsMTAgKzEzNjAsMTEgQEAgcHVibGljOgogCiBz
dGF0aWMgUGFzc093blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBzZXR1cExheWVyc0Zvck9wYWNp
dHkoYm9vbCBwYXJ0aWFsU3dhcCwgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCogY2xpZW50KQog
ewotICAgIENDU2V0dGluZ3Mgc2V0dGluZ3M7Ci0gICAgc2V0dGluZ3MucGFydGlhbFN3YXBFbmFi
bGVkID0gcGFydGlhbFN3YXA7CisgICAgQ0NTZXR0aW5nczo6c2V0UGFydGlhbFN3YXBFbmFibGVk
KHBhcnRpYWxTd2FwKTsKIAogICAgIFJlZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY29udGV4dCA9
IENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNy
ZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBQYXJ0aWFsU3dh
cENvbnRleHQoKSksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRv
dykpOworCisgICAgQ0NMYXllclRyZWVTZXR0aW5ncyBzZXR0aW5nczsKICAgICBPd25QdHI8Q0NM
YXllclRyZWVIb3N0SW1wbD4gbXlIb3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0
ZShzZXR0aW5ncywgY2xpZW50KTsKICAgICBteUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5k
ZXJlcihjb250ZXh0LnJlbGVhc2UoKSwgVW50aHJvdHRsZWRVcGxvYWRlcik7CiAgICAgbXlIb3N0
SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMTAwLCAxMDApKTsKQEAgLTE0NjcsOCArMTQ3
MCw4IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgY29udHJpYnV0aW5nTGF5ZXJF
bXB0eVNjaXNzb3JOb1BhcnRpYWxTd2FwKQogCiBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRl
c3QsIGRpZERyYXdOb3RDYWxsZWRPblNjaXNzb3JlZExheWVyKQogewotICAgIENDU2V0dGluZ3Mg
c2V0dGluZ3M7Ci0gICAgc2V0dGluZ3MucGFydGlhbFN3YXBFbmFibGVkID0gdHJ1ZTsKKyAgICBD
Q0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOworICAgIENDU2V0dGluZ3M6OnNldFBhcnRpYWxT
d2FwRW5hYmxlZCh0cnVlKTsKIAogICAgIFJlZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY29udGV4
dCA9IENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6
OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBQYXJ0aWFs
U3dhcENvbnRleHQoKSksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdp
bmRvdykpOwogICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBteUhvc3RJbXBsID0gQ0NM
YXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKHNldHRpbmdzLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IGFh
Y2Q5YTVkNjkwZjMyMTc0YjFlMmU5YTJlMjFiYmM5N2VhNmQwYzYuLjViYzNlNmJiZDM5OTQ3YmJl
NjVlM2I0NjgwMjNkYzExZTUzNWIxYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIkNvbnRlbnRMYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIgorI2luY2x1
ZGUgImNjL0NDU2V0dGluZ3MuaCIKICNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAj
aW5jbHVkZSAiY2MvQ0NUaW1pbmdGdW5jdGlvbi5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlRo
cmVhZC5oIgpAQCAtNTcsNiArNTgsMjUgQEAgbmFtZXNwYWNlIHsKIGNsYXNzIENDTGF5ZXJUcmVl
SG9zdFRlc3QgOiBwdWJsaWMgQ0NUaHJlYWRlZFRlc3QgeyB9OwogY2xhc3MgQ0NMYXllclRyZWVI
b3N0VGVzdFRocmVhZE9ubHkgOiBwdWJsaWMgQ0NUaHJlYWRlZFRlc3RUaHJlYWRPbmx5IHsgfTsK
IAorLy8gU2hvcnRsaXZlZCBsYXllclRyZWVIb3N0cyBzaG91bGRuJ3QgZGllLgorY2xhc3MgQ0NM
YXllclRyZWVIb3N0VGVzdFNob3J0bGl2ZWQxIDogcHVibGljIENDTGF5ZXJUcmVlSG9zdFRlc3Qg
eworcHVibGljOgorICAgIENDTGF5ZXJUcmVlSG9zdFRlc3RTaG9ydGxpdmVkMSgpIHsgfQorCisg
ICAgdmlydHVhbCB2b2lkIGJlZ2luVGVzdCgpCisgICAgeworICAgICAgICAvLyBLaWxsIHRoZSBs
YXllclRyZWVIb3N0IGltbWVkaWF0ZWx5LgorICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFJv
b3RMYXllcigwKTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LmNsZWFyKCk7CisKKyAgICAgICAg
ZW5kVGVzdCgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBhZnRlclRlc3QoKQorICAgIHsK
KyAgICB9Cit9OworCiAvLyBTaG9ydGxpdmVkIGxheWVyVHJlZUhvc3RzIHNob3VsZG4ndCBkaWUg
d2l0aCBhIGNvbW1pdCBpbiBmbGlnaHQuCiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RUZXN0U2hvcnRs
aXZlZDIgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0VGVzdCB7CiBwdWJsaWM6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGVzdENvbW1vbi5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ1Rlc3RDb21tb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OWZjZTk4MTg4
Y2NiZDMxYmU5ODMwYzI1ZjY2MDcxMzIxMzNiN2M3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1Rlc3RDb21tb24uaApAQCAtMCwwICsxLDQyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisg
KiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIENDVGVzdENvbW1vbl9oCisjZGVmaW5lIENDVGVzdENvbW1v
bl9oCisKKyNpbmNsdWRlICJjYy9DQ1NldHRpbmdzLmgiCisKK25hbWVzcGFjZSBXZWJLaXRUZXN0
cyB7CisKKy8vIElmIHlvdSBoYXZlIGEgdGVzdCB0aGF0IG1vZGlmaWVzIG9yIHVzZXMgZ2xvYmFs
IHNldHRpbmdzLCBrZWVwIGFuIGluc3RhbmNlCisvLyBvZiB0aGlzIGNsYXNzIHRvIGVuc3VyZSB0
aGF0IHlvdSBzdGFydCBhbmQgZW5kIHdpdGggYSBjbGVhbiBzbGF0ZS4KK2NsYXNzIENDU2NvcGVk
U2V0dGluZ3MgeworcHVibGljOgorICAgIENDU2NvcGVkU2V0dGluZ3MoKSB7IFdlYkNvcmU6OkND
U2V0dGluZ3M6OnJlc2V0KCk7IH0KKyAgICB+Q0NTY29wZWRTZXR0aW5ncygpIHsgV2ViQ29yZTo6
Q0NTZXR0aW5nczo6cmVzZXQoKTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0VGVzdHMK
KworI2VuZGlmIC8vIENDVGVzdENvbW1vbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDVGhyZWFkZWRUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NUaHJlYWRlZFRlc3QuY3BwCmluZGV4IGM5ZWJiYTEyMmZmYWVjYWI0YzBjMjA5N2Vm
ZjcwMjgwOTRhNTYxMjYuLjdiNDY4YWI3Yzk2MmFmY2ZmMDM4YjIwMzE1OWFlZWRjYmFhMjQyMmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaHJlYWRlZFRlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaHJlYWRlZFRlc3QuY3Bw
CkBAIC0xMTMsNyArMTEzLDcgQEAgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gVGVzdEhv
b2tzOjpjcmVhdGVDb250ZXh0KCkKICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
OjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dCh3ZWJDb250ZXh0LnJlbGVhc2Uo
KSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KTsKIH0KIAot
UGFzc093blB0cjxNb2NrTGF5ZXJUcmVlSG9zdEltcGw+IE1vY2tMYXllclRyZWVIb3N0SW1wbDo6
Y3JlYXRlKFRlc3RIb29rcyogdGVzdEhvb2tzLCBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncywg
Q0NMYXllclRyZWVIb3N0SW1wbENsaWVudCogY2xpZW50KQorUGFzc093blB0cjxNb2NrTGF5ZXJU
cmVlSG9zdEltcGw+IE1vY2tMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKFRlc3RIb29rcyogdGVz
dEhvb2tzLCBjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncywgQ0NMYXllclRyZWVI
b3N0SW1wbENsaWVudCogY2xpZW50KQogewogICAgIHJldHVybiBhZG9wdFB0cihuZXcgTW9ja0xh
eWVyVHJlZUhvc3RJbXBsKHRlc3RIb29rcywgc2V0dGluZ3MsIGNsaWVudCkpOwogfQpAQCAtMTU1
LDcgKzE1NSw3IEBAIGRvdWJsZSBNb2NrTGF5ZXJUcmVlSG9zdEltcGw6Omxvd0ZyZXF1ZW5jeUFu
aW1hdGlvbkludGVydmFsKCkgY29uc3QKICAgICByZXR1cm4gMS4wIC8gNjA7CiB9CiAKLU1vY2tM
YXllclRyZWVIb3N0SW1wbDo6TW9ja0xheWVyVHJlZUhvc3RJbXBsKFRlc3RIb29rcyogdGVzdEhv
b2tzLCBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncywgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVu
dCogY2xpZW50KQorTW9ja0xheWVyVHJlZUhvc3RJbXBsOjpNb2NrTGF5ZXJUcmVlSG9zdEltcGwo
VGVzdEhvb2tzKiB0ZXN0SG9va3MsIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdz
LCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KiBjbGllbnQpCiAgICAgOiBDQ0xheWVyVHJlZUhv
c3RJbXBsKHNldHRpbmdzLCBjbGllbnQpCiAgICAgLCBtX3Rlc3RIb29rcyh0ZXN0SG9va3MpCiB7
CkBAIC0xNjQsMTMgKzE2NCw5IEBAIE1vY2tMYXllclRyZWVIb3N0SW1wbDo6TW9ja0xheWVyVHJl
ZUhvc3RJbXBsKFRlc3RIb29rcyogdGVzdEhvb2tzLCBjb25zdCBDQ1NldHRpCiAvLyBBZGFwdHMg
Q0NMYXllclRyZWVIb3N0IGZvciB0ZXN0LiBJbmplY3RzIE1vY2tMYXllclRyZWVIb3N0SW1wbC4K
IGNsYXNzIE1vY2tMYXllclRyZWVIb3N0IDogcHVibGljIFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9z
dCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8TW9ja0xheWVyVHJlZUhvc3Q+IGNy
ZWF0ZShUZXN0SG9va3MqIHRlc3RIb29rcywgV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Q2xpZW50
KiBjbGllbnQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6TGF5ZXJDaHJvbWl1bT4gcm9vdExheWVyLCBj
b25zdCBXZWJDb3JlOjpDQ1NldHRpbmdzJiBzZXR0aW5ncykKKyAgICBzdGF0aWMgUGFzc093blB0
cjxNb2NrTGF5ZXJUcmVlSG9zdD4gY3JlYXRlKFRlc3RIb29rcyogdGVzdEhvb2tzLCBXZWJDb3Jl
OjpDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpMYXll
ckNocm9taXVtPiByb290TGF5ZXIsIGNvbnN0IFdlYkNvcmU6OkNDTGF5ZXJUcmVlU2V0dGluZ3Mm
IHNldHRpbmdzKQogICAgIHsKLSAgICAgICAgLy8gRm9yIHRoZXNlIHRlc3RzLCB3ZSB3aWxsIGVu
YWJsZSB0aHJlYWRlZCBhbmltYXRpb25zLgotICAgICAgICBDQ1NldHRpbmdzIHNldHRpbmdzQ29w
eSA9IHNldHRpbmdzOwotICAgICAgICBzZXR0aW5nc0NvcHkudGhyZWFkZWRBbmltYXRpb25FbmFi
bGVkID0gdHJ1ZTsKLQotICAgICAgICBPd25QdHI8TW9ja0xheWVyVHJlZUhvc3Q+IGxheWVyVHJl
ZUhvc3QoYWRvcHRQdHIobmV3IE1vY2tMYXllclRyZWVIb3N0KHRlc3RIb29rcywgY2xpZW50LCBz
ZXR0aW5nc0NvcHkpKSk7CisgICAgICAgIE93blB0cjxNb2NrTGF5ZXJUcmVlSG9zdD4gbGF5ZXJU
cmVlSG9zdChhZG9wdFB0cihuZXcgTW9ja0xheWVyVHJlZUhvc3QodGVzdEhvb2tzLCBjbGllbnQs
IHNldHRpbmdzKSkpOwogICAgICAgICBib29sIHN1Y2Nlc3MgPSBsYXllclRyZWVIb3N0LT5pbml0
aWFsaXplKCk7CiAgICAgICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOwogICAgICAgICBsYXllclRy
ZWVIb3N0LT5zZXRSb290TGF5ZXIocm9vdExheWVyKTsKQEAgLTE4NSwxMCArMTgxLDcgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdElt
cGw+IGNyZWF0ZUxheWVyVHJlZUhvc3RJbXBsKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGxD
bGllbnQqIGNsaWVudCkKICAgICB7Ci0gICAgICAgIC8vIEZvciB0aGVzZSB0ZXN0cywgd2Ugd2ls
bCBlbmFibGUgdGhyZWFkZWQgYW5pbWF0aW9ucy4KLSAgICAgICAgQ0NTZXR0aW5ncyBjb3B5U2V0
dGluZ3MgPSBzZXR0aW5ncygpOwotICAgICAgICBjb3B5U2V0dGluZ3MudGhyZWFkZWRBbmltYXRp
b25FbmFibGVkID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIE1vY2tMYXllclRyZWVIb3N0SW1wbDo6
Y3JlYXRlKG1fdGVzdEhvb2tzLCBjb3B5U2V0dGluZ3MsIGNsaWVudCk7CisgICAgICAgIHJldHVy
biBNb2NrTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShtX3Rlc3RIb29rcywgc2V0dGluZ3MoKSwg
Y2xpZW50KTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkQW5pbWF0aW9uKCkgT1ZF
UlJJREUKQEAgLTE5OCw3ICsxOTEsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAg
IE1vY2tMYXllclRyZWVIb3N0KFRlc3RIb29rcyogdGVzdEhvb2tzLCBXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3RDbGllbnQqIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6Q0NTZXR0aW5ncyYgc2V0dGlu
Z3MpCisgICAgTW9ja0xheWVyVHJlZUhvc3QoVGVzdEhvb2tzKiB0ZXN0SG9va3MsIFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50LCBjb25zdCBXZWJDb3JlOjpDQ0xheWVyVHJl
ZVNldHRpbmdzJiBzZXR0aW5ncykKICAgICAgICAgOiBDQ0xheWVyVHJlZUhvc3QoY2xpZW50LCBz
ZXR0aW5ncykKICAgICAgICAgLCBtX3Rlc3RIb29rcyh0ZXN0SG9va3MpCiAgICAgewpAQCAtNjE1
LDYgKzYwOCw5IEBAIHZvaWQgQ0NUaHJlYWRlZFRlc3Q6OmRpc3BhdGNoRGlkQWRkQW5pbWF0aW9u
KHZvaWQqIHNlbGYpCiAKIHZvaWQgQ0NUaHJlYWRlZFRlc3Q6OnJ1blRlc3QoYm9vbCB0aHJlYWRl
ZCkKIHsKKyAgICAvLyBGb3IgdGhlc2UgdGVzdHMsIHdlIHdpbGwgZW5hYmxlIHRocmVhZGVkIGFu
aW1hdGlvbnMuCisgICAgV2ViQ29tcG9zaXRvcjo6c2V0QWNjZWxlcmF0ZWRBbmltYXRpb25FbmFi
bGVkKHRydWUpOworCiAgICAgaWYgKHRocmVhZGVkKSB7CiAgICAgICAgIG1fd2ViVGhyZWFkID0g
YWRvcHRQdHIoV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5jcmVhdGVUaHJlYWQoIkNDVGhy
ZWFkZWRUZXN0IikpOwogICAgICAgICBXZWJDb21wb3NpdG9yOjppbml0aWFsaXplKG1fd2ViVGhy
ZWFkLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NU
aHJlYWRlZFRlc3QuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaHJlYWRlZFRl
c3QuaAppbmRleCA3ZjM1ODE2MGE2ZDY1YjU5MjUwMWYzN2U4ZDA4YWIyODgzNjFlOGY3Li40ZWRj
NGU1MjE2ODFmODE5ZWY4Y2QwOTY1ZThkNmZjMzk1YWM2OWI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGhyZWFkZWRUZXN0LmgKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ1RocmVhZGVkVGVzdC5oCkBAIC0xMzUsNyArMTM1LDcgQEAgcHJv
dGVjdGVkOgogCiAgICAgdmlydHVhbCB2b2lkIHJ1blRlc3QoYm9vbCB0aHJlYWRlZCk7CiAKLSAg
ICBXZWJDb3JlOjpDQ1NldHRpbmdzIG1fc2V0dGluZ3M7CisgICAgV2ViQ29yZTo6Q0NMYXllclRy
ZWVTZXR0aW5ncyBtX3NldHRpbmdzOwogICAgIE93blB0cjxNb2NrQ0NMYXllclRyZWVIb3N0Q2xp
ZW50PiBtX2NsaWVudDsKICAgICBPd25QdHI8V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0PiBtX2xh
eWVyVHJlZUhvc3Q7CiAKQEAgLTE2NSw3ICsxNjUsNyBAQCBwdWJsaWM6CiAvLyBBZGFwdHMgQ0NM
YXllclRyZWVIb3N0SW1wbCBmb3IgdGVzdC4gUnVucyByZWFsIGNvZGUsIHRoZW4gaW52b2tlcyB0
ZXN0IGhvb2tzLgogY2xhc3MgTW9ja0xheWVyVHJlZUhvc3RJbXBsIDogcHVibGljIFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdEltcGwgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPE1v
Y2tMYXllclRyZWVIb3N0SW1wbD4gY3JlYXRlKFRlc3RIb29rcyosIGNvbnN0IFdlYkNvcmU6OkND
U2V0dGluZ3MmLCBXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50Kik7CisgICAgc3Rh
dGljIFBhc3NPd25QdHI8TW9ja0xheWVyVHJlZUhvc3RJbXBsPiBjcmVhdGUoVGVzdEhvb2tzKiwg
Y29uc3QgV2ViQ29yZTo6Q0NMYXllclRyZWVTZXR0aW5ncyYsIFdlYkNvcmU6OkNDTGF5ZXJUcmVl
SG9zdEltcGxDbGllbnQqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBiZWdpbkNvbW1pdCgpOwogICAg
IHZpcnR1YWwgdm9pZCBjb21taXRDb21wbGV0ZSgpOwpAQCAtMTgxLDcgKzE4MSw3IEBAIHByb3Rl
Y3RlZDoKICAgICB2aXJ0dWFsIGRvdWJsZSBsb3dGcmVxdWVuY3lBbmltYXRpb25JbnRlcnZhbCgp
IGNvbnN0OwogCiBwcml2YXRlOgotICAgIE1vY2tMYXllclRyZWVIb3N0SW1wbChUZXN0SG9va3Mq
LCBjb25zdCBXZWJDb3JlOjpDQ1NldHRpbmdzJiwgV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1w
bENsaWVudCopOworICAgIE1vY2tMYXllclRyZWVIb3N0SW1wbChUZXN0SG9va3MqLCBjb25zdCBX
ZWJDb3JlOjpDQ0xheWVyVHJlZVNldHRpbmdzJiwgV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1w
bENsaWVudCopOwogCiAgICAgVGVzdEhvb2tzKiBtX3Rlc3RIb29rczsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9HcmFwaGljc0xheWVyQ2hyb21pdW1U
ZXN0LmNwcAppbmRleCBiODM4MDQ5NWFmOTAwMmU2YzY5ZjA0N2NlZGFhZjk3MjJkZjJiMzY0Li40
ZmRjZjRmNDFlMTkxN2NmNzFjY2M3NGIxMzk3MzU3Y2Y2M2ZiZjNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvR3JhcGhpY3NMYXllckNocm9taXVtVGVz
dC5jcHAKQEAgLTgzLDkgKzgzLDcgQEAgY2xhc3MgTW9ja0xheWVyVHJlZUhvc3QgOiBwdWJsaWMg
Q0NMYXllclRyZWVIb3N0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxNb2NrTGF5
ZXJUcmVlSG9zdD4gY3JlYXRlKCkKICAgICB7Ci0gICAgICAgIC8vIEZvciB0aGVzZSB0ZXN0cywg
d2Ugd2lsbCBlbmFibGUgdGhyZWFkZWQgYW5pbWF0aW9ucy4KLSAgICAgICAgQ0NTZXR0aW5ncyBz
ZXR0aW5nczsKLSAgICAgICAgc2V0dGluZ3MudGhyZWFkZWRBbmltYXRpb25FbmFibGVkID0gdHJ1
ZTsKKyAgICAgICAgQ0NMYXllclRyZWVTZXR0aW5ncyBzZXR0aW5nczsKICAgICAgICAgT3duUHRy
PE1vY2tMYXllclRyZWVIb3N0PiBsYXllclRyZWVIb3N0KGFkb3B0UHRyKG5ldyBNb2NrTGF5ZXJU
cmVlSG9zdChuZXcgTW9ja0xheWVyVHJlZUhvc3RDbGllbnQoKSwgc2V0dGluZ3MpKSk7CiAgICAg
ICAgIGJvb2wgc3VjY2VzcyA9IGxheWVyVHJlZUhvc3QtPmluaXRpYWxpemUoKTsKICAgICAgICAg
RVhQRUNUX1RSVUUoc3VjY2Vzcyk7CkBAIC05NiwxNCArOTQsMTEgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCBQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IGNyZWF0ZUxheWVyVHJlZUhv
c3RJbXBsKENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqIGNsaWVudCkKICAgICB7Ci0gICAgICAg
IC8vIEZvciB0aGVzZSB0ZXN0cywgd2Ugd2lsbCBlbmFibGUgdGhyZWFkZWQgYW5pbWF0aW9ucy4K
LSAgICAgICAgQ0NTZXR0aW5ncyBjb3B5U2V0dGluZ3MgPSBzZXR0aW5ncygpOwotICAgICAgICBj
b3B5U2V0dGluZ3MudGhyZWFkZWRBbmltYXRpb25FbmFibGVkID0gdHJ1ZTsKLSAgICAgICAgcmV0
dXJuIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShjb3B5U2V0dGluZ3MsIGNsaWVudCk7Cisg
ICAgICAgIHJldHVybiBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoc2V0dGluZ3MoKSwgY2xp
ZW50KTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgTW9ja0xheWVyVHJlZUhvc3QoQ0NMYXllclRy
ZWVIb3N0Q2xpZW50KiBjbGllbnQsIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKQorICAgIE1v
Y2tMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50LCBjb25zdCBDQ0xh
eWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncykKICAgICAgICAgOiBDQ0xheWVyVHJlZUhvc3QoY2xp
ZW50LCBzZXR0aW5ncykKICAgICB7CiAgICAgfQpAQCAtMTEzLDYgKzEwOCw4IEBAIGNsYXNzIEdy
YXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6
CiAgICAgR3JhcGhpY3NMYXllckNocm9taXVtVGVzdCgpCiAgICAgeworICAgICAgICAvLyBGb3Ig
dGhlc2UgdGVzdHMsIHdlIHdpbGwgZW5hYmxlIHRocmVhZGVkIGFuaW1hdGlvbnMuCisgICAgICAg
IFdlYkNvbXBvc2l0b3I6OnNldEFjY2VsZXJhdGVkQW5pbWF0aW9uRW5hYmxlZCh0cnVlKTsKICAg
ICAgICAgV2ViQ29tcG9zaXRvcjo6aW5pdGlhbGl6ZSgwKTsKICAgICAgICAgbV9ncmFwaGljc0xh
eWVyID0gc3RhdGljX3BvaW50ZXJfY2FzdDxHcmFwaGljc0xheWVyQ2hyb21pdW0+KEdyYXBoaWNz
TGF5ZXI6OmNyZWF0ZSgmbV9jbGllbnQpKTsKICAgICAgICAgbV9wbGF0Zm9ybUxheWVyID0gc3Rh
dGljX2Nhc3Q8TGF5ZXJDaHJvbWl1bSo+KG1fZ3JhcGhpY3NMYXllci0+cGxhdGZvcm1MYXllcigp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJDaHJvbWl1
bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVz
dC5jcHAKaW5kZXggOTU0MTc0YWI3NjM1N2E3MTMyNDAxYTFkMGEzY2M4MzhjOGVkOTFhOS4uMWJl
ZjkyYmNlZmY0ZTY2NTEwZGY3ODE4NzM4Y2EyYWVkYjg2OWJjNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVzdC5jcHAKQEAgLTU3LDcgKzU3
LDcgQEAgbmFtZXNwYWNlIHsKIGNsYXNzIE1vY2tDQ0xheWVyVHJlZUhvc3QgOiBwdWJsaWMgQ0NM
YXllclRyZWVIb3N0IHsKIHB1YmxpYzoKICAgICBNb2NrQ0NMYXllclRyZWVIb3N0KCkKLSAgICAg
ICAgOiBDQ0xheWVyVHJlZUhvc3QoJm1fZmFrZUNsaWVudCwgQ0NTZXR0aW5ncygpKQorICAgICAg
ICA6IENDTGF5ZXJUcmVlSG9zdCgmbV9mYWtlQ2xpZW50LCBDQ0xheWVyVHJlZVNldHRpbmdzKCkp
CiAgICAgewogICAgICAgICBpbml0aWFsaXplKCk7CiAgICAgfQpAQCAtNjE2LDcgKzYxNiw3IEBA
IHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBGYWtlQ0NMYXllclRyZWVIb3N0KCkKLSAgICAgICAg
OiBDQ0xheWVyVHJlZUhvc3QoJm1fY2xpZW50LCBDQ1NldHRpbmdzKCkpCisgICAgICAgIDogQ0NM
YXllclRyZWVIb3N0KCZtX2NsaWVudCwgQ0NMYXllclRyZWVTZXR0aW5ncygpKQogICAgIHsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5k
ZXJlckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVy
UmVuZGVyZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IDc2ZDU5NjgzMmEwMTc5NWZkMTM2OTVmZGVj
MDgyN2RiYTE0YjYzOTMuLjkyNjkyMTdjM2IwNGE1ZThlODYxYTllMzYzMTMzOWQxY2E3YzgyMzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNo
cm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJl
bmRlcmVyQ2hyb21pdW1UZXN0LmNwcApAQCAtMjUsMTAgKzI1LDEyIEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAKKyNpbmNsdWRlICJD
Q1Rlc3RDb21tb24uaCIKICNpbmNsdWRlICJGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYkNvbXBvc2l0b3IuaCIKKyNpbmNsdWRlICJjYy9DQ1Nl
dHRpbmdzLmgiCiAjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgogCiAjaW5jbHVk
ZSA8Z21vY2svZ21vY2suaD4KQEAgLTM2LDYgKzM4LDcgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdlYktpdFRl
c3RzOwogCiBjbGFzcyBGcmFtZUNvdW50aW5nTWVtb3J5QWxsb2NhdGlvblNldHRpbmdDb250ZXh0
IDogcHVibGljIEZha2VXZWJHcmFwaGljc0NvbnRleHQzRCB7CiBwdWJsaWM6CkBAIC04MSw3ICs4
NCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIENDUmVuZGVyZXJDbGllbnQgbWV0aG9kcy4KICAgICB2
aXJ0dWFsIGNvbnN0IEludFNpemUmIGRldmljZVZpZXdwb3J0U2l6ZSgpIGNvbnN0IE9WRVJSSURF
IHsgc3RhdGljIEludFNpemUgZmFrZVNpemU7IHJldHVybiBmYWtlU2l6ZTsgfQotICAgIHZpcnR1
YWwgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCBPVkVSUklERSB7IHN0YXRpYyBD
Q1NldHRpbmdzIGZha2VTZXR0aW5nczsgcmV0dXJuIGZha2VTZXR0aW5nczsgfQorICAgIHZpcnR1
YWwgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCBPVkVSUklERSB7
IHN0YXRpYyBDQ0xheWVyVHJlZVNldHRpbmdzIGZha2VTZXR0aW5nczsgcmV0dXJuIGZha2VTZXR0
aW5nczsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRMb3NlQ29udGV4dCgpIE9WRVJSSURFIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGUoKSBPVkVSUklERSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgc2V0RnVsbFJvb3RMYXllckRhbWFnZSgpIE9WRVJSSURFIHsgbV9zZXRG
dWxsUm9vdExheWVyRGFtYWdlQ291bnQrKzsgfQpAQCAtMTQ3LDYgKzE1MCw3IEBAIHByb3RlY3Rl
ZDoKICAgICBGcmFtZUNvdW50aW5nTWVtb3J5QWxsb2NhdGlvblNldHRpbmdDb250ZXh0JiBtX21v
Y2tDb250ZXh0OwogICAgIEZha2VDQ1JlbmRlcmVyQ2xpZW50IG1fbW9ja0NsaWVudDsKICAgICBG
YWtlTGF5ZXJSZW5kZXJlckNocm9taXVtIG1fbGF5ZXJSZW5kZXJlckNocm9taXVtOworICAgIEND
U2NvcGVkU2V0dGluZ3MgbV9zY29wZWRTZXR0aW5nczsKIH07CiAKIC8vIFRlc3QgTGF5ZXJSZW5k
ZXJlckNocm9taXVtIGRpc2NhcmRGcmFtZWJ1ZmZlciBmdW5jdGlvbmFsaXR5OgpAQCAtMTk4LDcg
KzIwMiw3IEBAIFRFU1RfRihMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LCBTd2FwQnVmZmVyc1do
aWxlQmFja2J1ZmZlckRpc2NhcmRlZFNob3VsZElnbm9yCiAgICAgc3dhcEJ1ZmZlcnMoKTsKICAg
ICBFWFBFQ1RfRVEoMCwgbV9tb2NrQ29udGV4dC5mcmFtZUNvdW50KCkpOwogICAgIEVYUEVDVF9F
USgyLCBtX21vY2tDbGllbnQuc2V0RnVsbFJvb3RMYXllckRhbWFnZUNvdW50KCkpOwotICAgIAor
CiAgICAgc3dhcEJ1ZmZlcnMoKTsKICAgICBFWFBFQ1RfRVEoMCwgbV9tb2NrQ29udGV4dC5mcmFt
ZUNvdW50KCkpOwogICAgIEVYUEVDVF9FUSgzLCBtX21vY2tDbGllbnQuc2V0RnVsbFJvb3RMYXll
ckRhbWFnZUNvdW50KCkpOwpAQCAtMjg5LDYgKzI5Myw3IEBAIHB1YmxpYzoKIC8vIFRoaXMgdGVz
dCBpc24ndCB1c2luZyB0aGUgc2FtZSBmaXh0dXJlIGFzIExheWVyUmVuZGVyZXJDaHJvbWl1bVRl
c3QsIGFuZCB5b3UgY2FuJ3QgbWl4IFRFU1QoKSBhbmQgVEVTVF9GKCkgd2l0aCB0aGUgc2FtZSBu
YW1lLCBoZW5jZSBMUkMyLgogVEVTVChMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0MiwgaW5pdGlh
bGl6YXRpb25Eb2VzTm90TWFrZVN5bmNocm9ub3VzQ2FsbHMpCiB7CisgICAgQ0NTY29wZWRTZXR0
aW5ncyBzY29wZWRTZXR0aW5nczsKICAgICBGYWtlQ0NSZW5kZXJlckNsaWVudCBtb2NrQ2xpZW50
OwogICAgIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0gbGF5ZXJSZW5kZXJlckNocm9taXVtKCZt
b2NrQ2xpZW50LCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4
dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBGb3JiaWRTeW5jaHJvbm91c0NhbGxDb250ZXh0
KSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KSk7CiAKQEAg
LTMzMCw2ICszMzUsNyBAQCBwcml2YXRlOgogCiBURVNUKExheWVyUmVuZGVyZXJDaHJvbWl1bVRl
c3QyLCBpbml0aWFsaXphdGlvbldpdGhRdWlja2x5TG9zdENvbnRleHREb2VzTm90QXNzZXJ0KQog
eworICAgIENDU2NvcGVkU2V0dGluZ3Mgc2NvcGVkU2V0dGluZ3M7CiAgICAgRmFrZUNDUmVuZGVy
ZXJDbGllbnQgbW9ja0NsaWVudDsKICAgICBGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtIGxheWVy
UmVuZGVyZXJDaHJvbWl1bSgmbW9ja0NsaWVudCwgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpj
cmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgTG9zZUNvbnRl
eHRPbkZpcnN0R2V0Q29udGV4dCksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRv
SG9zdFdpbmRvdykpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L1RleHR1cmVMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL1RleHR1cmVMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggYjYwMDE3ZmQ5YWEwODBiNGZk
N2Y2OWY5YTBmZWUwYzI2OGI0NDllYS4uZDBjYzNkOTZmMTRlYmNmZThkM2M5OGIzZGY2MjdjMGQ2
M2E0OGNlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UZXh0dXJl
TGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
VGV4dHVyZUxheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2Ug
ewogY2xhc3MgTW9ja0NDTGF5ZXJUcmVlSG9zdCA6IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3Qgewog
cHVibGljOgogICAgIE1vY2tDQ0xheWVyVHJlZUhvc3QoKQotICAgICAgICA6IENDTGF5ZXJUcmVl
SG9zdCgmbV9mYWtlQ2xpZW50LCBDQ1NldHRpbmdzKCkpCisgICAgICAgIDogQ0NMYXllclRyZWVI
b3N0KCZtX2Zha2VDbGllbnQsIENDTGF5ZXJUcmVlU2V0dGluZ3MoKSkKICAgICB7CiAgICAgICAg
IGluaXRpYWxpemUoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCBmMGMxMzEzZjkwZWU3NTJk
NGMyMjE3OGFkMzk0NDc4YjI1NzYxNjIwLi41ZTMwMWQ4ZWI0MTk0MDc5NzNkMDQyZTNkOTM3YmZl
ZmY1ODAyNTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
VGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKQEAgLTc5Nyw3ICs3OTcsNyBAQCBURVNUKFRpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QsIHNraXBzRHJhd0dldHNSZXNldCkKICAgICAvLyBJbml0aWFsaXpl
IHdpdGhvdXQgdGhyZWFkaW5nIHN1cHBvcnQuCiAgICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpp
bml0aWFsaXplKDApOwogICAgIEZha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQgZmFrZUNDTGF5ZXJU
cmVlSG9zdENsaWVudDsKLSAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0PiBjY0xheWVyVHJlZUhv
c3QgPSBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSgmZmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudCwg
Q0NTZXR0aW5ncygpKTsKKyAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0PiBjY0xheWVyVHJlZUhv
c3QgPSBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSgmZmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudCwg
Q0NMYXllclRyZWVTZXR0aW5ncygpKTsKIAogICAgIC8vIENyZWF0ZSB0d28gMzAwIHggMzAwIHRp
bGVkIGxheWVycy4KICAgICBJbnRTaXplIGNvbnRlbnRCb3VuZHMoMzAwLCAzMDApOwpAQCAtODcz
LDEwICs4NzMsMTIgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBodWdlTGF5ZXJVcGRh
dGVDcmFzaCkKIAogVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwYXJ0aWFsVXBkYXRlcykK
IHsKLSAgICBDQ1NldHRpbmdzIHNldHRpbmdzOwotICAgIHNldHRpbmdzLm1heFBhcnRpYWxUZXh0
dXJlVXBkYXRlcyA9IDQ7CiAgICAgLy8gSW5pdGlhbGl6ZSB3aXRob3V0IHRocmVhZGluZyBzdXBw
b3J0LgogICAgIFdlYktpdDo6V2ViQ29tcG9zaXRvcjo6aW5pdGlhbGl6ZSgwKTsKKworICAgIEND
TGF5ZXJUcmVlU2V0dGluZ3Mgc2V0dGluZ3M7CisgICAgc2V0dGluZ3MubWF4UGFydGlhbFRleHR1
cmVVcGRhdGVzID0gNDsKKwogICAgIEZha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQgZmFrZUNDTGF5
ZXJUcmVlSG9zdENsaWVudDsKICAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0PiBjY0xheWVyVHJl
ZUhvc3QgPSBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSgmZmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVu
dCwgc2V0dGluZ3MpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L1RyZWVTeW5jaHJvbml6ZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
VHJlZVN5bmNocm9uaXplclRlc3QuY3BwCmluZGV4IGVkZGVkNWFkMmViZDY3NjNkY2UxYzg0ZDE0
NDRiODNiN2Y4MGE4MDYuLjA4NTk3ZjFkYzYyZDMwM2EzMWY1MDVlYjE2YTYxNjAwNTllZWI4YjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVHJlZVN5bmNocm9uaXpl
clRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVHJlZVN5bmNocm9u
aXplclRlc3QuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgVEVTVChUcmVlU3luY2hyb25pemVyVGVz
dCwgc3luY1NpbXBsZVRyZWVGcm9tRW1wdHkpCiB7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhy
ZWFkIGltcGw7CiAKLSAgICBDQ1NldHRpbmdzIHNldHRpbmdzOworICAgIENDTGF5ZXJUcmVlU2V0
dGluZ3Mgc2V0dGluZ3M7CiAgICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IGhvc3RJbXBs
ID0gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKHNldHRpbmdzLCAwKTsKIAogICAgIFJlZlB0
cjxMYXllckNocm9taXVtPiBsYXllclRyZWVSb290ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7
CkBAIC0xODEsNyArMTgxLDcgQEAgVEVTVChUcmVlU3luY2hyb25pemVyVGVzdCwgc3luY1NpbXBs
ZVRyZWVSZXVzaW5nTGF5ZXJzKQogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwog
ICAgIFZlY3RvcjxpbnQ+IGNjTGF5ZXJEZXN0cnVjdGlvbkxpc3Q7CiAKLSAgICBDQ1NldHRpbmdz
IHNldHRpbmdzOworICAgIENDTGF5ZXJUcmVlU2V0dGluZ3Mgc2V0dGluZ3M7CiAgICAgT3duUHRy
PENDTGF5ZXJUcmVlSG9zdEltcGw+IGhvc3RJbXBsID0gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3Jl
YXRlKHNldHRpbmdzLCAwKTsKIAogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBsYXllclRyZWVS
b290ID0gTW9ja0xheWVyQ2hyb21pdW06OmNyZWF0ZSgmY2NMYXllckRlc3RydWN0aW9uTGlzdCk7
CkBAIC0yMTEsNyArMjExLDcgQEAgVEVTVChUcmVlU3luY2hyb25pemVyVGVzdCwgc3luY1NpbXBs
ZVRyZWVBbmRUcmFja1N0YWNraW5nT3JkZXJDaGFuZ2UpCiAgICAgRGVidWdTY29wZWRTZXRJbXBs
VGhyZWFkIGltcGw7CiAgICAgVmVjdG9yPGludD4gY2NMYXllckRlc3RydWN0aW9uTGlzdDsKIAot
ICAgIENDU2V0dGluZ3Mgc2V0dGluZ3M7CisgICAgQ0NMYXllclRyZWVTZXR0aW5ncyBzZXR0aW5n
czsKICAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gaG9zdEltcGwgPSBDQ0xheWVyVHJl
ZUhvc3RJbXBsOjpjcmVhdGUoc2V0dGluZ3MsIDApOwogCiAgICAgLy8gU2V0IHVwIHRoZSB0cmVl
IGFuZCBzeW5jIG9uY2UuIGNoaWxkMiBuZWVkcyB0byBiZSBzeW5jZWQgaGVyZSwgdG9vLCBldmVu
IHRob3VnaCB3ZQpAQCAtMjQwLDcgKzI0MCw3IEBAIFRFU1QoVHJlZVN5bmNocm9uaXplclRlc3Qs
IHN5bmNTaW1wbGVUcmVlQW5kUHJvcGVydGllcykKIHsKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxU
aHJlYWQgaW1wbDsKIAotICAgIENDU2V0dGluZ3Mgc2V0dGluZ3M7CisgICAgQ0NMYXllclRyZWVT
ZXR0aW5ncyBzZXR0aW5nczsKICAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gaG9zdElt
cGwgPSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoc2V0dGluZ3MsIDApOwogCiAgICAgUmVm
UHRyPExheWVyQ2hyb21pdW0+IGxheWVyVHJlZVJvb3QgPSBMYXllckNocm9taXVtOjpjcmVhdGUo
KTsKQEAgLTI3Nyw3ICsyNzcsNyBAQCBURVNUKFRyZWVTeW5jaHJvbml6ZXJUZXN0LCByZXVzZUND
TGF5ZXJzQWZ0ZXJTdHJ1Y3R1cmFsQ2hhbmdlKQogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVh
ZCBpbXBsOwogICAgIFZlY3RvcjxpbnQ+IGNjTGF5ZXJEZXN0cnVjdGlvbkxpc3Q7CiAKLSAgICBD
Q1NldHRpbmdzIHNldHRpbmdzOworICAgIENDTGF5ZXJUcmVlU2V0dGluZ3Mgc2V0dGluZ3M7CiAg
ICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IGhvc3RJbXBsID0gQ0NMYXllclRyZWVIb3N0
SW1wbDo6Y3JlYXRlKHNldHRpbmdzLCAwKTsKIAogICAgIC8vIFNldCB1cCBhIHRyZWUgd2l0aCB0
aGlzIHNvcnQgb2Ygc3RydWN0dXJlOgpAQCAtMzI3LDcgKzMyNyw3IEBAIFRFU1QoVHJlZVN5bmNo
cm9uaXplclRlc3QsIHN5bmNTaW1wbGVUcmVlVGhlbkRlc3Ryb3kpCiAgICAgRGVidWdTY29wZWRT
ZXRJbXBsVGhyZWFkIGltcGw7CiAgICAgVmVjdG9yPGludD4gY2NMYXllckRlc3RydWN0aW9uTGlz
dDsKIAotICAgIENDU2V0dGluZ3Mgc2V0dGluZ3M7CisgICAgQ0NMYXllclRyZWVTZXR0aW5ncyBz
ZXR0aW5nczsKICAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gaG9zdEltcGwgPSBDQ0xh
eWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoc2V0dGluZ3MsIDApOwogCiAgICAgUmVmUHRyPExheWVy
Q2hyb21pdW0+IG9sZExheWVyVHJlZVJvb3QgPSBNb2NrTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCZj
Y0xheWVyRGVzdHJ1Y3Rpb25MaXN0KTsKQEAgLTM2MCw3ICszNjAsNyBAQCBURVNUKFRyZWVTeW5j
aHJvbml6ZXJUZXN0LCBzeW5jTWFza1JlcGxpY2FBbmRSZXBsaWNhTWFza0xheWVycykKIHsKICAg
ICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKIAotICAgIENDU2V0dGluZ3Mgc2V0dGlu
Z3M7CisgICAgQ0NMYXllclRyZWVTZXR0aW5ncyBzZXR0aW5nczsKICAgICBPd25QdHI8Q0NMYXll
clRyZWVIb3N0SW1wbD4gaG9zdEltcGwgPSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoc2V0
dGluZ3MsIDApOwogCiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGxheWVyVHJlZVJvb3QgPSBM
YXllckNocm9taXVtOjpjcmVhdGUoKTsKQEAgLTQwNiw3ICs0MDYsNyBAQCBURVNUKFRyZWVTeW5j
aHJvbml6ZXJUZXN0LCBzeW5jaHJvbml6ZUFuaW1hdGlvbnMpCiB7CiAgICAgRGVidWdTY29wZWRT
ZXRJbXBsVGhyZWFkIGltcGw7CiAKLSAgICBDQ1NldHRpbmdzIHNldHRpbmdzOworICAgIENDTGF5
ZXJUcmVlU2V0dGluZ3Mgc2V0dGluZ3M7CiAgICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+
IGhvc3RJbXBsID0gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKHNldHRpbmdzLCAwKTsKIAog
ICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBsYXllclRyZWVSb290ID0gTGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlKCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggODNlYTgzYTZjNjlkNDlkZWEzMDk2NGU0MWJlZGUzNGE2MGFiNTE2YS4uNDUyODM1Y2Vk
NmViY2FkNzFhNTNlMGQ2YjE0NjgwM2Q2YThlYTQ4OSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTA2LTE0ICBJ
YW4gVm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
Q2VydGFpbiBzZXR0aW5ncyBpbiBDQ1NldHRpbmdzIGNvdWxkIGJlIGdsb2JhbAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODgzODQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RTaGVsbC5jcHA6CisgICAgICAgIChUZXN0U2hlbGw6OlRlc3RTaGVsbCk6Cisg
ICAgICAgIChUZXN0U2hlbGw6OnJlc2V0V2ViU2V0dGluZ3MpOgorICAgICAgICAoVGVzdFNoZWxs
OjpzZXRQZXJUaWxlUGFpbnRpbmdFbmFibGVkKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0U2hlbGwuaDoKKyAgICAgICAgKFRlc3RTaGVsbCk6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vV2ViUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV2ViUHJl
ZmVyZW5jZXM6OnJlc2V0KToKKyAgICAgICAgKFdlYlByZWZlcmVuY2VzOjphcHBseVRvKToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQcmVmZXJlbmNlcy5oOgorICAgICAg
ICAoV2ViUHJlZmVyZW5jZXMpOgorCiAyMDEyLTA2LTE0ICBUYWthc2hpIFRveW9zaGltYSAgPHRv
eW9zaGltQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVcGRhdGUgcHl3ZWJzb2NrZXQgdG8gMC43
LjYgZnJvbSAwLjcuNApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFNoZWxsLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5j
cHAKaW5kZXggMzVkM2JhZjFkZmQ5ZmJhNmRjYWMzN2E5YjM0Y2M0YmUwNDc3OTQ2Yi4uYjgzMjNh
MzliMTM5NGZhYzI2NGQzM2FhOWY0NjFkZmRjYWRiYzY0YSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwCkBAIC0xMTQsNyArMTE0LDYgQEAgVGVzdFNoZWxs
OjpUZXN0U2hlbGwoKQogICAgICwgbV9hY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZChmYWxzZSkK
ICAgICAsIG1fZGVmZXJyZWQyZENhbnZhc0VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX2FjY2VsZXJh
dGVkUGFpbnRpbmdFbmFibGVkKGZhbHNlKQotICAgICwgbV9wZXJUaWxlUGFpbnRpbmdFbmFibGVk
KGZhbHNlKQogICAgICwgbV9zdHJlc3NPcHQoZmFsc2UpCiAgICAgLCBtX3N0cmVzc0Rlb3B0KGZh
bHNlKQogICAgICwgbV9kdW1wV2hlbkZpbmlzaGVkKHRydWUpCkBAIC0yMzEsNyArMjMwLDYgQEAg
dm9pZCBUZXN0U2hlbGw6OnJlc2V0V2ViU2V0dGluZ3MoV2ViVmlldyYgd2ViVmlldykKICAgICBt
X3ByZWZzLmFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkID0gbV9hY2NlbGVyYXRlZDJkQ2FudmFz
RW5hYmxlZDsKICAgICBtX3ByZWZzLmRlZmVycmVkMmRDYW52YXNFbmFibGVkID0gbV9kZWZlcnJl
ZDJkQ2FudmFzRW5hYmxlZDsKICAgICBtX3ByZWZzLmFjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVk
ID0gbV9hY2NlbGVyYXRlZFBhaW50aW5nRW5hYmxlZDsKLSAgICBtX3ByZWZzLnBlclRpbGVQYWlu
dGluZ0VuYWJsZWQgPSBtX3BlclRpbGVQYWludGluZ0VuYWJsZWQ7CiAgICAgbV9wcmVmcy5hcHBs
eVRvKCZ3ZWJWaWV3KTsKIH0KIApAQCAtMzc3LDYgKzM3NSwxMSBAQCB2b2lkIFRlc3RTaGVsbDo6
dGVzdFRpbWVkT3V0KCkKICAgICB0ZXN0RmluaXNoZWQoKTsKIH0KIAordm9pZCBUZXN0U2hlbGw6
OnNldFBlclRpbGVQYWludGluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAgIFdlYkNvbXBv
c2l0b3I6OnNldFBlclRpbGVQYWludGluZ0VuYWJsZWQoZW5hYmxlZCk7Cit9CisKIHN0YXRpYyBz
dHJpbmcgZHVtcERvY3VtZW50VGV4dChXZWJGcmFtZSogZnJhbWUpCiB7CiAgICAgLy8gV2UgdXNl
IHRoZSBkb2N1bWVudCBlbGVtZW50J3MgdGV4dCBpbnN0ZWFkIG9mIHRoZSBib2R5IHRleHQgaGVy
ZSBiZWNhdXNlCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
U2hlbGwuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oCmluZGV4
IGFlOWQ4ZDhhMWE5MThhYTJlYzBjMjAwM2I1YTE0OGMxY2QxOGI2OTguLjhhZTBjMjQyMTg4NGVh
MDViMDJkMTE5NTk3ZjIyODlkYWZjNWI1OTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RTaGVsbC5oCkBAIC0xNDIsNyArMTQyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
QWNjZWxlcmF0ZWQyZENhbnZhc0VuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fYWNjZWxlcmF0ZWQy
ZENhbnZhc0VuYWJsZWQgPSBlbmFibGVkOyB9CiAgICAgdm9pZCBzZXREZWZlcnJlZDJkQ2FudmFz
RW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9kZWZlcnJlZDJkQ2FudmFzRW5hYmxlZCA9IGVuYWJs
ZWQ7IH0KICAgICB2b2lkIHNldEFjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkKGJvb2wgZW5hYmxl
ZCkgeyBtX2FjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkID0gZW5hYmxlZDsgfQotICAgIHZvaWQg
c2V0UGVyVGlsZVBhaW50aW5nRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9wZXJUaWxlUGFpbnRp
bmdFbmFibGVkID0gZW5hYmxlZDsgfQorICAgIHZvaWQgc2V0UGVyVGlsZVBhaW50aW5nRW5hYmxl
ZChib29sKTsKICNpZiBkZWZpbmVkKE9TX1dJTikKICAgICAvLyBBY2Nlc3MgdG8gdGhlIGZpbmlz
aGVkIGV2ZW50LiBVc2VkIGJ5IHRoZSBzdGF0aWMgV2F0Y2hEb2cgdGhyZWFkLgogICAgIEhBTkRM
RSBmaW5pc2hlZEV2ZW50KCkgeyByZXR1cm4gbV9maW5pc2hlZEV2ZW50OyB9CmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQcmVmZXJlbmNlcy5jcHAgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQcmVmZXJlbmNlcy5jcHAKaW5kZXggMzIyN2Mw
MjMxMmIzYjM5MDA2NzgyYzM4NzdkMDhiNjM3ZGZjYWI5NC4uNzUxZGZlZWI1NGZiZGJiZGIzNzU5
ZTY4ZDk0M2Q2ZjJjOTEyOTdlYyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViUHJlZmVyZW5jZXMuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlByZWZlcmVuY2VzLmNwcApAQCAtMTE3LDcgKzExNyw2IEBAIHZvaWQgV2ViUHJlZmVy
ZW5jZXM6OnJlc2V0KCkKICAgICBhY2NlbGVyYXRlZFBhaW50aW5nRW5hYmxlZCA9IGZhbHNlOwog
ICAgIGZvcmNlQ29tcG9zaXRpbmdNb2RlID0gZmFsc2U7CiAgICAgaGl4aWU3NldlYlNvY2tldFBy
b3RvY29sRW5hYmxlZCA9IHRydWU7Ci0gICAgcGVyVGlsZVBhaW50aW5nRW5hYmxlZCA9IGZhbHNl
OwogICAgIG1vY2tTY3JvbGxiYXJzRW5hYmxlZCA9IGZhbHNlOwogICAgIGNzc0N1c3RvbUZpbHRl
ckVuYWJsZWQgPSBmYWxzZTsKIH0KQEAgLTIyNiw3ICsyMjUsNiBAQCB2b2lkIFdlYlByZWZlcmVu
Y2VzOjphcHBseVRvKFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgc2V0dGluZ3MtPnNldERlZmVycmVk
MmRDYW52YXNFbmFibGVkKGRlZmVycmVkMmRDYW52YXNFbmFibGVkKTsKICAgICBzZXR0aW5ncy0+
c2V0QWNjZWxlcmF0ZWRQYWludGluZ0VuYWJsZWQoYWNjZWxlcmF0ZWRQYWludGluZ0VuYWJsZWQp
OwogICAgIHNldHRpbmdzLT5zZXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkKGhpeGll
NzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQpOwotICAgIHNldHRpbmdzLT5zZXRQZXJUaWxlUGFp
bnRpbmdFbmFibGVkKHBlclRpbGVQYWludGluZ0VuYWJsZWQpOwogICAgIHNldHRpbmdzLT5zZXRN
b2NrU2Nyb2xsYmFyc0VuYWJsZWQobW9ja1Njcm9sbGJhcnNFbmFibGVkKTsKIAogICAgIC8vIEZp
eGVkIHZhbHVlcy4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dl
YlByZWZlcmVuY2VzLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQcmVmZXJl
bmNlcy5oCmluZGV4IDMxZGUzMzFlZDE0ZWI5YjI0ZTEwYTdmOTkwN2NkYjIxMzZlNDliMDcuLjZl
OTUxZmViMzViNTVhMDFjZjY5NDhjYjYyMmJiNTQ2ODQ5NmUzOWYgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlByZWZlcmVuY2VzLmgKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vV2ViUHJlZmVyZW5jZXMuaApAQCAtMTEwLDcgKzExMCw2IEBA
IHN0cnVjdCBXZWJQcmVmZXJlbmNlcyB7CiAgICAgYm9vbCBkZWZlcnJlZDJkQ2FudmFzRW5hYmxl
ZDsKICAgICBib29sIGFjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkOwogICAgIGJvb2wgaGl4aWU3
NldlYlNvY2tldFByb3RvY29sRW5hYmxlZDsKLSAgICBib29sIHBlclRpbGVQYWludGluZ0VuYWJs
ZWQ7CiAgICAgYm9vbCBtb2NrU2Nyb2xsYmFyc0VuYWJsZWQ7CiAgICAgYm9vbCBjc3NDdXN0b21G
aWx0ZXJFbmFibGVkOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>